Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n1QTn-0006y7-W7 for pgsql-hackers@arkaria.postgresql.org; Sun, 26 Dec 2021 10:10:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1n1QTl-0004XR-TY for pgsql-hackers@arkaria.postgresql.org; Sun, 26 Dec 2021 10:10:13 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n1QTl-0004XI-Cr for pgsql-hackers@lists.postgresql.org; Sun, 26 Dec 2021 10:10:13 +0000 Received: from forwardcorp1j.mail.yandex.net ([5.45.199.163]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n1QTc-0003YD-ES for pgsql-hackers@postgresql.org; Sun, 26 Dec 2021 10:10:12 +0000 Received: from vla1-fdfb804fb3f3.qloud-c.yandex.net (vla1-fdfb804fb3f3.qloud-c.yandex.net [IPv6:2a02:6b8:c0d:3199:0:640:fdfb:804f]) by forwardcorp1j.mail.yandex.net (Yandex) with ESMTP id 02F6E2E1AD1; Sun, 26 Dec 2021 13:10:02 +0300 (MSK) Received: from 2a02:6b8:c0d:3192:0:640:36b7:415c (2a02:6b8:c0d:3192:0:640:36b7:415c [2a02:6b8:c0d:3192:0:640:36b7:415c]) by vla1-fdfb804fb3f3.qloud-c.yandex.net (mxbackcorp/Yandex) with HTTP id V9jt7k1P8Ko1-9xP4GVhx; Sun, 26 Dec 2021 13:10:01 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1640513401; bh=RlMvhkuk/cgqJhnnwZQis1eBFtIsb18l59CSrrmxkYY=; h=References:Date:Message-Id:Cc:Subject:In-Reply-To:To:From; b=m16P/zyzvBG2yAFlccqbErfBEfpER2G5m2qxTs+11WchwMRL3gpEDvnzzjR+yrAm6 9gSEyk0iyAQEPJ4ZwfyDeKL5rEdzmQM76rNHHthD2yFw9dG2UHIRzNOgrhS3uxgklY NN2WnDr5gVJOj+nAIzZQd3ItGRrbWqBdd1/Gjg/U= Authentication-Results: vla1-fdfb804fb3f3.qloud-c.yandex.net; dkim=pass header.i=@yandex-team.ru Received: by vla1-36b7415cbc1b.qloud-c.yandex.net with HTTP; Sun, 26 Dec 2021 13:09:59 +0300 From: Andrey Borodin To: Andrey Borodin Cc: Gilles Darold , Tomas Vondra , Tomas Vondra , Alexander Korotkov , Anastasia Lubennikova , Daniel Gustafsson , Kyotaro Horiguchi , pgsql-hackers , Thomas Munro In-Reply-To: <494C5E7F-E410-48FA-A93E-F7723D859561@yandex-team.ru> References: <20201028013651.de5cj2xadgmba5nf@development> <13D8FD63-559A-4737-B7FD-05288D1CEF8B@yandex-team.ru> <20201028233243.ygm6yqlynkqpzekr@development> <43F3DE92-F236-4EA5-B4D6-39BEF6BD849D@yandex-team.ru> <20201029134933.xd4mh2cofuf6tdfz@development> <65C1B4BA-D16F-4939-978B-AC8F370F5A5E@yandex-team.ru> <9b4d17df-b811-8323-16be-3cab913216d1@enterprisedb.com> <35862787-8b4d-a290-789e-6e12dc6527e8@enterprisedb.com> <13F86913-C01B-4983-AE2E-493F5A028280@yandex-team.ru> <6ba7eae2-8b0c-0690-11a5-e921e6586180@darold.net> <3F5E23A3-6250-486E-9CCA-E2A5B6A28B4F@yandex-team.ru> <636f694a-4d69-d6d9-78d1-c88714f3e2e0@darold.net> <3319917a-679e-b07d-b194-473552b72082@darold.net> <1E3DD5BF-A54E-4203-86C5-94C9EFA0E095@yandex-team.ru> <04ae150b-6442-148a-bb23-77082f6fca1d@darold.net> <3768803E-4794-409D-88D2-C3EF7CA1B7FC@yandex-team.ru> <75B95FDD-2BE0-4525-8BDD-FC67C8BCBD53@yandex-team.ru> <88CB7042-6181-4EF4-8B25-61EC5E5725D4@yandex-team.ru> <018EF641-FC9D-4BA9-A458-6842E27E91C2@yandex-team.ru> <27D90FFC-B897-4BC5-B4F5-9047B9886AA3@yandex-team.ru> <15CA416B-3446-462D-902B-4883DD3ADEE6@yandex-team.ru> <494C5E7F-E410-48FA-A93E-F7723D859561@yandex-team.ru> Subject: Re: MultiXact\SLRU buffers configuration MIME-Version: 1.0 X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Sun, 26 Dec 2021 15:09:59 +0500 Message-Id: <28051640513399@vla1-36b7415cbc1b.qloud-c.yandex.net> Content-Type: multipart/mixed; boundary="----==--bound.2806.vla1-36b7415cbc1b.qloud-c.yandex.net" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ------==--bound.2806.vla1-36b7415cbc1b.qloud-c.yandex.net Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=utf-8 >> 8 апр. 2021 г., в 15:22, Thomas Munro написал(а): >> > I have one more idea inspired by CPU caches. > Let's make SLRU n-associative, where n ~ 8. > We can divide buffers into "banks", number of banks must be power of 2. > All banks are of equal size. We choose bank size to approximately satisfy user's configured buffer size. > Each page can live only within one bank. We use same search and eviction algorithms as we used in SLRU, but we only need to search\evict over 8 elements. > All SLRU data of a single bank will be colocated within at most 2 cache line. > > I did not come up with idea how to avoid multiplication of bank_number * bank_size in case when user configured 31337 buffers (any number that is radically not a power of 2). We can avoid this multiplication by using gapped memory under SLRU page_statuses, but from my POV here complexity does not worth possible performance gain. PFA rebase of the patchset. Also I've added a patch to combine page_number, page_status, and page_dirty together to touch less cachelines. Best regards, Andrey Borodin. ------==--bound.2806.vla1-36b7415cbc1b.qloud-c.yandex.net Content-Disposition: attachment; filename="v-18-0001-Make-all-SLRU-buffer-sizes-configurable.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name="v-18-0001-Make-all-SLRU-buffer-sizes-configurable.patch" RnJvbSBlYTU5ZDJlYmRlODE4ZGRjMmE5MTExODU4YjNkOTU2Y2JjYzdiZmYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8YW1ib3JvZGluQGFjbS5vcmc+CkRh dGU6IE1vbiwgMTUgRmViIDIwMjEgMjE6NTE6NTYgKzA1MDAKU3ViamVjdDogW1BBVENIIHY9MTgg MS8zXSBNYWtlIGFsbCBTTFJVIGJ1ZmZlciBzaXplcyBjb25maWd1cmFibGUuCgpQcm92aWRlIG5l dyBHVUNzIHRvIHNldCB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMsIGluc3RlYWQgb2YgdXNpbmcgaGFy ZApjb2RlZCBkZWZhdWx0cy4KClJlbW92ZSB0aGUgbGltaXRzIG9uIHhhY3RfYnVmZmVycyBhbmQg Y29tbWl0X3RzX2J1ZmZlcnMuICBUaGUgZGVmYXVsdApzaXplcyBmb3IgdGhvc2UgY2FjaGVzIGFy ZSB+MC4yJSBhbmQgfjAuMSUgb2Ygc2hhcmVkX2J1ZmZlcnMsIGFzIGJlZm9yZSwKYnV0IG5vdyB0 aGVyZSBpcyBubyBjYXAgYXQgMTI4IGFuZCAxNiBidWZmZXJzIHJlc3BlY3RpdmVseSAodW5sZXNz CnRyYWNrX2NvbW1pdF90aW1lc3RhbXAgaXMgZGlzYWJsZWQsIGluIHRoZSBsYXR0ZXIgY2FzZSwg dGhlbiB3ZSBtaWdodCBhcwp3ZWxsIGtlZXAgaXQgdGlueSkuICBTaXplcyBtdWNoIGxhcmdlciB0 aGFuIHRoZSBvbGQgbGltaXRzIGhhdmUgYmVlbgpzaG93biB0byBiZSB1c2VmdWwgb24gbW9kZXJu IHN5c3RlbXMsIGFuZCBhbiBlYXJsaWVyIGNvbW1pdCByZXBsYWNlZCBhCmxpbmVhciBzZWFyY2gg d2l0aCBhIGhhc2ggdGFibGUgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBleHRyZW1lIGNhc2VzLgoK QXV0aG9yOiBBbmRyZXkgTS4gQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRlYW0ucnU+ClJldmlld2Vk LWJ5OiBBbmFzdGFzaWEgTHViZW5uaWtvdmEgPGEubHViZW5uaWtvdmFAcG9zdGdyZXNwcm8ucnU+ ClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUAybmRxdWFkcmFudC5jb20+ ClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPgpS ZXZpZXdlZC1ieTogR2lsbGVzIERhcm9sZCA8Z2lsbGVzQGRhcm9sZC5uZXQ+ClJldmlld2VkLWJ5 OiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBz Oi8vcG9zdGdyLmVzL20vMkJFQzJCM0YtOUI2MS00QzFELTlGQjUtNUZBQjBGMDVFRjg2JTQweWFu ZGV4LXRlYW0ucnUKLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAg ICAgICAgfCAxMzUgKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9jbG9nLmMgICAgICAgICAgICAgfCAgMjMgKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9jb21taXRfdHMuYyAgICAgICAgfCAgIDUgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v bXVsdGl4YWN0LmMgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9z dWJ0cmFucy5jICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMg ICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRp Y2F0ZS5jICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMu YyAgICAgICAgICAgICAgfCAgIDggKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICAg ICAgICAgICAgICAgICB8ICA5OSArKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDkgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9jbG9n LmggICAgICAgICAgICAgICAgICAgICB8ICAxMCArKwogc3JjL2luY2x1ZGUvYWNjZXNzL2NvbW1p dF90cy5oICAgICAgICAgICAgICAgIHwgICAxIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhh Y3QuaCAgICAgICAgICAgICAgICB8ICAgNCAtCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oICAg ICAgICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3N1YnRyYW5zLmgg ICAgICAgICAgICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmggICAg ICAgICAgICAgICAgICB8ICAgNSAtCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcmVkaWNhdGUuaCAgICAg ICAgICAgICAgIHwgICA0IC0KIDE4IGZpbGVzIGNoYW5nZWQsIDI5OSBpbnNlcnRpb25zKCspLCA0 MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggYWZiYjZjMzVlMzAuLjU3ZDk2OTZhYmU4IDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Nv bmZpZy5zZ21sCkBAIC0xOTUyLDYgKzE5NTIsMTQxIEBAIGluY2x1ZGVfZGlyICdjb25mLmQnCiAg ICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+Cisg ICAgIAorICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tdWx0aXhhY3Qtb2Zmc2V0cy1idWZmZXJz IiB4cmVmbGFiZWw9Im11bHRpeGFjdF9vZmZzZXRzX2J1ZmZlcnMiPgorICAgICAgPHRlcm0+PHZh cm5hbWU+bXVsdGl4YWN0X29mZnNldHNfYnVmZmVyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8 L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5tdWx0 aXhhY3Rfb2Zmc2V0c19idWZmZXJzPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwv cHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3Rp dGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBTcGVjaWZpZXMgdGhlIGFtb3VudCBvZiBzaGFy ZWQgbWVtb3J5IHRvIHVzZSB0byBjYWNoZSB0aGUgY29udGVudHMKKyAgICAgICAgb2YgPGxpdGVy YWw+cGdfbXVsdGl4YWN0L29mZnNldHM8L2xpdGVyYWw+IChzZWUKKyAgICAgICAgPHhyZWYgbGlu a2VuZD0icGdkYXRhLWNvbnRlbnRzLXRhYmxlIi8+KS4KKyAgICAgICAgSWYgdGhpcyB2YWx1ZSBp cyBzcGVjaWZpZWQgd2l0aG91dCB1bml0cywgaXQgaXMgdGFrZW4gYXMgYmxvY2tzLAorICAgICAg ICB0aGF0IGlzIDxzeW1ib2w+QkxDS1NaPC9zeW1ib2w+IGJ5dGVzLCB0eXBpY2FsbHkgOGtCLgor ICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD44PC9saXRlcmFsPi4KKyAgICAg ICAgVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGF0IHNlcnZlciBzdGFydC4KKyAgICAg ICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAg IDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tdWx0aXhhY3QtbWVtYmVycy1idWZmZXJzIiB4cmVmbGFi ZWw9Im11bHRpeGFjdF9tZW1iZXJzX2J1ZmZlcnMiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+bXVs dGl4YWN0X21lbWJlcnNfYnVmZmVyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQor ICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5tdWx0aXhhY3RfbWVt YmVyc19idWZmZXJzPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4K KyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAg ICAgIDxwYXJhPgorICAgICAgICBTcGVjaWZpZXMgdGhlIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5 IHRvIHVzZSB0byBjYWNoZSB0aGUgY29udGVudHMKKyAgICAgICAgb2YgPGxpdGVyYWw+cGdfbXVs dGl4YWN0L21lbWJlcnM8L2xpdGVyYWw+IChzZWUKKyAgICAgICAgPHhyZWYgbGlua2VuZD0icGdk YXRhLWNvbnRlbnRzLXRhYmxlIi8+KS4KKyAgICAgICAgSWYgdGhpcyB2YWx1ZSBpcyBzcGVjaWZp ZWQgd2l0aG91dCB1bml0cywgaXQgaXMgdGFrZW4gYXMgYmxvY2tzLAorICAgICAgICB0aGF0IGlz IDxzeW1ib2w+QkxDS1NaPC9zeW1ib2w+IGJ5dGVzLCB0eXBpY2FsbHkgOGtCLgorICAgICAgICBU aGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD4xNjwvbGl0ZXJhbD4uCisgICAgICAgIFRoaXMg cGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBhdCBzZXJ2ZXIgc3RhcnQuCisgICAgICAgPC9wYXJh PgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgIAorICAgIDx2 YXJsaXN0ZW50cnkgaWQ9Imd1Yy1zdWJ0cmFucy1idWZmZXJzIiB4cmVmbGFiZWw9InN1YnRyYW5z X2J1ZmZlcnMiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+c3VidHJhbnNfYnVmZmVyczwvdmFybmFt ZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJp bWFyeT48dmFybmFtZT5zdWJ0cmFuc19idWZmZXJzPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBh cmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAg ICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBTcGVjaWZpZXMgdGhlIGFtb3Vu dCBvZiBzaGFyZWQgbWVtb3J5IHRvIHVzZSB0byBjYWNoZSB0aGUgY29udGVudHMKKyAgICAgICAg b2YgPGxpdGVyYWw+cGdfc3VidHJhbnM8L2xpdGVyYWw+IChzZWUKKyAgICAgICAgPHhyZWYgbGlu a2VuZD0icGdkYXRhLWNvbnRlbnRzLXRhYmxlIi8+KS4KKyAgICAgICAgSWYgdGhpcyB2YWx1ZSBp cyBzcGVjaWZpZWQgd2l0aG91dCB1bml0cywgaXQgaXMgdGFrZW4gYXMgYmxvY2tzLAorICAgICAg ICB0aGF0IGlzIDxzeW1ib2w+QkxDS1NaPC9zeW1ib2w+IGJ5dGVzLCB0eXBpY2FsbHkgOGtCLgor ICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD44PC9saXRlcmFsPi4KKyAgICAg ICAgVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGF0IHNlcnZlciBzdGFydC4KKyAgICAg ICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAg CisgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW5vdGlmeS1idWZmZXJzIiB4cmVmbGFiZWw9Im5v dGlmeV9idWZmZXJzIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPm5vdGlmeV9idWZmZXJzPC92YXJu YW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxw cmltYXJ5Pjx2YXJuYW1lPm5vdGlmeV9idWZmZXJzPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBh cmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAg ICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBTcGVjaWZpZXMgdGhlIGFtb3Vu dCBvZiBzaGFyZWQgbWVtb3J5IHRvIHVzZSB0byBjYWNoZSB0aGUgY29udGVudHMKKyAgICAgICAg b2YgPGxpdGVyYWw+cGdfbm90aWZ5PC9saXRlcmFsPiAoc2VlCisgICAgICAgIDx4cmVmIGxpbmtl bmQ9InBnZGF0YS1jb250ZW50cy10YWJsZSIvPikuCisgICAgICAgIElmIHRoaXMgdmFsdWUgaXMg c3BlY2lmaWVkIHdpdGhvdXQgdW5pdHMsIGl0IGlzIHRha2VuIGFzIGJsb2NrcywKKyAgICAgICAg dGhhdCBpcyA8c3ltYm9sPkJMQ0tTWjwvc3ltYm9sPiBieXRlcywgdHlwaWNhbGx5IDhrQi4KKyAg ICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+ODwvbGl0ZXJhbD4uCisgICAgICAg IFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBhdCBzZXJ2ZXIgc3RhcnQuCisgICAgICAg PC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgIAor ICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1zZXJpYWwtYnVmZmVycyIgeHJlZmxhYmVsPSJzZXJp YWxfYnVmZmVycyI+CisgICAgICA8dGVybT48dmFybmFtZT5zZXJpYWxfYnVmZmVyczwvdmFybmFt ZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJp bWFyeT48dmFybmFtZT5zZXJpYWxfYnVmZmVyczwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJh bWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAg IDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU3BlY2lmaWVzIHRoZSBhbW91bnQg b2Ygc2hhcmVkIG1lbW9yeSB0byB1c2UgdG8gY2FjaGUgdGhlIGNvbnRlbnRzCisgICAgICAgIG9m IDxsaXRlcmFsPnBnX3NlcmlhbDwvbGl0ZXJhbD4gKHNlZQorICAgICAgICA8eHJlZiBsaW5rZW5k PSJwZ2RhdGEtY29udGVudHMtdGFibGUiLz4pLgorICAgICAgICBJZiB0aGlzIHZhbHVlIGlzIHNw ZWNpZmllZCB3aXRob3V0IHVuaXRzLCBpdCBpcyB0YWtlbiBhcyBibG9ja3MsCisgICAgICAgIHRo YXQgaXMgPHN5bWJvbD5CTENLU1o8L3N5bWJvbD4gYnl0ZXMsIHR5cGljYWxseSA4a0IuCisgICAg ICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPjE2PC9saXRlcmFsPi4KKyAgICAgICAg VGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGF0IHNlcnZlciBzdGFydC4KKyAgICAgICA8 L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgCisg ICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXhhY3QtYnVmZmVycyIgeHJlZmxhYmVsPSJ4YWN0X2J1 ZmZlcnMiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+eGFjdF9idWZmZXJzPC92YXJuYW1lPiAoPHR5 cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2 YXJuYW1lPnhhY3RfYnVmZmVyczwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3By aW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRl bT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU3BlY2lmaWVzIHRoZSBhbW91bnQgb2Ygc2hhcmVk IG1lbW9yeSB0byB1c2UgdG8gY2FjaGUgdGhlIGNvbnRlbnRzCisgICAgICAgIG9mIDxsaXRlcmFs PnBnX3hhY3Q8L2xpdGVyYWw+IChzZWUKKyAgICAgICAgPHhyZWYgbGlua2VuZD0icGdkYXRhLWNv bnRlbnRzLXRhYmxlIi8+KS4KKyAgICAgICAgSWYgdGhpcyB2YWx1ZSBpcyBzcGVjaWZpZWQgd2l0 aG91dCB1bml0cywgaXQgaXMgdGFrZW4gYXMgYmxvY2tzLAorICAgICAgICB0aGF0IGlzIDxzeW1i b2w+QkxDS1NaPC9zeW1ib2w+IGJ5dGVzLCB0eXBpY2FsbHkgOGtCLgorICAgICAgICBUaGUgZGVm YXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD4wPC9saXRlcmFsPiwgd2hpY2ggcmVxdWVzdHMKKyAgICAg ICAgPHZhcm5hbWU+c2hhcmVkX2J1ZmZlcnM8L3Zhcm5hbWU+IC8gNTEyLCBidXQgbm90IGZld2Vy IHRoYW4gNCBibG9ja3MuCisgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBh dCBzZXJ2ZXIgc3RhcnQuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAg PC92YXJsaXN0ZW50cnk+CisgICAgIAorICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1jb21taXQt dHMtYnVmZmVycyIgeHJlZmxhYmVsPSJjb21taXRfdHNfYnVmZmVycyI+CisgICAgICA8dGVybT48 dmFybmFtZT5jb21taXRfdHNfYnVmZmVyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+ KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5jb21taXRfdHNf YnVmZmVyczwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAg ICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgU3BlY2lmaWVzIHRoZSBhbW91bnQgb2YgbWVtb3J5IHRvIHVzZSB0byBj YWNoZSB0aGUgY290ZW50cyBvZgorICAgICAgICA8bGl0ZXJhbD5wZ19jb21taXRfdHM8L2xpdGVy YWw+IChzZWUKKyAgICAgICAgPHhyZWYgbGlua2VuZD0icGdkYXRhLWNvbnRlbnRzLXRhYmxlIi8+ KS4KKyAgICAgICAgSWYgdGhpcyB2YWx1ZSBpcyBzcGVjaWZpZWQgd2l0aG91dCB1bml0cywgaXQg aXMgdGFrZW4gYXMgYmxvY2tzLAorICAgICAgICB0aGF0IGlzIDxzeW1ib2w+QkxDS1NaPC9zeW1i b2w+IGJ5dGVzLCB0eXBpY2FsbHkgOGtCLgorICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8 bGl0ZXJhbD4wPC9saXRlcmFsPiwgd2hpY2ggcmVxdWVzdHMKKyAgICAgICAgPHZhcm5hbWU+c2hh cmVkX2J1ZmZlcnM8L3Zhcm5hbWU+IC8gMTAyNCwgYnV0IG5vdCBmZXdlciB0aGFuIDQgYmxvY2tz LgorICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgYXQgc2VydmVyIHN0YXJ0 LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5 PgogCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tYXgtc3RhY2stZGVwdGgiIHhyZWZsYWJl bD0ibWF4X3N0YWNrX2RlcHRoIj4KICAgICAgIDx0ZXJtPjx2YXJuYW1lPm1heF9zdGFja19kZXB0 aDwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xv Zy5jCmluZGV4IDNlYTE2YTI3MGE4Li5jYTI4YWRhNzVmYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L2Nsb2cuYwpAQCAtNTgsOCArNTgsOCBAQAogCiAvKiBXZSBuZWVkIHR3byBiaXRzIHBlciB4YWN0 LCBzbyBmb3VyIHhhY3RzIGZpdCBpbiBhIGJ5dGUgKi8KICNkZWZpbmUgQ0xPR19CSVRTX1BFUl9Y QUNUCTIKLSNkZWZpbmUgQ0xPR19YQUNUU19QRVJfQllURSA0Ci0jZGVmaW5lIENMT0dfWEFDVFNf UEVSX1BBR0UgKEJMQ0tTWiAqIENMT0dfWEFDVFNfUEVSX0JZVEUpCitTdGF0aWNBc3NlcnREZWNs KChDTE9HX0JJVFNfUEVSX1hBQ1QgKiBDTE9HX1hBQ1RTX1BFUl9CWVRFKSA9PSBCSVRTX1BFUl9C WVRFLAorCQkJCSAiQ0xPR19CSVRTX1BFUl9YQUNUIGFuZCBDTE9HX1hBQ1RTX1BFUl9CWVRFIGFy ZSBpbmNvbnNpc3RlbnQiKTsKICNkZWZpbmUgQ0xPR19YQUNUX0JJVE1BU0sJKCgxIDw8IENMT0df QklUU19QRVJfWEFDVCkgLSAxKQogCiAjZGVmaW5lIFRyYW5zYWN0aW9uSWRUb1BhZ2UoeGlkKQko KHhpZCkgLyAoVHJhbnNhY3Rpb25JZCkgQ0xPR19YQUNUU19QRVJfUEFHRSkKQEAgLTY2NCwyMyAr NjY0LDE2IEBAIFRyYW5zYWN0aW9uSWRHZXRTdGF0dXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dS ZWNQdHIgKmxzbikKIC8qCiAgKiBOdW1iZXIgb2Ygc2hhcmVkIENMT0cgYnVmZmVycy4KICAqCi0g KiBPbiBsYXJnZXIgbXVsdGktcHJvY2Vzc29yIHN5c3RlbXMsIGl0IGlzIHBvc3NpYmxlIHRvIGhh dmUgbWFueSBDTE9HIHBhZ2UKLSAqIHJlcXVlc3RzIGluIGZsaWdodCBhdCBvbmUgdGltZSB3aGlj aCBjb3VsZCBsZWFkIHRvIGRpc2sgYWNjZXNzIGZvciBDTE9HCi0gKiBwYWdlIGlmIHRoZSByZXF1 aXJlZCBwYWdlIGlzIG5vdCBmb3VuZCBpbiBtZW1vcnkuICBUZXN0aW5nIHJldmVhbGVkIHRoYXQg d2UKLSAqIGNhbiBnZXQgdGhlIGJlc3QgcGVyZm9ybWFuY2UgYnkgaGF2aW5nIDEyOCBDTE9HIGJ1 ZmZlcnMsIG1vcmUgdGhhbiB0aGF0IGl0Ci0gKiBkb2Vzbid0IGltcHJvdmUgcGVyZm9ybWFuY2Uu Ci0gKgotICogVW5jb25kaXRpb25hbGx5IGtlZXBpbmcgdGhlIG51bWJlciBvZiBDTE9HIGJ1ZmZl cnMgdG8gMTI4IGRpZCBub3Qgc2VlbSBsaWtlCi0gKiBhIGdvb2QgaWRlYSwgYmVjYXVzZSBpdCB3 b3VsZCBpbmNyZWFzZSB0aGUgbWluaW11bSBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeQotICogcmVx dWlyZWQgdG8gc3RhcnQsIHdoaWNoIGNvdWxkIGJlIGEgcHJvYmxlbSBmb3IgcGVvcGxlIHJ1bm5p bmcgdmVyeSBzbWFsbAotICogY29uZmlndXJhdGlvbnMuICBUaGUgZm9sbG93aW5nIGZvcm11bGEg c2VlbXMgdG8gcmVwcmVzZW50IGEgcmVhc29uYWJsZQotICogY29tcHJvbWlzZTogcGVvcGxlIHdp dGggdmVyeSBsb3cgdmFsdWVzIGZvciBzaGFyZWRfYnVmZmVycyB3aWxsIGdldCBmZXdlcgotICog Q0xPRyBidWZmZXJzIGFzIHdlbGwsIGFuZCBldmVyeW9uZSBlbHNlIHdpbGwgZ2V0IDEyOC4KKyAq IEJ5IGRlZmF1bHQsIHdlJ2xsIHVzZSAyTUIgb2YgZm9yIGV2ZXJ5IDFHQiBvZiBzaGFyZWQgYnVm ZmVycywgdXAgdG8gdGhlCisgKiB0aGVvcmV0aWNhbCBtYXhpbXVtIHVzZWZ1bCB2YWx1ZSwgYnV0 IGFsd2F5cyBhdCBsZWFzdCA0IGJ1ZmZlcnMuCiAgKi8KIFNpemUKIENMT0dTaG1lbUJ1ZmZlcnMo dm9pZCkKIHsKLQlyZXR1cm4gTWluKDEyOCwgTWF4KDQsIE5CdWZmZXJzIC8gNTEyKSk7CisJLyog VXNlIGNvbmZpZ3VyZWQgdmFsdWUgaWYgcHJvdmlkZWQuICovCisJaWYgKHhhY3RfYnVmZmVycyA+ IDApCisJCXJldHVybiBNYXgoNCwgeGFjdF9idWZmZXJzKTsKKwlyZXR1cm4gTWluKENMT0dfTUFY X0FMTE9XRURfQlVGRkVSUywgTWF4KDQsIE5CdWZmZXJzIC8gNTEyKSk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jCmluZGV4IGNiYmUxOWZlYTgzLi5jYjJlMGNl YjFjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMKQEAgLTUxMSwxMCAr NTExLDE1IEBAIHBnX3hhY3RfY29tbWl0X3RpbWVzdGFtcF9vcmlnaW4oUEdfRlVOQ1RJT05fQVJH UykKICAqIFdlIHVzZSBhIHZlcnkgc2ltaWxhciBsb2dpYyBhcyBmb3IgdGhlIG51bWJlciBvZiBD TE9HIGJ1ZmZlcnMgKGV4Y2VwdCB3ZQogICogc2NhbGUgdXAgdHdpY2UgYXMgZmFzdCB3aXRoIHNo YXJlZCBidWZmZXJzLCBhbmQgdGhlIG1heGltdW0gaXMgdHdpY2UgYXMKICAqIGhpZ2gpOyBzZWUg Y29tbWVudHMgaW4gQ0xPR1NobWVtQnVmZmVycy4KKyAqIEJ5IGRlZmF1bHQsIHdlJ2xsIHVzZSAx TUIgb2YgZm9yIGV2ZXJ5IDFHQiBvZiBzaGFyZWQgYnVmZmVycywgdXAgdG8gdGhlCisgKiBtYXhp bXVtIHZhbHVlIHRoYXQgc2xydS5jIHdpbGwgYWxsb3csIGJ1dCBhbHdheXMgYXQgbGVhc3QgNCBi dWZmZXJzLgogICovCiBTaXplCiBDb21taXRUc1NobWVtQnVmZmVycyh2b2lkKQogeworCS8qIFVz ZSBjb25maWd1cmVkIHZhbHVlIGlmIHByb3ZpZGVkLiAqLworCWlmIChjb21taXRfdHNfYnVmZmVy cyA+IDApCisJCXJldHVybiBNYXgoNCwgY29tbWl0X3RzX2J1ZmZlcnMpOwogCXJldHVybiBNaW4o MjU2LCBNYXgoNCwgTkJ1ZmZlcnMgLyAyNTYpKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9tdWx0aXhhY3QuYwppbmRleCBlNmM3MGVkMGJjMi4uYTI5YWI0NzY5ZGMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC0xODM0LDggKzE4MzQsOCBAQCBNdWx0aVhh Y3RTaG1lbVNpemUodm9pZCkKIAkJCSBtdWxfc2l6ZShzaXplb2YoTXVsdGlYYWN0SWQpICogMiwg TWF4T2xkZXN0U2xvdCkpCiAKIAlzaXplID0gU0hBUkVEX01VTFRJWEFDVF9TVEFURV9TSVpFOwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBTaW1wbGVMcnVTaG1lbVNpemUoTlVNX01VTFRJWEFDVE9G RlNFVF9CVUZGRVJTLCAwKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVt U2l6ZShOVU1fTVVMVElYQUNUTUVNQkVSX0JVRkZFUlMsIDApKTsKKwlzaXplID0gYWRkX3NpemUo c2l6ZSwgU2ltcGxlTHJ1U2htZW1TaXplKG11bHRpeGFjdF9vZmZzZXRzX2J1ZmZlcnMsIDApKTsK KwlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2ltcGxlTHJ1U2htZW1TaXplKG11bHRpeGFjdF9tZW1i ZXJzX2J1ZmZlcnMsIDApKTsKIAogCXJldHVybiBzaXplOwogfQpAQCAtMTg1MSwxMyArMTg1MSwx MyBAQCBNdWx0aVhhY3RTaG1lbUluaXQodm9pZCkKIAlNdWx0aVhhY3RNZW1iZXJDdGwtPlBhZ2VQ cmVjZWRlcyA9IE11bHRpWGFjdE1lbWJlclBhZ2VQcmVjZWRlczsKIAogCVNpbXBsZUxydUluaXQo TXVsdGlYYWN0T2Zmc2V0Q3RsLAotCQkJCSAgIk11bHRpWGFjdE9mZnNldCIsIE5VTV9NVUxUSVhB Q1RPRkZTRVRfQlVGRkVSUywgMCwKKwkJCQkgICJNdWx0aVhhY3RPZmZzZXQiLCBtdWx0aXhhY3Rf b2Zmc2V0c19idWZmZXJzLCAwLAogCQkJCSAgTXVsdGlYYWN0T2Zmc2V0U0xSVUxvY2ssICJwZ19t dWx0aXhhY3Qvb2Zmc2V0cyIsCiAJCQkJICBMV1RSQU5DSEVfTVVMVElYQUNUT0ZGU0VUX0JVRkZF UiwKIAkJCQkgIFNZTkNfSEFORExFUl9NVUxUSVhBQ1RfT0ZGU0VUKTsKIAlTbHJ1UGFnZVByZWNl ZGVzVW5pdFRlc3RzKE11bHRpWGFjdE9mZnNldEN0bCwgTVVMVElYQUNUX09GRlNFVFNfUEVSX1BB R0UpOwogCVNpbXBsZUxydUluaXQoTXVsdGlYYWN0TWVtYmVyQ3RsLAotCQkJCSAgIk11bHRpWGFj dE1lbWJlciIsIE5VTV9NVUxUSVhBQ1RNRU1CRVJfQlVGRkVSUywgMCwKKwkJCQkgICJNdWx0aVhh Y3RNZW1iZXIiLCBtdWx0aXhhY3Rfb2Zmc2V0c19idWZmZXJzLCAwLAogCQkJCSAgTXVsdGlYYWN0 TWVtYmVyU0xSVUxvY2ssICJwZ19tdWx0aXhhY3QvbWVtYmVycyIsCiAJCQkJICBMV1RSQU5DSEVf TVVMVElYQUNUTUVNQkVSX0JVRkZFUiwKIAkJCQkgIFNZTkNfSEFORExFUl9NVUxUSVhBQ1RfTUVN QkVSKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jCmluZGV4IDZhOGU1MjFmODk0 Li43ODVmMjUyMGZkZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3Vi dHJhbnMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jCkBAIC0z MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3NscnUuaCIKICNpbmNsdWRlICJhY2Nlc3Mv c3VidHJhbnMuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgorI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5o IgogCkBAIC0xODQsMTQgKzE4NSwxNCBAQCBTdWJUcmFuc0dldFRvcG1vc3RUcmFuc2FjdGlvbihU cmFuc2FjdGlvbklkIHhpZCkKIFNpemUKIFNVQlRSQU5TU2htZW1TaXplKHZvaWQpCiB7Ci0JcmV0 dXJuIFNpbXBsZUxydVNobWVtU2l6ZShOVU1fU1VCVFJBTlNfQlVGRkVSUywgMCk7CisJcmV0dXJu IFNpbXBsZUxydVNobWVtU2l6ZShzdWJ0cmFuc19idWZmZXJzLCAwKTsKIH0KIAogdm9pZAogU1VC VFJBTlNTaG1lbUluaXQodm9pZCkKIHsKIAlTdWJUcmFuc0N0bC0+UGFnZVByZWNlZGVzID0gU3Vi VHJhbnNQYWdlUHJlY2VkZXM7Ci0JU2ltcGxlTHJ1SW5pdChTdWJUcmFuc0N0bCwgIlN1YnRyYW5z IiwgTlVNX1NVQlRSQU5TX0JVRkZFUlMsIDAsCisJU2ltcGxlTHJ1SW5pdChTdWJUcmFuc0N0bCwg IlN1YnRyYW5zIiwgc3VidHJhbnNfYnVmZmVycywgMCwKIAkJCQkgIFN1YnRyYW5zU0xSVUxvY2ss ICJwZ19zdWJ0cmFucyIsCiAJCQkJICBMV1RSQU5DSEVfU1VCVFJBTlNfQlVGRkVSLCBTWU5DX0hB TkRMRVJfTk9ORSk7CiAJU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhTdWJUcmFuc0N0bCwgU1VC VFJBTlNfWEFDVFNfUEVSX1BBR0UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv YXN5bmMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKaW5kZXggODU1NzAwODU0NTAu LjdmMmI3NTk4NDQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKQEAgLTExNyw3ICsxMTcsNyBAQAogICog ZnJvbnRlbmQgZHVyaW5nIHN0YXJ0dXAuKSAgVGhlIGFib3ZlIGRlc2lnbiBndWFyYW50ZWVzIHRo YXQgbm90aWZpZXMgZnJvbQogICogb3RoZXIgYmFja2VuZHMgd2lsbCBuZXZlciBiZSBtaXNzZWQg YnkgaWdub3Jpbmcgc2VsZi1ub3RpZmllcy4KICAqCi0gKiBUaGUgYW1vdW50IG9mIHNoYXJlZCBt ZW1vcnkgdXNlZCBmb3Igbm90aWZ5IG1hbmFnZW1lbnQgKE5VTV9OT1RJRllfQlVGRkVSUykKKyAq IFRoZSBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSB1c2VkIGZvciBub3RpZnkgbWFuYWdlbWVudCAo bm90aWZ5X2J1ZmZlcnMpCiAgKiBjYW4gYmUgdmFyaWVkIHdpdGhvdXQgYWZmZWN0aW5nIGFueXRo aW5nIGJ1dCBwZXJmb3JtYW5jZS4gIFRoZSBtYXhpbXVtCiAgKiBhbW91bnQgb2Ygbm90aWZpY2F0 aW9uIGRhdGEgdGhhdCBjYW4gYmUgcXVldWVkIGF0IG9uZSB0aW1lIGlzIGRldGVybWluZWQKICAq IGJ5IHNscnUuYydzIHdyYXBhcm91bmQgbGltaXQ7IHNlZSBRVUVVRV9NQVhfUEFHRSBiZWxvdy4K QEAgLTIzNSw3ICsyMzUsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWV1ZVBvc2l0aW9uCiAgKgogICog UmVzaXN0IHRoZSB0ZW1wdGF0aW9uIHRvIG1ha2UgdGhpcyByZWFsbHkgbGFyZ2UuICBXaGlsZSB0 aGF0IHdvdWxkIHNhdmUKICAqIHdvcmsgaW4gc29tZSBwbGFjZXMsIGl0IHdvdWxkIGFkZCBjb3N0 IGluIG90aGVycy4gIEluIHBhcnRpY3VsYXIsIHRoaXMKLSAqIHNob3VsZCBsaWtlbHkgYmUgbGVz cyB0aGFuIE5VTV9OT1RJRllfQlVGRkVSUywgdG8gZW5zdXJlIHRoYXQgYmFja2VuZHMKKyAqIHNo b3VsZCBsaWtlbHkgYmUgbGVzcyB0aGFuIG5vdGlmeV9idWZmZXJzLCB0byBlbnN1cmUgdGhhdCBi YWNrZW5kcwogICogY2F0Y2ggdXAgYmVmb3JlIHRoZSBwYWdlcyB0aGV5J2xsIG5lZWQgdG8gcmVh ZCBmYWxsIG91dCBvZiBTTFJVIGNhY2hlLgogICovCiAjZGVmaW5lIFFVRVVFX0NMRUFOVVBfREVM QVkgNApAQCAtNTIxLDcgKzUyMSw3IEBAIEFzeW5jU2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IG11 bF9zaXplKE1heEJhY2tlbmRzICsgMSwgc2l6ZW9mKFF1ZXVlQmFja2VuZFN0YXR1cykpOwogCXNp emUgPSBhZGRfc2l6ZShzaXplLCBvZmZzZXRvZihBc3luY1F1ZXVlQ29udHJvbCwgYmFja2VuZCkp OwogCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6ZShOVU1fTk9USUZZ X0JVRkZFUlMsIDApKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2ltcGxlTHJ1U2htZW1TaXpl KG5vdGlmeV9idWZmZXJzLCAwKSk7CiAKIAlyZXR1cm4gc2l6ZTsKIH0KQEAgLTU2OSw3ICs1Njks NyBAQCBBc3luY1NobWVtSW5pdCh2b2lkKQogCSAqIFNldCB1cCBTTFJVIG1hbmFnZW1lbnQgb2Yg dGhlIHBnX25vdGlmeSBkYXRhLgogCSAqLwogCU5vdGlmeUN0bC0+UGFnZVByZWNlZGVzID0gYXN5 bmNRdWV1ZVBhZ2VQcmVjZWRlczsKLQlTaW1wbGVMcnVJbml0KE5vdGlmeUN0bCwgIk5vdGlmeSIs IE5VTV9OT1RJRllfQlVGRkVSUywgMCwKKwlTaW1wbGVMcnVJbml0KE5vdGlmeUN0bCwgIk5vdGlm eSIsIG5vdGlmeV9idWZmZXJzLCAwLAogCQkJCSAgTm90aWZ5U0xSVUxvY2ssICJwZ19ub3RpZnki LCBMV1RSQU5DSEVfTk9USUZZX0JVRkZFUiwKIAkJCQkgIFNZTkNfSEFORExFUl9OT05FKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IDRmNGQ1YjBkMjBmLi5jNWU2Njc1 NzY0MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAtODcyLDcgKzg3Miw3 IEBAIFNlcmlhbEluaXQodm9pZCkKIAkgKi8KIAlTZXJpYWxTbHJ1Q3RsLT5QYWdlUHJlY2VkZXMg PSBTZXJpYWxQYWdlUHJlY2VkZXNMb2dpY2FsbHk7CiAJU2ltcGxlTHJ1SW5pdChTZXJpYWxTbHJ1 Q3RsLCAiU2VyaWFsIiwKLQkJCQkgIE5VTV9TRVJJQUxfQlVGRkVSUywgMCwgU2VyaWFsU0xSVUxv Y2ssICJwZ19zZXJpYWwiLAorCQkJCSAgc2VyaWFsX2J1ZmZlcnMsIDAsIFNlcmlhbFNMUlVMb2Nr LCAicGdfc2VyaWFsIiwKIAkJCQkgIExXVFJBTkNIRV9TRVJJQUxfQlVGRkVSLCBTWU5DX0hBTkRM RVJfTk9ORSk7CiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwogCVNlcmlhbFBhZ2VQcmVjZWRl c0xvZ2ljYWxseVVuaXRUZXN0cygpOwpAQCAtMTM5Niw3ICsxMzk2LDcgQEAgUHJlZGljYXRlTG9j a1NobWVtU2l6ZSh2b2lkKQogCiAJLyogU2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmVzIGZvciBTTFJV IHRyYWNraW5nIG9mIG9sZCBjb21taXR0ZWQgeGlkcy4gKi8KIAlzaXplID0gYWRkX3NpemUoc2l6 ZSwgc2l6ZW9mKFNlcmlhbENvbnRyb2xEYXRhKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNp bXBsZUxydVNobWVtU2l6ZShOVU1fU0VSSUFMX0JVRkZFUlMsIDApKTsKKwlzaXplID0gYWRkX3Np emUoc2l6ZSwgU2ltcGxlTHJ1U2htZW1TaXplKHNlcmlhbF9idWZmZXJzLCAwKSk7CiAKIAlyZXR1 cm4gc2l6ZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5kZXggMzgxZDllNTQ4ZDEuLmM4 MzE1MWQ1YWI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwpAQCAtMTUwLDMgKzE1MCwxMSBA QCBpbnQ2NAkJVmFjdXVtUGFnZURpcnR5ID0gMDsKIAogaW50CQkJVmFjdXVtQ29zdEJhbGFuY2Ug PSAwOwkvKiB3b3JraW5nIHN0YXRlIGZvciB2YWN1dW0gKi8KIGJvb2wJCVZhY3V1bUNvc3RBY3Rp dmUgPSBmYWxzZTsKKworaW50CQkJbXVsdGl4YWN0X29mZnNldHNfYnVmZmVycyA9IDg7CitpbnQJ CQltdWx0aXhhY3RfbWVtYmVyc19idWZmZXJzID0gMTY7CitpbnQJCQlzdWJ0cmFuc19idWZmZXJz ID0gMzI7CitpbnQJCQlub3RpZnlfYnVmZmVycyA9IDg7CitpbnQJCQlzZXJpYWxfYnVmZmVycyA9 IDE2OworaW50CQkJeGFjdF9idWZmZXJzID0gMDsKK2ludAkJCWNvbW1pdF90c19idWZmZXJzID0g MDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IGJmZjk0OWE0MGJjLi5lYjZiZjRjMGEwNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Yy5jCkBAIC0zMiw5ICszMiwxMSBAQAogI2VuZGlmCiAjaW5jbHVkZSA8dW5pc3Rk Lmg+CiAKKyNpbmNsdWRlICJhY2Nlc3MvY2xvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy9jb21taXRf dHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvZ2luLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JtZ3IuaCIK KyNpbmNsdWRlICJhY2Nlc3Mvc2xydS5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCiAj aW5jbHVkZSAiYWNjZXNzL3RvYXN0X2NvbXByZXNzaW9uLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Ry YW5zYW0uaCIKQEAgLTIwMiw2ICsyMDQsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqc2hvd190Y3Bf a2VlcGFsaXZlc19pZGxlKHZvaWQpOwogc3RhdGljIGNvbnN0IGNoYXIgKnNob3dfdGNwX2tlZXBh bGl2ZXNfaW50ZXJ2YWwodm9pZCk7CiBzdGF0aWMgY29uc3QgY2hhciAqc2hvd190Y3Bfa2VlcGFs aXZlc19jb3VudCh2b2lkKTsKIHN0YXRpYyBjb25zdCBjaGFyICpzaG93X3RjcF91c2VyX3RpbWVv dXQodm9pZCk7CitzdGF0aWMgY29uc3QgY2hhciAqc2hvd194YWN0X2J1ZmZlcnModm9pZCk7Citz dGF0aWMgY29uc3QgY2hhciAqc2hvd19jb21taXRfdHNfYnVmZmVycyh2b2lkKTsKIHN0YXRpYyBi b29sIGNoZWNrX21heGNvbm5lY3Rpb25zKGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1Nv dXJjZSBzb3VyY2UpOwogc3RhdGljIGJvb2wgY2hlY2tfbWF4X3dvcmtlcl9wcm9jZXNzZXMoaW50 ICpuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNvdXJjZSk7CiBzdGF0aWMgYm9vbCBj aGVja19hdXRvdmFjdXVtX21heF93b3JrZXJzKGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1 Y1NvdXJjZSBzb3VyY2UpOwpAQCAtMjM2Niw2ICsyMzcwLDgzIEBAIHN0YXRpYyBzdHJ1Y3QgY29u ZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAK Kwl7CisJCXsibXVsdGl4YWN0X29mZnNldHNfYnVmZmVycyIsIFBHQ19QT1NUTUFTVEVSLCBSRVNP VVJDRVNfTUVNLAorCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBudW1iZXIgb2Ygc2hhcmVkIG1l bW9yeSBidWZmZXJzIHVzZWQgZm9yIHRoZSBNdWx0aVhhY3Qgb2Zmc2V0IFNMUlUgY2FjaGUuIiks CisJCQlOVUxMLAorCQkJR1VDX1VOSVRfQkxPQ0tTCisJCX0sCisJCSZtdWx0aXhhY3Rfb2Zmc2V0 c19idWZmZXJzLAorCQk4LCAyLCBTTFJVX01BWF9BTExPV0VEX0JVRkZFUlMsCisJCU5VTEwsIE5V TEwsIE5VTEwKKwl9LAorCisJeworCQl7Im11bHRpeGFjdF9tZW1iZXJzX2J1ZmZlcnMiLCBQR0Nf UE9TVE1BU1RFUiwgUkVTT1VSQ0VTX01FTSwKKwkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgbnVt YmVyIG9mIHNoYXJlZCBtZW1vcnkgYnVmZmVycyB1c2VkIGZvciB0aGUgTXVsdGlYYWN0IG1lbWJl ciBTTFJVIGNhY2hlLiIpLAorCQkJTlVMTCwKKwkJCUdVQ19VTklUX0JMT0NLUworCQl9LAorCQkm bXVsdGl4YWN0X21lbWJlcnNfYnVmZmVycywKKwkJMTYsIDIsIFNMUlVfTUFYX0FMTE9XRURfQlVG RkVSUywKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKKwl7CisJCXsic3VidHJhbnNfYnVmZmVy cyIsIFBHQ19QT1NUTUFTVEVSLCBSRVNPVVJDRVNfTUVNLAorCQkJZ2V0dGV4dF9ub29wKCJTZXRz IHRoZSBudW1iZXIgb2Ygc2hhcmVkIG1lbW9yeSBidWZmZXJzIHVzZWQgZm9yIHRoZSBzdWItdHJh bnNhY3Rpb24gU0xSVSBjYWNoZS4iKSwKKwkJCU5VTEwsCisJCQlHVUNfVU5JVF9CTE9DS1MKKwkJ fSwKKwkJJnN1YnRyYW5zX2J1ZmZlcnMsCisJCTMyLCAyLCBTTFJVX01BWF9BTExPV0VEX0JVRkZF UlMsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCisJeworCQl7Im5vdGlmeV9idWZmZXJzIiwg UEdDX1BPU1RNQVNURVIsIFJFU09VUkNFU19NRU0sCisJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhl IG51bWJlciBvZiBzaGFyZWQgbWVtb3J5IGJ1ZmZlcnMgdXNlZCBmb3IgdGhlIE5PVElGWSBtZXNz YWdlIFNMUlUgY2FjaGUuIiksCisJCQlOVUxMLAorCQkJR1VDX1VOSVRfQkxPQ0tTCisJCX0sCisJ CSZub3RpZnlfYnVmZmVycywKKwkJOCwgMiwgU0xSVV9NQVhfQUxMT1dFRF9CVUZGRVJTLAorCQlO VUxMLCBOVUxMLCBOVUxMCisJfSwKKworCXsKKwkJeyJzZXJpYWxfYnVmZmVycyIsIFBHQ19QT1NU TUFTVEVSLCBSRVNPVVJDRVNfTUVNLAorCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBudW1iZXIg b2Ygc2hhcmVkIG1lbW9yeSBidWZmZXJzIHVzZWQgZm9yIHRoZSBzZXJpYWxpemFibGUgdHJhbnNh Y3Rpb24gU0xSVSBjYWNoZS4iKSwKKwkJCU5VTEwsCisJCQlHVUNfVU5JVF9CTE9DS1MKKwkJfSwK KwkJJnNlcmlhbF9idWZmZXJzLAorCQkxNiwgMiwgU0xSVV9NQVhfQUxMT1dFRF9CVUZGRVJTLAor CQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKworCXsKKwkJeyJ4YWN0X2J1ZmZlcnMiLCBQR0NfUE9T VE1BU1RFUiwgUkVTT1VSQ0VTX01FTSwKKwkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgbnVtYmVy IG9mIHNoYXJlZCBtZW1vcnkgYnVmZmVycyB1c2VkIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RhdHVz IFNMUlUgY2FjaGUuIiksCisJCQlOVUxMLAorCQkJR1VDX1VOSVRfQkxPQ0tTCisJCX0sCisJCSZ4 YWN0X2J1ZmZlcnMsCisJCTAsIDAsIENMT0dfTUFYX0FMTE9XRURfQlVGRkVSUywKKwkJTlVMTCwg TlVMTCwgc2hvd194YWN0X2J1ZmZlcnMKKwl9LAorCisJeworCQl7ImNvbW1pdF90c19idWZmZXJz IiwgUEdDX1BPU1RNQVNURVIsIFJFU09VUkNFU19NRU0sCisJCQlnZXR0ZXh0X25vb3AoIlNldHMg dGhlIHNpemUgb2YgdGhlIGRlZGljYXRlZCBidWZmZXIgcG9vbCB1c2VkIGZvciB0aGUgY29tbWl0 IHRpbWVzdGFtcCBTTFJVIGNhY2hlLiIpLAorCQkJTlVMTCwKKwkJCUdVQ19VTklUX0JMT0NLUwor CQl9LAorCQkmY29tbWl0X3RzX2J1ZmZlcnMsCisJCTAsIDAsIFNMUlVfTUFYX0FMTE9XRURfQlVG RkVSUywKKwkJTlVMTCwgTlVMTCwgc2hvd19jb21taXRfdHNfYnVmZmVycworCX0sCisKIAl7CiAJ CXsidGVtcF9idWZmZXJzIiwgUEdDX1VTRVJTRVQsIFJFU09VUkNFU19NRU0sCiAJCQlnZXR0ZXh0 X25vb3AoIlNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRlbXBvcmFyeSBidWZmZXJzIHVzZWQg YnkgZWFjaCBzZXNzaW9uLiIpLApAQCAtMTIwNzQsNiArMTIxNTUsMjQgQEAgc2hvd190Y3BfdXNl cl90aW1lb3V0KHZvaWQpCiAJcmV0dXJuIG5idWY7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICoK K3Nob3dfeGFjdF9idWZmZXJzKHZvaWQpCit7CisJc3RhdGljIGNoYXIgbmJ1ZlsxNl07CisKKwlz bnByaW50ZihuYnVmLCBzaXplb2YobmJ1ZiksICIlenUiLCBDTE9HU2htZW1CdWZmZXJzKCkpOwor CXJldHVybiBuYnVmOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqCitzaG93X2NvbW1pdF90c19i dWZmZXJzKHZvaWQpCit7CisJc3RhdGljIGNoYXIgbmJ1ZlsxNl07CisKKwlzbnByaW50ZihuYnVm LCBzaXplb2YobmJ1ZiksICIlenUiLCBDb21taXRUc1NobWVtQnVmZmVycygpKTsKKwlyZXR1cm4g bmJ1ZjsKK30KKwogc3RhdGljIGJvb2wKIGNoZWNrX21heGNvbm5lY3Rpb25zKGludCAqbmV3dmFs LCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2UpCiB7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggYTFhY2Q0NmI2MTEuLjIyYmRhNDM4 M2NlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxl CkBAIC0xOTUsNiArMTk1LDE1IEBACiAjb2xkX3NuYXBzaG90X3RocmVzaG9sZCA9IC0xCQkjIDFt aW4tNjBkOyAtMSBkaXNhYmxlczsgMCBpcyBpbW1lZGlhdGUKIAkJCQkJIyAoY2hhbmdlIHJlcXVp cmVzIHJlc3RhcnQpCiAKKyMgLSBTTFJVIEJ1ZmZlcnMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0 KSAtCisKKyN4YWN0X2J1ZmZlcnMgPSAwCQkJIyBtZW1vcnkgZm9yIHBnX3hhY3QgKDAgPSBhdXRv KQorI3N1YnRyYW5zX2J1ZmZlcnMgPSAzMgkJCSMgbWVtb3J5IGZvciBwZ19zdWJ0cmFucworI211 bHRpeGFjdF9vZmZzZXRzX2J1ZmZlcnMgPSA4CQkjIG1lbW9yeSBmb3IgcGdfbXVsdGl4YWN0L29m ZnNldHMKKyNtdWx0aXhhY3RfbWVtYmVyc19idWZmZXJzID0gMTYJCSMgbWVtb3J5IGZvciBwZ19t dWx0aXhhY3QvbWVtYmVycworI25vdGlmeV9idWZmZXJzID0gOAkJCSMgbWVtb3J5IGZvciBwZ19u b3RpZnkKKyNzZXJpYWxfYnVmZmVycyA9IDE2CQkJIyBtZW1vcnkgZm9yIHBnX3NlcmlhbAorI2Nv bW1pdF90c19idWZmZXJzID0gMAkJCSMgbWVtb3J5IGZvciBwZ19jb21taXRfdHMgKDAgPSBhdXRv KQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFdSSVRFLUFIRUFEIExPRwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2Nsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9jbG9nLmgK aW5kZXggMzliOGU0YWZhOGEuLjczOWEyOTJmN2YzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvY2xvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9jbG9nLmgKQEAgLTE1LDYgKzE1 LDE2IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zeW5jLmgiCiAjaW5jbHVkZSAibGliL3N0cmluZ2lu Zm8uaCIKIAorLyoKKyAqIERvbid0IGFsbG93IHhhY3RfYnVmZmVycyB0byBiZSBzZXQgaGlnaGVy IHRoYW4gY291bGQgcG9zc2libHkgYmUgdXNlZnVsIG9yCisgKiBTTFJVIHdvdWxkIGFsbG93Lgor ICovCisjZGVmaW5lIENMT0dfWEFDVFNfUEVSX0JZVEUgNAorI2RlZmluZSBDTE9HX1hBQ1RTX1BF Ul9QQUdFIChCTENLU1ogKiBDTE9HX1hBQ1RTX1BFUl9CWVRFKQorI2RlZmluZSBDTE9HX01BWF9B TExPV0VEX0JVRkZFUlMgXAorCU1pbihTTFJVX01BWF9BTExPV0VEX0JVRkZFUlMsIFwKKwkJKCgo TWF4VHJhbnNhY3Rpb25JZCAvIDIpICsgKENMT0dfWEFDVFNfUEVSX1BBR0UgLSAxKSkgLyBDTE9H X1hBQ1RTX1BFUl9QQUdFKSkKKwogLyoKICAqIFBvc3NpYmxlIHRyYW5zYWN0aW9uIHN0YXR1c2Vz IC0tLSBub3RlIHRoYXQgYWxsLXplcm9lcyBpcyB0aGUgaW5pdGlhbAogICogc3RhdGUuCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvY29tbWl0X3RzLmggYi9zcmMvaW5jbHVkZS9hY2Nl c3MvY29tbWl0X3RzLmgKaW5kZXggYTE1Mzg5NzhjNjIuLmY4Njc2MGY3MjQwIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MvY29tbWl0X3RzLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2NvbW1pdF90cy5oCkBAIC0xNiw3ICsxNiw2IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3Jp Z2luLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zeW5jLmgiCiAKLQogZXh0ZXJuIFBHRExMSU1QT1JU IGJvb2wgdHJhY2tfY29tbWl0X3RpbWVzdGFtcDsKIAogZXh0ZXJuIHZvaWQgVHJhbnNhY3Rpb25U cmVlU2V0Q29tbWl0VHNEYXRhKFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQgbnN1YnhpZHMsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmggYi9zcmMvaW5jbHVkZS9hY2Nl c3MvbXVsdGl4YWN0LmgKaW5kZXggNGJiYjAzNWVhZWEuLjk3YzBhNDYzNzY4IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L211bHRpeGFjdC5oCkBAIC0yOSwxMCArMjksNiBAQAogCiAjZGVmaW5lIE1heE11bHRpWGFjdE9m ZnNldAkoKE11bHRpWGFjdE9mZnNldCkgMHhGRkZGRkZGRikKIAotLyogTnVtYmVyIG9mIFNMUlUg YnVmZmVycyB0byB1c2UgZm9yIG11bHRpeGFjdCAqLwotI2RlZmluZSBOVU1fTVVMVElYQUNUT0ZG U0VUX0JVRkZFUlMJCTgKLSNkZWZpbmUgTlVNX01VTFRJWEFDVE1FTUJFUl9CVUZGRVJTCQkxNgot CiAvKgogICogUG9zc2libGUgbXVsdGl4YWN0IGxvY2sgbW9kZXMgKCJzdGF0dXMiKS4gIFRoZSBm aXJzdCBmb3VyIG1vZGVzIGFyZSBmb3IKICAqIHR1cGxlIGxvY2tzIChGT1IgS0VZIFNIQVJFLCBG T1IgU0hBUkUsIEZPUiBOTyBLRVkgVVBEQVRFLCBGT1IgVVBEQVRFKTsgdGhlCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaApp bmRleCBkZDUyZThjZWM3ZS4uNzkzYzA0NWYxNjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9zbHJ1LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaApAQCAtMTcsNiArMTcs MTEgQEAKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3lu Yy5oIgogCisvKgorICogVG8gYXZvaWQgb3ZlcmZsb3dpbmcgaW50ZXJuYWwgYXJpdGhtZXRpYyBh bmQgdGhlIHNpemVfdCBkYXRhIHR5cGUsIHRoZQorICogbnVtYmVyIG9mIGJ1ZmZlcnMgc2hvdWxk IG5vdCBleGNlZWQgdGhpcyBudW1iZXIuCisgKi8KKyNkZWZpbmUgU0xSVV9NQVhfQUxMT1dFRF9C VUZGRVJTICgoMTAyNCAqIDEwMjQgKiAxMDI0KSAvIEJMQ0tTWikKIAogLyoKICAqIERlZmluZSBT TFJVIHNlZ21lbnQgc2l6ZS4gIEEgcGFnZSBpcyB0aGUgc2FtZSBCTENLU1ogYXMgaXMgdXNlZCBl dmVyeXdoZXJlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3VidHJhbnMuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9zdWJ0cmFucy5oCmluZGV4IGQwYWI0NGFlODI4Li42NGZhODY5Mzhl MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3N1YnRyYW5zLmgKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3N1YnRyYW5zLmgKQEAgLTExLDggKzExLDYgQEAKICNpZm5kZWYgU1VCVFJB TlNfSAogI2RlZmluZSBTVUJUUkFOU19ICiAKLS8qIE51bWJlciBvZiBTTFJVIGJ1ZmZlcnMgdG8g dXNlIGZvciBzdWJ0cmFucyAqLwotI2RlZmluZSBOVU1fU1VCVFJBTlNfQlVGRkVSUwkzMgogCiBl eHRlcm4gdm9pZCBTdWJUcmFuc1NldFBhcmVudChUcmFuc2FjdGlvbklkIHhpZCwgVHJhbnNhY3Rp b25JZCBwYXJlbnQpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgU3ViVHJhbnNHZXRQYXJlbnQoVHJh bnNhY3Rpb25JZCB4aWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvYXN5bmMu aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmgKaW5kZXggZjM3MWFjODk2YjkuLjk5NTc1 OTc0OTgyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmgKQEAgLTE1LDExICsxNSw2IEBACiAKICNpbmNsdWRl IDxzaWduYWwuaD4KIAotLyoKLSAqIFRoZSBudW1iZXIgb2YgU0xSVSBwYWdlIGJ1ZmZlcnMgd2Ug dXNlIGZvciB0aGUgbm90aWZpY2F0aW9uIHF1ZXVlLgotICovCi0jZGVmaW5lIE5VTV9OT1RJRllf QlVGRkVSUwk4Ci0KIGV4dGVybiBib29sIFRyYWNlX25vdGlmeTsKIGV4dGVybiB2b2xhdGlsZSBz aWdfYXRvbWljX3Qgbm90aWZ5SW50ZXJydXB0UGVuZGluZzsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCA5MGEzMDE2 MDY1Ny4uMjJkMzE1NDZhZDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisr KyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC0xNzYsNiArMTc2LDEzIEBAIGV4dGVybiBQ R0RMTElNUE9SVCBpbnQgTWF4QmFja2VuZHM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IE1heENv bm5lY3Rpb25zOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfd29ya2VyX3Byb2Nlc3NlczsK IGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3BhcmFsbGVsX3dvcmtlcnM7CitleHRlcm4gUEdE TExJTVBPUlQgaW50IG11bHRpeGFjdF9vZmZzZXRzX2J1ZmZlcnM7CitleHRlcm4gUEdETExJTVBP UlQgaW50IG11bHRpeGFjdF9tZW1iZXJzX2J1ZmZlcnM7CitleHRlcm4gUEdETExJTVBPUlQgaW50 IHN1YnRyYW5zX2J1ZmZlcnM7CitleHRlcm4gUEdETExJTVBPUlQgaW50IG5vdGlmeV9idWZmZXJz OworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBzZXJpYWxfYnVmZmVyczsKK2V4dGVybiBQR0RMTElN UE9SVCBpbnQgeGFjdF9idWZmZXJzOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjb21taXRfdHNf YnVmZmVyczsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNeVByb2NQaWQ7CiBleHRlcm4gUEdE TExJTVBPUlQgcGdfdGltZV90IE15U3RhcnRUaW1lOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv c3RvcmFnZS9wcmVkaWNhdGUuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlLmgKaW5k ZXggMTUyYjY5ODYxMTQuLmM3Mjc3OWJkODhkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3ByZWRpY2F0ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlLmgKQEAg LTI2LDEwICsyNiw2IEBAIGV4dGVybiBpbnQJbWF4X3ByZWRpY2F0ZV9sb2Nrc19wZXJfeGFjdDsK IGV4dGVybiBpbnQJbWF4X3ByZWRpY2F0ZV9sb2Nrc19wZXJfcmVsYXRpb247CiBleHRlcm4gaW50 CW1heF9wcmVkaWNhdGVfbG9ja3NfcGVyX3BhZ2U7CiAKLQotLyogTnVtYmVyIG9mIFNMUlUgYnVm ZmVycyB0byB1c2UgZm9yIFNlcmlhbCBTTFJVICovCi0jZGVmaW5lIE5VTV9TRVJJQUxfQlVGRkVS UwkJMTYKLQogLyoKICAqIEEgaGFuZGxlIHVzZWQgZm9yIHNoYXJpbmcgU0VSSUFMSVpBQkxFWEFD VCBvYmplY3RzIGJldHdlZW4gdGhlIHBhcnRpY2lwYW50cwogICogaW4gYSBwYXJhbGxlbCBxdWVy eS4KLS0gCjIuMzMuMQoK ------==--bound.2806.vla1-36b7415cbc1b.qloud-c.yandex.net Content-Disposition: attachment; filename="v-18-0003-Pack-SLRU-page_number-page_status-and-page_dirt.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name="v-18-0003-Pack-SLRU-page_number-page_status-and-page_dirt.patch" RnJvbSA1YzFhYWNlOGIxZjVhMmI4NTJiZjE0NzZkZmZiZDRhNDNmMTk2ZWYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8eDRtQGZsaWdodC5sb2NhbD4KRGF0 ZTogU3VuLCAyNiBEZWMgMjAyMSAxNTowMzozMCArMDUwMApTdWJqZWN0OiBbUEFUQ0ggdj0xOCAz LzNdIFBhY2sgU0xSVSBwYWdlX251bWJlciwgcGFnZV9zdGF0dXMgYW5kIHBhZ2VfZGlydHkKIHRv b2dldGhlcgoKVGhpcyBhbGxvd3MgdG8gdGVzdCBvbmx5IG9uZSBjYWNoZWxpbmUgZHVyaW5nIHN1 Y2Nlc3NmdWxsClNscnVTZWxlY3RMUlVQYWdlKCkuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vY2xvZy5jICAgICAgfCAgMTIgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9j b21taXRfdHMuYyB8ICAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0 LmMgfCAgMTYgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMgICAgICB8IDE0 MyArKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9z dWJ0cmFucy5jICB8ICAgNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyAgICAgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAgIHwgICAy ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oICAgICAgICAgICAgICB8ICAxMyArKy0KIDgg ZmlsZXMgY2hhbmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgOTkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vY2xvZy5jCmluZGV4IGNhMjhhZGE3NWZhLi43ZDNhMDI4NmE1ZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwpAQCAtMzc1LDcgKzM3NSw3IEBAIFRyYW5zYWN0aW9uSWRT ZXRQYWdlU3RhdHVzSW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBuc3VieGlkcywKIAkJ ewogCQkJZm9yIChpID0gMDsgaSA8IG5zdWJ4aWRzOyBpKyspCiAJCQl7Ci0JCQkJQXNzZXJ0KFhh Y3RDdGwtPnNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXSA9PSBUcmFuc2FjdGlvbklkVG9QYWdl KHN1YnhpZHNbaV0pKTsKKwkJCQlBc3NlcnQoWGFjdEN0bC0+c2hhcmVkLT5wYWdlX2VudHJpZXNb c2xvdG5vXS5wYWdlX251bWJlciA9PSBUcmFuc2FjdGlvbklkVG9QYWdlKHN1YnhpZHNbaV0pKTsK IAkJCQlUcmFuc2FjdGlvbklkU2V0U3RhdHVzQml0KHN1YnhpZHNbaV0sCiAJCQkJCQkJCQkJICBU UkFOU0FDVElPTl9TVEFUVVNfU1VCX0NPTU1JVFRFRCwKIAkJCQkJCQkJCQkgIGxzbiwgc2xvdG5v KTsKQEAgLTM4OSwxMSArMzg5LDExIEBAIFRyYW5zYWN0aW9uSWRTZXRQYWdlU3RhdHVzSW50ZXJu YWwoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBuc3VieGlkcywKIAkvKiBTZXQgdGhlIHN1YnRyYW5z YWN0aW9ucyAqLwogCWZvciAoaSA9IDA7IGkgPCBuc3VieGlkczsgaSsrKQogCXsKLQkJQXNzZXJ0 KFhhY3RDdGwtPnNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXSA9PSBUcmFuc2FjdGlvbklkVG9Q YWdlKHN1YnhpZHNbaV0pKTsKKwkJQXNzZXJ0KFhhY3RDdGwtPnNoYXJlZC0+cGFnZV9lbnRyaWVz W3Nsb3Rub10ucGFnZV9udW1iZXIgPT0gVHJhbnNhY3Rpb25JZFRvUGFnZShzdWJ4aWRzW2ldKSk7 CiAJCVRyYW5zYWN0aW9uSWRTZXRTdGF0dXNCaXQoc3VieGlkc1tpXSwgc3RhdHVzLCBsc24sIHNs b3Rubyk7CiAJfQogCi0JWGFjdEN0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Rub10gPSB0cnVl OworCVhhY3RDdGwtPnNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9kaXJ0eSA9IHRy dWU7CiB9CiAKIC8qCkBAIC03MTMsNyArNzEzLDcgQEAgQm9vdFN0cmFwQ0xPRyh2b2lkKQogCiAJ LyogTWFrZSBzdXJlIGl0J3Mgd3JpdHRlbiBvdXQgKi8KIAlTaW1wbGVMcnVXcml0ZVBhZ2UoWGFj dEN0bCwgc2xvdG5vKTsKLQlBc3NlcnQoIVhhY3RDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90 bm9dKTsKKwlBc3NlcnQoIVhhY3RDdGwtPnNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFn ZV9kaXJ0eSk7CiAKIAlMV0xvY2tSZWxlYXNlKFhhY3RTTFJVTG9jayk7CiB9CkBAIC03OTgsNyAr Nzk4LDcgQEAgVHJpbUNMT0codm9pZCkKIAkJLyogWmVybyB0aGUgcmVzdCBvZiB0aGUgcGFnZSAq LwogCQlNZW1TZXQoYnl0ZXB0ciArIDEsIDAsIEJMQ0tTWiAtIGJ5dGVubyAtIDEpOwogCi0JCVhh Y3RDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dID0gdHJ1ZTsKKwkJWGFjdEN0bC0+c2hh cmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdlX2RpcnR5ID0gdHJ1ZTsKIAl9CiAKIAlMV0xv Y2tSZWxlYXNlKFhhY3RTTFJVTG9jayk7CkBAIC05OTQsNyArOTk0LDcgQEAgY2xvZ19yZWRvKFhM b2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJCXNsb3RubyA9IFplcm9DTE9HUGFnZShwYWdlbm8s IGZhbHNlKTsKIAkJU2ltcGxlTHJ1V3JpdGVQYWdlKFhhY3RDdGwsIHNsb3Rubyk7Ci0JCUFzc2Vy dCghWGFjdEN0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Rub10pOworCQlBc3NlcnQoIVhhY3RD dGwtPnNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9kaXJ0eSk7CiAKIAkJTFdMb2Nr UmVsZWFzZShYYWN0U0xSVUxvY2spOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL2NvbW1pdF90cy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0 X3RzLmMKaW5kZXggY2IyZTBjZWIxYzMuLjY4NzllZjNlYzcxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS9jb21taXRfdHMuYwpAQCAtMjI3LDcgKzIyNyw3IEBAIFNldFhpZENvbW1pdFRzSW5Q YWdlKFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQgbnN1YnhpZHMsCiAJZm9yIChpID0gMDsgaSA8IG5z dWJ4aWRzOyBpKyspCiAJCVRyYW5zYWN0aW9uSWRTZXRDb21taXRUcyhzdWJ4aWRzW2ldLCB0cywg bm9kZWlkLCBzbG90bm8pOwogCi0JQ29tbWl0VHNDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90 bm9dID0gdHJ1ZTsKKwlDb21taXRUc0N0bC0+c2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5w YWdlX2RpcnR5ID0gdHJ1ZTsKIAogCUxXTG9ja1JlbGVhc2UoQ29tbWl0VHNTTFJVTG9jayk7CiB9 CkBAIC03MzUsNyArNzM1LDcgQEAgQWN0aXZhdGVDb21taXRUcyh2b2lkKQogCQlMV0xvY2tBY3F1 aXJlKENvbW1pdFRzU0xSVUxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJCXNsb3RubyA9IFplcm9Db21t aXRUc1BhZ2UocGFnZW5vLCBmYWxzZSk7CiAJCVNpbXBsZUxydVdyaXRlUGFnZShDb21taXRUc0N0 bCwgc2xvdG5vKTsKLQkJQXNzZXJ0KCFDb21taXRUc0N0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Ns b3Rub10pOworCQlBc3NlcnQoIUNvbW1pdFRzQ3RsLT5zaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90 bm9dLnBhZ2VfZGlydHkpOwogCQlMV0xvY2tSZWxlYXNlKENvbW1pdFRzU0xSVUxvY2spOwogCX0K IApAQCAtMTAwNSw3ICsxMDA1LDcgQEAgY29tbWl0X3RzX3JlZG8oWExvZ1JlYWRlclN0YXRlICpy ZWNvcmQpCiAKIAkJc2xvdG5vID0gWmVyb0NvbW1pdFRzUGFnZShwYWdlbm8sIGZhbHNlKTsKIAkJ U2ltcGxlTHJ1V3JpdGVQYWdlKENvbW1pdFRzQ3RsLCBzbG90bm8pOwotCQlBc3NlcnQoIUNvbW1p dFRzQ3RsLT5zaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSk7CisJCUFzc2VydCghQ29tbWl0VHND dGwtPnNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9kaXJ0eSk7CiAKIAkJTFdMb2Nr UmVsZWFzZShDb21taXRUc1NMUlVMb2NrKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211 bHRpeGFjdC5jCmluZGV4IGEyOWFiNDc2OWRjLi5lYjMyODIxYjcxNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTg4Nyw3ICs4ODcsNyBAQCBSZWNvcmROZXdNdWx0 aVhhY3QoTXVsdGlYYWN0SWQgbXVsdGksIE11bHRpWGFjdE9mZnNldCBvZmZzZXQsCiAKIAkqb2Zm cHRyID0gb2Zmc2V0OwogCi0JTXVsdGlYYWN0T2Zmc2V0Q3RsLT5zaGFyZWQtPnBhZ2VfZGlydHlb c2xvdG5vXSA9IHRydWU7CisJTXVsdGlYYWN0T2Zmc2V0Q3RsLT5zaGFyZWQtPnBhZ2VfZW50cmll c1tzbG90bm9dLnBhZ2VfZGlydHkgPSB0cnVlOwogCiAJLyogRXhjaGFuZ2Ugb3VyIGxvY2sgKi8K IAlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdE9mZnNldFNMUlVMb2NrKTsKQEAgLTkzMSw3ICs5MzEs NyBAQCBSZWNvcmROZXdNdWx0aVhhY3QoTXVsdGlYYWN0SWQgbXVsdGksIE11bHRpWGFjdE9mZnNl dCBvZmZzZXQsCiAJCWZsYWdzdmFsIHw9IChtZW1iZXJzW2ldLnN0YXR1cyA8PCBic2hpZnQpOwog CQkqZmxhZ3NwdHIgPSBmbGFnc3ZhbDsKIAotCQlNdWx0aVhhY3RNZW1iZXJDdGwtPnNoYXJlZC0+ cGFnZV9kaXJ0eVtzbG90bm9dID0gdHJ1ZTsKKwkJTXVsdGlYYWN0TWVtYmVyQ3RsLT5zaGFyZWQt PnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2VfZGlydHkgPSB0cnVlOwogCX0KIAogCUxXTG9ja1Jl bGVhc2UoTXVsdGlYYWN0TWVtYmVyU0xSVUxvY2spOwpAQCAtMTkwMiw3ICsxOTAyLDcgQEAgQm9v dFN0cmFwTXVsdGlYYWN0KHZvaWQpCiAKIAkvKiBNYWtlIHN1cmUgaXQncyB3cml0dGVuIG91dCAq LwogCVNpbXBsZUxydVdyaXRlUGFnZShNdWx0aVhhY3RPZmZzZXRDdGwsIHNsb3Rubyk7Ci0JQXNz ZXJ0KCFNdWx0aVhhY3RPZmZzZXRDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKKwlB c3NlcnQoIU11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5w YWdlX2RpcnR5KTsKIAogCUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0T2Zmc2V0U0xSVUxvY2spOwog CkBAIC0xOTEzLDcgKzE5MTMsNyBAQCBCb290U3RyYXBNdWx0aVhhY3Qodm9pZCkKIAogCS8qIE1h a2Ugc3VyZSBpdCdzIHdyaXR0ZW4gb3V0ICovCiAJU2ltcGxlTHJ1V3JpdGVQYWdlKE11bHRpWGFj dE1lbWJlckN0bCwgc2xvdG5vKTsKLQlBc3NlcnQoIU11bHRpWGFjdE1lbWJlckN0bC0+c2hhcmVk LT5wYWdlX2RpcnR5W3Nsb3Rub10pOworCUFzc2VydCghTXVsdGlYYWN0TWVtYmVyQ3RsLT5zaGFy ZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2VfZGlydHkpOwogCiAJTFdMb2NrUmVsZWFzZShN dWx0aVhhY3RNZW1iZXJTTFJVTG9jayk7CiB9CkBAIC0yMDc0LDcgKzIwNzQsNyBAQCBUcmltTXVs dGlYYWN0KHZvaWQpCiAKIAkJTWVtU2V0KG9mZnB0ciwgMCwgQkxDS1NaIC0gKGVudHJ5bm8gKiBz aXplb2YoTXVsdGlYYWN0T2Zmc2V0KSkpOwogCi0JCU11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVk LT5wYWdlX2RpcnR5W3Nsb3Rub10gPSB0cnVlOworCQlNdWx0aVhhY3RPZmZzZXRDdGwtPnNoYXJl ZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9kaXJ0eSA9IHRydWU7CiAJfQogCiAJTFdMb2Nr UmVsZWFzZShNdWx0aVhhY3RPZmZzZXRTTFJVTG9jayk7CkBAIC0yMTEyLDcgKzIxMTIsNyBAQCBU cmltTXVsdGlYYWN0KHZvaWQpCiAJCSAqIHdyaXRpbmcuCiAJCSAqLwogCi0JCU11bHRpWGFjdE1l bWJlckN0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Rub10gPSB0cnVlOworCQlNdWx0aVhhY3RN ZW1iZXJDdGwtPnNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9kaXJ0eSA9IHRydWU7 CiAJfQogCiAJTFdMb2NrUmVsZWFzZShNdWx0aVhhY3RNZW1iZXJTTFJVTG9jayk7CkBAIC0zMjUx LDcgKzMyNTEsNyBAQCBtdWx0aXhhY3RfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAog CQlzbG90bm8gPSBaZXJvTXVsdGlYYWN0T2Zmc2V0UGFnZShwYWdlbm8sIGZhbHNlKTsKIAkJU2lt cGxlTHJ1V3JpdGVQYWdlKE11bHRpWGFjdE9mZnNldEN0bCwgc2xvdG5vKTsKLQkJQXNzZXJ0KCFN dWx0aVhhY3RPZmZzZXRDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKKwkJQXNzZXJ0 KCFNdWx0aVhhY3RPZmZzZXRDdGwtPnNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9k aXJ0eSk7CiAKIAkJTFdMb2NrUmVsZWFzZShNdWx0aVhhY3RPZmZzZXRTTFJVTG9jayk7CiAJfQpA QCAtMzI2Niw3ICszMjY2LDcgQEAgbXVsdGl4YWN0X3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAKIAkJc2xvdG5vID0gWmVyb011bHRpWGFjdE1lbWJlclBhZ2UocGFnZW5vLCBmYWxzZSk7 CiAJCVNpbXBsZUxydVdyaXRlUGFnZShNdWx0aVhhY3RNZW1iZXJDdGwsIHNsb3Rubyk7Ci0JCUFz c2VydCghTXVsdGlYYWN0TWVtYmVyQ3RsLT5zaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSk7CisJ CUFzc2VydCghTXVsdGlYYWN0TWVtYmVyQ3RsLT5zaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9d LnBhZ2VfZGlydHkpOwogCiAJCUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0TWVtYmVyU0xSVUxvY2sp OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYwppbmRleCAzMzg1N2JmZmI3OS4uMWY4N2U1 MGYwNWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMKQEAgLTE4Niw5ICsxODYsNyBAQCBT aW1wbGVMcnVTaG1lbVNpemUoaW50IG5zbG90cywgaW50IG5sc25zKQogCS8qIHdlIGFzc3VtZSBu c2xvdHMgaXNuJ3Qgc28gbGFyZ2UgYXMgdG8gcmlzayBvdmVyZmxvdyAqLwogCXN6ID0gTUFYQUxJ R04oc2l6ZW9mKFNscnVTaGFyZWREYXRhKSk7CiAJc3ogKz0gTUFYQUxJR04obnNsb3RzICogc2l6 ZW9mKGNoYXIgKikpOwkvKiBwYWdlX2J1ZmZlcltdICovCi0Jc3ogKz0gTUFYQUxJR04obnNsb3Rz ICogc2l6ZW9mKFNscnVQYWdlU3RhdHVzKSk7CS8qIHBhZ2Vfc3RhdHVzW10gKi8KLQlzeiArPSBN QVhBTElHTihuc2xvdHMgKiBzaXplb2YoYm9vbCkpOwkvKiBwYWdlX2RpcnR5W10gKi8KLQlzeiAr PSBNQVhBTElHTihuc2xvdHMgKiBzaXplb2YoaW50KSk7CS8qIHBhZ2VfbnVtYmVyW10gKi8KKwlz eiArPSBNQVhBTElHTihuc2xvdHMgKiBzaXplb2YoU2xydVBhZ2VFbnRyeSkpOwkvKiBwYWdlX2Vu dHJpZXNbXSAqLwogCXN6ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihpbnQpKTsJLyogcGFn ZV9scnVfY291bnRbXSAqLwogCXN6ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihMV0xvY2tQ YWRkZWQpKTsJLyogYnVmZmVyX2xvY2tzW10gKi8KIApAQCAtMjQ4LDE2ICsyNDYsMTMgQEAgU2lt cGxlTHJ1SW5pdChTbHJ1Q3RsIGN0bCwgY29uc3QgY2hhciAqbmFtZSwgaW50IG5zbG90cywgaW50 IG5sc25zLAogCiAJCXNoYXJlZC0+c2xydV9zdGF0c19pZHggPSBwZ3N0YXRfc2xydV9pbmRleChu YW1lKTsKIAorCQlBc3NlcnQoc2l6ZW9mKFNscnVQYWdlRW50cnkpID09IDgpOwogCQlwdHIgPSAo Y2hhciAqKSBzaGFyZWQ7CiAJCW9mZnNldCA9IE1BWEFMSUdOKHNpemVvZihTbHJ1U2hhcmVkRGF0 YSkpOwogCQlzaGFyZWQtPnBhZ2VfYnVmZmVyID0gKGNoYXIgKiopIChwdHIgKyBvZmZzZXQpOwog CQlvZmZzZXQgKz0gTUFYQUxJR04obnNsb3RzICogc2l6ZW9mKGNoYXIgKikpOwotCQlzaGFyZWQt PnBhZ2Vfc3RhdHVzID0gKFNscnVQYWdlU3RhdHVzICopIChwdHIgKyBvZmZzZXQpOwotCQlvZmZz ZXQgKz0gTUFYQUxJR04obnNsb3RzICogc2l6ZW9mKFNscnVQYWdlU3RhdHVzKSk7Ci0JCXNoYXJl ZC0+cGFnZV9kaXJ0eSA9IChib29sICopIChwdHIgKyBvZmZzZXQpOwotCQlvZmZzZXQgKz0gTUFY QUxJR04obnNsb3RzICogc2l6ZW9mKGJvb2wpKTsKLQkJc2hhcmVkLT5wYWdlX251bWJlciA9IChp bnQgKikgKHB0ciArIG9mZnNldCk7Ci0JCW9mZnNldCArPSBNQVhBTElHTihuc2xvdHMgKiBzaXpl b2YoaW50KSk7CisJCXNoYXJlZC0+cGFnZV9lbnRyaWVzID0gKFNscnVQYWdlRW50cnkgKikgKHB0 ciArIG9mZnNldCk7CisJCW9mZnNldCArPSBNQVhBTElHTihuc2xvdHMgKiBzaXplb2YoU2xydVBh Z2VFbnRyeSkpOwogCQlzaGFyZWQtPnBhZ2VfbHJ1X2NvdW50ID0gKGludCAqKSAocHRyICsgb2Zm c2V0KTsKIAkJb2Zmc2V0ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihpbnQpKTsKIApAQCAt Mjc4LDggKzI3Myw4IEBAIFNpbXBsZUxydUluaXQoU2xydUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5h bWUsIGludCBuc2xvdHMsIGludCBubHNucywKIAkJCQkJCQkgdHJhbmNoZV9pZCk7CiAKIAkJCXNo YXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSA9IHB0cjsKLQkJCXNoYXJlZC0+cGFnZV9zdGF0dXNb c2xvdG5vXSA9IFNMUlVfUEFHRV9FTVBUWTsKLQkJCXNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9d ID0gZmFsc2U7CisJCQlzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2Vfc3RhdHVzID0g U0xSVV9QQUdFX0VNUFRZOworCQkJc2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdlX2Rp cnR5ID0gZmFsc2U7CiAJCQlzaGFyZWQtPnBhZ2VfbHJ1X2NvdW50W3Nsb3Rub10gPSAwOwogCQkJ cHRyICs9IEJMQ0tTWjsKIAkJfQpAQCAtMzE1LDE1ICszMTAsMTUgQEAgU2ltcGxlTHJ1WmVyb1Bh Z2UoU2xydUN0bCBjdGwsIGludCBwYWdlbm8pCiAKIAkvKiBGaW5kIGEgc3VpdGFibGUgYnVmZmVy IHNsb3QgZm9yIHRoZSBwYWdlICovCiAJc2xvdG5vID0gU2xydVNlbGVjdExSVVBhZ2UoY3RsLCBw YWdlbm8pOwotCUFzc2VydChzaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPT0gU0xSVV9QQUdF X0VNUFRZIHx8Ci0JCSAgIChzaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPT0gU0xSVV9QQUdF X1ZBTElEICYmCi0JCQkhc2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Rub10pIHx8Ci0JCSAgIHNoYXJl ZC0+cGFnZV9udW1iZXJbc2xvdG5vXSA9PSBwYWdlbm8pOworCUFzc2VydChzaGFyZWQtPnBhZ2Vf ZW50cmllc1tzbG90bm9dLnBhZ2Vfc3RhdHVzID09IFNMUlVfUEFHRV9FTVBUWSB8fAorCQkgICAo c2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdlX3N0YXR1cyA9PSBTTFJVX1BBR0VfVkFM SUQgJiYKKwkJCSFzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2VfZGlydHkpIHx8CisJ CSAgIHNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9udW1iZXIgPT0gcGFnZW5vKTsK IAogCS8qIE1hcmsgdGhlIHNsb3QgYXMgY29udGFpbmluZyB0aGlzIHBhZ2UgKi8KLQlzaGFyZWQt PnBhZ2VfbnVtYmVyW3Nsb3Rub10gPSBwYWdlbm87Ci0Jc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90 bm9dID0gU0xSVV9QQUdFX1ZBTElEOwotCXNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dID0gdHJ1 ZTsKKwlzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2VfbnVtYmVyID0gcGFnZW5vOwor CXNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9zdGF0dXMgPSBTTFJVX1BBR0VfVkFM SUQ7CisJc2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdlX2RpcnR5ID0gdHJ1ZTsKIAlT bHJ1UmVjZW50bHlVc2VkKHNoYXJlZCwgc2xvdG5vKTsKIAogCS8qIFNldCB0aGUgYnVmZmVyIHRv IHplcm9lcyAqLwpAQCAtMzg3LDE4ICszODIsMTggQEAgU2ltcGxlTHJ1V2FpdElPKFNscnVDdGwg Y3RsLCBpbnQgc2xvdG5vKQogCSAqIGNoZWFwbHkgdGVzdCBmb3IgZmFpbHVyZSBieSBzZWVpbmcg aWYgdGhlIGJ1ZmZlciBsb2NrIGlzIHN0aWxsIGhlbGQgKHdlCiAJICogYXNzdW1lIHRoYXQgdHJh bnNhY3Rpb24gYWJvcnQgd291bGQgcmVsZWFzZSB0aGUgbG9jaykuCiAJICovCi0JaWYgKHNoYXJl ZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9PSBTTFJVX1BBR0VfUkVBRF9JTl9QUk9HUkVTUyB8fAot CQlzaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPT0gU0xSVV9QQUdFX1dSSVRFX0lOX1BST0dS RVNTKQorCWlmIChzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2Vfc3RhdHVzID09IFNM UlVfUEFHRV9SRUFEX0lOX1BST0dSRVNTIHx8CisJCXNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Ru b10ucGFnZV9zdGF0dXMgPT0gU0xSVV9QQUdFX1dSSVRFX0lOX1BST0dSRVNTKQogCXsKIAkJaWYg KExXTG9ja0NvbmRpdGlvbmFsQWNxdWlyZSgmc2hhcmVkLT5idWZmZXJfbG9ja3Nbc2xvdG5vXS5s b2NrLCBMV19TSEFSRUQpKQogCQl7CiAJCQkvKiBpbmRlZWQsIHRoZSBJL08gbXVzdCBoYXZlIGZh aWxlZCAqLwotCQkJaWYgKHNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9PSBTTFJVX1BBR0Vf UkVBRF9JTl9QUk9HUkVTUykKLQkJCQlzaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPSBTTFJV X1BBR0VfRU1QVFk7CisJCQlpZiAoc2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdlX3N0 YXR1cyA9PSBTTFJVX1BBR0VfUkVBRF9JTl9QUk9HUkVTUykKKwkJCQlzaGFyZWQtPnBhZ2VfZW50 cmllc1tzbG90bm9dLnBhZ2Vfc3RhdHVzID0gU0xSVV9QQUdFX0VNUFRZOwogCQkJZWxzZQkJCQkv KiB3cml0ZV9pbl9wcm9ncmVzcyAqLwogCQkJewotCQkJCXNoYXJlZC0+cGFnZV9zdGF0dXNbc2xv dG5vXSA9IFNMUlVfUEFHRV9WQUxJRDsKLQkJCQlzaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSA9 IHRydWU7CisJCQkJc2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdlX3N0YXR1cyA9IFNM UlVfUEFHRV9WQUxJRDsKKwkJCQlzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2VfZGly dHkgPSB0cnVlOwogCQkJfQogCQkJTFdMb2NrUmVsZWFzZSgmc2hhcmVkLT5idWZmZXJfbG9ja3Nb c2xvdG5vXS5sb2NrKTsKIAkJfQpAQCAtNDM4LDE1ICs0MzMsMTUgQEAgU2ltcGxlTHJ1UmVhZFBh Z2UoU2xydUN0bCBjdGwsIGludCBwYWdlbm8sIGJvb2wgd3JpdGVfb2ssCiAJCXNsb3RubyA9IFNs cnVTZWxlY3RMUlVQYWdlKGN0bCwgcGFnZW5vKTsKIAogCQkvKiBEaWQgd2UgZmluZCB0aGUgcGFn ZSBpbiBtZW1vcnk/ICovCi0JCWlmIChzaGFyZWQtPnBhZ2VfbnVtYmVyW3Nsb3Rub10gPT0gcGFn ZW5vICYmCi0JCQlzaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gIT0gU0xSVV9QQUdFX0VNUFRZ KQorCQlpZiAoc2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdlX251bWJlciA9PSBwYWdl bm8gJiYKKwkJCXNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9zdGF0dXMgIT0gU0xS VV9QQUdFX0VNUFRZKQogCQl7CiAJCQkvKgogCQkJICogSWYgcGFnZSBpcyBzdGlsbCBiZWluZyBy ZWFkIGluLCB3ZSBtdXN0IHdhaXQgZm9yIEkvTy4gIExpa2V3aXNlCiAJCQkgKiBpZiB0aGUgcGFn ZSBpcyBiZWluZyB3cml0dGVuIGFuZCB0aGUgY2FsbGVyIHNhaWQgdGhhdCdzIG5vdCBPSy4KIAkJ CSAqLwotCQkJaWYgKHNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9PSBTTFJVX1BBR0VfUkVB RF9JTl9QUk9HUkVTUyB8fAotCQkJCShzaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPT0gU0xS VV9QQUdFX1dSSVRFX0lOX1BST0dSRVNTICYmCisJCQlpZiAoc2hhcmVkLT5wYWdlX2VudHJpZXNb c2xvdG5vXS5wYWdlX3N0YXR1cyA9PSBTTFJVX1BBR0VfUkVBRF9JTl9QUk9HUkVTUyB8fAorCQkJ CShzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2Vfc3RhdHVzID09IFNMUlVfUEFHRV9X UklURV9JTl9QUk9HUkVTUyAmJgogCQkJCSAhd3JpdGVfb2spKQogCQkJewogCQkJCVNpbXBsZUxy dVdhaXRJTyhjdGwsIHNsb3Rubyk7CkBAIC00NjMsMTQgKzQ1OCwxNCBAQCBTaW1wbGVMcnVSZWFk UGFnZShTbHJ1Q3RsIGN0bCwgaW50IHBhZ2VubywgYm9vbCB3cml0ZV9vaywKIAkJfQogCiAJCS8q IFdlIGZvdW5kIG5vIG1hdGNoOyBhc3NlcnQgd2Ugc2VsZWN0ZWQgYSBmcmVlYWJsZSBzbG90ICov Ci0JCUFzc2VydChzaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPT0gU0xSVV9QQUdFX0VNUFRZ IHx8Ci0JCQkgICAoc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID09IFNMUlVfUEFHRV9WQUxJ RCAmJgotCQkJCSFzaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSkpOworCQlBc3NlcnQoc2hhcmVk LT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdlX3N0YXR1cyA9PSBTTFJVX1BBR0VfRU1QVFkgfHwK KwkJCSAgIChzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2Vfc3RhdHVzID09IFNMUlVf UEFHRV9WQUxJRCAmJgorCQkJCSFzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2VfZGly dHkpKTsKIAogCQkvKiBNYXJrIHRoZSBzbG90IHJlYWQtYnVzeSAqLwotCQlzaGFyZWQtPnBhZ2Vf bnVtYmVyW3Nsb3Rub10gPSBwYWdlbm87Ci0JCXNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9 IFNMUlVfUEFHRV9SRUFEX0lOX1BST0dSRVNTOwotCQlzaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5v XSA9IGZhbHNlOworCQlzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2VfbnVtYmVyID0g cGFnZW5vOworCQlzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2Vfc3RhdHVzID0gU0xS VV9QQUdFX1JFQURfSU5fUFJPR1JFU1M7CisJCXNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10u cGFnZV9kaXJ0eSA9IGZhbHNlOwogCiAJCS8qIEFjcXVpcmUgcGVyLWJ1ZmZlciBsb2NrIChjYW5u b3QgZGVhZGxvY2ssIHNlZSBub3RlcyBhdCB0b3ApICovCiAJCUxXTG9ja0FjcXVpcmUoJnNoYXJl ZC0+YnVmZmVyX2xvY2tzW3Nsb3Rub10ubG9jaywgTFdfRVhDTFVTSVZFKTsKQEAgLTQ4NywxMSAr NDgyLDExIEBAIFNpbXBsZUxydVJlYWRQYWdlKFNscnVDdGwgY3RsLCBpbnQgcGFnZW5vLCBib29s IHdyaXRlX29rLAogCQkvKiBSZS1hY3F1aXJlIGNvbnRyb2wgbG9jayBhbmQgdXBkYXRlIHBhZ2Ug c3RhdGUgKi8KIAkJTFdMb2NrQWNxdWlyZShzaGFyZWQtPkNvbnRyb2xMb2NrLCBMV19FWENMVVNJ VkUpOwogCi0JCUFzc2VydChzaGFyZWQtPnBhZ2VfbnVtYmVyW3Nsb3Rub10gPT0gcGFnZW5vICYm Ci0JCQkgICBzaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPT0gU0xSVV9QQUdFX1JFQURfSU5f UFJPR1JFU1MgJiYKLQkJCSAgICFzaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSk7CisJCUFzc2Vy dChzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2VfbnVtYmVyID09IHBhZ2VubyAmJgor CQkJICAgc2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdlX3N0YXR1cyA9PSBTTFJVX1BB R0VfUkVBRF9JTl9QUk9HUkVTUyAmJgorCQkJICAgIXNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Ru b10ucGFnZV9kaXJ0eSk7CiAKLQkJc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID0gb2sgPyBT TFJVX1BBR0VfVkFMSUQgOiBTTFJVX1BBR0VfRU1QVFk7CisJCXNoYXJlZC0+cGFnZV9lbnRyaWVz W3Nsb3Rub10ucGFnZV9zdGF0dXMgPSBvayA/IFNMUlVfUEFHRV9WQUxJRCA6IFNMUlVfUEFHRV9F TVBUWTsKIAogCQlMV0xvY2tSZWxlYXNlKCZzaGFyZWQtPmJ1ZmZlcl9sb2Nrc1tzbG90bm9dLmxv Y2spOwogCkBAIC01MzYsOSArNTMxLDkgQEAgU2ltcGxlTHJ1UmVhZFBhZ2VfUmVhZE9ubHkoU2xy dUN0bCBjdGwsIGludCBwYWdlbm8sIFRyYW5zYWN0aW9uSWQgeGlkKQogCWludCBiYW5rZW5kID0g YmFua3N0YXJ0ICsgc2hhcmVkLT5iYW5rX3NpemU7CiAJZm9yIChzbG90bm8gPSBiYW5rc3RhcnQ7 IHNsb3RubyA8IGJhbmtlbmQ7IHNsb3RubysrKQogCXsKLQkJaWYgKHNoYXJlZC0+cGFnZV9udW1i ZXJbc2xvdG5vXSA9PSBwYWdlbm8gJiYKLQkJCXNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSAh PSBTTFJVX1BBR0VfRU1QVFkgJiYKLQkJCXNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSAhPSBT TFJVX1BBR0VfUkVBRF9JTl9QUk9HUkVTUykKKwkJaWYgKHNoYXJlZC0+cGFnZV9lbnRyaWVzW3Ns b3Rub10ucGFnZV9udW1iZXIgPT0gcGFnZW5vICYmCisJCQlzaGFyZWQtPnBhZ2VfZW50cmllc1tz bG90bm9dLnBhZ2Vfc3RhdHVzICE9IFNMUlVfUEFHRV9FTVBUWSAmJgorCQkJc2hhcmVkLT5wYWdl X2VudHJpZXNbc2xvdG5vXS5wYWdlX3N0YXR1cyAhPSBTTFJVX1BBR0VfUkVBRF9JTl9QUk9HUkVT UykKIAkJewogCQkJLyogU2VlIGNvbW1lbnRzIGZvciBTbHJ1UmVjZW50bHlVc2VkIG1hY3JvICov CiAJCQlTbHJ1UmVjZW50bHlVc2VkKHNoYXJlZCwgc2xvdG5vKTsKQEAgLTU3MiwxMiArNTY3LDEy IEBAIHN0YXRpYyB2b2lkCiBTbHJ1SW50ZXJuYWxXcml0ZVBhZ2UoU2xydUN0bCBjdGwsIGludCBz bG90bm8sIFNscnVXcml0ZUFsbCBmZGF0YSkKIHsKIAlTbHJ1U2hhcmVkCXNoYXJlZCA9IGN0bC0+ c2hhcmVkOwotCWludAkJCXBhZ2VubyA9IHNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXTsKKwlp bnQJCQlwYWdlbm8gPSBzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2VfbnVtYmVyOwog CWJvb2wJCW9rOwogCiAJLyogSWYgYSB3cml0ZSBpcyBpbiBwcm9ncmVzcywgd2FpdCBmb3IgaXQg dG8gZmluaXNoICovCi0Jd2hpbGUgKHNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9PSBTTFJV X1BBR0VfV1JJVEVfSU5fUFJPR1JFU1MgJiYKLQkJICAgc2hhcmVkLT5wYWdlX251bWJlcltzbG90 bm9dID09IHBhZ2VubykKKwl3aGlsZSAoc2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdl X3N0YXR1cyA9PSBTTFJVX1BBR0VfV1JJVEVfSU5fUFJPR1JFU1MgJiYKKwkJICAgc2hhcmVkLT5w YWdlX2VudHJpZXNbc2xvdG5vXS5wYWdlX251bWJlciA9PSBwYWdlbm8pCiAJewogCQlTaW1wbGVM cnVXYWl0SU8oY3RsLCBzbG90bm8pOwogCX0KQEAgLTU4NiwxNyArNTgxLDE3IEBAIFNscnVJbnRl cm5hbFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50IHNsb3RubywgU2xydVdyaXRlQWxsIGZkYXRh KQogCSAqIERvIG5vdGhpbmcgaWYgcGFnZSBpcyBub3QgZGlydHksIG9yIGlmIGJ1ZmZlciBubyBs b25nZXIgY29udGFpbnMgdGhlCiAJICogc2FtZSBwYWdlIHdlIHdlcmUgY2FsbGVkIGZvci4KIAkg Ki8KLQlpZiAoIXNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dIHx8Ci0JCXNoYXJlZC0+cGFnZV9z dGF0dXNbc2xvdG5vXSAhPSBTTFJVX1BBR0VfVkFMSUQgfHwKLQkJc2hhcmVkLT5wYWdlX251bWJl cltzbG90bm9dICE9IHBhZ2VubykKKwlpZiAoIXNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10u cGFnZV9kaXJ0eSB8fAorCQlzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2Vfc3RhdHVz ICE9IFNMUlVfUEFHRV9WQUxJRCB8fAorCQlzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBh Z2VfbnVtYmVyICE9IHBhZ2VubykKIAkJcmV0dXJuOwogCiAJLyoKIAkgKiBNYXJrIHRoZSBzbG90 IHdyaXRlLWJ1c3ksIGFuZCBjbGVhciB0aGUgZGlydHliaXQuICBBZnRlciB0aGlzIHBvaW50LCBh CiAJICogdHJhbnNhY3Rpb24gc3RhdHVzIHVwZGF0ZSBvbiB0aGlzIHBhZ2Ugd2lsbCBtYXJrIGl0 IGRpcnR5IGFnYWluLgogCSAqLwotCXNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9IFNMUlVf UEFHRV9XUklURV9JTl9QUk9HUkVTUzsKLQlzaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSA9IGZh bHNlOworCXNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9zdGF0dXMgPSBTTFJVX1BB R0VfV1JJVEVfSU5fUFJPR1JFU1M7CisJc2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdl X2RpcnR5ID0gZmFsc2U7CiAKIAkvKiBBY3F1aXJlIHBlci1idWZmZXIgbG9jayAoY2Fubm90IGRl YWRsb2NrLCBzZWUgbm90ZXMgYXQgdG9wKSAqLwogCUxXTG9ja0FjcXVpcmUoJnNoYXJlZC0+YnVm ZmVyX2xvY2tzW3Nsb3Rub10ubG9jaywgTFdfRVhDTFVTSVZFKTsKQEAgLTYxOSwxNCArNjE0LDE0 IEBAIFNscnVJbnRlcm5hbFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50IHNsb3RubywgU2xydVdy aXRlQWxsIGZkYXRhKQogCS8qIFJlLWFjcXVpcmUgY29udHJvbCBsb2NrIGFuZCB1cGRhdGUgcGFn ZSBzdGF0ZSAqLwogCUxXTG9ja0FjcXVpcmUoc2hhcmVkLT5Db250cm9sTG9jaywgTFdfRVhDTFVT SVZFKTsKIAotCUFzc2VydChzaGFyZWQtPnBhZ2VfbnVtYmVyW3Nsb3Rub10gPT0gcGFnZW5vICYm Ci0JCSAgIHNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9PSBTTFJVX1BBR0VfV1JJVEVfSU5f UFJPR1JFU1MpOworCUFzc2VydChzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2VfbnVt YmVyID09IHBhZ2VubyAmJgorCQkgICBzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2Vf c3RhdHVzID09IFNMUlVfUEFHRV9XUklURV9JTl9QUk9HUkVTUyk7CiAKIAkvKiBJZiB3ZSBmYWls ZWQgdG8gd3JpdGUsIG1hcmsgdGhlIHBhZ2UgZGlydHkgYWdhaW4gKi8KIAlpZiAoIW9rKQotCQlz aGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSA9IHRydWU7CisJCXNoYXJlZC0+cGFnZV9lbnRyaWVz W3Nsb3Rub10ucGFnZV9kaXJ0eSA9IHRydWU7CiAKLQlzaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Ru b10gPSBTTFJVX1BBR0VfVkFMSUQ7CisJc2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdl X3N0YXR1cyA9IFNMUlVfUEFHRV9WQUxJRDsKIAogCUxXTG9ja1JlbGVhc2UoJnNoYXJlZC0+YnVm ZmVyX2xvY2tzW3Nsb3Rub10ubG9jayk7CiAKQEAgLTEwNjcsOCArMTA2Miw4IEBAIFNscnVTZWxl Y3RMUlVQYWdlKFNscnVDdGwgY3RsLCBpbnQgcGFnZW5vKQogCQlpbnQgYmFua2VuZCA9IGJhbmtz dGFydCArIHNoYXJlZC0+YmFua19zaXplOwogCQlmb3IgKHNsb3RubyA9IGJhbmtzdGFydDsgc2xv dG5vIDwgYmFua2VuZDsgc2xvdG5vKyspCiAJCXsKLQkJCWlmIChzaGFyZWQtPnBhZ2VfbnVtYmVy W3Nsb3Rub10gPT0gcGFnZW5vICYmCi0JCQkJc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dICE9 IFNMUlVfUEFHRV9FTVBUWSkKKwkJCWlmIChzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBh Z2VfbnVtYmVyID09IHBhZ2VubyAmJgorCQkJCXNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10u cGFnZV9zdGF0dXMgIT0gU0xSVV9QQUdFX0VNUFRZKQogCQkJCXJldHVybiBzbG90bm87CiAJCX0K IApAQCAtMTEwNSw3ICsxMTAwLDcgQEAgU2xydVNlbGVjdExSVVBhZ2UoU2xydUN0bCBjdGwsIGlu dCBwYWdlbm8pCiAJCQlpbnQJCQl0aGlzX2RlbHRhOwogCQkJaW50CQkJdGhpc19wYWdlX251bWJl cjsKIAotCQkJaWYgKHNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9PSBTTFJVX1BBR0VfRU1Q VFkpCisJCQlpZiAoc2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdlX3N0YXR1cyA9PSBT TFJVX1BBR0VfRU1QVFkpCiAJCQkJcmV0dXJuIHNsb3RubzsKIAkJCXRoaXNfZGVsdGEgPSBjdXJf Y291bnQgLSBzaGFyZWQtPnBhZ2VfbHJ1X2NvdW50W3Nsb3Rub107CiAJCQlpZiAodGhpc19kZWx0 YSA8IDApCkBAIC0xMTIwLDEwICsxMTE1LDEwIEBAIFNscnVTZWxlY3RMUlVQYWdlKFNscnVDdGwg Y3RsLCBpbnQgcGFnZW5vKQogCQkJCXNoYXJlZC0+cGFnZV9scnVfY291bnRbc2xvdG5vXSA9IGN1 cl9jb3VudDsKIAkJCQl0aGlzX2RlbHRhID0gMDsKIAkJCX0KLQkJCXRoaXNfcGFnZV9udW1iZXIg PSBzaGFyZWQtPnBhZ2VfbnVtYmVyW3Nsb3Rub107CisJCQl0aGlzX3BhZ2VfbnVtYmVyID0gc2hh cmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdlX251bWJlcjsKIAkJCWlmICh0aGlzX3BhZ2Vf bnVtYmVyID09IHNoYXJlZC0+bGF0ZXN0X3BhZ2VfbnVtYmVyKQogCQkJCWNvbnRpbnVlOwotCQkJ aWYgKHNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9PSBTTFJVX1BBR0VfVkFMSUQpCisJCQlp ZiAoc2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdlX3N0YXR1cyA9PSBTTFJVX1BBR0Vf VkFMSUQpCiAJCQl7CiAJCQkJaWYgKHRoaXNfZGVsdGEgPiBiZXN0X3ZhbGlkX2RlbHRhIHx8CiAJ CQkJCSh0aGlzX2RlbHRhID09IGJlc3RfdmFsaWRfZGVsdGEgJiYKQEAgLTExNjUsNyArMTE2MCw3 IEBAIFNscnVTZWxlY3RMUlVQYWdlKFNscnVDdGwgY3RsLCBpbnQgcGFnZW5vKQogCQkvKgogCQkg KiBJZiB0aGUgc2VsZWN0ZWQgcGFnZSBpcyBjbGVhbiwgd2UncmUgc2V0LgogCQkgKi8KLQkJaWYg KCFzaGFyZWQtPnBhZ2VfZGlydHlbYmVzdHZhbGlkc2xvdF0pCisJCWlmICghc2hhcmVkLT5wYWdl X2VudHJpZXNbYmVzdHZhbGlkc2xvdF0ucGFnZV9kaXJ0eSkKIAkJCXJldHVybiBiZXN0dmFsaWRz bG90OwogCiAJCS8qCkBAIC0xMjE3LDkgKzEyMTIsOSBAQCBTaW1wbGVMcnVXcml0ZUFsbChTbHJ1 Q3RsIGN0bCwgYm9vbCBhbGxvd19yZWRpcnRpZWQpCiAJCSAqIGFscmVhZHkuICBUaGF0J3Mgb2th eS4KIAkJICovCiAJCUFzc2VydChhbGxvd19yZWRpcnRpZWQgfHwKLQkJCSAgIHNoYXJlZC0+cGFn ZV9zdGF0dXNbc2xvdG5vXSA9PSBTTFJVX1BBR0VfRU1QVFkgfHwKLQkJCSAgIChzaGFyZWQtPnBh Z2Vfc3RhdHVzW3Nsb3Rub10gPT0gU0xSVV9QQUdFX1ZBTElEICYmCi0JCQkJIXNoYXJlZC0+cGFn ZV9kaXJ0eVtzbG90bm9dKSk7CisJCQkgICBzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBh Z2Vfc3RhdHVzID09IFNMUlVfUEFHRV9FTVBUWSB8fAorCQkJICAgKHNoYXJlZC0+cGFnZV9lbnRy aWVzW3Nsb3Rub10ucGFnZV9zdGF0dXMgPT0gU0xSVV9QQUdFX1ZBTElEICYmCisJCQkJIXNoYXJl ZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9kaXJ0eSkpOwogCX0KIAogCUxXTG9ja1JlbGVh c2Uoc2hhcmVkLT5Db250cm9sTG9jayk7CkBAIC0xMjkxLDE4ICsxMjg2LDE4IEBAIHJlc3RhcnQ6 OwogCiAJZm9yIChzbG90bm8gPSAwOyBzbG90bm8gPCBzaGFyZWQtPm51bV9zbG90czsgc2xvdG5v KyspCiAJewotCQlpZiAoc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID09IFNMUlVfUEFHRV9F TVBUWSkKKwkJaWYgKHNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9zdGF0dXMgPT0g U0xSVV9QQUdFX0VNUFRZKQogCQkJY29udGludWU7Ci0JCWlmICghY3RsLT5QYWdlUHJlY2VkZXMo c2hhcmVkLT5wYWdlX251bWJlcltzbG90bm9dLCBjdXRvZmZQYWdlKSkKKwkJaWYgKCFjdGwtPlBh Z2VQcmVjZWRlcyhzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2VfbnVtYmVyLCBjdXRv ZmZQYWdlKSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qCiAJCSAqIElmIHBhZ2UgaXMgY2xlYW4sIGp1 c3QgY2hhbmdlIHN0YXRlIHRvIEVNUFRZIChleHBlY3RlZCBjYXNlKS4KIAkJICovCi0JCWlmIChz aGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPT0gU0xSVV9QQUdFX1ZBTElEICYmCi0JCQkhc2hh cmVkLT5wYWdlX2RpcnR5W3Nsb3Rub10pCisJCWlmIChzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90 bm9dLnBhZ2Vfc3RhdHVzID09IFNMUlVfUEFHRV9WQUxJRCAmJgorCQkJIXNoYXJlZC0+cGFnZV9l bnRyaWVzW3Nsb3Rub10ucGFnZV9kaXJ0eSkKIAkJewotCQkJc2hhcmVkLT5wYWdlX3N0YXR1c1tz bG90bm9dID0gU0xSVV9QQUdFX0VNUFRZOworCQkJc2hhcmVkLT5wYWdlX2VudHJpZXNbc2xvdG5v XS5wYWdlX3N0YXR1cyA9IFNMUlVfUEFHRV9FTVBUWTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAg LTEzMTYsNyArMTMxMSw3IEBAIHJlc3RhcnQ6OwogCQkgKiB3b24ndCBoYXZlIGNhdXNlIHRvIHJl YWQgaXRzIGRhdGEgYWdhaW4uICBGb3Igbm93LCBrZWVwIHRoZSBsb2dpYwogCQkgKiB0aGUgc2Ft ZSBhcyBpdCB3YXMuKQogCQkgKi8KLQkJaWYgKHNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9 PSBTTFJVX1BBR0VfVkFMSUQpCisJCWlmIChzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBh Z2Vfc3RhdHVzID09IFNMUlVfUEFHRV9WQUxJRCkKIAkJCVNscnVJbnRlcm5hbFdyaXRlUGFnZShj dGwsIHNsb3RubywgTlVMTCk7CiAJCWVsc2UKIAkJCVNpbXBsZUxydVdhaXRJTyhjdGwsIHNsb3Ru byk7CkBAIC0xMzcxLDkgKzEzNjYsOSBAQCByZXN0YXJ0OgogCWRpZF93cml0ZSA9IGZhbHNlOwog CWZvciAoc2xvdG5vID0gMDsgc2xvdG5vIDwgc2hhcmVkLT5udW1fc2xvdHM7IHNsb3RubysrKQog CXsKLQkJaW50CQkJcGFnZXNlZ25vID0gc2hhcmVkLT5wYWdlX251bWJlcltzbG90bm9dIC8gU0xS VV9QQUdFU19QRVJfU0VHTUVOVDsKKwkJaW50CQkJcGFnZXNlZ25vID0gc2hhcmVkLT5wYWdlX2Vu dHJpZXNbc2xvdG5vXS5wYWdlX251bWJlciAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7CiAKLQkJ aWYgKHNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9PSBTTFJVX1BBR0VfRU1QVFkpCisJCWlm IChzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2Vfc3RhdHVzID09IFNMUlVfUEFHRV9F TVBUWSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIG5vdCB0aGUgc2VnbWVudCB3ZSdyZSBsb29raW5n IGZvciAqLwpAQCAtMTM4MSwxNSArMTM3NiwxNSBAQCByZXN0YXJ0OgogCQkJY29udGludWU7CiAK IAkJLyogSWYgcGFnZSBpcyBjbGVhbiwganVzdCBjaGFuZ2Ugc3RhdGUgdG8gRU1QVFkgKGV4cGVj dGVkIGNhc2UpLiAqLwotCQlpZiAoc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID09IFNMUlVf UEFHRV9WQUxJRCAmJgotCQkJIXNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKQorCQlpZiAoc2hh cmVkLT5wYWdlX2VudHJpZXNbc2xvdG5vXS5wYWdlX3N0YXR1cyA9PSBTTFJVX1BBR0VfVkFMSUQg JiYKKwkJCSFzaGFyZWQtPnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2VfZGlydHkpCiAJCXsKLQkJ CXNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9IFNMUlVfUEFHRV9FTVBUWTsKKwkJCXNoYXJl ZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9zdGF0dXMgPSBTTFJVX1BBR0VfRU1QVFk7CiAJ CQljb250aW51ZTsKIAkJfQogCiAJCS8qIFNhbWUgbG9naWMgYXMgU2ltcGxlTHJ1VHJ1bmNhdGUo KSAqLwotCQlpZiAoc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID09IFNMUlVfUEFHRV9WQUxJ RCkKKwkJaWYgKHNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9zdGF0dXMgPT0gU0xS VV9QQUdFX1ZBTElEKQogCQkJU2xydUludGVybmFsV3JpdGVQYWdlKGN0bCwgc2xvdG5vLCBOVUxM KTsKIAkJZWxzZQogCQkJU2ltcGxlTHJ1V2FpdElPKGN0bCwgc2xvdG5vKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9zdWJ0cmFucy5jCmluZGV4IDc4NWYyNTIwZmRlLi4xMTc1NGZkYmFjNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jCkBAIC05Nyw3ICs5Nyw3IEBAIFN1YlRy YW5zU2V0UGFyZW50KFRyYW5zYWN0aW9uSWQgeGlkLCBUcmFuc2FjdGlvbklkIHBhcmVudCkKIAl7 CiAJCUFzc2VydCgqcHRyID09IEludmFsaWRUcmFuc2FjdGlvbklkKTsKIAkJKnB0ciA9IHBhcmVu dDsKLQkJU3ViVHJhbnNDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dID0gdHJ1ZTsKKwkJ U3ViVHJhbnNDdGwtPnNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9kaXJ0eSA9IHRy dWU7CiAJfQogCiAJTFdMb2NrUmVsZWFzZShTdWJ0cmFuc1NMUlVMb2NrKTsKQEAgLTIyMCw3ICsy MjAsNyBAQCBCb290U3RyYXBTVUJUUkFOUyh2b2lkKQogCiAJLyogTWFrZSBzdXJlIGl0J3Mgd3Jp dHRlbiBvdXQgKi8KIAlTaW1wbGVMcnVXcml0ZVBhZ2UoU3ViVHJhbnNDdGwsIHNsb3Rubyk7Ci0J QXNzZXJ0KCFTdWJUcmFuc0N0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Rub10pOworCUFzc2Vy dCghU3ViVHJhbnNDdGwtPnNoYXJlZC0+cGFnZV9lbnRyaWVzW3Nsb3Rub10ucGFnZV9kaXJ0eSk7 CiAKIAlMV0xvY2tSZWxlYXNlKFN1YnRyYW5zU0xSVUxvY2spOwogfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMK aW5kZXggN2YyYjc1OTg0NDkuLjg2YTViYzI0MzBjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9hc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKQEAgLTE0 NDUsNyArMTQ0NSw3IEBAIGFzeW5jUXVldWVBZGRFbnRyaWVzKExpc3RDZWxsICpuZXh0Tm90aWZ5 KQogCQkJCQkJCQkgICBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CiAKIAkvKiBOb3RlIHdlIG1hcmsg dGhlIHBhZ2UgZGlydHkgYmVmb3JlIHdyaXRpbmcgaW4gaXQgKi8KLQlOb3RpZnlDdGwtPnNoYXJl ZC0+cGFnZV9kaXJ0eVtzbG90bm9dID0gdHJ1ZTsKKwlOb3RpZnlDdGwtPnNoYXJlZC0+cGFnZV9l bnRyaWVzW3Nsb3Rub10ucGFnZV9kaXJ0eSA9IHRydWU7CiAKIAl3aGlsZSAobmV4dE5vdGlmeSAh PSBOVUxMKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNh dGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwppbmRleCBjNWU2Njc1 NzY0My4uNTNiZDdkOTU3Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9w cmVkaWNhdGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAg LTk2Myw3ICs5NjMsNyBAQCBTZXJpYWxBZGQoVHJhbnNhY3Rpb25JZCB4aWQsIFNlckNvbW1pdFNl cU5vIG1pbkNvbmZsaWN0Q29tbWl0U2VxTm8pCiAJCXNsb3RubyA9IFNpbXBsZUxydVJlYWRQYWdl KFNlcmlhbFNscnVDdGwsIHRhcmdldFBhZ2UsIHRydWUsIHhpZCk7CiAKIAlTZXJpYWxWYWx1ZShz bG90bm8sIHhpZCkgPSBtaW5Db25mbGljdENvbW1pdFNlcU5vOwotCVNlcmlhbFNscnVDdGwtPnNo YXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dID0gdHJ1ZTsKKwlTZXJpYWxTbHJ1Q3RsLT5zaGFyZWQt PnBhZ2VfZW50cmllc1tzbG90bm9dLnBhZ2VfZGlydHkgPSB0cnVlOwogCiAJTFdMb2NrUmVsZWFz ZShTZXJpYWxTTFJVTG9jayk7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xy dS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaAppbmRleCBmNGRmNTRkM2MxMi4uMGE0ZmFl OTFkN2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmgKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3NscnUuaApAQCAtNDQsNyArNDQsNyBAQAogICogaW4gdGhlIGxhdHRlciBj YXNlIGl0IGltcGxpZXMgdGhhdCB0aGUgcGFnZSBoYXMgYmVlbiByZS1kaXJ0aWVkIHNpbmNlCiAg KiB0aGUgd3JpdGUgc3RhcnRlZC4KICAqLwotdHlwZWRlZiBlbnVtCit0eXBlZGVmIGVudW0gU2xy dVBhZ2VTdGF0dXM6aW50MTZfdAogewogCVNMUlVfUEFHRV9FTVBUWSwJCQkvKiBidWZmZXIgaXMg bm90IGluIHVzZSAqLwogCVNMUlVfUEFHRV9SRUFEX0lOX1BST0dSRVNTLCAvKiBwYWdlIGlzIGJl aW5nIHJlYWQgaW4gKi8KQEAgLTUyLDYgKzUyLDEzIEBAIHR5cGVkZWYgZW51bQogCVNMUlVfUEFH RV9XUklURV9JTl9QUk9HUkVTUyAvKiBwYWdlIGlzIGJlaW5nIHdyaXR0ZW4gb3V0ICovCiB9IFNs cnVQYWdlU3RhdHVzOwogCit0eXBlZGVmIHN0cnVjdCBTbHJ1UGFnZUVudHJ5Cit7CisJaW50CQkJ CXBhZ2VfbnVtYmVyOworCVNscnVQYWdlU3RhdHVzCXBhZ2Vfc3RhdHVzOworCWJvb2wJCQlwYWdl X2RpcnR5OworfSBTbHJ1UGFnZUVudHJ5OworCiAvKgogICogU2hhcmVkLW1lbW9yeSBzdGF0ZQog ICovCkBAIC02OSw5ICs3Niw3IEBAIHR5cGVkZWYgc3RydWN0IFNscnVTaGFyZWREYXRhCiAJICog d2hlbiBzdGF0dXMgaXMgRU1QVFksIGFzIGlzIHBhZ2VfbHJ1X2NvdW50LgogCSAqLwogCWNoYXIJ ICAqKnBhZ2VfYnVmZmVyOwotCVNscnVQYWdlU3RhdHVzICpwYWdlX3N0YXR1czsKLQlib29sCSAg ICpwYWdlX2RpcnR5OwotCWludAkJICAgKnBhZ2VfbnVtYmVyOworCVNscnVQYWdlRW50cnkgKnBh Z2VfZW50cmllczsKIAlpbnQJCSAgICpwYWdlX2xydV9jb3VudDsKIAlMV0xvY2tQYWRkZWQgKmJ1 ZmZlcl9sb2NrczsKIAotLSAKMi4zMy4xCgo= ------==--bound.2806.vla1-36b7415cbc1b.qloud-c.yandex.net Content-Disposition: attachment; filename="v-18-0002-Divide-SLRU-buffers-into-8-associative-banks.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name="v-18-0002-Divide-SLRU-buffers-into-8-associative-banks.patch" RnJvbSAxMmExYzMxMjQwZTMzOGMwZThjM2M3MjExZmJkZDdiMmU5NjY2NTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8YW1ib3JvZGluQGFjbS5vcmc+CkRh dGU6IFN1biwgMTEgQXByIDIwMjEgMjE6MTg6MTAgKzAzMDAKU3ViamVjdDogW1BBVENIIHY9MTgg Mi8zXSBEaXZpZGUgU0xSVSBidWZmZXJzIGludG8gOC1hc3NvY2lhdGl2ZSBiYW5rcwoKV2Ugd2Fu dCB0byBlbGltaW5hdGUgbGluZWFyIHNlYXJjaCB3aXRoaW4gU0xSVSBidWZmZXJzLgpUbyBkbyBz byB3ZSBkaXZpZGUgU0xSVSBidWZmZXJzIGludG8gYmFua3MuIEVhY2ggYmFuayBob2xkcwphcHBy b3hpbWF0ZWx5IDggYnVmZmVycy4gRWFjaCBTTFJVIHBhZ2VubyBtYXkgcmVzaWRlIG9ubHkgaW4g b25lIGJhbmsuCkFkamFjZW50IHBhZ2Vub3MgcmVzaWRlIGluIGRpZmZlcmVudCBiYW5rcy4KLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMgfCA0MyArKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oICAgICAgICAgfCAgMiAr KwogMiBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3NscnUuYwppbmRleCA3NTg1YWUyNGNlOS4uMzM4NTdiZmZiNzkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMKQEAgLTEzNCw3ICsxMzQsNyBAQCB0eXBlZGVmIGVu dW0KIHN0YXRpYyBTbHJ1RXJyb3JDYXVzZSBzbHJ1X2VycmNhdXNlOwogc3RhdGljIGludAlzbHJ1 X2Vycm5vOwogCi0KK3N0YXRpYyB2b2lkIFNscnVBZGp1c3ROU2xvdHMoaW50KiBuc2xvdHMsIGlu dCogYmFua3NpemUsIGludCogYmFua29mZnNldCk7CiBzdGF0aWMgdm9pZCBTaW1wbGVMcnVaZXJv TFNOcyhTbHJ1Q3RsIGN0bCwgaW50IHNsb3Rubyk7CiBzdGF0aWMgdm9pZCBTaW1wbGVMcnVXYWl0 SU8oU2xydUN0bCBjdGwsIGludCBzbG90bm8pOwogc3RhdGljIHZvaWQgU2xydUludGVybmFsV3Jp dGVQYWdlKFNscnVDdGwgY3RsLCBpbnQgc2xvdG5vLCBTbHJ1V3JpdGVBbGwgZmRhdGEpOwpAQCAt MTQ4LDYgKzE0OCwzMCBAQCBzdGF0aWMgYm9vbCBTbHJ1U2NhbkRpckNiRGVsZXRlQ3V0b2ZmKFNs cnVDdGwgY3RsLCBjaGFyICpmaWxlbmFtZSwKIAkJCQkJCQkJCSAgaW50IHNlZ3BhZ2UsIHZvaWQg KmRhdGEpOwogc3RhdGljIHZvaWQgU2xydUludGVybmFsRGVsZXRlU2VnbWVudChTbHJ1Q3RsIGN0 bCwgaW50IHNlZ25vKTsKIAorLyoKKyAqIFBpY2sgYmFuayBzaXplIG9wdGltYWwgZm9yIE4tYXNz aWNpYXRpdmUgU0xSVSBidWZmZXJzLgorICogV2UgZXhwZWN0IGJhbmsgbnVtYmVyIHRvIGJlIHBp Y2tlZCBmcm9tIGxvd2VzdCBiaXRzIG9mIHJlcXVlc3RlZCBwYWdlbm8uCisgKiBUaHVzIHdlIHdh bnQgbnVtYmVyIG9mIGJhbmtzIHRvIGJlIHBvd2VyIG9mIDIuIFRoaXMgcm91dGluZSBjb21wdXRl cyBudW1iZXIKKyAqIG9mIGJhbmtzIGFpbWluZyB0byBtYWtlIGVhY2ggYmFuayBvZiBzaXplIDgu IFNvIHdlIGNhbiBwYWNrIHBhZ2UgbnVtYmVyIGFuZAorICogc3RhdHVzZXMgb2YgZWFjaCBiYW5r IG9uIG9uZSBjYWNoZWxpbmUuCisgKi8KK3N0YXRpYyB2b2lkIFNscnVBZGp1c3ROU2xvdHMoaW50 KiBuc2xvdHMsIGludCogYmFua3NpemUsIGludCogYmFua29mZnNldCkKK3sKKwkqYmFua3NpemUg PSAqbnNsb3RzOworCWludCBuYmFua3MgPSAxOworCSpiYW5rb2Zmc2V0ID0gMDsKKwl3aGlsZSAo KmJhbmtzaXplID4gMTUpCisJeworCQlpZiAoKCpiYW5rc2l6ZSAmIDEpICE9IDApCisJCQkqYmFu a3NpemUgKz0xOworCQkqYmFua3NpemUgLz0gMjsKKwkJbmJhbmtzICo9IDI7CisJCSpiYW5rb2Zm c2V0ICs9IDE7CisJfQorCWVsb2coREVCVUc1LCAibnNsb3RzICVkIGJhbmtzaXplICVkIG5iYW5r cyAlZCAiLCAqbnNsb3RzLCAqYmFua3NpemUsIG5iYW5rcyk7CisJKm5zbG90cyA9ICpiYW5rc2l6 ZSAqIG5iYW5rczsKK30KKwogLyoKICAqIEluaXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkK ICAqLwpAQCAtMTU2LDYgKzE4MCw4IEBAIFNpemUKIFNpbXBsZUxydVNobWVtU2l6ZShpbnQgbnNs b3RzLCBpbnQgbmxzbnMpCiB7CiAJU2l6ZQkJc3o7CisJaW50IGJhbmtvZmZzZXQsIGJhbmtzaXpl OworCVNscnVBZGp1c3ROU2xvdHMoJm5zbG90cywgJmJhbmtzaXplLCAmYmFua29mZnNldCk7CiAK IAkvKiB3ZSBhc3N1bWUgbnNsb3RzIGlzbid0IHNvIGxhcmdlIGFzIHRvIHJpc2sgb3ZlcmZsb3cg Ki8KIAlzeiA9IE1BWEFMSUdOKHNpemVvZihTbHJ1U2hhcmVkRGF0YSkpOwpAQCAtMTkwLDYgKzIx Niw4IEBAIFNpbXBsZUxydUluaXQoU2xydUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBu c2xvdHMsIGludCBubHNucywKIHsKIAlTbHJ1U2hhcmVkCXNoYXJlZDsKIAlib29sCQlmb3VuZDsK KwlpbnQgYmFua29mZnNldCwgYmFua3NpemU7CisJU2xydUFkanVzdE5TbG90cygmbnNsb3RzLCAm YmFua3NpemUsICZiYW5rb2Zmc2V0KTsKIAogCXNoYXJlZCA9IChTbHJ1U2hhcmVkKSBTaG1lbUlu aXRTdHJ1Y3QobmFtZSwKIAkJCQkJCQkJCQkgIFNpbXBsZUxydVNobWVtU2l6ZShuc2xvdHMsIG5s c25zKSwKQEAgLTIwOSw2ICsyMzcsOSBAQCBTaW1wbGVMcnVJbml0KFNscnVDdGwgY3RsLCBjb25z dCBjaGFyICpuYW1lLCBpbnQgbnNsb3RzLCBpbnQgbmxzbnMsCiAJCXNoYXJlZC0+Q29udHJvbExv Y2sgPSBjdGxsb2NrOwogCiAJCXNoYXJlZC0+bnVtX3Nsb3RzID0gbnNsb3RzOworCQlzaGFyZWQt PmJhbmtfbWFzayA9ICAoMSA8PCBiYW5rb2Zmc2V0KSAtIDE7CisJCXNoYXJlZC0+YmFua19zaXpl ID0gYmFua3NpemU7CisJCQogCQlzaGFyZWQtPmxzbl9ncm91cHNfcGVyX3BhZ2UgPSBubHNuczsK IAogCQlzaGFyZWQtPmN1cl9scnVfY291bnQgPSAwOwpAQCAtNTAxLDcgKzUzMiw5IEBAIFNpbXBs ZUxydVJlYWRQYWdlX1JlYWRPbmx5KFNscnVDdGwgY3RsLCBpbnQgcGFnZW5vLCBUcmFuc2FjdGlv bklkIHhpZCkKIAlMV0xvY2tBY3F1aXJlKHNoYXJlZC0+Q29udHJvbExvY2ssIExXX1NIQVJFRCk7 CiAKIAkvKiBTZWUgaWYgcGFnZSBpcyBhbHJlYWR5IGluIGEgYnVmZmVyICovCi0JZm9yIChzbG90 bm8gPSAwOyBzbG90bm8gPCBzaGFyZWQtPm51bV9zbG90czsgc2xvdG5vKyspCisJaW50IGJhbmtz dGFydCA9IChwYWdlbm8gJiBzaGFyZWQtPmJhbmtfbWFzaykgKiBzaGFyZWQtPmJhbmtfc2l6ZTsK KwlpbnQgYmFua2VuZCA9IGJhbmtzdGFydCArIHNoYXJlZC0+YmFua19zaXplOworCWZvciAoc2xv dG5vID0gYmFua3N0YXJ0OyBzbG90bm8gPCBiYW5rZW5kOyBzbG90bm8rKykKIAl7CiAJCWlmIChz aGFyZWQtPnBhZ2VfbnVtYmVyW3Nsb3Rub10gPT0gcGFnZW5vICYmCiAJCQlzaGFyZWQtPnBhZ2Vf c3RhdHVzW3Nsb3Rub10gIT0gU0xSVV9QQUdFX0VNUFRZICYmCkBAIC0xMDMwLDcgKzEwNjMsOSBA QCBTbHJ1U2VsZWN0TFJVUGFnZShTbHJ1Q3RsIGN0bCwgaW50IHBhZ2VubykKIAkJaW50CQkJYmVz dF9pbnZhbGlkX3BhZ2VfbnVtYmVyID0gMDsJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwogCiAJ CS8qIFNlZSBpZiBwYWdlIGFscmVhZHkgaGFzIGEgYnVmZmVyIGFzc2lnbmVkICovCi0JCWZvciAo c2xvdG5vID0gMDsgc2xvdG5vIDwgc2hhcmVkLT5udW1fc2xvdHM7IHNsb3RubysrKQorCQlpbnQg YmFua3N0YXJ0ID0gKHBhZ2VubyAmIHNoYXJlZC0+YmFua19tYXNrKSAqIHNoYXJlZC0+YmFua19z aXplOworCQlpbnQgYmFua2VuZCA9IGJhbmtzdGFydCArIHNoYXJlZC0+YmFua19zaXplOworCQlm b3IgKHNsb3RubyA9IGJhbmtzdGFydDsgc2xvdG5vIDwgYmFua2VuZDsgc2xvdG5vKyspCiAJCXsK IAkJCWlmIChzaGFyZWQtPnBhZ2VfbnVtYmVyW3Nsb3Rub10gPT0gcGFnZW5vICYmCiAJCQkJc2hh cmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dICE9IFNMUlVfUEFHRV9FTVBUWSkKQEAgLTEwNjUsNyAr MTEwMCw3IEBAIFNscnVTZWxlY3RMUlVQYWdlKFNscnVDdGwgY3RsLCBpbnQgcGFnZW5vKQogCQkg KiBtdWx0aXBsZSBwYWdlcyB3aXRoIHRoZSBzYW1lIGxydV9jb3VudC4KIAkJICovCiAJCWN1cl9j b3VudCA9IChzaGFyZWQtPmN1cl9scnVfY291bnQpKys7Ci0JCWZvciAoc2xvdG5vID0gMDsgc2xv dG5vIDwgc2hhcmVkLT5udW1fc2xvdHM7IHNsb3RubysrKQorCQlmb3IgKHNsb3RubyA9IGJhbmtz dGFydDsgc2xvdG5vIDwgYmFua2VuZDsgc2xvdG5vKyspCiAJCXsKIAkJCWludAkJCXRoaXNfZGVs dGE7CiAJCQlpbnQJCQl0aGlzX3BhZ2VfbnVtYmVyOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL3NscnUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmgKaW5kZXggNzkzYzA0NWYx NjAuLmY0ZGY1NGQzYzEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oCisr KyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmgKQEAgLTYxLDYgKzYxLDggQEAgdHlwZWRlZiBz dHJ1Y3QgU2xydVNoYXJlZERhdGEKIAogCS8qIE51bWJlciBvZiBidWZmZXJzIG1hbmFnZWQgYnkg dGhpcyBTTFJVIHN0cnVjdHVyZSAqLwogCWludAkJCW51bV9zbG90czsKKwlpbnQJCQliYW5rX3Np emU7CisJaW50CQkJYmFua19tYXNrOwogCiAJLyoKIAkgKiBBcnJheXMgaG9sZGluZyBpbmZvIGZv ciBlYWNoIGJ1ZmZlciBzbG90LiAgUGFnZSBudW1iZXIgaXMgdW5kZWZpbmVkCi0tIAoyLjMzLjEK Cg== ------==--bound.2806.vla1-36b7415cbc1b.qloud-c.yandex.net--