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 1v6d3f-007XMx-2a for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Oct 2025 22:54:55 +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 1v6d3c-00Dcrr-Io for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Oct 2025 22:54:53 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v6d3b-00Dcrf-Hh for pgsql-hackers@lists.postgresql.org; Wed, 08 Oct 2025 22:54:53 +0000 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v6d3O-000kMw-2e for pgsql-hackers@lists.postgresql.org; Wed, 08 Oct 2025 22:54:51 +0000 Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-62fca216e4aso1059234a12.0 for ; Wed, 08 Oct 2025 15:54:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759964078; x=1760568878; 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=6AjV40byZYkgRN/KbY6QdjmHUyaZ4JLsSpW7AqoKX5I=; b=f9b2rDTm0tNaaENRskT7/gGLNps6qLOODCYexLIwX9+7yweua2CuDUcQOkDvwTxboF AcDNd42eJC0n3VUK3bNlLl24FH/rS3LGPgu9CBg1+Y3J9w/qgJTzCMMW6ZnWOQxNhdcb 49YByAfMi2LL5U4h1o8RF8kGjsLkW/BeypJmU+977awiP6pMJ5FpNJ2VTHISOMWpA80z /QX4VrfzgkfkvQQ6Uv2KDzr+2+P60jMSxH9KPmyQ3WD0iWPrgZbYSsvt/aE0ltXK56fe MZ/5lzQoC0M6QaaKyFkHj+URkr4FHUdh0DMeBwCXZXzqL8modUO4XioskQQuRmac4jCN s57A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759964078; x=1760568878; 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=6AjV40byZYkgRN/KbY6QdjmHUyaZ4JLsSpW7AqoKX5I=; b=NO3T6mNmW8F/9E8bdaCUJghh/0MlDS3cOyAXcdW/F3GPMVnyfVUNMeZ9rZp/HCqsaA TeNoAYD9Z5mKtf7MG4sGDwyFzF1A5sc7LwckQ6jzfMttdQ3z+7KzkBfBUIg/ulVMywSe E+Fi0zDy3sc+lQPXFdrrpkiEWogx2M+qkXwkj8UUapJlwNjbHhC0dnq6VtrB+JAnI6S9 Ixw3E29jLcN1qzQHumQ+71A+uzqt4D1o1xD8/CUYQpSwCZafp6Iq3FkfkbigKH2OkrBS GHRFzht7osZ5AtUqADgZoFT7gVnUL4OqiolRcEl+fJq0OsDq+A4Ljb0TPPTCEFhkdCnw EDng== X-Forwarded-Encrypted: i=1; AJvYcCUFi2LUVpzMDz5zk1Hk+BQ4B6ifZcczOZu5U6Zo+chz/C2rOKKgJbjVg9HUD+BcbjOgXAmmd7QlrwAq61V5@lists.postgresql.org X-Gm-Message-State: AOJu0YwffeiJzaPEY0wj6/DL47fk5pmuSGpvkmJBmqF6UZKHjm05HRp2 NMYqfaPh/QfNAg39kau3pEuzp853wT2VI+MOy1kZXiSVC5VepMsbNbICY+P/FVqdL5vOcKXC65K YXMfrsn3B6iRYjdbjYdzrTF3r90nPCHw= X-Gm-Gg: ASbGncurVBn5vo0Mb9mptZGVo3AAcv0KpJ3hnduzYySI1r+dqAtQTjYalJ1lnBeP46j 1qgsj6mTZM/7kGF22BRr2VHLqb1xnIBVsMonWSPsbPEwY/d1j1rI+m75kLIupn2xp9oWm7PGlvA Zj/urQdqC08sEOgoKnPWNwfBXcF/9wO+8FLw/uc/UdsTF5gTANZwN2GUeB692P5R/x2/MVqSg2G uEOJv026LdeeVXnBTqX1KIp903UnnfznQkcgTN5bQ2L6D1JmOUDjD2ubbnOQF9W X-Google-Smtp-Source: AGHT+IFg5KIy0xo3PGExHMO/pHTXv/8PEwBr39wC47Ww/rbIJP1zUobaVXC81Ra+BF1T5GPBThd0i6zh+ahV+xFJiVw= X-Received: by 2002:aa7:d957:0:b0:638:7fca:7598 with SMTP id 4fb4d7f45d1cf-639bb33b4c0mr7112784a12.13.1759964077932; Wed, 08 Oct 2025 15:54:37 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Melanie Plageman Date: Wed, 8 Oct 2025 18:54:25 -0400 X-Gm-Features: AS18NWBSdqn4EvqPu4L4X0_dCJllw83G7tpZQQk3AXDP8sr7fa8nrynzMf1OMsU 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="000000000000af0a320640ad91f9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000af0a320640ad91f9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Oct 6, 2025 at 6:40=E2=80=AFPM Melanie Plageman wrote: > > In attached v16, I=E2=80=99ve reverted to removing XLOG_HEAP2_VISIBLE > entirely, rather than first removing each caller's heap page from the > VM WAL chain. I reordered changes and squashed several refactoring > patches to improve patch-by-patch readability. This should make the > set read differently from earlier versions that removed > XLOG_HEAP2_VISIBLE and had more step-by-step mechanical refactoring. > > I think if we plan to go all the way with removing XLOG_HEAP2_VISIBLE, > having intermediate patches that just set PD_ALL_VISIBLE when making > other heap pages are more confusing than helpful. Also, I think having > separate flags for setting PD_ALL_VISIBLE in the WAL record > over-complicated the code. I decided to reorder the patches to remove XLOG_HEAP2_VISIBLE from vacuum phase III before removing it from vacuum phase I because removing it from phase III doesn't require preliminary refactoring patches. I've done that in the attached v17. I've also added an experimental patch on the end that refactors large chunks of heap_page_prune_and_freeze() into helpers. I got some feedback off-list that heap_page_prune_and_freeze() is too unwieldy now. I'm not sure how I feel about them yet, so I haven't documented them or moved them up in the patch set to before changes to heap_page_prune_and_freeze(). 0001: Eliminate XLOG_HEAP2_VISIBLE from COPY FREEZE 0002: Eliminate XLOG_HEAP2_VISIBLE from phase III of vacuum 0003 - 0006: cleanup and refactoring to prepare for 0007 0007: Eliminate XLOG_HEAP2_VISIBLE from vacuum prune/freeze 0008 - 0009: Remove XLOG_HEAP2_VISIBLE 0010 - 0012: refactoring to prepare for 0013 0013: Set VM on-access 0014: Set pd_prune_xid on insert 0015: Experimental refactoring of heap_page_prune_and_freeze into helpers - Melanie --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="UTF-8"; name="v17-0001-Eliminate-COPY-FREEZE-use-of-XLOG_HEAP2_VISIBLE.patch" Content-Disposition: attachment; filename="v17-0001-Eliminate-COPY-FREEZE-use-of-XLOG_HEAP2_VISIBLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil31wt0 RnJvbSA1Yzk0YTljZWE3NzgyMDIzNWY2MjcxOWI5ZTc2MGFkYjZmYmJjNjE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE3IEp1biAyMDI1IDE3OjIyOjEwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgMDEvMTVdIEVsaW1pbmF0ZSBDT1BZIEZSRUVaRSB1c2Ugb2YgWExPR19IRUFQMl9W SVNJQkxFCgpJbnN0ZWFkIG9mIGVtaXR0aW5nIGEgc2VwYXJhdGUgV0FMIFhMT0dfSEVBUDJfVklT SUJMRSByZWNvcmQgZm9yIHNldHRpbmcKYml0cyBpbiB0aGUgVk0sIHNwZWNpZnkgdGhlIFZNIGJs b2NrIGNoYW5nZXMgaW4gdGhlClhMT0dfSEVBUDJfTVVMVElfSU5TRVJUIHJlY29yZC4KClRoaXMg aGFsdmVzIHRoZSBudW1iZXIgb2YgV0FMIHJlY29yZHMgZW1pdHRlZCBieSBDT1BZIEZSRUVaRS4K CkF1dGhvcjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6 IFJvYmVydCBIYWFzIDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBLaXJpbGwg UmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rn ci5lcy9tL2ZsYXQvQ0FBS1J1X1pNdzZOcGRfcW0yS00lMkJGd1EzY01PTXgxRGgzVk1ocDgtVjdT T0x4ZEs5LWclNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jICAgICAgICB8IDQ0ICsrKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV94bG9nLmMgICB8IDUyICsrKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyB8IDY4ICsrKysrKysrKysrKysrKysrKysrKysr Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICB8ICA1ICsrCiBzcmMv aW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oICAgICAgfCAgMyArKwogNSBmaWxlcyBjaGFu Z2VkLCAxNTQgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwppbmRleCBlZDBjMGMyZGM5Zi4uN2YzNTRjYWVjMzEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbS5jCkBAIC0yNDY2LDcgKzI0NjYsMTEgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRp b24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQlzdGFy dGluZ193aXRoX2VtcHR5X3BhZ2UgPSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpID09IDA7 CiAKIAkJaWYgKHN0YXJ0aW5nX3dpdGhfZW1wdHlfcGFnZSAmJiAob3B0aW9ucyAmIEhFQVBfSU5T RVJUX0ZST1pFTikpCisJCXsKIAkJCWFsbF9mcm96ZW5fc2V0ID0gdHJ1ZTsKKwkJCS8qIExvY2sg dGhlIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyB0aGUgY3JpdGljYWwgc2VjdGlvbiAqLworCQkJ TG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKwkJfQogCiAJCS8q IE5PIEVSRVBPUlQoRVJST1IpIGZyb20gaGVyZSB0aWxsIGNoYW5nZXMgYXJlIGxvZ2dlZCAqLwog CQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKQEAgLTI1MDYsNyArMjUxMCw4IEBAIGhlYXBfbXVsdGlf aW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1 cGxlcywKIAkJICogZ29pbmcgdG8gYWRkIGZ1cnRoZXIgZnJvemVuIHJvd3MgdG8gaXQuCiAJCSAq CiAJCSAqIElmIHdlJ3JlIG9ubHkgYWRkaW5nIGFscmVhZHkgZnJvemVuIHJvd3MgdG8gYSBwcmV2 aW91c2x5IGVtcHR5Ci0JCSAqIHBhZ2UsIG1hcmsgaXQgYXMgYWxsLXZpc2libGUuCisJCSAqIHBh Z2UsIG1hcmsgaXQgYXMgYWxsLWZyb3plbiBhbmQgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4g V2UncmUKKwkJICogYWxyZWFkeSBob2xkaW5nIGEgcGluIG9uIHRoZSB2bWJ1ZmZlci4KIAkJICov CiAJCWlmIChQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpICYmICEob3B0aW9ucyAmIEhFQVBfSU5TRVJU X0ZST1pFTikpCiAJCXsKQEAgLTI1MTcsNyArMjUyMiwxNCBAQCBoZWFwX211bHRpX2luc2VydChS ZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipzbG90cywgaW50IG50dXBsZXMsCiAJ CQkJCQkJCXZtYnVmZmVyLCBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwogCQl9CiAJCWVsc2Ug aWYgKGFsbF9mcm96ZW5fc2V0KQorCQl7CiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJ CXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAor CQkJCQkJCQkJIHZtYnVmZmVyLAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUg fAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkJCSBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOworCQl9CiAKIAkJLyoKIAkJICogWFhYIFNob3Vs ZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMgcGFnZSA/IFNlZSBoZWFwX2luc2VydCgp CkBAIC0yNTY1LDYgKzI1NzcsMTIgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRp b24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQkJeGxyZWMtPmZsYWdz ID0gMDsKIAkJCWlmIChhbGxfdmlzaWJsZV9jbGVhcmVkKQogCQkJCXhscmVjLT5mbGFncyA9IFhM SF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRDsKKworCQkJLyoKKwkJCSAqIFdlIGRvbid0IGhh dmUgdG8gd29ycnkgYWJvdXQgaW5jbHVkaW5nIGEgY29uZmxpY3QgeGlkIGluIHRoZQorCQkJICog V0FMIHJlY29yZCBhcyBIRUFQX0lOU0VSVF9GUk9aRU4gaW50ZW50aW9uYWxseSB2aW9sYXRlcwor CQkJICogdmlzaWJpbGl0eSBydWxlcy4KKwkJCSAqLwogCQkJaWYgKGFsbF9mcm96ZW5fc2V0KQog CQkJCXhscmVjLT5mbGFncyA9IFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQ7CiAKQEAgLTI2Mjcs NyArMjY0NSwxMCBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVU YWJsZVNsb3QgKipzbG90cywgaW50IG50dXBsZXMsCiAKIAkJCVhMb2dCZWdpbkluc2VydCgpOwog CQkJWExvZ1JlZ2lzdGVyRGF0YSh4bHJlYywgdHVwbGVkYXRhIC0gc2NyYXRjaC5kYXRhKTsKKwog CQkJWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIGJ1ZmZlciwgUkVHQlVGX1NUQU5EQVJEIHwgYnVmZmxh Z3MpOworCQkJaWYgKGFsbF9mcm96ZW5fc2V0KQorCQkJCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCB2 bWJ1ZmZlciwgMCk7CiAKIAkJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgdHVwbGVkYXRhLCB0b3Rh bGRhdGFsZW4pOwogCkBAIC0yNjM3LDI2ICsyNjU4LDE3IEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJl bGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJ CXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fSEVBUDJfSUQsIGluZm8pOwogCiAJCQlQYWdlU2V0TFNO KHBhZ2UsIHJlY3B0cik7CisJCQlpZiAoYWxsX2Zyb3plbl9zZXQpCisJCQl7CisJCQkJQXNzZXJ0 KEJ1ZmZlcklzRGlydHkodm1idWZmZXIpKTsKKwkJCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uo dm1idWZmZXIpLCByZWNwdHIpOworCQkJfQogCQl9CiAKIAkJRU5EX0NSSVRfU0VDVElPTigpOwog Ci0JCS8qCi0JCSAqIElmIHdlJ3ZlIGZyb3plbiBldmVyeXRoaW5nIG9uIHRoZSBwYWdlLCB1cGRh dGUgdGhlIHZpc2liaWxpdHltYXAuCi0JCSAqIFdlJ3JlIGFscmVhZHkgaG9sZGluZyBwaW4gb24g dGhlIHZtYnVmZmVyLgotCQkgKi8KIAkJaWYgKGFsbF9mcm96ZW5fc2V0KQotCQl7Ci0JCQkvKgot CQkJICogSXQncyBmaW5lIHRvIHVzZSBJbnZhbGlkVHJhbnNhY3Rpb25JZCBoZXJlIC0gdGhpcyBp cyBvbmx5IHVzZWQKLQkJCSAqIHdoZW4gSEVBUF9JTlNFUlRfRlJPWkVOIGlzIHNwZWNpZmllZCwg d2hpY2ggaW50ZW50aW9uYWxseQotCQkJICogdmlvbGF0ZXMgdmlzaWJpbGl0eSBydWxlcy4KLQkJ CSAqLwotCQkJdmlzaWJpbGl0eW1hcF9zZXQocmVsYXRpb24sIEJ1ZmZlckdldEJsb2NrTnVtYmVy KGJ1ZmZlciksIGJ1ZmZlciwKLQkJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLCB2bWJ1ZmZlciwK LQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9B TExfVklTSUJMRSB8IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0JCX0KKwkJCUxvY2tCdWZm ZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKIAkJVW5sb2NrUmVsZWFzZUJ1ZmZl cihidWZmZXIpOwogCQluZG9uZSArPSBudGhpc3BhZ2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwppbmRleCBjZjg0MzI3NzkzOC4uYzJjN2U2YWIwODYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtNTUxLDYgKzU1MSw3IEBAIGhlYXBfeGxvZ19tdWx0 aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJaW50CQkJaTsKIAlib29sCQlpc2lu aXQgPSAoWExvZ1JlY0dldEluZm8ocmVjb3JkKSAmIFhMT0dfSEVBUF9JTklUX1BBR0UpICE9IDA7 CiAJWExvZ1JlZG9BY3Rpb24gYWN0aW9uOworCUJ1ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVm ZmVyOwogCiAJLyoKIAkgKiBJbnNlcnRpb24gZG9lc24ndCBvdmVyd3JpdGUgTVZDQyBkYXRhLCBz byBubyBjb25mbGljdCBwcm9jZXNzaW5nIGlzCkBAIC01NzEsMTEgKzU3MiwxMSBAQCBoZWFwX3hs b2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCWlmICh4bHJlYy0+Zmxh Z3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCiAJewogCQlSZWxhdGlvbglyZWxu ID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3IpOwotCQlCdWZmZXIJCXZtYnVmZmVy ID0gSW52YWxpZEJ1ZmZlcjsKIAogCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxuLCBibGtubywgJnZt YnVmZmVyKTsKIAkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWxuLCBibGtubywgdm1idWZmZXIsIFZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CiAJCVJlbGVhc2VCdWZmZXIodm1idWZmZXIpOworCQl2 bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJCUZyZWVGYWtlUmVsY2FjaGVFbnRyeShyZWxuKTsK IAl9CiAKQEAgLTY2Miw2ICs2NjMsNTUgQEAgaGVhcF94bG9nX211bHRpX2luc2VydChYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAlpZiAoQnVmZmVySXNWYWxpZChidWZmZXIpKQogCQlVbmxvY2tS ZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiAKKwlidWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCisJLyoK KwkgKiBSZWFkIGFuZCB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwIChWTSkgYmxvY2suCisJICoK KwkgKiBXZSBtdXN0IGFsd2F5cyByZWRvIFZNIGNoYW5nZXMsIGV2ZW4gaWYgdGhlIGNvcnJlc3Bv bmRpbmcgaGVhcCBwYWdlCisJICogdXBkYXRlIHdhcyBza2lwcGVkIGR1ZSB0byB0aGUgTFNOIGlu dGVybG9jay4gRWFjaCBWTSBibG9jayBjb3ZlcnMKKwkgKiBtdWx0aXBsZSBoZWFwIHBhZ2VzLCBz byBsYXRlciBXQUwgcmVjb3JkcyBtYXkgdXBkYXRlIG90aGVyIGJpdHMgaW4gdGhlCisJICogc2Ft ZSBibG9jay4gSWYgdGhpcyByZWNvcmQgaW5jbHVkZXMgYSBmdWxsLXBhZ2UgaW1hZ2UgKEZQSSks IHN1YnNlcXVlbnQKKwkgKiBXQUwgcmVjb3JkcyBtYXkgZGVwZW5kIG9uIGl0IHRvIGd1YXJkIGFn YWluc3QgdG9ybiBwYWdlcy4KKwkgKgorCSAqIEhlYXAgcGFnZSBjaGFuZ2VzIGFyZSByZXBsYXll ZCBmaXJzdCB0byBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50OgorCSAqIFBEX0FMTF9WSVNJQkxFIG11 c3QgYmUgc2V0IG9uIHRoZSBoZWFwIHBhZ2UgaWYgdGhlIFZNIGJpdCBpcyBzZXQuCisJICoKKwkg KiBOb3RlIHRoYXQgd2UgcmVsZWFzZWQgdGhlIGhlYXAgcGFnZSBsb2NrIGFib3ZlLiBVbmRlciBu b3JtYWwgb3BlcmF0aW9uLAorCSAqIHRoaXMgd291bGQgYmUgdW5zYWZlIOKAlCBhIGNvbmN1cnJl bnQgbW9kaWZpY2F0aW9uIGNvdWxkIGNsZWFyCisJICogUERfQUxMX1ZJU0lCTEUgd2hpbGUgdGhl IFZNIGJpdCByZW1haW5lZCBzZXQsIHZpb2xhdGluZyB0aGUgaW52YXJpYW50LgorCSAqCisJICog RHVyaW5nIHJlY292ZXJ5LCBob3dldmVyLCBubyBjb25jdXJyZW50IHdyaXRlcnMgZXhpc3QuIFRo ZXJlZm9yZSwKKwkgKiB1cGRhdGluZyB0aGUgVk0gd2l0aG91dCBob2xkaW5nIHRoZSBoZWFwIHBh Z2UgbG9jayBpcyBzYWZlIGVub3VnaC4gVGhpcworCSAqIHNhbWUgYXBwcm9hY2ggaXMgdGFrZW4g d2hlbiByZXBsYXlpbmcgeGxfaGVhcF92aXNpYmxlIHJlY29yZHMgKHNlZQorCSAqIGhlYXBfeGxv Z192aXNpYmxlKCkpLgorCSAqLworCWlmICgoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExf RlJPWkVOX1NFVCkgJiYKKwkJWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAx LCBSQk1fWkVST19PTl9FUlJPUiwgZmFsc2UsCisJCQkJCQkJCQkgICZ2bWJ1ZmZlcikgPT0gQkxL X05FRURTX1JFRE8pCisJeworCQlQYWdlCQl2bXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtYnVmZmVy KTsKKwkJY2hhcgkgICAqcmVsbmFtZTsKKworCQkvKiBpbml0aWFsaXplIHRoZSBwYWdlIGlmIGl0 IHdhcyByZWFkIGFzIHplcm9zICovCisJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKKwkJCVBhZ2VJ bml0KHZtcGFnZSwgQkxDS1NaLCAwKTsKKworCQkvKiBXZSBkb24ndCBoYXZlIHJlbGF0aW9uIG5h bWUgZHVyaW5nIHJlY292ZXJ5LCBzbyB1c2UgcmVsZmlsZW5vZGUgKi8KKwkJcmVsbmFtZSA9IHBz cHJpbnRmKCIldSIsIHJsb2NhdG9yLnJlbE51bWJlcik7CisJCXZpc2liaWxpdHltYXBfc2V0X3Zt Yml0cyhibGtubywKKwkJCQkJCQkJIHZtYnVmZmVyLAorCQkJCQkJCQkgVklTSUJJTElUWU1BUF9B TExfVklTSUJMRSB8CisJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCisJCQkJCQkJ CSByZWxuYW1lKTsKKworCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpLCBsc24p OworCQlwZnJlZShyZWxuYW1lKTsKKwl9CisKKwlpZiAoQnVmZmVySXNWYWxpZCh2bWJ1ZmZlcikp CisJCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIpOworCiAJLyoKIAkgKiBJZiB0aGUgcGFn ZSBpcyBydW5uaW5nIGxvdyBvbiBmcmVlIHNwYWNlLCB1cGRhdGUgdGhlIEZTTSBhcyB3ZWxsLgog CSAqIEFyYml0cmFyaWx5LCBvdXIgZGVmaW5pdGlvbiBvZiAibG93IiBpcyBsZXNzIHRoYW4gMjAl LiBXZSBjYW4ndCBkbyBtdWNoCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMK aW5kZXggNzMwNmMxNmYwNWMuLjJkNDMxNDdmZmI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw3ICsxNCw4IEBACiAgKgkJdmlzaWJpbGl0eW1hcF9jbGVh ciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFnZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAKICAqCQl2 aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBtYXAgcGFnZSBmb3Igc2V0dGluZyBhIGJpdAogICoJ CXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hlY2sgd2hldGhlciBjb3JyZWN0IG1hcCBwYWdlIGlz IGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXQJIC0gc2V0IGEgYml0IGluIGEg cHJldmlvdXNseSBwaW5uZWQgcGFnZQorICoJCXZpc2liaWxpdHltYXBfc2V0CSAtIHNldCBiaXQo cykgaW4gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlIGFuZCBsb2cKKyAqCQl2aXNpYmlsaXR5bWFw X3NldF92bWJpdHMgLSBzZXQgYml0KHMpIGluIGEgcGlubmVkIHBhZ2UKICAqCQl2aXNpYmlsaXR5 bWFwX2dldF9zdGF0dXMgLSBnZXQgc3RhdHVzIG9mIGJpdHMKICAqCQl2aXNpYmlsaXR5bWFwX2Nv dW50ICAtIGNvdW50IG51bWJlciBvZiBiaXRzIHNldCBpbiB2aXNpYmlsaXR5IG1hcAogICoJCXZp c2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZSAtCkBAIC0zMjEsNiArMzIyLDcxIEBAIHZpc2li aWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhl YXBCdWYsCiAJcmV0dXJuIHN0YXR1czsKIH0KIAorLyoKKyAqIFNldCB2aXNpYmlsaXR5IG1hcCAo Vk0pIGZsYWdzIGluIHRoZSBibG9jayByZWZlcmVuY2VkIGJ5IHZtQnVmLgorICoKKyAqIFRoaXMg ZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIGNhbGxlcnMgdGhhdCBsb2cgVk0gY2hhbmdlcyB0b2dl dGhlcgorICogd2l0aCB0aGUgaGVhcCBwYWdlIG1vZGlmaWNhdGlvbnMgdGhhdCByZW5kZXJlZCB0 aGUgcGFnZSBhbGwtdmlzaWJsZS4KKyAqIENhbGxlcnMgdGhhdCBsb2cgVk0gY2hhbmdlcyBzZXBh cmF0ZWx5IHNob3VsZCB1c2UgdmlzaWJpbGl0eW1hcF9zZXQoKS4KKyAqCisgKiB2bUJ1ZiBtdXN0 IGJlIHBpbm5lZCBhbmQgZXhjbHVzaXZlbHkgbG9ja2VkLCBhbmQgaXQgbXVzdCBjb3ZlciB0aGUg Vk0gYml0cworICogY29ycmVzcG9uZGluZyB0byBoZWFwQmxrLgorICoKKyAqIEluIG5vcm1hbCBv cGVyYXRpb24gKG5vdCByZWNvdmVyeSksIHRoaXMgbXVzdCBiZSBjYWxsZWQgaW5zaWRlIGEgY3Jp dGljYWwKKyAqIHNlY3Rpb24gdGhhdCBhbHNvIGFwcGxpZXMgdGhlIG5lY2Vzc2FyeSBoZWFwIHBh Z2UgY2hhbmdlcyBhbmQsIGlmCisgKiBhcHBsaWNhYmxlLCBlbWl0cyBXQUwuCisgKgorICogVGhl IGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgY29uc2lzdGVuY3kgYmV0d2VlbiB0 aGUgaGVhcCBwYWdlCisgKiBhbmQgdGhlIFZNIHBhZ2UgYnkgaG9sZGluZyBhIHBpbiBhbmQgZXhj bHVzaXZlIGxvY2sgb24gdGhlIGJ1ZmZlcgorICogY29udGFpbmluZyBoZWFwQmxrLgorICoKKyAq IGhlYXBSZWxuYW1lIGlzIHVzZWQgb25seSBmb3IgZGVidWdnaW5nLgorICovCit1aW50OAordmlz aWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJCQkgQnVmZmVy IHZtQnVmLCB1aW50OCBmbGFncywKKwkJCQkJCSBjb25zdCBjaGFyICpoZWFwUmVsbmFtZSkKK3sK KwlCbG9ja051bWJlciBtYXBCbG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7CisJ dWludDMyCQltYXBCeXRlID0gSEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGspOworCXVpbnQ4CQlt YXBPZmZzZXQgPSBIRUFQQkxLX1RPX09GRlNFVChoZWFwQmxrKTsKKwlQYWdlCQlwYWdlOworCXVp bnQ4CSAgICptYXA7CisJdWludDgJCXN0YXR1czsKKworI2lmZGVmIFRSQUNFX1ZJU0lCSUxJVFlN QVAKKwllbG9nKERFQlVHMSwgInZtX3NldCBmbGFncyAweCUwMlggZm9yICVzICVkIiwKKwkJIGZs YWdzLCBoZWFwUmVsbmFtZSwgaGVhcEJsayk7CisjZW5kaWYKKworCS8qIENhbGwgaW4gc2FtZSBj cml0aWNhbCBzZWN0aW9uIHdoZXJlIFdBTCBpcyBlbWl0dGVkLiAqLworCUFzc2VydChJblJlY292 ZXJ5IHx8IENyaXRTZWN0aW9uQ291bnQgPiAwKTsKKworCS8qIEZsYWdzIHNob3VsZCBiZSB2YWxp ZC4gQWxzbyBuZXZlciBjbGVhciBiaXRzIHdpdGggdGhpcyBmdW5jdGlvbiAqLworCUFzc2VydCgo ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpID09IGZsYWdzKTsKKworCS8qIE11c3Qg bmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBzZXR0aW5nIGFsbF92aXNpYmxl IGJpdCAqLworCUFzc2VydChmbGFncyAhPSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOworCisJ LyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBWTSBwYWdlIHBpbm5lZCAqLworCWlmICgh QnVmZmVySXNWYWxpZCh2bUJ1ZikgfHwgQnVmZmVyR2V0QmxvY2tOdW1iZXIodm1CdWYpICE9IG1h cEJsb2NrKQorCQllbG9nKEVSUk9SLCAid3JvbmcgVk0gYnVmZmVyIHBhc3NlZCB0byB2aXNpYmls aXR5bWFwX3NldCIpOworCisJQXNzZXJ0KEJ1ZmZlcklzRXhjbHVzaXZlTG9ja2VkKHZtQnVmKSk7 CisKKwlwYWdlID0gQnVmZmVyR2V0UGFnZSh2bUJ1Zik7CisJbWFwID0gKHVpbnQ4ICopIFBhZ2VH ZXRDb250ZW50cyhwYWdlKTsKKworCXN0YXR1cyA9IChtYXBbbWFwQnl0ZV0gPj4gbWFwT2Zmc2V0 KSAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUzsKKwlpZiAoZmxhZ3MgIT0gc3RhdHVzKQorCXsK KwkJbWFwW21hcEJ5dGVdIHw9IChmbGFncyA8PCBtYXBPZmZzZXQpOworCQlNYXJrQnVmZmVyRGly dHkodm1CdWYpOworCX0KKworCXJldHVybiBzdGF0dXM7Cit9CisKIC8qCiAgKgl2aXNpYmlsaXR5 bWFwX2dldF9zdGF0dXMgLSBnZXQgc3RhdHVzIG9mIGJpdHMKICAqCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9y bWdyZGVzYy9oZWFwZGVzYy5jCmluZGV4IDgyYjYyYzk1ZGU1Li5iNDhkN2RjMWQyNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2lu Y2x1ZGUgImFjY2Vzcy9oZWFwYW1feGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy9ybWdyZGVzY191 dGlscy5oIgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIgogI2luY2x1ZGUg InN0b3JhZ2Uvc3RhbmRieWRlZnMuaCIKIAogLyoKQEAgLTM1NCw2ICszNTUsMTAgQEAgaGVhcDJf ZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWFwcGVuZFN0 cmluZ0luZm8oYnVmLCAibnR1cGxlczogJWQsIGZsYWdzOiAweCUwMlgiLCB4bHJlYy0+bnR1cGxl cywKIAkJCQkJCSB4bHJlYy0+ZmxhZ3MpOwogCisJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5T RVJUX0FMTF9GUk9aRU5fU0VUKQorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIHZtX2ZsYWdz OiAweCUwMlgiLAorCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwgVklTSUJJTElU WU1BUF9BTExfRlJPWkVOKTsKKwogCQlpZiAoWExvZ1JlY0hhc0Jsb2NrRGF0YShyZWNvcmQsIDAp ICYmICFpc2luaXQpCiAJCXsKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCBvZmZz ZXRzOiIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKaW5kZXggYmUyMWM2ZGQxYTMuLjNk Y2YzN2JhMDNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKQEAgLTM3LDYgKzM3LDkg QEAgZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkg ICBCdWZmZXIgdm1CdWYsCiAJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAogCQkJ CQkJCSAgIHVpbnQ4IGZsYWdzKTsKK2V4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX3NldF92bWJp dHMoQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBm bGFncywKKwkJCQkJCQkJCSAgY29uc3QgY2hhciAqaGVhcFJlbG5hbWUpOwogZXh0ZXJuIHVpbnQ4 IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBC bGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9jb3VudChSZWxh dGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlzaWJsZSwgQmxvY2tOdW1iZXIgKmFsbF9mcm96 ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZShS ZWxhdGlvbiByZWwsCi0tIAoyLjQzLjAKCg== --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="UTF-8"; name="v17-0002-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v17-0002-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil37b71 RnJvbSBiYjJhNGMyZDY4MDBjZDA2Y2M4MDQ4NDdiNTg2MmYzNmQ4MDgwNjE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDggT2N0IDIwMjUgMTU6Mzg6NTMgLTA0MDAKU3ViamVjdDogW1BB VENIIHYxNyAwMi8xNV0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJSUkKCkluc3RlYWQgb2YgZW1pdHRpbmcgYSBzZXBhcmF0ZSBYTE9HX0hFQVAyX1ZJU0lC TEUgcmVjb3JkIGZvciBlYWNoIHBhZ2UKdGhhdCBiZWNvbWVzIGFsbC12aXNpYmxlIGluIHZhY3V1 bSdzIHRoaXJkIHBoYXNlLCByZWNvcmQgdGhlCnZpc2liaWxpdHkgbWFwIHVwZGF0ZSBpbiB0aGUg YWxyZWFkeSBlbWl0dGVkClhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFOVVAgcmVjb3JkLgoK VmlzaWJpbGl0eSBjaGVja3MgYXJlIG5vdyBwZXJmb3JtZWQgYmVmb3JlIG1hcmtpbmcgZGVhZCBp dGVtcyB1bnVzZWQuClRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoZSBoZWFwIHBhZ2UgaXMgaGVsZCB1 bmRlciBleGNsdXNpdmUgbG9jayBmb3IgdGhlCmVudGlyZSBvcGVyYXRpb24uCgpUaGlzIHJlZHVj ZXMgdGhlIG51bWJlciBvZiBXQUwgcmVjb3JkcyBnZW5lcmF0ZWQgYnkgVkFDVVVNIHBoYXNlIElJ SSBieQp1cCB0byA1MCUuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1h bkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4K UmV2aWV3ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NN T014MURoM1ZNaHA4LVY3U09MeGRLOS1nJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jICB8IDEzOSArKysrKysrKysrKysrKysrKy0tLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICB8ICA1NiArKysrKysrKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgIHwgMTUzICsrKysrKysrKysr KysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIHwg IDExICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCAgICAgICB8ICAxNyArKy0KIDYgZmlsZXMg Y2hhbmdlZCwgMzAyIGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IGMyYzdlNmFiMDg2Li5hYWY1OTVlNzVkNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC0zNSw3ICszNSw5IEBAIGhlYXBf eGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJQnVmZmVyCQlidWZm ZXI7CiAJUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3I7CiAJQmxvY2tOdW1iZXIgYmxrbm87Ci0JWExv Z1JlZG9BY3Rpb24gYWN0aW9uOworCUJ1ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwor CXVpbnQ4CQl2bWZsYWdzID0gMDsKKwlTaXplCQlmcmVlc3BhY2UgPSAwOwogCiAJWExvZ1JlY0dl dEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCAmYmxrbm8pOwogCW1lbWNweSgm eGxyZWMsIG1haW5kYXRhcHRyLCBTaXplT2ZIZWFwUHJ1bmUpOwpAQCAtNTAsMTEgKzUyLDIyIEBA IGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJQXNzZXJ0 KCh4bHJlYy5mbGFncyAmIFhMSFBfQ0xFQU5VUF9MT0NLKSAhPSAwIHx8CiAJCSAgICh4bHJlYy5m bGFncyAmIChYTEhQX0hBU19SRURJUkVDVElPTlMgfCBYTEhQX0hBU19ERUFEX0lURU1TKSkgPT0g MCk7CiAKKwlpZiAoeGxyZWMuZmxhZ3MgJiBYTEhQX1ZNX0FMTF9WSVNJQkxFKQorCXsKKwkJdm1m bGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisJCWlmICh4bHJlYy5mbGFncyAmIFhM SFBfVk1fQUxMX0ZST1pFTikKKwkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVO OworCX0KKwogCS8qCi0JICogV2UgYXJlIGFib3V0IHRvIHJlbW92ZSBhbmQvb3IgZnJlZXplIHR1 cGxlcy4gIEluIEhvdCBTdGFuZGJ5IG1vZGUsCi0JICogZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5v IHF1ZXJpZXMgcnVubmluZyBmb3Igd2hpY2ggdGhlIHJlbW92ZWQgdHVwbGVzCi0JICogYXJlIHN0 aWxsIHZpc2libGUgb3Igd2hpY2ggc3RpbGwgY29uc2lkZXIgdGhlIGZyb3plbiB4aWRzIGFzIHJ1 bm5pbmcuCi0JICogVGhlIGNvbmZsaWN0IGhvcml6b24gWElEIGNvbWVzIGFmdGVyIHhsX2hlYXBf cHJ1bmUuCisJICogQWZ0ZXIgeGxfaGVhcF9wcnVuZSBpcyB0aGUgb3B0aW9uYWwgc25hcHNob3Qg Y29uZmxpY3QgaG9yaXpvbi4KKwkgKgorCSAqIEluIEhvdCBTdGFuZGJ5IG1vZGUsIHdlIG11c3Qg ZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5vIHJ1bm5pbmcgcXVlcmllcworCSAqIHdoaWNoIHdvdWxk IGNvbmZsaWN0IHdpdGggdGhlIGNoYW5nZXMgaW4gdGhpcyByZWNvcmQuIFRoYXQgbWVhbnMgd2UK KwkgKiBjYW4ndCByZXBsYXkgdGhpcyByZWNvcmQgaWYgaXQgcmVtb3ZlcyB0dXBsZXMgdGhhdCBh cmUgc3RpbGwgdmlzaWJsZSB0bworCSAqIHRyYW5zYWN0aW9ucyBvbiB0aGUgc3RhbmRieSwgZnJl ZXplIHR1cGxlcyB3aXRoIHhpZHMgdGhhdCBhcmUgc3RpbGwKKwkgKiBjb25zaWRlcmVkIHJ1bm5p bmcgb24gdGhlIHN0YW5kYnksIG9yIHNldCBhIHBhZ2UgYXMgYWxsLXZpc2libGUgaW4gdGhlCisJ ICogVk0gaWYgaXQgaXNuJ3QgYWxsLXZpc2libGUgdG8gYWxsIHRyYW5zYWN0aW9ucyBvbiB0aGUg c3RhbmRieS4KIAkgKi8KIAlpZiAoKHhscmVjLmZsYWdzICYgWExIUF9IQVNfQ09ORkxJQ1RfSE9S SVpPTikgIT0gMCkKIAl7CkBAIC03MSwxMiArODQsMTIgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6 ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAl9CiAKIAkvKgotCSAqIElmIHdlIGhhdmUgYSBm dWxsLXBhZ2UgaW1hZ2UsIHJlc3RvcmUgaXQgYW5kIHdlJ3JlIGRvbmUuCisJICogSWYgd2UgaGF2 ZSBhIGZ1bGwtcGFnZSBpbWFnZSBvZiB0aGUgaGVhcCBibG9jaywgcmVzdG9yZSBpdCBhbmQgd2Un cmUKKwkgKiBkb25lIHdpdGggdGhlIGhlYXAgYmxvY2suCiAJICovCi0JYWN0aW9uID0gWExvZ1Jl YWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAwLCBSQk1fTk9STUFMLAotCQkJCQkJCQkJ CSAgICh4bHJlYy5mbGFncyAmIFhMSFBfQ0xFQU5VUF9MT0NLKSAhPSAwLAotCQkJCQkJCQkJCSAg ICZidWZmZXIpOwotCWlmIChhY3Rpb24gPT0gQkxLX05FRURTX1JFRE8pCisJaWYgKFhMb2dSZWFk QnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMCwgUkJNX05PUk1BTCwKKwkJCQkJCQkJCSAg KHhscmVjLmZsYWdzICYgWExIUF9DTEVBTlVQX0xPQ0spICE9IDAsCisJCQkJCQkJCQkgICZidWZm ZXIpID09IEJMS19ORUVEU19SRURPKQogCXsKIAkJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo YnVmZmVyKTsKIAkJT2Zmc2V0TnVtYmVyICpyZWRpcmVjdGVkOwpAQCAtOTAsNiArMTAzLDcgQEAg aGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJeGxocF9m cmVlemVfcGxhbiAqcGxhbnM7CiAJCU9mZnNldE51bWJlciAqZnJ6X29mZnNldHM7CiAJCWNoYXIJ ICAgKmRhdGFwdHIgPSBYTG9nUmVjR2V0QmxvY2tEYXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwor CQlib29sCQlkb19wcnVuZTsKIAogCQloZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2Zy ZWV6ZShkYXRhcHRyLCB4bHJlYy5mbGFncywKIAkJCQkJCQkJCQkJICAgJm5wbGFucywgJnBsYW5z LCAmZnJ6X29mZnNldHMsCkBAIC05NywxMSArMTExLDE2IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVl emUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQkJCQkJCQkJCSAgICZuZGVhZCwgJm5vd2Rl YWQsCiAJCQkJCQkJCQkJCSAgICZudW51c2VkLCAmbm93dW51c2VkKTsKIAorCQlkb19wcnVuZSA9 IG5yZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CisKKwkJLyogRW5z dXJlIHRoZSByZWNvcmQgZG9lcyBzb21ldGhpbmcgKi8KKwkJQXNzZXJ0KGRvX3BydW5lIHx8IG5w bGFucyA+IDAgfHwgdm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisKIAkJLyoK IAkJICogVXBkYXRlIGFsbCBsaW5lIHBvaW50ZXJzIHBlciB0aGUgcmVjb3JkLCBhbmQgcmVwYWly IGZyYWdtZW50YXRpb24KIAkJICogaWYgbmVlZGVkLgogCQkgKi8KLQkJaWYgKG5yZWRpcmVjdGVk ID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDApCisJCWlmIChkb19wcnVuZSkKIAkJCWhl YXBfcGFnZV9wcnVuZV9leGVjdXRlKGJ1ZmZlciwKIAkJCQkJCQkJCSh4bHJlYy5mbGFncyAmIFhM SFBfQ0xFQU5VUF9MT0NLKSA9PSAwLAogCQkJCQkJCQkJcmVkaXJlY3RlZCwgbnJlZGlyZWN0ZWQs CkBAIC0xMzgsMzYgKzE1NywxMDQgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVy U3RhdGUgKnJlY29yZCkKIAkJLyogVGhlcmUgc2hvdWxkIGJlIG5vIG1vcmUgZGF0YSAqLwogCQlB c3NlcnQoKGNoYXIgKikgZnJ6X29mZnNldHMgPT0gZGF0YXB0ciArIGRhdGFsZW4pOwogCisJCWlm ICgodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykpCisJCQlQYWdlU2V0QWxsVmlz aWJsZShwYWdlKTsKKworCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKworCQkvKgorCQkgKiBB bHdheXMgZW1pdCBhIFdBTCByZWNvcmQgd2hlbiBzZXR0aW5nIFBEX0FMTF9WSVNJQkxFIGJ1dCBv bmx5IGVtaXQKKwkJICogYW4gRlBJIGlmIGNoZWNrc3Vtcy93YWxfbG9nX2hpbnRzIGFyZSBlbmFi bGVkLiBBZHZhbmNlIHRoZSBwYWdlIExTTgorCQkgKiBvbmx5IGlmIHRoZSByZWNvcmQgY291bGQg aW5jbHVkZSBhbiBGUEksIHNpbmNlIHJlY292ZXJ5IHNraXBzCisJCSAqIHJlY29yZHMgPD0gdGhl IHN0YW1wZWQgTFNOLiBPdGhlcndpc2UgaXQgbWlnaHQgc2tpcCBhbiBlYXJsaWVyIEZQSQorCQkg KiBuZWVkZWQgdG8gcmVwYWlyIGEgdG9ybiBwYWdlLgorCQkgKi8KKwkJaWYgKGRvX3BydW5lIHx8 IG5wbGFucyA+IDAgfHwKKwkJCSgodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykg JiYgWExvZ0hpbnRCaXRJc05lZWRlZCgpKSkKKwkJCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsKKwog CQkvKgogCQkgKiBOb3RlOiB3ZSBkb24ndCB3b3JyeSBhYm91dCB1cGRhdGluZyB0aGUgcGFnZSdz IHBydW5hYmlsaXR5IGhpbnRzLgogCQkgKiBBdCB3b3JzdCB0aGlzIHdpbGwgY2F1c2UgYW4gZXh0 cmEgcHJ1bmUgY3ljbGUgdG8gb2NjdXIgc29vbi4KIAkJICovCi0KLQkJUGFnZVNldExTTihwYWdl LCBsc24pOwotCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKIAl9CiAKIAkvKgotCSAqIElmIHdl IHJlbGVhc2VkIGFueSBzcGFjZSBvciBsaW5lIHBvaW50ZXJzLCB1cGRhdGUgdGhlIGZyZWUgc3Bh Y2UgbWFwLgorCSAqIElmIHdlIHJlbGVhc2VkIGFueSBzcGFjZSBvciBsaW5lIHBvaW50ZXJzIG9y IHNldCBQRF9BTExfVklTSUJMRSBvciB0aGUKKwkgKiBWTSwgdXBkYXRlIHRoZSBmcmVlc3BhY2Ug bWFwLgorCSAqCisJICogRXZlbiB3aGVuIG5vIGFjdHVhbCBzcGFjZSBpcyBmcmVlZCAoZS5nLiwg d2hlbiBvbmx5IG1hcmtpbmcgdGhlIHBhZ2UKKwkgKiBhbGwtdmlzaWJsZSBvciBmcm96ZW4pLCB3 ZSBzdGlsbCB1cGRhdGUgdGhlIEZTTS4gQmVjYXVzZSB0aGUgRlNNIGlzCisJICogdW5sb2dnZWQg YW5kIG1haW50YWluZWQgaGV1cmlzdGljYWxseSwgaXQgb2Z0ZW4gYmVjb21lcyBzdGFsZSBvbgor CSAqIHN0YW5kYnlzLiBJZiBzdWNoIGEgc3RhbmRieSBpcyBsYXRlciBwcm9tb3RlZCBhbmQgcnVu cyBWQUNVVU0sIGl0IHdpbGwKKwkgKiBza2lwIHJlY2FsY3VsYXRpbmcgZnJlZSBzcGFjZSBmb3Ig cGFnZXMgdGhhdCB3ZXJlIG1hcmtlZCBhbGwtdmlzaWJsZQorCSAqIChvciBhbGwtZnJvemVuLCBk ZXBlbmRpbmcgb24gdGhlIG1vZGUpLiBGcmVlU3BhY2VNYXBWYWN1dW0gY2FuIHRoZW4KKwkgKiBw cm9wYWdhdGUgb3Zlcmx5IG9wdGltaXN0aWMgZnJlZSBzcGFjZSB2YWx1ZXMgdXB3YXJkLCBjYXVz aW5nIGZ1dHVyZQorCSAqIGluc2VydGlvbnMgdG8gc2VsZWN0IHBhZ2VzIHRoYXQgdHVybiBvdXQg dG8gYmUgdW51c2FibGUuIEluIGJ1bGssIHRoaXMKKwkgKiBjYW4gbGVhZCB0byBsb25nIHN0YWxs cy4KKwkgKgorCSAqIFRvIHByZXZlbnQgdGhpcywgYWx3YXlzIHJlZnJlc2ggdGhlIEZTTeKAmXMg dmlldyB3aGVuIGEgcGFnZSBiZWNvbWVzCisJICogYWxsLXZpc2libGUgb3IgYWxsLWZyb3plbi4K KwkgKgorCSAqIERvIHRoaXMgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGEgZnVsbC1wYWdlIGltYWdl IGlzIGxvZ2dlZCwgc2luY2UgRlNNCisJICogZGF0YSBpcyBub3QgcGFydCBvZiB0aGUgcGFnZSBp dHNlbGYuCiAJICoKLQkgKiBEbyB0aGlzIHJlZ2FyZGxlc3Mgb2YgYSBmdWxsLXBhZ2UgaW1hZ2Ug YmVpbmcgYXBwbGllZCwgc2luY2UgdGhlIEZTTQotCSAqIGRhdGEgaXMgbm90IGluIHRoZSBwYWdl IGFueXdheS4KIAkgKi8KIAlpZiAoQnVmZmVySXNWYWxpZChidWZmZXIpKQogCXsKLQkJaWYgKHhs cmVjLmZsYWdzICYgKFhMSFBfSEFTX1JFRElSRUNUSU9OUyB8Ci0JCQkJCQkgICBYTEhQX0hBU19E RUFEX0lURU1TIHwKLQkJCQkJCSAgIFhMSFBfSEFTX05PV19VTlVTRURfSVRFTVMpKQotCQl7Ci0J CQlTaXplCQlmcmVlc3BhY2UgPSBQYWdlR2V0SGVhcEZyZWVTcGFjZShCdWZmZXJHZXRQYWdlKGJ1 ZmZlcikpOworCQlpZiAoKHhscmVjLmZsYWdzICYgKFhMSFBfSEFTX1JFRElSRUNUSU9OUyB8CisJ CQkJCQkJWExIUF9IQVNfREVBRF9JVEVNUyB8CisJCQkJCQkJWExIUF9IQVNfTk9XX1VOVVNFRF9J VEVNUykpIHx8CisJCQkodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykpCisJCQlm cmVlc3BhY2UgPSBQYWdlR2V0SGVhcEZyZWVTcGFjZShCdWZmZXJHZXRQYWdlKGJ1ZmZlcikpOwor CisJCS8qCisJCSAqIFdlIHdhbnQgdG8gYXZvaWQgaG9sZGluZyBhbiBleGNsdXNpdmUgbG9jayBv biB0aGUgaGVhcCBidWZmZXIgd2hpbGUKKwkJICogZG9pbmcgSU8gKGVpdGhlciBvZiB0aGUgRlNN IG9yIHRoZSBWTSksIHNvIHdlJ2xsIHJlbGVhc2UgdGhlIGxvY2sKKwkJICogb24gdGhlIGhlYXAg YnVmZmVyIGJlZm9yZSBkb2luZyBlaXRoZXIuCisJCSAqLworCQlVbmxvY2tSZWxlYXNlQnVmZmVy KGJ1ZmZlcik7CisJfQorCisJLyoKKwkgKiBOb3cgcmVhZCBhbmQgdXBkYXRlIHRoZSBWTSBibG9j ay4KKwkgKgorCSAqIFdlIG11c3QgcmVkbyBjaGFuZ2VzIHRvIHRoZSBWTSBldmVuIGlmIHRoZSBo ZWFwIHBhZ2Ugd2FzIHNraXBwZWQgZHVlIHRvCisJICogTFNOIGludGVybG9jay4gU2VlIGNvbW1l bnQgaW4gaGVhcF94bG9nX211bHRpX2luc2VydCgpIGZvciBtb3JlIGRldGFpbHMKKwkgKiBvbiBy ZXBsYXlpbmcgY2hhbmdlcyB0byB0aGUgVk0uCisJICovCisJaWYgKCh2bWZsYWdzICYgVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKSAmJgorCQlYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChy ZWNvcmQsIDEsCisJCQkJCQkJCQkgIFJCTV9aRVJPX09OX0VSUk9SLAorCQkJCQkJCQkJICBmYWxz ZSwKKwkJCQkJCQkJCSAgJnZtYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKKwl7CisJCVBhZ2UJ CXZtcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpOworCQljaGFyCSAgICpyZWxuYW1lOwor CQl1aW50OAkJb2xkX3ZtYml0cyA9IDA7CisKKwkJLyogaW5pdGlhbGl6ZSB0aGUgcGFnZSBpZiBp dCB3YXMgcmVhZCBhcyB6ZXJvcyAqLworCQlpZiAoUGFnZUlzTmV3KHZtcGFnZSkpCisJCQlQYWdl SW5pdCh2bXBhZ2UsIEJMQ0tTWiwgMCk7CiAKLQkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVy KTsKKwkJLyogV2UgZG9uJ3QgaGF2ZSByZWxhdGlvbiBuYW1lIGR1cmluZyByZWNvdmVyeSwgc28g dXNlIHJlbGZpbGVub2RlICovCisJCXJlbG5hbWUgPSBwc3ByaW50ZigiJXUiLCBybG9jYXRvci5y ZWxOdW1iZXIpOworCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25v LCB2bWJ1ZmZlciwgdm1mbGFncywgcmVsbmFtZSk7CiAKLQkJCVhMb2dSZWNvcmRQYWdlV2l0aEZy ZWVTcGFjZShybG9jYXRvciwgYmxrbm8sIGZyZWVzcGFjZSk7CisJCS8qIE9ubHkgc2V0IFZNIHBh Z2UgTFNOIGlmIHdlIG1vZGlmaWVkIHRoZSBwYWdlICovCisJCWlmIChvbGRfdm1iaXRzICE9IHZt ZmxhZ3MpCisJCXsKKwkJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CisJCQlQYWdl U2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpLCBsc24pOwogCQl9Ci0JCWVsc2UKLQkJCVVu bG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJcGZyZWUocmVsbmFtZSk7CiAJfQorCisJaWYg KEJ1ZmZlcklzVmFsaWQodm1idWZmZXIpKQorCQlVbmxvY2tSZWxlYXNlQnVmZmVyKHZtYnVmZmVy KTsKKworCWlmIChmcmVlc3BhY2UgPiAwKQorCQlYTG9nUmVjb3JkUGFnZVdpdGhGcmVlU3BhY2Uo cmxvY2F0b3IsIGJsa25vLCBmcmVlc3BhY2UpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYwppbmRleCBkOGVhMGM3OGY3Ny4uOTA1MmUxYTU4NGMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2h0 dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJh Y2Nlc3MvdHJhbnNhbS5oIgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIgog I2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIK ICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKQEAgLTgzNSw2ICs4MzYsOCBAQCBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJ CQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKIAogCQkJbG9nX2hl YXBfcHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLAorCQkJCQkJCQkJICBJbnZhbGlk QnVmZmVyLAkvKiB2bWJ1ZmZlciAqLworCQkJCQkJCQkJICAwLAkvKiB2bWZsYWdzICovCiAJCQkJ CQkJCQkgIGNvbmZsaWN0X3hpZCwKIAkJCQkJCQkJCSAgdHJ1ZSwgcmVhc29uLAogCQkJCQkJCQkJ ICBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuLApAQCAtMjA0NSwxMiArMjA0OCwxNyBA QCBoZWFwX2xvZ19mcmVlemVfcGxhbihIZWFwVHVwbGVGcmVlemUgKnR1cGxlcywgaW50IG50dXBs ZXMsCiAgKiByZXBsYXlpbmcgJ3VudXNlZCcgaXRlbXMgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZXkg d2VyZSBhbGwgcHJldmlvdXNseSBtYXJrZWQKICAqIGFzIGRlYWQuCiAgKgorICogSWYgdGhlIFZN IGlzIGJlaW5nIHVwZGF0ZWQsIHZtZmxhZ3Mgd2lsbCBjb250YWluIHRoZSBiaXRzIHRvIHNldC4g SW4gdGhpcworICogY2FzZSwgdm1idWZmZXIgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIHVwZGF0 ZWQgYW5kIG1hcmtlZCBkaXJ0eSBhbmQgc2hvdWxkCisgKiBzdGlsbCBiZSBwaW5uZWQgYW5kIGxv Y2tlZC4KKyAqCiAgKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIHNjcmliYmxlcyBvbiB0aGUgJ2Zyb3pl bicgYXJyYXkuCiAgKgogICogTm90ZTogVGhpcyBpcyBjYWxsZWQgaW4gYSBjcml0aWNhbCBzZWN0 aW9uLCBzbyBjYXJlZnVsIHdoYXQgeW91IGRvIGhlcmUuCiAgKi8KIHZvaWQKIGxvZ19oZWFwX3By dW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCisJCQkJCQkg IEJ1ZmZlciB2bWJ1ZmZlciwgdWludDggdm1mbGFncywKIAkJCQkJCSAgVHJhbnNhY3Rpb25JZCBj b25mbGljdF94aWQsCiAJCQkJCQkgIGJvb2wgY2xlYW51cF9sb2NrLAogCQkJCQkJICBQcnVuZVJl YXNvbiByZWFzb24sCkBAIC0yMDYyLDYgKzIwNzAsNyBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJl ZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXhsX2hlYXBfcHJ1bmUgeGxy ZWM7CiAJWExvZ1JlY1B0cglyZWNwdHI7CiAJdWludDgJCWluZm87CisJdWludDgJCXJlZ2J1Zl9m bGFnczsKIAogCS8qIFRoZSBmb2xsb3dpbmcgbG9jYWwgdmFyaWFibGVzIGhvbGQgZGF0YSByZWdp c3RlcmVkIGluIHRoZSBXQUwgcmVjb3JkOiAqLwogCXhsaHBfZnJlZXplX3BsYW4gcGxhbnNbTWF4 SGVhcFR1cGxlc1BlclBhZ2VdOwpAQCAtMjA3MCw4ICsyMDc5LDI0IEBAIGxvZ19oZWFwX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJeGxocF9wcnVu ZV9pdGVtcyBkZWFkX2l0ZW1zOwogCXhsaHBfcHJ1bmVfaXRlbXMgdW51c2VkX2l0ZW1zOwogCU9m ZnNldE51bWJlciBmcnpfb2Zmc2V0c1tNYXhIZWFwVHVwbGVzUGVyUGFnZV07CisJYm9vbAkJZG9f cHJ1bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwOworCWJv b2wJCWRvX3NldF92bSA9IHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7CiAKIAl4 bHJlYy5mbGFncyA9IDA7CisJcmVnYnVmX2ZsYWdzID0gUkVHQlVGX1NUQU5EQVJEOworCisJQXNz ZXJ0KCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSB2bWZsYWdzKTsKKwor CS8qCisJICogV2UgY2FuIGF2b2lkIGFuIEZQSSBpZiB0aGUgb25seSBtb2RpZmljYXRpb24gd2Ug YXJlIG1ha2luZyB0byB0aGUgaGVhcAorCSAqIHBhZ2UgaXMgdG8gc2V0IFBEX0FMTF9WSVNJQkxF IGFuZCBjaGVja3N1bXMvd2FsX2xvZ19oaW50cyBhcmUgZGlzYWJsZWQuCisJICogTm90ZSB0aGF0 IGlmIHdlIGV4cGxpY2l0bHkgc2tpcCBhbiBGUEksIHdlIG11c3Qgbm90IHNldCB0aGUgaGVhcCBw YWdlCisJICogTFNOIGxhdGVyLgorCSAqLworCWlmICghZG9fcHJ1bmUgJiYKKwkJbmZyb3plbiA9 PSAwICYmCisJCSghZG9fc2V0X3ZtIHx8ICFYTG9nSGludEJpdElzTmVlZGVkKCkpKQorCQlyZWdi dWZfZmxhZ3MgfD0gUkVHQlVGX05PX0lNQUdFOwogCiAJLyoKIAkgKiBQcmVwYXJlIGRhdGEgZm9y IHRoZSBidWZmZXIuICBUaGUgYXJyYXlzIGFyZSBub3QgYWN0dWFsbHkgaW4gdGhlCkBAIC0yMDc5 LDcgKzIxMDQsMTEgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBwYWdlIGltYWdlLCB0aGUgYXJyYXlzIGNhbiBiZSBvbWl0 dGVkLgogCSAqLwogCVhMb2dCZWdpbkluc2VydCgpOwotCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCBi dWZmZXIsIFJFR0JVRl9TVEFOREFSRCk7CisJWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIGJ1ZmZlciwg cmVnYnVmX2ZsYWdzKTsKKworCWlmIChkb19zZXRfdm0pCisJCVhMb2dSZWdpc3RlckJ1ZmZlcigx LCB2bWJ1ZmZlciwgMCk7CisKIAlpZiAobmZyb3plbiA+IDApCiAJewogCQlpbnQJCQlucGxhbnM7 CkBAIC0yMTM2LDYgKzIxNjUsMTIgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBQcmVwYXJlIHRoZSBtYWluIHhsX2hlYXBf cHJ1bmUgcmVjb3JkLiAgV2UgYWxyZWFkeSBzZXQgdGhlIFhMSFBfSEFTXyoKIAkgKiBmbGFnIGFi b3ZlLgogCSAqLworCWlmICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkKKwl7 CisJCXhscmVjLmZsYWdzIHw9IFhMSFBfVk1fQUxMX1ZJU0lCTEU7CisJCWlmICh2bWZsYWdzICYg VklTSUJJTElUWU1BUF9BTExfRlJPWkVOKQorCQkJeGxyZWMuZmxhZ3MgfD0gWExIUF9WTV9BTExf RlJPWkVOOworCX0KIAlpZiAoUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhy ZWxhdGlvbikpCiAJCXhscmVjLmZsYWdzIHw9IFhMSFBfSVNfQ0FUQUxPR19SRUw7CiAJaWYgKFRy YW5zYWN0aW9uSWRJc1ZhbGlkKGNvbmZsaWN0X3hpZCkpCkBAIC0yMTY4LDUgKzIyMDMsMjIgQEAg bG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZl ciwKIAl9CiAJcmVjcHRyID0gWExvZ0luc2VydChSTV9IRUFQMl9JRCwgaW5mbyk7CiAKLQlQYWdl U2V0TFNOKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSwgcmVjcHRyKTsKKwlpZiAoZG9fc2V0X3ZtKQor CXsKKwkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkodm1idWZmZXIpKTsKKwkJUGFnZVNldExTTihCdWZm ZXJHZXRQYWdlKHZtYnVmZmVyKSwgcmVjcHRyKTsKKwl9CisKKwkvKgorCSAqIFdlIG11c3QgYnVt cCB0aGUgcGFnZSBMU04gaWYgcHJ1bmluZyBvciBmcmVlemluZy4gSWYgd2UgYXJlIG9ubHkKKwkg KiB1cGRhdGluZyBQRF9BTExfVklTSUJMRSwgdGhvdWdoLCB3ZSBjYW4gc2tpcCBkb2luZyB0aGlz IHVubGVzcworCSAqIHdhbF9sb2dfaGludHMvY2hlY2tzdW1zIGFyZSBlbmFibGVkLiBUb3JuIHBh Z2VzIGFyZSBwb3NzaWJsZSBpZiB3ZQorCSAqIHVwZGF0ZSBQRF9BTExfVklTSUJMRSB3aXRob3V0 IGJ1bXBpbmcgdGhlIExTTiwgYnV0IHRoaXMgaXMgZGVlbWVkIG9rYXkKKwkgKiBmb3IgcGFnZSBo aW50IHVwZGF0ZXMuCisJICovCisJaWYgKGRvX3BydW5lIHx8IG5mcm96ZW4gPiAwIHx8IChkb19z ZXRfdm0gJiYgWExvZ0hpbnRCaXRJc05lZWRlZCgpKSkKKwl7CisJCUFzc2VydChCdWZmZXJJc0Rp cnR5KGJ1ZmZlcikpOworCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSwgcmVjcHRy KTsKKwl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggYWI2OTM4ZDFk YTEuLmRmZTYxN2E5MTRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00 NjUsNiArNDY1LDExIEBAIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfcmVzZXQoTFZSZWxTdGF0ZSAq dmFjcmVsKTsKIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNy ZWwpOwogc3RhdGljIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZh Y3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1 dG9mZl94aWQsIGJvb2wgKmFsbF9mcm96ZW4pOworc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dvdWxk X2JlX2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCQkJ CQkgICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLAorCQkJCQkJCQkJCSAgIGludCBuZGVhZG9m ZnNldHMsCisJCQkJCQkJCQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkgICBUcmFu c2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQpOwogc3RhdGljIHZvaWQgdXBkYXRlX3Jl bHN0YXRzX2FsbF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCB2YWN1 dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV92YWN1dW1f ZXJyb3JfaW5mbyhMVlJlbFN0YXRlICp2YWNyZWwsCkBAIC0yODQ4LDggKzI4NTMsMTAgQEAgbGF6 eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8s IEJ1ZmZlciBidWZmZXIsCiAJT2Zmc2V0TnVtYmVyIHVudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFn ZV07CiAJaW50CQkJbnVudXNlZCA9IDA7CiAJVHJhbnNhY3Rpb25JZCB2aXNpYmlsaXR5X2N1dG9m Zl94aWQ7CisJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlib29sCQlhbGxfZnJvemVuOwogCUxWU2F2ZWRFcnJJbmZvIHNhdmVkX2Vycl9pbmZvOwor CXVpbnQ4CQl2bWZsYWdzID0gMDsKIAogCUFzc2VydCh2YWNyZWwtPmRvX2luZGV4X3ZhY3V1bWlu Zyk7CiAKQEAgLTI4NjAsNiArMjg2NywyOSBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxT dGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkg VkFDVVVNX0VSUkNCX1BIQVNFX1ZBQ1VVTV9IRUFQLCBibGtubywKIAkJCQkJCQkgSW52YWxpZE9m ZnNldE51bWJlcik7CiAKKwkvKgorCSAqIEJlZm9yZSBtYXJraW5nIGRlYWQgaXRlbXMgdW51c2Vk LCBjaGVjayB3aGV0aGVyIHRoZSBwYWdlIHdpbGwgYmVjb21lCisJICogYWxsLXZpc2libGUgb25j ZSB0aGF0IGNoYW5nZSBpcyBhcHBsaWVkLiBUaGlzIGxldHMgdXMgcmVhcCB0aGUgdHVwbGVzCisJ ICogYW5kIG1hcmsgdGhlIHBhZ2UgYWxsLXZpc2libGUgd2l0aGluIHRoZSBzYW1lIGNyaXRpY2Fs IHNlY3Rpb24sCisJICogZW5hYmxpbmcgYm90aCBjaGFuZ2VzIHRvIGJlIGVtaXR0ZWQgaW4gYSBz aW5nbGUgV0FMIHJlY29yZC4gU2luY2UgdGhlCisJICogdmlzaWJpbGl0eSBjaGVja3MgbWF5IHBl cmZvcm0gSS9PIGFuZCBhbGxvY2F0ZSBtZW1vcnksIHRoZXkgbXVzdCBiZQorCSAqIGRvbmUgb3V0 c2lkZSB0aGUgY3JpdGljYWwgc2VjdGlvbi4KKwkgKi8KKwlpZiAoaGVhcF9wYWdlX3dvdWxkX2Jl X2FsbF92aXNpYmxlKHZhY3JlbCwgYnVmZmVyLAorCQkJCQkJCQkJICAgZGVhZG9mZnNldHMsIG51 bV9vZmZzZXRzLAorCQkJCQkJCQkJICAgJmFsbF9mcm96ZW4sICZ2aXNpYmlsaXR5X2N1dG9mZl94 aWQpKQorCXsKKwkJdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCQlpZiAo YWxsX2Zyb3plbikKKwkJeworCQkJdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47 CisJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHZpc2liaWxpdHlfY3V0b2ZmX3hpZCkp OworCQl9CisKKwkJLyogVGFrZSB0aGUgbG9jayBvbiB0aGUgdm1idWZmZXIgYmVmb3JlIGVudGVy aW5nIGEgY3JpdGljYWwgc2VjdGlvbiAqLworCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJf TE9DS19FWENMVVNJVkUpOworCX0KKwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCiAJZm9yIChp bnQgaSA9IDA7IGkgPCBudW1fb2Zmc2V0czsgaSsrKQpAQCAtMjg3OSw2ICsyOTA5LDIxIEBAIGxh enlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25v LCBCdWZmZXIgYnVmZmVyLAogCS8qIEF0dGVtcHQgdG8gdHJ1bmNhdGUgbGluZSBwb2ludGVyIGFy cmF5IG5vdyAqLwogCVBhZ2VUcnVuY2F0ZUxpbmVQb2ludGVyQXJyYXkocGFnZSk7CiAKKwkvKgor CSAqIFRoZSBwYWdlIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBoYWQgZGVhZCBsaW5lIHBvaW50ZXJz LCBzbworCSAqIFBEX0FMTF9WSVNJQkxFIGNhbm5vdCBiZSBhbHJlYWR5IHNldC4gVGhlcmVmb3Jl LCB3aGVuZXZlciB3ZSBzZXQgdGhlIFZNCisJICogYml0LCB3ZSBtdXN0IGFsc28gc2V0IFBEX0FM TF9WSVNJQkxFLiBUaGUgaGVhcCBwYWdlIGxvY2sgaXMgaGVsZCB3aGlsZQorCSAqIHVwZGF0aW5n IHRoZSBWTSB0byBlbnN1cmUgY29uc2lzdGVuY3kuCisJICovCisJaWYgKCh2bWZsYWdzICYgVklT SUJJTElUWU1BUF9WQUxJRF9CSVRTKSAhPSAwKQorCXsKKwkJUGFnZVNldEFsbFZpc2libGUocGFn ZSk7CisJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKKwkJCQkJCQkJIHZtYnVmZmVy LCB2bWZsYWdzLAorCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodmFjcmVsLT5yZWwp KTsKKwkJY29uZmxpY3RfeGlkID0gdmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCX0KKwogCS8qCiAJ ICogTWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdlIHdyaXRlIFdBTC4KIAkgKi8KQEAgLTI4ODgs NyArMjkzMyw4IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJs b2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCWlmIChSZWxhdGlvbk5lZWRzV0FMKHZh Y3JlbC0+cmVsKSkKIAl7CiAJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUodmFjcmVsLT5yZWws IGJ1ZmZlciwKLQkJCQkJCQkJICBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKKwkJCQkJCQkJICB2bWJ1 ZmZlciwgdm1mbGFncywKKwkJCQkJCQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCSAgZmFsc2Us CS8qIG5vIGNsZWFudXAgbG9jayByZXF1aXJlZCAqLwogCQkJCQkJCQkgIFBSVU5FX1ZBQ1VVTV9D TEVBTlVQLAogCQkJCQkJCQkgIE5VTEwsIDAsCS8qIGZyb3plbiAqLwpAQCAtMjg5NywzOSArMjk0 MywxMiBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051 bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJICB1bnVzZWQsIG51bnVzZWQpOwog CX0KIAotCS8qCi0JICogRW5kIGNyaXRpY2FsIHNlY3Rpb24sIHNvIHdlIHNhZmVseSBjYW4gZG8g dmlzaWJpbGl0eSB0ZXN0cyAod2hpY2gKLQkgKiBwb3NzaWJseSBuZWVkIHRvIHBlcmZvcm0gSU8g YW5kIGFsbG9jYXRlIG1lbW9yeSEpLiBJZiB3ZSBjcmFzaCBub3cgdGhlCi0JICogcGFnZSAoaW5j bHVkaW5nIHRoZSBjb3JyZXNwb25kaW5nIHZtIGJpdCkgbWlnaHQgbm90IGJlIG1hcmtlZCBhbGwK LQkgKiB2aXNpYmxlLCBidXQgdGhhdCdzIGZpbmUuIEEgbGF0ZXIgdmFjdXVtIHdpbGwgZml4IHRo YXQuCi0JICovCiAJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JLyoKLQkgKiBOb3cgdGhhdCB3ZSBo YXZlIHJlbW92ZWQgdGhlIExQX0RFQUQgaXRlbXMgZnJvbSB0aGUgcGFnZSwgb25jZSBhZ2Fpbgot CSAqIGNoZWNrIGlmIHRoZSBwYWdlIGhhcyBiZWNvbWUgYWxsLXZpc2libGUuICBUaGUgcGFnZSBp cyBhbHJlYWR5IG1hcmtlZAotCSAqIGRpcnR5LCBleGNsdXNpdmVseSBsb2NrZWQsIGFuZCwgaWYg bmVlZGVkLCBhIGZ1bGwgcGFnZSBpbWFnZSBoYXMgYmVlbgotCSAqIGVtaXR0ZWQuCi0JICovCi0J QXNzZXJ0KCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKLQlpZiAoaGVhcF9wYWdlX2lzX2FsbF92 aXNpYmxlKHZhY3JlbCwgYnVmZmVyLCAmdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkg JmFsbF9mcm96ZW4pKQorCWlmICgodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUp ICE9IDApCiAJewotCQl1aW50OAkJZmxhZ3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwot Ci0JCWlmIChhbGxfZnJvemVuKQotCQl7Ci0JCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpOwotCQkJZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExf RlJPWkVOOwotCQl9Ci0KLQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCXZpc2liaWxpdHlt YXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmZmVyLAotCQkJCQkJICBJbnZhbGlkWExvZ1Jl Y1B0ciwKLQkJCQkJCSAgdm1idWZmZXIsIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCSAg ZmxhZ3MpOwotCiAJCS8qIENvdW50IHRoZSBuZXdseSBzZXQgVk0gcGFnZSBmb3IgbG9nZ2luZyAq LworCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOwogCQl2YWNyZWwt PnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJCWlmIChhbGxfZnJvemVuKQogCQkJdmFjcmVsLT52 bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKQEAgLTM1OTgsMzAgKzM2MTcsNzQgQEAgZGVh ZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCkKIH0KIAogLyoKLSAqIENoZWNrIGlm IGV2ZXJ5IHR1cGxlIGluIHRoZSBnaXZlbiBwYWdlIGlzIHZpc2libGUgdG8gYWxsIGN1cnJlbnQg YW5kIGZ1dHVyZQotICogdHJhbnNhY3Rpb25zLiBBbHNvIHJldHVybiB0aGUgdmlzaWJpbGl0eV9j dXRvZmZfeGlkIHdoaWNoIGlzIHRoZSBoaWdoZXN0Ci0gKiB4bWluIGFtb25nc3QgdGhlIHZpc2li bGUgdHVwbGVzLiAgU2V0ICphbGxfZnJvemVuIHRvIHRydWUgaWYgZXZlcnkgdHVwbGUKLSAqIG9u IHRoaXMgcGFnZSBpcyBmcm96ZW4uCi0gKgotICogVGhpcyBpcyBhIHN0cmlwcGVkIGRvd24gdmVy c2lvbiBvZiBsYXp5X3NjYW5fcHJ1bmUoKS4gIElmIHlvdSBjaGFuZ2UKLSAqIGFueXRoaW5nIGhl cmUsIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgc3RheXMgaW4gc3luYy4gIE5vdGUgdGhhdCBh bgotICogYXNzZXJ0aW9uIGNhbGxzIHVzIHRvIHZlcmlmeSB0aGF0IGV2ZXJ5Ym9keSBzdGlsbCBh Z3JlZXMuICBCZSBzdXJlIHRvIGF2b2lkCi0gKiBpbnRyb2R1Y2luZyBuZXcgc2lkZS1lZmZlY3Rz IGhlcmUuCisgKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoKSB3 aGljaCBjYW4gYmUgdXNlZCBmb3IKKyAqIGNhbGxlcnMgdGhhdCBleHBlY3Qgbm8gTFBfREVBRCBv biB0aGUgcGFnZS4KICAqLwogc3RhdGljIGJvb2wKIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShM VlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlz aWJpbGl0eV9jdXRvZmZfeGlkLAogCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4pCiB7CisKKwlyZXR1 cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHZhY3JlbCwgYnVmLAorCQkJCQkJCQkJ CSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIGFsbF9mcm96ZW4sCisJCQkJCQkJCQkJICB2aXNpYmls aXR5X2N1dG9mZl94aWQpOworfQorCisvKgorICogQ2hlY2sgd2hldGhlciB0aGUgaGVhcCBwYWdl IGluIGJ1ZiBpcyBhbGwtdmlzaWJsZSBleGNlcHQgZm9yIHRoZSBkZWFkCisgKiB0dXBsZXMgcmVm ZXJlbmNlZCBpbiB0aGUgZGVhZG9mZnNldHMgYXJyYXkuCisgKgorICogVGhlIHZpc2liaWxpdHkg Y2hlY2tzIG1heSBwZXJmb3JtIElPIGFuZCBhbGxvY2F0ZSBtZW1vcnkgc28gdGhleSBtdXN0IG5v dAorICogYmUgZG9uZSBpbiBhIGNyaXRpY2FsIHNlY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgdXNl ZCBieSB2YWN1dW0gdG8gZGV0ZXJtaW5lCisgKiBpZiB0aGUgcGFnZSB3aWxsIGJlIGFsbC12aXNp YmxlIG9uY2UgaXQgcmVhcHMga25vd24gZGVhZCB0dXBsZXMuIFRoYXQgd2F5CisgKiBpdCBjYW4g ZG8gYm90aCBpbiB0aGUgc2FtZSBjcml0aWNhbCBzZWN0aW9uIGFuZCBlbWl0IGEgc2luZ2xlIFdB TCByZWNvcmQuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYWdlIGlzIGFsbC12aXNpYmxl IG90aGVyIHRoYW4gdGhlIHByb3ZpZGVkCisgKiBkZWFkb2Zmc2V0cyBhbmQgZmFsc2Ugb3RoZXJ3 aXNlLgorICoKKyAqIE91dHB1dCBwYXJhbWV0ZXJzOgorICoKKyAqICAtICphbGxfZnJvemVuOiB0 cnVlIGlmIGV2ZXJ5IHR1cGxlIG9uIHRoZSBwYWdlIGlzIGZyb3plbgorICogIC0gKnZpc2liaWxp dHlfY3V0b2ZmX3hpZDogbmV3ZXN0IHhtaW47IHZhbGlkIG9ubHkgaWYgcGFnZSBpcyBhbGwtdmlz aWJsZQorICoKKyAqIENhbGxlcnMgbG9va2luZyB0byB2ZXJpZnkgdGhhdCB0aGUgcGFnZSBpcyBh bHJlYWR5IGFsbC12aXNpYmxlIGNhbiBjYWxsCisgKiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUo KS4KKyAqCisgKiBUaGlzIGxvZ2ljIGlzIGNsb3NlbHkgcmVsYXRlZCB0byBoZWFwX3BydW5lX3Jl Y29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkuCisgKiBJZiB5b3UgbW9kaWZ5IHRoaXMgZnVuY3Rp b24sIGVuc3VyZSBjb25zaXN0ZW5jeSB3aXRoIHRoYXQgY29kZS4gQW4KKyAqIGFzc2VydGlvbiBj cm9zcy1jaGVja3MgdGhhdCBib3RoIHJlbWFpbiBpbiBhZ3JlZW1lbnQuIERvIG5vdCBpbnRyb2R1 Y2UgbmV3CisgKiBzaWRlLWVmZmVjdHMuCisgKi8KK3N0YXRpYyBib29sCitoZWFwX3BhZ2Vfd291 bGRfYmVfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJ CSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCisJCQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0 cywKKwkJCQkJCQkgICBib29sICphbGxfZnJvemVuLAorCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQg KnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkKK3sKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShi dWYpOwogCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpOwog CU9mZnNldE51bWJlciBvZmZudW0sCiAJCQkJbWF4b2ZmOwogCWJvb2wJCWFsbF92aXNpYmxlID0g dHJ1ZTsKKwlpbnQJCQltYXRjaGVkX2RlYWRfY291bnQgPSAwOwogCiAJKnZpc2liaWxpdHlfY3V0 b2ZmX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCSphbGxfZnJvemVuID0gdHJ1ZTsKIAor CUFzc2VydChuZGVhZG9mZnNldHMgPT0gMCB8fCBkZWFkb2Zmc2V0cyk7CisKKyNpZmRlZiBVU0Vf QVNTRVJUX0NIRUNLSU5HCisJLyogQ29uZmlybSBpbnB1dCBkZWFkb2Zmc2V0c1tdIGlzIHN0cmlj dGx5IHNvcnRlZCAqLworCWlmIChuZGVhZG9mZnNldHMgPiAxKQorCXsKKwkJZm9yIChpbnQgaSA9 IDE7IGkgPCBuZGVhZG9mZnNldHM7IGkrKykKKwkJCUFzc2VydChkZWFkb2Zmc2V0c1tpIC0gMV0g PCBkZWFkb2Zmc2V0c1tpXSk7CisJfQorI2VuZGlmCisKIAltYXhvZmYgPSBQYWdlR2V0TWF4T2Zm c2V0TnVtYmVyKHBhZ2UpOwogCWZvciAob2ZmbnVtID0gRmlyc3RPZmZzZXROdW1iZXI7CiAJCSBv ZmZudW0gPD0gbWF4b2ZmICYmIGFsbF92aXNpYmxlOwpAQCAtMzY0OSw5ICszNzEyLDE1IEBAIGhl YXBfcGFnZV9pc19hbGxfdmlzaWJsZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJ CSAqLwogCQlpZiAoSXRlbUlkSXNEZWFkKGl0ZW1pZCkpCiAJCXsKLQkJCWFsbF92aXNpYmxlID0g ZmFsc2U7Ci0JCQkqYWxsX2Zyb3plbiA9IGZhbHNlOwotCQkJYnJlYWs7CisJCQlpZiAoIWRlYWRv ZmZzZXRzIHx8CisJCQkJbWF0Y2hlZF9kZWFkX2NvdW50ID49IG5kZWFkb2Zmc2V0cyB8fAorCQkJ CWRlYWRvZmZzZXRzW21hdGNoZWRfZGVhZF9jb3VudF0gIT0gb2ZmbnVtKQorCQkJeworCQkJCSph bGxfZnJvemVuID0gYWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCW1h dGNoZWRfZGVhZF9jb3VudCsrOworCQkJY29udGludWU7CiAJCX0KIAogCQlBc3NlcnQoSXRlbUlk SXNOb3JtYWwoaXRlbWlkKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRl c2MvaGVhcGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCmlu ZGV4IGI0OGQ3ZGMxZDI0Li4xY2I0NGNhMzJkMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNj L2hlYXBkZXNjLmMKQEAgLTEwMyw3ICsxMDMsNyBAQCBwbGFuX2VsZW1fZGVzYyhTdHJpbmdJbmZv IGJ1Ziwgdm9pZCAqcGxhbiwgdm9pZCAqZGF0YSkKICAqIGNvZGUsIHRoZSBsYXR0ZXIgb2Ygd2hp Y2ggaXMgdXNlZCBpbiBmcm9udGVuZCAocGdfd2FsZHVtcCkgY29kZS4KICAqLwogdm9pZAotaGVh cF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50OCBm bGFncywKK2hlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNv ciwgdWludDE2IGZsYWdzLAogCQkJCQkJCQkJICAgaW50ICpucGxhbnMsIHhsaHBfZnJlZXplX3Bs YW4gKipwbGFucywKIAkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqKmZyel9vZmZzZXRzLAogCQkJ CQkJCQkJICAgaW50ICpucmVkaXJlY3RlZCwgT2Zmc2V0TnVtYmVyICoqcmVkaXJlY3RlZCwKQEAg LTI4Nyw2ICsyODcsMTUgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpCiAJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCBpc0NhdGFsb2dSZWw6ICVj IiwKIAkJCQkJCSB4bHJlYy0+ZmxhZ3MgJiBYTEhQX0lTX0NBVEFMT0dfUkVMID8gJ1QnIDogJ0Yn KTsKIAorCQlpZiAoeGxyZWMtPmZsYWdzICYgWExIUF9WTV9BTExfVklTSUJMRSkKKwkJeworCQkJ dWludDgJCXZtZmxhZ3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCisJCQlpZiAoeGxy ZWMtPmZsYWdzICYgWExIUF9WTV9BTExfRlJPWkVOKQorCQkJCXZtZmxhZ3MgfD0gVklTSUJJTElU WU1BUF9BTExfRlJPWkVOOworCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIHZtX2ZsYWdzOiAw eCUwMlgiLCB2bWZsYWdzKTsKKwkJfQorCiAJCWlmIChYTG9nUmVjSGFzQmxvY2tEYXRhKHJlY29y ZCwgMCkpCiAJCXsKIAkJCVNpemUJCWRhdGFsZW47CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggZTYwZDM0 ZGFkMjUuLjhjYmZmNmFiMGViIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0zODIsNiArMzgyLDcgQEAg ZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoQnVmZmVyIGJ1ZmZlciwgYm9vbCBs cF90cnVuY2F0ZV9vbmx5LAogCQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpub3d1bnVzZWQsIGludCBu dW51c2VkKTsKIGV4dGVybiB2b2lkIGhlYXBfZ2V0X3Jvb3RfdHVwbGVzKFBhZ2UgcGFnZSwgT2Zm c2V0TnVtYmVyICpyb290X29mZnNldHMpOwogZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5k X2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJCSAgQnVm ZmVyIHZtYnVmZmVyLCB1aW50OCB2bWZsYWdzLAogCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIGNv bmZsaWN0X3hpZCwKIAkJCQkJCQkJCSAgYm9vbCBjbGVhbnVwX2xvY2ssCiAJCQkJCQkJCQkgIFBy dW5lUmVhc29uIHJlYXNvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1f eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggZDRjMDYyNWI2 MzIuLjE2YzJiMmUzYzljIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hs b2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtMjQ5LDcgKzI0 OSw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfdXBkYXRlCiAgKiBNYWluIGRhdGEgc2VjdGlv bjoKICAqCiAgKgl4bF9oZWFwX3BydW5lCi0gKgkJdWludDgJCQkJZmxhZ3MKKyAqCQl1aW50MTYJ CQkJZmxhZ3MKICAqCVRyYW5zYWN0aW9uSWQJCQlzbmFwc2hvdF9jb25mbGljdF9ob3Jpem9uCiAg KgogICogQmxvY2sgMCBkYXRhIHNlY3Rpb246CkBAIC0yODQsNyArMjg0LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9wcnVuZQog ewotCXVpbnQ4CQlmbGFnczsKKwl1aW50MTYJCWZsYWdzOwogCiAJLyoKIAkgKiBJZiBYTEhQX0hB U19DT05GTElDVF9IT1JJWk9OIGlzIHNldCwgdGhlIGNvbmZsaWN0IGhvcml6b24gWElEIGZvbGxv d3MsCkBAIC0yOTIsNyArMjkyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9wcnVuZQogCSAq LwogfSB4bF9oZWFwX3BydW5lOwogCi0jZGVmaW5lIFNpemVPZkhlYXBQcnVuZSAob2Zmc2V0b2Yo eGxfaGVhcF9wcnVuZSwgZmxhZ3MpICsgc2l6ZW9mKHVpbnQ4KSkKKyNkZWZpbmUgU2l6ZU9mSGVh cFBydW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBmbGFncykgKyBzaXplb2YodWludDE2KSkK IAogLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsIGRlY29kaW5n IG9uIHN0YW5kYnkgKi8KICNkZWZpbmUJCVhMSFBfSVNfQ0FUQUxPR19SRUwJCQkoMSA8PCAxKQpA QCAtMzMwLDYgKzMzMCwxNSBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiAjZGVmaW5l CQlYTEhQX0hBU19ERUFEX0lURU1TCSAgICAgICAgKDEgPDwgNikKICNkZWZpbmUJCVhMSFBfSEFT X05PV19VTlVTRURfSVRFTVMgICAoMSA8PCA3KQogCisvKgorICogVGhlIHhsX2hlYXBfcHJ1bmUg cmVjb3JkJ3MgZmxhZ3MgbWF5IGFsc28gY29udGFpbiB3aGljaCBWTSBiaXRzIHRvIHNldC4KKyAq IHhsX2hlYXBfcHJ1bmUgc2hvdWxkIGFsd2F5cyB1c2UgdGhlIFhMSFBfVk1fQUxMX1ZJU0lCTEUg YW5kCisgKiBYTEhQX1ZNX0FMTF9GUk9aRU4gZmxhZ3MgYW5kIHRyYW5zbGF0ZSB0aGVtIHRvIHRo ZWlyIHZpc2liaWxpdHltYXBkZWZzLmgKKyAqIGVxdWl2YWxlbnRzLCBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFIGFuZCBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4uCisgKi8KKyNkZWZpbmUJCVhM SFBfVk1fQUxMX1ZJU0lCTEUJCQkoMSA8PCA4KQorI2RlZmluZQkJWExIUF9WTV9BTExfRlJPWkVO CQkJKDEgPDwgOSkKKwogLyoKICAqIHhsaHBfZnJlZXplX3BsYW4gZGVzY3JpYmVzIGhvdyB0byBm cmVlemUgYSBncm91cCBvZiBvbmUgb3IgbW9yZSBoZWFwIHR1cGxlcwogICogKGFwcGVhcnMgaW4g eGxfaGVhcF9wcnVuZSdzIHhsaHBfZnJlZXplX3BsYW5zIHN1Yi1yZWNvcmQpCkBAIC00OTcsNyAr NTA2LDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWws IEJ1ZmZlciBoZWFwX2J1ZmZlciwKIAkJCQkJCQkJICAgdWludDggdm1mbGFncyk7CiAKIC8qIGlu IGhlYXBkZXNjLmMsIHNvIGl0IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBmcm9udGVuZC9iYWNrZW5k IGNvZGUgKi8KLWV4dGVybiB2b2lkIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJl ZXplKGNoYXIgKmN1cnNvciwgdWludDggZmxhZ3MsCitleHRlcm4gdm9pZCBoZWFwX3hsb2dfZGVz ZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywKIAkJ CQkJCQkJCQkJCSAgIGludCAqbnBsYW5zLCB4bGhwX2ZyZWV6ZV9wbGFuICoqcGxhbnMsCiAJCQkJ CQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKipmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJCSAgIGlu dCAqbnJlZGlyZWN0ZWQsIE9mZnNldE51bWJlciAqKnJlZGlyZWN0ZWQsCi0tIAoyLjQzLjAKCg== --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="US-ASCII"; name="v17-0003-Assorted-trivial-heap_page_prune_and_freeze-clea.patch" Content-Disposition: attachment; filename="v17-0003-Assorted-trivial-heap_page_prune_and_freeze-clea.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil3hbw2 RnJvbSA2YjVmYzI3ZjBkODBiYWIxZGY4NmEyZTZmYjUxYjY0ZmQyMGMzY2JiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDE1IFNlcCAyMDI1IDEyOjA2OjE5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgMDMvMTVdIEFzc29ydGVkIHRyaXZpYWwgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUgY2xlYW51cAoKR3JvdXAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBpbnB1dCBwYXJh bWV0ZXJzIGluIGEgc3RydWN0IGFuZApjbGVhbiB1cCB0aGVpciBkb2N1bWVudGF0aW9uLgoKUmVu YW1lIGEgbWVtYmVyIG9mIFBydW5lU3RhdGUgYW5kIGRpc2FtYmlndWF0ZSBzb21lIGxvY2FsCmhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgdmFyaWFibGVzLgotLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3BydW5laGVhcC5jICB8IDExMiArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8ICAxNiArKy0tCiBzcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgfCAgNjIgKysrKysrKysrKysrLS0tCiBzcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgfCAgIDEgKwogNCBmaWxlcyBjaGFuZ2Vk LCAxMTQgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYwppbmRleCA5MDUyZTFhNTg0Yy4uYmU0MmQzYzMyNzIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jCkBAIC00Myw3ICs0Myw3IEBAIHR5cGVkZWYgc3RydWN0CiAJLyog d2hldGhlciBvciBub3QgZGVhZCBpdGVtcyBjYW4gYmUgc2V0IExQX1VOVVNFRCBkdXJpbmcgcHJ1 bmluZyAqLwogCWJvb2wJCW1hcmtfdW51c2VkX25vdzsKIAkvKiB3aGV0aGVyIHRvIGF0dGVtcHQg ZnJlZXppbmcgdHVwbGVzICovCi0JYm9vbAkJZnJlZXplOworCWJvb2wJCWF0dGVtcHRfZnJlZXpl OwogCXN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzOwogCiAJLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yNTQsMTUgKzI1NCwy MyBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy KQogCQlpZiAoUGFnZUlzRnVsbChwYWdlKSB8fCBQYWdlR2V0SGVhcEZyZWVTcGFjZShwYWdlKSA8 IG1pbmZyZWUpCiAJCXsKIAkJCU9mZnNldE51bWJlciBkdW1teV9vZmZfbG9jOworCQkJUHJ1bmVG cmVlemVQYXJhbXMgcGFyYW1zOwogCQkJUHJ1bmVGcmVlemVSZXN1bHQgcHJlc3VsdDsKIAorCQkJ cGFyYW1zLnJlbGF0aW9uID0gcmVsYXRpb247CisJCQlwYXJhbXMuYnVmZmVyID0gYnVmZmVyOwor CQkJcGFyYW1zLnJlYXNvbiA9IFBSVU5FX09OX0FDQ0VTUzsKKwkJCXBhcmFtcy52aXN0ZXN0ID0g dmlzdGVzdDsKKwkJCXBhcmFtcy5jdXRvZmZzID0gTlVMTDsKKwogCQkJLyoKIAkJCSAqIEZvciBu b3csIHBhc3MgbWFya191bnVzZWRfbm93IGFzIGZhbHNlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBv cgogCQkJICogbm90IHRoZSByZWxhdGlvbiBoYXMgaW5kZXhlcywgc2luY2Ugd2UgY2Fubm90IHNh ZmVseSBkZXRlcm1pbmUKIAkJCSAqIHRoYXQgZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nIHdpdGgg dGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24uCiAJCQkgKi8KLQkJCWhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsIHZpc3Rlc3QsIDAsCi0JCQkJCQkJCQkgICBOVUxM LCAmcHJlc3VsdCwgUFJVTkVfT05fQUNDRVNTLCAmZHVtbXlfb2ZmX2xvYywgTlVMTCwgTlVMTCk7 CisJCQlwYXJhbXMub3B0aW9ucyA9IDA7CisKKwkJCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KCZwYXJhbXMsICZwcmVzdWx0LCAmZHVtbXlfb2ZmX2xvYywgTlVMTCwgTlVMTCk7CiAKIAkJCS8q CiAJCQkgKiBSZXBvcnQgdGhlIG51bWJlciBvZiB0dXBsZXMgcmVjbGFpbWVkIHRvIHBnc3RhdHMu ICBUaGlzIGlzCkBAIC0zMDQsNjAgKzMxMiw0MyBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogICogYWxzbyBuZWVkIHRvIGFjY291bnQgZm9y IGEgcmVkdWN0aW9uIGluIHRoZSBsZW5ndGggb2YgdGhlIGxpbmUgcG9pbnRlcgogICogYXJyYXkg Zm9sbG93aW5nIGFycmF5IHRydW5jYXRpb24gYnkgdXMuCiAgKgotICogSWYgdGhlIEhFQVBfUFJV TkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQsIHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzIGlmIGl0 J3MKLSAqIHJlcXVpcmVkIGluIG9yZGVyIHRvIGFkdmFuY2UgcmVsZnJvemVueGlkIC8gcmVsbWlu bXhpZCwgb3IgaWYgaXQncwotICogY29uc2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9yIG92ZXJhbGwg c3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRvIHNvIG5vdy4gIFRoZQotICogJ2N1dG9mZnMnLCAncHJl c3VsdCcsICduZXdfcmVsZnJvemVuX3hpZCcgYW5kICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50 cwotICogYXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcuICBXaGVuIEhFQVBfUFJVTkVfRlJFRVpF IG9wdGlvbiBpcyBzZXQsIHdlIGFsc28KLSAqIHNldCBwcmVzdWx0LT5hbGxfdmlzaWJsZSBhbmQg cHJlc3VsdC0+YWxsX2Zyb3plbiBvbiBleGl0LCB0byBpbmRpY2F0ZSBpZgotICogdGhlIFZNIGJp dHMgY2FuIGJlIHNldC4gIFRoZXkgYXJlIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUKLSAq IEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3Qgc2V0LCBiZWNhdXNlIGF0IHRoZSBtb21l bnQgb25seSBjYWxsZXJzCi0gKiB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlv bi4KLSAqCi0gKiB2aXN0ZXN0IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggd2hldGhlciB0dXBsZXMg YXJlIERFQUQgb3IgUkVDRU5UTFlfREVBRAotICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmllc192 YWN1dW0pLgorICogcGFyYW1zIGNvbnRhaW5zIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIHVzZWQgdG8g Y29udHJvbCBmcmVlemluZyBhbmQgcHJ1bmluZworICogYmVoYXZpb3IuIFNlZSB0aGUgZGVmaW5p dGlvbiBvZiBQcnVuZUZyZWV6ZVBhcmFtcyBmb3IgbW9yZSBvbiB3aGF0IGVhY2gKKyAqIHBhcmFt ZXRlciBkb2VzLgogICoKLSAqIG9wdGlvbnM6Ci0gKiAgIE1BUktfVU5VU0VEX05PVyBpbmRpY2F0 ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQgTFBfVU5VU0VEIGR1cmluZwotICogICBwcnVu aW5nLgotICoKLSAqICAgRlJFRVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUg dHVwbGVzLCBhbmQgd2lsbCByZXR1cm4KLSAqICAgJ2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4n IGZsYWdzIHRvIHRoZSBjYWxsZXIuCi0gKgotICogY3V0b2ZmcyBjb250YWlucyB0aGUgZnJlZXpl IGN1dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUgYmVnaW5uaW5nCi0gKiBvZiB2 YWN1dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9GUkVFWkUgb3B0 aW9uIGlzIHNldC4KLSAqIGN1dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2VkIHRvIGRldGVy bWluZSBpZiBkZWFkIHR1cGxlcyBhcmUKLSAqIEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEIG9yIEhF QVBUVVBMRV9ERUFELgorICogSWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQg aW4gcGFyYW1zLCB3ZSB3aWxsIGZyZWV6ZSB0dXBsZXMgaWYKKyAqIGl0J3MgcmVxdWlyZWQgaW4g b3JkZXIgdG8gYWR2YW5jZSByZWxmcm96ZW54aWQgLyByZWxtaW5teGlkLCBvciBpZiBpdCdzCisg KiBjb25zaWRlcmVkIGFkdmFudGFnZW91cyBmb3Igb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2Ug dG8gZG8gc28gbm93LiAgVGhlCisgKiAncGFyYW1zLmN1dG9mZnMnLCAncHJlc3VsdCcsICduZXdf cmVsZnJvemVuX3hpZCcgYW5kICduZXdfcmVsbWluX214aWQnCisgKiBhcmd1bWVudHMgYXJlIHJl cXVpcmVkIHdoZW4gZnJlZXppbmcuICBXaGVuIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcwor ICogcGFzc2VkLCB3ZSBhbHNvIHNldCBwcmVzdWx0LT5hbGxfdmlzaWJsZSBhbmQgcHJlc3VsdC0+ YWxsX2Zyb3plbiBvbiBleGl0LAorICogdG8gaW5kaWNhdGUgaWYgdGhlIFZNIGJpdHMgY2FuIGJl IHNldC4gIFRoZXkgYXJlIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbgorICogdGhlIEhFQVBfUFJV TkVfRlJFRVpFIG9wdGlvbiBpcyBub3QgcGFzc2VkLCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25s eQorICogY2FsbGVycyB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KICAq CiAgKiBwcmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0ZXJzIG5lZWRlZCBieSBjYWxsZXJz LCBzdWNoIGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyByZW1vdmVkIGFuZCB0aGUgb2Zmc2V0 cyBvZiBkZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuCiAgKiBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZSgpIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgaXQuICBS ZXF1aXJlZAogICogYnkgYWxsIGNhbGxlcnMuCiAgKgotICogcmVhc29uIGluZGljYXRlcyB3aHkg dGhlIHBydW5pbmcgaXMgcGVyZm9ybWVkLiAgSXQgaXMgaW5jbHVkZWQgaW4gdGhlIFdBTAotICog cmVjb3JkIGZvciBkZWJ1Z2dpbmcgYW5kIGFuYWx5c2lzIHB1cnBvc2VzLCBidXQgb3RoZXJ3aXNl IGhhcyBubyBlZmZlY3QuCi0gKgogICogb2ZmX2xvYyBpcyB0aGUgb2Zmc2V0IGxvY2F0aW9uIHJl cXVpcmVkIGJ5IHRoZSBjYWxsZXIgdG8gdXNlIGluIGVycm9yCiAgKiBjYWxsYmFjay4KICAqCiAg KiBuZXdfcmVsZnJvemVuX3hpZCBhbmQgbmV3X3JlbG1pbl9teGlkIG11c3QgcHJvdmlkZWQgYnkg dGhlIGNhbGxlciBpZiB0aGUKLSAqIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuICBP biBlbnRyeSwgdGhleSBjb250YWluIHRoZSBvbGRlc3QgWElEIGFuZAotICogbXVsdGktWElEIHNl ZW4gb24gdGhlIHJlbGF0aW9uIHNvIGZhci4gIFRoZXkgd2lsbCBiZSB1cGRhdGVkIHdpdGggb2xk ZXN0Ci0gKiB2YWx1ZXMgcHJlc2VudCBvbiB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLiAgQWZ0ZXIg cHJvY2Vzc2luZyB0aGUgd2hvbGUKLSAqIHJlbGF0aW9uLCBWQUNVVU0gY2FuIHVzZSB0aGVzZSB2 YWx1ZXMgYXMgdGhlIG5ldyByZWxmcm96ZW54aWQvcmVsbWlubXhpZAotICogZm9yIHRoZSByZWxh dGlvbi4KKyAqIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQgaW4gcGFyYW1zLiAgT24g ZW50cnksIHRoZXkgY29udGFpbiB0aGUKKyAqIG9sZGVzdCBYSUQgYW5kIG11bHRpLVhJRCBzZWVu IG9uIHRoZSByZWxhdGlvbiBzbyBmYXIuICBUaGV5IHdpbGwgYmUgdXBkYXRlZAorICogd2l0aCBv bGRlc3QgdmFsdWVzIHByZXNlbnQgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFmdGVyIHBy b2Nlc3NpbmcgdGhlCisgKiB3aG9sZSByZWxhdGlvbiwgVkFDVVVNIGNhbiB1c2UgdGhlc2UgdmFs dWVzIGFzIHRoZSBuZXcKKyAqIHJlbGZyb3plbnhpZC9yZWxtaW5teGlkIGZvciB0aGUgcmVsYXRp b24uCiAgKi8KIHZvaWQKLWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyLAotCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCi0J CQkJCQkgICBpbnQgb3B0aW9ucywKLQkJCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRv ZmZzLAoraGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFt cywKIAkJCQkJCSAgIFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAotCQkJCQkJICAgUHJ1bmVS ZWFzb24gcmVhc29uLAogCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpvZmZfbG9jLAogCQkJCQkJICAg VHJhbnNhY3Rpb25JZCAqbmV3X3JlbGZyb3plbl94aWQsCiAJCQkJCQkgICBNdWx0aVhhY3RJZCAq bmV3X3JlbG1pbl9teGlkKQogeworCUJ1ZmZlcgkJYnVmZmVyID0gcGFyYW1zLT5idWZmZXI7CiAJ UGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlCbG9ja051bWJlciBibG9ja25v ID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKIAlPZmZzZXROdW1iZXIgb2ZmbnVtLApA QCAtMzY2LDE1ICszNTcsMTYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJSGVhcFR1cGxlRGF0YSB0dXA7CiAJYm9vbAkJZG9f ZnJlZXplOwogCWJvb2wJCWRvX3BydW5lOwotCWJvb2wJCWRvX2hpbnQ7Ci0JYm9vbAkJaGludF9i aXRfZnBpOworCWJvb2wJCWRvX2hpbnRfcHJ1bmU7CisJYm9vbAkJZGlkX3R1cGxlX2hpbnRfZnBp OwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxVc2FnZS53YWxfZnBpOwogCiAJLyogQ29weSBw YXJhbWV0ZXJzIHRvIHByc3RhdGUgKi8KLQlwcnN0YXRlLnZpc3Rlc3QgPSB2aXN0ZXN0OwotCXBy c3RhdGUubWFya191bnVzZWRfbm93ID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19V TlVTRURfTk9XKSAhPSAwOwotCXByc3RhdGUuZnJlZXplID0gKG9wdGlvbnMgJiBIRUFQX1BBR0Vf UFJVTkVfRlJFRVpFKSAhPSAwOwotCXByc3RhdGUuY3V0b2ZmcyA9IGN1dG9mZnM7CisJcHJzdGF0 ZS52aXN0ZXN0ID0gcGFyYW1zLT52aXN0ZXN0OworCXByc3RhdGUubWFya191bnVzZWRfbm93ID0K KwkJKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cpICE9 IDA7CisJcHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSA9IChwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BB R0VfUFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUuY3V0b2ZmcyA9IHBhcmFtcy0+Y3V0b2Zm czsKIAogCS8qCiAJICogT3VyIHN0cmF0ZWd5IGlzIHRvIHNjYW4gdGhlIHBhZ2UgYW5kIG1ha2Ug bGlzdHMgb2YgaXRlbXMgdG8gY2hhbmdlLApAQCAtMzk1LDcgKzM4Nyw3IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCiAJLyog aW5pdGlhbGl6ZSBwYWdlIGZyZWV6aW5nIHdvcmtpbmcgc3RhdGUgKi8KIAlwcnN0YXRlLnBhZ2Vm cnouZnJlZXplX3JlcXVpcmVkID0gZmFsc2U7Ci0JaWYgKHByc3RhdGUuZnJlZXplKQorCWlmIChw cnN0YXRlLmF0dGVtcHRfZnJlZXplKQogCXsKIAkJQXNzZXJ0KG5ld19yZWxmcm96ZW5feGlkICYm IG5ld19yZWxtaW5fbXhpZCk7CiAJCXByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsZnJvemVu WGlkID0gKm5ld19yZWxmcm96ZW5feGlkOwpAQCAtNDQyLDcgKzQzNCw3IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIGZ1 bmN0aW9uLCB3aGVuIHdlIHJldHVybiB0aGUgdmFsdWUgdG8gdGhlIGNhbGxlciwgc28gdGhhdCB0 aGUgY2FsbGVyCiAJICogZG9lc24ndCBzZXQgdGhlIFZNIGJpdCBpbmNvcnJlY3RseS4KIAkgKi8K LQlpZiAocHJzdGF0ZS5mcmVlemUpCisJaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUpCiAJewog CQlwcnN0YXRlLmFsbF92aXNpYmxlID0gdHJ1ZTsKIAkJcHJzdGF0ZS5hbGxfZnJvemVuID0gdHJ1 ZTsKQEAgLTQ2OCw3ICs0NjAsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hp ZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJbWF4b2ZmID0gUGFnZUdldE1heE9mZnNldE51 bWJlcihwYWdlKTsKLQl0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24p OworCXR1cC50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChwYXJhbXMtPnJlbGF0aW9uKTsK IAogCS8qCiAJICogRGV0ZXJtaW5lIEhUU1YgZm9yIGFsbCB0dXBsZXMsIGFuZCBxdWV1ZSB0aGVt IHVwIGZvciBwcm9jZXNzaW5nIGFzIEhPVApAQCAtNTU2LDcgKzU0OCw3IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIElm IGNoZWNrc3VtcyBhcmUgZW5hYmxlZCwgaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCkgbWF5 IGhhdmUgY2F1c2VkCiAJICogYW4gRlBJIHRvIGJlIGVtaXR0ZWQuCiAJICovCi0JaGludF9iaXRf ZnBpID0gZnBpX2JlZm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9mcGk7CisJZGlkX3R1cGxlX2hpbnRf ZnBpID0gZnBpX2JlZm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9mcGk7CiAKIAkvKgogCSAqIFByb2Nl c3MgSE9UIGNoYWlucy4KQEAgLTY2NCw3ICs2NTYsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBwZF9wcnVuZV94aWQg ZmllbGQgb3IgdGhlIHBhZ2Ugd2FzIG1hcmtlZCBmdWxsLCB3ZSB3aWxsIHVwZGF0ZSB0aGUgaGlu dAogCSAqIGJpdC4KIAkgKi8KLQlkb19oaW50ID0gKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfcHJ1 bmVfeGlkICE9IHByc3RhdGUubmV3X3BydW5lX3hpZCB8fAorCWRvX2hpbnRfcHJ1bmUgPSAoKFBh Z2VIZWFkZXIpIHBhZ2UpLT5wZF9wcnVuZV94aWQgIT0gcHJzdGF0ZS5uZXdfcHJ1bmVfeGlkIHx8 CiAJCVBhZ2VJc0Z1bGwocGFnZSk7CiAKIAkvKgpAQCAtNjcyLDcgKzY2NCw3IEBAIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAq IHBsYW5zIHdlIHByZXBhcmVkLCBvciBub3QuCiAJICovCiAJZG9fZnJlZXplID0gZmFsc2U7Ci0J aWYgKHByc3RhdGUuZnJlZXplKQorCWlmIChwcnN0YXRlLmF0dGVtcHRfZnJlZXplKQogCXsKIAkJ aWYgKHByc3RhdGUucGFnZWZyei5mcmVlemVfcmVxdWlyZWQpCiAJCXsKQEAgLTcwMywxNiArNjk1 LDE2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAogCQkJCSAqIEZyZWV6aW5nIHdvdWxkIG1ha2UgdGhlIHBhZ2UgYWxsLWZyb3pl bi4gIEhhdmUgYWxyZWFkeQogCQkJCSAqIGVtaXR0ZWQgYW4gRlBJIG9yIHdpbGwgZG8gc28gYW55 d2F5PwogCQkJCSAqLwotCQkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbGF0aW9uKSkKKwkJCQlp ZiAoUmVsYXRpb25OZWVkc1dBTChwYXJhbXMtPnJlbGF0aW9uKSkKIAkJCQl7Ci0JCQkJCWlmICho aW50X2JpdF9mcGkpCisJCQkJCWlmIChkaWRfdHVwbGVfaGludF9mcGkpCiAJCQkJCQlkb19mcmVl emUgPSB0cnVlOwogCQkJCQllbHNlIGlmIChkb19wcnVuZSkKIAkJCQkJewogCQkJCQkJaWYgKFhM b2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKGJ1ZmZlcikpCiAJCQkJCQkJZG9fZnJlZXplID0gdHJ1 ZTsKIAkJCQkJfQotCQkJCQllbHNlIGlmIChkb19oaW50KQorCQkJCQllbHNlIGlmIChkb19oaW50 X3BydW5lKQogCQkJCQl7CiAJCQkJCQlpZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgpICYmIFhMb2dD aGVja0J1ZmZlck5lZWRzQmFja3VwKGJ1ZmZlcikpCiAJCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsK QEAgLTc1NCw3ICs3NDYsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkvKiBBbnkgZXJyb3Igd2hpbGUgYXBwbHlpbmcgdGhl IGNoYW5nZXMgaXMgY3JpdGljYWwgKi8KIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAotCWlmIChk b19oaW50KQorCWlmIChkb19oaW50X3BydW5lKQogCXsKIAkJLyoKIAkJICogVXBkYXRlIHRoZSBw YWdlJ3MgcGRfcHJ1bmVfeGlkIGZpZWxkIHRvIGVpdGhlciB6ZXJvLCBvciB0aGUgbG93ZXN0CkBA IC03OTcsNyArNzg5LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCS8qCiAJCSAqIEVtaXQgYSBXQUwgWExPR19IRUFQMl9Q UlVORSogcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQKIAkJICovCi0JCWlmIChSZWxhdGlvbk5l ZWRzV0FMKHJlbGF0aW9uKSkKKwkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocGFyYW1zLT5yZWxhdGlv bikpCiAJCXsKIAkJCS8qCiAJCQkgKiBUaGUgc25hcHNob3RDb25mbGljdEhvcml6b24gZm9yIHRo ZSB3aG9sZSByZWNvcmQgc2hvdWxkIGJlIHRoZQpAQCAtODM1LDExICs4MjcsMTEgQEAgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJ CQllbHNlCiAJCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQ7CiAK LQkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1ZmZlciwKKwkJCWxvZ19o ZWFwX3BydW5lX2FuZF9mcmVlemUocGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVyLAogCQkJCQkJCQkJ ICBJbnZhbGlkQnVmZmVyLAkvKiB2bWJ1ZmZlciAqLwogCQkJCQkJCQkJICAwLAkvKiB2bWZsYWdz ICovCiAJCQkJCQkJCQkgIGNvbmZsaWN0X3hpZCwKLQkJCQkJCQkJCSAgdHJ1ZSwgcmVhc29uLAor CQkJCQkJCQkJICB0cnVlLCBwYXJhbXMtPnJlYXNvbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5mcm96 ZW4sIHByc3RhdGUubmZyb3plbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5yZWRpcmVjdGVkLCBwcnN0 YXRlLm5yZWRpcmVjdGVkLAogCQkJCQkJCQkJICBwcnN0YXRlLm5vd2RlYWQsIHByc3RhdGUubmRl YWQsCkBAIC04OTcsNyArODg5LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRp b24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0gcHJz dGF0ZS5scGRlYWRfaXRlbXM7CiAJLyogdGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5IHdh cyBhbHJlYWR5IGZpbGxlZCBpbiAqLwogCi0JaWYgKHByc3RhdGUuZnJlZXplKQorCWlmIChwcnN0 YXRlLmF0dGVtcHRfZnJlZXplKQogCXsKIAkJaWYgKHByZXN1bHQtPm5mcm96ZW4gPiAwKQogCQl7 CkBAIC0xNDc5LDcgKzE0NzEsNyBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9y bWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCX0KIAogCS8q IENvbnNpZGVyIGZyZWV6aW5nIGFueSBub3JtYWwgdHVwbGVzIHdoaWNoIHdpbGwgbm90IGJlIHJl bW92ZWQgKi8KLQlpZiAocHJzdGF0ZS0+ZnJlZXplKQorCWlmIChwcnN0YXRlLT5hdHRlbXB0X2Zy ZWV6ZSkKIAl7CiAJCWJvb2wJCXRvdGFsbHlfZnJvemVuOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKaW5kZXggZGZlNjE3YTkxNGYuLmIyNTA1MGQ2NzczIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xOTU2LDEwICsxOTU2LDE2IEBAIGxhenlfc2Nhbl9w cnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiB7CiAJUmVsYXRpb24JcmVsID0gdmFjcmVsLT5yZWw7 CiAJUHJ1bmVGcmVlemVSZXN1bHQgcHJlc3VsdDsKLQlpbnQJCQlwcnVuZV9vcHRpb25zID0gMDsK KwlQcnVuZUZyZWV6ZVBhcmFtcyBwYXJhbXM7CiAKIAlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1i ZXIoYnVmKSA9PSBibGtubyk7CiAKKwlwYXJhbXMucmVsYXRpb24gPSByZWw7CisJcGFyYW1zLmJ1 ZmZlciA9IGJ1ZjsKKwlwYXJhbXMucmVhc29uID0gUFJVTkVfVkFDVVVNX1NDQU47CisJcGFyYW1z LmN1dG9mZnMgPSAmdmFjcmVsLT5jdXRvZmZzOworCXBhcmFtcy52aXN0ZXN0ID0gdmFjcmVsLT52 aXN0ZXN0OworCiAJLyoKIAkgKiBQcnVuZSBhbGwgSE9ULXVwZGF0ZSBjaGFpbnMgYW5kIHBvdGVu dGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhpcyBwYWdlLgogCSAqCkBAIC0xOTc1LDEyICsxOTgx LDEyIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJICogdHVwbGVzLiBQ cnVuaW5nIHdpbGwgaGF2ZSBkZXRlcm1pbmVkIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzCiAJ ICogYWxsLXZpc2libGUuCiAJICovCi0JcHJ1bmVfb3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9G UkVFWkU7CisJcGFyYW1zLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFOwogCWlmICh2 YWNyZWwtPm5pbmRleGVzID09IDApCi0JCXBydW5lX29wdGlvbnMgfD0gSEVBUF9QQUdFX1BSVU5F X01BUktfVU5VU0VEX05PVzsKKwkJcGFyYW1zLm9wdGlvbnMgfD0gSEVBUF9QQUdFX1BSVU5FX01B UktfVU5VU0VEX05PVzsKIAotCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKHJlbCwgYnVmLCB2 YWNyZWwtPnZpc3Rlc3QsIHBydW5lX29wdGlvbnMsCi0JCQkJCQkJICAgJnZhY3JlbC0+Y3V0b2Zm cywgJnByZXN1bHQsIFBSVU5FX1ZBQ1VVTV9TQ0FOLAorCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKCZwYXJhbXMsCisJCQkJCQkJICAgJnByZXN1bHQsCiAJCQkJCQkJICAgJnZhY3JlbC0+b2Zm bnVtLAogCQkJCQkJCSAgICZ2YWNyZWwtPk5ld1JlbGZyb3plblhpZCwgJnZhY3JlbC0+TmV3UmVs bWluTXhpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCA4Y2JmZjZhYjBlYi4uNzRhNWMyNDAwMmIg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTIyMSw2ICsyMjEsNTUgQEAgdHlwZWRlZiBzdHJ1Y3QgSGVh cFBhZ2VGcmVlemUKIAogfSBIZWFwUGFnZUZyZWV6ZTsKIAorCisvKiAncmVhc29uJyBjb2RlcyBm b3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSAqLwordHlwZWRlZiBlbnVtCit7CisJUFJV TkVfT05fQUNDRVNTLAkJCS8qIG9uLWFjY2VzcyBwcnVuaW5nICovCisJUFJVTkVfVkFDVVVNX1ND QU4sCQkJLyogVkFDVVVNIDFzdCBoZWFwIHBhc3MgKi8KKwlQUlVORV9WQUNVVU1fQ0xFQU5VUCwJ CS8qIFZBQ1VVTSAybmQgaGVhcCBwYXNzICovCit9IFBydW5lUmVhc29uOworCisvKgorICogSW5w dXQgcGFyYW1ldGVycyB0byBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpCisgKi8KK3R5cGVk ZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCit7CisJUmVsYXRpb24JcmVsYXRpb247CQkvKiBy ZWxhdGlvbiBjb250YWluaW5nIGJ1ZmZlciB0byBiZSBwcnVuZWQgKi8KKwlCdWZmZXIJCWJ1ZmZl cjsJCQkvKiBidWZmZXIgdG8gYmUgcHJ1bmVkICovCisKKwkvKgorCSAqIFRoZSByZWFzb24gcHJ1 bmluZyB3YXMgcGVyZm9ybWVkLiAgSXQgaXMgdXNlZCB0byBzZXQgdGhlIFdBTCByZWNvcmQKKwkg KiBvcGNvZGUgd2hpY2ggaXMgdXNlZCBmb3IgZGVidWdnaW5nIGFuZCBhbmFseXNpcyBwdXJwb3Nl cy4KKwkgKi8KKwlQcnVuZVJlYXNvbiByZWFzb247CisKKwkvKgorCSAqIENvbnRhaW5zIGZsYWcg Yml0czoKKwkgKgorCSAqIE1BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1z IGNhbiBiZSBzZXQgTFBfVU5VU0VEIGR1cmluZworCSAqIHBydW5pbmcuCisJICoKKwkgKiBGUkVF WkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZCB3aWxsIHJl dHVybgorCSAqICdhbGxfdmlzaWJsZScsICdhbGxfZnJvemVuJyBmbGFncyB0byB0aGUgY2FsbGVy LgorCSAqLworCWludAkJCW9wdGlvbnM7CisKKwkvKgorCSAqIHZpc3Rlc3QgaXMgdXNlZCB0byBk aXN0aW5ndWlzaCB3aGV0aGVyIHR1cGxlcyBhcmUgREVBRCBvciBSRUNFTlRMWV9ERUFECisJICog KHNlZSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0pLgorCSAqLworCUdsb2JhbFZpc1N0YXRl ICp2aXN0ZXN0OworCisJLyoKKwkgKiBjdXRvZmZzIGNvbnRhaW5zIHRoZSBmcmVlemUgY3V0b2Zm cywgZXN0YWJsaXNoZWQgYnkgVkFDVVVNIGF0IHRoZQorCSAqIGJlZ2lubmluZyBvZiB2YWN1dW1p bmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9GUkVFWkUKKwkgKiBvcHRp b24gaXMgc2V0LiBjdXRvZmZzLT5PbGRlc3RYbWluIGlzIGFsc28gdXNlZCB0byBkZXRlcm1pbmUg aWYgZGVhZAorCSAqIHR1cGxlcyBhcmUgSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQgb3IgSEVBUFRV UExFX0RFQUQuCisJICovCisJc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7Cit9IFBydW5l RnJlZXplUGFyYW1zOworCiAvKgogICogUGVyLXBhZ2Ugc3RhdGUgcmV0dXJuZWQgYnkgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoKQogICovCkBAIC0yNjQsMTMgKzMxMyw2IEBAIHR5cGVkZWYg c3RydWN0IFBydW5lRnJlZXplUmVzdWx0CiAJT2Zmc2V0TnVtYmVyIGRlYWRvZmZzZXRzW01heEhl YXBUdXBsZXNQZXJQYWdlXTsKIH0gUHJ1bmVGcmVlemVSZXN1bHQ7CiAKLS8qICdyZWFzb24nIGNv ZGVzIGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpICovCi10eXBlZGVmIGVudW0KLXsK LQlQUlVORV9PTl9BQ0NFU1MsCQkJLyogb24tYWNjZXNzIHBydW5pbmcgKi8KLQlQUlVORV9WQUNV VU1fU0NBTiwJCQkvKiBWQUNVVU0gMXN0IGhlYXAgcGFzcyAqLwotCVBSVU5FX1ZBQ1VVTV9DTEVB TlVQLAkJLyogVkFDVVVNIDJuZCBoZWFwIHBhc3MgKi8KLX0gUHJ1bmVSZWFzb247CiAKIC8qIC0t LS0tLS0tLS0tLS0tLS0KICAqCQlmdW5jdGlvbiBwcm90b3R5cGVzIGZvciBoZWFwIGFjY2VzcyBt ZXRob2QKQEAgLTM2NywxMiArNDA5LDggQEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRl eF9kZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAq LwogZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVm ZmVyIGJ1ZmZlcik7Ci1leHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxh dGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKLQkJCQkJCQkJCSAgIEdsb2JhbFZpc1N0YXRl ICp2aXN0ZXN0LAotCQkJCQkJCQkJICAgaW50IG9wdGlvbnMsCi0JCQkJCQkJCQkgICBzdHJ1Y3Qg VmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmcywKK2V4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkgICBQcnVuZUZyZWV6 ZVJlc3VsdCAqcHJlc3VsdCwKLQkJCQkJCQkJCSAgIFBydW5lUmVhc29uIHJlYXNvbiwKIAkJCQkJ CQkJCSAgIE9mZnNldE51bWJlciAqb2ZmX2xvYywKIAkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQg Km5ld19yZWxmcm96ZW5feGlkLAogCQkJCQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxtaW5f bXhpZCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDAyYjViMDQxYzQ1Li4yMGY0NTIz MjE3NSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTIzNDIsNiArMjM0Miw3IEBAIFBy b2plY3Rpb25QYXRoCiBQcm9tcHRJbnRlcnJ1cHRDb250ZXh0CiBQcm90b2NvbFZlcnNpb24KIFBy c1N0b3JhZ2UKK1BydW5lRnJlZXplUGFyYW1zCiBQcnVuZUZyZWV6ZVJlc3VsdAogUHJ1bmVSZWFz b24KIFBydW5lU3RhdGUKLS0gCjIuNDMuMAoK --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="US-ASCII"; name="v17-0008-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v17-0008-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil3sjn7 RnJvbSBmM2RjNmVkYTU4YTYxNDgyZjM2Nzg2ZGRhNmUyYWFhMjJjMGUwZjBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgMDgvMTVdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYyB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYwppbmRleCAyZjcxOTEwOGFkMi4uOTQxYjk4OWVjNTAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE4NzgsOSArMTg3OCwxMiBAQCBsYXp5X3Nj YW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1i ZXIgYmxrbm8sCiAJCSAqLwogCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCiAJCXsKKwkJ CS8qIExvY2sgdm1idWZmZXIgYmVmb3JlIGVudGVyaW5nIGNyaXRpY2FsIHNlY3Rpb24gKi8KKwkJ CUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisKIAkJCVNUQVJU X0NSSVRfU0VDVElPTigpOwogCi0JCQkvKiBtYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGlu ZyBhIFdBTCByZWNvcmQgKi8KKwkJCS8qIE1hcmsgYnVmZmVyIGRpcnR5IGJlZm9yZSB3cml0aW5n IGFueSBXQUwgcmVjb3JkcyAqLwogCQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7CiAKIAkJCS8qCkBA IC0xODk3LDEzICsxOTAwLDM0IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAq dmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAkJCQlsb2dfbmV3cGFnZV9i dWZmZXIoYnVmLCB0cnVlKTsKIAogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNp YmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkgIEludmFsaWRY TG9nUmVjUHRyLAotCQkJCQkJCSAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJ CQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJICBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4pOworCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25vLAorCQkJCQkJ CQkJIHZtYnVmZmVyLAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJ CQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkJCSBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZSh2YWNyZWwtPnJlbCkpOworCisJCQkvKgorCQkJICogRW1pdCBXQUwgZm9yIHNl dHRpbmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAgcGFnZSBhbmQKKwkJCSAqIHNldHRpbmcg dGhlIFZNLgorCQkJICovCisJCQlpZiAoUmVsYXRpb25OZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJ CQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSh2YWNyZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJ CSAgdm1idWZmZXIsCisJCQkJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJ CQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkJCQkgIEludmFsaWRU cmFuc2FjdGlvbklkLCAvKiBjb25mbGljdCB4aWQgKi8KKwkJCQkJCQkJCQkgIGZhbHNlLAkvKiBj bGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCQkgIHRydWUsIC8qIHNldF9wZF9hbGxfdmlzICovCisJ CQkJCQkJCQkJICBQUlVORV9WQUNVVU1fU0NBTiwJLyogcmVhc29uICovCisJCQkJCQkJCQkJICBO VUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJ CQkJCQkJICBOVUxMLCAwKTsKKwogCQkJRU5EX0NSSVRfU0VDVElPTigpOwogCisJCQlMb2NrQnVm ZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCiAJCQkvKiBDb3VudCB0aGUgbmV3 bHkgYWxsLWZyb3plbiBwYWdlcyBmb3IgbG9nZ2luZyAqLwogCQkJdmFjcmVsLT52bV9uZXdfdmlz aWJsZV9wYWdlcysrOwogCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsK LS0gCjIuNDMuMAoK --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="US-ASCII"; name="v17-0006-Make-heap_page_is_all_visible-independent-of-LVR.patch" Content-Disposition: attachment; filename="v17-0006-Make-heap_page_is_all_visible-independent-of-LVR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil3sjj5 RnJvbSA4NjE5M2E3MWQyZmY5NjQ5YjViMWMxZTY5NjNiZDYxMDI4NWFkMzY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDMgT2N0IDIwMjUgMTU6NTc6MDIgLTA0MDAKU3ViamVjdDogW1BB VENIIHYxNyAwNi8xNV0gTWFrZSBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUgaW5kZXBlbmRlbnQg b2YKIExWUmVsU3RhdGUKCkZ1dHVyZSBjb21taXRzIHdpbGwgdXNlIHRoaXMgZnVuY3Rpb24gaW5z aWRlIG9mIHBydW5laGVhcC5jIHdoZXJlIHdlIGRvCm5vdCBoYXZlIGFjY2VzcyB0byB0aGUgTFZS ZWxTdGF0ZS4gV2Ugb25seSBuZWVkIGEgZmV3IHBhcmFtZXRlcnMgZnJvbQp0aGUgTFZSZWxTdGF0 ZSwgc28ganVzdCBwYXNzIHRob3NlIGluIGV4cGxpY2l0bHkuCgpBdXRob3I6IE1lbGFuaWUgUGxh Z2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBLaXJpbGwgUmVz aGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhhYXMgPHJv YmVydG1oYWFzQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0 L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NNT014MURoM1ZNaHA4LVY3U09MeGRLOS1nJTQw bWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMg fCA1OSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzggaW5z ZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCmluZGV4IDU2YTAyODY2NjJiLi5jMjYxOGM2NDQ5YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYwpAQCAtNDYzLDEzICs0NjMsMTkgQEAgc3RhdGljIHZvaWQgZGVhZF9pdGVt c19hZGQoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgT2Zmc2V0TnVtYmVy ICoKIAkJCQkJCSAgIGludCBudW1fb2Zmc2V0cyk7CiBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX3Jl c2V0KExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX2NsZWFudXAo TFZSZWxTdGF0ZSAqdmFjcmVsKTsKLXN0YXRpYyBib29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJs ZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJCQkgVHJhbnNhY3Rpb25J ZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCBib29sICphbGxfZnJvemVuKTsKLXN0YXRpYyBib29s IGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZl ciBidWYsCisKK3N0YXRpYyBib29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJ CQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCisJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJp bGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0p Oworc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJ CQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKIAkJCQkJCQkJCQkgICBpbnQg bmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkJCQkJ ICAgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkKTsKKwkJCQkJCQkJCQkgICBU cmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkJICAgT2Zmc2V0 TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVsc3RhdHNfYWxs X2luZGV4ZXMoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIHZhY3V1bV9lcnJvcl9j YWxsYmFjayh2b2lkICphcmcpOwogc3RhdGljIHZvaWQgdXBkYXRlX3ZhY3V1bV9lcnJvcl9pbmZv KExWUmVsU3RhdGUgKnZhY3JlbCwKQEAgLTIwMTksOCArMjAyNSw5IEBAIGxhenlfc2Nhbl9wcnVu ZShMVlJlbFN0YXRlICp2YWNyZWwsCiAKIAkJQXNzZXJ0KHByZXN1bHQubHBkZWFkX2l0ZW1zID09 IDApOwogCi0JCWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbCwgYnVmLAotCQkJ CQkJCQkJICAmZGVidWdfY3V0b2ZmLCAmZGVidWdfYWxsX2Zyb3plbikpCisJCWlmICghaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWYsCisJCQkJCQkJCQkgIHZhY3JlbC0+ Y3V0b2Zmcy5PbGRlc3RYbWluLCAmZGVidWdfYWxsX2Zyb3plbiwKKwkJCQkJCQkJCSAgJmRlYnVn X2N1dG9mZiwgJnZhY3JlbC0+b2ZmbnVtKSkKIAkJCUFzc2VydChmYWxzZSk7CiAKIAkJQXNzZXJ0 KHByZXN1bHQuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKQEAgLTI4ODAsOSArMjg4 NywxMSBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051 bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkgKiB2aXNpYmlsaXR5IGNoZWNrcyBtYXkgcGVy Zm9ybSBJL08gYW5kIGFsbG9jYXRlIG1lbW9yeSwgdGhleSBtdXN0IGJlCiAJICogZG9uZSBvdXRz aWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLgogCSAqLwotCWlmIChoZWFwX3BhZ2Vfd291bGRfYmVf YWxsX3Zpc2libGUodmFjcmVsLCBidWZmZXIsCisJaWYgKGhlYXBfcGFnZV93b3VsZF9iZV9hbGxf dmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmZmVyLAorCQkJCQkJCQkJICAgdmFjcmVsLT5jdXRvZmZz Lk9sZGVzdFhtaW4sCiAJCQkJCQkJCQkgICBkZWFkb2Zmc2V0cywgbnVtX29mZnNldHMsCi0JCQkJ CQkJCQkgICAmYWxsX2Zyb3plbiwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpCisJCQkJCQkJCQkg ICAmYWxsX2Zyb3plbiwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCSAgICZ2YWNy ZWwtPm9mZm51bSkpCiAJewogCQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7 CiAJCWlmIChhbGxfZnJvemVuKQpAQCAtMzYyNiwxNSArMzYzNSwxOSBAQCBkZWFkX2l0ZW1zX2Ns ZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogICogY2FsbGVycyB0aGF0IGV4cGVjdCBubyBMUF9E RUFEIG9uIHRoZSBwYWdlLgogICovCiBzdGF0aWMgYm9vbAotaGVhcF9wYWdlX2lzX2FsbF92aXNp YmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKK2hlYXBfcGFnZV9pc19hbGxfdmlz aWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRl c3RYbWluLAorCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCiAJCQkJCQkgVHJhbnNhY3Rpb25JZCAq dmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4pCisJCQkJCQkg T2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkKIHsKIAotCXJldHVybiBoZWFwX3BhZ2Vfd291 bGRfYmVfYWxsX3Zpc2libGUodmFjcmVsLCBidWYsCisJcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9i ZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwKKwkJCQkJCQkJCQkgIE9sZGVzdFhtaW4sCiAJCQkJCQkJ CQkJICBOVUxMLCAwLAogCQkJCQkJCQkJCSAgYWxsX2Zyb3plbiwKLQkJCQkJCQkJCQkgIHZpc2li aWxpdHlfY3V0b2ZmX3hpZCk7CisJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJ CQkJCQkJCQkJICBsb2dnaW5nX29mZm51bSk7CiB9CiAKIC8qCkBAIC0zNjQ5LDEwICszNjYyLDE0 IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBi dWYsCiAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHBhZ2UgaXMgYWxsLXZpc2libGUgb3RoZXIgdGhh biB0aGUgcHJvdmlkZWQKICAqIGRlYWRvZmZzZXRzIGFuZCBmYWxzZSBvdGhlcndpc2UuCiAgKgor ICogT2xkZXN0WG1pbiBpcyB1c2VkIHRvIGRldGVybWluZSB2aXNpYmlsaXR5LgorICoKICAqIE91 dHB1dCBwYXJhbWV0ZXJzOgogICoKICAqICAtICphbGxfZnJvemVuOiB0cnVlIGlmIGV2ZXJ5IHR1 cGxlIG9uIHRoZSBwYWdlIGlzIGZyb3plbgogICogIC0gKnZpc2liaWxpdHlfY3V0b2ZmX3hpZDog bmV3ZXN0IHhtaW47IHZhbGlkIG9ubHkgaWYgcGFnZSBpcyBhbGwtdmlzaWJsZQorICogIC0gKmxv Z2dpbmdfb2ZmbnVtOiBPZmZzZXROdW1iZXIgb2YgY3VycmVudCB0dXBsZSBiZWluZyBwcm9jZXNz ZWQ7CisgKiAgICAgdXNlZCBieSB2YWN1dW0ncyBlcnJvciBjYWxsYmFjayBzeXN0ZW0uCiAgKgog ICogQ2FsbGVycyBsb29raW5nIHRvIHZlcmlmeSB0aGF0IHRoZSBwYWdlIGlzIGFscmVhZHkgYWxs LXZpc2libGUgY2FuIGNhbGwKICAqIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpLgpAQCAtMzY2 MywxMSArMzY4MCwxMyBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFj cmVsLCBCdWZmZXIgYnVmLAogICogc2lkZS1lZmZlY3RzLgogICovCiBzdGF0aWMgYm9vbAotaGVh cF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1 ZiwKK2hlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBi dWYsCisJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAogCQkJCQkJCSAgIE9mZnNl dE51bWJlciAqZGVhZG9mZnNldHMsCiAJCQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0cywKIAkJCQkJ CQkgICBib29sICphbGxfZnJvemVuLAotCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxp dHlfY3V0b2ZmX3hpZCkKKwkJCQkJCQkgICBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9m Zl94aWQsCisJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkKIHsKIAlQYWdl CQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZm ZXJHZXRCbG9ja051bWJlcihidWYpOwpAQCAtMzcwMiw3ICszNzIxLDcgQEAgaGVhcF9wYWdlX3dv dWxkX2JlX2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJICog U2V0IHRoZSBvZmZzZXQgbnVtYmVyIHNvIHRoYXQgd2UgY2FuIGRpc3BsYXkgaXQgYWxvbmcgd2l0 aCBhbnkKIAkJICogZXJyb3IgdGhhdCBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoaXMgdHVw bGUuCiAJCSAqLwotCQl2YWNyZWwtPm9mZm51bSA9IG9mZm51bTsKKwkJKmxvZ2dpbmdfb2ZmbnVt ID0gb2ZmbnVtOwogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9mZm51bSk7CiAKIAkJ LyogVW51c2VkIG9yIHJlZGlyZWN0IGxpbmUgcG9pbnRlcnMgYXJlIG9mIG5vIGludGVyZXN0ICov CkBAIC0zNzMyLDEwICszNzUxLDkgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKExW UmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAogCQl0dXBsZS50X2RhdGEgPSAoSGVhcFR1 cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCQl0dXBsZS50X2xlbiA9IEl0 ZW1JZEdldExlbmd0aChpdGVtaWQpOwotCQl0dXBsZS50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRS ZWxpZCh2YWNyZWwtPnJlbCk7CisJCXR1cGxlLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlk KHJlbCk7CiAKLQkJc3dpdGNoIChIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oJnR1cGxlLCB2YWNy ZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwKLQkJCQkJCQkJCQkgYnVmKSkKKwkJc3dpdGNoIChIZWFw VHVwbGVTYXRpc2ZpZXNWYWN1dW0oJnR1cGxlLCBPbGRlc3RYbWluLCBidWYpKQogCQl7CiAJCQlj YXNlIEhFQVBUVVBMRV9MSVZFOgogCQkJCXsKQEAgLTM3NTQsOCArMzc3Miw3IEBAIGhlYXBfcGFn ZV93b3VsZF9iZV9hbGxfdmlzaWJsZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJ CQkJCSAqIHRoYXQgZXZlcnlvbmUgc2VlcyBpdCBhcyBjb21taXR0ZWQ/CiAJCQkJCSAqLwogCQkJ CQl4bWluID0gSGVhcFR1cGxlSGVhZGVyR2V0WG1pbih0dXBsZS50X2RhdGEpOwotCQkJCQlpZiAo IVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLAotCQkJCQkJCQkJCQkgICB2YWNyZWwtPmN1dG9m ZnMuT2xkZXN0WG1pbikpCisJCQkJCWlmICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4sIE9s ZGVzdFhtaW4pKQogCQkJCQl7CiAJCQkJCQlhbGxfdmlzaWJsZSA9IGZhbHNlOwogCQkJCQkJKmFs bF9mcm96ZW4gPSBmYWxzZTsKQEAgLTM3OTAsNyArMzgwNyw3IEBAIGhlYXBfcGFnZV93b3VsZF9i ZV9hbGxfdmlzaWJsZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJfQkJCQkJCQkv KiBzY2FuIGFsb25nIHBhZ2UgKi8KIAogCS8qIENsZWFyIHRoZSBvZmZzZXQgaW5mb3JtYXRpb24g b25jZSB3ZSBoYXZlIHByb2Nlc3NlZCB0aGUgZ2l2ZW4gcGFnZS4gKi8KLQl2YWNyZWwtPm9mZm51 bSA9IEludmFsaWRPZmZzZXROdW1iZXI7CisJKmxvZ2dpbmdfb2ZmbnVtID0gSW52YWxpZE9mZnNl dE51bWJlcjsKIAogCXJldHVybiBhbGxfdmlzaWJsZTsKIH0KLS0gCjIuNDMuMAoK --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="US-ASCII"; name="v17-0004-Add-helper-for-freeze-determination-to-heap_page.patch" Content-Disposition: attachment; filename="v17-0004-Add-helper-for-freeze-determination-to-heap_page.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil3sjf3 RnJvbSBjNjlhNTIxOWE5Yjc5MmYzYzlmNmRjNzMwYjg4MTBhODhkMDg4YWU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE2IFNlcCAyMDI1IDE0OjIyOjEwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgMDQvMTVdIEFkZCBoZWxwZXIgZm9yIGZyZWV6ZSBkZXRlcm1pbmF0aW9uIHRvCiBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZQoKQWZ0ZXIgc2Nhbm5pbmcgdGhyb3VnaCB0aGUgbGlu ZSBwb2ludGVycyBvbiB0aGUgaGVhcCBwYWdlIGR1cmluZwp2YWN1dW0ncyBmaXJzdCBwaGFzZSwg d2UgdXNlIHNldmVyYWwgc3RhdHVzZXMgYW5kIGluZm9ybWF0aW9uIHdlCmNvbGxlY3RlZCB0byBk ZXRlcm1pbmUgd2hldGhlciBvciBub3Qgd2Ugd2lsbCB1c2UgdGhlIGZyZWV6ZSBwbGFucyB3ZQph c3NlbWJsZWQuCgpEbyB0aGlzIGluIGEgaGVscGVyIGZvciBiZXR0ZXIgcmVhZGFiaWxpdHkuCi0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgfCAxOTYgKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCA3OSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IGJlNDJkM2Mz MjcyLi40NDIxNGE1N2VjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTMw Miw2ICszMDIsMTE4IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIpCiAJfQogfQogCisvKgorICogRGVjaWRlIGlmIHdlIHdhbnQgdG8gZ28gYWhl YWQgd2l0aCBmcmVlemluZyBhY2NvcmRpbmcgdG8gdGhlIGZyZWV6ZSBwbGFucworICogd2UgcHJl cGFyZWQgZm9yIHRoZSBnaXZlbiBoZWFwIGJ1ZmZlciBvciBub3QuIElmIHRoZSBjYWxsZXIgc3Bl Y2lmaWVkIHdlCisgKiBzaG91bGQgbm90IGZyZWV6ZSB0dXBsZXMsIGl0IGV4aXRzIGVhcmx5LiBP dGhlcndpc2UsIGl0IGRvZXMgYSBmZXcKKyAqIHByZS1mcmVlemUgY2hlY2tzLgorICoKKyAqIGRv X3BydW5lLCBkb19oaW50X3BydW5lLCBhbmQgZGlkX3R1cGxlX2hpbnRfZnBpIG11c3QgYWxsIGhh dmUgYmVlbiBkZWNpZGVkCisgKiBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgorICoKKyAq IHByc3RhdGUgaXMgYW4gaW5wdXQvb3V0cHV0IHBhcmFtZXRlci4KKyAqCisgKiBSZXR1cm5zIHRy dWUgaWYgd2Ugc2hvdWxkIHVzZSBvdXIgZnJlZXplIHBsYW5zIGFuZCBmcmVlemUgdHVwbGVzIG9u IHRoZSBwYWdlCisgKiBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAoraGVh cF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJ CQkgIGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLAorCQkJCQkgIGJvb2wgZG9fcHJ1bmUsCisJCQkJ CSAgYm9vbCBkb19oaW50X3BydW5lLAorCQkJCQkgIFBydW5lU3RhdGUgKnByc3RhdGUpCit7CisJ Ym9vbAkJZG9fZnJlZXplID0gZmFsc2U7CisKKwkvKgorCSAqIElmIHRoZSBjYWxsZXIgc3BlY2lm aWVkIHdlIHNob3VsZCBub3QgYXR0ZW1wdCB0byBmcmVlemUgYW55IHR1cGxlcywKKwkgKiB2YWxp ZGF0ZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgaW4gdGhlIHJpZ2h0IHN0YXRlIGFuZCBleGl0LgorCSAq LworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCisJeworCQlBc3NlcnQoIXByc3RhdGUt PmFsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZyb3plbiA9PSAwKTsKKwkJQXNzZXJ0KHByc3RhdGUt PmxwZGVhZF9pdGVtcyA9PSAwIHx8ICFwcnN0YXRlLT5hbGxfdmlzaWJsZSk7CisJCXJldHVybiBm YWxzZTsKKwl9CisKKwlpZiAocHJzdGF0ZS0+cGFnZWZyei5mcmVlemVfcmVxdWlyZWQpCisJewor CQkvKgorCQkgKiBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlIGluZGljYXRlZCB0aGF0IGF0IGxl YXN0IG9uZSBYSUQvTVhJRCBmcm9tCisJCSAqIGJlZm9yZSBGcmVlemVMaW1pdC9NdWx0aVhhY3RD dXRvZmYgaXMgcHJlc2VudC4gIE11c3QgZnJlZXplIHRvCisJCSAqIGFkdmFuY2UgcmVsZnJvemVu eGlkL3JlbG1pbm14aWQuCisJCSAqLworCQlkb19mcmVlemUgPSB0cnVlOworCX0KKwllbHNlCisJ eworCQkvKgorCQkgKiBPcHBvcnR1bmlzdGljYWxseSBmcmVlemUgdGhlIHBhZ2UgaWYgd2UgYXJl IGdlbmVyYXRpbmcgYW4gRlBJCisJCSAqIGFueXdheSBhbmQgaWYgZG9pbmcgc28gbWVhbnMgdGhh dCB3ZSBjYW4gc2V0IHRoZSBwYWdlIGFsbC1mcm96ZW4KKwkJICogYWZ0ZXJ3YXJkcyAobWlnaHQg bm90IGhhcHBlbiB1bnRpbCBWQUNVVU0ncyBmaW5hbCBoZWFwIHBhc3MpLgorCQkgKgorCQkgKiBY WFg6IFByZXZpb3VzbHksIHdlIGtuZXcgaWYgcHJ1bmluZyBlbWl0dGVkIGFuIEZQSSBieSBjaGVj a2luZworCQkgKiBwZ1dhbFVzYWdlLndhbF9mcGkgYmVmb3JlIGFuZCBhZnRlciBwcnVuaW5nLiAg T25jZSB0aGUgZnJlZXplIGFuZAorCQkgKiBwcnVuZSByZWNvcmRzIHdlcmUgY29tYmluZWQsIHRo aXMgaGV1cmlzdGljIGNvdWxkbid0IGJlIHVzZWQKKwkJICogYW55bW9yZS4gIFRoZSBvcHBvcnR1 bmlzdGljIGZyZWV6ZSBoZXVyaXN0aWMgbXVzdCBiZSBpbXByb3ZlZDsKKwkJICogaG93ZXZlciwg Zm9yIG5vdywgdHJ5IHRvIGFwcHJveGltYXRlIHRoZSBvbGQgbG9naWMuCisJCSAqLworCQlpZiAo cHJzdGF0ZS0+YWxsX3Zpc2libGUgJiYgcHJzdGF0ZS0+YWxsX2Zyb3plbiAmJiBwcnN0YXRlLT5u ZnJvemVuID4gMCkKKwkJeworCQkJLyoKKwkJCSAqIEZyZWV6aW5nIHdvdWxkIG1ha2UgdGhlIHBh Z2UgYWxsLWZyb3plbi4gIEhhdmUgYWxyZWFkeSBlbWl0dGVkCisJCQkgKiBhbiBGUEkgb3Igd2ls bCBkbyBzbyBhbnl3YXk/CisJCQkgKi8KKwkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbGF0aW9u KSkKKwkJCXsKKwkJCQlpZiAoZGlkX3R1cGxlX2hpbnRfZnBpKQorCQkJCQlkb19mcmVlemUgPSB0 cnVlOworCQkJCWVsc2UgaWYgKGRvX3BydW5lKQorCQkJCXsKKwkJCQkJaWYgKFhMb2dDaGVja0J1 ZmZlck5lZWRzQmFja3VwKGJ1ZmZlcikpCisJCQkJCQlkb19mcmVlemUgPSB0cnVlOworCQkJCX0K KwkJCQllbHNlIGlmIChkb19oaW50X3BydW5lKQorCQkJCXsKKwkJCQkJaWYgKFhMb2dIaW50Qml0 SXNOZWVkZWQoKSAmJiBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChidWZmZXIpKQorCQkJCQkJ ZG9fZnJlZXplID0gdHJ1ZTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlpZiAoZG9fZnJlZXpl KQorCXsKKwkJLyoKKwkJICogVmFsaWRhdGUgdGhlIHR1cGxlcyB3ZSB3aWxsIGJlIGZyZWV6aW5n IGJlZm9yZSBlbnRlcmluZyB0aGUKKwkJICogY3JpdGljYWwgc2VjdGlvbi4KKwkJICovCisJCWhl YXBfcHJlX2ZyZWV6ZV9jaGVja3MoYnVmZmVyLCBwcnN0YXRlLT5mcm96ZW4sIHByc3RhdGUtPm5m cm96ZW4pOworCX0KKwllbHNlIGlmIChwcnN0YXRlLT5uZnJvemVuID4gMCkKKwl7CisJCS8qCisJ CSAqIFRoZSBwYWdlIGNvbnRhaW5lZCBzb21lIHR1cGxlcyB0aGF0IHdlcmUgbm90IGFscmVhZHkg ZnJvemVuLCBhbmQgd2UKKwkJICogY2hvc2Ugbm90IHRvIGZyZWV6ZSB0aGVtIG5vdy4gIFRoZSBw YWdlIHdvbid0IGJlIGFsbC1mcm96ZW4gdGhlbi4KKwkJICovCisJCUFzc2VydCghcHJzdGF0ZS0+ cGFnZWZyei5mcmVlemVfcmVxdWlyZWQpOworCisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxz ZTsKKwkJcHJzdGF0ZS0+bmZyb3plbiA9IDA7CS8qIGF2b2lkIG1pc2NvdW50cyBpbiBpbnN0cnVt ZW50YXRpb24gKi8KKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogV2UgaGF2ZSBubyBmcmVlemUg cGxhbnMgdG8gZXhlY3V0ZS4gIFRoZSBwYWdlIG1pZ2h0IGFscmVhZHkgYmUKKwkJICogYWxsLWZy b3plbiAocGVyaGFwcyBvbmx5IGZvbGxvd2luZyBwcnVuaW5nKSwgdGhvdWdoLiAgU3VjaCBwYWdl cworCQkgKiBjYW4gYmUgbWFya2VkIGFsbC1mcm96ZW4gaW4gdGhlIFZNIGJ5IG91ciBjYWxsZXIs IGV2ZW4gdGhvdWdoIG5vbmUKKwkJICogb2YgaXRzIHR1cGxlcyB3ZXJlIG5ld2x5IGZyb3plbiBo ZXJlLgorCQkgKi8KKwl9CisKKwlyZXR1cm4gZG9fZnJlZXplOworfQorCiAKIC8qCiAgKiBQcnVu ZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMg b24gdGhlCkBAIC02NjMsODUgKzc3NSwxMSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQ cnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCSAqIERlY2lkZSBpZiB3ZSB3YW50IHRvIGdvIGFo ZWFkIHdpdGggZnJlZXppbmcgYWNjb3JkaW5nIHRvIHRoZSBmcmVlemUKIAkgKiBwbGFucyB3ZSBw cmVwYXJlZCwgb3Igbm90LgogCSAqLwotCWRvX2ZyZWV6ZSA9IGZhbHNlOwotCWlmIChwcnN0YXRl LmF0dGVtcHRfZnJlZXplKQotCXsKLQkJaWYgKHByc3RhdGUucGFnZWZyei5mcmVlemVfcmVxdWly ZWQpCi0JCXsKLQkJCS8qCi0JCQkgKiBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlIGluZGljYXRl ZCB0aGF0IGF0IGxlYXN0IG9uZSBYSUQvTVhJRAotCQkJICogZnJvbSBiZWZvcmUgRnJlZXplTGlt aXQvTXVsdGlYYWN0Q3V0b2ZmIGlzIHByZXNlbnQuICBNdXN0Ci0JCQkgKiBmcmVlemUgdG8gYWR2 YW5jZSByZWxmcm96ZW54aWQvcmVsbWlubXhpZC4KLQkJCSAqLwotCQkJZG9fZnJlZXplID0gdHJ1 ZTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBPcHBvcnR1bmlzdGljYWxseSBmcmVl emUgdGhlIHBhZ2UgaWYgd2UgYXJlIGdlbmVyYXRpbmcgYW4gRlBJCi0JCQkgKiBhbnl3YXkgYW5k IGlmIGRvaW5nIHNvIG1lYW5zIHRoYXQgd2UgY2FuIHNldCB0aGUgcGFnZQotCQkJICogYWxsLWZy b3plbiBhZnRlcndhcmRzIChtaWdodCBub3QgaGFwcGVuIHVudGlsIFZBQ1VVTSdzIGZpbmFsCi0J CQkgKiBoZWFwIHBhc3MpLgotCQkJICoKLQkJCSAqIFhYWDogUHJldmlvdXNseSwgd2Uga25ldyBp ZiBwcnVuaW5nIGVtaXR0ZWQgYW4gRlBJIGJ5IGNoZWNraW5nCi0JCQkgKiBwZ1dhbFVzYWdlLndh bF9mcGkgYmVmb3JlIGFuZCBhZnRlciBwcnVuaW5nLiAgT25jZSB0aGUgZnJlZXplCi0JCQkgKiBh bmQgcHJ1bmUgcmVjb3JkcyB3ZXJlIGNvbWJpbmVkLCB0aGlzIGhldXJpc3RpYyBjb3VsZG4ndCBi ZQotCQkJICogdXNlZCBhbnltb3JlLiAgVGhlIG9wcG9ydHVuaXN0aWMgZnJlZXplIGhldXJpc3Rp YyBtdXN0IGJlCi0JCQkgKiBpbXByb3ZlZDsgaG93ZXZlciwgZm9yIG5vdywgdHJ5IHRvIGFwcHJv eGltYXRlIHRoZSBvbGQgbG9naWMuCi0JCQkgKi8KLQkJCWlmIChwcnN0YXRlLmFsbF92aXNpYmxl ICYmIHByc3RhdGUuYWxsX2Zyb3plbiAmJiBwcnN0YXRlLm5mcm96ZW4gPiAwKQotCQkJewotCQkJ CS8qCi0JCQkJICogRnJlZXppbmcgd291bGQgbWFrZSB0aGUgcGFnZSBhbGwtZnJvemVuLiAgSGF2 ZSBhbHJlYWR5Ci0JCQkJICogZW1pdHRlZCBhbiBGUEkgb3Igd2lsbCBkbyBzbyBhbnl3YXk/Ci0J CQkJICovCi0JCQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocGFyYW1zLT5yZWxhdGlvbikpCi0JCQkJ ewotCQkJCQlpZiAoZGlkX3R1cGxlX2hpbnRfZnBpKQotCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsK LQkJCQkJZWxzZSBpZiAoZG9fcHJ1bmUpCi0JCQkJCXsKLQkJCQkJCWlmIChYTG9nQ2hlY2tCdWZm ZXJOZWVkc0JhY2t1cChidWZmZXIpKQotCQkJCQkJCWRvX2ZyZWV6ZSA9IHRydWU7Ci0JCQkJCX0K LQkJCQkJZWxzZSBpZiAoZG9faGludF9wcnVuZSkKLQkJCQkJewotCQkJCQkJaWYgKFhMb2dIaW50 Qml0SXNOZWVkZWQoKSAmJiBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChidWZmZXIpKQotCQkJ CQkJCWRvX2ZyZWV6ZSA9IHRydWU7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9Ci0KLQlp ZiAoZG9fZnJlZXplKQotCXsKLQkJLyoKLQkJICogVmFsaWRhdGUgdGhlIHR1cGxlcyB3ZSB3aWxs IGJlIGZyZWV6aW5nIGJlZm9yZSBlbnRlcmluZyB0aGUKLQkJICogY3JpdGljYWwgc2VjdGlvbi4K LQkJICovCi0JCWhlYXBfcHJlX2ZyZWV6ZV9jaGVja3MoYnVmZmVyLCBwcnN0YXRlLmZyb3plbiwg cHJzdGF0ZS5uZnJvemVuKTsKLQl9Ci0JZWxzZSBpZiAocHJzdGF0ZS5uZnJvemVuID4gMCkKLQl7 Ci0JCS8qCi0JCSAqIFRoZSBwYWdlIGNvbnRhaW5lZCBzb21lIHR1cGxlcyB0aGF0IHdlcmUgbm90 IGFscmVhZHkgZnJvemVuLCBhbmQgd2UKLQkJICogY2hvc2Ugbm90IHRvIGZyZWV6ZSB0aGVtIG5v dy4gIFRoZSBwYWdlIHdvbid0IGJlIGFsbC1mcm96ZW4gdGhlbi4KLQkJICovCi0JCUFzc2VydCgh cHJzdGF0ZS5wYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCk7Ci0KLQkJcHJzdGF0ZS5hbGxfZnJvemVu ID0gZmFsc2U7Ci0JCXByc3RhdGUubmZyb3plbiA9IDA7CS8qIGF2b2lkIG1pc2NvdW50cyBpbiBp bnN0cnVtZW50YXRpb24gKi8KLQl9Ci0JZWxzZQotCXsKLQkJLyoKLQkJICogV2UgaGF2ZSBubyBm cmVlemUgcGxhbnMgdG8gZXhlY3V0ZS4gIFRoZSBwYWdlIG1pZ2h0IGFscmVhZHkgYmUKLQkJICog YWxsLWZyb3plbiAocGVyaGFwcyBvbmx5IGZvbGxvd2luZyBwcnVuaW5nKSwgdGhvdWdoLiAgU3Vj aCBwYWdlcwotCQkgKiBjYW4gYmUgbWFya2VkIGFsbC1mcm96ZW4gaW4gdGhlIFZNIGJ5IG91ciBj YWxsZXIsIGV2ZW4gdGhvdWdoIG5vbmUKLQkJICogb2YgaXRzIHR1cGxlcyB3ZXJlIG5ld2x5IGZy b3plbiBoZXJlLgotCQkgKi8KLQl9CisJZG9fZnJlZXplID0gaGVhcF9wYWdlX3dpbGxfZnJlZXpl KHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKKwkJCQkJCQkJCSAgZGlkX3R1cGxlX2hpbnRfZnBp LAorCQkJCQkJCQkJICBkb19wcnVuZSwKKwkJCQkJCQkJCSAgZG9faGludF9wcnVuZSwKKwkJCQkJ CQkJCSAgJnByc3RhdGUpOwogCiAJLyogQW55IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRoZSBjaGFu Z2VzIGlzIGNyaXRpY2FsICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7Ci0tIAoyLjQzLjAKCg== --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="UTF-8"; name="v17-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-prune-f.patch" Content-Disposition: attachment; filename="v17-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-prune-f.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil3sjl6 RnJvbSBkZGUwZGZjNTc4MTM3ZjdjOTNmOWEwZTM0YWYzOGRjZGI4NDFiMDgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDggT2N0IDIwMjUgMTU6Mzk6MDEgLTA0MDAKU3ViamVjdDogW1BB VENIIHYxNyAwNy8xNV0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bQog cHJ1bmUvZnJlZXplCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsg Y2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpWYWN1dW0gbm8g bG9uZ2VyIGVtaXRzIGEgc2VwYXJhdGUgV0FMIHJlY29yZCBmb3IgZWFjaCBwYWdlIHNldAphbGwt dmlzaWJsZSBvciBhbGwtZnJvemVuIGR1cmluZyBwaGFzZSBJLiBJbnN0ZWFkLCB2aXNpYmlsaXR5 IG1hcAp1cGRhdGVzIGFyZSBub3cgaW5jbHVkZWQgaW4gdGhlIFhMT0dfSEVBUDJfUFJVTkVfVkFD VVVNX1NDQU4gcmVjb3JkIHRoYXQKaXMgYWxyZWFkeSBlbWl0dGVkIGZvciBwcnVuaW5nIGFuZCBm cmVlemluZy4KClByZXZpb3VzbHksIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgZGV0ZXJt aW5lZCB3aGV0aGVyIGEgcGFnZSB3YXMKYWxsLXZpc2libGUsIGJ1dCB0aGUgY29ycmVzcG9uZGlu ZyBWTSBiaXRzIHdlcmUgb25seSBzZXQgbGF0ZXIgaW4KbGF6eV9zY2FuX3BydW5lKCkuIE5vdyB0 aGUgVk0gaXMgdXBkYXRlZCBpbW1lZGlhdGVseSBpbgpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZSgpLCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBoZWFwCm1vZGlmaWNhdGlvbnMuCgpUaGlzIGNo YW5nZSBhcHBsaWVzIG9ubHkgdG8gdmFjdXVt4oCZcyBwcnVuZS9mcmVlemUgd29yaywgbm90IHRv IHBydW5pbmcKcGVyZm9ybWVkIGR1cmluZyBub3JtYWwgcGFnZSBhY2Nlc3MuCgpSZXZpZXdlZC1i eTogUm9iZXJ0IEhhYXMgPHJvYmVydG1oYWFzQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIHwgIDQxICsrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMgICB8IDQyOSArKysrKysrKysrKysrKysrKysrKy0tLS0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICB8IDIwNSArLS0tLS0tLS0tLS0KIHNyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgfCAgNDEgKystCiA0IGZpbGVzIGNoYW5n ZWQsIDQxNCBpbnNlcnRpb25zKCspLCAzMDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV94bG9nLmMKaW5kZXggYWFmNTk1ZTc1ZDYuLmY2NjI0YmM5OGQwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKQEAgLTEwNCw2ICsxMDQsOCBAQCBoZWFwX3hs b2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlPZmZzZXROdW1iZXIg KmZyel9vZmZzZXRzOwogCQljaGFyCSAgICpkYXRhcHRyID0gWExvZ1JlY0dldEJsb2NrRGF0YShy ZWNvcmQsIDAsICZkYXRhbGVuKTsKIAkJYm9vbAkJZG9fcHJ1bmU7CisJCWJvb2wJCXNldF9sc24g PSBmYWxzZTsKKwkJYm9vbAkJbWFya19idWZmZXJfZGlydHkgPSBmYWxzZTsKIAogCQloZWFwX3hs b2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShkYXRhcHRyLCB4bHJlYy5mbGFncywKIAkJ CQkJCQkJCQkJICAgJm5wbGFucywgJnBsYW5zLCAmZnJ6X29mZnNldHMsCkBAIC0xNTcsMjAgKzE1 OSwzNyBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CQkvKiBUaGVyZSBzaG91bGQgYmUgbm8gbW9yZSBkYXRhICovCiAJCUFzc2VydCgoY2hhciAqKSBm cnpfb2Zmc2V0cyA9PSBkYXRhcHRyICsgZGF0YWxlbik7CiAKLQkJaWYgKCh2bWZsYWdzICYgVklT SUJJTElUWU1BUF9WQUxJRF9CSVRTKSkKLQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCi0J CU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQlpZiAoZG9fcHJ1bmUgfHwgbnBsYW5zID4gMCkK KwkJCW1hcmtfYnVmZmVyX2RpcnR5ID0gc2V0X2xzbiA9IHRydWU7CiAKIAkJLyoKLQkJICogQWx3 YXlzIGVtaXQgYSBXQUwgcmVjb3JkIHdoZW4gc2V0dGluZyBQRF9BTExfVklTSUJMRSBidXQgb25s eSBlbWl0Ci0JCSAqIGFuIEZQSSBpZiBjaGVja3N1bXMvd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxl ZC4gQWR2YW5jZSB0aGUgcGFnZSBMU04KLQkJICogb25seSBpZiB0aGUgcmVjb3JkIGNvdWxkIGlu Y2x1ZGUgYW4gRlBJLCBzaW5jZSByZWNvdmVyeSBza2lwcwotCQkgKiByZWNvcmRzIDw9IHRoZSBz dGFtcGVkIExTTi4gT3RoZXJ3aXNlIGl0IG1pZ2h0IHNraXAgYW4gZWFybGllciBGUEkKLQkJICog bmVlZGVkIHRvIHJlcGFpciBhIHRvcm4gcGFnZS4KKwkJICogVGhlIGNyaXRpY2FsIGludGVncml0 eSByZXF1aXJlbWVudCBoZXJlIGlzIHRoYXQgd2UgbXVzdCBuZXZlciBlbmQKKwkJICogdXAgd2l0 aCB3aXRoIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2V0IGFuZCB0aGUgcGFnZS1sZXZlbAorCQkg KiBQRF9BTExfVklTSUJMRSBiaXQgY2xlYXIuICBJZiB0aGF0IHdlcmUgdG8gb2NjdXIsIGEgc3Vi c2VxdWVudCBwYWdlCisJCSAqIG1vZGlmaWNhdGlvbiB3b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQuCisJCSAqCisJCSAqIElmIHRoaXMgcmVjb3JkIG9ubHkgc2V0cyB0 aGUgVk0sIG5vIG5lZWQgdG8gZGlydHkgdGhlIGhlYXAgcGFnZS4KIAkJICovCi0JCWlmIChkb19w cnVuZSB8fCBucGxhbnMgPiAwIHx8Ci0JCQkoKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElE X0JJVFMpICYmIFhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCisJCWlmICgodm1mbGFncyAmIFZJU0lC SUxJVFlNQVBfVkFMSURfQklUUykgJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCisJCXsKKwkJ CVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQkJbWFya19idWZmZXJfZGlydHkgPSB0cnVlOwor CisJCQkvKgorCQkJICogQWx3YXlzIGVtaXQgYSBXQUwgcmVjb3JkIHdoZW4gc2V0dGluZyBQRF9B TExfVklTSUJMRSBidXQgb25seQorCQkJICogZW1pdCBhbiBGUEkgaWYgY2hlY2tzdW1zL3dhbF9s b2dfaGludHMgYXJlIGVuYWJsZWQuIEFkdmFuY2UgdGhlCisJCQkgKiBwYWdlIExTTiBvbmx5IGlm IHRoZSByZWNvcmQgY291bGQgaW5jbHVkZSBhbiBGUEksIHNpbmNlCisJCQkgKiByZWNvdmVyeSBz a2lwcyByZWNvcmRzIDw9IHRoZSBzdGFtcGVkIExTTi4gT3RoZXJ3aXNlIGl0IG1pZ2h0CisJCQkg KiBza2lwIGFuIGVhcmxpZXIgRlBJIG5lZWRlZCB0byByZXBhaXIgYSB0b3JuIHBhZ2UuCisJCQkg Ki8KKwkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCisJCQkJc2V0X2xzbiA9IHRydWU7CisJ CX0KKworCQlpZiAobWFya19idWZmZXJfZGlydHkpCisJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVy KTsKKworCQlpZiAoc2V0X2xzbikKIAkJCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsKIAogCQkvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA1ODkyZWQ1YTA3ZS4uZjcwNTYzMDA4 ZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xOSw3ICsxOSw3IEBACiAj aW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhh Y3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgotI2luY2x1ZGUgImFjY2Vzcy92aXNp YmlsaXR5bWFwZGVmcy5oIgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgpAQCAtNDQsNiArNDQsOCBAQCB0eXBlZGVmIHN0cnVj dAogCWJvb2wJCW1hcmtfdW51c2VkX25vdzsKIAkvKiB3aGV0aGVyIHRvIGF0dGVtcHQgZnJlZXpp bmcgdHVwbGVzICovCiAJYm9vbAkJYXR0ZW1wdF9mcmVlemU7CisJLyogd2hldGhlciBvciBub3Qg dG8gYXR0ZW1wdCB1cGRhdGluZyB0aGUgVk0gKi8KKwlib29sCQlhdHRlbXB0X3VwZGF0ZV92bTsK IAlzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmczsKIAogCS8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTMzLDE3ICsxMzUsMTcg QEAgdHlwZWRlZiBzdHJ1Y3QKIAkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbmRpY2F0 ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KIAkgKiBiaXRzIGluIHRoZSB2aXNp YmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4KIAkgKgot CSAqIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBs ZXMgb24gdGhlIHBhZ2UuCi0JICogVGhlIGNhbGxlciBjYW4gdXNlIGl0IGFzIHRoZSBjb25mbGlj dCBob3Jpem9uLCB3aGVuIHNldHRpbmcgdGhlIFZNCi0JICogYml0cy4gIEl0IGlzIG9ubHkgdmFs aWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMsIGFuZCBhbGxfZnJvemVuIGlzCi0JICogdHJ1ZS4K KwkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVw bGVzIG9uIHRoZSBwYWdlLiBJdAorCSAqIGNhbiBiZSB1c2VkIGFzIHRoZSBjb25mbGljdCBob3Jp em9uIHdoZW4gc2V0dGluZyB0aGUgVk0gb3Igd2hlbgorCSAqIGZyZWV6aW5nIGFsbCB0aGUgdHVw bGVzIG9uIHRoZSBwYWdlLiBJdCBpcyBvbmx5IHZhbGlkIHdoZW4gYWxsIHRoZSBsaXZlCisJICog dHVwbGVzIG9uIHRoZSBwYWdlIGFyZSBhbGwtdmlzaWJsZS4KIAkgKgogCSAqIE5PVEU6IGFsbF92 aXNpYmxlIGFuZCBhbGxfZnJvemVuIGluaXRpYWxseSBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRl bXMuCiAJICogVGhhdCdzIGNvbnZlbmllbnQgZm9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KCksIHRvIHVzZSB0aGVtIHRvCi0JICogZGVjaWRlIHdoZXRoZXIgdG8gZnJlZXplIHRoZSBwYWdl IG9yIG5vdC4gIFRoZSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBhbGxfZnJvemVuIHZhbHVlcyByZXR1 cm5lZCB0byB0aGUgY2FsbGVyIGFyZSBhZGp1c3RlZCB0byBpbmNsdWRlCi0JICogTFBfREVBRCBp dGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdG8gb3Bwb3J0dW5pc3RpY2Fs bHkKLQkgKiBmcmVlemUuCisJICogZGVjaWRlIHdoZXRoZXIgdG8gb3Bwb3J0dW5pc3RpY2FsbHkg ZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZQorCSAqIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJv emVuIHZhbHVlcyB1bHRpbWF0ZWx5IHVzZWQgdG8gc2V0IHRoZSBWTSBhcmUKKwkgKiBhZGp1c3Rl ZCB0byBpbmNsdWRlIExQX0RFQUQgaXRlbXMgYWZ0ZXIgd2UgZGV0ZXJtaW5lIHdoZXRoZXIgb3Ig bm90IHRvCisJICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplLgogCSAqLwogCWJvb2wJCWFsbF92 aXNpYmxlOwogCWJvb2wJCWFsbF9mcm96ZW47CkBAIC0xNzQsNiArMTc2LDE5IEBAIHN0YXRpYyB2 b2lkIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9yZWRpcmVjdChQcnVuZVN0YXRlICpw cnN0YXRlLCBPZmZzZXROCiAKIHN0YXRpYyB2b2lkIHBhZ2VfdmVyaWZ5X3JlZGlyZWN0cyhQYWdl IHBhZ2UpOwogCitzdGF0aWMgVHJhbnNhY3Rpb25JZCBnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9f cHJ1bmUsIGJvb2wgZG9fZnJlZXplLCBib29sIGRvX3NldF92bSwKKwkJCQkJCQkJCSAgVHJhbnNh Y3Rpb25JZCBsYXRlc3RfeGlkX3JlbW92ZWQsIFRyYW5zYWN0aW9uSWQgZnJ6X2NvbmZsaWN0X2hv cml6b24sCisJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCBi b29sIGJsa19hbHJlYWR5X2F2LAorCQkJCQkJCQkJICBib29sIHNldF9ibGtfYWxsX2Zyb3plbik7 CisKK3N0YXRpYyBib29sIGhlYXBfcGFnZV93aWxsX3NldF92aXMoUmVsYXRpb24gcmVsYXRpb24s CisJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAorCQkJCQkJCQkgICBCdWZmZXIgaGVh cF9idWYsCisJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkJICAgYm9vbCBibGtf a25vd25fYXYsCisJCQkJCQkJCSAgIGNvbnN0IFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJCQkJ CSAgIHVpbnQ4ICp2bWZsYWdzLAorCQkJCQkJCQkgICBib29sICpkb19zZXRfcGRfdmlzKTsKIAog LyoKICAqIE9wdGlvbmFsbHkgcHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGluIHRoZSBz cGVjaWZpZWQgcGFnZS4KQEAgLTI1OSw2ICsyNzQsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogCQkJcGFyYW1zLnJlYXNvbiA9IFBSVU5F X09OX0FDQ0VTUzsKIAkJCXBhcmFtcy52aXN0ZXN0ID0gdmlzdGVzdDsKIAkJCXBhcmFtcy5jdXRv ZmZzID0gTlVMTDsKKwkJCXBhcmFtcy52bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJCQlwYXJh bXMuYmxrX2tub3duX2F2ID0gZmFsc2U7CiAKIAkJCS8qCiAJCQkgKiBGb3Igbm93LCBwYXNzIG1h cmtfdW51c2VkX25vdyBhcyBmYWxzZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3IKQEAgLTQzMSwx MCArNDQ4LDEwOCBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCiAJcmV0dXJuIGRvX2ZyZWV6ZTsKIH0KIAorLyoKKyAqIERlY2lkZSB3aGV0 aGVyIHRvIHNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0cyBmb3IgaGVhcF9ibGssIHVzaW5nCisg KiBpbmZvcm1hdGlvbiBmcm9tIFBydW5lU3RhdGUgYW5kIGJsa19rbm93bl9hdi4gU29tZSBjYWxs ZXJzIG1heSBhbHJlYWR5CisgKiBoYXZlIGV4YW1pbmVkIHRoaXMgcGFnZeKAmXMgVk0gYml0cyAo ZS5nLiwgVkFDVVVNIGluIHRoZSBwcmV2aW91cworICogaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2Nr KCkgY2FsbCkgYW5kIGNhbiBwYXNzIHRoYXQgYWxvbmcuCisgKgorICogUmV0dXJucyB0cnVlIGlm IG9uZSBvciBib3RoIFZNIGJpdHMgc2hvdWxkIGJlIHNldCwgYWxvbmcgd2l0aCB0aGUgZGVzaXJl ZAorICogZmxhZ3MgaW4gKnZtZmxhZ3MuIEFsc28gaW5kaWNhdGVzIHZpYSBkb19zZXRfcGRfdmlz IHdoZXRoZXIgUERfQUxMX1ZJU0lCTEUKKyAqIHNob3VsZCBiZSBzZXQgb24gdGhlIGhlYXAgcGFn ZS4KKyAqLworc3RhdGljIGJvb2wKK2hlYXBfcGFnZV93aWxsX3NldF92aXMoUmVsYXRpb24gcmVs YXRpb24sCisJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAorCQkJCQkgICBCdWZmZXIgaGVh cF9idWYsCisJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJICAgYm9vbCBibGtfa25vd25f YXYsCisJCQkJCSAgIGNvbnN0IFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJCSAgIHVpbnQ4ICp2 bWZsYWdzLAorCQkJCQkgICBib29sICpkb19zZXRfcGRfdmlzKQoreworCVBhZ2UJCWhlYXBfcGFn ZSA9IEJ1ZmZlckdldFBhZ2UoaGVhcF9idWYpOworCWJvb2wJCWRvX3NldF92bSA9IGZhbHNlOwor CisJKmRvX3NldF9wZF92aXMgPSBmYWxzZTsKKworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF91cGRh dGVfdm0pCisJeworCQlBc3NlcnQoIXByc3RhdGUtPmFsbF92aXNpYmxlICYmICFwcnN0YXRlLT5h bGxfZnJvemVuKTsKKwkJQXNzZXJ0KCp2bWZsYWdzID09IDApOworCQlyZXR1cm4gZmFsc2U7CisJ fQorCisJaWYgKHByc3RhdGUtPmFsbF92aXNpYmxlICYmICFQYWdlSXNBbGxWaXNpYmxlKGhlYXBf cGFnZSkpCisJCSpkb19zZXRfcGRfdmlzID0gdHJ1ZTsKKworCWlmICgocHJzdGF0ZS0+YWxsX3Zp c2libGUgJiYgIWJsa19rbm93bl9hdikgfHwKKwkJKHByc3RhdGUtPmFsbF9mcm96ZW4gJiYgIVZN X0FMTF9GUk9aRU4ocmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpKSkKKwl7CisJCSp2bWZs YWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKKwkJaWYgKHByc3RhdGUtPmFsbF9mcm96 ZW4pCisJCQkqdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47CisKKwkJZG9fc2V0 X3ZtID0gdHJ1ZTsKKwl9CisKKwkvKgorCSAqIE5vdyBoYW5kbGUgdHdvIHBvdGVudGlhbCBjb3Jy dXB0aW9uIGNhc2VzOgorCSAqCisJICogVGhlc2UgZG8gbm90IG5lZWQgdG8gaGFwcGVuIGluIGEg Y3JpdGljYWwgc2VjdGlvbiBhbmQgYXJlIG5vdAorCSAqIFdBTC1sb2dnZWQuCisJICoKKwkgKiBB cyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIg YmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQn cyBwb3NzaWJsZSB0aGF0IGluIHZhY3V1bSB0aGUgYml0CisJICogZ290IGNsZWFyZWQgYWZ0ZXIg aGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxlZCwgc28gd2UgbXVzdAorCSAqIHJl Y2hlY2sgd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBj b3JydXB0LgorCSAqLworCWVsc2UgaWYgKGJsa19rbm93bl9hdiAmJiAhUGFnZUlzQWxsVmlzaWJs ZShoZWFwX3BhZ2UpICYmCisJCQkgdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHJlbGF0aW9uLCBo ZWFwX2JsaywgJnZtYnVmZmVyKSAhPSAwKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShl cnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBlcnJtc2coInBhZ2UgaXMgbm90 IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCBpbiByZWxh dGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxh dGlvbiksIGhlYXBfYmxrKSkpOworCisJCXZpc2liaWxpdHltYXBfY2xlYXIocmVsYXRpb24sIGhl YXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOworCX0K KworCS8qCisJICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVkIGJ5CisJICog R2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBz byBpdCdzIG5vdAorCSAqIHdyb25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRv IG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCisJICogeWV0LCB3aGlsZSBQRF9BTExfVklTSUJM RSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCisJICogbmV2ZXIgbW92 ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlz CisJICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVlIHRoYXQncyB1 bm5lY2Vzc2FyaWx5IHNtYWxsLAorCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24g aXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhhdCB3ZQorCSAqIHRoaW5rIGFyZSBub3Qg dmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCisJICogUERfQUxM X1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgorCSAqCisJICogVGhlcmUgc2hvdWxkIG5ldmVyIGJl IExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0LAorCSAqIGhv d2V2ZXIuCisJICovCisJZWxzZSBpZiAocHJzdGF0ZS0+bHBkZWFkX2l0ZW1zID4gMCAmJiBQYWdl SXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkpCisJeworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJIGVycm1zZygicGFnZSBjb250YWlu aW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNpYmxlIGluIHJlbGF0aW9uIFwi JXNcIiBwYWdlICV1IiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSwg aGVhcF9ibGspKSk7CisKKwkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFwX3BhZ2UpOworCQlNYXJr QnVmZmVyRGlydHkoaGVhcF9idWYpOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbGF0aW9uLCBo ZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKKwl9 CisKKwlyZXR1cm4gZG9fc2V0X3ZtOworfQogCiAvKgogICogUHJ1bmUgYW5kIHJlcGFpciBmcmFn bWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQotICogc3BlY2lm aWVkIHBhZ2UuCisgKiBzcGVjaWZpZWQgcGFnZS4gSWYgdGhlIHBhZ2UncyB2aXNpYmlsaXR5IHN0 YXR1cyBoYXMgY2hhbmdlZCwgdXBkYXRlIGl0IGluCisgKiB0aGUgVk0uCiAgKgogICogQ2FsbGVy IG11c3QgaGF2ZSBwaW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sgb24gdGhlIHBhZ2UuICBOb3Rl IHRoYXQgd2UKICAqIGRvbid0IHVwZGF0ZSB0aGUgRlNNIGluZm9ybWF0aW9uIGZvciBwYWdlIG9u IGNhbGxlcidzIGJlaGFsZi4gIENhbGxlciBtaWdodApAQCAtNDQ5LDEyICs1NjQsMTMgQEAgaGVh cF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogICog aXQncyByZXF1aXJlZCBpbiBvcmRlciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14 aWQsIG9yIGlmIGl0J3MKICAqIGNvbnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5 c3RlbSBwZXJmb3JtYW5jZSB0byBkbyBzbyBub3cuICBUaGUKICAqICdwYXJhbXMuY3V0b2Zmcycs ICdwcmVzdWx0JywgJ25ld19yZWxmcm96ZW5feGlkJyBhbmQgJ25ld19yZWxtaW5fbXhpZCcKLSAq IGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVlemluZy4gIFdoZW4gSEVBUF9QUlVORV9G UkVFWkUgb3B0aW9uIGlzCi0gKiBwYXNzZWQsIHdlIGFsc28gc2V0IHByZXN1bHQtPmFsbF92aXNp YmxlIGFuZCBwcmVzdWx0LT5hbGxfZnJvemVuIGFmdGVyCi0gKiBkZXRlcm1pbmluZyB3aGV0aGVy IG9yIG5vdCB0byBvcHBvcnVuaXN0aWNhbGx5IGZyZWV6ZSwgdG8gaW5kaWNhdGUgaWYgdGhlCi0g KiBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZSBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4g dGhlCi0gKiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgbm90IHBhc3NlZCwgYmVjYXVzZSBh dCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycwotICogdGhhdCBhbHNvIGZyZWV6ZSBuZWVkIHRoYXQg aW5mb3JtYXRpb24uCisgKiBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcuCisg KgorICogSWYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WSVMgaXMgc2V0IGluIHBhcmFtcyBhbmQg dGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mCisgKiB0aGUgcGFnZSBoYXMgY2hhbmdlZCwgd2Ugd2ls bCB1cGRhdGUgdGhlIFZNIGF0IHRoZSBzYW1lIHRpbWUgYXMgcHJ1bmluZyBhbmQKKyAqIGZyZWV6 aW5nIHRoZSBoZWFwIHBhZ2UuIFdlIHdpbGwgYWxzbyB1cGRhdGUgcHJlc3VsdC0+b2xkX3ZtYml0 cyBhbmQKKyAqIHByZXN1bHQtPm5ld192bWJpdHMgd2l0aCB0aGUgc3RhdGUgb2YgdGhlIFZNIGJl Zm9yZSBhbmQgYWZ0ZXIgdXBkYXRpbmcgaXQKKyAqIGZvciB0aGUgY2FsbGVyIHRvIHVzZSBpbiBi b29ra2VlcGluZy4KICAqCiAgKiBwcmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0ZXJzIG5l ZWRlZCBieSBjYWxsZXJzLCBzdWNoIGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyByZW1vdmVk IGFuZCB0aGUgb2Zmc2V0cyBvZiBkZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcu CkBAIC00NzksNiArNTk1LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVl emVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCSAgIE11bHRpWGFjdElkICpuZXdfcmVsbWluX214aWQp CiB7CiAJQnVmZmVyCQlidWZmZXIgPSBwYXJhbXMtPmJ1ZmZlcjsKKwlCdWZmZXIJCXZtYnVmZmVy ID0gcGFyYW1zLT52bWJ1ZmZlcjsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIp OwogCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpOwog CU9mZnNldE51bWJlciBvZmZudW0sCkBAIC00ODgsMTUgKzYwNSwyMiBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCWJvb2wJCWRvX2ZyZWV6 ZTsKIAlib29sCQlkb19wcnVuZTsKIAlib29sCQlkb19oaW50X3BydW5lOworCWJvb2wJCWRvX3Nl dF92bTsKKwlib29sCQlkb19zZXRfcGRfdmlzOwogCWJvb2wJCWRpZF90dXBsZV9oaW50X2ZwaTsK IAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2FsX2ZwaTsKIAlUcmFuc2FjdGlvbklk IGZyel9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJVHJhbnNhY3Rp b25JZCBjb25mbGljdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwl1aW50OAkJbmV3X3Zt Yml0cyA9IDA7CisJdWludDgJCW9sZF92bWJpdHMgPSAwOwogCiAJLyogQ29weSBwYXJhbWV0ZXJz IHRvIHByc3RhdGUgKi8KIAlwcnN0YXRlLnZpc3Rlc3QgPSBwYXJhbXMtPnZpc3Rlc3Q7CiAJcHJz dGF0ZS5tYXJrX3VudXNlZF9ub3cgPQogCQkocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BS VU5FX01BUktfVU5VU0VEX05PVykgIT0gMDsKIAlwcnN0YXRlLmF0dGVtcHRfZnJlZXplID0gKHBh cmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUpICE9IDA7CisJcHJzdGF0ZS5h dHRlbXB0X3VwZGF0ZV92bSA9CisJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVf VVBEQVRFX1ZJUykgIT0gMDsKIAlwcnN0YXRlLmN1dG9mZnMgPSBwYXJhbXMtPmN1dG9mZnM7CiAK IAkvKgpAQCAtNTQzLDUwICs2NjcsNTQgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1 bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAlwcnN0YXRlLmRlYWRvZmZzZXRzID0gcHJlc3VsdC0+ ZGVhZG9mZnNldHM7CiAKIAkvKgotCSAqIENhbGxlciBtYXkgdXBkYXRlIHRoZSBWTSBhZnRlciB3 ZSdyZSBkb25lLiAgV2UgY2FuIGtlZXAgdHJhY2sgb2YKLQkgKiB3aGV0aGVyIHRoZSBwYWdlIHdp bGwgYmUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYWZ0ZXIgcHJ1bmluZyBhbmQKLQkgKiBm cmVlemluZyB0byBoZWxwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KKwkgKiBUcmFjayB3aGV0aGVy IHRoZSBwYWdlIGNvdWxkIGJlIG1hcmtlZCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbi4K KwkgKiBUaGlzIGluZm9ybWF0aW9uIGlzIHVzZWQgZm9yIG9wcG9ydHVuaXN0aWMgZnJlZXppbmcg YW5kIGZvciB1cGRhdGluZworCSAqIHRoZSB2aXNpYmlsaXR5IG1hcCAoVk0pIGlmIHJlcXVlc3Rl ZCBieSB0aGUgY2FsbGVyLgorCSAqCisJICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBwZXJmb3Jt cyBmcmVlemluZywgYnV0IG90aGVyIGNhbGxlcnMgbWF5IGluIHRoZQorCSAqIGZ1dHVyZS4gVmlz aWJpbGl0eSBib29ra2VlcGluZyBpcyByZXF1aXJlZCBub3QganVzdCBmb3Igc2V0dGluZyB0aGUg Vk0KKwkgKiBiaXRzLCBidXQgYWxzbyBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemluZzogd2Ugb25s eSBjb25zaWRlciBmcmVlemluZyBpZgorCSAqIHRoZSBwYWdlIHdvdWxkIGJlY29tZSBhbGwtZnJv emVuLCBvciBpZiBpdCB3b3VsZCBiZSBhbGwtZnJvemVuIGV4Y2VwdAorCSAqIGZvciBkZWFkIHR1 cGxlcyB0aGF0IFZBQ1VVTSB3aWxsIHJlbW92ZS4gSWYgYXR0ZW1wdF91cGRhdGVfdm0gaXMgZmFs c2UsCisJICogd2Ugd2lsbCBub3Qgc2V0IHRoZSBWTSBiaXQgZXZlbiBpZiB0aGUgcGFnZSBpcyBm b3VuZCB0byBiZSBhbGwtdmlzaWJsZS4KKwkgKgorCSAqIElmIEhFQVBfUEFHRV9QUlVORV9VUERB VEVfVklTIGlzIHBhc3NlZCB3aXRob3V0IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsCisJICogcHJz dGF0ZS5hbGxfZnJvemVuIG11c3QgYmUgaW5pdGlhbGl6ZWQgdG8gZmFsc2UsIHNpbmNlIHdlIHdp bGwgbm90IGNhbGwKKwkgKiBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlKCkgZm9yIGVhY2ggdHVw bGUuCiAJICoKLQkgKiBDdXJyZW50bHksIG9ubHkgVkFDVVVNIHNldHMgdGhlIFZNIGJpdHMuICBU byBzYXZlIHRoZSBlZmZvcnQsIG9ubHkgZG8KLQkgKiB0aGUgYm9va2tlZXBpbmcgaWYgdGhlIGNh bGxlciBuZWVkcyBpdC4gIEN1cnJlbnRseSwgdGhhdCdzIHRpZWQgdG8KLQkgKiBIRUFQX1BBR0Vf UFJVTkVfRlJFRVpFLCBidXQgaXQgY291bGQgYmUgYSBzZXBhcmF0ZSBmbGFnIGlmIHlvdSB3YW50 ZWQKLQkgKiB0byB1cGRhdGUgdGhlIFZNIGJpdHMgd2l0aG91dCBhbHNvIGZyZWV6aW5nIG9yIGZy ZWV6ZSB3aXRob3V0IGFsc28KLQkgKiBzZXR0aW5nIHRoZSBWTSBiaXRzLgorCSAqIERlYWQgdHVw bGVzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtIHNob3VsZCBub3QK KwkgKiBwcmV2ZW50IG9wcG9ydHVuaXN0aWMgZnJlZXppbmcuIFRoZXJlZm9yZSwgd2UgZG8gbm90 IGNsZWFyIGFsbF92aXNpYmxlCisJICogd2hlbiB3ZSBlbmNvdW50ZXIgTFBfREVBRCBpdGVtcy4g SW5zdGVhZCwgd2UgY29ycmVjdCBhbGxfdmlzaWJsZSBhZnRlcgorCSAqIGRlY2lkaW5nIHdoZXRo ZXIgdG8gZnJlZXplLCBidXQgYmVmb3JlIHVwZGF0aW5nIHRoZSBWTSwgdG8gYXZvaWQKKwkgKiBz ZXR0aW5nIHRoZSBWTSBiaXQgaW5jb3JyZWN0bHkuCiAJICoKLQkgKiBJbiBhZGRpdGlvbiB0byB0 ZWxsaW5nIHRoZSBjYWxsZXIgd2hldGhlciBpdCBjYW4gc2V0IHRoZSBWTSBiaXQsIHdlCi0JICog YWxzbyB1c2UgJ2FsbF92aXNpYmxlJyBhbmQgJ2FsbF9mcm96ZW4nIGZvciBvdXIgb3duIGRlY2lz aW9uLW1ha2luZy4gSWYKLQkgKiB0aGUgd2hvbGUgcGFnZSB3b3VsZCBiZWNvbWUgZnJvemVuLCB3 ZSBjb25zaWRlciBvcHBvcnR1bmlzdGljYWxseQotCSAqIGZyZWV6aW5nIHR1cGxlcy4gIFdlIHdp bGwgbm90IGJlIGFibGUgdG8gZnJlZXplIHRoZSB3aG9sZSBwYWdlIGlmIHRoZXJlCi0JICogYXJl IHR1cGxlcyBwcmVzZW50IHRoYXQgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIG9yIGlmIHRo ZXJlIGFyZQotCSAqIGRlYWQgdHVwbGVzIHdoaWNoIGFyZSBub3QgeWV0IHJlbW92YWJsZS4gIEhv d2V2ZXIsIGRlYWQgdHVwbGVzIHdoaWNoCi0JICogd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQg b2YgdmFjdXVtaW5nIHNob3VsZCBub3QgcHJlY2x1ZGUgdXMgZnJvbQotCSAqIG9wcG9ydHVuaXN0 aWNhbGx5IGZyZWV6aW5nLiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBub3QgaW1tZWRpYXRlbHkK LQkgKiBjbGVhciBhbGxfdmlzaWJsZSB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4 IHRoYXQgYWZ0ZXIKLQkgKiBzY2FubmluZyB0aGUgbGluZSBwb2ludGVycywgYmVmb3JlIHdlIHJl dHVybiB0aGUgdmFsdWUgdG8gdGhlIGNhbGxlciwKLQkgKiBzbyB0aGF0IHRoZSBjYWxsZXIgZG9l c24ndCBzZXQgdGhlIFZNIGJpdCBpbmNvcnJlY3RseS4KKwkgKiBJZiBuZWl0aGVyIGZyZWV6aW5n IG5vciBWTSB1cGRhdGVzIGFyZSByZXF1ZXN0ZWQsIHdlIHNraXAgdGhlIGV4dHJhCisJICogYm9v a2tlZXBpbmcuIEluIHRoaXMgY2FzZSwgaW5pdGlhbGl6aW5nIGFsbF92aXNpYmxlIHRvIGZhbHNl IGFsbG93cworCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKSB0byBi eXBhc3MgdW5uZWNlc3Nhcnkgd29yay4KIAkgKi8KIAlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6 ZSkKIAl7CiAJCXByc3RhdGUuYWxsX3Zpc2libGUgPSB0cnVlOwogCQlwcnN0YXRlLmFsbF9mcm96 ZW4gPSB0cnVlOwogCX0KKwllbHNlIGlmIChwcnN0YXRlLmF0dGVtcHRfdXBkYXRlX3ZtKQorCXsK KwkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHRydWU7CisJCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZh bHNlOworCX0KIAllbHNlCiAJewotCQkvKgotCQkgKiBJbml0aWFsaXppbmcgdG8gZmFsc2UgYWxs b3dzIHNraXBwaW5nIHRoZSB3b3JrIHRvIHVwZGF0ZSB0aGVtIGluCi0JCSAqIGhlYXBfcHJ1bmVf cmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKS4KLQkJICovCiAJCXByc3RhdGUuYWxsX3Zpc2li bGUgPSBmYWxzZTsKIAkJcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CiAJfQogCiAJLyoKLQkg KiBUaGUgdmlzaWJpbGl0eSBjdXRvZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1 cGxlcyBvbiB0aGUKLQkgKiBwYWdlLiAgSW4gdGhlIGNvbW1vbiBjYXNlLCB0aGlzIHdpbGwgYmUg c2V0IGFzIHRoZSBjb25mbGljdCBob3Jpem9uIHRoZQotCSAqIGNhbGxlciBjYW4gdXNlIGZvciB1 cGRhdGluZyB0aGUgVk0uICBJZiwgYXQgdGhlIGVuZCBvZiBmcmVlemluZyBhbmQKLQkgKiBwcnVu aW5nLCB0aGUgcGFnZSBpcyBhbGwtZnJvemVuLCB0aGVyZSBpcyBubyBwb3NzaWJpbGl0eSB0aGF0 IGFueQotCSAqIHJ1bm5pbmcgdHJhbnNhY3Rpb24gb24gdGhlIHN0YW5kYnkgZG9lcyBub3Qgc2Vl IHR1cGxlcyBvbiB0aGUgcGFnZSBhcwotCSAqIGFsbC12aXNpYmxlLCBzbyB0aGUgY29uZmxpY3Qg aG9yaXpvbiByZW1haW5zIEludmFsaWRUcmFuc2FjdGlvbklkLgorCSAqIFRoZSB2aXNpYmlsaXR5 IGN1dG9mZiB4aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUsIGNvbW1pdHRlZCB0dXBsZXMK KwkgKiBvbGRlciB0aGFuIE9sZGVzdFhtaW4gb24gdGhlIHBhZ2UuIFRoaXMgZmllbGQgaXMgb25s eSBrZXB0IHVwLXRvLWRhdGUKKwkgKiBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4gQXMgc29v biBhcyBhIHR1cGxlIGlzIGVuY291bnRlcmVkIHRoYXQgaXMKKwkgKiBub3QgdmlzaWJsZSB0byBh bGwsIHRoaXMgZmllbGQgaXMgdW5tYWludGFpbmVkLiBBcyBsb25nIGFzIGl0IGlzCisJICogbWFp bnRhaW5lZCwgaXQgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGlj dCBob3Jpem9uCisJICogd2hlbiB1cGRhdGluZyB0aGUgVk0gYW5kL29yIGZyZWV6aW5nIGFsbCB0 aGUgdHVwbGVzIG9uIHRoZSBwYWdlLgogCSAqLwogCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZf eGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKQEAgLTgxOCw2ICs5NDYsMzUgQEAgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJcHJzdGF0 ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJQXNzZXJ0KCFw cnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS5hbGxfdmlzaWJsZSk7CisJQXNzZXJ0KCFwcnN0 YXRlLmFsbF92aXNpYmxlIHx8IChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKSk7CisKKwkvKgor CSAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgcGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBi aXQgYW5kIHRoZSBWTSBiaXRzCisJICogYmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0g YW5kIHRoZSBhbGxfdmlzaWJsZS9hbGxfZnJvemVuIGZsYWdzLgorCSAqCisJICogV2hpbGUgaXQg aXMgdmFsaWQgZm9yIFBEX0FMTF9WSVNJQkxFIHRvIGJlIHNldCB3aGVuIHRoZSBjb3JyZXNwb25k aW5nCisJICogVk0gYml0IGlzIGNsZWFyLCB3ZSBzdHJvbmdseSBwcmVmZXIgdG8ga2VlcCB0aGVt IGluIHN5bmMuCisJICoKKwkgKiBBY2NvcmRpbmdseSwgd2UgYWxzbyBhbGxvdyB1cGRhdGluZyBv bmx5IHRoZSBWTSB3aGVuIFBEX0FMTF9WSVNJQkxFIGhhcworCSAqIGFscmVhZHkgYmVlbiBzZXQu IFNldHRpbmcgb25seSB0aGUgVk0gaXMgbW9zdCBjb21tb24gd2hlbiBzZXR0aW5nIGFuCisJICog YWxyZWFkeSBhbGwtdmlzaWJsZSBwYWdlIGFsbC1mcm96ZW4uCisJICovCisJZG9fc2V0X3ZtID0g aGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhwYXJhbXMtPnJlbGF0aW9uLAorCQkJCQkJCQkJICAgYmxv Y2tubywgYnVmZmVyLCB2bWJ1ZmZlciwgcGFyYW1zLT5ibGtfa25vd25fYXYsCisJCQkJCQkJCQkg ICAmcHJzdGF0ZSwgJm5ld192bWJpdHMsICZkb19zZXRfcGRfdmlzKTsKKworCS8qIFdlIHNob3Vs ZCBvbmx5IHNldCB0aGUgVk0gaWYgUERfQUxMX1ZJU0lCTEUgaXMgc2V0IG9yIHdpbGwgYmUgKi8K KwlBc3NlcnQoIWRvX3NldF92bSB8fCBkb19zZXRfcGRfdmlzIHx8IFBhZ2VJc0FsbFZpc2libGUo cGFnZSkpOworCisJY29uZmxpY3RfeGlkID0gZ2V0X2NvbmZsaWN0X3hpZChkb19wcnVuZSwgZG9f ZnJlZXplLCBkb19zZXRfdm0sCisJCQkJCQkJCQlwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCwg ZnJ6X2NvbmZsaWN0X2hvcml6b24sCisJCQkJCQkJCQlwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2Zm X3hpZCwgcGFyYW1zLT5ibGtfa25vd25fYXYsCisJCQkJCQkJCQkoZG9fc2V0X3ZtICYmIChuZXdf dm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSkpOworCisJLyogTG9jayB2bWJ1ZmZl ciBiZWZvcmUgZW50ZXJpbmcgYSBjcml0aWNhbCBzZWN0aW9uICovCisJaWYgKGRvX3NldF92bSkK KwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKwogCS8qIEFu eSBlcnJvciB3aGlsZSBhcHBseWluZyB0aGUgY2hhbmdlcyBpcyBjcml0aWNhbCAqLwogCVNUQVJU X0NSSVRfU0VDVElPTigpOwogCkBAIC04MzgsMTQgKzk5NSwxNyBAQCBoZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCiAJCS8qCiAJCSAqIElmIHRo YXQncyBhbGwgd2UgaGFkIHRvIGRvIHRvIHRoZSBwYWdlLCB0aGlzIGlzIGEgbm9uLVdBTC1sb2dn ZWQKLQkJICogaGludC4gIElmIHdlIGFyZSBnb2luZyB0byBmcmVlemUgb3IgcHJ1bmUgdGhlIHBh Z2UsIHdlIHdpbGwgbWFyawotCQkgKiB0aGUgYnVmZmVyIGRpcnR5IGJlbG93LgorCQkgKiBoaW50 LiAgSWYgd2UgYXJlIGdvaW5nIHRvIGZyZWV6ZSBvciBwcnVuZSB0aGUgcGFnZSBvciBzZXQKKwkJ ICogUERfQUxMX1ZJU0lCTEUsIHdlIHdpbGwgbWFyayB0aGUgYnVmZmVyIGRpcnR5IGJlbG93Lgor CQkgKgorCQkgKiBTZXR0aW5nIFBEX0FMTF9WSVNJQkxFIGlzIGZ1bGx5IFdBTC1sb2dnZWQgYmVj YXVzZSBpdCBpcyBmb3JiaWRkZW4KKwkJICogZm9yIHRoZSBWTSB0byBiZSBzZXQgYW5kIFBEX0FM TF9WSVNJQkxFIHRvIGJlIGNsZWFyLgogCQkgKi8KLQkJaWYgKCFkb19mcmVlemUgJiYgIWRvX3By dW5lKQorCQlpZiAoIWRvX2ZyZWV6ZSAmJiAhZG9fcHJ1bmUgJiYgIWRvX3NldF9wZF92aXMpCiAJ CQlNYXJrQnVmZmVyRGlydHlIaW50KGJ1ZmZlciwgdHJ1ZSk7CiAJfQogCi0JaWYgKGRvX3BydW5l IHx8IGRvX2ZyZWV6ZSkKKwlpZiAoZG9fcHJ1bmUgfHwgZG9fZnJlZXplIHx8IGRvX3NldF92bSkK IAl7CiAJCS8qIEFwcGx5IHRoZSBwbGFubmVkIGl0ZW0gY2hhbmdlcyBhbmQgcmVwYWlyIHBhZ2Ug ZnJhZ21lbnRhdGlvbi4gKi8KIAkJaWYgKGRvX3BydW5lKQpAQCAtODU5LDY2ICsxMDE5LDkxIEBA IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJ CWlmIChkb19mcmVlemUpCiAJCQloZWFwX2ZyZWV6ZV9wcmVwYXJlZF90dXBsZXMoYnVmZmVyLCBw cnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuKTsKIAotCQlNYXJrQnVmZmVyRGlydHkoYnVm ZmVyKTsKKwkJaWYgKGRvX3NldF9wZF92aXMpCisJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsK IAotCQkvKgotCQkgKiBFbWl0IGEgV0FMIFhMT0dfSEVBUDJfUFJVTkUqIHJlY29yZCBzaG93aW5n IHdoYXQgd2UgZGlkCi0JCSAqLwotCQlpZiAoUmVsYXRpb25OZWVkc1dBTChwYXJhbXMtPnJlbGF0 aW9uKSkKKwkJaWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSB8fCBkb19zZXRfcGRfdmlzKQorCQkJ TWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisKKwkJaWYgKGRvX3NldF92bSkKIAkJewotCQkJLyoK LQkJCSAqIFRoZSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBmb3IgdGhlIHdob2xlIHJlY29yZCBz aG91bGQgYmUgdGhlCi0JCQkgKiBtb3N0IGNvbnNlcnZhdGl2ZSBvZiBhbGwgdGhlIGhvcml6b25z IGNhbGN1bGF0ZWQgZm9yIGFueSBvZiB0aGUKLQkJCSAqIHBvc3NpYmxlIG1vZGlmaWNhdGlvbnMu ICBJZiB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHR1cGxlcywgYW55Ci0JCQkgKiB0cmFuc2FjdGlv bnMgb24gdGhlIHN0YW5kYnkgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgeG1heCBvZiB0aGUKLQkJ CSAqIG1vc3QgcmVjZW50bHkgcmVtb3ZlZCB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHdp bGwKLQkJCSAqIGNvbmZsaWN0LiAgSWYgdGhpcyByZWNvcmQgd2lsbCBmcmVlemUgdHVwbGVzLCBh bnkgdHJhbnNhY3Rpb25zCi0JCQkgKiBvbiB0aGUgc3RhbmRieSB3aXRoIHhpZHMgb2xkZXIgdGhh biB0aGUgeW91bmdlc3QgdHVwbGUgdGhpcwotCQkJICogcmVjb3JkIHdpbGwgZnJlZXplIHdpbGwg Y29uZmxpY3QuCi0JCQkgKi8KLQkJCVRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkOworCQkJQXNz ZXJ0KFBhZ2VJc0FsbFZpc2libGUocGFnZSkpOwogCi0JCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxv d3MoZnJ6X2NvbmZsaWN0X2hvcml6b24sIHByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVkKSkKLQkJ CQljb25mbGljdF94aWQgPSBmcnpfY29uZmxpY3RfaG9yaXpvbjsKLQkJCWVsc2UKLQkJCQljb25m bGljdF94aWQgPSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKKwkJCW9sZF92bWJpdHMgPSB2 aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxvY2tubywKKwkJCQkJCQkJCQkJCSAgdm1idWZmZXIs IG5ld192bWJpdHMsCisJCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmFt cy0+cmVsYXRpb24pKTsKKwkJCWlmIChvbGRfdm1iaXRzID09IG5ld192bWJpdHMpCisJCQl7CisJ CQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCQkvKiBVbnNl dCBzbyB3ZSBkb24ndCBlbWl0IFdBTCBzaW5jZSBubyBjaGFuZ2Ugb2NjdXJyZWQgKi8KKwkJCQlk b19zZXRfdm0gPSBmYWxzZTsKKwkJCX0KKwkJfQogCisJCS8qCisJCSAqIEVtaXQgYSBXQUwgWExP R19IRUFQMl9QUlVORSogcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQuIElmIHdlIHdlcmUKKwkJ ICogb25seSB1cGRhdGluZyB0aGUgVk0gYW5kIGl0IHR1cm5zIG91dCBpdCB3YXMgYWxyZWFkeSBz ZXQsIHdlIHdpbGwKKwkJICogaGF2ZSB1bnNldCBkb19zZXRfdm0gZWFybGllci4gQXMgc3VjaCwg Y2hlY2sgaXQgYWdhaW4gYmVmb3JlCisJCSAqIGVtaXR0aW5nIHRoZSByZWNvcmQuCisJCSAqLwor CQlpZiAoUmVsYXRpb25OZWVkc1dBTChwYXJhbXMtPnJlbGF0aW9uKSAmJgorCQkJKGRvX3BydW5l IHx8IGRvX2ZyZWV6ZSB8fCBkb19zZXRfdm0pKQogCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6 ZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJCQkgIEludmFsaWRCdWZmZXIsCS8q IHZtYnVmZmVyICovCi0JCQkJCQkJCQkgIDAsCS8qIHZtZmxhZ3MgKi8KKwkJCQkJCQkJCSAgZG9f c2V0X3ZtID8gdm1idWZmZXIgOiBJbnZhbGlkQnVmZmVyLAorCQkJCQkJCQkJICBkb19zZXRfdm0g PyBuZXdfdm1iaXRzIDogMCwKIAkJCQkJCQkJCSAgY29uZmxpY3RfeGlkLAotCQkJCQkJCQkJICB0 cnVlLCBwYXJhbXMtPnJlYXNvbiwKKwkJCQkJCQkJCSAgdHJ1ZSwgLyogY2xlYW51cCBsb2NrICov CisJCQkJCQkJCQkgIGRvX3NldF9wZF92aXMsCisJCQkJCQkJCQkgIHBhcmFtcy0+cmVhc29uLAog CQkJCQkJCQkJICBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuLAogCQkJCQkJCQkJICBw cnN0YXRlLnJlZGlyZWN0ZWQsIHByc3RhdGUubnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkgIHByc3Rh dGUubm93ZGVhZCwgcHJzdGF0ZS5uZGVhZCwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5ub3d1bnVzZWQs IHByc3RhdGUubnVudXNlZCk7Ci0JCX0KIAl9CiAKIAlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwlp ZiAoZG9fc2V0X3ZtKQorCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0sp OworCisJLyoKKwkgKiBEdXJpbmcgaXRzIHNlY29uZCBwYXNzIG92ZXIgdGhlIGhlYXAsIFZBQ1VV TSBjYWxscworCSAqIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHRvIGRldGVybWlu ZSB3aGV0aGVyIGEgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuLiBUaGUg bG9naWMgaGVyZSBpcyBzaW1pbGFyLiBBZnRlciBjb21wbGV0aW5nCisJICogcHJ1bmluZyBhbmQg ZnJlZXppbmcsIHVzZSBhbiBhc3NlcnRpb24gdG8gdmVyaWZ5IHRoYXQgb3VyIHJlc3VsdHMKKwkg KiByZW1haW4gY29uc2lzdGVudCB3aXRoIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgp LgorCSAqLworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAocHJzdGF0ZS5hbGxfdmlz aWJsZSkKKwl7CisJCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOworCQlib29sCQlkZWJ1Z19h bGxfZnJvemVuOworCisJCUFzc2VydChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKTsKKwkJQXNz ZXJ0KHByc3RhdGUuY3V0b2Zmcyk7CisKKwkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUo cGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVyLAorCQkJCQkJCQkJICBwcnN0YXRlLmN1dG9mZnMtPk9s ZGVzdFhtaW4sCisJCQkJCQkJCQkgICZkZWJ1Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJICAmZGVi dWdfY3V0b2ZmLCBvZmZfbG9jKSkKKwkJCUFzc2VydChmYWxzZSk7CisKKwkJQXNzZXJ0KHByc3Rh dGUuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKKworCQlBc3NlcnQoIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKKwkJCSAgIGRlYnVnX2N1dG9mZiA9PSBwcnN0 YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCk7CisJfQorI2VuZGlmCisKIAkvKiBDb3B5IGluZm9y bWF0aW9uIGJhY2sgZm9yIGNhbGxlciAqLwogCXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5u ZGVsZXRlZDsKIAlwcmVzdWx0LT5ubmV3bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsKIAlwcmVzdWx0 LT5uZnJvemVuID0gcHJzdGF0ZS5uZnJvemVuOwogCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJz dGF0ZS5saXZlX3R1cGxlczsKIAlwcmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3Rh dGUucmVjZW50bHlfZGVhZF90dXBsZXM7Ci0JcHJlc3VsdC0+YWxsX3Zpc2libGUgPSBwcnN0YXRl LmFsbF92aXNpYmxlOwotCXByZXN1bHQtPmFsbF9mcm96ZW4gPSBwcnN0YXRlLmFsbF9mcm96ZW47 CiAJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7Ci0KLQkvKgotCSAqIEZvciBjYWxs ZXJzIHBsYW5uaW5nIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoZSBjb25mbGljdCBo b3Jpem9uCi0JICogZm9yIHRoYXQgcmVjb3JkIG11c3QgYmUgdGhlIG5ld2VzdCB4bWluIG9uIHRo ZSBwYWdlLiAgSG93ZXZlciwgaWYgdGhlCi0JICogcGFnZSBpcyBjb21wbGV0ZWx5IGZyb3plbiwg dGhlcmUgY2FuIGJlIG5vIGNvbmZsaWN0IGFuZCB0aGUKLQkgKiB2bV9jb25mbGljdF9ob3Jpem9u IHNob3VsZCByZW1haW4gSW52YWxpZFRyYW5zYWN0aW9uSWQuICBUaGlzIGluY2x1ZGVzCi0JICog dGhlIGNhc2UgdGhhdCB3ZSBqdXN0IGZyb3plIGFsbCB0aGUgdHVwbGVzOyB0aGUgcHJ1bmUtZnJl ZXplIHJlY29yZAotCSAqIGluY2x1ZGVkIHRoZSBjb25mbGljdCBYSUQgYWxyZWFkeSBzbyB0aGUg Y2FsbGVyIGRvZXNuJ3QgbmVlZCBpdC4KLQkgKi8KLQlpZiAocHJlc3VsdC0+YWxsX2Zyb3plbikK LQkJcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwot CWVsc2UKLQkJcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUudmlzaWJpbGl0 eV9jdXRvZmZfeGlkOworCXByZXN1bHQtPm5ld192bWJpdHMgPSBuZXdfdm1iaXRzOworCXByZXN1 bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRzOwogCiAJcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0g cHJzdGF0ZS5scGRlYWRfaXRlbXM7CiAJLyogdGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5 IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwpAQCAtMjA2MCw2ICsyMjQ1LDY0IEBAIGhlYXBfbG9n X2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKIAlyZXR1 cm4gbnBsYW5zOwogfQogCisvKgorICogQ2FsY3VsYXRlIHRoZSBjb25mbGljdCBob3Jpem9uIGZv ciB0aGUgd2hvbGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgorICogcmVjb3JkLgorICov CitzdGF0aWMgVHJhbnNhY3Rpb25JZAorZ2V0X2NvbmZsaWN0X3hpZChib29sIGRvX3BydW5lLCBi b29sIGRvX2ZyZWV6ZSwgYm9vbCBkb19zZXRfdm0sCisJCQkJIFRyYW5zYWN0aW9uSWQgbGF0ZXN0 X3hpZF9yZW1vdmVkLCBUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uLAorCQkJCSBU cmFuc2FjdGlvbklkIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgYm9vbCBibGtfYWxyZWFkeV9hdiwK KwkJCQkgYm9vbCBzZXRfYmxrX2FsbF9mcm96ZW4pCit7CisKKwkvKgorCSAqIFRoZSBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbiBmb3IgdGhlIHdob2xlIHJlY29yZCBzaG91bGQgYmUgdGhlIG1vc3QK KwkgKiBjb25zZXJ2YXRpdmUgb2YgYWxsIHRoZSBob3Jpem9ucyBjYWxjdWxhdGVkIGZvciBhbnkg b2YgdGhlIHBvc3NpYmxlCisJICogbW9kaWZpY2F0aW9ucy4gIElmIHRoaXMgcmVjb3JkIHdpbGwg cHJ1bmUgdHVwbGVzLCBhbnkgdHJhbnNhY3Rpb25zIG9uCisJICogdGhlIHN0YW5kYnkgb2xkZXIg dGhhbiB0aGUgeW91bmdlc3QgeG1heCBvZiB0aGUgbW9zdCByZWNlbnRseSByZW1vdmVkCisJICog dHVwbGUgdGhpcyByZWNvcmQgd2lsbCBwcnVuZSB3aWxsIGNvbmZsaWN0LiAgSWYgdGhpcyByZWNv cmQgd2lsbCBmcmVlemUKKwkgKiB0dXBsZXMsIGFueSB0cmFuc2FjdGlvbnMgb24gdGhlIHN0YW5k Ynkgd2l0aCB4aWRzIG9sZGVyIHRoYW4gdGhlCisJICogeW91bmdlc3QgdHVwbGUgdGhpcyByZWNv cmQgd2lsbCBmcmVlemUgd2lsbCBjb25mbGljdC4KKwkgKi8KKwlUcmFuc2FjdGlvbklkIGNvbmZs aWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCisJLyoKKwkgKiBJZiB3ZSBhcmUgdXBk YXRpbmcgdGhlIFZNLCB0aGUgY29uZmxpY3QgaG9yaXpvbiBpcyBhbG1vc3QgYWx3YXlzIHRoZQor CSAqIHZpc2liaWxpdHkgY3V0b2ZmIFhJRC4KKwkgKgorCSAqIFNlcGFyYXRlbHksIGlmIHdlIGFy ZSBmcmVlemluZyBhbnkgdHVwbGVzLCBhcyBhbiBvcHRpbWl6YXRpb24sIHdlIGNhbgorCSAqIHVz ZSB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGFzIHRoZSBjb25mbGljdCBob3Jpem9uIGlmIHRo ZSBwYWdlIHdpbGwKKwkgKiBiZSBhbGwtZnJvemVuLiBUaGlzIGlzIHRydWUgZXZlbiBpZiB0aGVy ZSBhcmUgTFBfREVBRCBsaW5lIHBvaW50ZXJzCisJICogYmVjYXVzZSB3ZSBpZ25vcmVkIHRob3Nl IHdoZW4gbWFpbnRhaW5pbmcgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZC4KKwkgKiBUaGlzIHdp bGwgaGF2ZSBiZWVuIGNhbGN1bGF0ZWQgZWFybGllciBhcyB0aGUgZnJ6X2NvbmZsaWN0X2hvcml6 b24gd2hlbgorCSAqIHdlIGRldGVybWluZWQgd2Ugd291bGQgZnJlZXplLgorCSAqLworCWlmIChk b19zZXRfdm0pCisJCWNvbmZsaWN0X3hpZCA9IHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwllbHNl IGlmIChkb19mcmVlemUpCisJCWNvbmZsaWN0X3hpZCA9IGZyel9jb25mbGljdF9ob3Jpem9uOwor CisJLyoKKwkgKiBJZiB3ZSBhcmUgcmVtb3ZpbmcgdHVwbGVzIHdpdGggYSB5b3VuZ2VyIHhtYXgg dGhhbiBvdXIgc28gZmFyCisJICogY2FsY3VsYXRlZCBjb25mbGljdF94aWQsIHdlIG11c3QgdXNl IHRoaXMgYXMgb3VyIGhvcml6b24uCisJICovCisJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGxh dGVzdF94aWRfcmVtb3ZlZCwgY29uZmxpY3RfeGlkKSkKKwkJY29uZmxpY3RfeGlkID0gbGF0ZXN0 X3hpZF9yZW1vdmVkOworCisJLyoKKwkgKiBXZSBjYW4gb21pdCB0aGUgc25hcHNob3QgY29uZmxp Y3QgaG9yaXpvbiBpZiB3ZSBhcmUgbm90IHBydW5pbmcgb3IKKwkgKiBmcmVlemluZyBhbnkgdHVw bGVzIGFuZCBhcmUgc2V0dGluZyBhbiBhbHJlYWR5IGFsbC12aXNpYmxlIHBhZ2UKKwkgKiBhbGwt ZnJvemVuIGluIHRoZSBWTS4gSW4gdGhpcyBjYXNlLCBhbGwgb2YgdGhlIHR1cGxlcyBvbiB0aGUg cGFnZSBtdXN0CisJICogYWxyZWFkeSBiZSB2aXNpYmxlIHRvIGFsbCBNVkNDIHNuYXBzaG90cyBv biB0aGUgc3RhbmRieS4KKwkgKi8KKwlpZiAoIWRvX3BydW5lICYmICFkb19mcmVlemUgJiYKKwkJ ZG9fc2V0X3ZtICYmIGJsa19hbHJlYWR5X2F2ICYmIHNldF9ibGtfYWxsX2Zyb3plbikKKwkJY29u ZmxpY3RfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisKKwlyZXR1cm4gY29uZmxpY3RfeGlk OworfQorCiAvKgogICogV3JpdGUgYW4gWExPR19IRUFQMl9QUlVORSogV0FMIHJlY29yZAogICoK QEAgLTIwODQsNiArMjMyNywxMCBAQCBoZWFwX2xvZ19mcmVlemVfcGxhbihIZWFwVHVwbGVGcmVl emUgKnR1cGxlcywgaW50IG50dXBsZXMsCiAgKiBjYXNlLCB2bWJ1ZmZlciBzaG91bGQgYWxyZWFk eSBoYXZlIGJlZW4gdXBkYXRlZCBhbmQgbWFya2VkIGRpcnR5IGFuZCBzaG91bGQKICAqIHN0aWxs IGJlIHBpbm5lZCBhbmQgbG9ja2VkLgogICoKKyAqIHNldF9wZF9hbGxfdmlzIGluZGljYXRlcyB0 aGF0IHdlIHNldCBQRF9BTExfVklTSUJMRSBhbmQgdGh1cyBzaG91bGQgdXBkYXRlCisgKiB0aGUg cGFnZSBMU04gd2hlbiBjaGVja3N1bXMvd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZCBldmVuIGlm IHdlIGRpZCBub3QKKyAqIHBydW5lIG9yIGZyZWV6ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCisgKgog ICogTm90ZTogVGhpcyBmdW5jdGlvbiBzY3JpYmJsZXMgb24gdGhlICdmcm96ZW4nIGFycmF5Lgog ICoKICAqIE5vdGU6IFRoaXMgaXMgY2FsbGVkIGluIGEgY3JpdGljYWwgc2VjdGlvbiwgc28gY2Fy ZWZ1bCB3aGF0IHlvdSBkbyBoZXJlLgpAQCAtMjA5Myw2ICsyMzQwLDcgQEAgbG9nX2hlYXBfcHJ1 bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCSAg QnVmZmVyIHZtYnVmZmVyLCB1aW50OCB2bWZsYWdzLAogCQkJCQkJICBUcmFuc2FjdGlvbklkIGNv bmZsaWN0X3hpZCwKIAkJCQkJCSAgYm9vbCBjbGVhbnVwX2xvY2ssCisJCQkJCQkgIGJvb2wgc2V0 X3BkX2FsbF92aXMsCiAJCQkJCQkgIFBydW5lUmVhc29uIHJlYXNvbiwKIAkJCQkJCSAgSGVhcFR1 cGxlRnJlZXplICpmcm96ZW4sIGludCBuZnJvemVuLAogCQkJCQkJICBPZmZzZXROdW1iZXIgKnJl ZGlyZWN0ZWQsIGludCBucmVkaXJlY3RlZCwKQEAgLTIxMjcsNyArMjM3NSw3IEBAIGxvZ19oZWFw X3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJICov CiAJaWYgKCFkb19wcnVuZSAmJgogCQluZnJvemVuID09IDAgJiYKLQkJKCFkb19zZXRfdm0gfHwg IVhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCisJCSghc2V0X3BkX2FsbF92aXMgfHwgIVhMb2dIaW50 Qml0SXNOZWVkZWQoKSkpCiAJCXJlZ2J1Zl9mbGFncyB8PSBSRUdCVUZfTk9fSU1BR0U7CiAKIAkv KgpAQCAtMjI0OCw3ICsyNDk2LDggQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiB1cGRhdGUgUERfQUxMX1ZJU0lCTEUgd2l0 aG91dCBidW1waW5nIHRoZSBMU04sIGJ1dCB0aGlzIGlzIGRlZW1lZCBva2F5CiAJICogZm9yIHBh Z2UgaGludCB1cGRhdGVzLgogCSAqLwotCWlmIChkb19wcnVuZSB8fCBuZnJvemVuID4gMCB8fCAo ZG9fc2V0X3ZtICYmIFhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCisJaWYgKGRvX3BydW5lIHx8IG5m cm96ZW4gPiAwIHx8CisJCShzZXRfcGRfYWxsX3ZpcyAmJiBYTG9nSGludEJpdElzTmVlZGVkKCkp KQogCXsKIAkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkoYnVmZmVyKSk7CiAJCVBhZ2VTZXRMU04oQnVm ZmVyR2V0UGFnZShidWZmZXIpLCByZWNwdHIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCmluZGV4IGMyNjE4YzY0NDljLi4yZjcxOTEwOGFkMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYwpAQCAtNDY0LDExICs0NjQsNiBAQCBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1z X2FkZChMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBPZmZzZXROdW1iZXIg Kgogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3Rh dGljIHZvaWQgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7CiAKLXN0YXRp YyBib29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYs Ci0JCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAotCQkJCQkJCQkJIGJvb2wgKmFs bF9mcm96ZW4sCi0JCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlk LAotCQkJCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwogc3RhdGljIGJvb2wg aGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwK IAkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJCQkJCQkJCQkJICAgT2Zm c2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKQEAgLTE5NzEsNiArMTk2Niw4IEBAIGxhenlfc2Nhbl9w cnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJcGFyYW1zLnJlYXNvbiA9IFBSVU5FX1ZBQ1VVTV9T Q0FOOwogCXBhcmFtcy5jdXRvZmZzID0gJnZhY3JlbC0+Y3V0b2ZmczsKIAlwYXJhbXMudmlzdGVz dCA9IHZhY3JlbC0+dmlzdGVzdDsKKwlwYXJhbXMudm1idWZmZXIgPSB2bWJ1ZmZlcjsKKwlwYXJh bXMuYmxrX2tub3duX2F2ID0gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtOwogCiAJLyoKIAkg KiBQcnVuZSBhbGwgSE9ULXVwZGF0ZSBjaGFpbnMgYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBs ZXMgb24gdGhpcyBwYWdlLgpAQCAtMTk4Nyw3ICsxOTg0LDcgQEAgbGF6eV9zY2FuX3BydW5lKExW UmVsU3RhdGUgKnZhY3JlbCwKIAkgKiB0dXBsZXMuIFBydW5pbmcgd2lsbCBoYXZlIGRldGVybWlu ZWQgd2hldGhlciBvciBub3QgdGhlIHBhZ2UgaXMKIAkgKiBhbGwtdmlzaWJsZS4KIAkgKi8KLQlw YXJhbXMub3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9GUkVFWkU7CisJcGFyYW1zLm9wdGlvbnMg PSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIHwgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WSVM7CiAJ aWYgKHZhY3JlbC0+bmluZGV4ZXMgPT0gMCkKIAkJcGFyYW1zLm9wdGlvbnMgfD0gSEVBUF9QQUdF X1BSVU5FX01BUktfVU5VU0VEX05PVzsKIApAQCAtMjAxMCwzMyArMjAwNyw2IEBAIGxhenlfc2Nh bl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJCXZhY3JlbC0+bmV3X2Zyb3plbl90dXBsZV9w YWdlcysrOwogCX0KIAotCS8qCi0JICogVkFDVVVNIHdpbGwgY2FsbCBoZWFwX3BhZ2VfaXNfYWxs X3Zpc2libGUoKSBkdXJpbmcgdGhlIHNlY29uZCBwYXNzIG92ZXIKLQkgKiB0aGUgaGVhcCB0byBk ZXRlcm1pbmUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gZm9yIHRoZSBwYWdlIC0tIHRoaXMK LQkgKiBpcyBhIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgdGhlIGxvZ2ljIGZyb20gdGhpcyBmdW5j dGlvbi4gIE5vdyB0aGF0Ci0JICogd2UndmUgZmluaXNoZWQgcHJ1bmluZyBhbmQgZnJlZXppbmcs IG1ha2Ugc3VyZSB0aGF0IHdlJ3JlIGluIHRvdGFsCi0JICogYWdyZWVtZW50IHdpdGggaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlKCkgdXNpbmcgYW4gYXNzZXJ0aW9uLgotCSAqLwotI2lmZGVmIFVT RV9BU1NFUlRfQ0hFQ0tJTkcKLQlpZiAocHJlc3VsdC5hbGxfdmlzaWJsZSkKLQl7Ci0JCVRyYW5z YWN0aW9uSWQgZGVidWdfY3V0b2ZmOwotCQlib29sCQlkZWJ1Z19hbGxfZnJvemVuOwotCi0JCUFz c2VydChwcmVzdWx0LmxwZGVhZF9pdGVtcyA9PSAwKTsKLQotCQlpZiAoIWhlYXBfcGFnZV9pc19h bGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmLAotCQkJCQkJCQkJICB2YWNyZWwtPmN1dG9mZnMu T2xkZXN0WG1pbiwgJmRlYnVnX2FsbF9mcm96ZW4sCi0JCQkJCQkJCQkgICZkZWJ1Z19jdXRvZmYs ICZ2YWNyZWwtPm9mZm51bSkpCi0JCQlBc3NlcnQoZmFsc2UpOwotCi0JCUFzc2VydChwcmVzdWx0 LmFsbF9mcm96ZW4gPT0gZGVidWdfYWxsX2Zyb3plbik7Ci0KLQkJQXNzZXJ0KCFUcmFuc2FjdGlv bklkSXNWYWxpZChkZWJ1Z19jdXRvZmYpIHx8Ci0JCQkgICBkZWJ1Z19jdXRvZmYgPT0gcHJlc3Vs dC52bV9jb25mbGljdF9ob3Jpem9uKTsKLQl9Ci0jZW5kaWYKLQogCS8qCiAJICogTm93IHNhdmUg ZGV0YWlscyBvZiB0aGUgTFBfREVBRCBpdGVtcyBmcm9tIHRoZSBwYWdlIGluIHZhY3JlbAogCSAq LwpAQCAtMjA3MCwxNjggKzIwNDAsMjYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZh Y3JlbCwKIAkvKiBEaWQgd2UgZmluZCBMUF9ERUFEIGl0ZW1zPyAqLwogCSpoYXNfbHBkZWFkX2l0 ZW1zID0gKHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCk7CiAKLQlBc3NlcnQoIXByZXN1bHQuYWxs X3Zpc2libGUgfHwgISgqaGFzX2xwZGVhZF9pdGVtcykpOwotCUFzc2VydCghcHJlc3VsdC5hbGxf ZnJvemVuIHx8IHByZXN1bHQuYWxsX3Zpc2libGUpOwotCiAJLyoKLQkgKiBIYW5kbGUgc2V0dGlu ZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFz Ci0JICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20g YWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2YXJpYWJsZXMKKwkgKiBGb3IgdGhlIHB1 cnBvc2VzIG9mIGxvZ2dpbmcsIGNvdW50IHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdhcyBuZXds eQorCSAqIHNldCBhbGwtdmlzaWJsZSBhbmQsIHBvdGVudGlhbGx5LCBhbGwtZnJvemVuLgogCSAq LwotCWlmICghYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1bHQuYWxsX3Zpc2li bGUpCisJaWYgKChwcmVzdWx0Lm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxF KSA9PSAwICYmCisJCShwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJ QkxFKSAhPSAwKQogCXsKLQkJdWludDgJCW9sZF92bWJpdHM7Ci0JCXVpbnQ4CQlmbGFncyA9IFZJ U0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0KLQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJ ewotCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hv cml6b24pKTsKLQkJCWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQotCi0J CS8qCi0JCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmlsaXR5 IG1hcCBwYWdlIGlzIHNldAotCQkgKiB3aGlsZSB0aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIs IGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZgotCQkgKiBjaGVja3N1bXMgYXJlIG5vdCBl bmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhhdCB3ZQotCQkgKiBnZXQg YmFjayBpbiBzeW5jLgotCQkgKgotCQkgKiBOQjogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlz aWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3ZQotCQkgKiBkb24ndCBuZWVkIHRvIGRp cnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVyLCBpZiBjaGVja3N1bXMgYXJlCi0JCSAqIGVuYWJs ZWQsIHdlIGRvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBkaXJ0aWVk Ci0JCSAqIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2Ug aXQgbWF5IGJlIGxvZ2dlZC4KLQkJICogR2l2ZW4gdGhhdCB0aGlzIHNpdHVhdGlvbiBzaG91bGQg b25seSBoYXBwZW4gaW4gcmFyZSBjYXNlcyBhZnRlciBhCi0JCSAqIGNyYXNoLCBpdCBpcyBub3Qg d29ydGggb3B0aW1pemluZy4KLQkJICovCi0JCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQlN YXJrQnVmZmVyRGlydHkoYnVmKTsKLQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZh Y3JlbC0+cmVsLCBibGtubywgYnVmLAotCQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCi0J CQkJCQkJCQkgICB2bWJ1ZmZlciwgcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkJ CQkJICAgZmxhZ3MpOwotCi0JCS8qCi0JCSAqIElmIHRoZSBwYWdlIHdhc24ndCBhbHJlYWR5IHNl dCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbiBpbiB0aGUKLQkJICogVk0sIGNvdW50IGl0 IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KLQkJICovCi0JCWlmICgob2xkX3ZtYml0cyAmIFZJ U0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCi0JCXsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zp c2libGVfcGFnZXMrKzsKLQkJCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCQl7Ci0JCQkJdmFj cmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKLQkJCQkqdm1fcGFnZV9mcm96ZW4g PSB0cnVlOwotCQkJfQotCQl9Ci0JCWVsc2UgaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1B UF9BTExfRlJPWkVOKSA9PSAwICYmCi0JCQkJIHByZXN1bHQuYWxsX2Zyb3plbikKKwkJdmFjcmVs LT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOworCQlpZiAoKHByZXN1bHQubmV3X3ZtYml0cyAmIFZJ U0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgIT0gMCkKIAkJewotCQkJdmFjcmVsLT52bV9uZXdfZnJv emVuX3BhZ2VzKys7CisJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwog CQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKIAkJfQogCX0KLQotCS8qCi0JICogQXMgb2YgUG9z dGdyZVNRTCA5LjIsIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBp ZiB0aGUKLQkgKiBwYWdlLWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2li bGUgdGhhdCB0aGUgYml0IGdvdAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0 X2Jsb2NrKCkgd2FzIGNhbGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIg bG9jayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWVs c2UgaWYgKGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSAmJiAhUGFnZUlzQWxsVmlzaWJsZShw YWdlKSAmJgotCQkJIHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyh2YWNyZWwtPnJlbCwgYmxrbm8s ICZ2bWJ1ZmZlcikgIT0gMCkKKwllbHNlIGlmICgocHJlc3VsdC5vbGRfdm1iaXRzICYgVklTSUJJ TElUWU1BUF9BTExfRlJPWkVOKSA9PSAwICYmCisJCQkgKHByZXN1bHQubmV3X3ZtYml0cyAmIFZJ U0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgIT0gMCkKIAl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJ CQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGlz IG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQgaW4g cmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJCQkJdmFjcmVsLT5yZWxuYW1lLCBibGtubykp KTsKLQotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1idWZmZXIs Ci0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKLQl9Ci0KLQkvKgotCSAqIEl0J3Mg cG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5vblJlbW92 YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKLQkgKiB3 cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0 byBldmVyeW9uZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQu IFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0 IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNlcnZhdGl2 ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFs bCwKLQkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhh dCB0aGUgdHVwbGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlv bmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMg Y29ycmVjdC4KLQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9u IGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAqLwotCWVs c2UgaWYgKHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKHBhZ2Up KQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JS VVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1h cmtlZCBhcyBhbGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkJCQl2 YWNyZWwtPnJlbG5hbWUsIGJsa25vKSkpOwotCi0JCVBhZ2VDbGVhckFsbFZpc2libGUocGFnZSk7 Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHZhY3JlbC0+ cmVsLCBibGtubywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsK LQl9Ci0KLQkvKgotCSAqIElmIHRoZSBhbGwtdmlzaWJsZSBwYWdlIGlzIGFsbC1mcm96ZW4gYnV0 IG5vdCBtYXJrZWQgYXMgc3VjaCB5ZXQsIG1hcmsKLQkgKiBpdCBhcyBhbGwtZnJvemVuLgotCSAq LwotCWVsc2UgaWYgKGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSAmJiBwcmVzdWx0LmFsbF9m cm96ZW4gJiYKLQkJCSAhVk1fQUxMX0ZST1pFTih2YWNyZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZl cikpCi0JewotCQl1aW50OAkJb2xkX3ZtYml0czsKLQotCQkvKgotCQkgKiBBdm9pZCByZWx5aW5n IG9uIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBhcyBhIHByb3h5IGZvciB0aGUKLQkJICog cGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBiaXQgYmVpbmcgc2V0LCBzaW5jZSBpdCBtaWdodCBo YXZlIGJlY29tZQotCQkgKiBzdGFsZSAtLSBldmVuIHdoZW4gYWxsX3Zpc2libGUgaXMgc2V0Ci0J CSAqLwotCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCi0JCXsKLQkJCVBhZ2VTZXRBbGxW aXNpYmxlKHBhZ2UpOwotCQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0JCX0KLQotCQkvKgotCQkg KiBTZXQgdGhlIHBhZ2UgYWxsLWZyb3plbiAoYW5kIGFsbC12aXNpYmxlKSBpbiB0aGUgVk0uCi0J CSAqCi0JCSAqIFdlIGNhbiBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklkIGFzIG91ciBjdXRvZmZf eGlkLCBzaW5jZSBhCi0JCSAqIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIHN1ZmZpY2llbnQgdG8g bWFrZSBldmVyeXRoaW5nIHNhZmUgZm9yIFJFRE8KLQkJICogd2FzIGxvZ2dlZCB3aGVuIHRoZSBw YWdlJ3MgdHVwbGVzIHdlcmUgZnJvemVuLgotCQkgKi8KLQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklk SXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQkJb2xkX3ZtYml0cyA9IHZp c2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAotCQkJCQkJCQkJICAgSW52 YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJCQkgICB2bWJ1ZmZlciwgSW52YWxpZFRyYW5zYWN0aW9u SWQsCi0JCQkJCQkJCQkgICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSAg IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0KLQkJLyoKLQkJICogVGhlIHBhZ2Ugd2FzIGxp a2VseSBhbHJlYWR5IHNldCBhbGwtdmlzaWJsZSBpbiB0aGUgVk0uIEhvd2V2ZXIsCi0JCSAqIHRo ZXJlIGlzIGEgc21hbGwgY2hhbmNlIHRoYXQgaXQgd2FzIG1vZGlmaWVkIHNvbWV0aW1lIGJldHdl ZW4KLQkJICogc2V0dGluZyBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gYW5kIGNoZWNraW5n IHRoZSB2aXNpYmlsaXR5Ci0JCSAqIGR1cmluZyBwcnVuaW5nLiBDaGVjayB0aGUgcmV0dXJuIHZh bHVlIG9mIG9sZF92bWJpdHMgYW55d2F5IHRvCi0JCSAqIGVuc3VyZSB0aGUgdmlzaWJpbGl0eSBt YXAgY291bnRlcnMgdXNlZCBmb3IgbG9nZ2luZyBhcmUgYWNjdXJhdGUuCi0JCSAqLwotCQlpZiAo KG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9PSAwKQotCQl7Ci0JCQl2 YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxl X2Zyb3plbl9wYWdlcysrOwotCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJfQotCi0JCS8q Ci0JCSAqIFdlIGFscmVhZHkgY2hlY2tlZCB0aGF0IHRoZSBwYWdlIHdhcyBub3Qgc2V0IGFsbC1m cm96ZW4gaW4gdGhlIFZNCi0JCSAqIGFib3ZlLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHRlc3QgdGhl IHZhbHVlIG9mIG9sZF92bWJpdHMuCi0JCSAqLwotCQllbHNlCi0JCXsKLQkJCXZhY3JlbC0+dm1f bmV3X2Zyb3plbl9wYWdlcysrOwotCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJfQorCQlB c3NlcnQoKHByZXN1bHQubmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9 IDApOworCQl2YWNyZWwtPnZtX25ld19mcm96ZW5fcGFnZXMrKzsKKwkJKnZtX3BhZ2VfZnJvemVu ID0gdHJ1ZTsKIAl9CiAKIAlyZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsKQEAgLTI5NTAsNiArMjc3 OCw3IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVt YmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdzLAog CQkJCQkJCQkgIGNvbmZsaWN0X3hpZCwKIAkJCQkJCQkJICBmYWxzZSwJLyogbm8gY2xlYW51cCBs b2NrIHJlcXVpcmVkICovCisJCQkJCQkJCSAgKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElE X0JJVFMpICE9IDAsCiAJCQkJCQkJCSAgUFJVTkVfVkFDVVVNX0NMRUFOVVAsCiAJCQkJCQkJCSAg TlVMTCwgMCwJLyogZnJvemVuICovCiAJCQkJCQkJCSAgTlVMTCwgMCwJLyogcmVkaXJlY3RlZCAq LwpAQCAtMzYzNCw3ICszNDYzLDcgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZh Y3JlbCkKICAqIFdyYXBwZXIgZm9yIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHdo aWNoIGNhbiBiZSB1c2VkIGZvcgogICogY2FsbGVycyB0aGF0IGV4cGVjdCBubyBMUF9ERUFEIG9u IHRoZSBwYWdlLgogICovCi1zdGF0aWMgYm9vbAorYm9vbAogaGVhcF9wYWdlX2lzX2FsbF92aXNp YmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVz dFhtaW4sCiAJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCA3NGE1 YzI0MDAyYi4uMmRlMzliYTBjZDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQyLDYgKzQyLDcgQEAK IC8qICJvcHRpb25zIiBmbGFnIGJpdHMgZm9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplICov CiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cJCSgxIDw8IDApCiAjZGVm aW5lIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUJCQkJKDEgPDwgMSkKKyNkZWZpbmUgSEVBUF9QQUdF X1BSVU5FX1VQREFURV9WSVMJCQkoMSA8PCAyKQogCiB0eXBlZGVmIHN0cnVjdCBCdWxrSW5zZXJ0 U3RhdGVEYXRhICpCdWxrSW5zZXJ0U3RhdGU7CiB0eXBlZGVmIHN0cnVjdCBHbG9iYWxWaXNTdGF0 ZSBHbG9iYWxWaXNTdGF0ZTsKQEAgLTIzOCw2ICsyMzksMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1 bmVGcmVlemVQYXJhbXMKIAlSZWxhdGlvbglyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIGNvbnRhaW5p bmcgYnVmZmVyIHRvIGJlIHBydW5lZCAqLwogCUJ1ZmZlcgkJYnVmZmVyOwkJCS8qIGJ1ZmZlciB0 byBiZSBwcnVuZWQgKi8KIAorCS8qCisJICoKKwkgKiB2bWJ1ZmZlciBpcyB0aGUgYnVmZmVyIHRo YXQgbXVzdCBhbHJlYWR5IGNvbnRhaW4gY29udGFpbiB0aGUgcmVxdWlyZWQKKwkgKiBibG9jayBv ZiB0aGUgdmlzaWJpbGl0eSBtYXAgaWYgd2UgYXJlIHRvIHVwZGF0ZSBpdC4gYmxrX2tub3duX2F2 IGlzIHRoZQorCSAqIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFwIGJsb2NrIGFzIG9mIHRo ZSBsYXN0IGNhbGwgdG8KKwkgKiBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soKS4KKwkgKi8K KwlCdWZmZXIJCXZtYnVmZmVyOworCWJvb2wJCWJsa19rbm93bl9hdjsKKwogCS8qCiAJICogVGhl IHJlYXNvbiBwcnVuaW5nIHdhcyBwZXJmb3JtZWQuICBJdCBpcyB1c2VkIHRvIHNldCB0aGUgV0FM IHJlY29yZAogCSAqIG9wY29kZSB3aGljaCBpcyB1c2VkIGZvciBkZWJ1Z2dpbmcgYW5kIGFuYWx5 c2lzIHB1cnBvc2VzLgpAQCAtMjUwLDggKzI2MSw5IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJl ZXplUGFyYW1zCiAJICogTUFSS19VTlVTRURfTk9XIGluZGljYXRlcyB0aGF0IGRlYWQgaXRlbXMg Y2FuIGJlIHNldCBMUF9VTlVTRUQgZHVyaW5nCiAJICogcHJ1bmluZy4KIAkgKgotCSAqIEZSRUVa RSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5kIHdpbGwgcmV0 dXJuCi0JICogJ2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIu CisJICogRlJFRVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzCisJ ICoKKwkgKiBVUERBVEVfVklTIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgc2V0IHRoZSBwYWdlJ3Mg c3RhdHVzIGluIHRoZSBWTS4KIAkgKi8KIAlpbnQJCQlvcHRpb25zOwogCkBAIC0yODQsMTkgKzI5 NiwxNSBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWludAkJCXJlY2VudGx5 X2RlYWRfdHVwbGVzOwogCiAJLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbmRp Y2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KLQkgKiBiaXRzIGluIHRoZSB2 aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UsIGFmdGVyIHBydW5pbmcuCi0J ICoKLQkgKiB2bV9jb25mbGljdF9ob3Jpem9uIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1 cGxlcyBvbiB0aGUgcGFnZS4gIFRoZQotCSAqIGNhbGxlciBjYW4gdXNlIGl0IGFzIHRoZSBjb25m bGljdCBob3Jpem9uIHdoZW4gc2V0dGluZyB0aGUgVk0gYml0cy4gIEl0Ci0JICogaXMgb25seSB2 YWxpZCBpZiB3ZSBmcm96ZSBzb21lIHR1cGxlcyAobmZyb3plbiA+IDApLCBhbmQgYWxsX2Zyb3pl biBpcwotCSAqIHRydWUuCisJICogb2xkX3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9mIHRoZSBhbGwt dmlzaWJsZSBhbmQgYWxsLWZyb3plbiBiaXRzIGluIHRoZQorCSAqIHZpc2liaWxpdHkgbWFwIGJl Zm9yZSB1cGRhdGluZyBpdCBkdXJpbmcgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICogbmV3X3Zt Yml0cyBhcmUgdGhlIHN0YXRlIG9mIHRob3NlIGJpdHMgYWZ0ZXIgcGhhc2UgSSBvZiB2YWN1dW1p bmcuCiAJICoKLQkgKiBUaGVzZSBhcmUgb25seSBzZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpF IG9wdGlvbiBpcyBzZXQuCisJICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBIRUFQX1BBR0Vf UFJVTkVfVVBEQVRFX1ZJUyBvcHRpb24gaXMgc2V0IGFuZAorCSAqIHdlIGhhdmUgYXR0ZW1wdGVk IHRvIHVwZGF0ZSB0aGUgVk0uCiAJICovCi0JYm9vbAkJYWxsX3Zpc2libGU7Ci0JYm9vbAkJYWxs X2Zyb3plbjsKLQlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b247CisJdWludDgJCW5l d192bWJpdHM7CisJdWludDgJCW9sZF92bWJpdHM7CiAKIAkvKgogCSAqIFdoZXRoZXIgb3Igbm90 IHRoZSBwYWdlIG1ha2VzIHJlbCB0cnVuY2F0aW9uIHVuc2FmZS4gIFRoaXMgaXMgc2V0IHRvCkBA IC00MjMsNiArNDMxLDcgQEAgZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShS ZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSAgQnVmZmVyIHZtYnVm ZmVyLCB1aW50OCB2bWZsYWdzLAogCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hp ZCwKIAkJCQkJCQkJCSAgYm9vbCBjbGVhbnVwX2xvY2ssCisJCQkJCQkJCQkgIGJvb2wgc2V0X3Bk X2FsbF92aXMsCiAJCQkJCQkJCQkgIFBydW5lUmVhc29uIHJlYXNvbiwKIAkJCQkJCQkJCSAgSGVh cFR1cGxlRnJlZXplICpmcm96ZW4sIGludCBuZnJvemVuLAogCQkJCQkJCQkJICBPZmZzZXROdW1i ZXIgKnJlZGlyZWN0ZWQsIGludCBucmVkaXJlY3RlZCwKQEAgLTQzMyw2ICs0NDIsMTIgQEAgZXh0 ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVm ZmVyIGJ1ZmZlciwKIGV4dGVybiB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsCiAJ CQkJCQkJY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0 cmF0ZWd5KTsKIAorZXh0ZXJuIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJ CQkJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNp YmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51 bSk7CisKIC8qIGluIGhlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYyAqLwogZXh0ZXJuIGJvb2wgSGVh cFR1cGxlU2F0aXNmaWVzVmlzaWJpbGl0eShIZWFwVHVwbGUgaHR1cCwgU25hcHNob3Qgc25hcHNo b3QsCiAJCQkJCQkJCQkJIEJ1ZmZlciBidWZmZXIpOwotLSAKMi40My4wCgo= --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="UTF-8"; name="v17-0005-Update-PruneState.all_-visible-frozen-earlier-in.patch" Content-Disposition: attachment; filename="v17-0005-Update-PruneState.all_-visible-frozen-earlier-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil3sjh4 RnJvbSBkNGE0YmUzZWVkMjU4NTNmYzFlYTg0ZWJjMmNiZTAyMjZhZmQ4MjNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDE1IFNlcCAyMDI1IDE2OjI1OjQ0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgMDUvMTVdIFVwZGF0ZSBQcnVuZVN0YXRlLmFsbF9bdmlzaWJsZXxmcm96ZW5dIGVh cmxpZXIgaW4KIHBydW5pbmcKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3Bs YWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRo ZSBwcnVuZS9mcmVlemUgcGF0aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNp YmxlIGFuZAphbGxfZnJvemVuIHdoZW4gZGVhZCBpdGVtcyBhcmUgcHJlc2VudC4gVGhpcyBhbGxv d3Mgb3Bwb3J0dW5pc3RpYwpmcmVlemluZyBpZiB0aGUgcGFnZSB3b3VsZCBvdGhlcndpc2UgYmUg ZnVsbHkgZnJvemVuLCBzaW5jZSB0aG9zZSBkZWFkCml0ZW1zIGFyZSBsYXRlciByZW1vdmVkIGlu IHZhY3V1beKAmXMgdGhpcmQgcGhhc2UuCgpIb3dldmVyLCBpZiBubyBmcmVlemluZyB3aWxsIGJl IGF0dGVtcHRlZCwgdGhlcmXigJlzIG5vIG5lZWQgdG8gZGVsYXkuCkNsZWFyaW5nIHRoZSBmbGFn cyBwcm9tcHRseSBhdm9pZHMgZXh0cmEgYm9va2tlZXBpbmcgaW4KaGVhcF9wcnVuZV91bmNoYW5n ZWRfbHBfbm9ybWFsKCkuIEF0IHByZXNlbnQgdGhpcyBoYXMgbm8gcnVudGltZSBlZmZlY3QKYmVj YXVzZSBhbGwgY2FsbGVycyB0aGF0IGNvbnNpZGVyIHNldHRpbmcgdGhlIFZNIGFsc28gYXR0ZW1w dCBmcmVlemluZywKYnV0IGZ1dHVyZSBjYWxsZXJzIChlLmcuIG9uLWFjY2VzcyBwcnVuaW5nKSBt YXkgd2FudCB0byBzZXQgdGhlIFZNCndpdGhvdXQgcHJlcGFyaW5nIGZyZWV6ZSBwbGFucy4KCldl IGFsc28gdXNlZCB0byBkZWZlciBjbGVhcmluZyBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB1 bnRpbCBhZnRlcgpjb21wdXRpbmcgdGhlIHZpc2liaWxpdHkgY3V0b2ZmIFhJRC4gQnkgZGV0ZXJt aW5pbmcgdGhlIGN1dG9mZiBlYXJsaWVyLAp3ZSBjYW4gdXBkYXRlIHRoZXNlIGZsYWdzIGltbWVk aWF0ZWx5IGFmdGVyIGRlY2lkaW5nIHdoZXRoZXIgdG8Kb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXpl LiBUaGlzIGlzIG5lY2Vzc2FyeSBpZiB3ZSB3YW50IHRvIHNldCB0aGUgVk0gaW4KdGhlIHNhbWUg V0FMIHJlY29yZCB0aGF0IHBydW5lcyBhbmQgZnJlZXplcyB0dXBsZXMgb24gdGhlIHBhZ2UuCgpX aGlsZSB3ZSBhcmUgYXQgaXQsIHVuc2V0IGFsbF9mcm96ZW4gd2hlbmV2ZXIgd2UgdW5zZXQgYWxs X3Zpc2libGUuClByZXZpb3VzbHkgd2UgY291bGQgb25seSB1c2UgYWxsX2Zyb3plbiBpbiBjb21i aW5hdGlvbiB3aXRoIGFsbF92aXNpYmxlCmFzIGFsbF9mcm96ZW4gd2FzIG5vdCB1bnNldCB3aGVu IG5vdCBhbGwtdmlzaWJsZSB0dXBsZXMgd2VyZSBlbmNvdW50ZXJlZC4KSXQgaXMgYmVzdCB0byBr ZWVwIHRoZW0gYm90aCB1cC10by1kYXRlIHRvIGF2b2lkIG1pc3Rha2VzIHdoZW4gdXNpbmcKYWxs X2Zyb3plbi4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgfCAxNDQg KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgfCAgIDkgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgNzYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA0NDIxNGE1 N2VjZC4uNTg5MmVkNWEwN2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0x MzgsMTUgKzEzOCwxMiBAQCB0eXBlZGVmIHN0cnVjdAogCSAqIGJpdHMuICBJdCBpcyBvbmx5IHZh bGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzLCBhbmQgYWxsX2Zyb3plbiBpcwogCSAqIHRydWUu CiAJICoKLQkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRl IExQX0RFQUQgaXRlbXMuICBUaGF0J3MKLQkgKiBjb252ZW5pZW50IGZvciBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZSgpLCB0byB1c2UgdGhlbSB0byBkZWNpZGUKLQkgKiB3aGV0aGVyIHRvIGZy ZWV6ZSB0aGUgcGFnZSBvciBub3QuICBUaGUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4KLQkg KiB2YWx1ZXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZSBM UF9ERUFEIGl0ZW1zIGF0Ci0JICogdGhlIGVuZC4KLQkgKgotCSAqIGFsbF9mcm96ZW4gc2hvdWxk IG9ubHkgYmUgY29uc2lkZXJlZCB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcyBhbHNvIHNldDsKLQkg KiB3ZSBkb24ndCBib3RoZXIgdG8gY2xlYXIgdGhlIGFsbF9mcm96ZW4gZmxhZyBldmVyeSB0aW1l IHdlIGNsZWFyIHRoZQotCSAqIGFsbF92aXNpYmxlIGZsYWcuCisJICogTk9URTogYWxsX3Zpc2li bGUgYW5kIGFsbF9mcm96ZW4gaW5pdGlhbGx5IGRvbid0IGluY2x1ZGUgTFBfREVBRCBpdGVtcy4K KwkgKiBUaGF0J3MgY29udmVuaWVudCBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSwg dG8gdXNlIHRoZW0gdG8KKwkgKiBkZWNpZGUgd2hldGhlciB0byBmcmVlemUgdGhlIHBhZ2Ugb3Ig bm90LiAgVGhlIGFsbF92aXNpYmxlIGFuZAorCSAqIGFsbF9mcm96ZW4gdmFsdWVzIHJldHVybmVk IHRvIHRoZSBjYWxsZXIgYXJlIGFkanVzdGVkIHRvIGluY2x1ZGUKKwkgKiBMUF9ERUFEIGl0ZW1z IGFmdGVyIHdlIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0byBvcHBvcnR1bmlzdGljYWxseQor CSAqIGZyZWV6ZS4KIAkgKi8KIAlib29sCQlhbGxfdmlzaWJsZTsKIAlib29sCQlhbGxfZnJvemVu OwpAQCAtMzA5LDcgKzMwNiw4IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIpCiAgKiBwcmUtZnJlZXplIGNoZWNrcy4KICAqCiAgKiBkb19wcnVu ZSwgZG9faGludF9wcnVuZSwgYW5kIGRpZF90dXBsZV9oaW50X2ZwaSBtdXN0IGFsbCBoYXZlIGJl ZW4gZGVjaWRlZAotICogYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKyAqIGJlZm9yZSBj YWxsaW5nIHRoaXMgZnVuY3Rpb24uICpmcnpfY29uZmxpY3RfaG9yaXpvbiBpcyBzZXQgdG8gdGhl IHNuYXBzaG90CisgKiBjb25mbGljdCBob3Jpem9uIHdlIGZvciB0aGUgV0FMIHJlY29yZCBzaG91 bGQgd2UgZGVjaWRlIHRvIGZyZWV6ZSB0dXBsZXMuCiAgKgogICogcHJzdGF0ZSBpcyBhbiBpbnB1 dC9vdXRwdXQgcGFyYW1ldGVyLgogICoKQEAgLTMyMSw3ICszMTksOCBAQCBoZWFwX3BhZ2Vfd2ls bF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCSAgYm9vbCBk aWRfdHVwbGVfaGludF9mcGksCiAJCQkJCSAgYm9vbCBkb19wcnVuZSwKIAkJCQkJICBib29sIGRv X2hpbnRfcHJ1bmUsCi0JCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSkKKwkJCQkJICBQcnVuZVN0 YXRlICpwcnN0YXRlLAorCQkJCQkgIFRyYW5zYWN0aW9uSWQgKmZyel9jb25mbGljdF9ob3Jpem9u KQogewogCWJvb2wJCWRvX2ZyZWV6ZSA9IGZhbHNlOwogCkBAIC0zNTgsOCArMzU3LDEwIEBAIGhl YXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJ ICogYW55bW9yZS4gIFRoZSBvcHBvcnR1bmlzdGljIGZyZWV6ZSBoZXVyaXN0aWMgbXVzdCBiZSBp bXByb3ZlZDsKIAkJICogaG93ZXZlciwgZm9yIG5vdywgdHJ5IHRvIGFwcHJveGltYXRlIHRoZSBv bGQgbG9naWMuCiAJCSAqLwotCQlpZiAocHJzdGF0ZS0+YWxsX3Zpc2libGUgJiYgcHJzdGF0ZS0+ YWxsX2Zyb3plbiAmJiBwcnN0YXRlLT5uZnJvemVuID4gMCkKKwkJaWYgKHByc3RhdGUtPmFsbF9m cm96ZW4gJiYgcHJzdGF0ZS0+bmZyb3plbiA+IDApCiAJCXsKKwkJCUFzc2VydChwcnN0YXRlLT5h bGxfdmlzaWJsZSk7CisKIAkJCS8qCiAJCQkgKiBGcmVlemluZyB3b3VsZCBtYWtlIHRoZSBwYWdl IGFsbC1mcm96ZW4uICBIYXZlIGFscmVhZHkgZW1pdHRlZAogCQkJICogYW4gRlBJIG9yIHdpbGwg ZG8gc28gYW55d2F5PwpAQCAtMzg5LDYgKzM5MCwyMiBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCSAqIGNyaXRpY2FsIHNlY3Rpb24u CiAJCSAqLwogCQloZWFwX3ByZV9mcmVlemVfY2hlY2tzKGJ1ZmZlciwgcHJzdGF0ZS0+ZnJvemVu LCBwcnN0YXRlLT5uZnJvemVuKTsKKworCQkvKgorCQkgKiBDYWxjdWxhdGUgd2hhdCB0aGUgc25h cHNob3QgY29uZmxpY3QgaG9yaXpvbiBzaG91bGQgYmUgZm9yIGEgcmVjb3JkCisJCSAqIGZyZWV6 aW5nIHR1cGxlcy4gV2UgY2FuIHVzZSB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGFzIG91ciBj dXRvZmYKKwkJICogZm9yIGNvbmZsaWN0cyB3aGVuIHRoZSB3aG9sZSBwYWdlIGlzIGVsaWdpYmxl IHRvIGJlY29tZSBhbGwtZnJvemVuCisJCSAqIGluIHRoZSBWTSBvbmNlIHdlJ3JlIGRvbmUgd2l0 aCBpdC4gIE90aGVyd2lzZSB3ZSBnZW5lcmF0ZSBhCisJCSAqIGNvbnNlcnZhdGl2ZSBjdXRvZmYg Ynkgc3RlcHBpbmcgYmFjayBmcm9tIE9sZGVzdFhtaW4uCisJCSAqLworCQlpZiAocHJzdGF0ZS0+ YWxsX2Zyb3plbikKKwkJCSpmcnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUtPnZpc2liaWxp dHlfY3V0b2ZmX3hpZDsKKwkJZWxzZQorCQl7CisJCQkvKiBBdm9pZHMgZmFsc2UgY29uZmxpY3Rz IHdoZW4gaG90X3N0YW5kYnlfZmVlZGJhY2sgaW4gdXNlICovCisJCQkqZnJ6X2NvbmZsaWN0X2hv cml6b24gPSBwcnN0YXRlLT5jdXRvZmZzLT5PbGRlc3RYbWluOworCQkJVHJhbnNhY3Rpb25JZFJl dHJlYXQoKmZyel9jb25mbGljdF9ob3Jpem9uKTsKKwkJfQogCX0KIAllbHNlIGlmIChwcnN0YXRl LT5uZnJvemVuID4gMCkKIAl7CkBAIC00MzMsMTAgKzQ1MCwxMSBAQCBoZWFwX3BhZ2Vfd2lsbF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAgKiBjb25zaWRlcmVkIGFk dmFudGFnZW91cyBmb3Igb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2UgdG8gZG8gc28gbm93LiAg VGhlCiAgKiAncGFyYW1zLmN1dG9mZnMnLCAncHJlc3VsdCcsICduZXdfcmVsZnJvemVuX3hpZCcg YW5kICduZXdfcmVsbWluX214aWQnCiAgKiBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIHdoZW4gZnJl ZXppbmcuICBXaGVuIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcwotICogcGFzc2VkLCB3ZSBh bHNvIHNldCBwcmVzdWx0LT5hbGxfdmlzaWJsZSBhbmQgcHJlc3VsdC0+YWxsX2Zyb3plbiBvbiBl eGl0LAotICogdG8gaW5kaWNhdGUgaWYgdGhlIFZNIGJpdHMgY2FuIGJlIHNldC4gIFRoZXkgYXJl IGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbgotICogdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlv biBpcyBub3QgcGFzc2VkLCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seQotICogY2FsbGVycyB0 aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KKyAqIHBhc3NlZCwgd2UgYWxz byBzZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUgYW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gYWZ0ZXIK KyAqIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRvIG9wcG9ydW5pc3RpY2FsbHkgZnJlZXpl LCB0byBpbmRpY2F0ZSBpZiB0aGUKKyAqIFZNIGJpdHMgY2FuIGJlIHNldC4gIFRoZXkgYXJlIGFs d2F5cyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUKKyAqIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBp cyBub3QgcGFzc2VkLCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seSBjYWxsZXJzCisgKiB0aGF0 IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KICAqCiAgKiBwcmVzdWx0IGNvbnRh aW5zIG91dHB1dCBwYXJhbWV0ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBzdWNoIGFzIHRoZSBudW1i ZXIgb2YKICAqIHR1cGxlcyByZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBkZWFkIGl0ZW1zIG9u IHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuCkBAIC00NzIsNiArNDkwLDcgQEAgaGVhcF9wYWdlX3By dW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAlib29sCQlkb19oaW50 X3BydW5lOwogCWJvb2wJCWRpZF90dXBsZV9oaW50X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9 IHBnV2FsVXNhZ2Uud2FsX2ZwaTsKKwlUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9u ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKiBDb3B5IHBhcmFtZXRlcnMgdG8gcHJzdGF0 ZSAqLwogCXByc3RhdGUudmlzdGVzdCA9IHBhcmFtcy0+dmlzdGVzdDsKQEAgLTU0MSwxMCArNTYw LDEwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJh bXMsCiAJICogYXJlIHR1cGxlcyBwcmVzZW50IHRoYXQgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5 b25lIG9yIGlmIHRoZXJlIGFyZQogCSAqIGRlYWQgdHVwbGVzIHdoaWNoIGFyZSBub3QgeWV0IHJl bW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVwbGVzIHdoaWNoCiAJICogd2lsbCBiZSByZW1vdmVk IGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3VsZCBub3QgcHJlY2x1ZGUgdXMgZnJvbQotCSAq IG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBub3Qg Y2xlYXIKLQkgKiBhbGxfdmlzaWJsZSB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4 IHRoYXQgYXQgdGhlIGVuZCBvZiB0aGUKLQkgKiBmdW5jdGlvbiwgd2hlbiB3ZSByZXR1cm4gdGhl IHZhbHVlIHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlcgotCSAqIGRvZXNuJ3Qgc2V0 IHRoZSBWTSBiaXQgaW5jb3JyZWN0bHkuCisJICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXppbmcu ICBCZWNhdXNlIG9mIHRoYXQsIHdlIGRvIG5vdCBpbW1lZGlhdGVseQorCSAqIGNsZWFyIGFsbF92 aXNpYmxlIHdoZW4gd2Ugc2VlIExQX0RFQUQgaXRlbXMuICBXZSBmaXggdGhhdCBhZnRlcgorCSAq IHNjYW5uaW5nIHRoZSBsaW5lIHBvaW50ZXJzLCBiZWZvcmUgd2UgcmV0dXJuIHRoZSB2YWx1ZSB0 byB0aGUgY2FsbGVyLAorCSAqIHNvIHRoYXQgdGhlIGNhbGxlciBkb2Vzbid0IHNldCB0aGUgVk0g Yml0IGluY29ycmVjdGx5LgogCSAqLwogCWlmIChwcnN0YXRlLmF0dGVtcHRfZnJlZXplKQogCXsK QEAgLTc3OSw4ICs3OTgsMjYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVl emVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCQkJCSAgZGlkX3R1cGxlX2hpbnRfZnBpLAogCQkJCQkJ CQkJICBkb19wcnVuZSwKIAkJCQkJCQkJCSAgZG9faGludF9wcnVuZSwKLQkJCQkJCQkJCSAgJnBy c3RhdGUpOworCQkJCQkJCQkJICAmcHJzdGF0ZSwKKwkJCQkJCQkJCSAgJmZyel9jb25mbGljdF9o b3Jpem9uKTsKIAorCS8qCisJICogV2hpbGUgc2Nhbm5pbmcgdGhlIGxpbmUgcG9pbnRlcnMsIHdl IGRpZCBub3QgY2xlYXIKKwkgKiBhbGxfdmlzaWJsZS9hbGxfZnJvemVuIHdoZW4gZW5jb3VudGVy aW5nIExQX0RFQUQgaXRlbXMgYmVjYXVzZSB3ZQorCSAqIHdhbnRlZCB0aGUgZGVjaXNpb24gd2hl dGhlciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdlIHRvIGJlIHVuYWZmZWN0ZWQKKwkgKiBieSB0 aGUgc2hvcnQtdGVybSBwcmVzZW5jZSBvZiBMUF9ERUFEIGl0ZW1zLiAgVGhlc2UgTFBfREVBRCBp dGVtcyBhcmUKKwkgKiBlZmZlY3RpdmVseSBhc3N1bWVkIHRvIGJlIExQX1VOVVNFRCBpdGVtcyBp biB0aGUgbWFraW5nLiAgSXQgZG9lc24ndAorCSAqIG1hdHRlciB3aGljaCB2YWN1dW0gaGVhcCBw YXNzIChpbml0aWFsIHBhc3Mgb3IgZmluYWwgcGFzcykgZW5kcyB1cAorCSAqIHNldHRpbmcgdGhl IHBhZ2UgYWxsLWZyb3plbiwgYXMgbG9uZyBhcyB0aGUgb25nb2luZyBWQUNVVU0gZG9lcyBpdC4K KwkgKgorCSAqIE5vdyB0aGF0IHdlIGZpbmlzaGVkIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90 IHRvIGZyZWV6ZSB0aGUgcGFnZSwKKwkgKiB1cGRhdGUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96 ZW4gc28gdGhhdCB0aGV5IHJlZmxlY3QgdGhlIHRydWUgc3RhdGUKKwkgKiBvZiB0aGUgcGFnZSBm b3Igc2V0dGluZyBQRF9BTExfVklTSUJMRSBhbmQgVk0gYml0cy4KKwkgKi8KKwlpZiAocHJzdGF0 ZS5scGRlYWRfaXRlbXMgPiAwKQorCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxf ZnJvemVuID0gZmFsc2U7CisKKwlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fCBwcnN0YXRl LmFsbF92aXNpYmxlKTsKIAkvKiBBbnkgZXJyb3Igd2hpbGUgYXBwbHlpbmcgdGhlIGNoYW5nZXMg aXMgY3JpdGljYWwgKi8KIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIApAQCAtODM5LDI3ICs4NzYs OCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1z LAogCQkJICogb24gdGhlIHN0YW5kYnkgd2l0aCB4aWRzIG9sZGVyIHRoYW4gdGhlIHlvdW5nZXN0 IHR1cGxlIHRoaXMKIAkJCSAqIHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgogCQkJ ICovCi0JCQlUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CiAJCQlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKIAotCQkJLyoKLQkJCSAq IFdlIGNhbiB1c2UgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBhcyBvdXIgY3V0b2ZmIGZvcgot CQkJICogY29uZmxpY3RzIHdoZW4gdGhlIHdob2xlIHBhZ2UgaXMgZWxpZ2libGUgdG8gYmVjb21l IGFsbC1mcm96ZW4KLQkJCSAqIGluIHRoZSBWTSBvbmNlIHdlJ3JlIGRvbmUgd2l0aCBpdC4gIE90 aGVyd2lzZSB3ZSBnZW5lcmF0ZSBhCi0JCQkgKiBjb25zZXJ2YXRpdmUgY3V0b2ZmIGJ5IHN0ZXBw aW5nIGJhY2sgZnJvbSBPbGRlc3RYbWluLgotCQkJICovCi0JCQlpZiAoZG9fZnJlZXplKQotCQkJ ewotCQkJCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYmIHByc3RhdGUuYWxsX2Zyb3plbikKLQkJ CQkJZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsK LQkJCQllbHNlCi0JCQkJewotCQkJCQkvKiBBdm9pZHMgZmFsc2UgY29uZmxpY3RzIHdoZW4gaG90 X3N0YW5kYnlfZmVlZGJhY2sgaW4gdXNlICovCi0JCQkJCWZyel9jb25mbGljdF9ob3Jpem9uID0g cHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluOwotCQkJCQlUcmFuc2FjdGlvbklkUmV0cmVhdChm cnpfY29uZmxpY3RfaG9yaXpvbik7Ci0JCQkJfQotCQkJfQotCiAJCQlpZiAoVHJhbnNhY3Rpb25J ZEZvbGxvd3MoZnJ6X2NvbmZsaWN0X2hvcml6b24sIHByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVk KSkKIAkJCQljb25mbGljdF94aWQgPSBmcnpfY29uZmxpY3RfaG9yaXpvbjsKIAkJCWVsc2UKQEAg LTg4NSwzMCArOTAzLDggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQ YXJhbXMgKnBhcmFtcywKIAlwcmVzdWx0LT5uZnJvemVuID0gcHJzdGF0ZS5uZnJvemVuOwogCXBy ZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1cGxlczsKIAlwcmVzdWx0LT5yZWNl bnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlfZGVhZF90dXBsZXM7Ci0KLQkvKgot CSAqIEl0IHdhcyBjb252ZW5pZW50IHRvIGlnbm9yZSBMUF9ERUFEIGl0ZW1zIGluIGFsbF92aXNp YmxlIGVhcmxpZXIgb24gdG8KLQkgKiBtYWtlIHRoZSBjaG9pY2Ugb2Ygd2hldGhlciBvciBub3Qg dG8gZnJlZXplIHRoZSBwYWdlIHVuYWZmZWN0ZWQgYnkgdGhlCi0JICogc2hvcnQtdGVybSBwcmVz ZW5jZSBvZiBMUF9ERUFEIGl0ZW1zLiAgVGhlc2UgTFBfREVBRCBpdGVtcyB3ZXJlCi0JICogZWZm ZWN0aXZlbHkgYXNzdW1lZCB0byBiZSBMUF9VTlVTRUQgaXRlbXMgaW4gdGhlIG1ha2luZy4gIEl0 IGRvZXNuJ3QKLQkgKiBtYXR0ZXIgd2hpY2ggdmFjdXVtIGhlYXAgcGFzcyAoaW5pdGlhbCBwYXNz IG9yIGZpbmFsIHBhc3MpIGVuZHMgdXAKLQkgKiBzZXR0aW5nIHRoZSBwYWdlIGFsbC1mcm96ZW4s IGFzIGxvbmcgYXMgdGhlIG9uZ29pbmcgVkFDVVVNIGRvZXMgaXQuCi0JICoKLQkgKiBOb3cgdGhh dCBmcmVlemluZyBoYXMgYmVlbiBmaW5hbGl6ZWQsIHVuc2V0IGFsbF92aXNpYmxlIGlmIHRoZXJl IGFyZQotCSAqIGFueSBMUF9ERUFEIGl0ZW1zIG9uIHRoZSBwYWdlLiAgSXQgbmVlZHMgdG8gcmVm bGVjdCB0aGUgcHJlc2VudCBzdGF0ZQotCSAqIG9mIHRoZSBwYWdlLCBhcyBleHBlY3RlZCBieSBv dXIgY2FsbGVyLgotCSAqLwotCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYmIHByc3RhdGUubHBk ZWFkX2l0ZW1zID09IDApCi0JewotCQlwcmVzdWx0LT5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxs X3Zpc2libGU7Ci0JCXByZXN1bHQtPmFsbF9mcm96ZW4gPSBwcnN0YXRlLmFsbF9mcm96ZW47Ci0J fQotCWVsc2UKLQl7Ci0JCXByZXN1bHQtPmFsbF92aXNpYmxlID0gZmFsc2U7Ci0JCXByZXN1bHQt PmFsbF9mcm96ZW4gPSBmYWxzZTsKLQl9Ci0KKwlwcmVzdWx0LT5hbGxfdmlzaWJsZSA9IHByc3Rh dGUuYWxsX3Zpc2libGU7CisJcHJlc3VsdC0+YWxsX2Zyb3plbiA9IHByc3RhdGUuYWxsX2Zyb3pl bjsKIAlwcmVzdWx0LT5oYXN0dXAgPSBwcnN0YXRlLmhhc3R1cDsKIAogCS8qCkBAIC0xMjg4LDgg KzEyODQsMTEgQEAgaGVhcF9wcnVuZV9yZWNvcmRfZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBP ZmZzZXROdW1iZXIgb2ZmbnVtLAogCiAJLyoKIAkgKiBEZWxpYmVyYXRlbHkgZGVsYXkgdW5zZXR0 aW5nIGFsbF92aXNpYmxlIHVudGlsIGxhdGVyIGR1cmluZyBwcnVuaW5nLgotCSAqIFJlbW92YWJs ZSBkZWFkIHR1cGxlcyBzaG91bGRuJ3QgcHJlY2x1ZGUgZnJlZXppbmcgdGhlIHBhZ2UuCisJICog UmVtb3ZhYmxlIGRlYWQgdHVwbGVzIHNob3VsZG4ndCBwcmVjbHVkZSBmcmVlemluZyB0aGUgcGFn ZS4gSWYgd2Ugd29uJ3QKKwkgKiBhdHRlbXB0IGZyZWV6aW5nLCBqdXN0IHVuc2V0IGFsbC12aXNp YmxlIG5vdywgdGhvdWdoLgogCSAqLworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCisJ CXByc3RhdGUtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJ LyogUmVjb3JkIHRoZSBkZWFkIG9mZnNldCBmb3IgdmFjdXVtICovCiAJcHJzdGF0ZS0+ZGVhZG9m ZnNldHNbcHJzdGF0ZS0+bHBkZWFkX2l0ZW1zKytdID0gb2ZmbnVtOwpAQCAtMTQxNSw3ICsxNDE0 LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBy dW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAogCQkJCWlmICghSGVhcFR1cGxlSGVhZGVy WG1pbkNvbW1pdHRlZChodHVwKSkKIAkJCQl7Ci0JCQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0g ZmFsc2U7CisJCQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9 IGZhbHNlOwogCQkJCQlicmVhazsKIAkJCQl9CiAKQEAgLTE0MzcsNyArMTQzNiw3IEBAIGhlYXBf cHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpw cnN0YXRlLCBPZmZzZXROdW1iCiAJCQkJQXNzZXJ0KHByc3RhdGUtPmN1dG9mZnMpOwogCQkJCWlm ICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4sIHByc3RhdGUtPmN1dG9mZnMtPk9sZGVzdFht aW4pKQogCQkJCXsKLQkJCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCQkJcHJz dGF0ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAJCQkJCWJy ZWFrOwogCQkJCX0KIApAQCAtMTQ1MCw3ICsxNDQ5LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5j aGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51 bWIKIAogCQljYXNlIEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEOgogCQkJcHJzdGF0ZS0+cmVjZW50 bHlfZGVhZF90dXBsZXMrKzsKLQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCQlw cnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCQkJ LyoKIAkJCSAqIFRoaXMgdHVwbGUgd2lsbCBzb29uIGJlY29tZSBERUFELiAgVXBkYXRlIHRoZSBo aW50IGZpZWxkIHNvCkBAIC0xNDY5LDcgKzE0NjgsNyBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNo YW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVt YgogCQkJICogYXNzdW1wdGlvbiBpcyBhIGJpdCBzaGFreSwgYnV0IGl0IGlzIHdoYXQgYWNxdWly ZV9zYW1wbGVfcm93cygpCiAJCQkgKiBkb2VzLCBzbyBiZSBjb25zaXN0ZW50LgogCQkJICovCi0J CQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUg PSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJCQkgKiBJZiB3ZSB3YW50 ZWQgdG8gb3B0aW1pemUgZm9yIGFib3J0cywgd2UgbWlnaHQgY29uc2lkZXIgbWFya2luZwpAQCAt MTQ4Nyw3ICsxNDg2LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQ YWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCSAqIHdpbGwgY29t bWl0IGFuZCB1cGRhdGUgdGhlIGNvdW50ZXJzIGFmdGVyIHdlIHJlcG9ydC4KIAkJCSAqLwogCQkJ cHJzdGF0ZS0+bGl2ZV90dXBsZXMrKzsKLQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7 CisJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsK IAogCQkJLyoKIAkJCSAqIFRoaXMgdHVwbGUgbWF5IHNvb24gYmVjb21lIERFQUQuICBVcGRhdGUg dGhlIGhpbnQgZmllbGQgc28gdGhhdApAQCAtMTU1NSw4ICsxNTU0LDExIEBAIGhlYXBfcHJ1bmVf cmVjb3JkX3VuY2hhbmdlZF9scF9kZWFkKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwg T2Zmc2V0TnVtYmVyCiAJICogU2ltaWxhcmx5LCBkb24ndCB1bnNldCBhbGxfdmlzaWJsZSB1bnRp bCBsYXRlciwgYXQgdGhlIGVuZCBvZgogCSAqIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCku ICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gYXR0ZW1wdCB0byBmcmVlemUKIAkgKiB0aGUgcGFnZSBh ZnRlciBwcnVuaW5nLiAgQXMgbG9uZyBhcyB3ZSB1bnNldCBpdCBiZWZvcmUgdXBkYXRpbmcgdGhl Ci0JICogdmlzaWJpbGl0eSBtYXAsIHRoaXMgd2lsbCBiZSBjb3JyZWN0LgorCSAqIHZpc2liaWxp dHkgbWFwLCB0aGlzIHdpbGwgYmUgY29ycmVjdC4gSWYgd2Ugd29uJ3QgYXR0ZW1wdCBmcmVlemlu ZywKKwkgKiB0aG91Z2gsIGp1c3QgdW5zZXQgYWxsLXZpc2libGUgbm93LgogCSAqLworCWlmICgh cHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gcHJzdGF0 ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJLyogUmVjb3JkIHRoZSBkZWFkIG9mZnNldCBmb3Ig dmFjdXVtICovCiAJcHJzdGF0ZS0+ZGVhZG9mZnNldHNbcHJzdGF0ZS0+bHBkZWFkX2l0ZW1zKytd ID0gb2ZmbnVtOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGIyNTA1MGQ2 NzczLi41NmEwMjg2NjYyYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAt MjAxMiw3ICsyMDEyLDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkg KiBhZ3JlZW1lbnQgd2l0aCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1c2luZyBhbiBhc3Nl cnRpb24uCiAJICovCiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCS8qIE5vdGUgdGhhdCBh bGxfZnJvemVuIHZhbHVlIGRvZXMgbm90IG1hdHRlciB3aGVuICFhbGxfdmlzaWJsZSAqLwogCWlm IChwcmVzdWx0LmFsbF92aXNpYmxlKQogCXsKIAkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7 CkBAIC0yMDY1LDYgKzIwNjQsNyBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVs LAogCSpoYXNfbHBkZWFkX2l0ZW1zID0gKHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCk7CiAKIAlB c3NlcnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVhZF9pdGVtcykpOworCUFz c2VydCghcHJlc3VsdC5hbGxfZnJvemVuIHx8IHByZXN1bHQuYWxsX3Zpc2libGUpOwogCiAJLyoK IAkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRp b24gZnJvbSB0aGUgVk0gKGFzCkBAIC0yMTcwLDExICsyMTcwLDEwIEBAIGxhenlfc2Nhbl9wcnVu ZShMVlJlbFN0YXRlICp2YWNyZWwsCiAKIAkvKgogCSAqIElmIHRoZSBhbGwtdmlzaWJsZSBwYWdl IGlzIGFsbC1mcm96ZW4gYnV0IG5vdCBtYXJrZWQgYXMgc3VjaCB5ZXQsIG1hcmsKLQkgKiBpdCBh cyBhbGwtZnJvemVuLiAgTm90ZSB0aGF0IGFsbF9mcm96ZW4gaXMgb25seSB2YWxpZCBpZiBhbGxf dmlzaWJsZSBpcwotCSAqIHRydWUsIHNvIHdlIG11c3QgY2hlY2sgYm90aCBhbGxfdmlzaWJsZSBh bmQgYWxsX2Zyb3plbi4KKwkgKiBpdCBhcyBhbGwtZnJvemVuLgogCSAqLwotCWVsc2UgaWYgKGFs bF92aXNpYmxlX2FjY29yZGluZ190b192bSAmJiBwcmVzdWx0LmFsbF92aXNpYmxlICYmCi0JCQkg cHJlc3VsdC5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHZhY3JlbC0+cmVsLCBibGtubywg JnZtYnVmZmVyKSkKKwllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJl c3VsdC5hbGxfZnJvemVuICYmCisJCQkgIVZNX0FMTF9GUk9aRU4odmFjcmVsLT5yZWwsIGJsa25v LCAmdm1idWZmZXIpKQogCXsKIAkJdWludDgJCW9sZF92bWJpdHM7CiAKLS0gCjIuNDMuMAoK --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="UTF-8"; name="v17-0010-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Disposition: attachment; filename="v17-0010-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil3sjq9 RnJvbSAwNzhjMWE2MzZmMjA4ZGVlODc4ZmE0ZDc4YjZlMDUwMDY1MTMwMDhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgMTAvMTVdIFJlbmFtZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSB0bwog R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhi aXQKClRoZSBmdW5jdGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIg YSB0dXBsZeKAmXMgeG1heCBpcwp2aXNpYmxlIHRvIGFsbCB0cmFuc2FjdGlvbnMgKGFuZCB0aHVz IHJlbW92YWJsZSkuIFVwY29taW5nIGNoYW5nZXMgd2lsbAphbHNvIHVzZSBpdCB0byB0ZXN0IHdo ZXRoZXIgYSB0dXBsZeKAmXMgeG1pbiBpcyB2aXNpYmxlIHRvIGFsbCB0bwpkZWNpZGUgaWYgYSBw YWdlIGNhbiBiZSBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLgoKVGhl IG5ldyBuYW1lLCBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSwgYmV0dGVyIHJlZmxlY3RzIHRo aXMgYnJvYWRlcgpwdXJwb3NlLgoKUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtp cmlsbEBnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2li aWxpdHkuYyB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg ICAgICAgICB8IDE2ICsrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qv c3BndmFjdXVtLmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2Fy cmF5LmMgICAgICAgICB8IDE3ICsrKysrKysrLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9z bmFwbWdyLmggICAgICAgICAgICAgICAgIHwgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAyMiBp bnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3Zpc2liaWxpdHkuYwppbmRleCAwNWY2OTQ2ZmU2MC4uNGViYzhhYmRiZWIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTQ0Nyw3ICsx NDQ3LDcgQEAgSGVhcFR1cGxlU2F0aXNmaWVzTm9uVmFjdXVtYWJsZShIZWFwVHVwbGUgaHR1cCwg U25hcHNob3Qgc25hcHNob3QsCiAJewogCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVh ZF9hZnRlcikpOwogCi0JCWlmIChHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc25hcHNob3Qt PnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHNu YXBzaG90LT52aXN0ZXN0LCBkZWFkX2FmdGVyKSkKIAkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOwog CX0KIAllbHNlCkBAIC0xNTEyLDggKzE1MTIsOCBAQCBIZWFwVHVwbGVJc1N1cmVseURlYWQoSGVh cFR1cGxlIGh0dXAsIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0KQogCQlyZXR1cm4gZmFsc2U7CiAK IAkvKiBEZWxldGVyIGNvbW1pdHRlZCwgc28gdHVwbGUgaXMgZGVhZCBpZiB0aGUgWElEIGlzIG9s ZCBlbm91Z2guICovCi0JcmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0 LAotCQkJCQkJCQkJICAgSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heCh0dXBsZSkpOworCXJldHVy biBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwodmlzdGVzdCwKKwkJCQkJCQkJCUhlYXBUdXBsZUhl YWRlckdldFJhd1htYXgodHVwbGUpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMKaW5kZXggMjFiMjRmMzk5MmUuLmYxZTEzN2EzODdkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYwpAQCAtMjMzLDcgKzIzMyw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJICovCiAJdmlzdGVzdCA9IEdsb2JhbFZp c1Rlc3RGb3IocmVsYXRpb24pOwogCi0JaWYgKCFHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQo dmlzdGVzdCwgcHJ1bmVfeGlkKSkKKwlpZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0 ZXN0LCBwcnVuZV94aWQpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtNzI4LDkgKzcyOCw5IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICog RGV0ZXJtaW5pbmcgSFRTViBvbmx5IG9uY2UgZm9yIGVhY2ggdHVwbGUgaXMgcmVxdWlyZWQgZm9y IGNvcnJlY3RuZXNzLAogCSAqIHRvIGRlYWwgd2l0aCBjYXNlcyB3aGVyZSBydW5uaW5nIEhUU1Yg dHdpY2UgY291bGQgcmVzdWx0IGluIGRpZmZlcmVudAogCSAqIHJlc3VsdHMuICBGb3IgZXhhbXBs ZSwgUkVDRU5UTFlfREVBRCBjYW4gdHVybiB0byBERUFEIGlmIGFub3RoZXIKLQkgKiBjaGVja2Vk IGl0ZW0gY2F1c2VzIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSB0byB1cGRhdGUg dGhlCi0JICogaG9yaXpvbiwgb3IgSU5TRVJUX0lOX1BST0dSRVNTIGNhbiBjaGFuZ2UgdG8gREVB RCBpZiB0aGUgaW5zZXJ0aW5nCi0JICogdHJhbnNhY3Rpb24gYWJvcnRzLgorCSAqIGNoZWNrZWQg aXRlbSBjYXVzZXMgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkgdG8gdXBkYXRlIHRoZSBob3Jp em9uLAorCSAqIG9yIElOU0VSVF9JTl9QUk9HUkVTUyBjYW4gY2hhbmdlIHRvIERFQUQgaWYgdGhl IGluc2VydGluZyB0cmFuc2FjdGlvbgorCSAqIGFib3J0cy4KIAkgKgogCSAqIEl0J3MgYWxzbyBn b29kIGZvciBwZXJmb3JtYW5jZS4gTW9zdCBjb21tb25seSB0dXBsZXMgd2l0aGluIGEgcGFnZSBh cmUKIAkgKiBzdG9yZWQgYXQgZGVjcmVhc2luZyBvZmZzZXRzICh3aGlsZSB0aGUgaXRlbXMgYXJl IHN0b3JlZCBhdCBpbmNyZWFzaW5nCkBAIC0xMTUzLDExICsxMTUzLDExIEBAIGhlYXBfcHJ1bmVf c2F0aXNmaWVzX3ZhY3V1bShQcnVuZVN0YXRlICpwcnN0YXRlLCBIZWFwVHVwbGUgdHVwLCBCdWZm ZXIgYnVmZmVyKQogCSAqIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgdHVwbGUgaXMgY29u c2lkZXJlZCBkZWFkIHdoZW4gY29tcGFyZWQKIAkgKiB3aXRoIHRoZSBwcm92aWRlZCBHbG9iYWxW aXNTdGF0ZS4gT24tYWNjZXNzIHBydW5pbmcgZG9lcyBub3QgcHJvdmlkZQogCSAqIFZhY3V1bUN1 dG9mZnMuIEFuZCBmb3IgdmFjdXVtLCBldmVuIGlmIHRoZSB0dXBsZSdzIHhtYXggaXMgbm90IG9s ZGVyCi0JICogdGhhbiBPbGRlc3RYbWluLCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSBj b3VsZCBmaW5kIHRoZSByb3cgZGVhZAotCSAqIGlmIHRoZSBHbG9iYWxWaXNTdGF0ZSBoYXMgYmVl biB1cGRhdGVkIHNpbmNlIHRoZSBiZWdpbm5pbmcgb2YgdmFjdXVtaW5nCisJICogdGhhbiBPbGRl c3RYbWluLCBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSBjb3VsZCBmaW5kIHRoZSByb3cgZGVh ZCBpZgorCSAqIHRoZSBHbG9iYWxWaXNTdGF0ZSBoYXMgYmVlbiB1cGRhdGVkIHNpbmNlIHRoZSBi ZWdpbm5pbmcgb2YgdmFjdXVtaW5nCiAJICogdGhlIHJlbGF0aW9uLgogCSAqLwotCWlmIChHbG9i YWxWaXNUZXN0SXNSZW1vdmFibGVYaWQocHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikpCisJ aWYgKEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLT52aXN0ZXN0LCBkZWFkX2FmdGVy KSkKIAkJcmV0dXJuIEhFQVBUVVBMRV9ERUFEOwogCiAJcmV0dXJuIHJlczsKQEAgLTE2MTUsNyAr MTYxNSw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdl LCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkJLyoKIAkJCQkgKiBGb3Igbm93 IGFsd2F5cyB1c2UgcHJzdGF0ZS0+Y3V0b2ZmcyBmb3IgdGhpcyB0ZXN0LCBiZWNhdXNlCiAJCQkJ ICogd2Ugb25seSB1cGRhdGUgJ2FsbF92aXNpYmxlJyB3aGVuIGZyZWV6aW5nIGlzIHJlcXVlc3Rl ZC4gV2UKLQkJCQkgKiBjb3VsZCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkIGluc3Rl YWQsIGlmIGEKKwkJCQkgKiBjb3VsZCB1c2UgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkgaW5z dGVhZCwgaWYgYQogCQkJCSAqIG5vbi1mcmVlemluZyBjYWxsZXIgd2FudGVkIHRvIHNldCB0aGUg Vk0gYml0LgogCQkJCSAqLwogCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZzKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmluZGV4IDhmOGExYWQ3Nzk2Li40OTZjY2E2OTQxMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC01MzYsNyArNTM2LDcgQEAg dmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgUmVsYXRpb24gaGVh cHJlbCwgQnVmZmVyIGJ1ZmZlcikKIAkJICovCiAJCWlmIChkdC0+dHVwc3RhdGUgPT0gU1BHSVNU X1JFRElSRUNUICYmCiAJCQkoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGR0LT54aWQpIHx8Ci0JCQkg R2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHZpc3Rlc3QsIGR0LT54aWQpKSkKKwkJCSBHbG9i YWxWaXNYaWRWaXNpYmxlVG9BbGwodmlzdGVzdCwgZHQtPnhpZCkpKQogCQl7CiAJCQlkdC0+dHVw c3RhdGUgPSBTUEdJU1RfUExBQ0VIT0xERVI7CiAJCQlBc3NlcnQob3BhcXVlLT5uUmVkaXJlY3Rp b24gPiAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggMjAwZjcyYzZlMjUu LjIzNWMzYjU4NGY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJy YXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpAQCAtNDE4MSw4 ICs0MTgxLDcgQEAgR2xvYmFsVmlzVXBkYXRlKHZvaWQpCiAgKiBTZWUgY29tbWVudCBmb3IgR2xv YmFsVmlzU3RhdGUgZm9yIGRldGFpbHMuCiAgKi8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJc1JlbW92 YWJsZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLAotCQkJCQkJCQlGdWxsVHJhbnNhY3Rp b25JZCBmeGlkKQorR2xvYmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAq c3RhdGUsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiB7CiAJLyoKIAkgKiBJZiBmeGlkIGlzIG9s ZGVyIHRoYW4gbWF5YmVfbmVlZGVkIGJvdW5kLCBpdCBkZWZpbml0ZWx5IGlzIHZpc2libGUgdG8K QEAgLTQyMTYsMTQgKzQyMTUsMTQgQEAgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZChH bG9iYWxWaXNTdGF0ZSAqc3RhdGUsCiB9CiAKIC8qCi0gKiBXcmFwcGVyIGFyb3VuZCBHbG9iYWxW aXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKCkgZm9yIDMyYml0IHhpZHMuCisgKiBXcmFwcGVyIGFy b3VuZCBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKCkgZm9yIDMyYml0IHhpZHMuCiAgKgog ICogSXQgaXMgY3J1Y2lhbCB0aGF0IHRoaXMgb25seSBnZXRzIGNhbGxlZCBmb3IgeGlkcyBmcm9t IGEgc291cmNlIHRoYXQKICAqIHByb3RlY3RzIGFnYWluc3QgeGlkIHdyYXBhcm91bmRzIChlLmcu IGZyb20gYSB0YWJsZSBhbmQgdGh1cyBwcm90ZWN0ZWQgYnkKICAqIHJlbGZyb3plbnhpZCkuCiAg Ki8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3Rh dGUsIFRyYW5zYWN0aW9uSWQgeGlkKQorR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKEdsb2JhbFZp c1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCiB7CiAJRnVsbFRyYW5zYWN0aW9uSWQg ZnhpZDsKIApAQCAtNDIzNywxMiArNDIzNiwxMiBAQCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVY aWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCkKIAkgKi8KIAlmeGlk ID0gRnVsbFhpZFJlbGF0aXZlVG8oc3RhdGUtPmRlZmluaXRlbHlfbmVlZGVkLCB4aWQpOwogCi0J cmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoc3RhdGUsIGZ4aWQpOworCXJl dHVybiBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKHN0YXRlLCBmeGlkKTsKIH0KIAogLyoK ICAqIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEdsb2JhbFZpc1Rlc3RGb3IoKSBhbmQKLSAq IEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgor ICogR2xvYmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAg Ki8KIGJvb2wKIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1 bGxUcmFuc2FjdGlvbklkIGZ4aWQpCkBAIC00MjUxLDEyICs0MjUwLDEyIEBAIEdsb2JhbFZpc0No ZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQp CiAKIAlzdGF0ZSA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsKTsKIAotCXJldHVybiBHbG9iYWxWaXNU ZXN0SXNSZW1vdmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xvYmFsVmlzRnVs bFhpZFZpc2libGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCiAgKiBDb252ZW5pZW5jZSB3 cmFwcGVyIGFyb3VuZCBHbG9iYWxWaXNUZXN0Rm9yKCkgYW5kCi0gKiBHbG9iYWxWaXNUZXN0SXNS ZW1vdmFibGVYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFsVmlzVGVzdElzVmlz aWJsZVhpZCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wKIEdsb2JhbFZpc0NoZWNr UmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpCkBAIC00MjY1LDcg KzQyNjQsNyBAQCBHbG9iYWxWaXNDaGVja1JlbW92YWJsZVhpZChSZWxhdGlvbiByZWwsIFRyYW5z YWN0aW9uSWQgeGlkKQogCiAJc3RhdGUgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbCk7CiAKLQlyZXR1 cm4gR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHN0YXRlLCB4aWQpOworCXJldHVybiBHbG9i YWxWaXNYaWRWaXNpYmxlVG9BbGwoc3RhdGUsIHhpZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggYi9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmgK aW5kZXggNjA0YzFmOTAyMTYuLmEwZWEyY2ZjZWEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9zbmFwbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcG1nci5oCkBAIC0xMDAs OCArMTAwLDggQEAgZXh0ZXJuIGNoYXIgKkV4cG9ydFNuYXBzaG90KFNuYXBzaG90IHNuYXBzaG90 KTsKICAqLwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7CiBl eHRlcm4gR2xvYmFsVmlzU3RhdGUgKkdsb2JhbFZpc1Rlc3RGb3IoUmVsYXRpb24gcmVsKTsKLWV4 dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3Rh dGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92 YWJsZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlk KTsKK2V4dGVybiBib29sIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAq c3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZpc0Z1bGxYaWRW aXNpYmxlVG9BbGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlk KTsKIGV4dGVybiBib29sIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwg VHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hlY2tSZW1vdmFibGVG dWxsWGlkKFJlbGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCk7CiAKLS0gCjIuNDMu MAoK --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="UTF-8"; name="v17-0011-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v17-0011-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil3sjr10 RnJvbSA3ODNmMWY1M2I5MGJjMTJhYzAyNWI2ODEyNWUzY2Q4NTcwNmM3MWZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgMTEvMTVdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQK CkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQgcGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxl cycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtdmlz aWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBh cmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUgWElEIGNob3NlbiBhdAp0aGUgc3RhcnQg b2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVzZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2gg YWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBw cnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhhdmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0 YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxzbyBiZW5lZml0cyB2YWN1dW0gZGlyZWN0 bHk6IEdsb2JhbFZpc1N0YXRlIG1heSBhZHZhbmNlCmR1cmluZyBhIHZhY3V1bSwgYWxsb3dpbmcg bW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lkZXJlZCBhbGwtdmlzaWJsZS4KSW4gdGhlIHJhcmUg Y2FzZSB0aGF0IGl0IG1vdmVzIGJhY2t3YXJkLCBWQUNVVU0gZmFsbHMgYmFjayB0byBPbGRlc3RY bWluCnRvIGVuc3VyZSB3ZSBkb27igJl0IGF0dGVtcHQgdG8gZnJlZXplIGEgZGVhZCB0dXBsZSB0 aGF0IHdhc27igJl0IHlldApwcnVuYWJsZSBhY2NvcmRpbmcgdG8gdGhlIEdsb2JhbFZpc1N0YXRl LgoKQmVjYXVzZSBjb21wYXJpbmcgYSB0cmFuc2FjdGlvbiBJRCBhZ2FpbnN0IEdsb2JhbFZpc1N0 YXRlIGlzIG1vcmUKZXhwZW5zaXZlIHRoYW4gY29tcGFyaW5nIGFnYWluc3QgYSBzaW5nbGUgWElE LCB3ZSBkZWZlciB0aGlzIGNoZWNrIHVudGlsCmFmdGVyIHNjYW5uaW5nIGFsbCB0dXBsZXMgb24g dGhlIHBhZ2UuIElmIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCB3YXMKbWFpbnRhaW5lZCwgd2UgcGVy Zm9ybSB0aGUgR2xvYmFsVmlzU3RhdGUgY2hlY2sgb25seSBvbmNlIHBlciBwYWdlLgpUaGlzIGlz IHNhZmUgYmVjYXVzZSB2aXNpYmlsaXR5X2N1dG9mZl94aWQgcmVjb3JkcyB0aGUgbmV3ZXN0IHht aW4gb24KdGhlIHBhZ2U7IGlmIGl0IGlzIGdsb2JhbGx5IHZpc2libGUsIHRoZW4gdGhlIGVudGly ZSBwYWdlIGlzIGFsbC12aXNpYmxlLgoKVGhpcyBhcHByb2FjaCBtYXkgcmVzdWx0IGluIGV4YW1p bmluZyBtb3JlIHR1cGxlIHhtaW5zIHRoYW4gYmVmb3JlLApzaW5jZSB3aXRoIE9sZGVzdFhtaW4g d2UgY291bGQgc29tZXRpbWVzIHJ1bGUgb3V0IHRoZSBwYWdlIGJlaW5nCmFsbC12aXNpYmxlIGVh cmxpZXIuIEhvd2V2ZXIsIHByb2ZpbGluZyBzaG93cyB0aGUgYWRkaXRpb25hbCBjb3N0IGlzIG5v dApzaWduaWZpY2FudC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJp bGl0eS5jIHwgMjggKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMgICAgICAgICB8IDM3ICsrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICAgICB8IDE3ICsrKysrLS0tLS0KIHNyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAgICAgfCAgNyArKy0tCiA0IGZpbGVzIGNo YW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCmluZGV4IDRlYmM4YWJkYmViLi5lZGQ1Mjlk YzNjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxp dHkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCkBA IC0xMTg5LDYgKzExODksMzQgQEAgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKEhlYXBUdXBsZSBo dHVwLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJcmV0dXJuIHJlczsKIH0KIAorLyoKKyAq IE5lYXJseSB0aGUgc2FtZSBhcyBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0sIGJ1dCB1c2VzIGEg R2xvYmFsVmlzU3RhdGUgdG8KKyAqIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhIHR1cGxlIGlz IEhFQVBUVVBMRV9ERUFEIE9yCisgKiBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRC4gSXQgc2VydmVz IHRoZSBzYW1lIHB1cnBvc2UgYnV0IGNhbiBiZSB1c2VkIGJ5CisgKiBjYWxsZXJzIHRoYXQgaGF2 ZSBub3QgY2FsY3VsYXRlZCBhIHNpbmdsZSBPbGRlc3RYbWluIHZhbHVlLgorICovCitIVFNWX1Jl c3VsdAorSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtR2xvYmFsVmlzKEhlYXBUdXBsZSBodHVwLCBH bG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKKwkJCQkJCQkJICBCdWZmZXIgYnVmZmVyKQoreworCVRy YW5zYWN0aW9uSWQgZGVhZF9hZnRlciA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCUhUU1ZfUmVz dWx0IHJlczsKKworCXJlcyA9IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6b24oaHR1cCwg YnVmZmVyLCAmZGVhZF9hZnRlcik7CisKKwlpZiAocmVzID09IEhFQVBUVVBMRV9SRUNFTlRMWV9E RUFEKQorCXsKKwkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYWRfYWZ0ZXIpKTsKKwor CQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCQkJ cmVzID0gSEVBUFRVUExFX0RFQUQ7CisJfQorCWVsc2UKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklk SXNWYWxpZChkZWFkX2FmdGVyKSk7CisKKwlyZXR1cm4gcmVzOworfQorCiAvKgogICogV29yayBo b3JzZSBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtIGFuZCBzaW1pbGFyIHJvdXRpbmVzLgog ICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggZjFlMTM3YTM4N2QuLjY3MTIz NmVlMjNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtNzEwLDExICs3MTAs MTIgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFt cywKIAogCS8qCiAJICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHht aW4gb2YgbGl2ZSwgY29tbWl0dGVkIHR1cGxlcwotCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBv biB0aGUgcGFnZS4gVGhpcyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQotCSAqIGlmIHRo ZSBwYWdlIGlzIGFsbC12aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQg dGhhdCBpcwotCSAqIG5vdCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWlu ZWQuIEFzIGxvbmcgYXMgaXQgaXMKLQkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBj YWxjdWxhdGUgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24KLQkgKiB3aGVuIHVwZGF0aW5n IHRoZSBWTSBhbmQvb3IgZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UuCisJICog b24gdGhlIHBhZ2Ugb2xkZXIgdGhhbiB0aGUgdmlzaWJpbGl0eSBob3Jpem9uIHJlcHJlc2VudGVk IGluIHRoZQorCSAqIEdsb2JhbFZpc1N0YXRlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10 by1kYXRlIGlmIHRoZSBwYWdlIGlzCisJICogYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBs ZSBpcyBlbmNvdW50ZXJlZCB0aGF0IGlzIG5vdCB2aXNpYmxlIHRvCisJICogYWxsLCB0aGlzIGZp ZWxkIGlzIHVubWFpbnRhaW5lZC4gQXMgbG9uZyBhcyBpdCBpcyBtYWludGFpbmVkLCBpdCBjYW4g YmUKKwkgKiB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3 aGVuIHVwZGF0aW5nIHRoZSBWTQorCSAqIGFuZC9vciBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBv biB0aGUgcGFnZS4KIAkgKi8KIAlwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFs aWRUcmFuc2FjdGlvbklkOwogCkBAIC05MTAsNiArOTExLDE2IEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCXByc3RhdGUubmRlYWQgPiAw IHx8CiAJCXByc3RhdGUubnVudXNlZCA+IDA7CiAKKwkvKgorCSAqIEFmdGVyIHByb2Nlc3Npbmcg YWxsIHRoZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4bWluCisJICog YW1vbmdzdCB0aGVtIGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFnZSBjYW5ub3Qg YmUKKwkgKiBhbGwtdmlzaWJsZS4KKwkgKi8KKwlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJgor CQlUcmFuc2FjdGlvbklkSXNOb3JtYWwocHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpICYm CisJCSFHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwocHJzdGF0ZS52aXN0ZXN0LCBwcnN0YXRlLnZp c2liaWxpdHlfY3V0b2ZmX3hpZCkpCisJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFs bF9mcm96ZW4gPSBmYWxzZTsKKwogCS8qCiAJICogRXZlbiBpZiB3ZSBkb24ndCBwcnVuZSBhbnl0 aGluZywgaWYgd2UgZm91bmQgYSBuZXcgdmFsdWUgZm9yIHRoZQogCSAqIHBkX3BydW5lX3hpZCBm aWVsZCBvciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRlIHRoZSBoaW50 CkBAIC0xMDgwLDEwICsxMDkxLDkgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVG cmVlemVQYXJhbXMgKnBhcmFtcywKIAkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAogCQlBc3Nl cnQocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7Ci0JCUFzc2VydChwcnN0YXRlLmN1dG9mZnMp OwogCiAJCWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHBhcmFtcy0+cmVsYXRpb24sIGJ1 ZmZlciwKLQkJCQkJCQkJCSAgcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLAorCQkJCQkJCQkJ ICBwcnN0YXRlLnZpc3Rlc3QsCiAJCQkJCQkJCQkgICZkZWJ1Z19hbGxfZnJvemVuLAogCQkJCQkJ CQkJICAmZGVidWdfY3V0b2ZmLCBvZmZfbG9jKSkKIAkJCUFzc2VydChmYWxzZSk7CkBAIC0xNjEy LDE5ICsxNjIyLDYgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdl IHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCQkgKi8KIAkJCQl4bWlu ID0gSGVhcFR1cGxlSGVhZGVyR2V0WG1pbihodHVwKTsKIAotCQkJCS8qCi0JCQkJICogRm9yIG5v dyBhbHdheXMgdXNlIHByc3RhdGUtPmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVzZQotCQkJ CSAqIHdlIG9ubHkgdXBkYXRlICdhbGxfdmlzaWJsZScgd2hlbiBmcmVlemluZyBpcyByZXF1ZXN0 ZWQuIFdlCi0JCQkJICogY291bGQgdXNlIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCgpIGluc3Rl YWQsIGlmIGEKLQkJCQkgKiBub24tZnJlZXppbmcgY2FsbGVyIHdhbnRlZCB0byBzZXQgdGhlIFZN IGJpdC4KLQkJCQkgKi8KLQkJCQlBc3NlcnQocHJzdGF0ZS0+Y3V0b2Zmcyk7Ci0JCQkJaWYgKCFU cmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwgcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbikp Ci0JCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4g PSBmYWxzZTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCiAJCQkJLyogVHJhY2sgbmV3ZXN0IHhtaW4g b24gcGFnZS4gKi8KIAkJCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MoeG1pbiwgcHJzdGF0ZS0+ dmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgogCQkJCQlUcmFuc2FjdGlvbklkSXNOb3JtYWwoeG1p bikpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMWIyMGM5NjAzM2UuLjNl OWNmMmYxNWE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00NjUsNyAr NDY1LDcgQEAgc3RhdGljIHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwp Owogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7CiAK IHN0YXRpYyBib29sIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWws IEJ1ZmZlciBidWYsCi0JCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJ CQkJCQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJCQkJCSAgIE9mZnNldE51 bWJlciAqZGVhZG9mZnNldHMsCiAJCQkJCQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0cywKIAkJCQkJ CQkJCQkgICBib29sICphbGxfZnJvemVuLApAQCAtMjc0MCw3ICsyNzQwLDcgQEAgbGF6eV92YWN1 dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZl ciBidWZmZXIsCiAJICogZG9uZSBvdXRzaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLgogCSAqLwog CWlmIChoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZmZlciwK LQkJCQkJCQkJCSAgIHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWluLAorCQkJCQkJCQkJICAgdmFj cmVsLT52aXN0ZXN0LAogCQkJCQkJCQkJICAgZGVhZG9mZnNldHMsIG51bV9vZmZzZXRzLAogCQkJ CQkJCQkJICAgJmFsbF9mcm96ZW4sICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkJCQkg ICAmdmFjcmVsLT5vZmZudW0pKQpAQCAtMzQ4OSwxNCArMzQ4OSwxMyBAQCBkZWFkX2l0ZW1zX2Ns ZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogICovCiBib29sCiBoZWFwX3BhZ2VfaXNfYWxsX3Zp c2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xk ZXN0WG1pbiwKKwkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSBib29sICph bGxfZnJvemVuLAogCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwK IAkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQogewogCi0JcmV0dXJuIGhlYXBf cGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwKLQkJCQkJCQkJCQkgIE9sZGVzdFht aW4sCisJcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1Ziwgdmlz dGVzdCwKIAkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBhbGxfZnJvemVuLAogCQkJ CQkJCQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLApAQCAtMzUxNSw3ICszNTE0LDcgQEAgaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKICAqIFJldHVy bnMgdHJ1ZSBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZSBvdGhlciB0aGFuIHRoZSBwcm92aWRl ZAogICogZGVhZG9mZnNldHMgYW5kIGZhbHNlIG90aGVyd2lzZS4KICAqCi0gKiBPbGRlc3RYbWlu IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCisgKiB2aXN0ZXN0IGlzIHVzZWQgdG8g ZGV0ZXJtaW5lIHZpc2liaWxpdHkuCiAgKgogICogT3V0cHV0IHBhcmFtZXRlcnM6CiAgKgpAQCAt MzUzNCw3ICszNTMzLDcgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGJ1ZiwKICAqLwogc3RhdGljIGJvb2wKIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlz aWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBP bGRlc3RYbWluLAorCQkJCQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJCSAg IE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCiAJCQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0cywK IAkJCQkJCQkgICBib29sICphbGxfZnJvemVuLApAQCAtMzYwNiw3ICszNjA1LDcgQEAgaGVhcF9w YWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJdHVw bGUudF9sZW4gPSBJdGVtSWRHZXRMZW5ndGgoaXRlbWlkKTsKIAkJdHVwbGUudF90YWJsZU9pZCA9 IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKIAotCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1Zh Y3V1bSgmdHVwbGUsIE9sZGVzdFhtaW4sIGJ1ZikpCisJCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNm aWVzVmFjdXVtR2xvYmFsVmlzKCZ0dXBsZSwgdmlzdGVzdCwgYnVmKSkKIAkJewogCQkJY2FzZSBI RUFQVFVQTEVfTElWRToKIAkJCQl7CkBAIC0zNjI1LDcgKzM2MjQsNyBAQCBoZWFwX3BhZ2Vfd291 bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkgKiB0aGF0 IGV2ZXJ5b25lIHNlZXMgaXQgYXMgY29tbWl0dGVkPwogCQkJCQkgKi8KIAkJCQkJeG1pbiA9IEhl YXBUdXBsZUhlYWRlckdldFhtaW4odHVwbGUudF9kYXRhKTsKLQkJCQkJaWYgKCFUcmFuc2FjdGlv bklkUHJlY2VkZXMoeG1pbiwgT2xkZXN0WG1pbikpCisJCQkJCWlmICghR2xvYmFsVmlzWGlkVmlz aWJsZVRvQWxsKHZpc3Rlc3QsIHhtaW4pKQogCQkJCQl7CiAJCQkJCQlhbGxfdmlzaWJsZSA9IGZh bHNlOwogCQkJCQkJKmFsbF9mcm96ZW4gPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAyZGUz OWJhMGNkMS4uZGYwNjMyYWViYzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTI3Niw4ICsyNzYsNyBA QCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVBhcmFtcwogCS8qCiAJICogY3V0b2ZmcyBjb250 YWlucyB0aGUgZnJlZXplIGN1dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUKIAkg KiBiZWdpbm5pbmcgb2YgdmFjdXVtaW5nIHRoZSByZWxhdGlvbi4gIFJlcXVpcmVkIGlmIEhFQVBf UFJVTkVfRlJFRVpFCi0JICogb3B0aW9uIGlzIHNldC4gY3V0b2Zmcy0+T2xkZXN0WG1pbiBpcyBh bHNvIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGRlYWQKLQkgKiB0dXBsZXMgYXJlIEhFQVBUVVBMRV9S RUNFTlRMWV9ERUFEIG9yIEhFQVBUVVBMRV9ERUFELgorCSAqIG9wdGlvbiBpcyBzZXQuCiAJICov CiAJc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7CiB9IFBydW5lRnJlZXplUGFyYW1zOwpA QCAtNDQzLDcgKzQ0Miw3IEBAIGV4dGVybiB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiBy ZWwsCiAJCQkJCQkJY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRl Z3kgYnN0cmF0ZWd5KTsKIAogZXh0ZXJuIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFht aW4sCisJCQkJCQkJCQkgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJCQkgYm9vbCAq YWxsX2Zyb3plbiwKIAkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94 aWQsCiAJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CkBAIC00NTUsNiAr NDU0LDggQEAgZXh0ZXJuIFRNX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNVcGRhdGUoSGVhcFR1 cGxlIGh0dXAsIENvbW1hbmRJZCBjdXJjaWQsCiAJCQkJCQkJCQkJICBCdWZmZXIgYnVmZmVyKTsK IGV4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oSGVhcFR1cGxlIGh0 dXAsIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkJCQkJQnVmZmVyIGJ1ZmZlcik7 CitleHRlcm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtR2xvYmFsVmlzKEhl YXBUdXBsZSBodHVwLAorCQkJCQkJCQkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwgQnVm ZmVyIGJ1ZmZlcik7CiBleHRlcm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVt SG9yaXpvbihIZWFwVHVwbGUgaHR1cCwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCQkJCSAgIFRy YW5zYWN0aW9uSWQgKmRlYWRfYWZ0ZXIpOwogZXh0ZXJuIHZvaWQgSGVhcFR1cGxlU2V0SGludEJp dHMoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLCBCdWZmZXIgYnVmZmVyLAotLSAKMi40My4wCgo= --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="US-ASCII"; name="v17-0012-Inline-TransactionIdFollows-Precedes.patch" Content-Disposition: attachment; filename="v17-0012-Inline-TransactionIdFollows-Precedes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil3sjt11 RnJvbSBlNDEyZjkyOThiMDczNWQxMDkxZjQ3NjlhY2U0ZDJkMWE3ZTYyMzEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDA5OjU3OjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgMTIvMTVdIElubGluZSBUcmFuc2FjdGlvbklkRm9sbG93cy9QcmVjZWRlcygpCgpD 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 --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="UTF-8"; name="v17-0013-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v17-0013-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil3sju12 RnJvbSA1NGZjYmExNDBlNTE1ZWJhMGViMWY5ZDQ4ZTdkNTg3NWI5MmU3ZTM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM0OjMwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgMTMvMTVdIEFsbG93IG9uLWFjY2VzcyBwcnVuaW5nIHRvIHNldCBwYWdlcyBhbGwt dmlzaWJsZQoKTWFueSBxdWVyaWVzIGRvIG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgcmVsYXRp b24uIEZvciBzdWNoIHF1ZXJpZXMsIGlmCm9uLWFjY2VzcyBwcnVuaW5nIG9jY3VycyBkdXJpbmcg dGhlIHNjYW4sIHdlIGNhbiBjaGVjayB3aGV0aGVyIHRoZSBwYWdlCmhhcyBiZWNvbWUgYWxsLXZp c2libGUgYW5kIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYWNjb3JkaW5nbHkuClByZXZpb3Vz bHksIG9ubHkgdmFjdXVtIGFuZCBDT1BZIEZSRUVaRSBtYXJrZWQgcGFnZXMgYXMgYWxsLXZpc2li bGUgb3IKYWxsLWZyb3plbi4KClN1cHBvcnRpbmcgdGhpcyByZXF1aXJlcyBwYXNzaW5nIGluZm9y bWF0aW9uIGFib3V0IHdoZXRoZXIgdGhlIHJlbGF0aW9uCmlzIG1vZGlmaWVkIGZyb20gdGhlIGV4 ZWN1dG9yIGRvd24gdG8gdGhlIHNjYW4gZGVzY3JpcHRvci4KClRoaXMgY29tbWl0IGltcGxlbWVu dHMgb24tYWNjZXNzIFZNIHNldHRpbmcgZm9yIHNlcXVlbnRpYWwgc2NhbnMgYXMgd2VsbAphcyBm b3IgdGhlIHVuZGVybHlpbmcgaGVhcCByZWxhdGlvbiBpbiBpbmRleCBzY2FucyBhbmQgYml0bWFw IGhlYXAKc2NhbnMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAg ICAgICAgIHwgMTUgKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIu YyAgICAgIHwgMTUgKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAg ICAgICAgIHwgNzEgKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2luZGV4YW0uYyAgICAgICAgICAgIHwgNDYgKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nl c3MvdGFibGUvdGFibGVhbS5jICAgICAgICAgICAgfCAzOSArKysrKysrKy0tCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgNCArKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1V0aWxzLmMgICAgICAgICAgICAgIHwgIDIgKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVJbmRleHNjYW4uYyAgICAgICAgICB8IDE4ICsrKy0tCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU2Vxc2Nhbi5jICAgICAgICAgICAgfCAyNCArKysrKy0tCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvZ2VuYW0uaCAgICAgICAgICAgICAgICAgICAgfCAxMSArKysKIHNyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAgICAgICB8IDI0ICsrKysrKy0KIHNyYy9pbmNsdWRl L2FjY2Vzcy9yZWxzY2FuLmggICAgICAgICAgICAgICAgICB8ICA2ICsrCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAzMCArKysrKysrLQogc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgIDYgKysKIC4uLi90LzAzNV9z dGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAgICB8ICAzICstCiAxNiBmaWxlcyBjaGFu Z2VkLCAyODIgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwppbmRleCAxNGEyOTk2YjllZS4uNjE4MWUzNTVhYWYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbS5jCkBAIC01NTUsNiArNTU1LDcgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2FuKFRhYmxl U2NhbkRlc2Mgc3NjYW4pCiAJQnVmZmVyCQlidWZmZXIgPSBzY2FuLT5yc19jYnVmOwogCUJsb2Nr TnVtYmVyIGJsb2NrID0gc2Nhbi0+cnNfY2Jsb2NrOwogCVNuYXBzaG90CXNuYXBzaG90OworCUJ1 ZmZlcgkgICAqdm1idWZmZXIgPSBOVUxMOwogCVBhZ2UJCXBhZ2U7CiAJaW50CQkJbGluZXM7CiAJ Ym9vbAkJYWxsX3Zpc2libGU7CkBAIC01NjksNyArNTcwLDkgQEAgaGVhcF9wcmVwYXJlX3BhZ2Vz Y2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJLyoKIAkgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdt ZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4KIAkgKi8KLQloZWFwX3Bh Z2VfcHJ1bmVfb3B0KHNjYW4tPnJzX2Jhc2UucnNfcmQsIGJ1ZmZlcik7CisJaWYgKHNzY2FuLT5y c19mbGFncyAmIFNPX0FMTE9XX1ZNX1NFVCkKKwkJdm1idWZmZXIgPSAmc2Nhbi0+cnNfdm1idWZm ZXI7CisJaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNlLnJzX3JkLCBidWZmZXIsIHZt YnVmZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZl ciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpAQCAtMTI0Niw2ICsxMjQ5LDcgQEAgaGVh cF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJ CQkJCQkJCQkgIHNpemVvZihUQk1JdGVyYXRlUmVzdWx0KSk7CiAJfQogCisJc2Nhbi0+cnNfdm1i dWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0dXJuIChUYWJsZVNjYW5EZXNjKSBzY2FuOwog fQpAQCAtMTI4NCw2ICsxMjg4LDEyIEBAIGhlYXBfcmVzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4s IFNjYW5LZXkga2V5LCBib29sIHNldF9wYXJhbXMsCiAJCXNjYW4tPnJzX2NidWYgPSBJbnZhbGlk QnVmZmVyOwogCX0KIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX3ZtYnVmZmVyKSkKKwl7 CisJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfdm1idWZmZXIpOworCQlzY2FuLT5yc192bWJ1ZmZl ciA9IEludmFsaWRCdWZmZXI7CisJfQorCiAJLyoKIAkgKiBTT19UWVBFX0JJVE1BUFNDQU4gd291 bGQgYmUgY2xlYW5lZCB1cCBoZXJlLCBidXQgaXQgZG9lcyBub3QgaG9sZCBhbnkKIAkgKiBhZGRp dGlvbmFsIGRhdGEgdnMgYSBub3JtYWwgSGVhcFNjYW4KQEAgLTEzMTYsNiArMTMyNiw5IEBAIGhl YXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4t PnJzX2NidWYpKQogCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX2NidWYpOwogCisJaWYgKEJ1ZmZl cklzVmFsaWQoc2Nhbi0+cnNfdm1idWZmZXIpKQorCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX3Zt YnVmZmVyKTsKKwogCS8qCiAJICogTXVzdCBmcmVlIHRoZSByZWFkIHN0cmVhbSBiZWZvcmUgZnJl ZWluZyB0aGUgQnVmZmVyQWNjZXNzU3RyYXRlZ3kuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBiY2JhYzg0NGJiNi4uZjA1YjllNDk2OGQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtODUsNiArODUsNyBAQCBo ZWFwYW1faW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24gcmVsKQogCiAJaHNjYW4tPnhzX2Jhc2Uu cmVsID0gcmVsOwogCWhzY2FuLT54c19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKKwloc2Nhbi0+eHNf dm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0dXJuICZoc2Nhbi0+eHNfYmFzZTsKIH0K QEAgLTk5LDYgKzEwMCwxMiBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfcmVzZXQoSW5kZXhGZXRjaFRh YmxlRGF0YSAqc2NhbikKIAkJUmVsZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfY2J1Zik7CiAJCWhzY2Fu LT54c19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAl9CisKKwlpZiAoQnVmZmVySXNWYWxpZChoc2Nh bi0+eHNfdm1idWZmZXIpKQorCXsKKwkJUmVsZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIp OworCQloc2Nhbi0+eHNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCX0KIH0KIAogc3RhdGlj IHZvaWQKQEAgLTEzOCw3ICsxNDUsOCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0 IEluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4sCiAJCSAqIFBydW5lIHBhZ2UsIGJ1dCBvbmx5IGlm IHdlIHdlcmVuJ3QgYWxyZWFkeSBvbiB0aGlzIHBhZ2UKIAkJICovCiAJCWlmIChwcmV2X2J1ZiAh PSBoc2Nhbi0+eHNfY2J1ZikKLQkJCWhlYXBfcGFnZV9wcnVuZV9vcHQoaHNjYW4tPnhzX2Jhc2Uu cmVsLCBoc2Nhbi0+eHNfY2J1Zik7CisJCQloZWFwX3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19i YXNlLnJlbCwgaHNjYW4tPnhzX2NidWYsCisJCQkJCQkJCXNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVs ID8gTlVMTCA6ICZoc2Nhbi0+eHNfdm1idWZmZXIpOwogCX0KIAogCS8qIE9idGFpbiBzaGFyZS1s b2NrIG9uIHRoZSBidWZmZXIgc28gd2UgY2FuIGV4YW1pbmUgdmlzaWJpbGl0eSAqLwpAQCAtMjQ3 MSw2ICsyNDc5LDcgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2Fu LAogCVRCTUl0ZXJhdGVSZXN1bHQgKnRibXJlczsKIAlPZmZzZXROdW1iZXIgb2Zmc2V0c1tUQk1f TUFYX1RVUExFU19QRVJfUEFHRV07CiAJaW50CQkJbm9mZnNldHMgPSAtMTsKKwlCdWZmZXIJICAg KnZtYnVmZmVyID0gTlVMTDsKIAogCUFzc2VydChzY2FuLT5yc19mbGFncyAmIFNPX1RZUEVfQklU TUFQU0NBTik7CiAJQXNzZXJ0KGhzY2FuLT5yc19yZWFkX3N0cmVhbSk7CkBAIC0yNTE3LDcgKzI1 MjYsOSBAQCBCaXRtYXBIZWFwU2Nhbk5leHRCbG9jayhUYWJsZVNjYW5EZXNjIHNjYW4sCiAJLyoK IAkgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBp ZiBwb3NzaWJsZS4KIAkgKi8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZm ZXIpOworCWlmIChzY2FuLT5yc19mbGFncyAmIFNPX0FMTE9XX1ZNX1NFVCkKKwkJdm1idWZmZXIg PSAmaHNjYW4tPnJzX3ZtYnVmZmVyOworCWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfcmQs IGJ1ZmZlciwgdm1idWZmZXIpOwogCiAJLyoKIAkgKiBXZSBtdXN0IGhvbGQgc2hhcmUgbG9jayBv biB0aGUgYnVmZmVyIGNvbnRlbnQgd2hpbGUgZXhhbWluaW5nIHR1cGxlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCmluZGV4IDY3MTIzNmVlMjNmLi4wNWU2YjkwMjA2OSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTE4Niw3ICsxODYsOSBAQCBzdGF0aWMgYm9vbCBo ZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkgICBCdWZm ZXIgaGVhcF9idWYsCiAJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKIAkJCQkJCQkJICAgYm9v bCBibGtfa25vd25fYXYsCi0JCQkJCQkJCSAgIGNvbnN0IFBydW5lU3RhdGUgKnByc3RhdGUsCisJ CQkJCQkJCSAgIFBydW5lUmVhc29uIHJlYXNvbiwKKwkJCQkJCQkJICAgYm9vbCBkb19wcnVuZSwg Ym9vbCBkb19mcmVlemUsCisJCQkJCQkJCSAgIFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCQkJCQkJ CSAgIHVpbnQ4ICp2bWZsYWdzLAogCQkJCQkJCQkgICBib29sICpkb19zZXRfcGRfdmlzKTsKIApA QCAtMjAxLDkgKzIwMywxMyBAQCBzdGF0aWMgYm9vbCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJl bGF0aW9uIHJlbGF0aW9uLAogICogaWYgdGhlcmUncyBub3QgYW55IHVzZSBpbiBwcnVuaW5nLgog ICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIG9uIHRoZSBidWZmZXIsIGFuZCBtdXN0ICpub3Qq IGhhdmUgYSBsb2NrIG9uIGl0LgorICoKKyAqIElmIHZtYnVmZmVyIGlzIG5vdCBOVUxMLCBpdCBp cyBva2F5IGZvciBwcnVuaW5nIHRvIHNldCB0aGUgdmlzaWJpbGl0eSBtYXAgaWYKKyAqIHRoZSBw YWdlIGlzIGFsbC12aXNpYmxlLiBXZSB3aWxsIHRha2UgY2FyZSBvZiBwaW5uaW5nIGFuZCwgaWYg bmVlZGVkLAorICogcmVhZGluZyBpbiB0aGUgcGFnZSBvZiB0aGUgdmlzaWJpbGl0eSBtYXAuCiAg Ki8KIHZvaWQKLWhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIpCitoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVm ZmVyLCBCdWZmZXIgKnZtYnVmZmVyKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1 ZmZlcik7CiAJVHJhbnNhY3Rpb25JZCBwcnVuZV94aWQ7CkBAIC0yNjksMTIgKzI3NSwyMSBAQCBo ZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogCQkJ UHJ1bmVGcmVlemVQYXJhbXMgcGFyYW1zOwogCQkJUHJ1bmVGcmVlemVSZXN1bHQgcHJlc3VsdDsK IAorCQkJcGFyYW1zLm9wdGlvbnMgPSAwOworCQkJcGFyYW1zLnZtYnVmZmVyID0gSW52YWxpZEJ1 ZmZlcjsKKworCQkJaWYgKHZtYnVmZmVyKQorCQkJeworCQkJCXZpc2liaWxpdHltYXBfcGluKHJl bGF0aW9uLCBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLCB2bWJ1ZmZlcik7CisJCQkJcGFy YW1zLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUzsKKwkJCQlwYXJhbXMudm1i dWZmZXIgPSAqdm1idWZmZXI7CisJCQl9CisKIAkJCXBhcmFtcy5yZWxhdGlvbiA9IHJlbGF0aW9u OwogCQkJcGFyYW1zLmJ1ZmZlciA9IGJ1ZmZlcjsKIAkJCXBhcmFtcy5yZWFzb24gPSBQUlVORV9P Tl9BQ0NFU1M7CiAJCQlwYXJhbXMudmlzdGVzdCA9IHZpc3Rlc3Q7CiAJCQlwYXJhbXMuY3V0b2Zm cyA9IE5VTEw7Ci0JCQlwYXJhbXMudm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCQkJcGFyYW1z LmJsa19rbm93bl9hdiA9IGZhbHNlOwogCiAJCQkvKgpAQCAtNDU0LDYgKzQ2OSw5IEBAIGhlYXBf cGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqIGhh dmUgZXhhbWluZWQgdGhpcyBwYWdl4oCZcyBWTSBiaXRzIChlLmcuLCBWQUNVVU0gaW4gdGhlIHBy ZXZpb3VzCiAgKiBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsKSBhbmQgY2FuIHBhc3Mg dGhhdCBhbG9uZy4KICAqCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlciBkb19m cmVlemUgaGFzIGJlZW4gZGVjaWRlZCAoYW5kIGRvX3BydW5lCisgKiBoYXMgYmVlbiBzZXQpLCBh cyB0aGVzZSBmYWN0b3IgaW50byBvdXIgaGV1cmlzdGljLWJhc2VkIGRlY2lzaW9uLgorICoKICAq IFJldHVybnMgdHJ1ZSBpZiBvbmUgb3IgYm90aCBWTSBiaXRzIHNob3VsZCBiZSBzZXQsIGFsb25n IHdpdGggdGhlIGRlc2lyZWQKICAqIGZsYWdzIGluICp2bWZsYWdzLiBBbHNvIGluZGljYXRlcyB2 aWEgZG9fc2V0X3BkX3ZpcyB3aGV0aGVyIFBEX0FMTF9WSVNJQkxFCiAgKiBzaG91bGQgYmUgc2V0 IG9uIHRoZSBoZWFwIHBhZ2UuCkBAIC00NjQsNyArNDgyLDkgQEAgaGVhcF9wYWdlX3dpbGxfc2V0 X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJICAgQnVmZmVyIGhlYXBfYnVmLAogCQkJCQkg ICBCdWZmZXIgdm1idWZmZXIsCiAJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAotCQkJCQkgICBj b25zdCBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkgICBQcnVuZVJlYXNvbiByZWFzb24sCisJ CQkJCSAgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAorCQkJCQkgICBQcnVuZVN0YXRl ICpwcnN0YXRlLAogCQkJCQkgICB1aW50OCAqdm1mbGFncywKIAkJCQkJICAgYm9vbCAqZG9fc2V0 X3BkX3ZpcykKIHsKQEAgLTQ4MCw2ICs1MDAsMjMgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhS ZWxhdGlvbiByZWxhdGlvbiwKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAorCS8qCisJICogSWYgdGhp cyBpcyBhbiBvbi1hY2Nlc3MgY2FsbCBhbmQgd2UncmUgbm90IGFjdHVhbGx5IHBydW5pbmcsIGF2 b2lkCisJICogc2V0dGluZyB0aGUgdmlzaWJpbGl0eSBtYXAgaWYgaXQgd291bGQgbmV3bHkgZGly dHkgdGhlIGhlYXAgcGFnZSBvciwgaWYKKwkgKiB0aGUgcGFnZSBpcyBhbHJlYWR5IGRpcnR5LCBp ZiBkb2luZyBzbyB3b3VsZCByZXF1aXJlIGluY2x1ZGluZyBhCisJICogZnVsbC1wYWdlIGltYWdl IChGUEkpIG9mIHRoZSBoZWFwIHBhZ2UgaW4gdGhlIFdBTC4gVGhpcyBzaXR1YXRpb24KKwkgKiBz aG91bGQgYmUgcmFyZSwgYXMgb24tYWNjZXNzIHBydW5pbmcgaXMgb25seSBhdHRlbXB0ZWQgd2hl bgorCSAqIHBkX3BydW5lX3hpZCBpcyB2YWxpZC4KKwkgKi8KKwlpZiAocmVhc29uID09IFBSVU5F X09OX0FDQ0VTUyAmJgorCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJgorCQkhZG9fcHJ1bmUgJiYg IWRvX2ZyZWV6ZSAmJgorCQkoIUJ1ZmZlcklzRGlydHkoaGVhcF9idWYpIHx8IFhMb2dDaGVja0J1 ZmZlck5lZWRzQmFja3VwKGhlYXBfYnVmKSkpCisJeworCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9 IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCWlm IChwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQog CQkqZG9fc2V0X3BkX3ZpcyA9IHRydWU7CiAKQEAgLTUwMyw2ICs1NDAsOSBAQCBoZWFwX3BhZ2Vf d2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAogCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNs ZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IGluIHZhY3V1bSB0aGUgYml0CiAJICog Z290IGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxlZCwg c28gd2UgbXVzdAogCSAqIHJlY2hlY2sgd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1ZGlu ZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgorCSAqCisJICogWFhYOiBUaGlzIHdpbGwgbmV2ZXIg dHJpZ2dlciBmb3Igb24tYWNjZXNzIHBydW5pbmcgYmVjYXVzZSBpdCBwYXNzZXMKKwkgKiBibGtf a25vd25fYXYgYXMgZmFsc2UuIFNob3VsZCB3ZSByZW1vdmUgdGhhdCBjb25kaXRpb24gaGVyZT8K IAkgKi8KIAllbHNlIGlmIChibGtfa25vd25fYXYgJiYgIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9w YWdlKSAmJgogCQkJIHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhyZWxhdGlvbiwgaGVhcF9ibGss ICZ2bWJ1ZmZlcikgIT0gMCkKQEAgLTkxMSw2ICs5NTEsMTQgQEAgaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJcHJzdGF0ZS5uZGVhZCA+IDAg fHwKIAkJcHJzdGF0ZS5udW51c2VkID4gMDsKIAorCS8qCisJICogRXZlbiBpZiB3ZSBkb24ndCBw cnVuZSBhbnl0aGluZywgaWYgd2UgZm91bmQgYSBuZXcgdmFsdWUgZm9yIHRoZQorCSAqIHBkX3By dW5lX3hpZCBmaWVsZCBvciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRl IHRoZSBoaW50CisJICogYml0LgorCSAqLworCWRvX2hpbnRfcHJ1bmUgPSAoKFBhZ2VIZWFkZXIp IHBhZ2UpLT5wZF9wcnVuZV94aWQgIT0gcHJzdGF0ZS5uZXdfcHJ1bmVfeGlkIHx8CisJCVBhZ2VJ c0Z1bGwocGFnZSk7CisKIAkvKgogCSAqIEFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1 cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4bWluCiAJICogYW1vbmdzdCB0aGVtIGlz IG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFnZSBjYW5ub3QgYmUKQEAgLTkyMSwxNCAr OTY5LDYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkJIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLnZpc3Rlc3QsIHByc3Rh dGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkKIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3Rh dGUuYWxsX2Zyb3plbiA9IGZhbHNlOwogCi0JLyoKLQkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5l IGFueXRoaW5nLCBpZiB3ZSBmb3VuZCBhIG5ldyB2YWx1ZSBmb3IgdGhlCi0JICogcGRfcHJ1bmVf eGlkIGZpZWxkIG9yIHRoZSBwYWdlIHdhcyBtYXJrZWQgZnVsbCwgd2Ugd2lsbCB1cGRhdGUgdGhl IGhpbnQKLQkgKiBiaXQuCi0JICovCi0JZG9faGludF9wcnVuZSA9ICgoUGFnZUhlYWRlcikgcGFn ZSktPnBkX3BydW5lX3hpZCAhPSBwcnN0YXRlLm5ld19wcnVuZV94aWQgfHwKLQkJUGFnZUlzRnVs bChwYWdlKTsKLQogCS8qCiAJICogRGVjaWRlIGlmIHdlIHdhbnQgdG8gZ28gYWhlYWQgd2l0aCBm cmVlemluZyBhY2NvcmRpbmcgdG8gdGhlIGZyZWV6ZQogCSAqIHBsYW5zIHdlIHByZXBhcmVkLCBv ciBub3QuCkBAIC05NzIsNiArMTAxMiw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBy dW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICovCiAJZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dp bGxfc2V0X3ZpcyhwYXJhbXMtPnJlbGF0aW9uLAogCQkJCQkJCQkJICAgYmxvY2tubywgYnVmZmVy LCB2bWJ1ZmZlciwgcGFyYW1zLT5ibGtfa25vd25fYXYsCisJCQkJCQkJCQkgICBwYXJhbXMtPnJl YXNvbiwgZG9fcHJ1bmUsIGRvX2ZyZWV6ZSwKIAkJCQkJCQkJCSAgICZwcnN0YXRlLCAmbmV3X3Zt Yml0cywgJmRvX3NldF9wZF92aXMpOwogCiAJLyogV2Ugc2hvdWxkIG9ubHkgc2V0IHRoZSBWTSBp ZiBQRF9BTExfVklTSUJMRSBpcyBzZXQgb3Igd2lsbCBiZSAqLwpAQCAtMjI0NCw3ICsyMjg1LDcg QEAgaGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVw bGVzLAogCiAvKgogICogQ2FsY3VsYXRlIHRoZSBjb25mbGljdCBob3Jpem9uIGZvciB0aGUgd2hv bGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgotICogcmVjb3JkLgorICogb3IgWExPR19I RUFQMl9QUlVORV9PTl9BQ0NFU1MgcmVjb3JkLgogICovCiBzdGF0aWMgVHJhbnNhY3Rpb25JZAog Z2V0X2NvbmZsaWN0X3hpZChib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwgYm9vbCBkb19z ZXRfdm0sCkBAIC0yMzEzLDggKzIzNTQsOCBAQCBnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1 bmUsIGJvb2wgZG9fZnJlZXplLCBib29sIGRvX3NldF92bSwKICAqIC0gUmVhcGluZzogRHVyaW5n IHZhY3V1bSBwaGFzZSBJSUksIGl0ZW1zIHRoYXQgYXJlIGFscmVhZHkgTFBfREVBRCBhcmUKICAq ICAgbWFya2VkIGFzIHVudXNlZC4KICAqCi0gKiAtIFZNIHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBw aGFzZXMgSSBhbmQgSUlJLCB0aGUgaGVhcCBwYWdlIG1heSBiZSBtYXJrZWQKLSAqICAgYWxsLXZp c2libGUgYW5kIGFsbC1mcm96ZW4uCisgKiAtIFZNIHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBwaGFz ZXMgSSBhbmQgSUlJIGFuZCBvbi1hY2Nlc3MsIHRoZSBoZWFwIHBhZ2UKKyAqICAgbWF5IGJlIG1h cmtlZCBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbi4KICAqCiAgKiBUaGVzZSBjaGFuZ2VzIGFs bCBoYXBwZW4gdG9nZXRoZXIsIHNvIHdlIHVzZSBhIHNpbmdsZSBXQUwgcmVjb3JkIGZvciB0aGVt CiAgKiBhbGwuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCAwNDkyZDkyZDIzYi4u OGQ1ODJhOGVhZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFt LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtMjg5LDYgKzI4 OSwzMiBAQCBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXJldHVybiBz Y2FuOwogfQogCisvKgorICogU2ltaWxhciB0byBpbmRleF9iZWdpbnNjYW4oKSwgYnV0IGFsbG93 cyB0aGUgY2FsbGVyIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlCisgKiBxdWVyeSBtb2RpZmllcyB0 aGUgdW5kZXJseWluZyBiYXNlIHJlbGF0aW9uLiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgY2FsbGVy CisgKiB3YW50cyB0byBhdHRlbXB0IG1hcmtpbmcgcGFnZXMgaW4gdGhlIGJhc2UgcmVsYXRpb24g YXMgYWxsLXZpc2libGUgaW4gdGhlCisgKiB2aXNpYmlsaXR5IG1hcCBkdXJpbmcgb24tYWNjZXNz IHBydW5pbmcuCisgKi8KK0luZGV4U2NhbkRlc2MKK2luZGV4X2JlZ2luc2Nhbl92bXNldChSZWxh dGlvbiBoZWFwUmVsYXRpb24sCisJCQkJCSAgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKKwkJCQkJ ICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJICBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmlu c3RydW1lbnQsCisJCQkJCSAgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLCBib29sIG1vZGlmaWVz X2Jhc2VfcmVsKQoreworCUluZGV4U2NhbkRlc2Mgc2NhbjsKKworCXNjYW4gPSBpbmRleF9iZWdp bnNjYW4oaGVhcFJlbGF0aW9uLAorCQkJCQkJICAgaW5kZXhSZWxhdGlvbiwKKwkJCQkJCSAgIHNu YXBzaG90LAorCQkJCQkJICAgaW5zdHJ1bWVudCwKKwkJCQkJCSAgIG5rZXlzLCBub3JkZXJieXMp OworCisJc2Nhbi0+eHNfaGVhcGZldGNoLT5tb2RpZmllc19iYXNlX3JlbCA9IG1vZGlmaWVzX2Jh c2VfcmVsOworCisJcmV0dXJuIHNjYW47Cit9CisKIC8qCiAgKiBpbmRleF9iZWdpbnNjYW5fYml0 bWFwIC0gc3RhcnQgYSBzY2FuIG9mIGFuIGluZGV4IHdpdGggYW1nZXRiaXRtYXAKICAqCkBAIC02 MjAsNiArNjQ2LDI2IEBAIGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBoZWFwcmVs LCBSZWxhdGlvbiBpbmRleHJlbCwKIAlyZXR1cm4gc2NhbjsKIH0KIAorLyoKKyAqIFBhcmFsbGVs IHZlcnNpb24gb2YgaW5kZXhfYmVnaW5zY2FuX3Ztc2V0KCkKKyAqLworSW5kZXhTY2FuRGVzYwor aW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0KFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9u IGluZGV4cmVsLAorCQkJCQkJCSAgIEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVu dCwKKwkJCQkJCQkgICBpbnQgbmtleXMsIGludCBub3JkZXJieXMsCisJCQkJCQkJICAgUGFyYWxs ZWxJbmRleFNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCSAgIGJvb2wgbW9kaWZpZXNfYmFzZV9yZWwp Cit7CisJSW5kZXhTY2FuRGVzYyBzY2FuOworCisJc2NhbiA9IGluZGV4X2JlZ2luc2Nhbl9wYXJh bGxlbChoZWFwcmVsLCBpbmRleHJlbCwKKwkJCQkJCQkJCWluc3RydW1lbnQsCisJCQkJCQkJCQlu a2V5cywgbm9yZGVyYnlzLAorCQkJCQkJCQkJcHNjYW4pOworCXNjYW4tPnhzX2hlYXBmZXRjaC0+ bW9kaWZpZXNfYmFzZV9yZWwgPSBtb2RpZmllc19iYXNlX3JlbDsKKwlyZXR1cm4gc2NhbjsKK30K KwogLyogLS0tLS0tLS0tLS0tLS0tLQogICogaW5kZXhfZ2V0bmV4dF90aWQgLSBnZXQgdGhlIG5l eHQgVElEIGZyb20gYSBzY2FuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Rh YmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKaW5kZXgg NWU0MTQwNDkzN2UuLjNlM2EwZjcyYTcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMK QEAgLTQ5LDYgKzQ5LDEwIEBACiBjaGFyCSAgICpkZWZhdWx0X3RhYmxlX2FjY2Vzc19tZXRob2Qg PSBERUZBVUxUX1RBQkxFX0FDQ0VTU19NRVRIT0Q7CiBib29sCQlzeW5jaHJvbml6ZV9zZXFzY2Fu cyA9IHRydWU7CiAKKy8qIEhlbHBlciBmb3IgdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKCkgYW5k IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldCgpICovCitzdGF0aWMgVGFibGVTY2FuRGVz YyB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxfY29tbW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJh bGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCisJCQkJCQkJCQkJCQkJIHVpbnQzMiBmbGFncyk7CisK IAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU2xvdCBmdW5jdGlvbnMuCkBAIC0xNjIsMTIg KzE2NiwxNCBAQCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsIFBh cmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKIAl9CiB9CiAKLVRhYmxlU2NhbkRlc2MKLXRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5E ZXNjIHBzY2FuKQorLyoKKyAqIENvbW1vbiBoZWxwZXIgZm9yIHRhYmxlX2JlZ2luc2Nhbl9wYXJh bGxlbCgpIGFuZCB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxfdm1zZXQoKQorICovCitzdGF0aWMg VGFibGVTY2FuRGVzYwordGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsX2NvbW1vbihSZWxhdGlvbiBy ZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCQl1aW50MzIgZmxh Z3MpCiB7CiAJU25hcHNob3QJc25hcHNob3Q7Ci0JdWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VR U0NBTiB8Ci0JCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VN T0RFOwogCiAJQXNzZXJ0KFJlbEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9y LCBwc2Nhbi0+cGhzX2xvY2F0b3IpKTsKIApAQCAtMTg4LDYgKzE5NCwzMSBAQCB0YWJsZV9iZWdp bnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBw c2NhbikKIAkJCQkJCQkJCQkJcHNjYW4sIGZsYWdzKTsKIH0KIAorVGFibGVTY2FuRGVzYwordGFi bGVfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2Nh bkRlc2MgcHNjYW4pCit7CisJdWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8CisJCVNP X0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOworCisJcmV0 dXJuIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF9jb21tb24ocmVsYXRpb24sIHBzY2FuLCBmbGFn cyk7Cit9CisKKy8qCisgKiBQYXJhbGxlbCB2ZXJzaW9uIG9mIHRhYmxlX2JlZ2luc2Nhbl92bXNl dCgpCisgKi8KK1RhYmxlU2NhbkRlc2MKK3RhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChS ZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCSAg IGJvb2wgbW9kaWZpZXNfcmVsKQoreworCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4g fAorCQlTT19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsK KworCWlmICghbW9kaWZpZXNfcmVsKQorCQlmbGFncyB8PSBTT19BTExPV19WTV9TRVQ7CisKKwly ZXR1cm4gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsX2NvbW1vbihyZWxhdGlvbiwgcHNjYW4sIGZs YWdzKTsKK30KKwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBJbmRleCBzY2FuIHJlbGF0 ZWQgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggODMxYzU1Y2U3ODcuLjE1 YmUzMThmZDQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTkxNiw2ICs5MTYsMTAgQEAg SW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQkJCWJyZWFrOwog CQkJfQogCisJCQkvKiBJZiBpdCBoYXMgYSByb3dtYXJrLCB0aGUgcmVsYXRpb24gaXMgbW9kaWZp ZWQgKi8KKwkJCWVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXIoZXN0 YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJCQkJCQkJCQkJCXJjLT5ydGkpOworCiAJCQkv KiBDaGVjayB0aGF0IHJlbGF0aW9uIGlzIGEgbGVnYWwgdGFyZ2V0IGZvciBtYXJraW5nICovCiAJ CQlpZiAocmVsYXRpb24pCiAJCQkJQ2hlY2tWYWxpZFJvd01hcmtSZWwocmVsYXRpb24sIHJjLT5t YXJrVHlwZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IGZkYzY1YzJiNDJiLi4yOGEw NmRjZDI0NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTg5Myw2ICs4OTMsOCBAQCBF eGVjSW5pdFJlc3VsdFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvLAogCQllc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbnMgPSAoUmVzdWx0UmVsSW5m byAqKikKIAkJCXBhbGxvYzAoZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXplICogc2l6ZW9mKFJl c3VsdFJlbEluZm8gKikpOwogCWVzdGF0ZS0+ZXNfcmVzdWx0X3JlbGF0aW9uc1tydGkgLSAxXSA9 IHJlc3VsdFJlbEluZm87CisJZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMgPSBibXNfYWRkX21l bWJlcihlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcywKKwkJCQkJCQkJCQkJCXJ0aSk7CiAKIAkv KgogCSAqIFNhdmluZyBpbiB0aGUgbGlzdCBhbGxvd3MgdG8gYXZvaWQgbmVlZGxlc3NseSB0cmF2 ZXJzaW5nIHRoZSB3aG9sZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4u YwppbmRleCBiZjI0ZjNkN2ZlMC4uYWY2ZGI5Zjc5MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVCaXRtYXBIZWFwc2Nhbi5jCkBAIC0xMDUsMTEgKzEwNSwxNiBAQCBCaXRtYXBUYWJsZVNj YW5TZXR1cChCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmICghbm9kZS0+c3Mu c3NfY3VycmVudFNjYW5EZXNjKQogCXsKKwkJYm9vbAkJbW9kaWZpZXNfcmVsID0KKwkJCWJtc19p c19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkg IG5vZGUtPnNzLnBzLnN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpOworCiAJCW5vZGUtPnNzLnNz X2N1cnJlbnRTY2FuRGVzYyA9CiAJCQl0YWJsZV9iZWdpbnNjYW5fYm0obm9kZS0+c3Muc3NfY3Vy cmVudFJlbGF0aW9uLAogCQkJCQkJCSAgIG5vZGUtPnNzLnBzLnN0YXRlLT5lc19zbmFwc2hvdCwK IAkJCQkJCQkgICAwLAotCQkJCQkJCSAgIE5VTEwpOworCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJ ICAgbW9kaWZpZXNfcmVsKTsKIAl9CiAKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MtPnN0 LnJzX3RibWl0ZXJhdG9yID0gdGJtaXRlcmF0b3I7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhz Y2FuLmMKaW5kZXggN2ZjYWEzN2ZlNjIuLmMyZmZiZDNiMDhlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4c2Nhbi5jCkBAIC0xMDIsMTYgKzEwMiwyMiBAQCBJbmRleE5leHQoSW5kZXhTY2Fu U3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisKKwkJYm9vbAkJbW9k aWZpZXNfYmFzZV9yZWwgPQorCQkJYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMu cGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCSAgZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpOwor CiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIGluZGV4IHNjYW4gaXMgbm90IHBhcmFs bGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxseSBleGVjdXRpbmcgYW4gaW5kZXggc2NhbiB0 aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgogCQkgKi8KLQkJc2NhbmRlc2MgPSBpbmRl eF9iZWdpbnNjYW4obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAotCQkJCQkJCQkgICBub2Rl LT5pc3NfUmVsYXRpb25EZXNjLAotCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJ CQkJCQkgICAmbm9kZS0+aXNzX0luc3RydW1lbnQsCi0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1T Y2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzKTsKKwkJc2NhbmRl c2MgPSBpbmRleF9iZWdpbnNjYW5fdm1zZXQobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAor CQkJCQkJCQkJCSBub2RlLT5pc3NfUmVsYXRpb25EZXNjLAorCQkJCQkJCQkJCSBlc3RhdGUtPmVz X3NuYXBzaG90LAorCQkJCQkJCQkJCSAmbm9kZS0+aXNzX0luc3RydW1lbnQsCisJCQkJCQkJCQkJ IG5vZGUtPmlzc19OdW1TY2FuS2V5cywKKwkJCQkJCQkJCQkgbm9kZS0+aXNzX051bU9yZGVyQnlL ZXlzLAorCQkJCQkJCQkJCSBtb2RpZmllc19iYXNlX3JlbCk7CiAKIAkJbm9kZS0+aXNzX1NjYW5E ZXNjID0gc2NhbmRlc2M7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVT ZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDk0MDQ3 ZDI5NDMwLi5mZDY5Mjc1YzE4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC02 NSwxMyArNjUsMTggQEAgU2VxTmV4dChTZXFTY2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRl c2MgPT0gTlVMTCkKIAl7CisJCWJvb2wJCW1vZGlmaWVzX3JlbCA9CisJCQlibXNfaXNfbWVtYmVy KCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkJICBlc3RhdGUt PmVzX21vZGlmaWVkX3JlbGlkcyk7CisKIAkJLyoKIAkJICogV2UgcmVhY2ggaGVyZSBpZiB0aGUg c2NhbiBpcyBub3QgcGFyYWxsZWwsIG9yIGlmIHdlJ3JlIHNlcmlhbGx5CiAJCSAqIGV4ZWN1dGlu ZyBhIHNjYW4gdGhhdCB3YXMgcGxhbm5lZCB0byBiZSBwYXJhbGxlbC4KIAkJICovCi0JCXNjYW5k ZXNjID0gdGFibGVfYmVnaW5zY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKLQkJCQkJ CQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKLQkJCQkJCQkJICAgMCwgTlVMTCk7CisJCXNjYW5k ZXNjID0gdGFibGVfYmVnaW5zY2FuX3Ztc2V0KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwK KwkJCQkJCQkJCQkgZXN0YXRlLT5lc19zbmFwc2hvdCwKKwkJCQkJCQkJCQkgMCwgTlVMTCwgbW9k aWZpZXNfcmVsKTsKKwogCQlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBzY2FuZGVzYzsK IAl9CiAKQEAgLTM2Niw2ICszNzEsNyBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVEU00oU2VxU2Nh blN0YXRlICpub2RlLAogCQkJCQkJIFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIHsKIAlFU3RhdGUJ ICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOworCWJvb2wJCW1vZGlmaWVzX3JlbDsKIAlQ YXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CiAKIAlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUo cGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwpAQCAtMzczLDggKzM3OSwxMSBAQCBFeGVjU2Vx U2NhbkluaXRpYWxpemVEU00oU2VxU2NhblN0YXRlICpub2RlLAogCQkJCQkJCQkgIHBzY2FuLAog CQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3QpOwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRv Yywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBwc2Nhbik7CisJbW9kaWZpZXNfcmVs ID0gYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwK KwkJCQkJCQkJIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKTsKIAlub2RlLT5zcy5zc19jdXJy ZW50U2NhbkRlc2MgPQotCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3Vy cmVudFJlbGF0aW9uLCBwc2Nhbik7CisJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChu b2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuLAorCQkJCQkJCQkJICAgbW9kaWZpZXNf cmVsKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDA0LDggKzQxMywxMyBAQCBFeGVjU2VxU2Nhbklu aXRpYWxpemVXb3JrZXIoU2VxU2NhblN0YXRlICpub2RlLAogCQkJCQkJCVBhcmFsbGVsV29ya2Vy Q29udGV4dCAqcHdjeHQpCiB7CiAJUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOworCWJvb2wJ CW1vZGlmaWVzX3JlbCA9CisJCWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBs YW4pLT5zY2FucmVsaWQsCisJCQkJCSAgbm9kZS0+c3MucHMuc3RhdGUtPmVzX21vZGlmaWVkX3Jl bGlkcyk7CiAKIAlwc2NhbiA9IHNobV90b2NfbG9va3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBz LnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2UpOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVz YyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRp b24sIHBzY2FuKTsKKwkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0KG5vZGUtPnNzLnNz X2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJCSAgIHBzY2FuLAorCQkJCQkJCQkJICAgbW9kaWZp ZXNfcmVsKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5kZXggOTIwMGEyMmJkOWYuLmFhMjExMmM4ZTA0IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvZ2VuYW0uaApAQCAtMTc4LDYgKzE3OCwxMSBAQCBleHRlcm4gSW5kZXhTY2FuRGVzYyBp bmRleF9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkJIFNuYXBzaG90 IHNuYXBzaG90LAogCQkJCQkJCQkJIEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVu dCwKIAkJCQkJCQkJCSBpbnQgbmtleXMsIGludCBub3JkZXJieXMpOworZXh0ZXJuIEluZGV4U2Nh bkRlc2MgaW5kZXhfYmVnaW5zY2FuX3Ztc2V0KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKKwkJCQkJ CQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgIFNuYXBzaG90IHNu YXBzaG90LAorCQkJCQkJCQkJCSAgIEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVu dCwKKwkJCQkJCQkJCQkgICBpbnQgbmtleXMsIGludCBub3JkZXJieXMsIGJvb2wgbW9kaWZpZXNf aGVhcF9yZWwpOwogZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2FuX2JpdG1hcChS ZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCQkJCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJ CQkJCQkJCQkJSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LApAQCAtMjA0LDYg KzIwOSwxMiBAQCBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwo UmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJCQkJCQkJICBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24g Kmluc3RydW1lbnQsCiAJCQkJCQkJCQkJCSAgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAogCQkJ CQkJCQkJCQkgIFBhcmFsbGVsSW5kZXhTY2FuRGVzYyBwc2Nhbik7CisKK2V4dGVybiBJbmRleFNj YW5EZXNjIGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChSZWxhdGlvbiBoZWFwcmVsLCBS ZWxhdGlvbiBpbmRleHJlbCwKKwkJCQkJCQkJCQkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24g Kmluc3RydW1lbnQsCisJCQkJCQkJCQkJCQkJaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAorCQkJ CQkJCQkJCQkJCVBhcmFsbGVsSW5kZXhTY2FuRGVzYyBwc2NhbiwKKwkJCQkJCQkJCQkJCQlib29s IG1vZGlmaWVzX3JlbCk7CiBleHRlcm4gSXRlbVBvaW50ZXIgaW5kZXhfZ2V0bmV4dF90aWQoSW5k ZXhTY2FuRGVzYyBzY2FuLAogCQkJCQkJCQkJIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uKTsKIGV4 dGVybiBib29sIGluZGV4X2ZldGNoX2hlYXAoSW5kZXhTY2FuRGVzYyBzY2FuLCBUdXBsZVRhYmxl U2xvdCAqc2xvdCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggZGYwNjMyYWViYzYuLjU5ZDhjZTlhZDQy IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC05NSw2ICs5NSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBIZWFw U2NhbkRlc2NEYXRhCiAJICovCiAJUGFyYWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlckRhdGEgKnJz X3BhcmFsbGVsd29ya2VyZGF0YTsKIAorCS8qCisJICogRm9yIHNlcXVlbnRpYWwgc2NhbnMgYW5k IGJpdG1hcCBoZWFwIHNjYW5zLiBJZiB0aGUgcmVsYXRpb24gaXMgbm90CisJICogYmVpbmcgbW9k aWZpZWQsIG9uLWFjY2VzcyBwcnVuaW5nIG1heSByZWFkIGluIHRoZSBjdXJyZW50IGhlYXAgcGFn ZSdzCisJICogY29ycmVzcG9uZGluZyBWTSBibG9jayB0byB0aGlzIGJ1ZmZlci4KKwkgKi8KKwlC dWZmZXIJCXJzX3ZtYnVmZmVyOworCiAJLyogdGhlc2UgZmllbGRzIG9ubHkgdXNlZCBpbiBwYWdl LWF0LWEtdGltZSBtb2RlIGFuZCBmb3IgYml0bWFwIHNjYW5zICovCiAJdWludDMyCQlyc19jaW5k ZXg7CQkvKiBjdXJyZW50IHR1cGxlJ3MgaW5kZXggaW4gdmlzdHVwbGVzICovCiAJdWludDMyCQly c19udHVwbGVzOwkJLyogbnVtYmVyIG9mIHZpc2libGUgdHVwbGVzIG9uIHBhZ2UgKi8KQEAgLTEx Nyw4ICsxMjQsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhGZXRjaEhlYXBEYXRhCiB7CiAJSW5k ZXhGZXRjaFRhYmxlRGF0YSB4c19iYXNlOwkvKiBBTSBpbmRlcGVuZGVudCBwYXJ0IG9mIHRoZSBk ZXNjcmlwdG9yICovCiAKLQlCdWZmZXIJCXhzX2NidWY7CQkvKiBjdXJyZW50IGhlYXAgYnVmZmVy IGluIHNjYW4sIGlmIGFueSAqLwotCS8qIE5COiBpZiB4c19jYnVmIGlzIG5vdCBJbnZhbGlkQnVm ZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyICovCisJLyoKKwkgKiBDdXJyZW50IGhl YXAgYnVmZmVyIGluIHNjYW4sIGlmIGFueS4gTkI6IGlmIHhzX2NidWYgaXMgbm90CisJICogSW52 YWxpZEJ1ZmZlciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0IGJ1ZmZlci4KKwkgKi8KKwlCdWZmZXIJ CXhzX2NidWY7CisKKwkvKgorCSAqIEZvciBpbmRleCBzY2FucyB0aGF0IGRvIG5vdCBtb2RpZnkg dGhlIHVuZGVybHlpbmcgaGVhcCB0YWJsZSwgb24tYWNjZXNzCisJICogcHJ1bmluZyBtYXkgcmVh ZCBpbiB0aGUgY3VycmVudCBoZWFwIHBhZ2UncyBjb3JyZXNwb25kaW5nIFZNIGJsb2NrIHRvCisJ ICogdGhpcyBidWZmZXIuCisJICovCisJQnVmZmVyCQl4c192bWJ1ZmZlcjsKIH0gSW5kZXhGZXRj aEhlYXBEYXRhOwogCiAvKiBSZXN1bHQgY29kZXMgZm9yIEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1 bSAqLwpAQCAtNDE1LDcgKzQzMiw4IEBAIGV4dGVybiBUcmFuc2FjdGlvbklkIGhlYXBfaW5kZXhf ZGVsZXRlX3R1cGxlcyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCSAgVE1fSW5kZXhEZWxldGVP cCAqZGVsc3RhdGUpOwogCiAvKiBpbiBoZWFwL3BydW5laGVhcC5jICovCi1leHRlcm4gdm9pZCBo ZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKTsKK2V4 dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIsCisJCQkJCQkJCUJ1ZmZlciAqdm1idWZmZXIpOwogZXh0ZXJuIHZvaWQgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCQkJCSAg IFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAogCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpv ZmZfbG9jLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKaW5kZXggYjVlMGZiMzg2YzAuLmY0OTZlMGI0OTM5IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9yZWxzY2FuLmgKQEAgLTEyMSw2ICsxMjEsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFy YWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlckRhdGEgKlBhcmFsbGVsQmxvY2tUYWJsZVNjYW5Xb3Jr ZXI7CiB0eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhCiB7CiAJUmVsYXRpb24JcmVs OworCisJLyoKKwkgKiBTb21lIG9wdGltaXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlm IHRoZSBxdWVyeSBkb2VzIG5vdCBtb2RpZnkKKwkgKiB0aGUgdW5kZXJseWluZyByZWxhdGlvbi4g VHJhY2sgdGhhdCBoZXJlLgorCSAqLworCWJvb2wJCW1vZGlmaWVzX2Jhc2VfcmVsOwogfSBJbmRl eEZldGNoVGFibGVEYXRhOwogCiBzdHJ1Y3QgSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy90YWJsZWFtLmgKaW5kZXggZTE2YmYwMjU2OTIuLmYyNTBkNGU3YWVjIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJs ZWFtLmgKQEAgLTYzLDYgKzYzLDggQEAgdHlwZWRlZiBlbnVtIFNjYW5PcHRpb25zCiAKIAkvKiB1 bnJlZ2lzdGVyIHNuYXBzaG90IGF0IHNjYW4gZW5kPyAqLwogCVNPX1RFTVBfU05BUFNIT1QgPSAx IDw8IDksCisJLyogd2hldGhlciBvciBub3Qgc2NhbiBzaG91bGQgYXR0ZW1wdCB0byBzZXQgdGhl IFZNICovCisJU09fQUxMT1dfVk1fU0VUID0gMSA8PCAxMCwKIH0JCQlTY2FuT3B0aW9uczsKIAog LyoKQEAgLTg4Miw2ICs4ODQsMjUgQEAgdGFibGVfYmVnaW5zY2FuKFJlbGF0aW9uIHJlbCwgU25h cHNob3Qgc25hcHNob3QsCiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+c2Nhbl9iZWdpbihyZWws IHNuYXBzaG90LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7CiB9CiAKKy8qCisgKiBTaW1pbGFy IHRvIHRhYmxlX2JlZ2luc2NhbigpLCBidXQgYWxsb3dzIHRoZSBjYWxsZXIgdG8gaW5kaWNhdGUg d2hldGhlciB0aGUKKyAqIHF1ZXJ5IG1vZGlmaWVzIHRoZSByZWxhdGlvbi4gVGhpcyBpcyB1c2Vk IHdoZW4gdGhlIGNhbGxlciB3YW50cyB0byBhdHRlbXB0CisgKiBtYXJraW5nIHBhZ2VzIGluIHRo ZSByZWxhdGlvbiBhcyBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgZHVyaW5nCisg KiBvbi1hY2Nlc3MgcHJ1bmluZy4KKyAqLworc3RhdGljIGlubGluZSBUYWJsZVNjYW5EZXNjCit0 YWJsZV9iZWdpbnNjYW5fdm1zZXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJ CQkJICBpbnQgbmtleXMsIHN0cnVjdCBTY2FuS2V5RGF0YSAqa2V5LCBib29sIG1vZGlmaWVzX3Jl bCkKK3sKKwl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKwkJU09fQUxMT1dfU1RS QVQgfCBTT19BTExPV19TWU5DIHwgU09fQUxMT1dfUEFHRU1PREU7CisKKwlpZiAoIW1vZGlmaWVz X3JlbCkKKwkJZmxhZ3MgfD0gU09fQUxMT1dfVk1fU0VUOworCisJcmV0dXJuIHJlbC0+cmRfdGFi bGVhbS0+c2Nhbl9iZWdpbihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7 Cit9CisKIC8qCiAgKiBMaWtlIHRhYmxlX2JlZ2luc2NhbigpLCBidXQgZm9yIHNjYW5uaW5nIGNh dGFsb2cuIEl0J2xsIGF1dG9tYXRpY2FsbHkgdXNlIGEKICAqIHNuYXBzaG90IGFwcHJvcHJpYXRl IGZvciBzY2FubmluZyBjYXRhbG9nIHJlbGF0aW9ucy4KQEAgLTkxOSwxMCArOTQwLDEzIEBAIHRh YmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogICov CiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9ibShSZWxhdGlv biByZWwsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCSAgIGludCBua2V5cywgU2NhbktleURhdGEg KmtleSkKKwkJCQkgICBpbnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksIGJvb2wgbW9kaWZpZXNf cmVsKQogewogCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX0JJVE1BUFNDQU4gfCBTT19BTExPV19Q QUdFTU9ERTsKIAorCWlmICghbW9kaWZpZXNfcmVsKQorCQlmbGFncyB8PSBTT19BTExPV19WTV9T RVQ7CisKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3Qs IG5rZXlzLCBrZXksCiAJCQkJCQkJCQkgICBOVUxMLCBmbGFncyk7CiB9CkBAIC0xMTMwLDYgKzEx NTQsMTAgQEAgZXh0ZXJuIHZvaWQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRp b24gcmVsLAogZXh0ZXJuIFRhYmxlU2NhbkRlc2MgdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKFJl bGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2Nh bik7CiAKK2V4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNl dChSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkRlc2Mg cHNjYW4sCisJCQkJCQkJCQkJCQkJYm9vbCBtb2RpZmllc19yZWwpOworCiAvKgogICogUmVzdGFy dCBhIHBhcmFsbGVsIHNjYW4uICBDYWxsIHRoaXMgaW4gdGhlIGxlYWRlciBwcm9jZXNzLiAgQ2Fs bGVyIGlzCiAgKiByZXNwb25zaWJsZSBmb3IgbWFraW5nIHN1cmUgdGhhdCBhbGwgd29ya2VycyBo YXZlIGZpbmlzaGVkIHRoZSBzY2FuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGEzNjY1M2MzN2Y5 Li45YzU0ZmEwNmU0YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTY3Niw2ICs2NzYsMTIgQEAg dHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJCQkgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZygp ICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQgZnJvbSBRdWVy eURlc2MgKi8KIAorCS8qCisJICogUlQgaW5kZXhlcyBvZiByZWxhdGlvbnMgbW9kaWZpZWQgYnkg dGhlIHF1ZXJ5IGVpdGhlciB0aHJvdWdoCisJICogVVBEQVRFL0RFTEVURS9JTlNFUlQvTUVSR0Ug b3IgU0VMRUNUIEZPUiBVUERBVEUKKwkgKi8KKwlCaXRtYXBzZXQgICplc19tb2RpZmllZF9yZWxp ZHM7CisKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVyOwkvKiB0b3AtbGV2ZWwganVuayBmaWx0 ZXIsIGlmIGFueSAqLwogCiAJLyogSWYgcXVlcnkgY2FuIGluc2VydC9kZWxldGUgdHVwbGVzLCB0 aGUgY29tbWFuZCBJRCB0byBtYXJrIHRoZW0gd2l0aCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsIGIvc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsCmluZGV4IGM5YzE4Mjg5MmNm Li5mNWMwYzY1YjI2MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRi eV9sb2dpY2FsX2RlY29kaW5nLnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5k YnlfbG9naWNhbF9kZWNvZGluZy5wbApAQCAtMjk2LDYgKzI5Niw3IEBAIHdhbF9sZXZlbCA9ICds b2dpY2FsJwogbWF4X3JlcGxpY2F0aW9uX3Nsb3RzID0gNAogbWF4X3dhbF9zZW5kZXJzID0gNAog YXV0b3ZhY3V1bSA9IG9mZgoraG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgogfSk7CiAkbm9kZV9w cmltYXJ5LT5kdW1wX2luZm87CiAkbm9kZV9wcmltYXJ5LT5zdGFydDsKQEAgLTc0NSw3ICs3NDYs NyBAQCBjaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwKICRsb2dzdGFydCA9IC1z ICRub2RlX3N0YW5kYnktPmxvZ2ZpbGU7CiAKIHJlYWN0aXZlX3Nsb3RzX2NoYW5nZV9oZnNfYW5k X3dhaXRfZm9yX3htaW5zKCdzaGFyZWRfcm93X3JlbW92YWxfJywKLQknbm9fY29uZmxpY3RfJywg MCwgMSk7CisJJ25vX2NvbmZsaWN0XycsIDEsIDApOwogCiAjIFRoaXMgc2hvdWxkIG5vdCB0cmln Z2VyIGEgY29uZmxpY3QKIHdhaXRfdW50aWxfdmFjdXVtX2Nhbl9yZW1vdmUoCi0tIAoyLjQzLjAK Cg== --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="US-ASCII"; name="v17-0009-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v17-0009-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil3sjn8 RnJvbSAzZjhiMzhlZWM3MjllYmUzNzExY2RiODUwYmI3NjhmMTQwMjk3OTVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgMDkvMTVdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRlYW0u cnU+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMgICAgICB8ICAgNCAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICB8ICA1NCArLS0tLS0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICB8IDE1NSArKy0tLS0t LS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAg ICB8ICAxOCArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAg MTYgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTEwICst LS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAg fCAgMTAgLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEg LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggICAgICAgICB8ICAyOCArLS0tCiBzcmMvaW5j bHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oICAgICAgIHwgIDE1ICstLQogc3JjL2luY2x1ZGUv YWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggICB8ICAgOSAtLQogc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QgICAgICAgICB8ICAgMSAtCiAxMyBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNl cnRpb25zKCspLCAzNzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi9idWZtYXNrLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2su YwppbmRleCBiYjI2MGNmZmE2OC4uNWYwN2YxNzk0MTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vYnVmbWFzay5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v YnVmbWFzay5jCkBAIC01Niw4ICs1Niw4IEBAIG1hc2tfcGFnZV9oaW50X2JpdHMoUGFnZSBwYWdl KQogCiAJLyoKIAkgKiBEdXJpbmcgcmVwbGF5LCBpZiB0aGUgcGFnZSBMU04gaGFzIGFkdmFuY2Vk IHBhc3Qgb3VyIFhMT0cgcmVjb3JkJ3MgTFNOLAotCSAqIHdlIGRvbid0IG1hcmsgdGhlIHBhZ2Ug YWxsLXZpc2libGUuIFNlZSBoZWFwX3hsb2dfdmlzaWJsZSgpIGZvcgotCSAqIGRldGFpbHMuCisJ ICogd2UgZG9uJ3QgbWFyayB0aGUgcGFnZSBhbGwtdmlzaWJsZS4gU2VlIGhlYXBfeGxvZ19wcnVu ZV9hbmRfZnJlZXplKCkKKwkgKiBmb3IgbW9yZSBkZXRhaWxzLgogCSAqLwogCVBhZ2VDbGVhckFs bFZpc2libGUocGFnZSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDdmMzU0Y2Fl YzMxLi4xNGEyOTk2YjllZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTI1MjQsMTEg KzI1MjQsMTEgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFi bGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQllbHNlIGlmIChhbGxfZnJvemVuX3NldCkK IAkJewogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFwX3NldF92 bWJpdHMoQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwKLQkJCQkJCQkJCSB2bWJ1ZmZlciwK LQkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSBWSVNJQklM SVRZTUFQX0FMTF9GUk9aRU4sCi0JCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs YXRpb24pKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZl ciksCisJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lC TEUgfAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJCQkJCSAgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKTsKIAkJfQogCiAJCS8qCkBAIC04Nzk4LDUwICs4 Nzk4LDYgQEAgYm90dG9tdXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0 YXRlKQogCXJldHVybiBuYmxvY2tzZmF2b3JhYmxlOwogfQogCi0vKgotICogUGVyZm9ybSBYTG9n SW5zZXJ0IGZvciBhIGhlYXAtdmlzaWJsZSBvcGVyYXRpb24uICAnYmxvY2snIGlzIHRoZSBibG9j awotICogYmVpbmcgbWFya2VkIGFsbC12aXNpYmxlLCBhbmQgdm1fYnVmZmVyIGlzIHRoZSBidWZm ZXIgY29udGFpbmluZyB0aGUKLSAqIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgYmxvY2su ICBCb3RoIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBtb2RpZmllZAotICogYW5kIGRpcnRpZWQu Ci0gKgotICogc25hcHNob3RDb25mbGljdEhvcml6b24gY29tZXMgZnJvbSB0aGUgbGFyZ2VzdCB4 bWluIG9uIHRoZSBwYWdlIGJlaW5nCi0gKiBtYXJrZWQgYWxsLXZpc2libGUuICBSRURPIHJvdXRp bmUgdXNlcyBpdCB0byBnZW5lcmF0ZSByZWNvdmVyeSBjb25mbGljdHMuCi0gKgotICogSWYgY2hl Y2tzdW1zIG9yIHdhbF9sb2dfaGludHMgYXJlIGVuYWJsZWQsIHdlIG1heSBhbHNvIGdlbmVyYXRl IGEgZnVsbC1wYWdlCi0gKiBpbWFnZSBvZiBoZWFwX2J1ZmZlci4gT3RoZXJ3aXNlLCB3ZSBvcHRp bWl6ZSBhd2F5IHRoZSBGUEkgKGJ5IHNwZWNpZnlpbmcKLSAqIFJFR0JVRl9OT19JTUFHRSBmb3Ig dGhlIGhlYXAgYnVmZmVyKSwgaW4gd2hpY2ggY2FzZSB0aGUgY2FsbGVyIHNob3VsZCAqbm90Kgot ICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCi0gKi8KLVhMb2dSZWNQdHIKLWxvZ19oZWFw X3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZm ZXIsCi0JCQkJIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sIHVpbnQ4IHZt ZmxhZ3MpCi17Ci0JeGxfaGVhcF92aXNpYmxlIHhscmVjOwotCVhMb2dSZWNQdHIJcmVjcHRyOwot CXVpbnQ4CQlmbGFnczsKLQotCUFzc2VydChCdWZmZXJJc1ZhbGlkKGhlYXBfYnVmZmVyKSk7Ci0J QXNzZXJ0KEJ1ZmZlcklzVmFsaWQodm1fYnVmZmVyKSk7Ci0KLQl4bHJlYy5zbmFwc2hvdENvbmZs aWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwotCXhscmVjLmZsYWdzID0gdm1m bGFnczsKLQlpZiAoUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpKQot CQl4bHJlYy5mbGFncyB8PSBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUw7Ci0JWExvZ0Jl Z2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVPZkhlYXBWaXNpYmxl KTsKLQotCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCB2bV9idWZmZXIsIDApOwotCi0JZmxhZ3MgPSBS RUdCVUZfU1RBTkRBUkQ7Ci0JaWYgKCFYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCWZsYWdzIHw9 IFJFR0JVRl9OT19JTUFHRTsKLQlYTG9nUmVnaXN0ZXJCdWZmZXIoMSwgaGVhcF9idWZmZXIsIGZs YWdzKTsKLQotCXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fSEVBUDJfSUQsIFhMT0dfSEVBUDJfVklT SUJMRSk7Ci0KLQlyZXR1cm4gcmVjcHRyOwotfQotCiAvKgogICogUGVyZm9ybSBYTG9nSW5zZXJ0 IGZvciBhIGhlYXAtdXBkYXRlIG9wZXJhdGlvbi4gIENhbGxlciBtdXN0IGFscmVhZHkKICAqIGhh dmUgbW9kaWZpZWQgdGhlIGJ1ZmZlcihzKSBhbmQgbWFya2VkIHRoZW0gZGlydHkuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCBmNjYyNGJjOThkMC4uYWViOTdjYzNjZWEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtMjU4LDcgKzI1OCw3IEBA IGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJLyog V2UgZG9uJ3QgaGF2ZSByZWxhdGlvbiBuYW1lIGR1cmluZyByZWNvdmVyeSwgc28gdXNlIHJlbGZp bGVub2RlICovCiAJCXJlbG5hbWUgPSBwc3ByaW50ZigiJXUiLCBybG9jYXRvci5yZWxOdW1iZXIp OwotCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25vLCB2bWJ1ZmZl ciwgdm1mbGFncywgcmVsbmFtZSk7CisJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChi bGtubywgdm1idWZmZXIsIHZtZmxhZ3MsIHJlbG5hbWUpOwogCiAJCS8qIE9ubHkgc2V0IFZNIHBh Z2UgTFNOIGlmIHdlIG1vZGlmaWVkIHRoZSBwYWdlICovCiAJCWlmIChvbGRfdm1iaXRzICE9IHZt ZmxhZ3MpCkBAIC0yNzYsMTQyICsyNzYsNiBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlYTG9nUmVjb3JkUGFnZVdpdGhGcmVlU3BhY2UocmxvY2F0 b3IsIGJsa25vLCBmcmVlc3BhY2UpOwogfQogCi0vKgotICogUmVwbGF5IFhMT0dfSEVBUDJfVklT SUJMRSByZWNvcmRzLgotICoKLSAqIFRoZSBjcml0aWNhbCBpbnRlZ3JpdHkgcmVxdWlyZW1lbnQg aGVyZSBpcyB0aGF0IHdlIG11c3QgbmV2ZXIgZW5kIHVwIHdpdGgKLSAqIGEgc2l0dWF0aW9uIHdo ZXJlIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0LCBhbmQgdGhlIHBhZ2UtbGV2ZWwKLSAq IFBEX0FMTF9WSVNJQkxFIGJpdCBpcyBjbGVhci4gIElmIHRoYXQgd2VyZSB0byBvY2N1ciwgdGhl biBhIHN1YnNlcXVlbnQKLSAqIHBhZ2UgbW9kaWZpY2F0aW9uIHdvdWxkIGZhaWwgdG8gY2xlYXIg dGhlIHZpc2liaWxpdHkgbWFwIGJpdC4KLSAqLwotc3RhdGljIHZvaWQKLWhlYXBfeGxvZ192aXNp YmxlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQotewotCVhMb2dSZWNQdHIJbHNuID0gcmVjb3Jk LT5FbmRSZWNQdHI7Ci0JeGxfaGVhcF92aXNpYmxlICp4bHJlYyA9ICh4bF9oZWFwX3Zpc2libGUg KikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsKLQlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1 ZmZlcjsKLQlCdWZmZXIJCWJ1ZmZlcjsKLQlQYWdlCQlwYWdlOwotCVJlbEZpbGVMb2NhdG9yIHJs b2NhdG9yOwotCUJsb2NrTnVtYmVyIGJsa25vOwotCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKLQot CUFzc2VydCgoeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9YTE9HX1ZBTElEX0JJVFMpID09 IHhscmVjLT5mbGFncyk7Ci0KLQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAxLCAmcmxvY2F0 b3IsIE5VTEwsICZibGtubyk7Ci0KLQkvKgotCSAqIElmIHRoZXJlIGFyZSBhbnkgSG90IFN0YW5k YnkgdHJhbnNhY3Rpb25zIHJ1bm5pbmcgdGhhdCBoYXZlIGFuIHhtaW4KLQkgKiBob3Jpem9uIG9s ZCBlbm91Z2ggdGhhdCB0aGlzIHBhZ2UgaXNuJ3QgYWxsLXZpc2libGUgZm9yIHRoZW0sIHRoZXkK LQkgKiBtaWdodCBpbmNvcnJlY3RseSBkZWNpZGUgdGhhdCBhbiBpbmRleC1vbmx5IHNjYW4gY2Fu IHNraXAgYSBoZWFwIGZldGNoLgotCSAqCi0JICogTkI6IEl0IG1pZ2h0IGJlIGJldHRlciB0byB0 aHJvdyBzb21lIGtpbmQgb2YgInNvZnQiIGNvbmZsaWN0IGhlcmUgdGhhdAotCSAqIGZvcmNlcyBh bnkgaW5kZXgtb25seSBzY2FuIHRoYXQgaXMgaW4gZmxpZ2h0IHRvIHBlcmZvcm0gaGVhcCBmZXRj aGVzLAotCSAqIHJhdGhlciB0aGFuIGtpbGxpbmcgdGhlIHRyYW5zYWN0aW9uIG91dHJpZ2h0Lgot CSAqLwotCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNu YXBzaG90KHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJCQkJeGxyZWMt PmZsYWdzICYgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMLAotCQkJCQkJCQkJCQlybG9j YXRvcik7Ci0KLQkvKgotCSAqIFJlYWQgdGhlIGhlYXAgcGFnZSwgaWYgaXQgc3RpbGwgZXhpc3Rz LiBJZiB0aGUgaGVhcCBmaWxlIGhhcyBkcm9wcGVkIG9yCi0JICogdHJ1bmNhdGVkIGxhdGVyIGlu IHJlY292ZXJ5LCB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSB0aGUgcGFnZSwgYnV0IHdlJ2QKLQkg KiBiZXR0ZXIgc3RpbGwgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4KLQkgKi8KLQlhY3Rpb24g PSBYTG9nUmVhZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAxLCAmYnVmZmVyKTsKLQlpZiAoYWN0aW9u ID09IEJMS19ORUVEU19SRURPKQotCXsKLQkJLyoKLQkJICogV2UgZG9uJ3QgYnVtcCB0aGUgTFNO IG9mIHRoZSBoZWFwIHBhZ2Ugd2hlbiBzZXR0aW5nIHRoZSB2aXNpYmlsaXR5Ci0JCSAqIG1hcCBi aXQgKHVubGVzcyBjaGVja3N1bXMgb3Igd2FsX2hpbnRfYml0cyBpcyBlbmFibGVkLCBpbiB3aGlj aAotCQkgKiBjYXNlIHdlIG11c3QpLiBUaGlzIGV4cG9zZXMgdXMgdG8gdG9ybiBwYWdlIGhhemFy ZHMsIGJ1dCBzaW5jZQotCQkgKiB3ZSdyZSBub3QgaW5zcGVjdGluZyB0aGUgZXhpc3RpbmcgcGFn ZSBjb250ZW50cyBpbiBhbnkgd2F5LCB3ZQotCQkgKiBkb24ndCBjYXJlLgotCQkgKi8KLQkJcGFn ZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKLQotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsK LQotCQlpZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQkJUGFnZVNldExTTihwYWdlLCBsc24p OwotCi0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwotCX0KLQllbHNlIGlmIChhY3Rpb24gPT0g QkxLX1JFU1RPUkVEKQotCXsKLQkJLyoKLQkJICogSWYgaGVhcCBibG9jayB3YXMgYmFja2VkIHVw LCB3ZSBhbHJlYWR5IHJlc3RvcmVkIGl0IGFuZCB0aGVyZSdzCi0JCSAqIG5vdGhpbmcgbW9yZSB0 byBkby4gKFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdpdGggY2hlY2tzdW1zIG9yCi0JCSAqIHdhbF9s b2dfaGludHMgZW5hYmxlZC4pCi0JCSAqLwotCX0KLQotCWlmIChCdWZmZXJJc1ZhbGlkKGJ1ZmZl cikpCi0JewotCQlTaXplCQlzcGFjZSA9IFBhZ2VHZXRGcmVlU3BhY2UoQnVmZmVyR2V0UGFnZShi dWZmZXIpKTsKLQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7Ci0KLQkJLyoKLQkJICog U2luY2UgRlNNIGlzIG5vdCBXQUwtbG9nZ2VkIGFuZCBvbmx5IHVwZGF0ZWQgaGV1cmlzdGljYWxs eSwgaXQKLQkJICogZWFzaWx5IGJlY29tZXMgc3RhbGUgaW4gc3RhbmRieXMuICBJZiB0aGUgc3Rh bmRieSBpcyBsYXRlciBwcm9tb3RlZAotCQkgKiBhbmQgcnVucyBWQUNVVU0sIGl0IHdpbGwgc2tp cCB1cGRhdGluZyBpbmRpdmlkdWFsIGZyZWUgc3BhY2UKLQkJICogZmlndXJlcyBmb3IgcGFnZXMg dGhhdCBiZWNhbWUgYWxsLXZpc2libGUgKG9yIGFsbC1mcm96ZW4sIGRlcGVuZGluZwotCQkgKiBv biB0aGUgdmFjdXVtIG1vZGUsKSB3aGljaCBpcyB0cm91Ymxlc29tZSB3aGVuIEZyZWVTcGFjZU1h cFZhY3V1bQotCQkgKiBwcm9wYWdhdGVzIHRvbyBvcHRpbWlzdGljIGZyZWUgc3BhY2UgdmFsdWVz IHRvIHVwcGVyIEZTTSBsYXllcnM7Ci0JCSAqIGxhdGVyIGluc2VydGVycyB0cnkgdG8gdXNlIHN1 Y2ggcGFnZXMgb25seSB0byBmaW5kIG91dCB0aGF0IHRoZXkKLQkJICogYXJlIHVudXNhYmxlLiAg VGhpcyBjYW4gY2F1c2UgbG9uZyBzdGFsbHMgd2hlbiB0aGVyZSBhcmUgbWFueSBzdWNoCi0JCSAq IHBhZ2VzLgotCQkgKgotCQkgKiBGb3Jlc3RhbGwgdGhvc2UgcHJvYmxlbXMgYnkgdXBkYXRpbmcg RlNNJ3MgaWRlYSBhYm91dCBhIHBhZ2UgdGhhdAotCQkgKiBpcyBiZWNvbWluZyBhbGwtdmlzaWJs ZSBvciBhbGwtZnJvemVuLgotCQkgKgotCQkgKiBEbyB0aGlzIHJlZ2FyZGxlc3Mgb2YgYSBmdWxs LXBhZ2UgaW1hZ2UgYmVpbmcgYXBwbGllZCwgc2luY2UgdGhlCi0JCSAqIEZTTSBkYXRhIGlzIG5v dCBpbiB0aGUgcGFnZSBhbnl3YXkuCi0JCSAqLwotCQlpZiAoeGxyZWMtPmZsYWdzICYgVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKQotCQkJWExvZ1JlY29yZFBhZ2VXaXRoRnJlZVNwYWNlKHJsb2Nh dG9yLCBibGtubywgc3BhY2UpOwotCX0KLQotCS8qCi0JICogRXZlbiBpZiB3ZSBza2lwcGVkIHRo ZSBoZWFwIHBhZ2UgdXBkYXRlIGR1ZSB0byB0aGUgTFNOIGludGVybG9jaywgaXQncwotCSAqIHN0 aWxsIHNhZmUgdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4gIEFueSBXQUwgcmVjb3JkIHRo YXQgY2xlYXJzCi0JICogdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBkb2VzIHNvIGJlZm9yZSBjaGVj a2luZyB0aGUgcGFnZSBMU04sIHNvIGFueQotCSAqIGJpdHMgdGhhdCBuZWVkIHRvIGJlIGNsZWFy ZWQgd2lsbCBzdGlsbCBiZSBjbGVhcmVkLgotCSAqLwotCWlmIChYTG9nUmVhZEJ1ZmZlckZvclJl ZG9FeHRlbmRlZChyZWNvcmQsIDAsIFJCTV9aRVJPX09OX0VSUk9SLCBmYWxzZSwKLQkJCQkJCQkJ CSAgJnZtYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0JCVBhZ2UJCXZtcGFnZSA9IEJ1 ZmZlckdldFBhZ2Uodm1idWZmZXIpOwotCQlSZWxhdGlvbglyZWxuOwotCQl1aW50OAkJdm1iaXRz OwotCi0JCS8qIGluaXRpYWxpemUgdGhlIHBhZ2UgaWYgaXQgd2FzIHJlYWQgYXMgemVyb3MgKi8K LQkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQotCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDAp OwotCi0JCS8qIHJlbW92ZSBWSVNJQklMSVRZTUFQX1hMT0dfKiAqLwotCQl2bWJpdHMgPSB4bHJl Yy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0KLQkJLyoKLQkJICogWExvZ1Jl YWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQgbG9ja2VkIHRoZSBidWZmZXIuIEJ1dAotCQkgKiB2aXNp YmlsaXR5bWFwX3NldCB3aWxsIGhhbmRsZSBsb2NraW5nIGl0c2VsZi4KLQkJICovCi0JCUxvY2tC dWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0KLQkJcmVsbiA9IENyZWF0ZUZh a2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKLQotCQl2aXNpYmlsaXR5bWFwX3NldChyZWxuLCBi bGtubywgSW52YWxpZEJ1ZmZlciwgbHNuLCB2bWJ1ZmZlciwKLQkJCQkJCSAgeGxyZWMtPnNuYXBz aG90Q29uZmxpY3RIb3Jpem9uLCB2bWJpdHMpOwotCi0JCVJlbGVhc2VCdWZmZXIodm1idWZmZXIp OwotCQlGcmVlRmFrZVJlbGNhY2hlRW50cnkocmVsbik7Ci0JfQotCWVsc2UgaWYgKEJ1ZmZlcklz VmFsaWQodm1idWZmZXIpKQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKLX0KLQog LyoKICAqIEdpdmVuIGFuICJpbmZvYml0cyIgZmllbGQgZnJvbSBhbiBYTG9nIHJlY29yZCwgc2V0 IHRoZSBjb3JyZWN0IGJpdHMgaW4gdGhlCiAgKiBnaXZlbiBpbmZvbWFzayBhbmQgaW5mb21hc2sy IGZvciB0aGUgdHVwbGUgdG91Y2hlZCBieSB0aGUgcmVjb3JkLgpAQCAtNzg5LDggKzY1Myw4IEBA IGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICoKIAkg KiBEdXJpbmcgcmVjb3ZlcnksIGhvd2V2ZXIsIG5vIGNvbmN1cnJlbnQgd3JpdGVycyBleGlzdC4g VGhlcmVmb3JlLAogCSAqIHVwZGF0aW5nIHRoZSBWTSB3aXRob3V0IGhvbGRpbmcgdGhlIGhlYXAg cGFnZSBsb2NrIGlzIHNhZmUgZW5vdWdoLiBUaGlzCi0JICogc2FtZSBhcHByb2FjaCBpcyB0YWtl biB3aGVuIHJlcGxheWluZyB4bF9oZWFwX3Zpc2libGUgcmVjb3JkcyAoc2VlCi0JICogaGVhcF94 bG9nX3Zpc2libGUoKSkuCisJICogc2FtZSBhcHByb2FjaCBpcyB0YWtlbiB3aGVuIHJlcGxheWlu ZyBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmRzIChzZWUKKwkgKiBoZWFwX3hsb2dfcHJ1bmVfYW5k X2ZyZWV6ZSgpKS4KIAkgKi8KIAlpZiAoKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZS T1pFTl9TRVQpICYmCiAJCVhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMSwg UkJNX1pFUk9fT05fRVJST1IsIGZhbHNlLApAQCAtODA1LDExICs2NjksMTEgQEAgaGVhcF94bG9n X211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCQkvKiBXZSBkb24ndCBo YXZlIHJlbGF0aW9uIG5hbWUgZHVyaW5nIHJlY292ZXJ5LCBzbyB1c2UgcmVsZmlsZW5vZGUgKi8K IAkJcmVsbmFtZSA9IHBzcHJpbnRmKCIldSIsIHJsb2NhdG9yLnJlbE51bWJlcik7Ci0JCXZpc2li aWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJCQkg VklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU4sCi0JCQkJCQkJCSByZWxuYW1lKTsKKwkJdmlzaWJpbGl0eW1hcF9zZXQoYmxrbm8sCisJ CQkJCQkgIHZtYnVmZmVyLAorCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJ CQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJCQkJICByZWxuYW1lKTsKIAogCQlQ YWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpLCBsc24pOwogCQlwZnJlZShyZWxuYW1l KTsKQEAgLTEzOTAsOSArMTI1NCw2IEBAIGhlYXAyX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWhlYXBfeGxv Z19wcnVuZV9mcmVlemUocmVjb3JkKTsKIAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklT SUJMRToKLQkJCWhlYXBfeGxvZ192aXNpYmxlKHJlY29yZCk7Ci0JCQlicmVhazsKIAkJY2FzZSBY TE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWhlYXBfeGxvZ19tdWx0aV9pbnNlcnQocmVjb3Jk KTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBmNzA1NjMw MDhlMS4uMjFiMjRmMzk5MmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0x MDI5LDkgKzEwMjksOSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBh cmFtcyAqcGFyYW1zLAogCQl7CiAJCQlBc3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CiAK LQkJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxvY2tubywKLQkJCQkJ CQkJCQkJCSAgdm1idWZmZXIsIG5ld192bWJpdHMsCi0JCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHBhcmFtcy0+cmVsYXRpb24pKTsKKwkJCW9sZF92bWJpdHMgPSB2aXNpYmls aXR5bWFwX3NldChibG9ja25vLAorCQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBuZXdfdm1iaXRzLAor CQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmFtcy0+cmVsYXRpb24pKTsK IAkJCWlmIChvbGRfdm1iaXRzID09IG5ld192bWJpdHMpCiAJCQl7CiAJCQkJTG9ja0J1ZmZlcih2 bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKQEAgLTIzMDgsMTQgKzIzMDgsMTggQEAgZ2V0 X2NvbmZsaWN0X3hpZChib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwgYm9vbCBkb19zZXRf dm0sCiAgKgogICogVGhpcyBpcyB1c2VkIGZvciBzZXZlcmFsIGRpZmZlcmVudCBwYWdlIG1haW50 ZW5hbmNlIG9wZXJhdGlvbnM6CiAgKgotICogLSBQYWdlIHBydW5pbmcsIGluIFZBQ1VVTSdzIDFz dCBwYXNzIG9yIG9uIGFjY2VzczogU29tZSBpdGVtcyBhcmUKKyAqIC0gUGFnZSBwcnVuaW5nLCBp biB2YWN1dW0gcGhhc2UgSSBvciBvbi1hY2Nlc3M6IFNvbWUgaXRlbXMgYXJlCiAgKiAgIHJlZGly ZWN0ZWQsIHNvbWUgbWFya2VkIGRlYWQsIGFuZCBzb21lIHJlbW92ZWQgYWx0b2dldGhlci4KICAq Ci0gKiAtIEZyZWV6aW5nOiBJdGVtcyBhcmUgbWFya2VkIGFzICdmcm96ZW4nLgorICogLSBGcmVl emluZzogRHVyaW5nIHZhY3V1bSBwaGFzZSBJLCBpdGVtcyBhcmUgbWFya2VkIGFzICdmcm96ZW4n CiAgKgotICogLSBWYWN1dW0sIDJuZCBwYXNzOiBJdGVtcyB0aGF0IGFyZSBhbHJlYWR5IExQX0RF QUQgYXJlIG1hcmtlZCBhcyB1bnVzZWQuCisgKiAtIFJlYXBpbmc6IER1cmluZyB2YWN1dW0gcGhh c2UgSUlJLCBpdGVtcyB0aGF0IGFyZSBhbHJlYWR5IExQX0RFQUQgYXJlCisgKiAgIG1hcmtlZCBh cyB1bnVzZWQuCiAgKgotICogVGhleSBoYXZlIGVub3VnaCBjb21tb25hbGl0aWVzIHRoYXQgd2Ug dXNlIGEgc2luZ2xlIFdBTCByZWNvcmQgZm9yIHRoZW0KKyAqIC0gVk0gdXBkYXRlczogQWZ0ZXIg dmFjdXVtIHBoYXNlcyBJIGFuZCBJSUksIHRoZSBoZWFwIHBhZ2UgbWF5IGJlIG1hcmtlZAorICog ICBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbi4KKyAqCisgKiBUaGVzZSBjaGFuZ2VzIGFsbCBo YXBwZW4gdG9nZXRoZXIsIHNvIHdlIHVzZSBhIHNpbmdsZSBXQUwgcmVjb3JkIGZvciB0aGVtCiAg KiBhbGwuCiAgKgogICogSWYgcmVwbGF5aW5nIHRoZSByZWNvcmQgcmVxdWlyZXMgYSBjbGVhbnVw IGxvY2ssIHBhc3MgY2xlYW51cF9sb2NrID0gdHJ1ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYwppbmRleCA5NDFiOTg5ZWM1MC4uMWIyMGM5NjAzM2UgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKQEAgLTE5MDAsMTEgKzE5MDAsMTEgQEAgbGF6eV9zY2FuX25ld19v cl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25v LAogCQkJCWxvZ19uZXdwYWdlX2J1ZmZlcihidWYsIHRydWUpOwogCiAJCQlQYWdlU2V0QWxsVmlz aWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJ CSB2bWJ1ZmZlciwKLQkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJ CQkJCSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCi0JCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUodmFjcmVsLT5yZWwpKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLAorCQkJ CQkJCSAgdm1idWZmZXIsCisJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJ CQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkgIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHZhY3JlbC0+cmVsKSk7CiAKIAkJCS8qCiAJCQkgKiBFbWl0IFdBTCBmb3Igc2V0 dGluZyBQRF9BTExfVklTSUJMRSBvbiB0aGUgaGVhcCBwYWdlIGFuZApAQCAtMjc4NCw5ICsyNzg0 LDkgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1i ZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJaWYgKCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9W QUxJRF9CSVRTKSAhPSAwKQogCXsKIAkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCXZpc2li aWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJIHZtYnVmZmVyLCB2bWZsYWdzLAot CQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodmFjcmVsLT5yZWwpKTsKKwkJdmlzaWJp bGl0eW1hcF9zZXQoYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdzLAorCQkJCQkJICBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh2YWNyZWwtPnJlbCkpOwogCQljb25mbGljdF94aWQgPSB2 aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmls aXR5bWFwLmMKaW5kZXggMmQ0MzE0N2ZmYjcuLjUxZDIwNmU1MTdkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw4ICsxNCw3IEBACiAgKgkJdmlzaWJpbGl0 eW1hcF9jbGVhciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFnZSBpbiB0aGUgdmlzaWJpbGl0eSBt YXAKICAqCQl2aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBtYXAgcGFnZSBmb3Igc2V0dGluZyBh IGJpdAogICoJCXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hlY2sgd2hldGhlciBjb3JyZWN0IG1h cCBwYWdlIGlzIGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXQJIC0gc2V0IGJp dChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UgYW5kIGxvZwotICoJCXZpc2liaWxpdHlt YXBfc2V0X3ZtYml0cyAtIHNldCBiaXQocykgaW4gYSBwaW5uZWQgcGFnZQorICoJCXZpc2liaWxp dHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlCiAgKgkJ dmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzIC0gZ2V0IHN0YXR1cyBvZiBiaXRzCiAgKgkJdmlzaWJp bGl0eW1hcF9jb3VudCAgLSBjb3VudCBudW1iZXIgb2YgYml0cyBzZXQgaW4gdmlzaWJpbGl0eSBt YXAKICAqCQl2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUgLQpAQCAtMjIwLDEwNyArMjE5 LDYgQEAgdmlzaWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZt YnVmKQogCXJldHVybiBCdWZmZXJJc1ZhbGlkKHZtYnVmKSAmJiBCdWZmZXJHZXRCbG9ja051bWJl cih2bWJ1ZikgPT0gbWFwQmxvY2s7CiB9CiAKLS8qCi0gKgl2aXNpYmlsaXR5bWFwX3NldCAtIHNl dCBiaXQocykgb24gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlCi0gKgotICogcmVjcHRyIGlzIHRo ZSBMU04gb2YgdGhlIFhMT0cgcmVjb3JkIHdlJ3JlIHJlcGxheWluZywgaWYgd2UncmUgaW4gcmVj b3ZlcnksCi0gKiBvciBJbnZhbGlkWExvZ1JlY1B0ciBpbiBub3JtYWwgcnVubmluZy4gIFRoZSBW TSBwYWdlIExTTiBpcyBhZHZhbmNlZCB0byB0aGUKLSAqIG9uZSBwcm92aWRlZDsgaW4gbm9ybWFs IHJ1bm5pbmcsIHdlIGdlbmVyYXRlIGEgbmV3IFhMT0cgcmVjb3JkIGFuZCBzZXQgdGhlCi0gKiBw YWdlIExTTiB0byB0aGF0IHZhbHVlICh0aG91Z2ggdGhlIGhlYXAgcGFnZSdzIExTTiBtYXkgKm5v dCogYmUgdXBkYXRlZDsKLSAqIHNlZSBiZWxvdykuICBjdXRvZmZfeGlkIGlzIHRoZSBsYXJnZXN0 IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcgbWFya2VkCi0gKiBhbGwtdmlzaWJsZTsgaXQgaXMgbmVl ZGVkIGZvciBIb3QgU3RhbmRieSwgYW5kIGNhbiBiZSBJbnZhbGlkVHJhbnNhY3Rpb25JZAotICog aWYgdGhlIHBhZ2UgY29udGFpbnMgbm8gdHVwbGVzLiAgSXQgY2FuIGFsc28gYmUgc2V0IHRvIElu dmFsaWRUcmFuc2FjdGlvbklkCi0gKiB3aGVuIGEgcGFnZSB0aGF0IGlzIGFscmVhZHkgYWxsLXZp c2libGUgaXMgYmVpbmcgbWFya2VkIGFsbC1mcm96ZW4uCi0gKgotICogQ2FsbGVyIGlzIGV4cGVj dGVkIHRvIHNldCB0aGUgaGVhcCBwYWdlJ3MgUERfQUxMX1ZJU0lCTEUgYml0IGJlZm9yZSBjYWxs aW5nCi0gKiB0aGlzIGZ1bmN0aW9uLiBFeGNlcHQgaW4gcmVjb3ZlcnksIGNhbGxlciBzaG91bGQg YWxzbyBwYXNzIHRoZSBoZWFwCi0gKiBidWZmZXIuIFdoZW4gY2hlY2tzdW1zIGFyZSBlbmFibGVk IGFuZCB3ZSdyZSBub3QgaW4gcmVjb3ZlcnksIHdlIG11c3QgYWRkCi0gKiB0aGUgaGVhcCBidWZm ZXIgdG8gdGhlIFdBTCBjaGFpbiB0byBwcm90ZWN0IGl0IGZyb20gYmVpbmcgdG9ybi4KLSAqCi0g KiBZb3UgbXVzdCBwYXNzIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGNvcnJlY3QgbWFwIHBhZ2Ug dG8gdGhpcyBmdW5jdGlvbi4KLSAqIENhbGwgdmlzaWJpbGl0eW1hcF9waW4gZmlyc3QgdG8gcGlu IHRoZSByaWdodCBvbmUuIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBkbwotICogYW55IEkvTy4KLSAq Ci0gKiBSZXR1cm5zIHRoZSBzdGF0ZSBvZiB0aGUgcGFnZSdzIFZNIGJpdHMgYmVmb3JlIHNldHRp bmcgZmxhZ3MuCi0gKi8KLXVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAotCQkJCSAgWExvZ1JlY1B0ciByZWNw dHIsIEJ1ZmZlciB2bUJ1ZiwgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAotCQkJCSAgdWludDgg ZmxhZ3MpCi17Ci0JQmxvY2tOdW1iZXIgbWFwQmxvY2sgPSBIRUFQQkxLX1RPX01BUEJMT0NLKGhl YXBCbGspOwotCXVpbnQzMgkJbWFwQnl0ZSA9IEhFQVBCTEtfVE9fTUFQQllURShoZWFwQmxrKTsK LQl1aW50OAkJbWFwT2Zmc2V0ID0gSEVBUEJMS19UT19PRkZTRVQoaGVhcEJsayk7Ci0JUGFnZQkJ cGFnZTsKLQl1aW50OAkgICAqbWFwOwotCXVpbnQ4CQlzdGF0dXM7Ci0KLSNpZmRlZiBUUkFDRV9W SVNJQklMSVRZTUFQCi0JZWxvZyhERUJVRzEsICJ2bV9zZXQgZmxhZ3MgMHglMDJYIGZvciAlcyAl ZCIsCi0JCSBmbGFncywgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcEJsayk7Ci0j ZW5kaWYKLQotCUFzc2VydChJblJlY292ZXJ5IHx8IFhMb2dSZWNQdHJJc0ludmFsaWQocmVjcHRy KSk7Ci0JQXNzZXJ0KEluUmVjb3ZlcnkgfHwgUGFnZUlzQWxsVmlzaWJsZShCdWZmZXJHZXRQYWdl KGhlYXBCdWYpKSk7Ci0JQXNzZXJ0KChmbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykg PT0gZmxhZ3MpOwotCi0JLyogTXVzdCBuZXZlciBzZXQgYWxsX2Zyb3plbiBiaXQgd2l0aG91dCBh bHNvIHNldHRpbmcgYWxsX3Zpc2libGUgYml0ICovCi0JQXNzZXJ0KGZsYWdzICE9IFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTik7Ci0KLQkvKiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGhl YXAgcGFnZSBwaW5uZWQsIGlmIHByZXNlbnQgKi8KLQlpZiAoQnVmZmVySXNWYWxpZChoZWFwQnVm KSAmJiBCdWZmZXJHZXRCbG9ja051bWJlcihoZWFwQnVmKSAhPSBoZWFwQmxrKQotCQllbG9nKEVS Uk9SLCAid3JvbmcgaGVhcCBidWZmZXIgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0Iik7Ci0K LQlBc3NlcnQoIUJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgfHwgQnVmZmVySXNFeGNsdXNpdmVMb2Nr ZWQoaGVhcEJ1ZikpOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBWTSBwYWdl IHBpbm5lZCAqLwotCWlmICghQnVmZmVySXNWYWxpZCh2bUJ1ZikgfHwgQnVmZmVyR2V0QmxvY2tO dW1iZXIodm1CdWYpICE9IG1hcEJsb2NrKQotCQllbG9nKEVSUk9SLCAid3JvbmcgVk0gYnVmZmVy IHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0JcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo dm1CdWYpOwotCW1hcCA9ICh1aW50OCAqKSBQYWdlR2V0Q29udGVudHMocGFnZSk7Ci0JTG9ja0J1 ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKLQotCXN0YXR1cyA9IChtYXBbbWFw Qnl0ZV0gPj4gbWFwT2Zmc2V0KSAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUzsKLQlpZiAoZmxh Z3MgIT0gc3RhdHVzKQotCXsKLQkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7Ci0KLQkJbWFwW21hcEJ5 dGVdIHw9IChmbGFncyA8PCBtYXBPZmZzZXQpOwotCQlNYXJrQnVmZmVyRGlydHkodm1CdWYpOwot Ci0JCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCi0JCXsKLQkJCWlmIChYTG9nUmVjUHRySXNJ bnZhbGlkKHJlY3B0cikpCi0JCQl7Ci0JCQkJQXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQlyZWNw dHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwgdm1CdWYsIGN1dG9mZl94aWQsIGZs YWdzKTsKLQotCQkJCS8qCi0JCQkJICogSWYgZGF0YSBjaGVja3N1bXMgYXJlIGVuYWJsZWQgKG9y IHdhbF9sb2dfaGludHM9b24pLCB3ZQotCQkJCSAqIG5lZWQgdG8gcHJvdGVjdCB0aGUgaGVhcCBw YWdlIGZyb20gYmVpbmcgdG9ybi4KLQkJCQkgKgotCQkJCSAqIElmIG5vdCwgdGhlbiB3ZSBtdXN0 ICpub3QqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLiBJbgotCQkJCSAqIHRoaXMgY2FzZSwg dGhlIEZQSSBmb3IgdGhlIGhlYXAgcGFnZSB3YXMgb21pdHRlZCBmcm9tIHRoZQotCQkJCSAqIFdB TCByZWNvcmQgaW5zZXJ0ZWQgYWJvdmUsIHNvIGl0IHdvdWxkIGJlIGluY29ycmVjdCB0bwotCQkJ CSAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLgotCQkJCSAqLwotCQkJCWlmIChYTG9nSGlu dEJpdElzTmVlZGVkKCkpCi0JCQkJewotCQkJCQlQYWdlCQloZWFwUGFnZSA9IEJ1ZmZlckdldFBh Z2UoaGVhcEJ1Zik7Ci0KLQkJCQkJUGFnZVNldExTTihoZWFwUGFnZSwgcmVjcHRyKTsKLQkJCQl9 Ci0JCQl9Ci0JCQlQYWdlU2V0TFNOKHBhZ2UsIHJlY3B0cik7Ci0JCX0KLQotCQlFTkRfQ1JJVF9T RUNUSU9OKCk7Ci0JfQotCi0JTG9ja0J1ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsK LQlyZXR1cm4gc3RhdHVzOwotfQogCiAvKgogICogU2V0IHZpc2liaWxpdHkgbWFwIChWTSkgZmxh Z3MgaW4gdGhlIGJsb2NrIHJlZmVyZW5jZWQgYnkgdm1CdWYuCkBAIC0zNDMsOSArMjQxLDkgQEAg dmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZm ZXIgaGVhcEJ1ZiwKICAqIGhlYXBSZWxuYW1lIGlzIHVzZWQgb25seSBmb3IgZGVidWdnaW5nLgog ICovCiB1aW50OAotdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJsb2NrTnVtYmVyIGhlYXBCbGss Ci0JCQkJCQkgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKLQkJCQkJCSBjb25zdCBjaGFyICpo ZWFwUmVsbmFtZSkKK3Zpc2liaWxpdHltYXBfc2V0KEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJ ICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAorCQkJCSAgY29uc3QgY2hhciAqaGVhcFJlbG5h bWUpCiB7CiAJQmxvY2tOdW1iZXIgbWFwQmxvY2sgPSBIRUFQQkxLX1RPX01BUEJMT0NLKGhlYXBC bGspOwogCXVpbnQzMgkJbWFwQnl0ZSA9IEhFQVBCTEtfVE9fTUFQQllURShoZWFwQmxrKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggMWNiNDRjYTMyZDMuLjkzNTA1 Y2I4YzU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2Mu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpAQCAtMzQ5LDEz ICszNDksNiBAQCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAkJCX0KIAkJfQogCX0KLQllbHNlIGlmIChpbmZvID09IFhMT0dfSEVBUDJfVklTSUJM RSkKLQl7Ci0JCXhsX2hlYXBfdmlzaWJsZSAqeGxyZWMgPSAoeGxfaGVhcF92aXNpYmxlICopIHJl YzsKLQotCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOiAl dSwgZmxhZ3M6IDB4JTAyWCIsCi0JCQkJCQkgeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9u LCB4bHJlYy0+ZmxhZ3MpOwotCX0KIAllbHNlIGlmIChpbmZvID09IFhMT0dfSEVBUDJfTVVMVElf SU5TRVJUKQogCXsKIAkJeGxfaGVhcF9tdWx0aV9pbnNlcnQgKnhscmVjID0gKHhsX2hlYXBfbXVs dGlfaW5zZXJ0ICopIHJlYzsKQEAgLTQ2MCw5ICs0NTMsNiBAQCBoZWFwMl9pZGVudGlmeSh1aW50 OCBpbmZvKQogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFOVVA6CiAJCQlpZCA9 ICJQUlVORV9WQUNVVU1fQ0xFQU5VUCI7CiAJCQlicmVhazsKLQkJY2FzZSBYTE9HX0hFQVAyX1ZJ U0lCTEU6Ci0JCQlpZCA9ICJWSVNJQkxFIjsKLQkJCWJyZWFrOwogCQljYXNlIFhMT0dfSEVBUDJf TVVMVElfSU5TRVJUOgogCQkJaWQgPSAiTVVMVElfSU5TRVJUIjsKIAkJCWJyZWFrOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggY2MwM2YwNzA2ZTkuLjJmZGQ0 YWY5MGE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29k ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTQ1 NCw3ICs0NTQsNiBAQCBoZWFwMl9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBY TG9nUmVjb3JkQnVmZmVyICpidWYpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1M6 CiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTjoKIAkJY2FzZSBYTE9HX0hFQVAy X1BSVU5FX1ZBQ1VVTV9DTEVBTlVQOgotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKIAkJY2Fz ZSBYTE9HX0hFQVAyX0xPQ0tfVVBEQVRFRDoKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDQyMjJiZGFiMDc4Li5jNjE5NjQzZTEyMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtNDc1LDEyICs0NzUsMTIgQEAgUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9y aXpvbiwKIAkgKiBJZiB3ZSBnZXQgcGFzc2VkIEludmFsaWRUcmFuc2FjdGlvbklkIHRoZW4gd2Ug ZG8gbm90aGluZyAobm8gY29uZmxpY3QpLgogCSAqCiAJICogVGhpcyBjYW4gaGFwcGVuIHdoZW4g cmVwbGF5aW5nIGFscmVhZHktYXBwbGllZCBXQUwgcmVjb3JkcyBhZnRlciBhCi0JICogc3RhbmRi eSBjcmFzaCBvciByZXN0YXJ0LCBvciB3aGVuIHJlcGxheWluZyBhbiBYTE9HX0hFQVAyX1ZJU0lC TEUKLQkgKiByZWNvcmQgdGhhdCBtYXJrcyBhcyBmcm96ZW4gYSBwYWdlIHdoaWNoIHdhcyBhbHJl YWR5IGFsbC12aXNpYmxlLiAgSXQncwotCSAqIGFsc28gcXVpdGUgY29tbW9uIHdpdGggcmVjb3Jk cyBnZW5lcmF0ZWQgZHVyaW5nIGluZGV4IGRlbGV0aW9uCi0JICogKG9yaWdpbmFsIGV4ZWN1dGlv biBvZiB0aGUgZGVsZXRpb24gY2FuIHJlYXNvbiB0aGF0IGEgcmVjb3ZlcnkgY29uZmxpY3QKLQkg KiB3aGljaCBpcyBzdWZmaWNpZW50IGZvciB0aGUgZGVsZXRpb24gb3BlcmF0aW9uIG11c3QgdGFr ZSBwbGFjZSBiZWZvcmUKLQkgKiByZXBsYXkgb2YgdGhlIGRlbGV0aW9uIHJlY29yZCBpdHNlbGYp LgorCSAqIHN0YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Igd2hlbiByZXBsYXlpbmcgYSByZWNv cmQgdGhhdCBtYXJrcyBhcworCSAqIGZyb3plbiBhIHBhZ2Ugd2hpY2ggd2FzIGFscmVhZHkgbWFy a2VkIGFsbC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5CisJICogbWFwLiAgSXQncyBhbHNvIHF1 aXRlIGNvbW1vbiB3aXRoIHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRleAorCSAqIGRlbGV0 aW9uIChvcmlnaW5hbCBleGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiByZWFzb24gdGhhdCBh IHJlY292ZXJ5CisJICogY29uZmxpY3Qgd2hpY2ggaXMgc3VmZmljaWVudCBmb3IgdGhlIGRlbGV0 aW9uIG9wZXJhdGlvbiBtdXN0IHRha2UgcGxhY2UKKwkgKiBiZWZvcmUgcmVwbGF5IG9mIHRoZSBk ZWxldGlvbiByZWNvcmQgaXRzZWxmKS4KIAkgKi8KIAlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKSkKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hs b2cuaAppbmRleCAxNmMyYjJlM2M5Yy4uZTllNzdiZDY3OGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1f eGxvZy5oCkBAIC02MCw3ICs2MCw2IEBACiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfT05fQUND RVNTCQkweDEwCiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU4JMHgyMAogI2Rl ZmluZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQCTB4MzAKLSNkZWZpbmUgWExPR19I RUFQMl9WSVNJQkxFCQkweDQwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUIDB4NTAK ICNkZWZpbmUgWExPR19IRUFQMl9MT0NLX1VQREFURUQgMHg2MAogI2RlZmluZSBYTE9HX0hFQVAy X05FV19DSUQJCTB4NzAKQEAgLTI5NCw3ICsyOTMsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVh cF9wcnVuZQogCiAjZGVmaW5lIFNpemVPZkhlYXBQcnVuZSAob2Zmc2V0b2YoeGxfaGVhcF9wcnVu ZSwgZmxhZ3MpICsgc2l6ZW9mKHVpbnQxNikpCiAKLS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25m bGljdCBkdXJpbmcgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCisvKgorICogVG8gaGFu ZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnks IHdlIG11c3Qga25vdworICogaWYgdGhlIHRhYmxlIGlzIGEgY2F0YWxvZyB0YWJsZS4gTm90ZSB0 aGF0IGluIHZpc2liaWxpdHltYXBkZWZzLmgKKyAqIFZJU0lCTElUWU1BUF9YTE9HX0NBVEFMT0df UkVMIGlzIGFsc28gZGVmaW5lZCBhcyAoMSA8PCAyKS4geGxfaGVhcF9wcnVuZQorICogcmVjb3Jk cyBzaG91bGQgdXNlIFhMSFBfSVNfQ0FUQUxPR19SRUwsIG5vdCBWSVNJQklMSVlUTUFQX1hMT0df Q0FUQUxPR19SRUwgLS0KKyAqIGV2ZW4gaWYgdGhleSBvbmx5IGNvbnRhaW4gdXBkYXRlcyB0byB0 aGUgVk0uCisgKi8KICNkZWZpbmUJCVhMSFBfSVNfQ0FUQUxPR19SRUwJCQkoMSA8PCAxKQogCiAv KgpAQCAtNDQzLDIwICs0NDgsNiBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2lucGxhY2UKIAog I2RlZmluZSBNaW5TaXplT2ZIZWFwSW5wbGFjZQkob2Zmc2V0b2YoeGxfaGVhcF9pbnBsYWNlLCBu bXNncykgKyBzaXplb2YoaW50KSkKIAotLyoKLSAqIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtu b3cgYWJvdXQgc2V0dGluZyBhIHZpc2liaWxpdHkgbWFwIGJpdAotICoKLSAqIEJhY2t1cCBibGsg MDogdmlzaWJpbGl0eSBtYXAgYnVmZmVyCi0gKiBCYWNrdXAgYmxrIDE6IGhlYXAgYnVmZmVyCi0g Ki8KLXR5cGVkZWYgc3RydWN0IHhsX2hlYXBfdmlzaWJsZQotewotCVRyYW5zYWN0aW9uSWQgc25h cHNob3RDb25mbGljdEhvcml6b247Ci0JdWludDgJCWZsYWdzOwotfSB4bF9oZWFwX3Zpc2libGU7 Ci0KLSNkZWZpbmUgU2l6ZU9mSGVhcFZpc2libGUgKG9mZnNldG9mKHhsX2hlYXBfdmlzaWJsZSwg ZmxhZ3MpICsgc2l6ZW9mKHVpbnQ4KSkKLQogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9uZXdfY2lk CiB7CiAJLyoKQEAgLTUwMCwxMSArNDkxLDYgQEAgZXh0ZXJuIHZvaWQgaGVhcDJfZGVzYyhTdHJp bmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIGNvbnN0IGNoYXIg KmhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pOwogZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2xvZ2lj YWxfcmV3cml0ZShYTG9nUmVhZGVyU3RhdGUgKnIpOwogCi1leHRlcm4gWExvZ1JlY1B0ciBsb2df aGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLAotCQkJCQkJCQkg ICBCdWZmZXIgdm1fYnVmZmVyLAotCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAotCQkJCQkJCQkgICB1aW50OCB2bWZsYWdzKTsKLQogLyogaW4gaGVhcGRl c2MuYywgc28gaXQgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGZyb250ZW5kL2JhY2tlbmQgY29kZSAq LwogZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hh ciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAJCQkJCQkJCQkJCQkgICBpbnQgKm5wbGFucywgeGxo cF9mcmVlemVfcGxhbiAqKnBsYW5zLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zp c2liaWxpdHltYXAuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKaW5kZXgg M2RjZjM3YmEwM2YuLjg1OWU1Nzk1NDU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv dmlzaWJpbGl0eW1hcC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgK QEAgLTE1LDcgKzE1LDYgQEAKICNkZWZpbmUgVklTSUJJTElUWU1BUF9ICiAKICNpbmNsdWRlICJh Y2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCIKLSNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2Jsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWYuaCIKICNp bmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgpAQCAtMzEsMTUgKzMwLDExIEBAIGV4dGVybiBib29s IHZpc2liaWxpdHltYXBfY2xlYXIoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAog ZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9waW4oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBo ZWFwQmxrLAogCQkJCQkJCSAgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gYm9vbCB2aXNpYmlsaXR5 bWFwX3Bpbl9vayhCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYpOwotZXh0ZXJuIHVp bnQ4IHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwKLQkJCQkJCQkgICBCbG9ja051bWJl ciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKLQkJCQkJCQkgICBYTG9nUmVjUHRyIHJlY3B0ciwK LQkJCQkJCQkgICBCdWZmZXIgdm1CdWYsCi0JCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBjdXRvZmZf eGlkLAotCQkJCQkJCSAgIHVpbnQ4IGZsYWdzKTsKLWV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFw X3NldF92bWJpdHMoQmxvY2tOdW1iZXIgaGVhcEJsaywKLQkJCQkJCQkJCSAgQnVmZmVyIHZtQnVm LCB1aW50OCBmbGFncywKLQkJCQkJCQkJCSAgY29uc3QgY2hhciAqaGVhcFJlbG5hbWUpOworCitl eHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXQoQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJ CQkgICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAorCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmhl YXBSZWxuYW1lKTsKKwogZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxh dGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZv aWQgdmlzaWJpbGl0eW1hcF9jb3VudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlz aWJsZSwgQmxvY2tOdW1iZXIgKmFsbF9mcm96ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2li aWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZShSZWxhdGlvbiByZWwsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92 aXNpYmlsaXR5bWFwZGVmcy5oCmluZGV4IDVhZDVjMDIwODc3Li5lMDFiY2U0Yzk5ZiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKQEAgLTIxLDE0ICsyMSw1IEBACiAjZGVm aW5lIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkweDAyCiAjZGVmaW5lIFZJU0lCSUxJVFlNQVBf VkFMSURfQklUUwkweDAzCS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCiAJCQkJCQkJ CQkJCSAqIGZsYWdzIGJpdHMgKi8KLS8qCi0gKiBUbyBkZXRlY3QgcmVjb3ZlcnkgY29uZmxpY3Rz IGR1cmluZyBsb2dpY2FsIGRlY29kaW5nIG9uIGEgc3RhbmRieSwgd2UgbmVlZAotICogdG8ga25v dyBpZiBhIHRhYmxlIGlzIGEgdXNlciBjYXRhbG9nIHRhYmxlLiBGb3IgdGhhdCB3ZSBhZGQgYW4g YWRkaXRpb25hbAotICogYml0IGludG8geGxfaGVhcF92aXNpYmxlLmZsYWdzLCBpbiBhZGRpdGlv biB0byB0aGUgYWJvdmUuCi0gKgotICogTkI6IFZJU0lCSUxJVFlNQVBfWExPR18qIG1heSBub3Qg YmUgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0KCkuCi0gKi8KLSNkZWZpbmUgVklTSUJJTElU WU1BUF9YTE9HX0NBVEFMT0dfUkVMCTB4MDQKLSNkZWZpbmUgVklTSUJJTElUWU1BUF9YTE9HX1ZB TElEX0JJVFMJKFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyB8IFZJU0lCSUxJVFlNQVBfWExPR19D QVRBTE9HX1JFTCkKIAogI2VuZGlmCQkJCQkJCS8qIFZJU0lCSUxJVFlNQVBERUZTX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMjBmNDUyMzIxNzUuLjg4NWY5YWNmZjM5IDEwMDY0 NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDI3NSw3ICs0Mjc1LDYgQEAgeGxfaGVhcF9wcnVu ZQogeGxfaGVhcF9yZXdyaXRlX21hcHBpbmcKIHhsX2hlYXBfdHJ1bmNhdGUKIHhsX2hlYXBfdXBk YXRlCi14bF9oZWFwX3Zpc2libGUKIHhsX2ludmFsaWRfcGFnZQogeGxfaW52YWxpZF9wYWdlX2tl eQogeGxfaW52YWxpZGF0aW9ucwotLSAKMi40My4wCgo= --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="UTF-8"; name="v17-0014-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v17-0014-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil3sjv13 RnJvbSA1OGJhNDJkNjMxMjgwODUwNTE4NDdhYzFjOWQ3YTg4NzAyNjU3YzIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgMTQvMTVdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYWZ0ZXIgYSBwYWdl IGlzCmZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QgdGltZSBpdCBp cyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUg aW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQg dGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5z ZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRp bCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoKU2V0dGlu ZyBwZF9wcnVuZV94aWQgb24gaW5zZXJ0IGNhbiBjYXVzZSBhIHBhZ2UgdG8gYmUgZGlydGllZCBh bmQKd3JpdHRlbiBvdXQgd2hlbiBpdCBwcmV2aW91c2x5IHdvdWxkIG5vdCBoYXZlIGJlZW4sIGFm ZmV0Y3RpbmcgdGhlCnJlcG9ydGVkIG51bWJlciBvZiBoaXRzIGluIHRoZSBpbmRleC1raWxsdHVw bGVzIGlzb2xhdGlvbiB0ZXN0LiBJdCBpcwp1bmNsZWFyIGlmIHRoaXMgaXMgYSBidWcgaW4gdGhl IHdheSBoaXRzIGFyZSB0cmFja2VkLCBhIGZhdWx0eSB0ZXN0CmV4cGVjdGF0aW9uLCBvciBpZiBz aW1wbHkgdXBkYXRpbmcgdGhlIHRlc3QncyBleHBlY3RlZCBvdXRwdXQgaXMKc3VmZmljaWVudCBy ZW1lZGlhdGlvbi4KCmNpLW9zLW9ubHk6Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMgICAgICAgICAgICAgIHwgMjUgKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICAgICAgIHwgMTUgKysrKysrKysrKy0KIC4uLi9p c29sYXRpb24vZXhwZWN0ZWQvaW5kZXgta2lsbHR1cGxlcy5vdXQgICB8ICA2ICsrLS0tCiAzIGZp bGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMKaW5kZXggNjE4MWUzNTVhYWYuLjE3MDQyNjk3MTVlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYwpAQCAtMjEwNCw2ICsyMTA0LDcgQEAgaGVhcF9pbnNlcnQoUmVsYXRp b24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJZCBjaWQsCiAJVHJhbnNhY3Rpb25J ZCB4aWQgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOwogCUhlYXBUdXBsZQloZWFwdHVwOwog CUJ1ZmZlcgkJYnVmZmVyOworCVBhZ2UJCXBhZ2U7CiAJQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFs aWRCdWZmZXI7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xlYXJlZCA9IGZhbHNlOwogCkBAIC0yMTYz LDE1ICsyMTY0LDE5IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUg dHVwLCBDb21tYW5kSWQgY2lkLAogCX0KIAogCS8qCi0JICogWFhYIFNob3VsZCB3ZSBzZXQgUGFn ZVNldFBydW5hYmxlIG9uIHRoaXMgcGFnZSA/CisJICogU2V0IHBkX3BydW5lX3hpZCB0byB0cmln Z2VyIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgb25jZSB0aGUgcGFnZQorCSAqIGlzIGZ1 bGwgc28gdGhhdCB3ZSBjYW4gc2V0IHRoZSBwYWdlIGFsbC12aXNpYmxlIGluIHRoZSBWTS4KIAkg KgotCSAqIFRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24gbWF5IGV2ZW50dWFsbHkgYWJvcnQgdGh1 cyBtYWtpbmcgdGhpcyB0dXBsZQotCSAqIERFQUQgYW5kIGhlbmNlIGF2YWlsYWJsZSBmb3IgcHJ1 bmluZy4gVGhvdWdoIHdlIGRvbid0IHdhbnQgdG8gb3B0aW1pemUKLQkgKiBmb3IgYWJvcnRzLCBp ZiBubyBvdGhlciB0dXBsZSBpbiB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxFVEVkLCB0aGUKLQkg KiBhYm9ydGVkIHR1cGxlIHdpbGwgbmV2ZXIgYmUgcHJ1bmVkIHVudGlsIG5leHQgdmFjdXVtIGlz IHRyaWdnZXJlZC4KKwkgKiBTZXR0aW5nIHBkX3BydW5lX3hpZCBpcyBhbHNvIGhhbmR5IGlmIHRo ZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24KKwkgKiBldmVudHVhbGx5IGFib3J0cyBtYWtpbmcgdGhp cyB0dXBsZSBERUFEIGFuZCBoZW5jZSBhdmFpbGFibGUgZm9yCisJICogcHJ1bmluZy4gSWYgbm8g b3RoZXIgdHVwbGUgaW4gdGhpcyBwYWdlIGlzIFVQREFURWQvREVMRVRFZCwgdGhlIGFib3J0ZWQK KwkgKiB0dXBsZSB3b3VsZCBuZXZlciBvdGhlcndpc2UgYmUgcHJ1bmVkIHVudGlsIG5leHQgdmFj dXVtIGlzIHRyaWdnZXJlZC4KIAkgKgotCSAqIElmIHlvdSBkbyBhZGQgUGFnZVNldFBydW5hYmxl IGhlcmUsIGFkZCBpdCBpbiBoZWFwX3hsb2dfaW5zZXJ0IHRvby4KKwkgKiBEb24ndCBzZXQgaXQg aWYgd2UgYXJlIGluIGJvb3RzdHJhcCBtb2RlLCB0aG91Z2guCiAJICovCisJcGFnZSA9IEJ1ZmZl ckdldFBhZ2UoYnVmZmVyKTsKKwlpZiAoVHJhbnNhY3Rpb25JZElzTm9ybWFsKHhpZCkpCisJCVBh Z2VTZXRQcnVuYWJsZShwYWdlLCB4aWQpOwogCiAJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAK QEAgLTIxODEsNyArMjE4Niw2IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFw VHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCQl4bF9oZWFwX2luc2VydCB4bHJlYzsKIAkJeGxf aGVhcF9oZWFkZXIgeGxoZHI7CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwotCQlQYWdlCQlwYWdlID0g QnVmZmVyR2V0UGFnZShidWZmZXIpOwogCQl1aW50OAkJaW5mbyA9IFhMT0dfSEVBUF9JTlNFUlQ7 CiAJCWludAkJCWJ1ZmZsYWdzID0gMDsKIApAQCAtMjU0NSw4ICsyNTQ5LDEzIEBAIGhlYXBfbXVs dGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQg bnR1cGxlcywKIAkJfQogCiAJCS8qCi0JCSAqIFhYWCBTaG91bGQgd2Ugc2V0IFBhZ2VTZXRQcnVu YWJsZSBvbiB0aGlzIHBhZ2UgPyBTZWUgaGVhcF9pbnNlcnQoKQorCQkgKiBTZXQgcGRfcHJ1bmVf eGlkLiBTZWUgaGVhcF9pbnNlcnQoKSBmb3IgbW9yZSBvbiB3aHkgd2UgZG8gdGhpcyB3aGVuCisJ CSAqIGluc2VydGluZyB0dXBsZXMuIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpZiB3ZSBhcmVuJ3Qg YWxyZWFkeQorCQkgKiBzZXR0aW5nIHRoZSBwYWdlIGZyb3plbiBpbiB0aGUgVk0uIFdlIGFsc28g ZG9uJ3Qgc2V0IGl0IGluCisJCSAqIGJvb3RzdHJhcCBtb2RlLgogCQkgKi8KKwkJaWYgKCFhbGxf ZnJvemVuX3NldCAmJiBUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJCVBhZ2VTZXRQcnVu YWJsZShwYWdlLCB4aWQpOwogCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCBhZWI5N2NjM2NlYS4uZGJiYzRhMTZiZDgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtNDc1LDYgKzQ3NSwxMiBA QCBoZWFwX3hsb2dfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJCWZyZWVzcGFj ZSA9IFBhZ2VHZXRIZWFwRnJlZVNwYWNlKHBhZ2UpOyAvKiBuZWVkZWQgdG8gdXBkYXRlIEZTTSBi ZWxvdyAqLwogCisJCS8qCisJCSAqIFNldCB0aGUgcGFnZSBwcnVuYWJsZSB0byB0cmlnZ2VyIG9u LWFjY2VzcyBwcnVuaW5nIGxhdGVyIHdoaWNoIG1heQorCQkgKiBzZXQgdGhlIHBhZ2UgYWxsLXZp c2libGUgaW4gdGhlIFZNLgorCQkgKi8KKwkJUGFnZVNldFBydW5hYmxlKHBhZ2UsIFhMb2dSZWNH ZXRYaWQocmVjb3JkKSk7CisKIAkJUGFnZVNldExTTihwYWdlLCBsc24pOwogCiAJCWlmICh4bHJl Yy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCkBAIC02MjQsOSArNjMw LDE2IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJ CWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCiAJCQlQ YWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogCi0JCS8qIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9T RVQgaW1wbGllcyB0aGF0IGFsbCB0dXBsZXMgYXJlIHZpc2libGUgKi8KKwkJLyoKKwkJICogWExI X0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRoYXQgYWxsIHR1cGxlcyBhcmUgdmlzaWJs ZS4gSWYKKwkJICogd2UgYXJlIG5vdCBzZXR0aW5nIHRoZSBwYWdlIGZyb3plbiwgdGhlbiBzZXQg dGhlIHBhZ2UncyBwcnVuYWJsZQorCQkgKiBoaW50IHNvIHRoYXQgd2UgdHJpZ2dlciBvbi1hY2Nl c3MgcHJ1bmluZyBsYXRlciB3aGljaCBtYXkgc2V0IHRoZQorCQkgKiBwYWdlIGFsbC12aXNpYmxl IGluIHRoZSBWTS4KKwkJICovCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9G Uk9aRU5fU0VUKQogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCWVsc2UKKwkJCVBhZ2VT ZXRQcnVuYWJsZShwYWdlLCBYTG9nUmVjR2V0WGlkKHJlY29yZCkpOwogCiAJCU1hcmtCdWZmZXJE aXJ0eShidWZmZXIpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3Rl ZC9pbmRleC1raWxsdHVwbGVzLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9pbmRl eC1raWxsdHVwbGVzLm91dAppbmRleCBiZTdkZGQ3NTZlZi4uYjI5ZjI0MzRiMDAgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9pbmRleC1raWxsdHVwbGVzLm91dAorKysg Yi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaW5kZXgta2lsbHR1cGxlcy5vdXQKQEAgLTU0 LDcgKzU0LDcgQEAgc3RlcCBmbHVzaDogU0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoKCk7CiBzdGVwIHJlc3VsdDogU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hp dCAtIGNvdW50ZXIuaGVhcF9hY2Nlc3NlcyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50 ZXIsIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBs ZSc7CiBuZXdfaGVhcF9hY2Nlc3NlcwogLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAg ICAxCisgICAgICAgICAgICAgICAgMgogKDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBj b3VudGVyIFNFVCBoZWFwX2FjY2Vzc2VzID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBf Ymxrc19oaXQgRlJPTSBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxf cHJpb3JfdHVwbGUnKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJP TSBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9i bGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IC0gY291bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19o ZWFwX2FjY2Vzc2VzIEZST00gY291bnRlciwgcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVs bmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJzsKIG5ld19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0t LS0tLS0tLQotICAgICAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgICAyCiAoMSByb3cpCiAK IHN0ZXAgbWVhc3VyZTogVVBEQVRFIGNvdW50ZXIgU0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNU IGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVz IFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZScpOwpAQCAtMjgzLDcgKzI4Myw3IEBA IHN0ZXAgZmx1c2g6IFNFTEVDVCBGUk9NIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogc3Rl cCByZXN1bHQ6IFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgLSBjb3VudGVy LmhlYXBfYWNjZXNzZXMgQVMgbmV3X2hlYXBfYWNjZXNzZXMgRlJPTSBjb3VudGVyLCBwZ19zdGF0 aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnOwogbmV3X2hl YXBfYWNjZXNzZXMKIC0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgMQorICAgICAg ICAgICAgICAgIDIKICgxIHJvdykKIAogc3RlcCBtZWFzdXJlOiBVUERBVEUgY291bnRlciBTRVQg aGVhcF9hY2Nlc3NlcyA9IChTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IEZS T00gcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxl Jyk7Ci0tIAoyLjQzLjAKCg== --000000000000af0a320640ad91f9 Content-Type: text/x-patch; charset="US-ASCII"; name="v17-0015-Split-heap_page_prune_and_freeze-into-helpers.patch" Content-Disposition: attachment; filename="v17-0015-Split-heap_page_prune_and_freeze-into-helpers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgil3sjw14 RnJvbSBiZDNiNDE2NzE5ZDUzYzBmYTkwNGQwYWFhZTk1NDBiMWNjZTg0ZWMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDggT2N0IDIwMjUgMTg6NDU6NDUgLTA0MDAKU3ViamVjdDogW1BB VENIIHYxNyAxNS8xNV0gU3BsaXQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgaW50byBoZWxw ZXJzCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIHwgMzE2ICsrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNzAgaW5zZXJ0aW9ucygr KSwgMTQ2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXgg MDVlNmI5MDIwNjkuLjUxNjc0NzMzZWFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwpAQCAtNTg2LDgyICs1ODYsMjAgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiBy ZWxhdGlvbiwKIAlyZXR1cm4gZG9fc2V0X3ZtOwogfQogCi0vKgotICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQotICog c3BlY2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5n ZWQsIHVwZGF0ZSBpdCBpbgotICogdGhlIFZNLgotICoKLSAqIENhbGxlciBtdXN0IGhhdmUgcGlu IGFuZCBidWZmZXIgY2xlYW51cCBsb2NrIG9uIHRoZSBwYWdlLiAgTm90ZSB0aGF0IHdlCi0gKiBk b24ndCB1cGRhdGUgdGhlIEZTTSBpbmZvcm1hdGlvbiBmb3IgcGFnZSBvbiBjYWxsZXIncyBiZWhh bGYuICBDYWxsZXIgbWlnaHQKLSAqIGFsc28gbmVlZCB0byBhY2NvdW50IGZvciBhIHJlZHVjdGlv biBpbiB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIHBvaW50ZXIKLSAqIGFycmF5IGZvbGxvd2luZyBh cnJheSB0cnVuY2F0aW9uIGJ5IHVzLgotICoKLSAqIHBhcmFtcyBjb250YWlucyB0aGUgaW5wdXQg cGFyYW1ldGVycyB1c2VkIHRvIGNvbnRyb2wgZnJlZXppbmcgYW5kIHBydW5pbmcKLSAqIGJlaGF2 aW9yLiBTZWUgdGhlIGRlZmluaXRpb24gb2YgUHJ1bmVGcmVlemVQYXJhbXMgZm9yIG1vcmUgb24g d2hhdCBlYWNoCi0gKiBwYXJhbWV0ZXIgZG9lcy4KLSAqCi0gKiBJZiB0aGUgSEVBUF9QUlVORV9G UkVFWkUgb3B0aW9uIGlzIHNldCBpbiBwYXJhbXMsIHdlIHdpbGwgZnJlZXplIHR1cGxlcyBpZgot ICogaXQncyByZXF1aXJlZCBpbiBvcmRlciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1p bm14aWQsIG9yIGlmIGl0J3MKLSAqIGNvbnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxs IHN5c3RlbSBwZXJmb3JtYW5jZSB0byBkbyBzbyBub3cuICBUaGUKLSAqICdwYXJhbXMuY3V0b2Zm cycsICdwcmVzdWx0JywgJ25ld19yZWxmcm96ZW5feGlkJyBhbmQgJ25ld19yZWxtaW5fbXhpZCcK LSAqIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVlemluZy4KLSAqCi0gKiBJZiBIRUFQ X1BBR0VfUFJVTkVfVVBEQVRFX1ZJUyBpcyBzZXQgaW4gcGFyYW1zIGFuZCB0aGUgdmlzaWJpbGl0 eSBzdGF0dXMgb2YKLSAqIHRoZSBwYWdlIGhhcyBjaGFuZ2VkLCB3ZSB3aWxsIHVwZGF0ZSB0aGUg Vk0gYXQgdGhlIHNhbWUgdGltZSBhcyBwcnVuaW5nIGFuZAotICogZnJlZXppbmcgdGhlIGhlYXAg cGFnZS4gV2Ugd2lsbCBhbHNvIHVwZGF0ZSBwcmVzdWx0LT5vbGRfdm1iaXRzIGFuZAotICogcHJl c3VsdC0+bmV3X3ZtYml0cyB3aXRoIHRoZSBzdGF0ZSBvZiB0aGUgVk0gYmVmb3JlIGFuZCBhZnRl ciB1cGRhdGluZyBpdAotICogZm9yIHRoZSBjYWxsZXIgdG8gdXNlIGluIGJvb2trZWVwaW5nLgot ICoKLSAqIHByZXN1bHQgY29udGFpbnMgb3V0cHV0IHBhcmFtZXRlcnMgbmVlZGVkIGJ5IGNhbGxl cnMsIHN1Y2ggYXMgdGhlIG51bWJlciBvZgotICogdHVwbGVzIHJlbW92ZWQgYW5kIHRoZSBvZmZz ZXRzIG9mIGRlYWQgaXRlbXMgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4KLSAqIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKCkgaXMgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemluZyBpdC4g IFJlcXVpcmVkCi0gKiBieSBhbGwgY2FsbGVycy4KLSAqCi0gKiBvZmZfbG9jIGlzIHRoZSBvZmZz ZXQgbG9jYXRpb24gcmVxdWlyZWQgYnkgdGhlIGNhbGxlciB0byB1c2UgaW4gZXJyb3IKLSAqIGNh bGxiYWNrLgotICoKLSAqIG5ld19yZWxmcm96ZW5feGlkIGFuZCBuZXdfcmVsbWluX214aWQgbXVz dCBwcm92aWRlZCBieSB0aGUgY2FsbGVyIGlmIHRoZQotICogSEVBUF9QUlVORV9GUkVFWkUgb3B0 aW9uIGlzIHNldCBpbiBwYXJhbXMuICBPbiBlbnRyeSwgdGhleSBjb250YWluIHRoZQotICogb2xk ZXN0IFhJRCBhbmQgbXVsdGktWElEIHNlZW4gb24gdGhlIHJlbGF0aW9uIHNvIGZhci4gIFRoZXkg d2lsbCBiZSB1cGRhdGVkCi0gKiB3aXRoIG9sZGVzdCB2YWx1ZXMgcHJlc2VudCBvbiB0aGUgcGFn ZSBhZnRlciBwcnVuaW5nLiAgQWZ0ZXIgcHJvY2Vzc2luZyB0aGUKLSAqIHdob2xlIHJlbGF0aW9u LCBWQUNVVU0gY2FuIHVzZSB0aGVzZSB2YWx1ZXMgYXMgdGhlIG5ldwotICogcmVsZnJvemVueGlk L3JlbG1pbm14aWQgZm9yIHRoZSByZWxhdGlvbi4KLSAqLwotdm9pZAotaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKLQkJCQkJCSAgIFBydW5lRnJl ZXplUmVzdWx0ICpwcmVzdWx0LAotCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpvZmZfbG9jLAotCQkJ CQkJICAgVHJhbnNhY3Rpb25JZCAqbmV3X3JlbGZyb3plbl94aWQsCi0JCQkJCQkgICBNdWx0aVhh Y3RJZCAqbmV3X3JlbG1pbl9teGlkKQorc3RhdGljIHZvaWQKK3BydW5lX2ZyZWV6ZV9zZXR1cChQ cnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLCBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCSAgIFRy YW5zYWN0aW9uSWQgKm5ld19yZWxmcm96ZW5feGlkLAorCQkJCSAgIE11bHRpWGFjdElkICpuZXdf cmVsbWluX214aWQsCisJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQpCiB7Ci0JQnVm ZmVyCQlidWZmZXIgPSBwYXJhbXMtPmJ1ZmZlcjsKLQlCdWZmZXIJCXZtYnVmZmVyID0gcGFyYW1z LT52bWJ1ZmZlcjsKLQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwotCUJsb2Nr TnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpOwotCU9mZnNldE51 bWJlciBvZmZudW0sCi0JCQkJbWF4b2ZmOwotCVBydW5lU3RhdGUJcHJzdGF0ZTsKLQlIZWFwVHVw bGVEYXRhIHR1cDsKLQlib29sCQlkb19mcmVlemU7Ci0JYm9vbAkJZG9fcHJ1bmU7Ci0JYm9vbAkJ ZG9faGludF9wcnVuZTsKLQlib29sCQlkb19zZXRfdm07Ci0JYm9vbAkJZG9fc2V0X3BkX3ZpczsK LQlib29sCQlkaWRfdHVwbGVfaGludF9mcGk7Ci0JaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVz YWdlLndhbF9mcGk7Ci0JVHJhbnNhY3Rpb25JZCBmcnpfY29uZmxpY3RfaG9yaXpvbiA9IEludmFs aWRUcmFuc2FjdGlvbklkOwotCVRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7Ci0JdWludDgJCW5ld192bWJpdHMgPSAwOwotCXVpbnQ4CQlvbGRfdm1iaXRz ID0gMDsKLQogCS8qIENvcHkgcGFyYW1ldGVycyB0byBwcnN0YXRlICovCi0JcHJzdGF0ZS52aXN0 ZXN0ID0gcGFyYW1zLT52aXN0ZXN0OwotCXByc3RhdGUubWFya191bnVzZWRfbm93ID0KKwlwcnN0 YXRlLT52aXN0ZXN0ID0gcGFyYW1zLT52aXN0ZXN0OworCXByc3RhdGUtPm1hcmtfdW51c2VkX25v dyA9CiAJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9X KSAhPSAwOwotCXByc3RhdGUuYXR0ZW1wdF9mcmVlemUgPSAocGFyYW1zLT5vcHRpb25zICYgSEVB UF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKLQlwcnN0YXRlLmF0dGVtcHRfdXBkYXRlX3ZtID0K KwlwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSA9IChwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0Vf UFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtID0KIAkJKHBh cmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklTKSAhPSAwOwotCXByc3Rh dGUuY3V0b2ZmcyA9IHBhcmFtcy0+Y3V0b2ZmczsKKwlwcnN0YXRlLT5jdXRvZmZzID0gcGFyYW1z LT5jdXRvZmZzOwogCiAJLyoKIAkgKiBPdXIgc3RyYXRlZ3kgaXMgdG8gc2NhbiB0aGUgcGFnZSBh bmQgbWFrZSBsaXN0cyBvZiBpdGVtcyB0byBjaGFuZ2UsCkBAIC02NzQsMzcgKzYxMiwzNyBAQCBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCSAq IHBydW5hYmxlLCB3ZSB3aWxsIHNhdmUgdGhlIGxvd2VzdCByZWxldmFudCBYSUQgaW4gbmV3X3By dW5lX3hpZC4gQWxzbwogCSAqIGluaXRpYWxpemUgdGhlIHJlc3Qgb2Ygb3VyIHdvcmtpbmcgc3Rh dGUuCiAJICovCi0JcHJzdGF0ZS5uZXdfcHJ1bmVfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7 Ci0JcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQlw cnN0YXRlLm5yZWRpcmVjdGVkID0gcHJzdGF0ZS5uZGVhZCA9IHByc3RhdGUubnVudXNlZCA9IHBy c3RhdGUubmZyb3plbiA9IDA7Ci0JcHJzdGF0ZS5ucm9vdF9pdGVtcyA9IDA7Ci0JcHJzdGF0ZS5u aGVhcG9ubHlfaXRlbXMgPSAwOworCXByc3RhdGUtPm5ld19wcnVuZV94aWQgPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKKwlwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKKwlwcnN0YXRlLT5ucmVkaXJlY3RlZCA9IHByc3RhdGUtPm5kZWFkID0gcHJzdGF0 ZS0+bnVudXNlZCA9IHByc3RhdGUtPm5mcm96ZW4gPSAwOworCXByc3RhdGUtPm5yb290X2l0ZW1z ID0gMDsKKwlwcnN0YXRlLT5uaGVhcG9ubHlfaXRlbXMgPSAwOwogCiAJLyogaW5pdGlhbGl6ZSBw YWdlIGZyZWV6aW5nIHdvcmtpbmcgc3RhdGUgKi8KLQlwcnN0YXRlLnBhZ2VmcnouZnJlZXplX3Jl cXVpcmVkID0gZmFsc2U7Ci0JaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUpCisJcHJzdGF0ZS0+ cGFnZWZyei5mcmVlemVfcmVxdWlyZWQgPSBmYWxzZTsKKwlpZiAocHJzdGF0ZS0+YXR0ZW1wdF9m cmVlemUpCiAJewogCQlBc3NlcnQobmV3X3JlbGZyb3plbl94aWQgJiYgbmV3X3JlbG1pbl9teGlk KTsKLQkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQgPSAqbmV3X3JlbGZy b3plbl94aWQ7Ci0JCXByc3RhdGUucGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQgPSAq bmV3X3JlbGZyb3plbl94aWQ7Ci0JCXByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsbWluTXhp ZCA9ICpuZXdfcmVsbWluX214aWQ7Ci0JCXByc3RhdGUucGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxt aW5NeGlkID0gKm5ld19yZWxtaW5fbXhpZDsKKwkJcHJzdGF0ZS0+cGFnZWZyei5GcmVlemVQYWdl UmVsZnJvemVuWGlkID0gKm5ld19yZWxmcm96ZW5feGlkOworCQlwcnN0YXRlLT5wYWdlZnJ6Lk5v RnJlZXplUGFnZVJlbGZyb3plblhpZCA9ICpuZXdfcmVsZnJvemVuX3hpZDsKKwkJcHJzdGF0ZS0+ cGFnZWZyei5GcmVlemVQYWdlUmVsbWluTXhpZCA9ICpuZXdfcmVsbWluX214aWQ7CisJCXByc3Rh dGUtPnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsbWluTXhpZCA9ICpuZXdfcmVsbWluX214aWQ7CiAJ fQogCWVsc2UKIAl7CiAJCUFzc2VydChuZXdfcmVsZnJvemVuX3hpZCA9PSBOVUxMICYmIG5ld19y ZWxtaW5fbXhpZCA9PSBOVUxMKTsKLQkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxtaW5N eGlkID0gSW52YWxpZE11bHRpWGFjdElkOwotCQlwcnN0YXRlLnBhZ2VmcnouTm9GcmVlemVQYWdl UmVsbWluTXhpZCA9IEludmFsaWRNdWx0aVhhY3RJZDsKLQkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6 ZVBhZ2VSZWxmcm96ZW5YaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQkJcHJzdGF0ZS5wYWdl ZnJ6Lk5vRnJlZXplUGFnZVJlbGZyb3plblhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQlw cnN0YXRlLT5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxtaW5NeGlkID0gSW52YWxpZE11bHRpWGFjdElk OworCQlwcnN0YXRlLT5wYWdlZnJ6Lk5vRnJlZXplUGFnZVJlbG1pbk14aWQgPSBJbnZhbGlkTXVs dGlYYWN0SWQ7CisJCXByc3RhdGUtPnBhZ2VmcnouRnJlZXplUGFnZVJlbGZyb3plblhpZCA9IElu dmFsaWRUcmFuc2FjdGlvbklkOworCQlwcnN0YXRlLT5wYWdlZnJ6Lk5vRnJlZXplUGFnZVJlbGZy b3plblhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCX0KIAotCXByc3RhdGUubmRlbGV0ZWQg PSAwOwotCXByc3RhdGUubGl2ZV90dXBsZXMgPSAwOwotCXByc3RhdGUucmVjZW50bHlfZGVhZF90 dXBsZXMgPSAwOwotCXByc3RhdGUuaGFzdHVwID0gZmFsc2U7Ci0JcHJzdGF0ZS5scGRlYWRfaXRl bXMgPSAwOwotCXByc3RhdGUuZGVhZG9mZnNldHMgPSBwcmVzdWx0LT5kZWFkb2Zmc2V0czsKKwlw cnN0YXRlLT5uZGVsZXRlZCA9IDA7CisJcHJzdGF0ZS0+bGl2ZV90dXBsZXMgPSAwOworCXByc3Rh dGUtPnJlY2VudGx5X2RlYWRfdHVwbGVzID0gMDsKKwlwcnN0YXRlLT5oYXN0dXAgPSBmYWxzZTsK KwlwcnN0YXRlLT5scGRlYWRfaXRlbXMgPSAwOworCXByc3RhdGUtPmRlYWRvZmZzZXRzID0gcHJl c3VsdC0+ZGVhZG9mZnNldHM7CiAKIAkvKgogCSAqIFRyYWNrIHdoZXRoZXIgdGhlIHBhZ2UgY291 bGQgYmUgbWFya2VkIGFsbC12aXNpYmxlIGFuZC9vciBhbGwtZnJvemVuLgpAQCAtNzMyLDIwICs2 NzAsMjAgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkgKiBib29ra2VlcGluZy4gSW4gdGhpcyBjYXNlLCBpbml0aWFsaXppbmcgYWxsX3Zp c2libGUgdG8gZmFsc2UgYWxsb3dzCiAJICogaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xw X25vcm1hbCgpIHRvIGJ5cGFzcyB1bm5lY2Vzc2FyeSB3b3JrLgogCSAqLwotCWlmIChwcnN0YXRl LmF0dGVtcHRfZnJlZXplKQorCWlmIChwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSkKIAl7Ci0JCXBy c3RhdGUuYWxsX3Zpc2libGUgPSB0cnVlOwotCQlwcnN0YXRlLmFsbF9mcm96ZW4gPSB0cnVlOwor CQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHRydWU7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSB0 cnVlOwogCX0KLQllbHNlIGlmIChwcnN0YXRlLmF0dGVtcHRfdXBkYXRlX3ZtKQorCWVsc2UgaWYg KHByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtKQogCXsKLQkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9 IHRydWU7Ci0JCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOworCQlwcnN0YXRlLT5hbGxfdmlz aWJsZSA9IHRydWU7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAl9CiAJZWxzZQog CXsKLQkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQlwcnN0YXRlLmFsbF9mcm96ZW4g PSBmYWxzZTsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+YWxs X2Zyb3plbiA9IGZhbHNlOwogCX0KIAogCS8qCkBAIC03NTcsMTAgKzY5NSwxNCBAQCBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCSAqIHVzZWQg dG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHdoZW4gdXBkYXRpbmcg dGhlIFZNCiAJICogYW5kL29yIGZyZWV6aW5nIGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlLgog CSAqLwotCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CisJcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7Cit9CiAKLQltYXhvZmYgPSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpOwotCXR1cC50 X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChwYXJhbXMtPnJlbGF0aW9uKTsKK3N0YXRpYyB2 b2lkCitwcnVuZV9mcmVlemVfcGxhbihQcnVuZVN0YXRlICpwcnN0YXRlLCBCbG9ja051bWJlciBi bG9ja25vLCBCdWZmZXIgYnVmZmVyLCBQYWdlIHBhZ2UsCisJCQkJICBPZmZzZXROdW1iZXIgbWF4 b2ZmLCBPZmZzZXROdW1iZXIgKm9mZl9sb2MsIEhlYXBUdXBsZSB0dXApCit7CisJT2Zmc2V0TnVt YmVyIG9mZm51bTsKIAogCS8qCiAJICogRGV0ZXJtaW5lIEhUU1YgZm9yIGFsbCB0dXBsZXMsIGFu ZCBxdWV1ZSB0aGVtIHVwIGZvciBwcm9jZXNzaW5nIGFzIEhPVApAQCAtNzk1LDEzICs3MzcsMTMg QEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywK IAkJICovCiAJCSpvZmZfbG9jID0gb2ZmbnVtOwogCi0JCXByc3RhdGUucHJvY2Vzc2VkW29mZm51 bV0gPSBmYWxzZTsKLQkJcHJzdGF0ZS5odHN2W29mZm51bV0gPSAtMTsKKwkJcHJzdGF0ZS0+cHJv Y2Vzc2VkW29mZm51bV0gPSBmYWxzZTsKKwkJcHJzdGF0ZS0+aHRzdltvZmZudW1dID0gLTE7CiAK IAkJLyogTm90aGluZyB0byBkbyBpZiBzbG90IGRvZXNuJ3QgY29udGFpbiBhIHR1cGxlICovCiAJ CWlmICghSXRlbUlkSXNVc2VkKGl0ZW1pZCkpCiAJCXsKLQkJCWhlYXBfcHJ1bmVfcmVjb3JkX3Vu Y2hhbmdlZF9scF91bnVzZWQocGFnZSwgJnByc3RhdGUsIG9mZm51bSk7CisJCQloZWFwX3BydW5l X3JlY29yZF91bmNoYW5nZWRfbHBfdW51c2VkKHBhZ2UsIHByc3RhdGUsIG9mZm51bSk7CiAJCQlj b250aW51ZTsKIAkJfQogCkBAIC04MTEsMTcgKzc1MywxNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5k X2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJICogSWYgdGhlIGNhbGxlciBz ZXQgbWFya191bnVzZWRfbm93IHRydWUsIHdlIGNhbiBzZXQgZGVhZCBsaW5lCiAJCQkgKiBwb2lu dGVycyBMUF9VTlVTRUQgbm93LgogCQkJICovCi0JCQlpZiAodW5saWtlbHkocHJzdGF0ZS5tYXJr X3VudXNlZF9ub3cpKQotCQkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VudXNlZCgmcHJzdGF0ZSwgb2Zm bnVtLCBmYWxzZSk7CisJCQlpZiAodW5saWtlbHkocHJzdGF0ZS0+bWFya191bnVzZWRfbm93KSkK KwkJCQloZWFwX3BydW5lX3JlY29yZF91bnVzZWQocHJzdGF0ZSwgb2ZmbnVtLCBmYWxzZSk7CiAJ CQllbHNlCi0JCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX2RlYWQocGFnZSwgJnBy c3RhdGUsIG9mZm51bSk7CisJCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX2RlYWQo cGFnZSwgcHJzdGF0ZSwgb2ZmbnVtKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKIAkJaWYgKEl0ZW1J ZElzUmVkaXJlY3RlZChpdGVtaWQpKQogCQl7CiAJCQkvKiBUaGlzIGlzIHRoZSBzdGFydCBvZiBh IEhPVCBjaGFpbiAqLwotCQkJcHJzdGF0ZS5yb290X2l0ZW1zW3Byc3RhdGUubnJvb3RfaXRlbXMr K10gPSBvZmZudW07CisJCQlwcnN0YXRlLT5yb290X2l0ZW1zW3Byc3RhdGUtPm5yb290X2l0ZW1z KytdID0gb2ZmbnVtOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtODMxLDI1ICs3NzMsMTkgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJ ICogR2V0IHRoZSB0dXBsZSdzIHZpc2liaWxpdHkgc3RhdHVzIGFuZCBxdWV1ZSBpdCB1cCBmb3Ig cHJvY2Vzc2luZy4KIAkJICovCiAJCWh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRl bShwYWdlLCBpdGVtaWQpOwotCQl0dXAudF9kYXRhID0gaHR1cDsKLQkJdHVwLnRfbGVuID0gSXRl bUlkR2V0TGVuZ3RoKGl0ZW1pZCk7Ci0JCUl0ZW1Qb2ludGVyU2V0KCZ0dXAudF9zZWxmLCBibG9j a25vLCBvZmZudW0pOworCQl0dXAtPnRfZGF0YSA9IGh0dXA7CisJCXR1cC0+dF9sZW4gPSBJdGVt SWRHZXRMZW5ndGgoaXRlbWlkKTsKKwkJSXRlbVBvaW50ZXJTZXQoJnR1cC0+dF9zZWxmLCBibG9j a25vLCBvZmZudW0pOwogCi0JCXByc3RhdGUuaHRzdltvZmZudW1dID0gaGVhcF9wcnVuZV9zYXRp c2ZpZXNfdmFjdXVtKCZwcnN0YXRlLCAmdHVwLAotCQkJCQkJCQkJCQkJCQkgICBidWZmZXIpOwor CQlwcnN0YXRlLT5odHN2W29mZm51bV0gPSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0ocHJz dGF0ZSwgdHVwLAorCQkJCQkJCQkJCQkJCQkJYnVmZmVyKTsKIAogCQlpZiAoIUhlYXBUdXBsZUhl YWRlcklzSGVhcE9ubHkoaHR1cCkpCi0JCQlwcnN0YXRlLnJvb3RfaXRlbXNbcHJzdGF0ZS5ucm9v dF9pdGVtcysrXSA9IG9mZm51bTsKKwkJCXByc3RhdGUtPnJvb3RfaXRlbXNbcHJzdGF0ZS0+bnJv b3RfaXRlbXMrK10gPSBvZmZudW07CiAJCWVsc2UKLQkJCXByc3RhdGUuaGVhcG9ubHlfaXRlbXNb cHJzdGF0ZS5uaGVhcG9ubHlfaXRlbXMrK10gPSBvZmZudW07CisJCQlwcnN0YXRlLT5oZWFwb25s eV9pdGVtc1twcnN0YXRlLT5uaGVhcG9ubHlfaXRlbXMrK10gPSBvZmZudW07CiAJfQogCi0JLyoK LQkgKiBJZiBjaGVja3N1bXMgYXJlIGVuYWJsZWQsIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1 bSgpIG1heSBoYXZlIGNhdXNlZAotCSAqIGFuIEZQSSB0byBiZSBlbWl0dGVkLgotCSAqLwotCWRp ZF90dXBsZV9oaW50X2ZwaSA9IGZwaV9iZWZvcmUgIT0gcGdXYWxVc2FnZS53YWxfZnBpOwotCiAJ LyoKIAkgKiBQcm9jZXNzIEhPVCBjaGFpbnMuCiAJICoKQEAgLTg2MSwzMCArNzk3LDMwIEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICog dGhlIHBhZ2UgaW5zdGVhZCBvZiB1c2luZyB0aGUgcm9vdF9pdGVtcyBhcnJheSwgYWxzbyBkaWQg aXQgaW4KIAkgKiBhc2NlbmRpbmcgb2Zmc2V0IG51bWJlciBvcmRlci4pCiAJICovCi0JZm9yIChp bnQgaSA9IHByc3RhdGUubnJvb3RfaXRlbXMgLSAxOyBpID49IDA7IGktLSkKKwlmb3IgKGludCBp ID0gcHJzdGF0ZS0+bnJvb3RfaXRlbXMgLSAxOyBpID49IDA7IGktLSkKIAl7Ci0JCW9mZm51bSA9 IHByc3RhdGUucm9vdF9pdGVtc1tpXTsKKwkJb2ZmbnVtID0gcHJzdGF0ZS0+cm9vdF9pdGVtc1tp XTsKIAogCQkvKiBJZ25vcmUgaXRlbXMgYWxyZWFkeSBwcm9jZXNzZWQgYXMgcGFydCBvZiBhbiBl YXJsaWVyIGNoYWluICovCi0JCWlmIChwcnN0YXRlLnByb2Nlc3NlZFtvZmZudW1dKQorCQlpZiAo cHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pCiAJCQljb250aW51ZTsKIAogCQkvKiBzZWUgcHJl Y2VkaW5nIGxvb3AgKi8KIAkJKm9mZl9sb2MgPSBvZmZudW07CiAKIAkJLyogUHJvY2VzcyB0aGlz IGl0ZW0gb3IgY2hhaW4gb2YgaXRlbXMgKi8KLQkJaGVhcF9wcnVuZV9jaGFpbihwYWdlLCBibG9j a25vLCBtYXhvZmYsIG9mZm51bSwgJnByc3RhdGUpOworCQloZWFwX3BydW5lX2NoYWluKHBhZ2Us IGJsb2Nrbm8sIG1heG9mZiwgb2ZmbnVtLCBwcnN0YXRlKTsKIAl9CiAKIAkvKgogCSAqIFByb2Nl c3MgYW55IGhlYXAtb25seSB0dXBsZXMgdGhhdCB3ZXJlIG5vdCBhbHJlYWR5IHByb2Nlc3NlZCBh cyBwYXJ0IG9mCiAJICogYSBIT1QgY2hhaW4uCiAJICovCi0JZm9yIChpbnQgaSA9IHByc3RhdGUu bmhlYXBvbmx5X2l0ZW1zIC0gMTsgaSA+PSAwOyBpLS0pCisJZm9yIChpbnQgaSA9IHByc3RhdGUt Pm5oZWFwb25seV9pdGVtcyAtIDE7IGkgPj0gMDsgaS0tKQogCXsKLQkJb2ZmbnVtID0gcHJzdGF0 ZS5oZWFwb25seV9pdGVtc1tpXTsKKwkJb2ZmbnVtID0gcHJzdGF0ZS0+aGVhcG9ubHlfaXRlbXNb aV07CiAKLQkJaWYgKHByc3RhdGUucHJvY2Vzc2VkW29mZm51bV0pCisJCWlmIChwcnN0YXRlLT5w cm9jZXNzZWRbb2ZmbnVtXSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIHNlZSBwcmVjZWRpbmcgbG9v cCAqLwpAQCAtOTAzLDcgKzgzOSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5l RnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCSAqIHJldHVybiB0cnVlIGZvciBhbiBYTUlOX0lOVkFM SUQgdHVwbGUsIHNvIHRoaXMgY29kZSB3aWxsIHdvcmsgZXZlbgogCQkgKiB3aGVuIHRoZXJlIHdl cmUgc2VxdWVudGlhbCB1cGRhdGVzIHdpdGhpbiB0aGUgYWJvcnRlZCB0cmFuc2FjdGlvbi4pCiAJ CSAqLwotCQlpZiAocHJzdGF0ZS5odHN2W29mZm51bV0gPT0gSEVBUFRVUExFX0RFQUQpCisJCWlm IChwcnN0YXRlLT5odHN2W29mZm51bV0gPT0gSEVBUFRVUExFX0RFQUQpCiAJCXsKIAkJCUl0ZW1J ZAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pOwogCQkJSGVhcFR1cGxlSGVh ZGVyIGh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwpA QCAtOTExLDggKzg0Nyw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJCQlpZiAobGlrZWx5KCFIZWFwVHVwbGVIZWFkZXJJc0hvdFVwZGF0 ZWQoaHR1cCkpKQogCQkJewogCQkJCUhlYXBUdXBsZUhlYWRlckFkdmFuY2VDb25mbGljdEhvcml6 b24oaHR1cCwKLQkJCQkJCQkJCQkJCQkgICZwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCk7Ci0J CQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKCZwcnN0YXRlLCBvZmZudW0sIHRydWUpOworCQkJ CQkJCQkJCQkJCSAgJnByc3RhdGUtPmxhdGVzdF94aWRfcmVtb3ZlZCk7CisJCQkJaGVhcF9wcnVu ZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIG9mZm51bSwgdHJ1ZSk7CiAJCQl9CiAJCQllbHNlCiAJ CQl7CkBAIC05MjksNyArODY1LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVG cmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCX0KIAkJfQogCQllbHNlCi0JCQloZWFwX3BydW5lX3Jl Y29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKHBhZ2UsICZwcnN0YXRlLCBvZmZudW0pOworCQkJaGVh cF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChwYWdlLCBwcnN0YXRlLCBvZmZudW0p OwogCX0KIAogCS8qIFdlIHNob3VsZCBub3cgaGF2ZSBwcm9jZXNzZWQgZXZlcnkgdHVwbGUgZXhh Y3RseSBvbmNlICAqLwpAQCAtOTQwLDEyICs4NzYsMTEwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJewogCQkqb2ZmX2xvYyA9IG9mZm51 bTsKIAotCQlBc3NlcnQocHJzdGF0ZS5wcm9jZXNzZWRbb2ZmbnVtXSk7CisJCUFzc2VydChwcnN0 YXRlLT5wcm9jZXNzZWRbb2ZmbnVtXSk7CiAJfQogI2VuZGlmCiAKKwkvKgorCSAqIEFmdGVyIHBy b2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4 bWluCisJICogYW1vbmdzdCB0aGVtIGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFn ZSBjYW5ub3QgYmUKKwkgKiBhbGwtdmlzaWJsZS4KKwkgKi8KKwlpZiAocHJzdGF0ZS0+YWxsX3Zp c2libGUgJiYKKwkJVHJhbnNhY3Rpb25JZElzTm9ybWFsKHByc3RhdGUtPnZpc2liaWxpdHlfY3V0 b2ZmX3hpZCkgJiYKKwkJIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLT52aXN0ZXN0 LCBwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQpKQorCQlwcnN0YXRlLT5hbGxfdmlzaWJs ZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwogCS8qIENsZWFyIHRoZSBvZmZzZXQg aW5mb3JtYXRpb24gb25jZSB3ZSBoYXZlIHByb2Nlc3NlZCB0aGUgZ2l2ZW4gcGFnZS4gKi8KIAkq b2ZmX2xvYyA9IEludmFsaWRPZmZzZXROdW1iZXI7Cit9CisKKy8qCisgKiBQcnVuZSBhbmQgcmVw YWlyIGZyYWdtZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhlCisg KiBzcGVjaWZpZWQgcGFnZS4gSWYgdGhlIHBhZ2UncyB2aXNpYmlsaXR5IHN0YXR1cyBoYXMgY2hh bmdlZCwgdXBkYXRlIGl0IGluCisgKiB0aGUgVk0uCisgKgorICogQ2FsbGVyIG11c3QgaGF2ZSBw aW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sgb24gdGhlIHBhZ2UuICBOb3RlIHRoYXQgd2UKKyAq IGRvbid0IHVwZGF0ZSB0aGUgRlNNIGluZm9ybWF0aW9uIGZvciBwYWdlIG9uIGNhbGxlcidzIGJl aGFsZi4gIENhbGxlciBtaWdodAorICogYWxzbyBuZWVkIHRvIGFjY291bnQgZm9yIGEgcmVkdWN0 aW9uIGluIHRoZSBsZW5ndGggb2YgdGhlIGxpbmUgcG9pbnRlcgorICogYXJyYXkgZm9sbG93aW5n IGFycmF5IHRydW5jYXRpb24gYnkgdXMuCisgKgorICogcGFyYW1zIGNvbnRhaW5zIHRoZSBpbnB1 dCBwYXJhbWV0ZXJzIHVzZWQgdG8gY29udHJvbCBmcmVlemluZyBhbmQgcHJ1bmluZworICogYmVo YXZpb3IuIFNlZSB0aGUgZGVmaW5pdGlvbiBvZiBQcnVuZUZyZWV6ZVBhcmFtcyBmb3IgbW9yZSBv biB3aGF0IGVhY2gKKyAqIHBhcmFtZXRlciBkb2VzLgorICoKKyAqIElmIHRoZSBIRUFQX1BSVU5F X0ZSRUVaRSBvcHRpb24gaXMgc2V0IGluIHBhcmFtcywgd2Ugd2lsbCBmcmVlemUgdHVwbGVzIGlm CisgKiBpdCdzIHJlcXVpcmVkIGluIG9yZGVyIHRvIGFkdmFuY2UgcmVsZnJvemVueGlkIC8gcmVs bWlubXhpZCwgb3IgaWYgaXQncworICogY29uc2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9yIG92ZXJh bGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRvIHNvIG5vdy4gIFRoZQorICogJ3BhcmFtcy5jdXRv ZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQnIGFuZCAnbmV3X3JlbG1pbl9teGlk JworICogYXJndW1lbnRzIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6aW5nLgorICoKKyAqIElmIEhF QVBfUEFHRV9QUlVORV9VUERBVEVfVklTIGlzIHNldCBpbiBwYXJhbXMgYW5kIHRoZSB2aXNpYmls aXR5IHN0YXR1cyBvZgorICogdGhlIHBhZ2UgaGFzIGNoYW5nZWQsIHdlIHdpbGwgdXBkYXRlIHRo ZSBWTSBhdCB0aGUgc2FtZSB0aW1lIGFzIHBydW5pbmcgYW5kCisgKiBmcmVlemluZyB0aGUgaGVh cCBwYWdlLiBXZSB3aWxsIGFsc28gdXBkYXRlIHByZXN1bHQtPm9sZF92bWJpdHMgYW5kCisgKiBw cmVzdWx0LT5uZXdfdm1iaXRzIHdpdGggdGhlIHN0YXRlIG9mIHRoZSBWTSBiZWZvcmUgYW5kIGFm dGVyIHVwZGF0aW5nIGl0CisgKiBmb3IgdGhlIGNhbGxlciB0byB1c2UgaW4gYm9va2tlZXBpbmcu CisgKgorICogcHJlc3VsdCBjb250YWlucyBvdXRwdXQgcGFyYW1ldGVycyBuZWVkZWQgYnkgY2Fs bGVycywgc3VjaCBhcyB0aGUgbnVtYmVyIG9mCisgKiB0dXBsZXMgcmVtb3ZlZCBhbmQgdGhlIG9m ZnNldHMgb2YgZGVhZCBpdGVtcyBvbiB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLgorICogaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoKSBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIGl0 LiAgUmVxdWlyZWQKKyAqIGJ5IGFsbCBjYWxsZXJzLgorICoKKyAqIG9mZl9sb2MgaXMgdGhlIG9m ZnNldCBsb2NhdGlvbiByZXF1aXJlZCBieSB0aGUgY2FsbGVyIHRvIHVzZSBpbiBlcnJvcgorICog Y2FsbGJhY2suCisgKgorICogbmV3X3JlbGZyb3plbl94aWQgYW5kIG5ld19yZWxtaW5fbXhpZCBt dXN0IHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIgaWYgdGhlCisgKiBIRUFQX1BSVU5FX0ZSRUVaRSBv cHRpb24gaXMgc2V0IGluIHBhcmFtcy4gIE9uIGVudHJ5LCB0aGV5IGNvbnRhaW4gdGhlCisgKiBv bGRlc3QgWElEIGFuZCBtdWx0aS1YSUQgc2VlbiBvbiB0aGUgcmVsYXRpb24gc28gZmFyLiAgVGhl eSB3aWxsIGJlIHVwZGF0ZWQKKyAqIHdpdGggb2xkZXN0IHZhbHVlcyBwcmVzZW50IG9uIHRoZSBw YWdlIGFmdGVyIHBydW5pbmcuICBBZnRlciBwcm9jZXNzaW5nIHRoZQorICogd2hvbGUgcmVsYXRp b24sIFZBQ1VVTSBjYW4gdXNlIHRoZXNlIHZhbHVlcyBhcyB0aGUgbmV3CisgKiByZWxmcm96ZW54 aWQvcmVsbWlubXhpZCBmb3IgdGhlIHJlbGF0aW9uLgorICovCit2b2lkCitoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAorCQkJCQkJICAgUHJ1bmVG cmVlemVSZXN1bHQgKnByZXN1bHQsCisJCQkJCQkgICBPZmZzZXROdW1iZXIgKm9mZl9sb2MsCisJ CQkJCQkgICBUcmFuc2FjdGlvbklkICpuZXdfcmVsZnJvemVuX3hpZCwKKwkJCQkJCSAgIE11bHRp WGFjdElkICpuZXdfcmVsbWluX214aWQpCit7CisJQnVmZmVyCQlidWZmZXIgPSBwYXJhbXMtPmJ1 ZmZlcjsKKwlCdWZmZXIJCXZtYnVmZmVyID0gcGFyYW1zLT52bWJ1ZmZlcjsKKwlQYWdlCQlwYWdl ID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOworCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJH ZXRCbG9ja051bWJlcihidWZmZXIpOworCU9mZnNldE51bWJlciBtYXhvZmY7CisJUHJ1bmVTdGF0 ZQlwcnN0YXRlOworCUhlYXBUdXBsZURhdGEgdHVwOworCWJvb2wJCWRvX2ZyZWV6ZTsKKwlib29s CQlkb19wcnVuZTsKKwlib29sCQlkb19oaW50X3BydW5lOworCWJvb2wJCWRvX3NldF92bTsKKwli b29sCQlkb19zZXRfcGRfdmlzOworCWJvb2wJCWRpZF90dXBsZV9oaW50X2ZwaTsKKwlpbnQ2NAkJ ZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2FsX2ZwaTsKKwlUcmFuc2FjdGlvbklkIGZyel9jb25m bGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJVHJhbnNhY3Rpb25JZCBjb25m bGljdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwl1aW50OAkJbmV3X3ZtYml0cyA9IDA7 CisJdWludDgJCW9sZF92bWJpdHMgPSAwOworCisJbWF4b2ZmID0gUGFnZUdldE1heE9mZnNldE51 bWJlcihwYWdlKTsKKwl0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocGFyYW1zLT5y ZWxhdGlvbik7CisKKwkvKiBJbml0aWFsaXplIG5lZWRlZCBzdGF0ZSBpbiBwcnN0YXRlICovCisJ cHJ1bmVfZnJlZXplX3NldHVwKHBhcmFtcywgJnByc3RhdGUsIG5ld19yZWxmcm96ZW5feGlkLCBu ZXdfcmVsbWluX214aWQsIHByZXN1bHQpOworCisJLyoKKwkgKiBFeGFtaW5lIGFsbCBsaW5lIHBv aW50ZXJzIGFuZCB0dXBsZSB2aXNpYmlsaXR5IGluZm9ybWF0aW9uIHRvIGRldGVybWluZQorCSAq IHdoaWNoIGxpbmUgcG9pbnRlcnMgc2hvdWxkIGNoYW5nZSBzdGF0ZSBhbmQgd2hpY2ggdHVwbGVz IG1heSBiZSBmcm96ZW4uCisJICogUHJlcGFyZSBxdWV1ZSBvZiBzdGF0ZSBjaGFuZ2VzIHRvIGxh dGVyIGJlIGV4ZWN1dGVkIGluIGEgY3JpdGljYWwKKwkgKiBzZWN0aW9uLgorCSAqLworCXBydW5l X2ZyZWV6ZV9wbGFuKCZwcnN0YXRlLCBibG9ja25vLCBidWZmZXIsIHBhZ2UsIG1heG9mZiwgb2Zm X2xvYywgJnR1cCk7CisKKwkvKgorCSAqIElmIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCwgaGVhcF9w cnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCkgbWF5IGhhdmUgY2F1c2VkCisJICogYW4gRlBJIHRvIGJl IGVtaXR0ZWQuCisJICovCisJZGlkX3R1cGxlX2hpbnRfZnBpID0gZnBpX2JlZm9yZSAhPSBwZ1dh bFVzYWdlLndhbF9mcGk7CiAKIAlkb19wcnVuZSA9IHByc3RhdGUubnJlZGlyZWN0ZWQgPiAwIHx8 CiAJCXByc3RhdGUubmRlYWQgPiAwIHx8CkBAIC05NTksMTYgKzk5Myw2IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJZG9faGludF9wcnVu ZSA9ICgoUGFnZUhlYWRlcikgcGFnZSktPnBkX3BydW5lX3hpZCAhPSBwcnN0YXRlLm5ld19wcnVu ZV94aWQgfHwKIAkJUGFnZUlzRnVsbChwYWdlKTsKIAotCS8qCi0JICogQWZ0ZXIgcHJvY2Vzc2lu ZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLCBpZiB0aGUgbmV3ZXN0IHhtaW4KLQkg KiBhbW9uZ3N0IHRoZW0gaXMgbm90IHZpc2libGUgdG8gZXZlcnlvbmUsIHRoZSBwYWdlIGNhbm5v dCBiZQotCSAqIGFsbC12aXNpYmxlLgotCSAqLwotCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYm Ci0JCVRyYW5zYWN0aW9uSWRJc05vcm1hbChwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkg JiYKLQkJIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLnZpc3Rlc3QsIHByc3RhdGUu dmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkKLQkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUu YWxsX2Zyb3plbiA9IGZhbHNlOwotCiAJLyoKIAkgKiBEZWNpZGUgaWYgd2Ugd2FudCB0byBnbyBh aGVhZCB3aXRoIGZyZWV6aW5nIGFjY29yZGluZyB0byB0aGUgZnJlZXplCiAJICogcGxhbnMgd2Ug cHJlcGFyZWQsIG9yIG5vdC4KLS0gCjIuNDMuMAoK --000000000000af0a320640ad91f9--