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 1w4kWy-002W7x-2e for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Mar 2026 19:01: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 1w4kWx-001kW2-0n for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Mar 2026 19:01:39 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w4kWw-001kVu-2G for pgsql-hackers@lists.postgresql.org; Mon, 23 Mar 2026 19:01:39 +0000 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w4kWu-00000000fXm-3rSU for pgsql-hackers@postgresql.org; Mon, 23 Mar 2026 19:01:37 +0000 Received: by mail-ej1-x635.google.com with SMTP id a640c23a62f3a-b9382e59c0eso492174566b.0 for ; Mon, 23 Mar 2026 12:01:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774292494; cv=none; d=google.com; s=arc-20240605; b=JuQLoGyOX1+9A4ss/0XC6vagX5SN1fv7ChG5w8cixcLtMwdOJceZgEcW18pc/e1xwv F4pdwYxF3UJpjWonmHV7JfdR1pGb4HTwT0eUK+CfADnxPa2hLl/r64Tk1TzTgX35m4AM ai7k8he3mh0cxCO4LGLZZYo8NPCpzZOyias6EhcVrYZX8AyXP3imBZQ6VlIqsAjFUk7h g8IVmEVgsJAR5J/CF3RYU0ntGZPHnmrRV5HSmoPp+qGmgUTqY2wBgXD9aqb3O5LGR+eK /NNyeRZlXaZ1HvbHY5ibBSf8YRd3IL8lVGEtXMBdRs9no4xlaCQHPdcnqT63HLCBocrt lxZQ== 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=ROMhESsP9BLewOaZI1MI0KDODPtz/rGwJsrnjt+0Cnk=; fh=z7XUYyYbj4BYiNKY/um/IasUYZOYXvVZ3QQlq9LC81M=; b=XZV+DS5li9zU32s42tZBrxTliPwkdpJqLcO6aqM13cN60OHt3oSiEpEUabhWf6FnWw GdlK8yAL872Ew06Ns1m0rixFY9rVZZDXTtKmBYakajYzzWe9SS+1YmjBA5woc0J/+MjS NZTIEbChwS1GA79Df/uuReLeC2bxFqUg9hYcroZAxLibNORid5RPPr5qPkfB6QLtNGkf 8xe072y5GPFhePS9hLG82cORqs+xiRsVOL6ycAV2X6g/XtA/pK4UghSJo9B3cW/dJ/IL M5OdhxII0cW+4qYZZ4sZJzLpQuGsrw+NzoFm5wjoLwWSRpu00QULqt72G2hpwepJgBJm USJQ==; darn=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=20251104; t=1774292494; x=1774897294; darn=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=ROMhESsP9BLewOaZI1MI0KDODPtz/rGwJsrnjt+0Cnk=; b=rnQqLV4AK2gH79+NTo7BlZMFHwfC3rRKzBfW5zICDxjUGgZNc7Nv3LOLGG8YunpyCk qgyalxY4nSMaZKUjRWZRrLe+tzaU8ykpYU/EqWag9uIEXx+HQ+g/f6KgBimDGL1vPuRn XBIpc2VhvW1Nev0GdqeOX3lCybVk+QIAb2QH9qrqSrx3xgk4nwQVtbnaGIzFjcq9gdlJ Qk2KaoYyX/BLKvgdJ2Cz6QPWjtpbAWef0F4QW10y0N4j9gZGI8ZJXE2KiKGnEOjxh4b+ J4M1DnPzr8Cj/1MG5iujkLvMs08oB/UjVL36z+PVt44AWhpiLsSKdJhX9tfZuWT8l7tZ l73w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774292494; x=1774897294; 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=ROMhESsP9BLewOaZI1MI0KDODPtz/rGwJsrnjt+0Cnk=; b=KJAb6EFb1178MC+qQbbAZYdUYtR7FJhVyXOQW0i0q3MLhwUdRivam/M5IfOy5+ygrn C/U9EaWjxMjKJbQIKJP/smIRP49s905olO1qFfDMUyhh55mTdUnuUQ7oH7O8srCPhd3B 7F3NKDb+p/5gzV/JEQcEmLoUs5KSw3GXIet/OEyO8Q71S+IkcyEPLAG6k8EIES2Ym5cx jL87L6a4yY0aLA19hoaSXenHuS9TgMGIhS115mhiYaPz0ytb6EuVFRFj4fQ4uZSFUKda s1n8TwbPue6xifYQY+yj1OoqD6cK3ww+gPNsg9Xw62jC/bfVORU7dVIjGb4lyrmmeCch iolQ== X-Forwarded-Encrypted: i=1; AJvYcCW7Pj8QJn140YuEQo9BTT+XmUma4hdhkkDBJxPF9REl5LWNKP8KPnFANVCaqKaAHF50UljTem0lOs4AXl+J@postgresql.org X-Gm-Message-State: AOJu0YzUAtIfs/6jPxfHvCM2rQFGUlkk+OreZeLp4pvtX/fKyLBK+vPW cyu+fCTuBWAZLwNwql7YHpOlJredNORvT+x7dBrGJ5dwzleNDD6mVp/gbJDSiQqNPA9Gg6T0u6e 9ubNUwzsd5jVkBXTawBm72wk2cAhg5/M= X-Gm-Gg: ATEYQzxIl/KBzxZva7B6meNAvSaaMPeEbSCjYLTJIYtC/+bjcmiMW7tXHC8pzzfUe5P ogzH/0t6tmhfhNuCrA1hPfG5lzQffbqvNnoBwujS/MxOe2GnPjDybdJR2GGRz89RgswzfC2GJes p9I8+073r5pceV8coIc/ciLLVlh3XKf31CHTic5mPd9TnSD9puCN3Ukf5CK7CEdPPgtIiZugJ7l auq7Nse3wrb6Agkl8nDfK82WWRtlJyhPKabqeTGGR3rnjzHnJuiEsEcMrJL4kVvtKF0nWwSLcNm U20zOg== X-Received: by 2002:a17:906:478d:b0:b98:6177:2eff with SMTP id a640c23a62f3a-b9861777772mr602306766b.41.1774292494311; Mon, 23 Mar 2026 12:01:34 -0700 (PDT) MIME-Version: 1.0 References: <3ca1e398-c787-47e9-9afc-8e298b94dac0@app.fastmail.com> In-Reply-To: From: Sami Imseih Date: Mon, 23 Mar 2026 14:01:22 -0500 X-Gm-Features: AQROBzB6rXAKLTZG6TLPPzW1f1RYJ9w7_riyCkVi4j8KD9VNZa5pXRDLx4nJhTs Message-ID: Subject: Re: another autovacuum scheduling thread To: Nathan Bossart Cc: Bharath Rupireddy , David Rowley , Greg Burd , Robert Haas , Robert Treat , Jeremy Schneider , pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000da42dc064db5a982" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000da42dc064db5a982 Content-Type: text/plain; charset="UTF-8" > > 4/ Is adding a reason (such as how each of these scores influenced the > > autovacuum to pick this table) to vacuum progress reporting a good > > idea? This helps answer some of the why and how questions when the > > autovacuum is in progress. > > Yeah, adding that in addition to a system view, etc. could be nice. I'm a > little hesitant to start making big additions to the patch at this point, > but I can give it a whirl if folks think something like this should be > added for v19. Adding a system view will be nice. I am attaching a version I used in earlier testing (cleaned up with docs), if we are inclined to get this in. I think it will be useful. This follows the same setup as do_autovacuum(); scanning pg_class, filtering relation kinds and temp tables, and computing effective_multixact_freeze_max_age are done in the SQL-callable function, while another wrapper compute_autovac_score() handles the per-relation setup (snapshotting recentXid/recentMulti, fetching reloptions and the pgstat entry) before calling relation_needs_vacanalyze(). The function holds an AccessShareLock on pg_class for the duration of the scan, so this should be relatively lightweight. ``` test=# select * from pg_stat_autovacuum_priority order by score desc ; relid | schemaname | relname | dovacuum | doanalyze | wraparound | score -------+--------------------+-----------------------------+----------+-----------+------------+----------------------- 16400 | public | pgbench_accounts | t | f | t | 1.055318563196673e+16 16404 | public | pgbench_branches | t | t | t | 442.01666666666665 16396 | public | pgbench_tellers | t | t | t | 172.97333333333333 16393 | public | pgbench_history | t | t | t | 4.703261221642761 14227 | pg_toast | pg_toast_14224 | t | f | t | 2.08555407 ``` Note in the test above, I used xid_wraparound to calculate a score with the failsafe POW() adjustment. Notice that this is a very high score being emitted as discussed earlier [1]. This is documented in v14 as "scaled aggressively so that the table has a decent chance of sorting to the top of the list." Maybe the doc should say something like " scaled aggressively, which can produce very large values, to ensure the table sorts to the top of the list." [1] [https://www.postgresql.org/message-id/CAA5RZ0vfhAnFBp4HrBQc%2BALaJMx6vCvMtnBi39ST_4nH9PZEjA%40mail.gmail.com] -- Sami Imseih Amazon Web Services (AWS) --000000000000da42dc064db5a982 Content-Type: application/octet-stream; name="v1-0001-Add-pg_stat_autovacuum_priority-view.patch" Content-Disposition: attachment; filename="v1-0001-Add-pg_stat_autovacuum_priority-view.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn3jx81c0 RnJvbSAyZTA4ZjAyMmZlZjE3N2M1ODY4MzhkMWFkYjNmMTQyMDJlYTQ4NTc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEltc2VpaCA8c2FtaW1zZWloQGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAyMyBNYXIgMjAyNiAxNzowMzo1OSArMDAwMApTdWJqZWN0OiBbUEFUQ0ggdjEgMS8x XSBBZGQgcGdfc3RhdF9hdXRvdmFjdXVtX3ByaW9yaXR5IHZpZXcKCkFkZCBhIG5ldyBzeXN0ZW0g dmlldyB0aGF0IGV4cG9zZXMgdGhlIGF1dG92YWN1dW0KcHJpb3JpdHkgc2NvcmUgZm9yIGVhY2gg cmVsYXRpb24gaW4gdGhlIGN1cnJlbnQKZGF0YWJhc2UuICBUaGlzIGFsbG93cyB1c2VycyB0byBp bnNwZWN0IGVhY2ggdGFibGUncwphdXRvdmFjdXVtIGVsaWdpYmlsaXR5IGFuZCBwcmlvcml0eS4K ClRoZSBjb2x1bW5zIHJldHVybmVkIGFyZTogcmVsaWQsIHNjaGVtYW5hbWUsIHJlbG5hbWUsCm5l ZWRzX3ZhY3V1bSwgbmVlZHNfYW5hbHl6ZSwgd3JhcGFyb3VuZCwgYW5kIHNjb3JlLgoKVGhlIHZp ZXcgcmVzdWx0cyBhcmUgYmFzZWQgb24gdGhlIG91dHB1dCBvZgpyZWxhdGlvbl9uZWVkc192YWNh bmFseXplKCksIGluIHdoaWNoIHRoZSBzYW1lIHNldHVwCmFzIGRvX2F1dG92YWN1dW0oKSBpcyBw ZXJmb3JtZWQgYmVmb3JlIGNhbGxpbmcKcmVsYXRpb25fbmVlZHNfdmFjYW5hbHl6ZSgpLiAgcGdf Y2xhc3MgaXMgc2Nhbm5lZCB3aXRoCmFuIEFjY2Vzc1NoYXJlTG9jaywgc28gaXQgaXMgcmVsYXRp dmVseSBsaWdodHdlaWdodC4KClVubGlrZSBkb19hdXRvdmFjdXVtKCksIHdlIGRvbid0IG5lZWQg dG8gZGVyaXZlCnBnX3RvYXN0IHJlbGF0aW9uc2hpcHMgdG8gdGhlIHJlbGF0aW9uIGluIGFkdmFu Y2UsIGFuZAp3ZSBqdXN0IHRyZWF0IFRPQVNUIHRhYmxlcyBhcyBhbm90aGVyIHJlbGF0aW9uIGNv bWluZwppbiBmcm9tIHBnX2NsYXNzLgotLS0KIGRvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21s ICAgICAgICB8ICAgNiArKwogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgIHwg MTA4ICsrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3Zp ZXdzLnNxbCB8ICAxMyArKysKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jICB8 IDEzMiArKysrKysrKysrKysrKysrKysrKysrKysrLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvY2F0 dmVyc2lvbi5oICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAg ICAgIHwgICA5ICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgfCAgMTAg KysKIDcgZmlsZXMgY2hhbmdlZCwgMjcwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21s L21haW50ZW5hbmNlLnNnbWwKaW5kZXggYjVhMTkxYzEzMGIuLjFhMjYyZmExMjQ0IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbWFp bnRlbmFuY2Uuc2dtbApAQCAtMTE1Myw2ICsxMTUzLDEyIEBAIGFuYWx5emUgdGhyZXNob2xkID0g YW5hbHl6ZSBiYXNlIHRocmVzaG9sZCArIGFuYWx5emUgc2NhbGUgZmFjdG9yICogbnVtYmVyIG9m IHR1CiAgICAgIGxpc3RlZCBpbiB0aGUgPGxpdGVyYWw+cGdfY2xhc3M8L2xpdGVyYWw+IHN5c3Rl bSBjYXRhbG9nKSwgc2V0IGFsbCBvZiB0aGUKICAgICAgYWZvcmVtZW50aW9uZWQgIndlaWdodCIg cGFyYW1ldGVycyB0byA8bGl0ZXJhbD4wLjA8L2xpdGVyYWw+LgogICAgIDwvcGFyYT4KKworICAg IDxwYXJhPgorICAgICBUaGUgPGxpbmsgbGlua2VuZD0ibW9uaXRvcmluZy1wZy1zdGF0LWF1dG92 YWN1dW0tcHJpb3JpdHktdmlldyI+CisgICAgIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfYXV0b3ZhY3V1 bV9wcmlvcml0eTwvc3RydWN0bmFtZT48L2xpbms+IHZpZXcgY2FuIGJlCisgICAgIHVzZWQgdG8g aW5zcGVjdCBlYWNoIHRhYmxlJ3MgYXV0b3ZhY3V1bSBlbGlnaWJpbGl0eSBhbmQgcHJpb3JpdHkg c2NvcmUuCisgICAgPC9wYXJhPgogICAgPC9zZWN0Mz4KICAgPC9zZWN0Mj4KICA8L3NlY3QxPgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9t b25pdG9yaW5nLnNnbWwKaW5kZXggNDYyMDE5YTk3MmMuLjkwMWRkNzA0ODA0IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9y aW5nLnNnbWwKQEAgLTQ2Myw2ICs0NjMsMTUgQEAgcG9zdGdyZXMgICAyNzA5MyAgMC4wICAwLjAg IDMwMDk2ICAyNzUyID8gICAgICAgIFNzICAgMTE6MzQgICAwOjAwIHBvc3RncmVzOiBzZXIKICAg ICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0 cnVjdG5hbWU+cGdfc3RhdF9hdXRvdmFjdXVtX3ByaW9yaXR5PC9zdHJ1Y3RuYW1lPjxpbmRleHRl cm0+PHByaW1hcnk+cGdfc3RhdF9hdXRvdmFjdXVtX3ByaW9yaXR5PC9wcmltYXJ5PjwvaW5kZXh0 ZXJtPjwvZW50cnk+CisgICAgICA8ZW50cnk+T25lIHJvdyBwZXIgcmVsYXRpb24gaW4gdGhlIGN1 cnJlbnQgZGF0YWJhc2UsIHNob3dpbmcKKyAgICAgICBhIHRhYmxlJ3MgYXV0b3ZhY3V1bSBlbGln aWJpbGl0eSBhbmQgcHJpb3JpdHkuIFNlZQorICAgICAgIDxsaW5rIGxpbmtlbmQ9Im1vbml0b3Jp bmctcGctc3RhdC1hdXRvdmFjdXVtLXByaW9yaXR5LXZpZXciPgorICAgICAgIDxzdHJ1Y3RuYW1l PnBnX3N0YXRfYXV0b3ZhY3V1bV9wcmlvcml0eTwvc3RydWN0bmFtZT48L2xpbms+IGZvciBkZXRh aWxzLgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxl bnRyeT48c3RydWN0bmFtZT5wZ19zdGF0X2Jnd3JpdGVyPC9zdHJ1Y3RuYW1lPjxpbmRleHRlcm0+ PHByaW1hcnk+cGdfc3RhdF9iZ3dyaXRlcjwvcHJpbWFyeT48L2luZGV4dGVybT48L2VudHJ5Pgog ICAgICAgPGVudHJ5Pk9uZSByb3cgb25seSwgc2hvd2luZyBzdGF0aXN0aWNzIGFib3V0IHRoZQpA QCAtMjg0Nyw2ICsyODU2LDEwNSBAQCBkZXNjcmlwdGlvbiB8IFdhaXRpbmcgZm9yIGEgbmV3bHkg aW5pdGlhbGl6ZWQgV0FMIGZpbGUgdG8gcmVhY2ggZHVyYWJsZSBzdG9yYWdlCiAgIDwvcGFyYT4K ICA8L3NlY3QyPgogCisgPHNlY3QyIGlkPSJtb25pdG9yaW5nLXBnLXN0YXQtYXV0b3ZhY3V1bS1w cmlvcml0eS12aWV3Ij4KKyAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3N0YXRfYXV0b3ZhY3V1bV9w cmlvcml0eTwvc3RydWN0bmFtZT48L3RpdGxlPgorCisgIDxpbmRleHRlcm0+CisgICA8cHJpbWFy eT5wZ19zdGF0X2F1dG92YWN1dW1fcHJpb3JpdHk8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgor CisgIDxwYXJhPgorICAgVGhlIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfYXV0b3ZhY3V1bV9wcmlvcml0 eTwvc3RydWN0bmFtZT4gdmlldyBjb250YWlucworICAgb25lIHJvdyBwZXIgcmVsYXRpb24gaW4g dGhlIGN1cnJlbnQgZGF0YWJhc2UsIHNob3dpbmcgYSB0YWJsZSdzCisgICBhdXRvdmFjdXVtIGVs aWdpYmlsaXR5IGFuZCBwcmlvcml0eS4KKyAgPC9wYXJhPgorCisgIDx0YWJsZSBpZD0icGctc3Rh dC1hdXRvdmFjdXVtLXByaW9yaXR5LXZpZXciIHhyZWZsYWJlbD0icGdfc3RhdF9hdXRvdmFjdXVt X3ByaW9yaXR5Ij4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19zdGF0X2F1dG92YWN1dW1fcHJp b3JpdHk8L3N0cnVjdG5hbWU+IFZpZXc8L3RpdGxlPgorICAgPHRncm91cCBjb2xzPSIxIj4KKyAg ICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIENvbHVtbiBUeXBl CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgorICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+ CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxpZDwv c3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIE9JRCBvZiB0aGUgcmVsYXRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0Zmll bGQ+c2NoZW1hbmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPm5hbWU8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoZSBzY2hlbWEgdGhhdCB0aGlzIHRh YmxlIGlzIGluCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnJlbG5hbWU8L3N0cnVjdGZp ZWxkPiA8dHlwZT5uYW1lPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgTmFtZSBvZiB0aGUgcmVsYXRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jv dz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+bmVl ZHNfdmFjdXVtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbGVhbjwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgYXV0b3ZhY3V1bSBjb25zaWRlcnMgdGhp cyByZWxhdGlvbiBpbiBuZWVkIG9mIHZhY3V1bWluZworICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5uZWVkc19hbmFseXplPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbGVhbjwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgYXV0b3ZhY3V1bSBjb25z aWRlcnMgdGhpcyByZWxhdGlvbiBpbiBuZWVkIG9mIGFuYWx5emluZworICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg IDxzdHJ1Y3RmaWVsZD53cmFwYXJvdW5kPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbGVhbjwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgdmFjdXVtaW5n IGlzIG5lZWRlZCB0byBwcmV2ZW50IHRyYW5zYWN0aW9uIElEIG9yCisgICAgICAgbXVsdGl4YWN0 IElEIHdyYXBhcm91bmQKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c2NvcmU8L3N0cnVj dGZpZWxkPiA8dHlwZT5kb3VibGUgcHJlY2lzaW9uPC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgUHJpb3JpdHkgc2NvcmUgdXNlZCBieSBhdXRvdmFjdXVtIHRvIG9y ZGVyIHdoaWNoIHJlbGF0aW9ucyB0bworICAgICAgIHByb2Nlc3MgZmlyc3QuIEhpZ2hlciB2YWx1 ZXMgaW5kaWNhdGUgZ3JlYXRlciB1cmdlbmN5LiBaZXJvIGlmCisgICAgICAgdGhlIHJlbGF0aW9u IGRvZXMgbm90IGN1cnJlbnRseSBuZWVkIHZhY3V1bWluZyBvciBhbmFseXppbmcuCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgor ICA8L3RhYmxlPgorCisgPC9zZWN0Mj4KKwogIDxzZWN0MiBpZD0ibW9uaXRvcmluZy1wZy1zdGF0 LWlvLXZpZXciPgogICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfc3RhdF9pbzwvc3RydWN0bmFtZT48 L3RpdGxlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggZjFlZDdiNThm MTMuLmY2ZWM3NjUzMjA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC03 OTUsNiArNzk1LDE5IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfeGFjdF91c2VyX3RhYmxlcyBBUwog ICAgIFdIRVJFIHNjaGVtYW5hbWUgTk9UIElOICgncGdfY2F0YWxvZycsICdpbmZvcm1hdGlvbl9z Y2hlbWEnKSBBTkQKICAgICAgICAgICBzY2hlbWFuYW1lICF+ICdecGdfdG9hc3QnOwogCitDUkVB VEUgVklFVyBwZ19zdGF0X2F1dG92YWN1dW1fcHJpb3JpdHkgQVMKKyAgICBTRUxFQ1QKKyAgICAg ICAgICAgIFMucmVsaWQsCisgICAgICAgICAgICBOLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKKyAg ICAgICAgICAgIEMucmVsbmFtZSBBUyByZWxuYW1lLAorICAgICAgICAgICAgUy5uZWVkc192YWN1 dW0sCisgICAgICAgICAgICBTLm5lZWRzX2FuYWx5emUsCisgICAgICAgICAgICBTLndyYXBhcm91 bmQsCisgICAgICAgICAgICBTLnNjb3JlCisgICAgRlJPTSBwZ19zdGF0X2dldF9hdXRvdmFjdXVt X3ByaW9yaXR5KCkgUworICAgICAgICAgSk9JTiBwZ19jbGFzcyBDIE9OIEMub2lkID0gUy5yZWxp ZAorICAgICAgICAgTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBOIE9OIE4ub2lkID0gQy5yZWxuYW1l c3BhY2U7CisKIENSRUFURSBWSUVXIHBnX3N0YXRpb19hbGxfdGFibGVzIEFTCiAgICAgU0VMRUNU CiAgICAgICAgICAgICBDLm9pZCBBUyByZWxpZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMKaW5kZXggYjVjMTUzYTg4MzUuLjhhNzNmMTY3NjUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uYwpAQCAtODAsNiArODAsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNw YWNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAiY29tbW9uL2lu dC5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNs dWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpAQCAtMTExLDYg KzExMiw3IEBACiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90 aW1lb3V0LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAidXRpbHMv dHVwbGVzdG9yZS5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIAogCkBAIC0zNzIs NiArMzc0LDEwIEBAIHN0YXRpYyB2b2lkIHBlcmZvcm1fd29ya19pdGVtKEF1dG9WYWN1dW1Xb3Jr SXRlbSAqd29ya2l0ZW0pOwogc3RhdGljIHZvaWQgYXV0b3ZhY19yZXBvcnRfYWN0aXZpdHkoYXV0 b3ZhY190YWJsZSAqdGFiKTsKIHN0YXRpYyB2b2lkIGF1dG92YWNfcmVwb3J0X3dvcmtpdGVtKEF1 dG9WYWN1dW1Xb3JrSXRlbSAqd29ya2l0ZW0sCiAJCQkJCQkJCQljb25zdCBjaGFyICpuc3BuYW1l LCBjb25zdCBjaGFyICpyZWxuYW1lKTsKK3N0YXRpYyB2b2lkIGNvbXB1dGVfYXV0b3ZhY19zY29y ZShIZWFwVHVwbGUgdHVwbGUsIFR1cGxlRGVzYyBwZ19jbGFzc19kZXNjLAorCQkJCQkJCQkgIGlu dCBlZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlLAorCQkJCQkJCQkgIGJvb2wgKmRv dmFjdXVtLCBib29sICpkb2FuYWx5emUsCisJCQkJCQkJCSAgYm9vbCAqd3JhcGFyb3VuZCwgZG91 YmxlICpzY29yZSk7CiBzdGF0aWMgdm9pZCBhdmxfc2lndXNyMl9oYW5kbGVyKFNJR05BTF9BUkdT KTsKIHN0YXRpYyBib29sIGF2X3dvcmtlcl9hdmFpbGFibGUodm9pZCk7CiBzdGF0aWMgdm9pZCBj aGVja19hdl93b3JrZXJfZ3Vjcyh2b2lkKTsKQEAgLTIwNTcsNiArMjA2MywxMyBAQCBkb19hdXRv dmFjdXVtKHZvaWQpCiAJCQkJCQkJCSAgJmRvdmFjdXVtLCAmZG9hbmFseXplLCAmd3JhcGFyb3Vu ZCwKIAkJCQkJCQkJICAmc2NvcmUpOwogCisJCWVsb2coREVCVUczLCAiJXM6IGRvdmFjdXVtOiAl cywgZG9hbmFseXplOiAlcywgd3JhcGFyb3VuZDogJXMsIHNjb3JlOiAlLjNmIiwKKwkJCSBOYW1l U3RyKGNsYXNzRm9ybS0+cmVsbmFtZSksCisJCQkgZG92YWN1dW0gPyAieWVzIiA6ICJubyIsCisJ CQkgZG9hbmFseXplID8gInllcyIgOiAibm8iLAorCQkJIHdyYXBhcm91bmQgPyAieWVzIiA6ICJu byIsCisJCQkgc2NvcmUpOworCiAJCS8qIFJlbGF0aW9ucyB0aGF0IG5lZWQgd29yayBhcmUgYWRk ZWQgdG8gdGFibGVzX3RvX3Byb2Nlc3MgKi8KIAkJaWYgKGRvdmFjdXVtIHx8IGRvYW5hbHl6ZSkK IAkJewpAQCAtMjE1Nyw2ICsyMTcwLDEyIEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkJCQkJCQkJ ICAmZG92YWN1dW0sICZkb2FuYWx5emUsICZ3cmFwYXJvdW5kLAogCQkJCQkJCQkgICZzY29yZSk7 CiAKKwkJZWxvZyhERUJVRzMsICIlczogZG92YWN1dW06ICVzLCB3cmFwYXJvdW5kOiAlcywgc2Nv cmU6ICUuM2YiLAorCQkJIE5hbWVTdHIoY2xhc3NGb3JtLT5yZWxuYW1lKSwKKwkJCSBkb3ZhY3V1 bSA/ICJ5ZXMiIDogIm5vIiwKKwkJCSB3cmFwYXJvdW5kID8gInllcyIgOiAibm8iLAorCQkJIHNj b3JlKTsKKwogCQkvKiBpZ25vcmUgYW5hbHl6ZSBmb3IgdG9hc3QgdGFibGVzICovCiAJCWlmIChk b3ZhY3V1bSkKIAkJewpAQCAtMzMxMiwxNSArMzMzMSw2IEBAIHJlbGF0aW9uX25lZWRzX3ZhY2Fu YWx5emUoT2lkIHJlbGlkLAogCQkJKnNjb3JlID0gTWF4KCpzY29yZSwgYW5sdGhyZXNoX3Njb3Jl KTsKIAkJCSpkb2FuYWx5emUgPSB0cnVlOwogCQl9Ci0KLQkJaWYgKHZhY19pbnNfYmFzZV90aHJl c2ggPj0gMCkKLQkJCWVsb2coREVCVUczLCAiJXM6IHZhYzogJS4wZiAodGhyZXNob2xkICUuMGYp LCBpbnM6ICUuMGYgKHRocmVzaG9sZCAlLjBmKSwgYW5sOiAlLjBmICh0aHJlc2hvbGQgJS4wZiks IHNjb3JlOiAlLjNmIiwKLQkJCQkgTmFtZVN0cihjbGFzc0Zvcm0tPnJlbG5hbWUpLAotCQkJCSB2 YWN0dXBsZXMsIHZhY3RocmVzaCwgaW5zdHVwbGVzLCB2YWNpbnN0aHJlc2gsIGFubHR1cGxlcywg YW5sdGhyZXNoLCAqc2NvcmUpOwotCQllbHNlCi0JCQllbG9nKERFQlVHMywgIiVzOiB2YWM6ICUu MGYgKHRocmVzaG9sZCAlLjBmKSwgaW5zOiAoZGlzYWJsZWQpLCBhbmw6ICUuMGYgKHRocmVzaG9s ZCAlLjBmKSwgc2NvcmU6ICUuM2YiLAotCQkJCSBOYW1lU3RyKGNsYXNzRm9ybS0+cmVsbmFtZSks Ci0JCQkJIHZhY3R1cGxlcywgdmFjdGhyZXNoLCBhbmx0dXBsZXMsIGFubHRocmVzaCwgKnNjb3Jl KTsKIAl9CiB9CiAKQEAgLTM2MzUsMyArMzY0NSwxMDcgQEAgY2hlY2tfYXZfd29ya2VyX2d1Y3Mo dm9pZCkKIAkJCQkgZXJyZGV0YWlsKCJUaGUgc2VydmVyIHdpbGwgb25seSBzdGFydCB1cCB0byBc ImF1dG92YWN1dW1fd29ya2VyX3Nsb3RzXCIgKCVkKSBhdXRvdmFjdXVtIHdvcmtlcnMgYXQgYSBn aXZlbiB0aW1lLiIsCiAJCQkJCQkgICBhdXRvdmFjdXVtX3dvcmtlcl9zbG90cykpKTsKIH0KKwor LyoKKyAqIGNvbXB1dGVfYXV0b3ZhY19zY29yZQorICoJCVdyYXBwZXIgYXJvdW5kIHJlbGF0aW9u X25lZWRzX3ZhY2FuYWx5emUoKSB0aGF0IGhhbmRsZXMgdGhlCisgKgkJcGVyLXJlbGF0aW9uIHNl dHVwIHNpbWlsYXIgdG8gZG9fYXV0b3ZhY3V1bSgpIGJlZm9yZSBjYWxsaW5nCisgKgkJcmVsYXRp b25fbmVlZHNfdmFjYW5hbHl6ZSgpLgorICovCitzdGF0aWMgdm9pZAorY29tcHV0ZV9hdXRvdmFj X3Njb3JlKEhlYXBUdXBsZSB0dXBsZSwgVHVwbGVEZXNjIHBnX2NsYXNzX2Rlc2MsCisJCQkJCSAg aW50IGVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UsCisJCQkJCSAgYm9vbCAqZG92 YWN1dW0sIGJvb2wgKmRvYW5hbHl6ZSwKKwkJCQkJICBib29sICp3cmFwYXJvdW5kLCBkb3VibGUg KnNjb3JlKQoreworCUZvcm1fcGdfY2xhc3MgY2xhc3NGb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdF VFNUUlVDVCh0dXBsZSk7CisJQXV0b1ZhY09wdHMgKnJlbG9wdHM7CisJUGdTdGF0X1N0YXRUYWJF bnRyeSAqdGFiZW50cnk7CisKKwlyZWxvcHRzID0gZXh0cmFjdF9hdXRvdmFjX29wdHModHVwbGUs IHBnX2NsYXNzX2Rlc2MpOworCisJdGFiZW50cnkgPSBwZ3N0YXRfZmV0Y2hfc3RhdF90YWJlbnRy eV9leHQoY2xhc3NGb3JtLT5yZWxpc3NoYXJlZCwKKwkJCQkJCQkJCQkJICBjbGFzc0Zvcm0tPm9p ZCk7CisKKwlyZWxhdGlvbl9uZWVkc192YWNhbmFseXplKGNsYXNzRm9ybS0+b2lkLCByZWxvcHRz LCBjbGFzc0Zvcm0sIHRhYmVudHJ5LAorCQkJCQkJCSAgZWZmZWN0aXZlX211bHRpeGFjdF9mcmVl emVfbWF4X2FnZSwKKwkJCQkJCQkgIGRvdmFjdXVtLCBkb2FuYWx5emUsIHdyYXBhcm91bmQsIHNj b3JlKTsKKworCWlmIChyZWxvcHRzKQorCQlwZnJlZShyZWxvcHRzKTsKKwlpZiAodGFiZW50cnkp CisJCXBmcmVlKHRhYmVudHJ5KTsKK30KKworLyoKKyAqIHBnX3N0YXRfZ2V0X2F1dG92YWN1dW1f cHJpb3JpdHkKKyAqCQlSZXR1cm5zIHRoZSBhdXRvdmFjdXVtIHByaW9yaXR5IHNjb3JlIGZvciBl YWNoIHJlbGF0aW9uIGluIHRoZQorICoJCWN1cnJlbnQgZGF0YWJhc2UuCisgKgorICoJCVRoaXMg Zm9sbG93cyB0aGUgc2FtZSBzZXR1cCBhcyBkb19hdXRvdmFjdXVtKCk6IHNuYXBzaG90dGluZwor ICoJCXJlY2VudFhpZC9yZWNlbnRNdWx0aSwgc2Nhbm5pbmcgcGdfY2xhc3MsIGZpbHRlcmluZyBy ZWxhdGlvbiBraW5kcworICoJCWFuZCB0ZW1wIHRhYmxlcywgYW5kIGNvbXB1dGluZyBlZmZlY3Rp dmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlCisgKgkJYXJlIGRvbmUgaGVyZSwgd2hpbGUgY29t cHV0ZV9hdXRvdmFjX3Njb3JlKCkgaGFuZGxlcyB0aGUgcGVyLXJlbGF0aW9uCisgKgkJc2V0dXAg KGZldGNoaW5nIHJlbG9wdGlvbnMgYW5kIHRoZSBwZ3N0YXQgZW50cnkpLgorICovCisjZGVmaW5l IE5VTV9BVl9TQ09SRV9DT0xTIDUKKworRGF0dW0KK3BnX3N0YXRfZ2V0X2F1dG92YWN1dW1fcHJp b3JpdHkoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0 dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CisJUmVsYXRpb24JY2xhc3NSZWw7CisJ VGFibGVTY2FuRGVzYyByZWxTY2FuOworCUhlYXBUdXBsZQl0dXBsZTsKKwlUdXBsZURlc2MJcGdf Y2xhc3NfZGVzYzsKKwlpbnQJCQllZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlOwor CisJSW5pdE1hdGVyaWFsaXplZFNSRihmY2luZm8sIDApOworCisJZWZmZWN0aXZlX211bHRpeGFj dF9mcmVlemVfbWF4X2FnZSA9IE11bHRpWGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCgpOworCisJ LyogU25hcHNob3Qgb25jZSBiZWZvcmUgdGhlIHNjYW4sIGxpa2UgZG9fYXV0b3ZhY3V1bSgpJ3Mg Y2FsbGVyLiAqLworCXJlY2VudFhpZCA9IFJlYWROZXh0VHJhbnNhY3Rpb25JZCgpOworCXJlY2Vu dE11bHRpID0gUmVhZE5leHRNdWx0aVhhY3RJZCgpOworCisJY2xhc3NSZWwgPSB0YWJsZV9vcGVu KFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlwZ19jbGFzc19kZXNjID0g Q3JlYXRlVHVwbGVEZXNjQ29weShSZWxhdGlvbkdldERlc2NyKGNsYXNzUmVsKSk7CisKKwlyZWxT Y2FuID0gdGFibGVfYmVnaW5zY2FuX2NhdGFsb2coY2xhc3NSZWwsIDAsIE5VTEwpOworCXdoaWxl ICgodHVwbGUgPSBoZWFwX2dldG5leHQocmVsU2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24pKSAh PSBOVUxMKQorCXsKKwkJRm9ybV9wZ19jbGFzcyBjbGFzc0Zvcm0gPSAoRm9ybV9wZ19jbGFzcykg R0VUU1RSVUNUKHR1cGxlKTsKKwkJYm9vbAkJZG92YWN1dW07CisJCWJvb2wJCWRvYW5hbHl6ZTsK KwkJYm9vbAkJd3JhcGFyb3VuZDsKKwkJZG91YmxlCQlzY29yZSA9IDAuMDsKKwkJRGF0dW0JCXZh bHVlc1tOVU1fQVZfU0NPUkVfQ09MU107CisJCWJvb2wJCW51bGxzW05VTV9BVl9TQ09SRV9DT0xT XSA9IHtmYWxzZX07CisKKwkJaWYgKGNsYXNzRm9ybS0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFU SU9OICYmCisJCQljbGFzc0Zvcm0tPnJlbGtpbmQgIT0gUkVMS0lORF9NQVRWSUVXICYmCisJCQlj bGFzc0Zvcm0tPnJlbGtpbmQgIT0gUkVMS0lORF9UT0FTVFZBTFVFKQorCQkJY29udGludWU7CisK KwkJaWYgKGNsYXNzRm9ybS0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkK KwkJCWNvbnRpbnVlOworCisJCWNvbXB1dGVfYXV0b3ZhY19zY29yZSh0dXBsZSwgcGdfY2xhc3Nf ZGVzYywKKwkJCQkJCQkgIGVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UsCisJCQkJ CQkJICAmZG92YWN1dW0sICZkb2FuYWx5emUsICZ3cmFwYXJvdW5kLCAmc2NvcmUpOworCisJCXZh bHVlc1swXSA9IE9iamVjdElkR2V0RGF0dW0oY2xhc3NGb3JtLT5vaWQpOworCQl2YWx1ZXNbMV0g PSBCb29sR2V0RGF0dW0oZG92YWN1dW0pOworCQl2YWx1ZXNbMl0gPSBCb29sR2V0RGF0dW0oZG9h bmFseXplKTsKKwkJdmFsdWVzWzNdID0gQm9vbEdldERhdHVtKHdyYXBhcm91bmQpOworCQl2YWx1 ZXNbNF0gPSBGbG9hdDhHZXREYXR1bShzY29yZSk7CisKKwkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMo cnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVzYywKKwkJCQkJCQkgdmFsdWVzLCBudWxs cyk7CisJfQorCXRhYmxlX2VuZHNjYW4ocmVsU2Nhbik7CisKKwl0YWJsZV9jbG9zZShjbGFzc1Jl bCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiAoRGF0dW0pIDA7Cit9CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv Y2F0dmVyc2lvbi5oCmluZGV4IDQyMDg1MDI5M2Y4Li5iY2U2NDc1ODgyMyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9jYXR2ZXJzaW9uLmgKQEAgLTU3LDYgKzU3LDYgQEAKICAqLwogCiAvKgkJCQkJCQl5eXl5bW1k ZE4gKi8KLSNkZWZpbmUgQ0FUQUxPR19WRVJTSU9OX05PCTIwMjYwMzIwMQorI2RlZmluZSBDQVRB TE9HX1ZFUlNJT05fTk8JMjAyNjAzMjMxCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK aW5kZXggODRlN2FkZGUwZTUuLmU1MjQyMDg5OGNlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK QEAgLTU2NjcsNiArNTY2NywxNSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF90b3RhbF9h dXRvYW5hbHl6ZV90aW1lJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9wYXJhbGxlbCA9PiAn cicsIHByb3JldHR5cGUgPT4gJ2Zsb2F0OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAogICBwcm9z cmMgPT4gJ3BnX3N0YXRfZ2V0X3RvdGFsX2F1dG9hbmFseXplX3RpbWUnIH0sCit7IG9pZCA9PiAn ODQwOScsCisgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBhdXRvdmFjdXVtIHByaW9yaXR5IHNjb3Jl cyBmb3IgYWxsIHJlbGF0aW9ucycsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2F1dG92YWN1 dW1fcHJpb3JpdHknLCBwcm9yb3dzID0+ICcxMDAnLAorICBwcm9yZXRzZXQgPT4gJ3QnLCBwcm92 b2xhdGlsZSA9PiAndicsIHByb3BhcmFsbGVsID0+ICdyJywKKyAgcHJvcmV0dHlwZSA9PiAncmVj b3JkJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7b2lkLGJvb2ws Ym9vbCxib29sLGZsb2F0OH0nLAorICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sb30nLAorICBw cm9hcmduYW1lcyA9PiAne3JlbGlkLG5lZWRzX3ZhY3V1bSxuZWVkc19hbmFseXplLHdyYXBhcm91 bmQsc2NvcmV9JywKKyAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9hdXRvdmFjdXVtX3ByaW9yaXR5 JyB9LAogeyBvaWQgPT4gJzE5MzYnLCBkZXNjciA9PiAnc3RhdGlzdGljczogY3VycmVudGx5IGFj dGl2ZSBiYWNrZW5kIElEcycsCiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2JhY2tlbmRfaWRz ZXQnLCBwcm9yb3dzID0+ICcxMDAnLCBwcm9yZXRzZXQgPT4gJ3QnLAogICBwcm92b2xhdGlsZSA9 PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50NCcsCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDMyYmVhNThkYjJjLi4yNTdmMjFiZTAwNCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE4NjAsNiArMTg2MCwxNiBAQCBwZ19z dGF0X2FyY2hpdmVyfCBTRUxFQ1QgYXJjaGl2ZWRfY291bnQsCiAgICAgbGFzdF9mYWlsZWRfdGlt ZSwKICAgICBzdGF0c19yZXNldAogICAgRlJPTSBwZ19zdGF0X2dldF9hcmNoaXZlcigpIHMoYXJj aGl2ZWRfY291bnQsIGxhc3RfYXJjaGl2ZWRfd2FsLCBsYXN0X2FyY2hpdmVkX3RpbWUsIGZhaWxl ZF9jb3VudCwgbGFzdF9mYWlsZWRfd2FsLCBsYXN0X2ZhaWxlZF90aW1lLCBzdGF0c19yZXNldCk7 CitwZ19zdGF0X2F1dG92YWN1dW1fcHJpb3JpdHl8IFNFTEVDVCBzLnJlbGlkLAorICAgIG4ubnNw bmFtZSBBUyBzY2hlbWFuYW1lLAorICAgIGMucmVsbmFtZSwKKyAgICBzLm5lZWRzX3ZhY3V1bSwK KyAgICBzLm5lZWRzX2FuYWx5emUsCisgICAgcy53cmFwYXJvdW5kLAorICAgIHMuc2NvcmUKKyAg IEZST00gKChwZ19zdGF0X2dldF9hdXRvdmFjdXVtX3ByaW9yaXR5KCkgcyhyZWxpZCwgbmVlZHNf dmFjdXVtLCBuZWVkc19hbmFseXplLCB3cmFwYXJvdW5kLCBzY29yZSkKKyAgICAgSk9JTiBwZ19j bGFzcyBjIE9OICgoYy5vaWQgPSBzLnJlbGlkKSkpCisgICAgIExFRlQgSk9JTiBwZ19uYW1lc3Bh Y2UgbiBPTiAoKG4ub2lkID0gYy5yZWxuYW1lc3BhY2UpKSk7CiBwZ19zdGF0X2Jnd3JpdGVyfCBT RUxFQ1QgcGdfc3RhdF9nZXRfYmd3cml0ZXJfYnVmX3dyaXR0ZW5fY2xlYW4oKSBBUyBidWZmZXJz X2NsZWFuLAogICAgIHBnX3N0YXRfZ2V0X2Jnd3JpdGVyX21heHdyaXR0ZW5fY2xlYW4oKSBBUyBt YXh3cml0dGVuX2NsZWFuLAogICAgIHBnX3N0YXRfZ2V0X2J1Zl9hbGxvYygpIEFTIGJ1ZmZlcnNf YWxsb2MsCi0tIAoyLjQ3LjMKCg== --000000000000da42dc064db5a982--