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 1w4keC-002WFW-0F for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Mar 2026 19:09:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w4keA-001olo-1q for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Mar 2026 19:09:06 +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 1w4ke9-001ole-2r for pgsql-hackers@lists.postgresql.org; Mon, 23 Mar 2026 19:09:06 +0000 Received: from mail-ot1-x333.google.com ([2607:f8b0:4864:20::333]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w4ke8-00000000fc7-2P5N for pgsql-hackers@postgresql.org; Mon, 23 Mar 2026 19:09:05 +0000 Received: by mail-ot1-x333.google.com with SMTP id 46e09a7af769-7d74dbfe84cso353204a34.1 for ; Mon, 23 Mar 2026 12:09:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774292944; cv=none; d=google.com; s=arc-20240605; b=fI/lfCr/73s54F/KUjOgKS0KrOA+ktvCoGzZs2tc2f5MUkNLm9d+rK38Hpaoi3dWCl uD+qf9iT2ixVRNVaGqbiqVggK0un8LTrHsxtOMN1BCYhI0YppZcJPqhy8qK9j8cz6mux hZn4F3t9ZZfyLjgGqUbmTZSQdnMS66tgZz5CahO/p8OHmzAbx9apsjYOgXN6nnjs9ytk NRPmp3aOVVJWrarccwek1RvtOoTVoyUPYCEUtuoNsKcYnXm7Aegei4jx4VfB9NiFr7gr BZiUXozOweYCqoYRoHD9JtjhgNsOdPgwzcrZbV+yVtghY99ym6kNRjwifStSxaSm6+tm 6yqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=nc8MEoEC5J9vUikjp9NKLaxBLxdcUG4vsf+wrXNdMgQ=; fh=FIa6CnAOcDlblDMIqVQXhn30ONA1aoHzZ0tfczHgg8I=; b=HmiUTRVuOYc9+ME40fGaMiT0SkV0Sbaz/Fjq/oolkBX7JuU3UlxO/BpYcbBK8kNwJ7 aqOyVGGwUvfLzG7pjoLR9nnOWWGjQvvFMXlScEs7lHrTggbvbldScHFAsbNeidJnyVqF lAAjl0fR/7FAkgyNRKnBO2y4w/eghKbtnHyyeT8jZcisV4DKv7GlFpB7PW0m7GyfBpKE cOpI5vehFotwn78ya5R5PC/R/gKdd6x3Q/I3z7UiRQtua37D6cm1IuoyUV5GbBxtRuL7 SW14Eni9OuDoW4PObV8n/lyFbeWN5e44AB+U+VClwUeRRW2DJUkb9tye2j1bfXz7CrJF ubgQ==; 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=1774292944; x=1774897744; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=nc8MEoEC5J9vUikjp9NKLaxBLxdcUG4vsf+wrXNdMgQ=; b=cq/5yhIiwFYh04eLsOL1dARCgEnBPvJ83A5AfzWC5SdjJ8tsTN8Pv/ZpcRgVJnNgqS pvZ3l7OS9Z4uhpMoTNiEGr1JCGLuwYdUBt8GAP7H8Ci/3l4pbWymRQYGKw8VIcZ/24OM bp8JotpAqGCOFHjcBhxBXY2fEBTEWAN82eRHiHaC8zttwA+/uEFODdxbHj6DLkLG9NSb sdQOMDBAwOWHrVFW7mzjDiNuBFSQSqjXFFiCUCCkIrFx+oSkDQqPvMWlF5j/fpUsTAFq KzW7toBkNoUGPMKkBQl3owPOgs5U58vMnu7YyHLXyRv3Q9Knbgdwae//J6bLIdgy9Zrb KS3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774292944; x=1774897744; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=nc8MEoEC5J9vUikjp9NKLaxBLxdcUG4vsf+wrXNdMgQ=; b=lMbX6Ar6UTxoeKOgvpXLbeHFl/e1TJYmBTy8WEbNIAZae1QUHdf4ZXJv5TW3Vu/hUN lmS1wPMcWxyoBQzkCz9L9BVPa6fXg/WyLkLhzdk+6eGpzJ9N1TLBp0TGiF6MASJnVTbD 2oYEgTwTz9dtzFfDQSi2/TQt3wULlj4OBuAnbltHhG1tpY+dLQuJrDUWGd1ElYaD4sNt AsfQt86+xrpNR/q9CO/OgNgEmQU8zMUrxLP2HqATge+eB2A0ArNdQG4T7jKHEG/4NH6r uF7DaoRWmD4eUgLCh0C+i4cVazq/NeBNxeM9p8JVx+iM6mKHv0i1MNMbhBPIta03nbOC SOdg== X-Gm-Message-State: AOJu0YwFLA9JfS5O0M8AeQipc5gOY+ZphUAcEFslWgdQFxw8fzZbbYE1 NQhImNkB0fiHerpFp1+MVMAuZ89rqXpbu09XNWhtYI5p0svLy4BywpnxeuOVl50HBz+B/6UYg6b KmrlWK0Hp9STRDcOilLGBxBjmgLcv5Cd/kK3vCxU= X-Gm-Gg: ATEYQzzOtSH/yjIYtkrO1GfgNhapVDweqDOw2H56DylVwL3RALfXAsSF01MO+VVUEZi n5CZbnxF0oNUrbpKBgCB8OnqEgtFK/l6l8xvYZREsE+nO2xyUg6fCJs+tQi5bwwJFUT02tBlV9C uu8SgIEoUyLTGrsbOu35CMh4RwhUwCTFJEc+OtCw6tTpgex7mmMmqHtjt9IatETJgdqIT9IEjQI Yx3E2yi1nDxlqmHXdJKbZZZ+Jmv/7eAlDMwEHEnDcU8fZCCbQ1rfbDOXjFzVsM9QQnXu8oUeOHX OVSoQA== X-Received: by 2002:a05:6830:3889:b0:7d7:d2e4:630a with SMTP id 46e09a7af769-7d7eaecf34emr10540636a34.14.1774292943796; Mon, 23 Mar 2026 12:09:03 -0700 (PDT) MIME-Version: 1.0 From: shihao zhong Date: Mon, 23 Mar 2026 15:08:52 -0400 X-Gm-Features: AQROBzAUrp2ipEXvrHwoVqSSdyj_j7tAilfnTnSvcMk_vbDyZ1ZWRmJLy9aDl7Q Message-ID: Subject: [Patch] New pg_stat_tablespace view To: PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000a4999e064db5c4c8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a4999e064db5c4c8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi hackers, I=E2=80=99ve been working on extending the cumulative statistics system to provide better visibility into tablespace-level workloads, and I'd like to propose a patch to add a new system view: pg_stat_tablespace. Currently, PostgreSQL provides statistics per database (e.g., pg_stat_database) and per relation (e.g., pg_statio_user_tables). However, because tablespaces can span multiple databases, it is difficult for DBAs to analyze storage hotspots across the cluster or verify if a specific tablespace (such as a high-performance SSD vs a slow HDD array) is experiencing I/O bottlenecks or excessive temporary file usage. The pg_stat_tablespace view bridges this gap by providing an aggregate view of block I/O and temporary file usage grouped by tablespace, making it easier to optimize storage architectures. Thanks, Shihao --000000000000a4999e064db5c4c8 Content-Type: application/octet-stream; name="pg_stat_tablespace_final.patch" Content-Disposition: attachment; filename="pg_stat_tablespace_final.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn3k5mrr0 RnJvbSBlZDZiYWZjZjRhMjcyNjI1NzdmMGJjMWMxMDBhZGI5MDc1MDVhNDdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaGloYW8gemhvbmcgPHpob25nOTUwNDE5QGdtYWlsLmNvbT4K RGF0ZTogTW9uLCAyMyBNYXIgMjAyNiAxODoyNzo0NiArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIEFk ZCBwZ19zdGF0X3RhYmxlc3BhY2Ugc3RhdGlzdGljcyB2aWV3CgpJbXBsZW1lbnQgcGdfc3RhdF90 YWJsZXNwYWNlIHRvIHRyYWNrIGJsb2NrIHJlYWRzLCBoaXRzLCBJL08gdGltaW5nLAphbmQgdGVt cG9yYXJ5IGZpbGUgdXNhZ2UgcGVyIHRhYmxlc3BhY2UuIFRoaXMgYWxsb3dzIERCQXMgdG8gYW5h bHl6ZQp0YWJsZXNwYWNlLWxldmVsIHdvcmtsb2FkIGhvdHNwb3RzLgoKVGhlIHZpZXcgaW5jbHVk ZXM6Ci0gdGFibGVzcGFjZV9pZAotIHRhYmxlc3BhY2VfbmFtZQotIGJsb2Nrc19mZXRjaGVkCi0g YmxvY2tzX2hpdAotIGJsa19yZWFkX3RpbWUKLSBibGtfd3JpdGVfdGltZQotIHRlbXBfZmlsZXMK LSB0ZW1wX2J5dGVzCgpJbmNsdWRlcyBjb21wcmVoZW5zaXZlIGZpZWxkIGNvdmVyYWdlIGNoZWNr cyBpbiBzdGF0cy5zcWwuCi0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAg ICAgICAgICAgIHwgMTQzICsrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgIDE0ICsrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2Zp bGUvZmQuYyAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9tZXNvbi5idWlsZCAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv cGdzdGF0LmMgICAgICAgICAgIHwgIDE2ICsrCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9w Z3N0YXRfZGF0YWJhc2UuYyAgfCAgNDcgKysrKystCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfcmVsYXRpb24uYyAgfCAgMTggKysrCiAuLi4vdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X3RhYmxlc3BhY2UuYyAgICAgICAgfCAgOTkgKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGls cy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAgICAgICAgfCAgODAgKysrKysrKysrLQogc3JjL2luY2x1 ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmggICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUv cGdzdGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIyICsrKwogc3JjL2luY2x1ZGUv dXRpbHMvYmFja2VuZF9zdGF0dXMuaCAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS91 dGlscy9wZ3N0YXRfaW50ZXJuYWwuaCAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvdXRp bHMvcGdzdGF0X2tpbmQuaCAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAgICAgfCAgMTEgKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3RhdHMub3V0ICAgICAgICAgICB8ICA4MyArKysrKysrKystCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9zdGF0cy5zcWwgICAgICAgICAgICAgICAgfCAgMzYgKysrKysKIDE5IGZpbGVz IGNoYW5nZWQsIDU4OSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF90YWJsZXNwYWNlLmMKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21v bml0b3Jpbmcuc2dtbAppbmRleCA0NjIwMTlhOTcyYy4uZDhhMGI1MjhhOGYgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jp bmcuc2dtbApAQCAtNTI2LDYgKzUyNiwxNCBAQCBwb3N0Z3JlcyAgIDI3MDkzICAwLjAgIDAuMCAg MzAwOTYgIDI3NTIgPyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdyZXM6IHNlcgogICAg ICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3Ry dWN0bmFtZT5wZ19zdGF0X3RhYmxlc3BhY2U8L3N0cnVjdG5hbWU+PGluZGV4dGVybT48cHJpbWFy eT5wZ19zdGF0X3RhYmxlc3BhY2U8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC9lbnRyeT4KKyAgICAg IDxlbnRyeT5PbmUgcm93IHBlciB0YWJsZXNwYWNlLCBzaG93aW5nIHN0YXRpc3RpY3MgYWJvdXQg SS9PIGFuZCB0ZW1wb3JhcnkgZmlsZXMuIFNlZQorICAgICAgIDxsaW5rIGxpbmtlbmQ9Im1vbml0 b3JpbmctcGctc3RhdC10YWJsZXNwYWNlLXZpZXciPgorICAgICAgIDxzdHJ1Y3RuYW1lPnBnX3N0 YXRfdGFibGVzcGFjZTwvc3RydWN0bmFtZT48L2xpbms+IGZvciBkZXRhaWxzLgorICAgICAgPC9l bnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48c3RydWN0bmFt ZT5wZ19zdGF0X3N1YnNjcmlwdGlvbl9zdGF0czwvc3RydWN0bmFtZT48aW5kZXh0ZXJtPjxwcmlt YXJ5PnBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvZW50 cnk+CiAgICAgICA8ZW50cnk+T25lIHJvdyBwZXIgc3Vic2NyaXB0aW9uLCBzaG93aW5nIHN0YXRp c3RpY3MgYWJvdXQgZXJyb3JzIGFuZCBjb25mbGljdHMuCkBAIC01MTUyLDYgKzUxNjAsMTQxIEBA IGRlc2NyaXB0aW9uIHwgV2FpdGluZyBmb3IgYSBuZXdseSBpbml0aWFsaXplZCBXQUwgZmlsZSB0 byByZWFjaCBkdXJhYmxlIHN0b3JhZ2UKIAogIDwvc2VjdDI+CiAKKyAgPHNlY3QyIGlkPSJtb25p dG9yaW5nLXBnLXN0YXQtdGFibGVzcGFjZS12aWV3Ij4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5w Z19zdGF0X3RhYmxlc3BhY2U8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICAgPGluZGV4dGVybT4K KyAgICA8cHJpbWFyeT5wZ19zdGF0X3RhYmxlc3BhY2U8L3ByaW1hcnk+CisgICA8L2luZGV4dGVy bT4KKworICAgPHBhcmE+CisgICAgVGhlIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfdGFibGVzcGFjZTwv c3RydWN0bmFtZT4gdmlldyB3aWxsIGNvbnRhaW4gb25lIHJvdworICAgIGZvciBlYWNoIHRhYmxl c3BhY2UsIHNob3dpbmcgc3RhdGlzdGljcyBhYm91dCBJL08gb3BlcmF0aW9ucyBhbmQgdGVtcG9y YXJ5CisgICAgZmlsZSB1c2FnZSBpbiB0aGF0IHRhYmxlc3BhY2UuCisgICA8L3BhcmE+CisKKyAg IDx0YWJsZSBpZD0icGctc3RhdC10YWJsZXNwYWNlLXZpZXciIHhyZWZsYWJlbD0icGdfc3RhdF90 YWJsZXNwYWNlIj4KKyAgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfc3RhdF90YWJsZXNwYWNlPC9z dHJ1Y3RuYW1lPiBWaWV3PC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgICA8dGhl YWQ+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij4KKyAgICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgICAgQ29s dW1uIFR5cGUKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIERlc2Ny aXB0aW9uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2VudHJ5PgorICAgICAgPC9yb3c+Cisg ICAgIDwvdGhlYWQ+CisKKyAgICAgPHRib2R5PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+CisgICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICAgIDxzdHJ1Y3RmaWVsZD50YWJsZXNwYWNlX2lkPC9zdHJ1Y3Rm aWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgor ICAgICAgICAgT0lEIG9mIHRoZSB0YWJsZXNwYWNlCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8 L2VudHJ5PgorICAgICAgPC9yb3c+CisKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9 ImNhdGFsb2dfdGFibGVfZW50cnkiPgorICAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgICA8c3RydWN0ZmllbGQ+dGFibGVzcGFjZV9uYW1lPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAg ICAgICAgIE5hbWUgb2YgdGhlIHRhYmxlc3BhY2UKKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwv ZW50cnk+CisgICAgICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+CisgICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KKyAgICAgICAgIDxzdHJ1Y3RmaWVsZD5ibGtfcmVhZF90aW1lPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+ZG91YmxlIHByZWNpc2lvbjwvdHlwZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8 cGFyYT4KKyAgICAgICAgIFRpbWUgc3BlbnQgcmVhZGluZyBkYXRhIGJsb2NrcyBieSBiYWNrZW5k cyBpbiB0aGlzIHRhYmxlc3BhY2UsIGluIG1pbGxpc2Vjb25kcworICAgICAgICAgKGlmIDx4cmVm IGxpbmtlbmQ9Imd1Yy10cmFjay1pby10aW1pbmciLz4gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIHpl cm8pCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2VudHJ5PgorICAgICAgPC9yb3c+CisKKyAg ICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPgorICAg ICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgICA8c3RydWN0Zmll bGQ+YmxrX3dyaXRlX3RpbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5kb3VibGUgcHJlY2lzaW9uPC90 eXBlPgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGltZSBzcGVu dCB3cml0aW5nIGRhdGEgYmxvY2tzIGJ5IGJhY2tlbmRzIGluIHRoaXMgdGFibGVzcGFjZSwgaW4g bWlsbGlzZWNvbmRzCisgICAgICAgICAoaWYgPHhyZWYgbGlua2VuZD0iZ3VjLXRyYWNrLWlvLXRp bWluZyIvPiBpcyBlbmFibGVkLCBvdGhlcndpc2UgemVybykKKyAgICAgICAgPC9wYXJhPgorICAg ICAgIDwvZW50cnk+CisgICAgICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+CisgICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICAgIDxzdHJ1Y3RmaWVsZD5ibG9ja3NfZmV0Y2hlZDwvc3RydWN0 ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFy YT4KKyAgICAgICAgIE51bWJlciBvZiBkYXRhIGJsb2NrcyByZWFkIGZyb20gZGlzayBpbiB0aGlz IHRhYmxlc3BhY2UKKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvZW50cnk+CisgICAgICA8L3Jv dz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+CisgICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICAgIDxz dHJ1Y3RmaWVsZD5ibG9ja3NfaGl0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgor ICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgTnVtYmVyIG9mIGRhdGEg YmxvY2tzIGZvdW5kIGluIHNoYXJlZCBidWZmZXIgY2FjaGUgaW4gdGhpcyB0YWJsZXNwYWNlCisg ICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2VudHJ5PgorICAgICAgPC9yb3c+CisKKyAgICAgIDxy b3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPgorICAgICAgICA8 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgICA8c3RydWN0ZmllbGQ+dGVt cF9maWxlczwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgICAgPC9wYXJh PgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIE51bWJlciBvZiB0ZW1wb3JhcnkgZmlsZXMgY3Jl YXRlZCBpbiB0aGlzIHRhYmxlc3BhY2UKKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvZW50cnk+ CisgICAgICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+CisgICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K KyAgICAgICAgIDxzdHJ1Y3RmaWVsZD50ZW1wX2J5dGVzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bnVt ZXJpYzwvdHlwZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRv dGFsIGFtb3VudCBvZiBkYXRhIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGluIHRoaXMgdGFi bGVzcGFjZQorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9lbnRyeT4KKyAgICAgIDwvcm93Pgor CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij4K KyAgICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgICAgPHN0cnVj dGZpZWxkPnN0YXRzX3Jlc2V0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGlt ZSB6b25lPC90eXBlPgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAg VGltZSBhdCB3aGljaCB0aGVzZSBzdGF0aXN0aWNzIHdlcmUgbGFzdCByZXNldAorICAgICAgICA8 L3BhcmE+CisgICAgICAgPC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAgICA8L3Rib2R5PgorICAg IDwvdGdyb3VwPgorICAgPC90YWJsZT4KKyAgPC9zZWN0Mj4KKwogIDxzZWN0MiBpZD0ibW9uaXRv cmluZy1zdGF0cy1mdW5jdGlvbnMiPgogICA8dGl0bGU+U3RhdGlzdGljcyBGdW5jdGlvbnM8L3Rp dGxlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggZjFlZDdiNThmMTMu LjI4NzZjNWZkNjQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3 cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMTE5 LDYgKzExMTksMjAgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9yZXBsaWNhdGlvbl9zbG90cyBBUwog ICAgICAgICBMQVRFUkFMIHBnX3N0YXRfZ2V0X3JlcGxpY2F0aW9uX3Nsb3Qoc2xvdF9uYW1lKSBh cyBzCiAgICAgV0hFUkUgci5kYXRvaWQgSVMgTk9UIE5VTEw7IC0tIGV4Y2x1ZGluZyBwaHlzaWNh bCBzbG90cwogCitDUkVBVEUgVklFVyBwZ19zdGF0X3RhYmxlc3BhY2UgQVMKKyAgICBTRUxFQ1QK KyAgICAgICAgVC5vaWQgQVMgdGFibGVzcGFjZV9pZCwKKyAgICAgICAgVC5zcGNuYW1lIEFTIHRh Ymxlc3BhY2VfbmFtZSwKKyAgICAgICAgUy5ibGtfcmVhZF90aW1lLAorICAgICAgICBTLmJsa193 cml0ZV90aW1lLAorICAgICAgICBTLmJsb2Nrc19mZXRjaGVkLAorICAgICAgICBTLmJsb2Nrc19o aXQsCisgICAgICAgIFMudGVtcF9maWxlcywKKyAgICAgICAgUy50ZW1wX2J5dGVzLAorICAgICAg ICBTLnN0YXRzX3Jlc2V0CisgICAgRlJPTSBwZ190YWJsZXNwYWNlIFQKKyAgICBMRUZUIEpPSU4g TEFURVJBTCBwZ19zdGF0X2dldF90YWJsZXNwYWNlKFQub2lkKSBTIE9OIHRydWU7CisKIENSRUFU RSBWSUVXIHBnX3N0YXRfZGF0YWJhc2UgQVMKICAgICBTRUxFQ1QKICAgICAgICAgICAgIEQub2lk IEFTIGRhdGlkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYwppbmRleCAwMWYxYmQ2ZTY4Ny4uMDNjNDdhYmEx N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCkBAIC0xNTE1LDcgKzE1MTUsNyBAQCBGaWxlQWNjZXNz KEZpbGUgZmlsZSkKIHN0YXRpYyB2b2lkCiBSZXBvcnRUZW1wb3JhcnlGaWxlVXNhZ2UoY29uc3Qg Y2hhciAqcGF0aCwgcGdvZmZfdCBzaXplKQogewotCXBnc3RhdF9yZXBvcnRfdGVtcGZpbGUoc2l6 ZSk7CisJcGdzdGF0X3JlcG9ydF90ZW1wZmlsZShzaXplLCBwYXRoKTsKIAogCWlmIChsb2dfdGVt cF9maWxlcyA+PSAwKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvTWFrZWZpbGUKaW5kZXggYzM3 YmZiMzUwYmIuLjI1NTZlYjMwODIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9NYWtlZmlsZQpA QCAtMzEsNiArMzEsNyBAQCBPQkpTID0gXAogCXBnc3RhdF9zaG1lbS5vIFwKIAlwZ3N0YXRfc2xy dS5vIFwKIAlwZ3N0YXRfc3Vic2NyaXB0aW9uLm8gXAorCXBnc3RhdF90YWJsZXNwYWNlLm8gXAog CXBnc3RhdF93YWwubyBcCiAJcGdzdGF0X3hhY3QubyBcCiAJd2FpdF9ldmVudC5vIFwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L21lc29uLmJ1aWxkIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvbWVzb24uYnVpbGQKaW5kZXggNTNiZDVhMjQ2Y2EuLjk3ZDEyNTY2 YWY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9tZXNvbi5idWlsZAor KysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9tZXNvbi5idWlsZApAQCAtMTYsNiArMTYs NyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdwZ3N0YXRfc2htZW0uYycsCiAgICdw Z3N0YXRfc2xydS5jJywKICAgJ3Bnc3RhdF9zdWJzY3JpcHRpb24uYycsCisgICdwZ3N0YXRfdGFi bGVzcGFjZS5jJywKICAgJ3Bnc3RhdF93YWwuYycsCiAgICdwZ3N0YXRfeGFjdC5jJywKICkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdC5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMKaW5kZXggMTFiYjcxY2FkNWEuLjYwYzJjODBhZGMz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQuYwpAQCAtMzAwLDYgKzMwMCwyMiBAQCBz dGF0aWMgY29uc3QgUGdTdGF0X0tpbmRJbmZvIHBnc3RhdF9raW5kX2J1aWx0aW5faW5mb3NbUEdT VEFUX0tJTkRfQlVJTFRJTl9TSVpFXQogCQkucmVzZXRfdGltZXN0YW1wX2NiID0gcGdzdGF0X2Rh dGFiYXNlX3Jlc2V0X3RpbWVzdGFtcF9jYiwKIAl9LAogCisJW1BHU1RBVF9LSU5EX1RBQkxFU1BB Q0VdID0geworCQkubmFtZSA9ICJ0YWJsZXNwYWNlIiwKKworCQkuZml4ZWRfYW1vdW50ID0gZmFs c2UsCisJCS53cml0ZV90b19maWxlID0gdHJ1ZSwKKwkJLmFjY2Vzc2VkX2Fjcm9zc19kYXRhYmFz ZXMgPSB0cnVlLAorCisJCS5zaGFyZWRfc2l6ZSA9IHNpemVvZihQZ1N0YXRTaGFyZWRfVGFibGVz cGFjZSksCisJCS5zaGFyZWRfZGF0YV9vZmYgPSBvZmZzZXRvZihQZ1N0YXRTaGFyZWRfVGFibGVz cGFjZSwgc3RhdHMpLAorCQkuc2hhcmVkX2RhdGFfbGVuID0gc2l6ZW9mKCgoUGdTdGF0U2hhcmVk X1RhYmxlc3BhY2UgKikgMCktPnN0YXRzKSwKKwkJLnBlbmRpbmdfc2l6ZSA9IHNpemVvZihQZ1N0 YXRfU3RhdFRhYnNwYWNlRW50cnkpLAorCisJCS5mbHVzaF9wZW5kaW5nX2NiID0gcGdzdGF0X3Rh Ymxlc3BhY2VfZmx1c2hfY2IsCisJCS5yZXNldF90aW1lc3RhbXBfY2IgPSBwZ3N0YXRfdGFibGVz cGFjZV9yZXNldF90aW1lc3RhbXBfY2IsCisJfSwKKwogCVtQR1NUQVRfS0lORF9SRUxBVElPTl0g PSB7CiAJCS5uYW1lID0gInJlbGF0aW9uIiwKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfZGF0YWJhc2UuYwppbmRleCA5MzNkY2I1Y2FlNS4uODNkMjY3NWQ1MTEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCkBAIC0xNyw5ICsx NywxMSBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL3Bnc3RhdF9p bnRlcm5hbC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfdGFibGVzcGFjZV9kLmgiCiAKIAogc3RhdGljIGJvb2wgcGdzdGF0X3Nob3VsZF9yZXBv cnRfY29ubnN0YXQodm9pZCk7CkBAIC0yMTQsMjAgKzIxNiw2MyBAQCBwZ3N0YXRfcmVwb3J0X2No ZWNrc3VtX2ZhaWx1cmVzX2luX2RiKE9pZCBkYm9pZCwgaW50IGZhaWx1cmVjb3VudCkKIAlwZ3N0 YXRfdW5sb2NrX2VudHJ5KGVudHJ5X3JlZik7CiB9CiAKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24g dG8gcGFyc2UgdGFibGVzcGFjZSBvaWQgZnJvbSB0ZW1wb3JhcnkgZmlsZSBwYXRoLgorICovCitz dGF0aWMgT2lkCitnZXRfdGFibGVzcGFjZV9mcm9tX3RlbXBmaWxlX3BhdGgoY29uc3QgY2hhciAq cGF0aCkKK3sKKwkvKgorCSAqIFdlIG1hdGNoIHRoZSBwYXRoIGFnYWluc3Qga25vd24gdGFibGVz cGFjZSBwcmVmaXhlcyB0byBhdm9pZCBtb2RpZnlpbmcKKwkgKiBmZC5jL2ZpbGVzZXQuYyBhbmQg VmZkIHN0cnVjdHVyZXMuCisJICovCisJaWYgKHBhdGggPT0gTlVMTCkKKwkJcmV0dXJuIEludmFs aWRPaWQ7CisKKwlpZiAoc3RybmNtcChwYXRoLCAicGdfdGJsc3BjLyIsIDEwKSA9PSAwKQorCXsK KwkJcmV0dXJuIGF0b29pZChwYXRoICsgMTApOworCX0KKwllbHNlIGlmIChzdHJuY21wKHBhdGgs ICJiYXNlLyIsIDUpID09IDApCisJeworCQlyZXR1cm4gREVGQVVMVFRBQkxFU1BBQ0VfT0lEOwor CX0KKwllbHNlIGlmIChzdHJuY21wKHBhdGgsICJnbG9iYWwvIiwgNykgPT0gMCkKKwl7CisJCXJl dHVybiBHTE9CQUxUQUJMRVNQQUNFX09JRDsKKwl9CisKKwlyZXR1cm4gSW52YWxpZE9pZDsKK30K KwogLyoKICAqIFJlcG9ydCBjcmVhdGlvbiBvZiB0ZW1wb3JhcnkgZmlsZS4KICAqLwogdm9pZAot cGdzdGF0X3JlcG9ydF90ZW1wZmlsZShzaXplX3QgZmlsZXNpemUpCitwZ3N0YXRfcmVwb3J0X3Rl bXBmaWxlKHNpemVfdCBmaWxlc2l6ZSwgY29uc3QgY2hhciAqcGF0aCkKIHsKIAlQZ1N0YXRfU3Rh dERCRW50cnkgKmRiZW50OworCVBnU3RhdF9TdGF0VGFic3BhY2VFbnRyeSAqdHNlbnQ7CisJT2lk CQkJdGFibGVzcGFjZV9vaWQ7CiAKIAlpZiAoIXBnc3RhdF90cmFja19jb3VudHMpCiAJCXJldHVy bjsKIAorCXRhYmxlc3BhY2Vfb2lkID0gZ2V0X3RhYmxlc3BhY2VfZnJvbV90ZW1wZmlsZV9wYXRo KHBhdGgpOworCiAJZGJlbnQgPSBwZ3N0YXRfcHJlcF9kYXRhYmFzZV9wZW5kaW5nKE15RGF0YWJh c2VJZCk7CiAJZGJlbnQtPnRlbXBfYnl0ZXMgKz0gZmlsZXNpemU7CiAJZGJlbnQtPnRlbXBfZmls ZXMrKzsKKworCWlmIChPaWRJc1ZhbGlkKHRhYmxlc3BhY2Vfb2lkKSkKKwl7CisJCXRzZW50ID0g cGdzdGF0X3ByZXBfdGFibGVzcGFjZV9wZW5kaW5nKHRhYmxlc3BhY2Vfb2lkKTsKKwkJaWYgKHRz ZW50KQorCQl7CisJCQl0c2VudC0+dGVtcF9ieXRlcyArPSBmaWxlc2l6ZTsKKwkJCXRzZW50LT50 ZW1wX2ZpbGVzKys7CisJCX0KKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCmluZGV4IGJjOGM0M2I5NmFhLi4xNmJmYTI4NWY4MyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKQEAgLTIwLDYg KzIwLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHdvcGhhc2Vfcm1nci5oIgogI2luY2x1ZGUgImFj Y2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCisjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9w Z3N0YXRfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKQEAgLTE0Miw2ICsxNDMs NyBAQCBwZ3N0YXRfYXNzb2NfcmVsYXRpb24oUmVsYXRpb24gcmVsKQogCiAJLyogbWFyayB0aGlz IHJlbGF0aW9uIGFzIHRoZSBvd25lciAqLwogCXJlbC0+cGdzdGF0X2luZm8tPnJlbGF0aW9uID0g cmVsOworCXJlbC0+cGdzdGF0X2luZm8tPnJlbHRhYmxlc3BhY2UgPSByZWwtPnJkX2xvY2F0b3Iu c3BjT2lkOwogfQogCiAvKgpAQCAtODk3LDYgKzg5OSwyMiBAQCBwZ3N0YXRfcmVsYXRpb25fZmx1 c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0KQogCWRiZW50cnkt PmJsb2Nrc19mZXRjaGVkICs9IGxzdGF0cy0+Y291bnRzLmJsb2Nrc19mZXRjaGVkOwogCWRiZW50 cnktPmJsb2Nrc19oaXQgKz0gbHN0YXRzLT5jb3VudHMuYmxvY2tzX2hpdDsKIAorCS8qIFRoZSBl bnRyeSB3YXMgc3VjY2Vzc2Z1bGx5IGZsdXNoZWQsIGFkZCB0aGUgc2FtZSB0byB0YWJsZXNwYWNl IHN0YXRzICovCisJeworCQlPaWQgdHNpZCA9IChsc3RhdHMtPnJlbHRhYmxlc3BhY2UgPT0gSW52 YWxpZE9pZCkgPyBNeURhdGFiYXNlVGFibGVTcGFjZSA6IGxzdGF0cy0+cmVsdGFibGVzcGFjZTsK KworCQlpZiAoT2lkSXNWYWxpZCh0c2lkKSkKKwkJeworCQkJUGdTdGF0X1N0YXRUYWJzcGFjZUVu dHJ5ICp0c2VudHJ5ID0gcGdzdGF0X3ByZXBfdGFibGVzcGFjZV9wZW5kaW5nKHRzaWQpOworCisJ CQlpZiAodHNlbnRyeSkKKwkJCXsKKwkJCQl0c2VudHJ5LT5ibG9ja3NfZmV0Y2hlZCArPSBsc3Rh dHMtPmNvdW50cy5ibG9ja3NfZmV0Y2hlZDsKKwkJCQl0c2VudHJ5LT5ibG9ja3NfaGl0ICs9IGxz dGF0cy0+Y291bnRzLmJsb2Nrc19oaXQ7CisJCQl9CisJCX0KKwl9CisKIAlyZXR1cm4gdHJ1ZTsK IH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3RhYmxl c3BhY2UuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF90YWJsZXNwYWNlLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU4NWZmZjc1NjliCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3RhYmxlc3Bh Y2UuYwpAQCAtMCwwICsxLDk5IEBACisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdzdGF0 X3RhYmxlc3BhY2UuYworICoJICBJbXBsZW1lbnRhdGlvbiBvZiB0YWJsZXNwYWNlIHN0YXRpc3Rp Y3MuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvcGdzdGF0X3RhYmxlc3BhY2UuYworICogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgInV0aWxzL3Bnc3RhdF9pbnRl cm5hbC5oIgorI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorCisKKy8qCisgKiBSZW1vdmUg ZW50cnkgZm9yIHRoZSB0YWJsZXNwYWNlIGJlaW5nIGRyb3BwZWQuCisgKi8KK3ZvaWQKK3Bnc3Rh dF9kcm9wX3RhYmxlc3BhY2UoT2lkIHRhYmxlc3BhY2VpZCkKK3sKKwlwZ3N0YXRfZHJvcF90cmFu c2FjdGlvbmFsKFBHU1RBVF9LSU5EX1RBQkxFU1BBQ0UsIEludmFsaWRPaWQsIHRhYmxlc3BhY2Vp ZCk7Cit9CisKKy8qCisgKiBGZXRjaCB0YWJsZXNwYWNlIHN0YXRpc3RpY3MuCisgKi8KK1BnU3Rh dF9TdGF0VGFic3BhY2VFbnRyeSAqCitwZ3N0YXRfZmV0Y2hfc3RhdF90YWJzcGFjZWVudHJ5KE9p ZCB0YWJsZXNwYWNlaWQpCit7CisJcmV0dXJuIChQZ1N0YXRfU3RhdFRhYnNwYWNlRW50cnkgKikK KwkJcGdzdGF0X2ZldGNoX2VudHJ5KFBHU1RBVF9LSU5EX1RBQkxFU1BBQ0UsIEludmFsaWRPaWQs IHRhYmxlc3BhY2VpZCk7Cit9CisKKy8qCisgKiBGbHVzaCBvdXQgcGVuZGluZyBzdGF0cyBmb3Ig dGhlIGVudHJ5LgorICovCitib29sCitwZ3N0YXRfdGFibGVzcGFjZV9mbHVzaF9jYihQZ1N0YXRf RW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpCit7CisJUGdTdGF0U2hhcmVkX1RhYmxl c3BhY2UgKnNoYXJlZGVudDsKKwlQZ1N0YXRfU3RhdFRhYnNwYWNlRW50cnkgKnBlbmRpbmdlbnQ7 CisKKwlwZW5kaW5nZW50ID0gKFBnU3RhdF9TdGF0VGFic3BhY2VFbnRyeSAqKSBlbnRyeV9yZWYt PnBlbmRpbmc7CisJc2hhcmVkZW50ID0gKFBnU3RhdFNoYXJlZF9UYWJsZXNwYWNlICopIGVudHJ5 X3JlZi0+c2hhcmVkX3N0YXRzOworCisJaWYgKCFwZ3N0YXRfbG9ja19lbnRyeShlbnRyeV9yZWYs IG5vd2FpdCkpCisJCXJldHVybiBmYWxzZTsKKworI2RlZmluZSBQR1NUQVRfQUNDVU1fVEFCU1BB Q0VDT1VOVChpdGVtKQkJXAorCShzaGFyZWRlbnQpLT5zdGF0cy5pdGVtICs9IChwZW5kaW5nZW50 KS0+aXRlbQorCisJUEdTVEFUX0FDQ1VNX1RBQlNQQUNFQ09VTlQoYmxvY2tzX2ZldGNoZWQpOwor CVBHU1RBVF9BQ0NVTV9UQUJTUEFDRUNPVU5UKGJsb2Nrc19oaXQpOworCVBHU1RBVF9BQ0NVTV9U QUJTUEFDRUNPVU5UKGJsa19yZWFkX3RpbWUpOworCVBHU1RBVF9BQ0NVTV9UQUJTUEFDRUNPVU5U KGJsa193cml0ZV90aW1lKTsKKwlQR1NUQVRfQUNDVU1fVEFCU1BBQ0VDT1VOVCh0ZW1wX2ZpbGVz KTsKKwlQR1NUQVRfQUNDVU1fVEFCU1BBQ0VDT1VOVCh0ZW1wX2J5dGVzKTsKKworI3VuZGVmIFBH U1RBVF9BQ0NVTV9UQUJTUEFDRUNPVU5UCisKKwlwZ3N0YXRfdW5sb2NrX2VudHJ5KGVudHJ5X3Jl Zik7CisKKwkvKiBDbGVhciBwZW5kaW5nIHN0YXRzIHNpbmNlIHRoZXkgaGF2ZSBiZWVuIGZsdXNo ZWQgKi8KKwltZW1zZXQocGVuZGluZ2VudCwgMCwgc2l6ZW9mKCpwZW5kaW5nZW50KSk7CisKKwly ZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIFJlc2V0IHN0YXRzIHJlc2V0IHRpbWVzdGFtcC4KKyAq Lwordm9pZAorcGdzdGF0X3RhYmxlc3BhY2VfcmVzZXRfdGltZXN0YW1wX2NiKFBnU3RhdFNoYXJl ZF9Db21tb24gKmhlYWRlciwgVGltZXN0YW1wVHogdHMpCit7CisJKChQZ1N0YXRTaGFyZWRfVGFi bGVzcGFjZSAqKSBoZWFkZXIpLT5zdGF0cy5zdGF0X3Jlc2V0X3RpbWVzdGFtcCA9IHRzOworfQor CisvKgorICogUHJlcGFyZSBmb3IgcmVwb3J0aW5nIHRhYmxlc3BhY2Ugc3RhdHMuCisgKi8KK1Bn U3RhdF9TdGF0VGFic3BhY2VFbnRyeSAqCitwZ3N0YXRfcHJlcF90YWJsZXNwYWNlX3BlbmRpbmco T2lkIHRhYmxlc3BhY2VpZCkKK3sKKwlQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZjsKKworCS8q CisJICogSWYgc3RhdHMgY29sbGVjdGlvbiBpcyBkaXNhYmxlZCwgd2UgZG9uJ3QgaGF2ZSBhbnl3 aGVyZSB0byBwdXQgdGhlIGNvdW50ZXJzLgorCSAqLworCWlmICghcGdzdGF0X3RyYWNrX2NvdW50 cykKKwkJcmV0dXJuIE5VTEw7CisKKwllbnRyeV9yZWYgPSBwZ3N0YXRfcHJlcF9wZW5kaW5nX2Vu dHJ5KFBHU1RBVF9LSU5EX1RBQkxFU1BBQ0UsCisJCQkJCQkJCQkJICBJbnZhbGlkT2lkLCB0YWJs ZXNwYWNlaWQsIE5VTEwpOworCisJcmV0dXJuIChQZ1N0YXRfU3RhdFRhYnNwYWNlRW50cnkgKikg ZW50cnlfcmVmLT5wZW5kaW5nOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3Bnc3RhdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRl eCA1ZjkwNzMzNTk5MC4uNWU0NTNkMTFlNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ3N0YXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5j cy5jCkBAIC0xOTI4LDYgKzE5MjgsNyBAQCBwZ19zdGF0X3Jlc2V0X3NoYXJlZChQR19GVU5DVElP Tl9BUkdTKQogCQlYTG9nUHJlZmV0Y2hSZXNldFN0YXRzKCk7CiAJCXBnc3RhdF9yZXNldF9vZl9r aW5kKFBHU1RBVF9LSU5EX1NMUlUpOwogCQlwZ3N0YXRfcmVzZXRfb2Zfa2luZChQR1NUQVRfS0lO RF9XQUwpOworCQlwZ3N0YXRfcmVzZXRfb2Zfa2luZChQR1NUQVRfS0lORF9UQUJMRVNQQUNFKTsK IAogCQlQR19SRVRVUk5fVk9JRCgpOwogCX0KQEAgLTE5NDgsMTEgKzE5NDksMTMgQEAgcGdfc3Rh dF9yZXNldF9zaGFyZWQoUEdfRlVOQ1RJT05fQVJHUykKIAkJcGdzdGF0X3Jlc2V0X29mX2tpbmQo UEdTVEFUX0tJTkRfU0xSVSk7CiAJZWxzZSBpZiAoc3RyY21wKHRhcmdldCwgIndhbCIpID09IDAp CiAJCXBnc3RhdF9yZXNldF9vZl9raW5kKFBHU1RBVF9LSU5EX1dBTCk7CisJZWxzZSBpZiAoc3Ry Y21wKHRhcmdldCwgInRhYmxlc3BhY2UiKSA9PSAwKQorCQlwZ3N0YXRfcmVzZXRfb2Zfa2luZChQ R1NUQVRfS0lORF9UQUJMRVNQQUNFKTsKIAllbHNlCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVycm1zZygidW5y ZWNvZ25pemVkIHJlc2V0IHRhcmdldDogXCIlc1wiIiwgdGFyZ2V0KSwKLQkJCQkgZXJyaGludCgi VGFyZ2V0IG11c3QgYmUgXCJhcmNoaXZlclwiLCBcImJnd3JpdGVyXCIsIFwiY2hlY2twb2ludGVy XCIsIFwiaW9cIiwgXCJyZWNvdmVyeV9wcmVmZXRjaFwiLCBcInNscnVcIiwgb3IgXCJ3YWxcIi4i KSkpOworCQkJCSBlcnJoaW50KCJUYXJnZXQgbXVzdCBiZSBcImFyY2hpdmVyXCIsIFwiYmd3cml0 ZXJcIiwgXCJjaGVja3BvaW50ZXJcIiwgXCJpb1wiLCBcInJlY292ZXJ5X3ByZWZldGNoXCIsIFwi c2xydVwiLCBcIndhbFwiLCBvciBcInRhYmxlc3BhY2VcIi4iKSkpOwogCiAJUEdfUkVUVVJOX1ZP SUQoKTsKIH0KQEAgLTIzMDksNiArMjMxMiw4MSBAQCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb25f c3RhdHMoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fREFUVU0oSGVhcFR1cGxlR2V0RGF0 dW0oaGVhcF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpKSk7CiB9CiAKKy8qCisg KiBSZXR1cm5zIHRhYmxlc3BhY2Ugc3RhdGlzdGljcyBmb3IgdGhlIGdpdmVuIHRhYmxlc3BhY2Uu IElmIHRoZSB0YWJsZXNwYWNlCisgKiBzdGF0aXN0aWNzIGlzIG5vdCBhdmFpbGFibGUsIHJldHVy biBhbGwtemVyb3Mgc3RhdHMuCisgKi8KK0RhdHVtCitwZ19zdGF0X2dldF90YWJsZXNwYWNlKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisjZGVmaW5lIFBHX1NUQVRfR0VUX1RBQkxFU1BBQ0VfQ09MUwk3 CisJT2lkCQkJc3Bjb2lkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlUdXBsZURlc2MJdHVwZGVzYzsK KwlEYXR1bQkJdmFsdWVzW1BHX1NUQVRfR0VUX1RBQkxFU1BBQ0VfQ09MU10gPSB7MH07CisJYm9v bAkJbnVsbHNbUEdfU1RBVF9HRVRfVEFCTEVTUEFDRV9DT0xTXSA9IHswfTsKKwlQZ1N0YXRfU3Rh dFRhYnNwYWNlRW50cnkgKnRzZW50cnk7CisJUGdTdGF0X1N0YXRUYWJzcGFjZUVudHJ5IGFsbHpl cm87CisJaW50CQkJaSA9IDA7CisKKwkvKiBHZXQgdGFibGVzcGFjZSBzdGF0cyAqLworCXRzZW50 cnkgPSBwZ3N0YXRfZmV0Y2hfc3RhdF90YWJzcGFjZWVudHJ5KHNwY29pZCk7CisKKwkvKiBJbml0 aWFsaXNlIGF0dHJpYnV0ZXMgaW5mb3JtYXRpb24gaW4gdGhlIHR1cGxlIGRlc2NyaXB0b3IgKi8K Kwl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoUEdfU1RBVF9HRVRfVEFCTEVTUEFD RV9DT0xTKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDEsICJi bGtfcmVhZF90aW1lIiwKKwkJCQkJICAgRkxPQVQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5p dEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAyLCAiYmxrX3dyaXRlX3RpbWUiLAorCQkJCQkg ICBGTE9BVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJO dW1iZXIpIDMsICJibG9ja3NfZmV0Y2hlZCIsCisJCQkJCSAgIElOVDhPSUQsIC0xLCAwKTsKKwlU dXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDQsICJibG9ja3NfaGl0IiwK KwkJCQkJICAgSU5UOE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAo QXR0ck51bWJlcikgNSwgInRlbXBfZmlsZXMiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJ VHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA2LCAidGVtcF9ieXRlcyIs CisJCQkJCSAgIElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywg KEF0dHJOdW1iZXIpIDcsICJzdGF0c19yZXNldCIsCisJCQkJCSAgIFRJTUVTVEFNUFRaT0lELCAt MSwgMCk7CisKKwl0dXBkZXNjID0gQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7CisKKwlpZiAoIXRz ZW50cnkpCisJeworCQkvKiBJZiB0aGUgdGFibGVzcGFjZSBpcyBub3QgZm91bmQsIGluaXRpYWxp c2UgaXRzIHN0YXRzICovCisJCW1lbXNldCgmYWxsemVybywgMCwgc2l6ZW9mKFBnU3RhdF9TdGF0 VGFic3BhY2VFbnRyeSkpOworCQl0c2VudHJ5ID0gJmFsbHplcm87CisJfQorCisJLyogYmxrX3Jl YWRfdGltZSAqLworCXZhbHVlc1tpKytdID0gRmxvYXQ4R2V0RGF0dW0ocGdfc3RhdF91c190b19t cyh0c2VudHJ5LT5ibGtfcmVhZF90aW1lKSk7CisKKwkvKiBibGtfd3JpdGVfdGltZSAqLworCXZh bHVlc1tpKytdID0gRmxvYXQ4R2V0RGF0dW0ocGdfc3RhdF91c190b19tcyh0c2VudHJ5LT5ibGtf d3JpdGVfdGltZSkpOworCisJLyogYmxvY2tzX2ZldGNoZWQgKi8KKwl2YWx1ZXNbaSsrXSA9IElu dDY0R2V0RGF0dW0odHNlbnRyeS0+YmxvY2tzX2ZldGNoZWQpOworCisJLyogYmxvY2tzX2hpdCAq LworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh0c2VudHJ5LT5ibG9ja3NfaGl0KTsKKwor CS8qIHRlbXBfZmlsZXMgKi8KKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odHNlbnRyeS0+ dGVtcF9maWxlcyk7CisKKwkvKiB0ZW1wX2J5dGVzICovCisJdmFsdWVzW2krK10gPSBJbnQ2NEdl dERhdHVtKHRzZW50cnktPnRlbXBfYnl0ZXMpOworCisJLyogc3RhdHNfcmVzZXQgKi8KKwlpZiAo dHNlbnRyeS0+c3RhdF9yZXNldF90aW1lc3RhbXAgPT0gMCkKKwkJbnVsbHNbaV0gPSB0cnVlOwor CWVsc2UKKwkJdmFsdWVzW2ldID0gVGltZXN0YW1wVHpHZXREYXR1bSh0c2VudHJ5LT5zdGF0X3Jl c2V0X3RpbWVzdGFtcCk7CisKKwlBc3NlcnQoaSArIDEgPT0gUEdfU1RBVF9HRVRfVEFCTEVTUEFD RV9DT0xTKTsKKworCS8qIFJldHVybnMgdGhlIHJlY29yZCBhcyBEYXR1bSAqLworCVBHX1JFVFVS Tl9EQVRVTShIZWFwVHVwbGVHZXREYXR1bShoZWFwX2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVz LCBudWxscykpKTsKK30KKwogLyoKICAqIENoZWNrcyBmb3IgcHJlc2VuY2Ugb2Ygc3RhdHMgZm9y IG9iamVjdCB3aXRoIHByb3ZpZGVkIGtpbmQsIGRhdGFiYXNlIG9pZCwKICAqIG9iamVjdCBvaWQu CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oCmluZGV4IDQyMDg1MDI5M2Y4Li4zNTljMTQ1M2Y0MCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKKysrIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKQEAgLTU3LDYgKzU3LDYgQEAKICAqLwogCiAvKgkJ CQkJCQl5eXl5bW1kZE4gKi8KLSNkZWZpbmUgQ0FUQUxPR19WRVJTSU9OX05PCTIwMjYwMzIwMQor I2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAyNjAzMjAyCiAKICNlbmRpZgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKaW5kZXggODRlN2FkZGUwZTUuLmI4YTYwYjlmMzBhIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKQEAgLTYwODgsNiArNjA4OCwxNCBAQAogICBwcm9hcmduYW1lcyA9PiAne25h bWUsYmxrc196ZXJvZWQsYmxrc19oaXQsYmxrc19yZWFkLGJsa3Nfd3JpdHRlbixibGtzX2V4aXN0 cyxmbHVzaGVzLHRydW5jYXRlcyxzdGF0c19yZXNldH0nLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRf Z2V0X3NscnUnIH0sCiAKK3sgb2lkID0+ICc4NDU5JywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHRh Ymxlc3BhY2Ugc3RhdGlzdGljcycsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3RhYmxlc3Bh Y2UnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlw ZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisgIHByb2FsbGFyZ3R5cGVzID0+ ICd7b2lkLGZsb2F0OCxmbG9hdDgsaW50OCxpbnQ4LGludDgsaW50OCx0aW1lc3RhbXB0en0nLAor ICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAn e3RhYmxlc3BhY2VpZCxibGtfcmVhZF90aW1lLGJsa193cml0ZV90aW1lLGJsb2Nrc19mZXRjaGVk LGJsb2Nrc19oaXQsdGVtcF9maWxlcyx0ZW1wX2J5dGVzLHN0YXRzX3Jlc2V0fScsCisgIHByb3Ny YyA9PiAncGdfc3RhdF9nZXRfdGFibGVzcGFjZScgfSwKKwogeyBvaWQgPT4gJzI5NzgnLCBkZXNj ciA9PiAnc3RhdGlzdGljczogbnVtYmVyIG9mIGZ1bmN0aW9uIGNhbGxzJywKICAgcHJvbmFtZSA9 PiAncGdfc3RhdF9nZXRfZnVuY3Rpb25fY2FsbHMnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHBy b3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdv aWQnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdzdGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0 YXQuaAppbmRleCAyMTZiOTM0OTJiYS4uZDUxZWEyMDhkZGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3Bnc3RhdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCkBAIC0xODAsNiArMTgwLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1RhYmxlU3RhdHVzCiB7CiAJT2lkCQkJaWQ7CQkJCS8q IHRhYmxlJ3MgT0lEICovCiAJYm9vbAkJc2hhcmVkOwkJCS8qIGlzIGl0IGEgc2hhcmVkIGNhdGFs b2c/ICovCisJT2lkCQkJcmVsdGFibGVzcGFjZTsJLyogdGFibGVzcGFjZSBPSUQgKi8KIAlzdHJ1 Y3QgUGdTdGF0X1RhYmxlWGFjdFN0YXR1cyAqdHJhbnM7CS8qIGxvd2VzdCBzdWJ4YWN0J3MgY291 bnRzICovCiAJUGdTdGF0X1RhYmxlQ291bnRzIGNvdW50czsJLyogZXZlbnQgY291bnRzIHRvIGJl IHNlbnQgKi8KIAlSZWxhdGlvbglyZWxhdGlvbjsJCS8qIHJlbCB0aGF0IGlzIHVzaW5nIHRoaXMg ZW50cnkgKi8KQEAgLTM4Myw2ICszODQsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRE QkVudHJ5CiAJVGltZXN0YW1wVHogc3RhdF9yZXNldF90aW1lc3RhbXA7CiB9IFBnU3RhdF9TdGF0 REJFbnRyeTsKIAordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRUYWJzcGFjZUVudHJ5Cit7CisJ UGdTdGF0X0NvdW50ZXIgYmxrX3JlYWRfdGltZTsJLyogdGltZXMgaW4gbWljcm9zZWNvbmRzICov CisJUGdTdGF0X0NvdW50ZXIgYmxrX3dyaXRlX3RpbWU7CisJUGdTdGF0X0NvdW50ZXIgYmxvY2tz X2ZldGNoZWQ7CisJUGdTdGF0X0NvdW50ZXIgYmxvY2tzX2hpdDsKKwlQZ1N0YXRfQ291bnRlciB0 ZW1wX2ZpbGVzOworCVBnU3RhdF9Db3VudGVyIHRlbXBfYnl0ZXM7CisKKwlUaW1lc3RhbXBUeiBz dGF0X3Jlc2V0X3RpbWVzdGFtcDsKK30gUGdTdGF0X1N0YXRUYWJzcGFjZUVudHJ5OworCiB0eXBl ZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdEZ1bmNFbnRyeQogewogCVBnU3RhdF9Db3VudGVyIG51bWNh bGxzOwpAQCAtNzQzLDYgKzc1NiwxNSBAQCBleHRlcm4gUGdTdGF0X1N0YXRUYWJFbnRyeSAqcGdz dGF0X2ZldGNoX3N0YXRfdGFiZW50cnlfZXh0KGJvb2wgc2hhcmVkLAogZXh0ZXJuIFBnU3RhdF9U YWJsZVN0YXR1cyAqZmluZF90YWJzdGF0X2VudHJ5KE9pZCByZWxfaWQpOwogCiAKKy8qCisgKiBG dW5jdGlvbnMgaW4gcGdzdGF0X3RhYmxlc3BhY2UuYworICovCisKK2V4dGVybiB2b2lkIHBnc3Rh dF9kcm9wX3RhYmxlc3BhY2UoT2lkIHRhYmxlc3BhY2VpZCk7CitleHRlcm4gUGdTdGF0X1N0YXRU YWJzcGFjZUVudHJ5ICpwZ3N0YXRfZmV0Y2hfc3RhdF90YWJzcGFjZWVudHJ5KE9pZCB0YWJsZXNw YWNlaWQpOworZXh0ZXJuIFBnU3RhdF9TdGF0VGFic3BhY2VFbnRyeSAqcGdzdGF0X3ByZXBfdGFi bGVzcGFjZV9wZW5kaW5nKE9pZCB0YWJsZXNwYWNlaWQpOworCisKIC8qCiAgKiBGdW5jdGlvbnMg aW4gcGdzdGF0X3JlcGxzbG90LmMKICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv YmFja2VuZF9zdGF0dXMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgKaW5k ZXggZGRkMDYzMDRlOTcuLmEyYzUwMWVkZjAwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy9iYWNrZW5kX3N0YXR1cy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVz LmgKQEAgLTMyMyw3ICszMjMsNyBAQCBleHRlcm4gdm9pZCBwZ3N0YXRfY2xlYXJfYmFja2VuZF9h Y3Rpdml0eV9zbmFwc2hvdCh2b2lkKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfYWN0aXZp dHkoQmFja2VuZFN0YXRlIHN0YXRlLCBjb25zdCBjaGFyICpjbWRfc3RyKTsKIGV4dGVybiB2b2lk IHBnc3RhdF9yZXBvcnRfcXVlcnlfaWQoaW50NjQgcXVlcnlfaWQsIGJvb2wgZm9yY2UpOwogZXh0 ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9wbGFuX2lkKGludDY0IHBsYW5faWQsIGJvb2wgZm9yY2Up OwotZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF90ZW1wZmlsZShzaXplX3QgZmlsZXNpemUpOwor ZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF90ZW1wZmlsZShzaXplX3QgZmlsZXNpemUsIGNvbnN0 IGNoYXIgKnBhdGgpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9hcHBuYW1lKGNvbnN0IGNo YXIgKmFwcG5hbWUpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF94YWN0X3RpbWVzdGFtcChU aW1lc3RhbXBUeiB0c3RhbXApOwogZXh0ZXJuIGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfYmFja2Vu ZF9jdXJyZW50X2FjdGl2aXR5KGludCBwaWQsIGJvb2wgY2hlY2tVc2VyKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv cGdzdGF0X2ludGVybmFsLmgKaW5kZXggOWI4ZmJhZTAwZWQuLmZmMGFkNGZkYTU0IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9wZ3N0YXRfaW50ZXJuYWwuaApAQCAtNDk0LDYgKzQ5NCwxMiBAQCB0eXBlZGVmIHN0 cnVjdCBQZ1N0YXRTaGFyZWRfRGF0YWJhc2UKIAlQZ1N0YXRfU3RhdERCRW50cnkgc3RhdHM7CiB9 IFBnU3RhdFNoYXJlZF9EYXRhYmFzZTsKIAordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0U2hhcmVkX1Rh Ymxlc3BhY2UKK3sKKwlQZ1N0YXRTaGFyZWRfQ29tbW9uIGhlYWRlcjsKKwlQZ1N0YXRfU3RhdFRh YnNwYWNlRW50cnkgc3RhdHM7Cit9IFBnU3RhdFNoYXJlZF9UYWJsZXNwYWNlOworCiB0eXBlZGVm IHN0cnVjdCBQZ1N0YXRTaGFyZWRfUmVsYXRpb24KIHsKIAlQZ1N0YXRTaGFyZWRfQ29tbW9uIGhl YWRlcjsKQEAgLTczMSw2ICs3MzcsOCBAQCBleHRlcm4gUGdTdGF0X1N0YXREQkVudHJ5ICpwZ3N0 YXRfcHJlcF9kYXRhYmFzZV9wZW5kaW5nKE9pZCBkYm9pZCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRf cmVzZXRfZGF0YWJhc2VfdGltZXN0YW1wKE9pZCBkYm9pZCwgVGltZXN0YW1wVHogdHMpOwogZXh0 ZXJuIGJvb2wgcGdzdGF0X2RhdGFiYXNlX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlf cmVmLCBib29sIG5vd2FpdCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfZGF0YWJhc2VfcmVzZXRfdGlt ZXN0YW1wX2NiKFBnU3RhdFNoYXJlZF9Db21tb24gKmhlYWRlciwgVGltZXN0YW1wVHogdHMpOwor ZXh0ZXJuIGJvb2wgcGdzdGF0X3RhYmxlc3BhY2VfZmx1c2hfY2IoUGdTdGF0X0VudHJ5UmVmICpl bnRyeV9yZWYsIGJvb2wgbm93YWl0KTsKK2V4dGVybiB2b2lkIHBnc3RhdF90YWJsZXNwYWNlX3Jl c2V0X3RpbWVzdGFtcF9jYihQZ1N0YXRTaGFyZWRfQ29tbW9uICpoZWFkZXIsIFRpbWVzdGFtcFR6 IHRzKTsKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGdzdGF0X2tpbmQu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9raW5kLmgKaW5kZXggYzMwYjYyMzU2MjMuLmEy MWQ2YzNiOTI1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRfa2luZC5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9raW5kLmgKQEAgLTM4LDkgKzM4LDEwIEBACiAj ZGVmaW5lIFBHU1RBVF9LSU5EX0lPCTEwCiAjZGVmaW5lIFBHU1RBVF9LSU5EX1NMUlUJMTEKICNk ZWZpbmUgUEdTVEFUX0tJTkRfV0FMCTEyCisjZGVmaW5lIFBHU1RBVF9LSU5EX1RBQkxFU1BBQ0UJ MTMKIAogI2RlZmluZSBQR1NUQVRfS0lORF9CVUlMVElOX01JTiBQR1NUQVRfS0lORF9EQVRBQkFT RQotI2RlZmluZSBQR1NUQVRfS0lORF9CVUlMVElOX01BWCBQR1NUQVRfS0lORF9XQUwKKyNkZWZp bmUgUEdTVEFUX0tJTkRfQlVJTFRJTl9NQVggUEdTVEFUX0tJTkRfVEFCTEVTUEFDRQogI2RlZmlu ZSBQR1NUQVRfS0lORF9CVUlMVElOX1NJWkUgKFBHU1RBVF9LSU5EX0JVSUxUSU5fTUFYICsgMSkK IAogLyogQ3VzdG9tIHN0YXRzIGtpbmRzICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 CmluZGV4IDMyYmVhNThkYjJjLi43MmRhMmE3N2Q3ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y dWxlcy5vdXQKQEAgLTIzMDEsNiArMjMwMSwxNyBAQCBwZ19zdGF0X3N5c190YWJsZXN8IFNFTEVD VCByZWxpZCwKICAgICBzdGF0c19yZXNldAogICAgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMKICAg V0hFUkUgKChzY2hlbWFuYW1lID0gQU5ZIChBUlJBWVsncGdfY2F0YWxvZyc6Om5hbWUsICdpbmZv cm1hdGlvbl9zY2hlbWEnOjpuYW1lXSkpIE9SIChzY2hlbWFuYW1lIH4gJ15wZ190b2FzdCc6OnRl eHQpKTsKK3BnX3N0YXRfdGFibGVzcGFjZXwgU0VMRUNUIHQub2lkIEFTIHRhYmxlc3BhY2VfaWQs CisgICAgdC5zcGNuYW1lIEFTIHRhYmxlc3BhY2VfbmFtZSwKKyAgICBzLmJsa19yZWFkX3RpbWUs CisgICAgcy5ibGtfd3JpdGVfdGltZSwKKyAgICBzLmJsb2Nrc19mZXRjaGVkLAorICAgIHMuYmxv Y2tzX2hpdCwKKyAgICBzLnRlbXBfZmlsZXMsCisgICAgcy50ZW1wX2J5dGVzLAorICAgIHMuc3Rh dHNfcmVzZXQKKyAgIEZST00gKHBnX3RhYmxlc3BhY2UgdAorICAgICBMRUZUIEpPSU4gTEFURVJB TCBwZ19zdGF0X2dldF90YWJsZXNwYWNlKHQub2lkKSBzKGJsa19yZWFkX3RpbWUsIGJsa193cml0 ZV90aW1lLCBibG9ja3NfZmV0Y2hlZCwgYmxvY2tzX2hpdCwgdGVtcF9maWxlcywgdGVtcF9ieXRl cywgc3RhdHNfcmVzZXQpIE9OICh0cnVlKSk7CiBwZ19zdGF0X3VzZXJfZnVuY3Rpb25zfCBTRUxF Q1QgcC5vaWQgQVMgZnVuY2lkLAogICAgIG4ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICAgIHAu cHJvbmFtZSBBUyBmdW5jbmFtZSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc3RhdHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQKaW5kZXgg Yjk5NDYyYmY5NDYuLjRkMmRiMzEyZTQ3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N0YXRzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzLm91 dApAQCAtMTEzMCw3ICsxMTMwLDcgQEAgU0VMRUNUIHN0YXRzX3Jlc2V0ID4gOid3YWxfcmVzZXRf dHMnOjp0aW1lc3RhbXB0eiBGUk9NIHBnX3N0YXRfd2FsOwogLS0gVGVzdCBlcnJvciBjYXNlIGZv ciByZXNldF9zaGFyZWQgd2l0aCB1bmtub3duIHN0YXRzIHR5cGUKIFNFTEVDVCBwZ19zdGF0X3Jl c2V0X3NoYXJlZCgndW5rbm93bicpOwogRVJST1I6ICB1bnJlY29nbml6ZWQgcmVzZXQgdGFyZ2V0 OiAidW5rbm93biIKLUhJTlQ6ICBUYXJnZXQgbXVzdCBiZSAiYXJjaGl2ZXIiLCAiYmd3cml0ZXIi LCAiY2hlY2twb2ludGVyIiwgImlvIiwgInJlY292ZXJ5X3ByZWZldGNoIiwgInNscnUiLCBvciAi d2FsIi4KK0hJTlQ6ICBUYXJnZXQgbXVzdCBiZSAiYXJjaGl2ZXIiLCAiYmd3cml0ZXIiLCAiY2hl Y2twb2ludGVyIiwgImlvIiwgInJlY292ZXJ5X3ByZWZldGNoIiwgInNscnUiLCAid2FsIiwgb3Ig InRhYmxlc3BhY2UiLgogLS0gVGVzdCB0aGF0IHJlc2V0IHdvcmtzIGZvciBwZ19zdGF0X2RhdGFi YXNlIGFuZCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cwogLS0gU2luY2UgcGdfc3RhdF9kYXRh YmFzZSBzdGF0c19yZXNldCBzdGFydHMgb3V0IGFzIE5VTEwsIHJlc2V0IGl0IG9uY2UgZmlyc3Qg c28gdGhhdCB3ZQogLS0gaGF2ZSBhIGJhc2VsaW5lIGZvciBjb21wYXJpc29uLiBUaGUgc2FtZSBm b3IgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMgYXMgaXQgc2hhcmVzCkBAIC0xOTU4LDQgKzE5 NTgsODUgQEAgU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJP TSB0YWJsZV9maWxsZmFjdG9yJyk7CiAoMSByb3cpCiAKIERST1AgVEFCTEUgdGFibGVfZmlsbGZh Y3RvcjsKKy0tIFRlc3QgcGdfc3RhdF90YWJsZXNwYWNlCitTRUxFQ1QgY291bnQoKikgPiAwIEZS T00gcGdfc3RhdF90YWJsZXNwYWNlOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJv dykKKworU0VMRUNUIHRhYmxlc3BhY2VfbmFtZSBGUk9NIHBnX3N0YXRfdGFibGVzcGFjZSBXSEVS RSB0YWJsZXNwYWNlX25hbWUgSU4gKCdwZ19kZWZhdWx0JywgJ3BnX2dsb2JhbCcpIE9SREVSIEJZ IHRhYmxlc3BhY2VfbmFtZTsKKyB0YWJsZXNwYWNlX25hbWUgCistLS0tLS0tLS0tLS0tLS0tLQor IHBnX2RlZmF1bHQKKyBwZ19nbG9iYWwKKygyIHJvd3MpCisKKy0tIFRlc3QgYmxvY2sgc3RhdHMg aW4gcGdfc3RhdF90YWJsZXNwYWNlCitTRVQgdHJhY2tfaW9fdGltaW5nID0gb247CitDUkVBVEUg VEFCTEUgdGVzdF90YWJsZXNwYWNlX3N0YXRzIChhIGludCk7CitJTlNFUlQgSU5UTyB0ZXN0X3Rh Ymxlc3BhY2Vfc3RhdHMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDApOworU0VMRUNUIGNv dW50KCopIEZST00gdGVzdF90YWJsZXNwYWNlX3N0YXRzOworIGNvdW50IAorLS0tLS0tLQorICAg MTAwCisoMSByb3cpCisKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitTRUxFQ1QgYmxvY2tzX2ZldGNoZWQgPj0gMCBBUyBoYXNfYmxvY2tzX2ZldGNoZWQs IGJsb2Nrc19oaXQgPj0gMCBBUyBoYXNfYmxvY2tzX2hpdCwgYmxrX3JlYWRfdGltZSA+PSAwIEFT IGhhc19ibGtfcmVhZF90aW1lLCBibGtfd3JpdGVfdGltZSA+PSAwIEFTIGhhc19ibGtfd3JpdGVf dGltZSBGUk9NIHBnX3N0YXRfdGFibGVzcGFjZSBXSEVSRSB0YWJsZXNwYWNlX25hbWUgPSAncGdf ZGVmYXVsdCc7CisgaGFzX2Jsb2Nrc19mZXRjaGVkIHwgaGFzX2Jsb2Nrc19oaXQgfCBoYXNfYmxr X3JlYWRfdGltZSB8IGhhc19ibGtfd3JpdGVfdGltZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLQor IHQgICAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICAg fCB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVzdF90YWJsZXNwYWNlX3N0YXRzOworLS0gVGVz dCB0ZW1wIGZpbGUgc3RhdHMgaW4gcGdfc3RhdF90YWJsZXNwYWNlCistLSBVc2UgYSBzb3J0IHRo YXQgZXhjZWVkcyB3b3JrX21lbSB0byBmb3JjZSB0ZW1wIGZpbGUgdXNhZ2UKK1NFVCB3b3JrX21l bSA9ICc2NGtCJzsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIChTRUxFQ1QgKiBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAxMDAwMCkgQVMgcyBPUkRFUiBCWSBzIERFU0MpIEFTIGZvbzsKKyBjb3VudCAK Ky0tLS0tLS0KKyAxMDAwMAorKDEgcm93KQorCitSRVNFVCB3b3JrX21lbTsKK1NFTEVDVCBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBXZSBleHBlY3QgdGVtcCBm aWxlcyB0byBiZSBpbiBwZ19kZWZhdWx0IGlmIG5vdCBzcGVjaWZpZWQgb3RoZXJ3aXNlCitTRUxF Q1QgdGVtcF9maWxlcyA+IDAgQVMgaGFzX3RlbXBfZmlsZXMsIHRlbXBfYnl0ZXMgPiAwIEFTIGhh c190ZW1wX2J5dGVzIEZST00gcGdfc3RhdF90YWJsZXNwYWNlIFdIRVJFIHRhYmxlc3BhY2VfbmFt ZSA9ICdwZ19kZWZhdWx0JzsKKyBoYXNfdGVtcF9maWxlcyB8IGhhc190ZW1wX2J5dGVzIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgICAgICAgfCB0CisoMSBy b3cpCisKKy0tIFRlc3QgcmVzZXQgZm9yIHBnX3N0YXRfdGFibGVzcGFjZQorLS0gRW5zdXJlIHdl IGhhdmUgYSB0aW1lc3RhbXAgdG8gY29tcGFyZQorU0VMRUNUIHBnX3N0YXRfcmVzZXRfc2hhcmVk KCd0YWJsZXNwYWNlJyk7CisgcGdfc3RhdF9yZXNldF9zaGFyZWQgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBzdGF0c19yZXNldCBBUyB0c19yZXNldF9iZWZv cmUgRlJPTSBwZ19zdGF0X3RhYmxlc3BhY2UgV0hFUkUgdGFibGVzcGFjZV9uYW1lID0gJ3BnX2Rl ZmF1bHQnIFxnc2V0CitTRUxFQ1QgcGdfc3RhdF9yZXNldF9zaGFyZWQoJ3RhYmxlc3BhY2UnKTsK KyBwZ19zdGF0X3Jlc2V0X3NoYXJlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIHN0YXRzX3Jlc2V0ID4gOid0c19yZXNldF9iZWZvcmUnOjp0aW1lc3RhbXB0 eiBGUk9NIHBnX3N0YXRfdGFibGVzcGFjZSBXSEVSRSB0YWJsZXNwYWNlX25hbWUgPSAncGdfZGVm YXVsdCc7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCiAtLSBFbmQgb2Yg U3RhdHMgVGVzdApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHMuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHMuc3FsCmluZGV4IDk0MTIyMmNmMGJlLi41OWQ5MmMw NmYyYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHMuc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzLnNxbApAQCAtOTY0LDQgKzk2NCw0MCBAQCBTRUxFQ1Qg KiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIHRhYmxlX2ZpbGxmYWN0 b3InKTsKIAogRFJPUCBUQUJMRSB0YWJsZV9maWxsZmFjdG9yOwogCistLSBUZXN0IHBnX3N0YXRf dGFibGVzcGFjZQorU0VMRUNUIGNvdW50KCopID4gMCBGUk9NIHBnX3N0YXRfdGFibGVzcGFjZTsK KworU0VMRUNUIHRhYmxlc3BhY2VfbmFtZSBGUk9NIHBnX3N0YXRfdGFibGVzcGFjZSBXSEVSRSB0 YWJsZXNwYWNlX25hbWUgSU4gKCdwZ19kZWZhdWx0JywgJ3BnX2dsb2JhbCcpIE9SREVSIEJZIHRh Ymxlc3BhY2VfbmFtZTsKKworLS0gVGVzdCBibG9jayBzdGF0cyBpbiBwZ19zdGF0X3RhYmxlc3Bh Y2UKK1NFVCB0cmFja19pb190aW1pbmcgPSBvbjsKK0NSRUFURSBUQUJMRSB0ZXN0X3RhYmxlc3Bh Y2Vfc3RhdHMgKGEgaW50KTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGVzcGFjZV9zdGF0cyBTRUxF Q1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCk7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3Rh Ymxlc3BhY2Vfc3RhdHM7CisKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKwor U0VMRUNUIGJsb2Nrc19mZXRjaGVkID49IDAgQVMgaGFzX2Jsb2Nrc19mZXRjaGVkLCBibG9ja3Nf aGl0ID49IDAgQVMgaGFzX2Jsb2Nrc19oaXQsIGJsa19yZWFkX3RpbWUgPj0gMCBBUyBoYXNfYmxr X3JlYWRfdGltZSwgYmxrX3dyaXRlX3RpbWUgPj0gMCBBUyBoYXNfYmxrX3dyaXRlX3RpbWUgRlJP TSBwZ19zdGF0X3RhYmxlc3BhY2UgV0hFUkUgdGFibGVzcGFjZV9uYW1lID0gJ3BnX2RlZmF1bHQn OworCitEUk9QIFRBQkxFIHRlc3RfdGFibGVzcGFjZV9zdGF0czsKKy0tIFRlc3QgdGVtcCBmaWxl IHN0YXRzIGluIHBnX3N0YXRfdGFibGVzcGFjZQorLS0gVXNlIGEgc29ydCB0aGF0IGV4Y2VlZHMg d29ya19tZW0gdG8gZm9yY2UgdGVtcCBmaWxlIHVzYWdlCitTRVQgd29ya19tZW0gPSAnNjRrQic7 CitTRUxFQ1QgY291bnQoKikgRlJPTSAoU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MTAwMDApIEFTIHMgT1JERVIgQlkgcyBERVNDKSBBUyBmb287CisKK1JFU0VUIHdvcmtfbWVtOwor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworCistLSBXZSBleHBlY3QgdGVtcCBm aWxlcyB0byBiZSBpbiBwZ19kZWZhdWx0IGlmIG5vdCBzcGVjaWZpZWQgb3RoZXJ3aXNlCitTRUxF Q1QgdGVtcF9maWxlcyA+IDAgQVMgaGFzX3RlbXBfZmlsZXMsIHRlbXBfYnl0ZXMgPiAwIEFTIGhh c190ZW1wX2J5dGVzIEZST00gcGdfc3RhdF90YWJsZXNwYWNlIFdIRVJFIHRhYmxlc3BhY2VfbmFt ZSA9ICdwZ19kZWZhdWx0JzsKKworLS0gVGVzdCByZXNldCBmb3IgcGdfc3RhdF90YWJsZXNwYWNl CistLSBFbnN1cmUgd2UgaGF2ZSBhIHRpbWVzdGFtcCB0byBjb21wYXJlCitTRUxFQ1QgcGdfc3Rh dF9yZXNldF9zaGFyZWQoJ3RhYmxlc3BhY2UnKTsKKworU0VMRUNUIHN0YXRzX3Jlc2V0IEFTIHRz X3Jlc2V0X2JlZm9yZSBGUk9NIHBnX3N0YXRfdGFibGVzcGFjZSBXSEVSRSB0YWJsZXNwYWNlX25h bWUgPSAncGdfZGVmYXVsdCcgXGdzZXQKK1NFTEVDVCBwZ19zdGF0X3Jlc2V0X3NoYXJlZCgndGFi bGVzcGFjZScpOworCitTRUxFQ1Qgc3RhdHNfcmVzZXQgPiA6J3RzX3Jlc2V0X2JlZm9yZSc6OnRp bWVzdGFtcHR6IEZST00gcGdfc3RhdF90YWJsZXNwYWNlIFdIRVJFIHRhYmxlc3BhY2VfbmFtZSA9 ICdwZ19kZWZhdWx0JzsKKwogLS0gRW5kIG9mIFN0YXRzIFRlc3QKLS0gCjIuNTMuMC45ODMuZzBi YjI5YjNiYzUtZ29vZwoKCg== --000000000000a4999e064db5c4c8--