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 1lPdR1-0007au-Go for pgsql-hackers@arkaria.postgresql.org; Fri, 26 Mar 2021 03:46:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lPdQy-0002FR-QZ for pgsql-hackers@arkaria.postgresql.org; Fri, 26 Mar 2021 03:46:52 +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 1lPdQy-0002FJ-Cu for pgsql-hackers@lists.postgresql.org; Fri, 26 Mar 2021 03:46:52 +0000 Received: from mail-il1-x12d.google.com ([2607:f8b0:4864:20::12d]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1lPdQq-00084D-FQ for pgsql-hackers@postgresql.org; Fri, 26 Mar 2021 03:46:52 +0000 Received: by mail-il1-x12d.google.com with SMTP id u2so3993799ilk.1 for ; Thu, 25 Mar 2021 20:46:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=/G9sJNgpP3MjDfigdct1qjp8p0+cGCOFfdDkZ0+xxu0=; b=ufXjlLcew7YnaUvHT6ZLmSzMgIPopLxWvTehJ58t0SpNCplmhMRj7ng3YmADgEhcIi u/rXv17mefNkk28icEVM4RV2WLEH4QREPn6NlQdHdBuTDNVhplJwIhgDj6ggV+Sgwk6W 9yIDM7FQKP9yvnNmHj7iGnMfS7wuEbKo+EVGxhag/3fArGy90eHs/1XW4hRBV4nQQhFU 2cZZ05Go8OdOi1K0ZKC1oS6r//2XVmZZJMVg0SeMqglCuVlFO+AA+b54GGKG50TSapkX LC3r4D+R1T5PSbWRqFZstmyYYCV/i8oiRJ369CLxS04ivk616rgwPn6pfcKDVw/BJ/E7 Ibaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=/G9sJNgpP3MjDfigdct1qjp8p0+cGCOFfdDkZ0+xxu0=; b=VQRk2a1/MxSyA8BdVkf/KAEedt/kmK9Uwpf2XPzsxBnGW38nhU0crMWRJtMfpXwJPV niVoPDw359M/DwABzpf2UV7JEObD3Rfpf3Dfl5ftGRpAsl8eTcY96lKlk2ZyHnnMufwP d61H1ztXIktkW0/M3NXJVWmktgY3+WJLjqLhCsqQUzlLMAl9vffXYsMpXVLu6swiP/KZ yprxoTwd0jpzJsSIgRVImLGoKtrIsudpGHdCq/09CXGQfju5YxlTN/JThVezT9OUe8A2 QvFIov9oxTzR+43MGn1DJYjuEiYjU1bq1hO4xJKY7oem7hC1QiFUMAHESCfKS4bVbtmU 8ptQ== X-Gm-Message-State: AOAM533xisbDNOJp6iO7nZ5Il4aOIObbltFZ6P2K4T5kSDJdBtS3VU+/ gewM4TWLpAx+y+vLzpPeRHnJCAAclB8wFGLdOyg= X-Google-Smtp-Source: ABdhPJzTh/CbpYffuvY5OmCIUtVfv49LcBRu4FQUvYkMfbTjZuu/VZOF55Us68GAe++m6Zp6HwTUooGM9uGSgP2tPWk= X-Received: by 2002:a05:6e02:929:: with SMTP id o9mr7389077ilt.16.1616730402904; Thu, 25 Mar 2021 20:46:42 -0700 (PDT) MIME-Version: 1.0 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> In-Reply-To: From: Thomas Munro Date: Fri, 26 Mar 2021 16:46:06 +1300 Message-ID: Subject: Re: MultiXact\SLRU buffers configuration To: Andrey Borodin Cc: Gilles Darold , Tomas Vondra , Tomas Vondra , Alexander Korotkov , Anastasia Lubennikova , Daniel Gustafsson , Kyotaro Horiguchi , pgsql-hackers Content-Type: multipart/mixed; boundary="0000000000005d073d05be68615d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005d073d05be68615d Content-Type: text/plain; charset="UTF-8" Hi Andrey, all, I propose some changes, and I'm attaching a new version: I renamed the GUCs as clog_buffers etc (no "_slru_"). I fixed some copy/paste mistakes where the different GUCs were mixed up. I made some changes to the .conf.sample. I rewrote the documentation so that it states the correct unit and defaults, and refers to the subdirectories that are cached by these buffers instead of trying to give a new definition of each of the SLRUs. Do you like those changes? Some things I thought about but didn't change: I'm not entirely sure if we should use the internal and historical names well known to hackers (CLOG), or the visible directory names (I mean, we could use pg_xact_buffers instead of clog_buffers). I am not sure why these GUCs need to be PGDLLIMPORT, but I see that NBuffers is like that. I wanted to do some very simple smoke testing of CLOG sizes on my local development machine: pgbench -i -s1000 postgres pgbench -t4000000 -c8 -j8 -Mprepared postgres I disabled autovacuum after running that just to be sure it wouldn't interfere with my experiment: alter table pgbench_accounts set (autovacuum_enabled = off); Then I shut the cluster down and made a copy, so I could do some repeated experiments from the same initial conditions each time. At this point I had 30 files 0000-001E under pg_xact, holding 256kB = ~1 million transactions each. It'd take ~960 buffers to cache it all. So how long does VACUUM FREEZE pgbench_accounts take? I tested with just the 0001 patch, and also with the 0002 patch (improved version, attached): clog_buffers=128: 0001=2:28.499, 0002=2:17:891 clog_buffers=1024: 0001=1:38.485, 0002=1:29.701 I'm sure the speedup of the 0002 patch can be amplified by increasing the number of transactions referenced in the table OR number of clog_buffers, considering that the linear search produces O(transactions * clog_buffers) work. That was 32M transactions and 8MB of CLOG, but I bet if you double both of those numbers once or twice things start to get hot. I don't see why you shouldn't be able to opt to cache literally all of CLOG if you want (something like 50MB assuming default autovacuum_freeze_max_age, scale to taste, up to 512MB for the theoretical maximum useful value). I'm not saying the 0002 patch is bug-free yet though, it's a bit finickity. --0000000000005d073d05be68615d Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0001-Make-all-SLRU-buffer-sizes-configurable.patch" Content-Disposition: attachment; filename="v12-0001-Make-all-SLRU-buffer-sizes-configurable.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kmprc9v80 RnJvbSBlN2E4YjlhMGUyN2RlODBiYWIxM2YwMDRiNGQ3ZTNmYTFkYTY3N2M0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8YW1ib3JvZGluQGFjbS5vcmc+CkRh dGU6IE1vbiwgMTUgRmViIDIwMjEgMjE6NTE6NTYgKzA1MDAKU3ViamVjdDogW1BBVENIIHYxMiAx LzJdIE1ha2UgYWxsIFNMUlUgYnVmZmVyIHNpemVzIGNvbmZpZ3VyYWJsZS4KClByb3ZpZGUgbmV3 IEdVQ3MgdG8gc2V0IHRoZSBudW1iZXIgb2YgYnVmZmVycywgaW5zdGVhZCBvZiB1c2luZyBoYXJk CmNvZGVkIGRlZmF1bHRzLgoKQXV0aG9yOiBBbmRyZXkgTS4gQm9yb2RpbiA8eDRtbW1AeWFuZGV4 LXRlYW0ucnU+ClJldmlld2VkLWJ5OiBBbmFzdGFzaWEgTHViZW5uaWtvdmEgPGEubHViZW5uaWtv dmFAcG9zdGdyZXNwcm8ucnU+ClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRy YUAybmRxdWFkcmFudC5jb20+ClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFla29y b3Rrb3ZAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogR2lsbGVzIERhcm9sZCA8Z2lsbGVzQGRhcm9s ZC5uZXQ+ClJldmlld2VkLWJ5OiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vMkJFQzJCM0YtOUI2MS00QzFELTlGQjUt NUZBQjBGMDVFRjg2JTQweWFuZGV4LXRlYW0ucnUKLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwgICAgICAgICAgICAgICAgICAgICAgfCAxMzcgKysrKysrKysrKysrKysrKysrCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMgICAgICAgICAgICAgfCAgIDYgKwogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvYXN5bmMuYyAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2luaXQvZ2xvYmFscy5jICAgICAgICAgICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC91dGls cy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAgNzcgKysrKysrKysrKwogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICA5ICsrCiBzcmMvaW5jbHVk ZS9hY2Nlc3MvbXVsdGl4YWN0LmggICAgICAgICAgICAgICAgfCAgIDQgLQogc3JjL2luY2x1ZGUv YWNjZXNzL3N1YnRyYW5zLmggICAgICAgICAgICAgICAgIHwgICAzIC0KIHNyYy9pbmNsdWRlL2Nv bW1hbmRzL2FzeW5jLmggICAgICAgICAgICAgICAgICB8ICAgNSAtCiBzcmMvaW5jbHVkZS9taXNj YWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcmVkaWNhdGUuaCAgICAgICAgICAgICAgIHwgICA0IC0KIDE1IGZpbGVzIGNoYW5nZWQsIDI2 MSBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggZGRjNmQ3ODlk OC4uZjExMTJiZmE5YyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMTg4Niw2ICsxODg2LDE0MyBAQCBpbmNsdWRl X2RpciAnY29uZi5kJwogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwv dmFybGlzdGVudHJ5PgorICAgICAKKyAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbXVsdGl4YWN0 LW9mZnNldHMtYnVmZmVycyIgeHJlZmxhYmVsPSJtdWx0aXhhY3Rfb2Zmc2V0c19idWZmZXJzIj4K KyAgICAgIDx0ZXJtPjx2YXJuYW1lPm11bHRpeGFjdF9vZmZzZXRzX2J1ZmZlcnM8L3Zhcm5hbWU+ ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1h cnk+PHZhcm5hbWU+bXVsdGl4YWN0X29mZnNldHNfYnVmZmVyczwvdmFybmFtZT4gY29uZmlndXJh dGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVy bT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU3BlY2lmaWVzIHRo ZSBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSB0byB1c2VkIHRvIGNhY2hlIHRoZSBjb250ZW50cwor ICAgICAgICBvZiA8bGl0ZXJhbD5wZ19tdWx0aXhhY3Qvb2Zmc2V0czwvbGl0ZXJhbD4gKHNlZQor ICAgICAgICA8eHJlZiBsaW5rZW5kPSJwZ2RhdGEtY29udGVudHMtdGFibGUiLz4pLgorICAgICAg ICBJZiB0aGlzIHZhbHVlIGlzIHNwZWNpZmllZCB3aXRob3V0IHVuaXRzLCBpdCBpcyB0YWtlbiBh cyBibG9ja3MsCisgICAgICAgIHRoYXQgaXMgPHN5bWJvbD5CTENLU1o8L3N5bWJvbD4gYnl0ZXMs IHR5cGljYWxseSA4a0IuCisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPjg8 L2xpdGVyYWw+LgorICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgYXQgc2Vy dmVyIHN0YXJ0LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFy bGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW11bHRpeGFjdC1tZW1iZXJz LWJ1ZmZlcnMiIHhyZWZsYWJlbD0ibXVsdGl4YWN0X21lbWJlcnNfYnVmZmVycyI+CisgICAgICA8 dGVybT48dmFybmFtZT5tdWx0aXhhY3RfbWVtYmVyc19idWZmZXJzPC92YXJuYW1lPiAoPHR5cGU+ aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJu YW1lPm11bHRpeGFjdF9tZW1iZXJzX2J1ZmZlcnM8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFy YW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFNwZWNpZmllcyB0aGUgYW1vdW50 IG9mIHNoYXJlZCBtZW1vcnkgdG8gdXNlZCB0byBjYWNoZSB0aGUgY29udGVudHMKKyAgICAgICAg b2YgPGxpdGVyYWw+cGdfbXVsdGl4YWN0L21lbWJlcnM8L2xpdGVyYWw+IChzZWUKKyAgICAgICAg PHhyZWYgbGlua2VuZD0icGdkYXRhLWNvbnRlbnRzLXRhYmxlIi8+KS4KKyAgICAgICAgSWYgdGhp cyB2YWx1ZSBpcyBzcGVjaWZpZWQgd2l0aG91dCB1bml0cywgaXQgaXMgdGFrZW4gYXMgYmxvY2tz LAorICAgICAgICB0aGF0IGlzIDxzeW1ib2w+QkxDS1NaPC9zeW1ib2w+IGJ5dGVzLCB0eXBpY2Fs bHkgOGtCLgorICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD4xNjwvbGl0ZXJh bD4uCisgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBhdCBzZXJ2ZXIgc3Rh cnQuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50 cnk+CisgICAgIAorICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1zdWJ0cmFucy1idWZmZXJzIiB4 cmVmbGFiZWw9InN1YnRyYW5zX2J1ZmZlcnMiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+c3VidHJh bnNfYnVmZmVyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4 dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5zdWJ0cmFuc19idWZmZXJzPC92YXJuYW1l PiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgor ICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBT cGVjaWZpZXMgdGhlIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IHRvIHVzZWQgdG8gY2FjaGUgdGhl IGNvbnRlbnRzCisgICAgICAgIG9mIDxsaXRlcmFsPnBnX3N1YnRyYW5zPC9saXRlcmFsPiAoc2Vl CisgICAgICAgIDx4cmVmIGxpbmtlbmQ9InBnZGF0YS1jb250ZW50cy10YWJsZSIvPikuCisgICAg ICAgIElmIHRoaXMgdmFsdWUgaXMgc3BlY2lmaWVkIHdpdGhvdXQgdW5pdHMsIGl0IGlzIHRha2Vu IGFzIGJsb2NrcywKKyAgICAgICAgdGhhdCBpcyA8c3ltYm9sPkJMQ0tTWjwvc3ltYm9sPiBieXRl cywgdHlwaWNhbGx5IDhrQi4KKyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+ ODwvbGl0ZXJhbD4uCisgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBhdCBz ZXJ2ZXIgc3RhcnQuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92 YXJsaXN0ZW50cnk+CisgICAgIAorICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1ub3RpZnktYnVm ZmVycyIgeHJlZmxhYmVsPSJub3RpZnlfYnVmZmVycyI+CisgICAgICA8dGVybT48dmFybmFtZT5u b3RpZnlfYnVmZmVyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGlu ZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5ub3RpZnlfYnVmZmVyczwvdmFybmFt ZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4K KyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAg U3BlY2lmaWVzIHRoZSBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSB0byB1c2VkIHRvIGNhY2hlIHRo ZSBjb250ZW50cworICAgICAgICBvZiA8bGl0ZXJhbD5wZ19ub3RpZnk8L2xpdGVyYWw+IChzZWUK KyAgICAgICAgPHhyZWYgbGlua2VuZD0icGdkYXRhLWNvbnRlbnRzLXRhYmxlIi8+KS4KKyAgICAg ICAgSWYgdGhpcyB2YWx1ZSBpcyBzcGVjaWZpZWQgd2l0aG91dCB1bml0cywgaXQgaXMgdGFrZW4g YXMgYmxvY2tzLAorICAgICAgICB0aGF0IGlzIDxzeW1ib2w+QkxDS1NaPC9zeW1ib2w+IGJ5dGVz LCB0eXBpY2FsbHkgOGtCLgorICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD44 PC9saXRlcmFsPi4KKyAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGF0IHNl cnZlciBzdGFydC4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zh cmxpc3RlbnRyeT4KKyAgICAgCisgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXNlcmlhbC1idWZm ZXJzIiB4cmVmbGFiZWw9InNlcmlhbF9idWZmZXJzIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPnNl cmlhbF9idWZmZXJzPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5k ZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPnNlcmlhbF9idWZmZXJzPC92YXJuYW1l PiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgor ICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBT cGVjaWZpZXMgdGhlIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IHRvIHVzZWQgdG8gY2FjaGUgdGhl IGNvbnRlbnRzCisgICAgICAgIG9mIDxsaXRlcmFsPnBnX3NlcmlhbDwvbGl0ZXJhbD4gKHNlZQor ICAgICAgICA8eHJlZiBsaW5rZW5kPSJwZ2RhdGEtY29udGVudHMtdGFibGUiLz4pLgorICAgICAg ICBJZiB0aGlzIHZhbHVlIGlzIHNwZWNpZmllZCB3aXRob3V0IHVuaXRzLCBpdCBpcyB0YWtlbiBh cyBibG9ja3MsCisgICAgICAgIHRoYXQgaXMgPHN5bWJvbD5CTENLU1o8L3N5bWJvbD4gYnl0ZXMs IHR5cGljYWxseSA4a0IuCisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPjE2 PC9saXRlcmFsPi4KKyAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGF0IHNl cnZlciBzdGFydC4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zh cmxpc3RlbnRyeT4KKyAgICAgCisgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWNsb2ctYnVmZmVy cyIgeHJlZmxhYmVsPSJjbG9nX2J1ZmZlcnMiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+Y2xvZ19i dWZmZXJzPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJt PgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmNsb2dfYnVmZmVyczwvdmFybmFtZT4gY29uZmln dXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwv dGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU3BlY2lmaWVz IHRoZSBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSB0byB1c2VkIHRvIGNhY2hlIHRoZSBjb250ZW50 cworICAgICAgICBvZiA8bGl0ZXJhbD5wZ194YWN0PC9saXRlcmFsPiAoc2VlCisgICAgICAgIDx4 cmVmIGxpbmtlbmQ9InBnZGF0YS1jb250ZW50cy10YWJsZSIvPikuCisgICAgICAgIElmIHRoaXMg dmFsdWUgaXMgc3BlY2lmaWVkIHdpdGhvdXQgdW5pdHMsIGl0IGlzIHRha2VuIGFzIGJsb2NrcywK KyAgICAgICAgdGhhdCBpcyA8c3ltYm9sPkJMQ0tTWjwvc3ltYm9sPiBieXRlcywgdHlwaWNhbGx5 IDhrQi4KKyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+MDwvbGl0ZXJhbD4s IHdoaWNoIHJlcXVlc3RzCisgICAgICAgIDx2YXJuYW1lPnNoYXJlZF9idWZmZXJzPC92YXJuYW1l PiAvIDUxMiwgYnV0IG5vdCBtb3JlIHRoYW4gMTI4IG9yCisgICAgICAgIGZld2VyIHRoYW4gNCBi bG9ja3MuCisgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBhdCBzZXJ2ZXIg c3RhcnQuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0 ZW50cnk+CisgICAgIAorICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1jb21taXQtdHMtYnVmZmVy cyIgeHJlZmxhYmVsPSJjb21taXRfdHNfYnVmZmVycyI+CisgICAgICA8dGVybT48dmFybmFtZT5j b21taXRfdHNfYnVmZmVyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAg PGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5jb21taXRfdHNfYnVmZmVyczwv dmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4 dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgU3BlY2lmaWVzIHRoZSBhbW91bnQgb2YgbWVtb3J5IHRvIGJlIHVzZWQgdG8gY2FjaGUg dGhlIGNvdGVudHMgb2YKKyAgICAgICAgPGxpdGVyYWw+cGdfY29tbWl0X3RzPC9saXRlcmFsPiAo c2VlCisgICAgICAgIDx4cmVmIGxpbmtlbmQ9InBnZGF0YS1jb250ZW50cy10YWJsZSIvPikuCisg ICAgICAgIElmIHRoaXMgdmFsdWUgaXMgc3BlY2lmaWVkIHdpdGhvdXQgdW5pdHMsIGl0IGlzIHRh a2VuIGFzIGJsb2NrcywKKyAgICAgICAgdGhhdCBpcyA8c3ltYm9sPkJMQ0tTWjwvc3ltYm9sPiBi eXRlcywgdHlwaWNhbGx5IDhrQi4KKyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVy YWw+MDwvbGl0ZXJhbD4sIHdoaWNoIHJlcXVlc3RzCisgICAgICAgIDx2YXJuYW1lPnNoYXJlZF9i dWZmZXJzPC92YXJuYW1lPiAvIDUxMiwgYnV0IG5vdCBtb3JlIHRoYW4gMTI4IG9yCisgICAgICAg IGZld2VyIHRoYW4gMTYgYmxvY2tzLgorICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBi ZSBzZXQgYXQgc2VydmVyIHN0YXJ0LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+ CisgICAgIDwvdmFybGlzdGVudHJ5PgogCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tYXgt c3RhY2stZGVwdGgiIHhyZWZsYWJlbD0ibWF4X3N0YWNrX2RlcHRoIj4KICAgICAgIDx0ZXJtPjx2 YXJuYW1lPm1heF9zdGFja19kZXB0aDwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCmluZGV4IDZmYTQ3MTNmYjQuLjAzMThlOGZmNTkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMKQEAgLTY1OSw2ICs2NTksOSBAQCBUcmFuc2FjdGlv bklkR2V0U3RhdHVzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyICpsc24pCiAvKgogICog TnVtYmVyIG9mIHNoYXJlZCBDTE9HIGJ1ZmZlcnMuCiAgKgorICogSWYgdmFsdWVzIGlzIGNvbmZp Z3VyZWQgdmlhIEdVQyAtIGp1c3QgdXNlIGdpdmVuIHZhbHVlLiBPdGhlcndpc2UKKyAqIGFwcGx5 IGZvbGxvd2luZyBldXJpc3RpY3MuCisgKgogICogT24gbGFyZ2VyIG11bHRpLXByb2Nlc3NvciBz eXN0ZW1zLCBpdCBpcyBwb3NzaWJsZSB0byBoYXZlIG1hbnkgQ0xPRyBwYWdlCiAgKiByZXF1ZXN0 cyBpbiBmbGlnaHQgYXQgb25lIHRpbWUgd2hpY2ggY291bGQgbGVhZCB0byBkaXNrIGFjY2VzcyBm b3IgQ0xPRwogICogcGFnZSBpZiB0aGUgcmVxdWlyZWQgcGFnZSBpcyBub3QgZm91bmQgaW4gbWVt b3J5LiAgVGVzdGluZyByZXZlYWxlZCB0aGF0IHdlCkBAIC02NzUsNiArNjc4LDkgQEAgVHJhbnNh Y3Rpb25JZEdldFN0YXR1cyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciAqbHNuKQogU2l6 ZQogQ0xPR1NobWVtQnVmZmVycyh2b2lkKQogeworCS8qIGNvbnNpZGVyIDAgYW5kIDEgYXMgdW5z ZXQgR1VDICovCisJaWYgKGNsb2dfYnVmZmVycyA+IDEpCisJCXJldHVybiBjbG9nX2J1ZmZlcnM7 CiAJcmV0dXJuIE1pbigxMjgsIE1heCg0LCBOQnVmZmVycyAvIDUxMikpOwogfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jCmluZGV4IDI2OGJkYmEzMzkuLjBkMjYzMmI5MGUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jCkBAIC01MzAsNyArNTMwLDEw IEBAIHBnX3hhY3RfY29tbWl0X3RpbWVzdGFtcF9vcmlnaW4oUEdfRlVOQ1RJT05fQVJHUykKIFNp emUKIENvbW1pdFRzU2htZW1CdWZmZXJzKHZvaWQpCiB7Ci0JcmV0dXJuIE1pbigxNiwgTWF4KDQs IE5CdWZmZXJzIC8gMTAyNCkpOworCS8qIGNvbnNpZGVyIDAgYW5kIDEgYXMgdW5zZXQgR1VDICov CisJaWYgKGNvbW1pdF90c19idWZmZXJzID4gMSkKKwkJcmV0dXJuIGNvbW1pdF90c19idWZmZXJz OworCXJldHVybiBNaW4oMTYsIE1heCg0LCBOQnVmZmVycyAvIDUxMikpOwogfQogCiAvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCAxZjlmMWExZmExLi4yMTc4Nzc2 NWUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtMTgzMSw4ICsx ODMxLDggQEAgTXVsdGlYYWN0U2htZW1TaXplKHZvaWQpCiAJCQkgbXVsX3NpemUoc2l6ZW9mKE11 bHRpWGFjdElkKSAqIDIsIE1heE9sZGVzdFNsb3QpKQogCiAJc2l6ZSA9IFNIQVJFRF9NVUxUSVhB Q1RfU1RBVEVfU0laRTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2ltcGxlTHJ1U2htZW1TaXpl KE5VTV9NVUxUSVhBQ1RPRkZTRVRfQlVGRkVSUywgMCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXpl LCBTaW1wbGVMcnVTaG1lbVNpemUoTlVNX01VTFRJWEFDVE1FTUJFUl9CVUZGRVJTLCAwKSk7CisJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6ZShtdWx0aXhhY3Rfb2Zmc2V0 c19idWZmZXJzLCAwKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6 ZShtdWx0aXhhY3RfbWVtYmVyc19idWZmZXJzLCAwKSk7CiAKIAlyZXR1cm4gc2l6ZTsKIH0KQEAg LTE4NDgsMTMgKzE4NDgsMTMgQEAgTXVsdGlYYWN0U2htZW1Jbml0KHZvaWQpCiAJTXVsdGlYYWN0 TWVtYmVyQ3RsLT5QYWdlUHJlY2VkZXMgPSBNdWx0aVhhY3RNZW1iZXJQYWdlUHJlY2VkZXM7CiAK IAlTaW1wbGVMcnVJbml0KE11bHRpWGFjdE9mZnNldEN0bCwKLQkJCQkgICJNdWx0aVhhY3RPZmZz ZXQiLCBOVU1fTVVMVElYQUNUT0ZGU0VUX0JVRkZFUlMsIDAsCisJCQkJICAiTXVsdGlYYWN0T2Zm c2V0IiwgbXVsdGl4YWN0X29mZnNldHNfYnVmZmVycywgMCwKIAkJCQkgIE11bHRpWGFjdE9mZnNl dFNMUlVMb2NrLCAicGdfbXVsdGl4YWN0L29mZnNldHMiLAogCQkJCSAgTFdUUkFOQ0hFX01VTFRJ WEFDVE9GRlNFVF9CVUZGRVIsCiAJCQkJICBTWU5DX0hBTkRMRVJfTVVMVElYQUNUX09GRlNFVCk7 CiAJU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhNdWx0aVhhY3RPZmZzZXRDdGwsIE1VTFRJWEFD VF9PRkZTRVRTX1BFUl9QQUdFKTsKIAlTaW1wbGVMcnVJbml0KE11bHRpWGFjdE1lbWJlckN0bCwK LQkJCQkgICJNdWx0aVhhY3RNZW1iZXIiLCBOVU1fTVVMVElYQUNUTUVNQkVSX0JVRkZFUlMsIDAs CisJCQkJICAiTXVsdGlYYWN0TWVtYmVyIiwgbXVsdGl4YWN0X29mZnNldHNfYnVmZmVycywgMCwK IAkJCQkgIE11bHRpWGFjdE1lbWJlclNMUlVMb2NrLCAicGdfbXVsdGl4YWN0L21lbWJlcnMiLAog CQkJCSAgTFdUUkFOQ0hFX01VTFRJWEFDVE1FTUJFUl9CVUZGRVIsCiAJCQkJICBTWU5DX0hBTkRM RVJfTVVMVElYQUNUX01FTUJFUik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS9zdWJ0cmFucy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYwpp bmRleCA2YThlNTIxZjg5Li43ODVmMjUyMGZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9zdWJ0cmFucy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1 YnRyYW5zLmMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc2xydS5oIgogI2lu Y2x1ZGUgImFjY2Vzcy9zdWJ0cmFucy5oIgogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCisj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdfdHJhY2UuaCIKICNpbmNsdWRlICJ1 dGlscy9zbmFwbWdyLmgiCiAKQEAgLTE4NCwxNCArMTg1LDE0IEBAIFN1YlRyYW5zR2V0VG9wbW9z dFRyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkKQogU2l6ZQogU1VCVFJBTlNTaG1lbVNpemUo dm9pZCkKIHsKLQlyZXR1cm4gU2ltcGxlTHJ1U2htZW1TaXplKE5VTV9TVUJUUkFOU19CVUZGRVJT LCAwKTsKKwlyZXR1cm4gU2ltcGxlTHJ1U2htZW1TaXplKHN1YnRyYW5zX2J1ZmZlcnMsIDApOwog fQogCiB2b2lkCiBTVUJUUkFOU1NobWVtSW5pdCh2b2lkKQogewogCVN1YlRyYW5zQ3RsLT5QYWdl UHJlY2VkZXMgPSBTdWJUcmFuc1BhZ2VQcmVjZWRlczsKLQlTaW1wbGVMcnVJbml0KFN1YlRyYW5z Q3RsLCAiU3VidHJhbnMiLCBOVU1fU1VCVFJBTlNfQlVGRkVSUywgMCwKKwlTaW1wbGVMcnVJbml0 KFN1YlRyYW5zQ3RsLCAiU3VidHJhbnMiLCBzdWJ0cmFuc19idWZmZXJzLCAwLAogCQkJCSAgU3Vi dHJhbnNTTFJVTG9jaywgInBnX3N1YnRyYW5zIiwKIAkJCQkgIExXVFJBTkNIRV9TVUJUUkFOU19C VUZGRVIsIFNZTkNfSEFORExFUl9OT05FKTsKIAlTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKFN1 YlRyYW5zQ3RsLCBTVUJUUkFOU19YQUNUU19QRVJfUEFHRSk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9hc3luYy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwppbmRl eCA0YjE2ZmI1NjgyLi5kZTE3ZjUyY2Q3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9hc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKQEAgLTEwNyw3ICsx MDcsNyBAQAogICogZnJvbnRlbmQgZHVyaW5nIHN0YXJ0dXAuKSAgVGhlIGFib3ZlIGRlc2lnbiBn dWFyYW50ZWVzIHRoYXQgbm90aWZpZXMgZnJvbQogICogb3RoZXIgYmFja2VuZHMgd2lsbCBuZXZl ciBiZSBtaXNzZWQgYnkgaWdub3Jpbmcgc2VsZi1ub3RpZmllcy4KICAqCi0gKiBUaGUgYW1vdW50 IG9mIHNoYXJlZCBtZW1vcnkgdXNlZCBmb3Igbm90aWZ5IG1hbmFnZW1lbnQgKE5VTV9OT1RJRllf QlVGRkVSUykKKyAqIFRoZSBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSB1c2VkIGZvciBub3RpZnkg bWFuYWdlbWVudCAobm90aWZ5X2J1ZmZlcnMpCiAgKiBjYW4gYmUgdmFyaWVkIHdpdGhvdXQgYWZm ZWN0aW5nIGFueXRoaW5nIGJ1dCBwZXJmb3JtYW5jZS4gIFRoZSBtYXhpbXVtCiAgKiBhbW91bnQg b2Ygbm90aWZpY2F0aW9uIGRhdGEgdGhhdCBjYW4gYmUgcXVldWVkIGF0IG9uZSB0aW1lIGlzIGRl dGVybWluZWQKICAqIGJ5IHNscnUuYydzIHdyYXBhcm91bmQgbGltaXQ7IHNlZSBRVUVVRV9NQVhf UEFHRSBiZWxvdy4KQEAgLTIyNSw3ICsyMjUsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWV1ZVBvc2l0 aW9uCiAgKgogICogUmVzaXN0IHRoZSB0ZW1wdGF0aW9uIHRvIG1ha2UgdGhpcyByZWFsbHkgbGFy Z2UuICBXaGlsZSB0aGF0IHdvdWxkIHNhdmUKICAqIHdvcmsgaW4gc29tZSBwbGFjZXMsIGl0IHdv dWxkIGFkZCBjb3N0IGluIG90aGVycy4gIEluIHBhcnRpY3VsYXIsIHRoaXMKLSAqIHNob3VsZCBs aWtlbHkgYmUgbGVzcyB0aGFuIE5VTV9OT1RJRllfQlVGRkVSUywgdG8gZW5zdXJlIHRoYXQgYmFj a2VuZHMKKyAqIHNob3VsZCBsaWtlbHkgYmUgbGVzcyB0aGFuIG5vdGlmeV9idWZmZXJzLCB0byBl bnN1cmUgdGhhdCBiYWNrZW5kcwogICogY2F0Y2ggdXAgYmVmb3JlIHRoZSBwYWdlcyB0aGV5J2xs IG5lZWQgdG8gcmVhZCBmYWxsIG91dCBvZiBTTFJVIGNhY2hlLgogICovCiAjZGVmaW5lIFFVRVVF X0NMRUFOVVBfREVMQVkgNApAQCAtNTE0LDcgKzUxNCw3IEBAIEFzeW5jU2htZW1TaXplKHZvaWQp CiAJc2l6ZSA9IG11bF9zaXplKE1heEJhY2tlbmRzICsgMSwgc2l6ZW9mKFF1ZXVlQmFja2VuZFN0 YXR1cykpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBvZmZzZXRvZihBc3luY1F1ZXVlQ29udHJv bCwgYmFja2VuZCkpOwogCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6 ZShOVU1fTk9USUZZX0JVRkZFUlMsIDApKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2ltcGxl THJ1U2htZW1TaXplKG5vdGlmeV9idWZmZXJzLCAwKSk7CiAKIAlyZXR1cm4gc2l6ZTsKIH0KQEAg LTU2Miw3ICs1NjIsNyBAQCBBc3luY1NobWVtSW5pdCh2b2lkKQogCSAqIFNldCB1cCBTTFJVIG1h bmFnZW1lbnQgb2YgdGhlIHBnX25vdGlmeSBkYXRhLgogCSAqLwogCU5vdGlmeUN0bC0+UGFnZVBy ZWNlZGVzID0gYXN5bmNRdWV1ZVBhZ2VQcmVjZWRlczsKLQlTaW1wbGVMcnVJbml0KE5vdGlmeUN0 bCwgIk5vdGlmeSIsIE5VTV9OT1RJRllfQlVGRkVSUywgMCwKKwlTaW1wbGVMcnVJbml0KE5vdGlm eUN0bCwgIk5vdGlmeSIsIG5vdGlmeV9idWZmZXJzLCAwLAogCQkJCSAgTm90aWZ5U0xSVUxvY2ss ICJwZ19ub3RpZnkiLCBMV1RSQU5DSEVfTk9USUZZX0JVRkZFUiwKIAkJCQkgIFNZTkNfSEFORExF Ul9OT05FKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0 ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IGQ0OTNhZWVm MGYuLmIxZjRmMTY1MWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVk aWNhdGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTg3 Miw3ICs4NzIsNyBAQCBTZXJpYWxJbml0KHZvaWQpCiAJICovCiAJU2VyaWFsU2xydUN0bC0+UGFn ZVByZWNlZGVzID0gU2VyaWFsUGFnZVByZWNlZGVzTG9naWNhbGx5OwogCVNpbXBsZUxydUluaXQo U2VyaWFsU2xydUN0bCwgIlNlcmlhbCIsCi0JCQkJICBOVU1fU0VSSUFMX0JVRkZFUlMsIDAsIFNl cmlhbFNMUlVMb2NrLCAicGdfc2VyaWFsIiwKKwkJCQkgIHNlcmlhbF9idWZmZXJzLCAwLCBTZXJp YWxTTFJVTG9jaywgInBnX3NlcmlhbCIsCiAJCQkJICBMV1RSQU5DSEVfU0VSSUFMX0JVRkZFUiwg U1lOQ19IQU5ETEVSX05PTkUpOwogI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKIAlTZXJpYWxQ YWdlUHJlY2VkZXNMb2dpY2FsbHlVbml0VGVzdHMoKTsKQEAgLTEzOTUsNyArMTM5NSw3IEBAIFBy ZWRpY2F0ZUxvY2tTaG1lbVNpemUodm9pZCkKIAogCS8qIFNoYXJlZCBtZW1vcnkgc3RydWN0dXJl cyBmb3IgU0xSVSB0cmFja2luZyBvZiBvbGQgY29tbWl0dGVkIHhpZHMuICovCiAJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIHNpemVvZihTZXJpYWxDb250cm9sRGF0YSkpOwotCXNpemUgPSBhZGRfc2l6 ZShzaXplLCBTaW1wbGVMcnVTaG1lbVNpemUoTlVNX1NFUklBTF9CVUZGRVJTLCAwKSk7CisJc2l6 ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6ZShzZXJpYWxfYnVmZmVycywgMCkp OwogCiAJcmV0dXJuIHNpemU7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0 L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4IDczZTBh NjcyYWUuLmU5MDI3NWJlNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xv YmFscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCkBAIC0xNDgsMyAr MTQ4LDExIEBAIGludDY0CQlWYWN1dW1QYWdlRGlydHkgPSAwOwogCiBpbnQJCQlWYWN1dW1Db3N0 QmFsYW5jZSA9IDA7CS8qIHdvcmtpbmcgc3RhdGUgZm9yIHZhY3V1bSAqLwogYm9vbAkJVmFjdXVt Q29zdEFjdGl2ZSA9IGZhbHNlOworCitpbnQJCQltdWx0aXhhY3Rfb2Zmc2V0c19idWZmZXJzID0g ODsKK2ludAkJCW11bHRpeGFjdF9tZW1iZXJzX2J1ZmZlcnMgPSAxNjsKK2ludAkJCXN1YnRyYW5z X2J1ZmZlcnMgPSAzMjsKK2ludAkJCW5vdGlmeV9idWZmZXJzID0gODsKK2ludAkJCXNlcmlhbF9i dWZmZXJzID0gMTY7CitpbnQJCQljbG9nX2J1ZmZlcnMgPSAwOworaW50CQkJY29tbWl0X3RzX2J1 ZmZlcnMgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggMGM1ZGM0ZDNlOC4uMDAzYmM4MjBkMiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Yy5jCkBAIC0yMzA1LDYgKzIzMDUsODMgQEAgc3RhdGljIHN0cnVjdCBj b25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwK IAorCXsKKwkJeyJtdWx0aXhhY3Rfb2Zmc2V0c19idWZmZXJzIiwgUEdDX1BPU1RNQVNURVIsIFJF U09VUkNFU19NRU0sCisJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIG51bWJlciBvZiBzaGFyZWQg bWVtb3J5IGJ1ZmZlcnMgdXNlZCBmb3IgTXVsdGlYYWN0IG9mZnNldHMgU0xSVS4iKSwKKwkJCU5V TEwsCisJCQlHVUNfVU5JVF9CTE9DS1MKKwkJfSwKKwkJJm11bHRpeGFjdF9vZmZzZXRzX2J1ZmZl cnMsCisJCTgsIDIsIElOVF9NQVggLyAyLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKworCXsK KwkJeyJtdWx0aXhhY3RfbWVtYmVyc19idWZmZXJzIiwgUEdDX1BPU1RNQVNURVIsIFJFU09VUkNF U19NRU0sCisJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIG51bWJlciBvZiBzaGFyZWQgbWVtb3J5 IGJ1ZmZlcnMgdXNlZCBmb3IgTXVsdGlYYWN0IG1lbWJlcnMgU0xSVS4iKSwKKwkJCU5VTEwsCisJ CQlHVUNfVU5JVF9CTE9DS1MKKwkJfSwKKwkJJm11bHRpeGFjdF9tZW1iZXJzX2J1ZmZlcnMsCisJ CTE2LCAyLCBJTlRfTUFYIC8gMiwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKKwl7CisJCXsi c3VidHJhbnNfYnVmZmVycyIsIFBHQ19QT1NUTUFTVEVSLCBSRVNPVVJDRVNfTUVNLAorCQkJZ2V0 dGV4dF9ub29wKCJTZXRzIHRoZSBudW1iZXIgb2Ygc2hhcmVkIG1lbW9yeSBidWZmZXJzIHVzZWQg Zm9yIHN1YnN0cmFuc2FjdGlvbnMgU0xSVS4iKSwKKwkJCU5VTEwsCisJCQlHVUNfVU5JVF9CTE9D S1MKKwkJfSwKKwkJJnN1YnRyYW5zX2J1ZmZlcnMsCisJCTMyLCAyLCBJTlRfTUFYIC8gMiwKKwkJ TlVMTCwgTlVMTCwgTlVMTAorCX0sCisKKwl7CisJCXsibm90aWZ5X2J1ZmZlcnMiLCBQR0NfUE9T VE1BU1RFUiwgUkVTT1VSQ0VTX01FTSwKKwkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgbnVtYmVy IG9mIHNoYXJlZCBtZW1vcnkgYnVmZmVycyB1c2VkIGZvciBhc3luY3Jvbm91cyBub3RpZmljYXRp b25zIFNMUlUuIiksCisJCQlOVUxMLAorCQkJR1VDX1VOSVRfQkxPQ0tTCisJCX0sCisJCSZub3Rp ZnlfYnVmZmVycywKKwkJOCwgMiwgSU5UX01BWCAvIDIsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9 LAorCisJeworCQl7InNlcmlhbF9idWZmZXJzIiwgUEdDX1BPU1RNQVNURVIsIFJFU09VUkNFU19N RU0sCisJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIG51bWJlciBvZiBzaGFyZWQgbWVtb3J5IGJ1 ZmZlcnMgdXNlZCBmb3IgcHJlZGljYXRlIGxvY2tzIFNMUlUuIiksCisJCQlOVUxMLAorCQkJR1VD X1VOSVRfQkxPQ0tTCisJCX0sCisJCSZzZXJpYWxfYnVmZmVycywKKwkJMTYsIDIsIElOVF9NQVgg LyAyLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKworCXsKKwkJeyJjbG9nX2J1ZmZlcnMiLCBQ R0NfUE9TVE1BU1RFUiwgUkVTT1VSQ0VTX01FTSwKKwkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUg bnVtYmVyIG9mIHNoYXJlZCBtZW1vcnkgYnVmZmVycyB1c2VkIGZvciBjb21taXQgbG9nIFNMUlUu IiksCisJCQlOVUxMLAorCQkJR1VDX1VOSVRfQkxPQ0tTCisJCX0sCisJCSZjbG9nX2J1ZmZlcnMs CisJCTAsIDAsIElOVF9NQVggLyAyLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKworCXsKKwkJ eyJjb21taXRfdHNfYnVmZmVycyIsIFBHQ19QT1NUTUFTVEVSLCBSRVNPVVJDRVNfTUVNLAorCQkJ Z2V0dGV4dF9ub29wKCJTZXRzIHRoZSBudW1iZXIgb2Ygc2hhcmVkIG1lbW9yeSBidWZmZXJzIHVz ZWQgZm9yIGNvbW1pdCB0aW1lc3RhbXBzIFNMUlUuIiksCisJCQlOVUxMLAorCQkJR1VDX1VOSVRf QkxPQ0tTCisJCX0sCisJCSZjb21taXRfdHNfYnVmZmVycywKKwkJMCwgMCwgSU5UX01BWCAvIDIs CisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7InRlbXBfYnVmZmVycyIsIFBHQ19V U0VSU0VULCBSRVNPVVJDRVNfTUVNLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBtYXhpbXVt IG51bWJlciBvZiB0ZW1wb3JhcnkgYnVmZmVycyB1c2VkIGJ5IGVhY2ggc2Vzc2lvbi4iKSwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBi L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBiMjM0 YTZiZmU2Li4xYjg1MTU5ODliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jl c3FsLmNvbmYuc2FtcGxlCkBAIC0xOTAsNiArMTkwLDE1IEBACiAJCQkJCSMgKGNoYW5nZSByZXF1 aXJlcyByZXN0YXJ0KQogI2JhY2tlbmRfZmx1c2hfYWZ0ZXIgPSAwCQkjIG1lYXN1cmVkIGluIHBh Z2VzLCAwIGRpc2FibGVzCiAKKyMgLSBTTFJVIEJ1ZmZlcnMgKGNoYW5nZSByZXF1aXJlcyByZXN0 YXJ0KSAtCisKKyNjbG9nX2J1ZmZlcnMgPSAwCQkJIyBtZW1vcnkgZm9yIHBnX3hhY3QgKDAgPSBh dXRvKQorI3N1YnRyYW5zX2J1ZmZlcnMgPSAzMgkJCSMgbWVtb3J5IGZvciBwZ19zdWJ0cmFucwor I211bHRpeGFjdF9vZmZzZXRzX2J1ZmZlcnMgPSA4CQkjIG1lbW9yeSBmb3IgcGdfbXVsdGl4YWN0 L29mZnNldHMKKyNtdWx0aXhhY3RfbWVtYmVyc19idWZmZXJzID0gMTYJCSMgbWVtb3J5IGZvciBw Z19tdWx0aXhhY3QvbWVtYmVycworI25vdGlmeV9idWZmZXJzID0gOAkJCSMgbWVtb3J5IGZvciBw Z19ub2ZpdHkKKyNzZXJpYWxfYnVmZmVycyA9IDE2CQkJIyBtZW1vcnkgZm9yIHBnX3NlcmlhbAor I2NvbW1pdF90c19idWZmZXJzID0gMAkJCSMgbWVtb3J5IGZvciBwZ19jb21taXRfdHMgKDAgPSBh dXRvKQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFdSSVRFLUFIRUFEIExPRwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L211bHRpeGFjdC5oCmluZGV4IDRiYmIwMzVlYWUuLjk3YzBhNDYzNzYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVs dGl4YWN0LmgKQEAgLTI5LDEwICsyOSw2IEBACiAKICNkZWZpbmUgTWF4TXVsdGlYYWN0T2Zmc2V0 CSgoTXVsdGlYYWN0T2Zmc2V0KSAweEZGRkZGRkZGKQogCi0vKiBOdW1iZXIgb2YgU0xSVSBidWZm ZXJzIHRvIHVzZSBmb3IgbXVsdGl4YWN0ICovCi0jZGVmaW5lIE5VTV9NVUxUSVhBQ1RPRkZTRVRf QlVGRkVSUwkJOAotI2RlZmluZSBOVU1fTVVMVElYQUNUTUVNQkVSX0JVRkZFUlMJCTE2Ci0KIC8q CiAgKiBQb3NzaWJsZSBtdWx0aXhhY3QgbG9jayBtb2RlcyAoInN0YXR1cyIpLiAgVGhlIGZpcnN0 IGZvdXIgbW9kZXMgYXJlIGZvcgogICogdHVwbGUgbG9ja3MgKEZPUiBLRVkgU0hBUkUsIEZPUiBT SEFSRSwgRk9SIE5PIEtFWSBVUERBVEUsIEZPUiBVUERBVEUpOyB0aGUKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9zdWJ0cmFucy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N1YnRyYW5z LmgKaW5kZXggZDBhYjQ0YWU4Mi4uY2EwOTk5MDU2ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv YWNjZXNzL3N1YnRyYW5zLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N1YnRyYW5zLmgKQEAg LTExLDkgKzExLDYgQEAKICNpZm5kZWYgU1VCVFJBTlNfSAogI2RlZmluZSBTVUJUUkFOU19ICiAK LS8qIE51bWJlciBvZiBTTFJVIGJ1ZmZlcnMgdG8gdXNlIGZvciBzdWJ0cmFucyAqLwotI2RlZmlu ZSBOVU1fU1VCVFJBTlNfQlVGRkVSUwkzMgotCiBleHRlcm4gdm9pZCBTdWJUcmFuc1NldFBhcmVu dChUcmFuc2FjdGlvbklkIHhpZCwgVHJhbnNhY3Rpb25JZCBwYXJlbnQpOwogZXh0ZXJuIFRyYW5z YWN0aW9uSWQgU3ViVHJhbnNHZXRQYXJlbnQoVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIFRy YW5zYWN0aW9uSWQgU3ViVHJhbnNHZXRUb3Btb3N0VHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4 aWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaCBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2FzeW5jLmgKaW5kZXggOTIxN2Y2NmI5MS4uZmE4MzFlMzcyMSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9hc3luYy5oCkBAIC0xNSwxMSArMTUsNiBAQAogCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAK LS8qCi0gKiBUaGUgbnVtYmVyIG9mIFNMUlUgcGFnZSBidWZmZXJzIHdlIHVzZSBmb3IgdGhlIG5v dGlmaWNhdGlvbiBxdWV1ZS4KLSAqLwotI2RlZmluZSBOVU1fTk9USUZZX0JVRkZFUlMJOAotCiBl eHRlcm4gYm9vbCBUcmFjZV9ub3RpZnk7CiBleHRlcm4gdm9sYXRpbGUgc2lnX2F0b21pY190IG5v dGlmeUludGVycnVwdFBlbmRpbmc7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1p bi5oIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggMDEzODUwYWMyOC4uOWMzMjViNDMx MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUv bWlzY2FkbWluLmgKQEAgLTE2Miw2ICsxNjIsMTMgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBN YXhCYWNrZW5kczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgTWF4Q29ubmVjdGlvbnM7CiBleHRl cm4gUEdETExJTVBPUlQgaW50IG1heF93b3JrZXJfcHJvY2Vzc2VzOwogZXh0ZXJuIFBHRExMSU1Q T1JUIGludCBtYXhfcGFyYWxsZWxfd29ya2VyczsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgbXVs dGl4YWN0X29mZnNldHNfYnVmZmVyczsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgbXVsdGl4YWN0 X21lbWJlcnNfYnVmZmVyczsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgc3VidHJhbnNfYnVmZmVy czsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgbm90aWZ5X2J1ZmZlcnM7CitleHRlcm4gUEdETExJ TVBPUlQgaW50IHNlcmlhbF9idWZmZXJzOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjbG9nX2J1 ZmZlcnM7CitleHRlcm4gUEdETExJTVBPUlQgaW50IGNvbW1pdF90c19idWZmZXJzOwogCiBleHRl cm4gUEdETExJTVBPUlQgaW50IE15UHJvY1BpZDsKIGV4dGVybiBQR0RMTElNUE9SVCBwZ190aW1l X3QgTXlTdGFydFRpbWU7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3ByZWRpY2F0 ZS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcmVkaWNhdGUuaAppbmRleCAxNTJiNjk4NjExLi5j NzI3NzliZDg4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3ByZWRpY2F0ZS5oCisr KyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlLmgKQEAgLTI2LDEwICsyNiw2IEBAIGV4 dGVybiBpbnQJbWF4X3ByZWRpY2F0ZV9sb2Nrc19wZXJfeGFjdDsKIGV4dGVybiBpbnQJbWF4X3By ZWRpY2F0ZV9sb2Nrc19wZXJfcmVsYXRpb247CiBleHRlcm4gaW50CW1heF9wcmVkaWNhdGVfbG9j a3NfcGVyX3BhZ2U7CiAKLQotLyogTnVtYmVyIG9mIFNMUlUgYnVmZmVycyB0byB1c2UgZm9yIFNl cmlhbCBTTFJVICovCi0jZGVmaW5lIE5VTV9TRVJJQUxfQlVGRkVSUwkJMTYKLQogLyoKICAqIEEg aGFuZGxlIHVzZWQgZm9yIHNoYXJpbmcgU0VSSUFMSVpBQkxFWEFDVCBvYmplY3RzIGJldHdlZW4g dGhlIHBhcnRpY2lwYW50cwogICogaW4gYSBwYXJhbGxlbCBxdWVyeS4KLS0gCjIuMzAuMQoK --0000000000005d073d05be68615d Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0002-Add-buffer-mapping-table-for-SLRUs.patch" Content-Disposition: attachment; filename="v12-0002-Add-buffer-mapping-table-for-SLRUs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kmprcc611 RnJvbSA5ODA5MmI1YjRlN2E5YTExYTViYmQ1MGMzNmFkOGY2MzVmZGZhYjZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgMjUgTWFyIDIwMjEgMTA6MTE6MzEgKzEzMDAKU3ViamVjdDogW1BBVENIIHYx MiAyLzJdIEFkZCBidWZmZXIgbWFwcGluZyB0YWJsZSBmb3IgU0xSVXMuCgpJbnN0ZWFkIG9mIGRv aW5nIGEgbGluZWFyIHNlYXJjaCBmb3IgdGhlIGJ1ZmZlciBob2xkaW5nIGEgZ2l2ZW4gcGFnZQpu dW1iZXIsIHVzZSBhIGhhc2ggdGFibGUuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t LzJCRUMyQjNGLTlCNjEtNEMxRC05RkI1LTVGQUIwRjA1RUY4NiU0MHlhbmRleC10ZWFtLnJ1Ci0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc2xydS5jIHwgMTExICsrKysrKysrKysrKysr KysrKysrKysrKystLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaCAgICAgICAgIHwgICAy ICsKIDIgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc2xydS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vc2xydS5jCmluZGV4IDgyMTQ5YWQ3ODIuLmY4MjNjMmEwYzggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMKQEAgLTU4LDYgKzU4LDggQEAKICNpbmNsdWRlICJw Z3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1l bS5oIgorI2luY2x1ZGUgInV0aWxzL2R5bmFoYXNoLmgiCisjaW5jbHVkZSAidXRpbHMvaHNlYXJj aC5oIgogCiAjZGVmaW5lIFNscnVGaWxlTmFtZShjdGwsIHBhdGgsIHNlZykgXAogCXNucHJpbnRm KHBhdGgsIE1BWFBHUEFUSCwgIiVzLyUwNFgiLCAoY3RsKS0+RGlyLCBzZWcpCkBAIC03OSw2ICs4 MSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBTbHJ1V3JpdGVBbGxEYXRhCiAKIHR5cGVkZWYgc3RydWN0 IFNscnVXcml0ZUFsbERhdGEgKlNscnVXcml0ZUFsbDsKIAordHlwZWRlZiBzdHJ1Y3QgU2xydU1h cHBpbmdUYWJsZUVudHJ5Cit7CisJaW50CQkJcGFnZW5vOworCWludAkJCXNsb3RubzsKK30gU2xy dU1hcHBpbmdUYWJsZUVudHJ5OworCiAvKgogICogUG9wdWxhdGUgYSBmaWxlIHRhZyBkZXNjcmli aW5nIGEgc2VnbWVudCBmaWxlLiAgV2Ugb25seSB1c2UgdGhlIHNlZ21lbnQKICAqIG51bWJlciwg c2luY2Ugd2UgY2FuIGRlcml2ZSBldmVyeXRoaW5nIGVsc2Ugd2UgbmVlZCBieSBoYXZpbmcgc2Vw YXJhdGUKQEAgLTE0Niw2ICsxNTQsOSBAQCBzdGF0aWMgaW50CVNscnVTZWxlY3RMUlVQYWdlKFNs cnVDdGwgY3RsLCBpbnQgcGFnZW5vKTsKIHN0YXRpYyBib29sIFNscnVTY2FuRGlyQ2JEZWxldGVD dXRvZmYoU2xydUN0bCBjdGwsIGNoYXIgKmZpbGVuYW1lLAogCQkJCQkJCQkJICBpbnQgc2VncGFn ZSwgdm9pZCAqZGF0YSk7CiBzdGF0aWMgdm9pZCBTbHJ1SW50ZXJuYWxEZWxldGVTZWdtZW50KFNs cnVDdGwgY3RsLCBpbnQgc2Vnbm8pOworc3RhdGljIHZvaWQJU2xydU1hcHBpbmdBZGQoU2xydUN0 bCBjdGwsIGludCBwYWdlbm8sIGludCBzbG90bm8pOworc3RhdGljIHZvaWQJU2xydU1hcHBpbmdS ZW1vdmUoU2xydUN0bCBjdGwsIGludCBwYWdlbm8pOworc3RhdGljIGludAlTbHJ1TWFwcGluZ0Zp bmQoU2xydUN0bCBjdGwsIGludCBwYWdlbm8pOwogCiAvKgogICogSW5pdGlhbGl6YXRpb24gb2Yg c2hhcmVkIG1lbW9yeQpAQCAtMTY4LDcgKzE3OSw4IEBAIFNpbXBsZUxydVNobWVtU2l6ZShpbnQg bnNsb3RzLCBpbnQgbmxzbnMpCiAJaWYgKG5sc25zID4gMCkKIAkJc3ogKz0gTUFYQUxJR04obnNs b3RzICogbmxzbnMgKiBzaXplb2YoWExvZ1JlY1B0cikpOwkvKiBncm91cF9sc25bXSAqLwogCi0J cmV0dXJuIEJVRkZFUkFMSUdOKHN6KSArIEJMQ0tTWiAqIG5zbG90czsKKwlyZXR1cm4gQlVGRkVS QUxJR04oc3opICsgQkxDS1NaICogbnNsb3RzICsKKwkJaGFzaF9lc3RpbWF0ZV9zaXplKG5zbG90 cywgc2l6ZW9mKFNscnVNYXBwaW5nVGFibGVFbnRyeSkpOwogfQogCiAvKgpAQCAtMTg3LDYgKzE5 OSw5IEBAIFNpbXBsZUxydUluaXQoU2xydUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBu c2xvdHMsIGludCBubHNucywKIAkJCSAgTFdMb2NrICpjdGxsb2NrLCBjb25zdCBjaGFyICpzdWJk aXIsIGludCB0cmFuY2hlX2lkLAogCQkJICBTeW5jUmVxdWVzdEhhbmRsZXIgc3luY19oYW5kbGVy KQogeworCWNoYXIJCW1hcHBpbmdfdGFibGVfbmFtZVtTSE1FTV9JTkRFWF9LRVlTSVpFXTsKKwlI QVNIQ1RMCQltYXBwaW5nX3RhYmxlX2luZm87CisJSFRBQgkgICAqbWFwcGluZ190YWJsZTsKIAlT bHJ1U2hhcmVkCXNoYXJlZDsKIAlib29sCQlmb3VuZDsKIApAQCAtMjU4LDExICsyNzMsMjEgQEAg U2ltcGxlTHJ1SW5pdChTbHJ1Q3RsIGN0bCwgY29uc3QgY2hhciAqbmFtZSwgaW50IG5zbG90cywg aW50IG5sc25zLAogCWVsc2UKIAkJQXNzZXJ0KGZvdW5kKTsKIAorCS8qIENyZWF0ZSBvciBmaW5k IHRoZSBidWZmZXIgbWFwcGluZyB0YWJsZS4gKi8KKwltZW1zZXQoJm1hcHBpbmdfdGFibGVfaW5m bywgMCwgc2l6ZW9mKG1hcHBpbmdfdGFibGVfaW5mbykpOworCW1hcHBpbmdfdGFibGVfaW5mby5r ZXlzaXplID0gc2l6ZW9mKGludCk7CisJbWFwcGluZ190YWJsZV9pbmZvLmVudHJ5c2l6ZSA9IHNp emVvZihTbHJ1TWFwcGluZ1RhYmxlRW50cnkpOworCXNucHJpbnRmKG1hcHBpbmdfdGFibGVfbmFt ZSwgc2l6ZW9mKG1hcHBpbmdfdGFibGVfbmFtZSksCisJCQkgIiVzIE1hcHBpbmcgVGFibGUiLCBu YW1lKTsKKwltYXBwaW5nX3RhYmxlID0gU2htZW1Jbml0SGFzaChtYXBwaW5nX3RhYmxlX25hbWUs IG5zbG90cywgbnNsb3RzLAorCQkJCQkJCQkgICZtYXBwaW5nX3RhYmxlX2luZm8sIEhBU0hfRUxF TSB8IEhBU0hfQkxPQlMpOworCiAJLyoKIAkgKiBJbml0aWFsaXplIHRoZSB1bnNoYXJlZCBjb250 cm9sIHN0cnVjdCwgaW5jbHVkaW5nIGRpcmVjdG9yeSBwYXRoLiBXZQogCSAqIGFzc3VtZSBjYWxs ZXIgc2V0IFBhZ2VQcmVjZWRlcy4KIAkgKi8KIAljdGwtPnNoYXJlZCA9IHNoYXJlZDsKKwljdGwt Pm1hcHBpbmdfdGFibGUgPSBtYXBwaW5nX3RhYmxlOwogCWN0bC0+c3luY19oYW5kbGVyID0gc3lu Y19oYW5kbGVyOwogCXN0cmxjcHkoY3RsLT5EaXIsIHN1YmRpciwgc2l6ZW9mKGN0bC0+RGlyKSk7 CiB9CkBAIC0yODksNiArMzE0LDkgQEAgU2ltcGxlTHJ1WmVyb1BhZ2UoU2xydUN0bCBjdGwsIGlu dCBwYWdlbm8pCiAJCSAgIHNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXSA9PSBwYWdlbm8pOwog CiAJLyogTWFyayB0aGUgc2xvdCBhcyBjb250YWluaW5nIHRoaXMgcGFnZSAqLworCWlmIChzaGFy ZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gIT0gU0xSVV9QQUdFX0VNUFRZKQorCQlTbHJ1TWFwcGlu Z1JlbW92ZShjdGwsIHNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXSk7CisJU2xydU1hcHBpbmdB ZGQoY3RsLCBwYWdlbm8sIHNsb3Rubyk7CiAJc2hhcmVkLT5wYWdlX251bWJlcltzbG90bm9dID0g cGFnZW5vOwogCXNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9IFNMUlVfUEFHRV9WQUxJRDsK IAlzaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSA9IHRydWU7CkBAIC0zNjIsNyArMzkwLDEwIEBA IFNpbXBsZUxydVdhaXRJTyhTbHJ1Q3RsIGN0bCwgaW50IHNsb3RubykKIAkJewogCQkJLyogaW5k ZWVkLCB0aGUgSS9PIG11c3QgaGF2ZSBmYWlsZWQgKi8KIAkJCWlmIChzaGFyZWQtPnBhZ2Vfc3Rh dHVzW3Nsb3Rub10gPT0gU0xSVV9QQUdFX1JFQURfSU5fUFJPR1JFU1MpCisJCQl7CisJCQkJU2xy dU1hcHBpbmdSZW1vdmUoY3RsLCBzaGFyZWQtPnBhZ2VfbnVtYmVyW3Nsb3Rub10pOwogCQkJCXNo YXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9IFNMUlVfUEFHRV9FTVBUWTsKKwkJCX0KIAkJCWVs c2UJCQkJLyogd3JpdGVfaW5fcHJvZ3Jlc3MgKi8KIAkJCXsKIAkJCQlzaGFyZWQtPnBhZ2Vfc3Rh dHVzW3Nsb3Rub10gPSBTTFJVX1BBR0VfVkFMSUQ7CkBAIC00MzYsNiArNDY3LDkgQEAgU2ltcGxl THJ1UmVhZFBhZ2UoU2xydUN0bCBjdGwsIGludCBwYWdlbm8sIGJvb2wgd3JpdGVfb2ssCiAJCQkJ IXNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKSk7CiAKIAkJLyogTWFyayB0aGUgc2xvdCByZWFk LWJ1c3kgKi8KKwkJaWYgKHNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSAhPSBTTFJVX1BBR0Vf RU1QVFkpCisJCQlTbHJ1TWFwcGluZ1JlbW92ZShjdGwsIHNoYXJlZC0+cGFnZV9udW1iZXJbc2xv dG5vXSk7CisJCVNscnVNYXBwaW5nQWRkKGN0bCwgcGFnZW5vLCBzbG90bm8pOwogCQlzaGFyZWQt PnBhZ2VfbnVtYmVyW3Nsb3Rub10gPSBwYWdlbm87CiAJCXNoYXJlZC0+cGFnZV9zdGF0dXNbc2xv dG5vXSA9IFNMUlVfUEFHRV9SRUFEX0lOX1BST0dSRVNTOwogCQlzaGFyZWQtPnBhZ2VfZGlydHlb c2xvdG5vXSA9IGZhbHNlOwpAQCAtNDU5LDcgKzQ5MywxMyBAQCBTaW1wbGVMcnVSZWFkUGFnZShT bHJ1Q3RsIGN0bCwgaW50IHBhZ2VubywgYm9vbCB3cml0ZV9vaywKIAkJCSAgIHNoYXJlZC0+cGFn ZV9zdGF0dXNbc2xvdG5vXSA9PSBTTFJVX1BBR0VfUkVBRF9JTl9QUk9HUkVTUyAmJgogCQkJICAg IXNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKIAotCQlzaGFyZWQtPnBhZ2Vfc3RhdHVzW3Ns b3Rub10gPSBvayA/IFNMUlVfUEFHRV9WQUxJRCA6IFNMUlVfUEFHRV9FTVBUWTsKKwkJaWYgKG9r KQorCQkJc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID0gU0xSVV9QQUdFX1ZBTElEOworCQll bHNlCisJCXsKKwkJCVNscnVNYXBwaW5nUmVtb3ZlKGN0bCwgcGFnZW5vKTsKKwkJCXNoYXJlZC0+ cGFnZV9zdGF0dXNbc2xvdG5vXSA9ICBTTFJVX1BBR0VfRU1QVFk7CisJCX0KIAogCQlMV0xvY2tS ZWxlYXNlKCZzaGFyZWQtPmJ1ZmZlcl9sb2Nrc1tzbG90bm9dLmxvY2spOwogCkBAIC01MDAsMjAg KzU0MCwyMCBAQCBTaW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seShTbHJ1Q3RsIGN0bCwgaW50IHBh Z2VubywgVHJhbnNhY3Rpb25JZCB4aWQpCiAJTFdMb2NrQWNxdWlyZShzaGFyZWQtPkNvbnRyb2xM b2NrLCBMV19TSEFSRUQpOwogCiAJLyogU2VlIGlmIHBhZ2UgaXMgYWxyZWFkeSBpbiBhIGJ1ZmZl ciAqLwotCWZvciAoc2xvdG5vID0gMDsgc2xvdG5vIDwgc2hhcmVkLT5udW1fc2xvdHM7IHNsb3Ru bysrKQorCXNsb3RubyA9IFNscnVNYXBwaW5nRmluZChjdGwsIHBhZ2Vubyk7CisJaWYgKHNsb3Ru byA+PSAwICYmCisJCXNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSAhPSBTTFJVX1BBR0VfUkVB RF9JTl9QUk9HUkVTUykKIAl7Ci0JCWlmIChzaGFyZWQtPnBhZ2VfbnVtYmVyW3Nsb3Rub10gPT0g cGFnZW5vICYmCi0JCQlzaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gIT0gU0xSVV9QQUdFX0VN UFRZICYmCi0JCQlzaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gIT0gU0xSVV9QQUdFX1JFQURf SU5fUFJPR1JFU1MpCi0JCXsKLQkJCS8qIFNlZSBjb21tZW50cyBmb3IgU2xydVJlY2VudGx5VXNl ZCBtYWNybyAqLwotCQkJU2xydVJlY2VudGx5VXNlZChzaGFyZWQsIHNsb3Rubyk7CisJCUFzc2Vy dChzaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gIT0gU0xSVV9QQUdFX0VNUFRZKTsKKwkJQXNz ZXJ0KHNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXSA9PSBwYWdlbm8pOwogCi0JCQkvKiB1cGRh dGUgdGhlIHN0YXRzIGNvdW50ZXIgb2YgcGFnZXMgZm91bmQgaW4gdGhlIFNMUlUgKi8KLQkJCXBn c3RhdF9jb3VudF9zbHJ1X3BhZ2VfaGl0KHNoYXJlZC0+c2xydV9zdGF0c19pZHgpOworCQkvKiBT ZWUgY29tbWVudHMgZm9yIFNscnVSZWNlbnRseVVzZWQgbWFjcm8gKi8KKwkJU2xydVJlY2VudGx5 VXNlZChzaGFyZWQsIHNsb3Rubyk7CiAKLQkJCXJldHVybiBzbG90bm87Ci0JCX0KKwkJLyogdXBk YXRlIHRoZSBzdGF0cyBjb3VudGVyIG9mIHBhZ2VzIGZvdW5kIGluIHRoZSBTTFJVICovCisJCXBn c3RhdF9jb3VudF9zbHJ1X3BhZ2VfaGl0KHNoYXJlZC0+c2xydV9zdGF0c19pZHgpOworCisJCXJl dHVybiBzbG90bm87CiAJfQogCiAJLyogTm8gbHVjaywgc28gc3dpdGNoIHRvIG5vcm1hbCBleGNs dXNpdmUgbG9jayBhbmQgZG8gcmVndWxhciByZWFkICovCkBAIC0xMDI5LDExICsxMDY5LDEyIEBA IFNscnVTZWxlY3RMUlVQYWdlKFNscnVDdGwgY3RsLCBpbnQgcGFnZW5vKQogCQlpbnQJCQliZXN0 X2ludmFsaWRfcGFnZV9udW1iZXIgPSAwOwkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiAKIAkJ LyogU2VlIGlmIHBhZ2UgYWxyZWFkeSBoYXMgYSBidWZmZXIgYXNzaWduZWQgKi8KLQkJZm9yIChz bG90bm8gPSAwOyBzbG90bm8gPCBzaGFyZWQtPm51bV9zbG90czsgc2xvdG5vKyspCisJCXNsb3Ru byA9IFNscnVNYXBwaW5nRmluZChjdGwsIHBhZ2Vubyk7CisJCWlmIChzbG90bm8gPj0gMCkKIAkJ ewotCQkJaWYgKHNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXSA9PSBwYWdlbm8gJiYKLQkJCQlz aGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gIT0gU0xSVV9QQUdFX0VNUFRZKQotCQkJCXJldHVy biBzbG90bm87CisJCQlBc3NlcnQoc2hhcmVkLT5wYWdlX251bWJlcltzbG90bm9dID09IHBhZ2Vu byk7CisJCQlBc3NlcnQoc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dICE9IFNMUlVfUEFHRV9F TVBUWSk7CisJCQlyZXR1cm4gc2xvdG5vOwogCQl9CiAKIAkJLyoKQEAgLTEyNjYsNiArMTMwNyw3 IEBAIHJlc3RhcnQ6OwogCQlpZiAoc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID09IFNMUlVf UEFHRV9WQUxJRCAmJgogCQkJIXNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKQogCQl7CisJCQlT bHJ1TWFwcGluZ1JlbW92ZShjdGwsIHNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXSk7CiAJCQlz aGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPSBTTFJVX1BBR0VfRU1QVFk7CiAJCQljb250aW51 ZTsKIAkJfQpAQCAtMTM0OCw2ICsxMzkwLDcgQEAgcmVzdGFydDoKIAkJaWYgKHNoYXJlZC0+cGFn ZV9zdGF0dXNbc2xvdG5vXSA9PSBTTFJVX1BBR0VfVkFMSUQgJiYKIAkJCSFzaGFyZWQtPnBhZ2Vf ZGlydHlbc2xvdG5vXSkKIAkJeworCQkJU2xydU1hcHBpbmdSZW1vdmUoY3RsLCBzaGFyZWQtPnBh Z2VfbnVtYmVyW3Nsb3Rub10pOwogCQkJc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID0gU0xS VV9QQUdFX0VNUFRZOwogCQkJY29udGludWU7CiAJCX0KQEAgLTE2MDksMyArMTY1MiwzNyBAQCBT bHJ1U3luY0ZpbGVUYWcoU2xydUN0bCBjdGwsIGNvbnN0IEZpbGVUYWcgKmZ0YWcsIGNoYXIgKnBh dGgpCiAJZXJybm8gPSBzYXZlX2Vycm5vOwogCXJldHVybiByZXN1bHQ7CiB9CisKK3N0YXRpYyBp bnQKK1NscnVNYXBwaW5nRmluZChTbHJ1Q3RsIGN0bCwgaW50IHBhZ2VubykKK3sKKwlTbHJ1TWFw cGluZ1RhYmxlRW50cnkgKm1hcHBpbmc7CisKKwltYXBwaW5nID0gaGFzaF9zZWFyY2goY3RsLT5t YXBwaW5nX3RhYmxlLCAmcGFnZW5vLCBIQVNIX0ZJTkQsIE5VTEwpOworCWlmIChtYXBwaW5nKQor CQlyZXR1cm4gbWFwcGluZy0+c2xvdG5vOworCisJcmV0dXJuIC0xOworfQorCitzdGF0aWMgdm9p ZAorU2xydU1hcHBpbmdBZGQoU2xydUN0bCBjdGwsIGludCBwYWdlbm8sIGludCBzbG90bm8pCit7 CisJU2xydU1hcHBpbmdUYWJsZUVudHJ5ICptYXBwaW5nOworCWJvb2wJCWZvdW5kIFBHX1VTRURf Rk9SX0FTU0VSVFNfT05MWTsKKworCW1hcHBpbmcgPSBoYXNoX3NlYXJjaChjdGwtPm1hcHBpbmdf dGFibGUsICZwYWdlbm8sIEhBU0hfRU5URVIsICZmb3VuZCk7CisJbWFwcGluZy0+c2xvdG5vID0g c2xvdG5vOworCisJQXNzZXJ0KCFmb3VuZCk7Cit9CisKK3N0YXRpYyB2b2lkCitTbHJ1TWFwcGlu Z1JlbW92ZShTbHJ1Q3RsIGN0bCwgaW50IHBhZ2VubykKK3sKKwlib29sCQlmb3VuZCBQR19VU0VE X0ZPUl9BU1NFUlRTX09OTFk7CisKKwloYXNoX3NlYXJjaChjdGwtPm1hcHBpbmdfdGFibGUsICZw YWdlbm8sIEhBU0hfUkVNT1ZFLCAmZm91bmQpOworCisJQXNzZXJ0KGZvdW5kKTsKK30KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xy dS5oCmluZGV4IGRkNTJlOGNlYzcuLjhhYTNlZmMwZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9zbHJ1LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaApAQCAtMTYsNiAr MTYsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv bHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zeW5jLmgiCisjaW5jbHVkZSAidXRpbHMvaHNl YXJjaC5oIgogCiAKIC8qCkBAIC0xMTAsNiArMTExLDcgQEAgdHlwZWRlZiBTbHJ1U2hhcmVkRGF0 YSAqU2xydVNoYXJlZDsKIHR5cGVkZWYgc3RydWN0IFNscnVDdGxEYXRhCiB7CiAJU2xydVNoYXJl ZAlzaGFyZWQ7CisJSFRBQgkgICAqbWFwcGluZ190YWJsZTsKIAogCS8qCiAJICogV2hpY2ggc3lu YyBoYW5kbGVyIGZ1bmN0aW9uIHRvIHVzZSB3aGVuIGhhbmRpbmcgc3luYyByZXF1ZXN0cyBvdmVy IHRvCi0tIAoyLjMwLjEKCg== --0000000000005d073d05be68615d--