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 1vwi4W-007z6Q-0S for pgsql-hackers@arkaria.postgresql.org; Sun, 01 Mar 2026 14:47:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vwi4U-00DdoS-2U for pgsql-hackers@arkaria.postgresql.org; Sun, 01 Mar 2026 14:47:02 +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 <3danissimo@gmail.com>) id 1vwi4T-00DdoG-31 for pgsql-hackers@lists.postgresql.org; Sun, 01 Mar 2026 14:47:02 +0000 Received: from mail-yw1-x112b.google.com ([2607:f8b0:4864:20::112b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from <3danissimo@gmail.com>) id 1vwi4M-00000001wmd-2A5r for pgsql-hackers@lists.postgresql.org; Sun, 01 Mar 2026 14:47:01 +0000 Received: by mail-yw1-x112b.google.com with SMTP id 00721157ae682-7985d11da10so36034007b3.3 for ; Sun, 01 Mar 2026 06:46:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772376415; cv=none; d=google.com; s=arc-20240605; b=cH/FXsKFN2m6R4TW2z4SPhWLaK7U6Y92xNWOmT0U00xzKR/lLugAsThKd5TVSXwBJ4 hC+cv/zQbbQeX2FDKImwiyvAX6m6e9agvPIvNf3fsdIpkMb/3d6b+2jlqpGAtQ+il2kA sDSk9xEKQwJnSMo6v1I+1B/+L7vnEHJXUbUS5EkaLtxkxKqJrFshggtQxwC/ihMzye5U W9UVRA8SCNJlcHGpw6Fzsb+GxrPXdBtYtI+xEoHI8QO4DWqwIWWOuwH4QHlJDm4kjio1 0n5ncnVPHGoW6ZH52u6X0s1GJixOhNSSnmMzwlGYqFe5oY/T9ROr1uaFIRcEn07iNpvv 39yQ== 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=yE6FHeUFjoqcGUbOrLlPqf3Z4Le1OG+/SsSGm9kmp+0=; fh=NMa4fsdnsR7lKym2msu9RfS0aGr5l9M2JTxeKTin7c4=; b=bmFPoKE98xuKmFIEcbyvBZzByXGQmhfXTzl624beLJwb+YizhLrQsGQ11P94RbVGwn BH2+FzpNRGAeZSeFFMgrEXPUUBvwyNuHs7aytwR84GPqWyFMe2rgbyHoExX8xmKNvMvW cSoqyLkNBpVJvQpRscxoRPqfm5zLUSd/P5gR7jt7vOqw5hvNYyspPucsEVkr9SI2vP2x c09RWnE1N56LAkd0KZhol/TZf988AEhZonbAyFeRmpl41tPL6O/ZiimQe6tVtGseT4Mh Za0ns2cr8E75YeXBha5Ws/dLg2Sw8mprByzVVQ2mFHK0otwuH627WXbyn2n0rkRtEgPQ t7EA==; 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=gmail.com; s=20230601; t=1772376415; x=1772981215; 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=yE6FHeUFjoqcGUbOrLlPqf3Z4Le1OG+/SsSGm9kmp+0=; b=jHo5/FxjqxZYJ1FT4tEN1nwAjPPujFcQpWDLDCxmc9hQLEv1mbSAf+v4hTetAcMSkI wkRhtoSyWsB4fs+i3e9vScDVXvYOvPIla2pwWPgan8PeLYXf9Bb6CLhMNuFSQI5MtRhn h5iME31CMTR/nahqHLs/xyU3g88nexf+XeLQJ2tkoRFRjgxuFOKybSQQ3d1JotxnY36u xa3dQv+PrpUMCfP36kCJ/0VMpaM5GjH0zYWZBGh9BJSnilIh2Rq64c8xtb9NV3kjfnKw w2nukdLX64yP74U++0w2JlEf6OWKY3dA3JUuW1K3itIaNJ80VvUForVEYkBSf3kFgO47 Bgxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772376415; x=1772981215; 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=yE6FHeUFjoqcGUbOrLlPqf3Z4Le1OG+/SsSGm9kmp+0=; b=ouJ/jixSZ31CRdlaoimqMbcE2N/bqsr+WAoTcaZKnTN4sDrUxiZYXnNbtYGlmlpdRc a5itlT7lAItMXf5TFTHCVUnUnJwRKyPER9/5ex288u9SROHT79eO/Lh7TI/xW72YdrKr yNB+tkZHjqynyh05fLqXlAZ8atbhsLdz56YO0gOZJm/XlBtUnUKoy/xPPp4xlekO7wQH v8Mjm8Ed+0SjE6bJRETaodItYYtgSS8K5KHT6ecgAAzWplCHilUeHwDBz+KAE4B8TvOl pZlGotz4l0/ln9hlBtCbSzrykiO6lgWTCx4gHQlvGzglUUKR4+oPwG9DtwHsaPaiQ9qS 1tgQ== X-Forwarded-Encrypted: i=1; AJvYcCV7c5P9cj5y9a0l6af0oa8lxxKQVjqbcV0xUEWuSf9/1k64G8ATsFnyG6jtLwNYpPxevJXXvd6YUuEefxoP@lists.postgresql.org X-Gm-Message-State: AOJu0YwwFc4voFVvUkkk49y4Kot2wvAeYiHB0Wr5btaK7FNjv63p/F6s K6ZB1zoRZPXcYtZyZ8NXgmBxRzddTlBfCWsQyIq6vPOAZZRb4LXuiQ52KCLkumereVRDphH33Lm WumapCygGDez7DCn5R3fXeTVaaTW5Tgw= X-Gm-Gg: ATEYQzyTXVkSQFb6IEM4mSGttuUOh3oxD/uGWZieYjo9DOSSmRRE8U50ZGy9D68Di5Q idDbXlqBlJ7FigIbwSsthfUf4zbL4H5w2ieV7G/XqJWRp6ViU0gcS5fVgaUMAnaepeUVleJbz6g mfUbVthB/NawoXECs1AdsCuM2lZtL5J7KBQjqBmHpJdYf9+BAl1Rez5RDnCrzzF3RUG9FWlfsZT 9aHVi2rBu+mjBIGWuxE3II/i57/VRB7oyfYfISYc8dV8OQ9vorsYciHD/lWwNBFROP2BdDJi8nR 72DkEdM= X-Received: by 2002:a05:690c:e3e3:b0:798:63e9:6783 with SMTP id 00721157ae682-79885495fbbmr87528057b3.14.1772376414791; Sun, 01 Mar 2026 06:46:54 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Daniil Davydov <3danissimo@gmail.com> Date: Sun, 1 Mar 2026 21:46:42 +0700 X-Gm-Features: AaiRm53oC_PhBq3t-y4b5b99AJaRyq6HH7yEk8AxXWnPrA-T_sRYXKiWcn-0spU Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Masahiko Sawada Cc: Sami Imseih , Alexander Korotkov , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="0000000000009cf03e064bf78ae5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009cf03e064bf78ae5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Sat, Feb 28, 2026 at 8:57=E2=80=AFAM Masahiko Sawada wrote: > > IIUC earlier patches defined autovacuum_max_parallel_workers with the > limit by max_worker_processes. Suppose we set: > > - max_worker_processes =3D 8 > - autovacuum_max_parallel_workers =3D 4 > - max_parallel_workers =3D 4 > > If we want to disable all parallel operations, we would need to set > max_parallel_workers to 0 as well as either > autovacuum_max_parallel_workers to 0, no? This is because if we set > only max_parallel_workers to 0, autovacuum workers still can take > parallel vacuum workers from the max_worker_processes pool. I might be > missing something though. > Even if av_max_parallel_workers is limited by max_worker_processes, it is enough to set max_parallel_workers to 0 to disable parallel autovacuum. When a/v leader wants to create supportive workers, it calls "RegisterDynamicBackgroundWorker" function, which contain following logic : /* * If this is a parallel worker, check whether there are already too many * parallel workers; if so, don't register another one. */ if (parallel && (BackgroundWorkerData->parallel_register_count - BackgroundWorkerData->parallel_terminate_count) >=3D max_parallel_workers) { .... } Thus, a/v leader cannot launch any workers if max_parallel_workers is set t= o 0. > > > If we write the log "%d parallel autovacuum workers have been > > > released" in AutoVacuumReleaseParallelWorkres(), can we simplify both > > > tests (4 and 5) further? > > > > > > > It won't help the 4th test, because ReleaseParallelWorkers is called > > due to both ERROR and shmem_exit, but we want to be sure that > > workers are released in the try/catch block (i.e. before the shmem_exit= ). > > We already call AutoVacuumReleaseAllParallelWorker() in the PG_CATCH() > block in do_autovacuum(). If we write the log in > AutoVacuumReleaseParallelWorkers(), the tap test is able to check the > log, no? > Not quite. Assume that we add "%d workers have been released" log to the ReleaseAllParallelWorkers. Then we trigger an error for a/v leader and wait for this log (we are expecting that workers will be released inside the try/catch block). Even if there is a bug in the code and a/v leader cannot release parallel workers due to occured error, one day it will finish vacuuming and call "proc_exit". During "proc_exit" the "before_shmem_exit_hook" along with the "ReleaseAllParallelWorkers" will be called. I.e. we will see the desired log, and we will mistakenly consider this test passed. > > Also, I don't know whether the 5th test needs this log at all, because = in > > the end we are checking the number of free parallel workers. If a kille= d > > a/v leader doesn't release parallel workers, we'll notice it. > > If we can check the log written at process shutdown time, I think we > can somewhat simplify the test 5 logic by not attaching > 'autovacuum-start-parallel-vacuum' injection point. > > 1. attach 'autovacuum-leader-before-indexes-processing' injection point. > 2. wait for an av worker to stop at the injection point. > 3. terminate the av worker. > 4. verify from the log if the workers have been released. > 5. disable parallel autovacuum. > 6. check the free workers (should be 10). > > Step 5 and 6 seems to be optional though. OK, I see your point. But I'm afraid that the "%d released" log can't help us here for the reason I described above : "%d released" can be called from several places and we cannot be sure which one has emitted this log. I suppose to do the same as we did for try/catch block - add logging inside the "autovacuum_worker_before_shmem_exit" with some unique message. Thus, we will be sure that the workers are released precisely in the "before_shmem_exit_hook". The alternative is to pass some additional information to the "ReleaseAllParallelWorkers" function (to supplement the log it emits), but = it doesn't seem like a good solution to me. **Comments on the 0001 patch** > + /* > + * Max number of parallel autovacuum workers. If value is 0 then para= llel > + * degree will computed based on number of indexes. > + */ > + int autovacuum_parallel_workers; > > I'm a bit concerned that the above description doesn't explain what > number of parallel vacuum workers are used in >0 as it mentioned only > the maximum number. How about rewording it to: > > Target number of parallel autovacuum workers. -1 by default disables > parallel vacuum during autovacuum. 0 means choose the parallel degree > based on the number of indexes. > I agree. **Comments on the 0002 patch** > + PVWorkersUsage workers_usage; > /* Counters that follow are only for scanned_pages */ > int64 tuples_deleted; /* # deleted from table */ > > Let's insert a new line between the new line and the existing line. > OK > + if (AmAutoVacuumWorkerProcess()) > + { > + /* Worker usage stats for parallel autovacuum. */ > + appendStringInfo(&buf, > + _("parallel workers: index > vacuum: %d planned, %d reserved, %d launched in total\n"), > + vacrel->workers_usage.vacuum.nplanne= d, > + vacrel->workers_usage.vacuum.nreserv= ed, > + vacrel->workers_usage.vacuum.nlaunch= ed); > + } > + else > + { > + /* Worker usage stats for manual VACUUM (PARALLEL). *= / > + appendStringInfo(&buf, > + _("parallel workers: index > vacuum: %d planned, %d launched in total\n"), > + vacrel->workers_usage.vacuum.nplanne= d, > + vacrel->workers_usage.vacuum.nlaunch= ed); > + } > + } > > These comments are very obvious so I don't think we need them. I agree. > Instead, I think it would be good to explain why we don't need to > report "reserved" numbers in the manual vacuum cases. > I think that we can clarify somewhere why the "reserved" statistic is collected only for autovacuum. PVWorkersStats is an appropriate place for it. Thus, there will be no need to write something during constructing the log. > --- > + if (vacrel->workers_usage.vacuum.nplanned > 0) > + { > + /* Stats for vacuum phase of index vacuuming. */ > > and > > + if (vacrel->workers_usage.cleanup.nplanned > 0) > + { > + /* Stats for cleanup phase of index vacuuming. */ > + > > I don't think we need these comments (the second one has a typo > though) as it's obvious. > I agree. > */ > void > parallel_vacuum_bulkdel_all_indexes(ParallelVacuumState *pvs, long > num_table_tuples, > - int num_index_scans) > + int num_index_scans, PVWorkersUsage *= wusage) > > Please add a brief description of wusage to the function comment. We > can add comments to both parallel_vacuum_bulkldel_all_indexes() and > parallel_vacuum_cleanup_all_indexes() or only > parallel_vacuum_process_all_indexes(). > OK. I think that adding a comment only to the parallel_vacuum_process_all_indexes will be more appropriate. (I'm not sure if the comment I came up with looks good, but I couldn't formulate it better). > > PVWorkersUsage is added twice > Oops **Comments on the 0003 patch** > > +#define VacCostParamsEquals(params) \ > + (vacuum_cost_delay =3D=3D (params).cost_delay && \ > + vacuum_cost_limit =3D=3D (params).cost_limit && \ > + VacuumCostPageDirty =3D=3D (params).cost_page_dirty && \ > + VacuumCostPageHit =3D=3D (params).cost_page_hit && \ > + VacuumCostPageMiss =3D=3D (params).cost_page_miss) > > I'm not sure this macro helps reduce lines of code or improve > readability as it's used only once and it's slightly unnatural to me > that *Equals macro takes only one argument. > I agree, it looks a bit odd. I'll remove it. Moreover, this shmem state can be updated only by the a/v leader worker, so I'll allow it to read shared variables without holding a spinlock. It seems pretty reliable, what do you think? **Comments on the 0004 patch** > +#include "commands/vacuum.h" > +#include "fmgr.h" > +#include "miscadmin.h" > +#include "postmaster/autovacuum.h" > +#include "storage/shmem.h" > +#include "storage/ipc.h" > +#include "storage/lwlock.h" > +#include "utils/builtins.h" > +#include "utils/injection_point.h" > > We can remove some unnecessary header includes. ISTM we need only > fmgr.h, autovacuum.h, and injection_point.h. > Agree, I'll remove unused includes. > + const char *msg_format =3D > + _("Parallel autovacuum worker cost params: cost_limit=3D%d, > cost_delay=3D%g, cost_page_miss=3D%d, cost_page_dirty=3D%d, > cost_page_hit=3D%d"); > + > > I don't think we need the translation for this message as it's not a > user-facing one. > > We don't capitalize the first letter in the error message. > I agree. > --- > + ereport(DEBUG2, > + (errmsg("number of free parallel autovacuum workers is set > to %u due to config reload", > + AutoVacuumShmem->av_freeParallelWorkers), > + errhidecontext(true))); > > Why do we need to add errhidecontext(true) here? > I thought we don't need to write redundant info to the logfile. But I don't see that other DEBUG2 messages are hiding context, so I'll remove it. BTW, do we want to use "elog" here too? > --- > + 'tests': [ > + 't/001_basic.pl', > + ], > > Need to be updated to the new filename. > > --- > + * Copyright (c) 2020-2025, PostgreSQL Global Development Group > > Please update the copyright years. > Yeah, I forgot about it. Will fix it. Thank you very much for the review! Please, see the updated set of patches. -- Best regards, Daniil Davydov --0000000000009cf03e064bf78ae5 Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0003-Cost-based-parameters-propagation-for-parallel-a.patch" Content-Disposition: attachment; filename="v23-0003-Cost-based-parameters-propagation-for-parallel-a.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm7v39jo2 RnJvbSBmOTFjNTJjMjIzNDAzNDlmOWMyNDU5ZmY1NjU0MDhlNzViNGQ5MTk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBUaHUsIDE1IEphbiAyMDI2IDIzOjE1OjQ4ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjMgMy81XSBDb3N0IGJhc2VkIHBhcmFtZXRlcnMgcHJvcGFnYXRpb24gZm9yIHBhcmFsbGVs CiBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAg fCAgMjMgKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyB8IDE2MyAr KysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggICAgICAgICB8 ICAgMiArCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgIHwgICAyICsKIDUg ZmlsZXMgY2hhbmdlZCwgMTg5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW0uYwppbmRleCAwMzkzMmY0NWM4YS4uNzA4ODI1NDRkMDUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bS5jCkBAIC0yNDMwLDggKzI0MzAsMjEgQEAgdmFjdXVtX2RlbGF5X3BvaW50KGJvb2wgaXNf YW5hbHl6ZSkKIAkvKiBBbHdheXMgY2hlY2sgZm9yIGludGVycnVwdHMgKi8KIAlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwogCi0JaWYgKEludGVycnVwdFBlbmRpbmcgfHwKLQkJKCFWYWN1dW1Db3N0 QWN0aXZlICYmICFDb25maWdSZWxvYWRQZW5kaW5nKSkKKwlpZiAoSW50ZXJydXB0UGVuZGluZykK KwkJcmV0dXJuOworCisJaWYgKElzUGFyYWxsZWxXb3JrZXIoKSkKKwl7CisJCS8qCisJCSAqIFBv c3NpYmx5IHVwZGF0ZSBjb3N0LWJhc2VkIGRlbGF5IHBhcmFtZXRlcnMuCisJCSAqCisJCSAqIERv IGl0IGJlZm9yZSBjaGVja2luZyBWYWN1dW1Db3N0QWN0aXZlLCBiZWNhdXNlIGl0cyB2YWx1ZSBt aWdodCBiZQorCQkgKiBjaGFuZ2VkIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKwkJICov CisJCXBhcmFsbGVsX3ZhY3V1bV91cGRhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcygpOworCX0KKwor CWlmICghVmFjdXVtQ29zdEFjdGl2ZSAmJiAhQ29uZmlnUmVsb2FkUGVuZGluZykKIAkJcmV0dXJu OwogCiAJLyoKQEAgLTI0NDUsNiArMjQ1OCwxMiBAQCB2YWN1dW1fZGVsYXlfcG9pbnQoYm9vbCBp c19hbmFseXplKQogCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCVByb2Nlc3NDb25m aWdGaWxlKFBHQ19TSUdIVVApOwogCQlWYWN1dW1VcGRhdGVDb3N0cygpOworCisJCS8qCisJCSAq IElmIHdlIGFyZSBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlciBhbmQgc29tZSBvZiBjb3N0LWJh c2VkCisJCSAqIHBhcmFtZXRlcnMgaGFkIGNoYW5nZWQsIGxldCBvdGhlciBwYXJhbGxlbCB3b3Jr ZXJzIGtub3cuCisJCSAqLworCQlwYXJhbGxlbF92YWN1dW1fcHJvcGFnYXRlX3NoYXJlZF9kZWxh eV9wYXJhbXMoKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMK aW5kZXggNjQzODQ5YjJmYjguLjgwYjU3YmY5ZGEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMKQEAgLTU0LDYgKzU0LDUyIEBACiAjZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9L RVlfV0FMX1VTQUdFCQk0CiAjZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfSU5ERVhfU1RBVFMJ CTUKIAorLyoKKyAqIEhlbHBlciBmb3IgdGhlIFBWU2hhcmVkQ29zdFBhcmFtcyBzdHJ1Y3R1cmUg KHNlZSBiZWxvdyksIHRvIGF2b2lkCisgKiByZXBldGl0aW9uLgorICovCit0eXBlZGVmIHN0cnVj dCBWYWN1dW1Db3N0UGFyYW1zCit7CisJZG91YmxlCQljb3N0X2RlbGF5OworCWludAkJCWNvc3Rf bGltaXQ7CisJaW50CQkJY29zdF9wYWdlX2RpcnR5OworCWludAkJCWNvc3RfcGFnZV9oaXQ7CisJ aW50CQkJY29zdF9wYWdlX21pc3M7Cit9IFZhY3V1bUNvc3RQYXJhbXM7CisKKyNkZWZpbmUJRmls bFZhY0Nvc3RQYXJhbXMoY29zdF9wYXJhbXMpIFwKKwkoY29zdF9wYXJhbXMpLT5jb3N0X2RlbGF5 ID0gdmFjdXVtX2Nvc3RfZGVsYXk7IFwKKwkoY29zdF9wYXJhbXMpLT5jb3N0X2xpbWl0ID0gdmFj dXVtX2Nvc3RfbGltaXQ7IFwKKwkoY29zdF9wYXJhbXMpLT5jb3N0X3BhZ2VfZGlydHkgPSBWYWN1 dW1Db3N0UGFnZURpcnR5OyBcCisJKGNvc3RfcGFyYW1zKS0+Y29zdF9wYWdlX2hpdCA9IFZhY3V1 bUNvc3RQYWdlSGl0OyBcCisJKGNvc3RfcGFyYW1zKS0+Y29zdF9wYWdlX21pc3MgPSBWYWN1dW1D b3N0UGFnZU1pc3MKKworLyoKKyAqIFN0cnVjdCBmb3IgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkg cmVsYXRlZCBwYXJhbWV0ZXJzIHRvIHNoYXJlIGFtb25nIGFuCisgKiBhdXRvdmFjdXVtIHdvcmtl ciBhbmQgaXRzIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzLgorICovCit0eXBlZGVmIHN0cnVjdCBQ VlNoYXJlZENvc3RQYXJhbXMKK3sKKwkvKgorCSAqIEVhY2ggdGltZSBsZWFkZXIgd29ya2VyIHVw ZGF0ZXMgaXRzIHBhcmFtZXRlcnMsIGl0IG11c3QgaW5jcmVhc2UKKwkgKiBnZW5lcmF0aW9uLiBF dmVyeSBwYXJhbGxlbCB3b3JrZXIga2VlcHMgdGhlIGdlbmVyYXRpb24KKwkgKiAoc2hhcmVkX3Bh cmFtc19sb2NhbF9nZW5lcmF0aW9uKSBhdCB3aGljaCBpdCBoYWQgbGFzdCB0aW1lIHJlY2VpdmVk CisJICogcGFyYW1ldGVycyBmcm9tIHRoZSBsZWFkZXIuCisJICoKKwkgKiBJdCBpcyBlbm91Z2gg Zm9yIHdvcmtlciB0byBjb21wYXJlIGl0J3MgbG9jYWxfZ2VuZXJhdGlvbiB3aXRoIHRoZSBmaWVs ZAorCSAqIGJlbG93IHRvIGRldGVybWluZSB3aGV0aGVyIGl0IG5lZWRzIHRvIHJlY2VpdmUgbmV3 IHBhcmFtZXRlcnMnIHZhbHVlcy4KKwkgKi8KKwlwZ19hdG9taWNfdWludDMyIGdlbmVyYXRpb247 CisKKwlzbG9ja190CQltdXRleDsJCQkvKiBwcm90ZWN0cyBhbGwgZmllbGRzIGJlbG93ICovCisK KwkvKgorCSAqIENvcGllcyBvZiB0aGUgY29ycmVzcG9uZGluZyBjb3N0LWJhc2VkIHZhY3V1bSBk ZWxheSBwYXJhbWV0ZXJzIGZyb20KKwkgKiBhdXRvdmFjdXVtIGxlYWRlciBwcm9jZXNzLgorCSAq LworCVZhY3V1bUNvc3RQYXJhbXMgcGFyYW1zX2RhdGE7Cit9IFBWU2hhcmVkQ29zdFBhcmFtczsK KwogLyoKICAqIFNoYXJlZCBpbmZvcm1hdGlvbiBhbW9uZyBwYXJhbGxlbCB3b3JrZXJzLiAgU28g dGhpcyBpcyBhbGxvY2F0ZWQgaW4gdGhlIERTTQogICogc2VnbWVudC4KQEAgLTEyMyw2ICsxNjks MTggQEAgdHlwZWRlZiBzdHJ1Y3QgUFZTaGFyZWQKIAogCS8qIFN0YXRpc3RpY3Mgb2Ygc2hhcmVk IGRlYWQgaXRlbXMgKi8KIAlWYWNEZWFkSXRlbXNJbmZvIGRlYWRfaXRlbXNfaW5mbzsKKworCS8q CisJICogSWYgJ3RydWUnIHRoZW4gd2UgYXJlIHJ1bm5pbmcgcGFyYWxsZWwgYXV0b3ZhY3V1bS4g T3RoZXJ3aXNlLCB3ZSBhcmUKKwkgKiBydW5uaW5nIHBhcmFsbGVsIG1haW50ZW5lbmNlIFZBQ1VV TS4KKwkgKi8KKwlib29sCQlpc19hdXRvdmFjdXVtOworCisJLyoKKwkgKiBTdHJ1Y3QgZm9yIHN5 bmNpbmcgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1ldGVycyBiZXR3ZWVuCisJICogc3Vw cG9ydGl2ZSBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgd2l0aCBsZWFkZXIgd29ya2VyLgor CSAqLworCVBWU2hhcmVkQ29zdFBhcmFtcyBjb3N0X3BhcmFtczsKIH0gUFZTaGFyZWQ7CiAKIC8q IFN0YXR1cyB1c2VkIGR1cmluZyBwYXJhbGxlbCBpbmRleCB2YWN1dW0gb3IgY2xlYW51cCAqLwpA QCAtMjI1LDYgKzI4MywxMSBAQCBzdHJ1Y3QgUGFyYWxsZWxWYWN1dW1TdGF0ZQogCVBWSW5kVmFj U3RhdHVzIHN0YXR1czsKIH07CiAKK3N0YXRpYyBQVlNoYXJlZENvc3RQYXJhbXMgKnB2X3NoYXJl ZF9jb3N0X3BhcmFtcyA9IE5VTEw7CisKKy8qIFNlZSBjb21tZW50cyBmb3IgdGhlIFBWU2hhcmVk Q29zdFBhcmFtcyBzdHJ1Y3R1cmUgZm9yIHRoZSBleHBsYW5hdGlvbi4gKi8KK3N0YXRpYyB1aW50 MzIgc2hhcmVkX3BhcmFtc19nZW5lcmF0aW9uX2xvY2FsID0gMDsKKwogc3RhdGljIGludAlwYXJh bGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4 ZXMsIGludCBucmVxdWVzdGVkLAogCQkJCQkJCQkJCQlib29sICp3aWxsX3BhcmFsbGVsX3ZhY3V1 bSk7CiBzdGF0aWMgdm9pZCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJh bGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5kZXhfc2NhbnMsCkBAIC0zOTYsNiArNDU5 LDE3IEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gKmluZHJl bHMsIGludCBuaW5kZXhlcywKIAlwZ19hdG9taWNfaW5pdF91MzIoJihzaGFyZWQtPmFjdGl2ZV9u d29ya2VycyksIDApOwogCXBnX2F0b21pY19pbml0X3UzMigmKHNoYXJlZC0+aWR4KSwgMCk7CiAK KwlzaGFyZWQtPmlzX2F1dG92YWN1dW0gPSBBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCk7CisK KwlpZiAoc2hhcmVkLT5pc19hdXRvdmFjdXVtKQorCXsKKwkJRmlsbFZhY0Nvc3RQYXJhbXMoJnNo YXJlZC0+Y29zdF9wYXJhbXMucGFyYW1zX2RhdGEpOworCQlwZ19hdG9taWNfaW5pdF91MzIoJnNo YXJlZC0+Y29zdF9wYXJhbXMuZ2VuZXJhdGlvbiwgMCk7CisJCVNwaW5Mb2NrSW5pdCgmc2hhcmVk LT5jb3N0X3BhcmFtcy5tdXRleCk7CisKKwkJcHZfc2hhcmVkX2Nvc3RfcGFyYW1zID0gJihzaGFy ZWQtPmNvc3RfcGFyYW1zKTsKKwl9CisKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFM TEVMX1ZBQ1VVTV9LRVlfU0hBUkVELCBzaGFyZWQpOwogCXB2cy0+c2hhcmVkID0gc2hhcmVkOwog CkBAIC01NDAsNiArNjE0LDkyIEBAIHBhcmFsbGVsX3ZhY3V1bV9jbGVhbnVwX2FsbF9pbmRleGVz KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgbG9uZyBudW1fdGFibGVfdHVwCiAJCQkJCQkJCQkJ Jnd1c2FnZS0+Y2xlYW51cCk7CiB9CiAKKy8qCisgKiBJZiB3ZSBhcmUgcGFyYWxsZWwgKmF1dG92 YWN1dW0qIHdvcmtlciwgY2hlY2sgd2hldGhlciByZWxhdGVkIHRvIGNvc3QtYmFzZWQKKyAqIHZh Y3V1bSBkZWxheSBwYXJhbWV0ZXJzIGhhZCBjaGFuZ2VkIGluIHRoZSBsZWFkZXIgd29ya2VyLiBJ ZiBzbywKKyAqIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycyB3aWxsIGJlIHVwZGF0ZWQgdG8gdGhl IHZhbHVlcyB3aGljaCBsZWFkZXIgd29ya2VyCisgKiBpcyBvcGVyYXRpbmcgb24uCisgKgorICog Rm9yIG5vbi1hdXRvdmFjdXVtIHBhcmFsbGVsIHdvcmtlciB0aGlzIGZ1bmN0aW9uIHdpbGwgaGF2 ZSBubyBlZmZlY3QuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX3ZhY3V1bV91cGRhdGVfc2hhcmVkX2Rl bGF5X3BhcmFtcyh2b2lkKQoreworCXVpbnQzMgkJcGFyYW1zX2dlbmVyYXRpb247CisKKwlBc3Nl cnQoSXNQYXJhbGxlbFdvcmtlcigpKTsKKworCS8qIENoZWNrIHdoZXRoZXIgd2UgYXJlIHJ1bm5p bmcgcGFyYWxsZWwgYXV0b3ZhY3V1bSAqLworCWlmIChwdl9zaGFyZWRfY29zdF9wYXJhbXMgPT0g TlVMTCkKKwkJcmV0dXJuOworCisJcGFyYW1zX2dlbmVyYXRpb24gPSBwZ19hdG9taWNfcmVhZF91 MzIoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Z2VuZXJhdGlvbik7CisJQXNzZXJ0KHNoYXJlZF9w YXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCA8PSBwYXJhbXNfZ2VuZXJhdGlvbik7CisKKwkvKiBSZXR1 cm4gaWYgcGFyYW1ldGVycyBoYWQgbm90IGNoYW5nZWQgaW4gdGhlIGxlYWRlciAqLworCWlmIChw YXJhbXNfZ2VuZXJhdGlvbiA9PSBzaGFyZWRfcGFyYW1zX2dlbmVyYXRpb25fbG9jYWwpCisJCXJl dHVybjsKKworCVNwaW5Mb2NrQWNxdWlyZSgmcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5tdXRleCk7 CisKKwlWYWN1dW1Db3N0RGVsYXkgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPnBhcmFtc19kYXRh LmNvc3RfZGVsYXk7CisJVmFjdXVtQ29zdExpbWl0ID0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5w YXJhbXNfZGF0YS5jb3N0X2xpbWl0OworCVZhY3V1bUNvc3RQYWdlRGlydHkgPSBwdl9zaGFyZWRf Y29zdF9wYXJhbXMtPnBhcmFtc19kYXRhLmNvc3RfcGFnZV9kaXJ0eTsKKwlWYWN1dW1Db3N0UGFn ZUhpdCA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+cGFyYW1zX2RhdGEuY29zdF9wYWdlX2hpdDsK KwlWYWN1dW1Db3N0UGFnZU1pc3MgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPnBhcmFtc19kYXRh LmNvc3RfcGFnZV9taXNzOworCisJU3BpbkxvY2tSZWxlYXNlKCZwdl9zaGFyZWRfY29zdF9wYXJh bXMtPm11dGV4KTsKKworCVZhY3V1bVVwZGF0ZUNvc3RzKCk7CisKKwlzaGFyZWRfcGFyYW1zX2dl bmVyYXRpb25fbG9jYWwgPSBwYXJhbXNfZ2VuZXJhdGlvbjsKK30KKworLyoKKyAqIEZ1bmN0aW9u IHRvIGJlIGNhbGxlZCBmcm9tIHBhcmFsbGVsIGF1dG92YWN1dW0gbGVhZGVyIGluIG9yZGVyIHRv IHByb3BhZ2F0ZQorICogc29tZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIHRv IHRoZSBzdXBwb3J0aXZlIHdvcmtlcnMuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX3ZhY3V1bV9wcm9w YWdhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcyh2b2lkKQoreworCVZhY3V1bUNvc3RQYXJhbXMgKnBh cmFtc19kYXRhOworCisJQXNzZXJ0KEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSk7CisKKwkv KiBDaGVjayB3aGV0aGVyIHdlIGFyZSBydW5uaW5nIHBhcmFsbGVsIGF1dG92YWN1dW0gKi8KKwlp ZiAocHZfc2hhcmVkX2Nvc3RfcGFyYW1zID09IE5VTEwpCisJCXJldHVybjsKKworCS8qCisJICog T25seSBsZWFkZXIgd29ya2VyIGNhbiBtb2RpZnkgdGhpcyBzaGFyZWQgc3RydWN0dXJlLCBzbyB3 ZSBjYW4gcmVhZCBpdAorCSAqIHdpdGhvdXQgYWNxdWlyaW5nIGEgbG9jay4KKwkgKi8KKwlwYXJh bXNfZGF0YSA9ICZwdl9zaGFyZWRfY29zdF9wYXJhbXMtPnBhcmFtc19kYXRhOworCisJaWYgKHZh Y3V1bV9jb3N0X2RlbGF5ID09IHBhcmFtc19kYXRhLT5jb3N0X2RlbGF5ICYmCisJCXZhY3V1bV9j b3N0X2xpbWl0ID09IHBhcmFtc19kYXRhLT5jb3N0X2xpbWl0ICYmCisJCVZhY3V1bUNvc3RQYWdl RGlydHkgPT0gcGFyYW1zX2RhdGEtPmNvc3RfcGFnZV9kaXJ0eSAmJgorCQlWYWN1dW1Db3N0UGFn ZUhpdCA9PSBwYXJhbXNfZGF0YS0+Y29zdF9wYWdlX2hpdCAmJgorCQlWYWN1dW1Db3N0UGFnZU1p c3MgPT0gcGFyYW1zX2RhdGEtPmNvc3RfcGFnZV9taXNzKQorCXsKKwkJLyoKKwkJICogV2UgZG9u J3QgbmVlZCB0byB1cGRhdGUgc2hhcmVkIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtcyBp ZgorCQkgKiB0aGV5IGhhdmVuJ3QgY2hhbmdlZC4KKwkJICovCisJCXJldHVybjsKKwl9CisKKwlT cGluTG9ja0FjcXVpcmUoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+bXV0ZXgpOworCUZpbGxWYWND b3N0UGFyYW1zKCZwdl9zaGFyZWRfY29zdF9wYXJhbXMtPnBhcmFtc19kYXRhKTsKKwlTcGluTG9j a1JlbGVhc2UoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+bXV0ZXgpOworCisJLyoKKwkgKiBJbmNy ZWFzZSBnZW5lcmF0aW9uIG9mIHRoZSBwYXJhbWV0ZXJzLCBpLmUuIGxldCBwYXJhbGxlbCB3b3Jr ZXJzIGtub3cKKwkgKiB0aGF0IHRoZXkgc2hvdWxkIHJlLXJlYWQgc2hhcmVkIGNvc3QgcGFyYW1z LgorCSAqLworCXBnX2F0b21pY19mZXRjaF9hZGRfdTMyKCZwdl9zaGFyZWRfY29zdF9wYXJhbXMt PmdlbmVyYXRpb24sIDEpOworfQorCiAvKgogICogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIHBhcmFs bGVsIHdvcmtlciBwcm9jZXNzZXMgdG8gcmVxdWVzdC4gIEJvdGggaW5kZXgKICAqIHZhY3V1bSBh bmQgaW5kZXggY2xlYW51cCBjYW4gYmUgZXhlY3V0ZWQgd2l0aCBwYXJhbGxlbCB3b3JrZXJzLgpA QCAtMTEwOSw2ICsxMjY5LDkgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNl Zywgc2htX3RvYyAqdG9jKQogCVZhY3V1bVNoYXJlZENvc3RCYWxhbmNlID0gJihzaGFyZWQtPmNv c3RfYmFsYW5jZSk7CiAJVmFjdXVtQWN0aXZlTldvcmtlcnMgPSAmKHNoYXJlZC0+YWN0aXZlX253 b3JrZXJzKTsKIAorCWlmIChzaGFyZWQtPmlzX2F1dG92YWN1dW0pCisJCXB2X3NoYXJlZF9jb3N0 X3BhcmFtcyA9ICYoc2hhcmVkLT5jb3N0X3BhcmFtcyk7CisKIAkvKiBTZXQgcGFyYWxsZWwgdmFj dXVtIHN0YXRlICovCiAJcHZzLmluZHJlbHMgPSBpbmRyZWxzOwogCXB2cy5uaW5kZXhlcyA9IG5p bmRleGVzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCBmNDBhYmU5MGVkNS4u MGQ3OGQwMmJkMDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1 bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC0xNjkwLDcg KzE2OTAsNyBAQCBWYWN1dW1VcGRhdGVDb3N0cyh2b2lkKQogCX0KIAllbHNlCiAJewotCQkvKiBN dXN0IGJlIGV4cGxpY2l0IFZBQ1VVTSBvciBBTkFMWVpFICovCisJCS8qIE11c3QgYmUgZXhwbGlj aXQgVkFDVVVNIG9yIEFOQUxZWkUgb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXIgKi8KIAkJ dmFjdXVtX2Nvc3RfZGVsYXkgPSBWYWN1dW1Db3N0RGVsYXk7CiAJCXZhY3V1bV9jb3N0X2xpbWl0 ID0gVmFjdXVtQ29zdExpbWl0OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKaW5kZXggMWIxZmI2MjVj YjIuLjRiZmViYTgyNjRkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0u aAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaApAQCAtNDM0LDYgKzQzNCw4IEBA IGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9jbGVhbnVwX2FsbF9pbmRleGVzKFBhcmFsbGVs VmFjdXVtU3RhdGUgKnB2cywKIAkJCQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsCiAJCQkJ CQkJCQkJCQlib29sIGVzdGltYXRlZF9jb3VudCwKIAkJCQkJCQkJCQkJCVBWV29ya2Vyc1VzYWdl ICp3dXNhZ2UpOworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVs YXlfcGFyYW1zKHZvaWQpOworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3Byb3BhZ2F0ZV9z aGFyZWRfZGVsYXlfcGFyYW1zKHZvaWQpOwogZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX21h aW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKTsKIAogLyogaW4gY29tbWFuZHMvYW5h bHl6ZS5jICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBi L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDUzNjIzN2ZmNTQ2Li5kZTlm NTc2ZTBmMyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysr IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTIwNzAsNiArMjA3MCw3IEBA IFBWSW5kU3RhdHMKIFBWSW5kVmFjU3RhdHVzCiBQVk9JRAogUFZTaGFyZWQKK1BWU2hhcmVkQ29z dFBhcmFtcwogUFZXb3JrZXJzVXNhZ2UKIFBWV29ya2Vyc1N0YXRzCiBQWF9BbGlhcwpAQCAtMzI0 OSw2ICszMjUwLDcgQEAgVmFjQXR0clN0YXRzUAogVmFjRGVhZEl0ZW1zSW5mbwogVmFjRXJyUGhh c2UKIFZhY09wdFZhbHVlCitWYWN1dW1Db3N0UGFyYW1zCiBWYWN1dW1QYXJhbXMKIFZhY3V1bVJl bGF0aW9uCiBWYWN1dW1TdG10Ci0tIAoyLjQzLjAKCg== --0000000000009cf03e064bf78ae5 Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0002-Logging-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v23-0002-Logging-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm7v39k13 RnJvbSA0YjRmZTJlZGI1N2RjNmQ5MTBkYzdhMzcxNjFiZWRlNGU3NTJkOTgyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjA3OjQ3ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjMgMi81XSBMb2dnaW5nIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgfCA1NCArKysrKysrKysrKysrKysrKysrKysr KysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgfCAzMiArKysrKysr KysrKysrLS0tCiBzcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCAgICAgICAgIHwgMzkgKysr KysrKysrKysrKysrKysrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICB8 ICAyICsKIDQgZmlsZXMgY2hhbmdlZCwgMTE3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA1ZDI3MWQ4MDk2Ny4uMWUy ZDViZTFhZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTM0Miw2ICsz NDIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogCWludAkJCW51bV9pbmRleF9zY2Fu czsKIAlpbnQJCQludW1fZGVhZF9pdGVtc19yZXNldHM7CiAJU2l6ZQkJdG90YWxfZGVhZF9pdGVt c19ieXRlczsKKworCS8qCisJICogVG90YWwgbnVtYmVyIG9mIHBsYW5uZWQgYW5kIGFjdHVhbGx5 IGxhdW5jaGVkIHBhcmFsbGVsIHdvcmtlcnMgZm9yCisJICogaW5kZXggc2NhbnMuCisJICovCisJ UFZXb3JrZXJzVXNhZ2Ugd29ya2Vyc191c2FnZTsKKwogCS8qIENvdW50ZXJzIHRoYXQgZm9sbG93 IGFyZSBvbmx5IGZvciBzY2FubmVkX3BhZ2VzICovCiAJaW50NjQJCXR1cGxlc19kZWxldGVkOyAv KiAjIGRlbGV0ZWQgZnJvbSB0YWJsZSAqLwogCWludDY0CQl0dXBsZXNfZnJvemVuOwkvKiAjIG5l d2x5IGZyb3plbiAqLwpAQCAtNzgwLDYgKzc4NywxMSBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRp b24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCXZhY3JlbC0+bmV3X2FsbF92aXNp YmxlX2FsbF9mcm96ZW5fcGFnZXMgPSAwOwogCXZhY3JlbC0+bmV3X2FsbF9mcm96ZW5fcGFnZXMg PSAwOwogCisJdmFjcmVsLT53b3JrZXJzX3VzYWdlLnZhY3V1bS5ubGF1bmNoZWQgPSAwOworCXZh Y3JlbC0+d29ya2Vyc191c2FnZS52YWN1dW0ubnBsYW5uZWQgPSAwOworCXZhY3JlbC0+d29ya2Vy c191c2FnZS5jbGVhbnVwLm5sYXVuY2hlZCA9IDA7CisJdmFjcmVsLT53b3JrZXJzX3VzYWdlLmNs ZWFudXAubnBsYW5uZWQgPSAwOworCiAJLyoKIAkgKiBHZXQgY3V0b2ZmcyB0aGF0IGRldGVybWlu ZSB3aGljaCBkZWxldGVkIHR1cGxlcyBhcmUgY29uc2lkZXJlZCBERUFELAogCSAqIG5vdCBqdXN0 IFJFQ0VOVExZX0RFQUQsIGFuZCB3aGljaCBYSURzL01YSURzIHRvIGZyZWV6ZS4gIFRoZW4gZGV0 ZXJtaW5lCkBAIC0xMTIyLDYgKzExMzQsNDIgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJl bCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkJCQkJCQkgb3JpZ19yZWxfcGFnZXMgPT0g MCA/IDEwMC4wIDoKIAkJCQkJCQkgMTAwLjAgKiB2YWNyZWwtPmxwZGVhZF9pdGVtX3BhZ2VzIC8g b3JpZ19yZWxfcGFnZXMsCiAJCQkJCQkJIHZhY3JlbC0+bHBkZWFkX2l0ZW1zKTsKKwkJCWlmICh2 YWNyZWwtPndvcmtlcnNfdXNhZ2UudmFjdXVtLm5wbGFubmVkID4gMCkKKwkJCXsKKwkJCQlpZiAo QW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQorCQkJCXsKKwkJCQkJYXBwZW5kU3RyaW5nSW5m bygmYnVmLAorCQkJCQkJCQkJIF8oInBhcmFsbGVsIHdvcmtlcnM6IGluZGV4IHZhY3V1bTogJWQg cGxhbm5lZCwgJWQgcmVzZXJ2ZWQsICVkIGxhdW5jaGVkIGluIHRvdGFsXG4iKSwKKwkJCQkJCQkJ CSB2YWNyZWwtPndvcmtlcnNfdXNhZ2UudmFjdXVtLm5wbGFubmVkLAorCQkJCQkJCQkJIHZhY3Jl bC0+d29ya2Vyc191c2FnZS52YWN1dW0ubnJlc2VydmVkLAorCQkJCQkJCQkJIHZhY3JlbC0+d29y a2Vyc191c2FnZS52YWN1dW0ubmxhdW5jaGVkKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJ CQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLAorCQkJCQkJCQkJIF8oInBhcmFsbGVsIHdvcmtlcnM6 IGluZGV4IHZhY3V1bTogJWQgcGxhbm5lZCwgJWQgbGF1bmNoZWQgaW4gdG90YWxcbiIpLAorCQkJ CQkJCQkJIHZhY3JlbC0+d29ya2Vyc191c2FnZS52YWN1dW0ubnBsYW5uZWQsCisJCQkJCQkJCQkg dmFjcmVsLT53b3JrZXJzX3VzYWdlLnZhY3V1bS5ubGF1bmNoZWQpOworCQkJCX0KKwkJCX0KKwkJ CWlmICh2YWNyZWwtPndvcmtlcnNfdXNhZ2UuY2xlYW51cC5ucGxhbm5lZCA+IDApCisJCQl7CisJ CQkJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKKwkJCQl7CisJCQkJCWFwcGVuZFN0 cmluZ0luZm8oJmJ1ZiwKKwkJCQkJCQkJCSBfKCJwYXJhbGxlbCB3b3JrZXJzOiBpbmRleCBjbGVh bnVwOiAlZCBwbGFubmVkLCAlZCByZXNlcnZlZCwgJWQgbGF1bmNoZWRcbiIpLAorCQkJCQkJCQkJ IHZhY3JlbC0+d29ya2Vyc191c2FnZS5jbGVhbnVwLm5wbGFubmVkLAorCQkJCQkJCQkJIHZhY3Jl bC0+d29ya2Vyc191c2FnZS5jbGVhbnVwLm5yZXNlcnZlZCwKKwkJCQkJCQkJCSB2YWNyZWwtPndv cmtlcnNfdXNhZ2UuY2xlYW51cC5ubGF1bmNoZWQpOworCQkJCX0KKwkJCQllbHNlCisJCQkJewor CQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsCisJCQkJCQkJCQkgXygicGFyYWxsZWwgd29ya2Vy czogaW5kZXggY2xlYW51cDogJWQgcGxhbm5lZCwgJWQgbGF1bmNoZWRcbiIpLAorCQkJCQkJCQkJ IHZhY3JlbC0+d29ya2Vyc191c2FnZS5jbGVhbnVwLm5wbGFubmVkLAorCQkJCQkJCQkJIHZhY3Jl bC0+d29ya2Vyc191c2FnZS5jbGVhbnVwLm5sYXVuY2hlZCk7CisJCQkJfQorCQkJfQogCQkJZm9y IChpbnQgaSA9IDA7IGkgPCB2YWNyZWwtPm5pbmRleGVzOyBpKyspCiAJCQl7CiAJCQkJSW5kZXhC dWxrRGVsZXRlUmVzdWx0ICppc3RhdCA9IHZhY3JlbC0+aW5kc3RhdHNbaV07CkBAIC0yNjY2LDcg KzI3MTQsOCBAQCBsYXp5X3ZhY3V1bV9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpCiAJ ewogCQkvKiBPdXRzb3VyY2UgZXZlcnl0aGluZyB0byBwYXJhbGxlbCB2YXJpYW50ICovCiAJCXBh cmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9pbmRleGVzKHZhY3JlbC0+cHZzLCBvbGRfbGl2ZV90 dXBsZXMsCi0JCQkJCQkJCQkJCXZhY3JlbC0+bnVtX2luZGV4X3NjYW5zKTsKKwkJCQkJCQkJCQkJ dmFjcmVsLT5udW1faW5kZXhfc2NhbnMsCisJCQkJCQkJCQkJCSZ2YWNyZWwtPndvcmtlcnNfdXNh Z2UpOwogCiAJCS8qCiAJCSAqIERvIGEgcG9zdGNoZWNrIHRvIGNvbnNpZGVyIGFwcGx5aW5nIHdy YXBhcm91bmQgZmFpbHNhZmUgbm93LiAgTm90ZQpAQCAtMzA5OSw3ICszMTQ4LDggQEAgbGF6eV9j bGVhbnVwX2FsbF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJLyogT3V0c291cmNlIGV2 ZXJ5dGhpbmcgdG8gcGFyYWxsZWwgdmFyaWFudCAqLwogCQlwYXJhbGxlbF92YWN1dW1fY2xlYW51 cF9hbGxfaW5kZXhlcyh2YWNyZWwtPnB2cywgcmVsdHVwbGVzLAogCQkJCQkJCQkJCQl2YWNyZWwt Pm51bV9pbmRleF9zY2FucywKLQkJCQkJCQkJCQkJZXN0aW1hdGVkX2NvdW50KTsKKwkJCQkJCQkJ CQkJZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJCQkJCQkmdmFjcmVsLT53b3JrZXJzX3VzYWdlKTsK IAl9CiAKIAkvKiBSZXNldCB0aGUgcHJvZ3Jlc3MgY291bnRlcnMgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDgwNmE3ZjQ4MzI2Li42NDM4NDliMmZiOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0yMjgsNyArMjI4LDcgQEAgc3RydWN0 IFBhcmFsbGVsVmFjdXVtU3RhdGUKIHN0YXRpYyBpbnQJcGFyYWxsZWxfdmFjdXVtX2NvbXB1dGVf d29ya2VycyhSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLCBpbnQgbnJlcXVlc3RlZCwK IAkJCQkJCQkJCQkJYm9vbCAqd2lsbF9wYXJhbGxlbF92YWN1dW0pOwogc3RhdGljIHZvaWQgcGFy YWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZz LCBpbnQgbnVtX2luZGV4X3NjYW5zLAotCQkJCQkJCQkJCQkJYm9vbCB2YWN1dW0pOworCQkJCQkJ CQkJCQkJYm9vbCB2YWN1dW0sIFBWV29ya2Vyc1N0YXRzICp3c3RhdHMpOwogc3RhdGljIHZvaWQg cGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfc2FmZV9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUg KnB2cyk7CiBzdGF0aWMgdm9pZCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc191bnNhZmVfaW5kZXhl cyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMpOwogc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFjdXVt X3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24gaW5k cmVsLApAQCAtNTAzLDcgKzUwMyw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9yZXNldF9kZWFkX2l0ZW1z KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cykKICAqLwogdm9pZAogcGFyYWxsZWxfdmFjdXVtX2J1 bGtkZWxfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJs ZV90dXBsZXMsCi0JCQkJCQkJCQlpbnQgbnVtX2luZGV4X3NjYW5zKQorCQkJCQkJCQkJaW50IG51 bV9pbmRleF9zY2FucywgUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSkKIHsKIAlBc3NlcnQoIUlzUGFy YWxsZWxXb3JrZXIoKSk7CiAKQEAgLTUxNCw3ICs1MTQsOCBAQCBwYXJhbGxlbF92YWN1dW1fYnVs a2RlbF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVtX3RhYmxl X3R1cAogCXB2cy0+c2hhcmVkLT5yZWx0dXBsZXMgPSBudW1fdGFibGVfdHVwbGVzOwogCXB2cy0+ c2hhcmVkLT5lc3RpbWF0ZWRfY291bnQgPSB0cnVlOwogCi0JcGFyYWxsZWxfdmFjdXVtX3Byb2Nl c3NfYWxsX2luZGV4ZXMocHZzLCBudW1faW5kZXhfc2NhbnMsIHRydWUpOworCXBhcmFsbGVsX3Zh Y3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5zLCB0cnVlLAorCQkJ CQkJCQkJCSZ3dXNhZ2UtPnZhY3V1bSk7CiB9CiAKIC8qCkBAIC01MjIsNyArNTIzLDggQEAgcGFy YWxsZWxfdmFjdXVtX2J1bGtkZWxfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZz LCBsb25nIG51bV90YWJsZV90dXAKICAqLwogdm9pZAogcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBf YWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJsZV90dXBs ZXMsCi0JCQkJCQkJCQlpbnQgbnVtX2luZGV4X3NjYW5zLCBib29sIGVzdGltYXRlZF9jb3VudCkK KwkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsIGJvb2wgZXN0aW1hdGVkX2NvdW50LAorCQkJ CQkJCQkJUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSkKIHsKIAlBc3NlcnQoIUlzUGFyYWxsZWxXb3Jr ZXIoKSk7CiAKQEAgLTUzNCw3ICs1MzYsOCBAQCBwYXJhbGxlbF92YWN1dW1fY2xlYW51cF9hbGxf aW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVtX3RhYmxlX3R1cAogCXB2 cy0+c2hhcmVkLT5yZWx0dXBsZXMgPSBudW1fdGFibGVfdHVwbGVzOwogCXB2cy0+c2hhcmVkLT5l c3RpbWF0ZWRfY291bnQgPSBlc3RpbWF0ZWRfY291bnQ7CiAKLQlwYXJhbGxlbF92YWN1dW1fcHJv Y2Vzc19hbGxfaW5kZXhlcyhwdnMsIG51bV9pbmRleF9zY2FucywgZmFsc2UpOworCXBhcmFsbGVs X3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5zLCBmYWxzZSwK KwkJCQkJCQkJCQkmd3VzYWdlLT5jbGVhbnVwKTsKIH0KIAogLyoKQEAgLTYxNiwxMCArNjE5LDEz IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21wdXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGlu dCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0ZWQsCiAvKgogICogUGVyZm9ybSBpbmRleCB2YWN1dW0g b3IgaW5kZXggY2xlYW51cCB3aXRoIHBhcmFsbGVsIHdvcmtlcnMuICBUaGlzIGZ1bmN0aW9uCiAg KiBtdXN0IGJlIHVzZWQgYnkgdGhlIHBhcmFsbGVsIHZhY3V1bSBsZWFkZXIgcHJvY2Vzcy4KKyAq CisgKiBJZiB3c3RhdHMgaXMgbm90IE5VTEwsIHRoZSBzdGF0aXN0aWNzIGl0IHN0b3JlcyB3aWxs IGJlIHVwZGF0ZWQgYWNjb3JkaW5nCisgKiB0byB3aGF0IGhhcHBlbnMgZHVyaW5nIGZ1bmN0aW9u IGV4ZWN1dGlvbi4KICAqLwogc3RhdGljIHZvaWQKIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2Fs bF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FucywK LQkJCQkJCQkJCWJvb2wgdmFjdXVtKQorCQkJCQkJCQkJYm9vbCB2YWN1dW0sIFBWV29ya2Vyc1N0 YXRzICp3c3RhdHMpCiB7CiAJaW50CQkJbndvcmtlcnM7CiAJUFZJbmRWYWNTdGF0dXMgbmV3X3N0 YXR1czsKQEAgLTY1NiwxMyArNjYyLDIzIEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9p bmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAJICov CiAJbndvcmtlcnMgPSBNaW4obndvcmtlcnMsIHB2cy0+cGN4dC0+bndvcmtlcnMpOwogCisJLyog UmVtZW1iZXIgdGhpcyB2YWx1ZSwgaWYgd2UgYXNrZWQgdG8gKi8KKwlpZiAod3N0YXRzICE9IE5V TEwgJiYgbndvcmtlcnMgPiAwKQorCQl3c3RhdHMtPm5wbGFubmVkICs9IG53b3JrZXJzOworCiAJ LyoKIAkgKiBSZXNlcnZlIHdvcmtlcnMgaW4gYXV0b3ZhY3V1bSBnbG9iYWwgc3RhdGUuIE5vdGUg dGhhdCB3ZSBtYXkgYmUgZ2l2ZW4KIAkgKiBmZXdlciB3b3JrZXJzIHRoYW4gd2UgcmVxdWVzdGVk LgogCSAqLwogCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgbndvcmtlcnMgPiAw KQorCXsKIAkJQXV0b1ZhY3V1bVJlc2VydmVQYXJhbGxlbFdvcmtlcnMoJm53b3JrZXJzKTsKIAor CQkvKiBSZW1lbWJlciB0aGlzIHZhbHVlLCBpZiB3ZSBhc2tlZCB0byAqLworCQlpZiAod3N0YXRz ICE9IE5VTEwpCisJCQl3c3RhdHMtPm5yZXNlcnZlZCArPSBud29ya2VyczsKKwl9CisKIAkvKgog CSAqIFNldCBpbmRleCB2YWN1dW0gc3RhdHVzIGFuZCBtYXJrIHdoZXRoZXIgcGFyYWxsZWwgdmFj dXVtIHdvcmtlciBjYW4KIAkgKiBwcm9jZXNzIGl0LgpAQCAtNzI5LDYgKzc0NSwxMCBAQCBwYXJh bGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMs IGludCBudW1faW5kZXhfc2NhbgogCQkJLyogRW5hYmxlIHNoYXJlZCBjb3N0IGJhbGFuY2UgZm9y IGxlYWRlciBiYWNrZW5kICovCiAJCQlWYWN1dW1TaGFyZWRDb3N0QmFsYW5jZSA9ICYocHZzLT5z aGFyZWQtPmNvc3RfYmFsYW5jZSk7CiAJCQlWYWN1dW1BY3RpdmVOV29ya2VycyA9ICYocHZzLT5z aGFyZWQtPmFjdGl2ZV9ud29ya2Vycyk7CisKKwkJCS8qIFJlbWVtYmVyIHRoaXMgdmFsdWUsIGlm IHdlIGFza2VkIHRvICovCisJCQlpZiAod3N0YXRzICE9IE5VTEwpCisJCQkJd3N0YXRzLT5ubGF1 bmNoZWQgKz0gcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsKIAkJfQogCiAJCWlmICh2YWN1 dW0pCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3ZhY3V1bS5oCmluZGV4IGU4ODVhNGI5Yzc3Li4xYjFmYjYyNWNiMiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdmFjdXVtLmgKQEAgLTMwMCw2ICszMDAsMzkgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFj RGVhZEl0ZW1zSW5mbwogCWludDY0CQludW1faXRlbXM7CQkvKiBjdXJyZW50ICMgb2YgZW50cmll cyAqLwogfSBWYWNEZWFkSXRlbXNJbmZvOwogCisvKgorICogSGVscGVyIGZvciB0aGUgUFZXb3Jr ZXJzVXNhZ2Ugc3RydWN0dXJlIChzZWUgYmVsb3cpLCB0byBhdm9pZCByZXBldGl0aW9uLgorICov Cit0eXBlZGVmIHN0cnVjdCBQVldvcmtlcnNTdGF0cworeworCS8qIE51bWJlciBvZiBwYXJhbGxl bCB3b3JrZXJzIHdlIGFyZSBwbGFubmVkIHRvIGxhdW5jaCAqLworCWludAkJCW5wbGFubmVkOwor CisJLyoKKwkgKiBOdW1iZXIgb2YgcGFyYWxsZWwgd29ya2VycyB3ZSBoYXZlIG1hbmFnZWQgdG8g cmVzZXJ2ZS4KKwkgKgorCSAqIE5vdGUsIHRoYXQgd2UgY29sbGVjdCB0aGlzIHN0YXRzIG9ubHkg Zm9yIHRoZSBwYXJhbGxlbCAqYXV0b3ZhY3V1bSoKKwkgKiBzaW5jZSBkdXJpbmcgaXQgd2UgbXVz dCByZXNlcnZlIHdvcmtlcnMgaW4gc2hhcmVkIHN0YXRlIGJlZm9yZSBhY3R1YWxseQorCSAqIHRy eWluZyB0byBsYXVuY2ggdGhlbSAoaW4gb3JkZXIgdG8gbWVldCB0aGUKKwkgKiBhdXRvdmFjdXVt X21heF9wYXJhbGxlbF93b3JrZXJzIGxpbWl0KS4gTWFudWFsIFZBQ1VVTSAoUEFSQUxMRUwpLCBv bgorCSAqIHRoZSBjb250cmFyeSwgZG9lc24ndCBuZWVkIHRvIHJlc2VydmUgd29ya2Vycy4KKwkg Ki8KKwlpbnQJCQlucmVzZXJ2ZWQ7CisKKwkvKiBOdW1iZXIgb2YgbGF1bmNoZWQgcGFyYWxsZWwg d29ya2VycyAqLworCWludAkJCW5sYXVuY2hlZDsKK30gUFZXb3JrZXJzU3RhdHM7CisKKy8qCisg KiBQVldvcmtlcnNVc2FnZSBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdG90YWwgbnVtYmVyIG9m IGxhdW5jaGVkLCByZXNlcnZlZAorICogYW5kIHBsYW5uZWQgd29ya2VycyBkdXJpbmcgcGFyYWxs ZWwgdmFjdXVtIChib3RoIGZvciB2YWN1dW0gYW5kIGNsZWFudXApLgorICovCit0eXBlZGVmIHN0 cnVjdCBQVldvcmtlcnNVc2FnZQoreworCVBWV29ya2Vyc1N0YXRzIHZhY3V1bTsKKwlQVldvcmtl cnNTdGF0cyBjbGVhbnVwOworfSBQVldvcmtlcnNVc2FnZTsKKwogLyogR1VDIHBhcmFtZXRlcnMg Ki8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgZGVmYXVsdF9zdGF0aXN0aWNzX3RhcmdldDsJLyog UEdETExJTVBPUlQgZm9yIFBvc3RHSVMgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgdmFjdXVt X2ZyZWV6ZV9taW5fYWdlOwpAQCAtMzk0LDExICs0MjcsMTMgQEAgZXh0ZXJuIFRpZFN0b3JlICpw YXJhbGxlbF92YWN1dW1fZ2V0X2RlYWRfaXRlbXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLAog ZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3Jlc2V0X2RlYWRfaXRlbXMoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzKTsKIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9p bmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywKIAkJCQkJCQkJCQkJCWxvbmcgbnVtX3Rh YmxlX3R1cGxlcywKLQkJCQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMpOworCQkJCQkJCQkJ CQkJaW50IG51bV9pbmRleF9zY2FucywKKwkJCQkJCQkJCQkJCVBWV29ya2Vyc1VzYWdlICp3dXNh Z2UpOwogZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxsX2luZGV4ZXMoUGFy YWxsZWxWYWN1dW1TdGF0ZSAqcHZzLAogCQkJCQkJCQkJCQkJbG9uZyBudW1fdGFibGVfdHVwbGVz LAogCQkJCQkJCQkJCQkJaW50IG51bV9pbmRleF9zY2FucywKLQkJCQkJCQkJCQkJCWJvb2wgZXN0 aW1hdGVkX2NvdW50KTsKKwkJCQkJCQkJCQkJCWJvb2wgZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJ CQkJCQkJUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSk7CiBleHRlcm4gdm9pZCBwYXJhbGxlbF92YWN1 dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpOwogCiAvKiBpbiBjb21tYW5k cy9hbmFseXplLmMgKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNzdlM2MwNDE0NGUu LjUzNjIzN2ZmNTQ2IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjA3MCw2ICsyMDcw LDggQEAgUFZJbmRTdGF0cwogUFZJbmRWYWNTdGF0dXMKIFBWT0lECiBQVlNoYXJlZAorUFZXb3Jr ZXJzVXNhZ2UKK1BWV29ya2Vyc1N0YXRzCiBQWF9BbGlhcwogUFhfQ2lwaGVyCiBQWF9Db21ibwot LSAKMi40My4wCgo= --0000000000009cf03e064bf78ae5 Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0001-Parallel-autovacuum.patch" Content-Disposition: attachment; filename="v23-0001-Parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm7v39ke4 RnJvbSAyNGJlZjJiM2U1NzM2YjM2M2QxMTM4ODJmYTlhNTM0NzVjNDdmYzM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjAzOjI0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjMgMS81XSBQYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vcmVsb3B0aW9ucy5jICAgICAgICB8ICAxMSArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgIDQyICsrKystCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAxNjQgKysrKysrKysrKysrKysrKystCiBzcmMv YmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCAgICAgfCAgIDggKwogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9t aXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmggICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL3V0aWxz L3JlbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArCiAxMSBmaWxlcyBjaGFuZ2VkLCAy NDAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9u L3JlbG9wdGlvbnMuYwppbmRleCAyMzdhYjhkMGVkOS4uOTQ1OWEwMTBjYzMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCkBAIC0yMzUsNiArMjM1LDE1IEBAIHN0YXRpYyBy ZWxvcHRfaW50IGludFJlbE9wdHNbXSA9CiAJCX0sCiAJCVNQR0lTVF9ERUZBVUxUX0ZJTExGQUNU T1IsIFNQR0lTVF9NSU5fRklMTEZBQ1RPUiwgMTAwCiAJfSwKKwl7CisJCXsKKwkJCSJhdXRvdmFj dXVtX3BhcmFsbGVsX3dvcmtlcnMiLAorCQkJIk1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1 dG92YWN1dW0gd29ya2VycyB0aGF0IGNhbiBiZSB1c2VkIGZvciBwcm9jZXNzaW5nIHRoaXMgdGFi bGUuIiwKKwkJCVJFTE9QVF9LSU5EX0hFQVAsCisJCQlTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sK KwkJfSwKKwkJLTEsIC0xLCAxMDI0CisJfSwKIAl7CiAJCXsKIAkJCSJhdXRvdmFjdXVtX3ZhY3V1 bV90aHJlc2hvbGQiLApAQCAtMTk2OCw2ICsxOTc3LDggQEAgZGVmYXVsdF9yZWxvcHRpb25zKERh dHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUsIHJlbG9wdF9raW5kIGtpbmQpCiAJCXsiZmls bGZhY3RvciIsIFJFTE9QVF9UWVBFX0lOVCwgb2Zmc2V0b2YoU3RkUmRPcHRpb25zLCBmaWxsZmFj dG9yKX0sCiAJCXsiYXV0b3ZhY3V1bV9lbmFibGVkIiwgUkVMT1BUX1RZUEVfQk9PTCwKIAkJb2Zm c2V0b2YoU3RkUmRPcHRpb25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCBl bmFibGVkKX0sCisJCXsiYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzIiwgUkVMT1BUX1RZUEVf SU5ULAorCQlvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0b2YoQXV0 b1ZhY09wdHMsIGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vycyl9LAogCQl7ImF1dG92YWN1dW1f dmFjdXVtX3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lOVCwKIAkJb2Zmc2V0b2YoU3RkUmRPcHRp b25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCB2YWN1dW1fdGhyZXNob2xk KX0sCiAJCXsiYXV0b3ZhY3V1bV92YWN1dW1fbWF4X3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lO VCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDI3OTEwOGNhODlmLi44 MDZhN2Y0ODMyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0xLDcg KzEsOSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogdmFjdXVtcGFyYWxsZWwuYwotICoJ ICBTdXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gZXhlY3V0aW9uLgorICoJICBT dXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gYW5kIGF1dG92YWN1dW0gZXhlY3V0 aW9uLiBJbiB0aGUKKyAqCSAgY29tbWVudHMgYmVsb3csIHRoZSB3b3JkICJ2YWN1dW0iIHdpbGwg cmVmZXIgdG8gYm90aCB2YWN1dW0gYW5kCisgKgkgIGF1dG92YWN1dW0uCiAgKgogICogVGhpcyBm aWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGlu ZyB1cCwgdXNpbmcsCiAgKiBhbmQgdGVhcmluZyBkb3duIGEgUGFyYWxsZWxWYWN1dW1TdGF0ZS4K QEAgLTM0LDYgKzM2LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL3BhdGhzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAi cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCkBAIC0z NzQsOCArMzc3LDkgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlv biAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCXNoYXJlZC0+cXVlcnlpZCA9IHBnc3RhdF9nZXRf bXlfcXVlcnlfaWQoKTsKIAlzaGFyZWQtPm1haW50ZW5hbmNlX3dvcmtfbWVtX3dvcmtlciA9CiAJ CShuaW5kZXhlc19td20gPiAwKSA/Ci0JCW1haW50ZW5hbmNlX3dvcmtfbWVtIC8gTWluKHBhcmFs bGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgotCQltYWludGVuYW5jZV93b3JrX21lbTsKKwkJ dmFjX3dvcmtfbWVtIC8gTWluKHBhcmFsbGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgorCQl2 YWNfd29ya19tZW07CisKIAlzaGFyZWQtPmRlYWRfaXRlbXNfaW5mby5tYXhfYnl0ZXMgPSB2YWNf d29ya19tZW0gKiAoc2l6ZV90KSAxMDI0OwogCiAJLyogUHJlcGFyZSBEU0Egc3BhY2UgZm9yIGRl YWQgaXRlbXMgKi8KQEAgLTU1NCwxMiArNTU4LDE3IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21wdXRl X3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0ZWQs CiAJaW50CQkJbmluZGV4ZXNfcGFyYWxsZWxfYnVsa2RlbCA9IDA7CiAJaW50CQkJbmluZGV4ZXNf cGFyYWxsZWxfY2xlYW51cCA9IDA7CiAJaW50CQkJcGFyYWxsZWxfd29ya2VyczsKKwlpbnQJCQlt YXhfd29ya2VyczsKKworCW1heF93b3JrZXJzID0gQW1BdXRvVmFjdXVtV29ya2VyUHJvY2Vzcygp ID8KKwkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA6CisJCW1heF9wYXJhbGxlbF9t YWludGVuYW5jZV93b3JrZXJzOwogCiAJLyoKIAkgKiBXZSBkb24ndCBhbGxvdyBwZXJmb3JtaW5n IHBhcmFsbGVsIG9wZXJhdGlvbiBpbiBzdGFuZGFsb25lIGJhY2tlbmQgb3IKIAkgKiB3aGVuIHBh cmFsbGVsaXNtIGlzIGRpc2FibGVkLgogCSAqLwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIgfHwg bWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnMgPT0gMCkKKwlpZiAoIUlzVW5kZXJQb3N0 bWFzdGVyIHx8IG1heF93b3JrZXJzID09IDApCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTU5OCw4 ICs2MDcsOCBAQCBwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICppbmRy ZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAogCXBhcmFsbGVsX3dvcmtlcnMgPSAo bnJlcXVlc3RlZCA+IDApID8KIAkJTWluKG5yZXF1ZXN0ZWQsIG5pbmRleGVzX3BhcmFsbGVsKSA6 IG5pbmRleGVzX3BhcmFsbGVsOwogCi0JLyogQ2FwIGJ5IG1heF9wYXJhbGxlbF9tYWludGVuYW5j ZV93b3JrZXJzICovCi0JcGFyYWxsZWxfd29ya2VycyA9IE1pbihwYXJhbGxlbF93b3JrZXJzLCBt YXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2Vycyk7CisJLyogQ2FwIGJ5IEdVQyB2YXJpYWJs ZSAqLworCXBhcmFsbGVsX3dvcmtlcnMgPSBNaW4ocGFyYWxsZWxfd29ya2VycywgbWF4X3dvcmtl cnMpOwogCiAJcmV0dXJuIHBhcmFsbGVsX3dvcmtlcnM7CiB9CkBAIC02NDcsNiArNjU2LDEzIEBA IHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUg KnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAJICovCiAJbndvcmtlcnMgPSBNaW4obndvcmtlcnMs IHB2cy0+cGN4dC0+bndvcmtlcnMpOwogCisJLyoKKwkgKiBSZXNlcnZlIHdvcmtlcnMgaW4gYXV0 b3ZhY3V1bSBnbG9iYWwgc3RhdGUuIE5vdGUgdGhhdCB3ZSBtYXkgYmUgZ2l2ZW4KKwkgKiBmZXdl ciB3b3JrZXJzIHRoYW4gd2UgcmVxdWVzdGVkLgorCSAqLworCWlmIChBbUF1dG9WYWN1dW1Xb3Jr ZXJQcm9jZXNzKCkgJiYgbndvcmtlcnMgPiAwKQorCQlBdXRvVmFjdXVtUmVzZXJ2ZVBhcmFsbGVs V29ya2VycygmbndvcmtlcnMpOworCiAJLyoKIAkgKiBTZXQgaW5kZXggdmFjdXVtIHN0YXR1cyBh bmQgbWFyayB3aGV0aGVyIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXIgY2FuCiAJICogcHJvY2VzcyBp dC4KQEAgLTY5MSw2ICs3MDcsMTYgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4 ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4X3NjYW4KIAogCQlMYXVu Y2hQYXJhbGxlbFdvcmtlcnMocHZzLT5wY3h0KTsKIAorCQkvKgorCQkgKiBUZWxsIGF1dG92YWN1 dW0gdGhhdCB3ZSBjb3VsZCBub3QgbGF1bmNoIGFsbCB0aGUgcHJldmlvdXNseQorCQkgKiByZXNl cnZlZCB3b3JrZXJzLgorCQkgKi8KKwkJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAm JgorCQkJcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA8IG53b3JrZXJzKQorCQl7CisJCQlB dXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2Vycyhud29ya2VycyAtIHB2cy0+cGN4dC0+bndv cmtlcnNfbGF1bmNoZWQpOworCQl9CisKIAkJaWYgKHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNo ZWQgPiAwKQogCQl7CiAJCQkvKgpAQCAtNzM5LDYgKzc2NSwxMCBAQCBwYXJhbGxlbF92YWN1dW1f cHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5k ZXhfc2NhbgogCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVu Y2hlZDsgaSsrKQogCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJnB2cy0+YnVmZmVyX3VzYWdl W2ldLCAmcHZzLT53YWxfdXNhZ2VbaV0pOworCisJCS8qIFJlbGVhc2UgYWxsIHRoZSByZXNlcnZl ZCBwYXJhbGxlbCB3b3JrZXJzIGZvciBhdXRvdmFjdXVtICovCisJCWlmIChBbUF1dG9WYWN1dW1X b3JrZXJQcm9jZXNzKCkgJiYgcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA+IDApCisJCQlB dXRvVmFjdXVtUmVsZWFzZUFsbFBhcmFsbGVsV29ya2VycygpOwogCX0KIAogCS8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDZmZGU3NDA0NjVmLi5mNDBhYmU5MGVkNSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTE1MSw2ICsxNTEsMTMgQEAgaW50CQkJ TG9nX2F1dG9hbmFseXplX21pbl9kdXJhdGlvbiA9IDYwMDAwMDsKIHN0YXRpYyBkb3VibGUgYXZf c3RvcmFnZV9wYXJhbV9jb3N0X2RlbGF5ID0gLTE7CiBzdGF0aWMgaW50CWF2X3N0b3JhZ2VfcGFy YW1fY29zdF9saW1pdCA9IC0xOwogCisvKgorICogVHJhY2tzIHRoZSBudW1iZXIgb2YgcGFyYWxs ZWwgd29ya2VycyBjdXJyZW50bHkgcmVzZXJ2ZWQgYnkgdGhlCisgKiBhdXRvdmFjdXVtIHdvcmtl ci4gVGhpcyBpcyBub24temVybyBvbmx5IGZvciB0aGUgcGFyYWxsZWwgYXV0b3ZhY3V1bQorICog bGVhZGVyIHByb2Nlc3MuCisgKi8KK3N0YXRpYyBpbnQJYXZfbndvcmtlcnNfcmVzZXJ2ZWQgPSAw OworCiAvKiBGbGFncyBzZXQgYnkgc2lnbmFsIGhhbmRsZXJzICovCiBzdGF0aWMgdm9sYXRpbGUg c2lnX2F0b21pY190IGdvdF9TSUdVU1IyID0gZmFsc2U7CiAKQEAgLTI4NSw2ICsyOTIsOCBAQCB0 eXBlZGVmIHN0cnVjdCBBdXRvVmFjdXVtV29ya0l0ZW0KICAqIGF2X3dvcmtJdGVtcwkJd29yayBp dGVtIGFycmF5CiAgKiBhdl9ud29ya2Vyc0ZvckJhbGFuY2UgdGhlIG51bWJlciBvZiBhdXRvdmFj dXVtIHdvcmtlcnMgdG8gdXNlIHdoZW4KICAqIAkJCQkJY2FsY3VsYXRpbmcgdGhlIHBlciB3b3Jr ZXIgY29zdCBsaW1pdAorICogYXZfZnJlZVBhcmFsbGVsV29ya2VycyB0aGUgbnVtYmVyIG9mIGZy ZWUgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzCisgKiBhdl9tYXhQYXJhbGxlbFdvcmtlcnMg dGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycwogICoKICAq IFRoaXMgc3RydWN0IGlzIHByb3RlY3RlZCBieSBBdXRvdmFjdXVtTG9jaywgZXhjZXB0IGZvciBh dl9zaWduYWwgYW5kIHBhcnRzCiAgKiBvZiB0aGUgd29ya2VyIGxpc3QgKHNlZSBhYm92ZSkuCkBA IC0yOTksNiArMzA4LDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAlXb3JrZXJJbmZvCWF2X3N0YXJ0aW5n V29ya2VyOwogCUF1dG9WYWN1dW1Xb3JrSXRlbSBhdl93b3JrSXRlbXNbTlVNX1dPUktJVEVNU107 CiAJcGdfYXRvbWljX3VpbnQzMiBhdl9ud29ya2Vyc0ZvckJhbGFuY2U7CisJdWludDMyCQlhdl9m cmVlUGFyYWxsZWxXb3JrZXJzOworCXVpbnQzMgkJYXZfbWF4UGFyYWxsZWxXb3JrZXJzOwogfSBB dXRvVmFjdXVtU2htZW1TdHJ1Y3Q7CiAKIHN0YXRpYyBBdXRvVmFjdXVtU2htZW1TdHJ1Y3QgKkF1 dG9WYWN1dW1TaG1lbTsKQEAgLTM2MSw2ICszNzIsNyBAQCBzdGF0aWMgdm9pZCBhdXRvdmFjX3Jl cG9ydF93b3JraXRlbShBdXRvVmFjdXVtV29ya0l0ZW0gKndvcmtpdGVtLAogc3RhdGljIHZvaWQg YXZsX3NpZ3VzcjJfaGFuZGxlcihTSUdOQUxfQVJHUyk7CiBzdGF0aWMgYm9vbCBhdl93b3JrZXJf YXZhaWxhYmxlKHZvaWQpOwogc3RhdGljIHZvaWQgY2hlY2tfYXZfd29ya2VyX2d1Y3Modm9pZCk7 CitzdGF0aWMgdm9pZCBhZGp1c3RfZnJlZV9wYXJhbGxlbF93b3JrZXJzKGludCBwcmV2X21heF9w YXJhbGxlbF93b3JrZXJzKTsKIAogCiAKQEAgLTc1OSw2ICs3NzEsOCBAQCBQcm9jZXNzQXV0b1Zh Y0xhdW5jaGVySW50ZXJydXB0cyh2b2lkKQogCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQogCXsK IAkJaW50CQkJYXV0b3ZhY3V1bV9tYXhfd29ya2Vyc19wcmV2ID0gYXV0b3ZhY3V1bV9tYXhfd29y a2VyczsKKwkJaW50CQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vyc19wcmV2ID0KKwkJ CWF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM7CiAKIAkJQ29uZmlnUmVsb2FkUGVuZGlu ZyA9IGZhbHNlOwogCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKQEAgLTc3NSw2ICs3 ODksMTUgQEAgUHJvY2Vzc0F1dG9WYWNMYXVuY2hlckludGVycnVwdHModm9pZCkKIAkJaWYgKGF1 dG92YWN1dW1fbWF4X3dvcmtlcnNfcHJldiAhPSBhdXRvdmFjdXVtX21heF93b3JrZXJzKQogCQkJ Y2hlY2tfYXZfd29ya2VyX2d1Y3MoKTsKIAorCQkvKgorCQkgKiBJZiBhdXRvdmFjdXVtX21heF9w YXJhbGxlbF93b3JrZXJzIGNoYW5nZWQsIHdlIG11c3QgdGFrZSBjYXJlIG9mCisJCSAqIHRoZSBj b3JyZWN0IHZhbHVlIG9mIGF2YWlsYWJsZSBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgaW4K KwkJICogc2htZW0uCisJCSAqLworCQlpZiAoYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vy c19wcmV2ICE9CisJCQlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzKQorCQkJYWRqdXN0 X2ZyZWVfcGFyYWxsZWxfd29ya2VycyhhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzX3By ZXYpOworCiAJCS8qIHJlYnVpbGQgdGhlIGxpc3QgaW4gY2FzZSB0aGUgbmFwdGltZSBjaGFuZ2Vk ICovCiAJCXJlYnVpbGRfZGF0YWJhc2VfbGlzdChJbnZhbGlkT2lkKTsKIAl9CkBAIC0xMzc5LDYg KzE0MDIsMTYgQEAgYXZsX3NpZ3VzcjJfaGFuZGxlcihTSUdOQUxfQVJHUykKICAqCQkJCQkgIEFV VE9WQUNVVU0gV09SS0VSIENPREUKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAorLyoKKyAqIE1ha2Ugc3VyZSB0 aGF0IGFsbCByZXNlcnZlZCB3b3JrZXJzIGFyZSByZWxlYXNlZCwgZXZlbiBpZiBwYXJhbGxlbAor ICogYXV0b3ZhY3V1bSBsZWFkZXIgaXMgZmluaXNoaW5nIGR1ZSB0byBGQVRBTCBlcnJvci4KKyAq Lworc3RhdGljIHZvaWQKK2F1dG92YWN1dW1fd29ya2VyX2JlZm9yZV9zaG1lbV9leGl0KGludCBj b2RlLCBEYXR1bSBhcmcpCit7CisJQXV0b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxlbFdvcmtlcnMo KTsKK30KKwogLyoKICAqIE1haW4gZW50cnkgcG9pbnQgZm9yIGF1dG92YWN1dW0gd29ya2VyIHBy b2Nlc3Nlcy4KICAqLwpAQCAtMjI3NSw2ICsyMzA4LDEyIEBAIGRvX2F1dG92YWN1dW0odm9pZCkK IAkJCQkJCQkJCQkgICJBdXRvdmFjdXVtIFBvcnRhbCIsCiAJCQkJCQkJCQkJICBBTExPQ1NFVF9E RUZBVUxUX1NJWkVTKTsKIAorCS8qCisJICogUGFyYWxsZWwgYXV0b3ZhY3V1bSBjYW4gcmVzZXJ2 ZSBwYXJhbGxlbCB3b3JrZXJzLiBNYWtlIHN1cmUgdGhhdCBhbGwKKwkgKiByZXNlcnZlZCB3b3Jr ZXJzIGFyZSByZWxlYXNlZCBldmVuIGFmdGVyIEZBVEFMIGVycm9yLgorCSAqLworCWJlZm9yZV9z aG1lbV9leGl0KGF1dG92YWN1dW1fd29ya2VyX2JlZm9yZV9zaG1lbV9leGl0LCAwKTsKKwogCS8q CiAJICogUGVyZm9ybSBvcGVyYXRpb25zIG9uIGNvbGxlY3RlZCB0YWJsZXMuCiAJICovCkBAIC0y NDU2LDYgKzI0OTUsMTIgQEAgZG9fYXV0b3ZhY3V1bSh2b2lkKQogCQl9CiAJCVBHX0NBVENIKCk7 CiAJCXsKKwkJCS8qCisJCQkgKiBQYXJhbGxlbCBhdXRvdmFjdXVtIGNhbiByZXNlcnZlIHBhcmFs bGVsIHdvcmtlcnMuIE1ha2Ugc3VyZQorCQkJICogdGhhdCBhbGwgcmVzZXJ2ZWQgd29ya2VycyBh cmUgcmVsZWFzZWQuCisJCQkgKi8KKwkJCUF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3Jr ZXJzKCk7CisKIAkJCS8qCiAJCQkgKiBBYm9ydCB0aGUgdHJhbnNhY3Rpb24sIHN0YXJ0IGEgbmV3 IG9uZSwgYW5kIHByb2NlZWQgd2l0aCB0aGUKIAkJCSAqIG5leHQgdGFibGUgaW4gb3VyIGxpc3Qu CkBAIC0yODU2LDggKzI5MDEsMTIgQEAgdGFibGVfcmVjaGVja19hdXRvdmFjKE9pZCByZWxpZCwg SFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQkgKi8KIAkJdGFiLT5hdF9wYXJhbXMuaW5kZXhfY2xl YW51cCA9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEOwogCQl0YWItPmF0X3BhcmFtcy50cnVuY2F0 ZSA9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEOwotCQkvKiBBcyBvZiBub3csIHdlIGRvbid0IHN1 cHBvcnQgcGFyYWxsZWwgdmFjdXVtIGZvciBhdXRvdmFjdXVtICovCi0JCXRhYi0+YXRfcGFyYW1z Lm53b3JrZXJzID0gLTE7CisKKwkJLyogRGVjaWRlIHdoZXRoZXIgd2UgbmVlZCB0byBwcm9jZXNz IGluZGV4ZXMgb2YgdGFibGUgaW4gcGFyYWxsZWwuICovCisJCXRhYi0+YXRfcGFyYW1zLm53b3Jr ZXJzID0gYXZvcHRzCisJCQk/IGF2b3B0cy0+YXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzCisJ CQk6IC0xOworCiAJCXRhYi0+YXRfcGFyYW1zLmZyZWV6ZV9taW5fYWdlID0gZnJlZXplX21pbl9h Z2U7CiAJCXRhYi0+YXRfcGFyYW1zLmZyZWV6ZV90YWJsZV9hZ2UgPSBmcmVlemVfdGFibGVfYWdl OwogCQl0YWItPmF0X3BhcmFtcy5tdWx0aXhhY3RfZnJlZXplX21pbl9hZ2UgPSBtdWx0aXhhY3Rf ZnJlZXplX21pbl9hZ2U7CkBAIC0zMzM0LDYgKzMzODMsODggQEAgQXV0b1ZhY3V1bVJlcXVlc3RX b3JrKEF1dG9WYWN1dW1Xb3JrSXRlbVR5cGUgdHlwZSwgT2lkIHJlbGF0aW9uSWQsCiAJcmV0dXJu IHJlc3VsdDsKIH0KIAorLyoKKyAqIFJlc2VydmVzIHBhcmFsbGVsIHdvcmtlcnMgZm9yIGF1dG92 YWN1dW0uCisgKgorICogbndvcmtlcnMgaXMgYW4gaW4vb3V0IHBhcmFtZXRlcjsgdGhlIHJlcXVl c3RlZCBudW1iZXIgb2YgcGFyYWxsZWwgd29ya2VycworICogdG8gcmVzZXJ2ZSBieSB0aGUgY2Fs bGVyLCBhbmQgc2V0IHRvIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJlc2VydmVkIHdvcmtlcnMuCisg KgorICogVGhlIGNhbGxlciBtdXN0IGNhbGwgQXV0b1ZhY3V1bVJlbGVhc2VbQWxsXVBhcmFsbGVs V29ya2VycygpIHRvIHJlbGVhc2UgdGhlCisgKiByZXNlcnZlZCB3b3JrZXJzLgorICoKKyAqIE5P VEU6IFdlIHdpbGwgdHJ5IHRvIHByb3ZpZGUgYXMgbWFueSB3b3JrZXJzIGFzIHJlcXVlc3RlZCwg ZXZlbiBpZiBjYWxsZXIKKyAqIHdpbGwgb2NjdXB5IGFsbCBhdmFpbGFibGUgd29ya2Vycy4KKyAq Lwordm9pZAorQXV0b1ZhY3V1bVJlc2VydmVQYXJhbGxlbFdvcmtlcnMoaW50ICpud29ya2VycykK K3sKKwkvKiBPbmx5IGxlYWRlciBhdXRvdmFjdXVtIHdvcmtlciBjYW4gY2FsbCB0aGlzIGZ1bmN0 aW9uLiAqLworCUFzc2VydChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpOworCisJLyogVGhl IHdvcmtlciBtdXN0IG5vdCBoYXZlIGFueSByZXNlcnZlZCB3b3JrZXJzIHlldCAqLworCUFzc2Vy dChhdl9ud29ya2Vyc19yZXNlcnZlZCA9PSAwKTsKKworCUxXTG9ja0FjcXVpcmUoQXV0b3ZhY3V1 bUxvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwkvKiBQcm92aWRlIGFzIG1hbnkgd29ya2VycyBhcyB3 ZSBjYW4uICovCisJKm53b3JrZXJzID0gTWluKEF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFs bGVsV29ya2VycywgKm53b3JrZXJzKTsKKwlBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxl bFdvcmtlcnMgLT0gKm53b3JrZXJzOworCisJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7 CisKKwkvKiBSZW1lbWJlciBob3cgbWFueSB3b3JrZXJzIHdlIGhhdmUgcmVzZXJ2ZWQuICovCisJ YXZfbndvcmtlcnNfcmVzZXJ2ZWQgPSAqbndvcmtlcnM7Cit9CisKKy8qCisgKiBSZWxlYXNlcyB0 aGUgcmVzZXJ2ZWQgcGFyYWxsZWwgd29ya2VycyBmb3IgYXV0b3ZhY3V1bS4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIHRvIHJlbGVhc2UgdGhlIHBhcmFsbGVsIHdvcmtlcnMg dGhhdCBhbgorICogYXV0b3ZhY3V1bSB3b3JrZXIgcmVzZXJ2ZWQgYnkgQXV0b1ZhY3V1bVJlc2Vy dmVQYXJhbGxlbFdvcmtlcnMoKS4gbndvcmtlcnMKKyAqIGlzIHRoZSBudW1iZXIgb2Ygd29ya2Vy cyB0byByZWxlYXNlLCB3aGljaCBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlCisgKiBudW1i ZXIgb2Ygd29ya2VycyBjdXJyZW50bHkgcmVzZXJ2ZWQsIGF2X253b3JrZXJzX3Jlc2VydmVkLgor ICovCit2b2lkCitBdXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2VycyhpbnQgbndvcmtlcnMp Cit7CisJLyogT25seSBsZWFkZXIgd29ya2VyIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uICovCisJ QXNzZXJ0KEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSk7CisKKwkvKiBDYW5ub3QgcmVsZWFz ZSBtb3JlIHdvcmtlcnMgdGhhbiByZXNlcnZlZCAqLworCUFzc2VydChud29ya2VycyA8PSBhdl9u d29ya2Vyc19yZXNlcnZlZCk7CisKKwlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1Mb2NrLCBMV19F WENMVVNJVkUpOworCisJLyoKKwkgKiBJZiB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwg d29ya2VycyB3YXMgcmVkdWNlZCBkdXJpbmcgZXhlY3V0aW9uLAorCSAqIHdlIG11c3QgY2FwIGF2 YWlsYWJsZSB3b3JrZXJzIG51bWJlciBieSBpdHMgbmV3IHZhbHVlLgorCSAqLworCUF1dG9WYWN1 dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VycyA9CisJCU1pbihBdXRvVmFjdXVtU2htZW0t PmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnMgKyBud29ya2VycywKKwkJCUF1dG9WYWN1dW1TaG1lbS0+ YXZfbWF4UGFyYWxsZWxXb3JrZXJzKTsKKworCUxXTG9ja1JlbGVhc2UoQXV0b3ZhY3V1bUxvY2sp OworCisJLyogRG9uJ3QgaGF2ZSB0byByZW1lbWJlciB0aGVzZSB3b3JrZXJzIGFueW1vcmUuICov CisJYXZfbndvcmtlcnNfcmVzZXJ2ZWQgLT0gbndvcmtlcnM7Cit9CisKKy8qCisgKiBTYW1lIGFz IGFib3ZlLCBidXQgdGhpcyBmdW5jdGlvbiByZWxlYXNlcyBhbGwgdGhlIHBhcmFsbGVsIHdvcmtl cnMgdGhhdAorICogdGhpcyBhdXRvdmFjdXVtIHdvcmtlciByZXNlcnZlZC4KKyAqLwordm9pZAor QXV0b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxlbFdvcmtlcnModm9pZCkKK3sKKwkvKiBPbmx5IGxl YWRlciB3b3JrZXIgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbi4gKi8KKwlBc3NlcnQoQW1BdXRvVmFj dXVtV29ya2VyUHJvY2VzcygpKTsKKworCWlmIChhdl9ud29ya2Vyc19yZXNlcnZlZCA+IDApCisJ CUF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3JrZXJzKGF2X253b3JrZXJzX3Jlc2VydmVkKTsK KworCUFzc2VydChhdl9ud29ya2Vyc19yZXNlcnZlZCA9PSAwKTsKK30KKwogLyoKICAqIGF1dG92 YWNfaW5pdAogICoJCVRoaXMgaXMgY2FsbGVkIGF0IHBvc3RtYXN0ZXIgaW5pdGlhbGl6YXRpb24u CkBAIC0zMzk0LDYgKzM1MjUsMTAgQEAgQXV0b1ZhY3V1bVNobWVtSW5pdCh2b2lkKQogCQlBc3Nl cnQoIWZvdW5kKTsKIAogCQlBdXRvVmFjdXVtU2htZW0tPmF2X2xhdW5jaGVycGlkID0gMDsKKwkJ QXV0b1ZhY3V1bVNobWVtLT5hdl9tYXhQYXJhbGxlbFdvcmtlcnMgPQorCQkJTWluKGF1dG92YWN1 dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMsIG1heF9wYXJhbGxlbF93b3JrZXJzKTsKKwkJQXV0b1Zh Y3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxXb3JrZXJzID0KKwkJCUF1dG9WYWN1dW1TaG1lbS0+ YXZfbWF4UGFyYWxsZWxXb3JrZXJzOwogCQlkY2xpc3RfaW5pdCgmQXV0b1ZhY3V1bVNobWVtLT5h dl9mcmVlV29ya2Vycyk7CiAJCWRsaXN0X2luaXQoJkF1dG9WYWN1dW1TaG1lbS0+YXZfcnVubmlu Z1dvcmtlcnMpOwogCQlBdXRvVmFjdXVtU2htZW0tPmF2X3N0YXJ0aW5nV29ya2VyID0gTlVMTDsK QEAgLTM0NzUsMyArMzYxMCwyOCBAQCBjaGVja19hdl93b3JrZXJfZ3Vjcyh2b2lkKQogCQkJCSBl cnJkZXRhaWwoIlRoZSBzZXJ2ZXIgd2lsbCBvbmx5IHN0YXJ0IHVwIHRvIFwiYXV0b3ZhY3V1bV93 b3JrZXJfc2xvdHNcIiAoJWQpIGF1dG92YWN1dW0gd29ya2VycyBhdCBhIGdpdmVuIHRpbWUuIiwK IAkJCQkJCSAgIGF1dG92YWN1dW1fd29ya2VyX3Nsb3RzKSkpOwogfQorCisvKgorICogQWRqdXN0 cyB0aGUgbnVtYmVyIG9mIGZyZWUgcGFyYWxsZWwgd29ya2VycyBjb3JyZXNwb25kcyB0byB0aGUg bmV3CisgKiBhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIHZhbHVlLgorICovCitzdGF0 aWMgdm9pZAorYWRqdXN0X2ZyZWVfcGFyYWxsZWxfd29ya2VycyhpbnQgcHJldl9tYXhfcGFyYWxs ZWxfd29ya2VycykKK3sKKwlpbnQJbmZyZWVfd29ya2VyczsKKworCUxXTG9ja0FjcXVpcmUoQXV0 b3ZhY3V1bUxvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwkvKgorCSAqIENhcCBvciBpbmNyZWFzZSBu dW1iZXIgb2YgZnJlZSBwYXJhbGxlbCB3b3JrZXJzIGFjY29yZGluZyB0byB0aGUKKwkgKiBwYXJh bWV0ZXIgY2hhbmdlLgorCSAqLworCW5mcmVlX3dvcmtlcnMgPQorCQlhdXRvdmFjdXVtX21heF9w YXJhbGxlbF93b3JrZXJzIC0gcHJldl9tYXhfcGFyYWxsZWxfd29ya2VycyArCisJCUF1dG9WYWN1 dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VyczsKKworCUF1dG9WYWN1dW1TaG1lbS0+YXZf ZnJlZVBhcmFsbGVsV29ya2VycyA9IE1heChuZnJlZV93b3JrZXJzLCAwKTsKKwlBdXRvVmFjdXVt U2htZW0tPmF2X21heFBhcmFsbGVsV29ya2VycyA9IGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dv cmtlcnM7CisKKwlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsKK30KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5p dC9nbG9iYWxzLmMKaW5kZXggMzZhZDcwOGIzNjAuLjgyNjVhODJiNjM5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9p bml0L2dsb2JhbHMuYwpAQCAtMTQzLDYgKzE0Myw3IEBAIGludAkJCU5CdWZmZXJzID0gMTYzODQ7 CiBpbnQJCQlNYXhDb25uZWN0aW9ucyA9IDEwMDsKIGludAkJCW1heF93b3JrZXJfcHJvY2Vzc2Vz ID0gODsKIGludAkJCW1heF9wYXJhbGxlbF93b3JrZXJzID0gODsKK2ludAkJCWF1dG92YWN1dW1f bWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAyOwogaW50CQkJTWF4QmFja2VuZHMgPSAwOwogCiAvKiBH VUMgcGFyYW1ldGVycyBmb3IgdmFjdXVtICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCBkNzc1MDI4 MzhjNC4uNGE1YzczYTllMzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtMzMyNiw5ICszMzI2LDEz IEBAIHNldF9jb25maWdfd2l0aF9oYW5kbGUoY29uc3QgY2hhciAqbmFtZSwgY29uZmlnX2hhbmRs ZSAqaGFuZGxlLAogCSAqCiAJICogQWxzbyBhbGxvdyBub3JtYWwgc2V0dGluZyBpZiB0aGUgR1VD IGlzIG1hcmtlZCBHVUNfQUxMT1dfSU5fUEFSQUxMRUwuCiAJICoKLQkgKiBPdGhlciBjaGFuZ2Vz IG1pZ2h0IG5lZWQgdG8gYWZmZWN0IG90aGVyIHdvcmtlcnMsIHNvIGZvcmJpZCB0aGVtLgorCSAq IE90aGVyIGNoYW5nZXMgbWlnaHQgbmVlZCB0byBhZmZlY3Qgb3RoZXIgd29ya2Vycywgc28gZm9y YmlkIHRoZW0uIE5vdGUsCisJICogdGhhdCBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlciBpcyBh biBleGNlcHRpb24sIGJlY2F1c2Ugb25seQorCSAqIGNvc3QtYmFzZWQgZGVsYXlzIG5lZWQgdG8g YmUgYWZmZWN0ZWQgYWxzbyB0byBwYXJhbGxlbCB2YWN1dW0gd29ya2VycywKKwkgKiBhbmQgd2Ug d2lsbCBoYW5kbGUgaXQgZWxzZXdoZXJlIGlmIGFwcHJvcHJpYXRlLgogCSAqLwotCWlmIChJc0lu UGFyYWxsZWxNb2RlKCkgJiYgY2hhbmdlVmFsICYmIGFjdGlvbiAhPSBHVUNfQUNUSU9OX1NBVkUg JiYKKwlpZiAoSXNJblBhcmFsbGVsTW9kZSgpICYmICFBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNz KCkgJiYgY2hhbmdlVmFsICYmCisJCWFjdGlvbiAhPSBHVUNfQUNUSU9OX1NBVkUgJiYKIAkJKHJl Y29yZC0+ZmxhZ3MgJiBHVUNfQUxMT1dfSU5fUEFSQUxMRUwpID09IDApCiAJewogCQllcmVwb3J0 KGVsZXZlbCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRl cnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKaW5kZXgg OTUwNzc3ODQxNWQuLjkyYjY5YzY1ZTgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19w YXJhbWV0ZXJzLmRhdApAQCAtMTU0LDYgKzE1NCwxNCBAQAogICBtYXggPT4gJzIwMDAwMDAwMDAn LAogfSwKIAoreyBuYW1lID0+ICdhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzJywgdHlw ZSA9PiAnaW50JywgY29udGV4dCA9PiAnUEdDX1NJR0hVUCcsIGdyb3VwID0+ICdWQUNVVU1fQVVU T1ZBQ1VVTScsCisgIHNob3J0X2Rlc2MgPT4gJ01heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1 dG92YWN1dW0gd29ya2VycywgdGhhdCBjYW4gYmUgdGFrZW4gZnJvbSBiZ3dvcmtlcnMgcG9vbC4n LAorICB2YXJpYWJsZSA9PiAnYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycycsCisgIGJv b3RfdmFsID0+ICcyJywKKyAgbWluID0+ICcwJywKKyAgbWF4ID0+ICdNQVhfQkFDS0VORFMnLAor fSwKKwogeyBuYW1lID0+ICdhdXRvdmFjdXVtX21heF93b3JrZXJzJywgdHlwZSA9PiAnaW50Jywg Y29udGV4dCA9PiAnUEdDX1NJR0hVUCcsIGdyb3VwID0+ICdWQUNVVU1fQVVUT1ZBQ1VVTScsCiAg IHNob3J0X2Rlc2MgPT4gJ1NldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNpbXVsdGFuZW91c2x5 IHJ1bm5pbmcgYXV0b3ZhY3V1bSB3b3JrZXIgcHJvY2Vzc2VzLicsCiAgIHZhcmlhYmxlID0+ICdh dXRvdmFjdXVtX21heF93b3JrZXJzJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdy ZXNxbC5jb25mLnNhbXBsZQppbmRleCBmOTM4Y2M2NWEzYS4uZWY4MTI2ZjM3OTAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTcxMCw2ICs3 MTAsNyBAQAogI2F1dG92YWN1dW1fd29ya2VyX3Nsb3RzID0gMTYgICAgICAgICAgICMgYXV0b3Zh Y3V1bSB3b3JrZXIgc2xvdHMgdG8gYWxsb2NhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNhdXRvdmFjdXVtX21h eF93b3JrZXJzID0gMyAgICAgICAgICAgICAjIG1heCBudW1iZXIgb2YgYXV0b3ZhY3V1bSBzdWJw cm9jZXNzZXMKKyNhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzID0gMiAgICAjIGxpbWl0 ZWQgYnkgbWF4X3BhcmFsbGVsX3dvcmtlcnMKICNhdXRvdmFjdXVtX25hcHRpbWUgPSAxbWluICAg ICAgICAgICAgICAjIHRpbWUgYmV0d2VlbiBhdXRvdmFjdXVtIHJ1bnMKICNhdXRvdmFjdXVtX3Zh Y3V1bV90aHJlc2hvbGQgPSA1MCAgICAgICAjIG1pbiBudW1iZXIgb2Ygcm93IHVwZGF0ZXMgYmVm b3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB2YWN1dW0KZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYwppbmRleCBiMmRiYTZkMTBhYi4uNDE0YzVlNjFkYjAgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMKQEAgLTE0MjMsNiArMTQyMyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpj b25zdCB0YWJsZV9zdG9yYWdlX3BhcmFtZXRlcnNbXSA9IHsKIAkiYXV0b3ZhY3V1bV9tdWx0aXhh Y3RfZnJlZXplX21heF9hZ2UiLAogCSJhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWluX2Fn ZSIsCiAJImF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2UiLAorCSJhdXRvdmFj dXVtX3BhcmFsbGVsX3dvcmtlcnMiLAogCSJhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5IiwK IAkiYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdCIsCiAJImF1dG92YWN1dW1fdmFjdXVtX2lu c2VydF9zY2FsZV9mYWN0b3IiLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgg Yi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCBmMTZmMzU2NTliOS4uMDAxOTBjNjdlY2Yg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21p c2NhZG1pbi5oCkBAIC0xNzgsNiArMTc4LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNYXhC YWNrZW5kczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgTWF4Q29ubmVjdGlvbnM7CiBleHRlcm4g UEdETExJTVBPUlQgaW50IG1heF93b3JrZXJfcHJvY2Vzc2VzOwogZXh0ZXJuIFBHRExMSU1QT1JU IGludCBtYXhfcGFyYWxsZWxfd29ya2VyczsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgYXV0b3Zh Y3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjb21t aXRfdGltZXN0YW1wX2J1ZmZlcnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG11bHRpeGFjdF9t ZW1iZXJfYnVmZmVyczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgKaW5kZXggNWFhMGYz YThhYzEuLmYzNzgzYWZiNTFiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaApAQCAt NjIsNiArNjIsMTEgQEAgcGdfbm9yZXR1cm4gZXh0ZXJuIHZvaWQgQXV0b1ZhY1dvcmtlck1haW4o Y29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnQKIGV4dGVybiBib29sIEF1dG9W YWN1dW1SZXF1ZXN0V29yayhBdXRvVmFjdXVtV29ya0l0ZW1UeXBlIHR5cGUsCiAJCQkJCQkJCSAg T2lkIHJlbGF0aW9uSWQsIEJsb2NrTnVtYmVyIGJsa25vKTsKIAorLyogcGFyYWxsZWwgYXV0b3Zh Y3V1bSBzdHVmZiAqLworZXh0ZXJuIHZvaWQJQXV0b1ZhY3V1bVJlc2VydmVQYXJhbGxlbFdvcmtl cnMoaW50ICpud29ya2Vycyk7CitleHRlcm4gdm9pZCBBdXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVs V29ya2VycyhpbnQgbndvcmtlcnMpOworZXh0ZXJuIHZvaWQgQXV0b1ZhY3V1bVJlbGVhc2VBbGxQ YXJhbGxlbFdvcmtlcnModm9pZCk7CisKIC8qIHNoYXJlZCBtZW1vcnkgc3R1ZmYgKi8KIGV4dGVy biBTaXplIEF1dG9WYWN1dW1TaG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBBdXRvVmFjdXVt U2htZW1Jbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggYi9z cmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCAyMzY4MzBmNmI5My4uMTFkZDNhZWJjNmMgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxz L3JlbC5oCkBAIC0zMTEsNiArMzExLDE0IEBAIHR5cGVkZWYgc3RydWN0IEZvcmVpZ25LZXlDYWNo ZUluZm8KIHR5cGVkZWYgc3RydWN0IEF1dG9WYWNPcHRzCiB7CiAJYm9vbAkJZW5hYmxlZDsKKwor CS8qCisJICogVGFyZ2V0IG51bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMuIC0x IGJ5IGRlZmF1bHQgZGlzYWJsZXMKKwkgKiBwYXJhbGxlbCB2YWN1dW0gZHVyaW5nIGF1dG92YWN1 dW0uIDAgbWVhbnMgY2hvb3NlIHRoZSBwYXJhbGxlbCBkZWdyZWUKKwkgKiBiYXNlZCBvbiB0aGUg bnVtYmVyIG9mIGluZGV4ZXMuCisJICovCisJaW50CQkJYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3Jr ZXJzOworCiAJaW50CQkJdmFjdXVtX3RocmVzaG9sZDsKIAlpbnQJCQl2YWN1dW1fbWF4X3RocmVz aG9sZDsKIAlpbnQJCQl2YWN1dW1faW5zX3RocmVzaG9sZDsKLS0gCjIuNDMuMAoK --0000000000009cf03e064bf78ae5 Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0005-Documentation-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v23-0005-Documentation-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm7v39io0 RnJvbSBkMjA4ZmEyNTg5NGMyYzQxNzA5MWFlZTc4MWRmNGZkN2E0NWVjYzkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAyOjMyOjQ0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjMgNS81XSBEb2N1bWVudGF0aW9uIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIGRv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgfCAxNyArKysrKysrKysrKysrKysrKwog ZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwgICAgICB8IDEyICsrKysrKysrKysrKwogZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCB8IDIwICsrKysrKysrKysrKysrKysrKysr CiAzIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggZjY3MGUy ZDRjMzEuLjA3MTM5ZWM3ZmYyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0yOTE4LDYgKzI5MTgsNyBAQCBpbmNs dWRlX2RpciAnY29uZi5kJwogICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4gY2hhbmdpbmcg dGhpcyB2YWx1ZSwgY29uc2lkZXIgYWxzbyBhZGp1c3RpbmcKICAgICAgICAgIDx4cmVmIGxpbmtl bmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2VycyIvPiwKKyAgICAgICAgIDx4cmVmIGxpbmtlbmQ9 Imd1Yy1hdXRvdmFjdXVtLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+LAogICAgICAgICAgPHhyZWYg bGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC1tYWludGVuYW5jZS13b3JrZXJzIi8+LCBhbmQKICAg ICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2Vycy1wZXItZ2F0aGVy Ii8+LgogICAgICAgICA8L3BhcmE+CkBAIC05MzgwLDYgKzkzODEsMjIgQEAgQ09QWSBwb3N0Z3Jl c19sb2cgRlJPTSAnL2Z1bGwvcGF0aC90by9sb2dmaWxlLmNzdicgV0lUSCBjc3Y7CiAgICAgICAg PC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVudHJ5 IGlkPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIgeHJlZmxhYmVsPSJhdXRv dmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIj4KKyAgICAgICAgPHRlcm0+PHZhcm5hbWU+YXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5 cGU+KQorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+YXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT48L3ByaW1hcnk+CisgICAgICAg ICA8c2Vjb25kYXJ5PmNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9zZWNvbmRhcnk+CisgICAgICAg IDwvaW5kZXh0ZXJtPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgIDxwYXJhPgorICAgICAgICAgIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVs IGF1dG92YWN1dW0gd29ya2VycyB0aGF0CisgICAgICAgICAgY2FuIGJlIHVzZWQgZm9yIHBhcmFs bGVsIGluZGV4IHZhY3V1bWluZyBhdCBvbmUgdGltZS4gSXMgY2FwcGVkIGJ5CisgICAgICAgICAg PHhyZWYgbGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+LiBUaGUgZGVmYXVsdCBp cyAyLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxp c3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3QyPgogCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9tYWludGVu YW5jZS5zZ21sCmluZGV4IDdjOTU4YjA2MjczLi5jOWY5MTYzYzU1MSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNl LnNnbWwKQEAgLTkyNiw2ICs5MjYsMTggQEAgSElOVDogIEV4ZWN1dGUgYSBkYXRhYmFzZS13aWRl IFZBQ1VVTSBpbiB0aGF0IGRhdGFiYXNlLgogICAgIGF1dG92YWN1dW0gd29ya2VycycgYWN0aXZp dHkuCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIElmIGFuIGF1dG92YWN1dW0gd29ya2Vy IHByb2Nlc3MgY29tZXMgYWNyb3NzIGEgdGFibGUgd2l0aCB0aGUgZW5hYmxlZAorICAgIDx4cmVm IGxpbmtlbmQ9InJlbG9wdGlvbi1hdXRvdmFjdXVtLXBhcmFsbGVsLXdvcmtlcnMiLz4gc3RvcmFn ZSBwYXJhbWV0ZXIsCisgICAgaXQgd2lsbCBsYXVuY2ggcGFyYWxsZWwgd29ya2VycyBpbiBvcmRl ciB0byB2YWN1dW0gaW5kZXhlcyBvZiB0aGlzIHRhYmxlCisgICAgaW4gYSBwYXJhbGxlbCBtb2Rl LiBQYXJhbGxlbCB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIG9mIHByb2Nlc3Nlcwor ICAgIGVzdGFibGlzaGVkIGJ5IDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtd29ya2VyLXByb2Nlc3Nl cyIvPiwgbGltaXRlZCBieQorICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29y a2VycyIvPi4KKyAgICBUaGUgdG90YWwgbnVtYmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1dW0gd29y a2VycyB0aGF0IGNhbiBiZSBhY3RpdmUgYXQgb25lCisgICAgdGltZSBpcyBsaW1pdGVkIGJ5IHRo ZSA8eHJlZiBsaW5rZW5kPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIvPgor ICAgIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLgorICAgPC9wYXJhPgorCiAgICA8cGFyYT4KICAg ICBJZiBzZXZlcmFsIGxhcmdlIHRhYmxlcyBhbGwgYmVjb21lIGVsaWdpYmxlIGZvciB2YWN1dW1p bmcgaW4gYSBzaG9ydAogICAgIGFtb3VudCBvZiB0aW1lLCBhbGwgYXV0b3ZhY3V1bSB3b3JrZXJz IG1pZ2h0IGJlY29tZSBvY2N1cGllZCB3aXRoCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApp bmRleCA5ODI1MzJmZTcyNS4uNDg5NGRlMDIxY2QgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbApAQCAtMTcxOCw2ICsxNzE4LDI2IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAg PC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgIDx2YXJsaXN0ZW50cnkgaWQ9InJl bG9wdGlvbi1hdXRvdmFjdXVtLXBhcmFsbGVsLXdvcmtlcnMiIHhyZWZsYWJlbD0iYXV0b3ZhY3V1 bV9wYXJhbGxlbF93b3JrZXJzIj4KKyAgICA8dGVybT48bGl0ZXJhbD5hdXRvdmFjdXVtX3BhcmFs bGVsX3dvcmtlcnM8L2xpdGVyYWw+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICA8aW5kZXh0 ZXJtPgorICAgICA8cHJpbWFyeT48dmFybmFtZT5hdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnM8 L3Zhcm5hbWU+IHN0b3JhZ2UgcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgIDwvaW5kZXh0ZXJtPgor ICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgU2V0cyB0aGUg bWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIHRoYXQgY2FuIHBy b2Nlc3MKKyAgICAgIGluZGV4ZXMgb2YgdGhpcyB0YWJsZS4KKyAgICAgIFRoZSBkZWZhdWx0IHZh bHVlIGlzIC0xLCB3aGljaCBtZWFucyBubyBwYXJhbGxlbCBpbmRleCB2YWN1dW1pbmcgZm9yCisg ICAgICB0aGlzIHRhYmxlLiBJZiB2YWx1ZSBpcyAwIHRoZW4gcGFyYWxsZWwgZGVncmVlIHdpbGwg Y29tcHV0ZWQgYmFzZWQgb24KKyAgICAgIG51bWJlciBvZiBpbmRleGVzLgorICAgICAgTm90ZSB0 aGF0IHRoZSBjb21wdXRlZCBudW1iZXIgb2Ygd29ya2VycyBtYXkgbm90IGFjdHVhbGx5IGJlIGF2 YWlsYWJsZSBhdAorICAgICAgcnVuIHRpbWUuIElmIHRoaXMgb2NjdXJzLCB0aGUgYXV0b3ZhY3V1 bSB3aWxsIHJ1biB3aXRoIGZld2VyIHdvcmtlcnMKKyAgICAgIHRoYW4gZXhwZWN0ZWQuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJs aXN0ZW50cnkgaWQ9InJlbG9wdGlvbi1hdXRvdmFjdXVtLXZhY3V1bS10aHJlc2hvbGQiIHhyZWZs YWJlbD0iYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkIj4KICAgICA8dGVybT48bGl0ZXJhbD5h dXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD50b2FzdC5hdXRv dmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ8L2xpdGVyYWw+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikK ICAgICA8aW5kZXh0ZXJtPgotLSAKMi40My4wCgo= --0000000000009cf03e064bf78ae5 Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0004-Tests-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v23-0004-Tests-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm7v39jb1 RnJvbSA0MzhmMGI2OTlmNjNiZGVlZTdlMGRhMTc4NTlkNDAxY2M4ZGY5MmRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjA4OjE0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjMgNC81XSBUZXN0cyBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bQoKLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAgIDkgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgIDMwICsrCiBzcmMvYmFja2VuZC9w b3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAgMzggKysrCiBzcmMvaW5jbHVkZS9w b3N0bWFzdGVyL2F1dG92YWN1dW0uaCAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxl cy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L21vZHVsZXMv bWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL3Rl c3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlICAgfCAgIDIgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2F1dG92YWN1dW0vTWFrZWZpbGUgICAgIHwgIDI4ICsrCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf YXV0b3ZhY3V1bS9tZXNvbi5idWlsZCAgfCAgMzYgKysrCiAuLi4vdC8wMDFfcGFyYWxsZWxfYXV0 b3ZhY3V1bS5wbCAgICAgICAgICAgICAgfCAyOTkgKysrKysrKysrKysrKysrKysrCiAuLi4vdGVz dF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbCAgfCAgMTIgKwogLi4uL21vZHVs ZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jIHwgIDM1ICsrCiAuLi4vdGVzdF9h dXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jb250cm9sICAgfCAgIDMgKwogMTMgZmlsZXMgY2hh bmdlZCwgNDk1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVsX2F1 dG92YWN1dW0ucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0 b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1 bS5jb250cm9sCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDFlMmQ1YmUx YWYyLi41MTBlNTg0NmNkMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAt MTUyLDYgKzE1Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKKyNpbmNsdWRl ICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy9wZ19ydXNhZ2UuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAu aCIKQEAgLTg3Miw2ICs4NzMsMTQgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29u c3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAlsYXp5X2NoZWNrX3dyYXBhcm91bmRfZmFpbHNhZmUo dmFjcmVsKTsKIAlkZWFkX2l0ZW1zX2FsbG9jKHZhY3JlbCwgcGFyYW1zLm53b3JrZXJzKTsKIAor I2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJLyoKKwkgKiBUcmlnZ2VyIGluamVjdGlvbiBw b2ludCwgaWYgcGFyYWxsZWwgYXV0b3ZhY3V1bSBpcyBhYm91dCB0byBiZSBzdGFydGVkLgorCSAq LworCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgUGFyYWxsZWxWYWN1dW1Jc0Fj dGl2ZSh2YWNyZWwpKQorCQlJTkpFQ1RJT05fUE9JTlQoImF1dG92YWN1dW0tc3RhcnQtcGFyYWxs ZWwtdmFjdXVtIiwgTlVMTCk7CisjZW5kaWYKKwogCS8qCiAJICogQ2FsbCBsYXp5X3NjYW5faGVh cCB0byBwZXJmb3JtIGFsbCByZXF1aXJlZCBoZWFwIHBydW5pbmcsIGluZGV4CiAJICogdmFjdXVt aW5nLCBhbmQgaGVhcCB2YWN1dW1pbmcgKHBsdXMgcmVsYXRlZCBwcm9jZXNzaW5nKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggODBiNTdiZjlkYTMuLjFkMzUyYjQ0ZTQ0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTQwLDYgKzQwLDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgog I2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9p bnQuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwu aCIKIApAQCAtOTI1LDYgKzkyNiwxOSBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5k ZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5kZXhfc2NhbgogCQkJCQkJ CXB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQsIG53b3JrZXJzKSkpOwogCX0KIAorI2lmZGVm IFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJLyoKKwkgKiBUbyBiZSBhYmxlIHRvIGV4ZXJjaXNlIHdo ZXRoZXIgYWxsIHJlc2VydmVkIHBhcmFsbGVsIHdvcmtlcnMgYXJlIGJlaW5nCisJICogcmVsZWFz ZWQgYW55d2F5LCBhbGxvdyBpbmplY3Rpb24gcG9pbnRzIHRvIHRyaWdnZXIgYSBmYWlsdXJlIGF0 IHRoaXMKKwkgKiBwb2ludC4KKwkgKgorCSAqIFRoaXMgaW5qZWN0aW9uIHBvaW50IGlzIGFsc28g dXNlZCB0byB3YWl0IHVudGlsIHBhcmFsbGVsIHdvcmtlcnMKKwkgKiBmaW5pc2hlcyB0aGVpciBw YXJ0IG9mIGluZGV4IHByb2Nlc3NpbmcuCisJICovCisJaWYgKG53b3JrZXJzID4gMCkKKwkJSU5K RUNUSU9OX1BPSU5UKCJhdXRvdmFjdXVtLWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5n IiwgTlVMTCk7CisjZW5kaWYKKwogCS8qIFZhY3V1bSB0aGUgaW5kZXhlcyB0aGF0IGNhbiBiZSBw cm9jZXNzZWQgYnkgb25seSBsZWFkZXIgcHJvY2VzcyAqLwogCXBhcmFsbGVsX3ZhY3V1bV9wcm9j ZXNzX3Vuc2FmZV9pbmRleGVzKHB2cyk7CiAKQEAgLTEzMDIsNiArMTMxNiwyMiBAQCBwYXJhbGxl bF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJLyogUHJvY2Vz cyBpbmRleGVzIHRvIHBlcmZvcm0gdmFjdXVtL2NsZWFudXAgKi8KIAlwYXJhbGxlbF92YWN1dW1f cHJvY2Vzc19zYWZlX2luZGV4ZXMoJnB2cyk7CiAKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5U UworCS8qCisJICogSWYgd2UgYXJlIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VyLCB3ZSBjYW4g Y29uc3VtZSBkZWxheSBwYXJhbWV0ZXJzCisJICogZHVyaW5nIGluZGV4IHByb2Nlc3NpbmcgKHZp YSB2YWN1dW1fZGVsYXlfcG9pbnQgY2FsbCkuIFRoaXMgbG9nZ2luZworCSAqIGFsbG93cyB0ZXN0 cyB0byBlbnN1cmUgdGhpcy4KKwkgKi8KKwlpZiAoc2hhcmVkLT5pc19hdXRvdmFjdXVtKQorCQll bG9nKERFQlVHMiwKKwkJCSAicGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXIgY29zdCBwYXJhbXM6 IGNvc3RfbGltaXQ9JWQsIGNvc3RfZGVsYXk9JWcsIGNvc3RfcGFnZV9taXNzPSVkLCBjb3N0X3Bh Z2VfZGlydHk9JWQsIGNvc3RfcGFnZV9oaXQ9JWQiLAorCQkJIHZhY3V1bV9jb3N0X2xpbWl0LAor CQkJIHZhY3V1bV9jb3N0X2RlbGF5LAorCQkJIFZhY3V1bUNvc3RQYWdlTWlzcywKKwkJCSBWYWN1 dW1Db3N0UGFnZURpcnR5LAorCQkJIFZhY3V1bUNvc3RQYWdlSGl0KTsKKyNlbmRpZgorCiAJLyog UmVwb3J0IGJ1ZmZlci9XQUwgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwogCWJ1 ZmZlcl91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfVkFDVVVNX0tFWV9CVUZG RVJfVVNBR0UsIGZhbHNlKTsKIAl3YWxfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFM TEVMX1ZBQ1VVTV9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5jCmluZGV4IDBkNzhkMDJiZDA5Li5kMTdmYzkyZTc4MyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9hdXRvdmFjdXVtLmMKQEAgLTE0MDksNyArMTQwOSwxOCBAQCBhdmxfc2lndXNyMl9oYW5kbGVy KFNJR05BTF9BUkdTKQogc3RhdGljIHZvaWQKIGF1dG92YWN1dW1fd29ya2VyX2JlZm9yZV9zaG1l bV9leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpCiB7CisJaW50IG5yZXNlcnZlZF9vbGQgPSBhdl9u d29ya2Vyc19yZXNlcnZlZDsKKwogCUF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJz KCk7CisKKwlpZiAobnJlc2VydmVkX29sZCA+IDApCisJeworCQllbG9nKERFQlVHMiwKKwkJCSBu Z2V0dGV4dCgiYXV0b3ZhY3V1bSB3b3JrZXIgYmVmb3JlX3NobWVtX2V4aXQ6ICVkIHBhcmFsbGVs IHdvcmtlciBoYXMgYmVlbiByZWxlYXNlZCIsCisJCQkJCSAgImF1dG92YWN1dW0gd29ya2VyIGJl Zm9yZV9zaG1lbV9leGl0OiAlZCBwYXJhbGxlbCB3b3JrZXJzIGhhcyBiZWVuIHJlbGVhc2VkIiwK KwkJCQkJCW5yZXNlcnZlZF9vbGQgLSBhdl9ud29ya2Vyc19yZXNlcnZlZCksCisJCQkgbnJlc2Vy dmVkX29sZCAtIGF2X253b3JrZXJzX3Jlc2VydmVkKTsKKwl9CiB9CiAKIC8qCkBAIC0yNDk1LDEy ICsyNTA2LDIwIEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkJfQogCQlQR19DQVRDSCgpOwogCQl7 CisJCQlpbnQJbnJlc2VydmVkX3dvcmtlcnMgPSBhdl9ud29ya2Vyc19yZXNlcnZlZDsKKwogCQkJ LyoKIAkJCSAqIFBhcmFsbGVsIGF1dG92YWN1dW0gY2FuIHJlc2VydmUgcGFyYWxsZWwgd29ya2Vy cy4gTWFrZSBzdXJlCiAJCQkgKiB0aGF0IGFsbCByZXNlcnZlZCB3b3JrZXJzIGFyZSByZWxlYXNl ZC4KIAkJCSAqLwogCQkJQXV0b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxlbFdvcmtlcnMoKTsKIAor CQkJaWYgKG5yZXNlcnZlZF93b3JrZXJzID4gMCkKKwkJCQllcmVwb3J0KERFQlVHMiwKKwkJCQkJ CShlcnJtc2coIiVkIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyBoYXMgYmVlbiByZWxlYXNl ZCBhZnRlciBvY2N1cmVkIGVycm9yIiwKKwkJCQkJCQkJbnJlc2VydmVkX3dvcmtlcnMpLAorCQkJ CQkJIGVycmhpZGVjb250ZXh0KHRydWUpKSk7CisKIAkJCS8qCiAJCQkgKiBBYm9ydCB0aGUgdHJh bnNhY3Rpb24sIHN0YXJ0IGEgbmV3IG9uZSwgYW5kIHByb2NlZWQgd2l0aCB0aGUKIAkJCSAqIG5l eHQgdGFibGUgaW4gb3VyIGxpc3QuCkBAIC0zNDY1LDYgKzM0ODQsMjEgQEAgQXV0b1ZhY3V1bVJl bGVhc2VBbGxQYXJhbGxlbFdvcmtlcnModm9pZCkKIAlBc3NlcnQoYXZfbndvcmtlcnNfcmVzZXJ2 ZWQgPT0gMCk7CiB9CiAKKy8qCisgKiBHZXQgbnVtYmVyIG9mIGZyZWUgYXV0b3ZhY3V1bSBwYXJh bGxlbCB3b3JrZXJzLgorICovCit1aW50MzIKK0F1dG9WYWN1dW1HZXRGcmVlUGFyYWxsZWxXb3Jr ZXJzKHZvaWQpCit7CisJdWludDMyCQluZnJlZV93b3JrZXJzOworCisJTFdMb2NrQWNxdWlyZShB dXRvdmFjdXVtTG9jaywgTFdfU0hBUkVEKTsKKwluZnJlZV93b3JrZXJzID0gQXV0b1ZhY3V1bVNo bWVtLT5hdl9mcmVlUGFyYWxsZWxXb3JrZXJzOworCUxXTG9ja1JlbGVhc2UoQXV0b3ZhY3V1bUxv Y2spOworCisJcmV0dXJuIG5mcmVlX3dvcmtlcnM7Cit9CisKIC8qCiAgKiBhdXRvdmFjX2luaXQK ICAqCQlUaGlzIGlzIGNhbGxlZCBhdCBwb3N0bWFzdGVyIGluaXRpYWxpemF0aW9uLgpAQCAtMzYz Myw1ICszNjY3LDkgQEAgYWRqdXN0X2ZyZWVfcGFyYWxsZWxfd29ya2VycyhpbnQgcHJldl9tYXhf cGFyYWxsZWxfd29ya2VycykKIAlBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtl cnMgPSBNYXgobmZyZWVfd29ya2VycywgMCk7CiAJQXV0b1ZhY3V1bVNobWVtLT5hdl9tYXhQYXJh bGxlbFdvcmtlcnMgPSBhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzOwogCisJZWxvZyhE RUJVRzIsCisJCSAibnVtYmVyIG9mIGZyZWUgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIGlz IHNldCB0byAldSBkdWUgdG8gY29uZmlnIHJlbG9hZCIsCisJCSBBdXRvVmFjdXVtU2htZW0tPmF2 X2ZyZWVQYXJhbGxlbFdvcmtlcnMpOworCiAJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7 CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaCBiL3Ny Yy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oCmluZGV4IGYzNzgzYWZiNTFiLi41MmJl MjYwZTE1ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgK KysrIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgKQEAgLTY2LDYgKzY2LDcg QEAgZXh0ZXJuIGJvb2wgQXV0b1ZhY3V1bVJlcXVlc3RXb3JrKEF1dG9WYWN1dW1Xb3JrSXRlbVR5 cGUgdHlwZSwKIGV4dGVybiB2b2lkCUF1dG9WYWN1dW1SZXNlcnZlUGFyYWxsZWxXb3JrZXJzKGlu dCAqbndvcmtlcnMpOwogZXh0ZXJuIHZvaWQgQXV0b1ZhY3V1bVJlbGVhc2VQYXJhbGxlbFdvcmtl cnMoaW50IG53b3JrZXJzKTsKIGV4dGVybiB2b2lkIEF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxs ZWxXb3JrZXJzKHZvaWQpOworZXh0ZXJuIHVpbnQzMiBBdXRvVmFjdXVtR2V0RnJlZVBhcmFsbGVs V29ya2Vycyh2b2lkKTsKIAogLyogc2hhcmVkIG1lbW9yeSBzdHVmZiAqLwogZXh0ZXJuIFNpemUg QXV0b1ZhY3V1bVNobWVtU2l6ZSh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv TWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCmluZGV4IDQ0YzcxNjNjMWNkLi45 MzdkYmI2NGZkMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQorKysgYi9z cmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCkBAIC0xNiw2ICsxNiw3IEBAIFNVQkRJUlMgPSBcCiAJ CSAgcGxzYW1wbGUgXAogCQkgIHNwZ2lzdF9uYW1lX29wcyBcCiAJCSAgdGVzdF9haW8gXAorCQkg IHRlc3RfYXV0b3ZhY3V1bSBcCiAJCSAgdGVzdF9iaW5hcnloZWFwIFwKIAkJICB0ZXN0X2JpdG1h cHNldCBcCiAJCSAgdGVzdF9ibG9vbWZpbHRlciBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAppbmRleCAyNjM0 YTUxOTkzNS4uNWFjOGQ4NzcwMmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24u YnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZApAQCAtMTYsNiArMTYsNyBA QCBzdWJkaXIoJ3Bsc2FtcGxlJykKIHN1YmRpcignc3BnaXN0X25hbWVfb3BzJykKIHN1YmRpcign c3NsX3Bhc3NwaHJhc2VfY2FsbGJhY2snKQogc3ViZGlyKCd0ZXN0X2FpbycpCitzdWJkaXIoJ3Rl c3RfYXV0b3ZhY3V1bScpCiBzdWJkaXIoJ3Rlc3RfYmluYXJ5aGVhcCcpCiBzdWJkaXIoJ3Rlc3Rf Yml0bWFwc2V0JykKIHN1YmRpcigndGVzdF9ibG9vbWZpbHRlcicpCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uNzE2ZTE3ZjVhMmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMiBAQAorIyBHZW5lcmF0 ZWQgc3ViZGlyZWN0b3JpZXMKKy90bXBfY2hlY2svCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYXV0b3ZhY3V1bS9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4z MjI1NGM1M2E1ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL01ha2VmaWxlCkBAIC0wLDAgKzEsMjggQEAKKyMgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2F1dG92YWN1dW0vTWFrZWZpbGUKKworUEdGSUxFREVTQyA9ICJ0ZXN0X2F1dG92YWN1dW0gLSB0 ZXN0IGNvZGUgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0iCisKK01PRFVMRV9iaWcgPSB0ZXN0X2F1 dG92YWN1dW0KK09CSlMgPSBcCisJJChXSU4zMlJFUykgXAorCXRlc3RfYXV0b3ZhY3V1bS5vCisK K0VYVEVOU0lPTiA9IHRlc3RfYXV0b3ZhY3V1bQorREFUQSA9IHRlc3RfYXV0b3ZhY3V1bS0tMS4w LnNxbAorCitUQVBfVEVTVFMgPSAxCisKK0VYVFJBX0lOU1RBTEwgPSBzcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMKKworZXhwb3J0IGVuYWJsZV9pbmplY3Rpb25fcG9pbnRzCisKK2lm ZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBH X0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBzcmMvdGVz dC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bQordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2lu Y2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKK2luY2x1ZGUgJCh0b3Bf c3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1rCitlbmRpZgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNzViMjQ4MTRiMTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNvbi5idWlsZApAQCAtMCwwICsxLDM2IEBACisjIENv cHlyaWdodCAoYykgMjAyNC0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorCit0ZXN0X2F1dG92YWN1dW1fc291cmNlcyA9IGZpbGVzKAorICAndGVzdF9hdXRvdmFjdXVt LmMnLAorKQorCitpZiBob3N0X3N5c3RlbSA9PSAnd2luZG93cycKKyAgdGVzdF9hdXRvdmFjdXVt X3NvdXJjZXMgKz0gcmNfbGliX2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBb CisgICAgJy0tTkFNRScsICd0ZXN0X2F1dG92YWN1dW0nLAorICAgICctLUZJTEVERVNDJywgJ3Rl c3RfYXV0b3ZhY3V1bSAtIHRlc3QgY29kZSBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bScsXSkKK2Vu ZGlmCisKK3Rlc3RfYXV0b3ZhY3V1bSA9IHNoYXJlZF9tb2R1bGUoJ3Rlc3RfYXV0b3ZhY3V1bScs CisgIHRlc3RfYXV0b3ZhY3V1bV9zb3VyY2VzLAorICBrd2FyZ3M6IHBnX3Rlc3RfbW9kX2FyZ3Ms CispCit0ZXN0X2luc3RhbGxfbGlicyArPSB0ZXN0X2F1dG92YWN1dW0KKwordGVzdF9pbnN0YWxs X2RhdGEgKz0gZmlsZXMoCisgICd0ZXN0X2F1dG92YWN1dW0uY29udHJvbCcsCisgICd0ZXN0X2F1 dG92YWN1dW0tLTEuMC5zcWwnLAorKQorCit0ZXN0cyArPSB7CisgICduYW1lJzogJ3Rlc3RfYXV0 b3ZhY3V1bScsCisgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAorICAnYmQnOiBt ZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAorICAndGFwJzogeworICAgICdlbnYnOiB7CisgICAg ICAgJ2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzJzogZ2V0X29wdGlvbignaW5qZWN0aW9uX3BvaW50 cycpID8gJ3llcycgOiAnbm8nLAorICAgIH0sCisgICAgJ3Rlc3RzJzogWworICAgICAgJ3QvMDAx X3BhcmFsbGVsX2F1dG92YWN1dW0ucGwnLAorICAgIF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9wYXJhbGxlbF9hdXRvdmFjdXVt LnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdC8wMDFfcGFyYWxsZWxfYXV0 b3ZhY3V1bS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWRmYmRl NzNhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1 bS90LzAwMV9wYXJhbGxlbF9hdXRvdmFjdXVtLnBsCkBAIC0wLDAgKzEsMjk5IEBACisjIFRlc3Qg cGFyYWxsZWwgYXV0b3ZhY3V1bSBiZWhhdmlvcgorCit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2Fs bCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitpZiAoJEVOVntlbmFibGVfaW5qZWN0aW9uX3Bv aW50c30gbmUgJ3llcycpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnSW5qZWN0aW9uIHBvaW50cyBu b3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQnOworfQorCisjIEJlZm9yZSBlYWNoIHRlc3Qgd2Ug c2hvdWxkIGRpc2FibGUgYXV0b3ZhY3V1bSBmb3IgJ3Rlc3RfYXV0b3ZhYycgdGFibGUgYW5kCisj IGdlbmVyYXRlIHNvbWUgZGVhZCB0dXBsZXMgaW4gaXQuCisKK3N1YiBwcmVwYXJlX2Zvcl9uZXh0 X3Rlc3QKK3sKKwlteSAoJG5vZGUsICR0ZXN0X251bWJlcikgPSBAXzsKKworCSRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJCUFMVEVSIFRBQkxFIHRlc3RfYXV0b3ZhYyBTRVQgKGF1 dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKKwl9KTsKKworCSRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcXF7CisJCVVQREFURSB0ZXN0X2F1dG92YWMgU0VUIGNvbF8xID0gJHRlc3RfbnVt YmVyOworCX0pOworfQorCisKK215ICRwc3FsX291dDsKKworbXkgJG5vZGUgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUxJyk7Ciskbm9kZS0+aW5pdDsKKworIyBDb25maWd1 cmUgcG9zdGdyZXMsIHNvIGl0IGNhbiBsYXVuY2ggcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJz LCBsb2cgYWxsCisjIGluZm9ybWF0aW9uIHdlIGFyZSBpbnRlcmVzdGVkIGluIGFuZCBhdXRvdmFj dXVtIHdvcmtzIGZyZXF1ZW50bHkKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywgcXF7CisJbWF4X3dvcmtlcl9wcm9jZXNzZXMgPSAyMAorCW1heF9wYXJhbGxlbF93b3JrZXJz ID0gMjAKKwltYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2VycyA9IDIwCisJYXV0b3ZhY3V1 bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDIwCisJbG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMgor CWxvZ19hdXRvdmFjdXVtX21pbl9kdXJhdGlvbiA9IDAKKwlhdXRvdmFjdXVtX25hcHRpbWUgPSAn MXMnCisJbWluX3BhcmFsbGVsX2luZGV4X3NjYW5fc2l6ZSA9IDAKKwlzaGFyZWRfcHJlbG9hZF9s aWJyYXJpZXM9dGVzdF9hdXRvdmFjdXVtCit9KTsKKyRub2RlLT5zdGFydDsKKworIyBDaGVjayBp ZiB0aGUgZXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgaXMgYXZhaWxhYmxlLCBhcyBpdCBtYXkg YmUKKyMgcG9zc2libGUgdGhhdCB0aGlzIHNjcmlwdCBpcyBydW4gd2l0aCBpbnN0YWxsY2hlY2ss IHdoZXJlIHRoZSBtb2R1bGUKKyMgd291bGQgbm90IGJlIGluc3RhbGxlZCBieSBkZWZhdWx0Lgor aWYgKCEkbm9kZS0+Y2hlY2tfZXh0ZW5zaW9uKCdpbmplY3Rpb25fcG9pbnRzJykpCit7CisJcGxh biBza2lwX2FsbCA9PiAnRXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgbm90IGluc3RhbGxlZCc7 Cit9CisKKyMgQ3JlYXRlIGFsbCBmdW5jdGlvbnMgbmVlZGVkIGZvciB0ZXN0aW5nCiskbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBFWFRFTlNJT04gdGVzdF9hdXRvdmFj dXVtOworCUNSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK30pOworCitteSAkaW5k ZXhlc19udW0gPSA0OworbXkgJGluaXRpYWxfcm93c19udW0gPSAxMF8wMDA7CitteSAkYXV0b3Zh Y3V1bV9wYXJhbGxlbF93b3JrZXJzID0gMjsKKworIyBDcmVhdGUgdGFibGUgYW5kIGZpbGwgaXQg d2l0aCBzb21lIGRhdGEKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRF IFRBQkxFIHRlc3RfYXV0b3ZhYyAoCisJCWlkIFNFUklBTCBQUklNQVJZIEtFWSwKKwkJY29sXzEg SU5URUdFUiwgIGNvbF8yIElOVEVHRVIsICBjb2xfMyBJTlRFR0VSLCAgY29sXzQgSU5URUdFUgor CSkgV0lUSCAoYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID0gJGF1dG92YWN1dW1fcGFyYWxs ZWxfd29ya2Vycyk7CisKKwlJTlNFUlQgSU5UTyB0ZXN0X2F1dG92YWMKKwlTRUxFQ1QKKwkJZyBB UyBjb2wxLAorCQlnICsgMSBBUyBjb2wyLAorCQlnICsgMiBBUyBjb2wzLAorCQlnICsgMyBBUyBj b2w0CisJRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJGluaXRpYWxfcm93c19udW0pIEFTIGc7Cit9 KTsKKworIyBDcmVhdGUgc3BlY2lmaWVkIG51bWJlciBvZiBiLXRyZWUgaW5kZXhlcyBvbiB0aGUg dGFibGUKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJRE8gXCRcJAorCURFQ0xB UkUKKwkJaSBJTlRFR0VSOworCUJFR0lOCisJCUZPUiBpIElOIDEuLiRpbmRleGVzX251bSBMT09Q CisJCQlFWEVDVVRFIGZvcm1hdCgnQ1JFQVRFIElOREVYIGlkeF9jb2xfXCVzIE9OIHRlc3RfYXV0 b3ZhYyAoY29sX1wlcyk7JywgaSwgaSk7CisJCUVORCBMT09QOworCUVORCBcJFwkOworfSk7CisK KyMgVGVzdCAxIDoKKyMgT3VyIHRhYmxlIGhhcyBlbm91Z2ggaW5kZXhlcyBhbmQgYXBwcm9wcmlh dGUgcmVsb3B0aW9ucywgc28gYXV0b3ZhY3V1bSBtdXN0CisjIGJlIGFibGUgdG8gcHJvY2VzcyBp dCBpbiBwYXJhbGxlbCBtb2RlLiBKdXN0IGNoZWNrIGlmIGl0IGNhbi4KKyMgQWxzbyBjaGVjayB3 aGV0aGVyIGFsbCByZXF1ZXN0ZWQgd29ya2VyczoKKyMgCTEpIGxhdW5jaGVkCisjIAkyKSBjb3Jy ZWN0bHkgcmVsZWFzZWQKKworcHJlcGFyZV9mb3JfbmV4dF90ZXN0KCRub2RlLCAxKTsKKworJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlBTFRFUiBUQUJMRSB0ZXN0X2F1dG92YWMg U0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsKK30pOworCisjIFdhaXQgdW50aWwgdGhl IHBhcmFsbGVsIGF1dG92YWN1dW0gb24gdGFibGUgaXMgY29tcGxldGVkLiBBdCB0aGUgc2FtZSB0 aW1lLAorIyB3ZSBjaGVjayB0aGF0IHRoZSByZXF1aXJlZCBudW1iZXIgb2YgcGFyYWxsZWwgd29y a2VycyBoYXMgYmVlbiBzdGFydGVkLgorJGxvZ19zdGFydCA9ICRub2RlLT53YWl0X2Zvcl9sb2co CisJcXIvcGFyYWxsZWwgd29ya2VyczogaW5kZXggdmFjdXVtOiAyIHBsYW5uZWQsIDIgcmVzZXJ2 ZWQsIDIgbGF1bmNoZWQvLAorCSRsb2dfc3RhcnQKKyk7CisKKyRwc3FsX291dCA9ICRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIGdldF9wYXJhbGxlbF9hdXRvdmFjdXVt X2ZyZWVfd29ya2VycygpOworfSk7CitpcygkcHNxbF9vdXQsIDIwLCAnQWxsIHBhcmFsbGVsIHdv cmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQgYnkgdGhlIGxlYWRlcicpOworCisjIFRlc3QgMjoKKyMg Q2hlY2sgd2hldGhlciBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlciBjYW4gcHJvcGFnYXRlIGNv c3QtYmFzZWQgcGFyYW1ldGVycworIyB0byBwYXJhbGxlbCB3b3JrZXJzLgorCitwcmVwYXJlX2Zv cl9uZXh0X3Rlc3QoJG5vZGUsIDIpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFx eworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnYXV0b3ZhY3V1bS1zdGFydC1wYXJh bGxlbC12YWN1dW0nLCAnd2FpdCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn YXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZycsICd3YWl0Jyk7CisK KwlBTFRFUiBUQUJMRSB0ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtl cnMgPSAxLCBhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsKK30pOworCisjIFdhaXQgdW50aWwg cGFyYWxsZWwgYXV0b3ZhY3V1bSBpcyBpbml0ZWQKKyRub2RlLT53YWl0X2Zvcl9ldmVudCgKKwkn YXV0b3ZhY3V1bSB3b3JrZXInLAorCSdhdXRvdmFjdXVtLXN0YXJ0LXBhcmFsbGVsLXZhY3V1bScK Kyk7CisKKyMgUmVsb2FkIGNvbmZpZyAtIGxlYWRlciB3b3JrZXIgbXVzdCB1cGRhdGUgaXRzIG93 biBwYXJhbWV0ZXJzIGR1cmluZyBpbmRleGVzCisjIHByb2Nlc3NpbmcKKyRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXF7CisJQUxURVIgU1lTVEVNIFNFVCB2YWN1dW1fY29zdF9saW1pdCA9 IDUwMDsKKwlBTFRFUiBTWVNURU0gU0VUIHZhY3V1bV9jb3N0X3BhZ2VfbWlzcyA9IDEwOworCUFM VEVSIFNZU1RFTSBTRVQgdmFjdXVtX2Nvc3RfcGFnZV9kaXJ0eSA9IDEwOworCUFMVEVSIFNZU1RF TSBTRVQgdmFjdXVtX2Nvc3RfcGFnZV9oaXQgPSAxMDsKKwlTRUxFQ1QgcGdfcmVsb2FkX2NvbmYo KTsKK30pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCVNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX3dha2V1cCgnYXV0b3ZhY3V1bS1zdGFydC1wYXJhbGxlbC12YWN1dW0nKTsK K30pOworCisjIE5vdyB3YWl0IHVudGlsIHBhcmFsbGVsIGF1dG92YWN1dW0gbGVhZGVyIGNvbXBs ZXRlcyBwcm9jZXNzaW5nIHRhYmxlIChpLmUuCisjIGd1YXJhbnRlZWQgdG8gY2FsbCB2YWN1dW1f ZGVsYXlfcG9pbnQpIGFuZCBsYXVuY2hlcyBwYXJhbGxlbCB3b3JrZXIuCiskbm9kZS0+d2FpdF9m b3JfZXZlbnQoCisJJ2F1dG92YWN1dW0gd29ya2VyJywKKwknYXV0b3ZhY3V1bS1sZWFkZXItYmVm b3JlLWluZGV4ZXMtcHJvY2Vzc2luZycKKyk7CisKKyMgQ2hlY2sgd2hldGhlciBwYXJhbGxlbCB3 b3JrZXIgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgYWxsIHBhcmFtZXRlcnMgZHVyaW5nCisjIGluZGV4 IHByb2Nlc3NpbmcKKyRsb2dfc3RhcnQgPSAkbm9kZS0+d2FpdF9mb3JfbG9nKAorCXFyL3BhcmFs bGVsIGF1dG92YWN1dW0gd29ya2VyIGNvc3QgcGFyYW1zOiBjb3N0X2xpbWl0PTUwMCwgY29zdF9k ZWxheT0yLCAvIC4KKwlxci9jb3N0X3BhZ2VfbWlzcz0xMCwgY29zdF9wYWdlX2RpcnR5PTEwLCBj b3N0X3BhZ2VfaGl0PTEwLywKKwkkbG9nX3N0YXJ0CispOworCisjIENsZWFudXAKKyRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVw KCdhdXRvdmFjdXVtLWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJyk7CisKKwlTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2F1dG92YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFj dXVtJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdhdXRvdmFjdXVtLWxlYWRl ci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJyk7CisKKwlBTFRFUiBUQUJMRSB0ZXN0X2F1dG92 YWMgU0VUIChhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPSAkYXV0b3ZhY3V1bV9wYXJhbGxl bF93b3JrZXJzKTsKK30pOworCisjIFRlc3QgMzoKKyMgVGVzdCBhZGp1c3RtZW50IG9mIGZyZWUg cGFyYWxsZWwgd29ya2VycyBudW1iZXIgd2hlbiBjaGFuZ2luZworIyBhdXRvdmFjdXVtX21heF9w YXJhbGxlbF93b3JrZXJzIHBhcmFtZXRlcgorCitwcmVwYXJlX2Zvcl9uZXh0X3Rlc3QoJG5vZGUs IDQpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2F0dGFjaCgnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vz c2luZycsICd3YWl0Jyk7CisJQUxURVIgVEFCTEUgdGVzdF9hdXRvdmFjIFNFVCAoYXV0b3ZhY3V1 bV9lbmFibGVkID0gdHJ1ZSk7Cit9KTsKKworJG5vZGUtPndhaXRfZm9yX2V2ZW50KAorCSdhdXRv dmFjdXVtIHdvcmtlcicsCisJJ2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nl c3NpbmcnCispOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUFMVEVSIFNZ U1RFTSBTRVQgYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDE7CisJU0VMRUNUIHBn X3JlbG9hZF9jb25mKCk7Cit9KTsKKworIyBTaW5jZSAyIHBhcmFsbGVsIHdvcmtlcnMgYWxyZWFk eSBsYXVuY2hlZCBhbmQgd2lsbCBiZSByZWxlYXNlZCBpbiB0aGUgZnV0dXJlLAorIyB3ZSBhcmUg ZXhwZWN0aW5nIHRoYXQgOgorIyAxKSBudW1iZXIgb2YgZnJlZSB3b3JrZXJzIHdpbGwgYmUgJzAn IGFmdGVyIGNvbmZpZyByZWxvYWQKKyMgMikgbnVtYmVyIG9mIGZyZWUgd29ya2VycyB3aWxsIGJl ICcxJyBhZnRlciByZWxlYXNpbmcgd29ya2VycworCisjIENoZWNrIHN0YXRlbWVudCAoMSkKKyRs b2dfc3RhcnQgPSAkbm9kZS0+d2FpdF9mb3JfbG9nKAorCXFyL251bWJlciBvZiBmcmVlIHBhcmFs bGVsIGF1dG92YWN1dW0gd29ya2VycyBpcyBzZXQgdG8gMCBkdWUgdG8gY29uZmlnIHJlbG9hZC8s CisJJGxvZ19zdGFydAorKTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1p bmRleGVzLXByb2Nlc3NpbmcnKTsKK30pOworCisjIFdhaXQgdW50aWwgdGhlIGVuZCBvZiBwYXJh bGxlbCBwcm9jZXNzaW5nCiskbG9nX3N0YXJ0ID0gJG5vZGUtPndhaXRfZm9yX2xvZygKKwlxci9w YXJhbGxlbCB3b3JrZXJzOiBpbmRleCB2YWN1dW06IDIgcGxhbm5lZCwgMiByZXNlcnZlZCwgMiBs YXVuY2hlZC8sCisJJGxvZ19zdGFydAorKTsKKworIyBDaGVjayBzdGF0ZW1lbnQgKDIpCiskcHNx bF9vdXQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCVNFTEVDVCBnZXRfcGFy YWxsZWxfYXV0b3ZhY3V1bV9mcmVlX3dvcmtlcnMoKTsKK30pOworaXMoJHBzcWxfb3V0LCAxLCAn TnVtYmVyIG9mIGZyZWUgcGFyYWxsZWwgd29ya2VycyBpcyBjb25zaXN0ZW50Jyk7CisKKyMgQ2xl YW51cAorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19kZXRhY2goJ2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3Np bmcnKTsKKwlBTFRFUiBTWVNURU0gU0VUIGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMg PSAxMDsKKwlTRUxFQ1QgcGdfcmVsb2FkX2NvbmYoKTsKK30pOworCisjIFRlc3QgNDoKKyMgV2Ug d2FudCBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgdG8gYmUgcmVsZWFzZWQgZXZlbiBpZiBs ZWFkZXIgZ2V0cyBhbgorIyBlcnJvci4gQXQgZmlyc3QsIHNpbXVsYXRlIHNpdHVhdGlvbiwgd2hl biBsZWFkZXIgZXhpdHMgZHVlIHRvIGFuIEVSUk9SLgorCitwcmVwYXJlX2Zvcl9uZXh0X3Rlc3Qo JG5vZGUsIDQpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCVNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMt cHJvY2Vzc2luZycsICdlcnJvcicpOworCUFMVEVSIFRBQkxFIHRlc3RfYXV0b3ZhYyBTRVQgKGF1 dG92YWN1dW1fZW5hYmxlZCA9IHRydWUpOworfSk7CisKKyRsb2dfc3RhcnQgPSAkbm9kZS0+d2Fp dF9mb3JfbG9nKAorCXFyL2Vycm9yIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IC8gLgor CXFyL2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3NpbmcvLAorCSRsb2df c3RhcnQKKyk7CisKKyRsb2dfc3RhcnQgPSAkbm9kZS0+d2FpdF9mb3JfbG9nKAorCXFyLzIgcGFy YWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIGhhcyBiZWVuIHJlbGVhc2VkIGFmdGVyIG9jY3VyZWQg ZXJyb3IvLAorCSRsb2dfc3RhcnQKKyk7CisKKyMgQ2xlYW51cAorJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2F1dG92YWN1 dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3NpbmcnKTsKK30pOworCisjIFRlc3QgNToK KyMgU2FtZSBhcyBhYm92ZSB0ZXN0LCBidXQgc2ltdWxhdGUgc2l0dWF0aW9uLCB3aGVuIGxlYWRl ciBleGl0cyBkdWUgdG8gRkFUQUwuCisKK3ByZXBhcmVfZm9yX25leHRfdGVzdCgkbm9kZSwgNSk7 CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIGluamVjdGlvbl9w b2ludHNfYXR0YWNoKCdhdXRvdmFjdXVtLWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5n JywgJ3dhaXQnKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX2Vu YWJsZWQgPSB0cnVlKTsKK30pOworCisjIFdhaXQgdW50aWwgcGFyYWxsZWwgd29ya2VycyBhcmUg cmVzZXJ2ZWQgYXV0b3ZhY3V1bSBhbmQga2lsbCB0aGUgbGVhZGVyCiskbm9kZS0+d2FpdF9mb3Jf ZXZlbnQoCisJJ2F1dG92YWN1dW0gd29ya2VyJywKKwknYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3Jl LWluZGV4ZXMtcHJvY2Vzc2luZycKKyk7CisKK215ICRhdl9waWQgPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxeworCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5CisJV0hF UkUgYmFja2VuZF90eXBlID0gJ2F1dG92YWN1dW0gd29ya2VyJworCSAgQU5EIHdhaXRfZXZlbnQg PSAnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZycKKwlMSU1JVCAx OworfSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIHBnX3Rl cm1pbmF0ZV9iYWNrZW5kKCckYXZfcGlkJyk7Cit9KTsKKworJGxvZ19zdGFydCA9ICRub2RlLT53 YWl0X2Zvcl9sb2coCisJcXIvYXV0b3ZhY3V1bSB3b3JrZXIgYmVmb3JlX3NobWVtX2V4aXQ6IDIg cGFyYWxsZWwgd29ya2VycyBoYXMgYmVlbiByZWxlYXNlZC8sCisJJGxvZ19zdGFydAorKTsKKwor IyBDbGVhbnVwCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCVNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2RldGFjaCgnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJv Y2Vzc2luZycpOworfSk7CisKKyRub2RlLT5zdG9wOworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0tLTEu MC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0t LTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU1NjQ2ZTBk ZWY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0v dGVzdF9hdXRvdmFjdXVtLS0xLjAuc3FsCkBAIC0wLDAgKzEsMTIgQEAKKy8qIHNyYy90ZXN0L21v ZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbCAqLworCistLSBj b21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JF QVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3RfYXV0b3ZhY3V1 bSIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKKy8qCisgKiBGdW5jdGlvbnMgZm9yIGV4cGVj dGluZyBzaGFyZWQgYXV0b3ZhY3V1bSBzdGF0ZQorICovCisKK0NSRUFURSBGVU5DVElPTiBnZXRf cGFyYWxsZWxfYXV0b3ZhY3V1bV9mcmVlX3dvcmtlcnMoKQorUkVUVVJOUyBJTlRFR0VSIFNUUklD VAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE5NWE2MTQ5YTVkCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmMKQEAgLTAsMCAr MSwzNSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdGVzdF9hdXRvdmFjdXVtLmMKKyAq CQlIZWxwZXJzIHRvIHdyaXRlIHRlc3RzIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCisgKgorICog Q29weXJpZ2h0IChjKSAyMDIwLTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1 dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor CisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJw b3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQu aCIKKworUEdfTU9EVUxFX01BR0lDOworCitQR19GVU5DVElPTl9JTkZPX1YxKGdldF9wYXJhbGxl bF9hdXRvdmFjdXVtX2ZyZWVfd29ya2Vycyk7CitEYXR1bQorZ2V0X3BhcmFsbGVsX2F1dG92YWN1 dW1fZnJlZV93b3JrZXJzKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJdWludDMyCQluZnJlZV93b3Jr ZXJzOworCisjaWZuZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJZXJlcG9ydChFUlJPUiwgZXJy bXNnKCJpbmplY3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQiKSk7CisjZW5kaWYKKworCW5mcmVl X3dvcmtlcnMgPSBBdXRvVmFjdXVtR2V0RnJlZVBhcmFsbGVsV29ya2VycygpOworCisJUEdfUkVU VVJOX1VJTlQzMihuZnJlZV93b3JrZXJzKTsKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jb250cm9sIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmNvbnRyb2wKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFiN2ZhZDI1OGYwCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmNvbnRy b2wKQEAgLTAsMCArMSwzIEBACitjb21tZW50ID0gJ1Rlc3QgY29kZSBmb3IgcGFyYWxsZWwgYXV0 b3ZhY3V1bScKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCittb2R1bGVfcGF0aG5hbWUgPSAnJGxp YmRpci90ZXN0X2F1dG92YWN1dW0nCi0tIAoyLjQzLjAKCg== --0000000000009cf03e064bf78ae5 Content-Type: text/x-patch; charset="US-ASCII"; name="v22--v23-diff-for-0004.patch" Content-Disposition: attachment; filename="v22--v23-diff-for-0004.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm7v3fm05 RnJvbSA1ZmEwOGVkZTIxNzFiNjhiNWI0NjUyNzQzZDY0MDFlM2Y2NjUyZjk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDEgTWFyIDIwMjYgMjE6MzY6MDAgKzA3MDAKU3ViamVjdDogW1BBVENI IDMvM10gZml4ZXMgZm9yIDAwMDQgcGF0Y2gKCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtcGFyYWxsZWwuYyAgICAgICAgIHwgMzMgKysrKy0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgMTggKysrKysrKy0tLQogc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQgIHwgIDIgKy0KIC4uLi90 LzAwMV9wYXJhbGxlbF9hdXRvdmFjdXVtLnBsICAgICAgICAgICAgICB8IDI2ICsrLS0tLS0tLS0t LS0tLQogLi4uL21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jIHwgIDgg Ky0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgNjEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggNTQyMTBhNDk3MWQuLjFk MzUyYjQ0ZTQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxl bC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTMwMSwx MCArMzAxLDYgQEAgc3RhdGljIGJvb2wgcGFyYWxsZWxfdmFjdXVtX2luZGV4X2lzX3BhcmFsbGVs X3NhZmUoUmVsYXRpb24gaW5kcmVsLCBpbnQgbnVtX2luZGUKIAkJCQkJCQkJCQkJCSAgIGJvb2wg dmFjdXVtKTsKIHN0YXRpYyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9lcnJvcl9jYWxsYmFjayh2b2lk ICphcmcpOwogCi0jaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKLXN0YXRpYyBpbmxpbmUgdm9p ZCBwYXJhbGxlbF92YWN1dW1fcmVwb3J0X2Nvc3RfYmFzZWRfcGFyYW1zKHZvaWQpOwotI2VuZGlm Ci0KIC8qCiAgKiBUcnkgdG8gZW50ZXIgcGFyYWxsZWwgbW9kZSBhbmQgY3JlYXRlIGEgcGFyYWxs ZWwgY29udGV4dC4gIFRoZW4gaW5pdGlhbGl6ZQogICogc2hhcmVkIG1lbW9yeSBzdGF0ZS4KQEAg LTEzMjcsNyArMTMyMywxMyBAQCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2Vn LCBzaG1fdG9jICp0b2MpCiAJICogYWxsb3dzIHRlc3RzIHRvIGVuc3VyZSB0aGlzLgogCSAqLwog CWlmIChzaGFyZWQtPmlzX2F1dG92YWN1dW0pCi0JCXBhcmFsbGVsX3ZhY3V1bV9yZXBvcnRfY29z dF9iYXNlZF9wYXJhbXMoKTsKKwkJZWxvZyhERUJVRzIsCisJCQkgInBhcmFsbGVsIGF1dG92YWN1 dW0gd29ya2VyIGNvc3QgcGFyYW1zOiBjb3N0X2xpbWl0PSVkLCBjb3N0X2RlbGF5PSVnLCBjb3N0 X3BhZ2VfbWlzcz0lZCwgY29zdF9wYWdlX2RpcnR5PSVkLCBjb3N0X3BhZ2VfaGl0PSVkIiwKKwkJ CSB2YWN1dW1fY29zdF9saW1pdCwKKwkJCSB2YWN1dW1fY29zdF9kZWxheSwKKwkJCSBWYWN1dW1D b3N0UGFnZU1pc3MsCisJCQkgVmFjdXVtQ29zdFBhZ2VEaXJ0eSwKKwkJCSBWYWN1dW1Db3N0UGFn ZUhpdCk7CiAjZW5kaWYKIAogCS8qIFJlcG9ydCBidWZmZXIvV0FMIHVzYWdlIGR1cmluZyBwYXJh bGxlbCBleGVjdXRpb24gKi8KQEAgLTEzODIsMjQgKzEzODQsMyBAQCBwYXJhbGxlbF92YWN1dW1f ZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQogCQkJcmV0dXJuOwogCX0KIH0KLQotI2lmZGVmIFVT RV9JTkpFQ1RJT05fUE9JTlRTCi0vKgotICogTG9nIHZhbHVlcyByZWxhdGVkIHRvIGNvc3QtYmFz ZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMuIEl0IGlzIHVzZWQgZm9yCi0gKiB0ZXN0aW5nIHB1 cnBvc2UuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotcGFyYWxsZWxfdmFjdXVtX3JlcG9ydF9j b3N0X2Jhc2VkX3BhcmFtcyh2b2lkKQotewotCWNvbnN0IGNoYXIgKm1zZ19mb3JtYXQgPQotCQlf KCJQYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlciBjb3N0IHBhcmFtczogY29zdF9saW1pdD0lZCwg Y29zdF9kZWxheT0lZywgY29zdF9wYWdlX21pc3M9JWQsIGNvc3RfcGFnZV9kaXJ0eT0lZCwgY29z dF9wYWdlX2hpdD0lZCIpOwotCi0JZWxvZyhERUJVRzIsCi0JCSBtc2dfZm9ybWF0LAotCQkgdmFj dXVtX2Nvc3RfbGltaXQsCi0JCSB2YWN1dW1fY29zdF9kZWxheSwKLQkJIFZhY3V1bUNvc3RQYWdl TWlzcywKLQkJIFZhY3V1bUNvc3RQYWdlRGlydHksCi0JCSBWYWN1dW1Db3N0UGFnZUhpdCk7Ci19 Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggN2IyNGE1ZDZlNjcu LmQxN2ZjOTJlNzgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1 dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMTQwOSw3 ICsxNDA5LDE4IEBAIGF2bF9zaWd1c3IyX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiBzdGF0aWMgdm9p ZAogYXV0b3ZhY3V1bV93b3JrZXJfYmVmb3JlX3NobWVtX2V4aXQoaW50IGNvZGUsIERhdHVtIGFy ZykKIHsKKwlpbnQgbnJlc2VydmVkX29sZCA9IGF2X253b3JrZXJzX3Jlc2VydmVkOworCiAJQXV0 b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxlbFdvcmtlcnMoKTsKKworCWlmIChucmVzZXJ2ZWRfb2xk ID4gMCkKKwl7CisJCWVsb2coREVCVUcyLAorCQkJIG5nZXR0ZXh0KCJhdXRvdmFjdXVtIHdvcmtl ciBiZWZvcmVfc2htZW1fZXhpdDogJWQgcGFyYWxsZWwgd29ya2VyIGhhcyBiZWVuIHJlbGVhc2Vk IiwKKwkJCQkJICAiYXV0b3ZhY3V1bSB3b3JrZXIgYmVmb3JlX3NobWVtX2V4aXQ6ICVkIHBhcmFs bGVsIHdvcmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQiLAorCQkJCQkJbnJlc2VydmVkX29sZCAtIGF2 X253b3JrZXJzX3Jlc2VydmVkKSwKKwkJCSBucmVzZXJ2ZWRfb2xkIC0gYXZfbndvcmtlcnNfcmVz ZXJ2ZWQpOworCX0KIH0KIAogLyoKQEAgLTM2NTYsMTAgKzM2NjcsOSBAQCBhZGp1c3RfZnJlZV9w YXJhbGxlbF93b3JrZXJzKGludCBwcmV2X21heF9wYXJhbGxlbF93b3JrZXJzKQogCUF1dG9WYWN1 dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VycyA9IE1heChuZnJlZV93b3JrZXJzLCAwKTsK IAlBdXRvVmFjdXVtU2htZW0tPmF2X21heFBhcmFsbGVsV29ya2VycyA9IGF1dG92YWN1dW1fbWF4 X3BhcmFsbGVsX3dvcmtlcnM7CiAKLQllcmVwb3J0KERFQlVHMiwKLQkJCShlcnJtc2coIm51bWJl ciBvZiBmcmVlIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyBpcyBzZXQgdG8gJXUgZHVlIHRv IGNvbmZpZyByZWxvYWQiLAotCQkJCQlBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdv cmtlcnMpLAotCQkJIGVycmhpZGVjb250ZXh0KHRydWUpKSk7CisJZWxvZyhERUJVRzIsCisJCSAi bnVtYmVyIG9mIGZyZWUgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIGlzIHNldCB0byAldSBk dWUgdG8gY29uZmlnIHJlbG9hZCIsCisJCSBBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxl bFdvcmtlcnMpOwogCiAJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7CiB9CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNvbi5idWlsZCBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL21lc29uLmJ1aWxkCmluZGV4IDM0NDFlNWU0OWNm Li43NWIyNDgxNGIxMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1 dW0vbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVz b24uYnVpbGQKQEAgLTMwLDcgKzMwLDcgQEAgdGVzdHMgKz0gewogICAgICAgICdlbmFibGVfaW5q ZWN0aW9uX3BvaW50cyc6IGdldF9vcHRpb24oJ2luamVjdGlvbl9wb2ludHMnKSA/ICd5ZXMnIDog J25vJywKICAgICB9LAogICAgICd0ZXN0cyc6IFsKLSAgICAgICd0LzAwMV9iYXNpYy5wbCcsCisg ICAgICAndC8wMDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVs X2F1dG92YWN1dW0ucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9w YXJhbGxlbF9hdXRvdmFjdXVtLnBsCmluZGV4IDliODBkMzcxZjVjLi5lZGZiZGU3M2FhYyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdC8wMDFfcGFyYWxsZWxf YXV0b3ZhY3V1bS5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAw MV9wYXJhbGxlbF9hdXRvdmFjdXVtLnBsCkBAIC0xNjEsNyArMTYxLDcgQEAgJG5vZGUtPndhaXRf Zm9yX2V2ZW50KAogIyBDaGVjayB3aGV0aGVyIHBhcmFsbGVsIHdvcmtlciBzdWNjZXNzZnVsbHkg dXBkYXRlZCBhbGwgcGFyYW1ldGVycyBkdXJpbmcKICMgaW5kZXggcHJvY2Vzc2luZwogJGxvZ19z dGFydCA9ICRub2RlLT53YWl0X2Zvcl9sb2coCi0JcXIvUGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3Jr ZXIgY29zdCBwYXJhbXM6IGNvc3RfbGltaXQ9NTAwLCBjb3N0X2RlbGF5PTIsIC8gLgorCXFyL3Bh cmFsbGVsIGF1dG92YWN1dW0gd29ya2VyIGNvc3QgcGFyYW1zOiBjb3N0X2xpbWl0PTUwMCwgY29z dF9kZWxheT0yLCAvIC4KIAlxci9jb3N0X3BhZ2VfbWlzcz0xMCwgY29zdF9wYWdlX2RpcnR5PTEw LCBjb3N0X3BhZ2VfaGl0PTEwLywKIAkkbG9nX3N0YXJ0CiApOwpAQCAtMjY0LDIwICsyNjQsMTEg QEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKIHByZXBhcmVfZm9yX25leHRfdGVz dCgkbm9kZSwgNSk7CiAKICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7Ci0JU0VMRUNU IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdhdXRvdmFjdXVtLXN0YXJ0LXBhcmFsbGVsLXZhY3V1 bScsICd3YWl0Jyk7CiAJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdhdXRvdmFjdXVt LWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJywgJ3dhaXQnKTsKIAlBTFRFUiBUQUJM RSB0ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsKIH0pOwogCi0j IFdhaXQgdW50aWwgcGFyYWxsZWwgYXV0b3ZhY3V1bSBpcyBpbml0ZWQgYW5kIHdha2UgdXAgdGhl IGxlYWRlcgotJG5vZGUtPndhaXRfZm9yX2V2ZW50KAotCSdhdXRvdmFjdXVtIHdvcmtlcicsCi0J J2F1dG92YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtJwotKTsKLSRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXF7Ci0JU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdhdXRvdmFj dXVtLXN0YXJ0LXBhcmFsbGVsLXZhY3V1bScpOwotfSk7Ci0KKyMgV2FpdCB1bnRpbCBwYXJhbGxl bCB3b3JrZXJzIGFyZSByZXNlcnZlZCBhdXRvdmFjdXVtIGFuZCBraWxsIHRoZSBsZWFkZXIKICRu b2RlLT53YWl0X2Zvcl9ldmVudCgKIAknYXV0b3ZhY3V1bSB3b3JrZXInLAogCSdhdXRvdmFjdXVt LWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJwpAQCAtMjk1LDIzICsyODYsMTIgQEAg JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKIH0pOwogCiAkbG9nX3N0YXJ0ID0gJG5v ZGUtPndhaXRfZm9yX2xvZygKLQlxci90ZXJtaW5hdGluZyBhdXRvdmFjdXVtIHByb2Nlc3MgZHVl IHRvIGFkbWluaXN0cmF0b3IgY29tbWFuZC8sCisJcXIvYXV0b3ZhY3V1bSB3b3JrZXIgYmVmb3Jl X3NobWVtX2V4aXQ6IDIgcGFyYWxsZWwgd29ya2VycyBoYXMgYmVlbiByZWxlYXNlZC8sCiAJJGxv Z19zdGFydAogKTsKIAotIyBOb3cgaXQgaXMgc2FmZSB0byBjaGVjayB0aGUgbnVtYmVyIG9mIGZy ZWUgcGFyYWxsZWwgd29ya2VycywgYmVjYXVzZSBldmVuIGlmCi0jIGF1dG92YWN1dW0gaXMgdHJ5 aW5nIHRvIHZhY3V1bSB0YWJsZSBpbiBwYXJhbGxlbCBtb2RlIGFnYWluLCB0aGUgbGVhZGVyCi0j IHdvcmtlciBjYW5ub3QgZ28gYW55IGZ1cnRoZXIgdGhhbiAiYXV0b3ZhY3V1bS1zdGFydC1wYXJh bGxlbC12YWN1dW0iIHBvaW50LgotIyBJLmUuIG5vIG9uZSBjYW4gaW50ZXJmZXJlIGFuZCBjaGFu Z2UgdGhlIG51bWJlciBvZiBmcmVlIHBhcmFsbGVsIHdvcmtlcnMuCi0KLSRwc3FsX291dCA9ICRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7Ci0JU0VMRUNUIGdldF9wYXJhbGxlbF9hdXRv dmFjdXVtX2ZyZWVfd29ya2VycygpOwotfSk7Ci1pcygkcHNxbF9vdXQsIDEwLCAnQWxsIHBhcmFs bGVsIHdvcmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQgYnkgdGhlIGxlYWRlciBhZnRlciBGQVRBTCcp OwotCiAjIENsZWFudXAKICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7Ci0JU0VMRUNU IGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdhdXRvdmFjdXVtLXN0YXJ0LXBhcmFsbGVsLXZhY3V1 bScpOwogCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnYXV0b3ZhY3V1bS1sZWFkZXIt YmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZycpOwogfSk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmMKaW5kZXggOTU5NjI5Yzc2ODUu LjE5NWE2MTQ5YTVkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1 bS90ZXN0X2F1dG92YWN1dW0uYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1 bS90ZXN0X2F1dG92YWN1dW0uYwpAQCAtMyw3ICszLDcgQEAKICAqIHRlc3RfYXV0b3ZhY3V1bS5j CiAgKgkJSGVscGVycyB0byB3cml0ZSB0ZXN0cyBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bQogICoK LSAqIENvcHlyaWdodCAoYykgMjAyMC0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVu dCBHcm91cAorICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCiAgKgogICogSURFTlRJRklDQVRJT04KICAqCSAgc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmMKQEAgLTEzLDE0ICsxMyw4IEBA CiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCi0jaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgi CiAjaW5jbHVkZSAiZm1nci5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgotI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKLSNpbmNs dWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCi0jaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIK IAogUEdfTU9EVUxFX01BR0lDOwotLSAKMi40My4wCgo= --0000000000009cf03e064bf78ae5 Content-Type: text/x-patch; charset="US-ASCII"; name="v22--v23-diff-for-0003.patch" Content-Disposition: attachment; filename="v22--v23-diff-for-0003.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm7v3fmd6 RnJvbSA1N2EyZjk2ZDQ4OWZlOWMyYjgxYjAzMTBkN2I5ZWZjZGQ0NTQ2MGJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTYXQsIDI4IEZlYiAyMDI2IDE4OjM2OjA4ICswNzAwClN1YmplY3Q6IFtQQVRD SCAxLzNdIGZpeGVzIGZvciAwMDAzIHBhdGNoCgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bXBhcmFsbGVsLmMgfCAyMyArKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDEzIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW1wYXJhbGxlbC5jCmluZGV4IDBlZTQwMTlmNTYxLi44MGI1N2JmOWRhMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC03NCwxMyArNzQsNiBAQCB0eXBlZGVmIHN0 cnVjdCBWYWN1dW1Db3N0UGFyYW1zCiAJKGNvc3RfcGFyYW1zKS0+Y29zdF9wYWdlX2hpdCA9IFZh Y3V1bUNvc3RQYWdlSGl0OyBcCiAJKGNvc3RfcGFyYW1zKS0+Y29zdF9wYWdlX21pc3MgPSBWYWN1 dW1Db3N0UGFnZU1pc3MKIAotI2RlZmluZSBWYWNDb3N0UGFyYW1zRXF1YWxzKHBhcmFtcykgXAot CSh2YWN1dW1fY29zdF9kZWxheSA9PSAocGFyYW1zKS5jb3N0X2RlbGF5ICYmIFwKLQkgdmFjdXVt X2Nvc3RfbGltaXQgPT0gKHBhcmFtcykuY29zdF9saW1pdCAmJiBcCi0JIFZhY3V1bUNvc3RQYWdl RGlydHkgPT0gKHBhcmFtcykuY29zdF9wYWdlX2RpcnR5ICYmIFwKLQkgVmFjdXVtQ29zdFBhZ2VI aXQgPT0gKHBhcmFtcykuY29zdF9wYWdlX2hpdCAmJiBcCi0JIFZhY3V1bUNvc3RQYWdlTWlzcyA9 PSAocGFyYW1zKS5jb3N0X3BhZ2VfbWlzcykKLQogLyoKICAqIFN0cnVjdCBmb3IgY29zdC1iYXNl ZCB2YWN1dW0gZGVsYXkgcmVsYXRlZCBwYXJhbWV0ZXJzIHRvIHNoYXJlIGFtb25nIGFuCiAgKiBh dXRvdmFjdXVtIHdvcmtlciBhbmQgaXRzIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzLgpAQCAtNjY5 LDI0ICs2NjIsMzQgQEAgcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1z KHZvaWQpCiB2b2lkCiBwYXJhbGxlbF92YWN1dW1fcHJvcGFnYXRlX3NoYXJlZF9kZWxheV9wYXJh bXModm9pZCkKIHsKKwlWYWN1dW1Db3N0UGFyYW1zICpwYXJhbXNfZGF0YTsKKwogCUFzc2VydChB bUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpOwogCiAJLyogQ2hlY2sgd2hldGhlciB3ZSBhcmUg cnVubmluZyBwYXJhbGxlbCBhdXRvdmFjdXVtICovCiAJaWYgKHB2X3NoYXJlZF9jb3N0X3BhcmFt cyA9PSBOVUxMKQogCQlyZXR1cm47CiAKLQlTcGluTG9ja0FjcXVpcmUoJnB2X3NoYXJlZF9jb3N0 X3BhcmFtcy0+bXV0ZXgpOworCS8qCisJICogT25seSBsZWFkZXIgd29ya2VyIGNhbiBtb2RpZnkg dGhpcyBzaGFyZWQgc3RydWN0dXJlLCBzbyB3ZSBjYW4gcmVhZCBpdAorCSAqIHdpdGhvdXQgYWNx dWlyaW5nIGEgbG9jay4KKwkgKi8KKwlwYXJhbXNfZGF0YSA9ICZwdl9zaGFyZWRfY29zdF9wYXJh bXMtPnBhcmFtc19kYXRhOwogCi0JaWYgKFZhY0Nvc3RQYXJhbXNFcXVhbHMocHZfc2hhcmVkX2Nv c3RfcGFyYW1zLT5wYXJhbXNfZGF0YSkpCisJaWYgKHZhY3V1bV9jb3N0X2RlbGF5ID09IHBhcmFt c19kYXRhLT5jb3N0X2RlbGF5ICYmCisJCXZhY3V1bV9jb3N0X2xpbWl0ID09IHBhcmFtc19kYXRh LT5jb3N0X2xpbWl0ICYmCisJCVZhY3V1bUNvc3RQYWdlRGlydHkgPT0gcGFyYW1zX2RhdGEtPmNv c3RfcGFnZV9kaXJ0eSAmJgorCQlWYWN1dW1Db3N0UGFnZUhpdCA9PSBwYXJhbXNfZGF0YS0+Y29z dF9wYWdlX2hpdCAmJgorCQlWYWN1dW1Db3N0UGFnZU1pc3MgPT0gcGFyYW1zX2RhdGEtPmNvc3Rf cGFnZV9taXNzKQogCXsKIAkJLyoKIAkJICogV2UgZG9uJ3QgbmVlZCB0byB1cGRhdGUgc2hhcmVk IGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtcyBpZgogCQkgKiB0aGV5IGhhdmVuJ3QgY2hh bmdlZC4KIAkJICovCi0JCVNwaW5Mb2NrUmVsZWFzZSgmcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5t dXRleCk7CiAJCXJldHVybjsKIAl9CiAKKwlTcGluTG9ja0FjcXVpcmUoJnB2X3NoYXJlZF9jb3N0 X3BhcmFtcy0+bXV0ZXgpOwogCUZpbGxWYWNDb3N0UGFyYW1zKCZwdl9zaGFyZWRfY29zdF9wYXJh bXMtPnBhcmFtc19kYXRhKTsKIAlTcGluTG9ja1JlbGVhc2UoJnB2X3NoYXJlZF9jb3N0X3BhcmFt cy0+bXV0ZXgpOwogCi0tIAoyLjQzLjAKCg== --0000000000009cf03e064bf78ae5 Content-Type: text/x-patch; charset="US-ASCII"; name="v22--v23-diff-for-0001.patch" Content-Disposition: attachment; filename="v22--v23-diff-for-0001.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm7v3fn28 RnJvbSA2MjQyYTM4MTY0ZWIxZjgxZmI4NzM1ZWE1MDgxMDA2ODVhNmZmYTlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTYXQsIDI4IEZlYiAyMDI2IDE3OjMzOjQ1ICswNzAwClN1YmplY3Q6IFtQQVRD SF0gZml4ZXMgZm9yIDAwMDEgcGF0Y2gKCi0tLQogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggfCA1 ICsrKy0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv cmVsLmgKaW5kZXggN2M1ZTM1YTQ4NmMuLjExZGQzYWViYzZjIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS91dGlscy9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApAQCAtMzEzLDgg KzMxMyw5IEBAIHR5cGVkZWYgc3RydWN0IEF1dG9WYWNPcHRzCiAJYm9vbAkJZW5hYmxlZDsKIAog CS8qCi0JICogTWF4IG51bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMuIElmIHZh bHVlIGlzIDAgdGhlbiBwYXJhbGxlbAotCSAqIGRlZ3JlZSB3aWxsIGNvbXB1dGVkIGJhc2VkIG9u IG51bWJlciBvZiBpbmRleGVzLgorCSAqIFRhcmdldCBudW1iZXIgb2YgcGFyYWxsZWwgYXV0b3Zh Y3V1bSB3b3JrZXJzLiAtMSBieSBkZWZhdWx0IGRpc2FibGVzCisJICogcGFyYWxsZWwgdmFjdXVt IGR1cmluZyBhdXRvdmFjdXVtLiAwIG1lYW5zIGNob29zZSB0aGUgcGFyYWxsZWwgZGVncmVlCisJ ICogYmFzZWQgb24gdGhlIG51bWJlciBvZiBpbmRleGVzLgogCSAqLwogCWludAkJCWF1dG92YWN1 dW1fcGFyYWxsZWxfd29ya2VyczsKIAotLSAKMi40My4wCgo= --0000000000009cf03e064bf78ae5 Content-Type: text/x-patch; charset="US-ASCII"; name="v22--v23-diff-for-0002.patch" Content-Disposition: attachment; filename="v22--v23-diff-for-0002.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm7v3fmq7 RnJvbSBiYzQ0NzlkYWIzYTgxZmMyNmUxNWI1NWYxYzA1M2M0NmM2Y2M1Mjc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTYXQsIDI4IEZlYiAyMDI2IDE4OjExOjU4ICswNzAwClN1YmplY3Q6IFtQQVRD SF0gZml4ZXMgZm9yIDAwMDIgcGF0Y2gKCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jICB8ICA5ICstLS0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFy YWxsZWwuYyB8ICAzICsrKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggICAgICAgICB8 IDIxICsrKysrKysrKysrKysrKystLS0tLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgICAgICB8ICAxIC0KIDQgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMTQgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDA1NWRkZjU2 NmRjLi4xZTJkNWJlMWFmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAt MzQ4LDYgKzM0OCw3IEBAIHR5cGVkZWYgc3RydWN0IExWUmVsU3RhdGUKIAkgKiBpbmRleCBzY2Fu cy4KIAkgKi8KIAlQVldvcmtlcnNVc2FnZSB3b3JrZXJzX3VzYWdlOworCiAJLyogQ291bnRlcnMg dGhhdCBmb2xsb3cgYXJlIG9ubHkgZm9yIHNjYW5uZWRfcGFnZXMgKi8KIAlpbnQ2NAkJdHVwbGVz X2RlbGV0ZWQ7IC8qICMgZGVsZXRlZCBmcm9tIHRhYmxlICovCiAJaW50NjQJCXR1cGxlc19mcm96 ZW47CS8qICMgbmV3bHkgZnJvemVuICovCkBAIC0xMTM1LDExICsxMTM2LDggQEAgaGVhcF92YWN1 dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkJCQkJCQkg dmFjcmVsLT5scGRlYWRfaXRlbXMpOwogCQkJaWYgKHZhY3JlbC0+d29ya2Vyc191c2FnZS52YWN1 dW0ubnBsYW5uZWQgPiAwKQogCQkJewotCQkJCS8qIFN0YXRzIGZvciB2YWN1dW0gcGhhc2Ugb2Yg aW5kZXggdmFjdXVtaW5nLiAqLwotCiAJCQkJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3Mo KSkKIAkJCQl7Ci0JCQkJCS8qIFdvcmtlciB1c2FnZSBzdGF0cyBmb3IgcGFyYWxsZWwgYXV0b3Zh Y3V1bS4gKi8KIAkJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLAogCQkJCQkJCQkJIF8oInBhcmFs bGVsIHdvcmtlcnM6IGluZGV4IHZhY3V1bTogJWQgcGxhbm5lZCwgJWQgcmVzZXJ2ZWQsICVkIGxh dW5jaGVkIGluIHRvdGFsXG4iKSwKIAkJCQkJCQkJCSB2YWNyZWwtPndvcmtlcnNfdXNhZ2UudmFj dXVtLm5wbGFubmVkLApAQCAtMTE0OCw3ICsxMTQ2LDYgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0 aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkJCQl9CiAJCQkJZWxzZQogCQkJ CXsKLQkJCQkJLyogV29ya2VyIHVzYWdlIHN0YXRzIGZvciBtYW51YWwgVkFDVVVNIChQQVJBTExF TCkuICovCiAJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwKIAkJCQkJCQkJCSBfKCJwYXJhbGxl bCB3b3JrZXJzOiBpbmRleCB2YWN1dW06ICVkIHBsYW5uZWQsICVkIGxhdW5jaGVkIGluIHRvdGFs XG4iKSwKIAkJCQkJCQkJCSB2YWNyZWwtPndvcmtlcnNfdXNhZ2UudmFjdXVtLm5wbGFubmVkLApA QCAtMTE1NywxMSArMTE1NCw4IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0 IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJCQl9CiAJCQlpZiAodmFjcmVsLT53b3JrZXJzX3VzYWdl LmNsZWFudXAubnBsYW5uZWQgPiAwKQogCQkJewotCQkJCS8qIFN0YXRzIGZvciBjbGVhbnVwIHBo YXNlIG9mIGluZGV4IHZhY3V1bWluZy4gKi8KLQogCQkJCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQ cm9jZXNzKCkpCiAJCQkJewotCQkJCQkvKiBXb3JrZXIgdXNhZ2Ugc3RhdHMgZm9yIHBhcmFsbGVs IGF1dG92YWN1dW0uICovCiAJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwKIAkJCQkJCQkJCSBf KCJwYXJhbGxlbCB3b3JrZXJzOiBpbmRleCBjbGVhbnVwOiAlZCBwbGFubmVkLCAlZCByZXNlcnZl ZCwgJWQgbGF1bmNoZWRcbiIpLAogCQkJCQkJCQkJIHZhY3JlbC0+d29ya2Vyc191c2FnZS5jbGVh bnVwLm5wbGFubmVkLApAQCAtMTE3MCw3ICsxMTY0LDYgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0 aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkJCQl9CiAJCQkJZWxzZQogCQkJ CXsKLQkJCQkJLyogV29ya2VyIHVzYWdlIHN0YXRzIGZvciBtYW51YWwgVkFDVVVNIChQQVJBTExF TCkuICovCiAJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwKIAkJCQkJCQkJCSBfKCJwYXJhbGxl bCB3b3JrZXJzOiBpbmRleCBjbGVhbnVwOiAlZCBwbGFubmVkLCAlZCBsYXVuY2hlZFxuIiksCiAJ CQkJCQkJCQkgdmFjcmVsLT53b3JrZXJzX3VzYWdlLmNsZWFudXAubnBsYW5uZWQsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCAxNzcyNjRjYjJlNi4uNjQzODQ5YjJmYjgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAtNjE5LDYgKzYxOSw5IEBA IHBhcmFsbGVsX3ZhY3V1bV9jb21wdXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBu aW5kZXhlcywgaW50IG5yZXF1ZXN0ZWQsCiAvKgogICogUGVyZm9ybSBpbmRleCB2YWN1dW0gb3Ig aW5kZXggY2xlYW51cCB3aXRoIHBhcmFsbGVsIHdvcmtlcnMuICBUaGlzIGZ1bmN0aW9uCiAgKiBt dXN0IGJlIHVzZWQgYnkgdGhlIHBhcmFsbGVsIHZhY3V1bSBsZWFkZXIgcHJvY2Vzcy4KKyAqCisg KiBJZiB3c3RhdHMgaXMgbm90IE5VTEwsIHRoZSBzdGF0aXN0aWNzIGl0IHN0b3JlcyB3aWxsIGJl IHVwZGF0ZWQgYWNjb3JkaW5nCisgKiB0byB3aGF0IGhhcHBlbnMgZHVyaW5nIGZ1bmN0aW9uIGV4 ZWN1dGlvbi4KICAqLwogc3RhdGljIHZvaWQKIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9p bmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FucywKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvdmFjdXVtLmgKaW5kZXggZDNkYzRlOGNjNjcuLjFiMWZiNjI1Y2IyIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5k cy92YWN1dW0uaApAQCAtMzA1LDExICszMDUsMjIgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFjRGVhZEl0 ZW1zSW5mbwogICovCiB0eXBlZGVmIHN0cnVjdCBQVldvcmtlcnNTdGF0cwogewotCWludAkJCW5w bGFubmVkOwkJLyogIyBvZiBwYXJhbGxlbCB3b3JrZXJzIHdlIGFyZSBwbGFubmVkIHRvCi0JCQkJ CQkJCSAqIGxhdW5jaCAqLwotCWludAkJCW5yZXNlcnZlZDsJCS8qIGZvciBhdXRvdmFjdXVtIG9u bHkgLSAjIG9mIHBhcmFsbGVsIHdvcmtlcnMKLQkJCQkJCQkJICogd2UgaGF2ZSBtYW5hZ2VkIHRv IHJlc2VydmUgKi8KLQlpbnQJCQlubGF1bmNoZWQ7CQkvKiAjIG9mIGxhdW5jaGVkIHBhcmFsbGVs IHdvcmtlcnMgKi8KKwkvKiBOdW1iZXIgb2YgcGFyYWxsZWwgd29ya2VycyB3ZSBhcmUgcGxhbm5l ZCB0byBsYXVuY2ggKi8KKwlpbnQJCQlucGxhbm5lZDsKKworCS8qCisJICogTnVtYmVyIG9mIHBh cmFsbGVsIHdvcmtlcnMgd2UgaGF2ZSBtYW5hZ2VkIHRvIHJlc2VydmUuCisJICoKKwkgKiBOb3Rl LCB0aGF0IHdlIGNvbGxlY3QgdGhpcyBzdGF0cyBvbmx5IGZvciB0aGUgcGFyYWxsZWwgKmF1dG92 YWN1dW0qCisJICogc2luY2UgZHVyaW5nIGl0IHdlIG11c3QgcmVzZXJ2ZSB3b3JrZXJzIGluIHNo YXJlZCBzdGF0ZSBiZWZvcmUgYWN0dWFsbHkKKwkgKiB0cnlpbmcgdG8gbGF1bmNoIHRoZW0gKGlu IG9yZGVyIHRvIG1lZXQgdGhlCisJICogYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyBs aW1pdCkuIE1hbnVhbCBWQUNVVU0gKFBBUkFMTEVMKSwgb24KKwkgKiB0aGUgY29udHJhcnksIGRv ZXNuJ3QgbmVlZCB0byByZXNlcnZlIHdvcmtlcnMuCisJICovCisJaW50CQkJbnJlc2VydmVkOwor CisJLyogTnVtYmVyIG9mIGxhdW5jaGVkIHBhcmFsbGVsIHdvcmtlcnMgKi8KKwlpbnQJCQlubGF1 bmNoZWQ7CiB9IFBWV29ya2Vyc1N0YXRzOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApp bmRleCA2Y2ViNmNhYzE0Zi4uNTM2MjM3ZmY1NDYgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CkBAIC0yNDEwLDcgKzI0MTAsNiBAQCBQdWxsRmlsdGVyT3BzCiBQdXNoRmlsdGVyCiBQdXNoRmls dGVyT3BzCiBQdXNoRnVuY3Rpb24KLVBWV29ya2Vyc1VzYWdlCiBQeUNGdW5jdGlvbgogUHlNZXRo b2REZWYKIFB5TW9kdWxlRGVmCi0tIAoyLjQzLjAKCg== --0000000000009cf03e064bf78ae5--