Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wPcR7-000trt-1b for pgsql-hackers@arkaria.postgresql.org; Wed, 20 May 2026 08:37:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wPcR5-006p1w-1J for pgsql-hackers@arkaria.postgresql.org; Wed, 20 May 2026 08:37:52 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wPcR4-006p1U-1x for pgsql-hackers@lists.postgresql.org; Wed, 20 May 2026 08:37:52 +0000 Received: from mail-lj1-x22f.google.com ([2a00:1450:4864:20::22f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wPcQx-00000000SaW-3Xth for pgsql-hackers@lists.postgresql.org; Wed, 20 May 2026 08:37:49 +0000 Received: by mail-lj1-x22f.google.com with SMTP id 38308e7fff4ca-393c40246afso55192211fa.1 for ; Wed, 20 May 2026 01:37:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779266261; cv=none; d=google.com; s=arc-20240605; b=KAlwTOJnfC8B5imy2o4n5OSkFvMulI0bJqwnhfaBrUv7vuZr4VXCDm1yQBgpS5GCQ2 9ZQDpjO1gpy+y+6JN2UW5vIB3pw+hHWtGGncM+K9UmrjrCCKofDlmQu4vzphv0LkFbOs m8ItgSuB5Vgejt5pAioKPTtHD2njjo9oCC5UnMsakcLtSfk+JHiZE4UFfM3R8PJBNzM3 +mgeTX1cy/fX6DLddyIx0Dw+BMxiWVlkSB8rj7aDFr3jE/ESjVf3mHoVEdbrh008GWqO cRPQazrbh4P6+Yov7zZNsxyM3Xw243yK2+vW3LAFsytkD9fT0/K+YtZvmPrxS9C3gNjl sGkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=oNUYk8zbK43N97LRXHZqMsL1aizliPq5GzSgeCUTXcI=; fh=88IxSRrSCVey0KQkmLzGdH1C4ZwO557VhtyxwwQrYqs=; b=izX0FpPf28dg4zyWknB+oLN7+VWrVA0KwIQ9gmnkgLa2whr4dnZnRojKh4OUN0UpJh CqseVXO8I1HUGMJHBCVoknkU9SWchp+MEh0gBXqVVQlONktHlFNgBbIXqxfuP1Rb3QfE s3iqBR/R0hZBprltuM3VlR8vwAf4RQvvIR47Qr8uhnB7BqPwFcYM6e+ZoZQDYfGecjjE YS19H8aoWKuW0KmYc2ba8KrwDO19tbOQ+99r3nNnbQNut8SyT14bCT4IloP/vhFR2xQb MxTVznOyJ9D8eUOJrGOfGPvGpjX0Ki1Q2GZbrOOyrYqfa7o3RqySZQCFUsF6e42oS02L VPug==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1779266261; x=1779871061; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=oNUYk8zbK43N97LRXHZqMsL1aizliPq5GzSgeCUTXcI=; b=JuCmMFjduMlVTKlxhZcXc2l/9ajXdwcri9e0obX6NQqjzc2k8WpdMmAoXgCjbojdjY bF8VhqOyABiBV5RymFj9Eif4toy8HNAJ2wXFnFv1s1gRe4NB+qsWpYPeasmfm+FI28MU nDEVJKHLhPpzqG94DF3UXpb8Jnxo20u3h0MoUJj1LlQimvqzUAOH6dFHmgVfgEw8A++m mIDl21DA4JlEpbicJzKw1SdYjnCAjJnhWUREMATS2WkTsFJrYG4cw3UHd2TS5PzayDTE cJ4OjFy0LUaNA4J58eR5PzqpRkAX7xRhL19k5Z0XmW/hdEIHDf3/GiIzW3+G6Q2ekYfv gMig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779266261; x=1779871061; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=oNUYk8zbK43N97LRXHZqMsL1aizliPq5GzSgeCUTXcI=; b=pWknuOBD4Kgp/N0fb5ZvQKjHmfMdxyGSwJZFlqAOKtcCTQ4ysapdJ6SLgdNv3zFLkY JyMuoh7YeyrszQPBGJi0V4R2Hf/bZ3x8I5WgP3pdmYjwpwu2IPQjm7tG86j+Sr/IOiOL S9LgwdTdZuwJGDvmB4hvHN+APInjV5lTO3cdnafBiQG1fmRWPPil+FC32gDfzy07k4Y3 XsoMIxPRt32xa04l/n+gflTc9tXM/qCos6khlFoYKEZJXTab1wWbNoPh8ioJ1PfZ/p6n 6d1zT8yzbHmmYiAzFMTGN/BLawPaphHwtNhUU7+LozMPRSr7JDTn/A7cMk+nE8noSx5/ 9Llg== X-Forwarded-Encrypted: i=1; AFNElJ89Mpe50AUatef4fTpmn7CMW2mAw0stzYaOZnlARCOI1D+i1w/5DVMRyZGWA5UWWAC12uQzhiZbUOOhScos@lists.postgresql.org X-Gm-Message-State: AOJu0YwXj5LocT7++dZ1kck3cCIzZamUN6ihVxIano42R9sz9ataNXD/ W6ridFGUNwhW+l6grFtR4rN1rI4l5ndUbKPwn7bLCY36D9pjbyDv76TYNa0imlgDa91sGcxkAGh p+ywFygO0+vehlt4jzDiIjnNKIwJVm36heBd7yFN5 X-Gm-Gg: Acq92OGcZM7034R1sg0gsTKUy+GsvIpF63FDoQailbJKzAVCcdursLGSrilyfFq4u20 nidZfr/rtuXn7GILVaX3Xu4sohMO8/BZHo3tLg//4pvnrLyOKEzgCTo88/nGC7aQx5oo93Jrzx4 WhogHdWwns6+MkEo6mIKiA1Zdn/EEvzWVDKhoUzDarhkGg1o5DmfjOtEJl/HvABLWQPOwivgwIy FDmINkhNIfbmhxPp4OE9j9qtwPV1GlZK5timvJVe5qLXKKffoRPcFjqrpuceuIXNOoaMAvzDq0s qWIodPyZq+gPQUkB2HNHDfEV2FJddjVSjbEBErwLtTF3I4pyqrw+BVKFqfQZgjJD7Hha2KB5Fay npQU= X-Received: by 2002:a2e:a995:0:b0:394:148d:1653 with SMTP id 38308e7fff4ca-39561892e74mr67824191fa.0.1779266261252; Wed, 20 May 2026 01:37:41 -0700 (PDT) MIME-Version: 1.0 References: <7nsniwpknrweczks6dsjvijhk3gxz5bt2o2xkqmsjenthj3xes@yjwc4mn2vq3k> <4ffe367d-77ac-488a-8826-64efb78d6f78@vondra.me> In-Reply-To: From: Jakub Wartak Date: Wed, 20 May 2026 10:37:28 +0200 X-Gm-Features: AVHnY4IFSq4k74OX3ojGBC5L4tvEIN5AMdYp8yLV9Fzna6oIdnqKidpyWEf2IUc Message-ID: Subject: Re: pg_stat_io_histogram To: Andres Freund Cc: Tomas Vondra , Ants Aasma , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000076b73b06523bb516" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000076b73b06523bb516 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, May 8, 2026 at 11:57=E2=80=AFAM Jakub Wartak wrote: > > On Thu, Mar 19, 2026 at 11:16=E2=80=AFAM Jakub Wartak > wrote: > > > > On Wed, Mar 18, 2026 at 2:29=E2=80=AFPM Jakub Wartak > > wrote: > > > > > > On Tue, Mar 17, 2026 at 3:17=E2=80=AFPM Andres Freund wrote: > > > > On 2026-03-17 13:13:59 +0100, Jakub Wartak wrote: > > > > > 1. Concerns about memory use. With v7 I had couple of ideas, and = with those > > > > > the memory use is really minimized as long as the code is still s= imple > > > > > (so nothing fancy, just some ideas to trim stuff and dynamically = allocate > > > > > memory). I hope those reduce memory footprint to acceptable level= s, see my > > > > > earlier description for v7. > > > > > > > > Personally I unfortunately continue to think that storing lots of v= alues that > > > > are never anything but zero isn't a good idea once you have more th= an a > > > > handful of kB. Storing pointless data is something different than i= ncreasing > > > > memory usage with actual information. > > > > > > > > I still think you should just count the number of histograms needed= , have an > > > > array [object][context][op] with the associated histogram "offset" = and then > > > > increment the associated offset. It'll add an indirection at count= time, but > > > > no additional branches. > > > > > > Great idea, thanks, I haven't thought about that! Attached v9 attempt= s to do > > > that for pending backend I/O struct, which minimizes the (backend) me= mory > > > footprint for client backends to just about ~5kB. > > > > > > I have been pulling my hair trying to achieve the same for shared-mem= ory, but I > > > have failed to do that w/o sinking into complexity [..] > > > > OK, I've made it done too with indirect offset on shared memory, it wa= sn't easy > > at least for me, but now we have two approaches/patchsets: > > > [..] > > v9b: with more code and build complexity but that should address concer= n of not > > used memory > > > > 'Shared Memory Stats' allocated size: > > master - uses ~308kB for shm > > v9a-000[12]: 578kB shm > > v9a-000[123]: 507kB shm > > v9a-000[1234]: 471kB shm (+~163kB more) > > > > v9b-000[123]: 361kB shm > > > > v9a-000[12] are identical to v9b-00[12], but included just for > > patchset completeness. > > > > In v9b meson/autoconf (for adding pgstat_io_genstats) build most of > > the time what > > they need, but probably that needs some cleanups and better dependency > > tracking. I'm > > not sure about correctnes of those changes as especially > > autoconf/Makefile is a lot > > like brainf**k to me and that area would need some help... > > > > I think now we could even increase max resolution of buckets to cover > > max those maximum > > of 32s+ (at the cost of one extra 64-byte cacheline for pending IO > > stats, so go with > > PGSTAT_IO_HIST_BUCKETS from 16 to 24) > > Good morning all, > > Ok here comes v10, which is bit like earlier v9b (so has reduced shared m= emory > footprint using Yours idea about indirect offsets idea), but now with shm= memory > sized and allocated on startup by postmaster. There are 3 patches: > - 0001, one to introduce view and bucketting, no changes since quite some= time > - 0002, saves some private (backend) memory > - 0003, main meat, saving shared memory (main problem raised earlier), > now switched > to simply dynamically size shared memory based on those pgstat_track_io= *() > logic > > The problem with the 0003 earlier was that I wanted to absolutley avoid f= urther > complexiy/alterations in struct PgStat_IO related to dynamic shared memor= y > allocation for hist_time_buckets_slots[PGSTAT_IO_HIST_BUCKET_SLOTS] > [PGSTAT_IO_HIST_BUCKETS] (I was afraid to touch that shm code, it > looks complex), > so I had to come out with something that would tell us how many slots > (PGSTAT_IO_HIST_BUCKET_SLOTS) we need, I wish we had C++'s `constexpr` th= at > would do all of that. I've tried three aproaches (like in v9b but that hi= t > some serious cross-compiling obstacles, also had perl doing that, but tha= t > had lots of code duplication), so in the end I had to alter the pgstat_io > shm allocation which is now in 0003. > > Summary of changes in 0003 since v9b / earlier post: > - Fixed potential race condition (touch via memset/memcpy() only histogra= m > slots under LWLock) > - Fixed/removed the PGSTAT_IO_HIST_BUCKET_SLOTS macro > - Removed pgstat_io_genslots.c (first idea, above) and abandonded attempt= to > fixup some cross compilation woes on MSVC/mingw > - Bumped PGSTAT_FILE_FORMAT_ID > - Move/optimize pending_off in pgstat_io_flush_cb out of hot loop > - Document that hist_time_buckets_offsets should be the last member of > PgStat_BktypeIO > - Be defensive - added some asserts() > - Adjust _bucket_offsets from uint64 to just int to save memory (offsets = are low > numbers) > - and finally moved to dynamic shm allocation of PgStat_IO stuff during > startup > > At the end of the day, I'll squeze 000[123] into just one, but wanted > to ease the > review first a bit. Of course this is material for PG20. Just noticed it needed a rebase (due to c7cb8e5b73c6; renumber_oids.pl), so= v11 attached before I forget. -J. --00000000000076b73b06523bb516 Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0001-Add-pg_stat_io_histogram-view-to-provide-more-de.patch" Content-Disposition: attachment; filename="v11-0001-Add-pg_stat_io_histogram-view-to-provide-more-de.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpdt55kw0 RnJvbSBjYjI5YjYyNWJlNDM1ZjVmYWIzYzhmMmYxOWFiODFhZTE3MGYzYmZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXYXJ0YWsgPGpha3ViLndhcnRha0BlbnRlcnByaXNl ZGIuY29tPgpEYXRlOiBGcmksIDIzIEphbiAyMDI2IDA4OjEwOjA5ICswMTAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMS8zXSBBZGQgcGdfc3RhdF9pb19oaXN0b2dyYW0gdmlldyB0byBwcm92aWRlIG1v cmUKIGRldGFpbGVkIGluc2lnaHQgaW50byBJTyBwcm9maWxlCgpwZ19zdGF0X2lvX2hpc3RvZ3Jh bSBkaXNwbGF5cyBhIGhpc3RvZ3JhbSBvZiBJTyBsYXRlbmNpZXMgZm9yIHNwZWNpZmljCmJhY2tl bmRfdHlwZSwgb2JqZWN0LCBjb250ZXh0IGFuZCBpb190eXBlLiBUaGUgaGlzdG9ncmFtIGhhcyBi dWNrZXRzIHRoYXQgYWxsb3cKZmFzdGVyIGlkZW50aWZpY2F0aW9uIG9mIEkvTyBsYXRlbmN5IG91 dGxpZXJzIGR1ZSB0byBmYXVsdHkgaGFyZHdhcmUgYW5kL29yCm1pc2JlaGF2aW5nIEkvTyBzdGFj ay4gU3VjaCBJL08gb3V0bGllcnMgZS5nLiBzbG93IGZzeW5jcyBjb3VsZCBzb21ldGltZXMKY2F1 c2UgaW50ZXJtaXR0ZW50IGlzc3VlcyBlLmcuIGZvciBDT01NSVQgb3IgYWZmZWN0IHRoZSBzeW5j aHJvbm91cyBzdGFuZGJ5cwpwZXJmb3JtYW5jZS4KCkF1dGhvcjogSmFrdWIgV2FydGFrIDxqYWt1 Yi53YXJ0YWtAZW50ZXJwcmlzZWRiLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFu ZHJlc0BhbmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IEFudHMgQWFzbWEgPGFudHMuYWFzbWFAY3li ZXJ0ZWMuYXQ+ClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4KRGlz Y3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUtaaVJtd3ZFNHVKTEtUZ1BYZUJBNG0lMkJk NHRUZ2hheW9lZmNhTTklM0R6M19TN2k3MkdBJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBjb25maWd1 cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM4ICsrKwogY29uZmlndXJl LmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkb2Mvc3JjL3NnbWwv Y29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgIDEyICstCiBkb2Mvc3JjL3NnbWwvbW9u aXRvcmluZy5zZ21sICAgICAgICAgICAgICAgIHwgMjkwICsrKysrKysrKysrKysrKysrKysrCiBk b2Mvc3JjL3NnbWwvd2FsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBtZXNv bi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgfCAgMTEgKwogc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMgICAgICAgICB8ICAxOSArLQogc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvcGdzdGF0X2JhY2tlbmQuYyB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0X2lvLmMgICAgICB8ICA5MiArKysrKystCiBzcmMvYmFja2VuZC91dGls cy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAgICAgIHwgMTQ4ICsrKysrKysrKysKIHNyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgfCAgIDkgKwogc3JjL2luY2x1ZGUvcGdz dGF0LmggICAgICAgICAgICAgICAgICAgICAgICB8ICAzOCArKy0KIHNyYy9pbmNsdWRlL3BvcnQv cGdfYml0dXRpbHMuaCAgICAgICAgICAgICAgfCAgMzggKystCiBzcmMvaW5jbHVkZS91dGlscy9w Z3N0YXRfaW50ZXJuYWwuaCAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWNvdmVyeS90LzAy OV9zdGF0c19yZXN0YXJ0LnBsICAgIHwgIDI5ICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dCAgICAgICAgIHwgICA4ICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0ICAgICAgICAgICAgfCAgIDEgKwogMTggZmlsZXMgY2hhbmdlZCwgNzI3IGluc2VydGlvbnMo KyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQpp bmRleCBmNjZjMTA1NGE3YS4uYzA5MzI5MjQwYmUgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysg Yi9jb25maWd1cmUKQEAgLTE2MDU0LDYgKzE2MDU0LDQ0IEBAIGNhdCA+PmNvbmZkZWZzLmggPDxf QUNFT0YKICNkZWZpbmUgSEFWRV9fQlVJTFRJTl9DTFogMQogX0FDRU9GCiAKK2ZpCit7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfX2J1aWx0aW5f Y2x6bCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgX19idWlsdGluX2NsemwuLi4gIiA+ JjY7IH0KK2lmICR7cGdhY19jdl9fYnVpbHRpbl9jbHpsKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFz X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP RiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK2NhbGxf X2J1aWx0aW5fY2x6bCh1bnNpZ25lZCBsb25nIHgpCit7CisgICAgcmV0dXJuIF9fYnVpbHRpbl9j bHpsKHgpOworfQoraW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VP RgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBwZ2FjX2N2X19idWls dGluX2Nsemw9eWVzCitlbHNlCisgIHBnYWNfY3ZfX2J1aWx0aW5fY2x6bD1ubworZmkKK3JtIC1m IGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFj X2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRwZ2FjX2N2X19idWlsdGluX2NsemwiID4mNQorJGFzX2Vj aG8gIiRwZ2FjX2N2X19idWlsdGluX2NsemwiID4mNjsgfQoraWYgdGVzdCB4IiR7cGdhY19jdl9f YnVpbHRpbl9jbHpsfSIgPSB4eWVzIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G CisjZGVmaW5lIEhBVkVfX0JVSUxUSU5fQ0xaTCAxCitfQUNFT0YKKwogZmkKIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9fYnVpbHRpbl9jdHoi ID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9fYnVpbHRpbl9jdHouLi4gIiA+JjY7IH0K ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA4ZDE3NmJkMzQ2 OC4uOGY4MDQ0NjRiYzUgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUu YWMKQEAgLTE4ODEsNiArMTg4MSw3IEBAIFBHQUNfQ0hFQ0tfQlVJTFRJTl9GVU5DKFtfX2J1aWx0 aW5fYnN3YXAzMl0sIFtpbnQgeF0pCiBQR0FDX0NIRUNLX0JVSUxUSU5fRlVOQyhbX19idWlsdGlu X2Jzd2FwNjRdLCBbbG9uZyBpbnQgeF0pCiAjIFdlIGFzc3VtZSB0aGF0IHdlIG5lZWRuJ3QgdGVz dCBhbGwgd2lkdGhzIG9mIHRoZXNlIGV4cGxpY2l0bHk6CiBQR0FDX0NIRUNLX0JVSUxUSU5fRlVO QyhbX19idWlsdGluX2Nsel0sIFt1bnNpZ25lZCBpbnQgeF0pCitQR0FDX0NIRUNLX0JVSUxUSU5f RlVOQyhbX19idWlsdGluX2NsemxdLCBbdW5zaWduZWQgbG9uZyB4XSkKIFBHQUNfQ0hFQ0tfQlVJ TFRJTl9GVU5DKFtfX2J1aWx0aW5fY3R6XSwgW3Vuc2lnbmVkIGludCB4XSkKICMgX19idWlsdGlu X2ZyYW1lX2FkZHJlc3MgbWF5IGRyYXcgYSBkaWFnbm9zdGljIGZvciBub24tY29uc3RhbnQgYXJn dW1lbnQsCiAjIHNvIGl0IG5lZWRzIGEgZGlmZmVyZW50IHRlc3QgZnVuY3Rpb24uCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwK aW5kZXggNzNjYzA0MTIzMzAuLjkxYjFmZDdlNjM1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv Y29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC05MDY3LDkgKzkw NjcsMTEgQEAgQ09QWSBwb3N0Z3Jlc19sb2cgRlJPTSAnL2Z1bGwvcGF0aC90by9sb2dmaWxlLmNz dicgV0lUSCBjc3Y7CiAgICAgICAgIGRpc3BsYXllZCBpbiA8bGluayBsaW5rZW5kPSJtb25pdG9y aW5nLXBnLXN0YXQtZGF0YWJhc2UtdmlldyI+CiAgICAgICAgIDxzdHJ1Y3RuYW1lPnBnX3N0YXRf ZGF0YWJhc2U8L3N0cnVjdG5hbWU+PC9saW5rPiwKICAgICAgICAgPGxpbmsgbGlua2VuZD0ibW9u aXRvcmluZy1wZy1zdGF0LWlvLXZpZXciPgotICAgICAgICA8c3RydWN0bmFtZT5wZ19zdGF0X2lv PC9zdHJ1Y3RuYW1lPjwvbGluaz4gKGlmIDx2YXJuYW1lPm9iamVjdDwvdmFybmFtZT4KLSAgICAg ICAgaXMgbm90IDxsaXRlcmFsPndhbDwvbGl0ZXJhbD4pLCBpbiB0aGUgb3V0cHV0IG9mIHRoZQot ICAgICAgICA8bGluayBsaW5rZW5kPSJwZy1zdGF0LWdldC1iYWNrZW5kLWlvIj4KKyAgICAgICAg PHN0cnVjdG5hbWU+cGdfc3RhdF9pbzwvc3RydWN0bmFtZT48L2xpbms+IGFuZAorICAgICAgICA8 bGluayBsaW5rZW5kPSJtb25pdG9yaW5nLXBnLXN0YXQtaW8taGlzdG9ncmFtLXZpZXciPgorICAg ICAgICA8c3RydWN0bmFtZT5wZ19zdGF0X2lvX2hpc3RvZ3JhbTwvc3RydWN0bmFtZT48L2xpbms+ CisgICAgICAgIChpZiA8dmFybmFtZT5vYmplY3Q8L3Zhcm5hbWU+IGlzIG5vdCA8bGl0ZXJhbD53 YWw8L2xpdGVyYWw+KSwKKyAgICAgICAgaW4gdGhlIG91dHB1dCBvZiB0aGUgPGxpbmsgbGlua2Vu ZD0icGctc3RhdC1nZXQtYmFja2VuZC1pbyI+CiAgICAgICAgIDxmdW5jdGlvbj5wZ19zdGF0X2dl dF9iYWNrZW5kX2lvKCk8L2Z1bmN0aW9uPjwvbGluaz4gZnVuY3Rpb24gKGlmCiAgICAgICAgIDx2 YXJuYW1lPm9iamVjdDwvdmFybmFtZT4gaXMgbm90IDxsaXRlcmFsPndhbDwvbGl0ZXJhbD4pLCBp biB0aGUKICAgICAgICAgb3V0cHV0IG9mIDx4cmVmIGxpbmtlbmQ9InNxbC1leHBsYWluIi8+IHdo ZW4gdGhlIDxsaXRlcmFsPkJVRkZFUlM8L2xpdGVyYWw+CkBAIC05MDk5LDcgKzkxMDEsOSBAQCBD T1BZIHBvc3RncmVzX2xvZyBGUk9NICcvZnVsbC9wYXRoL3RvL2xvZ2ZpbGUuY3N2JyBXSVRIIGNz djsKICAgICAgICAgbWVhc3VyZSB0aGUgb3ZlcmhlYWQgb2YgdGltaW5nIG9uIHlvdXIgc3lzdGVt LgogICAgICAgICBJL08gdGltaW5nIGluZm9ybWF0aW9uIGlzIGRpc3BsYXllZCBpbgogICAgICAg ICA8bGluayBsaW5rZW5kPSJtb25pdG9yaW5nLXBnLXN0YXQtaW8tdmlldyI+Ci0gICAgICAgIDxz dHJ1Y3RuYW1lPnBnX3N0YXRfaW88L3N0cnVjdG5hbWU+PC9saW5rPiBmb3IgdGhlCisgICAgICAg IDxzdHJ1Y3RuYW1lPnBnX3N0YXRfaW88L3N0cnVjdG5hbWU+PC9saW5rPiBhbmQKKyAgICAgICAg PGxpbmsgbGlua2VuZD0ibW9uaXRvcmluZy1wZy1zdGF0LWlvLWhpc3RvZ3JhbS12aWV3Ij4KKyAg ICAgICAgPHN0cnVjdG5hbWU+cGdfc3RhdF9pb19oaXN0b2dyYW08L3N0cnVjdG5hbWU+PC9saW5r PiBmb3IgdGhlCiAgICAgICAgIDx2YXJuYW1lPm9iamVjdDwvdmFybmFtZT4gPGxpdGVyYWw+d2Fs PC9saXRlcmFsPiBhbmQgaW4gdGhlIG91dHB1dCBvZgogICAgICAgICB0aGUgPGxpbmsgbGlua2Vu ZD0icGctc3RhdC1nZXQtYmFja2VuZC1pbyI+CiAgICAgICAgIDxmdW5jdGlvbj5wZ19zdGF0X2dl dF9iYWNrZW5kX2lvKCk8L2Z1bmN0aW9uPjwvbGluaz4gZnVuY3Rpb24gZm9yIHRoZQpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9y aW5nLnNnbWwKaW5kZXggMDhkNWI4MjQ1NTIuLmU4YzVmMzkxODQxIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNn bWwKQEAgLTUwOSw2ICs1MDksMTcgQEAgcG9zdGdyZXMgICAyNzA5MyAgMC4wICAwLjAgIDMwMDk2 ICAyNzUyID8gICAgICAgIFNzICAgMTE6MzQgICAwOjAwIHBvc3RncmVzOiBzZXIKICAgICAgPC9l bnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0bmFt ZT5wZ19zdGF0X2lvX2hpc3RvZ3JhbTwvc3RydWN0bmFtZT48aW5kZXh0ZXJtPjxwcmltYXJ5PnBn X3N0YXRfaW9faGlzdG9ncmFtPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvZW50cnk+CisgICAgICA8 ZW50cnk+CisgICAgICAgT25lIHJvdyBmb3IgZWFjaCBjb21iaW5hdGlvbiBvZiBiYWNrZW5kIHR5 cGUsIGNvbnRleHQsIHRhcmdldCBvYmplY3QsCisgICAgICAgSU8gb3BlcmF0aW9uIHR5cGUgYW5k IGxhdGVuY3kgYnVja2V0IChpbiBtaWNyb3NlY29uZHMpIGNvbnRhaW5pbmcKKyAgICAgICBjbHVz dGVyLXdpZGUgSS9PIHN0YXRpc3RpY3MuCisgICAgICAgU2VlIDxsaW5rIGxpbmtlbmQ9Im1vbml0 b3JpbmctcGctc3RhdC1pby1oaXN0b2dyYW0tdmlldyI+CisgICAgICAgPHN0cnVjdG5hbWU+cGdf c3RhdF9pb19oaXN0b2dyYW08L3N0cnVjdG5hbWU+PC9saW5rPiBmb3IgZGV0YWlscy4KKyAgICAg PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48c3RydWN0 bmFtZT5wZ19zdGF0X2xvY2s8L3N0cnVjdG5hbWU+PGluZGV4dGVybT48cHJpbWFyeT5wZ19zdGF0 X2xvY2s8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KQEAgLTcz NCw2ICs3NDUsOCBAQCBwb3N0Z3JlcyAgIDI3MDkzICAwLjAgIDAuMCAgMzAwOTYgIDI3NTIgPyAg ICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdyZXM6IHNlcgogICAgVXNlcnMgYXJlIGFkdmlz ZWQgdG8gdXNlIHRoZSA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+CiAgICBz dGF0aXN0aWNzIHZpZXdzIGluIGNvbWJpbmF0aW9uIHdpdGggb3BlcmF0aW5nIHN5c3RlbSB1dGls aXRpZXMgZm9yIGEgbW9yZQogICAgY29tcGxldGUgcGljdHVyZSBvZiB0aGVpciBkYXRhYmFzZSdz IEkvTyBwZXJmb3JtYW5jZS4KKyAgIEZ1cnRoZXJtb3JlIHRoZSA8c3RydWN0bmFtZT5wZ19zdGF0 X2lvX2hpc3RvZ3JhbTwvc3RydWN0bmFtZT4gdmlldyBjYW4gYmUgaGVscGZ1bAorICAgaWRlbnRp ZnlpbmcgbGF0ZW5jeSBvdXRsaWVycyBmb3Igc3BlY2lmaWMgSS9PIG9wZXJhdGlvbnMuCiAgIDwv cGFyYT4KIAogIDwvc2VjdDI+CkBAIC0zMzAyLDYgKzMzMTUsMjgzIEBAIGRlc2NyaXB0aW9uIHwg V2FpdGluZyBmb3IgYSBuZXdseSBpbml0aWFsaXplZCBXQUwgZmlsZSB0byByZWFjaCBkdXJhYmxl IHN0b3JhZ2UKIAogIDwvc2VjdDI+CiAKKyA8c2VjdDIgaWQ9Im1vbml0b3JpbmctcGctc3RhdC1p by1oaXN0b2dyYW0tdmlldyI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19zdGF0X2lvX2hpc3Rv Z3JhbTwvc3RydWN0bmFtZT48L3RpdGxlPgorCisgIDxpbmRleHRlcm0+CisgICA8cHJpbWFyeT5w Z19zdGF0X2lvX2hpc3RvZ3JhbTwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+ CisgICBUaGUgPHN0cnVjdG5hbWU+cGdfc3RhdF9pb19oaXN0b2dyYW08L3N0cnVjdG5hbWU+IHZp ZXcgd2lsbCBjb250YWluIG9uZSByb3cgZm9yIGVhY2gKKyAgIGNvbWJpbmF0aW9uIG9mIGJhY2tl bmQgdHlwZSwgdGFyZ2V0IEkvTyBvYmplY3QsIGFuZCBJL08gY29udGV4dCwgSU8gb3BlcmF0aW9u CisgICB0eXBlLCBidWNrZXQgbGF0ZW5jeSBjbHVzdGVyLXdpZGUgSS9PIHN0YXRpc3RpY3MuIENv bWJpbmF0aW9ucyB3aGljaCBkbyBub3QgbWFrZSBzZW5zZQorICAgYXJlIG9taXR0ZWQuCisgIDwv cGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSB2aWV3IHNob3dzIG1lYXN1cmVkIHBlcmNlaXZlZCBJ L08gbGF0ZW5jeSBieSB0aGUgYmFja2VuZCwgbm90IHRoZSBrZXJuZWwgb3IgZGV2aWNlCisgICBv bmUuIFRoaXMgaXMgaW1wb3J0YW50IGRpc3RpbmN0aW9uIHdoZW4gdHJvdWJsZXNob290aW5nLCBh cyB0aGUgSS9PIGxhdGVuY3kgb2JzZXJ2ZWQgYnkKKyAgIHRoZSBiYWNrZW5kIG1pZ2h0IGdldCBh ZmZlY3RlZCBieToKKyAgIDxpdGVtaXplZGxpc3Q+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg PHBhcmE+T1Mgc2NoZWR1bGVyIGRlY2lzaW9ucyBhbmQgYXZhaWxhYmxlIENQVSByZXNvdXJjZXMu PC9wYXJhPgorICAgICAgICA8cGFyYT5XaXRoIEFJTywgaXQgbWlnaHQgaW5jbHVkZSB0aW1lIHRv IHNlcnZpY2Ugb3RoZXIgSU9zIGZyb20gdGhlIHF1ZXVlLiBUaGF0IHdpbGwgb2Z0ZW4gaW5mbGF0 ZSBJTyBsYXRlbmN5LjwvcGFyYT4KKyAgICAgICAgPHBhcmE+SW4gY2FzZSBvZiB3cml0aW5nLCBh ZGRpdGlvbmFsIGZpbGVzeXN0ZW0gam91cm5hbGluZyBvcGVyYXRpb25zLjwvcGFyYT4KKyAgICAg PC9saXN0aXRlbT4KKyAgPC9pdGVtaXplZGxpc3Q+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAg IEN1cnJlbnRseSwgSS9PIG9uIHJlbGF0aW9ucyAoZS5nLiB0YWJsZXMsIGluZGV4ZXMpIGFuZCBX QUwgYWN0aXZpdHkgYXJlCisgICB0cmFja2VkLiBIb3dldmVyLCByZWxhdGlvbiBJL08gd2hpY2gg YnlwYXNzZXMgc2hhcmVkIGJ1ZmZlcnMKKyAgIChlLmcuIHdoZW4gbW92aW5nIGEgdGFibGUgZnJv bSBvbmUgdGFibGVzcGFjZSB0byBhbm90aGVyKSBpcyBjdXJyZW50bHkKKyAgIG5vdCB0cmFja2Vk LgorICA8L3BhcmE+CisKKyAgPHRhYmxlIGlkPSJwZy1zdGF0LWlvLWhpc3RvZ3JhbS12aWV3IiB4 cmVmbGFiZWw9InBnX3N0YXRfaW9faGlzdG9ncmFtIj4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5w Z19zdGF0X2lvX2hpc3RvZ3JhbTwvc3RydWN0bmFtZT4gVmlldzwvdGl0bGU+CisgICA8dGdyb3Vw IGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij4KKyAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgIENvbHVtbiBUeXBlCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgor ICAgICAgICBEZXNjcmlwdGlvbgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvZW50cnk+CisgICAg IDwvcm93PgorICAgIDwvdGhlYWQ+CisgICAgPHRib2R5PgorICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPgorICAgICAgIDxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KKyAgICAgICAgPHN0cnVjdGZpZWxkPmJhY2tlbmRfdHlwZTwvc3RydWN0 ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgor ICAgICAgICBUeXBlIG9mIGJhY2tlbmQgKGUuZy4gYmFja2dyb3VuZCB3b3JrZXIsIGF1dG92YWN1 dW0gd29ya2VyKS4gU2VlIDxsaW5rCisgICAgICAgIGxpbmtlbmQ9Im1vbml0b3JpbmctcGctc3Rh dC1hY3Rpdml0eS12aWV3Ij4KKyAgICAgICAgPHN0cnVjdG5hbWU+cGdfc3RhdF9hY3Rpdml0eTwv c3RydWN0bmFtZT48L2xpbms+IGZvciBtb3JlIGluZm9ybWF0aW9uCisgICAgICAgIG9uIDx2YXJu YW1lPmJhY2tlbmRfdHlwZTwvdmFybmFtZT5zLiBTb21lCisgICAgICAgIDx2YXJuYW1lPmJhY2tl bmRfdHlwZTwvdmFybmFtZT5zIGRvIG5vdCBhY2N1bXVsYXRlIEkvTyBvcGVyYXRpb24KKyAgICAg ICAgc3RhdGlzdGljcyBhbmQgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHZpZXcuCisgICAg ICAgPC9wYXJhPgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij4KKyAgICAgICA8cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgIDxzdHJ1Y3RmaWVsZD5vYmplY3Q8L3N0cnVj dGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgVGFyZ2V0IG9iamVjdCBvZiBhbiBJL08gb3BlcmF0aW9uLiBQb3NzaWJsZSB2YWx1 ZXMgYXJlOgorICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRlcmFsPnJlbGF0aW9uPC9saXRlcmFsPjogUGVybWFu ZW50IHJlbGF0aW9ucy4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAg ICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGxpdGVyYWw+dGVt cCByZWxhdGlvbjwvbGl0ZXJhbD46IFRlbXBvcmFyeSByZWxhdGlvbnMuCisgICAgICAgICA8L3Bh cmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxw YXJhPgorICAgICAgICAgIDxsaXRlcmFsPndhbDwvbGl0ZXJhbD46IFdyaXRlIEFoZWFkIExvZ3Mu CisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPC9pdGVtaXpl ZGxpc3Q+CisgICAgICAgPC9wYXJhPgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij4KKyAgICAg ICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgIDxzdHJ1Y3RmaWVsZD5j b250ZXh0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KKyAgICAgICA8L3BhcmE+Cisg ICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBjb250ZXh0IG9mIGFuIEkvTyBvcGVyYXRpb24uIFBv c3NpYmxlIHZhbHVlcyBhcmU6CisgICAgICAgPC9wYXJhPgorICAgICAgIDxpdGVtaXplZGxpc3Q+ CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRlcmFs Pm5vcm1hbDwvbGl0ZXJhbD46IFRoZSBkZWZhdWx0IG9yIHN0YW5kYXJkCisgICAgICAgICAgPHZh cm5hbWU+Y29udGV4dDwvdmFybmFtZT4gZm9yIGEgdHlwZSBvZiBJL08gb3BlcmF0aW9uLiBGb3IK KyAgICAgICAgICBleGFtcGxlLCBieSBkZWZhdWx0LCByZWxhdGlvbiBkYXRhIGlzIHJlYWQgaW50 byBhbmQgd3JpdHRlbiBvdXQgZnJvbQorICAgICAgICAgIHNoYXJlZCBidWZmZXJzLiBUaHVzLCBy ZWFkcyBhbmQgd3JpdGVzIG9mIHJlbGF0aW9uIGRhdGEgdG8gYW5kIGZyb20KKyAgICAgICAgICBz aGFyZWQgYnVmZmVycyBhcmUgdHJhY2tlZCBpbiA8dmFybmFtZT5jb250ZXh0PC92YXJuYW1lPgor ICAgICAgICAgIDxsaXRlcmFsPm5vcm1hbDwvbGl0ZXJhbD4uCisgICAgICAgICA8L3BhcmE+Cisg ICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgor ICAgICAgICAgIDxsaXRlcmFsPmluaXQ8L2xpdGVyYWw+OiBJL08gb3BlcmF0aW9ucyBwZXJmb3Jt ZWQgd2hpbGUgY3JlYXRpbmcgdGhlCisgICAgICAgICAgV0FMIHNlZ21lbnRzIGFyZSB0cmFja2Vk IGluIDx2YXJuYW1lPmNvbnRleHQ8L3Zhcm5hbWU+CisgICAgICAgICAgPGxpdGVyYWw+aW5pdDwv bGl0ZXJhbD4uCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRlcmFsPnZhY3V1bTwv bGl0ZXJhbD46IEkvTyBvcGVyYXRpb25zIHBlcmZvcm1lZCBvdXRzaWRlIG9mIHNoYXJlZAorICAg ICAgICAgIGJ1ZmZlcnMgd2hpbGUgdmFjdXVtaW5nIGFuZCBhbmFseXppbmcgcGVybWFuZW50IHJl bGF0aW9ucy4gVGVtcG9yYXJ5CisgICAgICAgICAgdGFibGUgdmFjdXVtcyB1c2UgdGhlIHNhbWUg bG9jYWwgYnVmZmVyIHBvb2wgYXMgb3RoZXIgdGVtcG9yYXJ5IHRhYmxlCisgICAgICAgICAgSS9P IG9wZXJhdGlvbnMgYW5kIGFyZSB0cmFja2VkIGluIDx2YXJuYW1lPmNvbnRleHQ8L3Zhcm5hbWU+ CisgICAgICAgICAgPGxpdGVyYWw+bm9ybWFsPC9saXRlcmFsPi4KKyAgICAgICAgIDwvcGFyYT4K KyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+ CisgICAgICAgICAgPGxpdGVyYWw+YnVsa3JlYWQ8L2xpdGVyYWw+OiBDZXJ0YWluIGxhcmdlIHJl YWQgSS9PIG9wZXJhdGlvbnMKKyAgICAgICAgICBkb25lIG91dHNpZGUgb2Ygc2hhcmVkIGJ1ZmZl cnMsIGZvciBleGFtcGxlLCBhIHNlcXVlbnRpYWwgc2NhbiBvZiBhCisgICAgICAgICAgbGFyZ2Ug dGFibGUuCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRlcmFsPmJ1bGt3cml0ZTwv bGl0ZXJhbD46IENlcnRhaW4gbGFyZ2Ugd3JpdGUgSS9PIG9wZXJhdGlvbnMKKyAgICAgICAgICBk b25lIG91dHNpZGUgb2Ygc2hhcmVkIGJ1ZmZlcnMsIHN1Y2ggYXMgPGNvbW1hbmQ+Q09QWTwvY29t bWFuZD4uCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPC9p dGVtaXplZGxpc3Q+CisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPgorICAgICAgIDxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICAgPHN0cnVjdGZpZWxkPmlvX3R5cGU8L3N0 cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFy YT4KKyAgICAgICAgVGhlIHR5cGUgb2YgSS9PIG9wZXJhdGlvbi4gUG9zc2libGUgdmFsdWVzIGFy ZToKKyAgICAgICA8L3BhcmE+CisgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3Rp dGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGxpdGVyYWw+ZXZpY3Q8L2xpdGVyYWw+ OiBldmljdGlvbiBmcm9tIHNoYXJlZCBidWZmZXJzIGNhY2hlLgorICAgICAgICAgPC9wYXJhPgor ICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4K KyAgICAgICAgICA8bGl0ZXJhbD5mc3luYzwvbGl0ZXJhbD46IHN5bmNocm9uaXphdGlvbiBvZiBt b2RpZmllZCBrZXJuZWwncworICAgICAgICAgIGZpbGVzeXN0ZW0gcGFnZSBjYWNoZSB3aXRoIHN0 b3JhZ2UgZGV2aWNlLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8bGl0ZXJhbD5oaXQ8 L2xpdGVyYWw+OiBzaGFyZWQgYnVmZmVycyBjYWNoZSBsb29rdXAgaGl0LgorICAgICAgICAgPC9w YXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8 cGFyYT4KKyAgICAgICAgICA8bGl0ZXJhbD5yZXVzZTwvbGl0ZXJhbD46IHJldXNlIG9mIGV4aXN0 aW5nIGJ1ZmZlciBpbiBjYXNlIG9mCisgICAgICAgICAgcmV1c2luZyBsaW1pdGVkLXNwYWNlIHJp bmcgYnVmZmVyIChhcHBsaWVzIHRvIDxsaXRlcmFsPmJ1bGtyZWFkPC9saXRlcmFsPiwKKyAgICAg ICAgICA8bGl0ZXJhbD5idWxrd3JpdGU8L2xpdGVyYWw+LCBvciA8bGl0ZXJhbD52YWN1dW08L2xp dGVyYWw+IGNvbnRleHRzKS4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4K KyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGxpdGVyYWw+ d3JpdGViYWNrPC9saXRlcmFsPjogYWR2aXNlIGtlcm5lbCB0aGF0IHRoZSBkZXNjcmliZWQgZGly dHkKKyAgICAgICAgICBkYXRhIHNob3VsZCBiZSBmbHVzaGVkIHRvIGRpc2sgcHJlZmVyYWJseSBh c3luY2hyb25vdXNseS4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAg ICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGxpdGVyYWw+ZXh0 ZW5kPC9saXRlcmFsPjogYWRkIG5ldyB6ZXJvZWQgYmxvY2tzIHRvIHRoZSBlbmQgb2YgZmlsZS4K KyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVt PgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGxpdGVyYWw+cmVhZDwvbGl0ZXJhbD46IHNl bGYgZXhwbGFuYXRvcnkuCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRlcmFsPndy aXRlPC9saXRlcmFsPjogc2VsZiBleHBsYW5hdG9yeS4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAg ICAgPC9saXN0aXRlbT4KKyAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIDwvZW50cnk+Cisg ICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+CisgICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg ICA8c3RydWN0ZmllbGQ+YnVja2V0X2xhdGVuY3lfdXM8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ0 cmFuZ2U8L3R5cGU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUg bGF0ZW5jeSBidWNrZXQgKGluIG1pY3Jvc2Vjb25kcykuCisgICAgICAgPC9wYXJhPgorICAgICAg PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij4KKyAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgIDxzdHJ1Y3RmaWVsZD5idWNrZXRfY291bnQ8L3N0cnVjdGZpZWxkPiA8dHlw ZT5iaWdpbnQ8L3R5cGU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBO dW1iZXIgb2YgdGltZXMgbGF0ZW5jeSBvZiB0aGUgSS9PIG9wZXJhdGlvbiBoaXQgdGhpcyBzcGVj aWZpYyBidWNrZXQgKHdpdGgKKyAgICAgICAgdXAgdG8gPHZhcm5hbWU+YnVja2V0X2xhdGVuY3lf dXM8L3Zhcm5hbWU+IG1pY3Jvc2Vjb25kcykuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9lbnRy eT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij4KKyAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Cisg ICAgICAgIDxzdHJ1Y3RmaWVsZD5zdGF0c19yZXNldDwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVz dGFtcCB3aXRoIHRpbWUgem9uZTwvdHlwZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+ CisgICAgICAgIFRpbWUgYXQgd2hpY2ggdGhlc2Ugc3RhdGlzdGljcyB3ZXJlIGxhc3QgcmVzZXQu CisgICAgICAgPC9wYXJhPgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9k eT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorCisgIDxwYXJhPgorICAgU29tZSBiYWNrZW5k IHR5cGVzIG5ldmVyIHBlcmZvcm0gSS9PIG9wZXJhdGlvbnMgb24gc29tZSBJL08gb2JqZWN0cyBh bmQvb3IKKyAgIGluIHNvbWUgSS9PIGNvbnRleHRzLiBUaGVzZSByb3dzIG1pZ2h0IGRpc3BsYXkg emVybyBidWNrZXQgY291bnRzIGZvciBzdWNoCisgICBzcGVjaWZpYyBvcGVyYXRpb25zLgorICA8 L3BhcmE+CisKKyAgPHBhcmE+CisgICA8c3RydWN0bmFtZT5wZ19zdGF0X2lvX2hpc3RvZ3JhbTwv c3RydWN0bmFtZT4gY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkKKyAgIEkvTyBzdG9yYWdlIGlzc3Vl cworICAgRm9yIGV4YW1wbGU6CisgICA8aXRlbWl6ZWRsaXN0PgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBQcmVzZW5jZSBvZiBhYm5vcm1hbGx5IGhpZ2ggbGF0ZW5jeSBmb3Ig PHZhcm5hbWU+ZnN5bmNzPC92YXJuYW1lPiBtaWdodAorICAgICAgaW5kaWNhdGUgSS9PIHNhdHVy YXRpb24sIG92ZXJzdWJzY3JpcHRpb24gb3IgaGFyZHdhcmUgY29ubmVjdGl2aXR5IGlzc3Vlcy4K KyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIFVudXN1YWxseSBoaWdoIGxhdGVuY3kgZm9yIDx2YXJuYW1lPmZzeW5jczwvdmFy bmFtZT4gb24gc3RhbmRieSdzIHN0YXJ0dXAKKyAgICAgIGJhY2tlbmQgdHlwZSwgbWlnaHQgYmUg cmVzcG9uc2libGUgZm9yIGhpZ2ggZHVyYXRpb24gb2YgY29tbWl0cyBpbgorICAgICAgc3luY2hy b25vdXMgcmVwbGljYXRpb24gc2V0dXBzLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvaXRlbWl6ZWRsaXN0PgorICA8L3BhcmE+CisKKyAgPG5vdGU+CisgICA8cGFyYT4KKyAg ICBDb2x1bW5zIHRyYWNraW5nIEkvTyB3YWl0IHRpbWUgd2lsbCBvbmx5IGJlIG5vbi16ZXJvIHdo ZW4KKyAgICA8eHJlZiBsaW5rZW5kPSJndWMtdHJhY2staW8tdGltaW5nIi8+IGlzIGVuYWJsZWQu IFRoZSB1c2VyIHNob3VsZCBiZQorICAgIGNhcmVmdWwgd2hlbiByZWZlcmVuY2luZyB0aGVzZSBj b2x1bW5zIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlaXIKKyAgICBjb3JyZXNwb25kaW5nIEkvTyBv cGVyYXRpb25zIGluIGNhc2UgPHZhcm5hbWU+dHJhY2tfaW9fdGltaW5nPC92YXJuYW1lPgorICAg IHdhcyBub3QgZW5hYmxlZCBmb3IgdGhlIGVudGlyZSB0aW1lIHNpbmNlIHRoZSBsYXN0IHN0YXRz IHJlc2V0LgorICAgPC9wYXJhPgorICA8L25vdGU+CisgPC9zZWN0Mj4KIAogIDxzZWN0MiBpZD0i bW9uaXRvcmluZy1wZy1zdGF0LWxvY2stdmlldyI+CiAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19z dGF0X2xvY2s8L3N0cnVjdG5hbWU+PC90aXRsZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC93 YWwuc2dtbCBiL2RvYy9zcmMvc2dtbC93YWwuc2dtbAppbmRleCBjMzI5MzFlZGRlMy4uNTMxMjQ1 OTM1ZGEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC93YWwuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvd2FsLnNnbWwKQEAgLTk1MCw4ICs5NTAsOSBAQAogICAgb2YgdGltZXMgPGZ1bmN0aW9uPlhM b2dXcml0ZTwvZnVuY3Rpb24+IHdyaXRlcyBhbmQKICAgIDxmdW5jdGlvbj5pc3N1ZV94bG9nX2Zz eW5jPC9mdW5jdGlvbj4gc3luY3MgV0FMIGRhdGEgdG8gZGlzayBhcmUgYWxzbwogICAgY291bnRl ZCBhcyA8dmFybmFtZT53cml0ZXM8L3Zhcm5hbWU+IGFuZCA8dmFybmFtZT5mc3luY3M8L3Zhcm5h bWU+Ci0gICBpbiA8c3RydWN0bmFtZT5wZ19zdGF0X2lvPC9zdHJ1Y3RuYW1lPiBmb3IgdGhlIDx2 YXJuYW1lPm9iamVjdDwvdmFybmFtZT4KLSAgIDxsaXRlcmFsPndhbDwvbGl0ZXJhbD4sIHJlc3Bl Y3RpdmVseS4KKyAgIGluIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfaW88L3N0cnVjdG5hbWU+IGFuZAor ICAgPHN0cnVjdG5hbWU+cGdfc3RhdF9pb19oaXN0b2dyYW08L3N0cnVjdG5hbWU+IGZvciB0aGUK KyAgIDx2YXJuYW1lPm9iamVjdDwvdmFybmFtZT4gPGxpdGVyYWw+d2FsPC9saXRlcmFsPiwgcmVz cGVjdGl2ZWx5LgogICA8L3BhcmE+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9tZXNvbi5idWls ZCBiL21lc29uLmJ1aWxkCmluZGV4IDIwYjg4N2YxYTFiLi41MTA1ODE2NTc0MiAxMDA2NDQKLS0t IGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTIwNDgsNiArMjA0OCw3IEBAIGJ1 aWx0aW5zID0gWwogICAnYnN3YXAzMicsCiAgICdic3dhcDY0JywKICAgJ2NseicsCisgICdjbHps JywKICAgJ2N0eicsCiAgICdjb25zdGFudF9wJywKICAgJ2ZyYW1lX2FkZHJlc3MnLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDczYTFjMWM0NjcwLi5hNzUyYWIxNTdiYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTI4Miw2ICsxMjgyLDE3IEBA IFNFTEVDVAogICAgICAgIGIuc3RhdHNfcmVzZXQKIEZST00gcGdfc3RhdF9nZXRfaW8oKSBiOwog CitDUkVBVEUgVklFVyBwZ19zdGF0X2lvX2hpc3RvZ3JhbSBBUworU0VMRUNUCisgICAgICAgYi5i YWNrZW5kX3R5cGUsCisgICAgICAgYi5vYmplY3QsCisgICAgICAgYi5jb250ZXh0LAorICAgICAg IGIuaW9fdHlwZSwKKyAgICAgICBiLmJ1Y2tldF9sYXRlbmN5X3VzLAorICAgICAgIGIuYnVja2V0 X2NvdW50LAorICAgICAgIGIuc3RhdHNfcmVzZXQKK0ZST00gcGdfc3RhdF9nZXRfaW9faGlzdG9n cmFtKCkgYjsKKwogQ1JFQVRFIFZJRVcgcGdfc3RhdF93YWwgQVMKICAgICBTRUxFQ1QKICAgICAg ICAgdy53YWxfcmVjb3JkcywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L3Bnc3RhdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMKaW5kZXggYjY3 ZGE4OGM3ZGMuLjlmZWIyZjEzNzBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQuYwpA QCAtMTA1LDggKzEwNSwxMCBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCiAjaW5jbHVkZSAiYWNj ZXNzL3hhY3QuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImxpYi9kc2hh c2guaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgog I2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCkBAIC02ODksNiArNjkxLDE0IEBAIHBnc3RhdF9pbml0aWFs aXplKHZvaWQpCiAJLyogU2V0IHVwIGEgcHJvY2Vzcy1leGl0IGhvb2sgdG8gY2xlYW4gdXAgKi8K IAliZWZvcmVfc2htZW1fZXhpdChwZ3N0YXRfc2h1dGRvd25faG9vaywgMCk7CiAKKwkvKiBBbGxv Y2F0ZSBJL08gbGF0ZW5jeSBidWNrZXRzIG9ubHkgaWYgd2UgYXJlIGdvaW5nIHRvIHBvcHVsYXRl IGl0ICovCisJaWYgKHRyYWNrX2lvX3RpbWluZyB8fCB0cmFja193YWxfaW9fdGltaW5nKQorCQlQ ZW5kaW5nSU9TdGF0cy5wZW5kaW5nX2hpc3RfdGltZV9idWNrZXRzID0gTWVtb3J5Q29udGV4dEFs bG9jWmVybyhUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkJCQkJCQkJICBJT09CSkVDVF9O VU1fVFlQRVMgKiBJT0NPTlRFWFRfTlVNX1RZUEVTICogSU9PUF9OVU1fVFlQRVMgKgorCQkJCQkJ CQkJCQkJCQkJCQkJICBQR1NUQVRfSU9fSElTVF9CVUNLRVRTICogc2l6ZW9mKHVpbnQ2NCkpOwor CWVsc2UKKwkJUGVuZGluZ0lPU3RhdHMucGVuZGluZ19oaXN0X3RpbWVfYnVja2V0cyA9IE5VTEw7 CisKICNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCiAJcGdzdGF0X2lzX2luaXRpYWxpemVkID0g dHJ1ZTsKICNlbmRpZgpAQCAtMTY2OCwxMCArMTY3OCwxNyBAQCBwZ3N0YXRfd3JpdGVfc3RhdHNm aWxlKHZvaWQpCiAKIAkJcGdzdGF0X2J1aWxkX3NuYXBzaG90X2ZpeGVkKGtpbmQpOwogCQlpZiAo cGdzdGF0X2lzX2tpbmRfYnVpbHRpbihraW5kKSkKLQkJCXB0ciA9ICgoY2hhciAqKSAmcGdTdGF0 TG9jYWwuc25hcHNob3QpICsgaW5mby0+c25hcHNob3RfY3RsX29mZjsKKwkJeworCQkJaWYgKGtp bmQgPT0gUEdTVEFUX0tJTkRfSU8pCisJCQkJcHRyID0gKGNoYXIgKikgcGdTdGF0TG9jYWwuc25h cHNob3QuaW87CisJCQllbHNlCisJCQkJcHRyID0gKChjaGFyICopICZwZ1N0YXRMb2NhbC5zbmFw c2hvdCkgKyBpbmZvLT5zbmFwc2hvdF9jdGxfb2ZmOworCQl9CiAJCWVsc2UKIAkJCXB0ciA9IHBn U3RhdExvY2FsLnNuYXBzaG90LmN1c3RvbV9kYXRhW2tpbmQgLSBQR1NUQVRfS0lORF9DVVNUT01f TUlOXTsKIAorCQlBc3NlcnQocHRyICE9IE5VTEwpOworCiAJCWZwdXRjKFBHU1RBVF9GSUxFX0VO VFJZX0ZJWEVELCBmcG91dCk7CiAJCXBnc3RhdF93cml0ZV9jaHVua19zKGZwb3V0LCAma2luZCk7 CiAJCXBnc3RhdF93cml0ZV9jaHVuayhmcG91dCwgcHRyLCBpbmZvLT5zaGFyZWRfZGF0YV9sZW4p OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2JhY2tlbmQu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9iYWNrZW5kLmMKaW5kZXggNzM0 NjFjOWJjYTUuLmZjMWJmODI0YTMxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXRfYmFja2VuZC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bn c3RhdF9iYWNrZW5kLmMKQEAgLTE2OCw3ICsxNjgsNyBAQCBwZ3N0YXRfZmx1c2hfYmFja2VuZF9l bnRyeV9pbyhQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZikKIHsKIAlQZ1N0YXRTaGFyZWRfQmFj a2VuZCAqc2hiYWNrZW5kZW50OwogCVBnU3RhdF9Ca3R5cGVJTyAqYmt0eXBlX3Noc3RhdHM7Ci0J UGdTdGF0X1BlbmRpbmdJTyBwZW5kaW5nX2lvOworCVBnU3RhdF9CYWNrZW5kUGVuZGluZ0lPIHBl bmRpbmdfaW87CiAKIAkvKgogCSAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBldmVuIGlm IG5vdGhpbmcgYXQgYWxsIGhhcyBoYXBwZW5lZCBmb3IgSU8KQEAgLTIwNSw3ICsyMDUsNyBAQCBw Z3N0YXRfZmx1c2hfYmFja2VuZF9lbnRyeV9pbyhQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZikK IAkvKgogCSAqIENsZWFyIG91dCB0aGUgc3RhdGlzdGljcyBidWZmZXIsIHNvIGl0IGNhbiBiZSBy ZS11c2VkLgogCSAqLwotCU1lbVNldCgmUGVuZGluZ0JhY2tlbmRTdGF0cy5wZW5kaW5nX2lvLCAw LCBzaXplb2YoUGdTdGF0X1BlbmRpbmdJTykpOworCU1lbVNldCgmUGVuZGluZ0JhY2tlbmRTdGF0 cy5wZW5kaW5nX2lvLCAwLCBzaXplb2YoUGdTdGF0X0JhY2tlbmRQZW5kaW5nSU8pKTsKIAogCWJh Y2tlbmRfaGFzX2lvc3RhdHMgPSBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X2lvLmMKaW5kZXggMTNhNWQ4ZTY0NDAuLmMyZmFhZGE2NDg3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS9wZ3N0YXRfaW8uYwpAQCAtMTcsMTAgKzE3LDEyIEBACiAjaW5jbHVkZSAicG9z dGdyZXMuaCIKIAogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKKyNpbmNsdWRlICJw b3J0L3BnX2JpdHV0aWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRl ICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oIgog Ci1zdGF0aWMgUGdTdGF0X1BlbmRpbmdJTyBQZW5kaW5nSU9TdGF0czsKK1BnU3RhdF9QZW5kaW5n SU8gUGVuZGluZ0lPU3RhdHM7CiBzdGF0aWMgYm9vbCBoYXZlX2lvc3RhdHMgPSBmYWxzZTsKIAog LyoKQEAgLTEwNyw2ICsxMDksMzUgQEAgcGdzdGF0X3ByZXBhcmVfaW9fdGltZShib29sIHRyYWNr X2lvX2d1YykKIAlyZXR1cm4gaW9fc3RhcnQ7CiB9CiAKKyNkZWZpbmUgTUlOX1BHX1NUQVRfSU9f SElTVF9MQVRFTkNZIDgxOTEKK3N0YXRpYyBpbmxpbmUgaW50CitnZXRfYnVja2V0X2luZGV4KHVp bnQ2NF90IG5zKQoreworCWNvbnN0IHVpbnQzMl90IG1heF9pbmRleCA9IFBHU1RBVF9JT19ISVNU X0JVQ0tFVFMgLSAxOworCisJLyoKKwkgKiBob3BlZnVsbHkgcHJlLWNhbGN1bGF0ZWQgYnkgdGhl IGNvbXBpbGVyOiBjbHpsKDgxOTEpID0KKwkgKiBjbHooMDExMTExMTExMTExMTFiIG9uIHVpbnQ2 NCkKKwkgKi8KKwljb25zdCB1aW50MzJfdCBtaW5fbGF0ZW5jeV9sZWFkaW5nX3plcm9zID0KKwkJ cGdfbGVhZGluZ196ZXJvX2JpdHM2NChNSU5fUEdfU1RBVF9JT19ISVNUX0xBVEVOQ1kpOworCisJ LyoKKwkgKiBtYWtlIHN1cmUgdGhlIHRtcCB2YWx1ZSBoYXMgYXQgbGVhc3QgODE5MSAob3VyIG1p bmltdW0gYnVja2V0IHNpemUpIGFzCisJICogX19idWlsdGluX2NsemwgbWlnaHQgcmV0dXJuIHVu ZGVmaW5lZCBiZWhhdmlvciB3aGVuIG9wZXJhdGluZyBvbiAwCisJICovCisJdWludDY0X3QJdG1w ID0gbnMgfCBNSU5fUEdfU1RBVF9JT19ISVNUX0xBVEVOQ1k7CisKKwkvKiBjb3VudCBsZWFkaW5n IHplcm9zICovCisJaW50CQkJbGVhZGluZ196ZXJvcyA9IHBnX2xlYWRpbmdfemVyb19iaXRzNjQo dG1wKTsKKworCS8qIG5vcm1hbGl6ZSB0aGUgaW5kZXggKi8KKwl1aW50MzJfdAlpbmRleCA9IG1p bl9sYXRlbmN5X2xlYWRpbmdfemVyb3MgLSBsZWFkaW5nX3plcm9zOworCisJLyogY2xhbXAgaXQg dG8gdGhlIG1heGltdW0gKi8KKwlyZXR1cm4gKGluZGV4ID4gbWF4X2luZGV4KSA/IG1heF9pbmRl eCA6IGluZGV4OworfQorCiAvKgogICogTGlrZSBwZ3N0YXRfY291bnRfaW9fb3AoKSBleGNlcHQg aXQgYWxzbyBhY2N1bXVsYXRlcyB0aW1lLgogICoKQEAgLTEyNSw2ICsxNTYsNyBAQCBwZ3N0YXRf Y291bnRfaW9fb3BfdGltZShJT09iamVjdCBpb19vYmplY3QsIElPQ29udGV4dCBpb19jb250ZXh0 LCBJT09wIGlvX29wLAogCWlmICghSU5TVFJfVElNRV9JU19aRVJPKHN0YXJ0X3RpbWUpKQogCXsK IAkJaW5zdHJfdGltZQlpb190aW1lOworCQlpbnQJCQlidWNrZXRfaW5kZXg7CiAKIAkJSU5TVFJf VElNRV9TRVRfQ1VSUkVOVChpb190aW1lKTsKIAkJSU5TVFJfVElNRV9TVUJUUkFDVChpb190aW1l LCBzdGFydF90aW1lKTsKQEAgLTE1Miw2ICsxODQsMTYgQEAgcGdzdGF0X2NvdW50X2lvX29wX3Rp bWUoSU9PYmplY3QgaW9fb2JqZWN0LCBJT0NvbnRleHQgaW9fY29udGV4dCwgSU9PcCBpb19vcCwK IAkJSU5TVFJfVElNRV9BREQoUGVuZGluZ0lPU3RhdHMucGVuZGluZ190aW1lc1tpb19vYmplY3Rd W2lvX2NvbnRleHRdW2lvX29wXSwKIAkJCQkJICAgaW9fdGltZSk7CiAKKwkJaWYgKFBlbmRpbmdJ T1N0YXRzLnBlbmRpbmdfaGlzdF90aW1lX2J1Y2tldHMgIT0gTlVMTCkKKwkJeworCQkJLyoKKwkJ CSAqIGNhbGN1bGF0ZSB0aGUgYnVja2V0X2luZGV4IGJhc2VkIG9uIGxhdGVuY3kgaW4gbmFub3Nl Y29uZHMKKwkJCSAqICh1aW50NjQpCisJCQkgKi8KKwkJCWJ1Y2tldF9pbmRleCA9IGdldF9idWNr ZXRfaW5kZXgoSU5TVFJfVElNRV9HRVRfTkFOT1NFQyhpb190aW1lKSk7CisJCQlQZW5kaW5nSU9T dGF0cy5wZW5kaW5nX2hpc3RfdGltZV9idWNrZXRzW2lvX29iamVjdF1baW9fY29udGV4dF1baW9f b3BdW2J1Y2tldF9pbmRleF0rKzsKKwkJfQorCiAJCS8qIEFkZCB0aGUgcGVyLWJhY2tlbmQgY291 bnQgKi8KIAkJcGdzdGF0X2NvdW50X2JhY2tlbmRfaW9fb3BfdGltZShpb19vYmplY3QsIGlvX2Nv bnRleHQsIGlvX29wLAogCQkJCQkJCQkJCWlvX3RpbWUpOwpAQCAtMTY1LDcgKzIwNyw3IEBAIHBn c3RhdF9mZXRjaF9zdGF0X2lvKHZvaWQpCiB7CiAJcGdzdGF0X3NuYXBzaG90X2ZpeGVkKFBHU1RB VF9LSU5EX0lPKTsKIAotCXJldHVybiAmcGdTdGF0TG9jYWwuc25hcHNob3QuaW87CisJcmV0dXJu IHBnU3RhdExvY2FsLnNuYXBzaG90LmlvOwogfQogCiAvKgpAQCAtMjIxLDYgKzI2MywxMSBAQCBw Z3N0YXRfaW9fZmx1c2hfY2IoYm9vbCBub3dhaXQpCiAKIAkJCQlia3R5cGVfc2hzdGF0cy0+dGlt ZXNbaW9fb2JqZWN0XVtpb19jb250ZXh0XVtpb19vcF0gKz0KIAkJCQkJSU5TVFJfVElNRV9HRVRf TUlDUk9TRUModGltZSk7CisKKwkJCQlpZiAoUGVuZGluZ0lPU3RhdHMucGVuZGluZ19oaXN0X3Rp bWVfYnVja2V0cyAhPSBOVUxMKQorCQkJCQlmb3IgKGludCBiID0gMDsgYiA8IFBHU1RBVF9JT19I SVNUX0JVQ0tFVFM7IGIrKykKKwkJCQkJCWJrdHlwZV9zaHN0YXRzLT5oaXN0X3RpbWVfYnVja2V0 c1tpb19vYmplY3RdW2lvX2NvbnRleHRdW2lvX29wXVtiXSArPQorCQkJCQkJCVBlbmRpbmdJT1N0 YXRzLnBlbmRpbmdfaGlzdF90aW1lX2J1Y2tldHNbaW9fb2JqZWN0XVtpb19jb250ZXh0XVtpb19v cF1bYl07CiAJCQl9CiAJCX0KIAl9CkBAIC0yMjksNyArMjc2LDggQEAgcGdzdGF0X2lvX2ZsdXNo X2NiKGJvb2wgbm93YWl0KQogCiAJTFdMb2NrUmVsZWFzZShia3R5cGVfbG9jayk7CiAKLQltZW1z ZXQoJlBlbmRpbmdJT1N0YXRzLCAwLCBzaXplb2YoUGVuZGluZ0lPU3RhdHMpKTsKKwkvKiBBdm9p ZCBvdmVyd3JpdGluZyBsYXRlbmN5IGJ1Y2tldHMgYXJyYXkgcG9pbnRlciAqLworCW1lbXNldCgm UGVuZGluZ0lPU3RhdHMsIDAsIG9mZnNldG9mKFBnU3RhdF9QZW5kaW5nSU8sIHBlbmRpbmdfaGlz dF90aW1lX2J1Y2tldHMpKTsKIAogCWhhdmVfaW9zdGF0cyA9IGZhbHNlOwogCkBAIC0yNzQsNiAr MzIyLDMzIEBAIHBnc3RhdF9nZXRfaW9fb2JqZWN0X25hbWUoSU9PYmplY3QgaW9fb2JqZWN0KQog CXBnX3VucmVhY2hhYmxlKCk7CiB9CiAKK2NvbnN0IGNoYXIgKgorcGdzdGF0X2dldF9pb19vcF9u YW1lKElPT3AgaW9fb3ApCit7CisJc3dpdGNoIChpb19vcCkKKwl7CisJCWNhc2UgSU9PUF9FVklD VDoKKwkJCXJldHVybiAiZXZpY3QiOworCQljYXNlIElPT1BfRlNZTkM6CisJCQlyZXR1cm4gImZz eW5jIjsKKwkJY2FzZSBJT09QX0hJVDoKKwkJCXJldHVybiAiaGl0IjsKKwkJY2FzZSBJT09QX1JF VVNFOgorCQkJcmV0dXJuICJyZXVzZSI7CisJCWNhc2UgSU9PUF9XUklURUJBQ0s6CisJCQlyZXR1 cm4gIndyaXRlYmFjayI7CisJCWNhc2UgSU9PUF9FWFRFTkQ6CisJCQlyZXR1cm4gImV4dGVuZCI7 CisJCWNhc2UgSU9PUF9SRUFEOgorCQkJcmV0dXJuICJyZWFkIjsKKwkJY2FzZSBJT09QX1dSSVRF OgorCQkJcmV0dXJuICJ3cml0ZSI7CisJfQorCisJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBJ T09wIHZhbHVlOiAlZCIsIGlvX29wKTsKKwlwZ191bnJlYWNoYWJsZSgpOworfQorCiB2b2lkCiBw Z3N0YXRfaW9faW5pdF9zaG1lbV9jYih2b2lkICpzdGF0cykKIHsKQEAgLTI4MSw2ICszNTYsOSBA QCBwZ3N0YXRfaW9faW5pdF9zaG1lbV9jYih2b2lkICpzdGF0cykKIAogCWZvciAoaW50IGkgPSAw OyBpIDwgQkFDS0VORF9OVU1fVFlQRVM7IGkrKykKIAkJTFdMb2NrSW5pdGlhbGl6ZSgmc3RhdF9z aG1lbS0+bG9ja3NbaV0sIExXVFJBTkNIRV9QR1NUQVRTX0RBVEEpOworCisJLyogdGhpcyBtaWdo dCBlbmQgdXAgYmVpbmcgbGF6aWx5IGFsbG9jYXRlZCBpbiBwZ3N0YXRfaW9fc25hcHNob3RfY2Io KSAqLworCXBnU3RhdExvY2FsLnNuYXBzaG90LmlvID0gTlVMTDsKIH0KIAogdm9pZApAQCAtMzA4 LDExICszODYsMTUgQEAgcGdzdGF0X2lvX3Jlc2V0X2FsbF9jYihUaW1lc3RhbXBUeiB0cykKIHZv aWQKIHBnc3RhdF9pb19zbmFwc2hvdF9jYih2b2lkKQogeworCWlmICh1bmxpa2VseShwZ1N0YXRM b2NhbC5zbmFwc2hvdC5pbyA9PSBOVUxMKSkKKwkJcGdTdGF0TG9jYWwuc25hcHNob3QuaW8gPSBN ZW1vcnlDb250ZXh0QWxsb2NaZXJvKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCQkJCSBz aXplb2YoUGdTdGF0X0lPKSk7CisKIAlmb3IgKGludCBpID0gMDsgaSA8IEJBQ0tFTkRfTlVNX1RZ UEVTOyBpKyspCiAJewogCQlMV0xvY2sJICAgKmJrdHlwZV9sb2NrID0gJnBnU3RhdExvY2FsLnNo bWVtLT5pby5sb2Nrc1tpXTsKIAkJUGdTdGF0X0JrdHlwZUlPICpia3R5cGVfc2hzdGF0cyA9ICZw Z1N0YXRMb2NhbC5zaG1lbS0+aW8uc3RhdHMuc3RhdHNbaV07Ci0JCVBnU3RhdF9Ca3R5cGVJTyAq Ymt0eXBlX3NuYXAgPSAmcGdTdGF0TG9jYWwuc25hcHNob3QuaW8uc3RhdHNbaV07CisJCVBnU3Rh dF9Ca3R5cGVJTyAqYmt0eXBlX3NuYXAgPSAmcGdTdGF0TG9jYWwuc25hcHNob3QuaW8tPnN0YXRz W2ldOwogCiAJCUxXTG9ja0FjcXVpcmUoYmt0eXBlX2xvY2ssIExXX1NIQVJFRCk7CiAKQEAgLTMy MSw3ICs0MDMsNyBAQCBwZ3N0YXRfaW9fc25hcHNob3RfY2Iodm9pZCkKIAkJICogdGhlIHJlc2V0 IHRpbWVzdGFtcCBhcyB3ZWxsLgogCQkgKi8KIAkJaWYgKGkgPT0gMCkKLQkJCXBnU3RhdExvY2Fs LnNuYXBzaG90LmlvLnN0YXRfcmVzZXRfdGltZXN0YW1wID0KKwkJCXBnU3RhdExvY2FsLnNuYXBz aG90LmlvLT5zdGF0X3Jlc2V0X3RpbWVzdGFtcCA9CiAJCQkJcGdTdGF0TG9jYWwuc2htZW0tPmlv LnN0YXRzLnN0YXRfcmVzZXRfdGltZXN0YW1wOwogCiAJCS8qIHVzaW5nIHN0cnVjdCBhc3NpZ25t ZW50IGR1ZSB0byBiZXR0ZXIgdHlwZSBzYWZldHkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1 bmNzLmMKaW5kZXggNmY5YzljNzJkZTUuLmUxNmM2NWQ0NWU5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cGdzdGF0ZnVuY3MuYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dwcmVmZXRjaGVyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9j YXRhbG9nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX2F1dGhpZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUg ImNvbW1vbi9pcC5oIgpAQCAtMzAsNiArMzEsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2Fy cmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKKyNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0 YW1wLmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzdG9yZS5oIgogI2luY2x1ZGUgInV0aWxzL3dh aXRfZXZlbnQuaCIKQEAgLTE2MzgsNiArMTY0MCwxNTIgQEAgcGdfc3RhdF9nZXRfYmFja2VuZF9p byhQR19GVU5DVElPTl9BUkdTKQogCXJldHVybiAoRGF0dW0pIDA7CiB9CiAKKy8qCisqIFdoZW4g YWRkaW5nIGEgbmV3IGNvbHVtbiB0byB0aGUgcGdfc3RhdF9pb19oaXN0b2dyYW0gdmlldyBhbmQg dGhlCisqIHBnX3N0YXRfZ2V0X2lvX2hpc3RvZ3JhbSgpIGZ1bmN0aW9uLCBhZGQgYSBuZXcgZW51 bSB2YWx1ZSBoZXJlIGFib3ZlCisqIEhJU1RfSU9fTlVNX0NPTFVNTlMuCisqLwordHlwZWRlZiBl bnVtIGhpc3RfaW9fc3RhdF9jb2wKK3sKKwlISVNUX0lPX0NPTF9JTlZBTElEID0gLTEsCisJSElT VF9JT19DT0xfQkFDS0VORF9UWVBFLAorCUhJU1RfSU9fQ09MX09CSkVDVCwKKwlISVNUX0lPX0NP TF9DT05URVhULAorCUhJU1RfSU9fQ09MX0lPVFlQRSwKKwlISVNUX0lPX0NPTF9CVUNLRVRfVVMs CisJSElTVF9JT19DT0xfQ09VTlQsCisJSElTVF9JT19DT0xfUkVTRVRfVElNRSwKKwlISVNUX0lP X05VTV9DT0xVTU5TCit9IGhpc3RvZ3JhbV9pb19zdGF0X2NvbDsKKworLyoKKyAqIHBnX3N0YXRf aW9faGlzdG9ncmFtX2J1aWxkX3R1cGxlcworICoKKyAqIEhlbHBlciByb3V0aW5lIGZvciBwZ19z dGF0X2dldF9pb19oaXN0b2dyYW0oKSBhbmQgcGdfc3RhdF9nZXRfYmFja2VuZF9pbygpCisgKiBm aWxsaW5nIGEgcmVzdWx0IHR1cGxlc3RvcmUgd2l0aCBvbmUgdHVwbGUgZm9yIGVhY2ggb2JqZWN0 IGFuZCBlYWNoCisgKiBjb250ZXh0IHN1cHBvcnRlZCBieSB0aGUgY2FsbGVyLCBiYXNlZCBvbiB0 aGUgY29udGVudHMgb2YgYmt0eXBlX3N0YXRzLgorICovCitzdGF0aWMgdm9pZAorcGdfc3RhdF9p b19oaXN0b2dyYW1fYnVpbGRfdHVwbGVzKFJldHVyblNldEluZm8gKnJzaW5mbywKKwkJCQkJCQkJ ICBQZ1N0YXRfQmt0eXBlSU8gKmJrdHlwZV9zdGF0cywKKwkJCQkJCQkJICBCYWNrZW5kVHlwZSBi a3R5cGUsCisJCQkJCQkJCSAgVGltZXN0YW1wVHogc3RhdF9yZXNldF90aW1lc3RhbXApCit7CisJ LyogR2V0IE9JRCBmb3IgaW50NHJhbmdlIHR5cGUgKi8KKwlEYXR1bQkJYmt0eXBlX2Rlc2MgPSBD U3RyaW5nR2V0VGV4dERhdHVtKEdldEJhY2tlbmRUeXBlRGVzYyhia3R5cGUpKTsKKwlPaWQJCQly YW5nZV90eXBpZCA9IFR5cGVuYW1lR2V0VHlwaWQoImludDRyYW5nZSIpOworCVR5cGVDYWNoZUVu dHJ5ICp0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKHJhbmdlX3R5cGlkLCBUWVBFQ0FDSEVf UkFOR0VfSU5GTyk7CisKKwlmb3IgKGludCBpb19vYmogPSAwOyBpb19vYmogPCBJT09CSkVDVF9O VU1fVFlQRVM7IGlvX29iaisrKQorCXsKKwkJY29uc3QgY2hhciAqb2JqX25hbWUgPSBwZ3N0YXRf Z2V0X2lvX29iamVjdF9uYW1lKGlvX29iaik7CisKKwkJZm9yIChpbnQgaW9fY29udGV4dCA9IDA7 IGlvX2NvbnRleHQgPCBJT0NPTlRFWFRfTlVNX1RZUEVTOyBpb19jb250ZXh0KyspCisJCXsKKwkJ CWNvbnN0IGNoYXIgKmNvbnRleHRfbmFtZSA9IHBnc3RhdF9nZXRfaW9fY29udGV4dF9uYW1lKGlv X2NvbnRleHQpOworCisJCQkvKgorCQkJICogU29tZSBjb21iaW5hdGlvbnMgb2YgQmFja2VuZFR5 cGUsIElPT2JqZWN0LCBhbmQgSU9Db250ZXh0IGFyZQorCQkJICogbm90IHZhbGlkIGZvciBhbnkg dHlwZSBvZiBJT09wLiBJbiBzdWNoIGNhc2VzLCBvbWl0IHRoZSBlbnRpcmUKKwkJCSAqIHJvdyBm cm9tIHRoZSB2aWV3LgorCQkJICovCisJCQlpZiAoIXBnc3RhdF90cmFja3NfaW9fb2JqZWN0KGJr dHlwZSwgaW9fb2JqLCBpb19jb250ZXh0KSkKKwkJCQljb250aW51ZTsKKworCQkJZm9yIChpbnQg aW9fb3AgPSAwOyBpb19vcCA8IElPT1BfTlVNX1RZUEVTOyBpb19vcCsrKQorCQkJeworCQkJCWNv bnN0IGNoYXIgKm9wX25hbWUgPSBwZ3N0YXRfZ2V0X2lvX29wX25hbWUoaW9fb3ApOworCisJCQkJ Zm9yIChpbnQgYnVja2V0ID0gMDsgYnVja2V0IDwgUEdTVEFUX0lPX0hJU1RfQlVDS0VUUzsgYnVj a2V0KyspCisJCQkJeworCQkJCQlEYXR1bQkJdmFsdWVzW0hJU1RfSU9fTlVNX0NPTFVNTlNdID0g ezB9OworCQkJCQlib29sCQludWxsc1tISVNUX0lPX05VTV9DT0xVTU5TXSA9IHswfTsKKwkJCQkJ UmFuZ2VCb3VuZAlsb3dlciwKKwkJCQkJCQkJdXBwZXI7CisJCQkJCVJhbmdlVHlwZSAgKnJhbmdl OworCisJCQkJCXZhbHVlc1tISVNUX0lPX0NPTF9CQUNLRU5EX1RZUEVdID0gYmt0eXBlX2Rlc2M7 CisJCQkJCXZhbHVlc1tISVNUX0lPX0NPTF9PQkpFQ1RdID0gQ1N0cmluZ0dldFRleHREYXR1bShv YmpfbmFtZSk7CisJCQkJCXZhbHVlc1tISVNUX0lPX0NPTF9DT05URVhUXSA9IENTdHJpbmdHZXRU ZXh0RGF0dW0oY29udGV4dF9uYW1lKTsKKwkJCQkJdmFsdWVzW0hJU1RfSU9fQ09MX0lPVFlQRV0g PSBDU3RyaW5nR2V0VGV4dERhdHVtKG9wX25hbWUpOworCisJCQkJCS8qIGJ1Y2tldCdzIG1heGlt dW0gbGF0ZW5jeSBhcyByYW5nZSBpbiBtaWNyb3NlY29uZHMgKi8KKwkJCQkJaWYgKGJ1Y2tldCA9 PSAwKQorCQkJCQkJbG93ZXIudmFsID0gSW50MzJHZXREYXR1bSgwKTsKKwkJCQkJZWxzZQorCQkJ CQkJbG93ZXIudmFsID0gSW50MzJHZXREYXR1bSgxIDw8ICgyICsgYnVja2V0KSk7CisJCQkJCWxv d2VyLmluZmluaXRlID0gZmFsc2U7CisJCQkJCWxvd2VyLmluY2x1c2l2ZSA9IHRydWU7CisJCQkJ CWxvd2VyLmxvd2VyID0gdHJ1ZTsKKworCQkJCQlpZiAoYnVja2V0ID09IFBHU1RBVF9JT19ISVNU X0JVQ0tFVFMgLSAxKQorCQkJCQkJdXBwZXIuaW5maW5pdGUgPSB0cnVlOworCQkJCQllbHNlCisJ CQkJCXsKKwkJCQkJCXVwcGVyLnZhbCA9IEludDMyR2V0RGF0dW0oMSA8PCAoMiArIGJ1Y2tldCAr IDEpKTsKKwkJCQkJCXVwcGVyLmluZmluaXRlID0gZmFsc2U7CisJCQkJCX0KKwkJCQkJdXBwZXIu aW5jbHVzaXZlID0gZmFsc2U7CisJCQkJCXVwcGVyLmxvd2VyID0gZmFsc2U7CisKKwkJCQkJcmFu Z2UgPSBtYWtlX3JhbmdlKHR5cGNhY2hlLCAmbG93ZXIsICZ1cHBlciwgZmFsc2UsIE5VTEwpOwor CQkJCQl2YWx1ZXNbSElTVF9JT19DT0xfQlVDS0VUX1VTXSA9IFJhbmdlVHlwZVBHZXREYXR1bShy YW5nZSk7CisKKwkJCQkJLyogYnVja2V0IGNvdW50ICovCisJCQkJCXZhbHVlc1tISVNUX0lPX0NP TF9DT1VOVF0gPSBJbnQ2NEdldERhdHVtKAorCQkJCQkJCQkJCQkJCQkJICBia3R5cGVfc3RhdHMt Pmhpc3RfdGltZV9idWNrZXRzW2lvX29ial1baW9fY29udGV4dF1baW9fb3BdW2J1Y2tldF0pOwor CisJCQkJCWlmIChzdGF0X3Jlc2V0X3RpbWVzdGFtcCAhPSAwKQorCQkJCQkJdmFsdWVzW0hJU1Rf SU9fQ09MX1JFU0VUX1RJTUVdID0gVGltZXN0YW1wVHpHZXREYXR1bShzdGF0X3Jlc2V0X3RpbWVz dGFtcCk7CisJCQkJCWVsc2UKKwkJCQkJCW51bGxzW0hJU1RfSU9fQ09MX1JFU0VUX1RJTUVdID0g dHJ1ZTsKKworCQkJCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNp bmZvLT5zZXREZXNjLAorCQkJCQkJCQkJCSB2YWx1ZXMsIG51bGxzKTsKKwkJCQl9CisJCQl9CisJ CX0KKwl9Cit9CisKK0RhdHVtCitwZ19zdGF0X2dldF9pb19oaXN0b2dyYW0oUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlSZXR1cm5TZXRJbmZvICpyc2luZm87CisJUGdTdGF0X0lPICAqYmFja2VuZHNf aW9fc3RhdHM7CisKKwlJbml0TWF0ZXJpYWxpemVkU1JGKGZjaW5mbywgMCk7CisJcnNpbmZvID0g KFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOworCisJYmFja2VuZHNfaW9fc3Rh dHMgPSBwZ3N0YXRfZmV0Y2hfc3RhdF9pbygpOworCisJZm9yIChpbnQgYmt0eXBlID0gMDsgYmt0 eXBlIDwgQkFDS0VORF9OVU1fVFlQRVM7IGJrdHlwZSsrKQorCXsKKwkJUGdTdGF0X0JrdHlwZUlP ICpia3R5cGVfc3RhdHMgPSAmYmFja2VuZHNfaW9fc3RhdHMtPnN0YXRzW2JrdHlwZV07CisKKwkJ LyoKKwkJICogSW4gQXNzZXJ0IGJ1aWxkcywgd2UgY2FuIGFmZm9yZCBhbiBleHRyYSBsb29wIHRo cm91Z2ggYWxsIG9mIHRoZQorCQkgKiBjb3VudGVycyAoaW4gcGdfc3RhdF9pb19idWlsZF90dXBs ZXMoKSksIGNoZWNraW5nIHRoYXQgb25seQorCQkgKiBleHBlY3RlZCBzdGF0cyBhcmUgbm9uLXpl cm8sIHNpbmNlIGl0IGtlZXBzIHRoZSBub24tQXNzZXJ0IGNvZGUKKwkJICogY2xlYW5lci4KKwkJ ICovCisJCUFzc2VydChwZ3N0YXRfYmt0eXBlX2lvX3N0YXRzX3ZhbGlkKGJrdHlwZV9zdGF0cywg Ymt0eXBlKSk7CisKKwkJLyoKKwkJICogRm9yIHRob3NlIEJhY2tlbmRUeXBlcyB3aXRob3V0IElP IE9wZXJhdGlvbiBzdGF0cywgc2tpcAorCQkgKiByZXByZXNlbnRpbmcgdGhlbSBpbiB0aGUgdmll dyBhbHRvZ2V0aGVyLgorCQkgKi8KKwkJaWYgKCFwZ3N0YXRfdHJhY2tzX2lvX2JrdHlwZShia3R5 cGUpKQorCQkJY29udGludWU7CisKKwkJLyogc2F2ZSB0dXBsZXMgd2l0aCBkYXRhIGZyb20gdGhp cyBQZ1N0YXRfQmt0eXBlSU8gKi8KKwkJcGdfc3RhdF9pb19oaXN0b2dyYW1fYnVpbGRfdHVwbGVz KHJzaW5mbywgYmt0eXBlX3N0YXRzLCBia3R5cGUsCisJCQkJCQkJCQkJICBiYWNrZW5kc19pb19z dGF0cy0+c3RhdF9yZXNldF90aW1lc3RhbXApOworCX0KKworCXJldHVybiAoRGF0dW0pIDA7Cit9 CisKIC8qCiAgKiBwZ19zdGF0X3dhbF9idWlsZF90dXBsZQogICoKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0CmluZGV4IGJlMTU3YTVmYmU5Li4xNTlkOTEyNTE1YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0CkBAIC02MDYxLDYgKzYwNjEsMTUgQEAKICAgcHJvYXJnbmFtZXMgPT4gJ3tiYWNrZW5kX3R5 cGUsb2JqZWN0LGNvbnRleHQscmVhZHMscmVhZF9ieXRlcyxyZWFkX3RpbWUsd3JpdGVzLHdyaXRl X2J5dGVzLHdyaXRlX3RpbWUsd3JpdGViYWNrcyx3cml0ZWJhY2tfdGltZSxleHRlbmRzLGV4dGVu ZF9ieXRlcyxleHRlbmRfdGltZSxoaXRzLGV2aWN0aW9ucyxyZXVzZXMsZnN5bmNzLGZzeW5jX3Rp bWUsc3RhdHNfcmVzZXR9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9pbycgfSwKIAoreyBv aWQgPT4gJzYxNDknLCBkZXNjciA9PiAnc3RhdGlzdGljczogcGVyIGJhY2tlbmQgdHlwZSBJTyBs YXRlbmN5IGhpc3RvZ3JhbScsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2lvX2hpc3RvZ3Jh bScsIHByb3Jvd3MgPT4gJzMwJywgcHJvcmV0c2V0ID0+ICd0JywKKyAgcHJvdm9sYXRpbGUgPT4g J3YnLCBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsCisgIHByb2Fy Z3R5cGVzID0+ICcnLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne3RleHQsdGV4dCx0ZXh0LHRleHQs aW50NHJhbmdlLGludDgsdGltZXN0YW1wdHp9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tvLG8sbyxv LG8sbyxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7YmFja2VuZF90eXBlLG9iamVjdCxjb250ZXh0 LGlvX3R5cGUsYnVja2V0X2xhdGVuY3lfdXMsYnVja2V0X2NvdW50LHN0YXRzX3Jlc2V0fScsCisg IHByb3NyYyA9PiAncGdfc3RhdF9nZXRfaW9faGlzdG9ncmFtJyB9LAorCiB7IG9pZCA9PiAnNjUw OScsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBwZXIgbG9jayB0eXBlIHN0YXRpc3RpY3MnLAogICBw cm9uYW1lID0+ICdwZ19zdGF0X2dldF9sb2NrJywgcHJvcm93cyA9PiAnMTAnLCBwcm9yZXRzZXQg PT4gJ3QnLAogICBwcm92b2xhdGlsZSA9PiAndicsIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0 dHlwZSA9PiAncmVjb3JkJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3Jj L2luY2x1ZGUvcGdzdGF0LmgKaW5kZXggZGZhMmU4Mzc2MzguLjM0ZmQ5M2Y4NmRjIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAt MzI2LDExICszMjYsMjMgQEAgdHlwZWRlZiBlbnVtIElPT3AKIAkoKCh1bnNpZ25lZCBpbnQpIChp b19vcCkpIDwgSU9PUF9OVU1fVFlQRVMgJiYgXAogCSAoKHVuc2lnbmVkIGludCkgKGlvX29wKSkg Pj0gSU9PUF9FWFRFTkQpCiAKKy8qCisgKiBUaGlzIHNob3VsZCByZXByZXNlbnQgYmFsYW5jZSBi ZXR3ZWVuIGJlaW5nIGZhc3QgYW5kIHByb3ZpZGluZyB2YWx1ZQorICogdG8gdGhlIHVzZXJzOgor ICogMS4gV2Ugd2FudCB0byBjb3ZlciB2YXJpb3VzIGZhc3QgYW5kIHNsb3cgZGV2aWNlIHR5cGVz ICgwLjAxbXMgLSAxNW1zKQorICogMi4gV2Ugd2FudCB0byBhbHNvIGNvdmVyIHNwb3JhZGljIGxv bmcgdGFpbCBsYXRlbmNpZXMgKGhhcmR3YXJlIGlzc3VlcywKKyAqICAgIGRlbGF5ZWQgZnN5bmNz LCBzdHVjayBJL08pCisgKiAzLiBXZSB3YW50IHRvIGJlIGFzIHNtYWxsIGFzIHBvc3NpYmxlIGhl cmUgaW4gdGVybXMgb2Ygc2l6ZToKKyAqICAgIDE2ICogc2l6ZW9mKHVpbnQ2NCkgPSB3aGljaCBz aG91bGQgYmUgbGVzcyB0aGFuIHR3byBjYWNoZWxpbmVzLgorICovCisjZGVmaW5lIFBHU1RBVF9J T19ISVNUX0JVQ0tFVFMgMTYKKwogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0JrdHlwZUlPCiB7CiAJ dWludDY0CQlieXRlc1tJT09CSkVDVF9OVU1fVFlQRVNdW0lPQ09OVEVYVF9OVU1fVFlQRVNdW0lP T1BfTlVNX1RZUEVTXTsKIAlQZ1N0YXRfQ291bnRlciBjb3VudHNbSU9PQkpFQ1RfTlVNX1RZUEVT XVtJT0NPTlRFWFRfTlVNX1RZUEVTXVtJT09QX05VTV9UWVBFU107CiAJUGdTdGF0X0NvdW50ZXIg dGltZXNbSU9PQkpFQ1RfTlVNX1RZUEVTXVtJT0NPTlRFWFRfTlVNX1RZUEVTXVtJT09QX05VTV9U WVBFU107CisJdWludDY0CQloaXN0X3RpbWVfYnVja2V0c1tJT09CSkVDVF9OVU1fVFlQRVNdW0lP Q09OVEVYVF9OVU1fVFlQRVNdW0lPT1BfTlVNX1RZUEVTXVtQR1NUQVRfSU9fSElTVF9CVUNLRVRT XTsKIH0gUGdTdGF0X0JrdHlwZUlPOwogCiB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfUGVuZGluZ0lP CkBAIC0zMzgsOCArMzUwLDE4IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9QZW5kaW5nSU8KIAl1 aW50NjQJCWJ5dGVzW0lPT0JKRUNUX05VTV9UWVBFU11bSU9DT05URVhUX05VTV9UWVBFU11bSU9P UF9OVU1fVFlQRVNdOwogCVBnU3RhdF9Db3VudGVyIGNvdW50c1tJT09CSkVDVF9OVU1fVFlQRVNd W0lPQ09OVEVYVF9OVU1fVFlQRVNdW0lPT1BfTlVNX1RZUEVTXTsKIAlpbnN0cl90aW1lCXBlbmRp bmdfdGltZXNbSU9PQkpFQ1RfTlVNX1RZUEVTXVtJT0NPTlRFWFRfTlVNX1RZUEVTXVtJT09QX05V TV9UWVBFU107CisKKwkvKgorCSAqIER5bmFtaWNhbGx5IGFsbG9jYXRlZCBhcnJheSBvZgorCSAq IFtJT09CSkVDVF9OVU1fVFlQRVNdW0lPQ09OVEVYVF9OVU1fVFlQRVNdCisJICogW0lPT1BfTlVN X1RZUEVTXVtQR1NUQVRfSU9fSElTVF9CVUNLRVRTXSBvbmx5IHdpdGggdHJhY2tfaW9fdGltaW5n cworCSAqIHRydWUuCisJICovCisJdWludDY0CQkoKnBlbmRpbmdfaGlzdF90aW1lX2J1Y2tldHMp W0lPQ09OVEVYVF9OVU1fVFlQRVNdW0lPT1BfTlVNX1RZUEVTXVtQR1NUQVRfSU9fSElTVF9CVUNL RVRTXTsKIH0gUGdTdGF0X1BlbmRpbmdJTzsKIAorZXh0ZXJuIFBnU3RhdF9QZW5kaW5nSU8gUGVu ZGluZ0lPU3RhdHM7CisKIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9JTwogewogCVRpbWVzdGFtcFR6 IHN0YXRfcmVzZXRfdGltZXN0YW1wOwpAQCAtNTI2LDE1ICs1NDgsMjQgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGdTdGF0X0JhY2tlbmQKIH0gUGdTdGF0X0JhY2tlbmQ7CiAKIC8qIC0tLS0tLS0tLQotICog UGdTdGF0X0JhY2tlbmRQZW5kaW5nCU5vbi1mbHVzaGVkIGJhY2tlbmQgc3RhdHMuCisgKiBQZ1N0 YXRfQmFja2VuZFBlbmRpbmcoSU8pCU5vbi1mbHVzaGVkIGJhY2tlbmQgc3RhdHMuCiAgKiAtLS0t LS0tLS0KICAqLwordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0JhY2tlbmRQZW5kaW5nSU8KK3sKKwl1 aW50NjQJCWJ5dGVzW0lPT0JKRUNUX05VTV9UWVBFU11bSU9DT05URVhUX05VTV9UWVBFU11bSU9P UF9OVU1fVFlQRVNdOworCVBnU3RhdF9Db3VudGVyIGNvdW50c1tJT09CSkVDVF9OVU1fVFlQRVNd W0lPQ09OVEVYVF9OVU1fVFlQRVNdW0lPT1BfTlVNX1RZUEVTXTsKKwlpbnN0cl90aW1lCXBlbmRp bmdfdGltZXNbSU9PQkpFQ1RfTlVNX1RZUEVTXVtJT0NPTlRFWFRfTlVNX1RZUEVTXVtJT09QX05V TV9UWVBFU107Cit9CQkJUGdTdGF0X0JhY2tlbmRQZW5kaW5nSU87CisKIHR5cGVkZWYgc3RydWN0 IFBnU3RhdF9CYWNrZW5kUGVuZGluZwogewogCS8qCi0JICogQmFja2VuZCBzdGF0aXN0aWNzIHN0 b3JlIHRoZSBzYW1lIGFtb3VudCBvZiBJTyBkYXRhIGFzIFBHU1RBVF9LSU5EX0lPLgorCSAqIEJh Y2tlbmQgc3RhdGlzdGljcyBzdG9yZSBhbG1vc3QgdGhlIHNhbWUgYW1vdW50IG9mIElPIGRhdGEg YXMKKwkgKiBQR1NUQVRfS0lORF9JTy4gVGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIFBnU3Rh dF9CYWNrZW5kUGVuZGluZ0lPIGFuZAorCSAqIFBnU3RhdF9QZW5kaW5nSU8gaXMgdGhhdCB0aGUg bGF0dGVyIGFsc28gdHJhY2sgSU8gbGF0ZW5jeSBoaXN0b2dyYW1zLgogCSAqLwotCVBnU3RhdF9Q ZW5kaW5nSU8gcGVuZGluZ19pbzsKKwlQZ1N0YXRfQmFja2VuZFBlbmRpbmdJTyBwZW5kaW5nX2lv OwogfSBQZ1N0YXRfQmFja2VuZFBlbmRpbmc7CiAKIC8qCkBAIC02MjQsNiArNjU1LDcgQEAgZXh0 ZXJuIHZvaWQgcGdzdGF0X2NvdW50X2lvX29wX3RpbWUoSU9PYmplY3QgaW9fb2JqZWN0LCBJT0Nv bnRleHQgaW9fY29udGV4dCwKIGV4dGVybiBQZ1N0YXRfSU8gKnBnc3RhdF9mZXRjaF9zdGF0X2lv KHZvaWQpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfaW9fY29udGV4dF9uYW1lKElP Q29udGV4dCBpb19jb250ZXh0KTsKIGV4dGVybiBjb25zdCBjaGFyICpwZ3N0YXRfZ2V0X2lvX29i amVjdF9uYW1lKElPT2JqZWN0IGlvX29iamVjdCk7CitleHRlcm4gY29uc3QgY2hhciAqcGdzdGF0 X2dldF9pb19vcF9uYW1lKElPT3AgaW9fb3ApOwogCiBleHRlcm4gYm9vbCBwZ3N0YXRfdHJhY2tz X2lvX2JrdHlwZShCYWNrZW5kVHlwZSBia3R5cGUpOwogZXh0ZXJuIGJvb2wgcGdzdGF0X3RyYWNr c19pb19vYmplY3QoQmFja2VuZFR5cGUgYmt0eXBlLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cG9ydC9wZ19iaXR1dGlscy5oIGIvc3JjL2luY2x1ZGUvcG9ydC9wZ19iaXR1dGlscy5oCmluZGV4 IDdhMDBkMTk3MDEzLi5iMjc5MTNhMmFkOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9ydC9w Z19iaXR1dGlscy5oCisrKyBiL3NyYy9pbmNsdWRlL3BvcnQvcGdfYml0dXRpbHMuaApAQCAtMzIs NiArMzIsNDIgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGNvbnN0IHVpbnQ4IHBnX2xlZnRtb3N0X29u ZV9wb3NbMjU2XTsKIGV4dGVybiBQR0RMTElNUE9SVCBjb25zdCB1aW50OCBwZ19yaWdodG1vc3Rf b25lX3Bvc1syNTZdOwogZXh0ZXJuIFBHRExMSU1QT1JUIGNvbnN0IHVpbnQ4IHBnX251bWJlcl9v Zl9vbmVzWzI1Nl07CiAKKworLyoKKyAqIHBnX2xlYWRpbmdfemVyb19iaXRzNjQKKyAqCQlSZXR1 cm5zIHRoZSBudW1iZXIgb2YgbGVhZGluZyAwLWJpdHMgaW4geCwgc3RhcnRpbmcgYXQgdGhlIG1v c3Qgc2lnbmlmaWNhbnQgYml0IHBvc2l0aW9uLgorICoJCVdvcmQgbXVzdCBub3QgYmUgMCAoYXMg aXQgaXMgdW5kZWZpbmVkIGJlaGF2aW9yKS4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK3BnX2xl YWRpbmdfemVyb19iaXRzNjQodWludDY0IHdvcmQpCit7CisjaWZkZWYgSEFWRV9fQlVJTFRJTl9D TFpMCisJQXNzZXJ0KHdvcmQgIT0gMCk7CisKKyNpZiBTSVpFT0ZfTE9ORyA9PSA4CisJcmV0dXJu IF9fYnVpbHRpbl9jbHpsKHdvcmQpOworI2VsaWYgU0laRU9GX0xPTkdfTE9ORyA9PSA4CisJcmV0 dXJuIF9fYnVpbHRpbl9jbHpsbCh3b3JkKTsKKyNlbHNlCisjZXJyb3IgImNhbm5vdCBmaW5kIGlu dGVnZXIgdHlwZSBvZiB0aGUgc2FtZSBzaXplIGFzIHVpbnQ2NF90IgorI2VuZGlmCisKKyNlbHNl CisJdWludDY0IHk7CisJaW50IG4gPSA2NDsKKwlpZiAod29yZCA9PSAwKQorCQlyZXR1cm4gNjQ7 CisKKwl5ID0gd29yZCA+PiAzMjsgaWYgKHkgIT0gMCkgeyBuIC09IDMyOyB3b3JkID0geTsgfQor CXkgPSB3b3JkID4+IDE2OyBpZiAoeSAhPSAwKSB7IG4gLT0gMTY7IHdvcmQgPSB5OyB9CisJeSA9 IHdvcmQgPj4gODsgIGlmICh5ICE9IDApIHsgbiAtPSA4OyAgd29yZCA9IHk7IH0KKwl5ID0gd29y ZCA+PiA0OyAgaWYgKHkgIT0gMCkgeyBuIC09IDQ7ICB3b3JkID0geTsgfQorCXkgPSB3b3JkID4+ IDI7ICBpZiAoeSAhPSAwKSB7IG4gLT0gMjsgIHdvcmQgPSB5OyB9CisJeSA9IHdvcmQgPj4gMTsg IGlmICh5ICE9IDApIHsgcmV0dXJuIG4gLSAyOyB9CisJcmV0dXJuIG4gLSAxOworI2VuZGlmCit9 CisKIC8qCiAgKiBwZ19sZWZ0bW9zdF9vbmVfcG9zMzIKICAqCQlSZXR1cm5zIHRoZSBwb3NpdGlv biBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBzZXQgYml0IGluICJ3b3JkIiwKQEAgLTcxLDcgKzEw Nyw3IEBAIHBnX2xlZnRtb3N0X29uZV9wb3MzMih1aW50MzIgd29yZCkKIHN0YXRpYyBpbmxpbmUg aW50CiBwZ19sZWZ0bW9zdF9vbmVfcG9zNjQodWludDY0IHdvcmQpCiB7Ci0jaWZkZWYgSEFWRV9f QlVJTFRJTl9DTFoKKyNpZmRlZiBIQVZFX19CVUlMVElOX0NMWkwKIAlBc3NlcnQod29yZCAhPSAw KTsKIAogI2lmIFNJWkVPRl9MT05HID09IDgKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L3Bnc3RhdF9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdzdGF0X2ludGVybmFsLmgK aW5kZXggZmU0NjNmYWFmNjMuLmEzY2U4YjA0NzIzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9wZ3N0YXRfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRfaW50 ZXJuYWwuaApAQCAtNjA4LDcgKzYwOCw3IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9TbmFwc2hv dAogCiAJUGdTdGF0X0NoZWNrcG9pbnRlclN0YXRzIGNoZWNrcG9pbnRlcjsKIAotCVBnU3RhdF9J TwlpbzsKKwlQZ1N0YXRfSU8gICppbzsKIAogCVBnU3RhdF9Mb2NrIGxvY2s7CiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDI5X3N0YXRzX3Jlc3RhcnQucGwgYi9zcmMvdGVzdC9y ZWNvdmVyeS90LzAyOV9zdGF0c19yZXN0YXJ0LnBsCmluZGV4IGNkYzQyN2RiYzc4Li4zMzkzOWM4 NzAxYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMjlfc3RhdHNfcmVzdGFydC5w bAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAyOV9zdGF0c19yZXN0YXJ0LnBsCkBAIC0yOTMs NyArMjkzLDM2IEBAIGNtcF9vaygKIAkkd2FsX3Jlc3RhcnRfaW1tZWRpYXRlLT57cmVzZXR9LAog CSIkc2VjdDogcmVzZXQgdGltZXN0YW1wIGlzIG5ldyIpOwogCisKKyMjIFRlc3QgcGdfc3RhdF9p b19oaXN0b2dyYW0gdGhhdCBpcyBiZWNvbWluZyBhY3RpdmUgZHVlIHRvIGR5bmFtaWMgbWVtb3J5 CisjIyBhbGxvY2F0aW9uIG9ubHkgZm9yIG5ldyBiYWNrZW5kcyB3aXRoIGdsb2JhbGx5IHNldCB0 cmFja19baW98d2FsX2lvXV90aW1pbmcKKyRzZWN0ID0gInBnX3N0YXRfaW9faGlzdG9ncmFtIjsK KyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgInRyYWNrX2lvX3RpbWluZyA9 ICdvbiciKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgInRyYWNrX3dh bF9pb190aW1pbmcgPSAnb24nIik7Ciskbm9kZS0+cmVzdGFydDsKKworCisjIyBDaGVjayB0aGF0 IHBnX3N0YXRfaW9faGlzdG9ncmFtcyBzZWVzIHNvbWUgZ3Jvd2luZyBjb3VudHMgaW4gYnVja2V0 cworIyMgV2UgY291bGQgYWxzbyB0cnkgd2l0aCBjaGVja3BvaW50ZXIsIGJ1dCBpdCBvZnRlbiBy dW5zIHdpdGggZnN5bmM9b2ZmCisjIyBkdXJpbmcgdGVzdC4KK215ICRjb3VudGJlZm9yZSA9ICRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHN1bShidWNrZXRfY291bnQpIEFT IGhpc3RfYnVja2V0X2NvdW50X3N1bSBGUk9NIHBnX3N0YXRfZ2V0X2lvX2hpc3RvZ3JhbSgpICIg LgorCSJXSEVSRSBiYWNrZW5kX3R5cGU9J2NsaWVudCBiYWNrZW5kJyBBTkQgb2JqZWN0PSdyZWxh dGlvbicgQU5EIGNvbnRleHQ9J25vcm1hbCciKTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfaW9faGlzdChpZCBiaWdpbnQpOyIpOworJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF9pb19oaXN0IFNFTEVDVCBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwKSBzOyIpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOyIpOworCitteSAkY291bnRhZnRlciA9 ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHN1bShidWNrZXRfY291bnQp IEFTIGhpc3RfYnVja2V0X2NvdW50X3N1bSBGUk9NIHBnX3N0YXRfZ2V0X2lvX2hpc3RvZ3JhbSgp ICIgLgorCSJXSEVSRSBiYWNrZW5kX3R5cGU9J2NsaWVudCBiYWNrZW5kJyBBTkQgb2JqZWN0PSdy ZWxhdGlvbicgQU5EIGNvbnRleHQ9J25vcm1hbCciKTsKKworY21wX29rKAorCSRjb3VudGFmdGVy LCAnPicsICRjb3VudGJlZm9yZSwKKwkicGdfc3RhdF9pb19oaXN0b2dyYW06IGxhdGVuY3kgYnVj a2V0cyBncm93aW5nIik7CisKICRub2RlLT5zdG9wOworCiBkb25lX3Rlc3RpbmcoKTsKIAogc3Vi IHRyaWdnZXJfZnVuY3JlbF9zdGF0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4 IGE2NWE1YmYwYzRmLi5jMDA2N2NiNjUzYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQKQEAgLTE5NjcsNiArMTk2NywxNCBAQCBwZ19zdGF0X2lvfCBTRUxFQ1QgYmFja2VuZF90eXBl LAogICAgIGZzeW5jX3RpbWUsCiAgICAgc3RhdHNfcmVzZXQKICAgIEZST00gcGdfc3RhdF9nZXRf aW8oKSBiKGJhY2tlbmRfdHlwZSwgb2JqZWN0LCBjb250ZXh0LCByZWFkcywgcmVhZF9ieXRlcywg cmVhZF90aW1lLCB3cml0ZXMsIHdyaXRlX2J5dGVzLCB3cml0ZV90aW1lLCB3cml0ZWJhY2tzLCB3 cml0ZWJhY2tfdGltZSwgZXh0ZW5kcywgZXh0ZW5kX2J5dGVzLCBleHRlbmRfdGltZSwgaGl0cywg ZXZpY3Rpb25zLCByZXVzZXMsIGZzeW5jcywgZnN5bmNfdGltZSwgc3RhdHNfcmVzZXQpOworcGdf c3RhdF9pb19oaXN0b2dyYW18IFNFTEVDVCBiYWNrZW5kX3R5cGUsCisgICAgb2JqZWN0LAorICAg IGNvbnRleHQsCisgICAgaW9fdHlwZSwKKyAgICBidWNrZXRfbGF0ZW5jeV91cywKKyAgICBidWNr ZXRfY291bnQsCisgICAgc3RhdHNfcmVzZXQKKyAgIEZST00gcGdfc3RhdF9nZXRfaW9faGlzdG9n cmFtKCkgYihiYWNrZW5kX3R5cGUsIG9iamVjdCwgY29udGV4dCwgaW9fdHlwZSwgYnVja2V0X2xh dGVuY3lfdXMsIGJ1Y2tldF9jb3VudCwgc3RhdHNfcmVzZXQpOwogcGdfc3RhdF9sb2NrfCBTRUxF Q1QgbG9ja3R5cGUsCiAgICAgd2FpdHMsCiAgICAgd2FpdF90aW1lLApkaWZmIC0tZ2l0IGEvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdAppbmRleCA4Y2Y0MGM4NzA0My4uY2U1MmU3NjE5ZmQgMTAwNjQ0Ci0tLSBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CkBAIC0zODU4LDYgKzM4NTgsNyBAQCBnekZpbGUKIGhhdmluZ19jb2xsYXRpb25f Y3R4CiBoZWFwX3BhZ2VfaXRlbXNfc3RhdGUKIGhlbHBfaGFuZGxlcgoraGlzdG9ncmFtX2lvX3N0 YXRfY29sCiBobENoZWNrCiBob3N0X2NhY2hlX2hhc2gKIGhzdG9yZUNoZWNrS2V5TGVuX3QKLS0g CjIuNDMuMAoK --00000000000076b73b06523bb516 Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0002-Lower-pg_stat_io_histogram-private-backend-memor.patch" Content-Disposition: attachment; filename="v11-0002-Lower-pg_stat_io_histogram-private-backend-memor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpdt55l51 RnJvbSBlNGViZWM5MWFjOWI5YTk5ODRhZmVhY2M2MmQ2ZjIxNjU2OWMyYTI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXYXJ0YWsgPGpha3ViLndhcnRha0BlbnRlcnByaXNl ZGIuY29tPgpEYXRlOiBXZWQsIDE4IE1hciAyMDI2IDA3OjI0OjE0ICswMTAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMi8zXSBMb3dlciBwZ19zdGF0X2lvX2hpc3RvZ3JhbSBwcml2YXRlIChiYWNrZW5k KSBtZW1vcnkKIGluIHBlbmRpbmdfaGlzdF90aW1lX2J1Y2tldHMgYnkgdXNpbmcgYXJyYXkgd2l0 aCBpbmRpcmVjdCBvZmZzZXRzLgoKLS0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0 YXQuYyAgICB8ICA5ICstLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMg fCA5MCArKysrKysrKysrKysrKysrKysrKysrKystLQogc3JjL2luY2x1ZGUvcGdzdGF0LmggICAg ICAgICAgICAgICAgICAgfCAxOSArKysrLS0KIHNyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRl cm5hbC5oICAgIHwgIDEgKwogNCBmaWxlcyBjaGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKSwgMTcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQuYwppbmRleCA5ZmViMmYx MzcwYi4uN2M1OTc5MzI2NzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L3Bnc3RhdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdC5jCkBAIC00 NDUsNiArNDQ1LDcgQEAgc3RhdGljIGNvbnN0IFBnU3RhdF9LaW5kSW5mbyBwZ3N0YXRfa2luZF9i dWlsdGluX2luZm9zW1BHU1RBVF9LSU5EX0JVSUxUSU5fU0laRV0KIAkJLnNoYXJlZF9kYXRhX29m ZiA9IG9mZnNldG9mKFBnU3RhdFNoYXJlZF9JTywgc3RhdHMpLAogCQkuc2hhcmVkX2RhdGFfbGVu ID0gc2l6ZW9mKCgoUGdTdGF0U2hhcmVkX0lPICopIDApLT5zdGF0cyksCiAKKwkJLmluaXRfYmFj a2VuZF9jYiA9IHBnc3RhdF9pb19pbml0X2JhY2tlbmRfY2IsCiAJCS5mbHVzaF9zdGF0aWNfY2Ig PSBwZ3N0YXRfaW9fZmx1c2hfY2IsCiAJCS5pbml0X3NobWVtX2NiID0gcGdzdGF0X2lvX2luaXRf c2htZW1fY2IsCiAJCS5yZXNldF9hbGxfY2IgPSBwZ3N0YXRfaW9fcmVzZXRfYWxsX2NiLApAQCAt NjkxLDE0ICs2OTIsNiBAQCBwZ3N0YXRfaW5pdGlhbGl6ZSh2b2lkKQogCS8qIFNldCB1cCBhIHBy b2Nlc3MtZXhpdCBob29rIHRvIGNsZWFuIHVwICovCiAJYmVmb3JlX3NobWVtX2V4aXQocGdzdGF0 X3NodXRkb3duX2hvb2ssIDApOwogCi0JLyogQWxsb2NhdGUgSS9PIGxhdGVuY3kgYnVja2V0cyBv bmx5IGlmIHdlIGFyZSBnb2luZyB0byBwb3B1bGF0ZSBpdCAqLwotCWlmICh0cmFja19pb190aW1p bmcgfHwgdHJhY2tfd2FsX2lvX3RpbWluZykKLQkJUGVuZGluZ0lPU3RhdHMucGVuZGluZ19oaXN0 X3RpbWVfYnVja2V0cyA9IE1lbW9yeUNvbnRleHRBbGxvY1plcm8oVG9wTWVtb3J5Q29udGV4dCwK LQkJCQkJCQkJCQkJCQkJCQkJCSAgSU9PQkpFQ1RfTlVNX1RZUEVTICogSU9DT05URVhUX05VTV9U WVBFUyAqIElPT1BfTlVNX1RZUEVTICoKLQkJCQkJCQkJCQkJCQkJCQkJCSAgUEdTVEFUX0lPX0hJ U1RfQlVDS0VUUyAqIHNpemVvZih1aW50NjQpKTsKLQllbHNlCi0JCVBlbmRpbmdJT1N0YXRzLnBl bmRpbmdfaGlzdF90aW1lX2J1Y2tldHMgPSBOVUxMOwotCiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVD S0lORwogCXBnc3RhdF9pc19pbml0aWFsaXplZCA9IHRydWU7CiAjZW5kaWYKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKaW5kZXggYzJmYWFkYTY0ODcuLjRjNjU1ZDM4Yjk3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYwpAQCAtMTYsNiArMTYsNyBAQAog CiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMu aCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgpAQCAtNjYsNiArNjcsMjcgQEAgcGdzdGF0 X2JrdHlwZV9pb19zdGF0c192YWxpZChQZ1N0YXRfQmt0eXBlSU8gKmJhY2tlbmRfaW8sCiAJcmV0 dXJuIHRydWU7CiB9CiAKK2ludAorcGdzdGF0X2JrdHlwZV9jb3VudF9wb3RlbnRpYWxseV91c2Vk KEJhY2tlbmRUeXBlIGJrdHlwZSkKK3sKKwlpbnQJCQljbnQgPSAwOworCisJZm9yIChpbnQgaW9f b2JqZWN0ID0gMDsgaW9fb2JqZWN0IDwgSU9PQkpFQ1RfTlVNX1RZUEVTOyBpb19vYmplY3QrKykK Kwl7CisJCWZvciAoaW50IGlvX2NvbnRleHQgPSAwOyBpb19jb250ZXh0IDwgSU9DT05URVhUX05V TV9UWVBFUzsgaW9fY29udGV4dCsrKQorCQl7CisJCQlmb3IgKGludCBpb19vcCA9IDA7IGlvX29w IDwgSU9PUF9OVU1fVFlQRVM7IGlvX29wKyspCisJCQl7CisJCQkJLyogd2UgZG8gdHJhY2sgaXQg Ki8KKwkJCQlpZiAocGdzdGF0X3RyYWNrc19pb19vcChia3R5cGUsIGlvX29iamVjdCwgaW9fY29u dGV4dCwgaW9fb3ApKQorCQkJCQljbnQrKzsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBjbnQ7 Cit9CisKIHZvaWQKIHBnc3RhdF9jb3VudF9pb19vcChJT09iamVjdCBpb19vYmplY3QsIElPQ29u dGV4dCBpb19jb250ZXh0LCBJT09wIGlvX29wLAogCQkJCSAgIHVpbnQzMiBjbnQsIHVpbnQ2NCBi eXRlcykKQEAgLTE4NiwxMiArMjA4LDE2IEBAIHBnc3RhdF9jb3VudF9pb19vcF90aW1lKElPT2Jq ZWN0IGlvX29iamVjdCwgSU9Db250ZXh0IGlvX2NvbnRleHQsIElPT3AgaW9fb3AsCiAKIAkJaWYg KFBlbmRpbmdJT1N0YXRzLnBlbmRpbmdfaGlzdF90aW1lX2J1Y2tldHMgIT0gTlVMTCkKIAkJewor CQkJaW50CQkJb2Zmc2V0OworCiAJCQkvKgogCQkJICogY2FsY3VsYXRlIHRoZSBidWNrZXRfaW5k ZXggYmFzZWQgb24gbGF0ZW5jeSBpbiBuYW5vc2Vjb25kcwogCQkJICogKHVpbnQ2NCkKIAkJCSAq LwogCQkJYnVja2V0X2luZGV4ID0gZ2V0X2J1Y2tldF9pbmRleChJTlNUUl9USU1FX0dFVF9OQU5P U0VDKGlvX3RpbWUpKTsKLQkJCVBlbmRpbmdJT1N0YXRzLnBlbmRpbmdfaGlzdF90aW1lX2J1Y2tl dHNbaW9fb2JqZWN0XVtpb19jb250ZXh0XVtpb19vcF1bYnVja2V0X2luZGV4XSsrOworCisJCQlv ZmZzZXQgPSBQZW5kaW5nSU9TdGF0cy5wZW5kaW5nX2hpc3RfdGltZV9idWNrZXRzX29mZnNldHNb aW9fb2JqZWN0XVtpb19jb250ZXh0XVtpb19vcF07CisJCQlQZW5kaW5nSU9TdGF0cy5wZW5kaW5n X2hpc3RfdGltZV9idWNrZXRzW29mZnNldF1bYnVja2V0X2luZGV4XSsrOwogCQl9CiAKIAkJLyog QWRkIHRoZSBwZXItYmFja2VuZCBjb3VudCAqLwpAQCAtMjY0LDEwICsyOTAsMjMgQEAgcGdzdGF0 X2lvX2ZsdXNoX2NiKGJvb2wgbm93YWl0KQogCQkJCWJrdHlwZV9zaHN0YXRzLT50aW1lc1tpb19v YmplY3RdW2lvX2NvbnRleHRdW2lvX29wXSArPQogCQkJCQlJTlNUUl9USU1FX0dFVF9NSUNST1NF Qyh0aW1lKTsKIAorCQkJCS8qCisJCQkJICogSWYgdHJhY2tpbmcgSS9PIHN0YXRzLCBzYXZlIEkv TyBoaXN0b2dyYW1zIGZyb20gYmFja2VuZAorCQkJCSAqIGxvY2FsJ3MgUGVuZGluZ0lPU3RhdHMg YnkgdXNpbmcgaW5kaXJlY3Qgb2Zmc2V0cyBmcm9tIHRoZQorCQkJCSAqIHBlbmRpbmdfaGlzdF90 aW1lX2J1Y2tldHMgZHluYW1pYyBhcnJheSAoYWNjZXNzZWQgd2l0aAorCQkJCSAqIG9mZnNldHMg dG8gc2F2ZSBtZW1vcnkpIGludG8gc2hhcmVkIG1lbW9yeS4KKwkJCQkgKi8KIAkJCQlpZiAoUGVu ZGluZ0lPU3RhdHMucGVuZGluZ19oaXN0X3RpbWVfYnVja2V0cyAhPSBOVUxMKQogCQkJCQlmb3Ig KGludCBiID0gMDsgYiA8IFBHU1RBVF9JT19ISVNUX0JVQ0tFVFM7IGIrKykKLQkJCQkJCWJrdHlw ZV9zaHN0YXRzLT5oaXN0X3RpbWVfYnVja2V0c1tpb19vYmplY3RdW2lvX2NvbnRleHRdW2lvX29w XVtiXSArPQotCQkJCQkJCVBlbmRpbmdJT1N0YXRzLnBlbmRpbmdfaGlzdF90aW1lX2J1Y2tldHNb aW9fb2JqZWN0XVtpb19jb250ZXh0XVtpb19vcF1bYl07CisJCQkJCXsKKwkJCQkJCWludAkJCXBl bmRpbmdfb2ZmID0gUGVuZGluZ0lPU3RhdHMucGVuZGluZ19oaXN0X3RpbWVfYnVja2V0c19vZmZz ZXRzW2lvX29iamVjdF1baW9fY29udGV4dF1baW9fb3BdOworCisJCQkJCQlpZiAocGVuZGluZ19v ZmYgIT0gLTEpCisJCQkJCQl7CisJCQkJCQkJYmt0eXBlX3Noc3RhdHMtPmhpc3RfdGltZV9idWNr ZXRzW2lvX29iamVjdF1baW9fY29udGV4dF1baW9fb3BdW2JdICs9CisJCQkJCQkJCVBlbmRpbmdJ T1N0YXRzLnBlbmRpbmdfaGlzdF90aW1lX2J1Y2tldHNbcGVuZGluZ19vZmZdW2JdOworCQkJCQkJ fQorCQkJCQl9CiAJCQl9CiAJCX0KIAl9CkBAIC0yNzYsOCArMzE1LDE0IEBAIHBnc3RhdF9pb19m bHVzaF9jYihib29sIG5vd2FpdCkKIAogCUxXTG9ja1JlbGVhc2UoYmt0eXBlX2xvY2spOwogCi0J LyogQXZvaWQgb3ZlcndyaXRpbmcgbGF0ZW5jeSBidWNrZXRzIGFycmF5IHBvaW50ZXIgKi8KKwkv KgorCSAqIEF2b2lkIG92ZXJ3cml0aW5nIGhpc3RvZ3JhbSBsYXRlbmN5IGFycmF5ICh3aXRoIG9m ZnNldHMpIGFuZCBwb2ludGVyIHRvCisJICogZHluYW1pY2FsbHkgYWxsb2NhdGVkIG1lbW9yeQor CSAqLwogCW1lbXNldCgmUGVuZGluZ0lPU3RhdHMsIDAsIG9mZnNldG9mKFBnU3RhdF9QZW5kaW5n SU8sIHBlbmRpbmdfaGlzdF90aW1lX2J1Y2tldHMpKTsKKwlpZiAoUGVuZGluZ0lPU3RhdHMucGVu ZGluZ19oaXN0X3RpbWVfYnVja2V0cyAhPSBOVUxMKQorCQltZW1zZXQoUGVuZGluZ0lPU3RhdHMu cGVuZGluZ19oaXN0X3RpbWVfYnVja2V0cywgMCwKKwkJCSAgIFBlbmRpbmdJT1N0YXRzLnBlbmRp bmdfaGlzdF90aW1lX2J1Y2tldHNfc2l6ZSAqIHNpemVvZigqUGVuZGluZ0lPU3RhdHMucGVuZGlu Z19oaXN0X3RpbWVfYnVja2V0cykpOwogCiAJaGF2ZV9pb3N0YXRzID0gZmFsc2U7CiAKQEAgLTM0 OSw2ICszOTQsNDMgQEAgcGdzdGF0X2dldF9pb19vcF9uYW1lKElPT3AgaW9fb3ApCiAJcGdfdW5y ZWFjaGFibGUoKTsKIH0KIAordm9pZAorcGdzdGF0X2lvX2luaXRfYmFja2VuZF9jYih2b2lkKQor eworCS8qIEFsbG9jYXRlIEkvTyBsYXRlbmN5IGJ1Y2tldHMgb25seSBpZiB3ZSBhcmUgZ29pbmcg dG8gcG9wdWxhdGUgaXQgKi8KKwlpZiAodHJhY2tfaW9fdGltaW5nIHx8IHRyYWNrX3dhbF9pb190 aW1pbmcpCisJeworCQlpbnQJCQlhbGxvY19zeiwKKwkJCQkJaW9faGlzdG9ncmFtc191c2VkID0g MDsKKworCQlQZW5kaW5nSU9TdGF0cy5wZW5kaW5nX2hpc3RfdGltZV9idWNrZXRzX3NpemUgPSBw Z3N0YXRfYmt0eXBlX2NvdW50X3BvdGVudGlhbGx5X3VzZWQoTXlCYWNrZW5kVHlwZSk7CisJCWFs bG9jX3N6ID0gUGVuZGluZ0lPU3RhdHMucGVuZGluZ19oaXN0X3RpbWVfYnVja2V0c19zaXplICog c2l6ZW9mKCpQZW5kaW5nSU9TdGF0cy5wZW5kaW5nX2hpc3RfdGltZV9idWNrZXRzKTsKKwkJUGVu ZGluZ0lPU3RhdHMucGVuZGluZ19oaXN0X3RpbWVfYnVja2V0cyA9IE1lbW9yeUNvbnRleHRBbGxv Y1plcm8oVG9wTWVtb3J5Q29udGV4dCwgYWxsb2Nfc3opOworCisJCWZvciAoaW50IGlvX29iamVj dCA9IDA7IGlvX29iamVjdCA8IElPT0JKRUNUX05VTV9UWVBFUzsgaW9fb2JqZWN0KyspCisJCXsK KwkJCWZvciAoaW50IGlvX2NvbnRleHQgPSAwOyBpb19jb250ZXh0IDwgSU9DT05URVhUX05VTV9U WVBFUzsgaW9fY29udGV4dCsrKQorCQkJeworCQkJCWZvciAoaW50IGlvX29wID0gMDsgaW9fb3Ag PCBJT09QX05VTV9UWVBFUzsgaW9fb3ArKykKKwkJCQl7CisJCQkJCWlmIChwZ3N0YXRfdHJhY2tz X2lvX29wKE15QmFja2VuZFR5cGUsIGlvX29iamVjdCwgaW9fY29udGV4dCwgaW9fb3ApKQorCQkJ CQl7CisJCQkJCQlBc3NlcnQoaW9faGlzdG9ncmFtc191c2VkIDw9IFBlbmRpbmdJT1N0YXRzLnBl bmRpbmdfaGlzdF90aW1lX2J1Y2tldHNfc2l6ZSk7CisKKwkJCQkJCVBlbmRpbmdJT1N0YXRzLnBl bmRpbmdfaGlzdF90aW1lX2J1Y2tldHNfb2Zmc2V0c1tpb19vYmplY3RdW2lvX2NvbnRleHRdW2lv X29wXSA9CisJCQkJCQkJaW9faGlzdG9ncmFtc191c2VkKys7CisJCQkJCX0KKwkJCQkJZWxzZQor CQkJCQkJUGVuZGluZ0lPU3RhdHMucGVuZGluZ19oaXN0X3RpbWVfYnVja2V0c19vZmZzZXRzW2lv X29iamVjdF1baW9fY29udGV4dF1baW9fb3BdID0gLTE7CisJCQkJfQorCQkJfQorCQl9CisJfQor CWVsc2UKKwkJUGVuZGluZ0lPU3RhdHMucGVuZGluZ19oaXN0X3RpbWVfYnVja2V0cyA9IE5VTEw7 CisKK30KKwogdm9pZAogcGdzdGF0X2lvX2luaXRfc2htZW1fY2Iodm9pZCAqc3RhdHMpCiB7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmlu ZGV4IDM0ZmQ5M2Y4NmRjLi45ODQ5MTRlNjliOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdz dGF0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTM1MiwxMiArMzUyLDIwIEBAIHR5 cGVkZWYgc3RydWN0IFBnU3RhdF9QZW5kaW5nSU8KIAlpbnN0cl90aW1lCXBlbmRpbmdfdGltZXNb SU9PQkpFQ1RfTlVNX1RZUEVTXVtJT0NPTlRFWFRfTlVNX1RZUEVTXVtJT09QX05VTV9UWVBFU107 CiAKIAkvKgotCSAqIER5bmFtaWNhbGx5IGFsbG9jYXRlZCBhcnJheSBvZgotCSAqIFtJT09CSkVD VF9OVU1fVFlQRVNdW0lPQ09OVEVYVF9OVU1fVFlQRVNdCi0JICogW0lPT1BfTlVNX1RZUEVTXVtQ R1NUQVRfSU9fSElTVF9CVUNLRVRTXSBvbmx5IHdpdGggdHJhY2tfaW9fdGltaW5ncwotCSAqIHRy dWUuCisJICogRHluYW1pY2FsbHkgYWxsb2NhdGVkIGFycmF5IGZvciBwZ19zdGF0X2lvX2hpc3Rv Z3JhbXMgb25seSB3aGVuCisJICogdHJhY2tfaW9fdGltaW5ncyBpcyB0cnVlLiBwZW5kaW5nX2hp c3RfdGltZV9idWNrZXRzX29mZnNldHMgaXMganVzdCBhbgorCSAqIG9mZnNldCB3aXRoaW4gcGVu ZGluZ19oaXN0X3RpbWVfYnVja2V0cyB0byBhdm9pZCB1c2luZyB1bm5lY2Vzc2FyeQorCSAqIG1l bW9yeS4KIAkgKi8KLQl1aW50NjQJCSgqcGVuZGluZ19oaXN0X3RpbWVfYnVja2V0cylbSU9DT05U RVhUX05VTV9UWVBFU11bSU9PUF9OVU1fVFlQRVNdW1BHU1RBVF9JT19ISVNUX0JVQ0tFVFNdOwor CXVpbnQ2NAkJKCpwZW5kaW5nX2hpc3RfdGltZV9idWNrZXRzKVtQR1NUQVRfSU9fSElTVF9CVUNL RVRTXTsKKwl1aW50NjQJCXBlbmRpbmdfaGlzdF90aW1lX2J1Y2tldHNfb2Zmc2V0c1tJT09CSkVD VF9OVU1fVFlQRVNdW0lPQ09OVEVYVF9OVU1fVFlQRVNdW0lPT1BfTlVNX1RZUEVTXTsKKworCS8q CisJICogQ2FjaGUgaG93IG11Y2ggaGlzdG9ncmFtcyB3ZSBoYXZlIGFsbG9jYXRlZCB0byBhdm9p ZCByZXBldGFibHkgY2FsbGluZworCSAqIHBnc3RhdF9ia3R5cGVfY291bnRfcG90ZW50aWFsbHlf dXNlZChNeUJhY2tlbmRUeXBlKSBmcm9tCisJICogcGdzdGF0X2lvX2ZsdXNoX2NiKCkKKwkgKi8K KwlpbnQJCQlwZW5kaW5nX2hpc3RfdGltZV9idWNrZXRzX3NpemU7CiB9IFBnU3RhdF9QZW5kaW5n SU87CiAKIGV4dGVybiBQZ1N0YXRfUGVuZGluZ0lPIFBlbmRpbmdJT1N0YXRzOwpAQCAtNjQ1LDYg KzY1Myw3IEBAIGV4dGVybiBQZ1N0YXRfQ2hlY2twb2ludGVyU3RhdHMgKnBnc3RhdF9mZXRjaF9z dGF0X2NoZWNrcG9pbnRlcih2b2lkKTsKIAogZXh0ZXJuIGJvb2wgcGdzdGF0X2JrdHlwZV9pb19z dGF0c192YWxpZChQZ1N0YXRfQmt0eXBlSU8gKmJhY2tlbmRfaW8sCiAJCQkJCQkJCQkJIEJhY2tl bmRUeXBlIGJrdHlwZSk7CitleHRlcm4gaW50CXBnc3RhdF9ia3R5cGVfY291bnRfcG90ZW50aWFs bHlfdXNlZChCYWNrZW5kVHlwZSBia3R5cGUpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X2lv X29wKElPT2JqZWN0IGlvX29iamVjdCwgSU9Db250ZXh0IGlvX2NvbnRleHQsCiAJCQkJCQkJICAg SU9PcCBpb19vcCwgdWludDMyIGNudCwgdWludDY0IGJ5dGVzKTsKIGV4dGVybiBpbnN0cl90aW1l IHBnc3RhdF9wcmVwYXJlX2lvX3RpbWUoYm9vbCB0cmFja19pb19ndWMpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvcGdzdGF0X2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS91dGlscy9w Z3N0YXRfaW50ZXJuYWwuaAppbmRleCBhM2NlOGIwNDcyMy4uZmNhZjIxZGI1NzQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oCkBAIC03NTksNiArNzU5LDcgQEAgZXh0ZXJuIHZvaWQg cGdzdGF0X2Z1bmN0aW9uX3Jlc2V0X3RpbWVzdGFtcF9jYihQZ1N0YXRTaGFyZWRfQ29tbW9uICpo ZWFkZXIsIFRpbWUKIGV4dGVybiB2b2lkIHBnc3RhdF9mbHVzaF9pbyhib29sIG5vd2FpdCk7CiAK IGV4dGVybiBib29sIHBnc3RhdF9pb19mbHVzaF9jYihib29sIG5vd2FpdCk7CitleHRlcm4gdm9p ZCBwZ3N0YXRfaW9faW5pdF9iYWNrZW5kX2NiKHZvaWQpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2lv X2luaXRfc2htZW1fY2Iodm9pZCAqc3RhdHMpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2lvX3Jlc2V0 X2FsbF9jYihUaW1lc3RhbXBUeiB0cyk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfaW9fc25hcHNob3Rf Y2Iodm9pZCk7Ci0tIAoyLjQzLjAKCg== --00000000000076b73b06523bb516 Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0003-Lower-pg_stat_io_histogram-shared-memory-use-by-.patch" Content-Disposition: attachment; filename="v11-0003-Lower-pg_stat_io_histogram-shared-memory-use-by-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpdt55l92 RnJvbSAzZGQ5NmFlNzE2NGUyOGY4MDJmYTQ0YzMxMWIxMjNmZGYzMWUyMjNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXYXJ0YWsgPGpha3ViLndhcnRha0BlbnRlcnByaXNl ZGIuY29tPgpEYXRlOiBGcmksIDggTWF5IDIwMjYgMDk6MTk6NDkgKzAyMDAKU3ViamVjdDogW1BB VENIIHYxMSAzLzNdIExvd2VyIHBnX3N0YXRfaW9faGlzdG9ncmFtIHNoYXJlZCBtZW1vcnkgdXNl IGJ5IHVzaW5nCiBhcnJheSB3aXRoIGluZGlyZWN0IG9mZnNldHMuCgpXZSB1c2UgcGdzdGF0X3Ry YWNrX2lvXyooKSBmYW1pbHkgb2YgZnVuY3Rpb25zIHRvIGRlcml2ZSB0aGUgbGVuZ3RoIG9mIHN0 YXRpYwphcnJheSB0aGF0IGlzIGFsbG9jYXRlZCBpbiBzaGFyZWQgbWVtb3J5IHJlZ2lvbiBkdXJp bmcgc3RhcnR1cC4gQXMgdGhlIG51bWJlcgpvZiB2YWxpZCBjb21iaW5hdGlvbnMgb2YgYmFja2Vu ZCB0eXBlcyB2cyBJL08gb2JqZWN0L2NvbnRleHQvb3BlcmF0aW9ucyBpcwpjb21pbmcgZnJvbSBz ZW1pLXJ1bnRpbWUgcGdzdGF0X2lvX2dldF9zdW1fdHJhY2tlZCgpIGZ1bmN0aW9uLCBpdCBjYW5u b3QgYmUKcHJlcHJvY2Vzc2VkLCBzbyB3ZSB3b3VsZCBuZWVkIHRvIGNvbWUgdXAgd2l0aCAjZGVm aW5lIFBHU1RBVF9JT19ISVNUX0JVQ0tFVF9TTE9UUwpzb21laG93LiBJbiBvcmRlciB0byBkbyB0 aGF0IC0gYW5kIGF2b2lkIHRoYXQgQyBsaW1pdGF0aW9ucyAobGFjayBvZgpjb25zdGV4cHIpIC0g d2UgY291bGQgcHJlY2FsY3VsYXRlIChpbiB0aGUgYnVpbGQgc3lzdGVtKSB0aGUgc2l6ZSBvZgpz dGF0aWMgYXJyYXkgYW5kIGdlbmVyYXRlIC5oIGluY2x1ZGUgdGhhdCB3b3VsZCBiZSBpbmNsdWRl ZCBieSBwZ3N0YXQuaCwKaG93ZXZlciBpdCBhcHBlYXJzIHRoYXQgd291bGQgYmUgaXQgaGFyZGx5 IGNyb3NzLXBvcnRhYmxlIGFuZCBoYXJkbHkKY3Jvc3MtY29tcGlsYWJsZS4gSW5zdGVhZCBvZiBk b2luZyB0aGF0LCB3ZSBkeW5hbWljYWxseSBhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5CmZvciBJTyBo aXN0b3JncmFtcyBkdXJpbmcgc3RhcnR1cC4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXQuYyAgICAgICB8ICA0MiArKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L3Bnc3RhdF9pby5jICAgIHwgMTY0ICsrKysrKysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zaG1lbS5jIHwgIDE1ICsrCiBzcmMvYmFja2VuZC91dGls cy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAgICB8ICAyMCArKy0KIHNyYy9pbmNsdWRlL3Bnc3RhdC5o ICAgICAgICAgICAgICAgICAgICAgIHwgIDI2ICsrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMjQxIGlu c2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3Bnc3RhdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 LmMKaW5kZXggN2M1OTc5MzI2NzEuLjBiZDU5OTkyZjRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXQuYwpAQCAtNDQzLDcgKzQ0MywxMyBAQCBzdGF0aWMgY29uc3QgUGdTdGF0X0tpbmRJ bmZvIHBnc3RhdF9raW5kX2J1aWx0aW5faW5mb3NbUEdTVEFUX0tJTkRfQlVJTFRJTl9TSVpFXQog CQkuc25hcHNob3RfY3RsX29mZiA9IG9mZnNldG9mKFBnU3RhdF9TbmFwc2hvdCwgaW8pLAogCQku c2hhcmVkX2N0bF9vZmYgPSBvZmZzZXRvZihQZ1N0YXRfU2htZW1Db250cm9sLCBpbyksCiAJCS5z aGFyZWRfZGF0YV9vZmYgPSBvZmZzZXRvZihQZ1N0YXRTaGFyZWRfSU8sIHN0YXRzKSwKLQkJLnNo YXJlZF9kYXRhX2xlbiA9IHNpemVvZigoKFBnU3RhdFNoYXJlZF9JTyAqKSAwKS0+c3RhdHMpLAor CisJCS8qCisJCSAqIERvIG5vdCB3cml0ZSBldmVyeXRoaW5nIHVzaW5nIHRoaXMgLnNoYXJlZF9k YXRhX2xlbiwgYXMgdGhlIElPCisJCSAqIGhpc3RvZ3JhbSBiYWNraW5nIHN0b3JlIGlzIGhhbmRs ZWQgYnkgc3BlY2lhbC1jYXNlIChhcyBpdCBpcworCQkgKiBkeW5hbWljKSBpbiBwZ3N0YXRfd3Jp dGVfc3RhdHNmaWxlKCkgLyBwZ3N0YXRfcmVhZF9zdGF0c2ZpbGUoKS4KKwkJICovCisJCS5zaGFy ZWRfZGF0YV9sZW4gPSBvZmZzZXRvZihQZ1N0YXRfSU8sIGhpc3RfdGltZV9idWNrZXRzX3Nsb3Rf Y291bnQpLAogCiAJCS5pbml0X2JhY2tlbmRfY2IgPSBwZ3N0YXRfaW9faW5pdF9iYWNrZW5kX2Ni LAogCQkuZmx1c2hfc3RhdGljX2NiID0gcGdzdGF0X2lvX2ZsdXNoX2NiLApAQCAtMTY4NSw2ICsx NjkxLDIxIEBAIHBnc3RhdF93cml0ZV9zdGF0c2ZpbGUodm9pZCkKIAkJZnB1dGMoUEdTVEFUX0ZJ TEVfRU5UUllfRklYRUQsIGZwb3V0KTsKIAkJcGdzdGF0X3dyaXRlX2NodW5rX3MoZnBvdXQsICZr aW5kKTsKIAkJcGdzdGF0X3dyaXRlX2NodW5rKGZwb3V0LCBwdHIsIGluZm8tPnNoYXJlZF9kYXRh X2xlbik7CisKKwkJLyoKKwkJICogUEdTVEFUX0tJTkRfSU8gaGFzIGEgZHluYW1pY2FsbHktc2l6 ZWQgaGlzdG9ncmFtIHRoYXQgbGl2ZXMgb3V0c2lkZQorCQkgKiB0aGUgc2hhcmVkX2RhdGFfbGVu IHJlZ2lvbi4gVGhpcyBhc3N1bWVzIHRoYXQgUEdTVEFUX0ZJTEVfRk9STUFUX0lECisJCSAqIHdv dWxkIGJlIGJ1bXBlZCBlYWNoIHRpbWUgdGhhdCBwZ3N0YXRfdHJhY2tfaW8qKCkgbG9naWMgaXMg YWx0ZXJlZC4KKwkJICovCisJCWlmIChraW5kID09IFBHU1RBVF9LSU5EX0lPKQorCQl7CisJCQlQ Z1N0YXRfSU8gICppbyA9IHBnU3RhdExvY2FsLnNuYXBzaG90LmlvOworCisJCQlwZ3N0YXRfd3Jp dGVfY2h1bmsoZnBvdXQsIGlvLT5oaXN0X3RpbWVfYnVja2V0c19zbG90cywKKwkJCQkJCQkgICAo c2l6ZV90KSBpby0+aGlzdF90aW1lX2J1Y2tldHNfc2xvdF9jb3VudCAqCisJCQkJCQkJICAgUEdT VEFUX0lPX0hJU1RfQlVDS0VUUyAqCisJCQkJCQkJICAgc2l6ZW9mKHVpbnQ2NCkpOworCQl9CiAJ fQogCiAJLyoKQEAgLTE5MzAsNiArMTk1MSwyNSBAQCBwZ3N0YXRfcmVhZF9zdGF0c2ZpbGUodm9p ZCkKIAkJCQkJCWdvdG8gZXJyb3I7CiAJCQkJCX0KIAorCQkJCQkvKgorCQkJCQkgKiBQR1NUQVRf S0lORF9JTyBoYXMgYWxzbyBzZW1pLWR5bmFtaWMgaGlzdG9ncmFtIGFycmF5CisJCQkJCSAqIGFw cGVuZGVkIGFmdGVyIHRoZSBtYWluIGNodW5rLiBCeSBub3csIHRoZQorCQkJCQkgKiBTdGF0c1No bWVtSW5pdCgpIHByZXBhcmVkIHRoZSBtZW1vcnkuCisJCQkJCSAqLworCQkJCQlpZiAoa2luZCA9 PSBQR1NUQVRfS0lORF9JTykKKwkJCQkJeworCQkJCQkJUGdTdGF0X0lPICAqaW8gPSAmc2htZW0t PmlvLnN0YXRzOworCisJCQkJCQlpZiAoIXBnc3RhdF9yZWFkX2NodW5rKGZwaW4sIGlvLT5oaXN0 X3RpbWVfYnVja2V0c19zbG90cywKKwkJCQkJCQkJCQkJICAgKHNpemVfdCkgaW8tPmhpc3RfdGlt ZV9idWNrZXRzX3Nsb3RfY291bnQgKgorCQkJCQkJCQkJCQkgICBQR1NUQVRfSU9fSElTVF9CVUNL RVRTICoKKwkJCQkJCQkJCQkJICAgc2l6ZW9mKHVpbnQ2NCkpKQorCQkJCQkJeworCQkJCQkJCWVs b2coV0FSTklORywgImNvdWxkIG5vdCByZWFkIHBnc3RhdF9pbyBoaXN0b2dyYW0gYmFja2luZyBz dG9yZSIpOworCQkJCQkJCWdvdG8gZXJyb3I7CisJCQkJCQl9CisJCQkJCX0KKwogCQkJCQlicmVh azsKIAkJCQl9CiAJCQljYXNlIFBHU1RBVF9GSUxFX0VOVFJZX0hBU0g6CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3Bnc3RhdF9pby5jCmluZGV4IDRjNjU1ZDM4Yjk3Li5hZDgwOTM0MjBlZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKQEAgLTIwLDYgKzIwLDcgQEAKICNp bmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGls cy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1l bS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcGdzdGF0 X2ludGVybmFsLmgiCiAKQEAgLTIxMCw2ICsyMTEsOCBAQCBwZ3N0YXRfY291bnRfaW9fb3BfdGlt ZShJT09iamVjdCBpb19vYmplY3QsIElPQ29udGV4dCBpb19jb250ZXh0LCBJT09wIGlvX29wLAog CQl7CiAJCQlpbnQJCQlvZmZzZXQ7CiAKKwkJCUFzc2VydCh0cmFja19pb190aW1pbmcgfHwgdHJh Y2tfd2FsX2lvX3RpbWluZyk7CisKIAkJCS8qCiAJCQkgKiBjYWxjdWxhdGUgdGhlIGJ1Y2tldF9p bmRleCBiYXNlZCBvbiBsYXRlbmN5IGluIG5hbm9zZWNvbmRzCiAJCQkgKiAodWludDY0KQpAQCAt MjE3LDYgKzIyMCwxMCBAQCBwZ3N0YXRfY291bnRfaW9fb3BfdGltZShJT09iamVjdCBpb19vYmpl Y3QsIElPQ29udGV4dCBpb19jb250ZXh0LCBJT09wIGlvX29wLAogCQkJYnVja2V0X2luZGV4ID0g Z2V0X2J1Y2tldF9pbmRleChJTlNUUl9USU1FX0dFVF9OQU5PU0VDKGlvX3RpbWUpKTsKIAogCQkJ b2Zmc2V0ID0gUGVuZGluZ0lPU3RhdHMucGVuZGluZ19oaXN0X3RpbWVfYnVja2V0c19vZmZzZXRz W2lvX29iamVjdF1baW9fY29udGV4dF1baW9fb3BdOworCisJCQkvKiBkb2VzIG9mZnNldCBwb2lu dHMgdG8gdmFsaWQgc2xvdD8gKi8KKwkJCUFzc2VydChvZmZzZXQgPj0gMCAmJiBvZmZzZXQgPCBQ ZW5kaW5nSU9TdGF0cy5wZW5kaW5nX2hpc3RfdGltZV9idWNrZXRzX3NpemUpOworCiAJCQlQZW5k aW5nSU9TdGF0cy5wZW5kaW5nX2hpc3RfdGltZV9idWNrZXRzW29mZnNldF1bYnVja2V0X2luZGV4 XSsrOwogCQl9CiAKQEAgLTI1OCw2ICsyNjUsNyBAQCBwZ3N0YXRfaW9fZmx1c2hfY2IoYm9vbCBu b3dhaXQpCiB7CiAJTFdMb2NrCSAgICpia3R5cGVfbG9jazsKIAlQZ1N0YXRfQmt0eXBlSU8gKmJr dHlwZV9zaHN0YXRzOworCVBnU3RhdF9JTyAgKmJrX2lvOwogCiAJaWYgKCFoYXZlX2lvc3RhdHMp CiAJCXJldHVybiBmYWxzZTsKQEAgLTI2NSw2ICsyNzMsNyBAQCBwZ3N0YXRfaW9fZmx1c2hfY2Io Ym9vbCBub3dhaXQpCiAJYmt0eXBlX2xvY2sgPSAmcGdTdGF0TG9jYWwuc2htZW0tPmlvLmxvY2tz W015QmFja2VuZFR5cGVdOwogCWJrdHlwZV9zaHN0YXRzID0KIAkJJnBnU3RhdExvY2FsLnNobWVt LT5pby5zdGF0cy5zdGF0c1tNeUJhY2tlbmRUeXBlXTsKKwlia19pbyA9ICZwZ1N0YXRMb2NhbC5z aG1lbS0+aW8uc3RhdHM7CiAKIAlpZiAoIW5vd2FpdCkKIAkJTFdMb2NrQWNxdWlyZShia3R5cGVf bG9jaywgTFdfRVhDTFVTSVZFKTsKQEAgLTI5NywxNiArMzA2LDIzIEBAIHBnc3RhdF9pb19mbHVz aF9jYihib29sIG5vd2FpdCkKIAkJCQkgKiBvZmZzZXRzIHRvIHNhdmUgbWVtb3J5KSBpbnRvIHNo YXJlZCBtZW1vcnkuCiAJCQkJICovCiAJCQkJaWYgKFBlbmRpbmdJT1N0YXRzLnBlbmRpbmdfaGlz dF90aW1lX2J1Y2tldHMgIT0gTlVMTCkKLQkJCQkJZm9yIChpbnQgYiA9IDA7IGIgPCBQR1NUQVRf SU9fSElTVF9CVUNLRVRTOyBiKyspCi0JCQkJCXsKLQkJCQkJCWludAkJCXBlbmRpbmdfb2ZmID0g UGVuZGluZ0lPU3RhdHMucGVuZGluZ19oaXN0X3RpbWVfYnVja2V0c19vZmZzZXRzW2lvX29iamVj dF1baW9fY29udGV4dF1baW9fb3BdOworCQkJCXsKKwkJCQkJaW50CQkJYmt0eXBlX3Noc3RhdHNf b2ZmID0gYmt0eXBlX3Noc3RhdHMtPmhpc3RfdGltZV9idWNrZXRzX29mZnNldHNbaW9fb2JqZWN0 XVtpb19jb250ZXh0XVtpb19vcF07CisJCQkJCWludAkJCXBlbmRpbmdfb2ZmID0gUGVuZGluZ0lP U3RhdHMucGVuZGluZ19oaXN0X3RpbWVfYnVja2V0c19vZmZzZXRzW2lvX29iamVjdF1baW9fY29u dGV4dF1baW9fb3BdOwogCi0JCQkJCQlpZiAocGVuZGluZ19vZmYgIT0gLTEpCi0JCQkJCQl7Ci0J CQkJCQkJYmt0eXBlX3Noc3RhdHMtPmhpc3RfdGltZV9idWNrZXRzW2lvX29iamVjdF1baW9fY29u dGV4dF1baW9fb3BdW2JdICs9Ci0JCQkJCQkJCVBlbmRpbmdJT1N0YXRzLnBlbmRpbmdfaGlzdF90 aW1lX2J1Y2tldHNbcGVuZGluZ19vZmZdW2JdOwotCQkJCQkJfQotCQkJCQl9CisJCQkJCUFzc2Vy dCh0cmFja19pb190aW1pbmcgfHwgdHJhY2tfd2FsX2lvX3RpbWluZyk7CisKKwkJCQkJLyoKKwkJ CQkJICogLTEgbWVhbnMgaGVyZSB0aGF0IHN1Y2ggbWFwcGluZyBkb2Vzbid0IGhhdmUgYSBzbG90 CisJCQkJCSAqIChiYXNlZCBvbiBwZ3N0YXRfdHJhY2tfaW9fKigpKS4KKwkJCQkJICovCisJCQkJ CWlmIChia3R5cGVfc2hzdGF0c19vZmYgPT0gLTEgfHwgcGVuZGluZ19vZmYgPT0gLTEpCisJCQkJ CQljb250aW51ZTsKKworCQkJCQlmb3IgKGludCBiID0gMDsgYiA8IFBHU1RBVF9JT19ISVNUX0JV Q0tFVFM7IGIrKykKKwkJCQkJCWJrX2lvLT5oaXN0X3RpbWVfYnVja2V0c19zbG90c1tia3R5cGVf c2hzdGF0c19vZmZdW2JdICs9CisJCQkJCQkJUGVuZGluZ0lPU3RhdHMucGVuZGluZ19oaXN0X3Rp bWVfYnVja2V0c1twZW5kaW5nX29mZl1bYl07CisJCQkJfQogCQkJfQogCQl9CiAJfQpAQCAtNDE1 LDcgKzQzMSw3IEBAIHBnc3RhdF9pb19pbml0X2JhY2tlbmRfY2Iodm9pZCkKIAkJCQl7CiAJCQkJ CWlmIChwZ3N0YXRfdHJhY2tzX2lvX29wKE15QmFja2VuZFR5cGUsIGlvX29iamVjdCwgaW9fY29u dGV4dCwgaW9fb3ApKQogCQkJCQl7Ci0JCQkJCQlBc3NlcnQoaW9faGlzdG9ncmFtc191c2VkIDw9 IFBlbmRpbmdJT1N0YXRzLnBlbmRpbmdfaGlzdF90aW1lX2J1Y2tldHNfc2l6ZSk7CisJCQkJCQlB c3NlcnQoaW9faGlzdG9ncmFtc191c2VkIDwgUGVuZGluZ0lPU3RhdHMucGVuZGluZ19oaXN0X3Rp bWVfYnVja2V0c19zaXplKTsKIAogCQkJCQkJUGVuZGluZ0lPU3RhdHMucGVuZGluZ19oaXN0X3Rp bWVfYnVja2V0c19vZmZzZXRzW2lvX29iamVjdF1baW9fY29udGV4dF1baW9fb3BdID0KIAkJCQkJ CQlpb19oaXN0b2dyYW1zX3VzZWQrKzsKQEAgLTQyOCwxMiArNDQ0LDEyIEBAIHBnc3RhdF9pb19p bml0X2JhY2tlbmRfY2Iodm9pZCkKIAl9CiAJZWxzZQogCQlQZW5kaW5nSU9TdGF0cy5wZW5kaW5n X2hpc3RfdGltZV9idWNrZXRzID0gTlVMTDsKLQogfQogCiB2b2lkCiBwZ3N0YXRfaW9faW5pdF9z aG1lbV9jYih2b2lkICpzdGF0cykKIHsKKwlpbnQJCQloaXN0b2dyYW1fc2xvdHMgPSAwOwogCVBn U3RhdFNoYXJlZF9JTyAqc3RhdF9zaG1lbSA9IChQZ1N0YXRTaGFyZWRfSU8gKikgc3RhdHM7CiAK IAlmb3IgKGludCBpID0gMDsgaSA8IEJBQ0tFTkRfTlVNX1RZUEVTOyBpKyspCkBAIC00NDEsMjYg KzQ1Nyw3OSBAQCBwZ3N0YXRfaW9faW5pdF9zaG1lbV9jYih2b2lkICpzdGF0cykKIAogCS8qIHRo aXMgbWlnaHQgZW5kIHVwIGJlaW5nIGxhemlseSBhbGxvY2F0ZWQgaW4gcGdzdGF0X2lvX3NuYXBz aG90X2NiKCkgKi8KIAlwZ1N0YXRMb2NhbC5zbmFwc2hvdC5pbyA9IE5VTEw7CisKKwkvKgorCSAq IEVzdGFibGlzaCBpbmRpcmVjdCBtYXBwaW5nIGZyb20KKwkgKiBQZ1N0YXRfQmt0eXBlSU8uaGlz dF90aW1lX2J1Y2tldHNfb2Zmc2V0c1tdW11bXSB0bworCSAqIFBnU3RhdF9JTy5oaXN0X3RpbWVf YnVja2V0c19zbG90c1t4XQorCSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgQkFDS0VORF9OVU1f VFlQRVM7IGkrKykKKwl7CisJCWZvciAoaW50IGlvX29iamVjdCA9IDA7IGlvX29iamVjdCA8IElP T0JKRUNUX05VTV9UWVBFUzsgaW9fb2JqZWN0KyspCisJCXsKKwkJCWZvciAoaW50IGlvX2NvbnRl eHQgPSAwOyBpb19jb250ZXh0IDwgSU9DT05URVhUX05VTV9UWVBFUzsgaW9fY29udGV4dCsrKQor CQkJeworCQkJCWZvciAoaW50IGlvX29wID0gMDsgaW9fb3AgPCBJT09QX05VTV9UWVBFUzsgaW9f b3ArKykKKwkJCQl7CisJCQkJCWlmIChwZ3N0YXRfdHJhY2tzX2lvX29wKGksIGlvX29iamVjdCwg aW9fY29udGV4dCwgaW9fb3ApKQorCQkJCQl7CisJCQkJCQlzdGF0X3NobWVtLT5zdGF0cy5zdGF0 c1tpXS5oaXN0X3RpbWVfYnVja2V0c19vZmZzZXRzW2lvX29iamVjdF1baW9fY29udGV4dF1baW9f b3BdID0KKwkJCQkJCQloaXN0b2dyYW1fc2xvdHMrKzsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJ CQlzdGF0X3NobWVtLT5zdGF0cy5zdGF0c1tpXS5oaXN0X3RpbWVfYnVja2V0c19vZmZzZXRzW2lv X29iamVjdF1baW9fY29udGV4dF1baW9fb3BdID0KKwkJCQkJCQktMTsKKwkJCQl9CisJCQl9CisJ CX0KKwl9CisKKwkvKgorCSAqIFNhbml0eSBjaGVjazogdGhlIG9mZnNldCB0YWJsZSB3ZSBqdXN0 IHByb2R1Y2VkIG11c3QgdXNlIGV4YWN0bHkgdGhlCisJICogbnVtYmVyIG9mIHNsb3RzIFN0YXRz U2htZW1Jbml0KCkgcmVzZXJ2ZWQuICBCb3RoIGNvbWUgZnJvbSB0aGUgc2FtZQorCSAqIHBnc3Rh dF90cmFja3NfaW9fKigpIHJ1bGVzLCBzbyBhIG1pc21hdGNoIHdvdWxkIGluZGljYXRlIGEgYnVn LgorCSAqLworCUFzc2VydChoaXN0b2dyYW1fc2xvdHMgPT0gc3RhdF9zaG1lbS0+c3RhdHMuaGlz dF90aW1lX2J1Y2tldHNfc2xvdF9jb3VudCk7CiB9CiAKIHZvaWQKIHBnc3RhdF9pb19yZXNldF9h bGxfY2IoVGltZXN0YW1wVHogdHMpCiB7CisJUGdTdGF0X0lPICAqaW9fc3RhdHMgPSAmcGdTdGF0 TG9jYWwuc2htZW0tPmlvLnN0YXRzOworCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBCQUNLRU5EX05V TV9UWVBFUzsgaSsrKQogCXsKIAkJTFdMb2NrCSAgICpia3R5cGVfbG9jayA9ICZwZ1N0YXRMb2Nh bC5zaG1lbS0+aW8ubG9ja3NbaV07Ci0JCVBnU3RhdF9Ca3R5cGVJTyAqYmt0eXBlX3Noc3RhdHMg PSAmcGdTdGF0TG9jYWwuc2htZW0tPmlvLnN0YXRzLnN0YXRzW2ldOworCQlQZ1N0YXRfQmt0eXBl SU8gKmJrdHlwZV9zaHN0YXRzID0gJmlvX3N0YXRzLT5zdGF0c1tpXTsKIAogCQlMV0xvY2tBY3F1 aXJlKGJrdHlwZV9sb2NrLCBMV19FWENMVVNJVkUpOwogCiAJCS8qCiAJCSAqIFVzZSB0aGUgbG9j ayBpbiB0aGUgZmlyc3QgQmFja2VuZFR5cGUncyBQZ1N0YXRfQmt0eXBlSU8gdG8gcHJvdGVjdAot CQkgKiB0aGUgcmVzZXQgdGltZXN0YW1wIGFzIHdlbGwuCisJCSAqIHRoZSByZXNldCB0aW1lc3Rh bXAuCiAJCSAqLwogCQlpZiAoaSA9PSAwKQotCQkJcGdTdGF0TG9jYWwuc2htZW0tPmlvLnN0YXRz LnN0YXRfcmVzZXRfdGltZXN0YW1wID0gdHM7CisJCQlpb19zdGF0cy0+c3RhdF9yZXNldF90aW1l c3RhbXAgPSB0czsKIAotCQltZW1zZXQoYmt0eXBlX3Noc3RhdHMsIDAsIHNpemVvZigqYmt0eXBl X3Noc3RhdHMpKTsKKwkJLyogUmVzZXQgdGhpcyBCYWNrZW5kVHlwZSdzIGhpc3RvZ3JhbSBzbG90 cyAqLworCQlmb3IgKGludCBpb19vYmplY3QgPSAwOyBpb19vYmplY3QgPCBJT09CSkVDVF9OVU1f VFlQRVM7IGlvX29iamVjdCsrKQorCQl7CisJCQlmb3IgKGludCBpb19jb250ZXh0ID0gMDsgaW9f Y29udGV4dCA8IElPQ09OVEVYVF9OVU1fVFlQRVM7IGlvX2NvbnRleHQrKykKKwkJCXsKKwkJCQlm b3IgKGludCBpb19vcCA9IDA7IGlvX29wIDwgSU9PUF9OVU1fVFlQRVM7IGlvX29wKyspCisJCQkJ eworCQkJCQlpbnQJCQlvZmYgPSBia3R5cGVfc2hzdGF0cy0+aGlzdF90aW1lX2J1Y2tldHNfb2Zm c2V0c1tpb19vYmplY3RdW2lvX2NvbnRleHRdW2lvX29wXTsKKworCQkJCQlpZiAob2ZmID09IC0x KQorCQkJCQkJY29udGludWU7CisJCQkJCW1lbXNldChpb19zdGF0cy0+aGlzdF90aW1lX2J1Y2tl dHNfc2xvdHNbb2ZmXSwgMCwKKwkJCQkJCSAgIHNpemVvZihpb19zdGF0cy0+aGlzdF90aW1lX2J1 Y2tldHNfc2xvdHNbb2ZmXSkpOworCQkJCX0KKwkJCX0KKwkJfQorCisJCS8qIEF2b2lkIHJlc2V0 dGluZyBvdXIgaW5kaXJlY3QgbWFwcGluZyBvZmZzZXRzICovCisJCW1lbXNldChia3R5cGVfc2hz dGF0cywgMCwgb2Zmc2V0b2YoUGdTdGF0X0JrdHlwZUlPLCBoaXN0X3RpbWVfYnVja2V0c19vZmZz ZXRzKSk7CiAJCUxXTG9ja1JlbGVhc2UoYmt0eXBlX2xvY2spOwogCX0KIH0KQEAgLTQ2OCwxNCAr NTM3LDMwIEBAIHBnc3RhdF9pb19yZXNldF9hbGxfY2IoVGltZXN0YW1wVHogdHMpCiB2b2lkCiBw Z3N0YXRfaW9fc25hcHNob3RfY2Iodm9pZCkKIHsKKwlQZ1N0YXRfSU8gICpzaG1lbV9pbyA9ICZw Z1N0YXRMb2NhbC5zaG1lbS0+aW8uc3RhdHM7CisKIAlpZiAodW5saWtlbHkocGdTdGF0TG9jYWwu c25hcHNob3QuaW8gPT0gTlVMTCkpCisJeworCQlpbnQJCQluID0gc2htZW1faW8tPmhpc3RfdGlt ZV9idWNrZXRzX3Nsb3RfY291bnQ7CisKIAkJcGdTdGF0TG9jYWwuc25hcHNob3QuaW8gPSBNZW1v cnlDb250ZXh0QWxsb2NaZXJvKFRvcE1lbW9yeUNvbnRleHQsCiAJCQkJCQkJCQkJCQkJCSBzaXpl b2YoUGdTdGF0X0lPKSk7CiAKKwkJLyoKKwkJICogQWxsb2NhdGVkIG9uIGRlbWFuZCBpbiBwcml2 YXRlIChUb3BNZW1vcnlDb250ZXh0KSBtZW1vcnkgYW5kIHBvaW50cworCQkgKiB0byB0aGUgc2Ft ZSBpbmRpcmVjdCBvZmZzZXRzLgorCQkgKi8KKwkJcGdTdGF0TG9jYWwuc25hcHNob3QuaW8tPmhp c3RfdGltZV9idWNrZXRzX3Nsb3RfY291bnQgPSBuOworCQlwZ1N0YXRMb2NhbC5zbmFwc2hvdC5p by0+aGlzdF90aW1lX2J1Y2tldHNfc2xvdHMgPQorCQkJTWVtb3J5Q29udGV4dEFsbG9jWmVybyhU b3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkgICAoc2l6ZV90KSBuICogUEdTVEFUX0lPX0hJU1Rf QlVDS0VUUyAqCisJCQkJCQkJCSAgIHNpemVvZih1aW50NjQpKTsKKwl9CisKIAlmb3IgKGludCBp ID0gMDsgaSA8IEJBQ0tFTkRfTlVNX1RZUEVTOyBpKyspCiAJewogCQlMV0xvY2sJICAgKmJrdHlw ZV9sb2NrID0gJnBnU3RhdExvY2FsLnNobWVtLT5pby5sb2Nrc1tpXTsKLQkJUGdTdGF0X0JrdHlw ZUlPICpia3R5cGVfc2hzdGF0cyA9ICZwZ1N0YXRMb2NhbC5zaG1lbS0+aW8uc3RhdHMuc3RhdHNb aV07CisJCVBnU3RhdF9Ca3R5cGVJTyAqYmt0eXBlX3Noc3RhdHMgPSAmc2htZW1faW8tPnN0YXRz W2ldOwogCQlQZ1N0YXRfQmt0eXBlSU8gKmJrdHlwZV9zbmFwID0gJnBnU3RhdExvY2FsLnNuYXBz aG90LmlvLT5zdGF0c1tpXTsKIAogCQlMV0xvY2tBY3F1aXJlKGJrdHlwZV9sb2NrLCBMV19TSEFS RUQpOwpAQCAtNDg2LDEwICs1NzEsMjkgQEAgcGdzdGF0X2lvX3NuYXBzaG90X2NiKHZvaWQpCiAJ CSAqLwogCQlpZiAoaSA9PSAwKQogCQkJcGdTdGF0TG9jYWwuc25hcHNob3QuaW8tPnN0YXRfcmVz ZXRfdGltZXN0YW1wID0KLQkJCQlwZ1N0YXRMb2NhbC5zaG1lbS0+aW8uc3RhdHMuc3RhdF9yZXNl dF90aW1lc3RhbXA7CisJCQkJc2htZW1faW8tPnN0YXRfcmVzZXRfdGltZXN0YW1wOwogCiAJCS8q IHVzaW5nIHN0cnVjdCBhc3NpZ25tZW50IGR1ZSB0byBiZXR0ZXIgdHlwZSBzYWZldHkgKi8KIAkJ KmJrdHlwZV9zbmFwID0gKmJrdHlwZV9zaHN0YXRzOworCisJCS8qIENvcHkgdGhpcyBCYWNrZW5k VHlwZSdzIGhpc3RvZ3JhbSBzbG90cyAqLworCQlmb3IgKGludCBpb19vYmplY3QgPSAwOyBpb19v YmplY3QgPCBJT09CSkVDVF9OVU1fVFlQRVM7IGlvX29iamVjdCsrKQorCQl7CisJCQlmb3IgKGlu dCBpb19jb250ZXh0ID0gMDsgaW9fY29udGV4dCA8IElPQ09OVEVYVF9OVU1fVFlQRVM7IGlvX2Nv bnRleHQrKykKKwkJCXsKKwkJCQlmb3IgKGludCBpb19vcCA9IDA7IGlvX29wIDwgSU9PUF9OVU1f VFlQRVM7IGlvX29wKyspCisJCQkJeworCQkJCQlpbnQJCQlvZmYgPSBia3R5cGVfc2hzdGF0cy0+ aGlzdF90aW1lX2J1Y2tldHNfb2Zmc2V0c1tpb19vYmplY3RdW2lvX2NvbnRleHRdW2lvX29wXTsK KworCQkJCQlpZiAob2ZmID09IC0xKQorCQkJCQkJY29udGludWU7CisJCQkJCW1lbWNweShwZ1N0 YXRMb2NhbC5zbmFwc2hvdC5pby0+aGlzdF90aW1lX2J1Y2tldHNfc2xvdHNbb2ZmXSwKKwkJCQkJ CSAgIHNobWVtX2lvLT5oaXN0X3RpbWVfYnVja2V0c19zbG90c1tvZmZdLAorCQkJCQkJICAgc2l6 ZW9mKHNobWVtX2lvLT5oaXN0X3RpbWVfYnVja2V0c19zbG90c1tvZmZdKSk7CisJCQkJfQorCQkJ fQorCQl9CisKIAkJTFdMb2NrUmVsZWFzZShia3R5cGVfbG9jayk7CiAJfQogfQpAQCAtNzIwLDMg KzgyNCwyOSBAQCBwZ3N0YXRfdHJhY2tzX2lvX29wKEJhY2tlbmRUeXBlIGJrdHlwZSwgSU9PYmpl Y3QgaW9fb2JqZWN0LAogCiAJcmV0dXJuIHRydWU7CiB9CisKKy8qCisgKiBUb3RhbCBudW1iZXIg b2YgdHVwbGUgb2YgcmVhbGx5IHVzYWJsZSBjb21iaW5hdGlvbnMgKEJhY2tlbmRUeXBlLCBJT09i amVjdCwKKyAqIElPQ29udGV4dCwgSU9PcCkgdGhhdCB3ZSBjb25zaWRlciB0cmFja2FibGUuCisg Ki8KK2ludAorcGdzdGF0X2lvX2dldF9zdW1fdHJhY2tlZCh2b2lkKQoreworCWludAkJCXN1bSA9 IDA7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IEJBQ0tFTkRfTlVNX1RZUEVTOyBpKyspCisJCXN1 bSArPSBwZ3N0YXRfYmt0eXBlX2NvdW50X3BvdGVudGlhbGx5X3VzZWQoaSk7CisKKwlyZXR1cm4g c3VtOworfQorCisvKgorICogUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgZm9yIHNoYXJlZCBtZW1v cnkgcmVxdWlyZWQgYnkKKyAqIFBnU3RhdF9JTy5oaXN0X3RpbWVfYnVja2V0c19zbG90cywKKyAq LworU2l6ZQorcGdzdGF0X2lvX2hpc3RvZ3JhbV9zaG1lbV9zaXplKHZvaWQpCit7CisJcmV0dXJu IG11bF9zaXplKHBnc3RhdF9pb19nZXRfc3VtX3RyYWNrZWQoKSwKKwkJCQkJUEdTVEFUX0lPX0hJ U1RfQlVDS0VUUyAqIHNpemVvZih1aW50NjQpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zaG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X3NobWVtLmMKaW5kZXggYjhmMzU0YzgxOGEuLmJiMjViZTEwNmJlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfc2htZW0uYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfc2htZW0uYwpAQCAtMTM5LDYgKzEzOSwxMiBA QCBTdGF0c1NobWVtU2l6ZSh2b2lkKQogCXN6ID0gTUFYQUxJR04oc2l6ZW9mKFBnU3RhdF9TaG1l bUNvbnRyb2wpKTsKIAlzeiA9IGFkZF9zaXplKHN6LCBwZ3N0YXRfZHNhX2luaXRfc2l6ZSgpKTsK IAorCS8qCisJICogRHluYW1pYyBhbGxvY2F0aW9uIGZvciBQZ1N0YXRfSU8uaGlzdF90aW1lX2J1 Y2tldHNfc2xvdHMuIFNpemVkIGZyb20KKwkgKiB0aGUgcnVsZXMgaW4gcGdzdGF0X3RyYWNrc19p b18qKCkKKwkgKi8KKwlzeiA9IGFkZF9zaXplKHN6LCBNQVhBTElHTihwZ3N0YXRfaW9faGlzdG9n cmFtX3NobWVtX3NpemUoKSkpOworCiAJLyogQWRkIHNoYXJlZCBtZW1vcnkgZm9yIGFsbCB0aGUg Y3VzdG9tIGZpeGVkLW51bWJlcmVkIHN0YXRpc3RpY3MgKi8KIAlmb3IgKFBnU3RhdF9LaW5kIGtp bmQgPSBQR1NUQVRfS0lORF9DVVNUT01fTUlOOyBraW5kIDw9IFBHU1RBVF9LSU5EX0NVU1RPTV9N QVg7IGtpbmQrKykKIAl7CkBAIC0xOTQsNiArMjAwLDE1IEBAIFN0YXRzU2htZW1Jbml0KHZvaWQg KmFyZykKIAkJCQkJCQkgIExXVFJBTkNIRV9QR1NUQVRTX0RTQSwgTlVMTCk7CiAJZHNhX3Bpbihk c2EpOwogCisJLyoKKwkgKiBQcmVwYXJlIFBnU3RhdF9JTy5oaXN0X3RpbWVfYnVja2V0c19zbG90 KiBzdHVmZiBiZWZvcmUgY2FsbGluZworCSAqIHBnc3RhdF9pb19pbml0X3NobWVtX2NiKCkuIFRo ZSBhZGRpdGlvbmFsIG1lbW9yeSBmb3IgdGhpcyB3YXMgcmVxdWVzdGVkCisJICogaW4gdGhlIFN0 YXRzU2htZW1TaXplKCkgYWJvdmUuCisJICovCisJY3RsLT5pby5zdGF0cy5oaXN0X3RpbWVfYnVj a2V0c19zbG90X2NvdW50ID0gcGdzdGF0X2lvX2dldF9zdW1fdHJhY2tlZCgpOworCWN0bC0+aW8u c3RhdHMuaGlzdF90aW1lX2J1Y2tldHNfc2xvdHMgPSAodWludDY0ICgqKVtQR1NUQVRfSU9fSElT VF9CVUNLRVRTXSkgcDsKKwlwICs9IE1BWEFMSUdOKHBnc3RhdF9pb19oaXN0b2dyYW1fc2htZW1f c2l6ZSgpKTsKKwogCS8qCiAJICogVG8gZW5zdXJlIGRzaGFzaCBpcyBjcmVhdGVkIGluICJwbGFp biIgc2hhcmVkIG1lbW9yeSwgdGVtcG9yYXJpbHkgbGltaXQKIAkgKiBzaXplIG9mIGRzYSB0byB0 aGUgaW5pdGlhbCBzaXplIG9mIHRoZSBkc2EuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5j CmluZGV4IGUxNmM2NWQ0NWU5Li5kYTBlMzA5NjAwYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3Rh dGZ1bmNzLmMKQEAgLTE2NjcsNiArMTY2Nyw3IEBAIHR5cGVkZWYgZW51bSBoaXN0X2lvX3N0YXRf Y29sCiAgKi8KIHN0YXRpYyB2b2lkCiBwZ19zdGF0X2lvX2hpc3RvZ3JhbV9idWlsZF90dXBsZXMo UmV0dXJuU2V0SW5mbyAqcnNpbmZvLAorCQkJCQkJCQkgIFBnU3RhdF9JTyAqYmFja2VuZHNfaW9f c3RhdHMsCiAJCQkJCQkJCSAgUGdTdGF0X0JrdHlwZUlPICpia3R5cGVfc3RhdHMsCiAJCQkJCQkJ CSAgQmFja2VuZFR5cGUgYmt0eXBlLAogCQkJCQkJCQkgIFRpbWVzdGFtcFR6IHN0YXRfcmVzZXRf dGltZXN0YW1wKQpAQCAtMTY5NSw2ICsxNjk2LDE2IEBAIHBnX3N0YXRfaW9faGlzdG9ncmFtX2J1 aWxkX3R1cGxlcyhSZXR1cm5TZXRJbmZvICpyc2luZm8sCiAJCQlmb3IgKGludCBpb19vcCA9IDA7 IGlvX29wIDwgSU9PUF9OVU1fVFlQRVM7IGlvX29wKyspCiAJCQl7CiAJCQkJY29uc3QgY2hhciAq b3BfbmFtZSA9IHBnc3RhdF9nZXRfaW9fb3BfbmFtZShpb19vcCk7CisJCQkJaW50CQkJYmt0eXBl X2hpc3RfdGltZV9idWNrZXRfb2ZmOworCisJCQkJLyoKKwkJCQkgKiBUaGUgb2Zmc2V0IGlzIHRo ZSBzYW1lIGZvciBldmVyeSBoaXN0b2dyYW0gYnVja2V0IG9mIHRoaXMKKwkJCQkgKiBpb19vYmov aW9fY29udGV4dC9pb19vcCBjb21iaW5hdGlvbi4KKwkJCQkgKi8KKwkJCQlia3R5cGVfaGlzdF90 aW1lX2J1Y2tldF9vZmYgPSBia3R5cGVfc3RhdHMtPmhpc3RfdGltZV9idWNrZXRzX29mZnNldHNb aW9fb2JqXVtpb19jb250ZXh0XVtpb19vcF07CisJCQkJaWYgKGJrdHlwZV9oaXN0X3RpbWVfYnVj a2V0X29mZiA9PSAtMSkKKwkJCQkJY29udGludWU7CisJCQkJQXNzZXJ0KGJrdHlwZV9oaXN0X3Rp bWVfYnVja2V0X29mZiA8IGJhY2tlbmRzX2lvX3N0YXRzLT5oaXN0X3RpbWVfYnVja2V0c19zbG90 X2NvdW50KTsKIAogCQkJCWZvciAoaW50IGJ1Y2tldCA9IDA7IGJ1Y2tldCA8IFBHU1RBVF9JT19I SVNUX0JVQ0tFVFM7IGJ1Y2tldCsrKQogCQkJCXsKQEAgLTE3MDMsNiArMTcxNCw3IEBAIHBnX3N0 YXRfaW9faGlzdG9ncmFtX2J1aWxkX3R1cGxlcyhSZXR1cm5TZXRJbmZvICpyc2luZm8sCiAJCQkJ CVJhbmdlQm91bmQJbG93ZXIsCiAJCQkJCQkJCXVwcGVyOwogCQkJCQlSYW5nZVR5cGUgICpyYW5n ZTsKKwkJCQkJdWludDY0CQlia3R5cGVfYnVja2V0OwogCiAJCQkJCXZhbHVlc1tISVNUX0lPX0NP TF9CQUNLRU5EX1RZUEVdID0gYmt0eXBlX2Rlc2M7CiAJCQkJCXZhbHVlc1tISVNUX0lPX0NPTF9P QkpFQ1RdID0gQ1N0cmluZ0dldFRleHREYXR1bShvYmpfbmFtZSk7CkBAIC0xNzMxLDkgKzE3NDMs OSBAQCBwZ19zdGF0X2lvX2hpc3RvZ3JhbV9idWlsZF90dXBsZXMoUmV0dXJuU2V0SW5mbyAqcnNp bmZvLAogCQkJCQlyYW5nZSA9IG1ha2VfcmFuZ2UodHlwY2FjaGUsICZsb3dlciwgJnVwcGVyLCBm YWxzZSwgTlVMTCk7CiAJCQkJCXZhbHVlc1tISVNUX0lPX0NPTF9CVUNLRVRfVVNdID0gUmFuZ2VU eXBlUEdldERhdHVtKHJhbmdlKTsKIAotCQkJCQkvKiBidWNrZXQgY291bnQgKi8KLQkJCQkJdmFs dWVzW0hJU1RfSU9fQ09MX0NPVU5UXSA9IEludDY0R2V0RGF0dW0oCi0JCQkJCQkJCQkJCQkJCQkg IGJrdHlwZV9zdGF0cy0+aGlzdF90aW1lX2J1Y2tldHNbaW9fb2JqXVtpb19jb250ZXh0XVtpb19v cF1bYnVja2V0XSk7CisJCQkJCS8qIGdldCBidWNrZXQgY291bnQsIGFjY2VzcyBpbmRpcmVjdGx5 ICovCisJCQkJCWJrdHlwZV9idWNrZXQgPSBiYWNrZW5kc19pb19zdGF0cy0+aGlzdF90aW1lX2J1 Y2tldHNfc2xvdHNbYmt0eXBlX2hpc3RfdGltZV9idWNrZXRfb2ZmXVtidWNrZXRdOworCQkJCQl2 YWx1ZXNbSElTVF9JT19DT0xfQ09VTlRdID0gSW50NjRHZXREYXR1bShia3R5cGVfYnVja2V0KTsK IAogCQkJCQlpZiAoc3RhdF9yZXNldF90aW1lc3RhbXAgIT0gMCkKIAkJCQkJCXZhbHVlc1tISVNU X0lPX0NPTF9SRVNFVF9USU1FXSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0oc3RhdF9yZXNldF90aW1l c3RhbXApOwpAQCAtMTc3OSw3ICsxNzkxLDcgQEAgcGdfc3RhdF9nZXRfaW9faGlzdG9ncmFtKFBH X0ZVTkNUSU9OX0FSR1MpCiAJCQljb250aW51ZTsKIAogCQkvKiBzYXZlIHR1cGxlcyB3aXRoIGRh dGEgZnJvbSB0aGlzIFBnU3RhdF9Ca3R5cGVJTyAqLwotCQlwZ19zdGF0X2lvX2hpc3RvZ3JhbV9i dWlsZF90dXBsZXMocnNpbmZvLCBia3R5cGVfc3RhdHMsIGJrdHlwZSwKKwkJcGdfc3RhdF9pb19o aXN0b2dyYW1fYnVpbGRfdHVwbGVzKHJzaW5mbywgYmFja2VuZHNfaW9fc3RhdHMsIGJrdHlwZV9z dGF0cywgYmt0eXBlLAogCQkJCQkJCQkJCSAgYmFja2VuZHNfaW9fc3RhdHMtPnN0YXRfcmVzZXRf dGltZXN0YW1wKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3Jj L2luY2x1ZGUvcGdzdGF0LmgKaW5kZXggOTg0OTE0ZTY5YjguLmRlOTBmMWZiNWIwIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAt MjAsNyArMjAsNiBAQAogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCS8qIGZvciBi YWNrd2FyZCBjb21wYXRpYmlsaXR5ICovCS8qIElXWVUgcHJhZ21hOiBleHBvcnQgKi8KICNpbmNs dWRlICJ1dGlscy9wZ3N0YXRfa2luZC5oIgogCi0KIC8qIGF2b2lkIGluY2x1ZGluZyBhY2Nlc3Mv dHJhbnNhbS5oICovCiB0eXBlZGVmIHN0cnVjdCBGdWxsVHJhbnNhY3Rpb25JZCBGdWxsVHJhbnNh Y3Rpb25JZDsKIApAQCAtMjE4LDcgKzIxNyw3IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9UYWJs ZVhhY3RTdGF0dXMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKLSNkZWZpbmUgUEdTVEFUX0ZJTEVfRk9STUFUX0lE CTB4MDFBNUJDQkMKKyNkZWZpbmUgUEdTVEFUX0ZJTEVfRk9STUFUX0lECTB4MDFBNUJDQkQKIAog dHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0FyY2hpdmVyU3RhdHMKIHsKQEAgLTM0Miw3ICszNDEsMTQg QEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0JrdHlwZUlPCiAJdWludDY0CQlieXRlc1tJT09CSkVD VF9OVU1fVFlQRVNdW0lPQ09OVEVYVF9OVU1fVFlQRVNdW0lPT1BfTlVNX1RZUEVTXTsKIAlQZ1N0 YXRfQ291bnRlciBjb3VudHNbSU9PQkpFQ1RfTlVNX1RZUEVTXVtJT0NPTlRFWFRfTlVNX1RZUEVT XVtJT09QX05VTV9UWVBFU107CiAJUGdTdGF0X0NvdW50ZXIgdGltZXNbSU9PQkpFQ1RfTlVNX1RZ UEVTXVtJT0NPTlRFWFRfTlVNX1RZUEVTXVtJT09QX05VTV9UWVBFU107Ci0JdWludDY0CQloaXN0 X3RpbWVfYnVja2V0c1tJT09CSkVDVF9OVU1fVFlQRVNdW0lPQ09OVEVYVF9OVU1fVFlQRVNdW0lP T1BfTlVNX1RZUEVTXVtQR1NUQVRfSU9fSElTVF9CVUNLRVRTXTsKKworCS8qCisJICogSW5kaXJl Y3Qgb2Zmc2V0IHRvIFBnU3RhdF9JTyAocGFyZW50CisJICogc3RydWN0dXJlKS5oaXN0X3RpbWVf YnVja2V0c19zbG90cy4gVGhpcyBuZWVkcyB0byBiZSB0aGUgbGFzdCBmaWVsZCBkdWUKKwkgKiB0 byB0aGUgdXNlIG9mIG1lbXNldCguLiwgb2Zmc2V0b2YoaGlzdF90aW1lX2J1Y2tldHNfb2Zmc2V0 cykpIGluCisJICogcGdzdGF0X2lvX3Jlc2V0X2FsbF9jYigpLgorCSAqLworCWludAkJCWhpc3Rf dGltZV9idWNrZXRzX29mZnNldHNbSU9PQkpFQ1RfTlVNX1RZUEVTXVtJT0NPTlRFWFRfTlVNX1RZ UEVTXVtJT09QX05VTV9UWVBFU107CiB9IFBnU3RhdF9Ca3R5cGVJTzsKIAogdHlwZWRlZiBzdHJ1 Y3QgUGdTdGF0X1BlbmRpbmdJTwpAQCAtMzU4LDcgKzM2NCw3IEBAIHR5cGVkZWYgc3RydWN0IFBn U3RhdF9QZW5kaW5nSU8KIAkgKiBtZW1vcnkuCiAJICovCiAJdWludDY0CQkoKnBlbmRpbmdfaGlz dF90aW1lX2J1Y2tldHMpW1BHU1RBVF9JT19ISVNUX0JVQ0tFVFNdOwotCXVpbnQ2NAkJcGVuZGlu Z19oaXN0X3RpbWVfYnVja2V0c19vZmZzZXRzW0lPT0JKRUNUX05VTV9UWVBFU11bSU9DT05URVhU X05VTV9UWVBFU11bSU9PUF9OVU1fVFlQRVNdOworCWludAkJCXBlbmRpbmdfaGlzdF90aW1lX2J1 Y2tldHNfb2Zmc2V0c1tJT09CSkVDVF9OVU1fVFlQRVNdW0lPQ09OVEVYVF9OVU1fVFlQRVNdW0lP T1BfTlVNX1RZUEVTXTsKIAogCS8qCiAJICogQ2FjaGUgaG93IG11Y2ggaGlzdG9ncmFtcyB3ZSBo YXZlIGFsbG9jYXRlZCB0byBhdm9pZCByZXBldGFibHkgY2FsbGluZwpAQCAtMzc0LDYgKzM4MCwx NiBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfSU8KIHsKIAlUaW1lc3RhbXBUeiBzdGF0X3Jlc2V0 X3RpbWVzdGFtcDsKIAlQZ1N0YXRfQmt0eXBlSU8gc3RhdHNbQkFDS0VORF9OVU1fVFlQRVNdOwor CisJLyoKKwkgKiBUaGUgSU8gaGlzdG9ncmFtIG1lbW9yeSBpcyBzaXplZCBhdCBwb3N0bWFzdGVy IHN0YXJ0IGZyb20gdGhlIHJ1bGVzIGluCisJICogcGdzdGF0X3RyYWNrc19pb18qKCkgYW5kIHBl cnNpc3RlZCBieSBhZGRpdGluYWwgY29kZSB0byBoYW5kbGUgdGhpcworCSAqIGR5bmFtaWMgKHNo YXJlZCkgbWVtb3J5IHBvaW50ZXIgaW4gcGdzdGF0X3dyaXRlX3N0YXRzZmlsZSgpIC8KKwkgKiBw Z3N0YXRfcmVhZF9zdGF0c2ZpbGUoKSwgc28gdGhleSBuZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBz ZXJpYWxpemF0aW9uCisJICogdG8gZGlzayBieSBjb21tb24gY29kZS4KKwkgKi8KKwlpbnQJCQlo aXN0X3RpbWVfYnVja2V0c19zbG90X2NvdW50OworCXVpbnQ2NAkJKCpoaXN0X3RpbWVfYnVja2V0 c19zbG90cylbUEdTVEFUX0lPX0hJU1RfQlVDS0VUU107CiB9IFBnU3RhdF9JTzsKIAogdHlwZWRl ZiBzdHJ1Y3QgUGdTdGF0X0xvY2tFbnRyeQpAQCAtNjU0LDYgKzY3MCw4IEBAIGV4dGVybiBQZ1N0 YXRfQ2hlY2twb2ludGVyU3RhdHMgKnBnc3RhdF9mZXRjaF9zdGF0X2NoZWNrcG9pbnRlcih2b2lk KTsKIGV4dGVybiBib29sIHBnc3RhdF9ia3R5cGVfaW9fc3RhdHNfdmFsaWQoUGdTdGF0X0JrdHlw ZUlPICpiYWNrZW5kX2lvLAogCQkJCQkJCQkJCSBCYWNrZW5kVHlwZSBia3R5cGUpOwogZXh0ZXJu IGludAlwZ3N0YXRfYmt0eXBlX2NvdW50X3BvdGVudGlhbGx5X3VzZWQoQmFja2VuZFR5cGUgYmt0 eXBlKTsKK2V4dGVybiBpbnQJcGdzdGF0X2lvX2dldF9zdW1fdHJhY2tlZCh2b2lkKTsKK2V4dGVy biBTaXplIHBnc3RhdF9pb19oaXN0b2dyYW1fc2htZW1fc2l6ZSh2b2lkKTsKIGV4dGVybiB2b2lk IHBnc3RhdF9jb3VudF9pb19vcChJT09iamVjdCBpb19vYmplY3QsIElPQ29udGV4dCBpb19jb250 ZXh0LAogCQkJCQkJCSAgIElPT3AgaW9fb3AsIHVpbnQzMiBjbnQsIHVpbnQ2NCBieXRlcyk7CiBl eHRlcm4gaW5zdHJfdGltZSBwZ3N0YXRfcHJlcGFyZV9pb190aW1lKGJvb2wgdHJhY2tfaW9fZ3Vj KTsKLS0gCjIuNDMuMAoK --00000000000076b73b06523bb516--