Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vL8K6-00586P-07 for pgsql-hackers@arkaria.postgresql.org; Mon, 17 Nov 2025 23:07:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vL8K4-002ZB2-0u for pgsql-hackers@arkaria.postgresql.org; Mon, 17 Nov 2025 23:07:48 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vL8K3-002ZAs-2I for pgsql-hackers@lists.postgresql.org; Mon, 17 Nov 2025 23:07:48 +0000 Received: from mail-ed1-x531.google.com ([2a00:1450:4864:20::531]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vL8Jy-0004cM-1O for pgsql-hackers@lists.postgresql.org; Mon, 17 Nov 2025 23:07:47 +0000 Received: by mail-ed1-x531.google.com with SMTP id 4fb4d7f45d1cf-644f90587e5so973276a12.0 for ; Mon, 17 Nov 2025 15:07:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763420861; x=1764025661; 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=EEUXOp9FvVKeZAJeCtKzXdna/OXYde8DuVO/XgtbrPs=; b=eBYrcmI2UxOKhfG5VS+xGXXPF1hrO928PnvqHy0pQ8OQisNqMmKGpOioqgRHvo5154 4XfqdaAnZRBsHYZwOtXr1bieKm13WM9uWkk9bdBRdvJZLTVsZDJElnjdEaQhLpv0rg30 pPaaLSG5STqg+Oy8fOe8Rz/fYfuPdZh1aYeGB/aUIa+pcs0KT5NX7+hA890O0kUjvzek iFYNPQM0xvzMyz0hNuGHZaQSaxiawwbhm+MpwMVUkobCY2g4g/KBJeuG5mZBhxJMFdI1 ejDW9m2A0a+zrtHVD2+73mj3+JEDQ8o5rgQM4oa7XD/d49qHi+sHP4WZq5+skpLee1Id jWXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763420861; x=1764025661; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=EEUXOp9FvVKeZAJeCtKzXdna/OXYde8DuVO/XgtbrPs=; b=vEkWivcCE8MW0CJf/LODAtciQzSxmhTYabSNk4tDqo00MdTXI+53S11/oXqngUke0V 6liZChdivXMni5VXd+/8XBRZ6ivoBKzO8EkqmpC0+pfSWY+FB04vlfktNeusqC6FdGUM EkAD+pwiArnOt1PgA8HNmW8fbbETvl0tiGVG+BsThDAqY18JwS9+SrXttDEnj7LSj73X OjuWheyo4NZSsP3cBN2dFsct9x2Jkj3R3x5iyC1ncaKm4Xd6iWLeCTsZIYfsQPD8xi1g Dgjz2JUZzA5Mu6ZKm5s57+yTt13mEIhwjGLviKorNQ6pFGxZEtgBa8ALsibYfO5pzARp enfw== X-Forwarded-Encrypted: i=1; AJvYcCXgW9eSC/KnZJNB7KgtSkRQIXcgM+zQHqQlbqNYs6xEZK6Z6D1noJhipw7qMqS8p/sP0DGl2jfwaOgCrXwm@lists.postgresql.org X-Gm-Message-State: AOJu0Yyl5ExNKGvTyEaVv8Tsbvs6EgPm57MJwSuxjYLC6wUCHnkBQTe1 tS0DJCr/1HZFBJQ6QSGDK1sXRyYP3t2DgndLJUg3IbwxI3ZWd6hfR8GGSN7shJ7DyiIxtMJc36O Z5WWySLZCXeUX634AUsJ671JmFBrBb+2p+rZW X-Gm-Gg: ASbGncsTn8+farZR78TZiUiEQiXuTo8Wx2212L2s2A0ytii4vfJSjDkbrGW0PFwsmqL t0DLK8AR+o3n93mYIkGgbXFjh2ihD+g9r7LTE2bBaebkPzF+eyyvnXpeunkfXjrM9exW7JN3AGG gS3cJM10d4xUs2eRRcJtWif05FiPJ1DagM5YLQzUVFD6IKjulp5sWNVseE3tfaIkyKxE2C3A0B0 6VfgK1T3AS5oSfKFOY0Jd+tcV9S3RP/ohoJinUqkogPM1p2tIxyqGXaGmbFNn6uKu/YLUQG X-Google-Smtp-Source: AGHT+IHdB7KqR+5y9vs2IshwFAYghRUru3GLfNvGBooNeC647yepMfezQ4HQ9D7Y+saak/R2Zk8VnkUtI+19WWUo+78= X-Received: by 2002:a05:6402:2548:b0:640:f481:988 with SMTP id 4fb4d7f45d1cf-64350e8dd30mr12507445a12.19.1763420860701; Mon, 17 Nov 2025 15:07:40 -0800 (PST) MIME-Version: 1.0 References: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> In-Reply-To: From: Melanie Plageman Date: Mon, 17 Nov 2025 18:07:27 -0500 X-Gm-Features: AWmQ_blktX0bzjF0rSnnOo9RkcG0bbCE3bFpGW4PhPu1eiGU0IpM6zaxR5hI94E Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Kirill Reshke Cc: Andres Freund , Robert Haas , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="000000000000fe23c60643d269a4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000fe23c60643d269a4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Attached v20 has general cleanup, changes to the table/index AM callbacks detailed below, and it moves the heap_page_prune_and_freeze() refactoring commit down the stack to 0004. 0001 - 0003 are fairly trivial cleanup patches. I think they are ready to commit, so if I don't hear any objections in the next few days, I'll go ahead and commit them. On Tue, Nov 4, 2025 at 11:48=E2=80=AFAM Melanie Plageman wrote: > > On Wed, Oct 29, 2025 at 7:03=E2=80=AFAM Kirill Reshke wrote: > > > > In 0010: > > > > I'm not terribly convenient that adding SO_ALLOW_VM_SET to TAM > > ScanOptions is the right thing to do. Looks like VM bits are something > > that make sense for HEAP AM for not for any TAM. So, don't we break > > some layer of abstraction here? Would it be better for HEAP AM to set > > some flags in heap_beginscan? > > I don't see another good way of doing it. > > The information about whether or not the relation is modified in the > query is gathered during planning and saved in the plan. We need to > get that information to the scan descriptor, which is all we have when > we call heap_page_prune_opt() during the scan. The scan descriptor is > created by the table AM implementations of scan_begin(). The table AM > callbacks don't pass down the plan -- which makes sense; the scan > shouldn't know about the plan. They do pass down flags, so I thought > it made the most sense to add a flag. Note that I was able to avoid > modifying the actual table and index AM callbacks (scan_begin() and > ambeginscan()). I only made new wrappers that took "modifies_rel". > > Now, it is true that referring to the VM is somewhat of a layering > violation. Though, other table AMs may use the information about if > the query modifies the relation -- which is really what this flag > represents. The ScanOptions are usually either a type or a call to > action. Which is why I felt a bit uncomfortable calling it something > like SO_MODIFIES_REL -- which is less of an option and more a piece of > information. And it makes it sound like the scan modifies the rel, > which is not the case. I wonder if there is another solution. Or maybe > we call it SO_QUERY_MODIFIES_REL? Attached v20 changes the ScanOption name to SO_HINT_REL_READ_ONLY and removes the new helper functions which took modifies_rel as a parameter. Instead it modifies the existing table_beginscan()/index_beginscan() helpers and the relevant callbacks they invoke to have a new flags parameter. These are additional caller provider flags. In master, the IndexScan structures and helpers don't use ScanOptions, but since I'm using them for properties of the base relation, I think it is fine. I'm not sure if I should name the parameter base_rel_flags instead of flags for the index-related callbacks and helpers or if leaving it more generic is better, though. - Melanie --000000000000fe23c60643d269a4 Content-Type: text/x-patch; charset="UTF-8"; name="v20-0001-Refactor-heap_page_prune_and_freeze-parameters-i.patch" Content-Disposition: attachment; filename="v20-0001-Refactor-heap_page_prune_and_freeze-parameters-i.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi3r6sw20 RnJvbSAxMmVjYjllZjY4NWYyZmVkMGQ3NDFmOTFkNmZjNmE2YTlmOTU5YzgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDExOjEwOjI1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgMDEvMTJdIFJlZmFjdG9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgcGFy YW1ldGVycwogaW50byBhIHN0cnVjdApNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRl eHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoK aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBoYWQgYWNjdW11bGF0ZWQgYW4gdW53aWVsZHkg bnVtYmVyIG9mIGlucHV0CnBhcmFtZXRlcnMgYW5kIHVwY29taW5nIHdvcmsgdG8gaGFuZGxlIFZN IHVwZGF0ZXMgaW4gdGhpcyBmdW5jdGlvbiB3aWxsCmFkZCBldmVuIG1vcmUuCgpJbnRyb2R1Y2Ug YSBuZXcgUHJ1bmVGcmVlemVQYXJhbXMgc3RydWN0IHRvIGdyb3VwIHRoZSBmdW5jdGlvbuKAmXMg aW5wdXQKcGFyYW1ldGVycywgaW1wcm92aW5nIHJlYWRhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxp dHkuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ ClN1Z2dlc3RlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJhemVsLmRlPgpEaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL3luNHpwMzVra2Rzang2d2Y0N3pjZm14Z2V4eHQ0aDJv ZzQ3cHZudzJ4NWlmeXJzM3FjJTQwN3V3Nmp5eXh1eWY3Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgIHwgOTEgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgMTIgKystLQogc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbS5oICAgICAgICAgIHwgNjMgKysrKysrKysrKysrKysrLS0tLQogc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgIHwgIDEgKwogNCBmaWxlcyBjaGFuZ2VkLCAx MDAgaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYwppbmRleCAyMzFiZWE2NzljNi4uZTllMTRjYjQyYjcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCkBAIC0yNjEsMTIgKzI2MSwxOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0 KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogCQkJUHJ1bmVGcmVlemVSZXN1bHQg cHJlc3VsdDsKIAogCQkJLyoKLQkJCSAqIEZvciBub3csIHBhc3MgbWFya191bnVzZWRfbm93IGFz IGZhbHNlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvcgotCQkJICogbm90IHRoZSByZWxhdGlvbiBo YXMgaW5kZXhlcywgc2luY2Ugd2UgY2Fubm90IHNhZmVseSBkZXRlcm1pbmUKLQkJCSAqIHRoYXQg ZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nIHdpdGggdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24u CisJCQkgKiBXZSBkb24ndCBwYXNzIHRoZSBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9X IG9wdGlvbgorCQkJICogcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgcmVsYXRpb24g aGFzIGluZGV4ZXMsIHNpbmNlIHdlCisJCQkgKiBjYW5ub3Qgc2FmZWx5IGRldGVybWluZSB0aGF0 IGR1cmluZyBvbi1hY2Nlc3MgcHJ1bmluZyB3aXRoIHRoZQorCQkJICogY3VycmVudCBpbXBsZW1l bnRhdGlvbi4KIAkJCSAqLwotCQkJaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24s IGJ1ZmZlciwgdmlzdGVzdCwgMCwKLQkJCQkJCQkJCSAgIE5VTEwsICZwcmVzdWx0LCBQUlVORV9P Tl9BQ0NFU1MsICZkdW1teV9vZmZfbG9jLCBOVUxMLCBOVUxMKTsKKwkJCVBydW5lRnJlZXplUGFy YW1zIHBhcmFtcyA9IHsucmVsYXRpb24gPSByZWxhdGlvbiwuYnVmZmVyID0gYnVmZmVyLAorCQkJ CS5yZWFzb24gPSBQUlVORV9PTl9BQ0NFU1MsLm9wdGlvbnMgPSAwLAorCQkJCS52aXN0ZXN0ID0g dmlzdGVzdCwuY3V0b2ZmcyA9IE5VTEwKKwkJCX07CisKKwkJCWhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKCZwYXJhbXMsICZwcmVzdWx0LCAmZHVtbXlfb2ZmX2xvYywKKwkJCQkJCQkJCSAgIE5V TEwsIE5VTEwpOwogCiAJCQkvKgogCQkJICogUmVwb3J0IHRoZSBudW1iZXIgb2YgdHVwbGVzIHJl Y2xhaW1lZCB0byBwZ3N0YXRzLiAgVGhpcyBpcwpAQCAtNDE5LDYwICs0MjUsNDQgQEAgaGVhcF9w YWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogICogYWxz byBuZWVkIHRvIGFjY291bnQgZm9yIGEgcmVkdWN0aW9uIGluIHRoZSBsZW5ndGggb2YgdGhlIGxp bmUgcG9pbnRlcgogICogYXJyYXkgZm9sbG93aW5nIGFycmF5IHRydW5jYXRpb24gYnkgdXMuCiAg KgotICogSWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQsIHdlIHdpbGwgYWxz byBmcmVlemUgdHVwbGVzIGlmIGl0J3MKLSAqIHJlcXVpcmVkIGluIG9yZGVyIHRvIGFkdmFuY2Ug cmVsZnJvemVueGlkIC8gcmVsbWlubXhpZCwgb3IgaWYgaXQncwotICogY29uc2lkZXJlZCBhZHZh bnRhZ2VvdXMgZm9yIG92ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRvIHNvIG5vdy4gIFRo ZQotICogJ2N1dG9mZnMnLCAncHJlc3VsdCcsICduZXdfcmVsZnJvemVuX3hpZCcgYW5kICduZXdf cmVsbWluX214aWQnIGFyZ3VtZW50cwotICogYXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcuICBX aGVuIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQsIHdlIGFsc28KLSAqIHNldCBwcmVz dWx0LT5hbGxfdmlzaWJsZSBhbmQgcHJlc3VsdC0+YWxsX2Zyb3plbiBvbiBleGl0LCB0byBpbmRp Y2F0ZSBpZgotICogdGhlIFZNIGJpdHMgY2FuIGJlIHNldC4gIFRoZXkgYXJlIGFsd2F5cyBzZXQg dG8gZmFsc2Ugd2hlbiB0aGUKLSAqIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3Qgc2V0 LCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seSBjYWxsZXJzCi0gKiB0aGF0IGFsc28gZnJlZXpl IG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KLSAqCi0gKiB2aXN0ZXN0IGlzIHVzZWQgdG8gZGlzdGlu Z3Vpc2ggd2hldGhlciB0dXBsZXMgYXJlIERFQUQgb3IgUkVDRU5UTFlfREVBRAotICogKHNlZSBo ZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0pLgotICoKLSAqIG9wdGlvbnM6Ci0gKiAgIE1BUktf VU5VU0VEX05PVyBpbmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQgTFBfVU5VU0VE IGR1cmluZwotICogICBwcnVuaW5nLgorICogcGFyYW1zIGNvbnRhaW5zIHRoZSBpbnB1dCBwYXJh bWV0ZXJzIHVzZWQgdG8gY29udHJvbCBmcmVlemluZyBhbmQgcHJ1bmluZworICogYmVoYXZpb3Iu IFNlZSB0aGUgZGVmaW5pdGlvbiBvZiBQcnVuZUZyZWV6ZVBhcmFtcyBmb3IgbW9yZSBvbiB3aGF0 IGVhY2gKKyAqIHBhcmFtZXRlciBkb2VzLgogICoKLSAqICAgRlJFRVpFIGluZGljYXRlcyB0aGF0 IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLCBhbmQgd2lsbCByZXR1cm4KLSAqICAgJ2FsbF92 aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCi0gKgotICogY3V0b2Zm cyBjb250YWlucyB0aGUgZnJlZXplIGN1dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0 aGUgYmVnaW5uaW5nCi0gKiBvZiB2YWN1dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYg SEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldC4KLSAqIGN1dG9mZnMtPk9sZGVzdFhtaW4g aXMgYWxzbyB1c2VkIHRvIGRldGVybWluZSBpZiBkZWFkIHR1cGxlcyBhcmUKLSAqIEhFQVBUVVBM RV9SRUNFTlRMWV9ERUFEIG9yIEhFQVBUVVBMRV9ERUFELgorICogSWYgdGhlIEhFQVBfUEFHRV9Q UlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldCBpbiBwYXJhbXMsIHdlIHdpbGwgZnJlZXplCisgKiB0 dXBsZXMgaWYgaXQncyByZXF1aXJlZCBpbiBvcmRlciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAv IHJlbG1pbm14aWQsIG9yCisgKiBpZiBpdCdzIGNvbnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBv dmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBkbyBzbworICogbm93LiAgVGhlICdwYXJhbXMu Y3V0b2ZmcycsICdwcmVzdWx0JywgJ25ld19yZWxmcm96ZW5feGlkJyBhbmQKKyAqICduZXdfcmVs bWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVlemluZy4gIFdoZW4KKyAq IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHBhc3NlZCwgd2UgYWxzbyBzZXQgcHJl c3VsdC0+YWxsX3Zpc2libGUKKyAqIGFuZCBwcmVzdWx0LT5hbGxfZnJvemVuIG9uIGV4aXQsIHRv IGluZGljYXRlIGlmIHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuCisgKiBUaGV5IGFyZSBhbHdheXMg c2V0IHRvIGZhbHNlIHdoZW4gdGhlIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIG5v dAorICogcGFzc2VkLCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seSBjYWxsZXJzIHRoYXQgYWxz byBmcmVlemUgbmVlZCB0aGF0CisgKiBpbmZvcm1hdGlvbi4KICAqCiAgKiBwcmVzdWx0IGNvbnRh aW5zIG91dHB1dCBwYXJhbWV0ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBzdWNoIGFzIHRoZSBudW1i ZXIgb2YKICAqIHR1cGxlcyByZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBkZWFkIGl0ZW1zIG9u IHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuCiAgKiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgp IGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgaXQuICBSZXF1aXJlZAogICogYnkgYWxs IGNhbGxlcnMuCiAgKgotICogcmVhc29uIGluZGljYXRlcyB3aHkgdGhlIHBydW5pbmcgaXMgcGVy Zm9ybWVkLiAgSXQgaXMgaW5jbHVkZWQgaW4gdGhlIFdBTAotICogcmVjb3JkIGZvciBkZWJ1Z2dp bmcgYW5kIGFuYWx5c2lzIHB1cnBvc2VzLCBidXQgb3RoZXJ3aXNlIGhhcyBubyBlZmZlY3QuCi0g KgogICogb2ZmX2xvYyBpcyB0aGUgb2Zmc2V0IGxvY2F0aW9uIHJlcXVpcmVkIGJ5IHRoZSBjYWxs ZXIgdG8gdXNlIGluIGVycm9yCiAgKiBjYWxsYmFjay4KICAqCiAgKiBuZXdfcmVsZnJvemVuX3hp ZCBhbmQgbmV3X3JlbG1pbl9teGlkIG11c3QgcHJvdmlkZWQgYnkgdGhlIGNhbGxlciBpZiB0aGUK LSAqIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuICBPbiBlbnRyeSwgdGhleSBjb250 YWluIHRoZSBvbGRlc3QgWElEIGFuZAotICogbXVsdGktWElEIHNlZW4gb24gdGhlIHJlbGF0aW9u IHNvIGZhci4gIFRoZXkgd2lsbCBiZSB1cGRhdGVkIHdpdGggb2xkZXN0Ci0gKiB2YWx1ZXMgcHJl c2VudCBvbiB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLiAgQWZ0ZXIgcHJvY2Vzc2luZyB0aGUgd2hv bGUKLSAqIHJlbGF0aW9uLCBWQUNVVU0gY2FuIHVzZSB0aGVzZSB2YWx1ZXMgYXMgdGhlIG5ldyBy ZWxmcm96ZW54aWQvcmVsbWlubXhpZAotICogZm9yIHRoZSByZWxhdGlvbi4KKyAqIEhFQVBfUEFH RV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldCBpbiBwYXJhbXMuICBPbiBlbnRyeSwgdGhleSBj b250YWluIHRoZQorICogb2xkZXN0IFhJRCBhbmQgbXVsdGktWElEIHNlZW4gb24gdGhlIHJlbGF0 aW9uIHNvIGZhci4gIFRoZXkgd2lsbCBiZSB1cGRhdGVkCisgKiB3aXRoIG9sZGVzdCB2YWx1ZXMg cHJlc2VudCBvbiB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLiAgQWZ0ZXIgcHJvY2Vzc2luZyB0aGUK KyAqIHdob2xlIHJlbGF0aW9uLCBWQUNVVU0gY2FuIHVzZSB0aGVzZSB2YWx1ZXMgYXMgdGhlIG5l dworICogcmVsZnJvemVueGlkL3JlbG1pbm14aWQgZm9yIHRoZSByZWxhdGlvbi4KICAqLwogdm9p ZAotaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIsCi0JCQkJCQkgICBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKLQkJCQkJCSAgIGludCBv cHRpb25zLAotCQkJCQkJICAgc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnMsCitoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJICAg UHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCi0JCQkJCQkgICBQcnVuZVJlYXNvbiByZWFzb24s CiAJCQkJCQkgICBPZmZzZXROdW1iZXIgKm9mZl9sb2MsCiAJCQkJCQkgICBUcmFuc2FjdGlvbklk ICpuZXdfcmVsZnJvemVuX3hpZCwKIAkJCQkJCSAgIE11bHRpWGFjdElkICpuZXdfcmVsbWluX214 aWQpCiB7CisJQnVmZmVyCQlidWZmZXIgPSBwYXJhbXMtPmJ1ZmZlcjsKIAlQYWdlCQlwYWdlID0g QnVmZmVyR2V0UGFnZShidWZmZXIpOwogCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRC bG9ja051bWJlcihidWZmZXIpOwogCU9mZnNldE51bWJlciBvZmZudW0sCkBAIC00ODYsMTAgKzQ3 NiwxMSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVm ZmVyIGJ1ZmZlciwKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2FsX2ZwaTsKIAog CS8qIENvcHkgcGFyYW1ldGVycyB0byBwcnN0YXRlICovCi0JcHJzdGF0ZS52aXN0ZXN0ID0gdmlz dGVzdDsKLQlwcnN0YXRlLm1hcmtfdW51c2VkX25vdyA9IChvcHRpb25zICYgSEVBUF9QQUdFX1BS VU5FX01BUktfVU5VU0VEX05PVykgIT0gMDsKLQlwcnN0YXRlLmF0dGVtcHRfZnJlZXplID0gKG9w dGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSAhPSAwOwotCXByc3RhdGUuY3V0b2ZmcyA9 IGN1dG9mZnM7CisJcHJzdGF0ZS52aXN0ZXN0ID0gcGFyYW1zLT52aXN0ZXN0OworCXByc3RhdGUu bWFya191bnVzZWRfbm93ID0KKwkJKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9N QVJLX1VOVVNFRF9OT1cpICE9IDA7CisJcHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSA9IChwYXJhbXMt Pm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUuY3V0b2Zm cyA9IHBhcmFtcy0+Y3V0b2ZmczsKIAogCS8qCiAJICogT3VyIHN0cmF0ZWd5IGlzIHRvIHNjYW4g dGhlIHBhZ2UgYW5kIG1ha2UgbGlzdHMgb2YgaXRlbXMgdG8gY2hhbmdlLApAQCAtNTgzLDcgKzU3 NCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAogCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CiAKIAltYXhvZmYgPSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpOwotCXR1 cC50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CisJdHVwLnRfdGFibGVP aWQgPSBSZWxhdGlvbkdldFJlbGlkKHBhcmFtcy0+cmVsYXRpb24pOwogCiAJLyoKIAkgKiBEZXRl cm1pbmUgSFRTViBmb3IgYWxsIHR1cGxlcywgYW5kIHF1ZXVlIHRoZW0gdXAgZm9yIHByb2Nlc3Np bmcgYXMgSE9UCkBAIC03ODYsNyArNzc3LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJICogRGVjaWRlIGlmIHdlIHdhbnQg dG8gZ28gYWhlYWQgd2l0aCBmcmVlemluZyBhY2NvcmRpbmcgdG8gdGhlIGZyZWV6ZQogCSAqIHBs YW5zIHdlIHByZXBhcmVkLCBvciBub3QuCiAJICovCi0JZG9fZnJlZXplID0gaGVhcF9wYWdlX3dp bGxfZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsCisJZG9fZnJlZXplID0gaGVhcF9wYWdlX3dpbGxf ZnJlZXplKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKIAkJCQkJCQkJCSAgZGlkX3R1cGxlX2hp bnRfZnBpLAogCQkJCQkJCQkJICBkb19wcnVuZSwKIAkJCQkJCQkJCSAgZG9faGludF9wcnVuZSwK QEAgLTgzOCw3ICs4MjksNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJLyoKIAkJICogRW1pdCBhIFdBTCBYTE9HX0hFQVAy X1BSVU5FKiByZWNvcmQgc2hvd2luZyB3aGF0IHdlIGRpZAogCQkgKi8KLQkJaWYgKFJlbGF0aW9u TmVlZHNXQUwocmVsYXRpb24pKQorCQlpZiAoUmVsYXRpb25OZWVkc1dBTChwYXJhbXMtPnJlbGF0 aW9uKSkKIAkJewogCQkJLyoKIAkJCSAqIFRoZSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBmb3Ig dGhlIHdob2xlIHJlY29yZCBzaG91bGQgYmUgdGhlCkBAIC04NzYsMTEgKzg2NywxMSBAQCBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwK IAkJCWVsc2UKIAkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsK IAotCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLAorCQkJbG9n X2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCiAJCQkJCQkJ CQkgIEludmFsaWRCdWZmZXIsCS8qIHZtYnVmZmVyICovCiAJCQkJCQkJCQkgIDAsCS8qIHZtZmxh Z3MgKi8KIAkJCQkJCQkJCSAgY29uZmxpY3RfeGlkLAotCQkJCQkJCQkJICB0cnVlLCByZWFzb24s CisJCQkJCQkJCQkgIHRydWUsIHBhcmFtcy0+cmVhc29uLAogCQkJCQkJCQkJICBwcnN0YXRlLmZy b3plbiwgcHJzdGF0ZS5uZnJvemVuLAogCQkJCQkJCQkJICBwcnN0YXRlLnJlZGlyZWN0ZWQsIHBy c3RhdGUubnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkgIHByc3RhdGUubm93ZGVhZCwgcHJzdGF0ZS5u ZGVhZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBkZWI5YTNkYzBkMS4u MmI5ZTVjN2Y4MWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE5NjUs NyArMTk2NSwxMCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogewogCVJl bGF0aW9uCXJlbCA9IHZhY3JlbC0+cmVsOwogCVBydW5lRnJlZXplUmVzdWx0IHByZXN1bHQ7Ci0J aW50CQkJcHJ1bmVfb3B0aW9ucyA9IDA7CisJUHJ1bmVGcmVlemVQYXJhbXMgcGFyYW1zID0gey5y ZWxhdGlvbiA9IHJlbCwuYnVmZmVyID0gYnVmLAorCQkucmVhc29uID0gUFJVTkVfVkFDVVVNX1ND QU4sLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLAorCQkuY3V0b2ZmcyA9ICZ2YWNy ZWwtPmN1dG9mZnMsLnZpc3Rlc3QgPSB2YWNyZWwtPnZpc3Rlc3QKKwl9OwogCiAJQXNzZXJ0KEJ1 ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZikgPT0gYmxrbm8pOwogCkBAIC0xOTg0LDEyICsxOTg3LDEx IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJICogdHVwbGVzLiBQcnVu aW5nIHdpbGwgaGF2ZSBkZXRlcm1pbmVkIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzCiAJICog YWxsLXZpc2libGUuCiAJICovCi0JcHJ1bmVfb3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9GUkVF WkU7CiAJaWYgKHZhY3JlbC0+bmluZGV4ZXMgPT0gMCkKLQkJcHJ1bmVfb3B0aW9ucyB8PSBIRUFQ X1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9XOworCQlwYXJhbXMub3B0aW9ucyB8PSBIRUFQX1BB R0VfUFJVTkVfTUFSS19VTlVTRURfTk9XOwogCi0JaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo cmVsLCBidWYsIHZhY3JlbC0+dmlzdGVzdCwgcHJ1bmVfb3B0aW9ucywKLQkJCQkJCQkgICAmdmFj cmVsLT5jdXRvZmZzLCAmcHJlc3VsdCwgUFJVTkVfVkFDVVVNX1NDQU4sCisJaGVhcF9wYWdlX3By dW5lX2FuZF9mcmVlemUoJnBhcmFtcywKKwkJCQkJCQkgICAmcHJlc3VsdCwKIAkJCQkJCQkgICAm dmFjcmVsLT5vZmZudW0sCiAJCQkJCQkJICAgJnZhY3JlbC0+TmV3UmVsZnJvemVuWGlkLCAmdmFj cmVsLT5OZXdSZWxtaW5NeGlkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDkwOWRiNzNiN2JiLi42 MzJjNDMzMmE4YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMjIxLDYgKzIyMSw1NiBAQCB0eXBlZGVm IHN0cnVjdCBIZWFwUGFnZUZyZWV6ZQogCiB9IEhlYXBQYWdlRnJlZXplOwogCisKKy8qICdyZWFz b24nIGNvZGVzIGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpICovCit0eXBlZGVmIGVu dW0KK3sKKwlQUlVORV9PTl9BQ0NFU1MsCQkJLyogb24tYWNjZXNzIHBydW5pbmcgKi8KKwlQUlVO RV9WQUNVVU1fU0NBTiwJCQkvKiBWQUNVVU0gMXN0IGhlYXAgcGFzcyAqLworCVBSVU5FX1ZBQ1VV TV9DTEVBTlVQLAkJLyogVkFDVVVNIDJuZCBoZWFwIHBhc3MgKi8KK30gUHJ1bmVSZWFzb247CisK Ky8qCisgKiBJbnB1dCBwYXJhbWV0ZXJzIHRvIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkK KyAqLwordHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVQYXJhbXMKK3sKKwlSZWxhdGlvbglyZWxh dGlvbjsJCS8qIHJlbGF0aW9uIGNvbnRhaW5pbmcgYnVmZmVyIHRvIGJlIHBydW5lZCAqLworCUJ1 ZmZlcgkJYnVmZmVyOwkJCS8qIGJ1ZmZlciB0byBiZSBwcnVuZWQgKi8KKworCS8qCisJICogVGhl IHJlYXNvbiBwcnVuaW5nIHdhcyBwZXJmb3JtZWQuICBJdCBpcyB1c2VkIHRvIHNldCB0aGUgV0FM IHJlY29yZAorCSAqIG9wY29kZSB3aGljaCBpcyB1c2VkIGZvciBkZWJ1Z2dpbmcgYW5kIGFuYWx5 c2lzIHB1cnBvc2VzLgorCSAqLworCVBydW5lUmVhc29uIHJlYXNvbjsKKworCS8qCisJICogQ29u dGFpbnMgZmxhZyBiaXRzOgorCSAqCisJICogSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05P VyBpbmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQKKwkgKiBMUF9VTlVTRUQgZHVy aW5nIHBydW5pbmcuCisJICoKKwkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIGluZGljYXRlcyB0 aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLCBhbmQKKwkgKiB3aWxsIHJldHVybiAnYWxs X3Zpc2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNhbGxlci4KKwkgKi8KKwlpbnQJ CQlvcHRpb25zOworCisJLyoKKwkgKiB2aXN0ZXN0IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggd2hl dGhlciB0dXBsZXMgYXJlIERFQUQgb3IgUkVDRU5UTFlfREVBRAorCSAqIChzZWUgaGVhcF9wcnVu ZV9zYXRpc2ZpZXNfdmFjdXVtKS4KKwkgKi8KKwlHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdDsKKwor CS8qCisJICogQ29udGFpbnMgdGhlIGN1dG9mZnMgdXNlZCBmb3IgZnJlZXppbmcuIFRoZXkgYXJl IHJlcXVpcmVkIGlmIHRoZQorCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNl dC4gY3V0b2Zmcy0+T2xkZXN0WG1pbiBpcyBhbHNvIHVzZWQKKwkgKiB0byBkZXRlcm1pbmUgaWYg ZGVhZCB0dXBsZXMgYXJlIEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEIG9yCisJICogSEVBUFRVUExF X0RFQUQuIEN1cnJlbnRseSBvbmx5IHZhY3V1bSBwYXNzZXMgaW4gY3V0b2Zmcy4gVmFjdXVtCisJ ICogY2FsY3VsYXRlcyB0aGVtIG9uY2UsIGF0IHRoZSBiZWdpbm5pbmcgb2YgdmFjdXVtaW5nIHRo ZSByZWxhdGlvbi4KKwkgKi8KKwlzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmczsKK30gUHJ1 bmVGcmVlemVQYXJhbXM7CisKIC8qCiAgKiBQZXItcGFnZSBzdGF0ZSByZXR1cm5lZCBieSBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpCiAgKi8KQEAgLTI2NCwxMyArMzE0LDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQKIAlPZmZzZXROdW1iZXIgZGVhZG9mZnNldHNbTWF4 SGVhcFR1cGxlc1BlclBhZ2VdOwogfSBQcnVuZUZyZWV6ZVJlc3VsdDsKIAotLyogJ3JlYXNvbicg Y29kZXMgZm9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgKi8KLXR5cGVkZWYgZW51bQot ewotCVBSVU5FX09OX0FDQ0VTUywJCQkvKiBvbi1hY2Nlc3MgcHJ1bmluZyAqLwotCVBSVU5FX1ZB Q1VVTV9TQ0FOLAkJCS8qIFZBQ1VVTSAxc3QgaGVhcCBwYXNzICovCi0JUFJVTkVfVkFDVVVNX0NM RUFOVVAsCQkvKiBWQUNVVU0gMm5kIGhlYXAgcGFzcyAqLwotfSBQcnVuZVJlYXNvbjsKIAogLyog LS0tLS0tLS0tLS0tLS0tLQogICoJCWZ1bmN0aW9uIHByb3RvdHlwZXMgZm9yIGhlYXAgYWNjZXNz IG1ldGhvZApAQCAtMzY3LDEyICs0MTAsOCBAQCBleHRlcm4gVHJhbnNhY3Rpb25JZCBoZWFwX2lu ZGV4X2RlbGV0ZV90dXBsZXMoUmVsYXRpb24gcmVsLAogCiAvKiBpbiBoZWFwL3BydW5laGVhcC5j ICovCiBleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyKTsKLWV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAotCQkJCQkJCQkJICAgR2xvYmFsVmlzU3Rh dGUgKnZpc3Rlc3QsCi0JCQkJCQkJCQkgICBpbnQgb3B0aW9ucywKLQkJCQkJCQkJCSAgIHN0cnVj dCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzLAorZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCQkJCSAgIFBydW5lRnJl ZXplUmVzdWx0ICpwcmVzdWx0LAotCQkJCQkJCQkJICAgUHJ1bmVSZWFzb24gcmVhc29uLAogCQkJ CQkJCQkJICAgT2Zmc2V0TnVtYmVyICpvZmZfbG9jLAogCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25J ZCAqbmV3X3JlbGZyb3plbl94aWQsCiAJCQkJCQkJCQkgICBNdWx0aVhhY3RJZCAqbmV3X3JlbG1p bl9teGlkKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMjNiY2U3MmFlNjQuLjg2OTg5 MThmNDQzIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjM0NSw2ICsyMzQ1LDcgQEAg UHJvamVjdGlvblBhdGgKIFByb21wdEludGVycnVwdENvbnRleHQKIFByb3RvY29sVmVyc2lvbgog UHJzU3RvcmFnZQorUHJ1bmVGcmVlemVQYXJhbXMKIFBydW5lRnJlZXplUmVzdWx0CiBQcnVuZVJl YXNvbgogUHJ1bmVTdGF0ZQotLSAKMi40My4wCgo= --000000000000fe23c60643d269a4 Content-Type: text/x-patch; charset="US-ASCII"; name="v20-0002-Keep-all_frozen-updated-in-heap_page_prune_and_f.patch" Content-Disposition: attachment; filename="v20-0002-Keep-all_frozen-updated-in-heap_page_prune_and_f.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi3r6wz31 RnJvbSA1NTk3NWM1NDhlYjhmYTY2YmU4NGZhOGMxZjQxZWU3MjM1NDk4MTRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE0OjU1OjQwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgMDIvMTJdIEtlZXAgYWxsX2Zyb3plbiB1cGRhdGVkIGluCiBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZQoKUHJldmlvdXNseSwgd2UgcmVsaWVkIG9uIGFsbF92aXNpYmxlIGFuZCBh bGxfZnJvemVuIGJlaW5nIHVzZWQgdG9nZXRoZXIKdG8gZW5zdXJlIHRoYXQgYWxsX2Zyb3plbiB3 YXMgY29ycmVjdCwgYnV0IGl0IGlzIGJldHRlciB0byBrZWVwIGJvdGgKZmllbGRzIHVwZGF0ZWQu CgpGdXR1cmUgY2hhbmdlcyB3aWxsIHNlcGFyYXRlIHRoZWlyIHVzYWdlLCBzbyB3ZSBzaG91bGQg bm90IGRlcGVuZCBvbgphbGxfdmlzaWJsZSBmb3IgdGhlIHZhbGlkaXR5IG9mIGFsbF9mcm96ZW4u CgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+CkRp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUy QkZ3UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwgNjAgKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgIDkgKyst LS0KIDIgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBlOWUxNGNiNDJiNy4uN2NkNTFjN2Jl MzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xNDMsMTAgKzE0Myw2IEBA IHR5cGVkZWYgc3RydWN0CiAJICogd2hldGhlciB0byBmcmVlemUgdGhlIHBhZ2Ugb3Igbm90LiAg VGhlIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuCiAJICogdmFsdWVzIHJldHVybmVkIHRvIHRo ZSBjYWxsZXIgYXJlIGFkanVzdGVkIHRvIGluY2x1ZGUgTFBfREVBRCBpdGVtcyBhdAogCSAqIHRo ZSBlbmQuCi0JICoKLQkgKiBhbGxfZnJvemVuIHNob3VsZCBvbmx5IGJlIGNvbnNpZGVyZWQgdmFs aWQgaWYgYWxsX3Zpc2libGUgaXMgYWxzbyBzZXQ7Ci0JICogd2UgZG9uJ3QgYm90aGVyIHRvIGNs ZWFyIHRoZSBhbGxfZnJvemVuIGZsYWcgZXZlcnkgdGltZSB3ZSBjbGVhciB0aGUKLQkgKiBhbGxf dmlzaWJsZSBmbGFnLgogCSAqLwogCWJvb2wJCWFsbF92aXNpYmxlOwogCWJvb2wJCWFsbF9mcm96 ZW47CkBAIC0zNTksOCArMzU1LDEwIEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJICogYW55bW9yZS4gIFRoZSBvcHBvcnR1bmlzdGlj IGZyZWV6ZSBoZXVyaXN0aWMgbXVzdCBiZSBpbXByb3ZlZDsKIAkJICogaG93ZXZlciwgZm9yIG5v dywgdHJ5IHRvIGFwcHJveGltYXRlIHRoZSBvbGQgbG9naWMuCiAJCSAqLwotCQlpZiAocHJzdGF0 ZS0+YWxsX3Zpc2libGUgJiYgcHJzdGF0ZS0+YWxsX2Zyb3plbiAmJiBwcnN0YXRlLT5uZnJvemVu ID4gMCkKKwkJaWYgKHByc3RhdGUtPmFsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZyb3plbiA+IDAp CiAJCXsKKwkJCUFzc2VydChwcnN0YXRlLT5hbGxfdmlzaWJsZSk7CisKIAkJCS8qCiAJCQkgKiBG cmVlemluZyB3b3VsZCBtYWtlIHRoZSBwYWdlIGFsbC1mcm96ZW4uICBIYXZlIGFscmVhZHkgZW1p dHRlZAogCQkJICogYW4gRlBJIG9yIHdpbGwgZG8gc28gYW55d2F5PwpAQCAtNTQ0LDkgKzU0Miw5 IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMs CiAJICogZGVhZCB0dXBsZXMgd2hpY2ggYXJlIG5vdCB5ZXQgcmVtb3ZhYmxlLiAgSG93ZXZlciwg ZGVhZCB0dXBsZXMgd2hpY2gKIAkgKiB3aWxsIGJlIHJlbW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1 dW1pbmcgc2hvdWxkIG5vdCBwcmVjbHVkZSB1cyBmcm9tCiAJICogb3Bwb3J0dW5pc3RpY2FsbHkg ZnJlZXppbmcuICBCZWNhdXNlIG9mIHRoYXQsIHdlIGRvIG5vdCBjbGVhcgotCSAqIGFsbF92aXNp YmxlIHdoZW4gd2Ugc2VlIExQX0RFQUQgaXRlbXMuICBXZSBmaXggdGhhdCBhdCB0aGUgZW5kIG9m IHRoZQotCSAqIGZ1bmN0aW9uLCB3aGVuIHdlIHJldHVybiB0aGUgdmFsdWUgdG8gdGhlIGNhbGxl ciwgc28gdGhhdCB0aGUgY2FsbGVyCi0JICogZG9lc24ndCBzZXQgdGhlIFZNIGJpdCBpbmNvcnJl Y3RseS4KKwkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB3aGVuIHdlIHNlZSBMUF9ERUFE IGl0ZW1zLiAgV2UgZml4IHRoYXQgYXQKKwkgKiB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbiwgd2hl biB3ZSByZXR1cm4gdGhlIHZhbHVlIHRvIHRoZSBjYWxsZXIsIHNvCisJICogdGhhdCB0aGUgY2Fs bGVyIGRvZXNuJ3Qgc2V0IHRoZSBWTSBiaXRzIGluY29ycmVjdGx5LgogCSAqLwogCWlmIChwcnN0 YXRlLmF0dGVtcHRfZnJlZXplKQogCXsKQEAgLTc4Myw2ICs3ODEsOCBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJCQkJICBkb19o aW50X3BydW5lLAogCQkJCQkJCQkJICAmcHJzdGF0ZSk7CiAKKwlBc3NlcnQoIXByc3RhdGUuYWxs X2Zyb3plbiB8fCBwcnN0YXRlLmFsbF92aXNpYmxlKTsKKwogCS8qIEFueSBlcnJvciB3aGlsZSBh cHBseWluZyB0aGUgY2hhbmdlcyBpcyBjcml0aWNhbCAqLwogCVNUQVJUX0NSSVRfU0VDVElPTigp OwogCkBAIC04NTIsNyArODUyLDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVG cmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCSAqLwogCQkJaWYgKGRvX2ZyZWV6ZSkKIAkJCXsKLQkJ CQlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmFsbF9mcm96ZW4pCisJCQkJaWYg KHByc3RhdGUuYWxsX2Zyb3plbikKIAkJCQkJZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRl LnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKIAkJCQllbHNlCiAJCQkJewpAQCAtODg5LDE2ICs4ODks MTYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFt cywKIAlwcmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlfZGVh ZF90dXBsZXM7CiAKIAkvKgotCSAqIEl0IHdhcyBjb252ZW5pZW50IHRvIGlnbm9yZSBMUF9ERUFE IGl0ZW1zIGluIGFsbF92aXNpYmxlIGVhcmxpZXIgb24gdG8KLQkgKiBtYWtlIHRoZSBjaG9pY2Ug b2Ygd2hldGhlciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdlIHVuYWZmZWN0ZWQgYnkgdGhlCi0J ICogc2hvcnQtdGVybSBwcmVzZW5jZSBvZiBMUF9ERUFEIGl0ZW1zLiAgVGhlc2UgTFBfREVBRCBp dGVtcyB3ZXJlCi0JICogZWZmZWN0aXZlbHkgYXNzdW1lZCB0byBiZSBMUF9VTlVTRUQgaXRlbXMg aW4gdGhlIG1ha2luZy4gIEl0IGRvZXNuJ3QKLQkgKiBtYXR0ZXIgd2hpY2ggdmFjdXVtIGhlYXAg cGFzcyAoaW5pdGlhbCBwYXNzIG9yIGZpbmFsIHBhc3MpIGVuZHMgdXAKLQkgKiBzZXR0aW5nIHRo ZSBwYWdlIGFsbC1mcm96ZW4sIGFzIGxvbmcgYXMgdGhlIG9uZ29pbmcgVkFDVVVNIGRvZXMgaXQu CisJICogSXQgd2FzIGNvbnZlbmllbnQgdG8gaWdub3JlIExQX0RFQUQgaXRlbXMgaW4gYWxsX3Zp c2libGUvYWxsX2Zyb3plbgorCSAqIGVhcmxpZXIgb24gdG8gbWFrZSB0aGUgY2hvaWNlIG9mIHdo ZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSB0aGUgcGFnZQorCSAqIHVuYWZmZWN0ZWQgYnkgdGhlIHNo b3J0LXRlcm0gcHJlc2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4gIFRoZXNlIExQX0RFQUQKKwkgKiBp dGVtcyB3ZXJlIGVmZmVjdGl2ZWx5IGFzc3VtZWQgdG8gYmUgTFBfVU5VU0VEIGl0ZW1zIGluIHRo ZSBtYWtpbmcuICBJdAorCSAqIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIHZhY3V1bSBoZWFwIHBhc3Mg KGluaXRpYWwgcGFzcyBvciBmaW5hbCBwYXNzKSBlbmRzCisJICogdXAgc2V0dGluZyB0aGUgcGFn ZSBhbGwtZnJvemVuLCBhcyBsb25nIGFzIHRoZSBvbmdvaW5nIFZBQ1VVTSBkb2VzIGl0LgogCSAq Ci0JICogTm93IHRoYXQgZnJlZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNldCBhbGxfdmlz aWJsZSBpZiB0aGVyZSBhcmUKLQkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUgcGFnZS4gIEl0 IG5lZWRzIHRvIHJlZmxlY3QgdGhlIHByZXNlbnQgc3RhdGUKLQkgKiBvZiB0aGUgcGFnZSwgYXMg ZXhwZWN0ZWQgYnkgb3VyIGNhbGxlci4KKwkgKiBOb3cgdGhhdCBmcmVlemluZyBoYXMgYmVlbiBm aW5hbGl6ZWQsIHVuc2V0IGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuCisJICogaWYgdGhlcmUg YXJlIGFueSBMUF9ERUFEIGl0ZW1zIG9uIHRoZSBwYWdlLiAgSXQgbmVlZHMgdG8gcmVmbGVjdCB0 aGUKKwkgKiBwcmVzZW50IHN0YXRlIG9mIHRoZSBwYWdlLCBhcyBleHBlY3RlZCBieSBvdXIgY2Fs bGVyLgogCSAqLwogCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYmIHByc3RhdGUubHBkZWFkX2l0 ZW1zID09IDApCiAJewpAQCAtMTI4OSw4ICsxMjg5LDkgQEAgaGVhcF9wcnVuZV9yZWNvcmRfZGVh ZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtLAogCXByc3RhdGUtPm5k ZWFkKys7CiAKIAkvKgotCSAqIERlbGliZXJhdGVseSBkZWxheSB1bnNldHRpbmcgYWxsX3Zpc2li bGUgdW50aWwgbGF0ZXIgZHVyaW5nIHBydW5pbmcuCi0JICogUmVtb3ZhYmxlIGRlYWQgdHVwbGVz IHNob3VsZG4ndCBwcmVjbHVkZSBmcmVlemluZyB0aGUgcGFnZS4KKwkgKiBEZWxpYmVyYXRlbHkg ZGVsYXkgdW5zZXR0aW5nIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIHVudGlsIGxhdGVyCisJ ICogZHVyaW5nIHBydW5pbmcuIFJlbW92YWJsZSBkZWFkIHR1cGxlcyBzaG91bGRuJ3QgcHJlY2x1 ZGUgZnJlZXppbmcgdGhlCisJICogcGFnZS4KIAkgKi8KIAogCS8qIFJlY29yZCB0aGUgZGVhZCBv ZmZzZXQgZm9yIHZhY3V1bSAqLwpAQCAtMTQxOCw2ICsxNDE5LDcgQEAgaGVhcF9wcnVuZV9yZWNv cmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9m ZnNldE51bWIKIAkJCQlpZiAoIUhlYXBUdXBsZUhlYWRlclhtaW5Db21taXR0ZWQoaHR1cCkpCiAJ CQkJewogCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJCQlwcnN0YXRlLT5h bGxfZnJvemVuID0gZmFsc2U7CiAJCQkJCWJyZWFrOwogCQkJCX0KIApAQCAtMTQzMiwxNCArMTQz NCwxNSBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwg UHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCiAJCQkJLyoKIAkJCQkgKiBGb3Igbm93 IGFsd2F5cyB1c2UgcHJzdGF0ZS0+Y3V0b2ZmcyBmb3IgdGhpcyB0ZXN0LCBiZWNhdXNlCi0JCQkJ ICogd2Ugb25seSB1cGRhdGUgJ2FsbF92aXNpYmxlJyB3aGVuIGZyZWV6aW5nIGlzIHJlcXVlc3Rl ZC4gV2UKLQkJCQkgKiBjb3VsZCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkIGluc3Rl YWQsIGlmIGEKLQkJCQkgKiBub24tZnJlZXppbmcgY2FsbGVyIHdhbnRlZCB0byBzZXQgdGhlIFZN IGJpdC4KKwkJCQkgKiB3ZSBvbmx5IHVwZGF0ZSAnYWxsX3Zpc2libGUnIGFuZCAnYWxsX2Zyb3pl bicgd2hlbiBmcmVlemluZworCQkJCSAqIGlzIHJlcXVlc3RlZC4gV2UgY291bGQgdXNlIEdsb2Jh bFZpc1Rlc3RJc1JlbW92YWJsZVhpZAorCQkJCSAqIGluc3RlYWQsIGlmIGEgbm9uLWZyZWV6aW5n IGNhbGxlciB3YW50ZWQgdG8gc2V0IHRoZSBWTSBiaXQuCiAJCQkJICovCiAJCQkJQXNzZXJ0KHBy c3RhdGUtPmN1dG9mZnMpOwogCQkJCWlmICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4sIHBy c3RhdGUtPmN1dG9mZnMtPk9sZGVzdFhtaW4pKQogCQkJCXsKIAkJCQkJcHJzdGF0ZS0+YWxsX3Zp c2libGUgPSBmYWxzZTsKKwkJCQkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCQkJCQli cmVhazsKIAkJCQl9CiAKQEAgLTE0NTMsNiArMTQ1Niw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3Vu Y2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXRO dW1iCiAJCWNhc2UgSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQ6CiAJCQlwcnN0YXRlLT5yZWNlbnRs eV9kZWFkX3R1cGxlcysrOwogCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCXBy c3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCQkJLyoKIAkJCSAqIFRoaXMgdHVwbGUgd2ls bCBzb29uIGJlY29tZSBERUFELiAgVXBkYXRlIHRoZSBoaW50IGZpZWxkIHNvCkBAIC0xNDcyLDYg KzE0NzYsNyBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFn ZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCQkJICogZG9lcywgc28gYmUgY29u c2lzdGVudC4KIAkJCSAqLwogCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCXBy c3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCQkJLyoKIAkJCSAqIElmIHdlIHdhbnRlZCB0 byBvcHRpbWl6ZSBmb3IgYWJvcnRzLCB3ZSBtaWdodCBjb25zaWRlciBtYXJraW5nCkBAIC0xNDkw LDYgKzE0OTUsNyBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2Ug cGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCQkJICovCiAJCQlwcnN0YXRl LT5saXZlX3R1cGxlcysrOwogCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCXBy c3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCQkJLyoKIAkJCSAqIFRoaXMgdHVwbGUgbWF5 IHNvb24gYmVjb21lIERFQUQuICBVcGRhdGUgdGhlIGhpbnQgZmllbGQgc28gdGhhdApAQCAtMTU1 NCwxMCArMTU2MCwxMCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQYWdl IHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlcgogCSAqIGhhc3R1cC9ub25l bXB0eV9wYWdlcyBhcyBwcm92aXNpb25hbCBubyBtYXR0ZXIgaG93IExQX0RFQUQgaXRlbXMgYXJl CiAJICogaGFuZGxlZCAoaGFuZGxlZCBoZXJlLCBvciBoYW5kbGVkIGxhdGVyIG9uKS4KIAkgKgot CSAqIFNpbWlsYXJseSwgZG9uJ3QgdW5zZXQgYWxsX3Zpc2libGUgdW50aWwgbGF0ZXIsIGF0IHRo ZSBlbmQgb2YKLQkgKiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3aWxsIGFs bG93IHVzIHRvIGF0dGVtcHQgdG8gZnJlZXplCi0JICogdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4g IEFzIGxvbmcgYXMgd2UgdW5zZXQgaXQgYmVmb3JlIHVwZGF0aW5nIHRoZQotCSAqIHZpc2liaWxp dHkgbWFwLCB0aGlzIHdpbGwgYmUgY29ycmVjdC4KKwkgKiBTaW1pbGFybHksIGRvbid0IHVuc2V0 IGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIHVudGlsIGxhdGVyLCBhdCB0aGUKKwkgKiBlbmQg b2YgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKS4gIFRoaXMgd2lsbCBhbGxvdyB1cyB0byBh dHRlbXB0IHRvCisJICogZnJlZXplIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuICBBcyBsb25nIGFz IHdlIHVuc2V0IGl0IGJlZm9yZSB1cGRhdGluZworCSAqIHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhp cyB3aWxsIGJlIGNvcnJlY3QuCiAJICovCiAKIAkvKiBSZWNvcmQgdGhlIGRlYWQgb2Zmc2V0IGZv ciB2YWN1dW0gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCAyYjllNWM3 ZjgxYi4uZTFiNzQ1NjgyM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAg LTIwMTcsNyArMjAxNyw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJ ICogYWdyZWVtZW50IHdpdGggaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkgdXNpbmcgYW4gYXNz ZXJ0aW9uLgogCSAqLwogI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKLQkvKiBOb3RlIHRoYXQg YWxsX2Zyb3plbiB2YWx1ZSBkb2VzIG5vdCBtYXR0ZXIgd2hlbiAhYWxsX3Zpc2libGUgKi8KIAlp ZiAocHJlc3VsdC5hbGxfdmlzaWJsZSkKIAl7CiAJCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2Zm OwpAQCAtMjA3MSw2ICsyMDcwLDcgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3Jl bCwKIAkqaGFzX2xwZGVhZF9pdGVtcyA9IChwcmVzdWx0LmxwZGVhZF9pdGVtcyA+IDApOwogCiAJ QXNzZXJ0KCFwcmVzdWx0LmFsbF92aXNpYmxlIHx8ICEoKmhhc19scGRlYWRfaXRlbXMpKTsKKwlB c3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fCBwcmVzdWx0LmFsbF92aXNpYmxlKTsKIAogCS8q CiAJICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0IGJhc2VkIG9uIGluZm9ybWF0 aW9uIGZyb20gdGhlIFZNIChhcwpAQCAtMjE3NiwxMSArMjE3NiwxMCBAQCBsYXp5X3NjYW5fcHJ1 bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCiAJLyoKIAkgKiBJZiB0aGUgYWxsLXZpc2libGUgcGFn ZSBpcyBhbGwtZnJvemVuIGJ1dCBub3QgbWFya2VkIGFzIHN1Y2ggeWV0LCBtYXJrCi0JICogaXQg YXMgYWxsLWZyb3plbi4gIE5vdGUgdGhhdCBhbGxfZnJvemVuIGlzIG9ubHkgdmFsaWQgaWYgYWxs X3Zpc2libGUgaXMKLQkgKiB0cnVlLCBzbyB3ZSBtdXN0IGNoZWNrIGJvdGggYWxsX3Zpc2libGUg YW5kIGFsbF9mcm96ZW4uCisJICogaXQgYXMgYWxsLWZyb3plbi4KIAkgKi8KLQllbHNlIGlmIChh bGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSAmJgotCQkJ IHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTih2YWNyZWwtPnJlbCwgYmxrbm8s ICZ2bWJ1ZmZlcikpCisJZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHBy ZXN1bHQuYWxsX2Zyb3plbiAmJgorCQkJICFWTV9BTExfRlJPWkVOKHZhY3JlbC0+cmVsLCBibGtu bywgJnZtYnVmZmVyKSkKIAl7CiAJCXVpbnQ4CQlvbGRfdm1iaXRzOwogCi0tIAoyLjQzLjAKCg== --000000000000fe23c60643d269a4 Content-Type: text/x-patch; charset="UTF-8"; name="v20-0003-Update-PruneState.all_-visible-frozen-earlier-in.patch" Content-Disposition: attachment; filename="v20-0003-Update-PruneState.all_-visible-frozen-earlier-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi3r710p2 RnJvbSA4YWU3NDc5ZTVmOTE5MWUyNmQzMGM1ZmExMzNhODMyMmMxOTU0OWM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIxOjQ5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgMDMvMTJdIFVwZGF0ZSBQcnVuZVN0YXRlLmFsbF9bdmlzaWJsZXxmcm96ZW5dIGVh cmxpZXIgaW4KIHBydW5pbmcKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3Bs YWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRo ZSBwcnVuZS9mcmVlemUgcGF0aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNp YmxlIGFuZAphbGxfZnJvemVuIGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zLiBUaGlzIGFs bG93cyBvcHBvcnR1bmlzdGljCmZyZWV6aW5nIGlmIHRoZSBwYWdlIHdvdWxkIG90aGVyd2lzZSBi ZSBmdWxseSBmcm96ZW4sIHNpbmNlIHRob3NlIGRlYWQKaXRlbXMgYXJlIGxhdGVyIHJlbW92ZWQg aW4gdmFjdXVt4oCZcyB0aGlyZCBwaGFzZS4KClRvIG1vdmUgdGhlIFZNIHVwZGF0ZSBpbnRvIHRo ZSBzYW1lIFdBTCByZWNvcmQgdGhhdApwcnVuZXMgYW5kIGZyZWV6ZXMgdHVwbGVzLCB3ZSBtdXN0 IGtub3cgd2hldGhlciB0aGUgcGFnZSB3aWxsCmJlIG1hcmtlZCBhbGwtdmlzaWJsZS9hbGwtZnJv emVuIGJlZm9yZSBlbWl0dGluZyBXQUwuCgpUaGUgb25seSBiYXJyaWVyIHRvIHVwZGF0aW5nIHRo ZXNlIGZsYWdzIGltbWVkaWF0ZWx5IGFmdGVyIGRlY2lkaW5nCndoZXRoZXIgdG8gb3Bwb3J0dW5p c3RpY2FsbHkgZnJlZXplIGlzIHRoYXQgd2UgcHJldmlvdXNseSB1c2VkCmFsbF9mcm96ZW4gdG8g Y29tcHV0ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3aGVuIGZyZWV6aW5nCnR1cGxl cy4gQnkgZGV0ZXJtaW5pbmcgdGhlIGN1dG9mZiBlYXJsaWVyLCB3ZSBjYW4gdXBkYXRlIHRoZSBm bGFncwppbW1lZGlhdGVseSBhZnRlciBtYWtpbmcgdGhlIGZyZWV6ZSBkZWNpc2lvbi4KClRoaXMg aXMgcmVxdWlyZWQgdG8gc2V0IHRoZSBWTSBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1f U0NBTgpyZWNvcmQgZW1pdHRlZCBieSBwcnVuaW5nIGFuZCBmcmVlemluZy4KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyB8IDExNyArKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA3Y2Q1MWM3YmUzMy4uODZkYTI3 NDM0MjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xMzgsMTEgKzEzOCwx MSBAQCB0eXBlZGVmIHN0cnVjdAogCSAqIGJpdHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZy b3plIHNvbWUgdHVwbGVzLCBhbmQgYWxsX2Zyb3plbiBpcwogCSAqIHRydWUuCiAJICoKLQkgKiBO T1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRl bXMuICBUaGF0J3MKLQkgKiBjb252ZW5pZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZSgpLCB0byB1c2UgdGhlbSB0byBkZWNpZGUKLQkgKiB3aGV0aGVyIHRvIGZyZWV6ZSB0aGUgcGFn ZSBvciBub3QuICBUaGUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4KLQkgKiB2YWx1ZXMgcmV0 dXJuZWQgdG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZSBMUF9ERUFEIGl0ZW1z IGF0Ci0JICogdGhlIGVuZC4KKwkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBp bml0aWFsbHkgZG9uJ3QgaW5jbHVkZSBMUF9ERUFEIGl0ZW1zLgorCSAqIFRoYXQncyBjb252ZW5p ZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIHVzZSB0aGVtIHRvCisJICog ZGVjaWRlIHdoZXRoZXIgdG8gZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZSBhbGxfdmlzaWJs ZSBhbmQKKwkgKiBhbGxfZnJvemVuIHZhbHVlcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGFyZSBh ZGp1c3RlZCB0byBpbmNsdWRlCisJICogTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUg d2hldGhlciB0byBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUuCiAJICovCiAJYm9vbAkJYWxsX3Zp c2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKQEAgLTE3NSw3ICsxNzUsOCBAQCBzdGF0aWMgdm9p ZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIAogc3RhdGljIGJvb2wgaGVhcF9w YWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJ CQkgIGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLCBib29sIGRvX3BydW5lLCBib29sIGRvX2hpbnRf cHJ1bmUsCi0JCQkJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSk7CisJCQkJCQkJCSAgUHJ1bmVT dGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCQkJICBUcmFuc2FjdGlvbklkICpmcnpfY29uZmxpY3RfaG9y aXpvbik7CiAKIAogLyoKQEAgLTMwNiw3ICszMDcsOSBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogICogcGVyZm9ybXMgc2V2ZXJhbCBwcmUt ZnJlZXplIGNoZWNrcy4KICAqCiAgKiBUaGUgdmFsdWVzIG9mIGRvX3BydW5lLCBkb19oaW50X3By dW5lLCBhbmQgZGlkX3R1cGxlX2hpbnRfZnBpIG11c3QgYmUKLSAqIGRldGVybWluZWQgYmVmb3Jl IGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKyAqIGRldGVybWluZWQgYmVmb3JlIGNhbGxpbmcgdGhp cyBmdW5jdGlvbi4gKmZyel9jb25mbGljdF9ob3Jpem9uIGlzIHNldCB0bworICogdGhlIHNuYXBz aG90IGNvbmZsaWN0IGhvcml6b24gd2UgZm9yIHRoZSBXQUwgcmVjb3JkIHNob3VsZCB3ZSBkZWNp ZGUgdG8KKyAqIGZyZWV6ZSB0dXBsZXMuCiAgKgogICogcHJzdGF0ZSBpcyBib3RoIGFuIGlucHV0 IGFuZCBvdXRwdXQgcGFyYW1ldGVyLgogICoKQEAgLTMxOCw3ICszMjEsOCBAQCBoZWFwX3BhZ2Vf d2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCSAgYm9v bCBkaWRfdHVwbGVfaGludF9mcGksCiAJCQkJCSAgYm9vbCBkb19wcnVuZSwKIAkJCQkJICBib29s IGRvX2hpbnRfcHJ1bmUsCi0JCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSkKKwkJCQkJICBQcnVu ZVN0YXRlICpwcnN0YXRlLAorCQkJCQkgIFRyYW5zYWN0aW9uSWQgKmZyel9jb25mbGljdF9ob3Jp em9uKQogewogCWJvb2wJCWRvX2ZyZWV6ZSA9IGZhbHNlOwogCkBAIC0zODgsNiArMzkyLDIyIEBA IGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwK IAkJICogY3JpdGljYWwgc2VjdGlvbi4KIAkJICovCiAJCWhlYXBfcHJlX2ZyZWV6ZV9jaGVja3Mo YnVmZmVyLCBwcnN0YXRlLT5mcm96ZW4sIHByc3RhdGUtPm5mcm96ZW4pOworCisJCS8qCisJCSAq IENhbGN1bGF0ZSB3aGF0IHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHNob3VsZCBiZSBm b3IgYSByZWNvcmQKKwkJICogZnJlZXppbmcgdHVwbGVzLiBXZSBjYW4gdXNlIHRoZSB2aXNpYmls aXR5X2N1dG9mZl94aWQgYXMgb3VyIGN1dG9mZgorCQkgKiBmb3IgY29uZmxpY3RzIHdoZW4gdGhl IHdob2xlIHBhZ2UgaXMgZWxpZ2libGUgdG8gYmVjb21lIGFsbC1mcm96ZW4KKwkJICogaW4gdGhl IFZNIG9uY2Ugd2UncmUgZG9uZSB3aXRoIGl0LiBPdGhlcndpc2UsIHdlIGdlbmVyYXRlIGEKKwkJ ICogY29uc2VydmF0aXZlIGN1dG9mZiBieSBzdGVwcGluZyBiYWNrIGZyb20gT2xkZXN0WG1pbi4K KwkJICovCisJCWlmIChwcnN0YXRlLT5hbGxfZnJvemVuKQorCQkJKmZyel9jb25mbGljdF9ob3Jp em9uID0gcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCQllbHNlCisJCXsKKwkJCS8q IEF2b2lkcyBmYWxzZSBjb25mbGljdHMgd2hlbiBob3Rfc3RhbmRieV9mZWVkYmFjayBpbiB1c2Ug Ki8KKwkJCSpmcnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUtPmN1dG9mZnMtPk9sZGVzdFht aW47CisJCQlUcmFuc2FjdGlvbklkUmV0cmVhdCgqZnJ6X2NvbmZsaWN0X2hvcml6b24pOworCQl9 CiAJfQogCWVsc2UgaWYgKHByc3RhdGUtPm5mcm96ZW4gPiAwKQogCXsKQEAgLTQzMywxMCArNDUz LDEwIEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlciwKICAqIG5vdy4gIFRoZSAncGFyYW1zLmN1dG9mZnMnLCAncHJlc3VsdCcsICduZXdfcmVs ZnJvemVuX3hpZCcgYW5kCiAgKiAnbmV3X3JlbG1pbl9teGlkJyBhcmd1bWVudHMgYXJlIHJlcXVp cmVkIHdoZW4gZnJlZXppbmcuICBXaGVuCiAgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlv biBpcyBwYXNzZWQsIHdlIGFsc28gc2V0IHByZXN1bHQtPmFsbF92aXNpYmxlCi0gKiBhbmQgcHJl c3VsdC0+YWxsX2Zyb3plbiBvbiBleGl0LCB0byBpbmRpY2F0ZSBpZiB0aGUgVk0gYml0cyBjYW4g YmUgc2V0LgotICogVGhleSBhcmUgYWx3YXlzIHNldCB0byBmYWxzZSB3aGVuIHRoZSBIRUFQX1BB R0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3QKLSAqIHBhc3NlZCwgYmVjYXVzZSBhdCB0aGUg bW9tZW50IG9ubHkgY2FsbGVycyB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdAotICogaW5mb3Jt YXRpb24uCisgKiBhbmQgcHJlc3VsdC0+YWxsX2Zyb3plbiBhZnRlciBkZXRlcm1pbmluZyB3aGV0 aGVyIG9yIG5vdCB0bworICogb3Bwb3J1bmlzdGljYWxseSBmcmVlemUsIHRvIGluZGljYXRlIGlm IHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZQorICogYWx3YXlzIHNldCB0byBmYWxz ZSB3aGVuIHRoZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3QgcGFzc2VkLAor ICogYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycyB0aGF0IGFsc28gZnJlZXplIG5l ZWQgdGhhdCBpbmZvcm1hdGlvbi4KICAqCiAgKiBwcmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJh bWV0ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBzdWNoIGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxl cyByZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBkZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVy IHBydW5pbmcuCkBAIC00NzIsNiArNDkyLDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo UHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAlib29sCQlkb19oaW50X3BydW5lOwogCWJvb2wJ CWRpZF90dXBsZV9oaW50X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2Fs X2ZwaTsKKwlUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CiAKIAkvKiBDb3B5IHBhcmFtZXRlcnMgdG8gcHJzdGF0ZSAqLwogCXByc3RhdGUu dmlzdGVzdCA9IHBhcmFtcy0+dmlzdGVzdDsKQEAgLTU0MSwxMCArNTYyLDEwIEBAIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICogYXJlIHR1 cGxlcyBwcmVzZW50IHRoYXQgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIG9yIGlmIHRoZXJl IGFyZQogCSAqIGRlYWQgdHVwbGVzIHdoaWNoIGFyZSBub3QgeWV0IHJlbW92YWJsZS4gIEhvd2V2 ZXIsIGRlYWQgdHVwbGVzIHdoaWNoCiAJICogd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2Yg dmFjdXVtaW5nIHNob3VsZCBub3QgcHJlY2x1ZGUgdXMgZnJvbQotCSAqIG9wcG9ydHVuaXN0aWNh bGx5IGZyZWV6aW5nLiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBub3QgY2xlYXIKLQkgKiBhbGxf dmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4 IHRoYXQgYXQKLQkgKiB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbiwgd2hlbiB3ZSByZXR1cm4gdGhl IHZhbHVlIHRvIHRoZSBjYWxsZXIsIHNvCi0JICogdGhhdCB0aGUgY2FsbGVyIGRvZXNuJ3Qgc2V0 IHRoZSBWTSBiaXRzIGluY29ycmVjdGx5LgorCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5n LiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBub3QgaW1tZWRpYXRlbHkKKwkgKiBjbGVhciBhbGxf dmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4 CisJICogdGhhdCBhZnRlciBzY2FubmluZyB0aGUgbGluZSBwb2ludGVycywgYmVmb3JlIHdlIHJl dHVybiB0aGUgdmFsdWUgdG8KKwkgKiB0aGUgY2FsbGVyLCBzbyB0aGF0IHRoZSBjYWxsZXIgZG9l c24ndCBzZXQgdGhlIFZNIGJpdHMgaW5jb3JyZWN0bHkuCiAJICovCiAJaWYgKHByc3RhdGUuYXR0 ZW1wdF9mcmVlemUpCiAJewpAQCAtNzc5LDcgKzgwMCwyNCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5k X2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJCQkJICBkaWRfdHVwbGVf aGludF9mcGksCiAJCQkJCQkJCQkgIGRvX3BydW5lLAogCQkJCQkJCQkJICBkb19oaW50X3BydW5l LAotCQkJCQkJCQkJICAmcHJzdGF0ZSk7CisJCQkJCQkJCQkgICZwcnN0YXRlLAorCQkJCQkJCQkJ ICAmZnJ6X2NvbmZsaWN0X2hvcml6b24pOworCisJLyoKKwkgKiBXaGlsZSBzY2FubmluZyB0aGUg bGluZSBwb2ludGVycywgd2UgZGlkIG5vdCBjbGVhcgorCSAqIGFsbF92aXNpYmxlL2FsbF9mcm96 ZW4gd2hlbiBlbmNvdW50ZXJpbmcgTFBfREVBRCBpdGVtcyBiZWNhdXNlIHdlCisJICogd2FudGVk IHRoZSBkZWNpc2lvbiB3aGV0aGVyIG9yIG5vdCB0byBmcmVlemUgdGhlIHBhZ2UgdG8gYmUgdW5h ZmZlY3RlZAorCSAqIGJ5IHRoZSBzaG9ydC10ZXJtIHByZXNlbmNlIG9mIExQX0RFQUQgaXRlbXMu ICBUaGVzZSBMUF9ERUFEIGl0ZW1zIGFyZQorCSAqIGVmZmVjdGl2ZWx5IGFzc3VtZWQgdG8gYmUg TFBfVU5VU0VEIGl0ZW1zIGluIHRoZSBtYWtpbmcuICBJdCBkb2Vzbid0CisJICogbWF0dGVyIHdo aWNoIHZhY3V1bSBoZWFwIHBhc3MgKGluaXRpYWwgcGFzcyBvciBmaW5hbCBwYXNzKSBlbmRzIHVw CisJICogc2V0dGluZyB0aGUgcGFnZSBhbGwtZnJvemVuLCBhcyBsb25nIGFzIHRoZSBvbmdvaW5n IFZBQ1VVTSBkb2VzIGl0LgorCSAqCisJICogTm93IHRoYXQgd2UgZmluaXNoZWQgZGV0ZXJtaW5p bmcgd2hldGhlciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdlLAorCSAqIHVwZGF0ZSBhbGxfdmlz aWJsZSBhbmQgYWxsX2Zyb3plbiBzbyB0aGF0IHRoZXkgcmVmbGVjdCB0aGUgdHJ1ZSBzdGF0ZQor CSAqIG9mIHRoZSBwYWdlIGZvciBzZXR0aW5nIFBEX0FMTF9WSVNJQkxFIGFuZCBWTSBiaXRzLgor CSAqLworCWlmIChwcnN0YXRlLmxwZGVhZF9pdGVtcyA+IDApCisJCXByc3RhdGUuYWxsX3Zpc2li bGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCUFzc2VydCghcHJzdGF0ZS5hbGxf ZnJvemVuIHx8IHByc3RhdGUuYWxsX3Zpc2libGUpOwogCkBAIC04NDEsMjcgKzg3OSw4IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkg KiBvbiB0aGUgc3RhbmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgdHVwbGUg dGhpcwogCQkJICogcmVjb3JkIHdpbGwgZnJlZXplIHdpbGwgY29uZmxpY3QuCiAJCQkgKi8KLQkJ CVRyYW5zYWN0aW9uSWQgZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAkJCVRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkOwogCi0JCQkvKgotCQkJICogV2UgY2Fu IHVzZSB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGFzIG91ciBjdXRvZmYgZm9yCi0JCQkgKiBj b25mbGljdHMgd2hlbiB0aGUgd2hvbGUgcGFnZSBpcyBlbGlnaWJsZSB0byBiZWNvbWUgYWxsLWZy b3plbgotCQkJICogaW4gdGhlIFZNIG9uY2Ugd2UncmUgZG9uZSB3aXRoIGl0LiAgT3RoZXJ3aXNl IHdlIGdlbmVyYXRlIGEKLQkJCSAqIGNvbnNlcnZhdGl2ZSBjdXRvZmYgYnkgc3RlcHBpbmcgYmFj ayBmcm9tIE9sZGVzdFhtaW4uCi0JCQkgKi8KLQkJCWlmIChkb19mcmVlemUpCi0JCQl7Ci0JCQkJ aWYgKHByc3RhdGUuYWxsX2Zyb3plbikKLQkJCQkJZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBwcnN0 YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKLQkJCQllbHNlCi0JCQkJewotCQkJCQkvKiBBdm9p ZHMgZmFsc2UgY29uZmxpY3RzIHdoZW4gaG90X3N0YW5kYnlfZmVlZGJhY2sgaW4gdXNlICovCi0J CQkJCWZyel9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluOwot CQkJCQlUcmFuc2FjdGlvbklkUmV0cmVhdChmcnpfY29uZmxpY3RfaG9yaXpvbik7Ci0JCQkJfQot CQkJfQotCiAJCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MoZnJ6X2NvbmZsaWN0X2hvcml6b24s IHByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVkKSkKIAkJCQljb25mbGljdF94aWQgPSBmcnpfY29u ZmxpY3RfaG9yaXpvbjsKIAkJCWVsc2UKQEAgLTg4NywzMCArOTA2LDggQEAgaGVhcF9wYWdlX3By dW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAlwcmVzdWx0LT5uZnJv emVuID0gcHJzdGF0ZS5uZnJvemVuOwogCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5s aXZlX3R1cGxlczsKIAlwcmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVj ZW50bHlfZGVhZF90dXBsZXM7Ci0KLQkvKgotCSAqIEl0IHdhcyBjb252ZW5pZW50IHRvIGlnbm9y ZSBMUF9ERUFEIGl0ZW1zIGluIGFsbF92aXNpYmxlL2FsbF9mcm96ZW4KLQkgKiBlYXJsaWVyIG9u IHRvIG1ha2UgdGhlIGNob2ljZSBvZiB3aGV0aGVyIG9yIG5vdCB0byBmcmVlemUgdGhlIHBhZ2UK LQkgKiB1bmFmZmVjdGVkIGJ5IHRoZSBzaG9ydC10ZXJtIHByZXNlbmNlIG9mIExQX0RFQUQgaXRl bXMuICBUaGVzZSBMUF9ERUFECi0JICogaXRlbXMgd2VyZSBlZmZlY3RpdmVseSBhc3N1bWVkIHRv IGJlIExQX1VOVVNFRCBpdGVtcyBpbiB0aGUgbWFraW5nLiAgSXQKLQkgKiBkb2Vzbid0IG1hdHRl ciB3aGljaCB2YWN1dW0gaGVhcCBwYXNzIChpbml0aWFsIHBhc3Mgb3IgZmluYWwgcGFzcykgZW5k cwotCSAqIHVwIHNldHRpbmcgdGhlIHBhZ2UgYWxsLWZyb3plbiwgYXMgbG9uZyBhcyB0aGUgb25n b2luZyBWQUNVVU0gZG9lcyBpdC4KLQkgKgotCSAqIE5vdyB0aGF0IGZyZWV6aW5nIGhhcyBiZWVu IGZpbmFsaXplZCwgdW5zZXQgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4KLQkgKiBpZiB0aGVy ZSBhcmUgYW55IExQX0RFQUQgaXRlbXMgb24gdGhlIHBhZ2UuICBJdCBuZWVkcyB0byByZWZsZWN0 IHRoZQotCSAqIHByZXNlbnQgc3RhdGUgb2YgdGhlIHBhZ2UsIGFzIGV4cGVjdGVkIGJ5IG91ciBj YWxsZXIuCi0JICovCi0JaWYgKHByc3RhdGUuYWxsX3Zpc2libGUgJiYgcHJzdGF0ZS5scGRlYWRf aXRlbXMgPT0gMCkKLQl7Ci0JCXByZXN1bHQtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfdmlz aWJsZTsKLQkJcHJlc3VsdC0+YWxsX2Zyb3plbiA9IHByc3RhdGUuYWxsX2Zyb3plbjsKLQl9Ci0J ZWxzZQotCXsKLQkJcHJlc3VsdC0+YWxsX3Zpc2libGUgPSBmYWxzZTsKLQkJcHJlc3VsdC0+YWxs X2Zyb3plbiA9IGZhbHNlOwotCX0KLQorCXByZXN1bHQtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS5h bGxfdmlzaWJsZTsKKwlwcmVzdWx0LT5hbGxfZnJvemVuID0gcHJzdGF0ZS5hbGxfZnJvemVuOwog CXByZXN1bHQtPmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwogCiAJLyoKLS0gCjIuNDMuMAoK --000000000000fe23c60643d269a4 Content-Type: text/x-patch; charset="US-ASCII"; name="v20-0004-Split-heap_page_prune_and_freeze-into-helpers.patch" Content-Disposition: attachment; filename="v20-0004-Split-heap_page_prune_and_freeze-into-helpers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi3r76nk3 RnJvbSAxMzkxNWJiZWYyNDllNzBhZjgxNjdmNzdjYzEzYjVhYjg4YTk5NDhmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDE3IE5vdiAyMDI1IDE1OjExOjI3IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgMDQvMTJdIFNwbGl0IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgaW50byBo ZWxwZXJzCgpSZWZhY3RvciB0aGUgc2V0dXAgYW5kIHBsYW5uaW5nIHBoYXNlcyBvZiBwcnVuaW5n IGFuZCBmcmVlemluZyBpbnRvCmhlbHBlcnMuIFRoaXMgc3RyZWFtbGluZXMgaGVhcF9wYWdlX3By dW5lX2FuZF9mcmVlemUoKSBhbmQgbWFrZXMgaXQgbW9yZQpjbGVhciB3aGVuIHRoZSBleGFtaW5h dGlvbiBvZiB0dXBsZXMgZW5kcyBhbmQgcGFnZSBtb2RpZmljYXRpb25zIGJlZ2luLgotLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIHwgNTY1ICsrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzMTAgaW5zZXJ0aW9ucygrKSwgMjU1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggODZkYTI3NDM0MjMu LjkxMDRjNzQyYTYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTUwLDYg KzE1MCwxNCBAQCB0eXBlZGVmIHN0cnVjdAogfSBQcnVuZVN0YXRlOwogCiAvKiBMb2NhbCBmdW5j dGlvbnMgKi8KK3N0YXRpYyB2b2lkIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFt cyAqcGFyYW1zLAorCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgbmV3X3JlbGZyb3plbl94aWQsCisJ CQkJCQkJICAgTXVsdGlYYWN0SWQgbmV3X3JlbG1pbl9teGlkLAorCQkJCQkJCSAgIGNvbnN0IFBy dW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAorCQkJCQkJCSAgIFBydW5lU3RhdGUgKnByc3RhdGUp Oworc3RhdGljIHZvaWQgcHJ1bmVfZnJlZXplX3BsYW4oT2lkIHJlbG9pZCwgQnVmZmVyIGJ1ZmZl ciwKKwkJCQkJCQkgIFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJCQkJICBPZmZzZXROdW1iZXIg Km9mZl9sb2MpOwogc3RhdGljIEhUU1ZfUmVzdWx0IGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1 bShQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJCQkJCQkJCQkgICBIZWFwVHVwbGUgdHVwLAogCQkJ CQkJCQkJCQkgICBCdWZmZXIgYnVmZmVyKTsKQEAgLTMwMiwyMDQgKzMxMCwyMiBAQCBoZWFwX3Bh Z2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogfQogCiAvKgot ICogRGVjaWRlIHdoZXRoZXIgdG8gcHJvY2VlZCB3aXRoIGZyZWV6aW5nIGFjY29yZGluZyB0byB0 aGUgZnJlZXplIHBsYW5zCi0gKiBwcmVwYXJlZCBmb3IgdGhlIGdpdmVuIGhlYXAgYnVmZmVyLiBJ ZiBmcmVlemluZyBpcyBjaG9zZW4sIHRoaXMgZnVuY3Rpb24KLSAqIHBlcmZvcm1zIHNldmVyYWwg cHJlLWZyZWV6ZSBjaGVja3MuCi0gKgotICogVGhlIHZhbHVlcyBvZiBkb19wcnVuZSwgZG9faGlu dF9wcnVuZSwgYW5kIGRpZF90dXBsZV9oaW50X2ZwaSBtdXN0IGJlCi0gKiBkZXRlcm1pbmVkIGJl Zm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uICpmcnpfY29uZmxpY3RfaG9yaXpvbiBpcyBzZXQg dG8KLSAqIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHdlIGZvciB0aGUgV0FMIHJlY29y ZCBzaG91bGQgd2UgZGVjaWRlIHRvCi0gKiBmcmVlemUgdHVwbGVzLgotICoKLSAqIHByc3RhdGUg aXMgYm90aCBhbiBpbnB1dCBhbmQgb3V0cHV0IHBhcmFtZXRlci4KLSAqCi0gKiBSZXR1cm5zIHRy dWUgaWYgd2Ugc2hvdWxkIGFwcGx5IHRoZSBmcmVlemUgcGxhbnMgYW5kIGZyZWV6ZSB0dXBsZXMg b24gdGhlCi0gKiBwYWdlLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgorICogSGVscGVyIGZvciBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIGluaXRpYWxpemUgdGhlIFBydW5lU3RhdGUgdXNp bmcKKyAqIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLgogICovCi1zdGF0aWMgYm9vbAotaGVhcF9w YWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAotCQkJCQkg IGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLAotCQkJCQkgIGJvb2wgZG9fcHJ1bmUsCi0JCQkJCSAg Ym9vbCBkb19oaW50X3BydW5lLAotCQkJCQkgIFBydW5lU3RhdGUgKnByc3RhdGUsCi0JCQkJCSAg VHJhbnNhY3Rpb25JZCAqZnJ6X2NvbmZsaWN0X2hvcml6b24pCi17Ci0JYm9vbAkJZG9fZnJlZXpl ID0gZmFsc2U7Ci0KLQkvKgotCSAqIElmIHRoZSBjYWxsZXIgc3BlY2lmaWVkIHdlIHNob3VsZCBu b3QgYXR0ZW1wdCB0byBmcmVlemUgYW55IHR1cGxlcywKLQkgKiB2YWxpZGF0ZSB0aGF0IGV2ZXJ5 dGhpbmcgaXMgaW4gdGhlIHJpZ2h0IHN0YXRlIGFuZCByZXR1cm4uCi0JICovCi0JaWYgKCFwcnN0 YXRlLT5hdHRlbXB0X2ZyZWV6ZSkKLQl7Ci0JCUFzc2VydCghcHJzdGF0ZS0+YWxsX2Zyb3plbiAm JiBwcnN0YXRlLT5uZnJvemVuID09IDApOwotCQlBc3NlcnQocHJzdGF0ZS0+bHBkZWFkX2l0ZW1z ID09IDAgfHwgIXByc3RhdGUtPmFsbF92aXNpYmxlKTsKLQkJcmV0dXJuIGZhbHNlOwotCX0KLQot CWlmIChwcnN0YXRlLT5wYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCkKLQl7Ci0JCS8qCi0JCSAqIGhl YXBfcHJlcGFyZV9mcmVlemVfdHVwbGUgaW5kaWNhdGVkIHRoYXQgYXQgbGVhc3Qgb25lIFhJRC9N WElEIGZyb20KLQkJICogYmVmb3JlIEZyZWV6ZUxpbWl0L011bHRpWGFjdEN1dG9mZiBpcyBwcmVz ZW50LiAgTXVzdCBmcmVlemUgdG8KLQkJICogYWR2YW5jZSByZWxmcm96ZW54aWQvcmVsbWlubXhp ZC4KLQkJICovCi0JCWRvX2ZyZWV6ZSA9IHRydWU7Ci0JfQotCWVsc2UKLQl7Ci0JCS8qCi0JCSAq IE9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6ZSB0aGUgcGFnZSBpZiB3ZSBhcmUgZ2VuZXJhdGluZyBh biBGUEkKLQkJICogYW55d2F5IGFuZCBpZiBkb2luZyBzbyBtZWFucyB0aGF0IHdlIGNhbiBzZXQg dGhlIHBhZ2UgYWxsLWZyb3plbgotCQkgKiBhZnRlcndhcmRzIChtaWdodCBub3QgaGFwcGVuIHVu dGlsIFZBQ1VVTSdzIGZpbmFsIGhlYXAgcGFzcykuCi0JCSAqCi0JCSAqIFhYWDogUHJldmlvdXNs eSwgd2Uga25ldyBpZiBwcnVuaW5nIGVtaXR0ZWQgYW4gRlBJIGJ5IGNoZWNraW5nCi0JCSAqIHBn V2FsVXNhZ2Uud2FsX2ZwaSBiZWZvcmUgYW5kIGFmdGVyIHBydW5pbmcuICBPbmNlIHRoZSBmcmVl emUgYW5kCi0JCSAqIHBydW5lIHJlY29yZHMgd2VyZSBjb21iaW5lZCwgdGhpcyBoZXVyaXN0aWMg Y291bGRuJ3QgYmUgdXNlZAotCQkgKiBhbnltb3JlLiAgVGhlIG9wcG9ydHVuaXN0aWMgZnJlZXpl IGhldXJpc3RpYyBtdXN0IGJlIGltcHJvdmVkOwotCQkgKiBob3dldmVyLCBmb3Igbm93LCB0cnkg dG8gYXBwcm94aW1hdGUgdGhlIG9sZCBsb2dpYy4KLQkJICovCi0JCWlmIChwcnN0YXRlLT5hbGxf ZnJvemVuICYmIHByc3RhdGUtPm5mcm96ZW4gPiAwKQotCQl7Ci0JCQlBc3NlcnQocHJzdGF0ZS0+ YWxsX3Zpc2libGUpOwotCi0JCQkvKgotCQkJICogRnJlZXppbmcgd291bGQgbWFrZSB0aGUgcGFn ZSBhbGwtZnJvemVuLiAgSGF2ZSBhbHJlYWR5IGVtaXR0ZWQKLQkJCSAqIGFuIEZQSSBvciB3aWxs IGRvIHNvIGFueXdheT8KLQkJCSAqLwotCQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVsYXRpb24p KQotCQkJewotCQkJCWlmIChkaWRfdHVwbGVfaGludF9mcGkpCi0JCQkJCWRvX2ZyZWV6ZSA9IHRy dWU7Ci0JCQkJZWxzZSBpZiAoZG9fcHJ1bmUpCi0JCQkJewotCQkJCQlpZiAoWExvZ0NoZWNrQnVm ZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkKLQkJCQkJCWRvX2ZyZWV6ZSA9IHRydWU7Ci0JCQkJfQot CQkJCWVsc2UgaWYgKGRvX2hpbnRfcHJ1bmUpCi0JCQkJewotCQkJCQlpZiAoWExvZ0hpbnRCaXRJ c05lZWRlZCgpICYmIFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKGJ1ZmZlcikpCi0JCQkJCQlk b19mcmVlemUgPSB0cnVlOwotCQkJCX0KLQkJCX0KLQkJfQotCX0KLQotCWlmIChkb19mcmVlemUp Ci0JewotCQkvKgotCQkgKiBWYWxpZGF0ZSB0aGUgdHVwbGVzIHdlIHdpbGwgYmUgZnJlZXppbmcg YmVmb3JlIGVudGVyaW5nIHRoZQotCQkgKiBjcml0aWNhbCBzZWN0aW9uLgotCQkgKi8KLQkJaGVh cF9wcmVfZnJlZXplX2NoZWNrcyhidWZmZXIsIHByc3RhdGUtPmZyb3plbiwgcHJzdGF0ZS0+bmZy b3plbik7Ci0KLQkJLyoKLQkJICogQ2FsY3VsYXRlIHdoYXQgdGhlIHNuYXBzaG90IGNvbmZsaWN0 IGhvcml6b24gc2hvdWxkIGJlIGZvciBhIHJlY29yZAotCQkgKiBmcmVlemluZyB0dXBsZXMuIFdl IGNhbiB1c2UgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBhcyBvdXIgY3V0b2ZmCi0JCSAqIGZv ciBjb25mbGljdHMgd2hlbiB0aGUgd2hvbGUgcGFnZSBpcyBlbGlnaWJsZSB0byBiZWNvbWUgYWxs LWZyb3plbgotCQkgKiBpbiB0aGUgVk0gb25jZSB3ZSdyZSBkb25lIHdpdGggaXQuIE90aGVyd2lz ZSwgd2UgZ2VuZXJhdGUgYQotCQkgKiBjb25zZXJ2YXRpdmUgY3V0b2ZmIGJ5IHN0ZXBwaW5nIGJh Y2sgZnJvbSBPbGRlc3RYbWluLgotCQkgKi8KLQkJaWYgKHByc3RhdGUtPmFsbF9mcm96ZW4pCi0J CQkqZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQ7 Ci0JCWVsc2UKLQkJewotCQkJLyogQXZvaWRzIGZhbHNlIGNvbmZsaWN0cyB3aGVuIGhvdF9zdGFu ZGJ5X2ZlZWRiYWNrIGluIHVzZSAqLwotCQkJKmZyel9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0 ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbjsKLQkJCVRyYW5zYWN0aW9uSWRSZXRyZWF0KCpmcnpfY29u ZmxpY3RfaG9yaXpvbik7Ci0JCX0KLQl9Ci0JZWxzZSBpZiAocHJzdGF0ZS0+bmZyb3plbiA+IDAp Ci0JewotCQkvKgotCQkgKiBUaGUgcGFnZSBjb250YWluZWQgc29tZSB0dXBsZXMgdGhhdCB3ZXJl IG5vdCBhbHJlYWR5IGZyb3plbiwgYW5kIHdlCi0JCSAqIGNob3NlIG5vdCB0byBmcmVlemUgdGhl bSBub3cuICBUaGUgcGFnZSB3b24ndCBiZSBhbGwtZnJvemVuIHRoZW4uCi0JCSAqLwotCQlBc3Nl cnQoIXByc3RhdGUtPnBhZ2VmcnouZnJlZXplX3JlcXVpcmVkKTsKLQotCQlwcnN0YXRlLT5hbGxf ZnJvemVuID0gZmFsc2U7Ci0JCXByc3RhdGUtPm5mcm96ZW4gPSAwOwkvKiBhdm9pZCBtaXNjb3Vu dHMgaW4gaW5zdHJ1bWVudGF0aW9uICovCi0JfQotCWVsc2UKLQl7Ci0JCS8qCi0JCSAqIFdlIGhh dmUgbm8gZnJlZXplIHBsYW5zIHRvIGV4ZWN1dGUuICBUaGUgcGFnZSBtaWdodCBhbHJlYWR5IGJl Ci0JCSAqIGFsbC1mcm96ZW4gKHBlcmhhcHMgb25seSBmb2xsb3dpbmcgcHJ1bmluZyksIHRob3Vn aC4gIFN1Y2ggcGFnZXMKLQkJICogY2FuIGJlIG1hcmtlZCBhbGwtZnJvemVuIGluIHRoZSBWTSBi eSBvdXIgY2FsbGVyLCBldmVuIHRob3VnaCBub25lCi0JCSAqIG9mIGl0cyB0dXBsZXMgd2VyZSBu ZXdseSBmcm96ZW4gaGVyZS4KLQkJICovCi0JfQotCi0JcmV0dXJuIGRvX2ZyZWV6ZTsKLX0KLQot Ci0vKgotICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBm cmVlemUgdHVwbGVzIG9uIHRoZQotICogc3BlY2lmaWVkIHBhZ2UuCi0gKgotICogQ2FsbGVyIG11 c3QgaGF2ZSBwaW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sgb24gdGhlIHBhZ2UuICBOb3RlIHRo YXQgd2UKLSAqIGRvbid0IHVwZGF0ZSB0aGUgRlNNIGluZm9ybWF0aW9uIGZvciBwYWdlIG9uIGNh bGxlcidzIGJlaGFsZi4gIENhbGxlciBtaWdodAotICogYWxzbyBuZWVkIHRvIGFjY291bnQgZm9y IGEgcmVkdWN0aW9uIGluIHRoZSBsZW5ndGggb2YgdGhlIGxpbmUgcG9pbnRlcgotICogYXJyYXkg Zm9sbG93aW5nIGFycmF5IHRydW5jYXRpb24gYnkgdXMuCi0gKgotICogcGFyYW1zIGNvbnRhaW5z IHRoZSBpbnB1dCBwYXJhbWV0ZXJzIHVzZWQgdG8gY29udHJvbCBmcmVlemluZyBhbmQgcHJ1bmlu ZwotICogYmVoYXZpb3IuIFNlZSB0aGUgZGVmaW5pdGlvbiBvZiBQcnVuZUZyZWV6ZVBhcmFtcyBm b3IgbW9yZSBvbiB3aGF0IGVhY2gKLSAqIHBhcmFtZXRlciBkb2VzLgotICoKLSAqIElmIHRoZSBI RUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQgaW4gcGFyYW1zLCB3ZSB3aWxsIGZy ZWV6ZQotICogdHVwbGVzIGlmIGl0J3MgcmVxdWlyZWQgaW4gb3JkZXIgdG8gYWR2YW5jZSByZWxm cm96ZW54aWQgLyByZWxtaW5teGlkLCBvcgotICogaWYgaXQncyBjb25zaWRlcmVkIGFkdmFudGFn ZW91cyBmb3Igb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2UgdG8gZG8gc28KLSAqIG5vdy4gIFRo ZSAncGFyYW1zLmN1dG9mZnMnLCAncHJlc3VsdCcsICduZXdfcmVsZnJvemVuX3hpZCcgYW5kCi0g KiAnbmV3X3JlbG1pbl9teGlkJyBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcu ICBXaGVuCi0gKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBwYXNzZWQsIHdlIGFs c28gc2V0IHByZXN1bHQtPmFsbF92aXNpYmxlCi0gKiBhbmQgcHJlc3VsdC0+YWxsX2Zyb3plbiBh ZnRlciBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0bwotICogb3Bwb3J1bmlzdGljYWxseSBm cmVlemUsIHRvIGluZGljYXRlIGlmIHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZQot ICogYWx3YXlzIHNldCB0byBmYWxzZSB3aGVuIHRoZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9w dGlvbiBpcyBub3QgcGFzc2VkLAotICogYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVy cyB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KLSAqCi0gKiBwcmVzdWx0 IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBzdWNoIGFzIHRo ZSBudW1iZXIgb2YKLSAqIHR1cGxlcyByZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBkZWFkIGl0 ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuCi0gKiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZSgpIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgaXQuICBSZXF1aXJlZAotICog YnkgYWxsIGNhbGxlcnMuCi0gKgotICogb2ZmX2xvYyBpcyB0aGUgb2Zmc2V0IGxvY2F0aW9uIHJl cXVpcmVkIGJ5IHRoZSBjYWxsZXIgdG8gdXNlIGluIGVycm9yCi0gKiBjYWxsYmFjay4KLSAqCi0g KiBuZXdfcmVsZnJvemVuX3hpZCBhbmQgbmV3X3JlbG1pbl9teGlkIG11c3QgcHJvdmlkZWQgYnkg dGhlIGNhbGxlciBpZiB0aGUKLSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNl dCBpbiBwYXJhbXMuICBPbiBlbnRyeSwgdGhleSBjb250YWluIHRoZQotICogb2xkZXN0IFhJRCBh bmQgbXVsdGktWElEIHNlZW4gb24gdGhlIHJlbGF0aW9uIHNvIGZhci4gIFRoZXkgd2lsbCBiZSB1 cGRhdGVkCi0gKiB3aXRoIG9sZGVzdCB2YWx1ZXMgcHJlc2VudCBvbiB0aGUgcGFnZSBhZnRlciBw cnVuaW5nLiAgQWZ0ZXIgcHJvY2Vzc2luZyB0aGUKLSAqIHdob2xlIHJlbGF0aW9uLCBWQUNVVU0g Y2FuIHVzZSB0aGVzZSB2YWx1ZXMgYXMgdGhlIG5ldwotICogcmVsZnJvemVueGlkL3JlbG1pbm14 aWQgZm9yIHRoZSByZWxhdGlvbi4KLSAqLwotdm9pZAotaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKLQkJCQkJCSAgIFBydW5lRnJlZXplUmVzdWx0 ICpwcmVzdWx0LAotCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpvZmZfbG9jLAotCQkJCQkJICAgVHJh bnNhY3Rpb25JZCAqbmV3X3JlbGZyb3plbl94aWQsCi0JCQkJCQkgICBNdWx0aVhhY3RJZCAqbmV3 X3JlbG1pbl9teGlkKQorc3RhdGljIHZvaWQKK3BydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6 ZVBhcmFtcyAqcGFyYW1zLAorCQkJCSAgIFRyYW5zYWN0aW9uSWQgbmV3X3JlbGZyb3plbl94aWQs CisJCQkJICAgTXVsdGlYYWN0SWQgbmV3X3JlbG1pbl9teGlkLAorCQkJCSAgIGNvbnN0IFBydW5l RnJlZXplUmVzdWx0ICpwcmVzdWx0LAorCQkJCSAgIFBydW5lU3RhdGUgKnByc3RhdGUpCiB7Ci0J QnVmZmVyCQlidWZmZXIgPSBwYXJhbXMtPmJ1ZmZlcjsKLQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0 UGFnZShidWZmZXIpOwotCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJl cihidWZmZXIpOwotCU9mZnNldE51bWJlciBvZmZudW0sCi0JCQkJbWF4b2ZmOwotCVBydW5lU3Rh dGUJcHJzdGF0ZTsKLQlIZWFwVHVwbGVEYXRhIHR1cDsKLQlib29sCQlkb19mcmVlemU7Ci0JYm9v bAkJZG9fcHJ1bmU7Ci0JYm9vbAkJZG9faGludF9wcnVuZTsKLQlib29sCQlkaWRfdHVwbGVfaGlu dF9mcGk7Ci0JaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVzYWdlLndhbF9mcGk7Ci0JVHJhbnNh Y3Rpb25JZCBmcnpfY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCiAJ LyogQ29weSBwYXJhbWV0ZXJzIHRvIHByc3RhdGUgKi8KLQlwcnN0YXRlLnZpc3Rlc3QgPSBwYXJh bXMtPnZpc3Rlc3Q7Ci0JcHJzdGF0ZS5tYXJrX3VudXNlZF9ub3cgPQorCXByc3RhdGUtPnZpc3Rl c3QgPSBwYXJhbXMtPnZpc3Rlc3Q7CisJcHJzdGF0ZS0+bWFya191bnVzZWRfbm93ID0KIAkJKHBh cmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cpICE9IDA7Ci0J cHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSA9IChwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJV TkVfRlJFRVpFKSAhPSAwOwotCXByc3RhdGUuY3V0b2ZmcyA9IHBhcmFtcy0+Y3V0b2ZmczsKKwlw cnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSA9IChwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJV TkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUtPmN1dG9mZnMgPSBwYXJhbXMtPmN1dG9mZnM7CiAK IAkvKgogCSAqIE91ciBzdHJhdGVneSBpcyB0byBzY2FuIHRoZSBwYWdlIGFuZCBtYWtlIGxpc3Rz IG9mIGl0ZW1zIHRvIGNoYW5nZSwKQEAgLTUxMiw0MCArMzM4LDQxIEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICogcHJ1bmFibGUsIHdl IHdpbGwgc2F2ZSB0aGUgbG93ZXN0IHJlbGV2YW50IFhJRCBpbiBuZXdfcHJ1bmVfeGlkLiBBbHNv CiAJICogaW5pdGlhbGl6ZSB0aGUgcmVzdCBvZiBvdXIgd29ya2luZyBzdGF0ZS4KIAkgKi8KLQlw cnN0YXRlLm5ld19wcnVuZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQlwcnN0YXRlLmxh dGVzdF94aWRfcmVtb3ZlZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCXByc3RhdGUubnJlZGly ZWN0ZWQgPSBwcnN0YXRlLm5kZWFkID0gcHJzdGF0ZS5udW51c2VkID0gcHJzdGF0ZS5uZnJvemVu ID0gMDsKLQlwcnN0YXRlLm5yb290X2l0ZW1zID0gMDsKLQlwcnN0YXRlLm5oZWFwb25seV9pdGVt cyA9IDA7CisJcHJzdGF0ZS0+bmV3X3BydW5lX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwor CXByc3RhdGUtPmxhdGVzdF94aWRfcmVtb3ZlZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCXBy c3RhdGUtPm5yZWRpcmVjdGVkID0gcHJzdGF0ZS0+bmRlYWQgPSBwcnN0YXRlLT5udW51c2VkID0g MDsKKwlwcnN0YXRlLT5uZnJvemVuID0gMDsKKwlwcnN0YXRlLT5ucm9vdF9pdGVtcyA9IDA7CisJ cHJzdGF0ZS0+bmhlYXBvbmx5X2l0ZW1zID0gMDsKIAogCS8qIGluaXRpYWxpemUgcGFnZSBmcmVl emluZyB3b3JraW5nIHN0YXRlICovCi0JcHJzdGF0ZS5wYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCA9 IGZhbHNlOwotCWlmIChwcnN0YXRlLmF0dGVtcHRfZnJlZXplKQorCXByc3RhdGUtPnBhZ2Vmcnou ZnJlZXplX3JlcXVpcmVkID0gZmFsc2U7CisJaWYgKHByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQog CXsKLQkJQXNzZXJ0KG5ld19yZWxmcm96ZW5feGlkICYmIG5ld19yZWxtaW5fbXhpZCk7Ci0JCXBy c3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsZnJvemVuWGlkID0gKm5ld19yZWxmcm96ZW5feGlk OwotCQlwcnN0YXRlLnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsZnJvemVuWGlkID0gKm5ld19yZWxm cm96ZW5feGlkOwotCQlwcnN0YXRlLnBhZ2VmcnouRnJlZXplUGFnZVJlbG1pbk14aWQgPSAqbmV3 X3JlbG1pbl9teGlkOwotCQlwcnN0YXRlLnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsbWluTXhpZCA9 ICpuZXdfcmVsbWluX214aWQ7CisJCXByc3RhdGUtPnBhZ2VmcnouRnJlZXplUGFnZVJlbGZyb3pl blhpZCA9IG5ld19yZWxmcm96ZW5feGlkOworCQlwcnN0YXRlLT5wYWdlZnJ6Lk5vRnJlZXplUGFn ZVJlbGZyb3plblhpZCA9IG5ld19yZWxmcm96ZW5feGlkOworCQlwcnN0YXRlLT5wYWdlZnJ6LkZy ZWV6ZVBhZ2VSZWxtaW5NeGlkID0gbmV3X3JlbG1pbl9teGlkOworCQlwcnN0YXRlLT5wYWdlZnJ6 Lk5vRnJlZXplUGFnZVJlbG1pbk14aWQgPSBuZXdfcmVsbWluX214aWQ7CiAJfQogCWVsc2UKIAl7 Ci0JCUFzc2VydChuZXdfcmVsZnJvemVuX3hpZCA9PSBOVUxMICYmIG5ld19yZWxtaW5fbXhpZCA9 PSBOVUxMKTsKLQkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxtaW5NeGlkID0gSW52YWxp ZE11bHRpWGFjdElkOwotCQlwcnN0YXRlLnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsbWluTXhpZCA9 IEludmFsaWRNdWx0aVhhY3RJZDsKLQkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxmcm96 ZW5YaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQkJcHJzdGF0ZS5wYWdlZnJ6Lk5vRnJlZXpl UGFnZVJlbGZyb3plblhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQlBc3NlcnQobmV3X3Jl bGZyb3plbl94aWQgPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQgJiYKKwkJCSAgIG5ld19yZWxtaW5f bXhpZCA9PSBJbnZhbGlkTXVsdGlYYWN0SWQpOworCQlwcnN0YXRlLT5wYWdlZnJ6LkZyZWV6ZVBh Z2VSZWxtaW5NeGlkID0gSW52YWxpZE11bHRpWGFjdElkOworCQlwcnN0YXRlLT5wYWdlZnJ6Lk5v RnJlZXplUGFnZVJlbG1pbk14aWQgPSBJbnZhbGlkTXVsdGlYYWN0SWQ7CisJCXByc3RhdGUtPnBh Z2VmcnouRnJlZXplUGFnZVJlbGZyb3plblhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQlw cnN0YXRlLT5wYWdlZnJ6Lk5vRnJlZXplUGFnZVJlbGZyb3plblhpZCA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCX0KIAotCXByc3RhdGUubmRlbGV0ZWQgPSAwOwotCXByc3RhdGUubGl2ZV90dXBs ZXMgPSAwOwotCXByc3RhdGUucmVjZW50bHlfZGVhZF90dXBsZXMgPSAwOwotCXByc3RhdGUuaGFz dHVwID0gZmFsc2U7Ci0JcHJzdGF0ZS5scGRlYWRfaXRlbXMgPSAwOwotCXByc3RhdGUuZGVhZG9m ZnNldHMgPSBwcmVzdWx0LT5kZWFkb2Zmc2V0czsKKwlwcnN0YXRlLT5uZGVsZXRlZCA9IDA7CisJ cHJzdGF0ZS0+bGl2ZV90dXBsZXMgPSAwOworCXByc3RhdGUtPnJlY2VudGx5X2RlYWRfdHVwbGVz ID0gMDsKKwlwcnN0YXRlLT5oYXN0dXAgPSBmYWxzZTsKKwlwcnN0YXRlLT5scGRlYWRfaXRlbXMg PSAwOworCXByc3RhdGUtPmRlYWRvZmZzZXRzID0gKE9mZnNldE51bWJlciAqKSBwcmVzdWx0LT5k ZWFkb2Zmc2V0czsKIAogCS8qCi0JICogQ2FsbGVyIG1heSB1cGRhdGUgdGhlIFZNIGFmdGVyIHdl J3JlIGRvbmUuICBXZSBjYW4ga2VlcCB0cmFjayBvZgorCSAqIFZhY3V1bSBtYXkgdXBkYXRlIHRo ZSBWTSBhZnRlciB3ZSdyZSBkb25lLiAgV2UgY2FuIGtlZXAgdHJhY2sgb2YKIAkgKiB3aGV0aGVy IHRoZSBwYWdlIHdpbGwgYmUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYWZ0ZXIgcHJ1bmlu ZyBhbmQKIAkgKiBmcmVlemluZyB0byBoZWxwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KIAkgKgpA QCAtNTY3LDEwICszOTQsMTAgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVl emVQYXJhbXMgKnBhcmFtcywKIAkgKiB0aGF0IGFmdGVyIHNjYW5uaW5nIHRoZSBsaW5lIHBvaW50 ZXJzLCBiZWZvcmUgd2UgcmV0dXJuIHRoZSB2YWx1ZSB0bwogCSAqIHRoZSBjYWxsZXIsIHNvIHRo YXQgdGhlIGNhbGxlciBkb2Vzbid0IHNldCB0aGUgVk0gYml0cyBpbmNvcnJlY3RseS4KIAkgKi8K LQlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKKwlpZiAocHJzdGF0ZS0+YXR0ZW1wdF9mcmVl emUpCiAJewotCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gdHJ1ZTsKLQkJcHJzdGF0ZS5hbGxfZnJv emVuID0gdHJ1ZTsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSB0cnVlOworCQlwcnN0YXRlLT5h bGxfZnJvemVuID0gdHJ1ZTsKIAl9CiAJZWxzZQogCXsKQEAgLTU3OCw4ICs0MDUsOCBAQCBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkgKiBJ bml0aWFsaXppbmcgdG8gZmFsc2UgYWxsb3dzIHNraXBwaW5nIHRoZSB3b3JrIHRvIHVwZGF0ZSB0 aGVtIGluCiAJCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKS4KIAkJ ICovCi0JCXByc3RhdGUuYWxsX3Zpc2libGUgPSBmYWxzZTsKLQkJcHJzdGF0ZS5hbGxfZnJvemVu ID0gZmFsc2U7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCXByc3RhdGUtPmFs bF9mcm96ZW4gPSBmYWxzZTsKIAl9CiAKIAkvKgpAQCAtNTkwLDEwICs0MTcsMjkgQEAgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkgKiBydW5u aW5nIHRyYW5zYWN0aW9uIG9uIHRoZSBzdGFuZGJ5IGRvZXMgbm90IHNlZSB0dXBsZXMgb24gdGhl IHBhZ2UgYXMKIAkgKiBhbGwtdmlzaWJsZSwgc28gdGhlIGNvbmZsaWN0IGhvcml6b24gcmVtYWlu cyBJbnZhbGlkVHJhbnNhY3Rpb25JZC4KIAkgKi8KLQlwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2Zm X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCXByc3RhdGUtPnZpc2liaWxpdHlfY3V0b2Zm X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworfQogCi0JbWF4b2ZmID0gUGFnZUdldE1heE9m ZnNldE51bWJlcihwYWdlKTsKLQl0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocGFy YW1zLT5yZWxhdGlvbik7CisvKgorICogSGVscGVyIGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZSgpLiBJdGVyYXRlcyBvdmVyIGV2ZXJ5IHR1cGxlIG9uIHRoZQorICogcGFnZSwgZXhhbWlu ZXMgaXRzIHZpc2liaWxpdHkgaW5mb3JtYXRpb24sIGFuZCBkZXRlcm1pbmVzIHRoZSBhcHByb3By aWF0ZQorICogYWN0aW9uIGZvciBlYWNoIHR1cGxlLiBBbGwgdHVwbGVzIGFyZSBwcm9jZXNzZWQg YW5kIGNsYXNzaWZpZWQgZHVyaW5nIHRoaXMKKyAqIHBoYXNlLCBidXQgbm8gbW9kaWZpY2F0aW9u cyBhcmUgbWFkZSB0byB0aGUgcGFnZSB1bnRpbCB0aGUgbGF0ZXIgZXhlY3V0aW9uCisgKiBzdGFn ZS4KKyAqCisgKiAqb2ZmX2xvYyBpcyB1c2VkIGZvciBlcnJvciBjYWxsYmFjayBhbmQgY2xlYXJl ZCBiZWZvcmUgcmV0dXJuaW5nLgorICovCitzdGF0aWMgdm9pZAorcHJ1bmVfZnJlZXplX3BsYW4o T2lkIHJlbG9pZCwgQnVmZmVyIGJ1ZmZlciwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkgIE9m ZnNldE51bWJlciAqb2ZmX2xvYykKK3sKKwlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZm ZXIpOworCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIp OworCU9mZnNldE51bWJlciBtYXhvZmYgPSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpOwor CU9mZnNldE51bWJlciBvZmZudW07CisJSGVhcFR1cGxlRGF0YSB0dXA7CisKKwl0dXAudF90YWJs ZU9pZCA9IHJlbG9pZDsKIAogCS8qCiAJICogRGV0ZXJtaW5lIEhUU1YgZm9yIGFsbCB0dXBsZXMs IGFuZCBxdWV1ZSB0aGVtIHVwIGZvciBwcm9jZXNzaW5nIGFzIEhPVApAQCAtNjI4LDEzICs0NzQs MTMgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFt cywKIAkJICovCiAJCSpvZmZfbG9jID0gb2ZmbnVtOwogCi0JCXByc3RhdGUucHJvY2Vzc2VkW29m Zm51bV0gPSBmYWxzZTsKLQkJcHJzdGF0ZS5odHN2W29mZm51bV0gPSAtMTsKKwkJcHJzdGF0ZS0+ cHJvY2Vzc2VkW29mZm51bV0gPSBmYWxzZTsKKwkJcHJzdGF0ZS0+aHRzdltvZmZudW1dID0gLTE7 CiAKIAkJLyogTm90aGluZyB0byBkbyBpZiBzbG90IGRvZXNuJ3QgY29udGFpbiBhIHR1cGxlICov CiAJCWlmICghSXRlbUlkSXNVc2VkKGl0ZW1pZCkpCiAJCXsKLQkJCWhlYXBfcHJ1bmVfcmVjb3Jk X3VuY2hhbmdlZF9scF91bnVzZWQocGFnZSwgJnByc3RhdGUsIG9mZm51bSk7CisJCQloZWFwX3By dW5lX3JlY29yZF91bmNoYW5nZWRfbHBfdW51c2VkKHBhZ2UsIHByc3RhdGUsIG9mZm51bSk7CiAJ CQljb250aW51ZTsKIAkJfQogCkBAIC02NDQsMTcgKzQ5MCwxNyBAQCBoZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJICogSWYgdGhlIGNhbGxl ciBzZXQgbWFya191bnVzZWRfbm93IHRydWUsIHdlIGNhbiBzZXQgZGVhZCBsaW5lCiAJCQkgKiBw b2ludGVycyBMUF9VTlVTRUQgbm93LgogCQkJICovCi0JCQlpZiAodW5saWtlbHkocHJzdGF0ZS5t YXJrX3VudXNlZF9ub3cpKQotCQkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VudXNlZCgmcHJzdGF0ZSwg b2ZmbnVtLCBmYWxzZSk7CisJCQlpZiAodW5saWtlbHkocHJzdGF0ZS0+bWFya191bnVzZWRfbm93 KSkKKwkJCQloZWFwX3BydW5lX3JlY29yZF91bnVzZWQocHJzdGF0ZSwgb2ZmbnVtLCBmYWxzZSk7 CiAJCQllbHNlCi0JCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX2RlYWQocGFnZSwg JnByc3RhdGUsIG9mZm51bSk7CisJCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX2Rl YWQocGFnZSwgcHJzdGF0ZSwgb2ZmbnVtKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKIAkJaWYgKEl0 ZW1JZElzUmVkaXJlY3RlZChpdGVtaWQpKQogCQl7CiAJCQkvKiBUaGlzIGlzIHRoZSBzdGFydCBv ZiBhIEhPVCBjaGFpbiAqLwotCQkJcHJzdGF0ZS5yb290X2l0ZW1zW3Byc3RhdGUubnJvb3RfaXRl bXMrK10gPSBvZmZudW07CisJCQlwcnN0YXRlLT5yb290X2l0ZW1zW3Byc3RhdGUtPm5yb290X2l0 ZW1zKytdID0gb2ZmbnVtOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtNjY4LDIxICs1MTQsMTUg QEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywK IAkJdHVwLnRfbGVuID0gSXRlbUlkR2V0TGVuZ3RoKGl0ZW1pZCk7CiAJCUl0ZW1Qb2ludGVyU2V0 KCZ0dXAudF9zZWxmLCBibG9ja25vLCBvZmZudW0pOwogCi0JCXByc3RhdGUuaHRzdltvZmZudW1d ID0gaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCZwcnN0YXRlLCAmdHVwLAotCQkJCQkJCQkJ CQkJCQkgICBidWZmZXIpOworCQlwcnN0YXRlLT5odHN2W29mZm51bV0gPSBoZWFwX3BydW5lX3Nh dGlzZmllc192YWN1dW0ocHJzdGF0ZSwgJnR1cCwKKwkJCQkJCQkJCQkJCQkJCWJ1ZmZlcik7CiAK IAkJaWYgKCFIZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApKQotCQkJcHJzdGF0ZS5yb290 X2l0ZW1zW3Byc3RhdGUubnJvb3RfaXRlbXMrK10gPSBvZmZudW07CisJCQlwcnN0YXRlLT5yb290 X2l0ZW1zW3Byc3RhdGUtPm5yb290X2l0ZW1zKytdID0gb2ZmbnVtOwogCQllbHNlCi0JCQlwcnN0 YXRlLmhlYXBvbmx5X2l0ZW1zW3Byc3RhdGUubmhlYXBvbmx5X2l0ZW1zKytdID0gb2ZmbnVtOwor CQkJcHJzdGF0ZS0+aGVhcG9ubHlfaXRlbXNbcHJzdGF0ZS0+bmhlYXBvbmx5X2l0ZW1zKytdID0g b2ZmbnVtOwogCX0KIAotCS8qCi0JICogSWYgY2hlY2tzdW1zIGFyZSBlbmFibGVkLCBoZWFwX3By dW5lX3NhdGlzZmllc192YWN1dW0oKSBtYXkgaGF2ZSBjYXVzZWQKLQkgKiBhbiBGUEkgdG8gYmUg ZW1pdHRlZC4KLQkgKi8KLQlkaWRfdHVwbGVfaGludF9mcGkgPSBmcGlfYmVmb3JlICE9IHBnV2Fs VXNhZ2Uud2FsX2ZwaTsKLQogCS8qCiAJICogUHJvY2VzcyBIT1QgY2hhaW5zLgogCSAqCkBAIC02 OTQsMzAgKzUzNCwzMCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBh cmFtcyAqcGFyYW1zLAogCSAqIHRoZSBwYWdlIGluc3RlYWQgb2YgdXNpbmcgdGhlIHJvb3RfaXRl bXMgYXJyYXksIGFsc28gZGlkIGl0IGluCiAJICogYXNjZW5kaW5nIG9mZnNldCBudW1iZXIgb3Jk ZXIuKQogCSAqLwotCWZvciAoaW50IGkgPSBwcnN0YXRlLm5yb290X2l0ZW1zIC0gMTsgaSA+PSAw OyBpLS0pCisJZm9yIChpbnQgaSA9IHByc3RhdGUtPm5yb290X2l0ZW1zIC0gMTsgaSA+PSAwOyBp LS0pCiAJewotCQlvZmZudW0gPSBwcnN0YXRlLnJvb3RfaXRlbXNbaV07CisJCW9mZm51bSA9IHBy c3RhdGUtPnJvb3RfaXRlbXNbaV07CiAKIAkJLyogSWdub3JlIGl0ZW1zIGFscmVhZHkgcHJvY2Vz c2VkIGFzIHBhcnQgb2YgYW4gZWFybGllciBjaGFpbiAqLwotCQlpZiAocHJzdGF0ZS5wcm9jZXNz ZWRbb2ZmbnVtXSkKKwkJaWYgKHByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1dKQogCQkJY29udGlu dWU7CiAKIAkJLyogc2VlIHByZWNlZGluZyBsb29wICovCiAJCSpvZmZfbG9jID0gb2ZmbnVtOwog CiAJCS8qIFByb2Nlc3MgdGhpcyBpdGVtIG9yIGNoYWluIG9mIGl0ZW1zICovCi0JCWhlYXBfcHJ1 bmVfY2hhaW4ocGFnZSwgYmxvY2tubywgbWF4b2ZmLCBvZmZudW0sICZwcnN0YXRlKTsKKwkJaGVh cF9wcnVuZV9jaGFpbihwYWdlLCBibG9ja25vLCBtYXhvZmYsIG9mZm51bSwgcHJzdGF0ZSk7CiAJ fQogCiAJLyoKIAkgKiBQcm9jZXNzIGFueSBoZWFwLW9ubHkgdHVwbGVzIHRoYXQgd2VyZSBub3Qg YWxyZWFkeSBwcm9jZXNzZWQgYXMgcGFydCBvZgogCSAqIGEgSE9UIGNoYWluLgogCSAqLwotCWZv ciAoaW50IGkgPSBwcnN0YXRlLm5oZWFwb25seV9pdGVtcyAtIDE7IGkgPj0gMDsgaS0tKQorCWZv ciAoaW50IGkgPSBwcnN0YXRlLT5uaGVhcG9ubHlfaXRlbXMgLSAxOyBpID49IDA7IGktLSkKIAl7 Ci0JCW9mZm51bSA9IHByc3RhdGUuaGVhcG9ubHlfaXRlbXNbaV07CisJCW9mZm51bSA9IHByc3Rh dGUtPmhlYXBvbmx5X2l0ZW1zW2ldOwogCi0JCWlmIChwcnN0YXRlLnByb2Nlc3NlZFtvZmZudW1d KQorCQlpZiAocHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pCiAJCQljb250aW51ZTsKIAogCQkv KiBzZWUgcHJlY2VkaW5nIGxvb3AgKi8KQEAgLTczNiw3ICs1NzYsNyBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkgKiByZXR1cm4gdHJ1 ZSBmb3IgYW4gWE1JTl9JTlZBTElEIHR1cGxlLCBzbyB0aGlzIGNvZGUgd2lsbCB3b3JrIGV2ZW4K IAkJICogd2hlbiB0aGVyZSB3ZXJlIHNlcXVlbnRpYWwgdXBkYXRlcyB3aXRoaW4gdGhlIGFib3J0 ZWQgdHJhbnNhY3Rpb24uKQogCQkgKi8KLQkJaWYgKHByc3RhdGUuaHRzdltvZmZudW1dID09IEhF QVBUVVBMRV9ERUFEKQorCQlpZiAocHJzdGF0ZS0+aHRzdltvZmZudW1dID09IEhFQVBUVVBMRV9E RUFEKQogCQl7CiAJCQlJdGVtSWQJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgb2ZmbnVt KTsKIAkJCUhlYXBUdXBsZUhlYWRlciBodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0 ZW0ocGFnZSwgaXRlbWlkKTsKQEAgLTc0NCw4ICs1ODQsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5k X2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJaWYgKGxpa2VseSghSGVhcFR1 cGxlSGVhZGVySXNIb3RVcGRhdGVkKGh0dXApKSkKIAkJCXsKIAkJCQlIZWFwVHVwbGVIZWFkZXJB ZHZhbmNlQ29uZmxpY3RIb3Jpem9uKGh0dXAsCi0JCQkJCQkJCQkJCQkJICAmcHJzdGF0ZS5sYXRl c3RfeGlkX3JlbW92ZWQpOwotCQkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VudXNlZCgmcHJzdGF0ZSwg b2ZmbnVtLCB0cnVlKTsKKwkJCQkJCQkJCQkJCQkgICZwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92 ZWQpOworCQkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VudXNlZChwcnN0YXRlLCBvZmZudW0sIHRydWUp OwogCQkJfQogCQkJZWxzZQogCQkJewpAQCAtNzYyLDcgKzYwMiw3IEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQl9CiAJCX0KIAkJZWxz ZQotCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChwYWdlLCAmcHJzdGF0 ZSwgb2ZmbnVtKTsKKwkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwocGFn ZSwgcHJzdGF0ZSwgb2ZmbnVtKTsKIAl9CiAKIAkvKiBXZSBzaG91bGQgbm93IGhhdmUgcHJvY2Vz c2VkIGV2ZXJ5IHR1cGxlIGV4YWN0bHkgb25jZSAgKi8KQEAgLTc3MywxMiArNjEzLDIyNyBAQCBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCXsK IAkJKm9mZl9sb2MgPSBvZmZudW07CiAKLQkJQXNzZXJ0KHByc3RhdGUucHJvY2Vzc2VkW29mZm51 bV0pOworCQlBc3NlcnQocHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pOwogCX0KICNlbmRpZgog CiAJLyogQ2xlYXIgdGhlIG9mZnNldCBpbmZvcm1hdGlvbiBvbmNlIHdlIGhhdmUgcHJvY2Vzc2Vk IHRoZSBnaXZlbiBwYWdlLiAqLwogCSpvZmZfbG9jID0gSW52YWxpZE9mZnNldE51bWJlcjsKK30K KworLyoKKyAqIERlY2lkZSB3aGV0aGVyIHRvIHByb2NlZWQgd2l0aCBmcmVlemluZyBhY2NvcmRp bmcgdG8gdGhlIGZyZWV6ZSBwbGFucworICogcHJlcGFyZWQgZm9yIHRoZSBnaXZlbiBoZWFwIGJ1 ZmZlci4gSWYgZnJlZXppbmcgaXMgY2hvc2VuLCB0aGlzIGZ1bmN0aW9uCisgKiBwZXJmb3JtcyBz ZXZlcmFsIHByZS1mcmVlemUgY2hlY2tzLgorICoKKyAqIFRoZSB2YWx1ZXMgb2YgZG9fcHJ1bmUs IGRvX2hpbnRfcHJ1bmUsIGFuZCBkaWRfdHVwbGVfaGludF9mcGkgbXVzdCBiZQorICogZGV0ZXJt aW5lZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiAqZnJ6X2NvbmZsaWN0X2hvcml6b24g aXMgc2V0IHRvCisgKiB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3ZSBmb3IgdGhlIFdB TCByZWNvcmQgc2hvdWxkIHdlIGRlY2lkZSB0bworICogZnJlZXplIHR1cGxlcy4KKyAqCisgKiBw cnN0YXRlIGlzIGJvdGggYW4gaW5wdXQgYW5kIG91dHB1dCBwYXJhbWV0ZXIuCisgKgorICogUmV0 dXJucyB0cnVlIGlmIHdlIHNob3VsZCBhcHBseSB0aGUgZnJlZXplIHBsYW5zIGFuZCBmcmVlemUg dHVwbGVzIG9uIHRoZQorICogcGFnZSwgYW5kIGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGlj IGJvb2wKK2hlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlciwKKwkJCQkJICBib29sIGRpZF90dXBsZV9oaW50X2ZwaSwKKwkJCQkJICBib29sIGRvX3By dW5lLAorCQkJCQkgIGJvb2wgZG9faGludF9wcnVuZSwKKwkJCQkJICBQcnVuZVN0YXRlICpwcnN0 YXRlLAorCQkJCQkgIFRyYW5zYWN0aW9uSWQgKmZyel9jb25mbGljdF9ob3Jpem9uKQoreworCWJv b2wJCWRvX2ZyZWV6ZSA9IGZhbHNlOworCisJLyoKKwkgKiBJZiB0aGUgY2FsbGVyIHNwZWNpZmll ZCB3ZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZnJlZXplIGFueSB0dXBsZXMsCisJICogdmFsaWRh dGUgdGhhdCBldmVyeXRoaW5nIGlzIGluIHRoZSByaWdodCBzdGF0ZSBhbmQgcmV0dXJuLgorCSAq LworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCisJeworCQlBc3NlcnQoIXByc3RhdGUt PmFsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZyb3plbiA9PSAwKTsKKwkJQXNzZXJ0KHByc3RhdGUt PmxwZGVhZF9pdGVtcyA9PSAwIHx8ICFwcnN0YXRlLT5hbGxfdmlzaWJsZSk7CisJCXJldHVybiBm YWxzZTsKKwl9CisKKwlpZiAocHJzdGF0ZS0+cGFnZWZyei5mcmVlemVfcmVxdWlyZWQpCisJewor CQkvKgorCQkgKiBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlIGluZGljYXRlZCB0aGF0IGF0IGxl YXN0IG9uZSBYSUQvTVhJRCBmcm9tCisJCSAqIGJlZm9yZSBGcmVlemVMaW1pdC9NdWx0aVhhY3RD dXRvZmYgaXMgcHJlc2VudC4gIE11c3QgZnJlZXplIHRvCisJCSAqIGFkdmFuY2UgcmVsZnJvemVu eGlkL3JlbG1pbm14aWQuCisJCSAqLworCQlkb19mcmVlemUgPSB0cnVlOworCX0KKwllbHNlCisJ eworCQkvKgorCQkgKiBPcHBvcnR1bmlzdGljYWxseSBmcmVlemUgdGhlIHBhZ2UgaWYgd2UgYXJl IGdlbmVyYXRpbmcgYW4gRlBJCisJCSAqIGFueXdheSBhbmQgaWYgZG9pbmcgc28gbWVhbnMgdGhh dCB3ZSBjYW4gc2V0IHRoZSBwYWdlIGFsbC1mcm96ZW4KKwkJICogYWZ0ZXJ3YXJkcyAobWlnaHQg bm90IGhhcHBlbiB1bnRpbCBWQUNVVU0ncyBmaW5hbCBoZWFwIHBhc3MpLgorCQkgKgorCQkgKiBY WFg6IFByZXZpb3VzbHksIHdlIGtuZXcgaWYgcHJ1bmluZyBlbWl0dGVkIGFuIEZQSSBieSBjaGVj a2luZworCQkgKiBwZ1dhbFVzYWdlLndhbF9mcGkgYmVmb3JlIGFuZCBhZnRlciBwcnVuaW5nLiAg T25jZSB0aGUgZnJlZXplIGFuZAorCQkgKiBwcnVuZSByZWNvcmRzIHdlcmUgY29tYmluZWQsIHRo aXMgaGV1cmlzdGljIGNvdWxkbid0IGJlIHVzZWQKKwkJICogYW55bW9yZS4gIFRoZSBvcHBvcnR1 bmlzdGljIGZyZWV6ZSBoZXVyaXN0aWMgbXVzdCBiZSBpbXByb3ZlZDsKKwkJICogaG93ZXZlciwg Zm9yIG5vdywgdHJ5IHRvIGFwcHJveGltYXRlIHRoZSBvbGQgbG9naWMuCisJCSAqLworCQlpZiAo cHJzdGF0ZS0+YWxsX2Zyb3plbiAmJiBwcnN0YXRlLT5uZnJvemVuID4gMCkKKwkJeworCQkJQXNz ZXJ0KHByc3RhdGUtPmFsbF92aXNpYmxlKTsKKworCQkJLyoKKwkJCSAqIEZyZWV6aW5nIHdvdWxk IG1ha2UgdGhlIHBhZ2UgYWxsLWZyb3plbi4gIEhhdmUgYWxyZWFkeSBlbWl0dGVkCisJCQkgKiBh biBGUEkgb3Igd2lsbCBkbyBzbyBhbnl3YXk/CisJCQkgKi8KKwkJCWlmIChSZWxhdGlvbk5lZWRz V0FMKHJlbGF0aW9uKSkKKwkJCXsKKwkJCQlpZiAoZGlkX3R1cGxlX2hpbnRfZnBpKQorCQkJCQlk b19mcmVlemUgPSB0cnVlOworCQkJCWVsc2UgaWYgKGRvX3BydW5lKQorCQkJCXsKKwkJCQkJaWYg KFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKGJ1ZmZlcikpCisJCQkJCQlkb19mcmVlemUgPSB0 cnVlOworCQkJCX0KKwkJCQllbHNlIGlmIChkb19oaW50X3BydW5lKQorCQkJCXsKKwkJCQkJaWYg KFhMb2dIaW50Qml0SXNOZWVkZWQoKSAmJiBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChidWZm ZXIpKQorCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlp ZiAoZG9fZnJlZXplKQorCXsKKwkJLyoKKwkJICogVmFsaWRhdGUgdGhlIHR1cGxlcyB3ZSB3aWxs IGJlIGZyZWV6aW5nIGJlZm9yZSBlbnRlcmluZyB0aGUKKwkJICogY3JpdGljYWwgc2VjdGlvbi4K KwkJICovCisJCWhlYXBfcHJlX2ZyZWV6ZV9jaGVja3MoYnVmZmVyLCBwcnN0YXRlLT5mcm96ZW4s IHByc3RhdGUtPm5mcm96ZW4pOworCisJCS8qCisJCSAqIENhbGN1bGF0ZSB3aGF0IHRoZSBzbmFw c2hvdCBjb25mbGljdCBob3Jpem9uIHNob3VsZCBiZSBmb3IgYSByZWNvcmQKKwkJICogZnJlZXpp bmcgdHVwbGVzLiBXZSBjYW4gdXNlIHRoZSB2aXNpYmlsaXR5X2N1dG9mZl94aWQgYXMgb3VyIGN1 dG9mZgorCQkgKiBmb3IgY29uZmxpY3RzIHdoZW4gdGhlIHdob2xlIHBhZ2UgaXMgZWxpZ2libGUg dG8gYmVjb21lIGFsbC1mcm96ZW4KKwkJICogaW4gdGhlIFZNIG9uY2Ugd2UncmUgZG9uZSB3aXRo IGl0LiBPdGhlcndpc2UsIHdlIGdlbmVyYXRlIGEKKwkJICogY29uc2VydmF0aXZlIGN1dG9mZiBi eSBzdGVwcGluZyBiYWNrIGZyb20gT2xkZXN0WG1pbi4KKwkJICovCisJCWlmIChwcnN0YXRlLT5h bGxfZnJvemVuKQorCQkJKmZyel9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS0+dmlzaWJpbGl0 eV9jdXRvZmZfeGlkOworCQllbHNlCisJCXsKKwkJCS8qIEF2b2lkcyBmYWxzZSBjb25mbGljdHMg d2hlbiBob3Rfc3RhbmRieV9mZWVkYmFjayBpbiB1c2UgKi8KKwkJCSpmcnpfY29uZmxpY3RfaG9y aXpvbiA9IHByc3RhdGUtPmN1dG9mZnMtPk9sZGVzdFhtaW47CisJCQlUcmFuc2FjdGlvbklkUmV0 cmVhdCgqZnJ6X2NvbmZsaWN0X2hvcml6b24pOworCQl9CisJfQorCWVsc2UgaWYgKHByc3RhdGUt Pm5mcm96ZW4gPiAwKQorCXsKKwkJLyoKKwkJICogVGhlIHBhZ2UgY29udGFpbmVkIHNvbWUgdHVw bGVzIHRoYXQgd2VyZSBub3QgYWxyZWFkeSBmcm96ZW4sIGFuZCB3ZQorCQkgKiBjaG9zZSBub3Qg dG8gZnJlZXplIHRoZW0gbm93LiAgVGhlIHBhZ2Ugd29uJ3QgYmUgYWxsLWZyb3plbiB0aGVuLgor CQkgKi8KKwkJQXNzZXJ0KCFwcnN0YXRlLT5wYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCk7CisKKwkJ cHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCQlwcnN0YXRlLT5uZnJvemVuID0gMDsJLyog YXZvaWQgbWlzY291bnRzIGluIGluc3RydW1lbnRhdGlvbiAqLworCX0KKwllbHNlCisJeworCQkv KgorCQkgKiBXZSBoYXZlIG5vIGZyZWV6ZSBwbGFucyB0byBleGVjdXRlLiAgVGhlIHBhZ2UgbWln aHQgYWxyZWFkeSBiZQorCQkgKiBhbGwtZnJvemVuIChwZXJoYXBzIG9ubHkgZm9sbG93aW5nIHBy dW5pbmcpLCB0aG91Z2guICBTdWNoIHBhZ2VzCisJCSAqIGNhbiBiZSBtYXJrZWQgYWxsLWZyb3pl biBpbiB0aGUgVk0gYnkgb3VyIGNhbGxlciwgZXZlbiB0aG91Z2ggbm9uZQorCQkgKiBvZiBpdHMg dHVwbGVzIHdlcmUgbmV3bHkgZnJvemVuIGhlcmUuCisJCSAqLworCX0KKworCXJldHVybiBkb19m cmVlemU7Cit9CisKKworLyoKKyAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQg cG90ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBvbiB0aGUKKyAqIHNwZWNpZmllZCBwYWdlLgorICoK KyAqIENhbGxlciBtdXN0IGhhdmUgcGluIGFuZCBidWZmZXIgY2xlYW51cCBsb2NrIG9uIHRoZSBw YWdlLiAgTm90ZSB0aGF0IHdlCisgKiBkb24ndCB1cGRhdGUgdGhlIEZTTSBpbmZvcm1hdGlvbiBm b3IgcGFnZSBvbiBjYWxsZXIncyBiZWhhbGYuICBDYWxsZXIgbWlnaHQKKyAqIGFsc28gbmVlZCB0 byBhY2NvdW50IGZvciBhIHJlZHVjdGlvbiBpbiB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIHBvaW50 ZXIKKyAqIGFycmF5IGZvbGxvd2luZyBhcnJheSB0cnVuY2F0aW9uIGJ5IHVzLgorICoKKyAqIHBh cmFtcyBjb250YWlucyB0aGUgaW5wdXQgcGFyYW1ldGVycyB1c2VkIHRvIGNvbnRyb2wgZnJlZXpp bmcgYW5kIHBydW5pbmcKKyAqIGJlaGF2aW9yLiBTZWUgdGhlIGRlZmluaXRpb24gb2YgUHJ1bmVG cmVlemVQYXJhbXMgZm9yIG1vcmUgb24gd2hhdCBlYWNoCisgKiBwYXJhbWV0ZXIgZG9lcy4KKyAq CisgKiBJZiB0aGUgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0IGluIHBhcmFt cywgd2Ugd2lsbCBmcmVlemUKKyAqIHR1cGxlcyBpZiBpdCdzIHJlcXVpcmVkIGluIG9yZGVyIHRv IGFkdmFuY2UgcmVsZnJvemVueGlkIC8gcmVsbWlubXhpZCwgb3IKKyAqIGlmIGl0J3MgY29uc2lk ZXJlZCBhZHZhbnRhZ2VvdXMgZm9yIG92ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRvIHNv CisgKiBub3cuICBUaGUgJ3BhcmFtcy5jdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3pl bl94aWQnIGFuZAorICogJ25ld19yZWxtaW5fbXhpZCcgYXJndW1lbnRzIGFyZSByZXF1aXJlZCB3 aGVuIGZyZWV6aW5nLiAgV2hlbgorICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMg cGFzc2VkLCB3ZSBhbHNvIHNldCBwcmVzdWx0LT5hbGxfdmlzaWJsZQorICogYW5kIHByZXN1bHQt PmFsbF9mcm96ZW4gYWZ0ZXIgZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3QgdG8KKyAqIG9wcG9y dW5pc3RpY2FsbHkgZnJlZXplLCB0byBpbmRpY2F0ZSBpZiB0aGUgVk0gYml0cyBjYW4gYmUgc2V0 LiAgVGhleSBhcmUKKyAqIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgSEVBUF9QQUdFX1BS VU5FX0ZSRUVaRSBvcHRpb24gaXMgbm90IHBhc3NlZCwKKyAqIGJlY2F1c2UgYXQgdGhlIG1vbWVu dCBvbmx5IGNhbGxlcnMgdGhhdCBhbHNvIGZyZWV6ZSBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCisg KgorICogcHJlc3VsdCBjb250YWlucyBvdXRwdXQgcGFyYW1ldGVycyBuZWVkZWQgYnkgY2FsbGVy cywgc3VjaCBhcyB0aGUgbnVtYmVyIG9mCisgKiB0dXBsZXMgcmVtb3ZlZCBhbmQgdGhlIG9mZnNl dHMgb2YgZGVhZCBpdGVtcyBvbiB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLgorICogaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoKSBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIGl0LiAg UmVxdWlyZWQKKyAqIGJ5IGFsbCBjYWxsZXJzLgorICoKKyAqIG9mZl9sb2MgaXMgdGhlIG9mZnNl dCBsb2NhdGlvbiByZXF1aXJlZCBieSB0aGUgY2FsbGVyIHRvIHVzZSBpbiBlcnJvcgorICogY2Fs bGJhY2suCisgKgorICogbmV3X3JlbGZyb3plbl94aWQgYW5kIG5ld19yZWxtaW5fbXhpZCBtdXN0 IHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIgaWYgdGhlCisgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpF IG9wdGlvbiBpcyBzZXQgaW4gcGFyYW1zLiAgT24gZW50cnksIHRoZXkgY29udGFpbiB0aGUKKyAq IG9sZGVzdCBYSUQgYW5kIG11bHRpLVhJRCBzZWVuIG9uIHRoZSByZWxhdGlvbiBzbyBmYXIuICBU aGV5IHdpbGwgYmUgdXBkYXRlZAorICogd2l0aCBvbGRlc3QgdmFsdWVzIHByZXNlbnQgb24gdGhl IHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFmdGVyIHByb2Nlc3NpbmcgdGhlCisgKiB3aG9sZSByZWxh dGlvbiwgVkFDVVVNIGNhbiB1c2UgdGhlc2UgdmFsdWVzIGFzIHRoZSBuZXcKKyAqIHJlbGZyb3pl bnhpZC9yZWxtaW5teGlkIGZvciB0aGUgcmVsYXRpb24uCisgKi8KK3ZvaWQKK2hlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCisJCQkJCQkgICBQcnVu ZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKKwkJCQkJCSAgIE9mZnNldE51bWJlciAqb2ZmX2xvYywK KwkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKm5ld19yZWxmcm96ZW5feGlkLAorCQkJCQkJICAgTXVs dGlYYWN0SWQgKm5ld19yZWxtaW5fbXhpZCkKK3sKKwlCdWZmZXIJCWJ1ZmZlciA9IHBhcmFtcy0+ YnVmZmVyOworCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisJUHJ1bmVTdGF0 ZQlwcnN0YXRlOworCWJvb2wJCWRvX2ZyZWV6ZTsKKwlib29sCQlkb19wcnVuZTsKKwlib29sCQlk b19oaW50X3BydW5lOworCWJvb2wJCWRpZF90dXBsZV9oaW50X2ZwaTsKKwlpbnQ2NAkJZnBpX2Jl Zm9yZSA9IHBnV2FsVXNhZ2Uud2FsX2ZwaTsKKwlUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9o b3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisKKwkvKiBJbml0aWFsaXplIHByc3RhdGUg Ki8KKwlwcnVuZV9mcmVlemVfc2V0dXAocGFyYW1zLAorCQkJCQkgICBuZXdfcmVsZnJvemVuX3hp ZCA/CisJCQkJCSAgICpuZXdfcmVsZnJvemVuX3hpZCA6IEludmFsaWRUcmFuc2FjdGlvbklkLAor CQkJCQkgICBuZXdfcmVsbWluX214aWQgPworCQkJCQkgICAqbmV3X3JlbG1pbl9teGlkIDogSW52 YWxpZE11bHRpWGFjdElkLAorCQkJCQkgICBwcmVzdWx0LAorCQkJCQkgICAmcHJzdGF0ZSk7CisK KwkvKgorCSAqIEV4YW1pbmUgYWxsIGxpbmUgcG9pbnRlcnMgYW5kIHR1cGxlIHZpc2liaWxpdHkg aW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lCisJICogd2hpY2ggbGluZSBwb2ludGVycyBzaG91bGQg Y2hhbmdlIHN0YXRlIGFuZCB3aGljaCB0dXBsZXMgbWF5IGJlIGZyb3plbi4KKwkgKiBQcmVwYXJl IHF1ZXVlIG9mIHN0YXRlIGNoYW5nZXMgdG8gbGF0ZXIgYmUgZXhlY3V0ZWQgaW4gYSBjcml0aWNh bAorCSAqIHNlY3Rpb24uCisJICovCisJcHJ1bmVfZnJlZXplX3BsYW4oUmVsYXRpb25HZXRSZWxp ZChwYXJhbXMtPnJlbGF0aW9uKSwKKwkJCQkJICBidWZmZXIsICZwcnN0YXRlLCBvZmZfbG9jKTsK KworCS8qCisJICogSWYgY2hlY2tzdW1zIGFyZSBlbmFibGVkLCBjYWxsaW5nIGhlYXBfcHJ1bmVf c2F0aXNmaWVzX3ZhY3V1bSgpIHdoaWxlCisJICogY2hlY2tpbmcgdHVwbGUgdmlzaWJpbGl0eSBp bmZvcm1hdGlvbiBpbiBwcnVuZV9mcmVlemVfcGxhbigpIG1heSBoYXZlCisJICogY2F1c2VkIGFu IEZQSSB0byBiZSBlbWl0dGVkLgorCSAqLworCWRpZF90dXBsZV9oaW50X2ZwaSA9IGZwaV9iZWZv cmUgIT0gcGdXYWxVc2FnZS53YWxfZnBpOwogCiAJZG9fcHJ1bmUgPSBwcnN0YXRlLm5yZWRpcmVj dGVkID4gMCB8fAogCQlwcnN0YXRlLm5kZWFkID4gMCB8fAotLSAKMi40My4wCgo= --000000000000fe23c60643d269a4 Content-Type: text/x-patch; charset="UTF-8"; name="v20-0005-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v20-0005-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi3r7b3e4 RnJvbSBmMjA2NTVmODIyZTdiODNkMTRjYzY2MTZhOTkyYjY5Nzk5Yzg1OWNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDggT2N0IDIwMjUgMTU6Mzk6MDEgLTA0MDAKU3ViamVjdDogW1BB VENIIHYyMCAwNS8xMl0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZp ZXdlZC1ieTogS2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NN T014MURoM1ZNaHA4LVY3U09MeGRLOS1nJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIHwgIDM3ICsrLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgICB8IDQ2MCArKysrKysrKysrKysrKysrKysrKystLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICB8IDI0MSArLS0tLS0tLS0tLS0tLQog c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICB8ICA0MyArKy0KIDQgZmlsZXMg Y2hhbmdlZCwgNDQ3IGluc2VydGlvbnMoKyksIDMzNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCAxMWNiM2Y3NGRhNS4uMmFmNzI0NDUxYzMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtMTA0LDYgKzEwNCw4IEBAIGhl YXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCU9mZnNldE51 bWJlciAqZnJ6X29mZnNldHM7CiAJCWNoYXIJICAgKmRhdGFwdHIgPSBYTG9nUmVjR2V0QmxvY2tE YXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCQlib29sCQlkb19wcnVuZTsKKwkJYm9vbAkJc2V0 X2xzbiA9IGZhbHNlOworCQlib29sCQltYXJrX2J1ZmZlcl9kaXJ0eSA9IGZhbHNlOwogCiAJCWhl YXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGRhdGFwdHIsIHhscmVjLmZsYWdz LAogCQkJCQkJCQkJCQkgICAmbnBsYW5zLCAmcGxhbnMsICZmcnpfb2Zmc2V0cywKQEAgLTE1Nywx NyArMTU5LDM2IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJCS8qIFRoZXJlIHNob3VsZCBiZSBubyBtb3JlIGRhdGEgKi8KIAkJQXNzZXJ0KChjaGFy ICopIGZyel9vZmZzZXRzID09IGRhdGFwdHIgKyBkYXRhbGVuKTsKIAotCQlpZiAodm1mbGFncyAm IFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykKLQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwot Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQlpZiAoZG9fcHJ1bmUgfHwgbnBsYW5zID4g MCkKKwkJCW1hcmtfYnVmZmVyX2RpcnR5ID0gc2V0X2xzbiA9IHRydWU7CiAKIAkJLyoKLQkJICog U2VlIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoKSBmb3IgY29tbWVudGFyeSBvbiB3aGVuIHdl IHNldCB0aGUKLQkJICogaGVhcCBwYWdlIExTTi4KKwkJICogVGhlIGNyaXRpY2FsIGludGVncml0 eSByZXF1aXJlbWVudCBoZXJlIGlzIHRoYXQgd2UgbXVzdCBuZXZlciBlbmQKKwkJICogdXAgd2l0 aCB3aXRoIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2V0IGFuZCB0aGUgcGFnZS1sZXZlbAorCQkg KiBQRF9BTExfVklTSUJMRSBiaXQgY2xlYXIuICBJZiB0aGF0IHdlcmUgdG8gb2NjdXIsIGEgc3Vi c2VxdWVudCBwYWdlCisJCSAqIG1vZGlmaWNhdGlvbiB3b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQuCisJCSAqCisJCSAqIHZtZmxhZ3MgbWF5IGJlIG5vbnplcm8gd2l0 aCBQRF9BTExfVklTSUJMRSBhbHJlYWR5IHNldCAoZS5nLiB3aGVuCisJCSAqIG1hcmtpbmcgYW4g YWxsLXZpc2libGUgcGFnZSBhbGwtZnJvemVuKS4gSWYgb25seSB0aGUgVk0gaXMgdXBkYXRlZCwK KwkJICogdGhlIGhlYXAgcGFnZSBuZWVkIG5vdCBiZSBkaXJ0aWVkLgogCQkgKi8KLQkJaWYgKGRv X3BydW5lIHx8IG5wbGFucyA+IDAgfHwKLQkJCSgodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFM SURfQklUUykgJiYgWExvZ0hpbnRCaXRJc05lZWRlZCgpKSkKKwkJaWYgKCh2bWZsYWdzICYgVklT SUJJTElUWU1BUF9WQUxJRF9CSVRTKSAmJiAhUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKKwkJewor CQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCQltYXJrX2J1ZmZlcl9kaXJ0eSA9IHRydWU7 CisKKwkJCS8qCisJCQkgKiBTZWUgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSgpIGZvciBjb21t ZW50YXJ5IG9uIHdoZW4gd2Ugc2V0CisJCQkgKiB0aGUgaGVhcCBwYWdlIExTTi4KKwkJCSAqLwor CQkJaWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKKwkJCQlzZXRfbHNuID0gdHJ1ZTsKKwkJfQor CisJCWlmIChtYXJrX2J1ZmZlcl9kaXJ0eSkKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwor CisJCWlmIChzZXRfbHNuKQogCQkJUGFnZVNldExTTihwYWdlLCBsc24pOwogCiAJCS8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDkxMDRjNzQyYTYxLi41NjY3ZGY4NmJhZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTE5LDcgKzE5LDcgQEAKICNpbmNs dWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5o IgogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxp dHltYXBkZWZzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRl ICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvdmFjdXVtLmgiCkBAIC00NCw2ICs0NCw4IEBAIHR5cGVkZWYgc3RydWN0CiAJ Ym9vbAkJbWFya191bnVzZWRfbm93OwogCS8qIHdoZXRoZXIgdG8gYXR0ZW1wdCBmcmVlemluZyB0 dXBsZXMgKi8KIAlib29sCQlhdHRlbXB0X2ZyZWV6ZTsKKwkvKiB3aGV0aGVyIG9yIG5vdCB0byBh dHRlbXB0IHVwZGF0aW5nIHRoZSBWTSAqLworCWJvb2wJCWF0dGVtcHRfdXBkYXRlX3ZtOwogCXN0 cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzOwogCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMzMsMTYgKzEzNSwxNyBAQCB0 eXBlZGVmIHN0cnVjdAogCSAqIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGluZGljYXRlIGlm IHRoZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbgogCSAqIGJpdHMgaW4gdGhlIHZpc2liaWxp dHkgbWFwIGNhbiBiZSBzZXQgZm9yIHRoaXMgcGFnZSBhZnRlciBwcnVuaW5nLgogCSAqCi0JICog dmlzaWJpbGl0eV9jdXRvZmZfeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBv biB0aGUgcGFnZS4KLQkgKiBUaGUgY2FsbGVyIGNhbiB1c2UgaXQgYXMgdGhlIGNvbmZsaWN0IGhv cml6b24sIHdoZW4gc2V0dGluZyB0aGUgVk0KLQkgKiBiaXRzLiAgSXQgaXMgb25seSB2YWxpZCBp ZiB3ZSBmcm96ZSBzb21lIHR1cGxlcywgYW5kIGFsbF9mcm96ZW4gaXMKLQkgKiB0cnVlLgorCSAq IHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBsZXMg b24gdGhlIHBhZ2UuIEl0CisJICogY2FuIGJlIHVzZWQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24g d2hlbiBzZXR0aW5nIHRoZSBWTSBvciB3aGVuCisJICogZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMg b24gdGhlIHBhZ2UuIEl0IGlzIG9ubHkgdmFsaWQgd2hlbiBhbGwgdGhlIGxpdmUKKwkgKiB0dXBs ZXMgb24gdGhlIHBhZ2UgYXJlIGFsbC12aXNpYmxlLgogCSAqCiAJICogTk9URTogYWxsX3Zpc2li bGUgYW5kIGFsbF9mcm96ZW4gaW5pdGlhbGx5IGRvbid0IGluY2x1ZGUgTFBfREVBRCBpdGVtcy4K IAkgKiBUaGF0J3MgY29udmVuaWVudCBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0 byB1c2UgdGhlbSB0bwotCSAqIGRlY2lkZSB3aGV0aGVyIHRvIGZyZWV6ZSB0aGUgcGFnZSBvciBu b3QuICBUaGUgYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2YWx1ZXMgcmV0dXJuZWQg dG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZQotCSAqIExQX0RFQUQgaXRlbXMg YWZ0ZXIgd2UgZGV0ZXJtaW5lIHdoZXRoZXIgdG8gb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplLgor CSAqIGRlY2lkZSB3aGV0aGVyIHRvIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6ZSB0aGUgcGFnZSBv ciBub3QuICBUaGUKKwkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB2YWx1ZXMgdWx0aW1h dGVseSB1c2VkIHRvIHNldCB0aGUgVk0gYXJlCisJICogYWRqdXN0ZWQgdG8gaW5jbHVkZSBMUF9E RUFEIGl0ZW1zIGFmdGVyIHdlIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0bworCSAqIG9wcG9y dHVuaXN0aWNhbGx5IGZyZWV6ZS4KIAkgKi8KIAlib29sCQlhbGxfdmlzaWJsZTsKIAlib29sCQlh bGxfZnJvemVuOwpAQCAtMTgxLDExICsxODQsMjIgQEAgc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9y ZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE4K IAogc3RhdGljIHZvaWQgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBhZ2UgcGFnZSk7CiAKK3N0YXRp YyBUcmFuc2FjdGlvbklkIGdldF9jb25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBkb19m cmVlemUsIGJvb2wgZG9fc2V0X3ZtLAorCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIGxhdGVzdF94 aWRfcmVtb3ZlZCwgVHJhbnNhY3Rpb25JZCBmcnpfY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCQkJ CSAgVHJhbnNhY3Rpb25JZCB2aXNpYmlsaXR5X2N1dG9mZl94aWQsIGJvb2wgYmxrX2FscmVhZHlf YXYsCisJCQkJCQkJCQkgIGJvb2wgc2V0X2Jsa19hbGxfZnJvemVuKTsKIHN0YXRpYyBib29sIGhl YXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJ CQkJCQkJICBib29sIGRpZF90dXBsZV9oaW50X2ZwaSwgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19o aW50X3BydW5lLAogCQkJCQkJCQkgIFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCQkJCQkJCSAgVHJh bnNhY3Rpb25JZCAqZnJ6X2NvbmZsaWN0X2hvcml6b24pOwotCitzdGF0aWMgYm9vbCBoZWFwX3Bh Z2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkgICBCbG9ja051bWJl ciBoZWFwX2JsaywKKwkJCQkJCQkJICAgQnVmZmVyIGhlYXBfYnVmLAorCQkJCQkJCQkgICBCdWZm ZXIgdm1idWZmZXIsCisJCQkJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAorCQkJCQkJCQkgICBj b25zdCBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkJCQkgICB1aW50OCAqdm1mbGFncywKKwkJ CQkJCQkJICAgYm9vbCAqZG9fc2V0X3BkX3Zpcyk7CiAKIC8qCiAgKiBPcHRpb25hbGx5IHBydW5l IGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBpbiB0aGUgc3BlY2lmaWVkIHBhZ2UuCkBAIC0yNzIs NiArMjg2LDcgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVy IGJ1ZmZlcikKIAkJCSAqIGN1cnJlbnQgaW1wbGVtZW50YXRpb24uCiAJCQkgKi8KIAkJCVBydW5l RnJlZXplUGFyYW1zIHBhcmFtcyA9IHsucmVsYXRpb24gPSByZWxhdGlvbiwuYnVmZmVyID0gYnVm ZmVyLAorCQkJCS52bWJ1ZmZlciA9IEludmFsaWRCdWZmZXIsLmJsa19rbm93bl9hdiA9IGZhbHNl LAogCQkJCS5yZWFzb24gPSBQUlVORV9PTl9BQ0NFU1MsLm9wdGlvbnMgPSAwLAogCQkJCS52aXN0 ZXN0ID0gdmlzdGVzdCwuY3V0b2ZmcyA9IE5VTEwKIAkJCX07CkBAIC0zMjUsNiArMzQwLDggQEAg cHJ1bmVfZnJlZXplX3NldHVwKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJcHJzdGF0ZS0+ bWFya191bnVzZWRfbm93ID0KIAkJKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9N QVJLX1VOVVNFRF9OT1cpICE9IDA7CiAJcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUgPSAocGFyYW1z LT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKKwlwcnN0YXRlLT5hdHRl bXB0X3VwZGF0ZV92bSA9CisJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfVVBE QVRFX1ZJUykgIT0gMDsKIAlwcnN0YXRlLT5jdXRvZmZzID0gcGFyYW1zLT5jdXRvZmZzOwogCiAJ LyoKQEAgLTM3Miw1MCArMzg5LDU0IEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBh cmFtcyAqcGFyYW1zLAogCXByc3RhdGUtPmRlYWRvZmZzZXRzID0gKE9mZnNldE51bWJlciAqKSBw cmVzdWx0LT5kZWFkb2Zmc2V0czsKIAogCS8qCi0JICogVmFjdXVtIG1heSB1cGRhdGUgdGhlIFZN IGFmdGVyIHdlJ3JlIGRvbmUuICBXZSBjYW4ga2VlcCB0cmFjayBvZgotCSAqIHdoZXRoZXIgdGhl IHBhZ2Ugd2lsbCBiZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbiBhZnRlciBwcnVuaW5nIGFu ZAotCSAqIGZyZWV6aW5nIHRvIGhlbHAgdGhlIGNhbGxlciB0byBkbyB0aGF0LgorCSAqIFRyYWNr IHdoZXRoZXIgdGhlIHBhZ2UgY291bGQgYmUgbWFya2VkIGFsbC12aXNpYmxlIGFuZC9vciBhbGwt ZnJvemVuLgorCSAqIFRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZCBmb3Igb3Bwb3J0dW5pc3RpYyBm cmVlemluZyBhbmQgZm9yIHVwZGF0aW5nCisJICogdGhlIHZpc2liaWxpdHkgbWFwIChWTSkgaWYg cmVxdWVzdGVkIGJ5IHRoZSBjYWxsZXIuCisJICoKKwkgKiBDdXJyZW50bHksIG9ubHkgVkFDVVVN IHBlcmZvcm1zIGZyZWV6aW5nLCBidXQgb3RoZXIgY2FsbGVycyBtYXkgaW4gdGhlCisJICogZnV0 dXJlLiBWaXNpYmlsaXR5IGJvb2trZWVwaW5nIGlzIHJlcXVpcmVkIG5vdCBqdXN0IGZvciBzZXR0 aW5nIHRoZSBWTQorCSAqIGJpdHMsIGJ1dCBhbHNvIGZvciBvcHBvcnR1bmlzdGljIGZyZWV6aW5n OiB3ZSBvbmx5IGNvbnNpZGVyIGZyZWV6aW5nIGlmCisJICogdGhlIHBhZ2Ugd291bGQgYmVjb21l IGFsbC1mcm96ZW4sIG9yIGlmIGl0IHdvdWxkIGJlIGFsbC1mcm96ZW4gZXhjZXB0CisJICogZm9y IGRlYWQgdHVwbGVzIHRoYXQgVkFDVVVNIHdpbGwgcmVtb3ZlLiBJZiBhdHRlbXB0X3VwZGF0ZV92 bSBpcyBmYWxzZSwKKwkgKiB3ZSB3aWxsIG5vdCBzZXQgdGhlIFZNIGJpdCBldmVuIGlmIHRoZSBw YWdlIGlzIGZvdW5kIHRvIGJlIGFsbC12aXNpYmxlLgogCSAqCi0JICogQ3VycmVudGx5LCBvbmx5 IFZBQ1VVTSBzZXRzIHRoZSBWTSBiaXRzLiAgVG8gc2F2ZSB0aGUgZWZmb3J0LCBvbmx5IGRvCi0J ICogdGhlIGJvb2trZWVwaW5nIGlmIHRoZSBjYWxsZXIgbmVlZHMgaXQuICBDdXJyZW50bHksIHRo YXQncyB0aWVkIHRvCi0JICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwgYnV0IGl0IGNvdWxkIGJl IGEgc2VwYXJhdGUgZmxhZyBpZiB5b3Ugd2FudGVkCi0JICogdG8gdXBkYXRlIHRoZSBWTSBiaXRz IHdpdGhvdXQgYWxzbyBmcmVlemluZyBvciBmcmVlemUgd2l0aG91dCBhbHNvCi0JICogc2V0dGlu ZyB0aGUgVk0gYml0cy4KKwkgKiBJZiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUyBpcyBwYXNz ZWQgd2l0aG91dCBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLAorCSAqIHByc3RhdGUuYWxsX2Zyb3pl biBtdXN0IGJlIGluaXRpYWxpemVkIHRvIGZhbHNlLCBzaW5jZSB3ZSB3aWxsIG5vdCBjYWxsCisJ ICogaGVhcF9wcmVwYXJlX2ZyZWV6ZV90dXBsZSgpIGZvciBlYWNoIHR1cGxlLgogCSAqCi0JICog SW4gYWRkaXRpb24gdG8gdGVsbGluZyB0aGUgY2FsbGVyIHdoZXRoZXIgaXQgY2FuIHNldCB0aGUg Vk0gYml0LCB3ZQotCSAqIGFsc28gdXNlICdhbGxfdmlzaWJsZScgYW5kICdhbGxfZnJvemVuJyBm b3Igb3VyIG93biBkZWNpc2lvbi1tYWtpbmcuIElmCi0JICogdGhlIHdob2xlIHBhZ2Ugd291bGQg YmVjb21lIGZyb3plbiwgd2UgY29uc2lkZXIgb3Bwb3J0dW5pc3RpY2FsbHkKLQkgKiBmcmVlemlu ZyB0dXBsZXMuICBXZSB3aWxsIG5vdCBiZSBhYmxlIHRvIGZyZWV6ZSB0aGUgd2hvbGUgcGFnZSBp ZiB0aGVyZQotCSAqIGFyZSB0dXBsZXMgcHJlc2VudCB0aGF0IGFyZSBub3QgdmlzaWJsZSB0byBl dmVyeW9uZSBvciBpZiB0aGVyZSBhcmUKLQkgKiBkZWFkIHR1cGxlcyB3aGljaCBhcmUgbm90IHll dCByZW1vdmFibGUuICBIb3dldmVyLCBkZWFkIHR1cGxlcyB3aGljaAotCSAqIHdpbGwgYmUgcmVt b3ZlZCBieSB0aGUgZW5kIG9mIHZhY3V1bWluZyBzaG91bGQgbm90IHByZWNsdWRlIHVzIGZyb20K LQkgKiBvcHBvcnR1bmlzdGljYWxseSBmcmVlemluZy4gIEJlY2F1c2Ugb2YgdGhhdCwgd2UgZG8g bm90IGltbWVkaWF0ZWx5Ci0JICogY2xlYXIgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gd2hl biB3ZSBzZWUgTFBfREVBRCBpdGVtcy4gIFdlIGZpeAotCSAqIHRoYXQgYWZ0ZXIgc2Nhbm5pbmcg dGhlIGxpbmUgcG9pbnRlcnMsIGJlZm9yZSB3ZSByZXR1cm4gdGhlIHZhbHVlIHRvCi0JICogdGhl IGNhbGxlciwgc28gdGhhdCB0aGUgY2FsbGVyIGRvZXNuJ3Qgc2V0IHRoZSBWTSBiaXRzIGluY29y cmVjdGx5LgorCSAqIERlYWQgdHVwbGVzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQg b2YgdmFjdXVtIHNob3VsZCBub3QKKwkgKiBwcmV2ZW50IG9wcG9ydHVuaXN0aWMgZnJlZXppbmcu IFRoZXJlZm9yZSwgd2UgZG8gbm90IGNsZWFyIGFsbF92aXNpYmxlCisJICogYW5kIGFsbF9mcm96 ZW4gd2hlbiB3ZSBlbmNvdW50ZXIgTFBfREVBRCBpdGVtcy4gSW5zdGVhZCwgd2UgY29ycmVjdAor CSAqIHRoZW0gYWZ0ZXIgZGVjaWRpbmcgd2hldGhlciB0byBmcmVlemUsIGJ1dCBiZWZvcmUgdXBk YXRpbmcgdGhlIFZNLCB0bworCSAqIGF2b2lkIHNldHRpbmcgdGhlIFZNIGJpdHMgaW5jb3JyZWN0 bHkuCisJICoKKwkgKiBJZiBuZWl0aGVyIGZyZWV6aW5nIG5vciBWTSB1cGRhdGVzIGFyZSByZXF1 ZXN0ZWQsIHdlIHNraXAgdGhlIGV4dHJhCisJICogYm9va2tlZXBpbmcuIEluIHRoaXMgY2FzZSwg aW5pdGlhbGl6aW5nIGFsbF92aXNpYmxlIHRvIGZhbHNlIGFsbG93cworCSAqIGhlYXBfcHJ1bmVf cmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKSB0byBieXBhc3MgdW5uZWNlc3Nhcnkgd29yay4K IAkgKi8KIAlpZiAocHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCiAJewogCQlwcnN0YXRlLT5hbGxf dmlzaWJsZSA9IHRydWU7CiAJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSB0cnVlOwogCX0KKwllbHNl IGlmIChwcnN0YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSkKKwl7CisJCXByc3RhdGUtPmFsbF92aXNp YmxlID0gdHJ1ZTsKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCX0KIAllbHNlCiAJ ewotCQkvKgotCQkgKiBJbml0aWFsaXppbmcgdG8gZmFsc2UgYWxsb3dzIHNraXBwaW5nIHRoZSB3 b3JrIHRvIHVwZGF0ZSB0aGVtIGluCi0JCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9s cF9ub3JtYWwoKS4KLQkJICovCiAJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CiAJCXBy c3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAl9CiAKIAkvKgotCSAqIFRoZSB2aXNpYmlsaXR5 IGN1dG9mZiB4aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZQotCSAq IHBhZ2UuICBJbiB0aGUgY29tbW9uIGNhc2UsIHRoaXMgd2lsbCBiZSBzZXQgYXMgdGhlIGNvbmZs aWN0IGhvcml6b24gdGhlCi0JICogY2FsbGVyIGNhbiB1c2UgZm9yIHVwZGF0aW5nIHRoZSBWTS4g IElmLCBhdCB0aGUgZW5kIG9mIGZyZWV6aW5nIGFuZAotCSAqIHBydW5pbmcsIHRoZSBwYWdlIGlz IGFsbC1mcm96ZW4sIHRoZXJlIGlzIG5vIHBvc3NpYmlsaXR5IHRoYXQgYW55Ci0JICogcnVubmlu ZyB0cmFuc2FjdGlvbiBvbiB0aGUgc3RhbmRieSBkb2VzIG5vdCBzZWUgdHVwbGVzIG9uIHRoZSBw YWdlIGFzCi0JICogYWxsLXZpc2libGUsIHNvIHRoZSBjb25mbGljdCBob3Jpem9uIHJlbWFpbnMg SW52YWxpZFRyYW5zYWN0aW9uSWQuCisJICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0 aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSwgY29tbWl0dGVkIHR1cGxlcworCSAqIG9sZGVyIHRoYW4g T2xkZXN0WG1pbiBvbiB0aGUgcGFnZS4gVGhpcyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0 ZQorCSAqIGlmIHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMg ZW5jb3VudGVyZWQgdGhhdCBpcworCSAqIG5vdCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBp cyB1bm1haW50YWluZWQuIEFzIGxvbmcgYXMgaXQgaXMKKwkgKiBtYWludGFpbmVkLCBpdCBjYW4g YmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24KKwkgKiB3 aGVuIHVwZGF0aW5nIHRoZSBWTSBhbmQvb3IgZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhl IHBhZ2UuCiAJICovCiAJcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7CiB9CkBAIC03NTMsMTAgKzc3NCwxMzMgQEAgaGVhcF9wYWdlX3dpbGxfZnJl ZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXJldHVybiBkb19mcmVlemU7 CiB9CiAKKy8qCisgKiBEZWNpZGUgd2hldGhlciB0byBzZXQgdGhlIHZpc2liaWxpdHkgbWFwIGJp dHMgZm9yIGhlYXBfYmxrLCB1c2luZworICogaW5mb3JtYXRpb24gZnJvbSBQcnVuZVN0YXRlIGFu ZCBibGtfa25vd25fYXYuIFNvbWUgY2FsbGVycyBtYXkgYWxyZWFkeQorICogaGF2ZSBleGFtaW5l ZCB0aGlzIHBhZ2XigJlzIFZNIGJpdHMgKGUuZy4sIFZBQ1VVTSBpbiB0aGUgcHJldmlvdXMKKyAq IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpIGFuZCBjYW4gcGFzcyB0aGF0IGFsb25n LgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBvbmUgb3IgYm90aCBWTSBiaXRzIHNob3VsZCBiZSBz ZXQsIGFsb25nIHdpdGggdGhlIGRlc2lyZWQKKyAqIGZsYWdzIGluICp2bWZsYWdzLiBBbHNvIGlu ZGljYXRlcyB2aWEgZG9fc2V0X3BkX3ZpcyB3aGV0aGVyIFBEX0FMTF9WSVNJQkxFCisgKiBzaG91 bGQgYmUgc2V0IG9uIHRoZSBoZWFwIHBhZ2UuCisgKi8KK3N0YXRpYyBib29sCitoZWFwX3BhZ2Vf d2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkgICBCbG9ja051bWJlciBoZWFw X2JsaywKKwkJCQkJICAgQnVmZmVyIGhlYXBfYnVmLAorCQkJCQkgICBCdWZmZXIgdm1idWZmZXIs CisJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAorCQkJCQkgICBjb25zdCBQcnVuZVN0YXRlICpw cnN0YXRlLAorCQkJCQkgICB1aW50OCAqdm1mbGFncywKKwkJCQkJICAgYm9vbCAqZG9fc2V0X3Bk X3ZpcykKK3sKKwlQYWdlCQloZWFwX3BhZ2UgPSBCdWZmZXJHZXRQYWdlKGhlYXBfYnVmKTsKKwli b29sCQlkb19zZXRfdm0gPSBmYWxzZTsKKworCSpkb19zZXRfcGRfdmlzID0gZmFsc2U7CisKKwlp ZiAoIXByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtKQorCXsKKwkJQXNzZXJ0KCFwcnN0YXRlLT5h bGxfdmlzaWJsZSAmJiAhcHJzdGF0ZS0+YWxsX2Zyb3plbik7CisJCUFzc2VydCgqdm1mbGFncyA9 PSAwKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmIChwcnN0YXRlLT5hbGxfdmlzaWJsZSAm JiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQorCQkqZG9fc2V0X3BkX3ZpcyA9IHRydWU7 CisKKwlpZiAoKHByc3RhdGUtPmFsbF92aXNpYmxlICYmICFibGtfa25vd25fYXYpIHx8CisJCShw cnN0YXRlLT5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHJlbGF0aW9uLCBoZWFwX2Jsaywg JnZtYnVmZmVyKSkpCisJeworCQkqdm1mbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7 CisJCWlmIChwcnN0YXRlLT5hbGxfZnJvemVuKQorCQkJKnZtZmxhZ3MgfD0gVklTSUJJTElUWU1B UF9BTExfRlJPWkVOOworCisJCWRvX3NldF92bSA9IHRydWU7CisJfQorCisJLyoKKwkgKiBOb3cg aGFuZGxlIHR3byBwb3RlbnRpYWwgY29ycnVwdGlvbiBjYXNlczoKKwkgKgorCSAqIFRoZXNlIGRv IG5vdCBuZWVkIHRvIGhhcHBlbiBpbiBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIGFyZSBub3QKKwkg KiBXQUwtbG9nZ2VkLgorCSAqCisJICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2aXNpYmls aXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKKwkgKiBwYWdlLWxldmVsIGJp dCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCBpbiB2YWN1dW0gdGhlIGJp dAorCSAqIGdvdCBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBj YWxsZWQsIHNvIHdlIG11c3QKKwkgKiByZWNoZWNrIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNv bmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KKwkgKi8KKwllbHNlIGlmIChibGtfa25v d25fYXYgJiYgIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJgorCQkJIHZpc2liaWxpdHlt YXBfZ2V0X3N0YXR1cyhyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgIT0gMCkKKwl7CisJ CWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwK KwkJCQkgZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxp dHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJCQkJUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBoZWFwX2JsaykpKTsKKworCQl2aXNpYmls aXR5bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKTsKKwl9CisKKwkvKgorCSAqIEl0J3MgcG9zc2libGUgZm9yIHRo ZSB2YWx1ZSByZXR1cm5lZCBieQorCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9u SWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKKwkgKiB3cm9uZyBmb3IgdXMgdG8g c2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9uZQorCSAq IHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFsIHNhZmUg eG1pbiB2YWx1ZQorCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVzdE5vblJl bW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcworCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29tZXRpbWVz IHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwKKwkgKiBzbyBpZiB3 ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVwbGVzIHRo YXQgd2UKKwkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFjdHVhbGx5 IGFyZSwgYW5kIHRoZQorCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4KKwkgKgor CSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3aXRoIFBE X0FMTF9WSVNJQkxFIHNldCwKKwkgKiBob3dldmVyLgorCSAqLworCWVsc2UgaWYgKHByc3RhdGUt PmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQorCXsKKwkJ ZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAor CQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBh bGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWxhdGlvbiksIGhlYXBfYmxrKSkpOworCisJCVBhZ2VDbGVhckFsbFZp c2libGUoaGVhcF9wYWdlKTsKKwkJTWFya0J1ZmZlckRpcnR5KGhlYXBfYnVmKTsKKwkJdmlzaWJp bGl0eW1hcF9jbGVhcihyZWxhdGlvbiwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJU0lC SUxJVFlNQVBfVkFMSURfQklUUyk7CisJfQorCisJcmV0dXJuIGRvX3NldF92bTsKK30KKworCisj aWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCisvKgorICogV3JhcHBlciBmb3IgaGVhcF9wYWdl X3dvdWxkX2JlX2FsbF92aXNpYmxlKCkgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGNhbGxlcnMKKyAq IHRoYXQgZXhwZWN0IG5vIExQX0RFQUQgb24gdGhlIHBhZ2UuIEN1cnJlbnRseSBhc3NlcnQtb25s eSwgYnV0IHRoZXJlIGlzIG5vCisgKiByZWFzb24gbm90IHRvIHVzZSBpdCBvdXRzaWRlIG9mIGFz c2VydHMuCisgKi8KK3N0YXRpYyBib29sCitoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRp b24gcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJ CQkJCSBib29sICphbGxfZnJvemVuLAorCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlf Y3V0b2ZmX3hpZCwKKwkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQoreworCisJ cmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwKKwkJCQkJCQkJ CQkgIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgYWxsX2Zy b3plbiwKKwkJCQkJCQkJCQkgIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkgIGxv Z2dpbmdfb2ZmbnVtKTsKK30KKyNlbmRpZgogCiAvKgogICogUHJ1bmUgYW5kIHJlcGFpciBmcmFn bWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQotICogc3BlY2lm aWVkIHBhZ2UuCisgKiBzcGVjaWZpZWQgcGFnZS4gSWYgdGhlIHBhZ2UncyB2aXNpYmlsaXR5IHN0 YXR1cyBoYXMgY2hhbmdlZCwgdXBkYXRlIGl0IGluCisgKiB0aGUgVk0uCiAgKgogICogQ2FsbGVy IG11c3QgaGF2ZSBwaW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sgb24gdGhlIHBhZ2UuICBOb3Rl IHRoYXQgd2UKICAqIGRvbid0IHVwZGF0ZSB0aGUgRlNNIGluZm9ybWF0aW9uIGZvciBwYWdlIG9u IGNhbGxlcidzIGJlaGFsZi4gIENhbGxlciBtaWdodApAQCAtNzcxLDEyICs5MTUsMTMgQEAgaGVh cF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogICog dHVwbGVzIGlmIGl0J3MgcmVxdWlyZWQgaW4gb3JkZXIgdG8gYWR2YW5jZSByZWxmcm96ZW54aWQg LyByZWxtaW5teGlkLCBvcgogICogaWYgaXQncyBjb25zaWRlcmVkIGFkdmFudGFnZW91cyBmb3Ig b3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2UgdG8gZG8gc28KICAqIG5vdy4gIFRoZSAncGFyYW1z LmN1dG9mZnMnLCAncHJlc3VsdCcsICduZXdfcmVsZnJvemVuX3hpZCcgYW5kCi0gKiAnbmV3X3Jl bG1pbl9teGlkJyBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcuICBXaGVuCi0g KiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBwYXNzZWQsIHdlIGFsc28gc2V0IHBy ZXN1bHQtPmFsbF92aXNpYmxlCi0gKiBhbmQgcHJlc3VsdC0+YWxsX2Zyb3plbiBhZnRlciBkZXRl cm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0bwotICogb3Bwb3J1bmlzdGljYWxseSBmcmVlemUsIHRv IGluZGljYXRlIGlmIHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZQotICogYWx3YXlz IHNldCB0byBmYWxzZSB3aGVuIHRoZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBu b3QgcGFzc2VkLAotICogYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycyB0aGF0IGFs c28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KKyAqICduZXdfcmVsbWluX214aWQnIGFy Z3VtZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVlemluZy4KKyAqCisgKiBJZiBIRUFQX1BBR0Vf UFJVTkVfVVBEQVRFX1ZJUyBpcyBzZXQgaW4gcGFyYW1zIGFuZCB0aGUgdmlzaWJpbGl0eSBzdGF0 dXMgb2YKKyAqIHRoZSBwYWdlIGhhcyBjaGFuZ2VkLCB3ZSB3aWxsIHVwZGF0ZSB0aGUgVk0gYXQg dGhlIHNhbWUgdGltZSBhcyBwcnVuaW5nIGFuZAorICogZnJlZXppbmcgdGhlIGhlYXAgcGFnZS4g V2Ugd2lsbCBhbHNvIHVwZGF0ZSBwcmVzdWx0LT5vbGRfdm1iaXRzIGFuZAorICogcHJlc3VsdC0+ bmV3X3ZtYml0cyB3aXRoIHRoZSBzdGF0ZSBvZiB0aGUgVk0gYmVmb3JlIGFuZCBhZnRlciB1cGRh dGluZyBpdAorICogZm9yIHRoZSBjYWxsZXIgdG8gdXNlIGluIGJvb2trZWVwaW5nLgogICoKICAq IHByZXN1bHQgY29udGFpbnMgb3V0cHV0IHBhcmFtZXRlcnMgbmVlZGVkIGJ5IGNhbGxlcnMsIHN1 Y2ggYXMgdGhlIG51bWJlciBvZgogICogdHVwbGVzIHJlbW92ZWQgYW5kIHRoZSBvZmZzZXRzIG9m IGRlYWQgaXRlbXMgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4KQEAgLTgwMSwxNCArOTQ2LDIx IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMs CiAJCQkJCQkgICBNdWx0aVhhY3RJZCAqbmV3X3JlbG1pbl9teGlkKQogewogCUJ1ZmZlcgkJYnVm ZmVyID0gcGFyYW1zLT5idWZmZXI7CisJQnVmZmVyCQl2bWJ1ZmZlciA9IHBhcmFtcy0+dm1idWZm ZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKKwlCbG9ja051bWJlciBi bG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKIAlQcnVuZVN0YXRlCXByc3Rh dGU7CiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3BydW5lOwogCWJvb2wJCWRvX2hpbnRf cHJ1bmU7CisJYm9vbAkJZG9fc2V0X3ZtOworCWJvb2wJCWRvX3NldF9wZF92aXM7CiAJYm9vbAkJ ZGlkX3R1cGxlX2hpbnRfZnBpOwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxVc2FnZS53YWxf ZnBpOwogCVRyYW5zYWN0aW9uSWQgZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKKwlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlv bklkOworCXVpbnQ4CQluZXdfdm1iaXRzID0gMDsKKwl1aW50OAkJb2xkX3ZtYml0cyA9IDA7CiAK IAkvKiBJbml0aWFsaXplIHByc3RhdGUgKi8KIAlwcnVuZV9mcmVlemVfc2V0dXAocGFyYW1zLApA QCAtODc1LDYgKzEwMjcsMzQgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVl emVQYXJhbXMgKnBhcmFtcywKIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX2Zy b3plbiA9IGZhbHNlOwogCiAJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS5h bGxfdmlzaWJsZSk7CisJQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxlIHx8IChwcnN0YXRlLmxw ZGVhZF9pdGVtcyA9PSAwKSk7CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUg cGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBiaXQgYW5kIHRoZSBWTSBiaXRzCisJICogYmFzZWQg b24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gYW5kIHRoZSBhbGxfdmlzaWJsZS9hbGxfZnJvemVu IGZsYWdzLgorCSAqCisJICogV2hpbGUgaXQgaXMgdmFsaWQgZm9yIFBEX0FMTF9WSVNJQkxFIHRv IGJlIHNldCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nCisJICogVk0gYml0IGlzIGNsZWFyLCB3ZSBz dHJvbmdseSBwcmVmZXIgdG8ga2VlcCB0aGVtIGluIHN5bmMuCisJICoKKwkgKiBBY2NvcmRpbmds eSwgd2UgYWxzbyBhbGxvdyB1cGRhdGluZyBvbmx5IHRoZSBWTSB3aGVuIFBEX0FMTF9WSVNJQkxF IGhhcworCSAqIGFscmVhZHkgYmVlbiBzZXQuIFNldHRpbmcgb25seSB0aGUgVk0gaXMgbW9zdCBj b21tb24gd2hlbiBzZXR0aW5nIGFuCisJICogYWxyZWFkeSBhbGwtdmlzaWJsZSBwYWdlIGFsbC1m cm96ZW4uCisJICovCisJZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhwYXJhbXMt PnJlbGF0aW9uLAorCQkJCQkJCQkJICAgYmxvY2tubywgYnVmZmVyLCB2bWJ1ZmZlciwgcGFyYW1z LT5ibGtfa25vd25fYXYsCisJCQkJCQkJCQkgICAmcHJzdGF0ZSwgJm5ld192bWJpdHMsICZkb19z ZXRfcGRfdmlzKTsKKworCS8qIFdlIHNob3VsZCBvbmx5IHNldCB0aGUgVk0gaWYgUERfQUxMX1ZJ U0lCTEUgaXMgc2V0IG9yIHdpbGwgYmUgKi8KKwlBc3NlcnQoIWRvX3NldF92bSB8fCBkb19zZXRf cGRfdmlzIHx8IFBhZ2VJc0FsbFZpc2libGUocGFnZSkpOworCisJY29uZmxpY3RfeGlkID0gZ2V0 X2NvbmZsaWN0X3hpZChkb19wcnVuZSwgZG9fZnJlZXplLCBkb19zZXRfdm0sCisJCQkJCQkJCQlw cnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCwgZnJ6X2NvbmZsaWN0X2hvcml6b24sCisJCQkJCQkJ CQlwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgcGFyYW1zLT5ibGtfa25vd25fYXYsCisJ CQkJCQkJCQkoZG9fc2V0X3ZtICYmIChuZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJP WkVOKSkpOworCisJLyogTG9jayB2bWJ1ZmZlciBiZWZvcmUgZW50ZXJpbmcgYSBjcml0aWNhbCBz ZWN0aW9uICovCisJaWYgKGRvX3NldF92bSkKKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVS X0xPQ0tfRVhDTFVTSVZFKTsKIAogCS8qIEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0aGUgY2hh bmdlcyBpcyBjcml0aWNhbCAqLwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwpAQCAtODk2LDE0ICsx MDc2LDE3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpw YXJhbXMsCiAKIAkJLyoKIAkJICogSWYgdGhhdCdzIGFsbCB3ZSBoYWQgdG8gZG8gdG8gdGhlIHBh Z2UsIHRoaXMgaXMgYSBub24tV0FMLWxvZ2dlZAotCQkgKiBoaW50LiAgSWYgd2UgYXJlIGdvaW5n IHRvIGZyZWV6ZSBvciBwcnVuZSB0aGUgcGFnZSwgd2Ugd2lsbCBtYXJrCi0JCSAqIHRoZSBidWZm ZXIgZGlydHkgYmVsb3cuCisJCSAqIGhpbnQuICBJZiB3ZSBhcmUgZ29pbmcgdG8gZnJlZXplIG9y IHBydW5lIHRoZSBwYWdlIG9yIHNldAorCQkgKiBQRF9BTExfVklTSUJMRSwgd2Ugd2lsbCBtYXJr IHRoZSBidWZmZXIgZGlydHkgYmVsb3cuCisJCSAqCisJCSAqIFNldHRpbmcgUERfQUxMX1ZJU0lC TEUgaXMgZnVsbHkgV0FMLWxvZ2dlZCBiZWNhdXNlIGl0IGlzIGZvcmJpZGRlbgorCQkgKiBmb3Ig dGhlIFZNIHRvIGJlIHNldCBhbmQgUERfQUxMX1ZJU0lCTEUgdG8gYmUgY2xlYXIuCiAJCSAqLwot CQlpZiAoIWRvX2ZyZWV6ZSAmJiAhZG9fcHJ1bmUpCisJCWlmICghZG9fZnJlZXplICYmICFkb19w cnVuZSAmJiAhZG9fc2V0X3BkX3ZpcykKIAkJCU1hcmtCdWZmZXJEaXJ0eUhpbnQoYnVmZmVyLCB0 cnVlKTsKIAl9CiAKLQlpZiAoZG9fcHJ1bmUgfHwgZG9fZnJlZXplKQorCWlmIChkb19wcnVuZSB8 fCBkb19mcmVlemUgfHwgZG9fc2V0X3ZtKQogCXsKIAkJLyogQXBwbHkgdGhlIHBsYW5uZWQgaXRl bSBjaGFuZ2VzIGFuZCByZXBhaXIgcGFnZSBmcmFnbWVudGF0aW9uLiAqLwogCQlpZiAoZG9fcHJ1 bmUpCkBAIC05MTcsMzUgKzExMDAsNDMgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1 bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJaWYgKGRvX2ZyZWV6ZSkKIAkJCWhlYXBfZnJlZXpl X3ByZXBhcmVkX3R1cGxlcyhidWZmZXIsIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4p OwogCi0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQlpZiAoZG9fc2V0X3BkX3ZpcykKKwkJ CVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwogCi0JCS8qCi0JCSAqIEVtaXQgYSBXQUwgWExPR19I RUFQMl9QUlVORSogcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQKLQkJICovCi0JCWlmIChSZWxh dGlvbk5lZWRzV0FMKHBhcmFtcy0+cmVsYXRpb24pKQorCQlpZiAoZG9fcHJ1bmUgfHwgZG9fZnJl ZXplIHx8IGRvX3NldF9wZF92aXMpCisJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKworCQlp ZiAoZG9fc2V0X3ZtKQogCQl7Ci0JCQkvKgotCQkJICogVGhlIHNuYXBzaG90Q29uZmxpY3RIb3Jp em9uIGZvciB0aGUgd2hvbGUgcmVjb3JkIHNob3VsZCBiZSB0aGUKLQkJCSAqIG1vc3QgY29uc2Vy dmF0aXZlIG9mIGFsbCB0aGUgaG9yaXpvbnMgY2FsY3VsYXRlZCBmb3IgYW55IG9mIHRoZQotCQkJ ICogcG9zc2libGUgbW9kaWZpY2F0aW9ucy4gIElmIHRoaXMgcmVjb3JkIHdpbGwgcHJ1bmUgdHVw bGVzLCBhbnkKLQkJCSAqIHRyYW5zYWN0aW9ucyBvbiB0aGUgc3RhbmRieSBvbGRlciB0aGFuIHRo ZSB5b3VuZ2VzdCB4bWF4IG9mIHRoZQotCQkJICogbW9zdCByZWNlbnRseSByZW1vdmVkIHR1cGxl IHRoaXMgcmVjb3JkIHdpbGwgcHJ1bmUgd2lsbAotCQkJICogY29uZmxpY3QuICBJZiB0aGlzIHJl Y29yZCB3aWxsIGZyZWV6ZSB0dXBsZXMsIGFueSB0cmFuc2FjdGlvbnMKLQkJCSAqIG9uIHRoZSBz dGFuZGJ5IHdpdGggeGlkcyBvbGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB0dXBsZSB0aGlzCi0JCQkg KiByZWNvcmQgd2lsbCBmcmVlemUgd2lsbCBjb25mbGljdC4KLQkJCSAqLwotCQkJVHJhbnNhY3Rp b25JZCBjb25mbGljdF94aWQ7CisJCQlBc3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CiAK LQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyhmcnpfY29uZmxpY3RfaG9yaXpvbiwgcHJzdGF0 ZS5sYXRlc3RfeGlkX3JlbW92ZWQpKQotCQkJCWNvbmZsaWN0X3hpZCA9IGZyel9jb25mbGljdF9o b3Jpem9uOwotCQkJZWxzZQotCQkJCWNvbmZsaWN0X3hpZCA9IHByc3RhdGUubGF0ZXN0X3hpZF9y ZW1vdmVkOworCQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibG9ja25v LAorCQkJCQkJCQkJCQkJICB2bWJ1ZmZlciwgbmV3X3ZtYml0cywKKwkJCQkJCQkJCQkJCSAgcGFy YW1zLT5yZWxhdGlvbi0+cmRfbG9jYXRvcik7CisJCQlpZiAob2xkX3ZtYml0cyA9PSBuZXdfdm1i aXRzKQorCQkJeworCQkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7 CisJCQkJLyogVW5zZXQgc28gd2UgZG9uJ3QgZW1pdCBXQUwgc2luY2Ugbm8gY2hhbmdlIG9jY3Vy cmVkICovCisJCQkJZG9fc2V0X3ZtID0gZmFsc2U7CisJCQl9CisJCX0KIAorCQkvKgorCQkgKiBF bWl0IGEgV0FMIFhMT0dfSEVBUDJfUFJVTkUqIHJlY29yZCBzaG93aW5nIHdoYXQgd2UgZGlkLiBJ ZiB3ZSB3ZXJlCisJCSAqIG9ubHkgdXBkYXRpbmcgdGhlIFZNIGFuZCBpdCB0dXJucyBvdXQgaXQg d2FzIGFscmVhZHkgc2V0LCB3ZSB3aWxsCisJCSAqIGhhdmUgdW5zZXQgZG9fc2V0X3ZtIGVhcmxp ZXIuIEFzIHN1Y2gsIGNoZWNrIGl0IGFnYWluIGJlZm9yZQorCQkgKiBlbWl0dGluZyB0aGUgcmVj b3JkLgorCQkgKi8KKwkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocGFyYW1zLT5yZWxhdGlvbikgJiYK KwkJCShkb19wcnVuZSB8fCBkb19mcmVlemUgfHwgZG9fc2V0X3ZtKSkKKwkJewogCQkJbG9nX2hl YXBfcHJ1bmVfYW5kX2ZyZWV6ZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJCQkg IEludmFsaWRCdWZmZXIsCS8qIHZtYnVmZmVyICovCi0JCQkJCQkJCQkgIDAsCS8qIHZtZmxhZ3Mg Ki8KKwkJCQkJCQkJCSAgZG9fc2V0X3ZtID8gdm1idWZmZXIgOiBJbnZhbGlkQnVmZmVyLAorCQkJ CQkJCQkJICBkb19zZXRfdm0gPyBuZXdfdm1iaXRzIDogMCwKIAkJCQkJCQkJCSAgY29uZmxpY3Rf eGlkLAotCQkJCQkJCQkJICB0cnVlLCBwYXJhbXMtPnJlYXNvbiwKKwkJCQkJCQkJCSAgdHJ1ZSwg LyogY2xlYW51cCBsb2NrICovCisJCQkJCQkJCQkgIGRvX3NldF9wZF92aXMsCisJCQkJCQkJCQkg IHBhcmFtcy0+cmVhc29uLAogCQkJCQkJCQkJICBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJv emVuLAogCQkJCQkJCQkJICBwcnN0YXRlLnJlZGlyZWN0ZWQsIHByc3RhdGUubnJlZGlyZWN0ZWQs CiAJCQkJCQkJCQkgIHByc3RhdGUubm93ZGVhZCwgcHJzdGF0ZS5uZGVhZCwKQEAgLTk1NSwyOCAr MTE0Niw0NyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCiAJRU5EX0NSSVRfU0VDVElPTigpOwogCisJaWYgKGRvX3NldF92bSkKKwkJTG9j a0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKworCS8qCisJICogRHVyaW5n IGl0cyBzZWNvbmQgcGFzcyBvdmVyIHRoZSBoZWFwLCBWQUNVVU0gY2FsbHMKKwkgKiBoZWFwX3Bh Z2Vfd291bGRfYmVfYWxsX3Zpc2libGUoKSB0byBkZXRlcm1pbmUgd2hldGhlciBhIHBhZ2UgaXMK KwkgKiBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbi4gVGhlIGxvZ2ljIGhlcmUgaXMgc2ltaWxh ci4gQWZ0ZXIgY29tcGxldGluZworCSAqIHBydW5pbmcgYW5kIGZyZWV6aW5nLCB1c2UgYW4gYXNz ZXJ0aW9uIHRvIHZlcmlmeSB0aGF0IG91ciByZXN1bHRzCisJICogcmVtYWluIGNvbnNpc3RlbnQg d2l0aCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoKS4KKwkgKi8KKyNpZmRlZiBVU0Vf QVNTRVJUX0NIRUNLSU5HCisJaWYgKHByc3RhdGUuYWxsX3Zpc2libGUpCisJeworCQlUcmFuc2Fj dGlvbklkIGRlYnVnX2N1dG9mZjsKKwkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKKworCQlBc3Nl cnQocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CisJCUFzc2VydChwcnN0YXRlLmN1dG9mZnMp OworCisJCWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHBhcmFtcy0+cmVsYXRpb24sIGJ1 ZmZlciwKKwkJCQkJCQkJCSAgcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLAorCQkJCQkJCQkJ ICAmZGVidWdfYWxsX2Zyb3plbiwKKwkJCQkJCQkJCSAgJmRlYnVnX2N1dG9mZiwgb2ZmX2xvYykp CisJCQlBc3NlcnQoZmFsc2UpOworCisJCUFzc2VydChwcnN0YXRlLmFsbF9mcm96ZW4gPT0gZGVi dWdfYWxsX2Zyb3plbik7CisKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWJ1Z19j dXRvZmYpIHx8CisJCQkgICBkZWJ1Z19jdXRvZmYgPT0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9m Zl94aWQpOworCX0KKyNlbmRpZgorCiAJLyogQ29weSBpbmZvcm1hdGlvbiBiYWNrIGZvciBjYWxs ZXIgKi8KIAlwcmVzdWx0LT5uZGVsZXRlZCA9IHByc3RhdGUubmRlbGV0ZWQ7CiAJcHJlc3VsdC0+ bm5ld2xwZGVhZCA9IHByc3RhdGUubmRlYWQ7CiAJcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUu bmZyb3plbjsKIAlwcmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7CiAJ cHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVw bGVzOwotCXByZXN1bHQtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfdmlzaWJsZTsKLQlwcmVz dWx0LT5hbGxfZnJvemVuID0gcHJzdGF0ZS5hbGxfZnJvemVuOwogCXByZXN1bHQtPmhhc3R1cCA9 IHByc3RhdGUuaGFzdHVwOwotCi0JLyoKLQkgKiBGb3IgY2FsbGVycyBwbGFubmluZyB0byB1cGRh dGUgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbgotCSAqIGZvciB0aGF0 IHJlY29yZCBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIsIGlm IHRoZQotCSAqIHBhZ2UgaXMgY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBiZSBubyBjb25m bGljdCBhbmQgdGhlCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBzaG91bGQgcmVtYWluIEludmFs aWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcwotCSAqIHRoZSBjYXNlIHRoYXQgd2UganVz dCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQKLQkgKiBpbmNs dWRlZCB0aGUgY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIGNhbGxlciBkb2Vzbid0IG5lZWQg aXQuCi0JICovCi0JaWYgKHByZXN1bHQtPmFsbF9mcm96ZW4pCi0JCXByZXN1bHQtPnZtX2NvbmZs aWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQllbHNlCi0JCXByZXN1bHQtPnZt X2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwlwcmVz dWx0LT5uZXdfdm1iaXRzID0gbmV3X3ZtYml0czsKKwlwcmVzdWx0LT5vbGRfdm1iaXRzID0gb2xk X3ZtYml0czsKIAogCXByZXN1bHQtPmxwZGVhZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1z OwogCS8qIHRoZSBwcmVzdWx0LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQg aW4gKi8KQEAgLTE0NjgsNiArMTY3OCw4IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9s cF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQl7 CiAJCQkJVHJhbnNhY3Rpb25JZCB4bWluOwogCisJCQkJQXNzZXJ0KHByc3RhdGUtPmF0dGVtcHRf dXBkYXRlX3ZtKTsKKwogCQkJCWlmICghSGVhcFR1cGxlSGVhZGVyWG1pbkNvbW1pdHRlZChodHVw KSkKIAkJCQl7CiAJCQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CkBAIC0yMTE4LDYg KzIzMzAsNjUgQEAgaGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJlZXplICp0dXBsZXMs IGludCBudHVwbGVzLAogCXJldHVybiBucGxhbnM7CiB9CiAKKy8qCisgKiBDYWxjdWxhdGUgdGhl IGNvbmZsaWN0IGhvcml6b24gZm9yIHRoZSB3aG9sZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9T Q0FOCisgKiByZWNvcmQuCisgKi8KK3N0YXRpYyBUcmFuc2FjdGlvbklkCitnZXRfY29uZmxpY3Rf eGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLCBib29sIGRvX3NldF92bSwKKwkJCQkg VHJhbnNhY3Rpb25JZCBsYXRlc3RfeGlkX3JlbW92ZWQsIFRyYW5zYWN0aW9uSWQgZnJ6X2NvbmZs aWN0X2hvcml6b24sCisJCQkJIFRyYW5zYWN0aW9uSWQgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCBi b29sIGJsa19hbHJlYWR5X2F2LAorCQkJCSBib29sIHNldF9ibGtfYWxsX2Zyb3plbikKK3sKKwlU cmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKKworCS8qCisJICogV2UgY2FuIG9taXQgdGhlIHNu YXBzaG90IGNvbmZsaWN0IGhvcml6b24gaWYgd2UgYXJlIG5vdCBwcnVuaW5nIG9yCisJICogZnJl ZXppbmcgYW55IHR1cGxlcyBhbmQgYXJlIHNldHRpbmcgYW4gYWxyZWFkeSBhbGwtdmlzaWJsZSBw YWdlCisJICogYWxsLWZyb3plbiBpbiB0aGUgVk0uIEluIHRoaXMgY2FzZSwgYWxsIG9mIHRoZSB0 dXBsZXMgb24gdGhlIHBhZ2UgbXVzdAorCSAqIGFscmVhZHkgYmUgdmlzaWJsZSB0byBhbGwgTVZD QyBzbmFwc2hvdHMgb24gdGhlIHN0YW5kYnkuCisJICovCisJaWYgKCFkb19wcnVuZSAmJiAhZG9f ZnJlZXplICYmCisJCWRvX3NldF92bSAmJiBibGtfYWxyZWFkeV9hdiAmJiBzZXRfYmxrX2FsbF9m cm96ZW4pCisJCXJldHVybiBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKworCS8qCisJICogVGhlIHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3JkIHNob3VsZCBiZSB0aGUg bW9zdAorCSAqIGNvbnNlcnZhdGl2ZSBvZiBhbGwgdGhlIGhvcml6b25zIGNhbGN1bGF0ZWQgZm9y IGFueSBvZiB0aGUgcG9zc2libGUKKwkgKiBtb2RpZmljYXRpb25zLiAgSWYgdGhpcyByZWNvcmQg d2lsbCBwcnVuZSB0dXBsZXMsIGFueSB0cmFuc2FjdGlvbnMgb24KKwkgKiB0aGUgc3RhbmRieSBv bGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB4bWF4IG9mIHRoZSBtb3N0IHJlY2VudGx5IHJlbW92ZWQK KwkgKiB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHdpbGwgY29uZmxpY3QuICBJZiB0aGlz IHJlY29yZCB3aWxsIGZyZWV6ZQorCSAqIHR1cGxlcywgYW55IHRyYW5zYWN0aW9ucyBvbiB0aGUg c3RhbmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUKKwkgKiB5b3VuZ2VzdCB0dXBsZSB0aGlz IHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgorCSAqLworCWNvbmZsaWN0X3hpZCA9 IEludmFsaWRUcmFuc2FjdGlvbklkOworCisJLyoKKwkgKiBJZiB3ZSBhcmUgdXBkYXRpbmcgdGhl IFZNLCB0aGUgY29uZmxpY3QgaG9yaXpvbiBpcyBhbG1vc3QgYWx3YXlzIHRoZQorCSAqIHZpc2li aWxpdHkgY3V0b2ZmIFhJRC4KKwkgKgorCSAqIFNlcGFyYXRlbHksIGlmIHdlIGFyZSBmcmVlemlu ZyBhbnkgdHVwbGVzLCBhcyBhbiBvcHRpbWl6YXRpb24sIHdlIGNhbgorCSAqIHVzZSB0aGUgdmlz aWJpbGl0eV9jdXRvZmZfeGlkIGFzIHRoZSBjb25mbGljdCBob3Jpem9uIGlmIHRoZSBwYWdlIHdp bGwKKwkgKiBiZSBhbGwtZnJvemVuLiBUaGlzIGlzIHRydWUgZXZlbiBpZiB0aGVyZSBhcmUgTFBf REVBRCBsaW5lIHBvaW50ZXJzCisJICogYmVjYXVzZSB3ZSBpZ25vcmVkIHRob3NlIHdoZW4gbWFp bnRhaW5pbmcgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZC4KKwkgKiBUaGlzIHdpbGwgaGF2ZSBi ZWVuIGNhbGN1bGF0ZWQgZWFybGllciBhcyB0aGUgZnJ6X2NvbmZsaWN0X2hvcml6b24gd2hlbgor CSAqIHdlIGRldGVybWluZWQgd2Ugd291bGQgZnJlZXplLgorCSAqLworCWlmIChkb19zZXRfdm0p CisJCWNvbmZsaWN0X3hpZCA9IHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwllbHNlIGlmIChkb19m cmVlemUpCisJCWNvbmZsaWN0X3hpZCA9IGZyel9jb25mbGljdF9ob3Jpem9uOworCisJLyoKKwkg KiBJZiB3ZSBhcmUgcmVtb3ZpbmcgdHVwbGVzIHdpdGggYSB5b3VuZ2VyIHhtYXggdGhhbiBvdXIg c28gZmFyCisJICogY2FsY3VsYXRlZCBjb25mbGljdF94aWQsIHdlIG11c3QgdXNlIHRoaXMgYXMg b3VyIGhvcml6b24uCisJICovCisJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGxhdGVzdF94aWRf cmVtb3ZlZCwgY29uZmxpY3RfeGlkKSkKKwkJY29uZmxpY3RfeGlkID0gbGF0ZXN0X3hpZF9yZW1v dmVkOworCisJcmV0dXJuIGNvbmZsaWN0X3hpZDsKK30KKwogLyoKICAqIFdyaXRlIGFuIFhMT0df SEVBUDJfUFJVTkUqIFdBTCByZWNvcmQKICAqCkBAIC0yMTQyLDYgKzI0MTMsMTUgQEAgaGVhcF9s b2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVwbGVzLAogICog Y2FzZSwgdm1idWZmZXIgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIHVwZGF0ZWQgYW5kIG1hcmtl ZCBkaXJ0eSBhbmQgc2hvdWxkCiAgKiBzdGlsbCBiZSBwaW5uZWQgYW5kIGxvY2tlZC4KICAqCisg KiBzZXRfcGRfYWxsX3ZpcyBpbmRpY2F0ZXMgdGhhdCB3ZSBzZXQgUERfQUxMX1ZJU0lCTEUgYW5k IHRodXMgc2hvdWxkIHVwZGF0ZQorICogdGhlIHBhZ2UgTFNOIHdoZW4gY2hlY2tzdW1zL3dhbF9s b2dfaGludHMgYXJlIGVuYWJsZWQgZXZlbiBpZiB3ZSBkaWQgbm90CisgKiBwcnVuZSBvciBmcmVl emUgdHVwbGVzIG9uIHRoZSBwYWdlLgorICoKKyAqIEluIHNvbWUgY2FzZXMsIHN1Y2ggYXMgd2hl biBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIGlzIHNldHRpbmcgYW4KKyAqIGFscmVhZHkg bWFya2VkIGFsbC12aXNpYmxlIHBhZ2UgYWxsLWZyb3plbiwgUERfQUxMX1ZJU0lCTEUgbWF5IGFs cmVhZHkgYmUKKyAqIHNldC4gU28sIGl0IGlzIHBvc3NpYmxlIGZvciB2bWZsYWdzIHRvIGJlIG5v bi16ZXJvIGFuZCBzZXRfcGRfYWxsX3ZpcyB0byBiZQorICogZmFsc2UuCisgKgogICogTm90ZTog VGhpcyBmdW5jdGlvbiBzY3JpYmJsZXMgb24gdGhlICdmcm96ZW4nIGFycmF5LgogICoKICAqIE5v dGU6IFRoaXMgaXMgY2FsbGVkIGluIGEgY3JpdGljYWwgc2VjdGlvbiwgc28gY2FyZWZ1bCB3aGF0 IHlvdSBkbyBoZXJlLgpAQCAtMjE1MSw2ICsyNDMxLDcgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCSAgQnVmZmVyIHZt YnVmZmVyLCB1aW50OCB2bWZsYWdzLAogCQkJCQkJICBUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hp ZCwKIAkJCQkJCSAgYm9vbCBjbGVhbnVwX2xvY2ssCisJCQkJCQkgIGJvb2wgc2V0X3BkX2FsbF92 aXMsCiAJCQkJCQkgIFBydW5lUmVhc29uIHJlYXNvbiwKIAkJCQkJCSAgSGVhcFR1cGxlRnJlZXpl ICpmcm96ZW4sIGludCBuZnJvemVuLAogCQkJCQkJICBPZmZzZXROdW1iZXIgKnJlZGlyZWN0ZWQs IGludCBucmVkaXJlY3RlZCwKQEAgLTIxODcsNyArMjQ2OCw3IEBAIGxvZ19oZWFwX3BydW5lX2Fu ZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJICovCiAJaWYgKCFk b19wcnVuZSAmJgogCQluZnJvemVuID09IDAgJiYKLQkJKCFkb19zZXRfdm0gfHwgIVhMb2dIaW50 Qml0SXNOZWVkZWQoKSkpCisJCSghc2V0X3BkX2FsbF92aXMgfHwgIVhMb2dIaW50Qml0SXNOZWVk ZWQoKSkpCiAJCXJlZ2J1Zl9mbGFnc19oZWFwIHw9IFJFR0JVRl9OT19JTUFHRTsKIAogCS8qCkBA IC0yMzA1LDcgKzI1ODYsOCBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIFNlZSBjb21tZW50IGF0IHRoZSB0b3Agb2YgdGhl IGZ1bmN0aW9uIGFib3V0IHJlZ2J1Zl9mbGFnc19oZWFwIGZvcgogCSAqIGRldGFpbHMgb24gd2hl biB3ZSBjYW4gYWR2YW5jZSB0aGUgcGFnZSBMU04uCiAJICovCi0JaWYgKGRvX3BydW5lIHx8IG5m cm96ZW4gPiAwIHx8IChkb19zZXRfdm0gJiYgWExvZ0hpbnRCaXRJc05lZWRlZCgpKSkKKwlpZiAo ZG9fcHJ1bmUgfHwgbmZyb3plbiA+IDAgfHwKKwkJKHNldF9wZF9hbGxfdmlzICYmIFhMb2dIaW50 Qml0SXNOZWVkZWQoKSkpCiAJewogCQlBc3NlcnQoQnVmZmVySXNEaXJ0eShidWZmZXIpKTsKIAkJ UGFnZVNldExTTihCdWZmZXJHZXRQYWdlKGJ1ZmZlciksIHJlY3B0cik7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZTFiNzQ1NjgyM2QuLmE3YTk3NGI2NjM5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00NjQsMjAgKzQ2NCw2IEBAIHN0YXRpYyB2 b2lkIGRlYWRfaXRlbXNfYWRkKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8s IE9mZnNldE51bWJlciAqCiBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX3Jlc2V0KExWUmVsU3RhdGUg KnZhY3JlbCk7CiBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFj cmVsKTsKIAotI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKLXN0YXRpYyBib29sIGhlYXBfcGFn ZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJCQkgVHJh bnNhY3Rpb25JZCBPbGRlc3RYbWluLAotCQkJCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJ CQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJIE9m ZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwotI2VuZGlmCi1zdGF0aWMgYm9vbCBoZWFwX3Bh Z2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKLQkJCQkJCQkJCQkgICBPZmZzZXROdW1i ZXIgKmRlYWRvZmZzZXRzLAotCQkJCQkJCQkJCSAgIGludCBuZGVhZG9mZnNldHMsCi0JCQkJCQkJ CQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKLQkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkICp2aXNp YmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29m Zm51bSk7CiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVsc3RhdHNfYWxsX2luZGV4ZXMoTFZSZWxTdGF0 ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIHZhY3V1bV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcp Owogc3RhdGljIHZvaWQgdXBkYXRlX3ZhY3V1bV9lcnJvcl9pbmZvKExWUmVsU3RhdGUgKnZhY3Jl bCwKQEAgLTE5NjYsNyArMTk1Miw5IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNy ZWwsCiAJUmVsYXRpb24JcmVsID0gdmFjcmVsLT5yZWw7CiAJUHJ1bmVGcmVlemVSZXN1bHQgcHJl c3VsdDsKIAlQcnVuZUZyZWV6ZVBhcmFtcyBwYXJhbXMgPSB7LnJlbGF0aW9uID0gcmVsLC5idWZm ZXIgPSBidWYsCi0JCS5yZWFzb24gPSBQUlVORV9WQUNVVU1fU0NBTiwub3B0aW9ucyA9IEhFQVBf UEFHRV9QUlVORV9GUkVFWkUsCisJCS52bWJ1ZmZlciA9IHZtYnVmZmVyLC5ibGtfa25vd25fYXYg PSBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0sCisJCS5yZWFzb24gPSBQUlVORV9WQUNVVU1f U0NBTiwKKwkJLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIHwgSEVBUF9QQUdFX1BS VU5FX1VQREFURV9WSVMsCiAJCS5jdXRvZmZzID0gJnZhY3JlbC0+Y3V0b2ZmcywudmlzdGVzdCA9 IHZhY3JlbC0+dmlzdGVzdAogCX07CiAKQEAgLTIwMDksMzMgKzE5OTcsNiBAQCBsYXp5X3NjYW5f cHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQl2YWNyZWwtPm5ld19mcm96ZW5fdHVwbGVfcGFn ZXMrKzsKIAl9CiAKLQkvKgotCSAqIFZBQ1VVTSB3aWxsIGNhbGwgaGVhcF9wYWdlX2lzX2FsbF92 aXNpYmxlKCkgZHVyaW5nIHRoZSBzZWNvbmQgcGFzcyBvdmVyCi0JICogdGhlIGhlYXAgdG8gZGV0 ZXJtaW5lIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGZvciB0aGUgcGFnZSAtLSB0aGlzCi0J ICogaXMgYSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBsb2dpYyBmcm9tIHRoaXMgZnVuY3Rp b24uICBOb3cgdGhhdAotCSAqIHdlJ3ZlIGZpbmlzaGVkIHBydW5pbmcgYW5kIGZyZWV6aW5nLCBt YWtlIHN1cmUgdGhhdCB3ZSdyZSBpbiB0b3RhbAotCSAqIGFncmVlbWVudCB3aXRoIGhlYXBfcGFn ZV9pc19hbGxfdmlzaWJsZSgpIHVzaW5nIGFuIGFzc2VydGlvbi4KLQkgKi8KLSNpZmRlZiBVU0Vf QVNTRVJUX0NIRUNLSU5HCi0JaWYgKHByZXN1bHQuYWxsX3Zpc2libGUpCi0JewotCQlUcmFuc2Fj dGlvbklkIGRlYnVnX2N1dG9mZjsKLQkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKLQotCQlBc3Nl cnQocHJlc3VsdC5scGRlYWRfaXRlbXMgPT0gMCk7Ci0KLQkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxs X3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZiwKLQkJCQkJCQkJCSAgdmFjcmVsLT5jdXRvZmZzLk9s ZGVzdFhtaW4sICZkZWJ1Z19hbGxfZnJvemVuLAotCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCAm dmFjcmVsLT5vZmZudW0pKQotCQkJQXNzZXJ0KGZhbHNlKTsKLQotCQlBc3NlcnQocHJlc3VsdC5h bGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96ZW4pOwotCi0JCUFzc2VydCghVHJhbnNhY3Rpb25J ZElzVmFsaWQoZGVidWdfY3V0b2ZmKSB8fAotCQkJICAgZGVidWdfY3V0b2ZmID09IHByZXN1bHQu dm1fY29uZmxpY3RfaG9yaXpvbik7Ci0JfQotI2VuZGlmCi0KIAkvKgogCSAqIE5vdyBzYXZlIGRl dGFpbHMgb2YgdGhlIExQX0RFQUQgaXRlbXMgZnJvbSB0aGUgcGFnZSBpbiB2YWNyZWwKIAkgKi8K QEAgLTIwNjksMTY4ICsyMDMwLDI2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNy ZWwsCiAJLyogRGlkIHdlIGZpbmQgTFBfREVBRCBpdGVtcz8gKi8KIAkqaGFzX2xwZGVhZF9pdGVt cyA9IChwcmVzdWx0LmxwZGVhZF9pdGVtcyA+IDApOwogCi0JQXNzZXJ0KCFwcmVzdWx0LmFsbF92 aXNpYmxlIHx8ICEoKmhhc19scGRlYWRfaXRlbXMpKTsKLQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zy b3plbiB8fCBwcmVzdWx0LmFsbF92aXNpYmxlKTsKLQogCS8qCi0JICogSGFuZGxlIHNldHRpbmcg dmlzaWJpbGl0eSBtYXAgYml0IGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcwot CSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFs bF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4gdmFyaWFibGVzCisJICogRm9yIHRoZSBwdXJw b3NlcyBvZiBsb2dnaW5nLCBjb3VudCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3YXMgbmV3bHkK KwkgKiBzZXQgYWxsLXZpc2libGUgYW5kLCBwb3RlbnRpYWxseSwgYWxsLWZyb3plbi4KIAkgKi8K LQlpZiAoIWFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSAmJiBwcmVzdWx0LmFsbF92aXNpYmxl KQorCWlmICgocHJlc3VsdC5vbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkg PT0gMCAmJgorCQkocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJM RSkgIT0gMCkKIAl7Ci0JCXVpbnQ4CQlvbGRfdm1iaXRzOwotCQl1aW50OAkJZmxhZ3MgPSBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFOwotCi0JCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCXsK LQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jp em9uKSk7Ci0JCQlmbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47Ci0JCX0KLQotCQkv KgotCQkgKiBJdCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBt YXAgcGFnZSBpcyBzZXQKLQkJICogd2hpbGUgdGhlIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBi dXQgdGhlIHJldmVyc2UgaXMgYWxsb3dlZCAoaWYKLQkJICogY2hlY2tzdW1zIGFyZSBub3QgZW5h YmxlZCkuICBSZWdhcmRsZXNzLCBzZXQgYm90aCBiaXRzIHNvIHRoYXQgd2UKLQkJICogZ2V0IGJh Y2sgaW4gc3luYy4KLQkJICoKLQkJICogTkI6IElmIHRoZSBoZWFwIHBhZ2UgaXMgYWxsLXZpc2li bGUgYnV0IHRoZSBWTSBiaXQgaXMgbm90IHNldCwgd2UKLQkJICogZG9uJ3QgbmVlZCB0byBkaXJ0 eSB0aGUgaGVhcCBwYWdlLiAgSG93ZXZlciwgaWYgY2hlY2tzdW1zIGFyZQotCQkgKiBlbmFibGVk LCB3ZSBkbyBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBoZWFwIHBhZ2UgaXMgZGlydGllZAot CQkgKiBiZWZvcmUgcGFzc2luZyBpdCB0byB2aXNpYmlsaXR5bWFwX3NldCgpLCBiZWNhdXNlIGl0 IG1heSBiZSBsb2dnZWQuCi0JCSAqIEdpdmVuIHRoYXQgdGhpcyBzaXR1YXRpb24gc2hvdWxkIG9u bHkgaGFwcGVuIGluIHJhcmUgY2FzZXMgYWZ0ZXIgYQotCQkgKiBjcmFzaCwgaXQgaXMgbm90IHdv cnRoIG9wdGltaXppbmcuCi0JCSAqLwotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJTWFy a0J1ZmZlckRpcnR5KGJ1Zik7Ci0JCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldCh2YWNy ZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkJCSAgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJ CQkJCQkJICAgdm1idWZmZXIsIHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJ CSAgIGZsYWdzKTsKLQotCQkvKgotCQkgKiBJZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQg YWxsLXZpc2libGUgYW5kL29yIGFsbC1mcm96ZW4gaW4gdGhlCi0JCSAqIFZNLCBjb3VudCBpdCBh cyBuZXdseSBzZXQgZm9yIGxvZ2dpbmcuCi0JCSAqLwotCQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9PSAwKQotCQl7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNp YmxlX3BhZ2VzKys7Ci0JCQlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQotCQkJewotCQkJCXZhY3Jl bC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7Ci0JCQkJKnZtX3BhZ2VfZnJvemVuID0g dHJ1ZTsKLQkJCX0KLQkJfQotCQllbHNlIGlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBf QUxMX0ZST1pFTikgPT0gMCAmJgotCQkJCSBwcmVzdWx0LmFsbF9mcm96ZW4pCisJCXZhY3JlbC0+ dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKKwkJaWYgKChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJ QklMSVRZTUFQX0FMTF9GUk9aRU4pICE9IDApCiAJCXsKLQkJCXZhY3JlbC0+dm1fbmV3X2Zyb3pl bl9wYWdlcysrOworCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKIAkJ CSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CiAJCX0KIAl9Ci0KLQkvKgotCSAqIEFzIG9mIFBvc3Rn cmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYg dGhlCi0JICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxl IHRoYXQgdGhlIGJpdCBnb3QKLQkgKiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9i bG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11c3QgcmVjaGVjawotCSAqIHdpdGggYnVmZmVyIGxv Y2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KLQkgKi8KLQllbHNl IGlmIChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgIVBhZ2VJc0FsbFZpc2libGUocGFn ZSkgJiYKLQkJCSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXModmFjcmVsLT5yZWwsIGJsa25vLCAm dm1idWZmZXIpICE9IDApCi0JewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJS Q09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJIGVycm1zZygicGFnZSBpcyBub3QgbWFya2VkIGFs bC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0aW9uIFwiJXNc IiBwYWdlICV1IiwKLQkJCQkJCXZhY3JlbC0+cmVsbmFtZSwgYmxrbm8pKSk7Ci0KLQkJdmlzaWJp bGl0eW1hcF9jbGVhcih2YWNyZWwtPnJlbCwgYmxrbm8sIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lC SUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JfQotCi0JLyoKLQkgKiBJdCdzIHBvc3NpYmxlIGZvciB0 aGUgdmFsdWUgcmV0dXJuZWQgYnkKLQkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlv bklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90Ci0JICogd3JvbmcgZm9yIHVzIHRv IHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKLQkg KiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZl IHhtaW4gdmFsdWUKLQkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25S ZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKLQkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1l cyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCi0JICogc28gaWYg d2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0 aGF0IHdlCi0JICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxs eSBhcmUsIGFuZCB0aGUKLQkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCi0JICoK LQkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQ RF9BTExfVklTSUJMRSBzZXQsCi0JICogaG93ZXZlci4KLQkgKi8KLQllbHNlIGlmIChwcmVzdWx0 LmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQl7Ci0JCWVyZXBv cnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkg ZXJybXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZp c2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJCQkJdmFjcmVsLT5yZWxuYW1l LCBibGtubykpKTsKLQotCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwotCQlNYXJrQnVmZmVy RGlydHkoYnVmKTsKLQkJdmlzaWJpbGl0eW1hcF9jbGVhcih2YWNyZWwtPnJlbCwgYmxrbm8sIHZt YnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JfQotCi0JLyoKLQkg KiBJZiB0aGUgYWxsLXZpc2libGUgcGFnZSBpcyBhbGwtZnJvemVuIGJ1dCBub3QgbWFya2VkIGFz IHN1Y2ggeWV0LCBtYXJrCi0JICogaXQgYXMgYWxsLWZyb3plbi4KLQkgKi8KLQllbHNlIGlmIChh bGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfZnJvemVuICYmCi0JCQkg IVZNX0FMTF9GUk9aRU4odmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpKQorCWVsc2UgaWYg KChwcmVzdWx0Lm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYK KwkJCSAocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAw KQogCXsKLQkJdWludDgJCW9sZF92bWJpdHM7Ci0KLQkJLyoKLQkJICogQXZvaWQgcmVseWluZyBv biBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gYXMgYSBwcm94eSBmb3IgdGhlCi0JCSAqIHBh Z2UtbGV2ZWwgUERfQUxMX1ZJU0lCTEUgYml0IGJlaW5nIHNldCwgc2luY2UgaXQgbWlnaHQgaGF2 ZSBiZWNvbWUKLQkJICogc3RhbGUgLS0gZXZlbiB3aGVuIGFsbF92aXNpYmxlIGlzIHNldAotCQkg Ki8KLQkJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQotCQl7Ci0JCQlQYWdlU2V0QWxsVmlz aWJsZShwYWdlKTsKLQkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQl9Ci0KLQkJLyoKLQkJICog U2V0IHRoZSBwYWdlIGFsbC1mcm96ZW4gKGFuZCBhbGwtdmlzaWJsZSkgaW4gdGhlIFZNLgotCQkg KgotCQkgKiBXZSBjYW4gcGFzcyBJbnZhbGlkVHJhbnNhY3Rpb25JZCBhcyBvdXIgY3V0b2ZmX3hp ZCwgc2luY2UgYQotCQkgKiBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvIG1h a2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPCi0JCSAqIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFn ZSdzIHR1cGxlcyB3ZXJlIGZyb3plbi4KLQkJICovCi0JCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0JCW9sZF92bWJpdHMgPSB2aXNp YmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkJCSAgIEludmFs aWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJICAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklk LAotCQkJCQkJCQkJICAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCQkgICBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwotCi0JCS8qCi0JCSAqIFRoZSBwYWdlIHdhcyBsaWtl bHkgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgaW4gdGhlIFZNLiBIb3dldmVyLAotCQkgKiB0aGVy ZSBpcyBhIHNtYWxsIGNoYW5jZSB0aGF0IGl0IHdhcyBtb2RpZmllZCBzb21ldGltZSBiZXR3ZWVu Ci0JCSAqIHNldHRpbmcgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFuZCBjaGVja2luZyB0 aGUgdmlzaWJpbGl0eQotCQkgKiBkdXJpbmcgcHJ1bmluZy4gQ2hlY2sgdGhlIHJldHVybiB2YWx1 ZSBvZiBvbGRfdm1iaXRzIGFueXdheSB0bwotCQkgKiBlbnN1cmUgdGhlIHZpc2liaWxpdHkgbWFw IGNvdW50ZXJzIHVzZWQgZm9yIGxvZ2dpbmcgYXJlIGFjY3VyYXRlLgotCQkgKi8KLQkJaWYgKChv bGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCkKLQkJewotCQkJdmFj cmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwotCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9m cm96ZW5fcGFnZXMrKzsKLQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCX0KLQotCQkvKgot CQkgKiBXZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUgcGFnZSB3YXMgbm90IHNldCBhbGwtZnJv emVuIGluIHRoZSBWTQotCQkgKiBhYm92ZSwgc28gd2UgZG9uJ3QgbmVlZCB0byB0ZXN0IHRoZSB2 YWx1ZSBvZiBvbGRfdm1iaXRzLgotCQkgKi8KLQkJZWxzZQotCQl7Ci0JCQl2YWNyZWwtPnZtX25l d19mcm96ZW5fcGFnZXMrKzsKLQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCX0KKwkJQXNz ZXJ0KChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAw KTsKKwkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7CisJCSp2bV9wYWdlX2Zyb3plbiA9 IHRydWU7CiAJfQogCiAJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7CkBAIC0yOTUyLDYgKzI3NzEs NyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJl ciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJICB2bWZsYWdzLAogCQkJCQkJCQkgIGNv bmZsaWN0X3hpZCwKIAkJCQkJCQkJICBmYWxzZSwJLyogbm8gY2xlYW51cCBsb2NrIHJlcXVpcmVk ICovCisJCQkJCQkJCSAgKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpICE9IDAs CiAJCQkJCQkJCSAgUFJVTkVfVkFDVVVNX0NMRUFOVVAsCiAJCQkJCQkJCSAgTlVMTCwgMCwJLyog ZnJvemVuICovCiAJCQkJCQkJCSAgTlVMTCwgMCwJLyogcmVkaXJlY3RlZCAqLwpAQCAtMzYzMiwz MCArMzQ1Miw2IEBAIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpCiAJdmFj cmVsLT5wdnMgPSBOVUxMOwogfQogCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCi0vKgot ICogV3JhcHBlciBmb3IgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkgd2hpY2ggY2Fu IGJlIHVzZWQgZm9yIGNhbGxlcnMKLSAqIHRoYXQgZXhwZWN0IG5vIExQX0RFQUQgb24gdGhlIHBh Z2UuIEN1cnJlbnRseSBhc3NlcnQtb25seSwgYnV0IHRoZXJlIGlzIG5vCi0gKiByZWFzb24gbm90 IHRvIHVzZSBpdCBvdXRzaWRlIG9mIGFzc2VydHMuCi0gKi8KLXN0YXRpYyBib29sCi1oZWFwX3Bh Z2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJIFRyYW5z YWN0aW9uSWQgT2xkZXN0WG1pbiwKLQkJCQkJCSBib29sICphbGxfZnJvemVuLAotCQkJCQkJIFRy YW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCSBPZmZzZXROdW1iZXIg KmxvZ2dpbmdfb2ZmbnVtKQotewotCi0JcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlz aWJsZShyZWwsIGJ1ZiwKLQkJCQkJCQkJCQkgIE9sZGVzdFhtaW4sCi0JCQkJCQkJCQkJICBOVUxM LCAwLAotCQkJCQkJCQkJCSAgYWxsX2Zyb3plbiwKLQkJCQkJCQkJCQkgIHZpc2liaWxpdHlfY3V0 b2ZmX3hpZCwKLQkJCQkJCQkJCQkgIGxvZ2dpbmdfb2ZmbnVtKTsKLX0KLSNlbmRpZgotCiAvKgog ICogQ2hlY2sgd2hldGhlciB0aGUgaGVhcCBwYWdlIGluIGJ1ZiBpcyBhbGwtdmlzaWJsZSBleGNl cHQgZm9yIHRoZSBkZWFkCiAgKiB0dXBsZXMgcmVmZXJlbmNlZCBpbiB0aGUgZGVhZG9mZnNldHMg YXJyYXkuCkBAIC0zNjc4LDE1ICszNDc0LDEyIEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShS ZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAgKiAgLSAqbG9nZ2luZ19vZmZudW06IE9mZnNldE51 bWJlciBvZiBjdXJyZW50IHR1cGxlIGJlaW5nIHByb2Nlc3NlZDsKICAqICAgICB1c2VkIGJ5IHZh Y3V1bSdzIGVycm9yIGNhbGxiYWNrIHN5c3RlbS4KICAqCi0gKiBDYWxsZXJzIGxvb2tpbmcgdG8g dmVyaWZ5IHRoYXQgdGhlIHBhZ2UgaXMgYWxyZWFkeSBhbGwtdmlzaWJsZSBjYW4gY2FsbAotICog aGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkuCi0gKgogICogVGhpcyBsb2dpYyBpcyBjbG9zZWx5 IHJlbGF0ZWQgdG8gaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCgpLgogICog SWYgeW91IG1vZGlmeSB0aGlzIGZ1bmN0aW9uLCBlbnN1cmUgY29uc2lzdGVuY3kgd2l0aCB0aGF0 IGNvZGUuIEFuCiAgKiBhc3NlcnRpb24gY3Jvc3MtY2hlY2tzIHRoYXQgYm90aCByZW1haW4gaW4g YWdyZWVtZW50LiBEbyBub3QgaW50cm9kdWNlIG5ldwogICogc2lkZS1lZmZlY3RzLgogICovCi1z dGF0aWMgYm9vbAorYm9vbAogaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJ CQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCA2 MzJjNDMzMmE4Yy4uOTM3YjQ2YTc3ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQyLDYgKzQyLDcg QEAKIC8qICJvcHRpb25zIiBmbGFnIGJpdHMgZm9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl ICovCiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cJCSgxIDw8IDApCiAj ZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUJCQkJKDEgPDwgMSkKKyNkZWZpbmUgSEVBUF9Q QUdFX1BSVU5FX1VQREFURV9WSVMJCQkoMSA8PCAyKQogCiB0eXBlZGVmIHN0cnVjdCBCdWxrSW5z ZXJ0U3RhdGVEYXRhICpCdWxrSW5zZXJ0U3RhdGU7CiB0eXBlZGVmIHN0cnVjdCBHbG9iYWxWaXNT dGF0ZSBHbG9iYWxWaXNTdGF0ZTsKQEAgLTIzOCw2ICsyMzksMTYgQEAgdHlwZWRlZiBzdHJ1Y3Qg UHJ1bmVGcmVlemVQYXJhbXMKIAlSZWxhdGlvbglyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIGNvbnRh aW5pbmcgYnVmZmVyIHRvIGJlIHBydW5lZCAqLwogCUJ1ZmZlcgkJYnVmZmVyOwkJCS8qIGJ1ZmZl ciB0byBiZSBwcnVuZWQgKi8KIAorCS8qCisJICoKKwkgKiB2bWJ1ZmZlciBpcyB0aGUgYnVmZmVy IHRoYXQgbXVzdCBhbHJlYWR5IGNvbnRhaW4gY29udGFpbiB0aGUgcmVxdWlyZWQKKwkgKiBibG9j ayBvZiB0aGUgdmlzaWJpbGl0eSBtYXAgaWYgd2UgYXJlIHRvIHVwZGF0ZSBpdC4gYmxrX2tub3du X2F2IGlzIHRoZQorCSAqIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFwIGJsb2NrIGFzIG9m IHRoZSBsYXN0IGNhbGwgdG8KKwkgKiBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soKS4KKwkg Ki8KKwlCdWZmZXIJCXZtYnVmZmVyOworCWJvb2wJCWJsa19rbm93bl9hdjsKKwogCS8qCiAJICog VGhlIHJlYXNvbiBwcnVuaW5nIHdhcyBwZXJmb3JtZWQuICBJdCBpcyB1c2VkIHRvIHNldCB0aGUg V0FMIHJlY29yZAogCSAqIG9wY29kZSB3aGljaCBpcyB1c2VkIGZvciBkZWJ1Z2dpbmcgYW5kIGFu YWx5c2lzIHB1cnBvc2VzLgpAQCAtMjUwLDggKzI2MSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBQcnVu ZUZyZWV6ZVBhcmFtcwogCSAqIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cgaW5kaWNh dGVzIHRoYXQgZGVhZCBpdGVtcyBjYW4gYmUgc2V0CiAJICogTFBfVU5VU0VEIGR1cmluZyBwcnVu aW5nLgogCSAqCi0JICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBpbmRpY2F0ZXMgdGhhdCB3ZSB3 aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5kCi0JICogd2lsbCByZXR1cm4gJ2FsbF92aXNpYmxl JywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCisJICogSEVBUF9QQUdFX1BSVU5F X0ZSRUVaRSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcworCSAqCisJ ICogSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WSVMgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBzZXQg dGhlIHBhZ2UncyBzdGF0dXMKKwkgKiBpbiB0aGUgVk0uCiAJICovCiAJaW50CQkJb3B0aW9uczsK IApAQCAtMjg1LDE5ICsyOTgsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQK IAlpbnQJCQlyZWNlbnRseV9kZWFkX3R1cGxlczsKIAogCS8qCi0JICogYWxsX3Zpc2libGUgYW5k IGFsbF9mcm96ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuCi0J ICogYml0cyBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhpcyBwYWdlLCBh ZnRlciBwcnVuaW5nLgotCSAqCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBpcyB0aGUgbmV3ZXN0 IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuICBUaGUKLQkgKiBjYWxsZXIgY2FuIHVz ZSBpdCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIGJpdHMuICBJ dAotCSAqIGlzIG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMgKG5mcm96ZW4gPiAw KSwgYW5kIGFsbF9mcm96ZW4gaXMKLQkgKiB0cnVlLgorCSAqIG9sZF92bWJpdHMgYXJlIHRoZSBz dGF0ZSBvZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYml0cyBpbiB0aGUKKwkgKiB2 aXNpYmlsaXR5IG1hcCBiZWZvcmUgdXBkYXRpbmcgaXQgZHVyaW5nIHBoYXNlIEkgb2YgdmFjdXVt aW5nLgorCSAqIG5ld192bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aG9zZSBiaXRzIGFmdGVyIHBo YXNlIEkgb2YgdmFjdXVtaW5nLgogCSAqCi0JICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBI RUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LgorCSAqIFRoZXNlIGFyZSBvbmx5IHNldCBp ZiB0aGUgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WSVMgb3B0aW9uIGlzIHNldCBhbmQKKwkgKiB3 ZSBoYXZlIGF0dGVtcHRlZCB0byB1cGRhdGUgdGhlIFZNLgogCSAqLwotCWJvb2wJCWFsbF92aXNp YmxlOwotCWJvb2wJCWFsbF9mcm96ZW47Ci0JVHJhbnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jp em9uOworCXVpbnQ4CQluZXdfdm1iaXRzOworCXVpbnQ4CQlvbGRfdm1iaXRzOwogCiAJLyoKIAkg KiBXaGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBtYWtlcyByZWwgdHJ1bmNhdGlvbiB1bnNhZmUuICBU aGlzIGlzIHNldCB0bwpAQCAtNDI0LDYgKzQzMyw3IEBAIGV4dGVybiB2b2lkIGxvZ19oZWFwX3By dW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJ CQkgIEJ1ZmZlciB2bWJ1ZmZlciwgdWludDggdm1mbGFncywKIAkJCQkJCQkJCSAgVHJhbnNhY3Rp b25JZCBjb25mbGljdF94aWQsCiAJCQkJCQkJCQkgIGJvb2wgY2xlYW51cF9sb2NrLAorCQkJCQkJ CQkJICBib29sIHNldF9wZF9hbGxfdmlzLAogCQkJCQkJCQkJICBQcnVuZVJlYXNvbiByZWFzb24s CiAJCQkJCQkJCQkgIEhlYXBUdXBsZUZyZWV6ZSAqZnJvemVuLCBpbnQgbmZyb3plbiwKIAkJCQkJ CQkJCSAgT2Zmc2V0TnVtYmVyICpyZWRpcmVjdGVkLCBpbnQgbnJlZGlyZWN0ZWQsCkBAIC00MzMs NiArNDQzLDEzIEBAIGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRp b24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAvKiBpbiBoZWFwL3ZhY3V1bWxhenkuYyAqLwog ZXh0ZXJuIHZvaWQgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQljb25zdCBW YWN1dW1QYXJhbXMgcGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOworZXh0 ZXJuIGJvb2wgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZiwKKwkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJ CQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKKwkJCQkJCQkJCQkgICBpbnQgbmRlYWRv ZmZzZXRzLAorCQkJCQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCisJCQkJCQkJCQkJICAgVHJh bnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJCQkJCSAgIE9mZnNldE51 bWJlciAqbG9nZ2luZ19vZmZudW0pOwogCiAvKiBpbiBoZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMg Ki8KIGV4dGVybiBib29sIEhlYXBUdXBsZVNhdGlzZmllc1Zpc2liaWxpdHkoSGVhcFR1cGxlIGh0 dXAsIFNuYXBzaG90IHNuYXBzaG90LAotLSAKMi40My4wCgo= --000000000000fe23c60643d269a4 Content-Type: text/x-patch; charset="US-ASCII"; name="v20-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v20-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi3r7fdl5 RnJvbSA4NTE5ZmNkODY3Y2Q4M2Y0MTY1MTNlNjM1ZTA1OTFhZjZjODZhNzEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgMDYvMTJdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYyB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYwppbmRleCBhN2E5NzRiNjYzOS4uZmE3YmUwZjg1N2YgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE4NzIsOSArMTg3MiwxMiBAQCBsYXp5X3Nj YW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1i ZXIgYmxrbm8sCiAJCSAqLwogCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCiAJCXsKKwkJ CS8qIExvY2sgdm1idWZmZXIgYmVmb3JlIGVudGVyaW5nIGNyaXRpY2FsIHNlY3Rpb24gKi8KKwkJ CUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisKIAkJCVNUQVJU X0NSSVRfU0VDVElPTigpOwogCi0JCQkvKiBtYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGlu ZyBhIFdBTCByZWNvcmQgKi8KKwkJCS8qIE1hcmsgYnVmZmVyIGRpcnR5IGJlZm9yZSB3cml0aW5n IGFueSBXQUwgcmVjb3JkcyAqLwogCQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7CiAKIAkJCS8qCkBA IC0xODkxLDEzICsxODk0LDM0IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAq dmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAkJCQlsb2dfbmV3cGFnZV9i dWZmZXIoYnVmLCB0cnVlKTsKIAogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNp YmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkgIEludmFsaWRY TG9nUmVjUHRyLAotCQkJCQkJCSAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJ CQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJICBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4pOworCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25vLAorCQkJCQkJ CQkJIHZtYnVmZmVyLAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJ CQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkJCSB2YWNyZWwtPnJlbC0+ cmRfbG9jYXRvcik7CisKKwkJCS8qCisJCQkgKiBFbWl0IFdBTCBmb3Igc2V0dGluZyBQRF9BTExf VklTSUJMRSBvbiB0aGUgaGVhcCBwYWdlIGFuZAorCQkJICogc2V0dGluZyB0aGUgVk0uCisJCQkg Ki8KKwkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHZhY3JlbC0+cmVsKSkKKwkJCQlsb2dfaGVhcF9w cnVuZV9hbmRfZnJlZXplKHZhY3JlbC0+cmVsLCBidWYsCisJCQkJCQkJCQkJICB2bWJ1ZmZlciwK KwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCQkJCSAgVklT SUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJCQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQs IC8qIGNvbmZsaWN0IHhpZCAqLworCQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNsZWFudXAgbG9jayAq LworCQkJCQkJCQkJCSAgdHJ1ZSwgLyogc2V0X3BkX2FsbF92aXMgKi8KKwkJCQkJCQkJCQkgIFBS VU5FX1ZBQ1VVTV9TQ0FOLAkvKiByZWFzb24gKi8KKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJ CQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEws IDApOworCiAJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIs IEJVRkZFUl9MT0NLX1VOTE9DSyk7CisKIAkJCS8qIENvdW50IHRoZSBuZXdseSBhbGwtZnJvemVu IHBhZ2VzIGZvciBsb2dnaW5nICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7 CiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotLSAKMi40My4wCgo= --000000000000fe23c60643d269a4 Content-Type: text/x-patch; charset="US-ASCII"; name="v20-0007-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v20-0007-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi3r7jq06 RnJvbSAyZTBlOGU4MzY1ZTRhYmQwODY5NzhkYjcwODkwYmZmZDZlMzY3YjJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgMDcvMTJdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRlYW0u cnU+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMgICAgICB8ICAgNCAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICB8ICA1NCArLS0tLS0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICB8IDE1NSArKy0tLS0t LS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAg ICB8ICAxOCArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAg MTYgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTEyICst LS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAg fCAgMTAgLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEg LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggICAgICAgICB8ICAyOCArLS0tCiBzcmMvaW5j bHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oICAgICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCAgIHwgICA5IC0tCiBzcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCAgICAgICAgIHwgICAxIC0KIDEzIGZpbGVzIGNoYW5nZWQsIDU0IGluc2Vy dGlvbnMoKyksIDM3OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvY29tbW9uL2J1Zm1hc2suYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5j CmluZGV4IGJiMjYwY2ZmYTY4Li41ZjA3ZjE3OTQxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9i dWZtYXNrLmMKQEAgLTU2LDggKzU2LDggQEAgbWFza19wYWdlX2hpbnRfYml0cyhQYWdlIHBhZ2Up CiAKIAkvKgogCSAqIER1cmluZyByZXBsYXksIGlmIHRoZSBwYWdlIExTTiBoYXMgYWR2YW5jZWQg cGFzdCBvdXIgWExPRyByZWNvcmQncyBMU04sCi0JICogd2UgZG9uJ3QgbWFyayB0aGUgcGFnZSBh bGwtdmlzaWJsZS4gU2VlIGhlYXBfeGxvZ192aXNpYmxlKCkgZm9yCi0JICogZGV0YWlscy4KKwkg KiB3ZSBkb24ndCBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVhcF94bG9nX3BydW5l X2FuZF9mcmVlemUoKQorCSAqIGZvciBtb3JlIGRldGFpbHMuCiAJICovCiAJUGFnZUNsZWFyQWxs VmlzaWJsZShwYWdlKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNGIwYzQ5ZjRi YjAuLjJiZmYzN2UwM2I1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjUyNCwxMSAr MjUyNCwxMSBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJs ZVNsb3QgKipzbG90cywgaW50IG50dXBsZXMsCiAJCWVsc2UgaWYgKGFsbF9mcm96ZW5fc2V0KQog CQl7CiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0X3Zt Yml0cyhCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAotCQkJCQkJCQkJIHZtYnVmZmVyLAot CQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJIFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTiwKLQkJCQkJCQkJCSByZWxhdGlvbi0+cmRfbG9jYXRvcik7CisJCQl2 aXNpYmlsaXR5bWFwX3NldChCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAorCQkJCQkJCSAg dm1idWZmZXIsCisJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkgIHJlbGF0aW9uLT5yZF9sb2NhdG9y KTsKIAkJfQogCiAJCS8qCkBAIC04Nzk3LDUwICs4Nzk3LDYgQEAgYm90dG9tdXBfc29ydF9hbmRf c2hyaW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogCXJldHVybiBuYmxvY2tzZmF2b3Jh YmxlOwogfQogCi0vKgotICogUGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdmlzaWJsZSBv cGVyYXRpb24uICAnYmxvY2snIGlzIHRoZSBibG9jawotICogYmVpbmcgbWFya2VkIGFsbC12aXNp YmxlLCBhbmQgdm1fYnVmZmVyIGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUKLSAqIGNvcnJl c3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgYmxvY2suICBCb3RoIHNob3VsZCBoYXZlIGFscmVhZHkg YmVlbiBtb2RpZmllZAotICogYW5kIGRpcnRpZWQuCi0gKgotICogc25hcHNob3RDb25mbGljdEhv cml6b24gY29tZXMgZnJvbSB0aGUgbGFyZ2VzdCB4bWluIG9uIHRoZSBwYWdlIGJlaW5nCi0gKiBt YXJrZWQgYWxsLXZpc2libGUuICBSRURPIHJvdXRpbmUgdXNlcyBpdCB0byBnZW5lcmF0ZSByZWNv dmVyeSBjb25mbGljdHMuCi0gKgotICogSWYgY2hlY2tzdW1zIG9yIHdhbF9sb2dfaGludHMgYXJl IGVuYWJsZWQsIHdlIG1heSBhbHNvIGdlbmVyYXRlIGEgZnVsbC1wYWdlCi0gKiBpbWFnZSBvZiBo ZWFwX2J1ZmZlci4gT3RoZXJ3aXNlLCB3ZSBvcHRpbWl6ZSBhd2F5IHRoZSBGUEkgKGJ5IHNwZWNp ZnlpbmcKLSAqIFJFR0JVRl9OT19JTUFHRSBmb3IgdGhlIGhlYXAgYnVmZmVyKSwgaW4gd2hpY2gg Y2FzZSB0aGUgY2FsbGVyIHNob3VsZCAqbm90KgotICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBM U04uCi0gKi8KLVhMb2dSZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZm ZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZmZXIsCi0JCQkJIFRyYW5zYWN0aW9uSWQgc25h cHNob3RDb25mbGljdEhvcml6b24sIHVpbnQ4IHZtZmxhZ3MpCi17Ci0JeGxfaGVhcF92aXNpYmxl IHhscmVjOwotCVhMb2dSZWNQdHIJcmVjcHRyOwotCXVpbnQ4CQlmbGFnczsKLQotCUFzc2VydChC dWZmZXJJc1ZhbGlkKGhlYXBfYnVmZmVyKSk7Ci0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQodm1fYnVm ZmVyKSk7Ci0KLQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uOwotCXhscmVjLmZsYWdzID0gdm1mbGFnczsKLQlpZiAoUmVsYXRpb25Jc0FjY2Vz c2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpKQotCQl4bHJlYy5mbGFncyB8PSBWSVNJQklMSVRZ TUFQX1hMT0dfQ0FUQUxPR19SRUw7Ci0JWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVy RGF0YSgmeGxyZWMsIFNpemVPZkhlYXBWaXNpYmxlKTsKLQotCVhMb2dSZWdpc3RlckJ1ZmZlcigw LCB2bV9idWZmZXIsIDApOwotCi0JZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQ7Ci0JaWYgKCFYTG9n SGludEJpdElzTmVlZGVkKCkpCi0JCWZsYWdzIHw9IFJFR0JVRl9OT19JTUFHRTsKLQlYTG9nUmVn aXN0ZXJCdWZmZXIoMSwgaGVhcF9idWZmZXIsIGZsYWdzKTsKLQotCXJlY3B0ciA9IFhMb2dJbnNl cnQoUk1fSEVBUDJfSUQsIFhMT0dfSEVBUDJfVklTSUJMRSk7Ci0KLQlyZXR1cm4gcmVjcHRyOwot fQotCiAvKgogICogUGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdXBkYXRlIG9wZXJhdGlv bi4gIENhbGxlciBtdXN0IGFscmVhZHkKICAqIGhhdmUgbW9kaWZpZWQgdGhlIGJ1ZmZlcihzKSBh bmQgbWFya2VkIHRoZW0gZGlydHkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpp bmRleCAyYWY3MjQ0NTFjMy4uNWFiNDZlOGJmOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwpAQCAtMjUxLDcgKzI1MSw3IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJ bml0KHZtcGFnZSwgQkxDS1NaLCAwKTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxr bm8sIHZtYnVmZmVyLCB2bWZsYWdzLCBybG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBfc2V0KGJs a25vLCB2bWJ1ZmZlciwgdm1mbGFncywgcmxvY2F0b3IpOwogCiAJCUFzc2VydChCdWZmZXJJc0Rp cnR5KHZtYnVmZmVyKSk7CiAJCVBhZ2VTZXRMU04odm1wYWdlLCBsc24pOwpAQCAtMjY0LDE0MiAr MjY0LDYgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJWExvZ1JlY29yZFBhZ2VXaXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgZnJlZXNwYWNl KTsKIH0KIAotLyoKLSAqIFJlcGxheSBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jkcy4KLSAqCi0g KiBUaGUgY3JpdGljYWwgaW50ZWdyaXR5IHJlcXVpcmVtZW50IGhlcmUgaXMgdGhhdCB3ZSBtdXN0 IG5ldmVyIGVuZCB1cCB3aXRoCi0gKiBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgdmlzaWJpbGl0eSBt YXAgYml0IGlzIHNldCwgYW5kIHRoZSBwYWdlLWxldmVsCi0gKiBQRF9BTExfVklTSUJMRSBiaXQg aXMgY2xlYXIuICBJZiB0aGF0IHdlcmUgdG8gb2NjdXIsIHRoZW4gYSBzdWJzZXF1ZW50Ci0gKiBw YWdlIG1vZGlmaWNhdGlvbiB3b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSB2aXNpYmlsaXR5IG1hcCBi aXQuCi0gKi8KLXN0YXRpYyB2b2lkCi1oZWFwX3hsb2dfdmlzaWJsZShYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKLXsKLQlYTG9nUmVjUHRyCWxzbiA9IHJlY29yZC0+RW5kUmVjUHRyOwotCXhsX2hl YXBfdmlzaWJsZSAqeGxyZWMgPSAoeGxfaGVhcF92aXNpYmxlICopIFhMb2dSZWNHZXREYXRhKHJl Y29yZCk7Ci0JQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7Ci0JQnVmZmVyCQlidWZm ZXI7Ci0JUGFnZQkJcGFnZTsKLQlSZWxGaWxlTG9jYXRvciBybG9jYXRvcjsKLQlCbG9ja051bWJl ciBibGtubzsKLQlYTG9nUmVkb0FjdGlvbiBhY3Rpb247Ci0KLQlBc3NlcnQoKHhscmVjLT5mbGFn cyAmIFZJU0lCSUxJVFlNQVBfWExPR19WQUxJRF9CSVRTKSA9PSB4bHJlYy0+ZmxhZ3MpOwotCi0J WExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMSwgJnJsb2NhdG9yLCBOVUxMLCAmYmxrbm8pOwot Ci0JLyoKLQkgKiBJZiB0aGVyZSBhcmUgYW55IEhvdCBTdGFuZGJ5IHRyYW5zYWN0aW9ucyBydW5u aW5nIHRoYXQgaGF2ZSBhbiB4bWluCi0JICogaG9yaXpvbiBvbGQgZW5vdWdoIHRoYXQgdGhpcyBw YWdlIGlzbid0IGFsbC12aXNpYmxlIGZvciB0aGVtLCB0aGV5Ci0JICogbWlnaHQgaW5jb3JyZWN0 bHkgZGVjaWRlIHRoYXQgYW4gaW5kZXgtb25seSBzY2FuIGNhbiBza2lwIGEgaGVhcCBmZXRjaC4K LQkgKgotCSAqIE5COiBJdCBtaWdodCBiZSBiZXR0ZXIgdG8gdGhyb3cgc29tZSBraW5kIG9mICJz b2Z0IiBjb25mbGljdCBoZXJlIHRoYXQKLQkgKiBmb3JjZXMgYW55IGluZGV4LW9ubHkgc2NhbiB0 aGF0IGlzIGluIGZsaWdodCB0byBwZXJmb3JtIGhlYXAgZmV0Y2hlcywKLQkgKiByYXRoZXIgdGhh biBraWxsaW5nIHRoZSB0cmFuc2FjdGlvbiBvdXRyaWdodC4KLQkgKi8KLQlpZiAoSW5Ib3RTdGFu ZGJ5KQotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNo b3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCQkJCXhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlN QVBfWExPR19DQVRBTE9HX1JFTCwKLQkJCQkJCQkJCQkJcmxvY2F0b3IpOwotCi0JLyoKLQkgKiBS ZWFkIHRoZSBoZWFwIHBhZ2UsIGlmIGl0IHN0aWxsIGV4aXN0cy4gSWYgdGhlIGhlYXAgZmlsZSBo YXMgZHJvcHBlZCBvcgotCSAqIHRydW5jYXRlZCBsYXRlciBpbiByZWNvdmVyeSwgd2UgZG9uJ3Qg bmVlZCB0byB1cGRhdGUgdGhlIHBhZ2UsIGJ1dCB3ZSdkCi0JICogYmV0dGVyIHN0aWxsIHVwZGF0 ZSB0aGUgdmlzaWJpbGl0eSBtYXAuCi0JICovCi0JYWN0aW9uID0gWExvZ1JlYWRCdWZmZXJGb3JS ZWRvKHJlY29yZCwgMSwgJmJ1ZmZlcik7Ci0JaWYgKGFjdGlvbiA9PSBCTEtfTkVFRFNfUkVETykK LQl7Ci0JCS8qCi0JCSAqIFdlIGRvbid0IGJ1bXAgdGhlIExTTiBvZiB0aGUgaGVhcCBwYWdlIHdo ZW4gc2V0dGluZyB0aGUgdmlzaWJpbGl0eQotCQkgKiBtYXAgYml0ICh1bmxlc3MgY2hlY2tzdW1z IG9yIHdhbF9oaW50X2JpdHMgaXMgZW5hYmxlZCwgaW4gd2hpY2gKLQkJICogY2FzZSB3ZSBtdXN0 KS4gVGhpcyBleHBvc2VzIHVzIHRvIHRvcm4gcGFnZSBoYXphcmRzLCBidXQgc2luY2UKLQkJICog d2UncmUgbm90IGluc3BlY3RpbmcgdGhlIGV4aXN0aW5nIHBhZ2UgY29udGVudHMgaW4gYW55IHdh eSwgd2UKLQkJICogZG9uJ3QgY2FyZS4KLQkJICovCi0JCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1 ZmZlcik7Ci0KLQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0KLQkJaWYgKFhMb2dIaW50Qml0 SXNOZWVkZWQoKSkKLQkJCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsKLQotCQlNYXJrQnVmZmVyRGly dHkoYnVmZmVyKTsKLQl9Ci0JZWxzZSBpZiAoYWN0aW9uID09IEJMS19SRVNUT1JFRCkKLQl7Ci0J CS8qCi0JCSAqIElmIGhlYXAgYmxvY2sgd2FzIGJhY2tlZCB1cCwgd2UgYWxyZWFkeSByZXN0b3Jl ZCBpdCBhbmQgdGhlcmUncwotCQkgKiBub3RoaW5nIG1vcmUgdG8gZG8uIChUaGlzIGNhbiBvbmx5 IGhhcHBlbiB3aXRoIGNoZWNrc3VtcyBvcgotCQkgKiB3YWxfbG9nX2hpbnRzIGVuYWJsZWQuKQot CQkgKi8KLQl9Ci0KLQlpZiAoQnVmZmVySXNWYWxpZChidWZmZXIpKQotCXsKLQkJU2l6ZQkJc3Bh Y2UgPSBQYWdlR2V0RnJlZVNwYWNlKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSk7Ci0KLQkJVW5sb2Nr UmVsZWFzZUJ1ZmZlcihidWZmZXIpOwotCi0JCS8qCi0JCSAqIFNpbmNlIEZTTSBpcyBub3QgV0FM LWxvZ2dlZCBhbmQgb25seSB1cGRhdGVkIGhldXJpc3RpY2FsbHksIGl0Ci0JCSAqIGVhc2lseSBi ZWNvbWVzIHN0YWxlIGluIHN0YW5kYnlzLiAgSWYgdGhlIHN0YW5kYnkgaXMgbGF0ZXIgcHJvbW90 ZWQKLQkJICogYW5kIHJ1bnMgVkFDVVVNLCBpdCB3aWxsIHNraXAgdXBkYXRpbmcgaW5kaXZpZHVh bCBmcmVlIHNwYWNlCi0JCSAqIGZpZ3VyZXMgZm9yIHBhZ2VzIHRoYXQgYmVjYW1lIGFsbC12aXNp YmxlIChvciBhbGwtZnJvemVuLCBkZXBlbmRpbmcKLQkJICogb24gdGhlIHZhY3V1bSBtb2RlLCkg d2hpY2ggaXMgdHJvdWJsZXNvbWUgd2hlbiBGcmVlU3BhY2VNYXBWYWN1dW0KLQkJICogcHJvcGFn YXRlcyB0b28gb3B0aW1pc3RpYyBmcmVlIHNwYWNlIHZhbHVlcyB0byB1cHBlciBGU00gbGF5ZXJz OwotCQkgKiBsYXRlciBpbnNlcnRlcnMgdHJ5IHRvIHVzZSBzdWNoIHBhZ2VzIG9ubHkgdG8gZmlu ZCBvdXQgdGhhdCB0aGV5Ci0JCSAqIGFyZSB1bnVzYWJsZS4gIFRoaXMgY2FuIGNhdXNlIGxvbmcg c3RhbGxzIHdoZW4gdGhlcmUgYXJlIG1hbnkgc3VjaAotCQkgKiBwYWdlcy4KLQkJICoKLQkJICog Rm9yZXN0YWxsIHRob3NlIHByb2JsZW1zIGJ5IHVwZGF0aW5nIEZTTSdzIGlkZWEgYWJvdXQgYSBw YWdlIHRoYXQKLQkJICogaXMgYmVjb21pbmcgYWxsLXZpc2libGUgb3IgYWxsLWZyb3plbi4KLQkJ ICoKLQkJICogRG8gdGhpcyByZWdhcmRsZXNzIG9mIGEgZnVsbC1wYWdlIGltYWdlIGJlaW5nIGFw cGxpZWQsIHNpbmNlIHRoZQotCQkgKiBGU00gZGF0YSBpcyBub3QgaW4gdGhlIHBhZ2UgYW55d2F5 LgotCQkgKi8KLQkJaWYgKHhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykK LQkJCVhMb2dSZWNvcmRQYWdlV2l0aEZyZWVTcGFjZShybG9jYXRvciwgYmxrbm8sIHNwYWNlKTsK LQl9Ci0KLQkvKgotCSAqIEV2ZW4gaWYgd2Ugc2tpcHBlZCB0aGUgaGVhcCBwYWdlIHVwZGF0ZSBk dWUgdG8gdGhlIExTTiBpbnRlcmxvY2ssIGl0J3MKLQkgKiBzdGlsbCBzYWZlIHRvIHVwZGF0ZSB0 aGUgdmlzaWJpbGl0eSBtYXAuICBBbnkgV0FMIHJlY29yZCB0aGF0IGNsZWFycwotCSAqIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQgZG9lcyBzbyBiZWZvcmUgY2hlY2tpbmcgdGhlIHBhZ2UgTFNOLCBz byBhbnkKLQkgKiBiaXRzIHRoYXQgbmVlZCB0byBiZSBjbGVhcmVkIHdpbGwgc3RpbGwgYmUgY2xl YXJlZC4KLQkgKi8KLQlpZiAoWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAw LCBSQk1fWkVST19PTl9FUlJPUiwgZmFsc2UsCi0JCQkJCQkJCQkgICZ2bWJ1ZmZlcikgPT0gQkxL X05FRURTX1JFRE8pCi0JewotCQlQYWdlCQl2bXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtYnVmZmVy KTsKLQkJUmVsYXRpb24JcmVsbjsKLQkJdWludDgJCXZtYml0czsKLQotCQkvKiBpbml0aWFsaXpl IHRoZSBwYWdlIGlmIGl0IHdhcyByZWFkIGFzIHplcm9zICovCi0JCWlmIChQYWdlSXNOZXcodm1w YWdlKSkKLQkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAwKTsKLQotCQkvKiByZW1vdmUgVklT SUJJTElUWU1BUF9YTE9HXyogKi8KLQkJdm1iaXRzID0geGxyZWMtPmZsYWdzICYgVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTOwotCi0JCS8qCi0JCSAqIFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVu ZGVkIGxvY2tlZCB0aGUgYnVmZmVyLiBCdXQKLQkJICogdmlzaWJpbGl0eW1hcF9zZXQgd2lsbCBo YW5kbGUgbG9ja2luZyBpdHNlbGYuCi0JCSAqLwotCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZG RVJfTE9DS19VTkxPQ0spOwotCi0JCXJlbG4gPSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShybG9j YXRvcik7Ci0KLQkJdmlzaWJpbGl0eW1hcF9zZXQocmVsbiwgYmxrbm8sIEludmFsaWRCdWZmZXIs IGxzbiwgdm1idWZmZXIsCi0JCQkJCQkgIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwg dm1iaXRzKTsKLQotCQlSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKLQkJRnJlZUZha2VSZWxjYWNo ZUVudHJ5KHJlbG4pOwotCX0KLQllbHNlIGlmIChCdWZmZXJJc1ZhbGlkKHZtYnVmZmVyKSkKLQkJ VW5sb2NrUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7Ci19Ci0KIC8qCiAgKiBHaXZlbiBhbiAiaW5m b2JpdHMiIGZpZWxkIGZyb20gYW4gWExvZyByZWNvcmQsIHNldCB0aGUgY29ycmVjdCBiaXRzIGlu IHRoZQogICogZ2l2ZW4gaW5mb21hc2sgYW5kIGluZm9tYXNrMiBmb3IgdGhlIHR1cGxlIHRvdWNo ZWQgYnkgdGhlIHJlY29yZC4KQEAgLTc3Nyw4ICs2NDEsOCBAQCBoZWFwX3hsb2dfbXVsdGlfaW5z ZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqCiAJICogRHVyaW5nIHJlY292ZXJ5LCBo b3dldmVyLCBubyBjb25jdXJyZW50IHdyaXRlcnMgZXhpc3QuIFRoZXJlZm9yZSwKIAkgKiB1cGRh dGluZyB0aGUgVk0gd2l0aG91dCBob2xkaW5nIHRoZSBoZWFwIHBhZ2UgbG9jayBpcyBzYWZlIGVu b3VnaC4gVGhpcwotCSAqIHNhbWUgYXBwcm9hY2ggaXMgdGFrZW4gd2hlbiByZXBsYXlpbmcgeGxf aGVhcF92aXNpYmxlIHJlY29yZHMgKHNlZQotCSAqIGhlYXBfeGxvZ192aXNpYmxlKCkpLgorCSAq IHNhbWUgYXBwcm9hY2ggaXMgdGFrZW4gd2hlbiByZXBsYXlpbmcgWExPR19IRUFQMl9QUlVORSog cmVjb3JkcyAoc2VlCisJICogaGVhcF94bG9nX3BydW5lX2FuZF9mcmVlemUoKSkuCiAJICovCiAJ aWYgKCh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9GUk9aRU5fU0VUKSAmJgogCQlYTG9n UmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDEsIFJCTV9aRVJPX09OX0VSUk9SLCBm YWxzZSwKQEAgLTc5MCwxMSArNjU0LDExIEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJbml0 KHZtcGFnZSwgQkxDS1NaLCAwKTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8s Ci0JCQkJCQkJCSB2bWJ1ZmZlciwKLQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUg fAotCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAotCQkJCQkJCQkgcmxvY2F0b3Ip OworCQl2aXNpYmlsaXR5bWFwX3NldChibGtubywKKwkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU4sCisJCQkJCQkgIHJsb2NhdG9yKTsKIAogCQlBc3NlcnQoQnVmZmVySXNEaXJ0eSh2bWJ1 ZmZlcikpOwogCQlQYWdlU2V0TFNOKHZtcGFnZSwgbHNuKTsKQEAgLTEzNzUsOSArMTIzOSw2IEBA IGhlYXAyX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWNhc2UgWExPR19IRUFQMl9Q UlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWhlYXBfeGxvZ19wcnVuZV9mcmVlemUocmVjb3JkKTsK IAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWhlYXBfeGxvZ192aXNp YmxlKHJlY29yZCk7Ci0JCQlicmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoK IAkJCWhlYXBfeGxvZ19tdWx0aV9pbnNlcnQocmVjb3JkKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA1NjY3ZGY4NmJhZS4uZDZiMjJiN2IxYzUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xMTEwLDkgKzExMTAsOSBAQCBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQl7CiAJCQlB c3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CiAKLQkJCW9sZF92bWJpdHMgPSB2aXNpYmls aXR5bWFwX3NldF92bWJpdHMoYmxvY2tubywKLQkJCQkJCQkJCQkJCSAgdm1idWZmZXIsIG5ld192 bWJpdHMsCi0JCQkJCQkJCQkJCQkgIHBhcmFtcy0+cmVsYXRpb24tPnJkX2xvY2F0b3IpOworCQkJ b2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KGJsb2Nrbm8sCisJCQkJCQkJCQkJICAgdm1i dWZmZXIsIG5ld192bWJpdHMsCisJCQkJCQkJCQkJICAgcGFyYW1zLT5yZWxhdGlvbi0+cmRfbG9j YXRvcik7CiAJCQlpZiAob2xkX3ZtYml0cyA9PSBuZXdfdm1iaXRzKQogCQkJewogCQkJCUxvY2tC dWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CkBAIC0yMzk0LDE0ICsyMzk0LDE4 IEBAIGdldF9jb25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsIGJvb2wg ZG9fc2V0X3ZtLAogICoKICAqIFRoaXMgaXMgdXNlZCBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgcGFn ZSBtYWludGVuYW5jZSBvcGVyYXRpb25zOgogICoKLSAqIC0gUGFnZSBwcnVuaW5nLCBpbiBWQUNV VU0ncyAxc3QgcGFzcyBvciBvbiBhY2Nlc3M6IFNvbWUgaXRlbXMgYXJlCisgKiAtIFBhZ2UgcHJ1 bmluZywgaW4gdmFjdXVtIHBoYXNlIEkgb3Igb24tYWNjZXNzOiBTb21lIGl0ZW1zIGFyZQogICog ICByZWRpcmVjdGVkLCBzb21lIG1hcmtlZCBkZWFkLCBhbmQgc29tZSByZW1vdmVkIGFsdG9nZXRo ZXIuCiAgKgotICogLSBGcmVlemluZzogSXRlbXMgYXJlIG1hcmtlZCBhcyAnZnJvemVuJy4KKyAq IC0gRnJlZXppbmc6IER1cmluZyB2YWN1dW0gcGhhc2UgSSwgaXRlbXMgYXJlIG1hcmtlZCBhcyAn ZnJvemVuJwogICoKLSAqIC0gVmFjdXVtLCAybmQgcGFzczogSXRlbXMgdGhhdCBhcmUgYWxyZWFk eSBMUF9ERUFEIGFyZSBtYXJrZWQgYXMgdW51c2VkLgorICogLSBSZWFwaW5nOiBEdXJpbmcgdmFj dXVtIHBoYXNlIElJSSwgaXRlbXMgdGhhdCBhcmUgYWxyZWFkeSBMUF9ERUFEIGFyZQorICogICBt YXJrZWQgYXMgdW51c2VkLgogICoKLSAqIFRoZXkgaGF2ZSBlbm91Z2ggY29tbW9uYWxpdGllcyB0 aGF0IHdlIHVzZSBhIHNpbmdsZSBXQUwgcmVjb3JkIGZvciB0aGVtCisgKiAtIFZNIHVwZGF0ZXM6 IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJLCB0aGUgaGVhcCBwYWdlIG1heSBiZSBtYXJr ZWQKKyAqICAgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4uCisgKgorICogVGhlc2UgY2hhbmdl cyBhbGwgaGFwcGVuIHRvZ2V0aGVyLCBzbyB3ZSB1c2UgYSBzaW5nbGUgV0FMIHJlY29yZCBmb3Ig dGhlbQogICogYWxsLgogICoKICAqIElmIHJlcGxheWluZyB0aGUgcmVjb3JkIHJlcXVpcmVzIGEg Y2xlYW51cCBsb2NrLCBwYXNzIGNsZWFudXBfbG9jayA9IHRydWUuCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKaW5kZXggZmE3YmUwZjg1N2YuLmZkNjhkZmNmY2UyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xODk0LDExICsxODk0LDExIEBAIGxhenlfc2Nh bl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJl ciBibGtubywKIAkJCQlsb2dfbmV3cGFnZV9idWZmZXIoYnVmLCB0cnVlKTsKIAogCQkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0J CQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8 Ci0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAotCQkJCQkJCQkJIHZhY3JlbC0+ cmVsLT5yZF9sb2NhdG9yKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLAorCQkJCQkJCSAg dm1idWZmZXIsCisJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkgIHZhY3JlbC0+cmVsLT5yZF9sb2Nh dG9yKTsKIAogCQkJLyoKIAkJCSAqIEVtaXQgV0FMIGZvciBzZXR0aW5nIFBEX0FMTF9WSVNJQkxF IG9uIHRoZSBoZWFwIHBhZ2UgYW5kCkBAIC0yNzc2LDkgKzI3NzYsOSBAQCBsYXp5X3ZhY3V1bV9o ZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1 ZmZlciwKIAkJICogc2V0IFBEX0FMTF9WSVNJQkxFLgogCQkgKi8KIAkJUGFnZVNldEFsbFZpc2li bGUocGFnZSk7Ci0JCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJIHZt YnVmZmVyLCB2bWZsYWdzLAotCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCQl2 aXNpYmlsaXR5bWFwX3NldChibGtubywKKwkJCQkJCSAgdm1idWZmZXIsIHZtZmxhZ3MsCisJCQkJ CQkgIHZhY3JlbC0+cmVsLT5yZF9sb2NhdG9yKTsKIAkJY29uZmxpY3RfeGlkID0gdmlzaWJpbGl0 eV9jdXRvZmZfeGlkOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5j CmluZGV4IGQxNDU4OGU5MmFlLi43OTk3ZTkyNjg3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3Zpc2liaWxpdHltYXAuYwpAQCAtMTQsOCArMTQsNyBAQAogICoJCXZpc2liaWxpdHltYXBfY2xl YXIgIC0gY2xlYXIgYml0cyBmb3Igb25lIHBhZ2UgaW4gdGhlIHZpc2liaWxpdHkgbWFwCiAgKgkJ dmlzaWJpbGl0eW1hcF9waW4JIC0gcGluIGEgbWFwIHBhZ2UgZm9yIHNldHRpbmcgYSBiaXQKICAq CQl2aXNpYmlsaXR5bWFwX3Bpbl9vayAtIGNoZWNrIHdoZXRoZXIgY29ycmVjdCBtYXAgcGFnZSBp cyBhbHJlYWR5IHBpbm5lZAotICoJCXZpc2liaWxpdHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4g YSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlIGFuZCBsb2cKLSAqCQl2aXNpYmlsaXR5bWFwX3NldF92 bWJpdHMgLSBzZXQgYml0KHMpIGluIGEgcGlubmVkIHBhZ2UKKyAqCQl2aXNpYmlsaXR5bWFwX3Nl dAkgLSBzZXQgYml0KHMpIGluIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQogICoJCXZpc2liaWxp dHltYXBfZ2V0X3N0YXR1cyAtIGdldCBzdGF0dXMgb2YgYml0cwogICoJCXZpc2liaWxpdHltYXBf Y291bnQgIC0gY291bnQgbnVtYmVyIG9mIGJpdHMgc2V0IGluIHZpc2liaWxpdHkgbWFwCiAgKgkJ dmlzaWJpbGl0eW1hcF9wcmVwYXJlX3RydW5jYXRlIC0KQEAgLTIyMCwxMDkgKzIxOSw2IEBAIHZp c2liaWxpdHltYXBfcGluX29rKEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1ZikKIAly ZXR1cm4gQnVmZmVySXNWYWxpZCh2bWJ1ZikgJiYgQnVmZmVyR2V0QmxvY2tOdW1iZXIodm1idWYp ID09IG1hcEJsb2NrOwogfQogCi0vKgotICoJdmlzaWJpbGl0eW1hcF9zZXQgLSBzZXQgYml0KHMp IG9uIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQotICoKLSAqIHJlY3B0ciBpcyB0aGUgTFNOIG9m IHRoZSBYTE9HIHJlY29yZCB3ZSdyZSByZXBsYXlpbmcsIGlmIHdlJ3JlIGluIHJlY292ZXJ5LAot ICogb3IgSW52YWxpZFhMb2dSZWNQdHIgaW4gbm9ybWFsIHJ1bm5pbmcuICBUaGUgVk0gcGFnZSBM U04gaXMgYWR2YW5jZWQgdG8gdGhlCi0gKiBvbmUgcHJvdmlkZWQ7IGluIG5vcm1hbCBydW5uaW5n LCB3ZSBnZW5lcmF0ZSBhIG5ldyBYTE9HIHJlY29yZCBhbmQgc2V0IHRoZQotICogcGFnZSBMU04g dG8gdGhhdCB2YWx1ZSAodGhvdWdoIHRoZSBoZWFwIHBhZ2UncyBMU04gbWF5ICpub3QqIGJlIHVw ZGF0ZWQ7Ci0gKiBzZWUgYmVsb3cpLiAgY3V0b2ZmX3hpZCBpcyB0aGUgbGFyZ2VzdCB4bWluIG9u IHRoZSBwYWdlIGJlaW5nIG1hcmtlZAotICogYWxsLXZpc2libGU7IGl0IGlzIG5lZWRlZCBmb3Ig SG90IFN0YW5kYnksIGFuZCBjYW4gYmUgSW52YWxpZFRyYW5zYWN0aW9uSWQKLSAqIGlmIHRoZSBw YWdlIGNvbnRhaW5zIG5vIHR1cGxlcy4gIEl0IGNhbiBhbHNvIGJlIHNldCB0byBJbnZhbGlkVHJh bnNhY3Rpb25JZAotICogd2hlbiBhIHBhZ2UgdGhhdCBpcyBhbHJlYWR5IGFsbC12aXNpYmxlIGlz IGJlaW5nIG1hcmtlZCBhbGwtZnJvemVuLgotICoKLSAqIENhbGxlciBpcyBleHBlY3RlZCB0byBz ZXQgdGhlIGhlYXAgcGFnZSdzIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWZvcmUgY2FsbGluZwotICog dGhpcyBmdW5jdGlvbi4gRXhjZXB0IGluIHJlY292ZXJ5LCBjYWxsZXIgc2hvdWxkIGFsc28gcGFz cyB0aGUgaGVhcAotICogYnVmZmVyLiBXaGVuIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCBhbmQgd2Un cmUgbm90IGluIHJlY292ZXJ5LCB3ZSBtdXN0IGFkZAotICogdGhlIGhlYXAgYnVmZmVyIHRvIHRo ZSBXQUwgY2hhaW4gdG8gcHJvdGVjdCBpdCBmcm9tIGJlaW5nIHRvcm4uCi0gKgotICogWW91IG11 c3QgcGFzcyBhIGJ1ZmZlciBjb250YWluaW5nIHRoZSBjb3JyZWN0IG1hcCBwYWdlIHRvIHRoaXMg ZnVuY3Rpb24uCi0gKiBDYWxsIHZpc2liaWxpdHltYXBfcGluIGZpcnN0IHRvIHBpbiB0aGUgcmln aHQgb25lLiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgZG8KLSAqIGFueSBJL08uCi0gKgotICogUmV0 dXJucyB0aGUgc3RhdGUgb2YgdGhlIHBhZ2UncyBWTSBiaXRzIGJlZm9yZSBzZXR0aW5nIGZsYWdz LgotICovCi11aW50OAotdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKLQkJCQkgIFhMb2dSZWNQdHIgcmVjcHRyLCBCdWZm ZXIgdm1CdWYsIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkgIHVpbnQ4IGZsYWdzKQot ewotCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxrKTsK LQl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7Ci0JdWludDgJ CW1hcE9mZnNldCA9IEhFQVBCTEtfVE9fT0ZGU0VUKGhlYXBCbGspOwotCVBhZ2UJCXBhZ2U7Ci0J dWludDgJICAgKm1hcDsKLQl1aW50OAkJc3RhdHVzOwotCi0jaWZkZWYgVFJBQ0VfVklTSUJJTElU WU1BUAotCWVsb2coREVCVUcxLCAidm1fc2V0IGZsYWdzIDB4JTAyWCBmb3IgJXMgJWQiLAotCQkg ZmxhZ3MsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGhlYXBCbGspOwotI2VuZGlmCi0K LQlBc3NlcnQoSW5SZWNvdmVyeSB8fCAhWExvZ1JlY1B0cklzVmFsaWQocmVjcHRyKSk7Ci0JQXNz ZXJ0KEluUmVjb3ZlcnkgfHwgUGFnZUlzQWxsVmlzaWJsZShCdWZmZXJHZXRQYWdlKGhlYXBCdWYp KSk7Ci0JQXNzZXJ0KChmbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgPT0gZmxhZ3Mp OwotCi0JLyogTXVzdCBuZXZlciBzZXQgYWxsX2Zyb3plbiBiaXQgd2l0aG91dCBhbHNvIHNldHRp bmcgYWxsX3Zpc2libGUgYml0ICovCi0JQXNzZXJ0KGZsYWdzICE9IFZJU0lCSUxJVFlNQVBfQUxM X0ZST1pFTik7Ci0KLQkvKiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGhlYXAgcGFnZSBw aW5uZWQsIGlmIHByZXNlbnQgKi8KLQlpZiAoQnVmZmVySXNWYWxpZChoZWFwQnVmKSAmJiBCdWZm ZXJHZXRCbG9ja051bWJlcihoZWFwQnVmKSAhPSBoZWFwQmxrKQotCQllbG9nKEVSUk9SLCAid3Jv bmcgaGVhcCBidWZmZXIgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0Iik7Ci0KLQlBc3NlcnQo IUJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgfHwKLQkJICAgQnVmZmVySXNMb2NrZWRCeU1lSW5Nb2Rl KGhlYXBCdWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSkpOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBo YXZlIHRoZSByaWdodCBWTSBwYWdlIHBpbm5lZCAqLwotCWlmICghQnVmZmVySXNWYWxpZCh2bUJ1 ZikgfHwgQnVmZmVyR2V0QmxvY2tOdW1iZXIodm1CdWYpICE9IG1hcEJsb2NrKQotCQllbG9nKEVS Uk9SLCAid3JvbmcgVk0gYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0J cGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1CdWYpOwotCW1hcCA9ICh1aW50OCAqKSBQYWdlR2V0Q29u dGVudHMocGFnZSk7Ci0JTG9ja0J1ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsK LQotCXN0YXR1cyA9IChtYXBbbWFwQnl0ZV0gPj4gbWFwT2Zmc2V0KSAmIFZJU0lCSUxJVFlNQVBf VkFMSURfQklUUzsKLQlpZiAoZmxhZ3MgIT0gc3RhdHVzKQotCXsKLQkJU1RBUlRfQ1JJVF9TRUNU SU9OKCk7Ci0KLQkJbWFwW21hcEJ5dGVdIHw9IChmbGFncyA8PCBtYXBPZmZzZXQpOwotCQlNYXJr QnVmZmVyRGlydHkodm1CdWYpOwotCi0JCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCi0JCXsK LQkJCWlmICghWExvZ1JlY1B0cklzVmFsaWQocmVjcHRyKSkKLQkJCXsKLQkJCQlBc3NlcnQoIUlu UmVjb3ZlcnkpOwotCQkJCXJlY3B0ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLCBoZWFwQnVmLCB2 bUJ1ZiwgY3V0b2ZmX3hpZCwgZmxhZ3MpOwotCi0JCQkJLyoKLQkJCQkgKiBJZiBkYXRhIGNoZWNr c3VtcyBhcmUgZW5hYmxlZCAob3Igd2FsX2xvZ19oaW50cz1vbiksIHdlCi0JCQkJICogbmVlZCB0 byBwcm90ZWN0IHRoZSBoZWFwIHBhZ2UgZnJvbSBiZWluZyB0b3JuLgotCQkJCSAqCi0JCQkJICog SWYgbm90LCB0aGVuIHdlIG11c3QgKm5vdCogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uIElu Ci0JCQkJICogdGhpcyBjYXNlLCB0aGUgRlBJIGZvciB0aGUgaGVhcCBwYWdlIHdhcyBvbWl0dGVk IGZyb20gdGhlCi0JCQkJICogV0FMIHJlY29yZCBpbnNlcnRlZCBhYm92ZSwgc28gaXQgd291bGQg YmUgaW5jb3JyZWN0IHRvCi0JCQkJICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCi0JCQkJ ICovCi0JCQkJaWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJCQl7Ci0JCQkJCVBhZ2UJCWhl YXBQYWdlID0gQnVmZmVyR2V0UGFnZShoZWFwQnVmKTsKLQotCQkJCQlQYWdlU2V0TFNOKGhlYXBQ YWdlLCByZWNwdHIpOwotCQkJCX0KLQkJCX0KLQkJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRyKTsK LQkJfQotCi0JCUVORF9DUklUX1NFQ1RJT04oKTsKLQl9Ci0KLQlMb2NrQnVmZmVyKHZtQnVmLCBC VUZGRVJfTE9DS19VTkxPQ0spOwotCXJldHVybiBzdGF0dXM7Ci19Ci0KIC8qCiAgKiBTZXQgVk0g KHZpc2liaWxpdHkgbWFwKSBmbGFncyBpbiB0aGUgVk0gYmxvY2sgaW4gdm1CdWYuCiAgKgpAQCAt MzQ0LDkgKzI0MCw5IEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAgKiBybG9jYXRvciBpcyB1c2VkIG9ubHkgZm9y IGRlYnVnZ2luZyBtZXNzYWdlcy4KICAqLwogdWludDgKLXZpc2liaWxpdHltYXBfc2V0X3ZtYml0 cyhCbG9ja051bWJlciBoZWFwQmxrLAotCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3Ms Ci0JCQkJCQkgY29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpCit2aXNpYmlsaXR5bWFwX3Nl dChCbG9ja051bWJlciBoZWFwQmxrLAorCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywK KwkJCQkgIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKQogewogCUJsb2NrTnVtYmVyIG1h cEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxrKTsKIAl1aW50MzIJCW1hcEJ5dGUg PSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9o ZWFwZGVzYy5jCmluZGV4IGNhMjZkMWYwZWQxLi4wODQ2MWZkZjU5MyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKQEAgLTM0OSwxMyArMzQ5LDYgQEAgaGVhcDJfZGVzYyhT dHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQl9CiAJCX0KIAl9Ci0J ZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hFQVAyX1ZJU0lCTEUpCi0JewotCQl4bF9oZWFwX3Zpc2li bGUgKnhscmVjID0gKHhsX2hlYXBfdmlzaWJsZSAqKSByZWM7Ci0KLQkJYXBwZW5kU3RyaW5nSW5m byhidWYsICJzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjogJXUsIGZsYWdzOiAweCUwMlgiLAotCQkJ CQkJIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgeGxyZWMtPmZsYWdzKTsKLQl9CiAJ ZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVCkKIAl7CiAJCXhsX2hlYXBf bXVsdGlfaW5zZXJ0ICp4bHJlYyA9ICh4bF9oZWFwX211bHRpX2luc2VydCAqKSByZWM7CkBAIC00 NjEsOSArNDU0LDYgQEAgaGVhcDJfaWRlbnRpZnkodWludDggaW5mbykKIAkJY2FzZSBYTE9HX0hF QVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQOgogCQkJaWQgPSAiUFJVTkVfVkFDVVVNX0NMRUFOVVAi OwogCQkJYnJlYWs7Ci0JCWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgotCQkJaWQgPSAiVklTSUJM RSI7Ci0JCQlicmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWlkID0g Ik1VTFRJX0lOU0VSVCI7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RlY29kZS5jCmluZGV4IGNjMDNmMDcwNmU5Li4yZmRkNGFmOTBhOCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC00NTQsNyArNDU0LDYgQEAgaGVhcDJfZGVj b2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQog CQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfT05fQUNDRVNTOgogCQljYXNlIFhMT0dfSEVBUDJfUFJV TkVfVkFDVVVNX1NDQU46CiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoK LQkJY2FzZSBYTE9HX0hFQVAyX1ZJU0lCTEU6CiAJCWNhc2UgWExPR19IRUFQMl9MT0NLX1VQREFU RUQ6CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRl eCA0MjIyYmRhYjA3OC4uYzYxOTY0M2UxMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMK QEAgLTQ3NSwxMiArNDc1LDEyIEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90 KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAJICogSWYgd2UgZ2V0IHBh c3NlZCBJbnZhbGlkVHJhbnNhY3Rpb25JZCB0aGVuIHdlIGRvIG5vdGhpbmcgKG5vIGNvbmZsaWN0 KS4KIAkgKgogCSAqIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHJlcGxheWluZyBhbHJlYWR5LWFwcGxp ZWQgV0FMIHJlY29yZHMgYWZ0ZXIgYQotCSAqIHN0YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Ig d2hlbiByZXBsYXlpbmcgYW4gWExPR19IRUFQMl9WSVNJQkxFCi0JICogcmVjb3JkIHRoYXQgbWFy a3MgYXMgZnJvemVuIGEgcGFnZSB3aGljaCB3YXMgYWxyZWFkeSBhbGwtdmlzaWJsZS4gIEl0J3MK LQkgKiBhbHNvIHF1aXRlIGNvbW1vbiB3aXRoIHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRl eCBkZWxldGlvbgotCSAqIChvcmlnaW5hbCBleGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiBy ZWFzb24gdGhhdCBhIHJlY292ZXJ5IGNvbmZsaWN0Ci0JICogd2hpY2ggaXMgc3VmZmljaWVudCBm b3IgdGhlIGRlbGV0aW9uIG9wZXJhdGlvbiBtdXN0IHRha2UgcGxhY2UgYmVmb3JlCi0JICogcmVw bGF5IG9mIHRoZSBkZWxldGlvbiByZWNvcmQgaXRzZWxmKS4KKwkgKiBzdGFuZGJ5IGNyYXNoIG9y IHJlc3RhcnQsIG9yIHdoZW4gcmVwbGF5aW5nIGEgcmVjb3JkIHRoYXQgbWFya3MgYXMKKwkgKiBm cm96ZW4gYSBwYWdlIHdoaWNoIHdhcyBhbHJlYWR5IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUg dmlzaWJpbGl0eQorCSAqIG1hcC4gIEl0J3MgYWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRz IGdlbmVyYXRlZCBkdXJpbmcgaW5kZXgKKwkgKiBkZWxldGlvbiAob3JpZ2luYWwgZXhlY3V0aW9u IG9mIHRoZSBkZWxldGlvbiBjYW4gcmVhc29uIHRoYXQgYSByZWNvdmVyeQorCSAqIGNvbmZsaWN0 IHdoaWNoIGlzIHN1ZmZpY2llbnQgZm9yIHRoZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtl IHBsYWNlCisJICogYmVmb3JlIHJlcGxheSBvZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZiku CiAJICovCiAJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChzbmFwc2hvdENvbmZsaWN0SG9yaXpv bikpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxv Zy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggMTZjMmIyZTNjOWMu LmU5ZTc3YmQ2NzhiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cu aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtNjAsNyArNjAsNiBA QAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5FX09OX0FDQ0VTUwkJMHgxMAogI2RlZmluZSBYTE9H X0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FOCTB4MjAKICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9W QUNVVU1fQ0xFQU5VUAkweDMwCi0jZGVmaW5lIFhMT0dfSEVBUDJfVklTSUJMRQkJMHg0MAogI2Rl ZmluZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVCAweDUwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTE9D S19VUERBVEVEIDB4NjAKICNkZWZpbmUgWExPR19IRUFQMl9ORVdfQ0lECQkweDcwCkBAIC0yOTQs NyArMjkzLDEzIEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKIAogI2RlZmluZSBTaXpl T2ZIZWFwUHJ1bmUgKG9mZnNldG9mKHhsX2hlYXBfcHJ1bmUsIGZsYWdzKSArIHNpemVvZih1aW50 MTYpKQogCi0vKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwgZGVj b2Rpbmcgb24gc3RhbmRieSAqLworLyoKKyAqIFRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBk dXJpbmcgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LCB3ZSBtdXN0IGtub3cKKyAqIGlmIHRo ZSB0YWJsZSBpcyBhIGNhdGFsb2cgdGFibGUuIE5vdGUgdGhhdCBpbiB2aXNpYmlsaXR5bWFwZGVm cy5oCisgKiBWSVNJQkxJVFlNQVBfWExPR19DQVRBTE9HX1JFTCBpcyBhbHNvIGRlZmluZWQgYXMg KDEgPDwgMikuIHhsX2hlYXBfcHJ1bmUKKyAqIHJlY29yZHMgc2hvdWxkIHVzZSBYTEhQX0lTX0NB VEFMT0dfUkVMLCBub3QgVklTSUJJTElZVE1BUF9YTE9HX0NBVEFMT0dfUkVMIC0tCisgKiBldmVu IGlmIHRoZXkgb25seSBjb250YWluIHVwZGF0ZXMgdG8gdGhlIFZNLgorICovCiAjZGVmaW5lCQlY TEhQX0lTX0NBVEFMT0dfUkVMCQkJKDEgPDwgMSkKIAogLyoKQEAgLTQ0MywyMCArNDQ4LDYgQEAg dHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9pbnBsYWNlCiAKICNkZWZpbmUgTWluU2l6ZU9mSGVhcElu cGxhY2UJKG9mZnNldG9mKHhsX2hlYXBfaW5wbGFjZSwgbm1zZ3MpICsgc2l6ZW9mKGludCkpCiAK LS8qCi0gKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IHNldHRpbmcgYSB2aXNp YmlsaXR5IG1hcCBiaXQKLSAqCi0gKiBCYWNrdXAgYmxrIDA6IHZpc2liaWxpdHkgbWFwIGJ1ZmZl cgotICogQmFja3VwIGJsayAxOiBoZWFwIGJ1ZmZlcgotICovCi10eXBlZGVmIHN0cnVjdCB4bF9o ZWFwX3Zpc2libGUKLXsKLQlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwot CXVpbnQ4CQlmbGFnczsKLX0geGxfaGVhcF92aXNpYmxlOwotCi0jZGVmaW5lIFNpemVPZkhlYXBW aXNpYmxlIChvZmZzZXRvZih4bF9oZWFwX3Zpc2libGUsIGZsYWdzKSArIHNpemVvZih1aW50OCkp Ci0KIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfbmV3X2NpZAogewogCS8qCkBAIC01MDAsMTEgKzQ5 MSw2IEBAIGV4dGVybiB2b2lkIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKTsKIGV4dGVybiBjb25zdCBjaGFyICpoZWFwMl9pZGVudGlmeSh1aW50OCBp bmZvKTsKIGV4dGVybiB2b2lkIGhlYXBfeGxvZ19sb2dpY2FsX3Jld3JpdGUoWExvZ1JlYWRlclN0 YXRlICpyKTsKIAotZXh0ZXJuIFhMb2dSZWNQdHIgbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKLQkJCQkJCQkJICAgQnVmZmVyIHZtX2J1ZmZlciwKLQkJ CQkJCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJ ICAgdWludDggdm1mbGFncyk7Ci0KIC8qIGluIGhlYXBkZXNjLmMsIHNvIGl0IGNhbiBiZSBzaGFy ZWQgYmV0d2VlbiBmcm9udGVuZC9iYWNrZW5kIGNvZGUgKi8KIGV4dGVybiB2b2lkIGhlYXBfeGxv Z19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdz LAogCQkJCQkJCQkJCQkJICAgaW50ICpucGxhbnMsIHhsaHBfZnJlZXplX3BsYW4gKipwbGFucywK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCmluZGV4IGM2ZmEzN2JlOTY4Li4wNWJhNjc4NmI0 NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCkBAIC0xNSw3ICsxNSw2IEBACiAjZGVm aW5lIFZJU0lCSUxJVFlNQVBfSAogCiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZz LmgiCi0jaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9ibG9j ay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9yZWxmaWxl bG9jYXRvci5oIgpAQCAtMzIsMTUgKzMxLDkgQEAgZXh0ZXJuIGJvb2wgdmlzaWJpbGl0eW1hcF9j bGVhcihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCiBleHRlcm4gdm9pZCB2aXNp YmlsaXR5bWFwX3BpbihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCiAJCQkJCQkJ ICBCdWZmZXIgKnZtYnVmKTsKIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBfcGluX29rKEJsb2Nr TnVtYmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1Zik7Ci1leHRlcm4gdWludDggdmlzaWJpbGl0eW1h cF9zZXQoUmVsYXRpb24gcmVsLAotCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZl ciBoZWFwQnVmLAotCQkJCQkJCSAgIFhMb2dSZWNQdHIgcmVjcHRyLAotCQkJCQkJCSAgIEJ1ZmZl ciB2bUJ1ZiwKLQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCi0JCQkJCQkJICAg dWludDggZmxhZ3MpOwotZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCbG9j a051bWJlciBoZWFwQmxrLAotCQkJCQkJCQkJICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAot CQkJCQkJCQkJICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcik7CitleHRlcm4gdWludDgg dmlzaWJpbGl0eW1hcF9zZXQoQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCQkgICBCdWZmZXIg dm1CdWYsIHVpbnQ4IGZsYWdzLAorCQkJCQkJCSAgIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2Nh dG9yKTsKIGV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgKnZtYnVmKTsKIGV4dGVybiB2b2lkIHZpc2li aWxpdHltYXBfY291bnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciAqYWxsX3Zpc2libGUsIEJs b2NrTnVtYmVyICphbGxfZnJvemVuKTsKIGV4dGVybiBCbG9ja051bWJlciB2aXNpYmlsaXR5bWFw X3ByZXBhcmVfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0 eW1hcGRlZnMuaAppbmRleCA1YWQ1YzAyMDg3Ny4uZTAxYmNlNGM5OWYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCkBAIC0yMSwxNCArMjEsNSBAQAogI2RlZmluZSBWSVNJ QklMSVRZTUFQX0FMTF9GUk9aRU4JMHgwMgogI2RlZmluZSBWSVNJQklMSVRZTUFQX1ZBTElEX0JJ VFMJMHgwMwkvKiBPUiBvZiBhbGwgdmFsaWQgdmlzaWJpbGl0eW1hcAogCQkJCQkJCQkJCQkgKiBm bGFncyBiaXRzICovCi0vKgotICogVG8gZGV0ZWN0IHJlY292ZXJ5IGNvbmZsaWN0cyBkdXJpbmcg bG9naWNhbCBkZWNvZGluZyBvbiBhIHN0YW5kYnksIHdlIG5lZWQKLSAqIHRvIGtub3cgaWYgYSB0 YWJsZSBpcyBhIHVzZXIgY2F0YWxvZyB0YWJsZS4gRm9yIHRoYXQgd2UgYWRkIGFuIGFkZGl0aW9u YWwKLSAqIGJpdCBpbnRvIHhsX2hlYXBfdmlzaWJsZS5mbGFncywgaW4gYWRkaXRpb24gdG8gdGhl IGFib3ZlLgotICoKLSAqIE5COiBWSVNJQklMSVRZTUFQX1hMT0dfKiBtYXkgbm90IGJlIHBhc3Nl ZCB0byB2aXNpYmlsaXR5bWFwX3NldCgpLgotICovCi0jZGVmaW5lIFZJU0lCSUxJVFlNQVBfWExP R19DQVRBTE9HX1JFTAkweDA0Ci0jZGVmaW5lIFZJU0lCSUxJVFlNQVBfWExPR19WQUxJRF9CSVRT CShWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMgfCBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19S RUwpCiAKICNlbmRpZgkJCQkJCQkvKiBWSVNJQklMSVRZTUFQREVGU19IICovCmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CmluZGV4IDg2OTg5MThmNDQzLi43NjM0M2ZkZjQ3NiAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKQEAgLTQyODksNyArNDI4OSw2IEBAIHhsX2hlYXBfcHJ1bmUKIHhsX2hl YXBfcmV3cml0ZV9tYXBwaW5nCiB4bF9oZWFwX3RydW5jYXRlCiB4bF9oZWFwX3VwZGF0ZQoteGxf aGVhcF92aXNpYmxlCiB4bF9pbnZhbGlkX3BhZ2UKIHhsX2ludmFsaWRfcGFnZV9rZXkKIHhsX2lu dmFsaWRhdGlvbnMKLS0gCjIuNDMuMAoK --000000000000fe23c60643d269a4 Content-Type: text/x-patch; charset="UTF-8"; name="v20-0008-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Disposition: attachment; filename="v20-0008-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi3r7qgw7 RnJvbSAzMjE0NjFjZDBmYTAyNDA4NjU3ZjQ2ZDJlYzA0OTVlOGE2OTc5MGQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgMDgvMTJdIFJlbmFtZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSB0bwog R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhi aXQKClRoZSBmdW5jdGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIg YSB0dXBsZeKAmXMgeG1heCBpcwp2aXNpYmxlIHRvIGFsbCB0cmFuc2FjdGlvbnMgKGFuZCB0aHVz IHJlbW92YWJsZSkuIFVwY29taW5nIGNoYW5nZXMgd2lsbAphbHNvIHVzZSBpdCB0byB0ZXN0IHdo ZXRoZXIgYSB0dXBsZeKAmXMgeG1pbiBpcyB2aXNpYmxlIHRvIGFsbCB0bwpkZWNpZGUgaWYgYSBw YWdlIGNhbiBiZSBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLgoKVGhl IG5ldyBuYW1lLCBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSwgYmV0dGVyIHJlZmxlY3RzIHRo aXMgYnJvYWRlcgpwdXJwb3NlLgoKUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtp cmlsbEBnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2li aWxpdHkuYyB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg ICAgICAgICB8IDEyICsrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2 YWN1dW0uYyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXku YyAgICAgICAgIHwgMTcgKysrKysrKystLS0tLS0tLS0KIHNyYy9pbmNsdWRlL3V0aWxzL3NuYXBt Z3IuaCAgICAgICAgICAgICAgICAgfCAgNCArKy0tCiA1IGZpbGVzIGNoYW5nZWQsIDIwIGluc2Vy dGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1fdmlzaWJpbGl0eS5jCmluZGV4IDA1ZjY5NDZmZTYwLi40ZWJjOGFiZGJlYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCkBAIC0xNDQ3LDcgKzE0NDcs NyBAQCBIZWFwVHVwbGVTYXRpc2ZpZXNOb25WYWN1dW1hYmxlKEhlYXBUdXBsZSBodHVwLCBTbmFw c2hvdCBzbmFwc2hvdCwKIAl7CiAJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChkZWFkX2Fm dGVyKSk7CiAKLQkJaWYgKEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChzbmFwc2hvdC0+dmlz dGVzdCwgZGVhZF9hZnRlcikpCisJCWlmIChHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoc25hcHNo b3QtPnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQogCQkJcmVzID0gSEVBUFRVUExFX0RFQUQ7CiAJfQog CWVsc2UKQEAgLTE1MTIsOCArMTUxMiw4IEBAIEhlYXBUdXBsZUlzU3VyZWx5RGVhZChIZWFwVHVw bGUgaHR1cCwgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QpCiAJCXJldHVybiBmYWxzZTsKIAogCS8q IERlbGV0ZXIgY29tbWl0dGVkLCBzbyB0dXBsZSBpcyBkZWFkIGlmIHRoZSBYSUQgaXMgb2xkIGVu b3VnaC4gKi8KLQlyZXR1cm4gR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHZpc3Rlc3QsCi0J CQkJCQkJCQkgICBIZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWF4KHR1cGxlKSk7CisJcmV0dXJuIEds b2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LAorCQkJCQkJCQkJSGVhcFR1cGxlSGVhZGVy R2V0UmF3WG1heCh0dXBsZSkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCBkNmIyMmI3YjFjNS4uYTJkODcyZTViZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0yNDQsNyArMjQ0LDcgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAkgKi8KIAl2aXN0ZXN0ID0gR2xvYmFsVmlzVGVz dEZvcihyZWxhdGlvbik7CiAKLQlpZiAoIUdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0 ZXN0LCBwcnVuZV94aWQpKQorCWlmICghR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3Qs IHBydW5lX3hpZCkpCiAJCXJldHVybjsKIAogCS8qCkBAIC00NjksNyArNDY5LDcgQEAgcHJ1bmVf ZnJlZXplX3BsYW4oT2lkIHJlbG9pZCwgQnVmZmVyIGJ1ZmZlciwgUHJ1bmVTdGF0ZSAqcHJzdGF0 ZSwKIAkgKiBEZXRlcm1pbmluZyBIVFNWIG9ubHkgb25jZSBmb3IgZWFjaCB0dXBsZSBpcyByZXF1 aXJlZCBmb3IgY29ycmVjdG5lc3MsCiAJICogdG8gZGVhbCB3aXRoIGNhc2VzIHdoZXJlIHJ1bm5p bmcgSFRTViB0d2ljZSBjb3VsZCByZXN1bHQgaW4gZGlmZmVyZW50CiAJICogcmVzdWx0cy4gIEZv ciBleGFtcGxlLCBSRUNFTlRMWV9ERUFEIGNhbiB0dXJuIHRvIERFQUQgaWYgYW5vdGhlcgotCSAq IGNoZWNrZWQgaXRlbSBjYXVzZXMgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZCgpIHRv IHVwZGF0ZSB0aGUKKwkgKiBjaGVja2VkIGl0ZW0gY2F1c2VzIEdsb2JhbFZpc0Z1bGxYaWRWaXNp YmxlVG9BbGwoKSB0byB1cGRhdGUgdGhlCiAJICogaG9yaXpvbiwgb3IgSU5TRVJUX0lOX1BST0dS RVNTIGNhbiBjaGFuZ2UgdG8gREVBRCBpZiB0aGUgaW5zZXJ0aW5nCiAJICogdHJhbnNhY3Rpb24g YWJvcnRzLgogCSAqCkBAIC0xMjM2LDExICsxMjM2LDExIEBAIGhlYXBfcHJ1bmVfc2F0aXNmaWVz X3ZhY3V1bShQcnVuZVN0YXRlICpwcnN0YXRlLCBIZWFwVHVwbGUgdHVwLCBCdWZmZXIgYnVmZmVy KQogCSAqIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgdHVwbGUgaXMgY29uc2lkZXJlZCBk ZWFkIHdoZW4gY29tcGFyZWQKIAkgKiB3aXRoIHRoZSBwcm92aWRlZCBHbG9iYWxWaXNTdGF0ZS4g T24tYWNjZXNzIHBydW5pbmcgZG9lcyBub3QgcHJvdmlkZQogCSAqIFZhY3V1bUN1dG9mZnMuIEFu ZCBmb3IgdmFjdXVtLCBldmVuIGlmIHRoZSB0dXBsZSdzIHhtYXggaXMgbm90IG9sZGVyCi0JICog dGhhbiBPbGRlc3RYbWluLCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSBjb3VsZCBmaW5k IHRoZSByb3cgZGVhZAotCSAqIGlmIHRoZSBHbG9iYWxWaXNTdGF0ZSBoYXMgYmVlbiB1cGRhdGVk IHNpbmNlIHRoZSBiZWdpbm5pbmcgb2YgdmFjdXVtaW5nCisJICogdGhhbiBPbGRlc3RYbWluLCBH bG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSBjb3VsZCBmaW5kIHRoZSByb3cgZGVhZCBpZgorCSAq IHRoZSBHbG9iYWxWaXNTdGF0ZSBoYXMgYmVlbiB1cGRhdGVkIHNpbmNlIHRoZSBiZWdpbm5pbmcg b2YgdmFjdXVtaW5nCiAJICogdGhlIHJlbGF0aW9uLgogCSAqLwotCWlmIChHbG9iYWxWaXNUZXN0 SXNSZW1vdmFibGVYaWQocHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikpCisJaWYgKEdsb2Jh bFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLT52aXN0ZXN0LCBkZWFkX2FmdGVyKSkKIAkJcmV0 dXJuIEhFQVBUVVBMRV9ERUFEOwogCiAJcmV0dXJuIHJlczsKQEAgLTE2OTksNyArMTY5OSw3IEBA IGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0 YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkJLyoKIAkJCQkgKiBGb3Igbm93IGFsd2F5cyB1 c2UgcHJzdGF0ZS0+Y3V0b2ZmcyBmb3IgdGhpcyB0ZXN0LCBiZWNhdXNlCiAJCQkJICogd2Ugb25s eSB1cGRhdGUgJ2FsbF92aXNpYmxlJyBhbmQgJ2FsbF9mcm96ZW4nIHdoZW4gZnJlZXppbmcKLQkJ CQkgKiBpcyByZXF1ZXN0ZWQuIFdlIGNvdWxkIHVzZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVY aWQKKwkJCQkgKiBpcyByZXF1ZXN0ZWQuIFdlIGNvdWxkIHVzZSBHbG9iYWxWaXNYaWRWaXNpYmxl VG9BbGwoKQogCQkJCSAqIGluc3RlYWQsIGlmIGEgbm9uLWZyZWV6aW5nIGNhbGxlciB3YW50ZWQg dG8gc2V0IHRoZSBWTSBiaXQuCiAJCQkJICovCiAJCQkJQXNzZXJ0KHByc3RhdGUtPmN1dG9mZnMp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKaW5kZXggNzFlZjJlNTAzNmYuLjFj MGViNDI1ZWU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1 bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKQEAgLTUzNiw3 ICs1MzYsNyBAQCB2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKFJlbGF0aW9uIGluZGV4LCBS ZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgYnVmZmVyKQogCQkgKi8KIAkJaWYgKGR0LT50dXBzdGF0 ZSA9PSBTUEdJU1RfUkVESVJFQ1QgJiYKIAkJCSghVHJhbnNhY3Rpb25JZElzVmFsaWQoZHQtPnhp ZCkgfHwKLQkJCSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQodmlzdGVzdCwgZHQtPnhpZCkp KQorCQkJIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCBkdC0+eGlkKSkpCiAJCXsK IAkJCWR0LT50dXBzdGF0ZSA9IFNQR0lTVF9QTEFDRUhPTERFUjsKIAkJCUFzc2VydChvcGFxdWUt Pm5SZWRpcmVjdGlvbiA+IDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv cHJvY2FycmF5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwppbmRleCAy MDBmNzJjNmUyNS4uMjM1YzNiNTg0ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NhcnJheS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5j CkBAIC00MTgxLDggKzQxODEsNyBAQCBHbG9iYWxWaXNVcGRhdGUodm9pZCkKICAqIFNlZSBjb21t ZW50IGZvciBHbG9iYWxWaXNTdGF0ZSBmb3IgZGV0YWlscy4KICAqLwogYm9vbAotR2xvYmFsVmlz VGVzdElzUmVtb3ZhYmxlRnVsbFhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsCi0JCQkJCQkJCUZ1 bGxUcmFuc2FjdGlvbklkIGZ4aWQpCitHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKEdsb2Jh bFZpc1N0YXRlICpzdGF0ZSwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCkKIHsKIAkvKgogCSAqIElm IGZ4aWQgaXMgb2xkZXIgdGhhbiBtYXliZV9uZWVkZWQgYm91bmQsIGl0IGRlZmluaXRlbHkgaXMg dmlzaWJsZSB0bwpAQCAtNDIxNiwxNCArNDIxNSwxNCBAQCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFi bGVGdWxsWGlkKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwKIH0KIAogLyoKLSAqIFdyYXBwZXIgYXJv dW5kIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSBmb3IgMzJiaXQgeGlkcy4KKyAq IFdyYXBwZXIgYXJvdW5kIEdsb2JhbFZpc0Z1bGxYaWRWaXNpYmxlVG9BbGwoKSBmb3IgMzJiaXQg eGlkcy4KICAqCiAgKiBJdCBpcyBjcnVjaWFsIHRoYXQgdGhpcyBvbmx5IGdldHMgY2FsbGVkIGZv ciB4aWRzIGZyb20gYSBzb3VyY2UgdGhhdAogICogcHJvdGVjdHMgYWdhaW5zdCB4aWQgd3JhcGFy b3VuZHMgKGUuZy4gZnJvbSBhIHRhYmxlIGFuZCB0aHVzIHByb3RlY3RlZCBieQogICogcmVsZnJv emVueGlkKS4KICAqLwogYm9vbAotR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKEdsb2JhbFZp c1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCitHbG9iYWxWaXNYaWRWaXNpYmxlVG9B bGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCkKIHsKIAlGdWxsVHJh bnNhY3Rpb25JZCBmeGlkOwogCkBAIC00MjM3LDEyICs0MjM2LDEyIEBAIEdsb2JhbFZpc1Rlc3RJ c1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKQog CSAqLwogCWZ4aWQgPSBGdWxsWGlkUmVsYXRpdmVUbyhzdGF0ZS0+ZGVmaW5pdGVseV9uZWVkZWQs IHhpZCk7CiAKLQlyZXR1cm4gR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZChzdGF0ZSwg ZnhpZCk7CisJcmV0dXJuIEdsb2JhbFZpc0Z1bGxYaWRWaXNpYmxlVG9BbGwoc3RhdGUsIGZ4aWQp OwogfQogCiAvKgogICogQ29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgR2xvYmFsVmlzVGVzdEZv cigpIGFuZAotICogR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZCgpLCBzZWUgdGhlaXIg Y29tbWVudHMuCisgKiBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKCksIHNlZSB0aGVpciBj b21tZW50cy4KICAqLwogYm9vbAogR2xvYmFsVmlzQ2hlY2tSZW1vdmFibGVGdWxsWGlkKFJlbGF0 aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCkKQEAgLTQyNTEsMTIgKzQyNTAsMTIgQEAg R2xvYmFsVmlzQ2hlY2tSZW1vdmFibGVGdWxsWGlkKFJlbGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0 aW9uSWQgZnhpZCkKIAogCXN0YXRlID0gR2xvYmFsVmlzVGVzdEZvcihyZWwpOwogCi0JcmV0dXJu IEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoc3RhdGUsIGZ4aWQpOworCXJldHVybiBH bG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKHN0YXRlLCBmeGlkKTsKIH0KIAogLyoKICAqIENv bnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEdsb2JhbFZpc1Rlc3RGb3IoKSBhbmQKLSAqIEdsb2Jh bFZpc1Rlc3RJc1JlbW92YWJsZVhpZCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCisgKiBHbG9iYWxW aXNUZXN0SXNWaXNpYmxlWGlkKCksIHNlZSB0aGVpciBjb21tZW50cy4KICAqLwogYm9vbAogR2xv YmFsVmlzQ2hlY2tSZW1vdmFibGVYaWQoUmVsYXRpb24gcmVsLCBUcmFuc2FjdGlvbklkIHhpZCkK QEAgLTQyNjUsNyArNDI2NCw3IEBAIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0aW9u IHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpCiAKIAlzdGF0ZSA9IEdsb2JhbFZpc1Rlc3RGb3IocmVs KTsKIAotCXJldHVybiBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc3RhdGUsIHhpZCk7CisJ cmV0dXJuIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChzdGF0ZSwgeGlkKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3NuYXBtZ3IuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L3NuYXBtZ3IuaAppbmRleCA2MDRjMWY5MDIxNi4uYTBlYTJjZmNlYTIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3NuYXBtZ3IuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdy LmgKQEAgLTEwMCw4ICsxMDAsOCBAQCBleHRlcm4gY2hhciAqRXhwb3J0U25hcHNob3QoU25hcHNo b3Qgc25hcHNob3QpOwogICovCiB0eXBlZGVmIHN0cnVjdCBHbG9iYWxWaXNTdGF0ZSBHbG9iYWxW aXNTdGF0ZTsKIGV4dGVybiBHbG9iYWxWaXNTdGF0ZSAqR2xvYmFsVmlzVGVzdEZvcihSZWxhdGlv biByZWwpOwotZXh0ZXJuIGJvb2wgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKEdsb2JhbFZp c1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpOwotZXh0ZXJuIGJvb2wgR2xvYmFsVmlz VGVzdElzUmVtb3ZhYmxlRnVsbFhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIEZ1bGxUcmFuc2Fj dGlvbklkIGZ4aWQpOworZXh0ZXJuIGJvb2wgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKEdsb2Jh bFZpc1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIGJvb2wgR2xvYmFs VmlzRnVsbFhpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIEZ1bGxUcmFuc2Fj dGlvbklkIGZ4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hlY2tSZW1vdmFibGVYaWQoUmVs YXRpb24gcmVsLCBUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4gYm9vbCBHbG9iYWxWaXNDaGVj a1JlbW92YWJsZUZ1bGxYaWQoUmVsYXRpb24gcmVsLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlkKTsK IAotLSAKMi40My4wCgo= --000000000000fe23c60643d269a4 Content-Type: text/x-patch; charset="UTF-8"; name="v20-0009-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v20-0009-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi3r7ud98 RnJvbSAwMTNkZDdkNzBlNmFmMWFkNTc4ZTlmZjRhMzc1MzgzMGU5NTQ4Y2JiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgMDkvMTJdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQK CkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQgcGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxl cycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtdmlz aWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBh cmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUgWElEIGNob3NlbiBhdAp0aGUgc3RhcnQg b2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVzZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2gg YWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBw cnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhhdmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0 YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxzbyBiZW5lZml0cyB2YWN1dW0gZGlyZWN0 bHk6IGluIHNvbWUgY2FzZXMsIEdsb2JhbFZpc1N0YXRlIG1heQphZHZhbmNlIGR1cmluZyBhIHZh Y3V1bSwgYWxsb3dpbmcgbW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lkZXJlZAphbGwtdmlzaWJs ZS4gQW5kLCBpbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBlYXNpbHkgYWRkIGEgaGV1cmlzdGljIHRv CnVwZGF0ZSBHbG9iYWxWaXNTdGF0ZSBtb3JlIGZyZXF1ZW50bHkgZHVyaW5nIHZhY3V1bXMgb2Yg bGFyZ2UgdGFibGVzLiBJbgp0aGUgcmFyZSBjYXNlIHRoYXQgdGhlIEdsb2JhbFZpc1N0YXRlIG1v dmVzIGJhY2t3YXJkLCB2YWN1dW0gZmFsbHMgYmFjawp0byBPbGRlc3RYbWluIHRvIGVuc3VyZSB3 ZSBkb27igJl0IGF0dGVtcHQgdG8gZnJlZXplIGEgZGVhZCB0dXBsZSB0aGF0Cndhc27igJl0IHll dCBwcnVuYWJsZSBhY2NvcmRpbmcgdG8gdGhlIEdsb2JhbFZpc1N0YXRlLgoKQmVjYXVzZSBjb21w YXJpbmcgYSB0cmFuc2FjdGlvbiBJRCBhZ2FpbnN0IEdsb2JhbFZpc1N0YXRlIGlzIG1vcmUKZXhw ZW5zaXZlIHRoYW4gY29tcGFyaW5nIGFnYWluc3QgYSBzaW5nbGUgWElELCB3ZSBkZWZlciB0aGlz IGNoZWNrIHVudGlsCmFmdGVyIHNjYW5uaW5nIGFsbCB0dXBsZXMgb24gdGhlIHBhZ2UuIElmIHZp c2liaWxpdHlfY3V0b2ZmX3hpZCB3YXMKbWFpbnRhaW5lZCwgd2UgcGVyZm9ybSB0aGUgR2xvYmFs VmlzU3RhdGUgY2hlY2sgb25seSBvbmNlIHBlciBwYWdlLgpUaGlzIGlzIHNhZmUgYmVjYXVzZSB2 aXNpYmlsaXR5X2N1dG9mZl94aWQgcmVjb3JkcyB0aGUgbmV3ZXN0IHhtaW4gb24KdGhlIHBhZ2U7 IGlmIGl0IGlzIGdsb2JhbGx5IHZpc2libGUsIHRoZW4gdGhlIGVudGlyZSBwYWdlIGlzIGFsbC12 aXNpYmxlLgoKVGhpcyBhcHByb2FjaCBtYXkgcmVzdWx0IGluIGV4YW1pbmluZyBtb3JlIHR1cGxl IHhtaW5zIHRoYW4gYmVmb3JlLApzaW5jZSB3aXRoIE9sZGVzdFhtaW4gd2UgY291bGQgc29tZXRp bWVzIHJ1bGUgb3V0IHRoZSBwYWdlIGJlaW5nCmFsbC12aXNpYmxlIGVhcmxpZXIuIEhvd2V2ZXIs IHByb2ZpbGluZyBzaG93cyB0aGUgYWRkaXRpb25hbCBjb3N0IGlzIG5vdApzaWduaWZpY2FudC4K LS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIHwgMjggKysr KysrKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAg fCA0MyArKysrKysrKystLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYyAgICAgICAgfCAxMCArKy0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAg ICAgICAgICAgICAgICB8IDExICsrKy0tLQogNCBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25z KCspLCAzNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1fdmlzaWJpbGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zp c2liaWxpdHkuYwppbmRleCA0ZWJjOGFiZGJlYi4uZWRkNTI5ZGMzYzAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTE4OSw2ICsxMTg5LDM0IEBA IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bShIZWFwVHVwbGUgaHR1cCwgVHJhbnNhY3Rpb25JZCBP bGRlc3RYbWluLAogCXJldHVybiByZXM7CiB9CiAKKy8qCisgKiBOZWFybHkgdGhlIHNhbWUgYXMg SGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtLCBidXQgdXNlcyBhIEdsb2JhbFZpc1N0YXRlIHRvCisg KiBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSB0dXBsZSBpcyBIRUFQVFVQTEVfREVBRCBPcgor ICogSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQuIEl0IHNlcnZlcyB0aGUgc2FtZSBwdXJwb3NlIGJ1 dCBjYW4gYmUgdXNlZCBieQorICogY2FsbGVycyB0aGF0IGhhdmUgbm90IGNhbGN1bGF0ZWQgYSBz aW5nbGUgT2xkZXN0WG1pbiB2YWx1ZS4KKyAqLworSFRTVl9SZXN1bHQKK0hlYXBUdXBsZVNhdGlz Zmllc1ZhY3V1bUdsb2JhbFZpcyhIZWFwVHVwbGUgaHR1cCwgR2xvYmFsVmlzU3RhdGUgKnZpc3Rl c3QsCisJCQkJCQkJCSAgQnVmZmVyIGJ1ZmZlcikKK3sKKwlUcmFuc2FjdGlvbklkIGRlYWRfYWZ0 ZXIgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlIVFNWX1Jlc3VsdCByZXM7CisKKwlyZXMgPSBI ZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW1Ib3Jpem9uKGh0dXAsIGJ1ZmZlciwgJmRlYWRfYWZ0ZXIp OworCisJaWYgKHJlcyA9PSBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRCkKKwl7CisJCUFzc2VydChU cmFuc2FjdGlvbklkSXNWYWxpZChkZWFkX2FmdGVyKSk7CisKKwkJaWYgKEdsb2JhbFZpc1hpZFZp c2libGVUb0FsbCh2aXN0ZXN0LCBkZWFkX2FmdGVyKSkKKwkJCXJlcyA9IEhFQVBUVVBMRV9ERUFE OworCX0KKwllbHNlCisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikp OworCisJcmV0dXJuIHJlczsKK30KKwogLyoKICAqIFdvcmsgaG9yc2UgZm9yIEhlYXBUdXBsZVNh dGlzZmllc1ZhY3V1bSBhbmQgc2ltaWxhciByb3V0aW5lcy4KICAqCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jCmluZGV4IGEyZDg3MmU1YmViLi5mZGJlZDVhYzc0ZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTQzMiwxMSArNDMyLDEyIEBAIHBydW5lX2ZyZWV6ZV9z ZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCiAJLyoKIAkgKiBUaGUgdmlzaWJpbGl0 eSBjdXRvZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlLCBjb21taXR0ZWQgdHVwbGVz Ci0JICogb2xkZXIgdGhhbiBPbGRlc3RYbWluIG9uIHRoZSBwYWdlLiBUaGlzIGZpZWxkIGlzIG9u bHkga2VwdCB1cC10by1kYXRlCi0JICogaWYgdGhlIHBhZ2UgaXMgYWxsLXZpc2libGUuIEFzIHNv b24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJlZCB0aGF0IGlzCi0JICogbm90IHZpc2libGUgdG8g YWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRhaW5lZC4gQXMgbG9uZyBhcyBpdCBpcwotCSAqIG1h aW50YWluZWQsIGl0IGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgc25hcHNob3QgY29uZmxp Y3QgaG9yaXpvbgotCSAqIHdoZW4gdXBkYXRpbmcgdGhlIFZNIGFuZC9vciBmcmVlemluZyBhbGwg dGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4KKwkgKiBvbiB0aGUgcGFnZSBvbGRlciB0aGFuIHRoZSB2 aXNpYmlsaXR5IGhvcml6b24gcmVwcmVzZW50ZWQgaW4gdGhlCisJICogR2xvYmFsVmlzU3RhdGUu IFRoaXMgZmllbGQgaXMgb25seSBrZXB0IHVwLXRvLWRhdGUgaWYgdGhlIHBhZ2UgaXMKKwkgKiBh bGwtdmlzaWJsZS4gQXMgc29vbiBhcyBhIHR1cGxlIGlzIGVuY291bnRlcmVkIHRoYXQgaXMgbm90 IHZpc2libGUgdG8KKwkgKiBhbGwsIHRoaXMgZmllbGQgaXMgdW5tYWludGFpbmVkLiBBcyBsb25n IGFzIGl0IGlzIG1haW50YWluZWQsIGl0IGNhbiBiZQorCSAqIHVzZWQgdG8gY2FsY3VsYXRlIHRo ZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHdoZW4gdXBkYXRpbmcgdGhlIFZNCisJICogYW5k L29yIGZyZWV6aW5nIGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlLgogCSAqLwogCXByc3RhdGUt PnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogfQpAQCAtODgy LDE0ICs4ODMsMTMgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwK ICAqLwogc3RhdGljIGJvb2wKIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWws IEJ1ZmZlciBidWYsCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJIEds b2JhbFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCiAJCQkJCQkg VHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAogCQkJCQkJIE9mZnNldE51bWJl ciAqbG9nZ2luZ19vZmZudW0pCiB7CiAKLQlyZXR1cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92 aXNpYmxlKHJlbCwgYnVmLAotCQkJCQkJCQkJCSAgT2xkZXN0WG1pbiwKKwlyZXR1cm4gaGVhcF9w YWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHJlbCwgYnVmLCB2aXN0ZXN0LAogCQkJCQkJCQkJCSAg TlVMTCwgMCwKIAkJCQkJCQkJCQkgIGFsbF9mcm96ZW4sCiAJCQkJCQkJCQkJICB2aXNpYmlsaXR5 X2N1dG9mZl94aWQsCkBAIC05OTEsNiArOTkxLDE2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCXByc3RhdGUubmRlYWQgPiAwIHx8CiAJ CXByc3RhdGUubnVudXNlZCA+IDA7CiAKKwkvKgorCSAqIEFmdGVyIHByb2Nlc3NpbmcgYWxsIHRo ZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4bWluCisJICogYW1vbmdz dCB0aGVtIGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFnZSBjYW5ub3QgYmUKKwkg KiBhbGwtdmlzaWJsZS4KKwkgKi8KKwlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJgorCQlUcmFu c2FjdGlvbklkSXNOb3JtYWwocHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpICYmCisJCSFH bG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwocHJzdGF0ZS52aXN0ZXN0LCBwcnN0YXRlLnZpc2liaWxp dHlfY3V0b2ZmX3hpZCkpCisJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96 ZW4gPSBmYWxzZTsKKwogCS8qCiAJICogRXZlbiBpZiB3ZSBkb24ndCBwcnVuZSBhbnl0aGluZywg aWYgd2UgZm91bmQgYSBuZXcgdmFsdWUgZm9yIHRoZQogCSAqIHBkX3BydW5lX3hpZCBmaWVsZCBv ciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRlIHRoZSBoaW50CkBAIC0x MTYzLDEwICsxMTczLDkgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQ YXJhbXMgKnBhcmFtcywKIAkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAogCQlBc3NlcnQocHJz dGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7Ci0JCUFzc2VydChwcnN0YXRlLmN1dG9mZnMpOwogCiAJ CWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwK LQkJCQkJCQkJCSAgcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLAorCQkJCQkJCQkJICBwcnN0 YXRlLnZpc3Rlc3QsCiAJCQkJCQkJCQkgICZkZWJ1Z19hbGxfZnJvemVuLAogCQkJCQkJCQkJICAm ZGVidWdfY3V0b2ZmLCBvZmZfbG9jKSkKIAkJCUFzc2VydChmYWxzZSk7CkBAIC0xNjk2LDIwICsx NzA1LDYgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2Us IFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCQkgKi8KIAkJCQl4bWluID0gSGVh cFR1cGxlSGVhZGVyR2V0WG1pbihodHVwKTsKIAotCQkJCS8qCi0JCQkJICogRm9yIG5vdyBhbHdh eXMgdXNlIHByc3RhdGUtPmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVzZQotCQkJCSAqIHdl IG9ubHkgdXBkYXRlICdhbGxfdmlzaWJsZScgYW5kICdhbGxfZnJvemVuJyB3aGVuIGZyZWV6aW5n Ci0JCQkJICogaXMgcmVxdWVzdGVkLiBXZSBjb3VsZCB1c2UgR2xvYmFsVmlzWGlkVmlzaWJsZVRv QWxsKCkKLQkJCQkgKiBpbnN0ZWFkLCBpZiBhIG5vbi1mcmVlemluZyBjYWxsZXIgd2FudGVkIHRv IHNldCB0aGUgVk0gYml0LgotCQkJCSAqLwotCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZzKTsK LQkJCQlpZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBwcnN0YXRlLT5jdXRvZmZzLT5P bGRlc3RYbWluKSkKLQkJCQl7Ci0JCQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7Ci0J CQkJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCiAJ CQkJLyogVHJhY2sgbmV3ZXN0IHhtaW4gb24gcGFnZS4gKi8KIAkJCQlpZiAoVHJhbnNhY3Rpb25J ZEZvbGxvd3MoeG1pbiwgcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgogCQkJCQlU cmFuc2FjdGlvbklkSXNOb3JtYWwoeG1pbikpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKaW5kZXggZmQ2OGRmY2ZjZTIuLmZkZjM3NjI1Y2QwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCkBAIC0yNzMwLDcgKzI3MzAsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2Uo TFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkg KiBkb25lIG91dHNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24uCiAJICovCiAJaWYgKGhlYXBfcGFn ZV93b3VsZF9iZV9hbGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmZmVyLAotCQkJCQkJCQkJICAg dmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sCisJCQkJCQkJCQkgICB2YWNyZWwtPnZpc3Rlc3Qs CiAJCQkJCQkJCQkgICBkZWFkb2Zmc2V0cywgbnVtX29mZnNldHMsCiAJCQkJCQkJCQkgICAmYWxs X2Zyb3plbiwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKIAkJCQkJCQkJCSAgICZ2YWNyZWwtPm9m Zm51bSkpCkBAIC0zNDg5LDcgKzM0ODksNyBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0 ZSAqdmFjcmVsKQogICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlIG90 aGVyIHRoYW4gdGhlIHByb3ZpZGVkCiAgKiBkZWFkb2Zmc2V0cyBhbmQgZmFsc2Ugb3RoZXJ3aXNl LgogICoKLSAqIE9sZGVzdFhtaW4gaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0eS4KKyAq IHZpc3Rlc3QgaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0eS4KICAqCiAgKiBPdXRwdXQg cGFyYW1ldGVyczoKICAqCkBAIC0zNTA1LDcgKzM1MDUsNyBAQCBkZWFkX2l0ZW1zX2NsZWFudXAo TFZSZWxTdGF0ZSAqdmFjcmVsKQogICovCiBib29sCiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zp c2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQg T2xkZXN0WG1pbiwKKwkJCQkJCQkgICBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkg ICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLAogCQkJCQkJCSAgIGludCBuZGVhZG9mZnNldHMs CiAJCQkJCQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKQEAgLTM1NzksNyArMzU3OSw3IEBAIGhlYXBf cGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAKIAkJ LyogVmlzaWJpbGl0eSBjaGVja3MgbWF5IGRvIElPIG9yIGFsbG9jYXRlIG1lbW9yeSAqLwogCQlB c3NlcnQoQ3JpdFNlY3Rpb25Db3VudCA9PSAwKTsKLQkJc3dpdGNoIChIZWFwVHVwbGVTYXRpc2Zp ZXNWYWN1dW0oJnR1cGxlLCBPbGRlc3RYbWluLCBidWYpKQorCQlzd2l0Y2ggKEhlYXBUdXBsZVNh dGlzZmllc1ZhY3V1bUdsb2JhbFZpcygmdHVwbGUsIHZpc3Rlc3QsIGJ1ZikpCiAJCXsKIAkJCWNh c2UgSEVBUFRVUExFX0xJVkU6CiAJCQkJewpAQCAtMzU5OCw3ICszNTk4LDcgQEAgaGVhcF9wYWdl X3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJICog dGhhdCBldmVyeW9uZSBzZWVzIGl0IGFzIGNvbW1pdHRlZD8KIAkJCQkJICovCiAJCQkJCXhtaW4g PSBIZWFwVHVwbGVIZWFkZXJHZXRYbWluKHR1cGxlLnRfZGF0YSk7Ci0JCQkJCWlmICghVHJhbnNh Y3Rpb25JZFByZWNlZGVzKHhtaW4sIE9sZGVzdFhtaW4pKQorCQkJCQlpZiAoIUdsb2JhbFZpc1hp ZFZpc2libGVUb0FsbCh2aXN0ZXN0LCB4bWluKSkKIAkJCQkJewogCQkJCQkJYWxsX3Zpc2libGUg PSBmYWxzZTsKIAkJCQkJCSphbGxfZnJvemVuID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXgg OTM3YjQ2YTc3ZGIuLjJiNmE1MjFlNGVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0yNzYsMTAgKzI3 Niw5IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCiAKIAkvKgogCSAqIENvbnRh aW5zIHRoZSBjdXRvZmZzIHVzZWQgZm9yIGZyZWV6aW5nLiBUaGV5IGFyZSByZXF1aXJlZCBpZiB0 aGUKLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuIGN1dG9mZnMtPk9s ZGVzdFhtaW4gaXMgYWxzbyB1c2VkCi0JICogdG8gZGV0ZXJtaW5lIGlmIGRlYWQgdHVwbGVzIGFy ZSBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRCBvcgotCSAqIEhFQVBUVVBMRV9ERUFELiBDdXJyZW50 bHkgb25seSB2YWN1dW0gcGFzc2VzIGluIGN1dG9mZnMuIFZhY3V1bQotCSAqIGNhbGN1bGF0ZXMg dGhlbSBvbmNlLCBhdCB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZyB0aGUgcmVsYXRpb24uCisJ ICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LiBDdXJyZW50bHkgb25seSB2 YWN1dW0gcGFzc2VzIGluCisJICogY3V0b2Zmcy4gVmFjdXVtIGNhbGN1bGF0ZXMgdGhlbSBvbmNl LCBhdCB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZyB0aGUKKwkgKiByZWxhdGlvbi4KIAkgKi8K IAlzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmczsKIH0gUHJ1bmVGcmVlemVQYXJhbXM7CkBA IC00NDQsNyArNDQzLDcgQEAgZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShS ZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIGV4dGVybiB2b2lkIGhlYXBfdmFjdXVt X3JlbChSZWxhdGlvbiByZWwsCiAJCQkJCQkJY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywgQnVm ZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKIGV4dGVybiBib29sIGhlYXBfcGFnZV93b3Vs ZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJCQkJICAg VHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2 aXN0ZXN0LAogCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCiAJCQkJCQkJ CQkJICAgaW50IG5kZWFkb2Zmc2V0cywKIAkJCQkJCQkJCQkgICBib29sICphbGxfZnJvemVuLApA QCAtNDU4LDYgKzQ1Nyw4IEBAIGV4dGVybiBUTV9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVXBk YXRlKEhlYXBUdXBsZSBodHVwLCBDb21tYW5kSWQgY3VyY2lkLAogCQkJCQkJCQkJCSAgQnVmZmVy IGJ1ZmZlcik7CiBleHRlcm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKEhl YXBUdXBsZSBodHVwLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJCQkJCQkJCQkJCUJ1ZmZl ciBidWZmZXIpOworZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUds b2JhbFZpcyhIZWFwVHVwbGUgaHR1cCwKKwkJCQkJCQkJCQkJCQkgR2xvYmFsVmlzU3RhdGUgKnZp c3Rlc3QsIEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlz Zmllc1ZhY3V1bUhvcml6b24oSGVhcFR1cGxlIGh0dXAsIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJ CQkJCQkgICBUcmFuc2FjdGlvbklkICpkZWFkX2FmdGVyKTsKIGV4dGVybiB2b2lkIEhlYXBUdXBs ZVNldEhpbnRCaXRzKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwgQnVmZmVyIGJ1ZmZlciwKLS0gCjIu NDMuMAoK --000000000000fe23c60643d269a4 Content-Type: text/x-patch; charset="UTF-8"; name="v20-0010-Unset-all_visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v20-0010-Unset-all_visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi3r7wzm9 RnJvbSA2ZGExZmNjNWNiNTdjZmMzYjIxZWJiNzQxZGNkZTZmYTIwN2NjYzRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIyOjM1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgMTAvMTJdIFVuc2V0IGFsbF92aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRoZSBwcnVuZS9mcmVlemUgcGF0 aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNpYmxlIGFuZAphbGxfZnJvemVu IGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMKZnJl ZXppbmcuCgpIb3dldmVyLCBpZiBubyBmcmVlemluZyB3aWxsIGJlIGF0dGVtcHRlZCwgdGhlcmXi gJlzIG5vIG5lZWQgdG8gZGVsYXkuCkNsZWFyaW5nIHRoZSBmbGFncyBlYXJsaWVyIGF2b2lkcyBl eHRyYSBib29ra2VlcGluZyBpbgpoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFs KCkuIFRoaXMgY3VycmVudGx5IGhhcyBubyBydW50aW1lCmVmZmVjdCBiZWNhdXNlIGFsbCBjYWxs ZXJzIHRoYXQgY29uc2lkZXIgc2V0dGluZyB0aGUgVk0gYWxzbyBwcmVwYXJlCmZyZWV6ZSBwbGFu cywgYnV0IHVwY29taW5nIGNoYW5nZXMgd2lsbCBhbGxvdyBvbi1hY2Nlc3MgcHJ1bmluZyB0byBz ZXQKdGhlIFZNIHdpdGhvdXQgZnJlZXppbmcuIFRoZSBleHRyYSBib29ra2VlcGluZyB3YXMgbm90 aWNlYWJsZSBpbiBhCnByb2ZpbGUgb2Ygb24tYWNjZXNzIFZNIHNldHRpbmcuCi0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgfCAxNSArKysrKysrKysrKysrLS0KIDEgZmls ZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggZmRiZWQ1YWM3NGQuLmFmYjQyNTFhZDkxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTU2Miw4ICsxNTYyLDEzIEBAIGhlYXBfcHJ1 bmVfcmVjb3JkX2RlYWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSwK IAkvKgogCSAqIERlbGliZXJhdGVseSBkZWxheSB1bnNldHRpbmcgYWxsX3Zpc2libGUgYW5kIGFs bF9mcm96ZW4gdW50aWwgbGF0ZXIKIAkgKiBkdXJpbmcgcHJ1bmluZy4gUmVtb3ZhYmxlIGRlYWQg dHVwbGVzIHNob3VsZG4ndCBwcmVjbHVkZSBmcmVlemluZyB0aGUKLQkgKiBwYWdlLgorCSAqIHBh Z2UuIElmIHdlIHdvbid0IGF0dGVtcHQgZnJlZXppbmcsIGp1c3QgdW5zZXQgYWxsLXZpc2libGUg bm93LCB0aG91Z2guCiAJICovCisJaWYgKCFwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSkKKwl7CisJ CXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBm YWxzZTsKKwl9CiAKIAkvKiBSZWNvcmQgdGhlIGRlYWQgb2Zmc2V0IGZvciB2YWN1dW0gKi8KIAlw cnN0YXRlLT5kZWFkb2Zmc2V0c1twcnN0YXRlLT5scGRlYWRfaXRlbXMrK10gPSBvZmZudW07CkBA IC0xODIyLDggKzE4MjcsMTQgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX2RlYWQo UGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIKIAkgKiBTaW1pbGFy bHksIGRvbid0IHVuc2V0IGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIHVudGlsIGxhdGVyLCBh dCB0aGUKIAkgKiBlbmQgb2YgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKS4gIFRoaXMgd2ls bCBhbGxvdyB1cyB0byBhdHRlbXB0IHRvCiAJICogZnJlZXplIHRoZSBwYWdlIGFmdGVyIHBydW5p bmcuICBBcyBsb25nIGFzIHdlIHVuc2V0IGl0IGJlZm9yZSB1cGRhdGluZwotCSAqIHRoZSB2aXNp YmlsaXR5IG1hcCwgdGhpcyB3aWxsIGJlIGNvcnJlY3QuCisJICogdGhlIHZpc2liaWxpdHkgbWFw LCB0aGlzIHdpbGwgYmUgY29ycmVjdC4gSWYgd2Ugd29uJ3QgYXR0ZW1wdCBmcmVlemluZywKKwkg KiB0aG91Z2gsIGp1c3QgdW5zZXQgYWxsLXZpc2libGUgbm93LgogCSAqLworCWlmICghcHJzdGF0 ZS0+YXR0ZW1wdF9mcmVlemUpCisJeworCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwor CQlwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CisJfQogCiAJLyogUmVjb3JkIHRoZSBkZWFk IG9mZnNldCBmb3IgdmFjdXVtICovCiAJcHJzdGF0ZS0+ZGVhZG9mZnNldHNbcHJzdGF0ZS0+bHBk ZWFkX2l0ZW1zKytdID0gb2ZmbnVtOwotLSAKMi40My4wCgo= --000000000000fe23c60643d269a4 Content-Type: text/x-patch; charset="UTF-8"; name="v20-0011-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v20-0011-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi3r80ea10 RnJvbSA5YWFjNmViZWRiYzY4MzAxZWU4YzNkNmRhOGFlZjU0ODM4ODUxYzkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM0OjMwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgMTEvMTJdIEFsbG93IG9uLWFjY2VzcyBwcnVuaW5nIHRvIHNldCBwYWdlcyBhbGwt dmlzaWJsZQoKTWFueSBxdWVyaWVzIGRvIG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgcmVsYXRp b24uIEZvciBzdWNoIHF1ZXJpZXMsIGlmCm9uLWFjY2VzcyBwcnVuaW5nIG9jY3VycyBkdXJpbmcg dGhlIHNjYW4sIHdlIGNhbiBjaGVjayB3aGV0aGVyIHRoZSBwYWdlCmhhcyBiZWNvbWUgYWxsLXZp c2libGUgYW5kIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYWNjb3JkaW5nbHkuClByZXZpb3Vz bHksIG9ubHkgdmFjdXVtIGFuZCBDT1BZIEZSRUVaRSBtYXJrZWQgcGFnZXMgYXMgYWxsLXZpc2li bGUgb3IKYWxsLWZyb3plbi4KClN1cHBvcnRpbmcgdGhpcyByZXF1aXJlcyBwYXNzaW5nIGluZm9y bWF0aW9uIGFib3V0IHdoZXRoZXIgdGhlIHJlbGF0aW9uCmlzIG1vZGlmaWVkIGZyb20gdGhlIGV4 ZWN1dG9yIGRvd24gdG8gdGhlIHNjYW4gZGVzY3JpcHRvci4KClRoaXMgY29tbWl0IGltcGxlbWVu dHMgb24tYWNjZXNzIFZNIHNldHRpbmcgZm9yIHNlcXVlbnRpYWwgc2NhbnMgYXMgd2VsbAphcyBm b3IgdGhlIHVuZGVybHlpbmcgaGVhcCByZWxhdGlvbiBpbiBpbmRleCBzY2FucyBhbmQgYml0bWFw IGhlYXAKc2NhbnMuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBLaXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwu Y29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2ZsYXQvQ0FBS1J1X1pNdzZOcGRf cW0yS00lMkJGd1EzY01PTXgxRGgzVk1ocDgtVjdTT0x4ZEs5LWclNDBtYWlsLmdtYWlsLmNvbQot LS0KIGNvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tzLmMgICAgICAgICAgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgMyArLQog c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAgICAgICAgIHwgIDMgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8IDE1ICsrKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8IDIyICsrKystLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgICAgIHwgNjkgKysrKysr KysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAg ICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgICAgICAgICAg ICB8ICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAg fCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAgICAgICAgICAgIHwg IDggKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMgICAgICAgICAgICAgfCAg MiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0ICst CiBzcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jICAgICAgICAgICAgICAgfCAgNCArLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgICAgICAgICAgIHwgIDIgKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8ICA0ICsrCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAgICAgICAgfCAgOCArLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICAyICsKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jICAgICB8ICA5ICsrLQogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyAgICAgICAgICB8IDExICsrLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgICAgIHwgMjYgKysrKysrLQogc3JjL2JhY2tl bmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9zZWxmdW5jcy5jICAgICAgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvZ2VuYW0uaCAgICAgICAgICAgICAgICAgICAgfCAgMyArLQogc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICAgIHwgMzAgKysrKysrKy0KIHNyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgICAgICB8IDE5ICsrLS0tCiBzcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgNiArKwogLi4uL3QvMDM1X3N0 YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCAgICAgICAgIHwgIDMgKy0KIDI5IGZpbGVzIGNoYW5n ZWQsIDIxMCBpbnNlcnRpb25zKCspLCA2NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250 cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jIGIvY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9j a3MuYwppbmRleCBmODgyNjkzMzJiNi4uMjdmMDFkODA1NWYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cGdyb3dsb2Nrcy9wZ3Jvd2xvY2tzLmMKKysrIGIvY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9j a3MuYwpAQCAtMTE0LDcgKzExNCw3IEBAIHBncm93bG9ja3MoUEdfRlVOQ1RJT05fQVJHUykKIAkJ CQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7CiAKIAkvKiBTY2FuIHRoZSByZWxh dGlvbiAqLwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBHZXRBY3RpdmVTbmFwc2hvdCgp LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgR2V0QWN0aXZlU25hcHNo b3QoKSwgMCwgTlVMTCwgMCk7CiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOwogCiAJYXR0 aW5tZXRhID0gVHVwbGVEZXNjR2V0QXR0SW5NZXRhZGF0YShyc2luZm8tPnNldERlc2MpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jCmluZGV4IDJmN2QxNDM3OTE5Li44MTg2YmJhMWQ3ZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYwpAQCAtMjgyOCw3ICsyODI4LDggQEAgX2JyaW5fcGFyYWxsZWxfc2Nhbl9h bmRfYnVpbGQoQnJpbkJ1aWxkU3RhdGUgKnN0YXRlLAogCWluZGV4SW5mby0+aWlfQ29uY3VycmVu dCA9IGJyaW5zaGFyZWQtPmlzY29uY3VycmVudDsKIAogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5f cGFyYWxsZWwoaGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJyaW5TaGFyZWQo YnJpbnNoYXJlZCkpOworCQkJCQkJCQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChi cmluc2hhcmVkKSwKKwkJCQkJCQkJCTApOwogCiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVp bGRfc2NhbihoZWFwLCBpbmRleCwgaW5kZXhJbmZvLCB0cnVlLCB0cnVlLAogCQkJCQkJCQkJICAg YnJpbmJ1aWxkQ2FsbGJhY2tQYXJhbGxlbCwgc3RhdGUsIHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4v Z2luaW5zZXJ0LmMKaW5kZXggYzJiODc5YjJiZjYuLjE0Nzg0NDY5MGExIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luaW5zZXJ0LmMKQEAgLTIwNTgsNyArMjA1OCw4IEBAIF9naW5fcGFyYWxsZWxfc2Nh bl9hbmRfYnVpbGQoR2luQnVpbGRTdGF0ZSAqc3RhdGUsCiAJaW5kZXhJbmZvLT5paV9Db25jdXJy ZW50ID0gZ2luc2hhcmVkLT5pc2NvbmN1cnJlbnQ7CiAKIAlzY2FuID0gdGFibGVfYmVnaW5zY2Fu X3BhcmFsbGVsKGhlYXAsCi0JCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21HaW5CdWlsZFNo YXJlZChnaW5zaGFyZWQpKTsKKwkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxk U2hhcmVkKGdpbnNoYXJlZCksCisJCQkJCQkJCQkwKTsKIAogCXJlbHR1cGxlcyA9IHRhYmxlX2lu ZGV4X2J1aWxkX3NjYW4oaGVhcCwgaW5kZXgsIGluZGV4SW5mbywgdHJ1ZSwgcHJvZ3Jlc3MsCiAJ CQkJCQkJCQkgICBnaW5CdWlsZENhbGxiYWNrUGFyYWxsZWwsIHN0YXRlLCBzY2FuKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggMmJmZjM3ZTAzYjUuLmFlNTNlMzExY2UxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNTU1LDYgKzU1NSw3IEBAIGhlYXBfcHJlcGFyZV9wYWdl c2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCUJ1ZmZlcgkJYnVmZmVyID0gc2Nhbi0+cnNfY2J1 ZjsKIAlCbG9ja051bWJlciBibG9jayA9IHNjYW4tPnJzX2NibG9jazsKIAlTbmFwc2hvdAlzbmFw c2hvdDsKKwlCdWZmZXIJICAgKnZtYnVmZmVyID0gTlVMTDsKIAlQYWdlCQlwYWdlOwogCWludAkJ CWxpbmVzOwogCWJvb2wJCWFsbF92aXNpYmxlOwpAQCAtNTY5LDcgKzU3MCw5IEBAIGhlYXBfcHJl cGFyZV9wYWdlc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCS8qCiAJICogUHJ1bmUgYW5kIHJl cGFpciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICov Ci0JaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNlLnJzX3JkLCBidWZmZXIpOworCWlm IChzc2Nhbi0+cnNfZmxhZ3MgJiBTT19ISU5UX1JFTF9SRUFEX09OTFkpCisJCXZtYnVmZmVyID0g JnNjYW4tPnJzX3ZtYnVmZmVyOworCWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfYmFzZS5y c19yZCwgYnVmZmVyLCB2bWJ1ZmZlcik7CiAKIAkvKgogCSAqIFdlIG11c3QgaG9sZCBzaGFyZSBs b2NrIG9uIHRoZSBidWZmZXIgY29udGVudCB3aGlsZSBleGFtaW5pbmcgdHVwbGUKQEAgLTEyNDYs NiArMTI0OSw3IEBAIGhlYXBfYmVnaW5zY2FuKFJlbGF0aW9uIHJlbGF0aW9uLCBTbmFwc2hvdCBz bmFwc2hvdCwKIAkJCQkJCQkJCQkJCQkJICBzaXplb2YoVEJNSXRlcmF0ZVJlc3VsdCkpOwogCX0K IAorCXNjYW4tPnJzX3ZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAogCXJldHVybiAoVGFibGVT Y2FuRGVzYykgc2NhbjsKIH0KQEAgLTEyODQsNiArMTI4OCwxMiBAQCBoZWFwX3Jlc2NhbihUYWJs ZVNjYW5EZXNjIHNzY2FuLCBTY2FuS2V5IGtleSwgYm9vbCBzZXRfcGFyYW1zLAogCQlzY2FuLT5y c19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAl9CiAKKwlpZiAoQnVmZmVySXNWYWxpZChzY2FuLT5y c192bWJ1ZmZlcikpCisJeworCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwkJ c2Nhbi0+cnNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCX0KKwogCS8qCiAJICogU09fVFlQ RV9CSVRNQVBTQ0FOIHdvdWxkIGJlIGNsZWFuZWQgdXAgaGVyZSwgYnV0IGl0IGRvZXMgbm90IGhv bGQgYW55CiAJICogYWRkaXRpb25hbCBkYXRhIHZzIGEgbm9ybWFsIEhlYXBTY2FuCkBAIC0xMzE2 LDYgKzEzMjYsOSBAQCBoZWFwX2VuZHNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAlpZiAoQnVm ZmVySXNWYWxpZChzY2FuLT5yc19jYnVmKSkKIAkJUmVsZWFzZUJ1ZmZlcihzY2FuLT5yc19jYnVm KTsKIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX3ZtYnVmZmVyKSkKKwkJUmVsZWFzZUJ1 ZmZlcihzY2FuLT5yc192bWJ1ZmZlcik7CisKIAkvKgogCSAqIE11c3QgZnJlZSB0aGUgcmVhZCBz dHJlYW0gYmVmb3JlIGZyZWVpbmcgdGhlIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5LgogCSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggYmNiYWM4NDRiYjYuLjI3 ZTM0OThmNWY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAg LTc5LDEyICs3OSwxNCBAQCBoZWFwYW1fc2xvdF9jYWxsYmFja3MoUmVsYXRpb24gcmVsYXRpb24p CiAgKi8KIAogc3RhdGljIEluZGV4RmV0Y2hUYWJsZURhdGEgKgotaGVhcGFtX2luZGV4X2ZldGNo X2JlZ2luKFJlbGF0aW9uIHJlbCkKK2hlYXBhbV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiBy ZWwsIHVpbnQzMiBmbGFncykKIHsKIAlJbmRleEZldGNoSGVhcERhdGEgKmhzY2FuID0gcGFsbG9j MChzaXplb2YoSW5kZXhGZXRjaEhlYXBEYXRhKSk7CiAKIAloc2Nhbi0+eHNfYmFzZS5yZWwgPSBy ZWw7CiAJaHNjYW4tPnhzX2NidWYgPSBJbnZhbGlkQnVmZmVyOworCWhzY2FuLT54c192bWJ1ZmZl ciA9IEludmFsaWRCdWZmZXI7CisJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID0gIShmbGFncyAm IFNPX0hJTlRfUkVMX1JFQURfT05MWSk7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwogfQpA QCAtOTksNiArMTAxLDEyIEBAIGhlYXBhbV9pbmRleF9mZXRjaF9yZXNldChJbmRleEZldGNoVGFi bGVEYXRhICpzY2FuKQogCQlSZWxlYXNlQnVmZmVyKGhzY2FuLT54c19jYnVmKTsKIAkJaHNjYW4t PnhzX2NidWYgPSBJbnZhbGlkQnVmZmVyOwogCX0KKworCWlmIChCdWZmZXJJc1ZhbGlkKGhzY2Fu LT54c192bWJ1ZmZlcikpCisJeworCQlSZWxlYXNlQnVmZmVyKGhzY2FuLT54c192bWJ1ZmZlcik7 CisJCWhzY2FuLT54c192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJfQogfQogCiBzdGF0aWMg dm9pZApAQCAtMTM4LDcgKzE0Niw4IEBAIGhlYXBhbV9pbmRleF9mZXRjaF90dXBsZShzdHJ1Y3Qg SW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiwKIAkJICogUHJ1bmUgcGFnZSwgYnV0IG9ubHkgaWYg d2Ugd2VyZW4ndCBhbHJlYWR5IG9uIHRoaXMgcGFnZQogCQkgKi8KIAkJaWYgKHByZXZfYnVmICE9 IGhzY2FuLT54c19jYnVmKQotCQkJaGVhcF9wYWdlX3BydW5lX29wdChoc2Nhbi0+eHNfYmFzZS5y ZWwsIGhzY2FuLT54c19jYnVmKTsKKwkJCWhlYXBfcGFnZV9wcnVuZV9vcHQoaHNjYW4tPnhzX2Jh c2UucmVsLCBoc2Nhbi0+eHNfY2J1ZiwKKwkJCQkJCQkJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVs ID8gTlVMTCA6ICZoc2Nhbi0+eHNfdm1idWZmZXIpOwogCX0KIAogCS8qIE9idGFpbiBzaGFyZS1s b2NrIG9uIHRoZSBidWZmZXIgc28gd2UgY2FuIGV4YW1pbmUgdmlzaWJpbGl0eSAqLwpAQCAtNzUz LDcgKzc2Miw3IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9s ZEhlYXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAKIAkJdGFibGVTY2FuID0gTlVMTDsKIAkJaGVhcFNj YW4gPSBOVUxMOwotCQlpbmRleFNjYW4gPSBpbmRleF9iZWdpbnNjYW4oT2xkSGVhcCwgT2xkSW5k ZXgsIFNuYXBzaG90QW55LCBOVUxMLCAwLCAwKTsKKwkJaW5kZXhTY2FuID0gaW5kZXhfYmVnaW5z Y2FuKE9sZEhlYXAsIE9sZEluZGV4LCBTbmFwc2hvdEFueSwgTlVMTCwgMCwgMCwgMCk7CiAJCWlu ZGV4X3Jlc2NhbihpbmRleFNjYW4sIE5VTEwsIDAsIE5VTEwsIDApOwogCX0KIAllbHNlCkBAIC03 NjIsNyArNzcxLDcgQEAgaGVhcGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24g T2xkSGVhcCwgUmVsYXRpb24gTmV3SGVhcCwKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DTFVTVEVSX1BIQVNFLAogCQkJCQkJCQkJIFBST0dSRVNTX0NMVVNURVJfUEhB U0VfU0VRX1NDQU5fSEVBUCk7CiAKLQkJdGFibGVTY2FuID0gdGFibGVfYmVnaW5zY2FuKE9sZEhl YXAsIFNuYXBzaG90QW55LCAwLCAoU2NhbktleSkgTlVMTCk7CisJCXRhYmxlU2NhbiA9IHRhYmxl X2JlZ2luc2NhbihPbGRIZWFwLCBTbmFwc2hvdEFueSwgMCwgKFNjYW5LZXkpIE5VTEwsIDApOwog CQloZWFwU2NhbiA9IChIZWFwU2NhbkRlc2MpIHRhYmxlU2NhbjsKIAkJaW5kZXhTY2FuID0gTlVM TDsKIApAQCAtMjQ3MSw2ICsyNDgwLDcgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVT Y2FuRGVzYyBzY2FuLAogCVRCTUl0ZXJhdGVSZXN1bHQgKnRibXJlczsKIAlPZmZzZXROdW1iZXIg b2Zmc2V0c1tUQk1fTUFYX1RVUExFU19QRVJfUEFHRV07CiAJaW50CQkJbm9mZnNldHMgPSAtMTsK KwlCdWZmZXIJICAgKnZtYnVmZmVyID0gTlVMTDsKIAogCUFzc2VydChzY2FuLT5yc19mbGFncyAm IFNPX1RZUEVfQklUTUFQU0NBTik7CiAJQXNzZXJ0KGhzY2FuLT5yc19yZWFkX3N0cmVhbSk7CkBA IC0yNTE3LDcgKzI1MjcsOSBAQCBCaXRtYXBIZWFwU2Nhbk5leHRCbG9jayhUYWJsZVNjYW5EZXNj IHNjYW4sCiAJLyoKIAkgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gZm9yIHRoZSB3 aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4KIAkgKi8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4t PnJzX3JkLCBidWZmZXIpOworCWlmIChzY2FuLT5yc19mbGFncyAmIFNPX0hJTlRfUkVMX1JFQURf T05MWSkKKwkJdm1idWZmZXIgPSAmaHNjYW4tPnJzX3ZtYnVmZmVyOworCWhlYXBfcGFnZV9wcnVu ZV9vcHQoc2Nhbi0+cnNfcmQsIGJ1ZmZlciwgdm1idWZmZXIpOwogCiAJLyoKIAkgKiBXZSBtdXN0 IGhvbGQgc2hhcmUgbG9jayBvbiB0aGUgYnVmZmVyIGNvbnRlbnQgd2hpbGUgZXhhbWluaW5nIHR1 cGxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IGFmYjQyNTFhZDkxLi44MDEx MTMwY2E4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTE5Nyw3ICsxOTcs OSBAQCBzdGF0aWMgYm9vbCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9u LAogCQkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWYsCiAJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZl ciwKIAkJCQkJCQkJICAgYm9vbCBibGtfa25vd25fYXYsCi0JCQkJCQkJCSAgIGNvbnN0IFBydW5l U3RhdGUgKnByc3RhdGUsCisJCQkJCQkJCSAgIFBydW5lUmVhc29uIHJlYXNvbiwKKwkJCQkJCQkJ ICAgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsCisJCQkJCQkJCSAgIFBydW5lU3RhdGUg KnByc3RhdGUsCiAJCQkJCQkJCSAgIHVpbnQ4ICp2bWZsYWdzLAogCQkJCQkJCQkgICBib29sICpk b19zZXRfcGRfdmlzKTsKIApAQCAtMjEyLDkgKzIxNCwxMyBAQCBzdGF0aWMgYm9vbCBoZWFwX3Bh Z2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAogICogaWYgdGhlcmUncyBub3QgYW55 IHVzZSBpbiBwcnVuaW5nLgogICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIG9uIHRoZSBidWZm ZXIsIGFuZCBtdXN0ICpub3QqIGhhdmUgYSBsb2NrIG9uIGl0LgorICoKKyAqIElmIHZtYnVmZmVy IGlzIG5vdCBOVUxMLCBpdCBpcyBva2F5IGZvciBwcnVuaW5nIHRvIHNldCB0aGUgdmlzaWJpbGl0 eSBtYXAgaWYKKyAqIHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlLiBXZSB3aWxsIHRha2UgY2FyZSBv ZiBwaW5uaW5nIGFuZCwgaWYgbmVlZGVkLAorICogcmVhZGluZyBpbiB0aGUgcGFnZSBvZiB0aGUg dmlzaWJpbGl0eSBtYXAuCiAgKi8KIHZvaWQKLWhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCitoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLCBCdWZmZXIgKnZtYnVmZmVyKQogewogCVBhZ2UJCXBhZ2Ug PSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJVHJhbnNhY3Rpb25JZCBwcnVuZV94aWQ7CkBAIC0y OTEsNiArMjk3LDEzIEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIpCiAJCQkJLnZpc3Rlc3QgPSB2aXN0ZXN0LC5jdXRvZmZzID0gTlVMTAogCQkJ fTsKIAorCQkJaWYgKHZtYnVmZmVyKQorCQkJeworCQkJCXZpc2liaWxpdHltYXBfcGluKHJlbGF0 aW9uLCBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLCB2bWJ1ZmZlcik7CisJCQkJcGFyYW1z Lm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUzsKKwkJCQlwYXJhbXMudm1idWZm ZXIgPSAqdm1idWZmZXI7CisJCQl9CisKIAkJCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCZw YXJhbXMsICZwcmVzdWx0LCAmZHVtbXlfb2ZmX2xvYywKIAkJCQkJCQkJCSAgIE5VTEwsIE5VTEwp OwogCkBAIC03ODEsNiArNzk0LDkgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogICogaGF2ZSBleGFtaW5lZCB0aGlzIHBhZ2XigJlzIFZN IGJpdHMgKGUuZy4sIFZBQ1VVTSBpbiB0aGUgcHJldmlvdXMKICAqIGhlYXBfdmFjX3NjYW5fbmV4 dF9ibG9jaygpIGNhbGwpIGFuZCBjYW4gcGFzcyB0aGF0IGFsb25nLgogICoKKyAqIFRoaXMgc2hv dWxkIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGRvX2ZyZWV6ZSBoYXMgYmVlbiBkZWNpZGVkIChhbmQg ZG9fcHJ1bmUKKyAqIGhhcyBiZWVuIHNldCksIGFzIHRoZXNlIGZhY3RvciBpbnRvIG91ciBoZXVy aXN0aWMtYmFzZWQgZGVjaXNpb24uCisgKgogICogUmV0dXJucyB0cnVlIGlmIG9uZSBvciBib3Ro IFZNIGJpdHMgc2hvdWxkIGJlIHNldCwgYWxvbmcgd2l0aCB0aGUgZGVzaXJlZAogICogZmxhZ3Mg aW4gKnZtZmxhZ3MuIEFsc28gaW5kaWNhdGVzIHZpYSBkb19zZXRfcGRfdmlzIHdoZXRoZXIgUERf QUxMX1ZJU0lCTEUKICAqIHNob3VsZCBiZSBzZXQgb24gdGhlIGhlYXAgcGFnZS4KQEAgLTc5MSw3 ICs4MDcsOSBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJ CQkgICBCdWZmZXIgaGVhcF9idWYsCiAJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKIAkJCQkJICAg Ym9vbCBibGtfa25vd25fYXYsCi0JCQkJCSAgIGNvbnN0IFBydW5lU3RhdGUgKnByc3RhdGUsCisJ CQkJCSAgIFBydW5lUmVhc29uIHJlYXNvbiwKKwkJCQkJICAgYm9vbCBkb19wcnVuZSwgYm9vbCBk b19mcmVlemUsCisJCQkJCSAgIFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCQkJCSAgIHVpbnQ4ICp2 bWZsYWdzLAogCQkJCQkgICBib29sICpkb19zZXRfcGRfdmlzKQogewpAQCAtODA3LDYgKzgyNSwy MyBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAogCQlyZXR1cm4g ZmFsc2U7CiAJfQogCisJLyoKKwkgKiBJZiB0aGlzIGlzIGFuIG9uLWFjY2VzcyBjYWxsIGFuZCB3 ZSdyZSBub3QgYWN0dWFsbHkgcHJ1bmluZywgYXZvaWQKKwkgKiBzZXR0aW5nIHRoZSB2aXNpYmls aXR5IG1hcCBpZiBpdCB3b3VsZCBuZXdseSBkaXJ0eSB0aGUgaGVhcCBwYWdlIG9yLCBpZgorCSAq IHRoZSBwYWdlIGlzIGFscmVhZHkgZGlydHksIGlmIGRvaW5nIHNvIHdvdWxkIHJlcXVpcmUgaW5j bHVkaW5nIGEKKwkgKiBmdWxsLXBhZ2UgaW1hZ2UgKEZQSSkgb2YgdGhlIGhlYXAgcGFnZSBpbiB0 aGUgV0FMLiBUaGlzIHNpdHVhdGlvbgorCSAqIHNob3VsZCBiZSByYXJlLCBhcyBvbi1hY2Nlc3Mg cHJ1bmluZyBpcyBvbmx5IGF0dGVtcHRlZCB3aGVuCisJICogcGRfcHJ1bmVfeGlkIGlzIHZhbGlk LgorCSAqLworCWlmIChyZWFzb24gPT0gUFJVTkVfT05fQUNDRVNTICYmCisJCXByc3RhdGUtPmFs bF92aXNpYmxlICYmCisJCSFkb19wcnVuZSAmJiAhZG9fZnJlZXplICYmCisJCSghQnVmZmVySXNE aXJ0eShoZWFwX2J1ZikgfHwgWExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoaGVhcF9idWYpKSkK Kwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNl OworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJaWYgKHByc3RhdGUtPmFsbF92aXNpYmxlICYmICFQ YWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkpCiAJCSpkb19zZXRfcGRfdmlzID0gdHJ1ZTsKIApA QCAtODMwLDYgKzg2NSwxMSBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0 aW9uLAogCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJs ZSB0aGF0IGluIHZhY3V1bSB0aGUgYml0CiAJICogZ290IGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNf c2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxlZCwgc28gd2UgbXVzdAogCSAqIHJlY2hlY2sgd2l0 aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0Lgor CSAqCisJICogVGhpcyB3aWxsIG5ldmVyIHRyaWdnZXIgZm9yIG9uLWFjY2VzcyBwcnVuaW5nIGJl Y2F1c2UgaXQgY291bGRuJ3QgaGF2ZQorCSAqIGRvbmUgYSBwcmV2aW91cyB2aXNpYmlsaXR5IG1h cCBsb29rdXAgYW5kIHRodXMgd2lsbCBhbHdheXMgcGFzcworCSAqIGJsa19rbm93bl9hdiBhcyBm YWxzZS4gQSBmdXR1cmUgdmFjdXVtIHdpbGwgaGF2ZSB0byB0YWtlIGNhcmUgb2YgZml4aW5nCisJ ICogdGhlIGNvcnJ1cHRpb24uCiAJICovCiAJZWxzZSBpZiAoYmxrX2tub3duX2F2ICYmICFQYWdl SXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKIAkJCSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMo cmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpICE9IDApCkBAIC05OTEsNiArMTAzMSwxNCBA QCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAog CQlwcnN0YXRlLm5kZWFkID4gMCB8fAogCQlwcnN0YXRlLm51bnVzZWQgPiAwOwogCisJLyoKKwkg KiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5nLCBpZiB3ZSBmb3VuZCBhIG5ldyB2YWx1 ZSBmb3IgdGhlCisJICogcGRfcHJ1bmVfeGlkIGZpZWxkIG9yIHRoZSBwYWdlIHdhcyBtYXJrZWQg ZnVsbCwgd2Ugd2lsbCB1cGRhdGUgdGhlIGhpbnQKKwkgKiBiaXQuCisJICovCisJZG9faGludF9w cnVuZSA9ICgoUGFnZUhlYWRlcikgcGFnZSktPnBkX3BydW5lX3hpZCAhPSBwcnN0YXRlLm5ld19w cnVuZV94aWQgfHwKKwkJUGFnZUlzRnVsbChwYWdlKTsKKwogCS8qCiAJICogQWZ0ZXIgcHJvY2Vz c2luZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLCBpZiB0aGUgbmV3ZXN0IHhtaW4K IAkgKiBhbW9uZ3N0IHRoZW0gaXMgbm90IHZpc2libGUgdG8gZXZlcnlvbmUsIHRoZSBwYWdlIGNh bm5vdCBiZQpAQCAtMTAwMSwxNCArMTA0OSw2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCSFHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwo cHJzdGF0ZS52aXN0ZXN0LCBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpCiAJCXByc3Rh dGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsKIAotCS8qCi0JICog RXZlbiBpZiB3ZSBkb24ndCBwcnVuZSBhbnl0aGluZywgaWYgd2UgZm91bmQgYSBuZXcgdmFsdWUg Zm9yIHRoZQotCSAqIHBkX3BydW5lX3hpZCBmaWVsZCBvciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1 bGwsIHdlIHdpbGwgdXBkYXRlIHRoZSBoaW50Ci0JICogYml0LgotCSAqLwotCWRvX2hpbnRfcHJ1 bmUgPSAoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9wcnVuZV94aWQgIT0gcHJzdGF0ZS5uZXdfcHJ1 bmVfeGlkIHx8Ci0JCVBhZ2VJc0Z1bGwocGFnZSk7Ci0KIAkvKgogCSAqIERlY2lkZSBpZiB3ZSB3 YW50IHRvIGdvIGFoZWFkIHdpdGggZnJlZXppbmcgYWNjb3JkaW5nIHRvIHRoZSBmcmVlemUKIAkg KiBwbGFucyB3ZSBwcmVwYXJlZCwgb3Igbm90LgpAQCAtMTA1Miw2ICsxMDkyLDcgQEAgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkgKi8KIAlk b19zZXRfdm0gPSBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKHBhcmFtcy0+cmVsYXRpb24sCiAJCQkJ CQkJCQkgICBibG9ja25vLCBidWZmZXIsIHZtYnVmZmVyLCBwYXJhbXMtPmJsa19rbm93bl9hdiwK KwkJCQkJCQkJCSAgIHBhcmFtcy0+cmVhc29uLCBkb19wcnVuZSwgZG9fZnJlZXplLAogCQkJCQkJ CQkJICAgJnByc3RhdGUsICZuZXdfdm1iaXRzLCAmZG9fc2V0X3BkX3Zpcyk7CiAKIAkvKiBXZSBz aG91bGQgb25seSBzZXQgdGhlIFZNIGlmIFBEX0FMTF9WSVNJQkxFIGlzIHNldCBvciB3aWxsIGJl ICovCkBAIC0yMzM4LDcgKzIzNzksNyBAQCBoZWFwX2xvZ19mcmVlemVfcGxhbihIZWFwVHVwbGVG cmVlemUgKnR1cGxlcywgaW50IG50dXBsZXMsCiAKIC8qCiAgKiBDYWxjdWxhdGUgdGhlIGNvbmZs aWN0IGhvcml6b24gZm9yIHRoZSB3aG9sZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FOCi0g KiByZWNvcmQuCisgKiBvciBYTE9HX0hFQVAyX1BSVU5FX09OX0FDQ0VTUyByZWNvcmQuCiAgKi8K IHN0YXRpYyBUcmFuc2FjdGlvbklkCiBnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1bmUsIGJv b2wgZG9fZnJlZXplLCBib29sIGRvX3NldF92bSwKQEAgLTI0MDgsOCArMjQ0OSw4IEBAIGdldF9j b25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsIGJvb2wgZG9fc2V0X3Zt LAogICogLSBSZWFwaW5nOiBEdXJpbmcgdmFjdXVtIHBoYXNlIElJSSwgaXRlbXMgdGhhdCBhcmUg YWxyZWFkeSBMUF9ERUFEIGFyZQogICogICBtYXJrZWQgYXMgdW51c2VkLgogICoKLSAqIC0gVk0g dXBkYXRlczogQWZ0ZXIgdmFjdXVtIHBoYXNlcyBJIGFuZCBJSUksIHRoZSBoZWFwIHBhZ2UgbWF5 IGJlIG1hcmtlZAotICogICBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbi4KKyAqIC0gVk0gdXBk YXRlczogQWZ0ZXIgdmFjdXVtIHBoYXNlcyBJIGFuZCBJSUkgYW5kIG9uLWFjY2VzcywgdGhlIGhl YXAgcGFnZQorICogICBtYXkgYmUgbWFya2VkIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuLgog ICoKICAqIFRoZXNlIGNoYW5nZXMgYWxsIGhhcHBlbiB0b2dldGhlciwgc28gd2UgdXNlIGEgc2lu Z2xlIFdBTCByZWNvcmQgZm9yIHRoZW0KICAqIGFsbC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMK aW5kZXggMGNiMjdhZjEzMTAuLjFlNzk5MmRiZWIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0u YwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHN5c3RhYmxlX2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJCX0KIAogCQlzeXNzY2FuLT5pc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwUmVs YXRpb24sIGlyZWwsCi0JCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywgMCk7CisJCQkJ CQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywgMCwgMCk7CiAJCWluZGV4X3Jlc2NhbihzeXNz Y2FuLT5pc2NhbiwgaWR4a2V5LCBua2V5cywgTlVMTCwgMCk7CiAJCXN5c3NjYW4tPnNjYW4gPSBO VUxMOwogCkBAIC03MDgsNyArNzA4LDcgQEAgc3lzdGFibGVfYmVnaW5zY2FuX29yZGVyZWQoUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCX0KIAogCXN5c3NjYW4tPmlzY2FuID0gaW5kZXhfYmVnaW5z Y2FuKGhlYXBSZWxhdGlvbiwgaW5kZXhSZWxhdGlvbiwKLQkJCQkJCQkJCSBzbmFwc2hvdCwgTlVM TCwgbmtleXMsIDApOworCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywgMCwgMCk7CiAJ aW5kZXhfcmVzY2FuKHN5c3NjYW4tPmlzY2FuLCBpZHhrZXksIG5rZXlzLCBOVUxMLCAwKTsKIAlz eXNzY2FuLT5zY2FuID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2luZGV4YW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKaW5kZXgg MDQ5MmQ5MmQyM2IuLmI1NTIzY2YyYWIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aW5kZXgvaW5kZXhhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMK QEAgLTI1Nyw3ICsyNTcsNyBAQCBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogCQkJCVJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJU25hcHNob3Qgc25hcHNob3QsCiAJ CQkJSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LAotCQkJCWludCBua2V5cywg aW50IG5vcmRlcmJ5cykKKwkJCQlpbnQgbmtleXMsIGludCBub3JkZXJieXMsIHVpbnQzMiBmbGFn cykKIHsKIAlJbmRleFNjYW5EZXNjIHNjYW47CiAKQEAgLTI4NCw3ICsyODQsNyBAQCBpbmRleF9i ZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXNjYW4tPmluc3RydW1lbnQgPSBpbnN0 cnVtZW50OwogCiAJLyogcHJlcGFyZSB0byBmZXRjaCBpbmRleCBtYXRjaGVzIGZyb20gdGFibGUg Ki8KLQlzY2FuLT54c19oZWFwZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihoZWFwUmVs YXRpb24pOworCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGhl YXBSZWxhdGlvbiwgZmxhZ3MpOwogCiAJcmV0dXJuIHNjYW47CiB9CkBAIC02MTUsNyArNjE1LDcg QEAgaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIGlu ZGV4cmVsLAogCXNjYW4tPmluc3RydW1lbnQgPSBpbnN0cnVtZW50OwogCiAJLyogcHJlcGFyZSB0 byBmZXRjaCBpbmRleCBtYXRjaGVzIGZyb20gdGFibGUgKi8KLQlzY2FuLT54c19oZWFwZmV0Y2gg PSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihoZWFwcmVsKTsKKwlzY2FuLT54c19oZWFwZmV0Y2gg PSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihoZWFwcmVsLCAwKTsKIAogCXJldHVybiBzY2FuOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA0NTRhZGFlZTdkYy4uMDJhYjAy MzNlNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0xOTI1LDcgKzE5MjUs NyBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29s ICpidHNwb29sMiwKIAlpbmRleEluZm8gPSBCdWlsZEluZGV4SW5mbyhidHNwb29sLT5pbmRleCk7 CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnRzaGFyZWQtPmlzY29uY3VycmVudDsKIAlz Y2FuID0gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKGJ0c3Bvb2wtPmhlYXAsCi0JCQkJCQkJCQlQ YXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCkpOworCQkJCQkJCQkJUGFyYWxs ZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpLCAwKTsKIAlyZWx0dXBsZXMgPSB0YWJs ZV9pbmRleF9idWlsZF9zY2FuKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmluZGV4LCBpbmRleElu Zm8sCiAJCQkJCQkJCQkgICB0cnVlLCBwcm9ncmVzcywgX2J0X2J1aWxkX2NhbGxiYWNrLAogCQkJ CQkJCQkJICAgJmJ1aWxkc3RhdGUsIHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMK aW5kZXggNWU0MTQwNDkzN2UuLjU1OGM0NDk3OTkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJs ZWFtLmMKQEAgLTUwLDYgKzUwLDcgQEAgY2hhcgkgICAqZGVmYXVsdF90YWJsZV9hY2Nlc3NfbWV0 aG9kID0gREVGQVVMVF9UQUJMRV9BQ0NFU1NfTUVUSE9EOwogYm9vbAkJc3luY2hyb25pemVfc2Vx c2NhbnMgPSB0cnVlOwogCiAKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU2xvdCBmdW5j dGlvbnMuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNjMsMTAgKzE2NCwxMSBAQCB0YWJs ZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsIFBhcmFsbGVsVGFibGVTY2Fu RGVzYyBwc2NhbiwKIH0KIAogVGFibGVTY2FuRGVzYwotdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVs KFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pCit0YWJsZV9i ZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVsVGFibGVTY2FuRGVz YyBwc2NhbiwgdWludDMyIGZsYWdzKQogewogCVNuYXBzaG90CXNuYXBzaG90OwotCXVpbnQzMgkJ ZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfAorCisJZmxhZ3MgfD0gU09fVFlQRV9TRVFTQ0FOIHwK IAkJU09fQUxMT1dfU1RSQVQgfCBTT19BTExPV19TWU5DIHwgU09fQUxMT1dfUEFHRU1PREU7CiAK IAlBc3NlcnQoUmVsRmlsZUxvY2F0b3JFcXVhbHMocmVsYXRpb24tPnJkX2xvY2F0b3IsIHBzY2Fu LT5waHNfbG9jYXRvcikpOwpAQCAtMjE3LDcgKzIxOSw3IEBAIHRhYmxlX2luZGV4X2ZldGNoX3R1 cGxlX2NoZWNrKFJlbGF0aW9uIHJlbCwKIAlib29sCQlmb3VuZDsKIAogCXNsb3QgPSB0YWJsZV9z bG90X2NyZWF0ZShyZWwsIE5VTEwpOwotCXNjYW4gPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihy ZWwpOworCXNjYW4gPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihyZWwsIDApOwogCWZvdW5kID0g dGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoc2NhbiwgdGlkLCBzbmFwc2hvdCwgc2xvdCwgJmNhbGxf YWdhaW4sCiAJCQkJCQkJCQlhbGxfZGVhZCk7CiAJdGFibGVfaW5kZXhfZmV0Y2hfZW5kKHNjYW4p OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29uc3RyYWludC5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29uc3RyYWludC5jCmluZGV4IDM0OTdhODIyMWYyLi45N2M4Mjc4ZTM2 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29uc3RyYWludC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYwpAQCAtMTA2LDcgKzEwNiw3IEBAIHVuaXF1 ZV9rZXlfcmVjaGVjayhQR19GVU5DVElPTl9BUkdTKQogCSAqLwogCXRtcHRpZCA9IGNoZWNrdGlk OwogCXsKLQkJSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiA9IHRhYmxlX2luZGV4X2ZldGNoX2Jl Z2luKHRyaWdkYXRhLT50Z19yZWxhdGlvbik7CisJCUluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4g PSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbih0cmlnZGF0YS0+dGdfcmVsYXRpb24sIDApOwogCQli b29sCQljYWxsX2FnYWluID0gZmFsc2U7CiAKIAkJaWYgKCF0YWJsZV9pbmRleF9mZXRjaF90dXBs ZShzY2FuLCAmdG1wdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmlu ZGV4IGNlZjQ1MjU4NGU1Li4yMmI0NTNkYzYxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTEx NTYsNyArMTE1Niw3IEBAIENvcHlSZWxhdGlvblRvKENvcHlUb1N0YXRlIGNzdGF0ZSwgUmVsYXRp b24gcmVsLCBSZWxhdGlvbiByb290X3JlbCwgdWludDY0ICpwcm9jCiAJQXR0ck1hcCAgICAqbWFw ID0gTlVMTDsKIAlUdXBsZVRhYmxlU2xvdCAqcm9vdF9zbG90ID0gTlVMTDsKIAotCXNjYW5kZXNj ID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgR2V0QWN0aXZlU25hcHNob3QoKSwgMCwgTlVMTCk7CisJ c2NhbmRlc2MgPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBHZXRBY3RpdmVTbmFwc2hvdCgpLCAwLCBO VUxMLCAwKTsKIAlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKIAogCS8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDIzZWJhYTNmMjMwLi42NmM0MTgwNTlmZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTYzNDUsNyArNjM0NSw3IEBAIEFUUmV3cml0ZVRh YmxlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgT2lkIE9JRE5ld0hlYXApCiAJCSAqIGNoZWNraW5n IGFsbCB0aGUgY29uc3RyYWludHMuCiAJCSAqLwogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNo b3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ob2xkcmVs LCBzbmFwc2hvdCwgMCwgTlVMTCk7CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ob2xkcmVsLCBz bmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAkJLyoKIAkJICogU3dpdGNoIHRvIHBlci10dXBsZSBt ZW1vcnkgY29udGV4dCBhbmQgcmVzZXQgaXQgZm9yIGVhY2ggdHVwbGUKQEAgLTEzNzMwLDcgKzEz NzMwLDcgQEAgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpjb25uYW1lLAogCSAq LwogCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKIAlz bG90ID0gdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKLQlzY2FuID0gdGFibGVfYmVnaW5z Y2FuKHJlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVs LCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAlwZXJUdXBDeHQgPSBBbGxvY1NldENvbnRleHRD cmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCiAJCQkJCQkJCQkgICJ2YWxpZGF0ZUZvcmVpZ25L ZXlDb25zdHJhaW50IiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCmluZGV4IDU5Nzk1ODAxMzlmLi4z NTU2MGFjNjBkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCkBAIC0zMTU0LDcgKzMxNTQsNyBA QCB2YWxpZGF0ZURvbWFpbk5vdE51bGxDb25zdHJhaW50KE9pZCBkb21haW5vaWQpCiAKIAkJLyog U2NhbiBhbGwgdHVwbGVzIGluIHRoaXMgcmVsYXRpb24gKi8KIAkJc25hcHNob3QgPSBSZWdpc3Rl clNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2Fu KHRlc3RyZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0 ZXN0cmVsLCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAJCXNsb3QgPSB0YWJsZV9zbG90X2NyZWF0 ZSh0ZXN0cmVsLCBOVUxMKTsKIAkJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2Nhbiwg Rm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNsb3QpKQogCQl7CkBAIC0zMjM1LDcgKzMyMzUsNyBAQCB2 YWxpZGF0ZURvbWFpbkNoZWNrQ29uc3RyYWludChPaWQgZG9tYWlub2lkLCBjb25zdCBjaGFyICpj Y2JpbiwgTE9DS01PREUgbG9ja21vZAogCiAJCS8qIFNjYW4gYWxsIHR1cGxlcyBpbiB0aGlzIHJl bGF0aW9uICovCiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hv dCgpKTsKLQkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0ZXN0cmVsLCBzbmFwc2hvdCwgMCwgTlVM TCk7CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEws IDApOwogCQlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUodGVzdHJlbCwgTlVMTCk7CiAJCXdoaWxl ICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzbG90 KSkKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCA0MDE2MDZmODQwYS4u NGUzOWFjMDBmMzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGlu Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC04MTUsNyAr ODE1LDcgQEAgY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KFJlbGF0aW9uIGhl YXAsIFJlbGF0aW9uIGluZGV4LAogcmV0cnk6CiAJY29uZmxpY3QgPSBmYWxzZTsKIAlmb3VuZF9z ZWxmID0gZmFsc2U7Ci0JaW5kZXhfc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwLCBpbmRleCwg JkRpcnR5U25hcHNob3QsIE5VTEwsIGluZG5rZXlhdHRzLCAwKTsKKwlpbmRleF9zY2FuID0gaW5k ZXhfYmVnaW5zY2FuKGhlYXAsIGluZGV4LCAmRGlydHlTbmFwc2hvdCwgTlVMTCwgaW5kbmtleWF0 dHMsIDAsIDApOwogCWluZGV4X3Jlc2NhbihpbmRleF9zY2FuLCBzY2Fua2V5cywgaW5kbmtleWF0 dHMsIE5VTEwsIDApOwogCiAJd2hpbGUgKGluZGV4X2dldG5leHRfc2xvdChpbmRleF9zY2FuLCBG b3J3YXJkU2NhbkRpcmVjdGlvbiwgZXhpc3Rpbmdfc2xvdCkpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YwppbmRleCAyN2M5ZWVjNjk3Yi4uMDYzMGE1YWY3OWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YwpAQCAtOTE2LDYgKzkxNiwxMCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50 IGVmbGFncykKIAkJCQkJYnJlYWs7CiAJCQl9CiAKKwkJCS8qIElmIGl0IGhhcyBhIHJvd21hcmss IHRoZSByZWxhdGlvbiBpcyBtb2RpZmllZCAqLworCQkJZXN0YXRlLT5lc19tb2RpZmllZF9yZWxp ZHMgPSBibXNfYWRkX21lbWJlcihlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcywKKwkJCQkJCQkJ CQkJCQkJcmMtPnJ0aSk7CisKIAkJCS8qIENoZWNrIHRoYXQgcmVsYXRpb24gaXMgYSBsZWdhbCB0 YXJnZXQgZm9yIG1hcmtpbmcgKi8KIAkJCWlmIChyZWxhdGlvbikKIAkJCQlDaGVja1ZhbGlkUm93 TWFya1JlbChyZWxhdGlvbiwgcmMtPm1hcmtUeXBlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Jl cGxpY2F0aW9uLmMKaW5kZXggZGVmMzI3NzRjOTAuLjQ3M2QyMzZlNTUxIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpAQCAtMjA0LDcgKzIwNCw3IEBAIFJlbGF0aW9uRmlu ZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAogCXNrZXlfYXR0b2Zm ID0gYnVpbGRfcmVwbGluZGV4X3NjYW5fa2V5KHNrZXksIHJlbCwgaWR4cmVsLCBzZWFyY2hzbG90 KTsKIAogCS8qIFN0YXJ0IGFuIGluZGV4IHNjYW4uICovCi0Jc2NhbiA9IGluZGV4X2JlZ2luc2Nh bihyZWwsIGlkeHJlbCwgJnNuYXAsIE5VTEwsIHNrZXlfYXR0b2ZmLCAwKTsKKwlzY2FuID0gaW5k ZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCAmc25hcCwgTlVMTCwgc2tleV9hdHRvZmYsIDAsIDAp OwogCiByZXRyeToKIAlmb3VuZCA9IGZhbHNlOwpAQCAtMzgyLDcgKzM4Miw3IEBAIFJlbGF0aW9u RmluZFJlcGxUdXBsZVNlcShSZWxhdGlvbiByZWwsIExvY2tUdXBsZU1vZGUgbG9ja21vZGUsCiAK IAkvKiBTdGFydCBhIGhlYXAgc2Nhbi4gKi8KIAlJbml0RGlydHlTbmFwc2hvdChzbmFwKTsKLQlz Y2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgJnNuYXAsIDAsIE5VTEwpOworCXNjYW4gPSB0YWJs ZV9iZWdpbnNjYW4ocmVsLCAmc25hcCwgMCwgTlVMTCwgMCk7CiAJc2NhbnNsb3QgPSB0YWJsZV9z bG90X2NyZWF0ZShyZWwsIE5VTEwpOwogCiByZXRyeToKQEAgLTYwMSw3ICs2MDEsNyBAQCBSZWxh dGlvbkZpbmREZWxldGVkVHVwbGVJbmZvU2VxKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3Qg KnNlYXJjaHNsb3QsCiAJICogbm90IHlldCBjb21taXR0ZWQgb3IgdGhvc2UganVzdCBjb21taXR0 ZWQgcHJpb3IgdG8gdGhlIHNjYW4gYXJlCiAJICogZXhjbHVkZWQgaW4gdXBkYXRlX21vc3RfcmVj ZW50X2RlbGV0aW9uX2luZm8oKS4KIAkgKi8KLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwg U25hcHNob3RBbnksIDAsIE5VTEwpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBTbmFw c2hvdEFueSwgMCwgTlVMTCwgMCk7CiAJc2NhbnNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyZWws IE5VTEwpOwogCiAJdGFibGVfcmVzY2FuKHNjYW4sIE5VTEwpOwpAQCAtNjY1LDcgKzY2NSw3IEBA IFJlbGF0aW9uRmluZERlbGV0ZWRUdXBsZUluZm9CeUluZGV4KFJlbGF0aW9uIHJlbCwgT2lkIGlk eG9pZCwKIAkgKiBub3QgeWV0IGNvbW1pdHRlZCBvciB0aG9zZSBqdXN0IGNvbW1pdHRlZCBwcmlv ciB0byB0aGUgc2NhbiBhcmUKIAkgKiBleGNsdWRlZCBpbiB1cGRhdGVfbW9zdF9yZWNlbnRfZGVs ZXRpb25faW5mbygpLgogCSAqLwotCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4ocmVsLCBpZHhyZWws IFNuYXBzaG90QW55LCBOVUxMLCBza2V5X2F0dG9mZiwgMCk7CisJc2NhbiA9IGluZGV4X2JlZ2lu c2NhbihyZWwsIGlkeHJlbCwgU25hcHNob3RBbnksIE5VTEwsIHNrZXlfYXR0b2ZmLCAwLCAwKTsK IAogCWluZGV4X3Jlc2NhbihzY2FuLCBza2V5LCBza2V5X2F0dG9mZiwgTlVMTCwgMCk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggZmRjNjVjMmI0MmIuLjI4YTA2ZGNkMjQ0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjVXRpbHMuYwpAQCAtODkzLDYgKzg5Myw4IEBAIEV4ZWNJbml0UmVzdWx0 UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJ CWVzdGF0ZS0+ZXNfcmVzdWx0X3JlbGF0aW9ucyA9IChSZXN1bHRSZWxJbmZvICoqKQogCQkJcGFs bG9jMChlc3RhdGUtPmVzX3JhbmdlX3RhYmxlX3NpemUgKiBzaXplb2YoUmVzdWx0UmVsSW5mbyAq KSk7CiAJZXN0YXRlLT5lc19yZXN1bHRfcmVsYXRpb25zW3J0aSAtIDFdID0gcmVzdWx0UmVsSW5m bzsKKwllc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGVzdGF0ZS0+ ZXNfbW9kaWZpZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJcnRpKTsKIAogCS8qCiAJICogU2F2aW5n IGluIHRoZSBsaXN0IGFsbG93cyB0byBhdm9pZCBuZWVkbGVzc2x5IHRyYXZlcnNpbmcgdGhlIHdo b2xlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCmluZGV4IGJmMjRm M2Q3ZmUwLi4wZDg1NGRiNTFhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhl YXBzY2FuLmMKQEAgLTEwNSwxMSArMTA1LDE4IEBAIEJpdG1hcFRhYmxlU2NhblNldHVwKEJpdG1h cEhlYXBTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKCFub2RlLT5zcy5zc19jdXJyZW50U2Nh bkRlc2MpCiAJeworCQl1aW50MzIJCWZsYWdzID0gMDsKKworCQlpZiAoIWJtc19pc19tZW1iZXIo KChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkgICBub2RlLT5z cy5wcy5zdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0gU09fSElOVF9SRUxf UkVBRF9PTkxZOworCiAJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9CiAJCQl0YWJsZV9i ZWdpbnNjYW5fYm0obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCSAgIG5vZGUt PnNzLnBzLnN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkgICAwLAotCQkJCQkJCSAgIE5VTEwp OworCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJICAgZmxhZ3MpOwogCX0KIAogCW5vZGUtPnNzLnNz X2N1cnJlbnRTY2FuRGVzYy0+c3QucnNfdGJtaXRlcmF0b3IgPSB0Ym1pdGVyYXRvcjsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IGY0NjRjY2E5NTA3Li44N2Iw NGIxYjg4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNj YW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCkBAIC05 NCw3ICs5NCw3IEBAIEluZGV4T25seU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQkJ CQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCQkgICAmbm9kZS0+aW9zc19JbnN0 cnVtZW50LAogCQkJCQkJCQkgICBub2RlLT5pb3NzX051bVNjYW5LZXlzLAotCQkJCQkJCQkgICBu b2RlLT5pb3NzX051bU9yZGVyQnlLZXlzKTsKKwkJCQkJCQkJICAgbm9kZS0+aW9zc19OdW1PcmRl ckJ5S2V5cywgMCk7CiAKIAkJbm9kZS0+aW9zc19TY2FuRGVzYyA9IHNjYW5kZXNjOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggZjM2OTI5ZGVlYzMuLjkwZjkyOWNlNzQx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC0xMDIsNiArMTAyLDEyIEBA IEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAogCWlmIChzY2FuZGVzYyA9PSBOVUxM KQogCXsKKwkJdWludDMyCQlmbGFncyA9IDA7CisKKwkJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2Nh biAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkJICAgZXN0YXRlLT5lc19t b2RpZmllZF9yZWxpZHMpKQorCQkJZmxhZ3MgPSBTT19ISU5UX1JFTF9SRUFEX09OTFk7CisKIAkJ LyoKIAkJICogV2UgcmVhY2ggaGVyZSBpZiB0aGUgaW5kZXggc2NhbiBpcyBub3QgcGFyYWxsZWws IG9yIGlmIHdlJ3JlCiAJCSAqIHNlcmlhbGx5IGV4ZWN1dGluZyBhbiBpbmRleCBzY2FuIHRoYXQg d2FzIHBsYW5uZWQgdG8gYmUgcGFyYWxsZWwuCkBAIC0xMTEsNyArMTE3LDggQEAgSW5kZXhOZXh0 KEluZGV4U2NhblN0YXRlICpub2RlKQogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAog CQkJCQkJCQkgICAmbm9kZS0+aXNzX0luc3RydW1lbnQsCiAJCQkJCQkJCSAgIG5vZGUtPmlzc19O dW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzKTsKKwkJCQkJ CQkJICAgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzLAorCQkJCQkJCQkgICBmbGFncyk7CiAKIAkJ bm9kZS0+aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKQEAgLTIwNyw3ICsyMTQsNyBAQCBJbmRl eE5leHRXaXRoUmVvcmRlcihJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJICAgZXN0YXRl LT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUtPmlzc19JbnN0cnVtZW50LAogCQkJCQkJ CQkgICBub2RlLT5pc3NfTnVtU2NhbktleXMsCi0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRl ckJ5S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywgMCk7CiAKIAkJ bm9kZS0+aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nh bi5jCmluZGV4IDk0MDQ3ZDI5NDMwLi40ZDBjYmI5ZGVlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2Vxc2Nhbi5jCkBAIC02NSwxMyArNjUsMjAgQEAgU2VxTmV4dChTZXFTY2FuU3RhdGUgKm5vZGUp CiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJ CWlmICghYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxp ZCwKKwkJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0gU09f SElOVF9SRUxfUkVBRF9PTkxZOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIHNj YW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZSBzZXJpYWxseQogCQkgKiBleGVjdXRpbmcg YSBzY2FuIHRoYXQgd2FzIHBsYW5uZWQgdG8gYmUgcGFyYWxsZWwuCiAJCSAqLwogCQlzY2FuZGVz YyA9IHRhYmxlX2JlZ2luc2Nhbihub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCiAJCQkJCQkJ CSAgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCi0JCQkJCQkJCSAgIDAsIE5VTEwpOworCQkJCQkJCQkg ICAwLCBOVUxMLCBmbGFncyk7CisKIAkJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gc2Nh bmRlc2M7CiAJfQogCkBAIC0zNjcsMTQgKzM3NCwyMCBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVE U00oU2VxU2NhblN0YXRlICpub2RlLAogewogCUVTdGF0ZQkgICAqZXN0YXRlID0gbm9kZS0+c3Mu cHMuc3RhdGU7CiAJUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOworCXVpbnQzMgkJZmxhZ3Mg PSAwOwogCiAJcHNjYW4gPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgbm9kZS0+cHNjYW5f bGVuKTsKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShub2RlLT5zcy5zc19jdXJyZW50 UmVsYXRpb24sCiAJCQkJCQkJCSAgcHNjYW4sCiAJCQkJCQkJCSAgZXN0YXRlLT5lc19zbmFwc2hv dCk7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX25v ZGVfaWQsIHBzY2FuKTsKKwlpZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBz LnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkK KwkJZmxhZ3MgPSBTT19ISU5UX1JFTF9SRUFEX09OTFk7CisKIAlub2RlLT5zcy5zc19jdXJyZW50 U2NhbkRlc2MgPQotCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVu dFJlbGF0aW9uLCBwc2Nhbik7CisJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5z c19jdXJyZW50UmVsYXRpb24sIHBzY2FuLAorCQkJCQkJCQkgZmxhZ3MpOwogfQogCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCkBAIC00MDQsOCArNDE3LDE1IEBAIEV4ZWNTZXFTY2FuSW5pdGlhbGl6ZVdvcmtlcihTZXFT Y2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJUGFyYWxsZWxXb3JrZXJDb250ZXh0ICpwd2N4dCkKIHsK IAlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CisJdWludDMyCQlmbGFncyA9IDA7CisKKwlp ZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQs CisJCQkJCSAgIG5vZGUtPnNzLnBzLnN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpKQorCQlmbGFn cyA9IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKIAogCXBzY2FuID0gc2htX3RvY19sb29rdXAocHdj eHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBmYWxzZSk7CiAJbm9kZS0+ c3Muc3NfY3VycmVudFNjYW5EZXNjID0KLQkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUt PnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwgcHNjYW4pOworCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxs ZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkgcHNjYW4sCisJCQkJCQkJ CSBmbGFncyk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCA4YmEw MzhjNWVmNC4uZDNiMzQwZWUyYTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMu YwpAQCAtMzM3MCw3ICszMzcwLDcgQEAgY2hlY2tfZGVmYXVsdF9wYXJ0aXRpb25fY29udGVudHMo UmVsYXRpb24gcGFyZW50LCBSZWxhdGlvbiBkZWZhdWx0X3JlbCwKIAkJZWNvbnRleHQgPSBHZXRQ ZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hv dChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKIAkJdHVwc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHBh cnRfcmVsLCAmZXN0YXRlLT5lc190dXBsZVRhYmxlKTsKLQkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nh bihwYXJ0X3JlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2Fu KHBhcnRfcmVsLCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAkJLyoKIAkJICogU3dpdGNoIHRv IHBlci10dXBsZSBtZW1vcnkgY29udGV4dCBhbmQgcmVzZXQgaXQgZm9yIGVhY2ggdHVwbGUKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3NlbGZ1bmNzLmMKaW5kZXggY2IyM2FkNTI3ODIuLjc4ZmE2M2UyYjczIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvc2VsZnVuY3MuYwpAQCAtNjc4OCw3ICs2Nzg4LDcgQEAgZ2V0X2FjdHVhbF92 YXJpYWJsZV9lbmRwb2ludChSZWxhdGlvbiBoZWFwUmVsLAogCiAJaW5kZXhfc2NhbiA9IGluZGV4 X2JlZ2luc2NhbihoZWFwUmVsLCBpbmRleFJlbCwKIAkJCQkJCQkJICZTbmFwc2hvdE5vblZhY3V1 bWFibGUsIE5VTEwsCi0JCQkJCQkJCSAxLCAwKTsKKwkJCQkJCQkJIDEsIDAsIDApOwogCS8qIFNl dCBpdCB1cCBmb3IgaW5kZXgtb25seSBzY2FuICovCiAJaW5kZXhfc2Nhbi0+eHNfd2FudF9pdHVw ID0gdHJ1ZTsKIAlpbmRleF9yZXNjYW4oaW5kZXhfc2Nhbiwgc2NhbmtleXMsIDEsIE5VTEwsIDAp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvZ2VuYW0uaAppbmRleCA5MjAwYTIyYmQ5Zi4uMmY5ZTllYTYzMTggMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5h bS5oCkBAIC0xNzcsNyArMTc3LDcgQEAgZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5z Y2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCSBSZWxhdGlvbiBpbmRleFJlbGF0 aW9uLAogCQkJCQkJCQkJIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJIEluZGV4U2Nhbklu c3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKLQkJCQkJCQkJCSBpbnQgbmtleXMsIGludCBub3Jk ZXJieXMpOworCQkJCQkJCQkJIGludCBua2V5cywgaW50IG5vcmRlcmJ5cywgdWludDMyIGZsYWdz KTsKIGV4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2Nhbl9iaXRtYXAoUmVsYXRpb24g aW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkJCQkJU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCQkJ CUluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKQEAgLTIwNCw2ICsyMDQsNyBA QCBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24g aGVhcHJlbCwKIAkJCQkJCQkJCQkJICBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1l bnQsCiAJCQkJCQkJCQkJCSAgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAogCQkJCQkJCQkJCQkg IFBhcmFsbGVsSW5kZXhTY2FuRGVzYyBwc2Nhbik7CisKIGV4dGVybiBJdGVtUG9pbnRlciBpbmRl eF9nZXRuZXh0X3RpZChJbmRleFNjYW5EZXNjIHNjYW4sCiAJCQkJCQkJCQkgU2NhbkRpcmVjdGlv biBkaXJlY3Rpb24pOwogZXh0ZXJuIGJvb2wgaW5kZXhfZmV0Y2hfaGVhcChJbmRleFNjYW5EZXNj IHNjYW4sIFR1cGxlVGFibGVTbG90ICpzbG90KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAyYjZhNTIx ZTRlYS4uMWUzZGY1NDYyOGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTk1LDYgKzk1LDEzIEBAIHR5 cGVkZWYgc3RydWN0IEhlYXBTY2FuRGVzY0RhdGEKIAkgKi8KIAlQYXJhbGxlbEJsb2NrVGFibGVT Y2FuV29ya2VyRGF0YSAqcnNfcGFyYWxsZWx3b3JrZXJkYXRhOwogCisJLyoKKwkgKiBGb3Igc2Vx dWVudGlhbCBzY2FucyBhbmQgYml0bWFwIGhlYXAgc2NhbnMuIElmIHRoZSByZWxhdGlvbiBpcyBu b3QKKwkgKiBiZWluZyBtb2RpZmllZCwgb24tYWNjZXNzIHBydW5pbmcgbWF5IHJlYWQgaW4gdGhl IGN1cnJlbnQgaGVhcCBwYWdlJ3MKKwkgKiBjb3JyZXNwb25kaW5nIFZNIGJsb2NrIHRvIHRoaXMg YnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJcnNfdm1idWZmZXI7CisKIAkvKiB0aGVzZSBmaWVsZHMg b25seSB1c2VkIGluIHBhZ2UtYXQtYS10aW1lIG1vZGUgYW5kIGZvciBiaXRtYXAgc2NhbnMgKi8K IAl1aW50MzIJCXJzX2NpbmRleDsJCS8qIGN1cnJlbnQgdHVwbGUncyBpbmRleCBpbiB2aXN0dXBs ZXMgKi8KIAl1aW50MzIJCXJzX250dXBsZXM7CQkvKiBudW1iZXIgb2YgdmlzaWJsZSB0dXBsZXMg b24gcGFnZSAqLwpAQCAtMTE3LDggKzEyNCwyNCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEZldGNo SGVhcERhdGEKIHsKIAlJbmRleEZldGNoVGFibGVEYXRhIHhzX2Jhc2U7CS8qIEFNIGluZGVwZW5k ZW50IHBhcnQgb2YgdGhlIGRlc2NyaXB0b3IgKi8KIAotCUJ1ZmZlcgkJeHNfY2J1ZjsJCS8qIGN1 cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55ICovCi0JLyogTkI6IGlmIHhzX2NidWYg aXMgbm90IEludmFsaWRCdWZmZXIsIHdlIGhvbGQgYSBwaW4gb24gdGhhdCBidWZmZXIgKi8KKwkv KgorCSAqIEN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55LiBOQjogaWYgeHNfY2J1 ZiBpcyBub3QKKwkgKiBJbnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVy LgorCSAqLworCUJ1ZmZlcgkJeHNfY2J1ZjsKKworCS8qCisJICogRm9yIGluZGV4IHNjYW5zIHRo YXQgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyBoZWFwIHRhYmxlLCBvbi1hY2Nlc3MKKwkg KiBwcnVuaW5nIG1heSByZWFkIGluIHRoZSBjdXJyZW50IGhlYXAgcGFnZSdzIGNvcnJlc3BvbmRp bmcgVk0gYmxvY2sgdG8KKwkgKiB0aGlzIGJ1ZmZlci4KKwkgKi8KKwlCdWZmZXIJCXhzX3ZtYnVm ZmVyOworCisJLyoKKwkgKiBTb21lIG9wdGltaXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVk IGlmIHRoZSBxdWVyeSBkb2VzIG5vdCBtb2RpZnkKKwkgKiB0aGUgdW5kZXJseWluZyByZWxhdGlv bi4gVHJhY2sgdGhhdCBoZXJlLgorCSAqLworCWJvb2wJCW1vZGlmaWVzX2Jhc2VfcmVsOwogfSBJ bmRleEZldGNoSGVhcERhdGE7CiAKIC8qIFJlc3VsdCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNm aWVzVmFjdXVtICovCkBAIC00MTcsNyArNDQwLDggQEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVh cF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJICBUTV9JbmRl eERlbGV0ZU9wICpkZWxzdGF0ZSk7CiAKIC8qIGluIGhlYXAvcHJ1bmVoZWFwLmMgKi8KLWV4dGVy biB2b2lkIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIpOworZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJQnVmZmVyICp2bWJ1ZmZlcik7CiBleHRlcm4gdm9pZCBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJ CQkJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCiAJCQkJCQkJCQkgICBPZmZzZXRO dW1iZXIgKm9mZl9sb2MsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBlMTZiZjAyNTY5Mi4uMDA0MjYz NjQ2M2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtNjMsNiArNjMsOCBAQCB0eXBlZGVmIGVudW0g U2Nhbk9wdGlvbnMKIAogCS8qIHVucmVnaXN0ZXIgc25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJ U09fVEVNUF9TTkFQU0hPVCA9IDEgPDwgOSwKKwkvKiBzZXQgaWYgdGhlIHF1ZXJ5IGRvZXNuJ3Qg bW9kaWZ5IHRoZSByZWwgKi8KKwlTT19ISU5UX1JFTF9SRUFEX09OTFkgPSAxIDw8IDEwLAogfQkJ CVNjYW5PcHRpb25zOwogCiAvKgpAQCAtNDIwLDcgKzQyMiw3IEBAIHR5cGVkZWYgc3RydWN0IFRh YmxlQW1Sb3V0aW5lCiAJICoKIAkgKiBUdXBsZXMgZm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4g YmUgZmV0Y2hlZCB2aWEgaW5kZXhfZmV0Y2hfdHVwbGUuCiAJICovCi0Jc3RydWN0IEluZGV4RmV0 Y2hUYWJsZURhdGEgKigqaW5kZXhfZmV0Y2hfYmVnaW4pIChSZWxhdGlvbiByZWwpOworCXN0cnVj dCBJbmRleEZldGNoVGFibGVEYXRhICooKmluZGV4X2ZldGNoX2JlZ2luKSAoUmVsYXRpb24gcmVs LCB1aW50MzIgZmxhZ3MpOwogCiAJLyoKIAkgKiBSZXNldCBpbmRleCBmZXRjaC4gVHlwaWNhbGx5 IHRoaXMgd2lsbCByZWxlYXNlIGNyb3NzIGluZGV4IGZldGNoCkBAIC04NzQsOSArODc2LDkgQEAg ZXh0ZXJuIFR1cGxlVGFibGVTbG90ICp0YWJsZV9zbG90X2NyZWF0ZShSZWxhdGlvbiByZWxhdGlv biwgTGlzdCAqKnJlZ2xpc3QpOwogICovCiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRh YmxlX2JlZ2luc2NhbihSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCWludCBu a2V5cywgU2NhbktleURhdGEgKmtleSkKKwkJCQlpbnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXks IHVpbnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKwlm bGFncyB8PSBTT19UWVBFX1NFUVNDQU4gfAogCQlTT19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZ TkMgfCBTT19BTExPV19QQUdFTU9ERTsKIAogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnNjYW5f YmVnaW4ocmVsLCBzbmFwc2hvdCwgbmtleXMsIGtleSwgTlVMTCwgZmxhZ3MpOwpAQCAtOTE5LDkg KzkyMSw5IEBAIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNu YXBzaG90LAogICovCiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nh bl9ibShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCSAgIGludCBua2V5cywg U2NhbktleURhdGEgKmtleSkKKwkJCQkgICBpbnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVp bnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09f QUxMT1dfUEFHRU1PREU7CisJZmxhZ3MgfD0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1df UEFHRU1PREU7CiAKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25h cHNob3QsIG5rZXlzLCBrZXksCiAJCQkJCQkJCQkgICBOVUxMLCBmbGFncyk7CkBAIC0xMTI4LDcg KzExMzAsOCBAQCBleHRlcm4gdm9pZCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxh dGlvbiByZWwsCiAgKiBDYWxsZXIgbXVzdCBob2xkIGEgc3VpdGFibGUgbG9jayBvbiB0aGUgcmVs YXRpb24uCiAgKi8KIGV4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bChSZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkRlc2Mg cHNjYW4pOworCQkJCQkJCQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKKwkJCQkJ CQkJCQkJICB1aW50MzIgZmxhZ3MpOwogCiAvKgogICogUmVzdGFydCBhIHBhcmFsbGVsIHNjYW4u ICBDYWxsIHRoaXMgaW4gdGhlIGxlYWRlciBwcm9jZXNzLiAgQ2FsbGVyIGlzCkBAIC0xMTU0LDkg KzExNTcsOSBAQCB0YWJsZV9wYXJhbGxlbHNjYW5fcmVpbml0aWFsaXplKFJlbGF0aW9uIHJlbCwg UGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQogICogVHVwbGVzIGZvciBhbiBpbmRleCBzY2Fu IGNhbiB0aGVuIGJlIGZldGNoZWQgdmlhIHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKCkuCiAgKi8K IHN0YXRpYyBpbmxpbmUgSW5kZXhGZXRjaFRhYmxlRGF0YSAqCi10YWJsZV9pbmRleF9mZXRjaF9i ZWdpbihSZWxhdGlvbiByZWwpCit0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWws IHVpbnQzMiBmbGFncykKIHsKLQlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5pbmRleF9mZXRjaF9i ZWdpbihyZWwpOworCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPmluZGV4X2ZldGNoX2JlZ2luKHJl bCwgZmxhZ3MpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAxOGFlOGYwZDRiYi4u MGMzYjBkNjAxNjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02NzYsNiArNjc2LDEyIEBAIHR5 cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJICogRXhlY0RvSW5pdGlhbFBydW5pbmcoKSAq LwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8qIFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlE ZXNjICovCiAKKwkvKgorCSAqIFJUIGluZGV4ZXMgb2YgcmVsYXRpb25zIG1vZGlmaWVkIGJ5IHRo ZSBxdWVyeSBlaXRoZXIgdGhyb3VnaAorCSAqIFVQREFURS9ERUxFVEUvSU5TRVJUL01FUkdFIG9y IFNFTEVDVCBGT1IgVVBEQVRFCisJICovCisJQml0bWFwc2V0ICAqZXNfbW9kaWZpZWRfcmVsaWRz OworCiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVy LCBpZiBhbnkgKi8KIAogCS8qIElmIHF1ZXJ5IGNhbiBpbnNlcnQvZGVsZXRlIHR1cGxlcywgdGhl IGNvbW1hbmQgSUQgdG8gbWFyayB0aGVtIHdpdGggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCBiL3NyYy90ZXN0L3JlY292 ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbAppbmRleCBlYmUyZmFlMTc4OS4u YmRkOWYwYTYyY2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlf bG9naWNhbF9kZWNvZGluZy5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5 X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTI5Niw2ICsyOTYsNyBAQCB3YWxfbGV2ZWwgPSAnbG9n aWNhbCcKIG1heF9yZXBsaWNhdGlvbl9zbG90cyA9IDQKIG1heF93YWxfc2VuZGVycyA9IDQKIGF1 dG92YWN1dW0gPSBvZmYKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KIH0pOwogJG5vZGVfcHJp bWFyeS0+ZHVtcF9pbmZvOwogJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CkBAIC03NDgsNyArNzQ5LDcg QEAgY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsCiAkbG9nc3RhcnQgPSAtcyAk bm9kZV9zdGFuZGJ5LT5sb2dmaWxlOwogCiByZWFjdGl2ZV9zbG90c19jaGFuZ2VfaGZzX2FuZF93 YWl0X2Zvcl94bWlucygnc2hhcmVkX3Jvd19yZW1vdmFsXycsCi0JJ25vX2NvbmZsaWN0XycsIDAs IDEpOworCSdub19jb25mbGljdF8nLCAxLCAwKTsKIAogIyBUaGlzIHNob3VsZCBub3QgdHJpZ2dl ciBhIGNvbmZsaWN0CiB3YWl0X3VudGlsX3ZhY3V1bV9jYW5fcmVtb3ZlKAotLSAKMi40My4wCgo= --000000000000fe23c60643d269a4 Content-Type: text/x-patch; charset="UTF-8"; name="v20-0012-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v20-0012-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi3r83wg11 RnJvbSA4MGJlYjlkMmY4MmI3YjQyZmQxNjJmYmZhY2YwNjU0NTlhZmFjNTc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgMTIvMTJdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYWZ0ZXIgYSBwYWdl IGlzCmZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QgdGltZSBpdCBp cyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUg aW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQg dGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5z ZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRp bCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoKU2V0dGlu ZyBwZF9wcnVuZV94aWQgb24gaW5zZXJ0IGNhbiBjYXVzZSBhIHBhZ2UgdG8gYmUgZGlydGllZCBh bmQKd3JpdHRlbiBvdXQgd2hlbiBpdCBwcmV2aW91c2x5IHdvdWxkIG5vdCBoYXZlIGJlZW4sIGFm ZmV0Y3RpbmcgdGhlCnJlcG9ydGVkIG51bWJlciBvZiBoaXRzIGluIHRoZSBpbmRleC1raWxsdHVw bGVzIGlzb2xhdGlvbiB0ZXN0LiBJdCBpcwp1bmNsZWFyIGlmIHRoaXMgaXMgYSBidWcgaW4gdGhl IHdheSBoaXRzIGFyZSB0cmFja2VkLCBhIGZhdWx0eSB0ZXN0CmV4cGVjdGF0aW9uLCBvciBpZiBz aW1wbHkgdXBkYXRpbmcgdGhlIHRlc3QncyBleHBlY3RlZCBvdXRwdXQgaXMKc3VmZmljaWVudCBy ZW1lZGlhdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAg ICAgICAgfCAyNSArKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jICAgICAgICAgfCAxNSArKysrKysrKysrLQogLi4uL2lzb2xhdGlvbi9leHBl Y3RlZC9pbmRleC1raWxsdHVwbGVzLm91dCAgIHwgIDYgKystLS0KIDMgZmlsZXMgY2hhbmdlZCwg MzQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YwppbmRleCBhZTUzZTMxMWNlMS4uZjMyOWY0OTc0ODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jCkBAIC0yMTA0LDYgKzIxMDQsNyBAQCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwg SGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAlUcmFuc2FjdGlvbklkIHhpZCA9IEdldEN1 cnJlbnRUcmFuc2FjdGlvbklkKCk7CiAJSGVhcFR1cGxlCWhlYXB0dXA7CiAJQnVmZmVyCQlidWZm ZXI7CisJUGFnZQkJcGFnZTsKIAlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAli b29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gZmFsc2U7CiAKQEAgLTIxNjMsMTUgKzIxNjQsMTkg QEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJ ZCBjaWQsCiAJfQogCiAJLyoKLQkgKiBYWFggU2hvdWxkIHdlIHNldCBQYWdlU2V0UHJ1bmFibGUg b24gdGhpcyBwYWdlID8KKwkgKiBTZXQgcGRfcHJ1bmVfeGlkIHRvIHRyaWdnZXIgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoKSBvbmNlIHRoZSBwYWdlCisJICogaXMgZnVsbCBzbyB0aGF0IHdl IGNhbiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgogCSAqCi0JICogVGhlIGlu c2VydGluZyB0cmFuc2FjdGlvbiBtYXkgZXZlbnR1YWxseSBhYm9ydCB0aHVzIG1ha2luZyB0aGlz IHR1cGxlCi0JICogREVBRCBhbmQgaGVuY2UgYXZhaWxhYmxlIGZvciBwcnVuaW5nLiBUaG91Z2gg d2UgZG9uJ3Qgd2FudCB0byBvcHRpbWl6ZQotCSAqIGZvciBhYm9ydHMsIGlmIG5vIG90aGVyIHR1 cGxlIGluIHRoaXMgcGFnZSBpcyBVUERBVEVkL0RFTEVURWQsIHRoZQotCSAqIGFib3J0ZWQgdHVw bGUgd2lsbCBuZXZlciBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dlcmVkLgor CSAqIFNldHRpbmcgcGRfcHJ1bmVfeGlkIGlzIGFsc28gaGFuZHkgaWYgdGhlIGluc2VydGluZyB0 cmFuc2FjdGlvbgorCSAqIGV2ZW50dWFsbHkgYWJvcnRzIG1ha2luZyB0aGlzIHR1cGxlIERFQUQg YW5kIGhlbmNlIGF2YWlsYWJsZSBmb3IKKwkgKiBwcnVuaW5nLiBJZiBubyBvdGhlciB0dXBsZSBp biB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxFVEVkLCB0aGUgYWJvcnRlZAorCSAqIHR1cGxlIHdv dWxkIG5ldmVyIG90aGVyd2lzZSBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dl cmVkLgogCSAqCi0JICogSWYgeW91IGRvIGFkZCBQYWdlU2V0UHJ1bmFibGUgaGVyZSwgYWRkIGl0 IGluIGhlYXBfeGxvZ19pbnNlcnQgdG9vLgorCSAqIERvbid0IHNldCBpdCBpZiB3ZSBhcmUgaW4g Ym9vdHN0cmFwIG1vZGUsIHRob3VnaC4KIAkgKi8KKwlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZm ZXIpOworCWlmIChUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJUGFnZVNldFBydW5hYmxl KHBhZ2UsIHhpZCk7CiAKIAlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKIApAQCAtMjE4MSw3ICsy MTg2LDYgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENv bW1hbmRJZCBjaWQsCiAJCXhsX2hlYXBfaW5zZXJ0IHhscmVjOwogCQl4bF9oZWFwX2hlYWRlciB4 bGhkcjsKIAkJWExvZ1JlY1B0cglyZWNwdHI7Ci0JCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1ZmZlcik7CiAJCXVpbnQ4CQlpbmZvID0gWExPR19IRUFQX0lOU0VSVDsKIAkJaW50CQkJYnVm ZmxhZ3MgPSAwOwogCkBAIC0yNTQ1LDggKzI1NDksMTMgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVs YXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQl9 CiAKIAkJLyoKLQkJICogWFhYIFNob3VsZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMg cGFnZSA/IFNlZSBoZWFwX2luc2VydCgpCisJCSAqIFNldCBwZF9wcnVuZV94aWQuIFNlZSBoZWFw X2luc2VydCgpIGZvciBtb3JlIG9uIHdoeSB3ZSBkbyB0aGlzIHdoZW4KKwkJICogaW5zZXJ0aW5n IHR1cGxlcy4gVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGlmIHdlIGFyZW4ndCBhbHJlYWR5CisJCSAq IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuIGluIHRoZSBWTS4gV2UgYWxzbyBkb24ndCBzZXQgaXQg aW4KKwkJICogYm9vdHN0cmFwIG1vZGUuCiAJCSAqLworCQlpZiAoIWFsbF9mcm96ZW5fc2V0ICYm IFRyYW5zYWN0aW9uSWRJc05vcm1hbCh4aWQpKQorCQkJUGFnZVNldFBydW5hYmxlKHBhZ2UsIHhp ZCk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jCmluZGV4IDVhYjQ2ZThiZjhmLi5kYWM2NDBmNWM5ZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC00NjIsNiArNDYyLDEyIEBAIGhlYXBfeGxvZ19p bnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJZnJlZXNwYWNlID0gUGFnZUdldEhl YXBGcmVlU3BhY2UocGFnZSk7IC8qIG5lZWRlZCB0byB1cGRhdGUgRlNNIGJlbG93ICovCiAKKwkJ LyoKKwkJICogU2V0IHRoZSBwYWdlIHBydW5hYmxlIHRvIHRyaWdnZXIgb24tYWNjZXNzIHBydW5p bmcgbGF0ZXIgd2hpY2ggbWF5CisJCSAqIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUg Vk0uCisJCSAqLworCQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgWExvZ1JlY0dldFhpZChyZWNvcmQp KTsKKwogCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7CiAKIAkJaWYgKHhscmVjLT5mbGFncyAmIFhM SF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKQEAgLTYxMSw5ICs2MTcsMTYgQEAgaGVhcF94 bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJaWYgKHhscmVjLT5m bGFncyAmIFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKIAkJCVBhZ2VDbGVhckFsbFZp c2libGUocGFnZSk7CiAKLQkJLyogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRo YXQgYWxsIHR1cGxlcyBhcmUgdmlzaWJsZSAqLworCQkvKgorCQkgKiBYTEhfSU5TRVJUX0FMTF9G Uk9aRU5fU0VUIGltcGxpZXMgdGhhdCBhbGwgdHVwbGVzIGFyZSB2aXNpYmxlLiBJZgorCQkgKiB3 ZSBhcmUgbm90IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuLCB0aGVuIHNldCB0aGUgcGFnZSdzIHBy dW5hYmxlCisJCSAqIGhpbnQgc28gdGhhdCB3ZSB0cmlnZ2VyIG9uLWFjY2VzcyBwcnVuaW5nIGxh dGVyIHdoaWNoIG1heSBzZXQgdGhlCisJCSAqIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgor CQkgKi8KIAkJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQpCiAJ CQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJZWxzZQorCQkJUGFnZVNldFBydW5hYmxlKHBh Z2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7 CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0 dXBsZXMub3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0dXBsZXMu b3V0CmluZGV4IGJlN2RkZDc1NmVmLi5iMjlmMjQzNGIwMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv aXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0dXBsZXMub3V0CisrKyBiL3NyYy90ZXN0L2lz b2xhdGlvbi9leHBlY3RlZC9pbmRleC1raWxsdHVwbGVzLm91dApAQCAtNTQsNyArNTQsNyBAQCBz dGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIHN0ZXAg cmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IC0gY291bnRlci5o ZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291bnRlciwgcGdfc3RhdGlv X2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJzsKIG5ld19oZWFw X2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgIDEKKyAgICAgICAg ICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRFIGNvdW50ZXIgU0VUIGhl YXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCBGUk9N IHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZScp OwpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBGUk9NIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhl YXBfYmxrc19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3X2hlYXBfYWNjZXNzZXMg RlJPTSBjb3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxf cHJpb3JfdHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0tLS0tLS0tLS0tCi0gICAg ICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykKIAogc3RlcCBtZWFzdXJl OiBVUERBVEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxFQ1QgaGVhcF9ibGtzX3Jl YWQgKyBoZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFt ZSA9ICdraWxsX3ByaW9yX3R1cGxlJyk7CkBAIC0yODMsNyArMjgzLDcgQEAgc3RlcCBmbHVzaDog U0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDogU0VM RUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nlc3Nl cyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFibGVz IFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3Nlcwog LS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgMgog KDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vzc2Vz ID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0aW9f YWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKLS0gCjIuNDMu MAoK --000000000000fe23c60643d269a4--