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 1vNBbt-00DPvy-1A for pgsql-hackers@arkaria.postgresql.org; Sun, 23 Nov 2025 15:02:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vNBbr-00EqDl-2E for pgsql-hackers@arkaria.postgresql.org; Sun, 23 Nov 2025 15:02:40 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <3danissimo@gmail.com>) id 1vNBbr-00EqDd-0r for pgsql-hackers@lists.postgresql.org; Sun, 23 Nov 2025 15:02:39 +0000 Received: from mail-yx1-xb12a.google.com ([2607:f8b0:4864:20::b12a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from <3danissimo@gmail.com>) id 1vNBbp-0014iQ-0z for pgsql-hackers@lists.postgresql.org; Sun, 23 Nov 2025 15:02:39 +0000 Received: by mail-yx1-xb12a.google.com with SMTP id 956f58d0204a3-63e16fbdd50so3158472d50.2 for ; Sun, 23 Nov 2025 07:02:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763910155; x=1764514955; 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=ltlhQahKRXPUQmcel/PdlaBF/DipoHDxJi7cMvul7MQ=; b=hxhAW2dwapCVIoMkEg+Zwz8orrhHuZnkbGW7PUW35j96c/CQBqdJuX9gqFQ/UPXOmU a7BvbYQRlGWl7SjzLprYs21YU1lPte0WDSyb3MNw1FqvrZDkVJaTes4PmAYVS3u3hRC9 da7hnwZRy2dugcaTOt7qQiZw53WtjeCq4vzgP0k+5qLDAa5nGCRR3Q/BXevbl5eQd26Z 8XQjyaMJLWUyh6RT1+0ulCf0hVkKnC1GVUFtGXl3K71jlLJD3d03uZ6Q3mf+hKtFmKnp I7ynaiRu4+Q1AHl7jqTNnbjXsGuk7T6jtiXtiabrCee//Ox0gE3j9fdgCSR07Bo1azE/ AHug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763910155; x=1764514955; 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=ltlhQahKRXPUQmcel/PdlaBF/DipoHDxJi7cMvul7MQ=; b=BAy09JB4ZWrY7dGi/eJeSvakGHrTA4664/gWmNKAJExwNH8dKXbIFpYcK7X6PvAi8H ZmWZ+WMLfqpXTzVs1ncVaqNzMrNw/tjwlZtb5lvtJXJCDhtyZpl5c0C96vFWHJF1edCb 2ZJbbx6x5PFeKF3OFbTXECGeq6n+27TPkRn0E/emYXayojUQzDnWvzl1wpbu9OpdFuQD GF/R0e7irafUenHWIjYux48FxRF/IMbrCzOtPQeZ2tiAnVJU6sNsca0jBITq3DOxfXp/ qhoI2euawO5cFZinO0VXv4FAe6A16hWDEIoa3RSyo7KBimMWcCv18rQlgUBHagle/yB8 uuag== X-Forwarded-Encrypted: i=1; AJvYcCXuqrQDOW2icUhyO3rrN/9MWnnDxEkGmIaDf/DaPMugZnTWjSUBF6o7UZM5x6+4wtahRa3UfWHsRqJmyOtW@lists.postgresql.org X-Gm-Message-State: AOJu0YzQOjbGXlJo7R6QC2jRRKW0QyTMAUw3YNV6miJ91OlJfPh4EBLv vE0jjEsQYZaln0rqgM6I1lsjky7hjhU7Hz0B01tL+UCy/r7VBKag6OH7+3C6s5BzJf94quNfusx 3//gnOAmaiKhPUzK21y1UOzztiQ+Lp5I= X-Gm-Gg: ASbGncv6h1BowRLZo0kjr7ZD0lX84F5+U+umSak6pDG4svPPiuBAtgqagAG1HOpi3M6 Qnz9Fwr1Qxd+DDECdRT6naDEUn4o9f44Z/Dp26t7UV+SDnd84vRrUCiu+g9nFdwi36s1e9awMvc jMWMCfOl3lWR9A2bBu73H0Z+6BmnGfrvirfPy2/l0oxwVu+URXpt8InIAi8TNB+R8exgKKJh+XS e756IvADkULdH7SjAfzPXxwD3gDE/ThJtjiZq7oCcwmSOMJpNRRB2RH0i3D2LYts3c9CvXG X-Google-Smtp-Source: AGHT+IH3z0oDScRGNQvvpuGJMGEADF1SowIorA339Xz7unfScKAK/lfwMPii2F8pw9ZPuwaUf4CjzPX94FIB8uX+dfs= X-Received: by 2002:a53:ed48:0:b0:642:f9a9:74eb with SMTP id 956f58d0204a3-64302b3960dmr4971619d50.71.1763910154722; Sun, 23 Nov 2025 07:02:34 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Daniil Davydov <3danissimo@gmail.com> Date: Sun, 23 Nov 2025 22:02:22 +0700 X-Gm-Features: AWmQ_bmaYYYY9tIhXeH24OzGzBfyUGoBtDoiU7nGH4-X5uwK4I32IKs8eHiRywI Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Sami Imseih Cc: Masahiko Sawada , Alexander Korotkov , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="00000000000030623906444456b2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000030623906444456b2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Sun, Nov 23, 2025 at 5:51=E2=80=AFAM Sami Imseih w= rote: > > > > nworkers has a double meaning. The return value of > > > AutoVacuumReserveParallelWorkers > > > is nreserved. I think this should be > > > > > > ``` > > > nreserved =3D AutoVacuumReserveParallelWorkers(nworkers); > > > ``` > > > > > > and nreserved becomes the authoritative value for the number of paral= lel > > > workers after that point. > > I could not find this pattern being used in the code base. > I think it will be better and more in-line without what we generally do > and pass-by-reference and update the value inside > AutoVacuumReserveParallelWorkers: > > ``` > AutoVacuumReserveParallelWorkers(&nworkers). > ``` Maybe I just don't like functions with side effects, but this function will have ones anyway. I'll add logic with passing by reference as you suggested. > > >> --- > >> { name =3D> 'autovacuum_max_parallel_workers', type =3D> 'int', contex= t =3D> > >> 'PGC_SIGHUP', group =3D> 'VACUUM_AUTOVACUUM', > >> short_desc =3D> 'Maximum number of parallel autovacuum workers, that > >> can be taken from bgworkers pool.', > >> long_desc =3D> 'This parameter is capped by "max_worker_processes" > >> (not by "autovacuum_max_workers"!).', > >> variable =3D> 'autovacuum_max_parallel_workers', > >> boot_val =3D> '0', > >> min =3D> '0', > >> max =3D> 'MAX_BACKENDS', > >> }, > >> > >> Parallel vacuum in autovacuum can be used only when users set the > >> autovacuum_parallel_workers storage parameter. How about using the > >> default value 2 for autovacuum_max_parallel_workers GUC parameter? > > > Sounds reasonable, +1 for it. > > v15-0004 has an incorrect default value for `autovacuum_max_parallel_work= ers`. > It should now be 2. > > + Sets the maximum number of parallel autovacuum workers that > + can be used for parallel index vacuuming at one time. Is cappe= d by > + . The default is 0= , > + which means no parallel index vacuuming. Thanks for noticing it! Fixed. I am sending an updated set of patches. -- Best regards, Daniil Davydov --00000000000030623906444456b2 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0003-Tests-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v16-0003-Tests-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mibugxah1 RnJvbSA5ZWNjNzgwMDU5NmM3OWI1ZjEyMzRlMmI4NDUzYWFjNDIzMjFjMWZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjA4OjE0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTYgMy80XSBUZXN0cyBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bQoKLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgIDE0ICsKIHNyYy90ZXN0L21vZHVs ZXMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVz L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZSAgIHwgICAyICsKIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9hdXRvdmFjdXVtL01ha2VmaWxlICAgICB8ICAyNiArKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2F1dG92YWN1dW0vbWVzb24uYnVpbGQgIHwgIDM2ICsrKwogLi4uL21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL3QvMDAxX2Jhc2ljLnBsICAgIHwgMTY1ICsrKysrKysrKysrKwogLi4uL3Rlc3RfYXV0 b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwgIHwgIDM0ICsrKwogLi4uL21vZHVsZXMv dGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jIHwgMjU1ICsrKysrKysrKysrKysrKysr KwogLi4uL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uY29udHJvbCAgIHwgICAzICsK IDExIGZpbGVzIGNoYW5nZWQsIDU0NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxlCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAw MV9iYXNpYy5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVt LmNvbnRyb2wKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxl bC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCBlYzdiNzE3 MGJlNS4uYmYyMmZlMmQwMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpA QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCkBAIC03NTIsNiArNzUzLDEzIEBAIHBhcmFs bGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywg aW50IG51bV9pbmRleF9zY2FuCiAJCX0KIAl9CiAKKwkvKgorCSAqIFRvIGJlIGFibGUgdG8gZXhl cmNpc2Ugd2hldGhlciBhbGwgcmVzZXJ2ZWQgcGFyYWxsZWwgd29ya2VycyBhcmUgYmVpbmcKKwkg KiByZWxlYXNlZCBhbnl3YXksIGFsbG93IGluamVjdGlvbiBwb2ludHMgdG8gdHJpZ2dlciBhIGZh aWx1cmUgYXQgdGhpcworCSAqIHBvaW50LgorCSAqLworCUlOSkVDVElPTl9QT0lOVCgiYXV0b3Zh Y3V1bS10cmlnZ2VyLWxlYWRlci1mYWlsdXJlIiwgTlVMTCk7CisKIAkvKiBWYWN1dW0gdGhlIGlu ZGV4ZXMgdGhhdCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IG9ubHkgbGVhZGVyIHByb2Nlc3MgKi8KIAlw YXJhbGxlbF92YWN1dW1fcHJvY2Vzc191bnNhZmVfaW5kZXhlcyhwdnMpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IGNlY2EwM2JjZjM0Li5jZTE1OTg1Y2Y1ZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTM0MzcsNiArMzQzNywxMyBAQCBBdXRvVmFj dXVtUmVzZXJ2ZVBhcmFsbGVsV29ya2VycyhpbnQgKm53b3JrZXJzKQogCS8qIFJlbWVtYmVyIGhv dyBtYW55IHdvcmtlcnMgd2UgaGF2ZSByZXNlcnZlZC4gKi8KIAlhdl9ud29ya2Vyc19yZXNlcnZl ZCArPSAqbndvcmtlcnM7CiAKKwkvKgorCSAqIEluamVjdGlvbiBwb2ludCB0byBoZWxwIGV4ZXJj aXNpbmcgbnVtYmVyIG9mIGF2YWlsYWJsZSBwYXJhbGxlbAorCSAqIGF1dG92YWN1dW0gd29ya2Vy cy4KKwkgKi8KKwlJTkpFQ1RJT05fUE9JTlQoImF1dG92YWN1dW0tc2V0LWZyZWUtcGFyYWxsZWwt d29ya2Vycy1udW0iLAorCQkJCQkmQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxXb3Jr ZXJzKTsKKwogCUxXTG9ja1JlbGVhc2UoQXV0b3ZhY3V1bUxvY2spOwogfQogCkBAIC0zNDY2LDYg KzM0NzMsMTMgQEAgQXV0b1ZhY3V1bVJlbGVhc2VQYXJhbGxlbFdvcmtlcnMoaW50IG53b3JrZXJz KQogCS8qIERvbid0IGhhdmUgdG8gcmVtZW1iZXIgdGhlc2Ugd29ya2VycyBhbnltb3JlLiAqLwog CWF2X253b3JrZXJzX3Jlc2VydmVkIC09IG53b3JrZXJzOwogCisJLyoKKwkgKiBJbmplY3Rpb24g cG9pbnQgdG8gaGVscCBleGVyY2lzaW5nIG51bWJlciBvZiBhdmFpbGFibGUgcGFyYWxsZWwKKwkg KiBhdXRvdmFjdXVtIHdvcmtlcnMuCisJICovCisJSU5KRUNUSU9OX1BPSU5UKCJhdXRvdmFjdXVt LXNldC1mcmVlLXBhcmFsbGVsLXdvcmtlcnMtbnVtIiwKKwkJCQkJJkF1dG9WYWN1dW1TaG1lbS0+ YXZfZnJlZVBhcmFsbGVsV29ya2Vycyk7CisKIAlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1Mb2Nr KTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3NyYy90ZXN0 L21vZHVsZXMvTWFrZWZpbGUKaW5kZXggOTAyYTc5NTQxMDEuLmYwOWQwMDYwMjQ4IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvTWFr ZWZpbGUKQEAgLTE1LDYgKzE1LDcgQEAgU1VCRElSUyA9IFwKIAkJICBwbHNhbXBsZSBcCiAJCSAg c3BnaXN0X25hbWVfb3BzIFwKIAkJICB0ZXN0X2FpbyBcCisJCSAgdGVzdF9hdXRvdmFjdXVtIFwK IAkJICB0ZXN0X2JpbmFyeWhlYXAgXAogCQkgIHRlc3RfYml0bWFwc2V0IFwKIAkJICB0ZXN0X2Js b29tZmlsdGVyIFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgYi9z cmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCmluZGV4IDE0ZmM3NjFjNGNmLi5lZTdlODU1ZGVm MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL21lc29uLmJ1aWxkCkBAIC0xNCw2ICsxNCw3IEBAIHN1YmRpcigncGxzYW1wbGUn KQogc3ViZGlyKCdzcGdpc3RfbmFtZV9vcHMnKQogc3ViZGlyKCdzc2xfcGFzc3BocmFzZV9jYWxs YmFjaycpCiBzdWJkaXIoJ3Rlc3RfYWlvJykKK3N1YmRpcigndGVzdF9hdXRvdmFjdXVtJykKIHN1 YmRpcigndGVzdF9iaW5hcnloZWFwJykKIHN1YmRpcigndGVzdF9iaXRtYXBzZXQnKQogc3ViZGly KCd0ZXN0X2Jsb29tZmlsdGVyJykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9h dXRvdmFjdXVtLy5naXRpZ25vcmUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS8u Z2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MTZlMTdm NWEyYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVt Ly5naXRpZ25vcmUKQEAgLTAsMCArMSwyIEBACisjIEdlbmVyYXRlZCBzdWJkaXJlY3Rvcmllcwor L3RtcF9jaGVjay8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVt L01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRjZjczNDRiMmFjCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUKQEAg LTAsMCArMSwyNiBAQAorIyBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9NYWtlZmls ZQorCitQR0ZJTEVERVNDID0gInRlc3RfYXV0b3ZhY3V1bSAtIHRlc3QgY29kZSBmb3IgcGFyYWxs ZWwgYXV0b3ZhY3V1bSIKKworTU9EVUxFX2JpZyA9IHRlc3RfYXV0b3ZhY3V1bQorT0JKUyA9IFwK KwkkKFdJTjMyUkVTKSBcCisJdGVzdF9hdXRvdmFjdXVtLm8KKworRVhURU5TSU9OID0gdGVzdF9h dXRvdmFjdXVtCitEQVRBID0gdGVzdF9hdXRvdmFjdXVtLS0xLjAuc3FsCisKK1RBUF9URVNUUyA9 IDEKKworZXhwb3J0IGVuYWJsZV9pbmplY3Rpb25fcG9pbnRzCisKK2lmZGVmIFVTRV9QR1hTCitQ R19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hz KQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf YXV0b3ZhY3V1bQordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVp bGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb250cmli L2NvbnRyaWItZ2xvYmFsLm1rCitlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3Zh Y3V1bS9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MzQ0MWU1ZTQ5Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0 b3ZhY3V1bS9tZXNvbi5idWlsZApAQCAtMCwwICsxLDM2IEBACisjIENvcHlyaWdodCAoYykgMjAy NC0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit0ZXN0X2F1dG92 YWN1dW1fc291cmNlcyA9IGZpbGVzKAorICAndGVzdF9hdXRvdmFjdXVtLmMnLAorKQorCitpZiBo b3N0X3N5c3RlbSA9PSAnd2luZG93cycKKyAgdGVzdF9hdXRvdmFjdXVtX3NvdXJjZXMgKz0gcmNf bGliX2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBbCisgICAgJy0tTkFNRScs ICd0ZXN0X2F1dG92YWN1dW0nLAorICAgICctLUZJTEVERVNDJywgJ3Rlc3RfYXV0b3ZhY3V1bSAt IHRlc3QgY29kZSBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bScsXSkKK2VuZGlmCisKK3Rlc3RfYXV0 b3ZhY3V1bSA9IHNoYXJlZF9tb2R1bGUoJ3Rlc3RfYXV0b3ZhY3V1bScsCisgIHRlc3RfYXV0b3Zh Y3V1bV9zb3VyY2VzLAorICBrd2FyZ3M6IHBnX3Rlc3RfbW9kX2FyZ3MsCispCit0ZXN0X2luc3Rh bGxfbGlicyArPSB0ZXN0X2F1dG92YWN1dW0KKwordGVzdF9pbnN0YWxsX2RhdGEgKz0gZmlsZXMo CisgICd0ZXN0X2F1dG92YWN1dW0uY29udHJvbCcsCisgICd0ZXN0X2F1dG92YWN1dW0tLTEuMC5z cWwnLAorKQorCit0ZXN0cyArPSB7CisgICduYW1lJzogJ3Rlc3RfYXV0b3ZhY3V1bScsCisgICdz ZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAorICAnYmQnOiBtZXNvbi5jdXJyZW50X2J1 aWxkX2RpcigpLAorICAndGFwJzogeworICAgICdlbnYnOiB7CisgICAgICAgJ2VuYWJsZV9pbmpl Y3Rpb25fcG9pbnRzJzogZ2V0X29wdGlvbignaW5qZWN0aW9uX3BvaW50cycpID8gJ3llcycgOiAn bm8nLAorICAgIH0sCisgICAgJ3Rlc3RzJzogWworICAgICAgJ3QvMDAxX2Jhc2ljLnBsJywKKyAg ICBdLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1 dW0vdC8wMDFfYmFzaWMucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAw MV9iYXNpYy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTI3MTc2 OGViZDIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1 bS90LzAwMV9iYXNpYy5wbApAQCAtMCwwICsxLDE2NSBAQAordXNlIHdhcm5pbmdzIEZBVEFMID0+ ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworbXkgJHBzcWxfb3V0OworCitteSAkbm9k ZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZTEnKTsKKyRub2RlLT5pbml0 OworCisjIENvbmZpZ3VyZSBwb3N0Z3Jlcywgc28gaXQgY2FuIGxhdW5jaCBwYXJhbGxlbCBhdXRv dmFjdXVtIHdvcmtlcnMsIGxvZyBhbGwKKyMgaW5mb3JtYXRpb24gd2UgYXJlIGludGVyZXN0ZWQg aW4gYW5kIGF1dG92YWN1dW0gd29ya3MgZnJlcXVlbnRseQorJG5vZGUtPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLCBxcXsKKwltYXhfd29ya2VyX3Byb2Nlc3NlcyA9IDIwCisJbWF4X3Bh cmFsbGVsX3dvcmtlcnMgPSAyMAorCW1heF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3JrZXJzID0g MjAKKwlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzID0gMTAKKwlsb2dfbWluX21lc3Nh Z2VzID0gZGVidWcyCisJbG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uID0gMAorCWF1dG92YWN1 dW1fbmFwdGltZSA9ICcxcycKKwltaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplID0gMAorCXNo YXJlZF9wcmVsb2FkX2xpYnJhcmllcz10ZXN0X2F1dG92YWN1dW0KK30pOworJG5vZGUtPnN0YXJ0 OworCitteSAkaW5kZXhlc19udW0gPSA0OworbXkgJGluaXRpYWxfcm93c19udW0gPSAxMF8wMDA7 CitteSAkYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID0gMjsKKworIyBDcmVhdGUgdGFibGUg d2l0aCBzcGVjaWZpZWQgbnVtYmVyIG9mIGItdHJlZSBpbmRleGVzIG9uIGl0Ciskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBUQUJMRSB0ZXN0X2F1dG92YWMgKAorCQlp ZCBTRVJJQUwgUFJJTUFSWSBLRVksCisJCWNvbF8xIElOVEVHRVIsICBjb2xfMiBJTlRFR0VSLCAg Y29sXzMgSU5URUdFUiwgIGNvbF80IElOVEVHRVIKKwkpIFdJVEggKGF1dG92YWN1dW1fcGFyYWxs ZWxfd29ya2VycyA9ICRhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMsCisJCQlhdXRvdmFjdXVt X2VuYWJsZWQgPSBmYWxzZSk7CisKKwlETyBcJFwkCisJREVDTEFSRQorCQlpIElOVEVHRVI7CisJ QkVHSU4KKwkJRk9SIGkgSU4gMS4uJGluZGV4ZXNfbnVtIExPT1AKKwkJCUVYRUNVVEUgZm9ybWF0 KCdDUkVBVEUgSU5ERVggaWR4X2NvbF9cJXMgT04gdGVzdF9hdXRvdmFjIChjb2xfXCVzKTsnLCBp LCBpKTsKKwkJRU5EIExPT1A7CisJRU5EIFwkXCQ7Cit9KTsKKworIyBJbnNlcnQgc3BlY2lmaWVk IHR1cGxlcyBudW0gaW50byB0aGUgdGFibGUKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXF7CisJRE8gXCRcJAorCURFQ0xBUkUKKwkJaSBJTlRFR0VSOworCUJFR0lOCisJCUZPUiBpIElO IDEuLiRpbml0aWFsX3Jvd3NfbnVtIExPT1AKKwkJCUlOU0VSVCBJTlRPIHRlc3RfYXV0b3ZhYyBW QUxVRVMgKGksIGkgKyAxLCBpICsgMiwgaSArIDMpOworCQlFTkQgTE9PUDsKKwlFTkQgXCRcJDsK K30pOworCisjIE5vdywgY3JlYXRlIHNvbWUgZGVhZCB0dXBsZXMgYW5kIHJlZnJlc2ggdGFibGUg c3RhdGlzdGljcworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlVUERBVEUgdGVz dF9hdXRvdmFjIFNFVCBjb2xfMSA9IDAgV0hFUkUgKGNvbF8xICUgMykgPSAwOworCUFOQUxZWkUg dGVzdF9hdXRvdmFjOworfSk7CisKKyMgQ3JlYXRlIGFsbCBmdW5jdGlvbnMgbmVlZGVkIGZvciB0 ZXN0aW5nCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBFWFRFTlNJ T04gdGVzdF9hdXRvdmFjdXVtOworCVNFTEVDVCBpbmpfc2V0X2ZyZWVfd29ya2Vyc19hdHRhY2go KTsKKwlTRUxFQ1QgaW5qX2xlYWRlcl9mYWlsdXJlX2F0dGFjaCgpOworfSk7CisKKyMgVGVzdCAx IDoKKyMgT3VyIHRhYmxlIGhhcyBlbm91Z2ggaW5kZXhlcyBhbmQgYXBwcm9wcmlhdGUgcmVsb3B0 aW9ucywgc28gYXV0b3ZhY3V1bSBtdXN0CisjIGJlIGFibGUgdG8gcHJvY2VzcyBpdCBpbiBwYXJh bGxlbCBtb2RlLiBKdXN0IGNoZWNrIGlmIGl0IGNhbi4KKyMgQWxzbyBjaGVjayB3aGV0aGVyIGFs bCByZXF1ZXN0ZWQgd29ya2VyczoKKyMgCTEpIGxhdW5jaGVkCisjIAkyKSBjb3JyZWN0bHkgcmVs ZWFzZWQKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlBTFRFUiBUQUJMRSB0 ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsKK30pOworCisjIFdh aXQgdW50aWwgdGhlIHBhcmFsbGVsIGF1dG92YWN1dW0gb24gdGFibGUgaXMgY29tcGxldGVkLiBB dCB0aGUgc2FtZSB0aW1lLAorIyB3ZSBjaGVjayB0aGF0IHRoZSByZXF1aXJlZCBudW1iZXIgb2Yg cGFyYWxsZWwgd29ya2VycyBoYXMgYmVlbiBzdGFydGVkLgorJG5vZGUtPndhaXRfZm9yX2xvZyhx ci9wYXJhbGxlbCBpbmRleCB2YWN1dW1cL2NsZWFudXAgOiB3b3JrZXJzIHBsYW5uZWQgPSAyLCAv IC4KKwkJCQkJcXIvd29ya2VycyBsYXVuY2hlZCA9IDIvKTsKKworJG5vZGUtPnBzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIGdldF9wYXJhbGxlbF9hdXRvdmFjdXVtX2ZyZWVfd29ya2VycygpOyIs CisJc3Rkb3V0ID0+IFwkcHNxbF9vdXQsCispOworaXMoJHBzcWxfb3V0LCAxMCwgJ0FsbCBwYXJh bGxlbCB3b3JrZXJzIGhhcyBiZWVuIHJlbGVhc2VkIGJ5IHRoZSBsZWFkZXInKTsKKworIyBEaXNh YmxlIGF1dG92YWN1dW0gb24gdGFibGUgZHVyaW5nIHByZXBhcmF0aW9uIGZvciB0aGUgbmV4dCB0 ZXN0Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHFxeworCUFMVEVSIFRB QkxFIHRlc3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK30pOwor CisjIENyZWF0ZSBtb3JlIGRlYWQgdHVwbGVzCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHFxeworCVVQREFURSB0ZXN0X2F1dG92YWMgU0VUIGNvbF8yID0gMCBXSEVSRSAoY29sXzIgJSAz KSA9IDA7CisJQU5BTFlaRSB0ZXN0X2F1dG92YWM7Cit9KTsKKworIyBUZXN0IDI6CisjIFdlIHdh bnQgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIHRvIGJlIHJlbGVhc2VkIGV2ZW4gaWYgbGVh ZGVyIGdldHMgYW4KKyMgZXJyb3IuIEF0IGZpcnN0LCBzaW11bGF0ZSBzaXR1YXRpb24sIHdoZW4g bGVhZGVyIGV4aXRlcyBkdWUgdG8gYW4gRVJST1IuCisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXEoCisJU0VMRUNUIHRyaWdnZXJfbGVhZGVyX2ZhaWx1cmUoJ0VSUk9SJyk7CispKTsK KworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlBTFRFUiBUQUJMRSB0ZXN0X2F1 dG92YWMgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsKK30pOworCiskbm9kZS0+d2Fp dF9mb3JfbG9nKHFyL2Vycm9yLCB0cmlnZ2VyZWQgYnkgaW5qZWN0aW9uIHBvaW50Lyk7CisKKyRu b2RlLT5wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBnZXRfcGFyYWxsZWxfYXV0b3ZhY3V1bV9m cmVlX3dvcmtlcnMoKTsiLAorCXN0ZG91dCA9PiBcJHBzcWxfb3V0LAorKTsKK2lzKCRwc3FsX291 dCwgMTAsCisgICAnQWxsIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQgYnkgdGhl IGxlYWRlciBhZnRlciBFUlJPUicpOworCisjIERpc2FibGUgYXV0b3ZhY3V1bSBvbiB0YWJsZSBk dXJpbmcgcHJlcGFyYXRpb24gZm9yIHRoZSBuZXh0IHRlc3QKKyRub2RlLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywgcXF7CisJQUxURVIgVEFCTEUgdGVzdF9hdXRvdmFjIFNFVCAoYXV0 b3ZhY3V1bV9lbmFibGVkID0gZmFsc2UpOworfSk7CisKKyMgQ3JlYXRlIG1vcmUgZGVhZCB0dXBs ZXMKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJVVBEQVRFIHRlc3RfYXV0b3Zh YyBTRVQgY29sXzMgPSAwIFdIRVJFIChjb2xfMyAlIDMpID0gMDsKKwlBTkFMWVpFIHRlc3RfYXV0 b3ZhYzsKK30pOworCisjIFRlc3QgMzoKKyMgU2FtZSBhcyBUZXN0IDIsIGJ1dCBzaW11bGF0ZSBz aXR1YXRpb24sIHdoZW4gbGVhZGVyIGV4aXRlcyBkdWUgdG8gRkFUQUwuCisKKyRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJU0VMRUNUIHRyaWdnZXJfbGVhZGVyX2ZhaWx1cmUoJ0ZB VEFMJyk7CispKTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlBTFRFUiBU QUJMRSB0ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsKK30pOwor Ciskbm9kZS0+d2FpdF9mb3JfbG9nKHFyL2ZhdGFsLCB0cmlnZ2VyZWQgYnkgaW5qZWN0aW9uIHBv aW50Lyk7CisKKyRub2RlLT5wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBnZXRfcGFyYWxsZWxf YXV0b3ZhY3V1bV9mcmVlX3dvcmtlcnMoKTsiLAorCXN0ZG91dCA9PiBcJHBzcWxfb3V0LAorKTsK K2lzKCRwc3FsX291dCwgMTAsCisgICAnQWxsIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gcmVs ZWFzZWQgYnkgdGhlIGxlYWRlciBhZnRlciBGQVRBTCcpOworCisjIENsZWFudXAKKyRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIGlual9zZXRfZnJlZV93b3JrZXJzX2Rl dGFjaCgpOworCVNFTEVDVCBpbmpfbGVhZGVyX2ZhaWx1cmVfZGV0YWNoKCk7Cit9KTsKKworJG5v ZGUtPnN0b3A7Citkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDE3ZDVkYTg1ZWEKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5z cWwKQEAgLTAsMCArMSwzNCBAQAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0v dGVzdF9hdXRvdmFjdXVtLS0xLjAuc3FsICovCisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBz b3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OCitcZWNobyBV c2UgIkNSRUFURSBFWFRFTlNJT04gdGVzdF9hdXRvdmFjdXVtIiB0byBsb2FkIHRoaXMgZmlsZS4g XHF1aXQKKworLyoKKyAqIEZ1bmN0aW9ucyBmb3IgZXhwZWN0aW5nIG9yIHRvIGludGVyZmVyZSBh dXRvdmFjdXVtIHN0YXRlCisgKi8KK0NSRUFURSBGVU5DVElPTiBnZXRfcGFyYWxsZWxfYXV0b3Zh Y3V1bV9mcmVlX3dvcmtlcnMoKQorUkVUVVJOUyBJTlRFR0VSIFNUUklDVAorQVMgJ01PRFVMRV9Q QVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfbGVhZGVyX2Zh aWx1cmUoZmFpbHVyZV90eXBlIHRleHQpCitSRVRVUk5TIFZPSUQgU1RSSUNUCitBUyAnTU9EVUxF X1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCisvKgorICogSW5qZWN0aW9uIHBvaW50IHJlbGF0ZWQg ZnVuY3Rpb25zCisgKi8KK0NSRUFURSBGVU5DVElPTiBpbmpfc2V0X2ZyZWVfd29ya2Vyc19hdHRh Y2goKQorUkVUVVJOUyBWT0lEIFNUUklDVAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0Ug QzsKKworQ1JFQVRFIEZVTkNUSU9OIGlual9zZXRfZnJlZV93b3JrZXJzX2RldGFjaCgpCitSRVRV Uk5TIFZPSUQgU1RSSUNUCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVB VEUgRlVOQ1RJT04gaW5qX2xlYWRlcl9mYWlsdXJlX2F0dGFjaCgpCitSRVRVUk5TIFZPSUQgU1RS SUNUCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04g aW5qX2xlYWRlcl9mYWlsdXJlX2RldGFjaCgpCitSRVRVUk5TIFZPSUQgU1RSSUNUCitBUyAnTU9E VUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf YXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uNzk0OGY0ODU4YWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uYwpAQCAtMCwwICsxLDI1NSBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdGVzdF9hdXRvdmFjdXVtLmMKKyAqCQlIZWxwZXJz IHRvIHdyaXRlIHRlc3RzIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCisgKgorICogQ29weXJpZ2h0 IChjKSAyMDIwLTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgor ICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0v dGVzdF9hdXRvdmFjdXVtLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVk ZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4u aCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKKyNpbmNsdWRlICJzdG9yYWdl L3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2x3 bG9jay5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvaW5q ZWN0aW9uX3BvaW50LmgiCisKK1BHX01PRFVMRV9NQUdJQzsKKwordHlwZWRlZiBlbnVtIEFWTGVh ZGVyRmF1bHVyZVR5cGUKK3sKKwlGQUlMX05PTkUsCisJRkFJTF9FUlJPUiwKKwlGQUlMX0ZBVEFM LAorfQkJCUFWTGVhZGVyRmF1bHVyZVR5cGU7CisKK3R5cGVkZWYgc3RydWN0IElualBvaW50U3Rh dGUKK3sKKwlib29sCQllbmFibGVkX3NldF9mcmVlX3dvcmtlcnM7CisJdWludDMyCQlmcmVlX3Bh cmFsbGVsX3dvcmtlcnM7CisKKwlib29sCQllbmFibGVkX2xlYWRlcl9mYWlsdXJlOworCUFWTGVh ZGVyRmF1bHVyZVR5cGUgZnR5cGU7Cit9CQkJSW5qUG9pbnRTdGF0ZTsKKworc3RhdGljIElualBv aW50U3RhdGUgKiBpbmpfcG9pbnRfc3RhdGU7CisKKy8qIFNoYXJlZCBtZW1vcnkgaW5pdCBjYWxs YmFja3MgKi8KK3N0YXRpYyBzaG1lbV9yZXF1ZXN0X2hvb2tfdHlwZSBwcmV2X3NobWVtX3JlcXVl c3RfaG9vayA9IE5VTEw7CitzdGF0aWMgc2htZW1fc3RhcnR1cF9ob29rX3R5cGUgcHJldl9zaG1l bV9zdGFydHVwX2hvb2sgPSBOVUxMOworCitzdGF0aWMgdm9pZAordGVzdF9hdXRvdmFjdXVtX3No bWVtX3JlcXVlc3Qodm9pZCkKK3sKKwlpZiAocHJldl9zaG1lbV9yZXF1ZXN0X2hvb2spCisJCXBy ZXZfc2htZW1fcmVxdWVzdF9ob29rKCk7CisKKwlSZXF1ZXN0QWRkaW5TaG1lbVNwYWNlKHNpemVv ZihJbmpQb2ludFN0YXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X2F1dG92YWN1dW1fc2ht ZW1fc3RhcnR1cCh2b2lkKQoreworCWJvb2wJCWZvdW5kOworCisJaWYgKHByZXZfc2htZW1fc3Rh cnR1cF9ob29rKQorCQlwcmV2X3NobWVtX3N0YXJ0dXBfaG9vaygpOworCisJLyogQ3JlYXRlIG9y IGF0dGFjaCB0byB0aGUgc2hhcmVkIG1lbW9yeSBzdGF0ZSAqLworCUxXTG9ja0FjcXVpcmUoQWRk aW5TaG1lbUluaXRMb2NrLCBMV19FWENMVVNJVkUpOworCisJaW5qX3BvaW50X3N0YXRlID0gU2ht ZW1Jbml0U3RydWN0KCJpbmplY3Rpb25fcG9pbnRzIiwKKwkJCQkJCQkJCSAgc2l6ZW9mKElualBv aW50U3RhdGUpLAorCQkJCQkJCQkJICAmZm91bmQpOworCisJaWYgKCFmb3VuZCkKKwl7CisJCS8q IEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZSAqLworCQlpbmpfcG9pbnRfc3RhdGUtPmVu YWJsZWRfbGVhZGVyX2ZhaWx1cmUgPSBmYWxzZTsKKwkJaW5qX3BvaW50X3N0YXRlLT5lbmFibGVk X3NldF9mcmVlX3dvcmtlcnMgPSBmYWxzZTsKKwkJaW5qX3BvaW50X3N0YXRlLT5mdHlwZSA9IEZB SUxfTk9ORTsKKworCQkvKiBLZWVwIGl0IGluIHN5bmMgd2l0aCBBdXRvVmFjdXVtU2htZW1Jbml0 ICovCisJCWlual9wb2ludF9zdGF0ZS0+ZnJlZV9wYXJhbGxlbF93b3JrZXJzID0KKwkJCU1pbihh dXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzLCBtYXhfd29ya2VyX3Byb2Nlc3Nlcyk7CisK KwkJSW5qZWN0aW9uUG9pbnRBdHRhY2goImF1dG92YWN1dW0tc2V0LWZyZWUtcGFyYWxsZWwtd29y a2Vycy1udW0iLAorCQkJCQkJCSAidGVzdF9hdXRvdmFjdXVtIiwKKwkJCQkJCQkgImlual9zZXRf ZnJlZV93b3JrZXJzIiwKKwkJCQkJCQkgTlVMTCwKKwkJCQkJCQkgMCk7CisKKwkJSW5qZWN0aW9u UG9pbnRBdHRhY2goImF1dG92YWN1dW0tdHJpZ2dlci1sZWFkZXItZmFpbHVyZSIsCisJCQkJCQkJ ICJ0ZXN0X2F1dG92YWN1dW0iLAorCQkJCQkJCSAiaW5qX3RyaWdnZXJfbGVhZGVyX2ZhaWx1cmUi LAorCQkJCQkJCSBOVUxMLAorCQkJCQkJCSAwKTsKKwl9CisKKwlMV0xvY2tSZWxlYXNlKEFkZGlu U2htZW1Jbml0TG9jayk7Cit9CisKK3ZvaWQKK19QR19pbml0KHZvaWQpCit7CisJaWYgKCFwcm9j ZXNzX3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllc19pbl9wcm9ncmVzcykKKwkJcmV0dXJuOworCisJ cHJldl9zaG1lbV9yZXF1ZXN0X2hvb2sgPSBzaG1lbV9yZXF1ZXN0X2hvb2s7CisJc2htZW1fcmVx dWVzdF9ob29rID0gdGVzdF9hdXRvdmFjdXVtX3NobWVtX3JlcXVlc3Q7CisJcHJldl9zaG1lbV9z dGFydHVwX2hvb2sgPSBzaG1lbV9zdGFydHVwX2hvb2s7CisJc2htZW1fc3RhcnR1cF9ob29rID0g dGVzdF9hdXRvdmFjdXVtX3NobWVtX3N0YXJ0dXA7Cit9CisKK2V4dGVybiBQR0RMTEVYUE9SVCB2 b2lkIGlual9zZXRfZnJlZV93b3JrZXJzKGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJCQkJCQkJCSBj b25zdCB2b2lkICpwcml2YXRlX2RhdGEsCisJCQkJCQkJCQkJCSB2b2lkICphcmcpOworZXh0ZXJu IFBHRExMRVhQT1JUIHZvaWQgaW5qX3RyaWdnZXJfbGVhZGVyX2ZhaWx1cmUoY29uc3QgY2hhciAq bmFtZSwKKwkJCQkJCQkJCQkJCSAgIGNvbnN0IHZvaWQgKnByaXZhdGVfZGF0YSwKKwkJCQkJCQkJ CQkJCSAgIHZvaWQgKmFyZyk7CisKKy8qCisgKiBTZXQgbnVtYmVyIG9mIGN1cnJlbnRseSBhdmFp bGFibGUgcGFyYWxsZWwgYS92IHdvcmtlcnMuIFRoaXMgdmFsdWUgbWF5CisgKiBjaGFuZ2UgYWZ0 ZXIgcmVzZXJ2aW5nIG9yIHJlbGVhc2luZyBzdWNoIHdvcmtlcnMuCisgKgorICogRnVuY3Rpb24g Y2FsbGVkIGZyb20gcGFyYWxsZWwgYXV0b3ZhY3V1bSBsZWFkZXIuCisgKi8KK3ZvaWQKK2lual9z ZXRfZnJlZV93b3JrZXJzKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaWQgKnByaXZhdGVfZGF0 YSwgdm9pZCAqYXJnKQoreworCWVyZXBvcnQoTE9HLAorCQkJZXJybXNnKCJzZXQgcGFyYWxsZWwg d29ya2VycyBpbmplY3Rpb24gcG9pbnQgY2FsbGVkIiksCisJCQllcnJoaWRlc3RtdCh0cnVlKSwg ZXJyaGlkZWNvbnRleHQodHJ1ZSkpOworCisJaWYgKGlual9wb2ludF9zdGF0ZS0+ZW5hYmxlZF9z ZXRfZnJlZV93b3JrZXJzKQorCXsKKwkJQXNzZXJ0KGFyZyAhPSBOVUxMKTsKKwkJaW5qX3BvaW50 X3N0YXRlLT5mcmVlX3BhcmFsbGVsX3dvcmtlcnMgPSAqKHVpbnQzMiAqKSBhcmc7CisJfQorfQor CisvKgorICogVGhyb3cgYW4gRVJST1Igb3IgRkFUQUwsIGlmIHNvbWVib2R5IHJlcXVlc3RlZCBp dC4KKyAqCisgKiBGdW5jdGlvbiBjYWxsZWQgZnJvbSBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRl ci4KKyAqLwordm9pZAoraW5qX3RyaWdnZXJfbGVhZGVyX2ZhaWx1cmUoY29uc3QgY2hhciAqbmFt ZSwgY29uc3Qgdm9pZCAqcHJpdmF0ZV9kYXRhLAorCQkJCQkJICAgdm9pZCAqYXJnKQoreworCWlu dAkJCWVsZXZlbDsKKwljaGFyCSAgICplbGV2ZWxfc3RyOworCisJZXJlcG9ydChMT0csCisJCQll cnJtc2coInRyaWdnZXIgbGVhZGVyIGZhaWx1cmUgaW5qZWN0aW9uIHBvaW50IGNhbGxlZCIpLAor CQkJZXJyaGlkZXN0bXQodHJ1ZSksIGVycmhpZGVjb250ZXh0KHRydWUpKTsKKworCWlmIChpbmpf cG9pbnRfc3RhdGUtPmZ0eXBlID09IEZBSUxfTk9ORSB8fAorCQkhaW5qX3BvaW50X3N0YXRlLT5l bmFibGVkX2xlYWRlcl9mYWlsdXJlKQorCXsKKwkJcmV0dXJuOworCX0KKworCWVsZXZlbCA9IGlu al9wb2ludF9zdGF0ZS0+ZnR5cGUgPT0gRkFJTF9FUlJPUiA/IEVSUk9SIDogRkFUQUw7CisJZWxl dmVsX3N0ciA9IGVsZXZlbCA9PSBFUlJPUiA/ICJlcnJvciIgOiAiZmF0YWwiOworCisJZXJlcG9y dChlbGV2ZWwsIGVycm1zZygiJXMsIHRyaWdnZXJlZCBieSBpbmplY3Rpb24gcG9pbnQiLCBlbGV2 ZWxfc3RyKSk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2V0X3BhcmFsbGVsX2F1dG92YWN1 dW1fZnJlZV93b3JrZXJzKTsKK0RhdHVtCitnZXRfcGFyYWxsZWxfYXV0b3ZhY3V1bV9mcmVlX3dv cmtlcnMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwl1aW50MzIJCW53b3JrZXJzOworCisjaWZuZGVm IFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJZWxvZyhFUlJPUiwgImluamVjdGlvbiBwb2ludHMgbm90 IHN1cHBvcnRlZCIpOworI2VuZGlmCisKKwlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1Mb2NrLCBM V19FWENMVVNJVkUpOworCW53b3JrZXJzID0gaW5qX3BvaW50X3N0YXRlLT5mcmVlX3BhcmFsbGVs X3dvcmtlcnM7CisJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7CisKKwlQR19SRVRVUk5f VUlOVDMyKG53b3JrZXJzKTsKK30KKworUEdfRlVOQ1RJT05fSU5GT19WMSh0cmlnZ2VyX2xlYWRl cl9mYWlsdXJlKTsKK0RhdHVtCit0cmlnZ2VyX2xlYWRlcl9mYWlsdXJlKFBHX0ZVTkNUSU9OX0FS R1MpCit7CisJY29uc3QgY2hhciAqZmFpbHVyZV90eXBlID0gdGV4dF90b19jc3RyaW5nKFBHX0dF VEFSR19URVhUX1BQKDApKTsKKworI2lmbmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCWVsb2co RVJST1IsICJpbmplY3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQiKTsKKyNlbmRpZgorCisJaWYg KHN0cmNtcChmYWlsdXJlX3R5cGUsICJOT05FIikgPT0gMCkKKwkJaW5qX3BvaW50X3N0YXRlLT5m dHlwZSA9IEZBSUxfTk9ORTsKKwllbHNlIGlmIChzdHJjbXAoZmFpbHVyZV90eXBlLCAiRVJST1Ii KSA9PSAwKQorCQlpbmpfcG9pbnRfc3RhdGUtPmZ0eXBlID0gRkFJTF9FUlJPUjsKKwllbHNlIGlm IChzdHJjbXAoZmFpbHVyZV90eXBlLCAiRkFUQUwiKSA9PSAwKQorCQlpbmpfcG9pbnRfc3RhdGUt PmZ0eXBlID0gRkFJTF9GQVRBTDsKKwllbHNlCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiaW52YWxp ZCBsZWFkZXIgZmFpbHVyZSB0eXBlIDogJXMiLCBmYWlsdXJlX3R5cGUpKSk7CisKKwlQR19SRVRV Uk5fVk9JRCgpOworfQorCitQR19GVU5DVElPTl9JTkZPX1YxKGlual9zZXRfZnJlZV93b3JrZXJz X2F0dGFjaCk7CitEYXR1bQoraW5qX3NldF9mcmVlX3dvcmtlcnNfYXR0YWNoKFBHX0ZVTkNUSU9O X0FSR1MpCit7CisjaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwlpbmpfcG9pbnRfc3RhdGUt PmVuYWJsZWRfc2V0X2ZyZWVfd29ya2VycyA9IHRydWU7CisJaW5qX3BvaW50X3N0YXRlLT5mdHlw ZSA9IEZBSUxfTk9ORTsKKyNlbHNlCisJZWxvZyhFUlJPUiwgImluamVjdGlvbiBwb2ludHMgbm90 IHN1cHBvcnRlZCIpOworI2VuZGlmCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KKworUEdfRlVOQ1RJ T05fSU5GT19WMShpbmpfc2V0X2ZyZWVfd29ya2Vyc19kZXRhY2gpOworRGF0dW0KK2lual9zZXRf ZnJlZV93b3JrZXJzX2RldGFjaChQR19GVU5DVElPTl9BUkdTKQoreworI2lmZGVmIFVTRV9JTkpF Q1RJT05fUE9JTlRTCisJaW5qX3BvaW50X3N0YXRlLT5lbmFibGVkX3NldF9mcmVlX3dvcmtlcnMg PSBmYWxzZTsKKyNlbHNlCisJZWxvZyhFUlJPUiwgImluamVjdGlvbiBwb2ludHMgbm90IHN1cHBv cnRlZCIpOworI2VuZGlmCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KKworUEdfRlVOQ1RJT05fSU5G T19WMShpbmpfbGVhZGVyX2ZhaWx1cmVfYXR0YWNoKTsKK0RhdHVtCitpbmpfbGVhZGVyX2ZhaWx1 cmVfYXR0YWNoKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisjaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lO VFMKKwlpbmpfcG9pbnRfc3RhdGUtPmVuYWJsZWRfbGVhZGVyX2ZhaWx1cmUgPSB0cnVlOworI2Vs c2UKKwllbG9nKEVSUk9SLCAiaW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIik7CisjZW5k aWYKKwlQR19SRVRVUk5fVk9JRCgpOworfQorCitQR19GVU5DVElPTl9JTkZPX1YxKGlual9sZWFk ZXJfZmFpbHVyZV9kZXRhY2gpOworRGF0dW0KK2lual9sZWFkZXJfZmFpbHVyZV9kZXRhY2goUEdf RlVOQ1RJT05fQVJHUykKK3sKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCWlual9wb2lu dF9zdGF0ZS0+ZW5hYmxlZF9sZWFkZXJfZmFpbHVyZSA9IGZhbHNlOworI2Vsc2UKKwllbG9nKEVS Uk9SLCAiaW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIik7CisjZW5kaWYKKwlQR19SRVRV Uk5fVk9JRCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1 dW0vdGVzdF9hdXRvdmFjdXVtLmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3Zh Y3V1bS90ZXN0X2F1dG92YWN1dW0uY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uMWI3ZmFkMjU4ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uY29udHJvbApAQCAtMCwwICsxLDMg QEAKK2NvbW1lbnQgPSAnVGVzdCBjb2RlIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtJworZGVmYXVs dF92ZXJzaW9uID0gJzEuMCcKK21vZHVsZV9wYXRobmFtZSA9ICckbGliZGlyL3Rlc3RfYXV0b3Zh Y3V1bScKLS0gCjIuNDMuMAoK --00000000000030623906444456b2 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0004-Documentation-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v16-0004-Documentation-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mibugx9s0 RnJvbSA1YTdiZGExNGQ2MGFmM2RjZDcwNzJkZDM0ZGJhNjM3ZTE5ZGU3YWJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAyOjMyOjQ0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTYgNC80XSBEb2N1bWVudGF0aW9uIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIGRv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgfCAxNyArKysrKysrKysrKysrKysrKwog ZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwgICAgICB8IDEyICsrKysrKysrKysrKwogZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCB8IDIwICsrKysrKysrKysrKysrKysrKysr CiAzIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggMDIzYjNm MDNiYTkuLjg1ZGIwOWRmODk3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0yODQxLDYgKzI4NDEsNyBAQCBpbmNs dWRlX2RpciAnY29uZi5kJwogICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4gY2hhbmdpbmcg dGhpcyB2YWx1ZSwgY29uc2lkZXIgYWxzbyBhZGp1c3RpbmcKICAgICAgICAgIDx4cmVmIGxpbmtl bmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2VycyIvPiwKKyAgICAgICAgIDx4cmVmIGxpbmtlbmQ9 Imd1Yy1hdXRvdmFjdXVtLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+LAogICAgICAgICAgPHhyZWYg bGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC1tYWludGVuYW5jZS13b3JrZXJzIi8+LCBhbmQKICAg ICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2Vycy1wZXItZ2F0aGVy Ii8+LgogICAgICAgICA8L3BhcmE+CkBAIC05MjY0LDYgKzkyNjUsMjIgQEAgQ09QWSBwb3N0Z3Jl c19sb2cgRlJPTSAnL2Z1bGwvcGF0aC90by9sb2dmaWxlLmNzdicgV0lUSCBjc3Y7CiAgICAgICAg PC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVudHJ5 IGlkPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIgeHJlZmxhYmVsPSJhdXRv dmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIj4KKyAgICAgICAgPHRlcm0+PHZhcm5hbWU+YXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5 cGU+KQorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+YXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT48L3ByaW1hcnk+CisgICAgICAg ICA8c2Vjb25kYXJ5PmNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9zZWNvbmRhcnk+CisgICAgICAg IDwvaW5kZXh0ZXJtPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgIDxwYXJhPgorICAgICAgICAgIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVs IGF1dG92YWN1dW0gd29ya2VycyB0aGF0CisgICAgICAgICAgY2FuIGJlIHVzZWQgZm9yIHBhcmFs bGVsIGluZGV4IHZhY3V1bWluZyBhdCBvbmUgdGltZS4gSXMgY2FwcGVkIGJ5CisgICAgICAgICAg PHhyZWYgbGlua2VuZD0iZ3VjLW1heC13b3JrZXItcHJvY2Vzc2VzIi8+LiBUaGUgZGVmYXVsdCBp cyAyLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxp c3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3QyPgogCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9tYWludGVu YW5jZS5zZ21sCmluZGV4IGY0ZjA0MzNlZjZmLi4wMmYzMDZiYmI4YSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNl LnNnbWwKQEAgLTg5Nyw2ICs4OTcsMTggQEAgSElOVDogIEV4ZWN1dGUgYSBkYXRhYmFzZS13aWRl IFZBQ1VVTSBpbiB0aGF0IGRhdGFiYXNlLgogICAgIGF1dG92YWN1dW0gd29ya2VycycgYWN0aXZp dHkuCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIElmIGFuIGF1dG92YWN1dW0gd29ya2Vy IHByb2Nlc3MgY29tZXMgYWNyb3NzIGEgdGFibGUgd2l0aCB0aGUgZW5hYmxlZAorICAgIDx4cmVm IGxpbmtlbmQ9InJlbG9wdGlvbi1hdXRvdmFjdXVtLXBhcmFsbGVsLXdvcmtlcnMiLz4gc3RvcmFn ZSBwYXJhbWV0ZXIsCisgICAgaXQgd2lsbCBsYXVuY2ggcGFyYWxsZWwgd29ya2VycyBpbiBvcmRl ciB0byB2YWN1dW0gaW5kZXhlcyBvZiB0aGlzIHRhYmxlCisgICAgaW4gYSBwYXJhbGxlbCBtb2Rl LiBQYXJhbGxlbCB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIG9mIHByb2Nlc3Nlcwor ICAgIGVzdGFibGlzaGVkIGJ5IDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtd29ya2VyLXByb2Nlc3Nl cyIvPiwgbGltaXRlZCBieQorICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29y a2VycyIvPi4KKyAgICBUaGUgdG90YWwgbnVtYmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1dW0gd29y a2VycyB0aGF0IGNhbiBiZSBhY3RpdmUgYXQgb25lCisgICAgdGltZSBpcyBsaW1pdGVkIGJ5IHRo ZSA8eHJlZiBsaW5rZW5kPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIvPgor ICAgIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLgorICAgPC9wYXJhPgorCiAgICA8cGFyYT4KICAg ICBJZiBzZXZlcmFsIGxhcmdlIHRhYmxlcyBhbGwgYmVjb21lIGVsaWdpYmxlIGZvciB2YWN1dW1p bmcgaW4gYSBzaG9ydAogICAgIGFtb3VudCBvZiB0aW1lLCBhbGwgYXV0b3ZhY3V1bSB3b3JrZXJz IG1pZ2h0IGJlY29tZSBvY2N1cGllZCB3aXRoCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApp bmRleCA2NTU3YzVjZmZkOC4uZTk1YTY0ODhjNWUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbApAQCAtMTcxNyw2ICsxNzE3LDI2IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBj 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= --00000000000030623906444456b2 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0001-Parallel-autovacuum.patch" Content-Disposition: attachment; filename="v16-0001-Parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mibugxb73 RnJvbSAzMDRmOTJmMTNkY2JmOTBkZGJmYmRkOTU4NTljNzcyZmRmYWFkYmIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjAzOjI0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTYgMS80XSBQYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vcmVsb3B0aW9ucy5jICAgICAgICB8ICAxMSArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgIDQyICsrKystCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAxNjQgKysrKysrKysrKysrKysrKystCiBzcmMv YmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCAgICAgfCAgIDkgKwogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAyICsKIHNyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9t aXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmggICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL3V0aWxz L3JlbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiAxMSBmaWxlcyBjaGFuZ2VkLCAy NDAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9u L3JlbG9wdGlvbnMuYwppbmRleCA5ZTI4OGRmZWNiZi4uM2NjMjlkNDQ1NGEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCkBAIC0yMjIsNiArMjIyLDE1IEBAIHN0YXRpYyBy ZWxvcHRfaW50IGludFJlbE9wdHNbXSA9CiAJCX0sCiAJCVNQR0lTVF9ERUZBVUxUX0ZJTExGQUNU T1IsIFNQR0lTVF9NSU5fRklMTEZBQ1RPUiwgMTAwCiAJfSwKKwl7CisJCXsKKwkJCSJhdXRvdmFj dXVtX3BhcmFsbGVsX3dvcmtlcnMiLAorCQkJIk1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1 dG92YWN1dW0gd29ya2VycyB0aGF0IGNhbiBiZSB1c2VkIGZvciBwcm9jZXNzaW5nIHRoaXMgdGFi bGUuIiwKKwkJCVJFTE9QVF9LSU5EX0hFQVAsCisJCQlTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sK KwkJfSwKKwkJLTEsIC0xLCAxMDI0CisJfSwKIAl7CiAJCXsKIAkJCSJhdXRvdmFjdXVtX3ZhY3V1 bV90aHJlc2hvbGQiLApAQCAtMTg4MSw2ICsxODkwLDggQEAgZGVmYXVsdF9yZWxvcHRpb25zKERh dHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUsIHJlbG9wdF9raW5kIGtpbmQpCiAJCXsiZmls bGZhY3RvciIsIFJFTE9QVF9UWVBFX0lOVCwgb2Zmc2V0b2YoU3RkUmRPcHRpb25zLCBmaWxsZmFj dG9yKX0sCiAJCXsiYXV0b3ZhY3V1bV9lbmFibGVkIiwgUkVMT1BUX1RZUEVfQk9PTCwKIAkJb2Zm c2V0b2YoU3RkUmRPcHRpb25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCBl bmFibGVkKX0sCisJCXsiYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzIiwgUkVMT1BUX1RZUEVf SU5ULAorCQlvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0b2YoQXV0 b1ZhY09wdHMsIGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vycyl9LAogCQl7ImF1dG92YWN1dW1f dmFjdXVtX3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lOVCwKIAkJb2Zmc2V0b2YoU3RkUmRPcHRp b25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCB2YWN1dW1fdGhyZXNob2xk KX0sCiAJCXsiYXV0b3ZhY3V1bV92YWN1dW1fbWF4X3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lO VCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDBmZWVhMWQzMGVjLi42 ZTJjMjJiZTJlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0xLDcg KzEsOSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogdmFjdXVtcGFyYWxsZWwuYwotICoJ ICBTdXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gZXhlY3V0aW9uLgorICoJICBT dXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gYW5kIGF1dG92YWN1dW0gZXhlY3V0 aW9uLiBJbiB0aGUKKyAqCSAgY29tbWVudHMgYmVsb3csIHRoZSB3b3JkICJ2YWN1dW0iIHdpbGwg cmVmZXIgdG8gYm90aCB2YWN1dW0gYW5kCisgKgkgIGF1dG92YWN1dW0uCiAgKgogICogVGhpcyBm aWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGlu ZyB1cCwgdXNpbmcsCiAgKiBhbmQgdGVhcmluZyBkb3duIGEgUGFyYWxsZWxWYWN1dW1TdGF0ZS4K QEAgLTM0LDYgKzM2LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL3BhdGhzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAi cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBA IC0zNzMsOCArMzc2LDkgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxh dGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCXNoYXJlZC0+cXVlcnlpZCA9IHBnc3RhdF9n ZXRfbXlfcXVlcnlfaWQoKTsKIAlzaGFyZWQtPm1haW50ZW5hbmNlX3dvcmtfbWVtX3dvcmtlciA9 CiAJCShuaW5kZXhlc19td20gPiAwKSA/Ci0JCW1haW50ZW5hbmNlX3dvcmtfbWVtIC8gTWluKHBh cmFsbGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgotCQltYWludGVuYW5jZV93b3JrX21lbTsK KwkJdmFjX3dvcmtfbWVtIC8gTWluKHBhcmFsbGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgor CQl2YWNfd29ya19tZW07CisKIAlzaGFyZWQtPmRlYWRfaXRlbXNfaW5mby5tYXhfYnl0ZXMgPSB2 YWNfd29ya19tZW0gKiAoc2l6ZV90KSAxMDI0OwogCiAJLyogUHJlcGFyZSBEU0Egc3BhY2UgZm9y IGRlYWQgaXRlbXMgKi8KQEAgLTU1MywxMiArNTU3LDE3IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21w dXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0 ZWQsCiAJaW50CQkJbmluZGV4ZXNfcGFyYWxsZWxfYnVsa2RlbCA9IDA7CiAJaW50CQkJbmluZGV4 ZXNfcGFyYWxsZWxfY2xlYW51cCA9IDA7CiAJaW50CQkJcGFyYWxsZWxfd29ya2VyczsKKwlpbnQJ CQltYXhfd29ya2VyczsKKworCW1heF93b3JrZXJzID0gQW1BdXRvVmFjdXVtV29ya2VyUHJvY2Vz cygpID8KKwkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA6CisJCW1heF9wYXJhbGxl bF9tYWludGVuYW5jZV93b3JrZXJzOwogCiAJLyoKIAkgKiBXZSBkb24ndCBhbGxvdyBwZXJmb3Jt aW5nIHBhcmFsbGVsIG9wZXJhdGlvbiBpbiBzdGFuZGFsb25lIGJhY2tlbmQgb3IKIAkgKiB3aGVu IHBhcmFsbGVsaXNtIGlzIGRpc2FibGVkLgogCSAqLwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIg fHwgbWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnMgPT0gMCkKKwlpZiAoIUlzVW5kZXJQ b3N0bWFzdGVyIHx8IG1heF93b3JrZXJzID09IDApCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTU5 Nyw4ICs2MDYsOCBAQCBwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICpp bmRyZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAogCXBhcmFsbGVsX3dvcmtlcnMg PSAobnJlcXVlc3RlZCA+IDApID8KIAkJTWluKG5yZXF1ZXN0ZWQsIG5pbmRleGVzX3BhcmFsbGVs KSA6IG5pbmRleGVzX3BhcmFsbGVsOwogCi0JLyogQ2FwIGJ5IG1heF9wYXJhbGxlbF9tYWludGVu YW5jZV93b3JrZXJzICovCi0JcGFyYWxsZWxfd29ya2VycyA9IE1pbihwYXJhbGxlbF93b3JrZXJz LCBtYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2Vycyk7CisJLyogQ2FwIGJ5IEdVQyB2YXJp YWJsZSAqLworCXBhcmFsbGVsX3dvcmtlcnMgPSBNaW4ocGFyYWxsZWxfd29ya2VycywgbWF4X3dv cmtlcnMpOwogCiAJcmV0dXJuIHBhcmFsbGVsX3dvcmtlcnM7CiB9CkBAIC02NDYsNiArNjU1LDEz IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3Rh dGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAJICovCiAJbndvcmtlcnMgPSBNaW4obndvcmtl cnMsIHB2cy0+cGN4dC0+bndvcmtlcnMpOwogCisJLyoKKwkgKiBSZXNlcnZlIHdvcmtlcnMgaW4g YXV0b3ZhY3V1bSBnbG9iYWwgc3RhdGUuIE5vdGUsIHRoYXQgd2UgbWF5IGJlIGdpdmVuCisJICog ZmV3ZXIgd29ya2VycyB0aGFuIHdlIHJlcXVlc3RlZC4KKwkgKi8KKwlpZiAoQW1BdXRvVmFjdXVt V29ya2VyUHJvY2VzcygpICYmIG53b3JrZXJzID4gMCkKKwkJQXV0b1ZhY3V1bVJlc2VydmVQYXJh bGxlbFdvcmtlcnMoJm53b3JrZXJzKTsKKwogCS8qCiAJICogU2V0IGluZGV4IHZhY3V1bSBzdGF0 dXMgYW5kIG1hcmsgd2hldGhlciBwYXJhbGxlbCB2YWN1dW0gd29ya2VyIGNhbgogCSAqIHByb2Nl c3MgaXQuCkBAIC02OTAsNiArNzA2LDE2IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9p bmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAKIAkJ TGF1bmNoUGFyYWxsZWxXb3JrZXJzKHB2cy0+cGN4dCk7CiAKKwkJaWYgKEFtQXV0b1ZhY3V1bVdv cmtlclByb2Nlc3MoKSAmJgorCQkJcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA8IG53b3Jr ZXJzKQorCQl7CisJCQkvKgorCQkJICogVGVsbCBhdXRvdmFjdXVtIHRoYXQgd2UgY291bGQgbm90 IGxhdW5jaCBhbGwgdGhlIHByZXZpb3VzbHkKKwkJCSAqIHJlc2VydmVkIHdvcmtlcnMuCisJCQkg Ki8KKwkJCUF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3JrZXJzKG53b3JrZXJzIC0gcHZzLT5w Y3h0LT5ud29ya2Vyc19sYXVuY2hlZCk7CisJCX0KKwogCQlpZiAocHZzLT5wY3h0LT5ud29ya2Vy c19sYXVuY2hlZCA+IDApCiAJCXsKIAkJCS8qCkBAIC03MzgsNiArNzY0LDEwIEBAIHBhcmFsbGVs X3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50 IG51bV9pbmRleF9zY2FuCiAKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCBwdnMtPnBjeHQtPm53b3Jr ZXJzX2xhdW5jaGVkOyBpKyspCiAJCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmcHZzLT5idWZm ZXJfdXNhZ2VbaV0sICZwdnMtPndhbF91c2FnZVtpXSk7CisKKwkJLyogQWxzbyByZWxlYXNlIGFs bCBwcmV2aW91c2x5IHJlc2VydmVkIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyAqLworCQlp ZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmIHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1 bmNoZWQgPiAwKQorCQkJQXV0b1ZhY3V1bVJlbGVhc2VQYXJhbGxlbFdvcmtlcnMocHZzLT5wY3h0 LT5ud29ya2Vyc19sYXVuY2hlZCk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMKaW5kZXggMWMzODQ4OGYyY2IuLmNlY2EwM2JjZjM0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2F1dG92YWN1dW0uYwpAQCAtMTUxLDYgKzE1MSwxMiBAQCBpbnQJCQlMb2dfYXV0b2FuYWx5emVf bWluX2R1cmF0aW9uID0gNjAwMDAwOwogc3RhdGljIGRvdWJsZSBhdl9zdG9yYWdlX3BhcmFtX2Nv c3RfZGVsYXkgPSAtMTsKIHN0YXRpYyBpbnQJYXZfc3RvcmFnZV9wYXJhbV9jb3N0X2xpbWl0ID0g LTE7CiAKKy8qCisgKiBWYXJpYWJsZSB0byBrZWVwIG51bWJlciBvZiBjdXJyZW50bHkgcmVzZXJ2 ZWQgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzLgorICogSXQgaXMgb25seSByZWxldmFudCBm b3IgcGFyYWxsZWwgYXV0b3ZhY3V1bSBsZWFkZXIgcHJvY2Vzcy4KKyAqLworc3RhdGljIGludAlh dl9ud29ya2Vyc19yZXNlcnZlZCA9IDA7CisKIC8qIEZsYWdzIHNldCBieSBzaWduYWwgaGFuZGxl cnMgKi8KIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgZ290X1NJR1VTUjIgPSBmYWxzZTsK IApAQCAtMjg1LDYgKzI5MSw4IEBAIHR5cGVkZWYgc3RydWN0IEF1dG9WYWN1dW1Xb3JrSXRlbQog ICogYXZfd29ya0l0ZW1zCQl3b3JrIGl0ZW0gYXJyYXkKICAqIGF2X253b3JrZXJzRm9yQmFsYW5j ZSB0aGUgbnVtYmVyIG9mIGF1dG92YWN1dW0gd29ya2VycyB0byB1c2Ugd2hlbgogICogCQkJCQlj YWxjdWxhdGluZyB0aGUgcGVyIHdvcmtlciBjb3N0IGxpbWl0CisgKiBhdl9mcmVlUGFyYWxsZWxX b3JrZXJzIHRoZSBudW1iZXIgb2YgZnJlZSBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMKKyAq IGF2X21heFBhcmFsbGVsV29ya2VycyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXV0 b3ZhY3V1bSB3b3JrZXJzCiAgKgogICogVGhpcyBzdHJ1Y3QgaXMgcHJvdGVjdGVkIGJ5IEF1dG92 YWN1dW1Mb2NrLCBleGNlcHQgZm9yIGF2X3NpZ25hbCBhbmQgcGFydHMKICAqIG9mIHRoZSB3b3Jr ZXIgbGlzdCAoc2VlIGFib3ZlKS4KQEAgLTI5OSw2ICszMDcsOCBAQCB0eXBlZGVmIHN0cnVjdAog CVdvcmtlckluZm8JYXZfc3RhcnRpbmdXb3JrZXI7CiAJQXV0b1ZhY3V1bVdvcmtJdGVtIGF2X3dv cmtJdGVtc1tOVU1fV09SS0lURU1TXTsKIAlwZ19hdG9taWNfdWludDMyIGF2X253b3JrZXJzRm9y QmFsYW5jZTsKKwl1aW50MzIJCWF2X2ZyZWVQYXJhbGxlbFdvcmtlcnM7CisJdWludDMyCQlhdl9t YXhQYXJhbGxlbFdvcmtlcnM7CiB9IEF1dG9WYWN1dW1TaG1lbVN0cnVjdDsKIAogc3RhdGljIEF1 dG9WYWN1dW1TaG1lbVN0cnVjdCAqQXV0b1ZhY3V1bVNobWVtOwpAQCAtMzY0LDYgKzM3NCw4IEBA IHN0YXRpYyB2b2lkIGF1dG92YWNfcmVwb3J0X3dvcmtpdGVtKEF1dG9WYWN1dW1Xb3JrSXRlbSAq d29ya2l0ZW0sCiBzdGF0aWMgdm9pZCBhdmxfc2lndXNyMl9oYW5kbGVyKFNJR05BTF9BUkdTKTsK IHN0YXRpYyBib29sIGF2X3dvcmtlcl9hdmFpbGFibGUodm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVj a19hdl93b3JrZXJfZ3Vjcyh2b2lkKTsKK3N0YXRpYyB2b2lkIGFkanVzdF9mcmVlX3BhcmFsbGVs X3dvcmtlcnMoaW50IHByZXZfbWF4X3BhcmFsbGVsX3dvcmtlcnMpOworc3RhdGljIHZvaWQgQXV0 b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxlbFdvcmtlcnModm9pZCk7CiAKIAogCkBAIC03NjMsNiAr Nzc1LDggQEAgUHJvY2Vzc0F1dG9WYWNMYXVuY2hlckludGVycnVwdHModm9pZCkKIAlpZiAoQ29u ZmlnUmVsb2FkUGVuZGluZykKIAl7CiAJCWludAkJCWF1dG92YWN1dW1fbWF4X3dvcmtlcnNfcHJl diA9IGF1dG92YWN1dW1fbWF4X3dvcmtlcnM7CisJCWludAkJCWF1dG92YWN1dW1fbWF4X3BhcmFs bGVsX3dvcmtlcnNfcHJldiA9CisJCQlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzOwog CiAJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKIAkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdD X1NJR0hVUCk7CkBAIC03NzksNiArNzkzLDE1IEBAIFByb2Nlc3NBdXRvVmFjTGF1bmNoZXJJbnRl cnJ1cHRzKHZvaWQpCiAJCWlmIChhdXRvdmFjdXVtX21heF93b3JrZXJzX3ByZXYgIT0gYXV0b3Zh Y3V1bV9tYXhfd29ya2VycykKIAkJCWNoZWNrX2F2X3dvcmtlcl9ndWNzKCk7CiAKKwkJLyoKKwkJ ICogSWYgYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyBjaGFuZ2VkLCB3ZSBtdXN0IHRh a2UgY2FyZSBvZgorCQkgKiB0aGUgY29ycmVjdCB2YWx1ZSBvZiBhdmFpbGFibGUgcGFyYWxsZWwg YXV0b3ZhY3V1bSB3b3JrZXJzIGluCisJCSAqIHNobWVtLgorCQkgKi8KKwkJaWYgKGF1dG92YWN1 dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnNfcHJldiAhPQorCQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxs ZWxfd29ya2VycykKKwkJCWFkanVzdF9mcmVlX3BhcmFsbGVsX3dvcmtlcnMoYXV0b3ZhY3V1bV9t YXhfcGFyYWxsZWxfd29ya2Vyc19wcmV2KTsKKwogCQkvKiByZWJ1aWxkIHRoZSBsaXN0IGluIGNh c2UgdGhlIG5hcHRpbWUgY2hhbmdlZCAqLwogCQlyZWJ1aWxkX2RhdGFiYXNlX2xpc3QoSW52YWxp ZE9pZCk7CiAJfQpAQCAtMTM4Myw2ICsxNDA2LDE3IEBAIGF2bF9zaWd1c3IyX2hhbmRsZXIoU0lH TkFMX0FSR1MpCiAgKgkJCQkJICBBVVRPVkFDVVVNIFdPUktFUiBDT0RFCiAgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CiAKKy8qCisgKiBNYWtlIHN1cmUgdGhhdCBhbGwgcmVzZXJ2ZWQgd29ya2VycyBhcmUgcmVsZWFz ZWQsIGlmIHBhcmFsbGVsIGF1dG92YWN1dW0KKyAqIGxlYWRlciBpcyBmaW5pc2hpbmcgZHVlIHRv IEZBVEFMIGVycm9yLiBPdGhlcndpc2UgZnVuY3Rpb24gaGF2ZSBubyBlZmZlY3QuCisgKi8KK3N0 YXRpYyB2b2lkCithdXRvdmFjdXVtX3dvcmtlcl9iZWZvcmVfc2htZW1fZXhpdChpbnQgY29kZSwg RGF0dW0gYXJnKQoreworCWlmIChjb2RlICE9IDApCisJCUF1dG9WYWN1dW1SZWxlYXNlQWxsUGFy YWxsZWxXb3JrZXJzKCk7Cit9CisKIC8qCiAgKiBNYWluIGVudHJ5IHBvaW50IGZvciBhdXRvdmFj dXVtIHdvcmtlciBwcm9jZXNzZXMuCiAgKi8KQEAgLTE0MjksNiArMTQ2Myw4IEBAIEF1dG9WYWNX b3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9s ZW4pCiAJcHFzaWduYWwoU0lHRlBFLCBGbG9hdEV4Y2VwdGlvbkhhbmRsZXIpOwogCXBxc2lnbmFs KFNJR0NITEQsIFNJR19ERkwpOwogCisJYmVmb3JlX3NobWVtX2V4aXQoYXV0b3ZhY3V1bV93b3Jr ZXJfYmVmb3JlX3NobWVtX2V4aXQsIDApOworCiAJLyoKIAkgKiBDcmVhdGUgYSBwZXItYmFja2Vu ZCBQR1BST0Mgc3RydWN0IGluIHNoYXJlZCBtZW1vcnkuICBXZSBtdXN0IGRvIHRoaXMKIAkgKiBi ZWZvcmUgd2UgY2FuIHVzZSBMV0xvY2tzIG9yIGFjY2VzcyBhbnkgc2hhcmVkIG1lbW9yeS4KQEAg LTI0ODAsNiArMjUxNiwxMiBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJCX0KIAkJUEdfQ0FUQ0go KTsKIAkJeworCQkJLyoKKwkJCSAqIFBhcmFsbGVsIGF1dG92YWN1dW0gY2FuIHJlc2VydmUgcGFy YWxsZWwgd29ya2Vycy4gTWFrZSBzdXJlCisJCQkgKiB0aGF0IGFsbCByZXNlcnZlZCB3b3JrZXJz IGFyZSByZWxlYXNlZC4KKwkJCSAqLworCQkJQXV0b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxlbFdv cmtlcnMoKTsKKwogCQkJLyoKIAkJCSAqIEFib3J0IHRoZSB0cmFuc2FjdGlvbiwgc3RhcnQgYSBu ZXcgb25lLCBhbmQgcHJvY2VlZCB3aXRoIHRoZQogCQkJICogbmV4dCB0YWJsZSBpbiBvdXIgbGlz dC4KQEAgLTI4ODAsOCArMjkyMiwxMiBAQCB0YWJsZV9yZWNoZWNrX2F1dG92YWMoT2lkIHJlbGlk LCBIVEFCICp0YWJsZV90b2FzdF9tYXAsCiAJCSAqLwogCQl0YWItPmF0X3BhcmFtcy5pbmRleF9j bGVhbnVwID0gVkFDT1BUVkFMVUVfVU5TUEVDSUZJRUQ7CiAJCXRhYi0+YXRfcGFyYW1zLnRydW5j YXRlID0gVkFDT1BUVkFMVUVfVU5TUEVDSUZJRUQ7Ci0JCS8qIEFzIG9mIG5vdywgd2UgZG9uJ3Qg c3VwcG9ydCBwYXJhbGxlbCB2YWN1dW0gZm9yIGF1dG92YWN1dW0gKi8KLQkJdGFiLT5hdF9wYXJh bXMubndvcmtlcnMgPSAtMTsKKworCQkvKiBEZWNpZGUgd2hldGhlciB3ZSBuZWVkIHRvIHByb2Nl c3MgaW5kZXhlcyBvZiB0YWJsZSBpbiBwYXJhbGxlbC4gKi8KKwkJdGFiLT5hdF9wYXJhbXMubndv cmtlcnMgPSBhdm9wdHMKKwkJCT8gYXZvcHRzLT5hdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMK KwkJCTogLTE7CisKIAkJdGFiLT5hdF9wYXJhbXMuZnJlZXplX21pbl9hZ2UgPSBmcmVlemVfbWlu X2FnZTsKIAkJdGFiLT5hdF9wYXJhbXMuZnJlZXplX3RhYmxlX2FnZSA9IGZyZWV6ZV90YWJsZV9h Z2U7CiAJCXRhYi0+YXRfcGFyYW1zLm11bHRpeGFjdF9mcmVlemVfbWluX2FnZSA9IG11bHRpeGFj dF9mcmVlemVfbWluX2FnZTsKQEAgLTMzNTgsNiArMzQwNCw4NSBAQCBBdXRvVmFjdXVtUmVxdWVz dFdvcmsoQXV0b1ZhY3V1bVdvcmtJdGVtVHlwZSB0eXBlLCBPaWQgcmVsYXRpb25JZCwKIAlyZXR1 cm4gcmVzdWx0OwogfQogCisvKgorICogSW4gb3JkZXIgdG8gbWVldCB0aGUgJ2F1dG92YWN1dW1f bWF4X3BhcmFsbGVsX3dvcmtlcnMnIGxpbWl0LCBsZWFkZXIKKyAqIGF1dG92YWN1dW0gcHJvY2Vz cyBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBkdXJpbmcgY29tcHV0aW5nIHRoZSBwYXJhbGxlbAor ICogZGVncmVlLgorICoKKyAqICdud29ya2VycycgaXMgdGhlIGRlc2lyZWQgbnVtYmVyIG9mIHBh cmFsbGVsIHdvcmtlcnMgdG8gcmVzZXJ2ZS4gRnVuY3Rpb24KKyAqIHNldHMgJ253b3JrZXJzJyB0 byB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMgdGhhdCBhY3R1YWxseSBjYW4gYmUKKyAq IGxhdW5jaGVkIGFuZCByZXNlcnZlcyB0aGVzZSB3b3JrZXJzIChpZiBhbnkpIGluIGdsb2JhbCBh dXRvdmFjdXVtIHN0YXRlLgorICoKKyAqIE5PVEU6IFdlIHdpbGwgdHJ5IHRvIHByb3ZpZGUgYXMg bWFueSB3b3JrZXJzIGFzIHJlcXVlc3RlZCwgZXZlbiBpZiBjYWxsZXIKKyAqIHdpbGwgb2NjdXB5 IGFsbCBhdmFpbGFibGUgd29ya2Vycy4KKyAqLwordm9pZAorQXV0b1ZhY3V1bVJlc2VydmVQYXJh bGxlbFdvcmtlcnMoaW50ICpud29ya2VycykKK3sKKwkvKiBPbmx5IGxlYWRlciB3b3JrZXIgY2Fu IGNhbGwgdGhpcyBmdW5jdGlvbi4gKi8KKwlBc3NlcnQoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2Vz cygpICYmICFJc1BhcmFsbGVsV29ya2VyKCkpOworCisJLyoKKwkgKiBXZSBjYW4gb25seSByZXNl cnZlIHdvcmtlcnMgYXQgdGhlIGJlZ2lubmluZyBvZiBwYXJhbGxlbCBpbmRleAorCSAqIHByb2Nl c3NpbmcsIHNvIHdlIG11c3Qgbm90IGhhdmUgYW55IHJlc2VydmVkIHdvcmtlcnMgcmlnaHQgbm93 LgorCSAqLworCUFzc2VydChhdl9ud29ya2Vyc19yZXNlcnZlZCA9PSAwKTsKKworCUxXTG9ja0Fj cXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwkvKiBQcm92aWRlIGFzIG1h bnkgd29ya2VycyBhcyB3ZSBjYW4uICovCisJKm53b3JrZXJzPSBNaW4oQXV0b1ZhY3V1bVNobWVt LT5hdl9mcmVlUGFyYWxsZWxXb3JrZXJzLCAqbndvcmtlcnMpOworCUF1dG9WYWN1dW1TaG1lbS0+ YXZfZnJlZVBhcmFsbGVsV29ya2VycyAtPSAqbndvcmtlcnM7CisKKwkvKiBSZW1lbWJlciBob3cg bWFueSB3b3JrZXJzIHdlIGhhdmUgcmVzZXJ2ZWQuICovCisJYXZfbndvcmtlcnNfcmVzZXJ2ZWQg Kz0gKm53b3JrZXJzOworCisJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7Cit9CisKKy8q CisgKiBMZWFkZXIgYXV0b3ZhY3V1bSBwcm9jZXNzIG11c3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGlu IG9yZGVyIHRvIHVwZGF0ZSBnbG9iYWwKKyAqIGF1dG92YWN1dW0gc3RhdGUsIHNvIG90aGVyIGxl YWRlcnMgd2lsbCBiZSBhYmxlIHRvIHVzZSB0aGVzZSBwYXJhbGxlbAorICogd29ya2Vycy4KKyAq CisgKiAnbndvcmtlcnMnIC0gaG93IG1hbnkgd29ya2VycyBjYWxsZXIgd2FudHMgdG8gcmVsZWFz ZS4KKyAqLwordm9pZAorQXV0b1ZhY3V1bVJlbGVhc2VQYXJhbGxlbFdvcmtlcnMoaW50IG53b3Jr ZXJzKQoreworCS8qIE9ubHkgbGVhZGVyIHdvcmtlciBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLiAq LworCUFzc2VydChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgIUlzUGFyYWxsZWxXb3Jr ZXIoKSk7CisKKwlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1Mb2NrLCBMV19FWENMVVNJVkUpOwor CisJLyoKKwkgKiBJZiB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgd29ya2VycyB3YXMg cmVkdWNlZCBkdXJpbmcgZXhlY3V0aW9uLAorCSAqIHdlIG11c3QgY2FwIGF2YWlsYWJsZSB3b3Jr ZXJzIG51bWJlciBieSBpdHMgbmV3IHZhbHVlLgorCSAqLworCUF1dG9WYWN1dW1TaG1lbS0+YXZf ZnJlZVBhcmFsbGVsV29ya2VycyA9CisJCU1pbihBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJh bGxlbFdvcmtlcnMgKyBud29ya2VycywKKwkJCUF1dG9WYWN1dW1TaG1lbS0+YXZfbWF4UGFyYWxs ZWxXb3JrZXJzKTsKKworCS8qIERvbid0IGhhdmUgdG8gcmVtZW1iZXIgdGhlc2Ugd29ya2VycyBh bnltb3JlLiAqLworCWF2X253b3JrZXJzX3Jlc2VydmVkIC09IG53b3JrZXJzOworCisJTFdMb2Nr UmVsZWFzZShBdXRvdmFjdXVtTG9jayk7Cit9CisKKy8qCisgKiBTYW1lIGFzIGFib3ZlLCBidXQg cmVsZWFzZSAqYWxsKiBwYXJhbGxlbCB3b3JrZXJzLCB0aGF0IHdlcmUgcmVzZXJ2ZWQgYnkKKyAq IGN1cnJlbnQgbGVhZGVyIGF1dG92YWN1dW0gcHJvY2Vzcy4KKyAqLworc3RhdGljIHZvaWQKK0F1 dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKHZvaWQpCit7CisJLyogT25seSBsZWFk ZXIgd29ya2VyIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uICovCisJQXNzZXJ0KEFtQXV0b1ZhY3V1 bVdvcmtlclByb2Nlc3MoKSAmJiAhSXNQYXJhbGxlbFdvcmtlcigpKTsKKworCWlmIChhdl9ud29y a2Vyc19yZXNlcnZlZCA+IDApCisJCUF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3JrZXJzKGF2 X253b3JrZXJzX3Jlc2VydmVkKTsKK30KKwogLyoKICAqIGF1dG92YWNfaW5pdAogICoJCVRoaXMg aXMgY2FsbGVkIGF0IHBvc3RtYXN0ZXIgaW5pdGlhbGl6YXRpb24uCkBAIC0zNDE4LDYgKzM1NDMs MTAgQEAgQXV0b1ZhY3V1bVNobWVtSW5pdCh2b2lkKQogCQlBc3NlcnQoIWZvdW5kKTsKIAogCQlB dXRvVmFjdXVtU2htZW0tPmF2X2xhdW5jaGVycGlkID0gMDsKKwkJQXV0b1ZhY3V1bVNobWVtLT5h dl9tYXhQYXJhbGxlbFdvcmtlcnMgPQorCQkJTWluKGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dv cmtlcnMsIG1heF93b3JrZXJfcHJvY2Vzc2VzKTsKKwkJQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVl UGFyYWxsZWxXb3JrZXJzID0KKwkJCUF1dG9WYWN1dW1TaG1lbS0+YXZfbWF4UGFyYWxsZWxXb3Jr ZXJzOwogCQlkY2xpc3RfaW5pdCgmQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlV29ya2Vycyk7CiAJ CWRsaXN0X2luaXQoJkF1dG9WYWN1dW1TaG1lbS0+YXZfcnVubmluZ1dvcmtlcnMpOwogCQlBdXRv VmFjdXVtU2htZW0tPmF2X3N0YXJ0aW5nV29ya2VyID0gTlVMTDsKQEAgLTM0OTksMyArMzYyOCwz NCBAQCBjaGVja19hdl93b3JrZXJfZ3Vjcyh2b2lkKQogCQkJCSBlcnJkZXRhaWwoIlRoZSBzZXJ2 ZXIgd2lsbCBvbmx5IHN0YXJ0IHVwIHRvIFwiYXV0b3ZhY3V1bV93b3JrZXJfc2xvdHNcIiAoJWQp IGF1dG92YWN1dW0gd29ya2VycyBhdCBhIGdpdmVuIHRpbWUuIiwKIAkJCQkJCSAgIGF1dG92YWN1 dW1fd29ya2VyX3Nsb3RzKSkpOwogfQorCisvKgorICogTWFrZSBzdXJlIHRoYXQgbnVtYmVyIG9m IGZyZWUgcGFyYWxsZWwgd29ya2VycyBjb3JyZXNwb25kcyB0byB0aGUKKyAqIGF1dG92YWN1dW1f bWF4X3BhcmFsbGVsX3dvcmtlcnMgcGFyYW1ldGVyIChhZnRlciBpdCB3YXMgY2hhbmdlZCkuCisg Ki8KK3N0YXRpYyB2b2lkCithZGp1c3RfZnJlZV9wYXJhbGxlbF93b3JrZXJzKGludCBwcmV2X21h eF9wYXJhbGxlbF93b3JrZXJzKQoreworCUxXTG9ja0FjcXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExX X0VYQ0xVU0lWRSk7CisKKwkvKgorCSAqIENhcCB0aGUgbnVtYmVyIG9mIGZyZWUgd29ya2VycyBi eSBuZXcgcGFyYW1ldGVyJ3MgdmFsdWUsIGlmIG5lZWRlZC4KKwkgKi8KKwlBdXRvVmFjdXVtU2ht ZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnMgPQorCQlNaW4oQXV0b1ZhY3V1bVNobWVtLT5hdl9m cmVlUGFyYWxsZWxXb3JrZXJzLAorCQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vycyk7 CisKKwlpZiAoYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA+IHByZXZfbWF4X3BhcmFs bGVsX3dvcmtlcnMpCisJeworCQkvKgorCQkgKiBJZiB1c2VyIHdhbnRzIHRvIGluY3JlYXNlIG51 bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMsIHdlCisJCSAqIG11c3QgaW5jcmVh c2UgbnVtYmVyIG9mIGZyZWUgd29ya2Vycy4KKwkJICovCisJCUF1dG9WYWN1dW1TaG1lbS0+YXZf ZnJlZVBhcmFsbGVsV29ya2VycyArPQorCQkJKGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtl cnMgLSBwcmV2X21heF9wYXJhbGxlbF93b3JrZXJzKTsKKwl9CisKKwlBdXRvVmFjdXVtU2htZW0t PmF2X21heFBhcmFsbGVsV29ya2VycyA9IGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM7 CisKKwlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9i YWxzLmMKaW5kZXggZDMxY2I0NWEwNTguLmZkMDBkNmY4OWRjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2ds b2JhbHMuYwpAQCAtMTQzLDYgKzE0Myw3IEBAIGludAkJCU5CdWZmZXJzID0gMTYzODQ7CiBpbnQJ CQlNYXhDb25uZWN0aW9ucyA9IDEwMDsKIGludAkJCW1heF93b3JrZXJfcHJvY2Vzc2VzID0gODsK IGludAkJCW1heF9wYXJhbGxlbF93b3JrZXJzID0gODsKK2ludAkJCWF1dG92YWN1dW1fbWF4X3Bh cmFsbGVsX3dvcmtlcnMgPSAwOwogaW50CQkJTWF4QmFja2VuZHMgPSAwOwogCiAvKiBHVUMgcGFy YW1ldGVycyBmb3IgdmFjdXVtICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCBjNjQ4NGFlYTA4Ny4u MmEwMzc0ODVkNWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtMzMyNiw5ICszMzI2LDEzIEBAIHNl dF9jb25maWdfd2l0aF9oYW5kbGUoY29uc3QgY2hhciAqbmFtZSwgY29uZmlnX2hhbmRsZSAqaGFu ZGxlLAogCSAqCiAJICogQWxzbyBhbGxvdyBub3JtYWwgc2V0dGluZyBpZiB0aGUgR1VDIGlzIG1h cmtlZCBHVUNfQUxMT1dfSU5fUEFSQUxMRUwuCiAJICoKLQkgKiBPdGhlciBjaGFuZ2VzIG1pZ2h0 IG5lZWQgdG8gYWZmZWN0IG90aGVyIHdvcmtlcnMsIHNvIGZvcmJpZCB0aGVtLgorCSAqIE90aGVy IGNoYW5nZXMgbWlnaHQgbmVlZCB0byBhZmZlY3Qgb3RoZXIgd29ya2Vycywgc28gZm9yYmlkIHRo ZW0uIE5vdGUsCisJICogdGhhdCBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlciBpcyBhbiBleGNl cHRpb24sIGJlY2F1c2Ugb25seQorCSAqIGNvc3QtYmFzZWQgZGVsYXlzIG5lZWQgdG8gYmUgYWZm ZWN0ZWQgYWxzbyB0byBwYXJhbGxlbCB2YWN1dW0gd29ya2VycywKKwkgKiBhbmQgd2Ugd2lsbCBo YW5kbGUgaXQgZWxzZXdoZXJlIGlmIGFwcHJvcHJpYXRlLgogCSAqLwotCWlmIChJc0luUGFyYWxs ZWxNb2RlKCkgJiYgY2hhbmdlVmFsICYmIGFjdGlvbiAhPSBHVUNfQUNUSU9OX1NBVkUgJiYKKwlp ZiAoSXNJblBhcmFsbGVsTW9kZSgpICYmICFBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYg Y2hhbmdlVmFsICYmCisJCWFjdGlvbiAhPSBHVUNfQUNUSU9OX1NBVkUgJiYKIAkJKHJlY29yZC0+ ZmxhZ3MgJiBHVUNfQUxMT1dfSU5fUEFSQUxMRUwpID09IDApCiAJewogCQllcmVwb3J0KGVsZXZl bCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0 IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKaW5kZXggMTEyODE2 N2MwMjUuLjZjMzgyNzVkMzBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0 ZXJzLmRhdApAQCAtMTU0LDYgKzE1NCwxNSBAQAogICBtYXggPT4gJzIwMDAwMDAwMDAnLAogfSwK IAoreyBuYW1lID0+ICdhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzJywgdHlwZSA9PiAn aW50JywgY29udGV4dCA9PiAnUEdDX1NJR0hVUCcsIGdyb3VwID0+ICdWQUNVVU1fQVVUT1ZBQ1VV TScsCisgIHNob3J0X2Rlc2MgPT4gJ01heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1 dW0gd29ya2VycywgdGhhdCBjYW4gYmUgdGFrZW4gZnJvbSBiZ3dvcmtlcnMgcG9vbC4nLAorICBs b25nX2Rlc2MgPT4gJ1RoaXMgcGFyYW1ldGVyIGlzIGNhcHBlZCBieSAibWF4X3dvcmtlcl9wcm9j ZXNzZXMiIChub3QgYnkgImF1dG92YWN1dW1fbWF4X3dvcmtlcnMiISkuJywKKyAgdmFyaWFibGUg PT4gJ2F1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMnLAorICBib290X3ZhbCA9PiAnMics CisgIG1pbiA9PiAnMCcsCisgIG1heCA9PiAnTUFYX0JBQ0tFTkRTJywKK30sCisKIHsgbmFtZSA9 PiAnYXV0b3ZhY3V1bV9tYXhfd29ya2VycycsIHR5cGUgPT4gJ2ludCcsIGNvbnRleHQgPT4gJ1BH Q19TSUdIVVAnLCBncm91cCA9PiAnVkFDVVVNX0FVVE9WQUNVVU0nLAogICBzaG9ydF9kZXNjID0+ ICdTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzaW11bHRhbmVvdXNseSBydW5uaW5nIGF1dG92 YWN1dW0gd29ya2VyIHByb2Nlc3Nlcy4nLAogICB2YXJpYWJsZSA9PiAnYXV0b3ZhY3V1bV9tYXhf d29ya2VycycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1w bGUKaW5kZXggZGM5ZTIyNTVmOGEuLjg2YzY3Yjc5MGIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC02OTEsNiArNjkxLDggQEAKICNhdXRv dmFjdXVtX3dvcmtlcl9zbG90cyA9IDE2ICAgICAgICAgICAjIGF1dG92YWN1dW0gd29ya2VyIHNs b3RzIHRvIGFsbG9jYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjYXV0b3ZhY3V1bV9tYXhfd29ya2VycyA9IDMg ICAgICAgICAgICAgIyBtYXggbnVtYmVyIG9mIGF1dG92YWN1dW0gc3VicHJvY2Vzc2VzCisjYXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDIgICAgIyBkaXNhYmxlZCBieSBkZWZhdWx0 IGFuZCBsaW1pdGVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBtYXhfd29ya2VyX3Byb2Nlc3NlcwogI2F1dG92YWN1dW1fbmFwdGltZSA9IDFtaW4gICAgICAg ICAgICAgICMgdGltZSBiZXR3ZWVuIGF1dG92YWN1dW0gcnVucwogI2F1dG92YWN1dW1fdmFjdXVt X3RocmVzaG9sZCA9IDUwICAgICAgICMgbWluIG51bWJlciBvZiByb3cgdXBkYXRlcyBiZWZvcmUK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHZhY3V1bQpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jCmluZGV4IDUxODA2NTk3MDM3Li42MTcwNDM2YjM0MSAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29t cGxldGUuaW4uYwpAQCAtMTQyMyw2ICsxNDIzLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0 IHRhYmxlX3N0b3JhZ2VfcGFyYW1ldGVyc1tdID0gewogCSJhdXRvdmFjdXVtX211bHRpeGFjdF9m cmVlemVfbWF4X2FnZSIsCiAJImF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlIiwK IAkiYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZSIsCisJImF1dG92YWN1dW1f cGFyYWxsZWxfd29ya2VycyIsCiAJImF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXkiLAogCSJh dXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0IiwKIAkiYXV0b3ZhY3V1bV92YWN1dW1faW5zZXJ0 X3NjYWxlX2ZhY3RvciIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3Ny Yy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IDlhN2Q3MzNkZGVmLi42MDVkMDgyOWIwMyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2Fk bWluLmgKQEAgLTE3OCw2ICsxNzgsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50IE1heEJhY2tl bmRzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNYXhDb25uZWN0aW9uczsKIGV4dGVybiBQR0RM TElNUE9SVCBpbnQgbWF4X3dvcmtlcl9wcm9jZXNzZXM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50 IG1heF9wYXJhbGxlbF93b3JrZXJzOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBhdXRvdmFjdXVt X21heF9wYXJhbGxlbF93b3JrZXJzOwogCiBleHRlcm4gUEdETExJTVBPUlQgaW50IGNvbW1pdF90 aW1lc3RhbXBfYnVmZmVyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbXVsdGl4YWN0X21lbWJl cl9idWZmZXJzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaAppbmRleCAwMjNhYzZkNWZh OC4uOWQ1NThjOWMwNTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oCkBAIC02NSw2 ICs2NSwxMCBAQCBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBBdXRvVmFjV29ya2VyTWFpbihjb25z dCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydAogZXh0ZXJuIGJvb2wgQXV0b1ZhY3V1 bVJlcXVlc3RXb3JrKEF1dG9WYWN1dW1Xb3JrSXRlbVR5cGUgdHlwZSwKIAkJCQkJCQkJICBPaWQg cmVsYXRpb25JZCwgQmxvY2tOdW1iZXIgYmxrbm8pOwogCisvKiBwYXJhbGxlbCBhdXRvdmFjdXVt IHN0dWZmICovCitleHRlcm4gdm9pZAlBdXRvVmFjdXVtUmVzZXJ2ZVBhcmFsbGVsV29ya2Vycyhp bnQgKm53b3JrZXJzKTsKK2V4dGVybiB2b2lkIEF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3Jr ZXJzKGludCBud29ya2Vycyk7CisKIC8qIHNoYXJlZCBtZW1vcnkgc3R1ZmYgKi8KIGV4dGVybiBT aXplIEF1dG9WYWN1dW1TaG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBBdXRvVmFjdXVtU2ht ZW1Jbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMv aW5jbHVkZS91dGlscy9yZWwuaAppbmRleCA4MDI4NjA3NmExMS4uZTg3OWZkY2ZjNjkgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3Jl bC5oCkBAIC0zMTEsNiArMzExLDEzIEBAIHR5cGVkZWYgc3RydWN0IEZvcmVpZ25LZXlDYWNoZUlu Zm8KIHR5cGVkZWYgc3RydWN0IEF1dG9WYWNPcHRzCiB7CiAJYm9vbAkJZW5hYmxlZDsKKworCS8q CisJICogTWF4IG51bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMuIElmIHZhbHVl IGlzIDAgdGhlbiBwYXJhbGxlbAorCSAqIGRlZ3JlZSB3aWxsIGNvbXB1dGVkIGJhc2VkIG9uIG51 bWJlciBvZiBpbmRleGVzLgorCSAqLworCWludAkJCWF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vy czsKKwogCWludAkJCXZhY3V1bV90aHJlc2hvbGQ7CiAJaW50CQkJdmFjdXVtX21heF90aHJlc2hv bGQ7CiAJaW50CQkJdmFjdXVtX2luc190aHJlc2hvbGQ7Ci0tIAoyLjQzLjAKCg== --00000000000030623906444456b2 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0002-Logging-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v16-0002-Logging-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mibugxav2 RnJvbSA1Y2FjYzkxMDMwMDYzYTE1MTRlNzRlOWFmODY0ODY4MDE0ZGYxNjU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjA3OjQ3ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTYgMi80XSBMb2dnaW5nIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgfCAyNyArKysrKysrKysrKysrKysrKysrKysr KysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgfCAyMCArKysrKysr KysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggICAgICAgICB8IDE2 ICsrKysrKysrKysrKysrLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg fCAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA2NWJiMDU2OGE4Ni4uZWE3 YTE4ZDRkNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTM0Nyw2ICsz NDcsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogCiAJLyogSW5zdHJ1bWVudGF0aW9u IGNvdW50ZXJzICovCiAJaW50CQkJbnVtX2luZGV4X3NjYW5zOworCisJLyoKKwkgKiBOdW1iZXIg b2YgcGxhbm5lZCBhbmQgYWN0dWFsbHkgbGF1bmNoZWQgcGFyYWxsZWwgd29ya2VycyBmb3IgYWxs IGluZGV4CisJICogc2NhbnMsIG9yIE5VTEwKKwkgKi8KKwlQVldvcmtlcnNVc2FnZSAqd29ya2Vy c191c2FnZTsKIAkvKiBDb3VudGVycyB0aGF0IGZvbGxvdyBhcmUgb25seSBmb3Igc2Nhbm5lZF9w YWdlcyAqLwogCWludDY0CQl0dXBsZXNfZGVsZXRlZDsgLyogIyBkZWxldGVkIGZyb20gdGFibGUg Ki8KIAlpbnQ2NAkJdHVwbGVzX2Zyb3plbjsJLyogIyBuZXdseSBmcm96ZW4gKi8KQEAgLTcwMCw2 ICs3MDYsMTYgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFy YW1zIHBhcmFtcywKIAkJaW5kbmFtZXMgPSBwYWxsb2Moc2l6ZW9mKGNoYXIgKikgKiB2YWNyZWwt Pm5pbmRleGVzKTsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCB2YWNyZWwtPm5pbmRleGVzOyBpKysp CiAJCQlpbmRuYW1lc1tpXSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodmFjcmVs LT5pbmRyZWxzW2ldKSk7CisKKwkJLyoKKwkJICogQWxsb2NhdGUgc3BhY2UgZm9yIHdvcmtlcnMg dXNhZ2Ugc3RhdGlzdGljcy4gVGh1cywgd2UgZXhwbGljaXRseQorCQkgKiBtYWtlIGNsZWFyIHRo YXQgc3VjaCBzdGF0aXN0aWNzIG11c3QgYmUgYWNjdW11bGF0ZWQuIEZvciBub3csIHRoaXMKKwkJ ICogaXMgdXNlZCBvbmx5IGJ5IGF1dG92YWN1dW0gbGVhZGVyIHdvcmtlciwgYmVjYXVzZSBpdCBt dXN0IGxvZyBpdCBpbgorCQkgKiB0aGUgZW5kIG9mIHRhYmxlIHByb2Nlc3NpbmcuCisJCSAqLwor CQl2YWNyZWwtPndvcmtlcnNfdXNhZ2UgPSBBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgPwor CQkJKFBWV29ya2Vyc1VzYWdlICopIHBhbGxvYzAoc2l6ZW9mKFBWV29ya2Vyc1VzYWdlKSkgOgor CQkJTlVMTDsKIAl9CiAKIAkvKgpAQCAtMTA5OSw2ICsxMTE1LDExIEBAIGhlYXBfdmFjdXVtX3Jl bChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJCQkJCQkJIG9yaWdf cmVsX3BhZ2VzID09IDAgPyAxMDAuMCA6CiAJCQkJCQkJIDEwMC4wICogdmFjcmVsLT5scGRlYWRf aXRlbV9wYWdlcyAvIG9yaWdfcmVsX3BhZ2VzLAogCQkJCQkJCSB2YWNyZWwtPmxwZGVhZF9pdGVt cyk7CisJCQlpZiAodmFjcmVsLT53b3JrZXJzX3VzYWdlKQorCQkJCWFwcGVuZFN0cmluZ0luZm8o JmJ1ZiwKKwkJCQkJCQkJIF8oInBhcmFsbGVsIGluZGV4IHZhY3V1bS9jbGVhbnVwIDogd29ya2Vy cyBwbGFubmVkID0gJWQsIHdvcmtlcnMgbGF1bmNoZWQgPSAlZFxuIiksCisJCQkJCQkJCSB2YWNy ZWwtPndvcmtlcnNfdXNhZ2UtPm5wbGFubmVkLAorCQkJCQkJCQkgdmFjcmVsLT53b3JrZXJzX3Vz YWdlLT5ubGF1bmNoZWQpOwogCQkJZm9yIChpbnQgaSA9IDA7IGkgPCB2YWNyZWwtPm5pbmRleGVz OyBpKyspCiAJCQl7CiAJCQkJSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCA9IHZhY3JlbC0+ aW5kc3RhdHNbaV07CkBAIC0yNjU5LDcgKzI2ODAsOCBAQCBsYXp5X3ZhY3V1bV9hbGxfaW5kZXhl cyhMVlJlbFN0YXRlICp2YWNyZWwpCiAJewogCQkvKiBPdXRzb3VyY2UgZXZlcnl0aGluZyB0byBw YXJhbGxlbCB2YXJpYW50ICovCiAJCXBhcmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9pbmRleGVz KHZhY3JlbC0+cHZzLCBvbGRfbGl2ZV90dXBsZXMsCi0JCQkJCQkJCQkJCXZhY3JlbC0+bnVtX2lu ZGV4X3NjYW5zKTsKKwkJCQkJCQkJCQkJdmFjcmVsLT5udW1faW5kZXhfc2NhbnMsCisJCQkJCQkJ CQkJCXZhY3JlbC0+d29ya2Vyc191c2FnZSk7CiAKIAkJLyoKIAkJICogRG8gYSBwb3N0Y2hlY2sg dG8gY29uc2lkZXIgYXBwbHlpbmcgd3JhcGFyb3VuZCBmYWlsc2FmZSBub3cuICBOb3RlCkBAIC0z MDkxLDcgKzMxMTMsOCBAQCBsYXp5X2NsZWFudXBfYWxsX2luZGV4ZXMoTFZSZWxTdGF0ZSAqdmFj cmVsKQogCQkvKiBPdXRzb3VyY2UgZXZlcnl0aGluZyB0byBwYXJhbGxlbCB2YXJpYW50ICovCiAJ CXBhcmFsbGVsX3ZhY3V1bV9jbGVhbnVwX2FsbF9pbmRleGVzKHZhY3JlbC0+cHZzLCByZWx0dXBs ZXMsCiAJCQkJCQkJCQkJCXZhY3JlbC0+bnVtX2luZGV4X3NjYW5zLAotCQkJCQkJCQkJCQllc3Rp bWF0ZWRfY291bnQpOworCQkJCQkJCQkJCQllc3RpbWF0ZWRfY291bnQsCisJCQkJCQkJCQkJCXZh Y3JlbC0+d29ya2Vyc191c2FnZSk7CiAJfQogCiAJLyogUmVzZXQgdGhlIHByb2dyZXNzIGNvdW50 ZXJzICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCA2ZTJjMjJiZTJl ZS4uZWM3YjcxNzBiZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBh cmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAt MjI3LDcgKzIyNyw3IEBAIHN0cnVjdCBQYXJhbGxlbFZhY3V1bVN0YXRlCiBzdGF0aWMgaW50CXBh cmFsbGVsX3ZhY3V1bV9jb21wdXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5k ZXhlcywgaW50IG5yZXF1ZXN0ZWQsCiAJCQkJCQkJCQkJCWJvb2wgKndpbGxfcGFyYWxsZWxfdmFj dXVtKTsKIHN0YXRpYyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBh cmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FucywKLQkJCQkJCQkJCQkJ CWJvb2wgdmFjdXVtKTsKKwkJCQkJCQkJCQkJCWJvb2wgdmFjdXVtLCBQVldvcmtlcnNVc2FnZSAq d3VzYWdlKTsKIHN0YXRpYyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX3NhZmVfaW5kZXhl cyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMpOwogc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFjdXVt X3Byb2Nlc3NfdW5zYWZlX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzKTsKIHN0YXRp YyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX29uZV9pbmRleChQYXJhbGxlbFZhY3V1bVN0 YXRlICpwdnMsIFJlbGF0aW9uIGluZHJlbCwKQEAgLTUwMiw3ICs1MDIsNyBAQCBwYXJhbGxlbF92 YWN1dW1fcmVzZXRfZGVhZF9pdGVtcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMpCiAgKi8KIHZv aWQKIHBhcmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3Rh dGUgKnB2cywgbG9uZyBudW1fdGFibGVfdHVwbGVzLAotCQkJCQkJCQkJaW50IG51bV9pbmRleF9z Y2FucykKKwkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsIFBWV29ya2Vyc1VzYWdlICp3dXNh Z2UpCiB7CiAJQXNzZXJ0KCFJc1BhcmFsbGVsV29ya2VyKCkpOwogCkBAIC01MTMsNyArNTEzLDcg QEAgcGFyYWxsZWxfdmFjdXVtX2J1bGtkZWxfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0 ZSAqcHZzLCBsb25nIG51bV90YWJsZV90dXAKIAlwdnMtPnNoYXJlZC0+cmVsdHVwbGVzID0gbnVt X3RhYmxlX3R1cGxlczsKIAlwdnMtPnNoYXJlZC0+ZXN0aW1hdGVkX2NvdW50ID0gdHJ1ZTsKIAot CXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5z LCB0cnVlKTsKKwlwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhwdnMsIG51bV9p bmRleF9zY2FucywgdHJ1ZSwgd3VzYWdlKTsKIH0KIAogLyoKQEAgLTUyMSw3ICs1MjEsOCBAQCBw YXJhbGxlbF92YWN1dW1fYnVsa2RlbF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpw dnMsIGxvbmcgbnVtX3RhYmxlX3R1cAogICovCiB2b2lkCiBwYXJhbGxlbF92YWN1dW1fY2xlYW51 cF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVtX3RhYmxlX3R1 cGxlcywKLQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsIGJvb2wgZXN0aW1hdGVkX2NvdW50 KQorCQkJCQkJCQkJaW50IG51bV9pbmRleF9zY2FucywgYm9vbCBlc3RpbWF0ZWRfY291bnQsCisJ CQkJCQkJCQlQVldvcmtlcnNVc2FnZSAqd3VzYWdlKQogewogCUFzc2VydCghSXNQYXJhbGxlbFdv cmtlcigpKTsKIApAQCAtNTMzLDcgKzUzNCw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9jbGVhbnVwX2Fs bF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgbG9uZyBudW1fdGFibGVfdHVwCiAJ cHZzLT5zaGFyZWQtPnJlbHR1cGxlcyA9IG51bV90YWJsZV90dXBsZXM7CiAJcHZzLT5zaGFyZWQt PmVzdGltYXRlZF9jb3VudCA9IGVzdGltYXRlZF9jb3VudDsKIAotCXBhcmFsbGVsX3ZhY3V1bV9w cm9jZXNzX2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5zLCBmYWxzZSk7CisJcGFyYWxs ZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMocHZzLCBudW1faW5kZXhfc2NhbnMsIGZhbHNl LCB3dXNhZ2UpOwogfQogCiAvKgpAQCAtNjE4LDcgKzYxOSw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9j b21wdXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywgaW50IG5yZXF1 ZXN0ZWQsCiAgKi8KIHN0YXRpYyB2b2lkCiBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5k ZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5kZXhfc2NhbnMsCi0JCQkJ CQkJCQlib29sIHZhY3V1bSkKKwkJCQkJCQkJCWJvb2wgdmFjdXVtLCBQVldvcmtlcnNVc2FnZSAq d3VzYWdlKQogewogCWludAkJCW53b3JrZXJzOwogCVBWSW5kVmFjU3RhdHVzIG5ld19zdGF0dXM7 CkBAIC03NDIsNiArNzQzLDEzIEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVz KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAJCQkJCQkJCQkg ImxhdW5jaGVkICVkIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzIGZvciBpbmRleCBjbGVhbnVwIChw bGFubmVkOiAlZCkiLAogCQkJCQkJCQkJIHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQpLAog CQkJCQkJCXB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQsIG53b3JrZXJzKSkpOworCisJCS8q IFJlbWVtYmVyIHRoZXNlIHZhbHVlcywgaWYgd2UgYXNrZWQgdG8uICovCisJCWlmICh3dXNhZ2Ug IT0gTlVMTCkKKwkJeworCQkJd3VzYWdlLT5ubGF1bmNoZWQgKz0gcHZzLT5wY3h0LT5ud29ya2Vy c19sYXVuY2hlZDsKKwkJCXd1c2FnZS0+bnBsYW5uZWQgKz0gbndvcmtlcnM7CisJCX0KIAl9CiAK IAkvKiBWYWN1dW0gdGhlIGluZGV4ZXMgdGhhdCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IG9ubHkgbGVh ZGVyIHByb2Nlc3MgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5o IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKaW5kZXggMWYzMjkwYzdmYmYuLjkwNzA5 Y2EzMTA3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaAorKysgYi9z cmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaApAQCAtMzAwLDYgKzMwMCwxNiBAQCB0eXBlZGVm IHN0cnVjdCBWYWNEZWFkSXRlbXNJbmZvCiAJaW50NjQJCW51bV9pdGVtczsJCS8qIGN1cnJlbnQg IyBvZiBlbnRyaWVzICovCiB9IFZhY0RlYWRJdGVtc0luZm87CiAKKy8qCisgKiBQVldvcmtlcnNV c2FnZSBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdG90YWwgbnVtYmVyIG9mIGxhdW5jaGVkIGFu ZCBwbGFubmVkCisgKiB3b3JrZXJzIGR1cmluZyBwYXJhbGxlbCB2YWN1dW0uCisgKi8KK3R5cGVk ZWYgc3RydWN0IFBWV29ya2Vyc1VzYWdlCit7CisJaW50CQkJbmxhdW5jaGVkOworCWludAkJCW5w bGFubmVkOworfSBQVldvcmtlcnNVc2FnZTsKKwogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGV4dGVy biBQR0RMTElNUE9SVCBpbnQgZGVmYXVsdF9zdGF0aXN0aWNzX3RhcmdldDsJLyogUEdETExJTVBP UlQgZm9yIFBvc3RHSVMgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgdmFjdXVtX2ZyZWV6ZV9t aW5fYWdlOwpAQCAtMzk0LDExICs0MDQsMTMgQEAgZXh0ZXJuIFRpZFN0b3JlICpwYXJhbGxlbF92 YWN1dW1fZ2V0X2RlYWRfaXRlbXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLAogZXh0ZXJuIHZv aWQgcGFyYWxsZWxfdmFjdXVtX3Jlc2V0X2RlYWRfaXRlbXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAq cHZzKTsKIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9pbmRleGVzKFBh cmFsbGVsVmFjdXVtU3RhdGUgKnB2cywKIAkJCQkJCQkJCQkJCWxvbmcgbnVtX3RhYmxlX3R1cGxl cywKLQkJCQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMpOworCQkJCQkJCQkJCQkJaW50IG51 bV9pbmRleF9zY2FucywKKwkJCQkJCQkJCQkJCVBWV29ya2Vyc1VzYWdlICp3dXNhZ2UpOwogZXh0 ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzLAogCQkJCQkJCQkJCQkJbG9uZyBudW1fdGFibGVfdHVwbGVzLAogCQkJCQkJ CQkJCQkJaW50IG51bV9pbmRleF9zY2FucywKLQkJCQkJCQkJCQkJCWJvb2wgZXN0aW1hdGVkX2Nv dW50KTsKKwkJCQkJCQkJCQkJCWJvb2wgZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJCQkJCQkJUFZX b3JrZXJzVXNhZ2UgKnd1c2FnZSk7CiBleHRlcm4gdm9pZCBwYXJhbGxlbF92YWN1dW1fbWFpbihk c21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpOwogCiAvKiBpbiBjb21tYW5kcy9hbmFseXpl LmMgKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMjdhNGQxMzE4OTcuLmE4MzhiMDg4 NWM2IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjM3OCw2ICsyMzc4LDcgQEAgUHVs bEZpbHRlck9wcwogUHVzaEZpbHRlcgogUHVzaEZpbHRlck9wcwogUHVzaEZ1bmN0aW9uCitQVldv cmtlcnNVc2FnZQogUHlDRnVuY3Rpb24KIFB5TWV0aG9kRGVmCiBQeU1vZHVsZURlZgotLSAKMi40 My4wCgo= --00000000000030623906444456b2--