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 1wHXlh-007HUq-23 for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Apr 2026 02:01:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wHXlf-00FXlN-2R for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Apr 2026 02:01:43 +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 ) id 1wHXlf-00FXlE-0B for pgsql-hackers@lists.postgresql.org; Tue, 28 Apr 2026 02:01:43 +0000 Received: from forward102a.mail.yandex.net ([178.154.239.85]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wHXla-00000003Rt5-2pCL for pgsql-hackers@postgresql.org; Tue, 28 Apr 2026 02:01:42 +0000 Received: from mail-nwsmtp-smtp-production-main-64.vla.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-64.vla.yp-c.yandex.net [IPv6:2a02:6b8:c18:31e:0:640:f144:0]) by forward102a.mail.yandex.net (Yandex) with ESMTPS id 2C651C005D; Tue, 28 Apr 2026 05:01:37 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-64.vla.yp-c.yandex.net (smtp) with ESMTPSA id O1Ob7RtSuGk0-rdG9VhC1; Tue, 28 Apr 2026 05:01:33 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1777341696; bh=apYgkFLfnu8FMfvQy9amx5iy3Ih0I+cU3UXrJRefhvw=; h=In-Reply-To:Cc:Date:References:To:Subject:Message-ID:From; b=dZ2hHCx2MTQu1n1nFyLoes4vgrR1bj2gOUAKocGbQ0MrKlzH8HjRw+qWhYBxUp/zc 9QD4pxKiO4hd4XmATu7Ei9TMBZi/Apxu7x4y6fnAKMZezx0osHAJPAm7vMhKlGnmPf 9WrqRbu4koQ0N4fgoKbVlOuD3GNxFJJRgUB893W0= Authentication-Results: mail-nwsmtp-smtp-production-main-64.vla.yp-c.yandex.net; dkim=pass header.i=@yandex.ru Content-Type: multipart/mixed; boundary="------------thBbqvYkvYX0JXIsOOCVBtFF" Message-ID: <5bc44024-add6-40fd-a8e6-6c4559e09478@yandex.ru> Date: Tue, 28 Apr 2026 05:16:29 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Vacuum statistics From: Alena Rybakina To: pgsql-hackers Cc: Amit Kapila , Jim Nasby , Bertrand Drouvot , Kirill Reshke , Masahiko Sawada , Melanie Plageman , jian he , Sami Imseih , vignesh C , Alexander Korotkov , Ilia Evdokimov , Andrey Borodin , Andrei Zubkov , Andrei Lepikhov References: <86f76aa5-1ab5-4e2e-9b15-405051852a2a@postgrespro.ru> <612819ad-beca-41fb-bb7f-d5a7c11f0045@yandex.ru> <277ce149-4333-463d-bad6-ccd785606c7f@yandex.ru> <3f9c57bc-dc1f-4ad8-a2e1-5be15ac79264@yandex.ru> <77f1b8bc-b365-4e88-b87b-ced37fabbbf0@yandex.ru> <7a74d6af-85e2-4b48-9133-61309a965954@yandex.ru> <1885f257-46cc-4b90-8d90-41833eb62ea9@gmail.com> <0e84acdc-ba65-44fa-be1f-4d6a86bca2ac@yandex.ru> <8bd78e04-6efa-4fcf-b157-8ac3b92375c8@yandex.ru> <10BE6E39-94D2-4909-ACB8-24E1FA6580EE@yandex-team.ru> <877b2c60-6681-4471-ba72-86153f0b9286@yandex.ru> <69e99101-a308-468f-b895-8057305699bf@yandex.ru> <788e9ff4-3ed7-454c-8863-b40bc3288bc9@yandex.ru> Content-Language: en-US In-Reply-To: <788e9ff4-3ed7-454c-8863-b40bc3288bc9@yandex.ru> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------thBbqvYkvYX0JXIsOOCVBtFF Content-Type: multipart/alternative; boundary="------------LYEW8o887lOP5sQnf5efiPMa" --------------LYEW8o887lOP5sQnf5efiPMa Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, all! I have updated the core patch that implements the machinery for collecting extended vacuum statistics (I didn't touch the first patch that is ready for commit, only patches that are related to extension), and rebased the ext_vacuum_statistics extension on top of it. The split is intentional: the core only gathers metrics and hands them out, while the actual storage and SQL-level access to the statistics live entirely in the extension. If the extension is not loaded, the overhead is essentially zero - we only fill a small struct on the stack and do a NULL check on the hook. What was updated in the core The core gains the machinery and the hook through which the extension receives metrics after each vacuum. The hook. A new hook has been added in pgstat - set_report_vacuum_hook. It is fired once per vacuumed table and once per vacuumed index, plus when forming the per-database aggregate. The extension registers its handler in _PG_init and by default the hook is NULL, so without an extension the core behaves exactly as before. The set of statistics is the same as before. Common to tables, indexes and the database - hits and misses in shared buffers, number of dirtied and written pages, WAL volume, buffer read and write times, sleep time spent in delay points, total wall-clock vacuum time (including I/O and lock waits), counter of emergency anti-wraparound vacuums, number of interrupts and removed tuples. Tables additionally report frozen tuples, pages marked all-frozen / all-visible in the visibility map, number of scanned and removed pages, number of index passes, etc. Indexes report freed pages. The least obvious part of the implementation is subtracting index statistics from the table statistics. This is the bit worth highlighting. The thing is that indexes are vacuumed before the heap, and the buffer and WAL statistics that we capture at the heap level by the end of the heap vacuum already include everything that was spent on the indexes. If we simply expose the diff of pgBufferUsage/pgWalUsage between start and end, the table ends up with double-counted pages/WAL: once in its own report, and a second time inside the reports of its indexes. This is especially noticeable with parallel index vacuum: workers accumulate their usage in the leader only after they finish, so without subtraction the heap report would receive the combined cost of all workers as a "bonus". To handle this, as each index finishes vacuuming, its counters are accumulated into the state of the current operation, and at the moment the heap report is built these sums are subtracted out. As a result, the extension receives clean numbers: "this is what was actually spent on the table itself", and separately "this is what was actually spent on each index". The behaviour is idempotent for both serial and parallel vacuum. The ext_vacuum_statistics extension The extension registers the hook handler and stores the received data through the pgstat custom statistics infrastructure. That is, vacuum counters are kept not in the extension's own files, but together with the regular cumulative statistics - they survive a restart and are reset together with pg_stat_reset_*. Access is provided through three views: one for tables, one for indexes, and one with the per-database aggregate. Filtering This is where the main flexibility lives - the extension does not force "collect everything", but lets you choose both what to track and which metrics to keep. By object type. You can limit collection to databases only (without per-table detail), to tables only, or collect both. Among tables, you can additionally filter system / user / all. By an explicit list. An alternative to "by type" is a whitelist: you turn the corresponding mode on, and the extension starts collecting statistics only for the databases and tables that were explicitly registered via add_track_database / add_track_relation (with matching remove_* for removal). When the lists are off, the type filter is in effect; when they are on, only the list applies. This is convenient when you are interested in monitoring specific "hot" tables and do not want to spend memory on statistics for everything else. This list is persisted to disk, and there is one more non-trivial part here. List changes are concurrent - multiple sessions may call add_track_* simultaneously, plus there is an object-access hook that cleans the entry on DROP. To avoid ending up with a torn file, access to the list is serialized via a dedicated LWLock tranche (requested from a shmem_request_hook), and the file itself is written atomically: first into a temporary file, then fflush + pg_fsync + durable_rename. All I/O return codes are checked; on error the temporary file is removed and the real one is left untouched; PG_TRY/PG_CATCH guarantees cleanup on ereport(ERROR). Reading the list takes the same lock in shared mode, so a concurrent write cannot tear the load. By metric category. There is also a GUC that takes a list and turns on the categories of interest - buffers, WAL, general counters, timings (or all). Unwanted categories are simply skipped on the hook handler side and never make it into the pgstat entry, which reduces the overhead of the handler itself. This is useful when, for example, only timings are needed - in that case the extension does not waste time copying the buffer and WAL fields. Privileges. The add_track_* / remove_track_* functions require superuser or pg_read_all_stats. At the SQL level, EXECUTE is revoked from PUBLIC and granted only to pg_read_all_stats, so a regular user has no access to mutating the list. The views are unrestricted, like regular statistics. What is in the patches 0002-Machinery-for-grabbing-extended-vacuum-statistics.patch - the machinery in the core plus the hook. 0003-ext_vacuum_statistics-...patch - the extension itself, filtering, views, tests. ----------- Best regards, Alena Rybakina Yandex Cloud --------------LYEW8o887lOP5sQnf5efiPMa Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit

Hi, all!

I have updated the core patch that implements the machinery for collecting extended vacuum statistics (I didn't touch the first patch that is ready for commit, only patches that are related to extension), and rebased the ext_vacuum_statistics extension on top of it. The split is intentional: the core only gathers metrics and hands them out, while the actual storage and SQL-level access to the statistics live entirely in the extension. If the extension is not loaded, the overhead is essentially zero - we only fill a small struct on the stack and do a NULL check on the hook.

What was updated in the core

The core gains the machinery and the hook through which the extension receives metrics after each vacuum.

The hook. A new hook has been added in pgstat - set_report_vacuum_hook. It is fired once per vacuumed table and once per vacuumed index, plus when forming the per-database aggregate. The extension registers its handler in _PG_init and by default the hook is NULL, so without an extension the core behaves exactly as before.

The set of statistics is the same as before. Common to tables, indexes and the database - hits and misses in shared buffers, number of dirtied and written pages, WAL volume, buffer read and write times, sleep time spent in delay points, total wall-clock vacuum time (including I/O and lock waits), counter of emergency anti-wraparound vacuums, number of interrupts and removed tuples. Tables additionally report frozen tuples, pages marked all-frozen / all-visible in the visibility map, number of scanned and removed pages, number of index passes, etc. Indexes report freed pages.

The least obvious part of the implementation is subtracting index statistics from the table statistics. This is the bit worth highlighting. The thing is that indexes are vacuumed before the heap, and the buffer and WAL statistics that we capture at the heap level by the end of the heap vacuum already include everything that was spent on the indexes. If we simply expose the diff of pgBufferUsage/pgWalUsage between start and end, the table ends up with double-counted pages/WAL: once in its own report, and a second time inside the reports of its indexes. This is especially noticeable with parallel index vacuum: workers accumulate their usage in the leader only after they finish, so without subtraction the heap report would receive the combined cost of all workers as a "bonus".

To handle this, as each index finishes vacuuming, its counters are accumulated into the state of the current operation, and at the moment the heap report is built these sums are subtracted out. As a result, the extension receives clean numbers: "this is what was actually spent on the table itself", and separately "this is what was actually spent on each index". The behaviour is idempotent for both serial and parallel vacuum.

The ext_vacuum_statistics extension

The extension registers the hook handler and stores the received data through the pgstat custom statistics infrastructure. That is, vacuum counters are kept not in the extension's own files, but together with the regular cumulative statistics - they survive a restart and are reset together with pg_stat_reset_*. Access is provided through three views: one for tables, one for indexes, and one with the per-database aggregate.

Filtering

This is where the main flexibility lives - the extension does not force "collect everything", but lets you choose both what to track and which metrics to keep.

By object type. You can limit collection to databases only (without per-table detail), to tables only, or collect both. Among tables, you can additionally filter system / user / all.

By an explicit list. An alternative to "by type" is a whitelist: you turn the corresponding mode on, and the extension starts collecting statistics only for the databases and tables that were explicitly registered via add_track_database / add_track_relation (with matching remove_* for removal). When the lists are off, the type filter is in effect; when they are on, only the list applies. This is convenient when you are interested in monitoring specific "hot" tables and do not want to spend memory on statistics for everything else.
This list is persisted to disk, and there is one more non-trivial part here. List changes are concurrent - multiple sessions may call add_track_* simultaneously, plus there is an object-access hook that cleans the entry on DROP. To avoid ending up with a torn file, access to the list is serialized via a dedicated LWLock tranche (requested from a shmem_request_hook), and the file itself is written atomically: first into a temporary file, then fflush + pg_fsync + durable_rename. All I/O return codes are checked; on error the temporary file is removed and the real one is left untouched; PG_TRY/PG_CATCH guarantees cleanup on ereport(ERROR). Reading the list takes the same lock in shared mode, so a concurrent write cannot tear the load.

By metric category. There is also a GUC that takes a list and turns on the categories of interest - buffers, WAL, general counters, timings (or all). Unwanted categories are simply skipped on the hook handler side and never make it into the pgstat entry, which reduces the overhead of the handler itself. This is useful when, for example, only timings are needed - in that case the extension does not waste time copying the buffer and WAL fields.

Privileges. The add_track_* / remove_track_* functions require superuser or pg_read_all_stats. At the SQL level, EXECUTE is revoked from PUBLIC and granted only to pg_read_all_stats, so a regular user has no access to mutating the list. The views are unrestricted, like regular statistics.

What is in the patches

0002-Machinery-for-grabbing-extended-vacuum-statistics.patch - the machinery in the core plus the hook.
0003-ext_vacuum_statistics-...patch - the extension itself, filtering, views, tests.

-----------
Best regards,
Alena Rybakina
Yandex Cloud
--------------LYEW8o887lOP5sQnf5efiPMa-- --------------thBbqvYkvYX0JXIsOOCVBtFF Content-Type: text/plain; charset=UTF-8; name="v38-0001-Track-table-VM-stability.patch" Content-Disposition: attachment; filename="v38-0001-Track-table-VM-stability.patch" Content-Transfer-Encoding: base64 RnJvbSAxOWY1YTM5ZjdlOTdkM2ZjMmQxODQxNWJhMmM1MWZmY2QzYjMyZjQ5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YWxlbmthLnJ5YmFraW5h QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAzMCBNYXIgMjAyNiAwOTowNzoyNCArMDMwMApTdWJq ZWN0OiBbUEFUQ0ggMS8zXSBUcmFjayB0YWJsZSBWTSBzdGFiaWxpdHkuCgpBZGQgcmV2X2Fs bF92aXNpYmxlX3BhZ2VzIGFuZCByZXZfYWxsX2Zyb3plbl9wYWdlcyBjb3VudGVycyB0bwpw Z19zdGF0X2FsbF90YWJsZXMgdHJhY2tpbmcgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgYWxs LXZpc2libGUgYW5kCmFsbC1mcm96ZW4gYml0cyBhcmUgY2xlYXJlZCBpbiB0aGUgdmlzaWJp bGl0eSBtYXAuIFRoZXNlIGJpdHMgYXJlIGNsZWFyZWQgYnkKYmFja2VuZCBwcm9jZXNzZXMg ZHVyaW5nIHJlZ3VsYXIgRE1MIG9wZXJhdGlvbnMuIEhlbmNlLCB0aGUgY291bnRlcnMgYXJl IHBsYWNlZAppbiB0YWJsZSBzdGF0aXN0aWMgZW50cnkuCgpBIGhpZ2ggcmV2X2FsbF92aXNp YmxlX3BhZ2VzIHJhdGUgcmVsYXRpdmUgdG8gRE1MIHZvbHVtZSBpbmRpY2F0ZXMKdGhhdCBt b2RpZmljYXRpb25zIGFyZSBzY2F0dGVyZWQgYWNyb3NzIHByZXZpb3VzbHktY2xlYW4gcGFn ZXMgcmF0aGVyCnRoYW4gY29uY2VudHJhdGVkIG9uIGFscmVhZHktZGlydHkgb25lcywgY2F1 c2luZyBpbmRleC1vbmx5IHNjYW5zIHRvCmZhbGwgYmFjayB0byBoZWFwIGZldGNoZXMuICBB IGhpZ2ggcmV2X2FsbF9mcm96ZW5fcGFnZXMgcmF0ZSBpbmRpY2F0ZXMKdGhhdCB2YWN1dW0n cyBmcmVlemluZyB3b3JrIGlzIGJlaW5nIGZyZXF1ZW50bHkgdW5kb25lIGJ5IGNvbmN1cnJl bnQKRE1MLgoKQXV0aG9yczogQWxlbmEgUnliYWtpbmEgPGxlbmEucmliYWNraW5hQHlhbmRl eC5ydT4sCiAgICAgICAgIEFuZHJlaSBMZXBpa2hvdiA8bGVwaWhvdkBnbWFpbC5jb20+LAog ICAgICAgICBBbmRyZWkgWnVia292IDxhLnp1YmtvdkBwb3N0Z3Jlc3Byby5ydT4KUmV2aWV3 ZWQtYnk6IERpbGlwIEt1bWFyIDxkaWxpcGJhbGF1dEBnbWFpbC5jb20+LAogICAgICAgICBN YXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNvbT4sCiAgICAgICAgIElsaWEg RXZkb2tpbW92IDxpbHlhLmV2ZG9raW1vdkB0YW50b3JsYWJzLmNvbT4sCiAgICAgICAgIEpp YW4gSGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4sCiAgICAgICAgIEtpcmlsbCBS ZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+LAogICAgICAgICBBbGV4YW5kZXIgS29y b3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPiwKICAgICAgICAgSmltIE5hc2J5IDxqbmFz YnlAdXBncmFkZS5jb20+LAogICAgICAgICBTYW1pIEltc2VpaCA8c2FtaW1zZWloQGdtYWls LmNvbT4sCiAgICAgICAgIEthcmluYSBMaXRza2V2aWNoIDxsaXRza2V2aWNoa2FyaW5hQGdt YWlsLmNvbT4sCiAgICAgICAgIEFuZHJleSBCb3JvZGluIDx4NG1tbUB5YW5kZXgtdGVhbS5y dT4KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgICAg fCAgMzIgKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgICAg ICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAg ICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRp b24uYyAgfCAgIDIgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgICAg ICAgICAgIHwgICA2ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAg ICAgICAgICB8ICAxMCArCiBzcmMvaW5jbHVkZS9wZ3N0YXQuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMTcgKy0KIC4uLi9leHBlY3RlZC92YWN1dW0tZXh0ZW5kaW5nLWZyZWV6 ZS5vdXQgICAgICB8IDE4NSArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L2lzb2xhdGlv bi9pc29sYXRpb25fc2NoZWR1bGUgICAgICAgICB8ICAgMSArCiAuLi4vc3BlY3MvdmFjdXVt LWV4dGVuZGluZy1mcmVlemUuc3BlYyAgICAgICAgfCAxMTcgKysrKysrKysrKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICAgICB8ICAxMiArLQogMTEg ZmlsZXMgY2hhbmdlZCwgMzkxIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3ZhY3V1bS1leHRl bmRpbmctZnJlZXplLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlv bi9zcGVjcy92YWN1dW0tZXh0ZW5kaW5nLWZyZWV6ZS5zcGVjCgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNn bWwKaW5kZXggMDhkNWI4MjQ1NTIuLjM0NjdhYmY2ZDhhIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNn bWwKQEAgLTQzNzcsNiArNDM3NywzOCBAQCBkZXNjcmlwdGlvbiB8IFdhaXRpbmcgZm9yIGEg bmV3bHkgaW5pdGlhbGl6ZWQgV0FMIGZpbGUgdG8gcmVhY2ggZHVyYWJsZSBzdG9yYWdlCiAg ICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnZpc2libGVfcGFnZV9tYXJrc19j bGVhcmVkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIHRpbWVzIHRoZSBhbGwtdmlzaWJs ZSBtYXJrIGluIHRoZQorICAgICAgIDxsaW5rIGxpbmtlbmQ9InN0b3JhZ2Utdm0iPnZpc2li aWxpdHkgbWFwPC9saW5rPiB3YXMgY2xlYXJlZCBmb3IKKyAgICAgICBwYWdlcyBvZiB0aGlz IHRhYmxlLiAgVGhlIGFsbC12aXNpYmxlIG1hcmsgb2YgYSBoZWFwIHBhZ2UgaXMKKyAgICAg ICBjbGVhcmVkIHdoZW5ldmVyIGEgYmFja2VuZCBwcm9jZXNzIG1vZGlmaWVzIGEgcGFnZSB0 aGF0IHdhcworICAgICAgIHByZXZpb3VzbHkgbWFya2VkIGFsbC12aXNpYmxlIGJ5IHZhY3V1 bSBhY3Rpdml0eSAod2hldGhlciBtYW51YWwKKyAgICAgICA8Y29tbWFuZD5WQUNVVU08L2Nv bW1hbmQ+IG9yIGF1dG92YWN1dW0pLiAgVGhlIHBhZ2UgbXVzdCB0aGVuIGJlCisgICAgICAg cHJvY2Vzc2VkIGFnYWluIGJ5IHZhY3V1bSBvbiBhIHN1YnNlcXVlbnQgcnVuLiAgQSBoaWdo IHJhdGUgb2YKKyAgICAgICBjaGFuZ2UgaW4gdGhpcyBjb3VudGVyIG1lYW5zIHRoYXQgdmFj dXVtIGhhcyB0byByZXBlYXRlZGx5CisgICAgICAgcmUtcHJvY2VzcyBwYWdlcyBvZiB0aGlz IHRhYmxlLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5mcm96ZW5fcGFn ZV9tYXJrc19jbGVhcmVkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIHRpbWVzIHRoZSBh bGwtZnJvemVuIG1hcmsgaW4gdGhlCisgICAgICAgPGxpbmsgbGlua2VuZD0ic3RvcmFnZS12 bSI+dmlzaWJpbGl0eSBtYXA8L2xpbms+IHdhcyBjbGVhcmVkIGZvcgorICAgICAgIHBhZ2Vz IG9mIHRoaXMgdGFibGUuICBUaGUgYWxsLWZyb3plbiBtYXJrIG9mIGEgaGVhcCBwYWdlIGlz IGNsZWFyZWQKKyAgICAgICB3aGVuZXZlciBhIGJhY2tlbmQgcHJvY2VzcyBtb2RpZmllcyBh IHBhZ2UgdGhhdCB3YXMgcHJldmlvdXNseQorICAgICAgIG1hcmtlZCBhbGwtZnJvemVuIGJ5 IHZhY3V1bSBhY3Rpdml0eSAobWFudWFsIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4KKyAg ICAgICBvciBhdXRvdmFjdXVtKS4gIFRoZSBwYWdlIG11c3QgdGhlbiBiZSBwcm9jZXNzZWQg YWdhaW4gYnkgdmFjdXVtIG9uCisgICAgICAgdGhlIG5leHQgZnJlZXplIHJ1biBmb3IgdGhp cyB0YWJsZS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8 cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+bGFzdF92YWN1 dW08L3N0cnVjdGZpZWxkPiA8dHlwZT50aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmU8L3R5cGU+ CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKaW5kZXggNGZkNDcw NzAyYWEuLmYwNTVlYzM4MTljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJp bGl0eW1hcC5jCkBAIC0xMDIsNiArMTAyLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2lu c2VydC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRpbHMuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0 aWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdl L3NtZ3IuaCIKQEAgLTE3Myw2ICsxNzQsMTUgQEAgdmlzaWJpbGl0eW1hcF9jbGVhcihSZWxh dGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1ZiwgdWludDggZmxh Z3MKIAogCWlmIChtYXBbbWFwQnl0ZV0gJiBtYXNrKQogCXsKKwkJLyoKKwkJICogVHJhY2sg aG93IG9mdGVuIGFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gYml0cyBhcmUgY2xlYXJlZCBp biB0aGUKKwkJICogdmlzaWJpbGl0eSBtYXAuCisJCSAqLworCQlpZiAobWFwW21hcEJ5dGVd ICYgKChmbGFncyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpIDw8IG1hcE9mZnNldCkp CisJCQlwZ3N0YXRfY291bnRfdmlzaWJsZV9wYWdlX21hcmtzX2NsZWFyZWQocmVsKTsKKwkJ aWYgKG1hcFttYXBCeXRlXSAmICgoZmxhZ3MgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4p IDw8IG1hcE9mZnNldCkpCisJCQlwZ3N0YXRfY291bnRfZnJvemVuX3BhZ2VfbWFya3NfY2xl YXJlZChyZWwpOworCiAJCW1hcFttYXBCeXRlXSAmPSB+bWFzazsKIAogCQlNYXJrQnVmZmVy RGlydHkodm1idWYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f dmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4 IDczYTFjMWM0NjcwLi43MWU5OTNjODc4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbApAQCAtNzQ3LDcgKzc0Nyw5IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfYWxs X3RhYmxlcyBBUwogICAgICAgICAgICAgcGdfc3RhdF9nZXRfdG90YWxfYXV0b3ZhY3V1bV90 aW1lKEMub2lkKSBBUyB0b3RhbF9hdXRvdmFjdXVtX3RpbWUsCiAgICAgICAgICAgICBwZ19z dGF0X2dldF90b3RhbF9hbmFseXplX3RpbWUoQy5vaWQpIEFTIHRvdGFsX2FuYWx5emVfdGlt ZSwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3RvdGFsX2F1dG9hbmFseXplX3RpbWUoQy5v aWQpIEFTIHRvdGFsX2F1dG9hbmFseXplX3RpbWUsCi0gICAgICAgICAgICBwZ19zdGF0X2dl dF9zdGF0X3Jlc2V0X3RpbWUoQy5vaWQpIEFTIHN0YXRzX3Jlc2V0CisgICAgICAgICAgICBw Z19zdGF0X2dldF9zdGF0X3Jlc2V0X3RpbWUoQy5vaWQpIEFTIHN0YXRzX3Jlc2V0LAorICAg ICAgICAgICAgcGdfc3RhdF9nZXRfdmlzaWJsZV9wYWdlX21hcmtzX2NsZWFyZWQoQy5vaWQp IEFTIHZpc2libGVfcGFnZV9tYXJrc19jbGVhcmVkLAorICAgICAgICAgICAgcGdfc3RhdF9n ZXRfZnJvemVuX3BhZ2VfbWFya3NfY2xlYXJlZChDLm9pZCkgQVMgZnJvemVuX3BhZ2VfbWFy a3NfY2xlYXJlZAogICAgIEZST00gcGdfY2xhc3MgQyBMRUZUIEpPSU4KICAgICAgICAgIHBn X2luZGV4IEkgT04gQy5vaWQgPSBJLmluZHJlbGlkCiAgICAgICAgICBMRUZUIEpPSU4gcGdf bmFtZXNwYWNlIE4gT04gKE4ub2lkID0gQy5yZWxuYW1lc3BhY2UpCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCmluZGV4IGIyY2EyOGY4M2Jh Li45MmUxZjYwYTA4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv cGdzdGF0X3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X3JlbGF0aW9uLmMKQEAgLTg4MSw2ICs4ODEsOCBAQCBwZ3N0YXRfcmVsYXRpb25fZmx1 c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0KQogCiAJdGFi ZW50cnktPmJsb2Nrc19mZXRjaGVkICs9IGxzdGF0cy0+Y291bnRzLmJsb2Nrc19mZXRjaGVk OwogCXRhYmVudHJ5LT5ibG9ja3NfaGl0ICs9IGxzdGF0cy0+Y291bnRzLmJsb2Nrc19oaXQ7 CisJdGFiZW50cnktPnZpc2libGVfcGFnZV9tYXJrc19jbGVhcmVkICs9IGxzdGF0cy0+Y291 bnRzLnZpc2libGVfcGFnZV9tYXJrc19jbGVhcmVkOworCXRhYmVudHJ5LT5mcm96ZW5fcGFn ZV9tYXJrc19jbGVhcmVkICs9IGxzdGF0cy0+Y291bnRzLmZyb3plbl9wYWdlX21hcmtzX2Ns ZWFyZWQ7CiAKIAkvKiBDbGFtcCBsaXZlX3R1cGxlcyBpbiBjYXNlIG9mIG5lZ2F0aXZlIGRl bHRhX2xpdmVfdHVwbGVzICovCiAJdGFiZW50cnktPmxpdmVfdHVwbGVzID0gTWF4KHRhYmVu dHJ5LT5saXZlX3R1cGxlcywgMCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5j CmluZGV4IDE0MDhkZTM4N2VhLi5iNmYwNjQzMzhmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3Bnc3RhdGZ1bmNzLmMKQEAgLTEwOCw2ICsxMDgsMTIgQEAgUEdfU1RBVF9HRVRfUkVMRU5U UllfSU5UNjQodHVwbGVzX3VwZGF0ZWQpCiAvKiBwZ19zdGF0X2dldF92YWN1dW1fY291bnQg Ki8KIFBHX1NUQVRfR0VUX1JFTEVOVFJZX0lOVDY0KHZhY3V1bV9jb3VudCkKIAorLyogcGdf c3RhdF9nZXRfdmlzaWJsZV9wYWdlX21hcmtzX2NsZWFyZWQgKi8KK1BHX1NUQVRfR0VUX1JF TEVOVFJZX0lOVDY0KHZpc2libGVfcGFnZV9tYXJrc19jbGVhcmVkKQorCisvKiBwZ19zdGF0 X2dldF9mcm96ZW5fcGFnZV9tYXJrc19jbGVhcmVkICovCitQR19TVEFUX0dFVF9SRUxFTlRS WV9JTlQ2NChmcm96ZW5fcGFnZV9tYXJrc19jbGVhcmVkKQorCiAjZGVmaW5lIFBHX1NUQVRf R0VUX1JFTEVOVFJZX0ZMT0FUOChzdGF0KQkJCQkJCVwKIERhdHVtCQkJCQkJCQkJCQkJCQkJ XAogQ3BwQ29uY2F0KHBnX3N0YXRfZ2V0XyxzdGF0KShQR19GVU5DVElPTl9BUkdTKQkJCQkJ XApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggZmE5YWU3OTA4MmIuLmY4MjQxMjY4 MDE3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTEyNzY5LDQgKzEyNzY5LDE0 IEBACiAgIHByb25hbWUgPT4gJ2hhc2hvaWQ4ZXh0ZW5kZWQnLCBwcm9yZXR0eXBlID0+ICdp bnQ4JywKICAgcHJvYXJndHlwZXMgPT4gJ29pZDggaW50OCcsIHByb3NyYyA9PiAnaGFzaG9p ZDhleHRlbmRlZCcgfSwKIAoreyBvaWQgPT4gJzgwMDInLAorICBkZXNjciA9PiAnc3RhdGlz dGljczogbnVtYmVyIG9mIHRpbWVzIHRoZSBhbGwtdmlzaWJsZSBtYXJrcyBpbiB0aGUgdmlz aWJpbGl0eSBtYXAgd2VyZSBjbGVhcmVkIGZvciBwYWdlcyBvZiB0aGlzIHRhYmxlJywKKyAg cHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfdmlzaWJsZV9wYWdlX21hcmtzX2NsZWFyZWQnLCBw cm92b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9 PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9zcmMgPT4gJ3BnX3N0YXRf Z2V0X3Zpc2libGVfcGFnZV9tYXJrc19jbGVhcmVkJyB9LAoreyBvaWQgPT4gJzgwMDMnLAor ICBkZXNjciA9PiAnc3RhdGlzdGljczogbnVtYmVyIG9mIHRpbWVzIHRoZSBhbGwtZnJvemVu IG1hcmtzIGluIHRoZSB2aXNpYmlsaXR5IG1hcCB3ZXJlIGNsZWFyZWQgZm9yIHBhZ2VzIG9m IHRoaXMgdGFibGUnLAorICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9mcm96ZW5fcGFnZV9t YXJrc19jbGVhcmVkJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxlbCA9PiAn cicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJv c3JjID0+ICdwZ19zdGF0X2dldF9mcm96ZW5fcGFnZV9tYXJrc19jbGVhcmVkJyB9LAogXQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdzdGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0YXQu aAppbmRleCBkZmEyZTgzNzYzOC4uN2RiMzZjZjhhZGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3Bnc3RhdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCkBAIC0xNjAsNiArMTYw LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1RhYmxlQ291bnRzCiAKIAlQZ1N0YXRfQ291 bnRlciBibG9ja3NfZmV0Y2hlZDsKIAlQZ1N0YXRfQ291bnRlciBibG9ja3NfaGl0OworCVBn U3RhdF9Db3VudGVyIHZpc2libGVfcGFnZV9tYXJrc19jbGVhcmVkOworCVBnU3RhdF9Db3Vu dGVyIGZyb3plbl9wYWdlX21hcmtzX2NsZWFyZWQ7CiB9IFBnU3RhdF9UYWJsZUNvdW50czsK IAogLyogLS0tLS0tLS0tLQpAQCAtMjE4LDcgKzIyMCw3IEBAIHR5cGVkZWYgc3RydWN0IFBn U3RhdF9UYWJsZVhhY3RTdGF0dXMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKLSNkZWZpbmUgUEdTVEFU X0ZJTEVfRk9STUFUX0lECTB4MDFBNUJDQkMKKyNkZWZpbmUgUEdTVEFUX0ZJTEVfRk9STUFU X0lECTB4MDFBNUJDQkQKIAogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0FyY2hpdmVyU3RhdHMK IHsKQEAgLTQ2OSw2ICs0NzEsOCBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdFRhYkVu dHJ5CiAKIAlQZ1N0YXRfQ291bnRlciBibG9ja3NfZmV0Y2hlZDsKIAlQZ1N0YXRfQ291bnRl ciBibG9ja3NfaGl0OworCVBnU3RhdF9Db3VudGVyIHZpc2libGVfcGFnZV9tYXJrc19jbGVh cmVkOworCVBnU3RhdF9Db3VudGVyIGZyb3plbl9wYWdlX21hcmtzX2NsZWFyZWQ7CiAKIAlU aW1lc3RhbXBUeiBsYXN0X3ZhY3V1bV90aW1lOwkvKiB1c2VyIGluaXRpYXRlZCB2YWN1dW0g Ki8KIAlQZ1N0YXRfQ291bnRlciB2YWN1dW1fY291bnQ7CkBAIC03NDksNiArNzUzLDE3IEBA IGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfYW5hbHl6ZShSZWxhdGlvbiByZWwsCiAJCWlm IChwZ3N0YXRfc2hvdWxkX2NvdW50X3JlbGF0aW9uKHJlbCkpCQkJCQkJXAogCQkJKHJlbCkt PnBnc3RhdF9pbmZvLT5jb3VudHMuYmxvY2tzX2hpdCsrOwkJCQlcCiAJfSB3aGlsZSAoMCkK Ky8qIGNvdW50IHJldm9jYXRpb25zIG9mIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuIG1h cmtzIGluIHZpc2liaWxpdHkgbWFwICovCisjZGVmaW5lIHBnc3RhdF9jb3VudF92aXNpYmxl X3BhZ2VfbWFya3NfY2xlYXJlZChyZWwpCQkJCQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwK KwkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlcCisJCQko cmVsKS0+cGdzdGF0X2luZm8tPmNvdW50cy52aXNpYmxlX3BhZ2VfbWFya3NfY2xlYXJlZCsr OwlcCisJfSB3aGlsZSAoMCkKKyNkZWZpbmUgcGdzdGF0X2NvdW50X2Zyb3plbl9wYWdlX21h cmtzX2NsZWFyZWQocmVsKQkJCQkJXAorCWRvIHsJCQkJCQkJCQkJCQkJCQlcCisJCWlmIChw Z3N0YXRfc2hvdWxkX2NvdW50X3JlbGF0aW9uKHJlbCkpCQkJCQkJXAorCQkJKHJlbCktPnBn c3RhdF9pbmZvLT5jb3VudHMuZnJvemVuX3BhZ2VfbWFya3NfY2xlYXJlZCsrOwlcCisJfSB3 aGlsZSAoMCkKIAogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X2hlYXBfaW5zZXJ0KFJlbGF0 aW9uIHJlbCwgUGdTdGF0X0NvdW50ZXIgbik7CiBleHRlcm4gdm9pZCBwZ3N0YXRfY291bnRf aGVhcF91cGRhdGUoUmVsYXRpb24gcmVsLCBib29sIGhvdCwgYm9vbCBuZXdwYWdlKTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC92YWN1dW0tZXh0ZW5kaW5n LWZyZWV6ZS5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvdmFjdXVtLWV4dGVu ZGluZy1mcmVlemUub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li45OTRhOGRmNTZkZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9l eHBlY3RlZC92YWN1dW0tZXh0ZW5kaW5nLWZyZWV6ZS5vdXQKQEAgLTAsMCArMSwxODUgQEAK K1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0 aW9uOiBzMl92YWN1dW1fZnJlZXplIHMxX2dldF9zZXRfdm1fZmxhZ3Nfc3RhdHMgczFfdXBk YXRlX3RhYmxlIHMxX2dldF9jbGVhcmVkX3ZtX2ZsYWdzX3N0YXRzIHMyX3ZhY3V1bV9mcmVl emUgczFfZ2V0X3NldF92bV9mbGFnc19zdGF0cyBzMl92YWN1dW1fZnJlZXplIHMxX3NlbGVj dF9mcm9tX2luZGV4IHMyX2RlbGV0ZV9mcm9tX3RhYmxlIHMxX2dldF9jbGVhcmVkX3ZtX2Zs YWdzX3N0YXRzIHMyX3ZhY3V1bV9mcmVlemUgczFfZ2V0X3NldF92bV9mbGFnc19zdGF0cyBz MV9jb21taXQgczFfZ2V0X2NsZWFyZWRfdm1fZmxhZ3Nfc3RhdHMKK3BnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMl92YWN1dW1fZnJlZXplOiAKKyAgICBWQUNV VU0gRlJFRVpFIHZlc3RhdDsKKworc3RlcCBzMV9nZXRfc2V0X3ZtX2ZsYWdzX3N0YXRzOiAK KyAgICBTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisKKyAgICBTRUxFQ1Qg Yy5yZWxhbGxmcm96ZW4gPiBmcm96ZW5fZmxhZ19jb3VudCBhcyByZWxhbGxmcm96ZW4sIGMu cmVsYWxsdmlzaWJsZSA+IGFsbF92aXNpYmlsZV9mbGFnX2NvdW50IGFzIHJlbGFsbHZpc2li bGUKKyAgICAgICAgRlJPTSBwZ19jbGFzcyBjLCBzdGF0c19zdGF0ZQorICAgICAgICBXSEVS RSBjLnJlbG5hbWUgPSAndmVzdGF0JzsKKworICAgIFVQREFURSBzdGF0c19zdGF0ZQorICAg ICAgICBTRVQgZnJvemVuX2ZsYWdfY291bnQgPSBjLnJlbGFsbGZyb3plbiwKKyAgICAgICAg ICAgIGFsbF92aXNpYmlsZV9mbGFnX2NvdW50ID0gYy5yZWxhbGx2aXNpYmxlCisgICAgICAg IEZST00gcGdfY2xhc3MgYworICAgICAgICBXSEVSRSBjLnJlbG5hbWUgPSAndmVzdGF0JzsK KworcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCityZWxhbGxmcm96ZW58cmVs YWxsdmlzaWJsZQorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgIHx0 ICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFfdXBkYXRlX3RhYmxlOiAKKyAgICBV UERBVEUgdmVzdGF0IFNFVCB4ID0geCArIDEwMDEgd2hlcmUgeCA+PSAyNTAwOworICAgIFNF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKworcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgIAorKDEgcm93KQorCitzdGVwIHMxX2dldF9jbGVhcmVkX3ZtX2ZsYWdzX3N0YXRzOiAK KyAgICBTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisKKyAgICBTRUxFQ1Qg di52aXNpYmxlX3BhZ2VfbWFya3NfY2xlYXJlZCA+IGNsZWFyZWRfYWxsX3Zpc2liaWxlX2Zs YWdfY291bnQgYXMgdmlzaWJsZV9wYWdlX21hcmtzX2NsZWFyZWQsCisgICAgICAgICAgIHYu ZnJvemVuX3BhZ2VfbWFya3NfY2xlYXJlZCA+IGNsZWFyZWRfZnJvemVuX2ZsYWdfY291bnQg YXMgZnJvemVuX3BhZ2VfbWFya3NfY2xlYXJlZAorICAgICAgICBGUk9NIHBnX3N0YXRfYWxs X3RhYmxlcyB2LCBzdGF0c19zdGF0ZQorICAgICAgICBXSEVSRSB2LnJlbG5hbWUgPSAndmVz dGF0JzsKKworICAgIFVQREFURSBzdGF0c19zdGF0ZQorICAgICAgICBTRVQgY2xlYXJlZF9h bGxfdmlzaWJpbGVfZmxhZ19jb3VudCA9IHYudmlzaWJsZV9wYWdlX21hcmtzX2NsZWFyZWQs CisgICAgICAgICAgICBjbGVhcmVkX2Zyb3plbl9mbGFnX2NvdW50ID0gdi5mcm96ZW5fcGFn ZV9tYXJrc19jbGVhcmVkCisgICAgICAgIEZST00gcGdfc3RhdF9hbGxfdGFibGVzIHYKKyAg ICAgICAgV0hFUkUgdi5yZWxuYW1lID0gJ3Zlc3RhdCc7CisKK3BnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgICAKKygxIHJvdykKKwordmlzaWJsZV9wYWdlX21hcmtzX2NsZWFyZWR8ZnJvemVuX3Bh Z2VfbWFya3NfY2xlYXJlZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAgICAgICAgICB8dCAgICAgICAg ICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMyX3ZhY3V1bV9mcmVlemU6IAor ICAgIFZBQ1VVTSBGUkVFWkUgdmVzdGF0OworCitzdGVwIHMxX2dldF9zZXRfdm1fZmxhZ3Nf c3RhdHM6IAorICAgIFNFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKworICAg IFNFTEVDVCBjLnJlbGFsbGZyb3plbiA+IGZyb3plbl9mbGFnX2NvdW50IGFzIHJlbGFsbGZy b3plbiwgYy5yZWxhbGx2aXNpYmxlID4gYWxsX3Zpc2liaWxlX2ZsYWdfY291bnQgYXMgcmVs YWxsdmlzaWJsZQorICAgICAgICBGUk9NIHBnX2NsYXNzIGMsIHN0YXRzX3N0YXRlCisgICAg ICAgIFdIRVJFIGMucmVsbmFtZSA9ICd2ZXN0YXQnOworCisgICAgVVBEQVRFIHN0YXRzX3N0 YXRlCisgICAgICAgIFNFVCBmcm96ZW5fZmxhZ19jb3VudCA9IGMucmVsYWxsZnJvemVuLAor ICAgICAgICAgICAgYWxsX3Zpc2liaWxlX2ZsYWdfY291bnQgPSBjLnJlbGFsbHZpc2libGUK KyAgICAgICAgRlJPTSBwZ19jbGFzcyBjCisgICAgICAgIFdIRVJFIGMucmVsbmFtZSA9ICd2 ZXN0YXQnOworCitwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2gKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3JlbGFsbGZy b3plbnxyZWxhbGx2aXNpYmxlCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQordCAgICAg ICAgICAgfHQgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMl92YWN1dW1fZnJlZXpl OiAKKyAgICBWQUNVVU0gRlJFRVpFIHZlc3RhdDsKKworc3RlcCBzMV9zZWxlY3RfZnJvbV9p bmRleDogCisgICAgQkVHSU47CisgICAgU0VMRUNUIGNvdW50KHgpIEZST00gdmVzdGF0IFdI RVJFIHggPiAyMDAwOworCitjb3VudAorLS0tLS0KKyAzMDAwCisoMSByb3cpCisKK3N0ZXAg czJfZGVsZXRlX2Zyb21fdGFibGU6IAorICAgIERFTEVURSBGUk9NIHZlc3RhdCBXSEVSRSB4 ID4gNDkzMDsKKworc3RlcCBzMV9nZXRfY2xlYXJlZF92bV9mbGFnc19zdGF0czogCisgICAg U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworCisgICAgU0VMRUNUIHYudmlz aWJsZV9wYWdlX21hcmtzX2NsZWFyZWQgPiBjbGVhcmVkX2FsbF92aXNpYmlsZV9mbGFnX2Nv dW50IGFzIHZpc2libGVfcGFnZV9tYXJrc19jbGVhcmVkLAorICAgICAgICAgICB2LmZyb3pl bl9wYWdlX21hcmtzX2NsZWFyZWQgPiBjbGVhcmVkX2Zyb3plbl9mbGFnX2NvdW50IGFzIGZy b3plbl9wYWdlX21hcmtzX2NsZWFyZWQKKyAgICAgICAgRlJPTSBwZ19zdGF0X2FsbF90YWJs ZXMgdiwgc3RhdHNfc3RhdGUKKyAgICAgICAgV0hFUkUgdi5yZWxuYW1lID0gJ3Zlc3RhdCc7 CisKKyAgICBVUERBVEUgc3RhdHNfc3RhdGUKKyAgICAgICAgU0VUIGNsZWFyZWRfYWxsX3Zp c2liaWxlX2ZsYWdfY291bnQgPSB2LnZpc2libGVfcGFnZV9tYXJrc19jbGVhcmVkLAorICAg ICAgICAgICAgY2xlYXJlZF9mcm96ZW5fZmxhZ19jb3VudCA9IHYuZnJvemVuX3BhZ2VfbWFy a3NfY2xlYXJlZAorICAgICAgICBGUk9NIHBnX3N0YXRfYWxsX3RhYmxlcyB2CisgICAgICAg IFdIRVJFIHYucmVsbmFtZSA9ICd2ZXN0YXQnOworCitwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAg CisoMSByb3cpCisKK3Zpc2libGVfcGFnZV9tYXJrc19jbGVhcmVkfGZyb3plbl9wYWdlX21h cmtzX2NsZWFyZWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK2YgICAgICAgICAgICAgICAgICAgICAgICAgfGYgICAgICAgICAgICAg ICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMl92YWN1dW1fZnJlZXplOiAKKyAgICBW QUNVVU0gRlJFRVpFIHZlc3RhdDsKKworc3RlcCBzMV9nZXRfc2V0X3ZtX2ZsYWdzX3N0YXRz OiAKKyAgICBTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisKKyAgICBTRUxF Q1QgYy5yZWxhbGxmcm96ZW4gPiBmcm96ZW5fZmxhZ19jb3VudCBhcyByZWxhbGxmcm96ZW4s IGMucmVsYWxsdmlzaWJsZSA+IGFsbF92aXNpYmlsZV9mbGFnX2NvdW50IGFzIHJlbGFsbHZp c2libGUKKyAgICAgICAgRlJPTSBwZ19jbGFzcyBjLCBzdGF0c19zdGF0ZQorICAgICAgICBX SEVSRSBjLnJlbG5hbWUgPSAndmVzdGF0JzsKKworICAgIFVQREFURSBzdGF0c19zdGF0ZQor ICAgICAgICBTRVQgZnJvemVuX2ZsYWdfY291bnQgPSBjLnJlbGFsbGZyb3plbiwKKyAgICAg ICAgICAgIGFsbF92aXNpYmlsZV9mbGFnX2NvdW50ID0gYy5yZWxhbGx2aXNpYmxlCisgICAg ICAgIEZST00gcGdfY2xhc3MgYworICAgICAgICBXSEVSRSBjLnJlbG5hbWUgPSAndmVzdGF0 JzsKKworcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCityZWxhbGxmcm96ZW58 cmVsYWxsdmlzaWJsZQorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KK2YgICAgICAgICAg IHxmICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFfY29tbWl0OiAKKyAgICBDT01N SVQ7CisKK3N0ZXAgczFfZ2V0X2NsZWFyZWRfdm1fZmxhZ3Nfc3RhdHM6IAorICAgIFNFTEVD VCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKworICAgIFNFTEVDVCB2LnZpc2libGVf cGFnZV9tYXJrc19jbGVhcmVkID4gY2xlYXJlZF9hbGxfdmlzaWJpbGVfZmxhZ19jb3VudCBh cyB2aXNpYmxlX3BhZ2VfbWFya3NfY2xlYXJlZCwKKyAgICAgICAgICAgdi5mcm96ZW5fcGFn ZV9tYXJrc19jbGVhcmVkID4gY2xlYXJlZF9mcm96ZW5fZmxhZ19jb3VudCBhcyBmcm96ZW5f cGFnZV9tYXJrc19jbGVhcmVkCisgICAgICAgIEZST00gcGdfc3RhdF9hbGxfdGFibGVzIHYs IHN0YXRzX3N0YXRlCisgICAgICAgIFdIRVJFIHYucmVsbmFtZSA9ICd2ZXN0YXQnOworCisg ICAgVVBEQVRFIHN0YXRzX3N0YXRlCisgICAgICAgIFNFVCBjbGVhcmVkX2FsbF92aXNpYmls ZV9mbGFnX2NvdW50ID0gdi52aXNpYmxlX3BhZ2VfbWFya3NfY2xlYXJlZCwKKyAgICAgICAg ICAgIGNsZWFyZWRfZnJvemVuX2ZsYWdfY291bnQgPSB2LmZyb3plbl9wYWdlX21hcmtzX2Ns ZWFyZWQKKyAgICAgICAgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMgdgorICAgICAgICBXSEVS RSB2LnJlbG5hbWUgPSAndmVzdGF0JzsKKworcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorKDEg cm93KQorCit2aXNpYmxlX3BhZ2VfbWFya3NfY2xlYXJlZHxmcm96ZW5fcGFnZV9tYXJrc19j bGVhcmVkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCit0ICAgICAgICAgICAgICAgICAgICAgICAgIHx0ICAgICAgICAgICAgICAgICAg ICAgICAgCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29s YXRpb25fc2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxl CmluZGV4IDE1NzhiYTE5MWM4Li45MWZmYzU3ZWJkNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv aXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24v aXNvbGF0aW9uX3NjaGVkdWxlCkBAIC0xMjYsMyArMTI2LDQgQEAgdGVzdDogc2VyaWFsaXph YmxlLXBhcmFsbGVsLTMKIHRlc3Q6IG1hdHZpZXctd3JpdGUtc2tldwogdGVzdDogbG9jay1u b3dhaXQKIHRlc3Q6IGZvci1wb3J0aW9uLW9mCit0ZXN0OiB2YWN1dW0tZXh0ZW5kaW5nLWZy ZWV6ZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3ZhY3V1bS1leHRl bmRpbmctZnJlZXplLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvdmFjdXVtLWV4 dGVuZGluZy1mcmVlemUuc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uMTdjMjA0ZTIzMjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRp b24vc3BlY3MvdmFjdXVtLWV4dGVuZGluZy1mcmVlemUuc3BlYwpAQCAtMCwwICsxLDExNyBA QAorIyBJbiBzaG9ydCwgdGhpcyB0ZXN0IHZhbGlkYXRlcyB0aGUgY29ycmVjdG5lc3MgYW5k IHN0YWJpbGl0eSBvZiBjdW11bGF0aXZlCisjIHZhY3V1bSBzdGF0aXN0aWNzIGFjY291bnRp bmcgYXJvdW5kIGZyZWV6aW5nLCB2aXNpYmlsaXR5LCBhbmQgcmV2aXNpb24KKyMgdHJhY2tp bmcgYWNyb3NzIFZBQ1VVTSBhbmQgYmFja2VuZCBvcGVyYXRpb25zLgorIyBJbiBhZGRpdGlv biwgdGhlIHRlc3QgcHJvdmlkZXMgYSBzY2VuYXJpbyB3aGVyZSBvbmUgcHJvY2VzcyBob2xk cyBhCisjIHRyYW5zYWN0aW9uIG9wZW4gd2hpbGUgYW5vdGhlciBwcm9jZXNzIGRlbGV0ZXMg dHVwbGVzLiBXZSBleHBlY3QgdGhhdAorIyBhIGJhY2tlbmQgY2xlYXJzIHRoZSBhbGwtZnJv emVuIGFuZCBhbGwtdmlzaWJsZSBmbGFncywgd2hpY2ggd2VyZSBzZXQKKyMgYnkgVkFDVVVN IGVhcmxpZXIsIG9ubHkgYWZ0ZXIgdGhlIGNvbW1pdHRpbmcgdHJhbnNhY3Rpb24gbWFrZXMg dGhlCisjIGRlbGV0aW9ucyB2aXNpYmxlLgorCitzZXR1cAoreworICAgIENSRUFURSBUQUJM RSB2ZXN0YXQgKHggaW50LCB5IGludCkKKyAgICAgICAgV0lUSCAoYXV0b3ZhY3V1bV9lbmFi bGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworCisgICAgSU5TRVJUIElOVE8gdmVzdGF0 CisgICAgICAgIFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIEFT IGcoaSk7CisKKyAgICBDUkVBVEUgSU5ERVggdmVzdGF0X2lkeCBPTiB2ZXN0YXQgKHgpOwor CisgICAgQ1JFQVRFIFRBQkxFIHN0YXRzX3N0YXRlIChmcm96ZW5fZmxhZ19jb3VudCBpbnQs IGFsbF92aXNpYmlsZV9mbGFnX2NvdW50IGludCwKKyAgICAgICAgICAgICAgICAgICAgICAg IGNsZWFyZWRfZnJvemVuX2ZsYWdfY291bnQgaW50LCBjbGVhcmVkX2FsbF92aXNpYmlsZV9m bGFnX2NvdW50IGludCk7CisgICAgSU5TRVJUIElOVE8gc3RhdHNfc3RhdGUgVkFMVUVTICgw LDAsMCwwKTsKKyAgICBBTkFMWVpFIHZlc3RhdDsKKworICAgIC0tIEVuc3VyZSBzdGF0cyBh cmUgZmx1c2hlZCBiZWZvcmUgc3RhcnRpbmcgdGhlIHNjZW5hcmlvCisgICAgU0VMRUNUIHBn X3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworfQorCit0ZWFyZG93bgoreworICAgIERST1Ag VEFCTEUgSUYgRVhJU1RTIHZlc3RhdDsKKyAgICBSRVNFVCB2YWN1dW1fZnJlZXplX21pbl9h Z2U7CisgICAgUkVTRVQgdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2U7CisKK30KKworc2Vzc2lv biBzMQorCitzdGVwIHMxX2dldF9zZXRfdm1fZmxhZ3Nfc3RhdHMKK3sKKyAgICBTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisKKyAgICBTRUxFQ1QgYy5yZWxhbGxmcm96 ZW4gPiBmcm96ZW5fZmxhZ19jb3VudCBhcyByZWxhbGxmcm96ZW4sIGMucmVsYWxsdmlzaWJs ZSA+IGFsbF92aXNpYmlsZV9mbGFnX2NvdW50IGFzIHJlbGFsbHZpc2libGUKKyAgICAgICAg RlJPTSBwZ19jbGFzcyBjLCBzdGF0c19zdGF0ZQorICAgICAgICBXSEVSRSBjLnJlbG5hbWUg PSAndmVzdGF0JzsKKworICAgIFVQREFURSBzdGF0c19zdGF0ZQorICAgICAgICBTRVQgZnJv emVuX2ZsYWdfY291bnQgPSBjLnJlbGFsbGZyb3plbiwKKyAgICAgICAgICAgIGFsbF92aXNp YmlsZV9mbGFnX2NvdW50ID0gYy5yZWxhbGx2aXNpYmxlCisgICAgICAgIEZST00gcGdfY2xh c3MgYworICAgICAgICBXSEVSRSBjLnJlbG5hbWUgPSAndmVzdGF0JzsKK30KKworc3RlcCBz MV9nZXRfY2xlYXJlZF92bV9mbGFnc19zdGF0cworeworICAgIFNFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKKworICAgIFNFTEVDVCB2LnZpc2libGVfcGFnZV9tYXJrc19j bGVhcmVkID4gY2xlYXJlZF9hbGxfdmlzaWJpbGVfZmxhZ19jb3VudCBhcyB2aXNpYmxlX3Bh Z2VfbWFya3NfY2xlYXJlZCwKKyAgICAgICAgICAgdi5mcm96ZW5fcGFnZV9tYXJrc19jbGVh cmVkID4gY2xlYXJlZF9mcm96ZW5fZmxhZ19jb3VudCBhcyBmcm96ZW5fcGFnZV9tYXJrc19j bGVhcmVkCisgICAgICAgIEZST00gcGdfc3RhdF9hbGxfdGFibGVzIHYsIHN0YXRzX3N0YXRl CisgICAgICAgIFdIRVJFIHYucmVsbmFtZSA9ICd2ZXN0YXQnOworCisgICAgVVBEQVRFIHN0 YXRzX3N0YXRlCisgICAgICAgIFNFVCBjbGVhcmVkX2FsbF92aXNpYmlsZV9mbGFnX2NvdW50 ID0gdi52aXNpYmxlX3BhZ2VfbWFya3NfY2xlYXJlZCwKKyAgICAgICAgICAgIGNsZWFyZWRf ZnJvemVuX2ZsYWdfY291bnQgPSB2LmZyb3plbl9wYWdlX21hcmtzX2NsZWFyZWQKKyAgICAg ICAgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMgdgorICAgICAgICBXSEVSRSB2LnJlbG5hbWUg PSAndmVzdGF0JzsKK30KKworc3RlcCBzMV9zZWxlY3RfZnJvbV9pbmRleAoreworICAgIEJF R0lOOworICAgIFNFTEVDVCBjb3VudCh4KSBGUk9NIHZlc3RhdCBXSEVSRSB4ID4gMjAwMDsK K30KKworc3RlcCBzMV9jb21taXQKK3sKKyAgICBDT01NSVQ7Cit9CisKK3Nlc3Npb24gczIK K3NldHVwCit7CisgICAgLS0gQ29uZmlndXJlIGFnZ3Jlc3NpdmUgZnJlZXppbmcgdmFjdXVt IGJlaGF2aW9yCisgICAgU0VUIHZhY3V1bV9mcmVlemVfbWluX2FnZSA9IDA7CisgICAgU0VU IHZhY3V1bV9mcmVlemVfdGFibGVfYWdlID0gMDsKK30KK3N0ZXAgczJfZGVsZXRlX2Zyb21f dGFibGUKK3sKKyAgICBERUxFVEUgRlJPTSB2ZXN0YXQgV0hFUkUgeCA+IDQ5MzA7Cit9Citz dGVwIHMyX3ZhY3V1bV9mcmVlemUKK3sKKyAgICBWQUNVVU0gRlJFRVpFIHZlc3RhdDsKK30K Kworc3RlcCBzMV91cGRhdGVfdGFibGUKK3sKKyAgICBVUERBVEUgdmVzdGF0IFNFVCB4ID0g eCArIDEwMDEgd2hlcmUgeCA+PSAyNTAwOworICAgIFNFTEVDVCBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2goKTsKK30KKworcGVybXV0YXRpb24KKyAgICBzMl92YWN1dW1fZnJlZXplCisg ICAgczFfZ2V0X3NldF92bV9mbGFnc19zdGF0cworICAgIHMxX3VwZGF0ZV90YWJsZQorICAg IHMxX2dldF9jbGVhcmVkX3ZtX2ZsYWdzX3N0YXRzCisgICAgczJfdmFjdXVtX2ZyZWV6ZQor ICAgIHMxX2dldF9zZXRfdm1fZmxhZ3Nfc3RhdHMKKyAgICBzMl92YWN1dW1fZnJlZXplCisg ICAgczFfc2VsZWN0X2Zyb21faW5kZXgKKyAgICBzMl9kZWxldGVfZnJvbV90YWJsZQorICAg IHMxX2dldF9jbGVhcmVkX3ZtX2ZsYWdzX3N0YXRzCisgICAgczJfdmFjdXVtX2ZyZWV6ZQor ICAgIHMxX2dldF9zZXRfdm1fZmxhZ3Nfc3RhdHMKKyAgICBzMV9jb21taXQKKyAgICBzMV9n ZXRfY2xlYXJlZF92bV9mbGFnc19zdGF0cwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggYTY1YTViZjBjNGYuLjA5 NmU0Zjc2M2YzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVz Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTg0 Niw3ICsxODQ2LDkgQEAgcGdfc3RhdF9hbGxfdGFibGVzfCBTRUxFQ1QgYy5vaWQgQVMgcmVs aWQsCiAgICAgcGdfc3RhdF9nZXRfdG90YWxfYXV0b3ZhY3V1bV90aW1lKGMub2lkKSBBUyB0 b3RhbF9hdXRvdmFjdXVtX3RpbWUsCiAgICAgcGdfc3RhdF9nZXRfdG90YWxfYW5hbHl6ZV90 aW1lKGMub2lkKSBBUyB0b3RhbF9hbmFseXplX3RpbWUsCiAgICAgcGdfc3RhdF9nZXRfdG90 YWxfYXV0b2FuYWx5emVfdGltZShjLm9pZCkgQVMgdG90YWxfYXV0b2FuYWx5emVfdGltZSwK LSAgICBwZ19zdGF0X2dldF9zdGF0X3Jlc2V0X3RpbWUoYy5vaWQpIEFTIHN0YXRzX3Jlc2V0 CisgICAgcGdfc3RhdF9nZXRfc3RhdF9yZXNldF90aW1lKGMub2lkKSBBUyBzdGF0c19yZXNl dCwKKyAgICBwZ19zdGF0X2dldF92aXNpYmxlX3BhZ2VfbWFya3NfY2xlYXJlZChjLm9pZCkg QVMgdmlzaWJsZV9wYWdlX21hcmtzX2NsZWFyZWQsCisgICAgcGdfc3RhdF9nZXRfZnJvemVu X3BhZ2VfbWFya3NfY2xlYXJlZChjLm9pZCkgQVMgZnJvemVuX3BhZ2VfbWFya3NfY2xlYXJl ZAogICAgRlJPTSAoKHBnX2NsYXNzIGMKICAgICAgTEVGVCBKT0lOIHBnX2luZGV4IGkgT04g KChjLm9pZCA9IGkuaW5kcmVsaWQpKSkKICAgICAgTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBu IE9OICgobi5vaWQgPSBjLnJlbG5hbWVzcGFjZSkpKQpAQCAtMjM1Nyw3ICsyMzU5LDkgQEAg cGdfc3RhdF9zeXNfdGFibGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAgdG90YWxfYXV0b3ZhY3V1 bV90aW1lLAogICAgIHRvdGFsX2FuYWx5emVfdGltZSwKICAgICB0b3RhbF9hdXRvYW5hbHl6 ZV90aW1lLAotICAgIHN0YXRzX3Jlc2V0CisgICAgc3RhdHNfcmVzZXQsCisgICAgdmlzaWJs ZV9wYWdlX21hcmtzX2NsZWFyZWQsCisgICAgZnJvemVuX3BhZ2VfbWFya3NfY2xlYXJlZAog ICAgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMKICAgV0hFUkUgKChzY2hlbWFuYW1lID0gQU5Z IChBUlJBWVsncGdfY2F0YWxvZyc6Om5hbWUsICdpbmZvcm1hdGlvbl9zY2hlbWEnOjpuYW1l XSkpIE9SIChzY2hlbWFuYW1lIH4gJ15wZ190b2FzdCc6OnRleHQpKTsKIHBnX3N0YXRfdXNl cl9mdW5jdGlvbnN8IFNFTEVDVCBwLm9pZCBBUyBmdW5jaWQsCkBAIC0yNDEyLDcgKzI0MTYs OSBAQCBwZ19zdGF0X3VzZXJfdGFibGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAgdG90YWxfYXV0 b3ZhY3V1bV90aW1lLAogICAgIHRvdGFsX2FuYWx5emVfdGltZSwKICAgICB0b3RhbF9hdXRv YW5hbHl6ZV90aW1lLAotICAgIHN0YXRzX3Jlc2V0CisgICAgc3RhdHNfcmVzZXQsCisgICAg dmlzaWJsZV9wYWdlX21hcmtzX2NsZWFyZWQsCisgICAgZnJvemVuX3BhZ2VfbWFya3NfY2xl YXJlZAogICAgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMKICAgV0hFUkUgKChzY2hlbWFuYW1l IDw+IEFMTCAoQVJSQVlbJ3BnX2NhdGFsb2cnOjpuYW1lLCAnaW5mb3JtYXRpb25fc2NoZW1h Jzo6bmFtZV0pKSBBTkQgKHNjaGVtYW5hbWUgIX4gJ15wZ190b2FzdCc6OnRleHQpKTsKIHBn X3N0YXRfd2FsfCBTRUxFQ1Qgd2FsX3JlY29yZHMsCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0x NTQpCgo= --------------thBbqvYkvYX0JXIsOOCVBtFF Content-Type: text/plain; charset=UTF-8; name="v38-0002-Machinery-for-grabbing-extended-vacuum-statistics.patch" Content-Disposition: attachment; filename*0="v38-0002-Machinery-for-grabbing-extended-vacuum-statistics.p"; filename*1="atch" Content-Transfer-Encoding: base64 RnJvbSAzYTVlMGJkODI1NzhkMWZlYTYzZDZiZGEyMjlkYzRkMGIyMjQ2ODRlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogTW9uLCAyIE1hciAyMDI2IDIzOjA5OjMyICswMzAwClN1Ympl Y3Q6IFtQQVRDSCAyLzNdIE1hY2hpbmVyeSBmb3IgZ3JhYmJpbmcgZXh0ZW5kZWQgdmFjdXVt IHN0YXRpc3RpY3MuCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFp bjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpBZGQg aW5mcmFzdHJ1Y3R1cmUgaW5zaWRlIGxhenkgdmFjdXVtIHRvIGdhdGhlciBleHRlbmRlZCBw ZXItdmFjdXVtCm1ldHJpY3MgYW5kIGV4cG9zZSB0aGVtIHRvIGV4dGVuc2lvbnMgdmlhIGEg bmV3IGhvb2suIENvcmUgaXRzZWxmCmRvZXMgbm90IHBlcnNpc3QgdGhlc2UgbWV0cmljcyDi gJQgdGhhdCBpcyB0aGUgam9iIG9mIGFuIGV4dGVuc2lvbgooc2VlIGV4dF92YWN1dW1fc3Rh dGlzdGljcykuCgpTdGF0aXN0aWNzIGFyZSBnYXRoZXJlZCBzZXBhcmF0ZWx5IGZvciB0YWJs ZXMgYW5kIGluZGV4ZXMgYWNjb3JkaW5nCnRvIHZhY3V1bSBwaGFzZXMuIFRoZSBFeHRWYWNS ZXBvcnQgdW5pb24gYW5kIHR5cGUgZmllbGQgZGlzdGluZ3Vpc2gKUEdTVEFUX0VYVFZBQ19U QUJMRSB2cyBQR1NUQVRfRVhUVkFDX0lOREVYLiBIZWFwIHZhY3V1bSBzdGF0cyBhcmUKc2Vu dCB0byB0aGUgY3VtdWxhdGl2ZSBzdGF0aXN0aWNzIHN5c3RlbSBhZnRlciB2YWN1dW0gaGFz IHByb2Nlc3NlZAp0aGUgaW5kZXhlcy4gRGF0YWJhc2UgdmFjdXVtIHN0YXRpc3RpY3MgYWdn cmVnYXRlIHBlci10YWJsZSBhbmQKcGVyLWluZGV4IHN0YXRpc3RpY3Mgd2l0aGluIHRoZSBk YXRhYmFzZS4KCkNvbW1vbiBmb3IgdGFibGVzLCBpbmRleGVzLCBhbmQgZGF0YWJhc2U6IHRv dGFsX2Jsa3NfaGl0LCB0b3RhbF9ibGtzX3JlYWQKYW5kIHRvdGFsX2Jsa3NfZGlydGllZCBh cmUgdGhlIG51bWJlciBvZiBoaXQsIG1pc3MgYW5kIGRpcnRpZWQgcGFnZXMKaW4gc2hhcmVk IGJ1ZmZlcnMgZHVyaW5nIGEgdmFjdXVtIG9wZXJhdGlvbi4gdG90YWxfYmxrc19kaXJ0aWVk IGNvdW50cwpvbmx5IHBhZ2VzIGRpcnRpZWQgYnkgdGhpcyB2YWN1dW0uIGJsa19yZWFkX3Rp bWUgYW5kIGJsa193cml0ZV90aW1lCnRyYWNrIGFjY2VzcyBhbmQgZmx1c2ggdGltZSBmb3Ig YnVmZmVyIHBhZ2VzOyBibGtfd3JpdGVfdGltZSBjYW4gc3RheQp6ZXJvIGlmIG5vIGZsdXNo ZXMgb2NjdXJyZWQuIHRvdGFsX3RpbWUgaXMgd2FsbC1jbG9jayB0aW1lIGZyb20gc3RhcnQK dG8gZmluaXNoLCBpbmNsdWRpbmcgaWRsZSB0aW1lIChJL08gYW5kIGxvY2sgd2FpdHMpLiBk ZWxheV90aW1lIGlzCnRvdGFsIHZhY3V1bSBzbGVlcCB0aW1lIGluIHZhY3V1bSBkZWxheSBw b2ludHMuCgpCb3RoIHRhYmxlIGFuZCBpbmRleCByZXBvcnQgdHVwbGVzX2RlbGV0ZWQgKHR1 cGxlcyByZW1vdmVkIGJ5IHRoZSB2YWN1dW0pLApwYWdlc19yZW1vdmVkIChwYWdlcyBieSB3 aGljaCByZWxhdGlvbiBzdG9yYWdlIHdhcyByZWR1Y2VkKSBhbmQKcGFnZXNfZGVsZXRlZCAo ZnJlZWQgcGFnZXM7IGZpbGUgc2l6ZSBtYXkgcmVtYWluIHVuY2hhbmdlZCkuIFRoZXNlIGFy ZQppbmRlcGVuZGVudCBvZiBXQUwgYW5kIGJ1ZmZlciBzdGF0cyBhbmQgYXJlIG5vdCBzdW1t ZWQgYXQgdGhlIGRhdGFiYXNlCmxldmVsLgoKVGFibGUgb25seTogcGFnZXNfZnJvemVuIChw YWdlcyBtYXJrZWQgYWxsLWZyb3plbiBpbiB0aGUgdmlzaWJpbGl0eSBtYXApLApwYWdlc19h bGxfdmlzaWJsZSAocGFnZXMgbWFya2VkIGFsbC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5 IG1hcCksCndyYXBhcm91bmRfZmFpbHNhZmVfY291bnQgKG51bWJlciBvZiB1cmdlbnQgYW50 aS13cmFwYXJvdW5kIHZhY3V1bXMpLgoKVGFibGUgYW5kIGRhdGFiYXNlIHNoYXJlIHdyYXBh cm91bmRfZmFpbHNhZmUgKGNvdW50IG9mIHVyZ2VudCBhbnRpLXdyYXBhcm91bmQKY2xlYW51 cHMpLiBEYXRhYmFzZSBvbmx5OiBlcnJvcnMgKG51bWJlciBvZiBlcnJvci1sZXZlbCBlcnJv cnMgY2F1Z2h0CmR1cmluZyB2YWN1dW0pLgoKc2V0X3JlcG9ydF92YWN1dW1faG9vayAoc2V0 X3JlcG9ydF92YWN1dW1faG9va190eXBlKSAtLSBjYWxsZWQKb25jZSBwZXIgdmFjdXVtZWQg cmVsYXRpb24vaW5kZXggd2l0aCBhIFBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cwpwYXls b2FkIHRhZ2dlZCBieSBFeHRWYWNSZXBvcnRUeXBlIChQR1NUQVRfRVhUVkFDX1RBQkxFIC8g X0lOREVYIC8KX0RCIC8gX0lOVkFMSUQpLgoKQXV0aG9yczogQWxlbmEgUnliYWtpbmEgPGxl bmEucmliYWNraW5hQHlhbmRleC5ydT4sCiAgICAgICAgIEFuZHJlaSBMZXBpa2hvdiA8YS5s ZXBpa2hvdkBwb3N0Z3Jlc3Byby5ydT4sCiAgICAgICAgIEFuZHJlaSBadWJrb3YgPGEuenVi a292QHBvc3RncmVzcHJvLnJ1PgpSZXZpZXdlZC1ieTogRGlsaXAgS3VtYXIgPGRpbGlwYmFs YXV0QGdtYWlsLmNvbT4sCiAgICAgICAgICAgICBNYXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5t c2hrQGdtYWlsLmNvbT4sCiAgICAgICAgICAgICBJbGlhIEV2ZG9raW1vdiA8aWx5YS5ldmRv a2ltb3ZAdGFudG9ybGFicy5jb20+LAogICAgICAgICAgICAgamlhbiBoZSA8amlhbi51bml2 ZXJzYWxpdHlAZ21haWwuY29tPiwKICAgICAgICAgICAgIEtpcmlsbCBSZXNoa2UgPHJlc2hr ZWtpcmlsbEBnbWFpbC5jb20+LAogICAgICAgICAgICAgQWxleGFuZGVyIEtvcm90a292IDxh ZWtvcm90a292QGdtYWlsLmNvbT4sCiAgICAgICAgICAgICBKaW0gTmFzYnkgPGpuYXNieUB1 cGdyYWRlLmNvbT4sCiAgICAgICAgICAgICBTYW1pIEltc2VpaCA8c2FtaW1zZWloQGdtYWls LmNvbT4sCiAgICAgICAgICAgICBLYXJpbmEgTGl0c2tldmljaCA8bGl0c2tldmljaGthcmlu YUBnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j ICAgICAgICAgfCAyMzQgKysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmFjdXVtLmMgICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmFjdXVtcGFyYWxsZWwuYyAgICAgICAgfCAgMTIgKwogc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMgfCAgMjQgKysKIHNyYy9pbmNsdWRlL2NvbW1h bmRzL3ZhY3V1bS5oICAgICAgICAgICAgICAgIHwgIDI5ICsrKwogc3JjL2luY2x1ZGUvcGdz dGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgNjkgKysrKysrCiA2IGZpbGVzIGNo YW5nZWQsIDM2NyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCAzOTM5NWFlZDBkNS4uZTRkNGM5M2Q2NDEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTI4Myw2ICsyODMs OCBAQCB0eXBlZGVmIHN0cnVjdCBMVlJlbFN0YXRlCiAJLyogRXJyb3IgcmVwb3J0aW5nIHN0 YXRlICovCiAJY2hhcgkgICAqZGJuYW1lOwogCWNoYXIJICAgKnJlbG5hbWVzcGFjZTsKKwlP aWQJCQlyZWxvaWQ7CisJT2lkCQkJaW5kb2lkOwogCWNoYXIJICAgKnJlbG5hbWU7CiAJY2hh cgkgICAqaW5kbmFtZTsJCS8qIEN1cnJlbnQgaW5kZXggbmFtZSAqLwogCUJsb2NrTnVtYmVy IGJsa25vOwkJCS8qIHVzZWQgb25seSBmb3IgaGVhcCBvcGVyYXRpb25zICovCkBAIC00MTAs NiArNDEyLDE1IEBAIHR5cGVkZWYgc3RydWN0IExWUmVsU3RhdGUKIAkgKiBiZWVuIHBlcm1h bmVudGx5IGRpc2FibGVkLgogCSAqLwogCUJsb2NrTnVtYmVyIGVhZ2VyX3NjYW5fcmVtYWlu aW5nX2ZhaWxzOworCisJaW50MzIJCXdyYXBhcm91bmRfZmFpbHNhZmVfY291bnQ7CS8qICMg b2YgZW1lcmdlbmN5IHZhY3V1bXMgZm9yCisJCQkJCQkJCQkJCSAqIGFudGktd3JhcGFyb3Vu ZCAqLworCisJLyoKKwkgKiBXZSBuZWVkIHRvIGFjY3VtdWxhdGUgaW5kZXggc3RhdGlzdGlj cyBmb3IgbGF0ZXIgc3VidHJhY3Rpb24gZnJvbSBoZWFwCisJICogc3RhdHMuCisJICovCisJ UGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzIGV4dFZhY1JlcG9ydElkeDsKIH0gTFZSZWxT dGF0ZTsKIAogCkBAIC00ODUsNiArNDk2LDE2NiBAQCBzdGF0aWMgdm9pZCByZXN0b3JlX3Zh Y3V1bV9lcnJvcl9pbmZvKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJCQkJCQkJCSAgY29uc3Qg TFZTYXZlZEVyckluZm8gKnNhdmVkX3ZhY3JlbCk7CiAKIAorLyogRXh0ZW5kZWQgdmFjdXVt IHN0YXRpc3RpY3MgZnVuY3Rpb25zICovCisKKy8qCisgKiBleHR2YWNfc3RhdHNfc3RhcnQg LSBTYXZlIGN1dC1vZmYgdmFsdWVzIGJlZm9yZSBzdGFydCBvZiByZWxhdGlvbiBwcm9jZXNz aW5nLgorICovCitzdGF0aWMgdm9pZAorZXh0dmFjX3N0YXRzX3N0YXJ0KFJlbGF0aW9uIHJl bCwgTFZFeHRTdGF0Q291bnRlcnMgKiBjb3VudGVycykKK3sKKwltZW1zZXQoY291bnRlcnMs IDAsIHNpemVvZihMVkV4dFN0YXRDb3VudGVycykpOworCWNvdW50ZXJzLT5zdGFydHRpbWUg PSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisJY291bnRlcnMtPndhbHVzYWdlID0gcGdXYWxV c2FnZTsKKwljb3VudGVycy0+YnVmdXNhZ2UgPSBwZ0J1ZmZlclVzYWdlOworCWNvdW50ZXJz LT5WYWN1dW1EZWxheVRpbWUgPSBWYWN1dW1EZWxheVRpbWU7CisJY291bnRlcnMtPmJsb2Nr c19mZXRjaGVkID0gMDsKKwljb3VudGVycy0+YmxvY2tzX2hpdCA9IDA7CisKKwlpZiAocmVs LT5wZ3N0YXRfaW5mbyAmJiBwZ3N0YXRfdHJhY2tfY291bnRzKQorCXsKKwkJY291bnRlcnMt PmJsb2Nrc19mZXRjaGVkID0gcmVsLT5wZ3N0YXRfaW5mby0+Y291bnRzLmJsb2Nrc19mZXRj aGVkOworCQljb3VudGVycy0+YmxvY2tzX2hpdCA9IHJlbC0+cGdzdGF0X2luZm8tPmNvdW50 cy5ibG9ja3NfaGl0OworCX0KK30KKworLyoKKyAqIGV4dHZhY19zdGF0c19lbmQgLSBGaW5p c2ggZXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3RpYyBnYXRoZXJpbmcgYW5kIGZvcm0gcmVwb3J0 LgorICovCitzdGF0aWMgdm9pZAorZXh0dmFjX3N0YXRzX2VuZChSZWxhdGlvbiByZWwsIExW RXh0U3RhdENvdW50ZXJzICogY291bnRlcnMsCisJCQkJIFBnU3RhdF9Db21tb25Db3VudHMg KiByZXBvcnQpCit7CisJV2FsVXNhZ2UJd2FsdXNhZ2U7CisJQnVmZmVyVXNhZ2UgYnVmdXNh Z2U7CisJVGltZXN0YW1wVHogZW5kdGltZTsKKwlsb25nCQlzZWNzOworCWludAkJCXVzZWNz OworCisJbWVtc2V0KHJlcG9ydCwgMCwgc2l6ZW9mKFBnU3RhdF9Db21tb25Db3VudHMpKTsK KwltZW1zZXQoJndhbHVzYWdlLCAwLCBzaXplb2YoV2FsVXNhZ2UpKTsKKwlXYWxVc2FnZUFj Y3VtRGlmZigmd2FsdXNhZ2UsICZwZ1dhbFVzYWdlLCAmY291bnRlcnMtPndhbHVzYWdlKTsK KwltZW1zZXQoJmJ1ZnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKKwlCdWZmZXJV c2FnZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmY291bnRlcnMtPmJ1 ZnVzYWdlKTsKKwllbmR0aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCVRpbWVzdGFt cERpZmZlcmVuY2UoY291bnRlcnMtPnN0YXJ0dGltZSwgZW5kdGltZSwgJnNlY3MsICZ1c2Vj cyk7CisKKwlyZXBvcnQtPnRvdGFsX2Jsa3NfcmVhZCA9IGJ1ZnVzYWdlLmxvY2FsX2Jsa3Nf cmVhZCArIGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX3JlYWQ7CisJcmVwb3J0LT50b3RhbF9ibGtz X2hpdCA9IGJ1ZnVzYWdlLmxvY2FsX2Jsa3NfaGl0ICsgYnVmdXNhZ2Uuc2hhcmVkX2Jsa3Nf aGl0OworCXJlcG9ydC0+dG90YWxfYmxrc19kaXJ0aWVkID0gYnVmdXNhZ2UubG9jYWxfYmxr c19kaXJ0aWVkICsgYnVmdXNhZ2Uuc2hhcmVkX2Jsa3NfZGlydGllZDsKKwlyZXBvcnQtPnRv dGFsX2Jsa3Nfd3JpdHRlbiA9IGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX3dyaXR0ZW47CisJcmVw b3J0LT53YWxfcmVjb3JkcyA9IHdhbHVzYWdlLndhbF9yZWNvcmRzOworCXJlcG9ydC0+d2Fs X2ZwaSA9IHdhbHVzYWdlLndhbF9mcGk7CisJcmVwb3J0LT53YWxfYnl0ZXMgPSB3YWx1c2Fn ZS53YWxfYnl0ZXM7CisJcmVwb3J0LT5ibGtfcmVhZF90aW1lID0gSU5TVFJfVElNRV9HRVRf TUlMTElTRUMoYnVmdXNhZ2UubG9jYWxfYmxrX3JlYWRfdGltZSkgKworCQlJTlNUUl9USU1F X0dFVF9NSUxMSVNFQyhidWZ1c2FnZS5zaGFyZWRfYmxrX3JlYWRfdGltZSk7CisJcmVwb3J0 LT5ibGtfd3JpdGVfdGltZSA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGJ1ZnVzYWdlLmxv Y2FsX2Jsa193cml0ZV90aW1lKSArCisJCUlOU1RSX1RJTUVfR0VUX01JTExJU0VDKGJ1ZnVz YWdlLnNoYXJlZF9ibGtfd3JpdGVfdGltZSk7CisJcmVwb3J0LT5kZWxheV90aW1lID0gVmFj dXVtRGVsYXlUaW1lIC0gY291bnRlcnMtPlZhY3V1bURlbGF5VGltZTsKKwlyZXBvcnQtPnRv dGFsX3RpbWUgPSBzZWNzICogMTAwMC4wICsgdXNlY3MgLyAxMDAwLjA7CisKKwlpZiAocmVs LT5wZ3N0YXRfaW5mbyAmJiBwZ3N0YXRfdHJhY2tfY291bnRzKQorCXsKKwkJcmVwb3J0LT5i bGtzX2ZldGNoZWQgPSByZWwtPnBnc3RhdF9pbmZvLT5jb3VudHMuYmxvY2tzX2ZldGNoZWQg LSBjb3VudGVycy0+YmxvY2tzX2ZldGNoZWQ7CisJCXJlcG9ydC0+Ymxrc19oaXQgPSByZWwt PnBnc3RhdF9pbmZvLT5jb3VudHMuYmxvY2tzX2hpdCAtIGNvdW50ZXJzLT5ibG9ja3NfaGl0 OworCX0KK30KKworLyoKKyAqIGV4dHZhY19zdGF0c19zdGFydF9pZHggLSBTdGFydCBleHRl bmRlZCB2YWN1dW0gc3RhdGlzdGljIGdhdGhlcmluZyBmb3IgaW5kZXguCisgKi8KK3ZvaWQK K2V4dHZhY19zdGF0c19zdGFydF9pZHgoUmVsYXRpb24gcmVsLCBJbmRleEJ1bGtEZWxldGVS ZXN1bHQgKnN0YXRzLAorCQkJCQkgICBMVkV4dFN0YXRDb3VudGVyc0lkeCAqIGNvdW50ZXJz KQoreworCWV4dHZhY19zdGF0c19zdGFydChyZWwsICZjb3VudGVycy0+Y29tbW9uKTsKKwlj b3VudGVycy0+cGFnZXNfZGVsZXRlZCA9IDA7CisJY291bnRlcnMtPnR1cGxlc19yZW1vdmVk ID0gMDsKKworCWlmIChzdGF0cyAhPSBOVUxMKQorCXsKKwkJY291bnRlcnMtPnR1cGxlc19y ZW1vdmVkID0gc3RhdHMtPnR1cGxlc19yZW1vdmVkOworCQljb3VudGVycy0+cGFnZXNfZGVs ZXRlZCA9IHN0YXRzLT5wYWdlc19kZWxldGVkOworCX0KK30KKworCisvKgorICogZXh0dmFj X3N0YXRzX2VuZF9pZHggLSBGaW5pc2ggZXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3RpYyBnYXRo ZXJpbmcgZm9yIGluZGV4LgorICovCit2b2lkCitleHR2YWNfc3RhdHNfZW5kX2lkeChSZWxh dGlvbiByZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMsCisJCQkJCSBMVkV4dFN0 YXRDb3VudGVyc0lkeCAqIGNvdW50ZXJzLCBQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMg KiByZXBvcnQpCit7CisJbWVtc2V0KHJlcG9ydCwgMCwgc2l6ZW9mKFBnU3RhdF9WYWN1dW1S ZWxhdGlvbkNvdW50cykpOworCWV4dHZhY19zdGF0c19lbmQocmVsLCAmY291bnRlcnMtPmNv bW1vbiwgJnJlcG9ydC0+Y29tbW9uKTsKKwlyZXBvcnQtPnR5cGUgPSBQR1NUQVRfRVhUVkFD X0lOREVYOworCisJaWYgKHN0YXRzICE9IE5VTEwpCisJeworCQlyZXBvcnQtPmNvbW1vbi50 dXBsZXNfZGVsZXRlZCA9IHN0YXRzLT50dXBsZXNfcmVtb3ZlZCAtIGNvdW50ZXJzLT50dXBs ZXNfcmVtb3ZlZDsKKwkJcmVwb3J0LT5pbmRleC5wYWdlc19kZWxldGVkID0gc3RhdHMtPnBh Z2VzX2RlbGV0ZWQgLSBjb3VudGVycy0+cGFnZXNfZGVsZXRlZDsKKwl9Cit9CisKKy8qCisg KiBBY2N1bXVsYXRlIGluZGV4IHN0YXRzIGludG8gdmFjcmVsIGZvciBsYXRlciBzdWJ0cmFj dGlvbiBmcm9tIGhlYXAgc3RhdHMuCisgKiBJdCBuZWVkcyB0byBwcmV2ZW50IGRvdWJsZS1j b3VudGluZyBvZiBzdGF0cyBmb3IgaGVhcHMgdGhhdAorICogaW5jbHVkZSBpbmRleGVzIGJl Y2F1c2UgaW5kZXhlcyBhcmUgdmFjdXVtZWQgYmVmb3JlIHRoZSBoZWFwLgorICogV2UgbmVl ZCB0byBiZSBjYXJlZnVsIHdpdGggYnVmZmVyIHVzYWdlIGFuZCB3YWwgdXNhZ2UgZHVyaW5n IHBhcmFsbGVsIHZhY3V1bQorICogYmVjYXVzZSB0aGV5IGFyZSBhY2N1bXVsYXRlZCBzdW1t YXJseSBmb3IgYWxsIGluZGV4ZXMgYXQgb25jZSBieSBsZWFkZXIgYWZ0ZXIKKyAqIGFsbCB3 b3JrZXJzIGhhdmUgZmluaXNoZWQuCisgKi8KK3N0YXRpYyB2b2lkCithY2N1bXVsYXRlX2lk eHNfdmFjdXVtX3N0YXRpc3RpY3MoTFZSZWxTdGF0ZSAqdmFjcmVsLAorCQkJCQkJCQkgIFBn U3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cyAqIGV4dFZhY0lkeFN0YXRzKQoreworCXZhY3Jl bC0+ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi5ibGtfcmVhZF90aW1lICs9IGV4dFZhY0lkeFN0 YXRzLT5jb21tb24uYmxrX3JlYWRfdGltZTsKKwl2YWNyZWwtPmV4dFZhY1JlcG9ydElkeC5j b21tb24uYmxrX3dyaXRlX3RpbWUgKz0gZXh0VmFjSWR4U3RhdHMtPmNvbW1vbi5ibGtfd3Jp dGVfdGltZTsKKwl2YWNyZWwtPmV4dFZhY1JlcG9ydElkeC5jb21tb24udG90YWxfYmxrc19k aXJ0aWVkICs9IGV4dFZhY0lkeFN0YXRzLT5jb21tb24udG90YWxfYmxrc19kaXJ0aWVkOwor CXZhY3JlbC0+ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi50b3RhbF9ibGtzX2hpdCArPSBleHRW YWNJZHhTdGF0cy0+Y29tbW9uLnRvdGFsX2Jsa3NfaGl0OworCXZhY3JlbC0+ZXh0VmFjUmVw b3J0SWR4LmNvbW1vbi50b3RhbF9ibGtzX3JlYWQgKz0gZXh0VmFjSWR4U3RhdHMtPmNvbW1v bi50b3RhbF9ibGtzX3JlYWQ7CisJdmFjcmVsLT5leHRWYWNSZXBvcnRJZHguY29tbW9uLnRv dGFsX2Jsa3Nfd3JpdHRlbiArPSBleHRWYWNJZHhTdGF0cy0+Y29tbW9uLnRvdGFsX2Jsa3Nf d3JpdHRlbjsKKwl2YWNyZWwtPmV4dFZhY1JlcG9ydElkeC5jb21tb24ud2FsX2J5dGVzICs9 IGV4dFZhY0lkeFN0YXRzLT5jb21tb24ud2FsX2J5dGVzOworCXZhY3JlbC0+ZXh0VmFjUmVw b3J0SWR4LmNvbW1vbi53YWxfZnBpICs9IGV4dFZhY0lkeFN0YXRzLT5jb21tb24ud2FsX2Zw aTsKKwl2YWNyZWwtPmV4dFZhY1JlcG9ydElkeC5jb21tb24ud2FsX3JlY29yZHMgKz0gZXh0 VmFjSWR4U3RhdHMtPmNvbW1vbi53YWxfcmVjb3JkczsKKwl2YWNyZWwtPmV4dFZhY1JlcG9y dElkeC5jb21tb24uZGVsYXlfdGltZSArPSBleHRWYWNJZHhTdGF0cy0+Y29tbW9uLmRlbGF5 X3RpbWU7CisJdmFjcmVsLT5leHRWYWNSZXBvcnRJZHguY29tbW9uLnRvdGFsX3RpbWUgKz0g ZXh0VmFjSWR4U3RhdHMtPmNvbW1vbi50b3RhbF90aW1lOworfQorCisvKiBCdWlsZCBoZWFw LXNwZWNpZmljIGV4dGVuZGVkIHN0YXRzICovCitzdGF0aWMgdm9pZAorYWNjdW11bGF0ZV9o ZWFwX3ZhY3V1bV9zdGF0aXN0aWNzKExWUmVsU3RhdGUgKnZhY3JlbCwgUGdTdGF0X1ZhY3V1 bVJlbGF0aW9uQ291bnRzICogZXh0VmFjU3RhdHMpCit7CisJZXh0VmFjU3RhdHMtPnR5cGUg PSBQR1NUQVRfRVhUVkFDX1RBQkxFOworCWV4dFZhY1N0YXRzLT50YWJsZS5wYWdlc19zY2Fu bmVkID0gdmFjcmVsLT5zY2FubmVkX3BhZ2VzOworCWV4dFZhY1N0YXRzLT50YWJsZS5wYWdl c19yZW1vdmVkID0gdmFjcmVsLT5yZW1vdmVkX3BhZ2VzOworCWV4dFZhY1N0YXRzLT50YWJs ZS52bV9uZXdfZnJvemVuX3BhZ2VzID0gdmFjcmVsLT5uZXdfYWxsX2Zyb3plbl9wYWdlczsK KwlleHRWYWNTdGF0cy0+dGFibGUudm1fbmV3X3Zpc2libGVfcGFnZXMgPSB2YWNyZWwtPm5l d19hbGxfdmlzaWJsZV9wYWdlczsKKwlleHRWYWNTdGF0cy0+dGFibGUudm1fbmV3X3Zpc2li bGVfZnJvemVuX3BhZ2VzID0gdmFjcmVsLT5uZXdfYWxsX3Zpc2libGVfYWxsX2Zyb3plbl9w YWdlczsKKwlleHRWYWNTdGF0cy0+Y29tbW9uLnR1cGxlc19kZWxldGVkID0gdmFjcmVsLT50 dXBsZXNfZGVsZXRlZDsKKwlleHRWYWNTdGF0cy0+dGFibGUudHVwbGVzX2Zyb3plbiA9IHZh Y3JlbC0+dHVwbGVzX2Zyb3plbjsKKwlleHRWYWNTdGF0cy0+dGFibGUucmVjZW50bHlfZGVh ZF90dXBsZXMgPSB2YWNyZWwtPnJlY2VudGx5X2RlYWRfdHVwbGVzOworCWV4dFZhY1N0YXRz LT50YWJsZS5taXNzZWRfZGVhZF90dXBsZXMgPSB2YWNyZWwtPm1pc3NlZF9kZWFkX3R1cGxl czsKKwlleHRWYWNTdGF0cy0+dGFibGUubWlzc2VkX2RlYWRfcGFnZXMgPSB2YWNyZWwtPm1p c3NlZF9kZWFkX3BhZ2VzOworCWV4dFZhY1N0YXRzLT50YWJsZS5pbmRleF92YWN1dW1fY291 bnQgPSB2YWNyZWwtPm51bV9pbmRleF9zY2FuczsKKwlleHRWYWNTdGF0cy0+Y29tbW9uLndy YXBhcm91bmRfZmFpbHNhZmVfY291bnQgPSB2YWNyZWwtPndyYXBhcm91bmRfZmFpbHNhZmVf Y291bnQ7CisKKwkvKiBIb29rIGlzIGludm9rZWQgZnJvbSBwZ3N0YXRfcmVwb3J0X3ZhY3V1 bSgpIHdoZW4gZXh0c3RhdHMgaXMgcGFzc2VkICovCisKKwkvKiBTdWJ0cmFjdCBpbmRleCBz dGF0cyBmcm9tIGhlYXAgdG8gYXZvaWQgZG91YmxlLWNvdW50aW5nICovCisJZXh0VmFjU3Rh dHMtPmNvbW1vbi5ibGtfcmVhZF90aW1lIC09IHZhY3JlbC0+ZXh0VmFjUmVwb3J0SWR4LmNv bW1vbi5ibGtfcmVhZF90aW1lOworCWV4dFZhY1N0YXRzLT5jb21tb24uYmxrX3dyaXRlX3Rp bWUgLT0gdmFjcmVsLT5leHRWYWNSZXBvcnRJZHguY29tbW9uLmJsa193cml0ZV90aW1lOwor CWV4dFZhY1N0YXRzLT5jb21tb24udG90YWxfYmxrc19kaXJ0aWVkIC09IHZhY3JlbC0+ZXh0 VmFjUmVwb3J0SWR4LmNvbW1vbi50b3RhbF9ibGtzX2RpcnRpZWQ7CisJZXh0VmFjU3RhdHMt PmNvbW1vbi50b3RhbF9ibGtzX2hpdCAtPSB2YWNyZWwtPmV4dFZhY1JlcG9ydElkeC5jb21t b24udG90YWxfYmxrc19oaXQ7CisJZXh0VmFjU3RhdHMtPmNvbW1vbi50b3RhbF9ibGtzX3Jl YWQgLT0gdmFjcmVsLT5leHRWYWNSZXBvcnRJZHguY29tbW9uLnRvdGFsX2Jsa3NfcmVhZDsK KwlleHRWYWNTdGF0cy0+Y29tbW9uLnRvdGFsX2Jsa3Nfd3JpdHRlbiAtPSB2YWNyZWwtPmV4 dFZhY1JlcG9ydElkeC5jb21tb24udG90YWxfYmxrc193cml0dGVuOworCWV4dFZhY1N0YXRz LT5jb21tb24ud2FsX2J5dGVzIC09IHZhY3JlbC0+ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi53 YWxfYnl0ZXM7CisJZXh0VmFjU3RhdHMtPmNvbW1vbi53YWxfZnBpIC09IHZhY3JlbC0+ZXh0 VmFjUmVwb3J0SWR4LmNvbW1vbi53YWxfZnBpOworCWV4dFZhY1N0YXRzLT5jb21tb24ud2Fs X3JlY29yZHMgLT0gdmFjcmVsLT5leHRWYWNSZXBvcnRJZHguY29tbW9uLndhbF9yZWNvcmRz OworCWV4dFZhY1N0YXRzLT5jb21tb24udG90YWxfdGltZSAtPSB2YWNyZWwtPmV4dFZhY1Jl cG9ydElkeC5jb21tb24udG90YWxfdGltZTsKKwlleHRWYWNTdGF0cy0+Y29tbW9uLmRlbGF5 X3RpbWUgLT0gdmFjcmVsLT5leHRWYWNSZXBvcnRJZHguY29tbW9uLmRlbGF5X3RpbWU7Cit9 CiAKIC8qCiAgKiBIZWxwZXIgdG8gc2V0IHVwIHRoZSBlYWdlciBzY2FubmluZyBzdGF0ZSBm b3IgdmFjdXVtaW5nIGEgc2luZ2xlIHJlbGF0aW9uLgpAQCAtNjQzLDcgKzgxNCwxMCBAQCBo ZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFt cywKIAlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKIAljaGFyCSAgKippbmRu YW1lcyA9IE5VTEw7CiAJU2l6ZQkJZGVhZF9pdGVtc19tYXhfYnl0ZXMgPSAwOworCUxWRXh0 U3RhdENvdW50ZXJzIGV4dFZhY0NvdW50ZXJzOworCVBnU3RhdF9WYWN1dW1SZWxhdGlvbkNv dW50cyBleHRWYWNSZXBvcnQ7CiAKKwltZW1zZXQoJmV4dFZhY1JlcG9ydCwgMCwgc2l6ZW9m KGV4dFZhY1JlcG9ydCkpOwogCXZlcmJvc2UgPSAocGFyYW1zLT5vcHRpb25zICYgVkFDT1BU X1ZFUkJPU0UpICE9IDA7CiAJaW5zdHJ1bWVudCA9ICh2ZXJib3NlIHx8IChBbUF1dG9WYWN1 dW1Xb3JrZXJQcm9jZXNzKCkgJiYKIAkJCQkJCQkgIHBhcmFtcy0+bG9nX3ZhY3V1bV9taW5f ZHVyYXRpb24gPj0gMCkpOwpAQCAtNjYwLDYgKzgzNCw5IEBAIGhlYXBfdmFjdXVtX3JlbChS ZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCS8qIFVzZWQgZm9y IGluc3RydW1lbnRhdGlvbiBhbmQgc3RhdHMgcmVwb3J0ICovCiAJc3RhcnR0aW1lID0gR2V0 Q3VycmVudFRpbWVzdGFtcCgpOwogCisJaWYgKHNldF9yZXBvcnRfdmFjdXVtX2hvb2spCisJ CWV4dHZhY19zdGF0c19zdGFydChyZWwsICZleHRWYWNDb3VudGVycyk7CisKIAlwZ3N0YXRf cHJvZ3Jlc3Nfc3RhcnRfY29tbWFuZChQUk9HUkVTU19DT01NQU5EX1ZBQ1VVTSwKIAkJCQkJ CQkJICBSZWxhdGlvbkdldFJlbGlkKHJlbCkpOwogCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQ cm9jZXNzKCkpCkBAIC02ODcsNyArODY0LDkgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9u IHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJdmFjcmVsLT5kYm5hbWUgPSBn ZXRfZGF0YWJhc2VfbmFtZShNeURhdGFiYXNlSWQpOwogCXZhY3JlbC0+cmVsbmFtZXNwYWNl ID0gZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCkpOwogCXZh Y3JlbC0+cmVsbmFtZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7 CisJdmFjcmVsLT5yZWxvaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbCk7CiAJdmFjcmVsLT5p bmRuYW1lID0gTlVMTDsKKwltZW1zZXQoJnZhY3JlbC0+ZXh0VmFjUmVwb3J0SWR4LCAwLCBz aXplb2YodmFjcmVsLT5leHRWYWNSZXBvcnRJZHgpKTsKIAl2YWNyZWwtPnBoYXNlID0gVkFD VVVNX0VSUkNCX1BIQVNFX1VOS05PV047CiAJdmFjcmVsLT52ZXJib3NlID0gdmVyYm9zZTsK IAllcnJjYWxsYmFjay5jYWxsYmFjayA9IHZhY3V1bV9lcnJvcl9jYWxsYmFjazsKQEAgLTgw Myw2ICs5ODIsOSBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1 dW1QYXJhbXMgKnBhcmFtcywKIAl2YWNyZWwtPnJlbF9wYWdlcyA9IG9yaWdfcmVsX3BhZ2Vz ID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhyZWwpOwogCXZhY3JlbC0+dmlzdGVzdCA9 IEdsb2JhbFZpc1Rlc3RGb3IocmVsKTsKIAorCS8qIEluaXRpYWxpemUgd3JhcGFyb3VuZCBm YWlsc2FmZSBjb3VudCBmb3IgZXh0ZW5kZWQgdmFjdXVtIHN0YXRzICovCisJdmFjcmVsLT53 cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50ID0gMDsKKwogCS8qIEluaXRpYWxpemUgc3RhdGUg dXNlZCB0byB0cmFjayBvbGRlc3QgZXh0YW50IFhJRC9NWElEICovCiAJdmFjcmVsLT5OZXdS ZWxmcm96ZW5YaWQgPSB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbjsKIAl2YWNyZWwtPk5l d1JlbG1pbk14aWQgPSB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0TXhhY3Q7CkBAIC05ODUsMTEg KzExNjcsMjYgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVt UGFyYW1zICpwYXJhbXMsCiAJICogc29vbiBpbiBjYXNlcyB3aGVyZSB0aGUgZmFpbHNhZmUg cHJldmVudGVkIHNpZ25pZmljYW50IGFtb3VudHMgb2YgaGVhcAogCSAqIHZhY3V1bWluZy4K IAkgKi8KLQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bShyZWwsCi0JCQkJCQkgTWF4KHZhY3JlbC0+ bmV3X2xpdmVfdHVwbGVzLCAwKSwKLQkJCQkJCSB2YWNyZWwtPnJlY2VudGx5X2RlYWRfdHVw bGVzICsKLQkJCQkJCSB2YWNyZWwtPm1pc3NlZF9kZWFkX3R1cGxlcywKLQkJCQkJCSBzdGFy dHRpbWUpOworCWlmIChzZXRfcmVwb3J0X3ZhY3V1bV9ob29rKQorCXsKKwkJZXh0dmFjX3N0 YXRzX2VuZChyZWwsICZleHRWYWNDb3VudGVycywgJmV4dFZhY1JlcG9ydC5jb21tb24pOwor CQlhY2N1bXVsYXRlX2hlYXBfdmFjdXVtX3N0YXRpc3RpY3ModmFjcmVsLCAmZXh0VmFjUmVw b3J0KTsKKworCQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bV9leHQocmVsLAorCQkJCQkJCQkgTWF4 KHZhY3JlbC0+bmV3X2xpdmVfdHVwbGVzLCAwKSwKKwkJCQkJCQkJIHZhY3JlbC0+cmVjZW50 bHlfZGVhZF90dXBsZXMgKworCQkJCQkJCQkgdmFjcmVsLT5taXNzZWRfZGVhZF90dXBsZXMs CisJCQkJCQkJCSBzdGFydHRpbWUsCisJCQkJCQkJCSAmZXh0VmFjUmVwb3J0KTsKKwl9CisJ ZWxzZQorCQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bV9leHQocmVsLAorCQkJCQkJCQkgTWF4KHZh Y3JlbC0+bmV3X2xpdmVfdHVwbGVzLCAwKSwKKwkJCQkJCQkJIHZhY3JlbC0+cmVjZW50bHlf ZGVhZF90dXBsZXMgKworCQkJCQkJCQkgdmFjcmVsLT5taXNzZWRfZGVhZF90dXBsZXMsCisJ CQkJCQkJCSBzdGFydHRpbWUsCisJCQkJCQkJCSBOVUxMKTsKKwogCXBnc3RhdF9wcm9ncmVz c19lbmRfY29tbWFuZCgpOwogCiAJaWYgKGluc3RydW1lbnQpCkBAIC0yOTAzLDYgKzMxMDAs NyBAQCBsYXp5X2NoZWNrX3dyYXBhcm91bmRfZmFpbHNhZmUoTFZSZWxTdGF0ZSAqdmFjcmVs KQogCQlpbnQ2NAkJcHJvZ3Jlc3NfdmFsWzNdID0gezAsIDAsIFBST0dSRVNTX1ZBQ1VVTV9N T0RFX0ZBSUxTQUZFfTsKIAogCQlWYWN1dW1GYWlsc2FmZUFjdGl2ZSA9IHRydWU7CisJCXZh Y3JlbC0+d3JhcGFyb3VuZF9mYWlsc2FmZV9jb3VudCsrOwogCiAJCS8qCiAJCSAqIEFiYW5k b24gdXNlIG9mIGEgYnVmZmVyIGFjY2VzcyBzdHJhdGVneSB0byBhbGxvdyB1c2Ugb2YgYWxs IG9mCkBAIC0zMDE1LDcgKzMyMTMsMTEgQEAgbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0 aW9uIGluZHJlbCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIHsKIAlJbmRleFZh Y3V1bUluZm8gaXZpbmZvOwogCUxWU2F2ZWRFcnJJbmZvIHNhdmVkX2Vycl9pbmZvOworCUxW RXh0U3RhdENvdW50ZXJzSWR4IGV4dFZhY0NvdW50ZXJzOworCVBnU3RhdF9WYWN1dW1SZWxh dGlvbkNvdW50cyBleHRWYWNSZXBvcnQ7CiAKKwlpZiAoc2V0X3JlcG9ydF92YWN1dW1faG9v aykKKwkJZXh0dmFjX3N0YXRzX3N0YXJ0X2lkeChpbmRyZWwsIGlzdGF0LCAmZXh0VmFjQ291 bnRlcnMpOwogCWl2aW5mby5pbmRleCA9IGluZHJlbDsKIAlpdmluZm8uaGVhcHJlbCA9IHZh Y3JlbC0+cmVsOwogCWl2aW5mby5hbmFseXplX29ubHkgPSBmYWxzZTsKQEAgLTMwMzMsNiAr MzIzNSw3IEBAIGxhenlfdmFjdXVtX29uZV9pbmRleChSZWxhdGlvbiBpbmRyZWwsIEluZGV4 QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAJICovCiAJQXNzZXJ0KHZhY3JlbC0+aW5kbmFt ZSA9PSBOVUxMKTsKIAl2YWNyZWwtPmluZG5hbWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKGluZHJlbCkpOworCXZhY3JlbC0+aW5kb2lkID0gUmVsYXRpb25HZXRSZWxp ZChpbmRyZWwpOwogCXVwZGF0ZV92YWN1dW1fZXJyb3JfaW5mbyh2YWNyZWwsICZzYXZlZF9l cnJfaW5mbywKIAkJCQkJCQkgVkFDVVVNX0VSUkNCX1BIQVNFX1ZBQ1VVTV9JTkRFWCwKIAkJ CQkJCQkgSW52YWxpZEJsb2NrTnVtYmVyLCBJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKQEAgLTMw NDEsNiArMzI0NCwxNCBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVs LCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCWlzdGF0ID0gdmFjX2J1bGtkZWxf b25lX2luZGV4KCZpdmluZm8sIGlzdGF0LCB2YWNyZWwtPmRlYWRfaXRlbXMsCiAJCQkJCQkJ CSAgdmFjcmVsLT5kZWFkX2l0ZW1zX2luZm8pOwogCisJaWYgKHNldF9yZXBvcnRfdmFjdXVt X2hvb2spCisJeworCQltZW1zZXQoJmV4dFZhY1JlcG9ydCwgMCwgc2l6ZW9mKGV4dFZhY1Jl cG9ydCkpOworCQlleHR2YWNfc3RhdHNfZW5kX2lkeChpbmRyZWwsIGlzdGF0LCAmZXh0VmFj Q291bnRlcnMsICZleHRWYWNSZXBvcnQpOworCQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bV9leHQo aW5kcmVsLCAtMSwgLTEsIDAsICZleHRWYWNSZXBvcnQpOworCQlhY2N1bXVsYXRlX2lkeHNf dmFjdXVtX3N0YXRpc3RpY3ModmFjcmVsLCAmZXh0VmFjUmVwb3J0KTsKKwl9CisKIAkvKiBS ZXZlcnQgdG8gdGhlIHByZXZpb3VzIHBoYXNlIGluZm9ybWF0aW9uIGZvciBlcnJvciB0cmFj ZWJhY2sgKi8KIAlyZXN0b3JlX3ZhY3V1bV9lcnJvcl9pbmZvKHZhY3JlbCwgJnNhdmVkX2Vy cl9pbmZvKTsKIAlwZnJlZSh2YWNyZWwtPmluZG5hbWUpOwpAQCAtMzA2NSw3ICszMjc2LDEx IEBAIGxhenlfY2xlYW51cF9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtE ZWxldGVSZXN1bHQgKmlzdGF0LAogewogCUluZGV4VmFjdXVtSW5mbyBpdmluZm87CiAJTFZT YXZlZEVyckluZm8gc2F2ZWRfZXJyX2luZm87CisJTFZFeHRTdGF0Q291bnRlcnNJZHggZXh0 VmFjQ291bnRlcnM7CisJUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzIGV4dFZhY1JlcG9y dDsKIAorCWlmIChzZXRfcmVwb3J0X3ZhY3V1bV9ob29rKQorCQlleHR2YWNfc3RhdHNfc3Rh cnRfaWR4KGluZHJlbCwgaXN0YXQsICZleHRWYWNDb3VudGVycyk7CiAJaXZpbmZvLmluZGV4 ID0gaW5kcmVsOwogCWl2aW5mby5oZWFwcmVsID0gdmFjcmVsLT5yZWw7CiAJaXZpbmZvLmFu YWx5emVfb25seSA9IGZhbHNlOwpAQCAtMzA4NCwxMiArMzI5OSwyMSBAQCBsYXp5X2NsZWFu dXBfb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpp c3RhdCwKIAkgKi8KIAlBc3NlcnQodmFjcmVsLT5pbmRuYW1lID09IE5VTEwpOwogCXZhY3Jl bC0+aW5kbmFtZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kcmVsKSk7 CisJdmFjcmVsLT5pbmRvaWQgPSBSZWxhdGlvbkdldFJlbGlkKGluZHJlbCk7CiAJdXBkYXRl X3ZhY3V1bV9lcnJvcl9pbmZvKHZhY3JlbCwgJnNhdmVkX2Vycl9pbmZvLAogCQkJCQkJCSBW QUNVVU1fRVJSQ0JfUEhBU0VfSU5ERVhfQ0xFQU5VUCwKIAkJCQkJCQkgSW52YWxpZEJsb2Nr TnVtYmVyLCBJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAogCWlzdGF0ID0gdmFjX2NsZWFudXBf b25lX2luZGV4KCZpdmluZm8sIGlzdGF0KTsKIAorCWlmIChzZXRfcmVwb3J0X3ZhY3V1bV9o b29rKQorCXsKKwkJbWVtc2V0KCZleHRWYWNSZXBvcnQsIDAsIHNpemVvZihleHRWYWNSZXBv cnQpKTsKKwkJZXh0dmFjX3N0YXRzX2VuZF9pZHgoaW5kcmVsLCBpc3RhdCwgJmV4dFZhY0Nv dW50ZXJzLCAmZXh0VmFjUmVwb3J0KTsKKwkJcGdzdGF0X3JlcG9ydF92YWN1dW1fZXh0KGlu ZHJlbCwgLTEsIC0xLCAwLCAmZXh0VmFjUmVwb3J0KTsKKwkJYWNjdW11bGF0ZV9pZHhzX3Zh Y3V1bV9zdGF0aXN0aWNzKHZhY3JlbCwgJmV4dFZhY1JlcG9ydCk7CisJfQorCiAJLyogUmV2 ZXJ0IHRvIHRoZSBwcmV2aW91cyBwaGFzZSBpbmZvcm1hdGlvbiBmb3IgZXJyb3IgdHJhY2Vi YWNrICovCiAJcmVzdG9yZV92YWN1dW1fZXJyb3JfaW5mbyh2YWNyZWwsICZzYXZlZF9lcnJf aW5mbyk7CiAJcGZyZWUodmFjcmVsLT5pbmRuYW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMK aW5kZXggOTlkMGRiODJlZDcuLmE3ZmI3MzE3M2Y1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0u YwpAQCAtMTE4LDYgKzExOCw5IEBAIHBnX2F0b21pY191aW50MzIgKlZhY3V1bVNoYXJlZENv c3RCYWxhbmNlID0gTlVMTDsKIHBnX2F0b21pY191aW50MzIgKlZhY3V1bUFjdGl2ZU5Xb3Jr ZXJzID0gTlVMTDsKIGludAkJCVZhY3V1bUNvc3RCYWxhbmNlTG9jYWwgPSAwOwogCisvKiBD dW11bGF0aXZlIHN0b3JhZ2UgdG8gcmVwb3J0IHRvdGFsIHZhY3V1bSBkZWxheSB0aW1lICht c2VjKS4gKi8KK2RvdWJsZQkJVmFjdXVtRGVsYXlUaW1lID0gMDsKKwogLyogbm9uLWV4cG9y dCBmdW5jdGlvbiBwcm90b3R5cGVzICovCiBzdGF0aWMgTGlzdCAqZXhwYW5kX3ZhY3V1bV9y ZWwoVmFjdXVtUmVsYXRpb24gKnZyZWwsCiAJCQkJCQkJICAgTWVtb3J5Q29udGV4dCB2YWNf Y29udGV4dCwgaW50IG9wdGlvbnMpOwpAQCAtMjU2MSw2ICsyNTY0LDcgQEAgdmFjdXVtX2Rl bGF5X3BvaW50KGJvb2wgaXNfYW5hbHl6ZSkKIAkJCWV4aXQoMSk7CiAKIAkJVmFjdXVtQ29z dEJhbGFuY2UgPSAwOworCQlWYWN1dW1EZWxheVRpbWUgKz0gbXNlYzsKIAogCQkvKgogCQkg KiBCYWxhbmNlIGFuZCB1cGRhdGUgbGltaXQgdmFsdWVzIGZvciBhdXRvdmFjdXVtIHdvcmtl cnMuIFdlIG11c3QgZG8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmlu ZGV4IDQxY2VmY2ZkZTU0Li4yMDBmMTJhMmQxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW1wYXJhbGxlbC5jCkBAIC0xMDc2LDYgKzEwNzYsOCBAQCBwYXJhbGxlbF92YWN1dW1f cHJvY2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBSZWxhdGlvbiBp bmRyZWwsCiAJSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCA9IE5VTEw7CiAJSW5kZXhC dWxrRGVsZXRlUmVzdWx0ICppc3RhdF9yZXM7CiAJSW5kZXhWYWN1dW1JbmZvIGl2aW5mbzsK KwlMVkV4dFN0YXRDb3VudGVyc0lkeCBleHRWYWNDb3VudGVyczsKKwlQZ1N0YXRfVmFjdXVt UmVsYXRpb25Db3VudHMgZXh0VmFjUmVwb3J0OwogCiAJLyoKIAkgKiBVcGRhdGUgdGhlIHBv aW50ZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYnVsay1kZWxldGlvbiByZXN1bHQgaWYgc29t ZW9uZQpAQCAtMTA4NCw2ICsxMDg2LDggQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfb25l X2luZGV4KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24gaW5kcmVsLAogCWlm IChpbmRzdGF0cy0+aXN0YXRfdXBkYXRlZCkKIAkJaXN0YXQgPSAmKGluZHN0YXRzLT5pc3Rh dCk7CiAKKwlpZiAoc2V0X3JlcG9ydF92YWN1dW1faG9vaykKKwkJZXh0dmFjX3N0YXRzX3N0 YXJ0X2lkeChpbmRyZWwsIGlzdGF0LCAmZXh0VmFjQ291bnRlcnMpOwogCWl2aW5mby5pbmRl eCA9IGluZHJlbDsKIAlpdmluZm8uaGVhcHJlbCA9IHB2cy0+aGVhcHJlbDsKIAlpdmluZm8u YW5hbHl6ZV9vbmx5ID0gZmFsc2U7CkBAIC0xMTEyLDYgKzExMTYsMTMgQEAgcGFyYWxsZWxf dmFjdXVtX3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgUmVs YXRpb24gaW5kcmVsLAogCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRyZWwpKTsK IAl9CiAKKwlpZiAoc2V0X3JlcG9ydF92YWN1dW1faG9vaykKKwl7CisJCW1lbXNldCgmZXh0 VmFjUmVwb3J0LCAwLCBzaXplb2YoZXh0VmFjUmVwb3J0KSk7CisJCWV4dHZhY19zdGF0c19l bmRfaWR4KGluZHJlbCwgaXN0YXRfcmVzLCAmZXh0VmFjQ291bnRlcnMsICZleHRWYWNSZXBv cnQpOworCQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bV9leHQoaW5kcmVsLCAtMSwgLTEsIDAsICZl eHRWYWNSZXBvcnQpOworCX0KKwogCS8qCiAJICogQ29weSB0aGUgaW5kZXggYnVsay1kZWxl dGlvbiByZXN1bHQgcmV0dXJuZWQgZnJvbSBhbWJ1bGtkZWxldGUgYW5kCiAJICogYW12YWN1 dW1jbGVhbnVwIHRvIHRoZSBEU00gc2VnbWVudCBpZiBpdCdzIHRoZSBmaXJzdCBjeWNsZSBi ZWNhdXNlIHRoZXkKQEAgLTEyNzYsNiArMTI4Nyw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWlu KGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkJVmFjdXVtVXBkYXRlQ29zdHMo KTsKIAogCVZhY3V1bUNvc3RCYWxhbmNlID0gMDsKKwlWYWN1dW1EZWxheVRpbWUgPSAwOwog CVZhY3V1bUNvc3RCYWxhbmNlTG9jYWwgPSAwOwogCVZhY3V1bVNoYXJlZENvc3RCYWxhbmNl ID0gJihzaGFyZWQtPmNvc3RfYmFsYW5jZSk7CiAJVmFjdXVtQWN0aXZlTldvcmtlcnMgPSAm KHNoYXJlZC0+YWN0aXZlX253b3JrZXJzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKaW5kZXggOTJlMWY2MGEwODAuLjIyNmQ3YWEwNmQ1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRp b24uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24u YwpAQCAtMjcyLDYgKzI3MiwzMCBAQCBwZ3N0YXRfcmVwb3J0X3ZhY3V1bShSZWxhdGlvbiBy ZWwsIFBnU3RhdF9Db3VudGVyIGxpdmV0dXBsZXMsCiAJKHZvaWQpIHBnc3RhdF9mbHVzaF9i YWNrZW5kKGZhbHNlLCBQR1NUQVRfQkFDS0VORF9GTFVTSF9JTyk7CiB9CiAKKy8qCisgKiBI b29rIGZvciBleHRlbnNpb25zIHRvIHJlY2VpdmUgZXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3Rp Y3MuCisgKiBOVUxMIHdoZW4gbm8gZXh0ZW5zaW9uIGhhcyByZWdpc3RlcmVkLgorICovCitz ZXRfcmVwb3J0X3ZhY3V1bV9ob29rX3R5cGUgc2V0X3JlcG9ydF92YWN1dW1faG9vayA9IE5V TEw7CisKKy8qCisgKiBSZXBvcnQgZXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3RpY3MgdG8gZXh0 ZW5zaW9ucyB2aWEgc2V0X3JlcG9ydF92YWN1dW1faG9vay4KKyAqIFdoZW4gbGl2ZXR1cGxl cy9kZWFkdHVwbGVzL3N0YXJ0dGltZSBhcmUgcHJvdmlkZWQgKGhlYXAgY2FzZSksIGFsc28g Y2FsbHMKKyAqIHBnc3RhdF9yZXBvcnRfdmFjdXVtLiBGb3IgaW5kZXhlcywgcGFzcyAtMSwg LTEsIDAgdG8gc2tpcCBwZ3N0YXRfcmVwb3J0X3ZhY3V1bS4KKyAqLwordm9pZAorcGdzdGF0 X3JlcG9ydF92YWN1dW1fZXh0KFJlbGF0aW9uIHJlbCwgUGdTdGF0X0NvdW50ZXIgbGl2ZXR1 cGxlcywKKwkJCQkJCSBQZ1N0YXRfQ291bnRlciBkZWFkdHVwbGVzLCBUaW1lc3RhbXBUeiBz dGFydHRpbWUsCisJCQkJCQkgUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzICogZXh0c3Rh dHMpCit7CisJcGdzdGF0X3JlcG9ydF92YWN1dW0ocmVsLCBsaXZldHVwbGVzLCBkZWFkdHVw bGVzLCBzdGFydHRpbWUpOworCisJaWYgKGV4dHN0YXRzICE9IE5VTEwgJiYgc2V0X3JlcG9y dF92YWN1dW1faG9vaykKKwkJKCpzZXRfcmVwb3J0X3ZhY3V1bV9ob29rKSAoUmVsYXRpb25H ZXRSZWxpZChyZWwpLAorCQkJCQkJCQkgICByZWwtPnJkX3JlbC0+cmVsaXNzaGFyZWQsCisJ CQkJCQkJCSAgIGV4dHN0YXRzKTsKK30KKwogLyoKICAqIFJlcG9ydCB0aGF0IHRoZSB0YWJs ZSB3YXMganVzdCBhbmFseXplZCBhbmQgZmx1c2ggSU8gc3RhdGlzdGljcy4KICAqCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3ZhY3V1bS5oCmluZGV4IDk1NmQ5Y2VhMzZkLi5hOTI1ZjdkYTk5MiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdmFjdXVtLmgKQEAgLTIxLDkgKzIxLDExIEBACiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19jbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVu dC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9ub2RlLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9idWYuaCIKICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgorI2luY2x1ZGUgInBnc3Rh dC5oIgogCiAvKgogICogRmxhZ3MgZm9yIGFtcGFyYWxsZWx2YWN1dW1vcHRpb25zIHRvIGNv bnRyb2wgdGhlIHBhcnRpY2lwYXRpb24gb2YgYnVsa2RlbGV0ZQpAQCAtMzU0LDYgKzM1Niwz MyBAQCBleHRlcm4gUEdETExJTVBPUlQgcGdfYXRvbWljX3VpbnQzMiAqVmFjdXVtU2hhcmVk Q29zdEJhbGFuY2U7CiBleHRlcm4gUEdETExJTVBPUlQgcGdfYXRvbWljX3VpbnQzMiAqVmFj dXVtQWN0aXZlTldvcmtlcnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IFZhY3V1bUNvc3RC YWxhbmNlTG9jYWw7CiAKKy8qIEN1bXVsYXRpdmUgc3RvcmFnZSB0byByZXBvcnQgdG90YWwg dmFjdXVtIGRlbGF5IHRpbWUgKG1zZWMpLiAqLworZXh0ZXJuIFBHRExMSU1QT1JUIGRvdWJs ZSBWYWN1dW1EZWxheVRpbWU7CisKKy8qIENvdW50ZXJzIGZvciBleHRlbmRlZCB2YWN1dW0g c3RhdGlzdGljcyBnYXRoZXJpbmcgKi8KK3R5cGVkZWYgc3RydWN0IExWRXh0U3RhdENvdW50 ZXJzCit7CisJVGltZXN0YW1wVHogc3RhcnR0aW1lOworCVdhbFVzYWdlCXdhbHVzYWdlOwor CUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlOworCWRvdWJsZQkJVmFjdXVtRGVsYXlUaW1lOworCVBn U3RhdF9Db3VudGVyIGJsb2Nrc19mZXRjaGVkOworCVBnU3RhdF9Db3VudGVyIGJsb2Nrc19o aXQ7Cit9IExWRXh0U3RhdENvdW50ZXJzOworCit0eXBlZGVmIHN0cnVjdCBMVkV4dFN0YXRD b3VudGVyc0lkeAoreworCUxWRXh0U3RhdENvdW50ZXJzIGNvbW1vbjsKKwlpbnQ2NAkJcGFn ZXNfZGVsZXRlZDsKKwlpbnQ2NAkJdHVwbGVzX3JlbW92ZWQ7Cit9IExWRXh0U3RhdENvdW50 ZXJzSWR4OworCitleHRlcm4gdm9pZCBleHR2YWNfc3RhdHNfc3RhcnRfaWR4KFJlbGF0aW9u IHJlbCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywKKwkJCQkJCQkJICAgTFZFeHRT dGF0Q291bnRlcnNJZHggKmNvdW50ZXJzKTsKK2V4dGVybiB2b2lkIGV4dHZhY19zdGF0c19l bmRfaWR4KFJlbGF0aW9uIHJlbCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywKKwkJ CQkJCQkJIExWRXh0U3RhdENvdW50ZXJzSWR4ICpjb3VudGVycywKKwkJCQkJCQkJIFBnU3Rh dF9WYWN1dW1SZWxhdGlvbkNvdW50cyAqcmVwb3J0KTsKKwogZXh0ZXJuIFBHRExMSU1QT1JU IGJvb2wgVmFjdXVtRmFpbHNhZmVBY3RpdmU7CiBleHRlcm4gUEdETExJTVBPUlQgZG91Ymxl IHZhY3V1bV9jb3N0X2RlbGF5OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCB2YWN1dW1fY29z dF9saW1pdDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1 ZGUvcGdzdGF0LmgKaW5kZXggN2RiMzZjZjhhZGQuLjhkOTM0OTczZGMxIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAt OTMsNiArOTMsNjQgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0Z1bmN0aW9uQ291bnRzCiAv KgogICogV29ya2luZyBzdGF0ZSBuZWVkZWQgdG8gYWNjdW11bGF0ZSBwZXItZnVuY3Rpb24t Y2FsbCB0aW1pbmcgc3RhdGlzdGljcy4KICAqLworLyoKKyAqIEV4dGVuZGVkIHZhY3V1bSBz dGF0aXN0aWNzIC0gcGFzc2VkIHRvIGV4dGVuc2lvbnMgdmlhIHNldF9yZXBvcnRfdmFjdXVt X2hvb2suCisgKiBUeXBlIG9mIGVudHJ5OiB0YWJsZSAoaGVhcCksIGluZGV4LCBvciBkYXRh YmFzZSBhZ2dyZWdhdGUuCisgKi8KK3R5cGVkZWYgZW51bSBFeHRWYWNSZXBvcnRUeXBlCit7 CisJUEdTVEFUX0VYVFZBQ19JTlZBTElEID0gMCwKKwlQR1NUQVRfRVhUVkFDX1RBQkxFID0g MSwKKwlQR1NUQVRfRVhUVkFDX0lOREVYID0gMiwKKwlQR1NUQVRfRVhUVkFDX0RCID0gMywK K30JCQlFeHRWYWNSZXBvcnRUeXBlOworCit0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfQ29tbW9u Q291bnRzCit7CisJaW50NjQJCXRvdGFsX2Jsa3NfcmVhZDsKKwlpbnQ2NAkJdG90YWxfYmxr c19oaXQ7CisJaW50NjQJCXRvdGFsX2Jsa3NfZGlydGllZDsKKwlpbnQ2NAkJdG90YWxfYmxr c193cml0dGVuOworCWludDY0CQlibGtzX2ZldGNoZWQ7CisJaW50NjQJCWJsa3NfaGl0Owor CWludDY0CQl3YWxfcmVjb3JkczsKKwlpbnQ2NAkJd2FsX2ZwaTsKKwl1aW50NjQJCXdhbF9i eXRlczsKKwlkb3VibGUJCWJsa19yZWFkX3RpbWU7CisJZG91YmxlCQlibGtfd3JpdGVfdGlt ZTsKKwlkb3VibGUJCWRlbGF5X3RpbWU7CisJZG91YmxlCQl0b3RhbF90aW1lOworCWludDMy CQl3cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50OworCWludDMyCQlpbnRlcnJ1cHRzX2NvdW50 OworCWludDY0CQl0dXBsZXNfZGVsZXRlZDsKK30JCQlQZ1N0YXRfQ29tbW9uQ291bnRzOwor Cit0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMKK3sKKwlQZ1N0 YXRfQ29tbW9uQ291bnRzIGNvbW1vbjsKKwlFeHRWYWNSZXBvcnRUeXBlIHR5cGU7CisJdW5p b24KKwl7CisJCXN0cnVjdAorCQl7CisJCQlpbnQ2NAkJdHVwbGVzX2Zyb3plbjsKKwkJCWlu dDY0CQlyZWNlbnRseV9kZWFkX3R1cGxlczsKKwkJCWludDY0CQltaXNzZWRfZGVhZF90dXBs ZXM7CisJCQlpbnQ2NAkJcGFnZXNfc2Nhbm5lZDsKKwkJCWludDY0CQlwYWdlc19yZW1vdmVk OworCQkJaW50NjQJCXZtX25ld19mcm96ZW5fcGFnZXM7CisJCQlpbnQ2NAkJdm1fbmV3X3Zp c2libGVfcGFnZXM7CisJCQlpbnQ2NAkJdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzOwor CQkJaW50NjQJCW1pc3NlZF9kZWFkX3BhZ2VzOworCQkJaW50NjQJCWluZGV4X3ZhY3V1bV9j b3VudDsKKwkJfQkJCXRhYmxlOworCQlzdHJ1Y3QKKwkJeworCQkJaW50NjQJCXBhZ2VzX2Rl bGV0ZWQ7CisJCX0JCQlpbmRleDsKKwl9OworfQkJCVBnU3RhdF9WYWN1dW1SZWxhdGlvbkNv dW50czsKKwogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0Z1bmN0aW9uQ2FsbFVzYWdlCiB7CiAJ LyogTGluayB0byBmdW5jdGlvbidzIGhhc2h0YWJsZSBlbnRyeSAobXVzdCBzdGlsbCBiZSB0 aGVyZSBhdCBleGl0ISkgKi8KQEAgLTcwMyw2ICs3NjEsMTcgQEAgZXh0ZXJuIHZvaWQgcGdz dGF0X3VubGlua19yZWxhdGlvbihSZWxhdGlvbiByZWwpOwogZXh0ZXJuIHZvaWQgcGdzdGF0 X3JlcG9ydF92YWN1dW0oUmVsYXRpb24gcmVsLCBQZ1N0YXRfQ291bnRlciBsaXZldHVwbGVz LAogCQkJCQkJCQkgUGdTdGF0X0NvdW50ZXIgZGVhZHR1cGxlcywKIAkJCQkJCQkJIFRpbWVz dGFtcFR6IHN0YXJ0dGltZSk7CisKK2V4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfdmFjdXVt X2V4dChSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkgUGdTdGF0X0NvdW50ZXIgbGl2ZXR1cGxl cywKKwkJCQkJCQkJCSBQZ1N0YXRfQ291bnRlciBkZWFkdHVwbGVzLAorCQkJCQkJCQkJIFRp bWVzdGFtcFR6IHN0YXJ0dGltZSwKKwkJCQkJCQkJCSBQZ1N0YXRfVmFjdXVtUmVsYXRpb25D b3VudHMgKiBleHRzdGF0cyk7CisKKy8qIEhvb2sgZm9yIGV4dGVuc2lvbnMgdG8gcmVjZWl2 ZSBleHRlbmRlZCB2YWN1dW0gc3RhdGlzdGljcyAqLwordHlwZWRlZiB2b2lkICgqc2V0X3Jl cG9ydF92YWN1dW1faG9va190eXBlKSAoT2lkIHRhYmxlb2lkLCBib29sIHNoYXJlZCwKKwkJ CQkJCQkJCQkJIFBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cyAqIHBhcmFtcyk7CitleHRl cm4gUEdETExJTVBPUlQgc2V0X3JlcG9ydF92YWN1dW1faG9va190eXBlIHNldF9yZXBvcnRf dmFjdXVtX2hvb2s7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2FuYWx5emUoUmVsYXRp b24gcmVsLAogCQkJCQkJCQkgIFBnU3RhdF9Db3VudGVyIGxpdmV0dXBsZXMsIFBnU3RhdF9D b3VudGVyIGRlYWR0dXBsZXMsCiAJCQkJCQkJCSAgYm9vbCByZXNldGNvdW50ZXIsIFRpbWVz dGFtcFR6IHN0YXJ0dGltZSk7Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --------------thBbqvYkvYX0JXIsOOCVBtFF Content-Type: text/plain; charset=UTF-8; name="v38-0003-ext_vacuum_statistics-extension-for-extended-vacuum-.patch" Content-Disposition: attachment; filename*0="v38-0003-ext_vacuum_statistics-extension-for-extended-vacuum"; filename*1="-.patch" Content-Transfer-Encoding: base64 RnJvbSBjZjgyODVkNzU1NzU4MmQ2OTk1ZDU4Y2E2MjU5OWU3ZTQ3YjIwYjFiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YWxlbmthLnJ5YmFraW5h QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAyOCBBcHIgMjAyNiAwMzo0MzoyOSArMDMwMApTdWJq ZWN0OiBbUEFUQ0ggMy8zXSBleHRfdmFjdXVtX3N0YXRpc3RpY3M6IGV4dGVuc2lvbiBmb3Ig ZXh0ZW5kZWQgdmFjdXVtCiBzdGF0aXN0aWNzCgpJbnRyb2R1Y2UgYSBuZXcgZXh0ZW5zaW9u IHRoYXQgY29sbGVjdHMgZXh0ZW5kZWQgcGVyLXZhY3V1bQptZXRyaWNzIHZpYSBzZXRfcmVw b3J0X3ZhY3V1bV9ob29rIGFuZCBzdG9yZXMgdGhlbSB0aHJvdWdoIHBnc3RhdCdzCmN1c3Rv bSBzdGF0aXN0aWNzIGluZnJhc3RydWN0dXJlLgoKVHJhY2tpbmcgc2NvcGUgaXMgY29udHJv bGxlZCBieSBHVUNzOgoKICAqIHZhY3V1bV9zdGF0aXN0aWNzLmVuYWJsZWQgICAgICAgLS0g bWFzdGVyIHN3aXRjaAogICogdmFjdXVtX3N0YXRpc3RpY3Mub2JqZWN0X3R5cGVzICAtLSBk YXRhYmFzZXMgLyByZWxhdGlvbnMgLyBhbGwKICAqIHZhY3V1bV9zdGF0aXN0aWNzLnRyYWNr X3JlbGF0aW9ucyAtLSBzeXN0ZW0gLyB1c2VyIC8gYWxsCiAgKiB2YWN1dW1fc3RhdGlzdGlj cy50cmFja197ZGF0YWJhc2VzLHJlbGF0aW9uc31fZnJvbV9saXN0CiAgICAgICAgICAtLSBy ZXN0cmljdCB0cmFja2luZyB0byBvYmplY3RzIHJlZ2lzdGVyZWQgdmlhCiAgICAgICAgICAg ICBhZGRfdHJhY2tfZGF0YWJhc2UoKSAvIGFkZF90cmFja19yZWxhdGlvbigpOwogICAgICAg ICAgICAgcmVtb3ZhbCB2aWEgcmVtb3ZlX3RyYWNrXyooKSBhbmQgT0FUX0RST1AgaG9vawog ICogdmFjdXVtX3N0YXRpc3RpY3MuY29sbGVjdCAgICAgICAtLSBidWZmZXJzIC8gd2FsIC8K ICAgICAgICAgICAgZ2VuZXJhbCAvIHRpbWluZyAvIGFsbCwgY29uc3VsdGVkIGJ5IEFDQ1VN X0lGKCkgdG8gc2tpcAogICAgICAgICAgICB1bndhbnRlZCBjYXRlZ29yaWVzIGF0IHJ1biB0 aW1lCgogYWRkX3RyYWNrXyogLyByZW1vdmVfdHJhY2tfKiByZXF1aXJlIHN1cGVydXNlciBv ciBwZ19yZWFkX2FsbF9zdGF0cy4KLS0tCiBjb250cmliL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAxICsKIGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0 aWNzL01ha2VmaWxlICAgICAgICB8ICAgMjQgKwogY29udHJpYi9leHRfdmFjdXVtX3N0YXRp c3RpY3MvUkVBRE1FLm1kICAgICAgIHwgIDE2NSArKwogLi4uL2V4cGVjdGVkL2V4dF92YWN1 dW1fc3RhdGlzdGljcy5vdXQgICAgICAgIHwgICA1MiArCiAuLi4vdmFjdXVtLWV4dGVuZGlu Zy1pbi1yZXBldGFibGUtcmVhZC5vdXQgICAgfCAgIDUyICsKIC4uLi9leHRfdmFjdXVtX3N0 YXRpc3RpY3MtLTEuMC5zcWwgICAgICAgICAgICB8ICAyNzIgKysrKwogLi4uL2V4dF92YWN1 dW1fc3RhdGlzdGljcy5jb25mICAgICAgICAgICAgICAgIHwgICAgMiArCiAuLi4vZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzLmNvbnRyb2wgICAgICAgICAgICAgfCAgICA1ICsKIGNvbnRyaWIv ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL21lc29uLmJ1aWxkICAgICB8ICAgNDEgKwogLi4uL3Zh Y3V1bS1leHRlbmRpbmctaW4tcmVwZXRhYmxlLXJlYWQuc3BlYyAgIHwgICA1OSArCiAuLi4v dC8wNTJfdmFjdXVtX2V4dGVuZGluZ19iYXNpY190ZXN0LnBsICAgICAgfCAgNzgwICsrKysr KysrKwogLi4uL3QvMDUzX3ZhY3V1bV9leHRlbmRpbmdfZnJlZXplX3Rlc3QucGwgICAgIHwg IDI4NSArKysrCiAuLi4vdC8wNTRfdmFjdXVtX2V4dGVuZGluZ19ndWNzX3Rlc3QucGwgICAg ICAgfCAgMjc5ICsrKysKIC4uLi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvdmFjdXVtX3N0YXRp c3RpY3MuYyB8IDEzODcgKysrKysrKysrKysrKysrKysKIGNvbnRyaWIvbWVzb24uYnVpbGQg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogZG9jL3NyYy9zZ21sL2NvbnRy aWIuc2dtbCAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBkb2Mvc3JjL3NnbWwvZXh0 dmFjdXVtc3RhdGlzdGljcy5zZ21sICAgICAgICAgfCAgNTAyICsrKysrKwogZG9jL3NyYy9z Z21sL2ZpbGVsaXN0LnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiAxOCBmaWxl cyBjaGFuZ2VkLCAzOTA5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250 cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL1JFQURNRS5tZAogY3JlYXRlIG1vZGUg MTAwNjQ0IGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL2V4cGVjdGVkL2V4dF92YWN1 dW1fc3RhdGlzdGljcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL2V4dF92YWN1 dW1fc3RhdGlzdGljcy9leHBlY3RlZC92YWN1dW0tZXh0ZW5kaW5nLWluLXJlcGV0YWJsZS1y ZWFkLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0 aWNzL2V4dF92YWN1dW1fc3RhdGlzdGljcy0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0 IGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL2V4dF92YWN1dW1fc3RhdGlzdGljcy5j b25mCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3Mv ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLmNvbnRyb2wKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250 cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAw NjQ0IGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3NwZWNzL3ZhY3V1bS1leHRlbmRp bmctaW4tcmVwZXRhYmxlLXJlYWQuc3BlYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIv ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3QvMDUyX3ZhY3V1bV9leHRlbmRpbmdfYmFzaWNfdGVz dC5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNz L3QvMDUzX3ZhY3V1bV9leHRlbmRpbmdfZnJlZXplX3Rlc3QucGwKIGNyZWF0ZSBtb2RlIDEw MDY0NCBjb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy90LzA1NF92YWN1dW1fZXh0ZW5k aW5nX2d1Y3NfdGVzdC5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvZXh0X3ZhY3V1 bV9zdGF0aXN0aWNzL3ZhY3V1bV9zdGF0aXN0aWNzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk b2Mvc3JjL3NnbWwvZXh0dmFjdXVtc3RhdGlzdGljcy5zZ21sCgpkaWZmIC0tZ2l0IGEvY29u dHJpYi9NYWtlZmlsZSBiL2NvbnRyaWIvTWFrZWZpbGUKaW5kZXggN2Q5MWZlNzdkYjMuLjMx NDBmMmJmODQ0IDEwMDY0NAotLS0gYS9jb250cmliL01ha2VmaWxlCisrKyBiL2NvbnRyaWIv TWFrZWZpbGUKQEAgLTE5LDYgKzE5LDcgQEAgU1VCRElSUyA9IFwKIAkJZGljdF9pbnQJXAog CQlkaWN0X3hzeW4JXAogCQllYXJ0aGRpc3RhbmNlCVwKKwkJZXh0X3ZhY3V1bV9zdGF0aXN0 aWNzIFwKIAkJZmlsZV9mZHcJXAogCQlmdXp6eXN0cm1hdGNoCVwKIAkJaHN0b3JlCQlcCmRp ZmYgLS1naXQgYS9jb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy9NYWtlZmlsZSBiL2Nv bnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lZDgwYmRmMjhkMAotLS0gL2Rldi9udWxsCisrKyBi L2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL01ha2VmaWxlCkBAIC0wLDAgKzEsMjQg QEAKKyMgY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvTWFrZWZpbGUKKworRVhURU5T SU9OID0gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzCitNT0RVTEVfYmlnID0gZXh0X3ZhY3V1bV9z dGF0aXN0aWNzCitPQkpTID0gdmFjdXVtX3N0YXRpc3RpY3MubworREFUQSA9IGV4dF92YWN1 dW1fc3RhdGlzdGljcy0tMS4wLnNxbAorUEdGSUxFREVTQyA9ICJleHRfdmFjdXVtX3N0YXRp c3RpY3MgLSBjb252ZW5pZW5jZSB2aWV3cyBmb3IgZXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3Rp Y3MiCisKK0lTT0xBVElPTiA9IHZhY3V1bS1leHRlbmRpbmctaW4tcmVwZXRhYmxlLXJlYWQK K0lTT0xBVElPTl9PUFRTID0gLS10ZW1wLWNvbmZpZz0kKHRvcF9zcmNkaXIpL2NvbnRyaWIv ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL2V4dF92YWN1dW1fc3RhdGlzdGljcy5jb25mCitUQVBf VEVTVFMgPSAxCisKK05PX0lOU1RBTExDSEVDSyA9IDEKKworaWZkZWYgVVNFX1BHWFMKK1BH X0NPTkZJRyA9IHBnX2NvbmZpZworUEdYUyA6PSAkKHNoZWxsICQoUEdfQ09ORklHKSAtLXBn eHMpCitpbmNsdWRlICQoUEdYUykKK2Vsc2UKK3N1YmRpciA9IGNvbnRyaWIvZXh0X3ZhY3V1 bV9zdGF0aXN0aWNzCit0b3BfYnVpbGRkaXIgPSAuLi8uLgoraW5jbHVkZSAkKHRvcF9idWls ZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAoraW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbnRy aWIvY29udHJpYi1nbG9iYWwubWsKK2VuZGlmCmRpZmYgLS1naXQgYS9jb250cmliL2V4dF92 YWN1dW1fc3RhdGlzdGljcy9SRUFETUUubWQgYi9jb250cmliL2V4dF92YWN1dW1fc3RhdGlz dGljcy9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjUxNjk3ZWFiMDIzCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9leHRfdmFjdXVtX3N0 YXRpc3RpY3MvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMTY1IEBACisjIGV4dF92YWN1dW1fc3Rh dGlzdGljcworCitFeHRlbmRlZCB2YWN1dW0gc3RhdGlzdGljcyBleHRlbnNpb24gZm9yIFBv c3RncmVTUUwuIEl0IGNvbGxlY3RzIGFuZCBleHBvc2VzIGRldGFpbGVkIHBlci10YWJsZSwg cGVyLWluZGV4LCBhbmQgcGVyLWRhdGFiYXNlIHZhY3V1bSBzdGF0aXN0aWNzIChidWZmZXIg SS9PLCBXQUwsIGdlbmVyYWwsIHRpbWluZykgdmlhIGNvbnZlbmllbnQgdmlld3MgaW4gdGhl IGBleHRfdmFjdXVtX3N0YXRpc3RpY3NgIHNjaGVtYS4KKworIyMgSW5zdGFsbGF0aW9uCisK K2BgYAorLi9jb25maWd1cmUgdG1wX2luc3RhbGw9IiQocHdkKS9teS9pbnN0IgorbWFrZSBj bGVhbiAmJiBtYWtlICYmIG1ha2UgaW5zdGFsbAorY2QgY29udHJpYi9leHRfdmFjdXVtX3N0 YXRpc3RpY3MKK21ha2UgJiYgbWFrZSBpbnN0YWxsCitgYGAKKworSXQgaXMgZXNzZW50aWFs IHRoYXQgdGhlIGV4dGVuc2lvbiBpcyBsaXN0ZWQgaW4gYHNoYXJlZF9wcmVsb2FkX2xpYnJh cmllc2AgYmVjYXVzZSBpdCByZWdpc3RlcnMgYSB2YWN1dW0gaG9vayBhdCBzZXJ2ZXIgc3Rh cnR1cC4KKworSW4geW91ciBgcG9zdGdyZXNxbC5jb25mYDoKKworYGBgCitzaGFyZWRfcHJl bG9hZF9saWJyYXJpZXMgPSAnZXh0X3ZhY3V1bV9zdGF0aXN0aWNzJworYGBgCisKK1Jlc3Rh cnQgUG9zdGdyZVNRTC4KKworSW4geW91ciBkYXRhYmFzZToKKworYGBgc3FsCitDUkVBVEUg RVhURU5TSU9OIGV4dF92YWN1dW1fc3RhdGlzdGljczsKK2BgYAorCisjIyBVc2FnZQorCitR dWVyeSB2YWN1dW0gc3RhdGlzdGljcyB2aWEgdGhlIHByb3ZpZGVkIHZpZXdzOgorCitgYGBz cWwKKy0tIFBlci10YWJsZSBoZWFwIHZhY3V1bSBzdGF0aXN0aWNzCitTRUxFQ1QgKiBGUk9N IGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzOworCistLSBQ ZXItaW5kZXggdmFjdXVtIHN0YXRpc3RpY3MKK1NFTEVDVCAqIEZST00gZXh0X3ZhY3V1bV9z dGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9pbmRleGVzOworCistLSBQZXItZGF0YWJhc2Ug YWdncmVnYXRlIHZhY3V1bSBzdGF0aXN0aWNzCitTRUxFQ1QgKiBGUk9NIGV4dF92YWN1dW1f c3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fZGF0YWJhc2U7CitgYGAKKworRXhhbXBsZSBv dXRwdXQ6CisKK2BgYAorIHJlbG5hbWUgICB8IHRvdGFsX2Jsa3NfcmVhZCB8IHRvdGFsX2Js a3NfaGl0IHwgd2FsX3JlY29yZHMgfCB0dXBsZXNfZGVsZXRlZCB8IHBhZ2VzX3JlbW92ZWQK Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorIG15dGFibGUgICB8 ICAgICAgICAgICAgIDEyMCB8ICAgICAgICAgICAgMzQwIHwgICAgICAgICAgMTUgfCAgICAg ICAgICAgIDUwMCB8ICAgICAgICAgICAgMTAKK2BgYAorCitSZXNldCBzdGF0aXN0aWNzIHdo ZW4gbmVlZGVkOgorCitgYGBzcWwKK1NFTEVDVCBleHRfdmFjdXVtX3N0YXRpc3RpY3MudmFj dXVtX3N0YXRpc3RpY3NfcmVzZXQoKTsKK2BgYAorCisjIyBDb25maWd1cmF0aW9uIChHVUNz KQorCit8IEdVQyB8IERlZmF1bHQgfCBEZXNjcmlwdGlvbiB8Cit8LS0tLS18LS0tLS0tLS0t fC0tLS0tLS0tLS0tLS18Cit8IGB2YWN1dW1fc3RhdGlzdGljcy5lbmFibGVkYCB8IG9uIHwg RW5hYmxlIGV4dGVuZGVkIHZhY3V1bSBzdGF0aXN0aWNzIGNvbGxlY3Rpb24gfAorfCBgdmFj dXVtX3N0YXRpc3RpY3Mub2JqZWN0X3R5cGVzYCB8IGFsbCB8IE9iamVjdCB0eXBlcyBmb3Ig c3RhdGlzdGljczogYGFsbGAsIGBkYXRhYmFzZXNgLCBgcmVsYXRpb25zYCB8Cit8IGB2YWN1 dW1fc3RhdGlzdGljcy50cmFja19yZWxhdGlvbnNgIHwgYWxsIHwgV2hlbiB0cmFja2luZyBy ZWxhdGlvbnM6IGBhbGxgLCBgc3lzdGVtYCwgYHVzZXJgIHwKK3wgYHZhY3V1bV9zdGF0aXN0 aWNzLnRyYWNrX2RhdGFiYXNlc19mcm9tX2xpc3RgIHwgb2ZmIHwgSWYgb24sIHRyYWNrIG9u bHkgZGF0YWJhc2VzIGFkZGVkIHZpYSBhZGRfdHJhY2tfZGF0YWJhc2UgfAorfCBgdmFjdXVt X3N0YXRpc3RpY3MudHJhY2tfcmVsYXRpb25zX2Zyb21fbGlzdGAgfCBvZmYgfCBJZiBvbiwg dHJhY2sgb25seSByZWxhdGlvbnMgYWRkZWQgdmlhIGFkZF90cmFja19yZWxhdGlvbiB8CisK KyMjIE1lbW9yeSB1c2FnZQorCitFYWNoIHRyYWNrZWQgb2JqZWN0ICh0YWJsZSwgaW5kZXgs IG9yIGRhdGFiYXNlKSB1c2VzIGFwcHJveGltYXRlbHkgKioyMzIgYnl0ZXMqKiBvZiBzaGFy ZWQgbWVtb3J5IG9uIExpbnV4IHg4Nl82NCAoZS5nLiBVYnVudHUpOiBjb21tb24gc3RhdHMg KGJ1ZmZlcnMsIFdBTCwgdGltaW5nKSB+MTQ0IGJ5dGVzOyB0eXBlICsgdW5pb24gfjg4IGJ5 dGVzICh1bmlvbiBob2xkcyB0YWJsZS1zcGVjaWZpYyBvciBpbmRleC1zcGVjaWZpYyBmaWVs ZHMsIGFsbG9jYXRlZCBzaXplIGlzIHRoZSBzYW1lIGZvciBib3RoKS4KKworVGhlIGV4YWN0 IHNpemUgZGVwZW5kcyBvbiB0aGUgcGxhdGZvcm0uIENhbGwgYGV4dF92YWN1dW1fc3RhdGlz dGljcy5zaGFyZWRfbWVtb3J5X3NpemUoKWAgdG8gZ2V0IHRoZSB0b3RhbCBzaGFyZWQgbWVt b3J5IHVzZWQgYnkgdGhlIGV4dGVuc2lvbi4gVGhlIEdVQ3MgcHJvdmlkZWQgYnkgdGhlIGV4 dGVuc2lvbiBhbGxvdyBjb250cm9sbGluZyB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkOiBg dmFjdXVtX3N0YXRpc3RpY3Mub2JqZWN0X3R5cGVzYCB0byB0cmFjayBvbmx5IGRhdGFiYXNl cyBvciByZWxhdGlvbnMsIGB2YWN1dW1fc3RhdGlzdGljcy50cmFja19yZWxhdGlvbnNgIHRv IHJlc3RyaWN0IHRvIHVzZXIgb3Igc3lzdGVtIHRhYmxlcy9pbmRleGVzLCBhbmQgYHRyYWNr XypfZnJvbV9saXN0YCB0byB0cmFjayBvbmx5IHNlbGVjdGVkIGRhdGFiYXNlcyBhbmQgcmVs YXRpb25zLgorCitFeGFtcGxlOiBhIGRhdGFiYXNlIHdpdGggMTAwMCB0YWJsZXMgYW5kIDIw MDAgaW5kZXhlcywgYWxsIHRyYWNrZWQsIHVzZXMgYWJvdXQgKio3MDAgS0IqKiBvbiBVYnVu dHUgKDMwMDEgZW50cmllcyDDlyAyMzIgYnl0ZXMpLiBQZXItZGF0YWJhc2UgZW50cmllcyBh ZGQgb25lIGVudHJ5IHBlciB0cmFja2VkIGRhdGFiYXNlLgorCisjIyBBZHZhbmNlZCB0dW5p bmcKKworIyMjIFRyYWNrIG9ubHkgZGF0YWJhc2UtbGV2ZWwgc3RhdHMKKworYGBgc3FsCitT RVQgdmFjdXVtX3N0YXRpc3RpY3Mub2JqZWN0X3R5cGVzID0gJ2RhdGFiYXNlcyc7CitgYGAK KworU3RhdGlzdGljcyBhcmUgYWNjdW11bGF0ZWQgcGVyIGRhdGFiYXNlOyBwZXItcmVsYXRp b24gdmlld3MgcmVtYWluIGVtcHR5LgorCisjIyMgVHJhY2sgb25seSB1c2VyIG9yIHN5c3Rl bSB0YWJsZXMKKworYGBgc3FsCitTRVQgdmFjdXVtX3N0YXRpc3RpY3Mub2JqZWN0X3R5cGVz ID0gJ3JlbGF0aW9ucyc7CitTRVQgdmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfcmVsYXRpb25z ID0gJ3VzZXInOyAgIC0tIHNraXAgc3lzdGVtIGNhdGFsb2dzCistLSBvcgorU0VUIHZhY3V1 bV9zdGF0aXN0aWNzLnRyYWNrX3JlbGF0aW9ucyA9ICdzeXN0ZW0nOyAtLSBvbmx5IHN5c3Rl bSBjYXRhbG9ncworYGBgCisKKyMjIyBGaWx0ZXIgYnkgZGF0YWJhc2Ugb3IgcmVsYXRpb24g T0lEcworCitBZGQgT0lEcyB2aWEgZnVuY3Rpb25zIChwZXJzaXN0ZWQgdG8gYHBnX3N0YXQv ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzX3RyYWNrLm9pZGApIGFuZCBlbmFibGUgZmlsdGVyaW5n OgorCitgYGBzcWwKKy0tIEFkZCBkYXRhYmFzZXMgYW5kIHJlbGF0aW9ucyB0byB0cmFjawor U0VMRUNUIGV4dF92YWN1dW1fc3RhdGlzdGljcy5hZGRfdHJhY2tfZGF0YWJhc2UoMTYzODQp OworU0VMRUNUIGV4dF92YWN1dW1fc3RhdGlzdGljcy5hZGRfdHJhY2tfcmVsYXRpb24oMTYz ODQsIDE2Mzg1KTsgIC0tIGRib2lkLCByZWxvaWQKK1NFTEVDVCBleHRfdmFjdXVtX3N0YXRp c3RpY3MuYWRkX3RyYWNrX3JlbGF0aW9uKDAsIDE2Mzg2KTsgICAgICAtLSByZWwgMTYzODYg aW4gYW55IGRiCisKKy0tIEVuYWJsZSBsaXN0LWJhc2VkIGZpbHRlcmluZyAob2ZmID0gdHJh Y2sgYWxsKQorU0VUIHZhY3V1bV9zdGF0aXN0aWNzLnRyYWNrX2RhdGFiYXNlc19mcm9tX2xp c3QgPSBvbjsKK1NFVCB2YWN1dW1fc3RhdGlzdGljcy50cmFja19yZWxhdGlvbnNfZnJvbV9s aXN0ID0gb247CitgYGAKKworUmVtb3ZlIE9JRHMgd2hlbiBubyBsb25nZXIgbmVlZGVkOgor CitgYGBzcWwKK1NFTEVDVCBleHRfdmFjdXVtX3N0YXRpc3RpY3MucmVtb3ZlX3RyYWNrX2Rh dGFiYXNlKDE2Mzg0KTsKK1NFTEVDVCBleHRfdmFjdXVtX3N0YXRpc3RpY3MucmVtb3ZlX3Ry YWNrX3JlbGF0aW9uKDE2Mzg0LCAxNjM4NSk7CitgYGAKKworSW5zcGVjdCB0aGUgY3VycmVu dCB0cmFja2luZyBjb25maWd1cmF0aW9uOgorCitgYGBzcWwKK1NFTEVDVCAqIEZST00gZXh0 X3ZhY3V1bV9zdGF0aXN0aWNzLnRyYWNrX2xpc3QoKTsKK2BgYAorCitSZXR1cm5zIGB0cmFj a19raW5kYCwgYGRib2lkYCwgYHJlbG9pZGAuIFdoZW4gYGRib2lkYCBvciBgcmVsb2lkYCBp cyBOVUxMLCBzdGF0aXN0aWNzIGFyZSBjb2xsZWN0ZWQgZm9yIGFsbC4KKworIyMgUmVjaXBl cworCisqKlJlZHVjZSBvdmVyaGVhZCBieSB0cmFja2luZyBvbmx5IGRhdGFiYXNlczoqKgor CitgYGBzcWwKK1NFVCB2YWN1dW1fc3RhdGlzdGljcy5vYmplY3RfdHlwZXMgPSAnZGF0YWJh c2VzJzsKK2BgYAorCisqKlRyYWNrIG9ubHkgYSBzcGVjaWZpYyB0YWJsZSBpbiBhIHNwZWNp ZmljIGRhdGFiYXNlOioqCisKK2BgYHNxbAorU0VMRUNUIGV4dF92YWN1dW1fc3RhdGlzdGlj cy5hZGRfdHJhY2tfZGF0YWJhc2UoCisgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19kYXRhYmFz ZSBXSEVSRSBkYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpKQorKTsKK1NFTEVDVCBleHRf dmFjdXVtX3N0YXRpc3RpY3MuYWRkX3RyYWNrX3JlbGF0aW9uKAorICAgIChTRUxFQ1Qgb2lk IEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSks CisgICAgJ215dGFibGUnOjpyZWdjbGFzcworKTsKK1NFVCB2YWN1dW1fc3RhdGlzdGljcy50 cmFja19kYXRhYmFzZXNfZnJvbV9saXN0ID0gb247CitTRVQgdmFjdXVtX3N0YXRpc3RpY3Mu dHJhY2tfcmVsYXRpb25zX2Zyb21fbGlzdCA9IG9uOworYGBgCisKKyoqRGlzYWJsZSBzdGF0 aXN0aWNzIGNvbGxlY3Rpb24gdGVtcG9yYXJpbHk6KioKKworYGBgc3FsCitTRVQgdmFjdXVt X3N0YXRpc3RpY3MuZW5hYmxlZCA9IG9mZjsKK2BgYAorCisjIyBWaWV3cworCit8IFZpZXcg fCBEZXNjcmlwdGlvbiB8Cit8LS0tLS0tfC0tLS0tLS0tLS0tLS18Cit8IGBleHRfdmFjdXVt X3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX3RhYmxlc2AgfCBQZXItdGFibGUgaGVhcCB2 YWN1dW0gc3RhdHMgKHBhZ2VzIHNjYW5uZWQsIHR1cGxlcyBkZWxldGVkLCBXQUwsIHRpbWlu ZywgZXRjLikgfAorfCBgZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9p bmRleGVzYCB8IFBlci1pbmRleCB2YWN1dW0gc3RhdHMgfAorfCBgZXh0X3ZhY3V1bV9zdGF0 aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9kYXRhYmFzZWAgfCBQZXItZGF0YWJhc2UgYWdncmVn YXRlIHZhY3V1bSBzdGF0cyB8CisKKyMjIExpbWl0YXRpb25zCisKKy0gTXVzdCBiZSBsb2Fk ZWQgdmlhIGBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNgOyBpdCBjYW5ub3QgYmUgbG9hZGVk IG9uIGRlbWFuZC4KKy0gVHJhY2tpbmcgY29uZmlndXJhdGlvbiAoYGFkZF90cmFja18qYCwg YHJlbW92ZV90cmFja18qYCkgaXMgc3RvcmVkIGluIGEgZmlsZSBhbmQgc2hhcmVkIGFjcm9z cyBhbGwgZGF0YWJhc2VzIGluIHRoZSBjbHVzdGVyLgpkaWZmIC0tZ2l0IGEvY29udHJpYi9l eHRfdmFjdXVtX3N0YXRpc3RpY3MvZXhwZWN0ZWQvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLm91 dCBiL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL2V4cGVjdGVkL2V4dF92YWN1dW1f c3RhdGlzdGljcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu Ljg5Yzk1OTRkZWE4Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9leHRfdmFjdXVtX3N0 YXRpc3RpY3MvZXhwZWN0ZWQvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLm91dApAQCAtMCwwICsx LDUyIEBACistLSBleHRfdmFjdXVtX3N0YXRpc3RpY3MgcmVncmVzc2lvbiB0ZXN0CisKKy0t IENyZWF0ZSBleHRlbnNpb24KK0NSRUFURSBFWFRFTlNJT04gZXh0X3ZhY3V1bV9zdGF0aXN0 aWNzOworCistLSBWZXJpZnkgc2NoZW1hIGFuZCB2aWV3cyBleGlzdAorU0VMRUNUIG5zcG5h bWUgRlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgbnNwbmFtZSA9ICdleHRfdmFjdXVtX3N0YXRp c3RpY3MnOworICAgICBuc3BuYW1lICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyBleHRf dmFjdXVtX3N0YXRpc3RpY3MKKygxIHJvdykKKworLS0gVmlld3Mgc2hvdWxkIGJlIHF1ZXJ5 YWJsZSAobWF5IHJldHVybiBlbXB0eSBpZiBubyB2YWN1dW0gaGFzIHJ1bikKK1NFTEVDVCBD T1VOVCgqKSA+PSAwIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1 bV90YWJsZXM7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxF Q1QgQ09VTlQoKikgPj0gMCBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192 YWN1dW1faW5kZXhlczsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisK K1NFTEVDVCBDT1VOVCgqKSA+PSAwIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0 YXRzX3ZhY3V1bV9kYXRhYmFzZTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSBy b3cpCisKKy0tIFZlcmlmeSB2aWV3cyBoYXZlIGV4cGVjdGVkIGNvbHVtbnMKK1NFTEVDVCBD T1VOVCgqKSBBUyB0YWJsZXNfY29scyBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5z CitXSEVSRSB0YWJsZV9zY2hlbWEgPSAnZXh0X3ZhY3V1bV9zdGF0aXN0aWNzJyBBTkQgdGFi bGVfbmFtZSA9ICd0YWJsZXMnOworIHRhYmxlc19jb2xzIAorLS0tLS0tLS0tLS0tLQorICAg ICAgICAgIDI4CisoMSByb3cpCisKK1NFTEVDVCBDT1VOVCgqKSBBUyBpbmRleGVzX2NvbHMg RlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1ucworV0hFUkUgdGFibGVfc2NoZW1hID0g J2V4dF92YWN1dW1fc3RhdGlzdGljcycgQU5EIHRhYmxlX25hbWUgPSAnaW5kZXhlcyc7Cisg aW5kZXhlc19jb2xzIAorLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIDIwCisoMSByb3cp CisKK1NFTEVDVCBDT1VOVCgqKSBBUyBkYXRhYmFzZV9jb2xzIEZST00gaW5mb3JtYXRpb25f c2NoZW1hLmNvbHVtbnMKK1dIRVJFIHRhYmxlX3NjaGVtYSA9ICdleHRfdmFjdXVtX3N0YXRp c3RpY3MnIEFORCB0YWJsZV9uYW1lID0gJ2RhdGFiYXNlJzsKKyBkYXRhYmFzZV9jb2xzIAor LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTUKKygxIHJvdykKZGlmZiAtLWdpdCBh L2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL2V4cGVjdGVkL3ZhY3V1bS1leHRlbmRp bmctaW4tcmVwZXRhYmxlLXJlYWQub3V0IGIvY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3Rp Y3MvZXhwZWN0ZWQvdmFjdXVtLWV4dGVuZGluZy1pbi1yZXBldGFibGUtcmVhZC5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZiMzgxZjlkMjMyCi0tLSAv ZGV2L251bGwKKysrIGIvY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvZXhwZWN0ZWQv dmFjdXVtLWV4dGVuZGluZy1pbi1yZXBldGFibGUtcmVhZC5vdXQKQEAgLTAsMCArMSw1MiBA QAordW51c2VkIHN0ZXAgbmFtZTogczJfZGVsZXRlCitQYXJzZWQgdGVzdCBzcGVjIHdpdGgg MiBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJfaW5zZXJ0IHMyX3ByaW50 X3ZhY3V1bV9zdGF0c190YWJsZSBzMV9iZWdpbl9yZXBlYXRhYmxlX3JlYWQgczJfdXBkYXRl IHMyX2luc2VydF9pbnRlcnJ1cHQgczJfdmFjdXVtIHMyX3ByaW50X3ZhY3V1bV9zdGF0c190 YWJsZSBzMV9jb21taXQgczJfY2hlY2twb2ludCBzMl92YWN1dW0gczJfcHJpbnRfdmFjdXVt X3N0YXRzX3RhYmxlCitzdGVwIHMyX2luc2VydDogSU5TRVJUIElOVE8gdGVzdF92YWN1dW1f c3RhdF9pc29sYXRpb24oaWQsIGl2YWwpIFNFTEVDVCBpdmFsLCBpdmFsJTEwIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsMTAwMCkgQXMgaXZhbDsKK3N0ZXAgczJfcHJpbnRfdmFjdXVtX3N0 YXRzX3RhYmxlOiAKKyAgICBTRUxFQ1QKKyAgICAgICAgdnQucmVsbmFtZSwgdnQudHVwbGVz X2RlbGV0ZWQsIHZ0LnJlY2VudGx5X2RlYWRfdHVwbGVzLCB2dC5taXNzZWRfZGVhZF90dXBs ZXMsIHZ0Lm1pc3NlZF9kZWFkX3BhZ2VzLCB2dC50dXBsZXNfZnJvemVuCisgICAgRlJPTSBl eHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX3RhYmxlcyB2dCwgcGdfY2xh c3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndGVzdF92YWN1dW1fc3RhdF9pc29sYXRp b24nIEFORCB2dC5yZWxpZCA9IGMub2lkOworCityZWxuYW1lfHR1cGxlc19kZWxldGVkfHJl Y2VudGx5X2RlYWRfdHVwbGVzfG1pc3NlZF9kZWFkX3R1cGxlc3xtaXNzZWRfZGVhZF9wYWdl c3x0dXBsZXNfZnJvemVuCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCisoMCByb3dzKQorCitzdGVwIHMxX2JlZ2luX3JlcGVhdGFibGVfcmVhZDogCisgICAg QkVHSU4gdHJhbnNhY3Rpb24gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKKyAg ICBzZWxlY3QgY291bnQoaXZhbCkgZnJvbSB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbiB3 aGVyZSBpZD45MDA7CisKK2NvdW50CistLS0tLQorICAxMDAKKygxIHJvdykKKworc3RlcCBz Ml91cGRhdGU6IFVQREFURSB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbiBTRVQgaXZhbCA9 IGl2YWwgKyAyIHdoZXJlIGlkID4gOTAwOworc3RlcCBzMl9pbnNlcnRfaW50ZXJydXB0OiBJ TlNFUlQgSU5UTyB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbiB2YWx1ZXMgKDEsMSk7Citz dGVwIHMyX3ZhY3V1bTogVkFDVVVNIHRlc3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9uOworc3Rl cCBzMl9wcmludF92YWN1dW1fc3RhdHNfdGFibGU6IAorICAgIFNFTEVDVAorICAgICAgICB2 dC5yZWxuYW1lLCB2dC50dXBsZXNfZGVsZXRlZCwgdnQucmVjZW50bHlfZGVhZF90dXBsZXMs IHZ0Lm1pc3NlZF9kZWFkX3R1cGxlcywgdnQubWlzc2VkX2RlYWRfcGFnZXMsIHZ0LnR1cGxl c19mcm96ZW4KKyAgICBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1 dW1fdGFibGVzIHZ0LCBwZ19jbGFzcyBjCisgICAgV0hFUkUgdnQucmVsbmFtZSA9ICd0ZXN0 X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbicgQU5EIHZ0LnJlbGlkID0gYy5vaWQ7CisKK3JlbG5h bWUgICAgICAgICAgICAgICAgICAgfHR1cGxlc19kZWxldGVkfHJlY2VudGx5X2RlYWRfdHVw bGVzfG1pc3NlZF9kZWFkX3R1cGxlc3xtaXNzZWRfZGVhZF9wYWdlc3x0dXBsZXNfZnJvemVu CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQordGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb258ICAgICAgICAgICAgIDB8ICAg ICAgICAgICAgICAgICAxMDB8ICAgICAgICAgICAgICAgICAwfCAgICAgICAgICAgICAgICAw fCAgICAgICAgICAgIDAKKygxIHJvdykKKworc3RlcCBzMV9jb21taXQ6IENPTU1JVDsKK3N0 ZXAgczJfY2hlY2twb2ludDogQ0hFQ0tQT0lOVDsKK3N0ZXAgczJfdmFjdXVtOiBWQUNVVU0g dGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb247CitzdGVwIHMyX3ByaW50X3ZhY3V1bV9zdGF0 c190YWJsZTogCisgICAgU0VMRUNUCisgICAgICAgIHZ0LnJlbG5hbWUsIHZ0LnR1cGxlc19k ZWxldGVkLCB2dC5yZWNlbnRseV9kZWFkX3R1cGxlcywgdnQubWlzc2VkX2RlYWRfdHVwbGVz LCB2dC5taXNzZWRfZGVhZF9wYWdlcywgdnQudHVwbGVzX2Zyb3plbgorICAgIEZST00gZXh0 X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV90YWJsZXMgdnQsIHBnX2NsYXNz IGMKKyAgICBXSEVSRSB2dC5yZWxuYW1lID0gJ3Rlc3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9u JyBBTkQgdnQucmVsaWQgPSBjLm9pZDsKKworcmVsbmFtZSAgICAgICAgICAgICAgICAgICB8 dHVwbGVzX2RlbGV0ZWR8cmVjZW50bHlfZGVhZF90dXBsZXN8bWlzc2VkX2RlYWRfdHVwbGVz fG1pc3NlZF9kZWFkX3BhZ2VzfHR1cGxlc19mcm96ZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCit0ZXN0X3ZhY3V1bV9z dGF0X2lzb2xhdGlvbnwgICAgICAgICAgIDEwMHwgICAgICAgICAgICAgICAgIDEwMHwgICAg ICAgICAgICAgICAgIDB8ICAgICAgICAgICAgICAgIDB8ICAgICAgICAgIDEwMQorKDEgcm93 KQorCmRpZmYgLS1naXQgYS9jb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy9leHRfdmFj dXVtX3N0YXRpc3RpY3MtLTEuMC5zcWwgYi9jb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGlj cy9leHRfdmFjdXVtX3N0YXRpc3RpY3MtLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLmFhM2E5ZWM5Njk5Ci0tLSAvZGV2L251bGwKKysrIGIvY29u dHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLS0xLjAu c3FsCkBAIC0wLDAgKzEsMjcyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBl eHRfdmFjdXVtX3N0YXRpc3RpY3MtLTEuMC5zcWwKKyAqICAgIEV4dGVuZGVkIHZhY3V1bSBz dGF0aXN0aWNzIHZpYSBob29rIGFuZCBjdXN0b20gc3RvcmFnZQorICoKKyAqIFRoaXMgZXh0 ZW5zaW9uIGNvbGxlY3RzIGV4dGVuZGVkIHZhY3V1bSBzdGF0aXN0aWNzIHZpYSBzZXRfcmVw b3J0X3ZhY3V1bV9ob29rCisgKiBhbmQgc3RvcmVzIHRoZW0gaW4gc2hhcmVkIG1lbW9yeS4K KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCitcZWNobyBVc2UgIkNSRUFURSBF WFRFTlNJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1 aXQKKworQ1JFQVRFIFNDSEVNQSBJRiBOT1QgRVhJU1RTIGV4dF92YWN1dW1fc3RhdGlzdGlj czsKKworQ09NTUVOVCBPTiBTQ0hFTUEgZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIElTCisgICdF eHRlbmRlZCB2YWN1dW0gc3RhdGlzdGljcyAoaGVhcCwgaW5kZXgsIGRhdGFiYXNlKSc7CisK Ky0tIFJlc2V0IGZ1bmN0aW9ucworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzLmV4dHZhY19yZXNldF9lbnRyeSgKKyAgICBkYm9pZCBvaWQsCisg ICAgcmVsaWQgb2lkLAorICAgIHR5cGUgaW50NAorKQorUkVUVVJOUyBib29sZWFuCitBUyAn TU9EVUxFX1BBVEhOQU1FJywgJ2V4dHZhY19yZXNldF9lbnRyeScKK0xBTkdVQUdFIEMgU1RS SUNUIFBBUkFMTEVMIFNBRkU7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGV4dF92 YWN1dW1fc3RhdGlzdGljcy5leHR2YWNfcmVzZXRfZGJfZW50cnkoZGJvaWQgb2lkKQorUkVU VVJOUyBiaWdpbnQKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAnZXh0dmFjX3Jlc2V0X2RiX2Vu dHJ5JworTEFOR1VBR0UgQyBTVFJJQ1QgUEFSQUxMRUwgU0FGRTsKKworQ1JFQVRFIE9SIFJF UExBQ0UgRlVOQ1RJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnZhY3V1bV9zdGF0aXN0aWNz X3Jlc2V0KCkKK1JFVFVSTlMgYmlnaW50CitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ3ZhY3V1 bV9zdGF0aXN0aWNzX3Jlc2V0JworTEFOR1VBR0UgQyBTVFJJQ1QgUEFSQUxMRUwgU0FGRTsK KworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnNo YXJlZF9tZW1vcnlfc2l6ZSgpCitSRVRVUk5TIGJpZ2ludAorQVMgJ01PRFVMRV9QQVRITkFN RScsICdleHR2YWNfc2hhcmVkX21lbW9yeV9zaXplJworTEFOR1VBR0UgQyBTVFJJQ1QgUEFS QUxMRUwgU0FGRTsKKworQ09NTUVOVCBPTiBGVU5DVElPTiBleHRfdmFjdXVtX3N0YXRpc3Rp Y3Muc2hhcmVkX21lbW9yeV9zaXplKCkgSVMKKyAgJ1RvdGFsIHNoYXJlZCBtZW1vcnkgaW4g Ynl0ZXMgdXNlZCBieSB0aGUgZXh0ZW5zaW9uIGZvciB2YWN1dW0gc3RhdGlzdGljcy4nOwor CistLSBBZGQvcmVtb3ZlIE9JRHMgZm9yIHRyYWNraW5nCitDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiBleHRfdmFjdXVtX3N0YXRpc3RpY3MuYWRkX3RyYWNrX2RhdGFiYXNlKGRib2lk IG9pZCkKK1JFVFVSTlMgYm9vbGVhbgorQVMgJ01PRFVMRV9QQVRITkFNRScsICdldnNfYWRk X3RyYWNrX2RhdGFiYXNlJworTEFOR1VBR0UgQyBTVFJJQ1Q7CisKK0NSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIGV4dF92YWN1dW1fc3RhdGlzdGljcy5yZW1vdmVfdHJhY2tfZGF0YWJh c2UoZGJvaWQgb2lkKQorUkVUVVJOUyBib29sZWFuCitBUyAnTU9EVUxFX1BBVEhOQU1FJywg J2V2c19yZW1vdmVfdHJhY2tfZGF0YWJhc2UnCitMQU5HVUFHRSBDIFNUUklDVDsKKworQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLmFkZF90cmFj a19yZWxhdGlvbihkYm9pZCBvaWQsIHJlbG9pZCBvaWQpCitSRVRVUk5TIGJvb2xlYW4KK0FT ICdNT0RVTEVfUEFUSE5BTUUnLCAnZXZzX2FkZF90cmFja19yZWxhdGlvbicKK0xBTkdVQUdF IEMgU1RSSUNUOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBleHRfdmFjdXVtX3N0 YXRpc3RpY3MucmVtb3ZlX3RyYWNrX3JlbGF0aW9uKGRib2lkIG9pZCwgcmVsb2lkIG9pZCkK K1JFVFVSTlMgYm9vbGVhbgorQVMgJ01PRFVMRV9QQVRITkFNRScsICdldnNfcmVtb3ZlX3Ry YWNrX3JlbGF0aW9uJworTEFOR1VBR0UgQyBTVFJJQ1Q7CisKK0NSRUFURSBPUiBSRVBMQUNF IEZVTkNUSU9OIGV4dF92YWN1dW1fc3RhdGlzdGljcy50cmFja19saXN0KCkKK1JFVFVSTlMg VEFCTEUodHJhY2tfa2luZCB0ZXh0LCBkYm9pZCBvaWQsIHJlbG9pZCBvaWQpCitBUyAnTU9E VUxFX1BBVEhOQU1FJywgJ2V2c190cmFja19saXN0JworTEFOR1VBR0UgQyBTVFJJQ1Q7CisK K0NPTU1FTlQgT04gRlVOQ1RJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnRyYWNrX2xpc3Qo KSBJUworICAnTGlzdCBvZiBkYXRhYmFzZSBhbmQgcmVsYXRpb24gT0lEcyBmb3Igd2hpY2gg dmFjdXVtIHN0YXRpc3RpY3MgYXJlIGNvbGxlY3RlZC4nOworCistLSBUcmFjay1saXN0IG11 dGF0aW9uIHJlcXVpcmVzIHN1cGVydXNlciBvciBwZ19yZWFkX2FsbF9zdGF0czsgaGlkZSB0 aGUKKy0tIGZ1bmN0aW9ucyBmcm9tIFBVQkxJQyBzbyB0aGUgZXJyb3IgaXMgYWxzbyBwcm9k dWNlZCBmb3Igb3JkaW5hcnkgdXNlcnMKKy0tIGJlZm9yZSB0aGUgQy1sZXZlbCBwcml2aWxl Z2UgY2hlY2sgcnVucy4KK1JFVk9LRSBBTEwgT04gRlVOQ1RJT04gZXh0X3ZhY3V1bV9zdGF0 aXN0aWNzLmFkZF90cmFja19kYXRhYmFzZShvaWQpIEZST00gUFVCTElDOworUkVWT0tFIEFM TCBPTiBGVU5DVElPTiBleHRfdmFjdXVtX3N0YXRpc3RpY3MucmVtb3ZlX3RyYWNrX2RhdGFi YXNlKG9pZCkgRlJPTSBQVUJMSUM7CitSRVZPS0UgQUxMIE9OIEZVTkNUSU9OIGV4dF92YWN1 dW1fc3RhdGlzdGljcy5hZGRfdHJhY2tfcmVsYXRpb24ob2lkLCBvaWQpIEZST00gUFVCTElD OworUkVWT0tFIEFMTCBPTiBGVU5DVElPTiBleHRfdmFjdXVtX3N0YXRpc3RpY3MucmVtb3Zl X3RyYWNrX3JlbGF0aW9uKG9pZCwgb2lkKSBGUk9NIFBVQkxJQzsKK0dSQU5UIEVYRUNVVEUg T04gRlVOQ1RJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLmFkZF90cmFja19kYXRhYmFzZShv aWQpIFRPIHBnX3JlYWRfYWxsX3N0YXRzOworR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBl eHRfdmFjdXVtX3N0YXRpc3RpY3MucmVtb3ZlX3RyYWNrX2RhdGFiYXNlKG9pZCkgVE8gcGdf cmVhZF9hbGxfc3RhdHM7CitHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIGV4dF92YWN1dW1f c3RhdGlzdGljcy5hZGRfdHJhY2tfcmVsYXRpb24ob2lkLCBvaWQpIFRPIHBnX3JlYWRfYWxs X3N0YXRzOworR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBleHRfdmFjdXVtX3N0YXRpc3Rp Y3MucmVtb3ZlX3RyYWNrX3JlbGF0aW9uKG9pZCwgb2lkKSBUTyBwZ19yZWFkX2FsbF9zdGF0 czsKKworLS0gSW50ZXJuYWwgQyBmdW5jdGlvbiB0byBmZXRjaCB0YWJsZSB2YWN1dW0gc3Rh dHMKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGV4dF92YWN1dW1fc3RhdGlzdGljcy5w Z19zdGF0c19nZXRfdmFjdXVtX3RhYmxlcygKKyAgICBJTiAgZGJvaWQgb2lkLAorICAgIElO ICByZWxvaWQgb2lkLAorICAgIE9VVCByZWxpZCBvaWQsCisgICAgT1VUIHRvdGFsX2Jsa3Nf cmVhZCBiaWdpbnQsCisgICAgT1VUIHRvdGFsX2Jsa3NfaGl0IGJpZ2ludCwKKyAgICBPVVQg dG90YWxfYmxrc19kaXJ0aWVkIGJpZ2ludCwKKyAgICBPVVQgdG90YWxfYmxrc193cml0dGVu IGJpZ2ludCwKKyAgICBPVVQgd2FsX3JlY29yZHMgYmlnaW50LAorICAgIE9VVCB3YWxfZnBp IGJpZ2ludCwKKyAgICBPVVQgd2FsX2J5dGVzIG51bWVyaWMsCisgICAgT1VUIGJsa19yZWFk X3RpbWUgZG91YmxlIHByZWNpc2lvbiwKKyAgICBPVVQgYmxrX3dyaXRlX3RpbWUgZG91Ymxl IHByZWNpc2lvbiwKKyAgICBPVVQgZGVsYXlfdGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAg IE9VVCB0b3RhbF90aW1lIGRvdWJsZSBwcmVjaXNpb24sCisgICAgT1VUIHdyYXBhcm91bmRf ZmFpbHNhZmVfY291bnQgaW50ZWdlciwKKyAgICBPVVQgcmVsX2Jsa3NfcmVhZCBiaWdpbnQs CisgICAgT1VUIHJlbF9ibGtzX2hpdCBiaWdpbnQsCisgICAgT1VUIHR1cGxlc19kZWxldGVk IGJpZ2ludCwKKyAgICBPVVQgcGFnZXNfc2Nhbm5lZCBiaWdpbnQsCisgICAgT1VUIHBhZ2Vz X3JlbW92ZWQgYmlnaW50LAorICAgIE9VVCB2bV9uZXdfZnJvemVuX3BhZ2VzIGJpZ2ludCwK KyAgICBPVVQgdm1fbmV3X3Zpc2libGVfcGFnZXMgYmlnaW50LAorICAgIE9VVCB2bV9uZXdf dmlzaWJsZV9mcm96ZW5fcGFnZXMgYmlnaW50LAorICAgIE9VVCB0dXBsZXNfZnJvemVuIGJp Z2ludCwKKyAgICBPVVQgcmVjZW50bHlfZGVhZF90dXBsZXMgYmlnaW50LAorICAgIE9VVCBp bmRleF92YWN1dW1fY291bnQgYmlnaW50LAorICAgIE9VVCBtaXNzZWRfZGVhZF9wYWdlcyBi aWdpbnQsCisgICAgT1VUIG1pc3NlZF9kZWFkX3R1cGxlcyBiaWdpbnQKKykKK1JFVFVSTlMg U0VUT0YgcmVjb3JkCitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ3BnX3N0YXRzX2dldF92YWN1 dW1fdGFibGVzJworTEFOR1VBR0UgQyBTVFJJQ1QgU1RBQkxFOworCistLSBJbnRlcm5hbCBD IGZ1bmN0aW9uIHRvIGZldGNoIGluZGV4IHZhY3V1bSBzdGF0cworQ1JFQVRFIE9SIFJFUExB Q0UgRlVOQ1RJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX2dldF92YWN1dW1f aW5kZXhlcygKKyAgICBJTiAgZGJvaWQgb2lkLAorICAgIElOICByZWxvaWQgb2lkLAorICAg IE9VVCByZWxpZCBvaWQsCisgICAgT1VUIHRvdGFsX2Jsa3NfcmVhZCBiaWdpbnQsCisgICAg T1VUIHRvdGFsX2Jsa3NfaGl0IGJpZ2ludCwKKyAgICBPVVQgdG90YWxfYmxrc19kaXJ0aWVk IGJpZ2ludCwKKyAgICBPVVQgdG90YWxfYmxrc193cml0dGVuIGJpZ2ludCwKKyAgICBPVVQg d2FsX3JlY29yZHMgYmlnaW50LAorICAgIE9VVCB3YWxfZnBpIGJpZ2ludCwKKyAgICBPVVQg d2FsX2J5dGVzIG51bWVyaWMsCisgICAgT1VUIGJsa19yZWFkX3RpbWUgZG91YmxlIHByZWNp c2lvbiwKKyAgICBPVVQgYmxrX3dyaXRlX3RpbWUgZG91YmxlIHByZWNpc2lvbiwKKyAgICBP VVQgZGVsYXlfdGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCB0b3RhbF90aW1lIGRv dWJsZSBwcmVjaXNpb24sCisgICAgT1VUIHdyYXBhcm91bmRfZmFpbHNhZmVfY291bnQgaW50 ZWdlciwKKyAgICBPVVQgcmVsX2Jsa3NfcmVhZCBiaWdpbnQsCisgICAgT1VUIHJlbF9ibGtz X2hpdCBiaWdpbnQsCisgICAgT1VUIHR1cGxlc19kZWxldGVkIGJpZ2ludCwKKyAgICBPVVQg cGFnZXNfZGVsZXRlZCBiaWdpbnQKKykKK1JFVFVSTlMgU0VUT0YgcmVjb3JkCitBUyAnTU9E VUxFX1BBVEhOQU1FJywgJ3BnX3N0YXRzX2dldF92YWN1dW1faW5kZXhlcycKK0xBTkdVQUdF IEMgU1RSSUNUIFNUQUJMRTsKKworLS0gSW50ZXJuYWwgQyBmdW5jdGlvbiB0byBmZXRjaCBk YXRhYmFzZSB2YWN1dW0gc3RhdHMKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGV4dF92 YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c19nZXRfdmFjdXVtX2RhdGFiYXNlKAorICAgIElO ICBkYm9pZCBvaWQsCisgICAgT1VUIGRiaWQgb2lkLAorICAgIE9VVCB0b3RhbF9ibGtzX3Jl YWQgYmlnaW50LAorICAgIE9VVCB0b3RhbF9ibGtzX2hpdCBiaWdpbnQsCisgICAgT1VUIHRv dGFsX2Jsa3NfZGlydGllZCBiaWdpbnQsCisgICAgT1VUIHRvdGFsX2Jsa3Nfd3JpdHRlbiBi aWdpbnQsCisgICAgT1VUIHdhbF9yZWNvcmRzIGJpZ2ludCwKKyAgICBPVVQgd2FsX2ZwaSBi aWdpbnQsCisgICAgT1VUIHdhbF9ieXRlcyBudW1lcmljLAorICAgIE9VVCBibGtfcmVhZF90 aW1lIGRvdWJsZSBwcmVjaXNpb24sCisgICAgT1VUIGJsa193cml0ZV90aW1lIGRvdWJsZSBw cmVjaXNpb24sCisgICAgT1VUIGRlbGF5X3RpbWUgZG91YmxlIHByZWNpc2lvbiwKKyAgICBP VVQgdG90YWxfdGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCB3cmFwYXJvdW5kX2Zh aWxzYWZlX2NvdW50IGludGVnZXIsCisgICAgT1VUIGludGVycnVwdHNfY291bnQgaW50ZWdl cgorKQorUkVUVVJOUyBTRVRPRiByZWNvcmQKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAncGdf c3RhdHNfZ2V0X3ZhY3V1bV9kYXRhYmFzZScKK0xBTkdVQUdFIEMgU1RSSUNUIFNUQUJMRTsK KworLS0gVmlldzogdmFjdXVtIHN0YXRpc3RpY3MgcGVyIHRhYmxlIChoZWFwKQorQ1JFQVRF IFZJRVcgZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV90YWJsZXMgQVMK K1NFTEVDVAorICByZWwub2lkIEFTIHJlbGlkLAorICBucy5uc3BuYW1lIEFTIHNjaGVtYSwK KyAgcmVsLnJlbG5hbWUgQVMgcmVsbmFtZSwKKyAgZGIuZGF0bmFtZSBBUyBkYm5hbWUsCisg IHN0YXRzLnRvdGFsX2Jsa3NfcmVhZCwKKyAgc3RhdHMudG90YWxfYmxrc19oaXQsCisgIHN0 YXRzLnRvdGFsX2Jsa3NfZGlydGllZCwKKyAgc3RhdHMudG90YWxfYmxrc193cml0dGVuLAor ICBzdGF0cy53YWxfcmVjb3JkcywKKyAgc3RhdHMud2FsX2ZwaSwKKyAgc3RhdHMud2FsX2J5 dGVzLAorICBzdGF0cy5ibGtfcmVhZF90aW1lLAorICBzdGF0cy5ibGtfd3JpdGVfdGltZSwK KyAgc3RhdHMuZGVsYXlfdGltZSwKKyAgc3RhdHMudG90YWxfdGltZSwKKyAgc3RhdHMud3Jh cGFyb3VuZF9mYWlsc2FmZV9jb3VudCwKKyAgc3RhdHMucmVsX2Jsa3NfcmVhZCwKKyAgc3Rh dHMucmVsX2Jsa3NfaGl0LAorICBzdGF0cy50dXBsZXNfZGVsZXRlZCwKKyAgc3RhdHMucGFn ZXNfc2Nhbm5lZCwKKyAgc3RhdHMucGFnZXNfcmVtb3ZlZCwKKyAgc3RhdHMudm1fbmV3X2Zy b3plbl9wYWdlcywKKyAgc3RhdHMudm1fbmV3X3Zpc2libGVfcGFnZXMsCisgIHN0YXRzLnZt X25ld192aXNpYmxlX2Zyb3plbl9wYWdlcywKKyAgc3RhdHMudHVwbGVzX2Zyb3plbiwKKyAg c3RhdHMucmVjZW50bHlfZGVhZF90dXBsZXMsCisgIHN0YXRzLmluZGV4X3ZhY3V1bV9jb3Vu dCwKKyAgc3RhdHMubWlzc2VkX2RlYWRfcGFnZXMsCisgIHN0YXRzLm1pc3NlZF9kZWFkX3R1 cGxlcworRlJPTSBwZ19kYXRhYmFzZSBkYiwKKyAgICAgcGdfY2xhc3MgcmVsLAorICAgICBw Z19uYW1lc3BhY2UgbnMsCisgICAgIExBVEVSQUwgZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBn X3N0YXRzX2dldF92YWN1dW1fdGFibGVzKGRiLm9pZCwgcmVsLm9pZCkgc3RhdHMKK1dIRVJF IGRiLmRhdG5hbWUgPSBjdXJyZW50X2RhdGFiYXNlKCkKKyAgQU5EIHJlbC5yZWxraW5kID0g J3InCisgIEFORCByZWwucmVsbmFtZXNwYWNlID0gbnMub2lkCisgIEFORCByZWwub2lkID0g c3RhdHMucmVsaWQ7CisKK0NPTU1FTlQgT04gVklFVyBleHRfdmFjdXVtX3N0YXRpc3RpY3Mu cGdfc3RhdHNfdmFjdXVtX3RhYmxlcyBJUworICAnRXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3Rp Y3MgcGVyIHRhYmxlIChoZWFwKSc7CisKKy0tIFZpZXc6IHZhY3V1bSBzdGF0aXN0aWNzIHBl ciBpbmRleAorQ1JFQVRFIFZJRVcgZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3Zh Y3V1bV9pbmRleGVzIEFTCitTRUxFQ1QKKyAgcmVsLm9pZCBBUyBpbmRleHJlbGlkLAorICBu cy5uc3BuYW1lIEFTIHNjaGVtYSwKKyAgcmVsLnJlbG5hbWUgQVMgaW5kZXhyZWxuYW1lLAor ICBkYi5kYXRuYW1lIEFTIGRibmFtZSwKKyAgc3RhdHMudG90YWxfYmxrc19yZWFkLAorICBz dGF0cy50b3RhbF9ibGtzX2hpdCwKKyAgc3RhdHMudG90YWxfYmxrc19kaXJ0aWVkLAorICBz dGF0cy50b3RhbF9ibGtzX3dyaXR0ZW4sCisgIHN0YXRzLndhbF9yZWNvcmRzLAorICBzdGF0 cy53YWxfZnBpLAorICBzdGF0cy53YWxfYnl0ZXMsCisgIHN0YXRzLmJsa19yZWFkX3RpbWUs CisgIHN0YXRzLmJsa193cml0ZV90aW1lLAorICBzdGF0cy5kZWxheV90aW1lLAorICBzdGF0 cy50b3RhbF90aW1lLAorICBzdGF0cy53cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50LAorICBz dGF0cy5yZWxfYmxrc19yZWFkLAorICBzdGF0cy5yZWxfYmxrc19oaXQsCisgIHN0YXRzLnR1 cGxlc19kZWxldGVkLAorICBzdGF0cy5wYWdlc19kZWxldGVkCitGUk9NIHBnX2RhdGFiYXNl IGRiLAorICAgICBwZ19jbGFzcyByZWwsCisgICAgIHBnX25hbWVzcGFjZSBucywKKyAgICAg TEFURVJBTCBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfZ2V0X3ZhY3V1bV9pbmRl eGVzKGRiLm9pZCwgcmVsLm9pZCkgc3RhdHMKK1dIRVJFIGRiLmRhdG5hbWUgPSBjdXJyZW50 X2RhdGFiYXNlKCkKKyAgQU5EIHJlbC5yZWxraW5kID0gJ2knCisgIEFORCByZWwucmVsbmFt ZXNwYWNlID0gbnMub2lkCisgIEFORCByZWwub2lkID0gc3RhdHMucmVsaWQ7CisKK0NPTU1F TlQgT04gVklFVyBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX2luZGV4 ZXMgSVMKKyAgJ0V4dGVuZGVkIHZhY3V1bSBzdGF0aXN0aWNzIHBlciBpbmRleCc7CisKKy0t IFZpZXc6IHZhY3V1bSBzdGF0aXN0aWNzIHBlciBkYXRhYmFzZSAoYWdncmVnYXRlKQorQ1JF QVRFIFZJRVcgZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9kYXRhYmFz ZSBBUworU0VMRUNUCisgIGRiLm9pZCBBUyBkYm9pZCwKKyAgZGIuZGF0bmFtZSBBUyBkYm5h bWUsCisgIHN0YXRzLnRvdGFsX2Jsa3NfcmVhZCBBUyBkYl9ibGtzX3JlYWQsCisgIHN0YXRz LnRvdGFsX2Jsa3NfaGl0IEFTIGRiX2Jsa3NfaGl0LAorICBzdGF0cy50b3RhbF9ibGtzX2Rp cnRpZWQgQVMgZGJfYmxrc19kaXJ0aWVkLAorICBzdGF0cy50b3RhbF9ibGtzX3dyaXR0ZW4g QVMgZGJfYmxrc193cml0dGVuLAorICBzdGF0cy53YWxfcmVjb3JkcyBBUyBkYl93YWxfcmVj b3JkcywKKyAgc3RhdHMud2FsX2ZwaSBBUyBkYl93YWxfZnBpLAorICBzdGF0cy53YWxfYnl0 ZXMgQVMgZGJfd2FsX2J5dGVzLAorICBzdGF0cy5ibGtfcmVhZF90aW1lIEFTIGRiX2Jsa19y ZWFkX3RpbWUsCisgIHN0YXRzLmJsa193cml0ZV90aW1lIEFTIGRiX2Jsa193cml0ZV90aW1l LAorICBzdGF0cy5kZWxheV90aW1lIEFTIGRiX2RlbGF5X3RpbWUsCisgIHN0YXRzLnRvdGFs X3RpbWUgQVMgZGJfdG90YWxfdGltZSwKKyAgc3RhdHMud3JhcGFyb3VuZF9mYWlsc2FmZV9j b3VudCBBUyBkYl93cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50LAorICBzdGF0cy5pbnRlcnJ1 cHRzX2NvdW50CitGUk9NIHBnX2RhdGFiYXNlIGRiCitMRUZUIEpPSU4gTEFURVJBTCBleHRf dmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfZ2V0X3ZhY3V1bV9kYXRhYmFzZShkYi5vaWQp IHN0YXRzIE9OIGRiLm9pZCA9IHN0YXRzLmRiaWQ7CisKK0NPTU1FTlQgT04gVklFVyBleHRf dmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX2RhdGFiYXNlIElTCisgICdFeHRl bmRlZCB2YWN1dW0gc3RhdGlzdGljcyBwZXIgZGF0YWJhc2UgKGFnZ3JlZ2F0ZSknOwpkaWZm IC0tZ2l0IGEvY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvZXh0X3ZhY3V1bV9zdGF0 aXN0aWNzLmNvbmYgYi9jb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy9leHRfdmFjdXVt X3N0YXRpc3RpY3MuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uOWI3MTE0ODc2MjMKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2V4dF92YWN1dW1f c3RhdGlzdGljcy9leHRfdmFjdXVtX3N0YXRpc3RpY3MuY29uZgpAQCAtMCwwICsxLDIgQEAK KyMgQ29uZmlnIGZvciBleHRfdmFjdXVtX3N0YXRpc3RpY3MgcmVncmVzc2lvbiB0ZXN0cwor c2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzID0gJ2V4dF92YWN1dW1fc3RhdGlzdGljcycKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL2V4dF92YWN1dW1fc3Rh dGlzdGljcy5jb250cm9sIGIvY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzLmNvbnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjUxODM1MGE2NGI3Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9leHRf dmFjdXVtX3N0YXRpc3RpY3MvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLmNvbnRyb2wKQEAgLTAs MCArMSw1IEBACisjIGV4dF92YWN1dW1fc3RhdGlzdGljcyBleHRlbnNpb24KK2NvbW1lbnQg PSAnRXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3RpY3MgdmlhIGhvb2sgKHJlcXVpcmVzIHNoYXJl ZF9wcmVsb2FkX2xpYnJhcmllcyknCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworcmVsb2Nh dGFibGUgPSB0cnVlCittb2R1bGVfcGF0aG5hbWUgPSAnJGxpYmRpci9leHRfdmFjdXVtX3N0 YXRpc3RpY3MnCmRpZmYgLS1naXQgYS9jb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy9t ZXNvbi5idWlsZCBiL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL21lc29uLmJ1aWxk Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MjMzOGJhYTUwMAot LS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL21lc29u LmJ1aWxkCkBAIC0wLDAgKzEsNDEgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDIyLTIwMjYsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisjCisjIGV4dF92YWN1dW1fc3Rh dGlzdGljcyAtIGV4dGVuZGVkIHZhY3V1bSBzdGF0aXN0aWNzIHZpYSBob29rCisjIFJlcXVp cmVzIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyA9ICdleHRfdmFjdXVtX3N0YXRpc3RpY3Mn CisKK2V4dF92YWN1dW1fc3RhdGlzdGljc19zb3VyY2VzID0gZmlsZXMoCisgICd2YWN1dW1f c3RhdGlzdGljcy5jJywKKykKKworZXh0X3ZhY3V1bV9zdGF0aXN0aWNzID0gc2hhcmVkX21v ZHVsZSgnZXh0X3ZhY3V1bV9zdGF0aXN0aWNzJywKKyAgZXh0X3ZhY3V1bV9zdGF0aXN0aWNz X3NvdXJjZXMsCisgIGt3YXJnczogY29udHJpYl9tb2RfYXJncyArIHsKKyAgICAnZGVwZW5k ZW5jaWVzJzogY29udHJpYl9tb2RfYXJnc1snZGVwZW5kZW5jaWVzJ10sCisgIH0sCispCitj b250cmliX3RhcmdldHMgKz0gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzCisKK2luc3RhbGxfZGF0 YSgKKyAgJ2V4dF92YWN1dW1fc3RhdGlzdGljcy5jb250cm9sJywKKyAgJ2V4dF92YWN1dW1f c3RhdGlzdGljcy0tMS4wLnNxbCcsCisgIGt3YXJnczogY29udHJpYl9kYXRhX2FyZ3MsCisp CisKK3Rlc3RzICs9IHsKKyAgJ25hbWUnOiAnZXh0X3ZhY3V1bV9zdGF0aXN0aWNzJywKKyAg J3NkJzogbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCisgICdiZCc6IG1lc29uLmN1cnJl bnRfYnVpbGRfZGlyKCksCisgICdpc29sYXRpb24nOiB7CisgICAgJ3NwZWNzJzogWworICAg ICAgJ3ZhY3V1bS1leHRlbmRpbmctaW4tcmVwZXRhYmxlLXJlYWQnLAorICAgIF0sCisgICAg J3JlZ3Jlc3NfYXJncyc6IFsnLS10ZW1wLWNvbmZpZycsIGZpbGVzKCdleHRfdmFjdXVtX3N0 YXRpc3RpY3MuY29uZicpXSwKKyAgICAncnVubmluZ2NoZWNrJzogZmFsc2UsCisgIH0sCisg ICd0YXAnOiB7CisgICAgJ3Rlc3RzJzogWworICAgICAgJ3QvMDUyX3ZhY3V1bV9leHRlbmRp bmdfYmFzaWNfdGVzdC5wbCcsCisgICAgICAndC8wNTNfdmFjdXVtX2V4dGVuZGluZ19mcmVl emVfdGVzdC5wbCcsCisgICAgXSwKKyAgfSwKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvZXh0 X3ZhY3V1bV9zdGF0aXN0aWNzL3NwZWNzL3ZhY3V1bS1leHRlbmRpbmctaW4tcmVwZXRhYmxl LXJlYWQuc3BlYyBiL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3NwZWNzL3ZhY3V1 bS1leHRlbmRpbmctaW4tcmVwZXRhYmxlLXJlYWQuc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uNDg5MWUyNDhjY2EKLS0tIC9kZXYvbnVsbAorKysgYi9j b250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy9zcGVjcy92YWN1dW0tZXh0ZW5kaW5nLWlu LXJlcGV0YWJsZS1yZWFkLnNwZWMKQEAgLTAsMCArMSw1OSBAQAorIyBUZXN0IGZvciBjaGVj a2luZyByZWNlbnRseV9kZWFkX3R1cGxlcywgdHVwbGVzX2RlbGV0ZWQgYW5kIGZyb3plbiB0 dXBsZXMgaW4gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV90YWJsZXMu CisjIHJlY2VudGx5X2RlYWRfdHVwbGVzIHZhbHVlcyBhcmUgY291bnRlZCB3aGVuIHZhY3V1 bSBoYXNuJ3QgY2xlYXJlZCB0dXBsZXMgYmVjYXVzZSB0aGV5IHdlcmUgZGVsZXRlZCByZWNl bnRseS4KKyMgcmVjZW50bHlfZGVhZF90dXBsZXMgYXJlbid0IGluY3JlYXNlZCBhZnRlciBy ZWxlYXNpbmcgbG9jayBjb21wYXJlZCB3aXRoIHR1cGxlc19kZWxldGVkLCB3aGljaCBpbmNy ZWFzZWQKKyMgYnkgdGhlIHZhbHVlIG9mIHRoZSBjbGVhcmVkIHR1cGxlcyB0aGF0IHRoZSB2 YWN1dW0gbWFuYWdlZCB0byBjbGVhci4KKworc2V0dXAKK3sKKyAgICBDUkVBVEUgVEFCTEUg dGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb24oaWQgaW50LCBpdmFsIGludCkgV0lUSCAoYXV0 b3ZhY3V1bV9lbmFibGVkID0gb2ZmKTsKKyAgICBDUkVBVEUgRVhURU5TSU9OIGV4dF92YWN1 dW1fc3RhdGlzdGljczsKKyAgICBTRVQgdHJhY2tfaW9fdGltaW5nID0gb247Cit9CisKK3Rl YXJkb3duCit7CisgICAgRFJPUCBFWFRFTlNJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIENB U0NBREU7CisgICAgRFJPUCBUQUJMRSB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbiBDQVND QURFOworICAgIFJFU0VUIHRyYWNrX2lvX3RpbWluZzsKK30KKworc2Vzc2lvbiBzMQorc2V0 dXAgeworICAgIFNFVCB0cmFja19pb190aW1pbmcgPSBvbjsKK30KK3N0ZXAgczFfYmVnaW5f cmVwZWF0YWJsZV9yZWFkIHsKKyAgICBCRUdJTiB0cmFuc2FjdGlvbiBJU09MQVRJT04gTEVW RUwgUkVQRUFUQUJMRSBSRUFEOworICAgIHNlbGVjdCBjb3VudChpdmFsKSBmcm9tIHRlc3Rf dmFjdXVtX3N0YXRfaXNvbGF0aW9uIHdoZXJlIGlkPjkwMDsKK30KK3N0ZXAgczFfY29tbWl0 IHsgQ09NTUlUOyB9CisKK3Nlc3Npb24gczIKK3NldHVwIHsKKyAgICBTRVQgdHJhY2tfaW9f dGltaW5nID0gb247Cit9CitzdGVwIHMyX2luc2VydCAgICAgICAgICAgICAgICAgIHsgSU5T RVJUIElOVE8gdGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb24oaWQsIGl2YWwpIFNFTEVDVCBp dmFsLCBpdmFsJTEwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgQXMgaXZhbDsgfQor c3RlcCBzMl91cGRhdGUgICAgICAgICAgICAgICAgICB7IFVQREFURSB0ZXN0X3ZhY3V1bV9z dGF0X2lzb2xhdGlvbiBTRVQgaXZhbCA9IGl2YWwgKyAyIHdoZXJlIGlkID4gOTAwOyB9Citz dGVwIHMyX2RlbGV0ZSAgICAgICAgICAgICAgICAgIHsgREVMRVRFIEZST00gdGVzdF92YWN1 dW1fc3RhdF9pc29sYXRpb24gd2hlcmUgaWQgPiA5MDA7IH0KK3N0ZXAgczJfaW5zZXJ0X2lu dGVycnVwdCAgICAgICAgeyBJTlNFUlQgSU5UTyB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlv biB2YWx1ZXMgKDEsMSk7IH0KK3N0ZXAgczJfdmFjdXVtICAgICAgICAgICAgICAgICAgeyBW QUNVVU0gdGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb247IH0KK3N0ZXAgczJfY2hlY2twb2lu dCAgICAgICAgICAgICAgeyBDSEVDS1BPSU5UOyB9CitzdGVwIHMyX3ByaW50X3ZhY3V1bV9z dGF0c190YWJsZQoreworICAgIFNFTEVDVAorICAgICAgICB2dC5yZWxuYW1lLCB2dC50dXBs ZXNfZGVsZXRlZCwgdnQucmVjZW50bHlfZGVhZF90dXBsZXMsIHZ0Lm1pc3NlZF9kZWFkX3R1 cGxlcywgdnQubWlzc2VkX2RlYWRfcGFnZXMsIHZ0LnR1cGxlc19mcm96ZW4KKyAgICBGUk9N IGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIHZ0LCBwZ19j bGFzcyBjCisgICAgV0hFUkUgdnQucmVsbmFtZSA9ICd0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xh dGlvbicgQU5EIHZ0LnJlbGlkID0gYy5vaWQ7Cit9CisKK3Blcm11dGF0aW9uCisgICAgczJf aW5zZXJ0CisgICAgczJfcHJpbnRfdmFjdXVtX3N0YXRzX3RhYmxlCisgICAgczFfYmVnaW5f cmVwZWF0YWJsZV9yZWFkCisgICAgczJfdXBkYXRlCisgICAgczJfaW5zZXJ0X2ludGVycnVw dAorICAgIHMyX3ZhY3V1bQorICAgIHMyX3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZQorICAg IHMxX2NvbW1pdAorICAgIHMyX2NoZWNrcG9pbnQKKyAgICBzMl92YWN1dW0KKyAgICBzMl9w cmludF92YWN1dW1fc3RhdHNfdGFibGUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZXh0X3ZhY3V1 bV9zdGF0aXN0aWNzL3QvMDUyX3ZhY3V1bV9leHRlbmRpbmdfYmFzaWNfdGVzdC5wbCBiL2Nv bnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3QvMDUyX3ZhY3V1bV9leHRlbmRpbmdfYmFz aWNfdGVzdC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTQ2 M2Q1MTQ1ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2V4dF92YWN1dW1fc3RhdGlz dGljcy90LzA1Ml92YWN1dW1fZXh0ZW5kaW5nX2Jhc2ljX3Rlc3QucGwKQEAgLTAsMCArMSw3 ODAgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisjIFRlc3QgY3VtdWxhdGl2ZSB2YWN1dW0gc3RhdHMgc3lzdGVtIHVzaW5n IFRBUAorIworIyBUaGlzIHRlc3QgdmFsaWRhdGVzIHRoZSBhY2N1cmFjeSBhbmQgYmVoYXZp b3Igb2YgY3VtdWxhdGl2ZSB2YWN1dW0gc3RhdGlzdGljcworIyBhY3Jvc3MgaGVhcCB0YWJs ZXMsIGluZGV4ZXMsIGFuZCBkYXRhYmFzZXMgdXNpbmc6CisjCisjICAg4oCiIGV4dF92YWN1 dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzCisjICAg4oCiIGV4dF92YWN1 dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1faW5kZXhlcworIyAgIOKAoiBleHRfdmFj dXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX2RhdGFiYXNlCisjCisjIEEgcG9sbGlu ZyBoZWxwZXIgZnVuY3Rpb24gcmVwZWF0ZWRseSBjaGVja3MgdGhlIHN0YXRzIHZpZXdzIHVu dGlsIGV4cGVjdGVkCisjIGRlbHRhcyBhcHBlYXIgb3IgYSBjb25maWd1cmFibGUgdGltZW91 dCBleHBpcmVzLiBUaGlzIGd1YXJhbnRlZXMgdGhhdAorIyBzdGF0cy1jb2xsZWN0b3IgcHJv cGFnYXRpb24gZGVsYXlzIGRvIG5vdCBsZWFkIHRvIGZsYWt5IHRlc3QgYmVoYXZpb3IuCisK K3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOwor CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3QgaGFybmVzcyBzZXR1cAorIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygnc3RhdF92YWN1dW0nKTsKKyRub2RlLT5pbml0OworCisjIENvbmZp Z3VyZSB0aGUgc2VydmVyOiBwcmVsb2FkIGV4dGVuc2lvbiBhbmQgbG9nZ2luZyBsZXZlbAor JG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxeworICAgIHNoYXJlZF9w cmVsb2FkX2xpYnJhcmllcyA9ICdleHRfdmFjdXVtX3N0YXRpc3RpY3MnCisgICAgbG9nX21p bl9tZXNzYWdlcyA9IG5vdGljZQorfSk7CisKK215ICRzdGRlcnI7CitteSAkYmFzZV9zdGF0 czsKK215ICR3YWxzOworbXkgJGliYXNlX3N0YXRzOworbXkgJGl3YWxzOworCiskbm9kZS0+ c3RhcnQoCisgICAgJz4nID0+IFwkYmFzZV9zdGF0cywKKwknMj4nID0+IFwkc3RkZXJyCisp OworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERhdGFiYXNlIGNyZWF0aW9uIGFu ZCBpbml0aWFsaXphdGlvbgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiskbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisgICAgQ1JFQVRFIERBVEFCQVNFIHN0YXRpc3Rp Y192YWN1dW1fZGF0YWJhc2VfcmVncmVzc2lvbjsKKyAgICBDUkVBVEUgRVhURU5TSU9OIGV4 dF92YWN1dW1fc3RhdGlzdGljczsKK30pOworIyBNYWluIHRlc3QgZGF0YWJhc2UgbmFtZSBh bmQgbnVtYmVyIG9mIHJvd3MgdG8gaW5zZXJ0CitteSAkZGJuYW1lICAgPSAnc3RhdGlzdGlj X3ZhY3V1bV9kYXRhYmFzZV9yZWdyZXNzaW9uJzsKK215ICRzaXplX3RhYiA9IDEwMDA7CisK KyMgRW5hYmxlIHJlcXVpcmVkIHNlc3Npb24gc2V0dGluZ3MgYW5kIGZvcmNlIHRoZSBzdGF0 cyBjb2xsZWN0b3IgdG8gZmx1c2ggbmV4dAorJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1lLCBx eworICAgIFNFVCB0cmFja19mdW5jdGlvbnMgPSAnYWxsJzsKKyAgICBTRUxFQ1QgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoKCk7Cit9KTsKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIyBDcmVhdGUgdGVzdCB0YWJsZSBhbmQgcG9wdWxhdGUgaXQKKyMtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKworJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAkZGJuYW1lLAorICAgICJD UkVBVEUgRVhURU5TSU9OIGV4dF92YWN1dW1fc3RhdGlzdGljczsKKyAgICAgQ1JFQVRFIFRB QkxFIHZlc3RhdCAoeCBpbnQgUFJJTUFSWSBLRVkpCisgICAgICAgICBXSVRIIChhdXRvdmFj dXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSAxMCk7CisgICAgIElOU0VSVCBJTlRP IHZlc3RhdCBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAkc2l6ZV90YWIpIEFT IGcoeCk7CisgICAgIEFOQUxZWkUgdmVzdGF0OyIKKyk7CisKKyMtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyMgVGltaW5nIHBhcmFtZXRlcnMgZm9yIHBvbGxpbmcgbG9vcHMKKyMtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbXkgJHRpbWVvdXQgICAgPSAzMDsgICAgICMgb3Zl cmFsbCB3YWl0IHRpbWVvdXQgaW4gc2Vjb25kcworbXkgJGludGVydmFsICAgPSAwLjAxNTsg ICMgcG9sbCBpbnRlcnZhbCBpbiBzZWNvbmRzICgxNSBtcykKK215ICRzdGFydF90aW1lID0g dGltZSgpOworbXkgJHVwZGF0ZWQgICAgPSAwOworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisjIHdhaXRfZm9yX3ZhY3V1bV9zdGF0cworIworIyBQb2xscyBleHRfdmFjdXVtX3N0 YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX3RhYmxlcyBhbmQgZXh0X3ZhY3V1bV9zdGF0aXN0 aWNzLnBnX3N0YXRzX3ZhY3V1bV9pbmRleGVzIHVudGlsIGJvdGggdGhlCisjIHRhYmxlLWxl dmVsIGFuZCBpbmRleC1sZXZlbCBjb3VudGVycyBleGNlZWQgdGhlIHByb3ZpZGVkIGJhc2Vs aW5lcywgb3IgdW50aWwKKyMgdGhlIGNvbmZpZ3VyZWQgdGltZW91dCBlbGFwc2VzLgorIwor IyBFeHBlY3RlZCBuYW1lZCBhcmdzIChiYXNlbGluZSB2YWx1ZXMpOgorIyAgIHRhYl90dXBs ZXNfZGVsZXRlZAorIyAgIHRhYl93YWxfcmVjb3JkcworIyAgIGlkeF90dXBsZXNfZGVsZXRl ZAorIyAgIGlkeF93YWxfcmVjb3JkcworIworIyBSZXR1cm5zOiAxIGlmIHRoZSBjb25kaXRp b24gaXMgbWV0IGJlZm9yZSB0aW1lb3V0LCAwIG90aGVyd2lzZS4KKyMtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKworc3ViIHdhaXRfZm9yX3ZhY3V1bV9zdGF0cyB7CisgICAgbXkgKCVh cmdzKSA9IEBfOworICAgIG15ICR0YWJfdHVwbGVzX2RlbGV0ZWQgPSAoJGFyZ3N7dGFiX3R1 cGxlc19kZWxldGVkfSBvciAwKTsKKyAgICBteSAkdGFiX3dhbF9yZWNvcmRzICAgID0gKCRh cmdze3RhYl93YWxfcmVjb3Jkc30gb3IgMCk7CisgICAgbXkgJGlkeF90dXBsZXNfZGVsZXRl ZCA9ICgkYXJnc3tpZHhfdHVwbGVzX2RlbGV0ZWR9IG9yIDApOworICAgIG15ICRpZHhfd2Fs X3JlY29yZHMgICAgPSAoJGFyZ3N7aWR4X3dhbF9yZWNvcmRzfSBvciAwKTsKKworICAgIG15 ICRzdGFydCA9IHRpbWUoKTsKKyAgICB3aGlsZSAoKHRpbWUoKSAtICRzdGFydCkgPCAkdGlt ZW91dCkgeworCisgICAgICAgIG15ICRyZXN1bHRfcXVlcnkgPSAkbm9kZS0+c2FmZV9wc3Fs KAorICAgICAgICAgICAgJGRibmFtZSwKKyAgICAgICAgICAgICJWQUNVVU0gdmVzdGF0Owor ICAgICAgICAgICAgIFNFTEVDVAorICAgICAgICAgICAgICAgIChTRUxFQ1QgKHR1cGxlc19k ZWxldGVkID4gJHRhYl90dXBsZXNfZGVsZXRlZCBBTkQgd2FsX3JlY29yZHMgPiAkdGFiX3dh bF9yZWNvcmRzKQorICAgICAgICAgICAgICAgICAgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3Rp Y3MucGdfc3RhdHNfdmFjdXVtX3RhYmxlcworICAgICAgICAgICAgICAgICAgV0hFUkUgcmVs bmFtZSA9ICd2ZXN0YXQnKQorICAgICAgICAgICAgICAgIEFORAorICAgICAgICAgICAgICAg IChTRUxFQ1QgKHR1cGxlc19kZWxldGVkID4gJGlkeF90dXBsZXNfZGVsZXRlZCBBTkQgd2Fs X3JlY29yZHMgPiAkaWR4X3dhbF9yZWNvcmRzKQorICAgICAgICAgICAgICAgICAgRlJPTSBl eHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX2luZGV4ZXMKKyAgICAgICAg ICAgICAgICAgIFdIRVJFIGluZGV4cmVsbmFtZSA9ICd2ZXN0YXRfcGtleScpOyIKKyAgICAg ICAgKTsKKworICAgICAgICByZXR1cm4gMSBpZiAoJHJlc3VsdF9xdWVyeSBlcSAndCcpOwor CisgICAgICAgIHNsZWVwKCRpbnRlcnZhbCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9 CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVmFyaWFibGVzIHRvIGhvbGQgdmFj dXVtLXN0YXQgc25hcHNob3RzIGZvciBsYXRlciBjb21wYXJpc29ucworIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorCitteSAkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzID0gMDsK K215ICR0dXBsZXNfZGVsZXRlZCA9IDA7CitteSAkcGFnZXNfc2Nhbm5lZCA9IDA7CitteSAk cGFnZXNfcmVtb3ZlZCA9IDA7CitteSAkd2FsX3JlY29yZHMgPSAwOworbXkgJHdhbF9ieXRl cyA9IDA7CitteSAkd2FsX2ZwaSA9IDA7CisKK215ICRpbmRleF90dXBsZXNfZGVsZXRlZCA9 IDA7CitteSAkaW5kZXhfcGFnZXNfZGVsZXRlZCA9IDA7CitteSAkaW5kZXhfd2FsX3JlY29y ZHMgPSAwOworbXkgJGluZGV4X3dhbF9ieXRlcyA9IDA7CitteSAkaW5kZXhfd2FsX2ZwaSA9 IDA7CisKK215ICR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXNfcHJldiA9IDA7CitteSAk dHVwbGVzX2RlbGV0ZWRfcHJldiA9IDA7CitteSAkcGFnZXNfc2Nhbm5lZF9wcmV2ID0gMDsK K215ICRwYWdlc19yZW1vdmVkX3ByZXYgPSAwOworbXkgJHdhbF9yZWNvcmRzX3ByZXYgPSAw OworbXkgJHdhbF9ieXRlc19wcmV2ID0gMDsKK215ICR3YWxfZnBpX3ByZXYgPSAwOworCitt eSAkaW5kZXhfdHVwbGVzX2RlbGV0ZWRfcHJldiA9IDA7CitteSAkaW5kZXhfcGFnZXNfZGVs ZXRlZF9wcmV2ID0gMDsKK215ICRpbmRleF93YWxfcmVjb3Jkc19wcmV2ID0gMDsKK215ICRp bmRleF93YWxfYnl0ZXNfcHJldiA9IDA7CitteSAkaW5kZXhfd2FsX2ZwaV9wcmV2ID0gMDsK KworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBmZXRjaF92YWN1dW1fc3RhdHMKKyMK KyMgUmVhZHMgY3VycmVudCB2YWx1ZXMgb2YgcmVsZXZhbnQgdmFjdXVtIGNvdW50ZXJzIGZv ciB0aGUgdGVzdCB0YWJsZSBhbmQgaXRzCisjIHByaW1hcnkgaW5kZXgsIHN0b3JpbmcgdGhl bSBpbiBwYWNrYWdlIHZhcmlhYmxlcyBmb3Igc3Vic2VxdWVudCBjb21wYXJpc29ucy4KKyMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3ViIGZldGNoX3ZhY3V1bV9zdGF0cyB7Cisg ICAgIyBmZXRjaCBhY3R1YWwgYmFzZSB2YWN1dW0gc3RhdGlzdGljcworICAgIG15ICRiYXNl X3N0YXRpc3RpY3MgPSAkbm9kZS0+c2FmZV9wc3FsKAorICAgICAgICAkZGJuYW1lLAorICAg ICAgICAiU0VMRUNUIHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcywgdHVwbGVzX2RlbGV0 ZWQsIHBhZ2VzX3NjYW5uZWQsIHBhZ2VzX3JlbW92ZWQsIHdhbF9yZWNvcmRzLCB3YWxfYnl0 ZXMsIHdhbF9mcGkKKyAgICAgICAgICAgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdf c3RhdHNfdmFjdXVtX3RhYmxlcworICAgICAgICAgIFdIRVJFIHJlbG5hbWUgPSAndmVzdGF0 JzsiCisgICAgKTsKKworICAgICRiYXNlX3N0YXRpc3RpY3MgPX4gcy9ccypcfFxzKi8gL2c7 ICAgIyB0cmFuc2Zvcm0gIiB8ICIgaW50byBzcGFjZQorICAgICgkdm1fbmV3X3Zpc2libGVf ZnJvemVuX3BhZ2VzLCAkdHVwbGVzX2RlbGV0ZWQsICRwYWdlc19zY2FubmVkLCAkcGFnZXNf cmVtb3ZlZCwgJHdhbF9yZWNvcmRzLCAkd2FsX2J5dGVzLCAkd2FsX2ZwaSkKKyAgICAgICAg PSBzcGxpdCAvXHMrLywgJGJhc2Vfc3RhdGlzdGljczsKKworICAgICMgLS0tIGluZGV4IHN0 YXRzIC0tLQorICAgIG15ICRpbmRleF9iYXNlX3N0YXRpc3RpY3MgPSAkbm9kZS0+c2FmZV9w c3FsKAorICAgICAgICAkZGJuYW1lLAorICAgICAgICAiU0VMRUNUIHR1cGxlc19kZWxldGVk LCBwYWdlc19kZWxldGVkLCB3YWxfcmVjb3Jkcywgd2FsX2J5dGVzLCB3YWxfZnBpCisgICAg ICAgICAgIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9pbmRl eGVzCisgICAgICAgICAgV0hFUkUgaW5kZXhyZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JzsiCisg ICAgKTsKKworICAgICRpbmRleF9iYXNlX3N0YXRpc3RpY3MgPX4gcy9ccypcfFxzKi8gL2c7 ICAgIyB0cmFuc2Zvcm0gIiB8ICIgaW50byBzcGFjZQorICAgICgkaW5kZXhfdHVwbGVzX2Rl bGV0ZWQsICRpbmRleF9wYWdlc19kZWxldGVkLCAkaW5kZXhfd2FsX3JlY29yZHMsICRpbmRl eF93YWxfYnl0ZXMsICRpbmRleF93YWxfZnBpKQorICAgICAgICA9IHNwbGl0IC9ccysvLCAk aW5kZXhfYmFzZV9zdGF0aXN0aWNzOworfQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisjIHNhdmVfdmFjdXVtX3N0YXRzCisjCisjIFNhdmUgY3VycmVudCB2YWx1ZXMgKHByZXZp b3VzbHkgZmV0Y2hlZCBieSBmZXRjaF92YWN1dW1fc3RhdHMpIHNvIHRoYXQgd2UKKyMgbGF0 ZXIgZmV0Y2ggbmV3IHZhbHVlcyBhbmQgY29tcGFyZSB0aGVtLgorIy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorc3ViIHNhdmVfdmFjdXVtX3N0YXRzIHsKKyAgICAkdm1fbmV3X3Zpc2li bGVfZnJvemVuX3BhZ2VzX3ByZXYgPSAkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzOwor ICAgICR0dXBsZXNfZGVsZXRlZF9wcmV2ID0gJHR1cGxlc19kZWxldGVkOworICAgICRwYWdl c19zY2FubmVkX3ByZXYgPSAkcGFnZXNfc2Nhbm5lZDsKKyAgICAkcGFnZXNfcmVtb3ZlZF9w cmV2ID0gJHBhZ2VzX3JlbW92ZWQ7CisgICAgJHdhbF9yZWNvcmRzX3ByZXYgPSAkd2FsX3Jl Y29yZHM7CisgICAgJHdhbF9ieXRlc19wcmV2ID0gJHdhbF9ieXRlczsKKyAgICAkd2FsX2Zw aV9wcmV2ID0gJHdhbF9mcGk7CisKKyAgICAkaW5kZXhfdHVwbGVzX2RlbGV0ZWRfcHJldiA9 ICRpbmRleF90dXBsZXNfZGVsZXRlZDsKKyAgICAkaW5kZXhfcGFnZXNfZGVsZXRlZF9wcmV2 ID0gJGluZGV4X3BhZ2VzX2RlbGV0ZWQ7CisgICAgJGluZGV4X3dhbF9yZWNvcmRzX3ByZXYg PSAkaW5kZXhfd2FsX3JlY29yZHM7CisgICAgJGluZGV4X3dhbF9ieXRlc19wcmV2ID0gJGlu ZGV4X3dhbF9ieXRlczsKKyAgICAkaW5kZXhfd2FsX2ZwaV9wcmV2ID0gJGluZGV4X3dhbF9m cGk7Cit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgcHJpbnRfdmFjdXVtX3N0 YXRzX29uX2Vycm9yCisjCisjIFByaW50IHZhbHVlcyBpbiBjYXNlIG9mIGFuIGVycm9yCisj LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWIgcHJpbnRfdmFjdXVtX3N0YXRzX29uX2Vy cm9yIHsKKyAgICBkaWFnKAorICAgICAgICAgICAgIlN0YXRpc3RpY3MgaW4gdGhlIGZhaWxl ZCB0ZXN0XG4iIC4KKyAgICAgICAgICAgICJUYWJsZSBzdGF0aXN0aWNzOlxuIiAuCisgICAg ICAgICAgICAiICBCZWZvcmUgdGVzdDpcbiIgLgorICAgICAgICAgICAgIiAgICB2bV9uZXdf dmlzaWJsZV9mcm96ZW5fcGFnZXMgPSAkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzX3By ZXZcbiIgLgorICAgICAgICAgICAgIiAgICB0dXBsZXNfZGVsZXRlZCAgICA9ICR0dXBsZXNf ZGVsZXRlZF9wcmV2XG4iIC4KKyAgICAgICAgICAgICIgICAgcGFnZXNfc2Nhbm5lZCAgICAg PSAkcGFnZXNfc2Nhbm5lZF9wcmV2XG4iIC4KKyAgICAgICAgICAgICIgICAgcGFnZXNfcmVt b3ZlZCAgICAgPSAkcGFnZXNfcmVtb3ZlZF9wcmV2XG4iIC4KKyAgICAgICAgICAgICIgICAg d2FsX3JlY29yZHMgICAgICAgPSAkd2FsX3JlY29yZHNfcHJldlxuIiAuCisgICAgICAgICAg ICAiICAgIHdhbF9ieXRlcyAgICAgICAgID0gJHdhbF9ieXRlc19wcmV2XG4iIC4KKyAgICAg ICAgICAgICIgICAgd2FsX2ZwaSAgICAgICAgICAgPSAkd2FsX2ZwaV9wcmV2XG4iIC4KKyAg ICAgICAgICAgICIgIEFmdGVyIHRlc3Q6XG4iIC4KKyAgICAgICAgICAgICIgICAgdm1fbmV3 X3Zpc2libGVfZnJvemVuX3BhZ2VzID0gJHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlc1xu IiAuCisgICAgICAgICAgICAiICAgIHR1cGxlc19kZWxldGVkICAgID0gJHR1cGxlc19kZWxl dGVkXG4iIC4KKyAgICAgICAgICAgICIgICAgcGFnZXNfc2Nhbm5lZCAgICAgPSAkcGFnZXNf c2Nhbm5lZFxuIiAuCisgICAgICAgICAgICAiICAgIHBhZ2VzX3JlbW92ZWQgICAgID0gJHBh Z2VzX3JlbW92ZWRcbiIgLgorICAgICAgICAgICAgIiAgICB3YWxfcmVjb3JkcyAgICAgICA9 ICR3YWxfcmVjb3Jkc1xuIiAuCisgICAgICAgICAgICAiICAgIHdhbF9ieXRlcyAgICAgICAg ID0gJHdhbF9ieXRlc1xuIiAuCisgICAgICAgICAgICAiICAgIHdhbF9mcGkgICAgICAgICAg ID0gJHdhbF9mcGlcbiIgLgorICAgICAgICAgICAgIkluZGV4IHN0YXRpc3RpY3M6XG4iIC4K KyAgICAgICAgICAgICIgICBCZWZvcmUgdGVzdDpcbiIgLgorICAgICAgICAgICAgIiAgICB0 dXBsZXNfZGVsZXRlZCAgICA9ICRpbmRleF90dXBsZXNfZGVsZXRlZF9wcmV2XG4iIC4KKyAg ICAgICAgICAgICIgICAgcGFnZXNfZGVsZXRlZCAgICAgPSAkaW5kZXhfcGFnZXNfZGVsZXRl ZF9wcmV2XG4iIC4KKyAgICAgICAgICAgICIgICAgd2FsX3JlY29yZHMgICAgICAgPSAkaW5k ZXhfd2FsX3JlY29yZHNfcHJldlxuIiAuCisgICAgICAgICAgICAiICAgIHdhbF9ieXRlcyAg ICAgICAgID0gJGluZGV4X3dhbF9ieXRlc19wcmV2XG4iIC4KKyAgICAgICAgICAgICIgICAg d2FsX2ZwaSAgICAgICAgICAgPSAkaW5kZXhfd2FsX2ZwaV9wcmV2XG4iIC4KKyAgICAgICAg ICAgICIgIEFmdGVyIHRlc3Q6XG4iIC4KKyAgICAgICAgICAgICIgICAgdHVwbGVzX2RlbGV0 ZWQgICAgPSAkaW5kZXhfdHVwbGVzX2RlbGV0ZWRcbiIgLgorICAgICAgICAgICAgIiAgICBw YWdlc19kZWxldGVkICAgICA9ICRpbmRleF9wYWdlc19kZWxldGVkXG4iIC4KKyAgICAgICAg ICAgICIgICAgd2FsX3JlY29yZHMgICAgICAgPSAkaW5kZXhfd2FsX3JlY29yZHNcbiIgLgor ICAgICAgICAgICAgIiAgICB3YWxfYnl0ZXMgICAgICAgICA9ICRpbmRleF93YWxfYnl0ZXNc biIgLgorICAgICAgICAgICAgIiAgICB3YWxfZnBpICAgICAgICAgICA9ICRpbmRleF93YWxf ZnBpXG4iCisgICAgKTsKK307CisKK3N1YiBmZXRjaF9lcnJvcl9iYXNlX2RiX3ZhY3V1bV9z dGF0aXN0aWNzIHsKKyAgICBteSAoJWFyZ3MpID0gQF87CisKKyAgICAjIFZhbGlkYXRlIHBy ZXNlbmNlIG9mIHJlcXVpcmVkIGFyZ3MgKGFsbG93IDAgYXMgdmFsaWQgbnVtZXJpYyBiYXNl bGluZSkKKyAgICBkaWUgImRhdGFiYXNlIG5hbWUgcmVxdWlyZWQiCisgICAgICB1bmxlc3Mg ZXhpc3RzICRhcmdze2RhdGFiYXNlX25hbWV9ICYmIGRlZmluZWQgJGFyZ3N7ZGF0YWJhc2Vf bmFtZX07CisgICAgbXkgJGRhdGFiYXNlX25hbWUgICAgICAgPSAkYXJnc3tkYXRhYmFzZV9u YW1lfTsKKworICAgICMgZmV0Y2ggYWN0dWFsIGJhc2UgZGF0YWJhc2UgdmFjdXVtIHN0YXRp c3RpY3MKKyAgICBteSAkYmFzZV9zdGF0aXN0aWNzID0gJG5vZGUtPnNhZmVfcHNxbCgKKyAg ICAkZGF0YWJhc2VfbmFtZSwKKyAgICAiU0VMRUNUIGRiX2Jsa3NfaGl0LCBkYl9ibGtzX2Rp cnRpZWQsCisgICAgICAgICAgICBkYl9ibGtzX3dyaXR0ZW4sIGRiX3dhbF9yZWNvcmRzLAor ICAgICAgICAgICAgZGJfd2FsX2ZwaSwgZGJfd2FsX2J5dGVzCisgICAgICAgRlJPTSBleHRf dmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX2RhdGFiYXNlLCBwZ19kYXRhYmFz ZQorICAgICAgV0hFUkUgcGdfZGF0YWJhc2UuZGF0bmFtZSA9ICckZGJuYW1lJworICAgICAg ICAgICAgQU5EIHBnX2RhdGFiYXNlLm9pZCA9IGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19z dGF0c192YWN1dW1fZGF0YWJhc2UuZGJvaWQ7IgorICAgICk7CisgICAgJGJhc2Vfc3RhdGlz dGljcyA9fiBzL1xzKlx8XHMqLyAvZzsgICAjIHRyYW5zZm9ybSAiIHwgIiBpbiBzcGFjZQor ICAgIG15ICgkZGJfYmxrc19oaXQsICR0b3RhbF9ibGtzX2RpcnRpZWQsICR0b3RhbF9ibGtz X3dyaXR0ZW4sCisgICAgICAgICR3YWxfcmVjb3JkcywgJHdhbF9mcGksICR3YWxfYnl0ZXMp ID0gc3BsaXQgL1xzKy8sICRiYXNlX3N0YXRpc3RpY3M7CisKKyAgICBkaWFnKAorICAgICAg ICAgICAgIkJBU0UgU1RBVFMgTUlTTUFUQ0ggRk9SIERBVEFCQVNFICRkYm5hbWU6XG4iIC4K KyAgICAgICAgICAgICIgICAgZGJfYmxrc19oaXQgICAgICAgID0gJGRiX2Jsa3NfaGl0XG4i IC4KKyAgICAgICAgICAgICIgICAgdG90YWxfYmxrc19kaXJ0aWVkID0gJHRvdGFsX2Jsa3Nf ZGlydGllZFxuIiAuCisgICAgICAgICAgICAiICAgIHRvdGFsX2Jsa3Nfd3JpdHRlbiA9ICR0 b3RhbF9ibGtzX3dyaXR0ZW5cbiIgLgorICAgICAgICAgICAgIiAgICB3YWxfcmVjb3JkcyAg ICAgICAgPSAkd2FsX3JlY29yZHNcbiIgLgorICAgICAgICAgICAgIiAgICB3YWxfZnBpICAg ICAgICAgICAgPSAkd2FsX2ZwaVxuIiAuCisgICAgICAgICAgICAiICAgIHdhbF9ieXRlcyAg ICAgICAgICA9ICR3YWxfYnl0ZXNcbiIKKyAgICApOworfQorCisKKyMtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyMgVGVzdCAxOiBEZWxldGUgaGFsZiB0aGUgcm93cywgcnVuIFZBQ1VV TSwgYW5kIHdhaXQgZm9yIHN0YXRzIHRvIGFkdmFuY2UKKyMtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK3N1YnRlc3QgJ1Rlc3QgMTogRGVsZXRlIGhhbGYgdGhlIHJvd3MsIHJ1biBWQUNV VU0nID0+IHN1YgoreworCiskbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsICJERUxFVEUgRlJP TSB2ZXN0YXQgV0hFUkUgeCAlIDIgPSAwOyIpOworJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1l LCAiVkFDVVVNIHZlc3RhdDsiKTsKKworIyBQb2xsIHRoZSBzdGF0cyB2aWV3IHVudGlsIGV4 cGVjdGVkIGRlbHRhcyBhcHBlYXIgb3IgdGltZW91dAorJHVwZGF0ZWQgPSB3YWl0X2Zvcl92 YWN1dW1fc3RhdHMoCisgICAgdGFiX3R1cGxlc19kZWxldGVkID0+IDAsCisgICAgdGFiX3dh bF9yZWNvcmRzID0+IDAsCisgICAgaWR4X3R1cGxlc19kZWxldGVkID0+IDAsCisgICAgaWR4 X3dhbF9yZWNvcmRzID0+IDAsCispOworb2soJHVwZGF0ZWQsICd2YWN1dW0gc3RhdHMgdXBk YXRlZCBhZnRlciB2YWN1dW1pbmcgaGFsZi1kZWxldGVkIHRhYmxlICh0dXBsZXNfZGVsZXRl ZCBhbmQgd2FsX2ZwaSBhZHZhbmNlZCknKQorICBvciBkaWFnICJUaW1lb3V0IHdhaXRpbmcg Zm9yIGV4dF92YWN1dW1fc3RhdGlzdGljcyB1cGRhdGUgYWZ0ZXIgJHRpbWVvdXQgc2Vjb25k cyBhZnRlciB2YWN1dW1pbmcgaGFsZi1kZWxldGVkIHRhYmxlIjsKKworZmV0Y2hfdmFjdXVt X3N0YXRzKCk7CisKK29rKCR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgPT0gJHZtX25l d192aXNpYmxlX2Zyb3plbl9wYWdlc19wcmV2LCAndGFibGUgdm1fbmV3X3Zpc2libGVfZnJv emVuX3BhZ2VzIHN0YXkgdGhlIHNhbWUnKTsKK29rKCR0dXBsZXNfZGVsZXRlZCA+ICR0dXBs ZXNfZGVsZXRlZF9wcmV2LCAndGFibGUgdHVwbGVzX2RlbGV0ZWQgaGFzIGluY3JlYXNlZCcp Oworb2soJHBhZ2VzX3NjYW5uZWQgPiAkcGFnZXNfc2Nhbm5lZF9wcmV2LCAndGFibGUgcGFn ZXNfc2Nhbm5lZCBoYXMgaW5jcmVhc2VkJyk7CitvaygkcGFnZXNfcmVtb3ZlZCA9PSAkcGFn ZXNfcmVtb3ZlZF9wcmV2LCAndGFibGUgcGFnZXNfcmVtb3ZlZCBzdGF5IHRoZSBzYW1lJyk7 Citvaygkd2FsX3JlY29yZHMgPiAkd2FsX3JlY29yZHNfcHJldiwgJ3RhYmxlIHdhbF9yZWNv cmRzIGhhcyBpbmNyZWFzZWQnKTsKK29rKCR3YWxfYnl0ZXMgPiAkd2FsX2J5dGVzX3ByZXYs ICd0YWJsZSB3YWxfYnl0ZXMgaGFzIGluY3JlYXNlZCcpOworb2soJHdhbF9mcGkgPiAkd2Fs X2ZwaV9wcmV2LCAndGFibGUgd2FsX2ZwaSBoYXMgaW5jcmVhc2VkJyk7CisKK29rKCRpbmRl eF9wYWdlc19kZWxldGVkID09ICRpbmRleF9wYWdlc19kZWxldGVkX3ByZXYsICdpbmRleCBw YWdlc19kZWxldGVkIHN0YXkgdGhlIHNhbWUnKTsKK29rKCRpbmRleF90dXBsZXNfZGVsZXRl ZCA+ICRpbmRleF90dXBsZXNfZGVsZXRlZF9wcmV2LCAnaW5kZXggdHVwbGVzX2RlbGV0ZWQg aGFzIGluY3JlYXNlZCcpOworb2soJGluZGV4X3dhbF9yZWNvcmRzID4gJGluZGV4X3dhbF9y ZWNvcmRzX3ByZXYsICdpbmRleCB3YWxfcmVjb3JkcyBoYXMgaW5jcmVhc2VkJyk7Citvaygk aW5kZXhfd2FsX2J5dGVzID4gJGluZGV4X3dhbF9ieXRlc19wcmV2LCAnaW5kZXggd2FsX2J5 dGVzIGhhcyBpbmNyZWFzZWQnKTsKK29rKCRpbmRleF93YWxfZnBpID09ICRpbmRleF93YWxf ZnBpX3ByZXYsICdpbmRleCB3YWxfZnBpIHN0YXkgdGhlIHNhbWUnKTsKKworfSBvciBwcmlu dF92YWN1dW1fc3RhdHNfb25fZXJyb3IoKTsKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIyBUZXN0IDI6IERlbGV0ZSBhbGwgcm93cywgcnVuIFZBQ1VVTSwgYW5kIHdhaXQgZm9y IHN0YXRzIHRvIGFkdmFuY2UKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N1YnRlc3Qg J1Rlc3QgMjogRGVsZXRlIGFsbCByb3dzLCBydW4gVkFDVVVNJyA9PiBzdWIKK3sKK3NhdmVf dmFjdXVtX3N0YXRzKCk7CisKKyRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwgIkRFTEVURSBG Uk9NIHZlc3RhdDsiKTsKKyRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwgIlZBQ1VVTSB2ZXN0 YXQ7Iik7CisKKyR1cGRhdGVkID0gd2FpdF9mb3JfdmFjdXVtX3N0YXRzKAorICAgIHRhYl90 dXBsZXNfZGVsZXRlZCA9PiAkdHVwbGVzX2RlbGV0ZWRfcHJldiwKKyAgICB0YWJfd2FsX3Jl Y29yZHMgPT4gJHdhbF9yZWNvcmRzX3ByZXYsCisgICAgaWR4X3R1cGxlc19kZWxldGVkID0+ ICRpbmRleF90dXBsZXNfZGVsZXRlZF9wcmV2LAorICAgIGlkeF93YWxfcmVjb3JkcyA9PiAk aW5kZXhfd2FsX3JlY29yZHNfcHJldiwKKyk7CisKK29rKCR1cGRhdGVkLCAndmFjdXVtIHN0 YXRzIHVwZGF0ZWQgYWZ0ZXIgdmFjdXVtaW5nIGFsbC1kZWxldGVkIHRhYmxlICh0dXBsZXNf ZGVsZXRlZCBhbmQgd2FsX3JlY29yZHMgYWR2YW5jZWQpJykKKyAgb3IgZGlhZyAiVGltZW91 dCB3YWl0aW5nIGZvciBleHRfdmFjdXVtX3N0YXRpc3RpY3MgdXBkYXRlIGFmdGVyICR0aW1l b3V0IHNlY29uZHMgYWZ0ZXIgdmFjdXVtaW5nIGFsbC1kZWxldGVkIHRhYmxlIjsKKworZmV0 Y2hfdmFjdXVtX3N0YXRzKCk7CisKK29rKCR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMg PiAkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzX3ByZXYsICd0YWJsZSB2bV9uZXdfdmlz aWJsZV9mcm96ZW5fcGFnZXMgaGFzIGluY3JlYXNlZCcpOworb2soJHR1cGxlc19kZWxldGVk ID4gJHR1cGxlc19kZWxldGVkX3ByZXYsICd0YWJsZSB0dXBsZXNfZGVsZXRlZCBoYXMgaW5j cmVhc2VkJyk7CitvaygkcGFnZXNfc2Nhbm5lZCA+ICRwYWdlc19zY2FubmVkX3ByZXYsICd0 YWJsZSBwYWdlc19zY2FubmVkIGhhcyBpbmNyZWFzZWQnKTsKK29rKCRwYWdlc19yZW1vdmVk ID4gJHBhZ2VzX3JlbW92ZWRfcHJldiwgJ3RhYmxlIHBhZ2VzX3JlbW92ZWQgaGFzIGluY3Jl YXNlZCcpOworb2soJHdhbF9yZWNvcmRzID4gJHdhbF9yZWNvcmRzX3ByZXYsICd0YWJsZSB3 YWxfcmVjb3JkcyBoYXMgaW5jcmVhc2VkJyk7Citvaygkd2FsX2J5dGVzID4gJHdhbF9ieXRl c19wcmV2LCAndGFibGUgd2FsX2J5dGVzIGhhcyBpbmNyZWFzZWQnKTsKK29rKCR3YWxfZnBp ID4gMCwgJ3RhYmxlIHdhbF9mcGkgaGFzIGluY3JlYXNlZCcpOworCitvaygkaW5kZXhfcGFn ZXNfZGVsZXRlZCA+ICRpbmRleF9wYWdlc19kZWxldGVkX3ByZXYsICdpbmRleCBwYWdlc19k ZWxldGVkIGhhcyBpbmNyZWFzZWQnKTsKK29rKCRpbmRleF90dXBsZXNfZGVsZXRlZCA+ICRp bmRleF90dXBsZXNfZGVsZXRlZF9wcmV2LCAnaW5kZXggdHVwbGVzX2RlbGV0ZWQgaGFzIGlu Y3JlYXNlZCcpOworb2soJGluZGV4X3dhbF9yZWNvcmRzID4gJGluZGV4X3dhbF9yZWNvcmRz X3ByZXYsICdpbmRleCB3YWxfcmVjb3JkcyBoYXMgaW5jcmVhc2VkJyk7CitvaygkaW5kZXhf d2FsX2J5dGVzID4gJGluZGV4X3dhbF9ieXRlc19wcmV2LCAnaW5kZXggd2FsX2J5dGVzIGhh cyBpbmNyZWFzZWQnKTsKK29rKCRpbmRleF93YWxfZnBpID09ICRpbmRleF93YWxfZnBpX3By ZXYsICdpbmRleCB3YWxfZnBpIHN0YXkgdGhlIHNhbWUnKTsKKworfSBvciBwcmludF92YWN1 dW1fc3RhdHNfb25fZXJyb3IoKTsKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBU ZXN0IDM6IFRlc3QgVkFDVVVNIEZVTEwg4oCUIGl0IHNob3VsZCBub3QgcmVwb3J0IHRvIHRo ZSBzdGF0cyBjb2xsZWN0b3IKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N1YnRlc3Qg J1Rlc3QgMzogVGVzdCBWQUNVVU0gRlVMTCDigJQgaXQgc2hvdWxkIG5vdCByZXBvcnQgdG8g dGhlIHN0YXRzIGNvbGxlY3RvcicgPT4gc3ViCit7CitzYXZlX3ZhY3V1bV9zdGF0cygpOwor Ciskbm9kZS0+c2FmZV9wc3FsKAorICAgICRkYm5hbWUsCisgICAgIklOU0VSVCBJTlRPIHZl c3RhdCBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAkc2l6ZV90YWIpIEFTIGco eCk7CisgICAgIENIRUNLUE9JTlQ7CisgICAgIERFTEVURSBGUk9NIHZlc3RhdDsKKyAgICAg VkFDVVVNIEZVTEwgdmVzdGF0OyIKKyk7CisKK2ZldGNoX3ZhY3V1bV9zdGF0cygpOworCitv aygkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzID09ICR2bV9uZXdfdmlzaWJsZV9mcm96 ZW5fcGFnZXNfcHJldiwgJ3RhYmxlIHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyBzdGF5 IHRoZSBzYW1lJyk7CitvaygkdHVwbGVzX2RlbGV0ZWQgPT0gJHR1cGxlc19kZWxldGVkX3By ZXYsICd0YWJsZSB0dXBsZXNfZGVsZXRlZCBzdGF5IHRoZSBzYW1lJyk7CitvaygkcGFnZXNf c2Nhbm5lZCA9PSAkcGFnZXNfc2Nhbm5lZF9wcmV2LCAndGFibGUgcGFnZXNfc2Nhbm5lZCBz dGF5IHRoZSBzYW1lJyk7CitvaygkcGFnZXNfcmVtb3ZlZCA9PSAkcGFnZXNfcmVtb3ZlZF9w cmV2LCAndGFibGUgcGFnZXNfcmVtb3ZlZCBzdGF5IHRoZSBzYW1lJyk7Citvaygkd2FsX3Jl Y29yZHMgPT0gJHdhbF9yZWNvcmRzX3ByZXYsICd0YWJsZSB3YWxfcmVjb3JkcyBzdGF5IHRo ZSBzYW1lJyk7Citvaygkd2FsX2J5dGVzID09ICR3YWxfYnl0ZXNfcHJldiwgJ3RhYmxlIHdh bF9ieXRlcyBzdGF5IHRoZSBzYW1lJyk7Citvaygkd2FsX2ZwaSA9PSAkd2FsX2ZwaV9wcmV2 LCAndGFibGUgd2FsX2ZwaSBzdGF5IHRoZSBzYW1lJyk7CisKK29rKCRpbmRleF9wYWdlc19k ZWxldGVkID09ICRpbmRleF9wYWdlc19kZWxldGVkX3ByZXYsICdpbmRleCBwYWdlc19kZWxl dGVkIHN0YXkgdGhlIHNhbWUnKTsKK29rKCRpbmRleF90dXBsZXNfZGVsZXRlZCA9PSAkaW5k ZXhfdHVwbGVzX2RlbGV0ZWRfcHJldiwgJ2luZGV4IHR1cGxlc19kZWxldGVkIHN0YXkgdGhl IHNhbWUnKTsKK29rKCRpbmRleF93YWxfcmVjb3JkcyA9PSAkaW5kZXhfd2FsX3JlY29yZHNf cHJldiwgJ2luZGV4IHdhbF9yZWNvcmRzIHN0YXkgdGhlIHNhbWUnKTsKK29rKCRpbmRleF93 YWxfYnl0ZXMgPT0gJGluZGV4X3dhbF9ieXRlc19wcmV2LCAnaW5kZXggd2FsX2J5dGVzIHN0 YXkgdGhlIHNhbWUnKTsKK29rKCRpbmRleF93YWxfZnBpID09ICRpbmRleF93YWxfZnBpX3By ZXYsICdpbmRleCB3YWxfZnBpIHN0YXkgdGhlIHNhbWUnKTsKKworfSBvciBwcmludF92YWN1 dW1fc3RhdHNfb25fZXJyb3IoKTsKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBU ZXN0IDQ6IFVwZGF0ZSB0YWJsZSwgY2hlY2twb2ludCwgYW5kIFZBQ1VVTSB0byBwcm92b2tl IFdBTC9GUEkgYWNjb3VudGluZworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc3VidGVz dCAnVGVzdCA0OiBVcGRhdGUgdGFibGUsIGNoZWNrcG9pbnQsIGFuZCBWQUNVVU0gdG8gcHJv dm9rZSBXQUwvRlBJIGFjY291bnRpbmcnID0+IHN1YgoreworCitzYXZlX3ZhY3V1bV9zdGF0 cygpOworCiskbm9kZS0+c2FmZV9wc3FsKAorICAgICRkYm5hbWUsCisgICAgIklOU0VSVCBJ TlRPIHZlc3RhdCBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAkc2l6ZV90YWIp IEFTIGcoeCk7CisgICAgIENIRUNLUE9JTlQ7CisgICAgIFVQREFURSB2ZXN0YXQgU0VUIHgg PSB4ICsgMTAwMDsKKyAgICAgVkFDVVVNIHZlc3RhdDsiCispOworCiskdXBkYXRlZCA9IHdh aXRfZm9yX3ZhY3V1bV9zdGF0cygKKyAgICB0YWJfdHVwbGVzX2RlbGV0ZWQgPT4gJHR1cGxl c19kZWxldGVkX3ByZXYsCisgICAgdGFiX3dhbF9yZWNvcmRzID0+ICR3YWxfcmVjb3Jkc19w cmV2LAorICAgIGlkeF90dXBsZXNfZGVsZXRlZCA9PiAkaW5kZXhfdHVwbGVzX2RlbGV0ZWRf cHJldiwKKyAgICBpZHhfd2FsX3JlY29yZHMgPT4gJGluZGV4X3dhbF9yZWNvcmRzX3ByZXYs CispOworCitvaygkdXBkYXRlZCwgJ3ZhY3V1bSBzdGF0cyB1cGRhdGVkIGFmdGVyIHVwZGF0 aW5nIHR1cGxlcyBpbiB0aGUgdGFibGUgKHR1cGxlc19kZWxldGVkIGFuZCB3YWxfcmVjb3Jk cyBhZHZhbmNlZCknKQorICBvciBkaWFnICJUaW1lb3V0IHdhaXRpbmcgZm9yIGV4dF92YWN1 dW1fc3RhdGlzdGljcyB1cGRhdGUgYWZ0ZXIgJHRpbWVvdXQgc2Vjb25kcyI7CisKK2ZldGNo X3ZhY3V1bV9zdGF0cygpOworCitvaygkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzID09 ICR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXNfcHJldiwgJ3RhYmxlIHZtX25ld192aXNp YmxlX2Zyb3plbl9wYWdlcyBzdGF5IHRoZSBzYW1lJyk7CitvaygkdHVwbGVzX2RlbGV0ZWQg PiAkdHVwbGVzX2RlbGV0ZWRfcHJldiwgJ3RhYmxlIHR1cGxlc19kZWxldGVkIGhhcyBpbmNy ZWFzZWQnKTsKK29rKCRwYWdlc19zY2FubmVkID4gJHBhZ2VzX3NjYW5uZWRfcHJldiwgJ3Rh YmxlIHBhZ2VzX3NjYW5uZWQgaGFzIGluY3JlYXNlZCcpOworb2soJHBhZ2VzX3JlbW92ZWQg PT0gJHBhZ2VzX3JlbW92ZWRfcHJldiwgJ3RhYmxlIHBhZ2VzX3JlbW92ZWQgc3RheSB0aGUg c2FtZScpOworb2soJHdhbF9yZWNvcmRzID4gJHdhbF9yZWNvcmRzX3ByZXYsICd0YWJsZSB3 YWxfcmVjb3JkcyBoYXMgaW5jcmVhc2VkJyk7Citvaygkd2FsX2J5dGVzID4gJHdhbF9ieXRl c19wcmV2LCAndGFibGUgd2FsX2J5dGVzIGhhcyBpbmNyZWFzZWQnKTsKK29rKCR3YWxfZnBp ID4gJHdhbF9mcGlfcHJldiwgJ3RhYmxlIHdhbF9mcGkgaGFzIGluY3JlYXNlZCcpOworCitv aygkaW5kZXhfcGFnZXNfZGVsZXRlZCA+ICRpbmRleF9wYWdlc19kZWxldGVkX3ByZXYsICdp bmRleCBwYWdlc19kZWxldGVkIGhhcyBpbmNyZWFzZWQnKTsKK29rKCRpbmRleF90dXBsZXNf ZGVsZXRlZCA+ICRpbmRleF90dXBsZXNfZGVsZXRlZF9wcmV2LCAnaW5kZXggdHVwbGVzX2Rl bGV0ZWQgaGFzIGluY3JlYXNlZCcpOworb2soJGluZGV4X3dhbF9yZWNvcmRzID4gJGluZGV4 X3dhbF9yZWNvcmRzX3ByZXYsICdpbmRleCB3YWxfcmVjb3JkcyBoYXMgaW5jcmVhc2VkJyk7 CitvaygkaW5kZXhfd2FsX2J5dGVzID4gJGluZGV4X3dhbF9ieXRlc19wcmV2LCAnaW5kZXgg d2FsX2J5dGVzIGhhcyBpbmNyZWFzZWQnKTsKK29rKCRpbmRleF93YWxfZnBpID4gJGluZGV4 X3dhbF9mcGlfcHJldiwgJ2luZGV4IHdhbF9mcGkgaGFzIGluY3JlYXNlZCcpOworCit9IG9y IHByaW50X3ZhY3V1bV9zdGF0c19vbl9lcnJvcigpOworCisjLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisjIFRlc3QgNTogVXBkYXRlIHRhYmxlLCB0cmFuY2F0ZSBhbmQgdmFjdXVtaW5n CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWJ0ZXN0ICdUZXN0IDU6IFVwZGF0ZSB0 YWJsZSwgdHJhbmNhdGUgYW5kIHZhY3V1bWluZycgPT4gc3ViCit7CisKK3NhdmVfdmFjdXVt X3N0YXRzKCk7CisKKyRub2RlLT5zYWZlX3BzcWwoCisgICAgJGRibmFtZSwKKyAgICAiSU5T RVJUIElOVE8gdmVzdGF0IFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsICRzaXpl X3RhYikgQVMgZyh4KTsKKyAgICAgVVBEQVRFIHZlc3RhdCBTRVQgeCA9IHggKyAxMDAwOyIK Kyk7Ciskbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsICJUUlVOQ0FURSB2ZXN0YXQ7Iik7Cisk bm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsICJDSEVDS1BPSU5UOyIpOworJG5vZGUtPnNhZmVf cHNxbCgkZGJuYW1lLCAiVkFDVVVNIHZlc3RhdDsiKTsKKworJHVwZGF0ZWQgPSB3YWl0X2Zv cl92YWN1dW1fc3RhdHMoCisgICAgdGFiX3dhbF9yZWNvcmRzID0+ICR3YWxfcmVjb3Jkc19w cmV2LAorKTsKKworb2soJHVwZGF0ZWQsICd2YWN1dW0gc3RhdHMgdXBkYXRlZCBhZnRlciB1 cGRhdGluZyB0dXBsZXMgYW5kIHRyYW5jYXRpb24gaW4gdGhlIHRhYmxlICh3YWxfcmVjb3Jk cyBhZHZhbmNlZCknKQorICBvciBkaWFnICJUaW1lb3V0IHdhaXRpbmcgZm9yIGV4dF92YWN1 dW1fc3RhdGlzdGljcyB1cGRhdGUgYWZ0ZXIgJHRpbWVvdXQgc2Vjb25kcyI7CisKK2ZldGNo X3ZhY3V1bV9zdGF0cygpOworCitvaygkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzID09 ICR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXNfcHJldiwgJ3RhYmxlIHZtX25ld192aXNp YmxlX2Zyb3plbl9wYWdlcyBzdGF5IHRoZSBzYW1lJyk7CitvaygkdHVwbGVzX2RlbGV0ZWQg PT0gJHR1cGxlc19kZWxldGVkX3ByZXYsICd0YWJsZSB0dXBsZXNfZGVsZXRlZCBzdGF5IHRo ZSBzYW1lJyk7CitvaygkcGFnZXNfc2Nhbm5lZCA9PSAkcGFnZXNfc2Nhbm5lZF9wcmV2LCAn dGFibGUgcGFnZXNfc2Nhbm5lZCBzdGF5IHRoZSBzYW1lJyk7CitvaygkcGFnZXNfcmVtb3Zl ZCA9PSAkcGFnZXNfcmVtb3ZlZF9wcmV2LCAndGFibGUgcGFnZXNfcmVtb3ZlZCBzdGF5IHRo ZSBzYW1lJyk7Citvaygkd2FsX3JlY29yZHMgPiAkd2FsX3JlY29yZHNfcHJldiwgJ3RhYmxl IHdhbF9yZWNvcmRzIGhhcyBpbmNyZWFzZWQnKTsKK29rKCR3YWxfYnl0ZXMgPiAkd2FsX2J5 dGVzX3ByZXYsICd0YWJsZSB3YWxfYnl0ZXMgaGFzIGluY3JlYXNlZCcpOworb2soJHdhbF9m cGkgPT0gJHdhbF9mcGlfcHJldiwgJ3RhYmxlIHdhbF9mcGkgc3RheSB0aGUgc2FtZScpOwor CitvaygkaW5kZXhfcGFnZXNfZGVsZXRlZCA9PSAkaW5kZXhfcGFnZXNfZGVsZXRlZF9wcmV2 LCAnaW5kZXggcGFnZXNfZGVsZXRlZCBzdGF5IHRoZSBzYW1lJyk7CitvaygkaW5kZXhfdHVw bGVzX2RlbGV0ZWQgPT0gJGluZGV4X3R1cGxlc19kZWxldGVkX3ByZXYsICdpbmRleCB0dXBs ZXNfZGVsZXRlZCBzdGF5IHRoZSBzYW1lJyk7CitvaygkaW5kZXhfd2FsX3JlY29yZHMgPT0g JGluZGV4X3dhbF9yZWNvcmRzX3ByZXYsICdpbmRleCB3YWxfcmVjb3JkcyBzdGF5IHRoZSBz YW1lJyk7CitvaygkaW5kZXhfd2FsX2J5dGVzID09ICRpbmRleF93YWxfYnl0ZXNfcHJldiwg J2luZGV4IHdhbF9ieXRlcyBzdGF5IHRoZSBzYW1lJyk7CitvaygkaW5kZXhfd2FsX2ZwaSA9 PSAkaW5kZXhfd2FsX2ZwaV9wcmV2LCAnaW5kZXggd2FsX2ZwaSBzdGF5IHRoZSBzYW1lJyk7 CisKK30gb3IgcHJpbnRfdmFjdXVtX3N0YXRzX29uX2Vycm9yKCk7CisKKyMtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyMgVGVzdCA2OiBEZWxldGUgYWxsIHR1cGxlcyBmcm9tIHRhYmxl LCB0cmFuY2F0ZSwgYW5kIHZhY3V1bWluZworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor c3VidGVzdCAnVGVzdCA2OiBEZWxldGUgYWxsIHR1cGxlcyBmcm9tIHRhYmxlLCB0cmFuY2F0 ZSwgYW5kIHZhY3V1bWluZycgPT4gc3ViCit7CisKK3NhdmVfdmFjdXVtX3N0YXRzKCk7CisK KyRub2RlLT5zYWZlX3BzcWwoCisgICAgJGRibmFtZSwKKyAgICAiSU5TRVJUIElOVE8gdmVz dGF0IFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsICRzaXplX3RhYikgQVMgZyh4 KTsKKyAgICAgREVMRVRFIEZST00gdmVzdGF0OworICAgICBUUlVOQ0FURSB2ZXN0YXQ7Cisg ICAgIENIRUNLUE9JTlQ7CisgICAgIFZBQ1VVTSB2ZXN0YXQ7IgorKTsKKworJHVwZGF0ZWQg PSB3YWl0X2Zvcl92YWN1dW1fc3RhdHMoCisgICAgdGFiX3dhbF9yZWNvcmRzID0+ICR3YWxf cmVjb3JkcywKKyk7CisKK29rKCR1cGRhdGVkLCAndmFjdXVtIHN0YXRzIHVwZGF0ZWQgYWZ0 ZXIgZGVsZXRpbmcgYWxsIHR1cGxlcyBhbmQgdHJhbmNhdGlvbiBpbiB0aGUgdGFibGUgKHdh bF9yZWNvcmRzIGFkdmFuY2VkKScpCisgIG9yIGRpYWcgIlRpbWVvdXQgd2FpdGluZyBmb3Ig ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIHVwZGF0ZSBhZnRlciAkdGltZW91dCBzZWNvbmRzIjsK KworZmV0Y2hfdmFjdXVtX3N0YXRzKCk7CisKK29rKCR2bV9uZXdfdmlzaWJsZV9mcm96ZW5f cGFnZXMgPT0gJHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlc19wcmV2LCAndGFibGUgdm1f bmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzIHN0YXkgdGhlIHNhbWUnKTsKK29rKCR0dXBsZXNf ZGVsZXRlZCA9PSAkdHVwbGVzX2RlbGV0ZWRfcHJldiwgJ3RhYmxlIHR1cGxlc19kZWxldGVk IHN0YXkgdGhlIHNhbWUnKTsKK29rKCRwYWdlc19zY2FubmVkID09ICRwYWdlc19zY2FubmVk X3ByZXYsICd0YWJsZSBwYWdlc19zY2FubmVkIHN0YXkgdGhlIHNhbWUnKTsKK29rKCRwYWdl c19yZW1vdmVkID09ICRwYWdlc19yZW1vdmVkX3ByZXYsICd0YWJsZSBwYWdlc19yZW1vdmVk IHN0YXkgdGhlIHNhbWUnKTsKK29rKCR3YWxfcmVjb3JkcyA+ICR3YWxfcmVjb3Jkc19wcmV2 LCAndGFibGUgd2FsX3JlY29yZHMgaGFzIGluY3JlYXNlZCcpOworb2soJHdhbF9ieXRlcyA+ ICR3YWxfYnl0ZXNfcHJldiwgJ3RhYmxlIHdhbF9ieXRlcyBoYXMgaW5jcmVhc2VkJyk7Citv aygkd2FsX2ZwaSA9PSAkd2FsX2ZwaV9wcmV2LCAndGFibGUgd2FsX2ZwaSBzdGF5IHRoZSBz YW1lJyk7CisKK29rKCRpbmRleF9wYWdlc19kZWxldGVkID09ICRpbmRleF9wYWdlc19kZWxl dGVkX3ByZXYsICdpbmRleCBwYWdlc19kZWxldGVkIHN0YXkgdGhlIHNhbWUnKTsKK29rKCRp bmRleF90dXBsZXNfZGVsZXRlZCA9PSAkaW5kZXhfdHVwbGVzX2RlbGV0ZWRfcHJldiwgJ2lu ZGV4IHR1cGxlc19kZWxldGVkIHN0YXkgdGhlIHNhbWUnKTsKK29rKCRpbmRleF93YWxfcmVj b3JkcyA9PSAkaW5kZXhfd2FsX3JlY29yZHNfcHJldiwgJ2luZGV4IHdhbF9yZWNvcmRzIHN0 YXkgdGhlIHNhbWUnKTsKK29rKCRpbmRleF93YWxfYnl0ZXMgPT0gJGluZGV4X3dhbF9ieXRl c19wcmV2LCAnaW5kZXggd2FsX2J5dGVzIHN0YXkgdGhlIHNhbWUnKTsKK29rKCRpbmRleF93 YWxfZnBpID09ICRpbmRleF93YWxfZnBpX3ByZXYsICdpbmRleCB3YWxfZnBpIHN0YXkgdGhl IHNhbWUnKTsKKworfSBvciBwcmludF92YWN1dW1fc3RhdHNfb25fZXJyb3IoKTsKKworbXkg JGRib2lkID0gJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAkZGJuYW1lLAorICAgICJTRUxFQ1Qg b2lkIEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2Uo KTsiCispOworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIyBUZXN0IDc6IENoZWNrIGlmIHdlIHJldHVybiBzaW5nbGUgdmFjdXVtIHN0 YXRpc3RpY3MgZm9yIHBhcnRpY3VsYXIgcmVsYXRpb24gZnJvbSB0aGUgY3VycmVudCBkYXRh YmFzZQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK3N1YnRlc3QgJ1Rlc3QgNzogQ2hlY2sgaWYgd2UgcmV0dXJuIHZhY3V1bSBzdGF0aXN0 aWNzIGZyb20gdGhlIGN1cnJlbnQgZGF0YWJhc2UnID0+IHN1Ygoreworc2F2ZV92YWN1dW1f c3RhdHMoKTsKKworbXkgJHJlbG9pZCA9ICRub2RlLT5zYWZlX3BzcWwoCisgICAgJGRibmFt ZSwKKyAgICBxeworICAgICAgICBTRUxFQ1Qgb2lkIEZST00gcGdfY2xhc3MgV0hFUkUgcmVs bmFtZSA9ICd2ZXN0YXQnOworICAgIH0KKyk7CisKKyMgQ2hlY2sgaWYgd2UgY2FuIGdldCB2 YWN1dW0gc3RhdGlzdGljcyBvZiBwYXJ0aWN1bGFyIGhlYXAgcmVsYXRpb24gaW4gdGhlIGN1 cnJlbnQgZGF0YWJhc2UKKyRiYXNlX3N0YXRzID0gJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAk ZGJuYW1lLAorICAgICJTRUxFQ1QgY291bnQoKikgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3Rp Y3MucGdfc3RhdHNfZ2V0X3ZhY3V1bV90YWJsZXMoKFNFTEVDVCBvaWQgRlJPTSBwZ19kYXRh YmFzZSBXSEVSRSBkYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpKSwgJHJlbG9pZCk7Igor KTsKK2lzKCRiYXNlX3N0YXRzLCAxLCAnaGVhcCB2YWN1dW0gc3RhdHMgcmV0dXJuIGZyb20g dGhlIGN1cnJlbnQgcmVsYXRpb24gYW5kIGRhdGFiYXNlIGFzIGV4cGVjdGVkJyk7CisKKyRy ZWxvaWQgPSAkbm9kZS0+c2FmZV9wc3FsKAorICAgICRkYm5hbWUsCisgICAgcXsKKyAgICAg ICAgU0VMRUNUIG9pZCBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAndmVzdGF0X3Br ZXknOworICAgIH0KKyk7CisKKyMgQ2hlY2sgaWYgd2UgY2FuIGdldCB2YWN1dW0gc3RhdGlz dGljcyBvZiBwYXJ0aWN1bGFyIGluZGV4IHJlbGF0aW9uIGluIHRoZSBjdXJyZW50IGRhdGFi YXNlCiskYmFzZV9zdGF0cyA9ICRub2RlLT5zYWZlX3BzcWwoCisgICAgJGRibmFtZSwKKyAg ICAiU0VMRUNUIGNvdW50KCopIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRz X2dldF92YWN1dW1faW5kZXhlcygoU0VMRUNUIG9pZCBGUk9NIHBnX2RhdGFiYXNlIFdIRVJF IGRhdG5hbWUgPSBjdXJyZW50X2RhdGFiYXNlKCkpLCAkcmVsb2lkKTsiCispOworaXMoJGJh c2Vfc3RhdHMsIDEsICdpbmRleCB2YWN1dW0gc3RhdHMgcmV0dXJuIGZyb20gdGhlIGN1cnJl bnQgcmVsYXRpb24gYW5kIGRhdGFiYXNlIGFzIGV4cGVjdGVkJyk7CisKKyMgQ2hlY2sgaWYg d2UgcmV0dXJuIGVtcHR5IHJlc3VsdHMgaWYgdmFjdXVtIHN0YXRpc3RpY3Mgd2l0aCBwYXJ0 aWN1bGFyIG9pZCBkb2Vzbid0IGV4aXN0CiskYmFzZV9zdGF0cyA9ICRub2RlLT5zYWZlX3Bz cWwoCisgICAgJGRibmFtZSwKKyAgICAiU0VMRUNUIGNvdW50KCopIEZST00gZXh0X3ZhY3V1 bV9zdGF0aXN0aWNzLnBnX3N0YXRzX2dldF92YWN1dW1fdGFibGVzKChTRUxFQ1Qgb2lkIEZS T00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSksIDEp OyIKKyk7CitpcygkYmFzZV9zdGF0cywgMCwgJ3RhYmxlIHZhY3V1bSBzdGF0cyByZXR1cm4g bm8gcm93cywgYXMgZXhwZWN0ZWQnKTsKKworJGJhc2Vfc3RhdHMgPSAkbm9kZS0+c2FmZV9w c3FsKAorICAgICRkYm5hbWUsCisgICAgIlNFTEVDVCBjb3VudCgqKSBGUk9NIGV4dF92YWN1 dW1fc3RhdGlzdGljcy5wZ19zdGF0c19nZXRfdmFjdXVtX2luZGV4ZXMoKFNFTEVDVCBvaWQg RlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpKSwg MSk7IgorKTsKK2lzKCRiYXNlX3N0YXRzLCAwLCAnaW5kZXggdmFjdXVtIHN0YXRzIHJldHVy biBubyByb3dzLCBhcyBleHBlY3RlZCcpOworCisjIENoZWNrIGlmIHdlIGNhbiBnZXQgdmFj dXVtIHN0YXRpc3RpY3Mgb2YgYWxsIHJlbGF0aW9ucyBpbiB0aGUgY3VycmVudCBkYXRhYmFz ZQorJGJhc2Vfc3RhdHMgPSAkbm9kZS0+c2FmZV9wc3FsKAorICAgICRkYm5hbWUsCisgICAg IlNFTEVDVCBjb3VudCgqKSA+IDAgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3Rh dHNfdmFjdXVtX3RhYmxlczsiCispOworb2soJGJhc2Vfc3RhdHMgZXEgJ3QnLCAndmFjdXVt IHN0YXRzIHBlciBhbGwgaGVhcCBvYmplY3RzIGF2YWlsYWJsZScpOworCiskYmFzZV9zdGF0 cyA9ICRub2RlLT5zYWZlX3BzcWwoCisgICAgJGRibmFtZSwKKyAgICAiU0VMRUNUIGNvdW50 KCopID4gMCBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1faW5k ZXhlczsiCispOworb2soJGJhc2Vfc3RhdHMgZXEgJ3QnLCAndmFjdXVtIHN0YXRzIHBlciBh bGwgaW5kZXggb2JqZWN0cyBhdmFpbGFibGUnKTsKK307CisKKyMtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyMgVGVzdCA4OiBDaGVjayByZWxhdGlvbi1sZXZlbCB2YWN1dW0gc3RhdGlz dGljcyBmcm9tIGFub3RoZXIgZGF0YWJhc2UKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K3N1YnRlc3QgJ1Rlc3QgODogQ2hlY2sgcmVsYXRpb24tbGV2ZWwgdmFjdXVtIHN0YXRpc3Rp Y3MgZnJvbSBhbm90aGVyIGRhdGFiYXNlJyA9PiBzdWIKK3sKKyRiYXNlX3N0YXRzID0gJG5v ZGUtPnNhZmVfcHNxbCgKKyAgICAncG9zdGdyZXMnLAorICAgICJTRUxFQ1QgY291bnQoKikK KyAgICBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1faW5kZXhl cworICAgIFdIRVJFIGluZGV4cmVsbmFtZSA9ICd2ZXN0YXRfcGtleSc7IgorKTsKK2lzKCRi YXNlX3N0YXRzLCAwLCAnY2hlY2sgdGhlIHByaW50aW5nIGluZGV4IHZhY3V1bSBleHRlbmRl ZCBzdGF0aXN0aWNzIGZyb20gYW5vdGhlciBkYXRhYmFzZSBhcmUgbm90IGF2YWlsYWJsZScp OworCiskYmFzZV9zdGF0cyA9ICRub2RlLT5zYWZlX3BzcWwoCisgICAgJ3Bvc3RncmVzJywK KyAgICAiU0VMRUNUIGNvdW50KCopCisgICAgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3Mu cGdfc3RhdHNfdmFjdXVtX3RhYmxlcworICAgIFdIRVJFIHJlbG5hbWUgPSAndmVzdGF0Jzsi CispOworaXMoJGJhc2Vfc3RhdHMsIDAsICdjaGVjayB0aGUgcHJpbnRpbmcgaGVhcCB2YWN1 dW0gZXh0ZW5kZWQgc3RhdGlzdGljcyBmcm9tIGFub3RoZXIgZGF0YWJhc2UgYXJlIG5vdCBh dmFpbGFibGUnKTsKKworIyBDaGVjayB0aGF0IHJlbGF0aW9ucyBmcm9tIGFub3RoZXIgZGF0 YWJhc2UgYXJlIG5vdCB2aXNpYmxlIGluIHRoZSB2aWV3IHdoZW4gcXVlcnlpbmcgZnJvbSBw b3N0Z3JlcworJGJhc2Vfc3RhdHMgPSAkbm9kZS0+c2FmZV9wc3FsKAorICAgICdwb3N0Z3Jl cycsCisgICAgIlNFTEVDVCBjb3VudCgqKSBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5w Z19zdGF0c192YWN1dW1fdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAndmVzdGF0JzsiCispOwor aXMoJGJhc2Vfc3RhdHMsIDAsICd2YWN1dW0gc3RhdHMgcGVyIGFsbCB0YWJsZXMgb2JqZWN0 cyBmcm9tIGFub3RoZXIgZGF0YWJhc2UgYXJlIG5vdCBhdmFpbGFibGUgYXMgZXhwZWN0ZWQn KTsKKworJGJhc2Vfc3RhdHMgPSAkbm9kZS0+c2FmZV9wc3FsKAorICAgICdwb3N0Z3Jlcycs CisgICAgIlNFTEVDVCBjb3VudCgqKSBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19z dGF0c192YWN1dW1faW5kZXhlcyBXSEVSRSBpbmRleHJlbG5hbWUgPSAndmVzdGF0X3BrZXkn OyIKKyk7CitpcygkYmFzZV9zdGF0cywgMCwgJ3ZhY3V1bSBzdGF0cyBwZXIgYWxsIGluZGV4 IG9iamVjdHMgZnJvbSBhbm90aGVyIGRhdGFiYXNlIGFyZSBub3QgYXZhaWxhYmxlIGFzIGV4 cGVjdGVkJyk7Cit9OworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg VGVzdCA5OiBDaGVjayBkYXRhYmFzZS1sZXZlbCB2YWN1dW0gc3RhdGlzdGljcyBmcm9tIHRo ZSBjdXJyZW50IGFuZCBhbm90aGVyIGRhdGFiYXNlCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK3N1YnRlc3QgJ1Rlc3QgOTogQ2hlY2sgZGF0YWJhc2UtbGV2ZWwgdmFj dXVtIHN0YXRpc3RpY3MgZnJvbSB0aGUgY3VycmVudCBhbmQgYW5vdGhlciBkYXRhYmFzZScg PT4gc3ViCit7CitteSAkZGJfYmxrX2hpdCA9IDA7CitteSAkdG90YWxfYmxrc19kaXJ0aWVk ID0gMDsKK215ICR0b3RhbF9ibGtzX3dyaXR0ZW4gPSAwOworbXkgJHdhbF9yZWNvcmRzID0g MDsKK215ICR3YWxfZnBpID0gMDsKK215ICR3YWxfYnl0ZXMgPSAwOworJGJhc2Vfc3RhdHMg PSAkbm9kZS0+c2FmZV9wc3FsKAorICAgICRkYm5hbWUsCisgICAgIlNFTEVDVCBkYl9ibGtz X2hpdCwgZGJfYmxrc19kaXJ0aWVkLAorICAgICAgICAgICAgZGJfYmxrc193cml0dGVuLCBk Yl93YWxfcmVjb3JkcywKKyAgICAgICAgICAgIGRiX3dhbF9mcGksIGRiX3dhbF9ieXRlcwor ICAgICBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fZGF0YWJh c2UsIHBnX2RhdGFiYXNlCisgICAgIFdIRVJFIHBnX2RhdGFiYXNlLmRhdG5hbWUgPSAnJGRi bmFtZScKKyAgICAgICAgICAgIEFORCBwZ19kYXRhYmFzZS5vaWQgPSBleHRfdmFjdXVtX3N0 YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX2RhdGFiYXNlLmRib2lkOyIKKyk7CiskYmFzZV9z dGF0cyA9fiBzL1xzKlx8XHMqLyAvZzsgICAjIHRyYW5zZm9ybSAiIHwgIiBpbnRvIHNwYWNl CisgICAgKCRkYl9ibGtfaGl0LCAkdG90YWxfYmxrc19kaXJ0aWVkLCAkdG90YWxfYmxrc193 cml0dGVuLCAkd2FsX3JlY29yZHMsICR3YWxfZnBpLCAkd2FsX2J5dGVzKQorICAgICAgICA9 IHNwbGl0IC9ccysvLCAkYmFzZV9zdGF0czsKKworb2soJGRiX2Jsa19oaXQgPiAwLCAnZGJf Ymxrc19oaXQgaXMgbW9yZSB0aGFuIDAnKTsKK29rKCR0b3RhbF9ibGtzX2RpcnRpZWQgPiAw LCAndG90YWxfYmxrc19kaXJ0aWVkIGlzIG1vcmUgdGhhbiAwJyk7CitvaygkdG90YWxfYmxr c193cml0dGVuID4gMCwgJ3RvdGFsX2Jsa3Nfd3JpdHRlbiBpcyBtb3JlIHRoYW4gMCcpOwor b2soJHdhbF9yZWNvcmRzID4gMCwgJ3dhbF9yZWNvcmRzIGlzIG1vcmUgdGhhbiAwJyk7Citv aygkd2FsX2ZwaSA+IDAsICd3YWxfZnBpIGlzIG1vcmUgdGhhbiAwJyk7Citvaygkd2FsX2J5 dGVzID4gMCwgJ3dhbF9ieXRlcyBpcyBtb3JlIHRoYW4gMCcpOworCiskYmFzZV9zdGF0cyA9 ICRub2RlLT5zYWZlX3BzcWwoCisgICAgJ3Bvc3RncmVzJywKKyAgICAiU0VMRUNUIGNvdW50 KCopID0gMQorICAgICBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1 dW1fZGF0YWJhc2UsIHBnX2RhdGFiYXNlCisgICAgIFdIRVJFIHBnX2RhdGFiYXNlLmRhdG5h bWUgPSAnJGRibmFtZScKKyAgICAgICAgICAgIEFORCBwZ19kYXRhYmFzZS5vaWQgPSBleHRf dmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX2RhdGFiYXNlLmRib2lkOyIKKyk7 CitvaygkYmFzZV9zdGF0cyBlcSAndCcsICdjaGVjayBkYXRhYmFzZS1sZXZlbCB2YWN1dW0g c3RhdHMgZnJvbSBhbm90aGVyIGRhdGFiYXNlIGFyZSBhdmFpbGFibGUnKTsKK307CisKKyMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdCAxMDogQ2xlYW51cCBjaGVja3M6IGVu c3VyZSBmdW5jdGlvbnMgcmV0dXJuIGVtcHR5IHNldHMgZm9yIE9JRCA9IDAKKyMtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK3N1YnRlc3QgJ1Rlc3QgMTA6IENsZWFudXAgY2hlY2tzOiBl bnN1cmUgZnVuY3Rpb25zIHJldHVybiBlbXB0eSBzZXRzIGZvciBPSUQgPSAwJyA9PiBzdWIK K3sKK215ICRkYm9pZCA9ICRub2RlLT5zYWZlX3BzcWwoCisgICAgJGRibmFtZSwKKyAgICAi U0VMRUNUIG9pZCBGUk9NIHBnX2RhdGFiYXNlIFdIRVJFIGRhdG5hbWUgPSBjdXJyZW50X2Rh dGFiYXNlKCk7IgorKTsKKworIyBWYWN1dW0gc3RhdGlzdGljcyBmb3IgaW52YWxpZCByZWxh dGlvbiBPSUQgcmV0dXJuIGVtcHR5CiskYmFzZV9zdGF0cyA9ICRub2RlLT5zYWZlX3BzcWwo CisgICAgJGRibmFtZSwKKyAgICBxeworICAgICAgIFNFTEVDVCBDT1VOVCgqKQorICAgICAg ICAgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfZ2V0X3ZhY3V1bV90YWJs ZXMoKFNFTEVDVCBvaWQgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gY3VycmVu dF9kYXRhYmFzZSgpKSwgMCk7CisgICAgfQorKTsKK2lzKCRiYXNlX3N0YXRzLCAwLCAndmFj dXVtIHN0YXRzIHBlciBoZWFwIGZyb20gaW52YWxpZCByZWxhdGlvbiBPSUQgcmV0dXJuIGVt cHR5IGFzIGV4cGVjdGVkJyk7CisKKyRiYXNlX3N0YXRzID0gJG5vZGUtPnNhZmVfcHNxbCgK KyAgICAkZGJuYW1lLAorICAgIHF7CisgICAgICAgU0VMRUNUIENPVU5UKCopCisgICAgICAg ICBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c19nZXRfdmFjdXVtX2luZGV4 ZXMoKFNFTEVDVCBvaWQgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gY3VycmVu dF9kYXRhYmFzZSgpKSwgMCk7CisgICAgfQorKTsKK2lzKCRiYXNlX3N0YXRzLCAwLCAndmFj dXVtIHN0YXRzIHBlciBpbmRleCBmcm9tIGludmFsaWQgcmVsYXRpb24gT0lEIHJldHVybiBl bXB0eSBhcyBleHBlY3RlZCcpOworCiskbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsIHF7Cisg ICAgRFJPUCBUQUJMRSB2ZXN0YXQgQ0FTQ0FERTsKKyAgICBWQUNVVU07Cit9KTsKKworIyBD aGVjayB0aGF0IHdlIGRvbid0IHByaW50IHZhY3V1bSBzdGF0aXN0aWNzIGZvciBkZWxldGVk IG9iamVjdHMKKyRiYXNlX3N0YXRzID0gJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAkZGJuYW1l LAorICAgIHF7CisgICAgICAgIFNFTEVDVCBDT1VOVCgqKQorICAgICAgICAgIEZST00gZXh0 X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV90YWJsZXMgV0hFUkUgcmVsaWQg PSAwOworICAgIH0KKyk7CitpcygkYmFzZV9zdGF0cywgMCwgJ2V4dF92YWN1dW1fc3RhdGlz dGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIGNvcnJlY3RseSByZXR1cm5zIG5vIHJvd3Mg Zm9yIE9JRCA9IDAnKTsKKworJGJhc2Vfc3RhdHMgPSAkbm9kZS0+c2FmZV9wc3FsKAorICAg ICRkYm5hbWUsCisgICAgcXsKKyAgICAgICAgU0VMRUNUIENPVU5UKCopCisgICAgICAgICAg RlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX2luZGV4ZXMgV0hF UkUgaW5kZXhyZWxpZCA9IDA7CisgICAgfQorKTsKK2lzKCRiYXNlX3N0YXRzLCAwLCAnZXh0 X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9pbmRleGVzIGNvcnJlY3RseSBy ZXR1cm5zIG5vIHJvd3MgZm9yIE9JRCA9IDAnKTsKKworbXkgJHJlbG9pZCA9ICRub2RlLT5z YWZlX3BzcWwoCisgICAgJGRibmFtZSwKKyAgICBxeworICAgICAgICBTRUxFQ1Qgb2lkIEZS T00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdwZ19zaGRlcGVuZCc7CisgICAgfQorKTsK KworJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1lLCAiVkFDVVVNIHBnX3NoZGVwZW5kOyIpOwor CisjIENoZWNrIGlmIHdlIGNhbiBnZXQgdmFjdXVtIHN0YXRpc3RpY3MgZm9yIGNsdXN0ZXIg cmVsYXRpb25zIChzaGFyZWQgY2F0YWxvZ3MpCiskYmFzZV9zdGF0cyA9ICRub2RlLT5zYWZl X3BzcWwoCisgICAgJGRibmFtZSwKKyAgICBxcXsKKyAgICAgICAgU0VMRUNUIGNvdW50KCop ID4gMAorICAgICAgICBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c19nZXRf dmFjdXVtX3RhYmxlcygoU0VMRUNUIG9pZCBGUk9NIHBnX2RhdGFiYXNlIFdIRVJFIGRhdG5h bWUgPSBjdXJyZW50X2RhdGFiYXNlKCkpLCAkcmVsb2lkKTsKKyAgICB9CispOworCitpcygk YmFzZV9zdGF0cywgJ3QnLCAndmFjdXVtIHN0YXRzIGZvciBjb21tb24gaGVhcCBvYmplY3Rz IGF2YWlsYWJsZScpOworCitteSAkaW5kb2lkID0gJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAk ZGJuYW1lLAorICAgIHF7CisgICAgICAgIFNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBXSEVS RSByZWxuYW1lID0gJ3BnX3NoZGVwZW5kX3JlZmVyZW5jZV9pbmRleCc7CisgICAgfQorKTsK KworJGJhc2Vfc3RhdHMgPSAkbm9kZS0+c2FmZV9wc3FsKAorICAgICRkYm5hbWUsCisgICAg cXF7CisgICAgICAgIFNFTEVDVCBjb3VudCgqKSA+IDAKKyAgICAgICAgRlJPTSBleHRfdmFj dXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfZ2V0X3ZhY3V1bV9pbmRleGVzKChTRUxFQ1Qgb2lk IEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSks ICRpbmRvaWQpOworICAgIH0KKyk7CisKK2lzKCRiYXNlX3N0YXRzLCAndCcsICd2YWN1dW0g c3RhdHMgZm9yIGNvbW1vbiBpbmRleCBvYmplY3RzIGF2YWlsYWJsZScpOworCiskbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgIkRST1AgREFUQUJBU0UgJGRibmFtZTsKKyAg ICAgVkFDVVVNOyIKKyk7CisKKyRiYXNlX3N0YXRzID0gJG5vZGUtPnNhZmVfcHNxbCgKKyAg ICAncG9zdGdyZXMnLAorICAgIHF7CisgICAgICAgU0VMRUNUIGNvdW50KCopID0gMAorICAg ICAgICBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c19nZXRfdmFjdXVtX2Rh dGFiYXNlKDApOworICAgIH0KKyk7CitpcygkYmFzZV9zdGF0cywgJ3QnLCAndmFjdXVtIHN0 YXRzIGZyb20gZGF0YWJhc2Ugd2l0aCBpbnZhbGlkIGRhdGFiYXNlIE9JRCByZXR1cm4gZW1w dHksIGFzIGV4cGVjdGVkJyk7Cit9OworCiskbm9kZS0+c3RvcDsKKworZG9uZV90ZXN0aW5n KCk7CmRpZmYgLS1naXQgYS9jb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy90LzA1M192 YWN1dW1fZXh0ZW5kaW5nX2ZyZWV6ZV90ZXN0LnBsIGIvY29udHJpYi9leHRfdmFjdXVtX3N0 YXRpc3RpY3MvdC8wNTNfdmFjdXVtX2V4dGVuZGluZ19mcmVlemVfdGVzdC5wbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGY4ZjAyNWM2M2UKLS0tIC9kZXYv bnVsbAorKysgYi9jb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy90LzA1M192YWN1dW1f ZXh0ZW5kaW5nX2ZyZWV6ZV90ZXN0LnBsCkBAIC0wLDAgKzEsMjg1IEBACisjIENvcHlyaWdo dCAoYykgMjAyNSBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorIworIyBU ZXN0IGN1bXVsYXRpdmUgdmFjdXVtIHN0YXRzIHVzaW5nIGV4dF92YWN1dW1fc3RhdGlzdGlj cyBleHRlbnNpb24gKFRBUCkKKyMKKyMgSW4gc2hvcnQsIHRoaXMgdGVzdCB2YWxpZGF0ZXMg dGhlIGNvcnJlY3RuZXNzIGFuZCBzdGFiaWxpdHkgb2YgY3VtdWxhdGl2ZQorIyB2YWN1dW0g c3RhdGlzdGljcyBhY2NvdW50aW5nIGFyb3VuZCBmcmVlemluZywgdmlzaWJpbGl0eSwgYW5k IHJldmlzaW9uCisjIHRyYWNraW5nIGFjcm9zcyBtdWx0aXBsZSBWQUNVVU1zIGFuZCBiYWNr ZW5kIG9wZXJhdGlvbnMuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsK K3VzZSBUZXN0OjpNb3JlOworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3Qg Y2x1c3RlciBzZXR1cAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitteSAkbm9kZSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnZXh0X3N0YXRfdmFjdXVtJyk7Cisk bm9kZS0+aW5pdDsKKworIyBDb25maWd1cmUgdGhlIHNlcnZlcjogcHJlbG9hZCBleHRlbnNp b24gYW5kIGFnZ3Jlc3NpdmUgZnJlZXppbmcgYmVoYXZpb3IKKyRub2RlLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywgcXsKKyAgICBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMg PSAnZXh0X3ZhY3V1bV9zdGF0aXN0aWNzJworICAgIGxvZ19taW5fbWVzc2FnZXMgPSBub3Rp Y2UKKyAgICB2YWN1dW1fZnJlZXplX21pbl9hZ2UgPSAwCisgICAgdmFjdXVtX2ZyZWV6ZV90 YWJsZV9hZ2UgPSAwCisgICAgdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWluX2FnZSA9IDAK KyAgICB2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2UgPSAwCisgICAgdmFjdXVt X21heF9lYWdlcl9mcmVlemVfZmFpbHVyZV9yYXRlID0gMS4wCisgICAgdmFjdXVtX2ZhaWxz YWZlX2FnZSA9IDAKKyAgICB2YWN1dW1fbXVsdGl4YWN0X2ZhaWxzYWZlX2FnZSA9IDAKKyAg ICB0cmFja19mdW5jdGlvbnMgPSAnYWxsJworfSk7CisKKyRub2RlLT5zdGFydCgpOworCisj LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERhdGFiYXNlIGNyZWF0aW9uIGFuZCBpbml0 aWFsaXphdGlvbgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiskbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsIHF7CisgICAgQ1JFQVRFIERBVEFCQVNFIHN0YXRpc3RpY192YWN1 dW1fZGF0YWJhc2VfcmVncmVzc2lvbjsKK30pOworCisjIE1haW4gdGVzdCBkYXRhYmFzZSBu YW1lCitteSAkZGJuYW1lID0gJ3N0YXRpc3RpY192YWN1dW1fZGF0YWJhc2VfcmVncmVzc2lv bic7CisKKyMgQ3JlYXRlIGV4dGVuc2lvbgorJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1lLCBx eworICAgIENSRUFURSBFWFRFTlNJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzOworfSk7CisK KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGltaW5nIHBhcmFtZXRlcnMgZm9yIHBv bGxpbmcgbG9vcHMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbXkgJHRpbWVvdXQg ICAgPSAzMDsgICAgICMgb3ZlcmFsbCB3YWl0IHRpbWVvdXQgaW4gc2Vjb25kcworbXkgJGlu dGVydmFsICAgPSAwLjAxNTsgICMgcG9sbCBpbnRlcnZhbCBpbiBzZWNvbmRzICgxNSBtcykK K215ICRzdGFydF90aW1lID0gdGltZSgpOworbXkgJHVwZGF0ZWQgICAgPSAwOworCisjLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIHdhaXRfZm9yX3ZhY3V1bV9zdGF0cworIworIyBQ b2xscyBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX3RhYmxlcyB1bnRp bCB0aGUgbmFtZWQgY29sdW1ucyBleGNlZWQgdGhlCisjIHByb3ZpZGVkIGJhc2VsaW5lIHZh bHVlcyBvciB1bnRpbCB0aW1lb3V0LgorIworIyAgIHRhYl9hbGxfZnJvemVuX3BhZ2VzX2Nv dW50ICA9PiAwICAgIyBiYXNlbGluZSBudW1lcmljCisjICAgdGFiX2FsbF92aXNpYmxlX3Bh Z2VzX2NvdW50ID0+IDAgICAjIGJhc2VsaW5lIG51bWVyaWMKKyMgICBydW5fdmFjdXVtICAg ICAgICAgICAgICAgICAgPT4gMCAgICMgaWYgdHJ1ZSwgcnVuIHZhY3V1bSBiZWZvcmUgcG9s bGluZworIworIyBSZXR1cm5zOiAxIGlmIHRoZSBjb25kaXRpb24gaXMgbWV0IGJlZm9yZSB0 aW1lb3V0LCAwIG90aGVyd2lzZS4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N1YiB3 YWl0X2Zvcl92YWN1dW1fc3RhdHMgeworICAgIG15ICglYXJncykgPSBAXzsKKworICAgIG15 ICR0YWJfYWxsX2Zyb3plbl9wYWdlc19jb3VudCAgPSAkYXJnc3t0YWJfYWxsX2Zyb3plbl9w YWdlc19jb3VudH0gfHwgMDsKKyAgICBteSAkdGFiX2FsbF92aXNpYmxlX3BhZ2VzX2NvdW50 ID0gJGFyZ3N7dGFiX2FsbF92aXNpYmxlX3BhZ2VzX2NvdW50fSB8fCAwOworICAgIG15ICRy dW5fdmFjdXVtICAgICAgICAgICAgICAgICAgPSAkYXJnc3tydW5fdmFjdXVtfSA/IDEgOiAw OworICAgIG15ICRyZXN1bHRfcXVlcnk7CisKKyAgICBteSAkc3RhcnQgPSB0aW1lKCk7Cisg ICAgbXkgJHNxbDsKKworICAgICMgUnVuIFZBQ1VVTSBvbmNlIGlmIHJlcXVlc3RlZCwgYmVm b3JlIHBvbGxpbmcKKyAgICBpZiAoJHJ1bl92YWN1dW0pIHsKKyAgICAgICAgJG5vZGUtPnNh ZmVfcHNxbCgkZGJuYW1lLCAnVkFDVVVNIChGUkVFWkUsIFZFUkJPU0UpIHZlc3RhdCcpOwor ICAgIH0KKworICAgIHdoaWxlICgodGltZSgpIC0gJHN0YXJ0KSA8ICR0aW1lb3V0KSB7CisK KyAgICAgICAgaWYgKCRydW5fdmFjdXVtKSB7CisgICAgICAgICAgICAkc3FsID0gIgorICAg ICAgICAgICAgU0VMRUNUICh2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgPiAkdGFiX2Fs bF9mcm96ZW5fcGFnZXNfY291bnQpCisgICAgICAgICAgICAgICBGUk9NIGV4dF92YWN1dW1f c3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzCisgICAgICAgICAgICAgIFdIRVJF IHJlbG5hbWUgPSAndmVzdGF0JyI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg ICAgICAgICAkc3FsID0gIgorICAgICAgICAgICAgU0VMRUNUIChwZ19zdGF0X2dldF9mcm96 ZW5fcGFnZV9tYXJrc19jbGVhcmVkKGMub2lkKSA+ICR0YWJfYWxsX2Zyb3plbl9wYWdlc19j b3VudCBBTkQKKyAgICAgICAgICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3Zpc2libGVfcGFn ZV9tYXJrc19jbGVhcmVkKGMub2lkKSA+ICR0YWJfYWxsX3Zpc2libGVfcGFnZXNfY291bnQp CisgICAgICAgICAgICAgICBGUk9NIHBnX2NsYXNzIGMKKyAgICAgICAgICAgICAgV0hFUkUg cmVsbmFtZSA9ICd2ZXN0YXQnIjsKKyAgICAgICAgfQorCisgICAgICAgICRyZXN1bHRfcXVl cnkgPSAkbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsICRzcWwpOworCisgICAgICAgIHJldHVy biAxIGlmIChkZWZpbmVkICRyZXN1bHRfcXVlcnkgJiYgJHJlc3VsdF9xdWVyeSBlcSAndCcp OworCisgICAgICAgIHNsZWVwKCRpbnRlcnZhbCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7 Cit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVmFyaWFibGVzIHRvIGhvbGQg dmFjdXVtIHN0YXRpc3RpY3Mgc25hcHNob3RzIGZvciBjb21wYXJpc29ucworIy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorCitteSAkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzID0g MDsKKworbXkgJHJldl9hbGxfZnJvemVuX3BhZ2VzID0gMDsKK215ICRyZXZfYWxsX3Zpc2li bGVfcGFnZXMgPSAwOworCitteSAkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzX3ByZXYg PSAwOworCitteSAkcmV2X2FsbF9mcm96ZW5fcGFnZXNfcHJldiA9IDA7CitteSAkcmV2X2Fs bF92aXNpYmxlX3BhZ2VzX3ByZXYgPSAwOworCitteSAkcmVzOworCisjLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisjIGZldGNoX3ZhY3V1bV9zdGF0cworIworIyBMb2FkcyBjdXJyZW50 IHZhbHVlcyBvZiB0aGUgcmVsZXZhbnQgdmFjdXVtIGNvdW50ZXJzIGZvciB0aGUgdGVzdCB0 YWJsZQorIyBpbnRvIHRoZSBwYWNrYWdlLWxldmVsIHZhcmlhYmxlcyBhYm92ZSBzbyB0ZXN0 cyBjYW4gY29tcGFyZSBsYXRlci4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3Vi IGZldGNoX3ZhY3V1bV9zdGF0cyB7CisgICAgJHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdl cyA9ICRub2RlLT5zYWZlX3BzcWwoCisgICAgICAgICRkYm5hbWUsCisgICAgICAgICJTRUxF Q1QgdnQudm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzCisgICAgICAgICAgIEZST00gZXh0 X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV90YWJsZXMgdnQKKyAgICAgICAg ICBXSEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdCc7IgorICAgICk7CisKKyAgICAkcmV2X2Fs bF9mcm96ZW5fcGFnZXMgPSAkbm9kZS0+c2FmZV9wc3FsKAorICAgICAgICAkZGJuYW1lLAor ICAgICAgICAiU0VMRUNUIHBnX3N0YXRfZ2V0X2Zyb3plbl9wYWdlX21hcmtzX2NsZWFyZWQo Yy5vaWQpCisgICAgICAgICAgIEZST00gcGdfY2xhc3MgYworICAgICAgICAgIFdIRVJFIGMu cmVsbmFtZSA9ICd2ZXN0YXQnOyIKKyAgICApOworCisgICAgJHJldl9hbGxfdmlzaWJsZV9w YWdlcyA9ICRub2RlLT5zYWZlX3BzcWwoCisgICAgICAgICRkYm5hbWUsCisgICAgICAgICJT RUxFQ1QgcGdfc3RhdF9nZXRfdmlzaWJsZV9wYWdlX21hcmtzX2NsZWFyZWQoYy5vaWQpCisg ICAgICAgICAgIEZST00gcGdfY2xhc3MgYworICAgICAgICAgIFdIRVJFIGMucmVsbmFtZSA9 ICd2ZXN0YXQnOyIKKyAgICApOworfQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj IHNhdmVfdmFjdXVtX3N0YXRzCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWIgc2F2 ZV92YWN1dW1fc3RhdHMgeworICAgICR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXNfcHJl diA9ICR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXM7CisgICAgJHJldl9hbGxfZnJvemVu X3BhZ2VzX3ByZXYgPSAkcmV2X2FsbF9mcm96ZW5fcGFnZXM7CisgICAgJHJldl9hbGxfdmlz aWJsZV9wYWdlc19wcmV2ID0gJHJldl9hbGxfdmlzaWJsZV9wYWdlczsKK30KKworIy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIyBwcmludF92YWN1dW1fc3RhdHNfb25fZXJyb3IKKyMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N1YiBwcmludF92YWN1dW1fc3RhdHNfb25fZXJy b3IgeworICAgIGRpYWcoCisgICAgICAgICAgICAiU3RhdGlzdGljcyBpbiB0aGUgZmFpbGVk IHRlc3RcbiIgLgorICAgICAgICAgICAgIlRhYmxlIHN0YXRpc3RpY3M6XG4iIC4KKyAgICAg ICAgICAgICIgIEJlZm9yZSB0ZXN0OlxuIiAuCisgICAgICAgICAgICAiICAgIHZtX25ld192 aXNpYmxlX2Zyb3plbl9wYWdlcyA9ICR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXNfcHJl dlxuIiAuCisgICAgICAgICAgICAiICAgIHJldl9hbGxfZnJvemVuX3BhZ2VzID0gJHJldl9h bGxfZnJvemVuX3BhZ2VzX3ByZXZcbiIgLgorICAgICAgICAgICAgIiAgICByZXZfYWxsX3Zp c2libGVfcGFnZXMgPSAkcmV2X2FsbF92aXNpYmxlX3BhZ2VzX3ByZXZcbiIgLgorICAgICAg ICAgICAgIiAgQWZ0ZXIgdGVzdDpcbiIgLgorICAgICAgICAgICAgIiAgICB2bV9uZXdfdmlz aWJsZV9mcm96ZW5fcGFnZXMgPSAkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzXG4iIC4K KyAgICAgICAgICAgICIgICAgcmV2X2FsbF9mcm96ZW5fcGFnZXMgPSAkcmV2X2FsbF9mcm96 ZW5fcGFnZXNcbiIgLgorICAgICAgICAgICAgIiAgICByZXZfYWxsX3Zpc2libGVfcGFnZXMg PSAkcmV2X2FsbF92aXNpYmxlX3BhZ2VzXG4iCisgICAgKTsKK307CisKKyMtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyMgVGVzdCAxOiBDcmVhdGUgdGVzdCB0YWJsZSwgcG9wdWxhdGUg aXQgYW5kIHJ1biBhbiBpbml0aWFsIHZhY3V1bSB0byBmb3JjZSBmcmVlemluZworIy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdWJ0ZXN0ICdUZXN0IDE6IENyZWF0ZSB0ZXN0IHRh YmxlLCBwb3B1bGF0ZSBpdCBhbmQgcnVuIGFuIGluaXRpYWwgdmFjdXVtIHRvIGZvcmNlIGZy ZWV6aW5nJyA9PiBzdWIKK3sKKyRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwgcXsKKyAgICBD UkVBVEUgVEFCTEUgdmVzdGF0ICh4IGludCkKKyAgICAgICAgV0lUSCAoYXV0b3ZhY3V1bV9l bmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gMTApOworICAgIElOU0VSVCBJTlRPIHZlc3Rh dCBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyBnKHgpOworICAg IEFOQUxZWkUgdmVzdGF0OworICAgIFZBQ1VVTSAoRlJFRVpFLCBWRVJCT1NFKSB2ZXN0YXQ7 Cit9KTsKKworJHVwZGF0ZWQgPSB3YWl0X2Zvcl92YWN1dW1fc3RhdHMoCisgICAgdGFiX2Fs bF9mcm96ZW5fcGFnZXNfY291bnQgID0+IDAsCisgICAgdGFiX2FsbF92aXNpYmxlX3BhZ2Vz X2NvdW50ID0+IDAsCisgICAgcnVuX3ZhY3V1bSAgICAgICAgICAgICAgICAgID0+IDEsCisp OworCitvaygkdXBkYXRlZCwKKyAgICd2YWN1dW0gc3RhdHMgdXBkYXRlZCBhZnRlciB2YWN1 dW1pbmcgdGhlIHRhYmxlICh2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgYWR2YW5jZWQp JykKKyAgb3IgZGlhZyAiVGltZW91dCB3YWl0aW5nIGZvciBleHRfdmFjdXVtX3N0YXRpc3Rp Y3MgdG8gdXBkYXRlIGFmdGVyICR0aW1lb3V0IHNlY29uZHMgZHVyaW5nIHZhY3V1bSI7CisK K2ZldGNoX3ZhY3V1bV9zdGF0cygpOworCitvaygkdm1fbmV3X3Zpc2libGVfZnJvemVuX3Bh Z2VzID4gJHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlc19wcmV2LCAndGFibGUgdm1fbmV3 X3Zpc2libGVfZnJvemVuX3BhZ2VzIGhhcyBpbmNyZWFzZWQnKTsKK29rKCRyZXZfYWxsX2Zy b3plbl9wYWdlcyA9PSAkcmV2X2FsbF9mcm96ZW5fcGFnZXNfcHJldiwgJ3RhYmxlIHJldl9h bGxfZnJvemVuX3BhZ2VzIHN0YXkgdGhlIHNhbWUnKTsKK29rKCRyZXZfYWxsX3Zpc2libGVf cGFnZXMgPT0gJHJldl9hbGxfdmlzaWJsZV9wYWdlc19wcmV2LCAndGFibGUgcmV2X2FsbF92 aXNpYmxlX3BhZ2VzIHN0YXkgdGhlIHNhbWUnKTsKK30gb3IgcHJpbnRfdmFjdXVtX3N0YXRz X29uX2Vycm9yKCk7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdCAyOiBU cmlnZ2VyIGJhY2tlbmQgdXBkYXRlcworIyBCYWNrZW5kIGFjdGl2aXR5IHNob3VsZCByZXNl dCBwZXItcGFnZSB2aXNpYmlsaXR5L2ZyZWV6ZSBtYXJrcyBhbmQgaW5jcmVtZW50IHJldmlz aW9uIGNvdW50ZXJzCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWJ0ZXN0ICdUZXN0 IDI6IFRyaWdnZXIgYmFja2VuZCB1cGRhdGVzJyA9PiBzdWIKK3sKK3NhdmVfdmFjdXVtX3N0 YXRzKCk7CisKKyRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwgcXsKKyAgICBVUERBVEUgdmVz dGF0IFNFVCB4ID0geCArIDEwMDE7Cit9KTsKKworJHVwZGF0ZWQgPSB3YWl0X2Zvcl92YWN1 dW1fc3RhdHMoCisgICAgdGFiX2FsbF9mcm96ZW5fcGFnZXNfY291bnQgID0+IDAsCisgICAg dGFiX2FsbF92aXNpYmxlX3BhZ2VzX2NvdW50ID0+IDAsCisgICAgcnVuX3ZhY3V1bSAgICAg ICAgICAgICAgICAgID0+IDAsCispOworCitvaygkdXBkYXRlZCwKKyAgICd2YWN1dW0gc3Rh dHMgdXBkYXRlZCBhZnRlciBiYWNrZW5kIHR1cGxlIHVwZGF0ZXMgKHJldl9hbGxfZnJvemVu X3BhZ2VzIGFuZCByZXZfYWxsX3Zpc2libGVfcGFnZXMgYWR2YW5jZWQpJykKKyAgb3IgZGlh ZyAiVGltZW91dCB3YWl0aW5nIGZvciB2YWN1dW0gc3RhdHMgdXBkYXRlIGFmdGVyICR0aW1l b3V0IHNlY29uZHMiOworCitmZXRjaF92YWN1dW1fc3RhdHMoKTsKKworb2soJHZtX25ld192 aXNpYmxlX2Zyb3plbl9wYWdlcyA9PSAkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzX3By ZXYsICd0YWJsZSB2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgc3RheSB0aGUgc2FtZScp Oworb2soJHJldl9hbGxfZnJvemVuX3BhZ2VzID4gJHJldl9hbGxfZnJvemVuX3BhZ2VzX3By ZXYsICd0YWJsZSByZXZfYWxsX2Zyb3plbl9wYWdlcyBoYXMgaW5jcmVhc2VkJyk7Citvaygk cmV2X2FsbF92aXNpYmxlX3BhZ2VzID4gJHJldl9hbGxfdmlzaWJsZV9wYWdlc19wcmV2LCAn dGFibGUgcmV2X2FsbF92aXNpYmxlX3BhZ2VzIGhhcyBpbmNyZWFzZWQnKTsKK30gb3IgcHJp bnRfdmFjdXVtX3N0YXRzX29uX2Vycm9yKCk7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyMgVGVzdCAzOiBGb3JjZSBhbm90aGVyIHZhY3V1bSBhZnRlciBiYWNrZW5kIG1vZGlm aWNhdGlvbnMgLSB2YWN1dW0gc2hvdWxkIHJlc3RvcmUgZnJlZXplL3Zpc2liaWxpdHkKKyMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N1YnRlc3QgJ1Rlc3QgMzogRm9yY2UgYW5vdGhl ciB2YWN1dW0gYWZ0ZXIgYmFja2VuZCBtb2RpZmljYXRpb25zIC0gdmFjdXVtIHNob3VsZCBy ZXN0b3JlIGZyZWV6ZS92aXNpYmlsaXR5JyA9PiBzdWIKK3sKK3NhdmVfdmFjdXVtX3N0YXRz KCk7CisKKyRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwgcXsgVkFDVVVNIHZlc3RhdDsgfSk7 CisKKyR1cGRhdGVkID0gd2FpdF9mb3JfdmFjdXVtX3N0YXRzKAorICAgIHRhYl9hbGxfZnJv emVuX3BhZ2VzX2NvdW50ICA9PiAkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzLAorICAg IHRhYl9hbGxfdmlzaWJsZV9wYWdlc19jb3VudCA9PiAwLAorICAgIHJ1bl92YWN1dW0gICAg ICAgICAgICAgICAgICA9PiAxLAorKTsKKworb2soJHVwZGF0ZWQsCisgICAndmFjdXVtIHN0 YXRzIHVwZGF0ZWQgYWZ0ZXIgdmFjdXVtaW5nIHRoZSBhbGwtdXBkYXRlZCB0YWJsZSAodm1f bmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzIGFkdmFuY2VkKScpCisgIG9yIGRpYWcgIlRpbWVv dXQgd2FpdGluZyBmb3IgZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIHRvIHVwZGF0ZSBhZnRlciAk dGltZW91dCBzZWNvbmRzIGR1cmluZyB2YWN1dW0iOworCitmZXRjaF92YWN1dW1fc3RhdHMo KTsKKworb2soJHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyA+ICR2bV9uZXdfdmlzaWJs ZV9mcm96ZW5fcGFnZXNfcHJldiwgJ3RhYmxlIHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdl cyBoYXMgaW5jcmVhc2VkJyk7CitvaygkcmV2X2FsbF9mcm96ZW5fcGFnZXMgPT0gJHJldl9h bGxfZnJvemVuX3BhZ2VzX3ByZXYsICd0YWJsZSByZXZfYWxsX2Zyb3plbl9wYWdlcyBzdGF5 IHRoZSBzYW1lJyk7CitvaygkcmV2X2FsbF92aXNpYmxlX3BhZ2VzID09ICRyZXZfYWxsX3Zp c2libGVfcGFnZXNfcHJldiwgJ3RhYmxlIHJldl9hbGxfdmlzaWJsZV9wYWdlcyBzdGF5IHRo ZSBzYW1lJyk7Cit9IG9yIHByaW50X3ZhY3V1bV9zdGF0c19vbl9lcnJvcigpOworCisjLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENsZWFudXAKKyMtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworICAgIERST1AgREFU QUJBU0Ugc3RhdGlzdGljX3ZhY3V1bV9kYXRhYmFzZV9yZWdyZXNzaW9uOworfSk7CisKKyRu b2RlLT5zdG9wOworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9jb250cmliL2V4dF92 YWN1dW1fc3RhdGlzdGljcy90LzA1NF92YWN1dW1fZXh0ZW5kaW5nX2d1Y3NfdGVzdC5wbCBi L2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3QvMDU0X3ZhY3V1bV9leHRlbmRpbmdf Z3Vjc190ZXN0LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5h MTk1MjQ5ODQyYgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0 aXN0aWNzL3QvMDU0X3ZhY3V1bV9leHRlbmRpbmdfZ3Vjc190ZXN0LnBsCkBAIC0wLDAgKzEs Mjc5IEBACisjIENvcHlyaWdodCAoYykgMjAyNSBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorIworIyBUZXN0IEdVQyBwYXJhbWV0ZXJzIGZvciBleHRfdmFjdXVtX3N0 YXRpc3RpY3MgZXh0ZW5zaW9uOgorIyAgIHZhY3V1bV9zdGF0aXN0aWNzLmVuYWJsZWQKKyMg ICB2YWN1dW1fc3RhdGlzdGljcy5vYmplY3RfdHlwZXMgKGFsbCwgZGF0YWJhc2VzLCByZWxh dGlvbnMpCisjICAgdmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfcmVsYXRpb25zIChhbGwsIHN5 c3RlbSwgdXNlcikKKyMgICB2YWN1dW1fc3RhdGlzdGljcy50cmFja19kYXRhYmFzZXNfZnJv bV9saXN0LCBhZGQvcmVtb3ZlX3RyYWNrX2RhdGFiYXNlCisjICAgYWRkL3JlbW92ZV90cmFj a19kYXRhYmFzZSwgYWRkL3JlbW92ZV90cmFja19yZWxhdGlvbiwgdHJhY2tfKl9mcm9tX2xp c3QKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOworIAordXNlIFRlc3Q6 Ok1vcmU7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdCBjbHVzdGVyIHNl dHVwCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK215ICRub2RlID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdleHRfc3RhdF92YWN1dW1fZ3VjcycpOworJG5vZGUt PmluaXQ7CisKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgcXsKKyAg ICBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgPSAnZXh0X3ZhY3V1bV9zdGF0aXN0aWNzJwor ICAgIGxvZ19taW5fbWVzc2FnZXMgPSBub3RpY2UKK30pOworCiskbm9kZS0+c3RhcnQ7CisK KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGF0YWJhc2UgY3JlYXRpb24gYW5kIGlu aXRpYWxpemF0aW9uCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXsKKyAgICBDUkVBVEUgREFUQUJBU0Ugc3RhdGlzdGljX3Zh Y3V1bV9ndWNzOworfSk7CisKK215ICRkYm5hbWUgPSAnc3RhdGlzdGljX3ZhY3V1bV9ndWNz JzsKKworJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1lLCBxeworICAgIENSRUFURSBFWFRFTlNJ T04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzOworICAgIENSRUFURSBUQUJMRSBndWNfdGVzdCAo eCBpbnQgUFJJTUFSWSBLRVkpCisgICAgICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9 IG9mZik7CisgICAgSU5TRVJUIElOVE8gZ3VjX3Rlc3QgU0VMRUNUIHggRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMTAwKSBBUyBnKHgpOworICAgIEFOQUxZWkUgZ3VjX3Rlc3Q7Cit9KTsK KworIyBHZXQgT0lEcyBmb3IgZmlsdGVyaW5nIHRlc3RzCitteSAkZGJvaWQgPSAkbm9kZS0+ c2FmZV9wc3FsKCRkYm5hbWUsIHF7U0VMRUNUIG9pZCBGUk9NIHBnX2RhdGFiYXNlIFdIRVJF IGRhdG5hbWUgPSBjdXJyZW50X2RhdGFiYXNlKCl9KTsKK215ICRyZWxvaWQgPSAkbm9kZS0+ c2FmZV9wc3FsKCRkYm5hbWUsIHF7U0VMRUNUIG9pZCBGUk9NIHBnX2NsYXNzIFdIRVJFIHJl bG5hbWUgPSAnZ3VjX3Rlc3QnfSk7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg UmVzZXQgc3RhdHMgYW5kIHJ1biB2YWN1dW0gKGFsbCBpbiBvbmUgc2Vzc2lvbiBzbyBHVUNz IHBlcnNpc3QpCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YiByZXNldF9hbmRf dmFjdXVtIHsKKyAgICBteSAoJGRiLCAkdGFibGUsICRvcHRzKSA9IEBfOworICAgICR0YWJs ZSB8fD0gJ2d1Y190ZXN0JzsKKyAgICBteSAkZ3VjcyA9ICRvcHRzICYmICRvcHRzLT57Z3Vj c30gPyAkb3B0cy0+e2d1Y3N9IDogW107CisgICAgbXkgJG1vZGlmeSA9ICRvcHRzICYmICRv cHRzLT57bW9kaWZ5fTsKKyAgICBteSAkZXh0cmEgPSAkb3B0cyAmJiAkb3B0cy0+e2V4dHJh X3ZhY3V1bX0gPyAkb3B0cy0+e2V4dHJhX3ZhY3V1bX0gOiBbXTsKKyAgICAkZXh0cmEgPSBb JGV4dHJhXSB1bmxlc3MgcmVmICRleHRyYSBlcSAnQVJSQVknOworICAgIG15ICRzcWwgPSBq b2luKCJcbiIsIChtYXAgeyAiU0VUICRfOyIgfSBAJGd1Y3MpLAorICAgICAgICAiU0VMRUNU IGV4dF92YWN1dW1fc3RhdGlzdGljcy52YWN1dW1fc3RhdGlzdGljc19yZXNldCgpOyIsCisg ICAgICAgICRtb2RpZnkgPyAoCisgICAgICAgICAgICAiVFJVTkNBVEUgJHRhYmxlOyIsCisg ICAgICAgICAgICAiSU5TRVJUIElOVE8gJHRhYmxlIFNFTEVDVCB4IEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMCkgQVMgZyh4KTsiLAorICAgICAgICAgICAgIkRFTEVURSBGUk9NICR0 YWJsZTsiLAorICAgICAgICApIDogKCksCisgICAgICAgICJWQUNVVU0gJHRhYmxlOyIsCisg ICAgICAgIChtYXAgeyAiVkFDVVVNICRfOyIgfSBAJGV4dHJhKSwKKyAgICAgICAgIyBNYWtl IHBlbmRpbmcgc3RhdHMgdmlzaWJsZSB0byBzdWJzZXF1ZW50IHNlc3Npb25zIHdpdGhvdXQg c2xlZXBpbmcuCisgICAgICAgICJTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 Iik7CisgICAgJG5vZGUtPnNhZmVfcHNxbCgkZGIsICRzcWwpOworfQorCisjLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisjIFRlc3QgMTogdmFjdXVtX3N0YXRpc3RpY3MuZW5hYmxlZAor Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc3VidGVzdCAndmFjdXVtX3N0YXRpc3RpY3Mu ZW5hYmxlZCcgPT4gc3ViIHsKKyAgICByZXNldF9hbmRfdmFjdXVtKCRkYm5hbWUpOworCisg ICAgIyBEZWZhdWx0OiBlbmFibGVkIC0gc2hvdWxkIGhhdmUgc3RhdHMKKyAgICBteSAkY291 bnQgPSAkbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsCisgICAgICAgICJTRUxFQ1QgQ09VTlQo KikgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX3RhYmxlcyBX SEVSRSByZWxuYW1lID0gJ2d1Y190ZXN0JyIpOworICAgIG9rKCRjb3VudCA+IDAsICdzdGF0 cyBjb2xsZWN0ZWQgd2hlbiBlbmFibGVkJyk7CisKKyAgICAjIERpc2FibGUsIHJlc2V0IGFu ZCB2YWN1dW0gaW4gc2FtZSBzZXNzaW9uLiAgQXNzZXJ0IG5vdCBvbmx5IHRoYXQgdGhlCisg ICAgIyByb3cgY291bnQgaXMgemVybywgYnV0IHRoYXQgdGhlIHNwZWNpZmljIGNvdW50ZXJz IHJlbWFpbiB6ZXJvOiBhIHN0cmF5CisgICAgIyByb3cgd2l0aCB6ZXJvIGNvdW50ZXJzIHdv dWxkIG90aGVyd2lzZSBwYXNzIGEgYmFyZSBDT1VOVCgqKT0wIGNoZWNrLgorICAgIHJlc2V0 X2FuZF92YWN1dW0oJGRibmFtZSwgJ2d1Y190ZXN0JywgeyBndWNzID0+IFsndmFjdXVtX3N0 YXRpc3RpY3MuZW5hYmxlZCA9IG9mZiddIH0pOworCisgICAgJGNvdW50ID0gJG5vZGUtPnNh ZmVfcHNxbCgkZGJuYW1lLAorICAgICAgICAiU0VMRUNUIENPVU5UKCopIEZST00gZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV90YWJsZXMgV0hFUkUgcmVsbmFtZSA9 ICdndWNfdGVzdCciKTsKKyAgICBpcygkY291bnQsIDAsICdubyByb3dzIHdoZW4gZGlzYWJs ZWQnKTsKKworICAgIG15ICRzdW1zID0gJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1lLCBxewor ICAgICAgICBTRUxFQ1QgQ09BTEVTQ0UoU1VNKHRvdGFsX2Jsa3NfcmVhZCksIDApCisgICAg ICAgICAgICAgKyBDT0FMRVNDRShTVU0odG90YWxfYmxrc19kaXJ0aWVkKSwgMCkKKyAgICAg ICAgICAgICArIENPQUxFU0NFKFNVTShwYWdlc19zY2FubmVkKSwgMCkKKyAgICAgICAgICBG Uk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzCisgICAg ICAgICBXSEVSRSByZWxuYW1lID0gJ2d1Y190ZXN0JworICAgIH0pOworICAgIGlzKCRzdW1z LCAnMCcsICdubyBjb3VudGVycyBhY2N1bXVsYXRlZCB3aGVuIGRpc2FibGVkJyk7Cit9Owor CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3QgMjogdmFjdXVtX3N0YXRpc3Rp Y3Mub2JqZWN0X3R5cGVzIChkYXRhYmFzZXMgb25seSwgcmVsYXRpb25zIG9ubHkpCisjLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWJ0ZXN0ICd2YWN1dW1fc3RhdGlzdGljcy5vYmpl Y3RfdHlwZXMnID0+IHN1YiB7CisgICAgIyB0cmFjayBvbmx5IGRiIHN0YXRzLCBubyByZWxh dGlvbiBzdGF0cworICAgIHJlc2V0X2FuZF92YWN1dW0oJGRibmFtZSwgJ2d1Y190ZXN0Jywg eworICAgICAgICBndWNzID0+IFsidmFjdXVtX3N0YXRpc3RpY3Mub2JqZWN0X3R5cGVzID0g J2RhdGFiYXNlcyciXSwKKyAgICAgICAgbW9kaWZ5ID0+IDEsCisgICAgfSk7CisgICAgbXkg JGRiX2hhc19kYnMgPSAkbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsCisgICAgICAgICJTRUxF Q1QgQ09BTEVTQ0UoU1VNKGRiX2Jsa3NfaGl0KSwgMCkgRlJPTSBleHRfdmFjdXVtX3N0YXRp c3RpY3MucGdfc3RhdHNfdmFjdXVtX2RhdGFiYXNlIFdIRVJFIGRib2lkID0gJGRib2lkIik7 CisgICAgbXkgJHJlbF9kYnMgPSAkbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsCisgICAgICAg ICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNf dmFjdXVtX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2d1Y190ZXN0JyIpOworICAgIGlzKCRy ZWxfZGJzLCAwLCAndHJhY2s9ZGF0YWJhc2VzOiBubyByZWxhdGlvbiBzdGF0cycpOworICAg IG9rKCRkYl9oYXNfZGJzID4gMCwgJ3RyYWNrPWRhdGFiYXNlczogZGF0YWJhc2Ugc3RhdHMg Y29sbGVjdGVkJyk7CisKKyAgICAjIHRyYWNrIG9ubHkgcmVsYXRpb24gc3RhdHMsIG5vIGRi IHN0YXRzCisgICAgcmVzZXRfYW5kX3ZhY3V1bSgkZGJuYW1lLCAnZ3VjX3Rlc3QnLCB7Cisg ICAgICAgIGd1Y3MgPT4gWyJ2YWN1dW1fc3RhdGlzdGljcy5vYmplY3RfdHlwZXMgPSAncmVs YXRpb25zJyJdLAorICAgICAgICBtb2RpZnkgPT4gMSwKKyAgICB9KTsKKyAgICBteSAkZGJf aGFzX3JlbHMgPSAkbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsCisgICAgICAgICJTRUxFQ1Qg Q09BTEVTQ0UoU1VNKGRiX2Jsa3NfaGl0KSwgMCkgPiAwIEZST00gZXh0X3ZhY3V1bV9zdGF0 aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9kYXRhYmFzZSBXSEVSRSBkYm9pZCA9ICRkYm9pZCIp OworICAgIG15ICRyZWxfcmVscyA9ICRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwKKyAgICAg ICAgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0 c192YWN1dW1fdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAnZ3VjX3Rlc3QnIik7CisgICAgb2so JHJlbF9yZWxzID4gMCwgJ3RyYWNrPXJlbGF0aW9uczogcmVsYXRpb24gc3RhdHMgY29sbGVj dGVkJyk7CisgICAgaXMoJGRiX2hhc19yZWxzLCAnZicsICd0cmFjaz1yZWxhdGlvbnM6IG5v IGRhdGFiYXNlIHN0YXRzJyk7Cit9OworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj IFRlc3QgMzogdmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfcmVsYXRpb25zIChzeXN0ZW0sIHVz ZXIpCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWJ0ZXN0ICd2YWN1dW1fc3RhdGlz dGljcy50cmFja19yZWxhdGlvbnMnID0+IHN1YiB7CisgICAgIyB0cmFja19yZWxhdGlvbnMg LSBvbmx5IHVzZXIgdGFibGVzCisgICAgcmVzZXRfYW5kX3ZhY3V1bSgkZGJuYW1lLCAnZ3Vj X3Rlc3QnLCB7CisgICAgICAgIGd1Y3MgPT4gWworICAgICAgICAgICAgInZhY3V1bV9zdGF0 aXN0aWNzLm9iamVjdF90eXBlcyA9ICdyZWxhdGlvbnMnIiwKKyAgICAgICAgICAgICJ2YWN1 dW1fc3RhdGlzdGljcy50cmFja19yZWxhdGlvbnMgPSAndXNlciciLAorICAgICAgICBdLAor ICAgICAgICBleHRyYV92YWN1dW0gPT4gWydwZ19jbGFzcyddLAorICAgIH0pOworCisgICAg bXkgJHVzZXJfcmVsID0gJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1lLAorICAgICAgICAiU0VM RUNUIENPVU5UKCopIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1 bV90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdndWNfdGVzdCciKTsKKyAgICBteSAkc3lzX3Jl bCA9ICRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwKKyAgICAgICAgIlNFTEVDVCBDT1VOVCgq KSBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIFdI RVJFIHJlbG5hbWUgPSAncGdfY2xhc3MnIik7CisgICAgb2soJHVzZXJfcmVsID4gMCwgJ3Ry YWNrX3JlbGF0aW9ucz11c2VyOiB1c2VyIHRhYmxlIHN0YXRzIGNvbGxlY3RlZCcpOworICAg IGlzKCRzeXNfcmVsLCAwLCAndHJhY2tfcmVsYXRpb25zPXVzZXI6IHN5c3RlbSB0YWJsZSBz dGF0cyBub3QgY29sbGVjdGVkJyk7CisKKyAgICAjIHRyYWNrX3JlbGF0aW9ucyAtIG9ubHkg c3lzdGVtIHRhYmxlcworICAgIHJlc2V0X2FuZF92YWN1dW0oJGRibmFtZSwgJ2d1Y190ZXN0 JywgeworICAgICAgICBndWNzID0+IFsKKyAgICAgICAgICAgICJ2YWN1dW1fc3RhdGlzdGlj cy5vYmplY3RfdHlwZXMgPSAncmVsYXRpb25zJyIsCisgICAgICAgICAgICAidmFjdXVtX3N0 YXRpc3RpY3MudHJhY2tfcmVsYXRpb25zID0gJ3N5c3RlbSciLAorICAgICAgICBdLAorICAg ICAgICBleHRyYV92YWN1dW0gPT4gWydwZ19jbGFzcyddLAorICAgIH0pOworCisgICAgJHVz ZXJfcmVsID0gJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1lLAorICAgICAgICAiU0VMRUNUIENP VU5UKCopIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV90YWJs ZXMgV0hFUkUgcmVsbmFtZSA9ICdndWNfdGVzdCciKTsKKyAgICAkc3lzX3JlbCA9ICRub2Rl LT5zYWZlX3BzcWwoJGRibmFtZSwKKyAgICAgICAgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGV4 dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIFdIRVJFIHJlbG5h bWUgPSAncGdfY2xhc3MnIik7CisgICAgaXMoJHVzZXJfcmVsLCAwLCAndHJhY2tfcmVsYXRp b25zPXN5c3RlbTogdXNlciB0YWJsZSBzdGF0cyBub3QgY29sbGVjdGVkJyk7CisgICAgb2so JHN5c19yZWwgPiAwLCAndHJhY2tfcmVsYXRpb25zPXN5c3RlbTogc3lzdGVtIHRhYmxlIHN0 YXRzIGNvbGxlY3RlZCcpOworfTsKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBU ZXN0IDQ6IHRyYWNrX2RhdGFiYXNlcyAodmlhIGFkZC9yZW1vdmVfdHJhY2tfZGF0YWJhc2Up CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWJ0ZXN0ICd0cmFja19kYXRhYmFzZXMg KGFkZC9yZW1vdmUpJyA9PiBzdWIgeworICAgICRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwg IlNFTEVDVCBleHRfdmFjdXVtX3N0YXRpc3RpY3MucmVtb3ZlX3RyYWNrX2RhdGFiYXNlKCRk Ym9pZCkiKTsKKyAgICAkbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsICJTRUxFQ1QgZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzLmFkZF90cmFja19kYXRhYmFzZSgkZGJvaWQpIik7CisgICAgcmVz ZXRfYW5kX3ZhY3V1bSgkZGJuYW1lLCAnZ3VjX3Rlc3QnLCB7IGd1Y3MgPT4gWyJ2YWN1dW1f c3RhdGlzdGljcy50cmFja19kYXRhYmFzZXNfZnJvbV9saXN0ID0gb24iXSwgbW9kaWZ5ID0+ IDEgfSk7CisKKyAgICBteSAkcmVsX2NvdW50ID0gJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1l LAorICAgICAgICAiU0VMRUNUIENPVU5UKCopIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNz LnBnX3N0YXRzX3ZhY3V1bV90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdndWNfdGVzdCciKTsK KyAgICBvaygkcmVsX2NvdW50ID4gMCwgJ2RiIGluIGxpc3Q6IHN0YXRzIGNvbGxlY3RlZCcp OworCisgICAgJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1lLCAiU0VMRUNUIGV4dF92YWN1dW1f c3RhdGlzdGljcy5yZW1vdmVfdHJhY2tfZGF0YWJhc2UoJGRib2lkKSIpOworICAgIHJlc2V0 X2FuZF92YWN1dW0oJGRibmFtZSwgJ2d1Y190ZXN0JywgeyBndWNzID0+IFsidmFjdXVtX3N0 YXRpc3RpY3MudHJhY2tfZGF0YWJhc2VzX2Zyb21fbGlzdCA9IG9uIl0sIG1vZGlmeSA9PiAx IH0pOworCisgICAgJHJlbF9jb3VudCA9ICRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwKKyAg ICAgICAgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19z dGF0c192YWN1dW1fdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAnZ3VjX3Rlc3QnIik7CisgICAg aXMoJHJlbF9jb3VudCwgMCwgJ2RiIHJlbW92ZWQgZnJvbSBsaXN0OiBubyBzdGF0cycpOwor fTsKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0IDU6IHRyYWNrX3JlbGF0 aW9ucyAodmlhIGFkZC9yZW1vdmVfdHJhY2tfcmVsYXRpb24pCisjLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitzdWJ0ZXN0ICd0cmFja19yZWxhdGlvbnMgKGFkZC9yZW1vdmUpJyA9PiBz dWIgeworICAgICRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwgIlNFTEVDVCBleHRfdmFjdXVt X3N0YXRpc3RpY3MucmVtb3ZlX3RyYWNrX3JlbGF0aW9uKCRkYm9pZCwgJHJlbG9pZCkiKTsK KyAgICAkbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsICJTRUxFQ1QgZXh0X3ZhY3V1bV9zdGF0 aXN0aWNzLmFkZF90cmFja19yZWxhdGlvbigkZGJvaWQsICRyZWxvaWQpIik7CisgICAgcmVz ZXRfYW5kX3ZhY3V1bSgkZGJuYW1lLCAnZ3VjX3Rlc3QnLCB7IGd1Y3MgPT4gWyJ2YWN1dW1f c3RhdGlzdGljcy50cmFja19yZWxhdGlvbnNfZnJvbV9saXN0ID0gb24iXSwgbW9kaWZ5ID0+ IDEgfSk7CisKKyAgICBteSAkcmVsX2NvdW50ID0gJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1l LAorICAgICAgICAiU0VMRUNUIENPVU5UKCopIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNz LnBnX3N0YXRzX3ZhY3V1bV90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdndWNfdGVzdCciKTsK KyAgICBvaygkcmVsX2NvdW50ID4gMCwgJ3RhYmxlIGluIGxpc3Q6IHN0YXRzIGNvbGxlY3Rl ZCcpOworCisgICAgJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1lLCAiU0VMRUNUIGV4dF92YWN1 dW1fc3RhdGlzdGljcy5yZW1vdmVfdHJhY2tfcmVsYXRpb24oJGRib2lkLCAkcmVsb2lkKSIp OworICAgIHJlc2V0X2FuZF92YWN1dW0oJGRibmFtZSwgJ2d1Y190ZXN0JywgeyBndWNzID0+ IFsidmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfcmVsYXRpb25zX2Zyb21fbGlzdCA9IG9uIl0s IG1vZGlmeSA9PiAxIH0pOworCisgICAgJHJlbF9jb3VudCA9ICRub2RlLT5zYWZlX3BzcWwo JGRibmFtZSwKKyAgICAgICAgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGV4dF92YWN1dW1fc3Rh dGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAnZ3VjX3Rl c3QnIik7CisgICAgaXMoJHJlbF9jb3VudCwgMCwgJ3RhYmxlIHJlbW92ZWQgZnJvbSBsaXN0 OiBubyBzdGF0cycpOworfTsKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0 IDY6IHZhY3V1bV9zdGF0aXN0aWNzLmNvbGxlY3QgLSBwZXItY2F0ZWdvcnkgZ2F0aW5nCisj CisjIFdpdGggY29sbGVjdD0nd2FsJyBvbmx5IHdhbF8qIGNvdW50ZXJzIG11c3QgYWR2YW5j ZTsgYnVmZmVyLCB0aW1pbmcsIGFuZAorIyBnZW5lcmFsIGNhdGVnb3JpZXMgbXVzdCBzdGF5 IGF0IHplcm8uICBXaXRoIGNvbGxlY3Q9J2J1ZmZlcnMnIHRoZSBpbnZlcnNlCisjIGhvbGRz LiAgVW5rbm93biB0b2tlbnMgbXVzdCBiZSByZWplY3RlZCBieSB0aGUgY2hlY2staG9vay4K KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N1YnRlc3QgJ3ZhY3V1bV9zdGF0aXN0aWNz LmNvbGxlY3QnID0+IHN1YiB7CisgICAgIyB3YWwtb25seTogV0FMIGNvdW50ZXJzIHNob3Vs ZCBhY2N1bXVsYXRlLCBidWZmZXJzL3RpbWluZy9nZW5lcmFsIHNob3VsZCBub3QuCisgICAg cmVzZXRfYW5kX3ZhY3V1bSgkZGJuYW1lLCAnZ3VjX3Rlc3QnLCB7CisgICAgICAgIGd1Y3Mg PT4gWyJ2YWN1dW1fc3RhdGlzdGljcy5jb2xsZWN0ID0gJ3dhbCciXSwKKyAgICAgICAgbW9k aWZ5ID0+IDEsCisgICAgfSk7CisKKyAgICBteSAkd2FsID0gJG5vZGUtPnNhZmVfcHNxbCgk ZGJuYW1lLCBxeworICAgICAgICBTRUxFQ1QgQ09BTEVTQ0UoU1VNKHdhbF9yZWNvcmRzKSwg MCkgPiAwCisgICAgICAgICAgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNf dmFjdXVtX3RhYmxlcworICAgICAgICAgV0hFUkUgcmVsbmFtZSA9ICdndWNfdGVzdCcKKyAg ICB9KTsKKyAgICBpcygkd2FsLCAndCcsICJjb2xsZWN0PSd3YWwnOiB3YWxfcmVjb3JkcyBh Y2N1bXVsYXRlZCIpOworCisgICAgbXkgJG90aGVyID0gJG5vZGUtPnNhZmVfcHNxbCgkZGJu YW1lLCBxeworICAgICAgICBTRUxFQ1QgQ09BTEVTQ0UoU1VNKHRvdGFsX2Jsa3NfcmVhZCks IDApCisgICAgICAgICAgICAgKyBDT0FMRVNDRShTVU0odG90YWxfYmxrc19oaXQpLCAwKQor ICAgICAgICAgICAgICsgQ09BTEVTQ0UoU1VNKHRvdGFsX3RpbWUpLCAwKQorICAgICAgICAg ICAgICsgQ09BTEVTQ0UoU1VNKHR1cGxlc19kZWxldGVkKSwgMCkKKyAgICAgICAgICAgICAr IENPQUxFU0NFKFNVTShwYWdlc19zY2FubmVkKSwgMCkKKyAgICAgICAgICBGUk9NIGV4dF92 YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzCisgICAgICAgICBXSEVS RSByZWxuYW1lID0gJ2d1Y190ZXN0JworICAgIH0pOworICAgIGlzKCRvdGhlciwgJzAnLAor ICAgICAgICAiY29sbGVjdD0nd2FsJzogYnVmZmVyL3RpbWluZy9nZW5lcmFsIGNvdW50ZXJz IG5vdCBhY2N1bXVsYXRlZCIpOworCisgICAgIyBidWZmZXJzLW9ubHk6IGJ1ZmZlciBjb3Vu dGVycyBzaG91bGQgYWR2YW5jZSwgV0FMIHNob3VsZCBub3QuCisgICAgcmVzZXRfYW5kX3Zh Y3V1bSgkZGJuYW1lLCAnZ3VjX3Rlc3QnLCB7CisgICAgICAgIGd1Y3MgPT4gWyJ2YWN1dW1f c3RhdGlzdGljcy5jb2xsZWN0ID0gJ2J1ZmZlcnMnIl0sCisgICAgICAgIG1vZGlmeSA9PiAx LAorICAgIH0pOworCisgICAgbXkgJGJ1ZiA9ICRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwg cXsKKyAgICAgICAgU0VMRUNUIENPQUxFU0NFKFNVTSh0b3RhbF9ibGtzX3JlYWQpLCAwKQor ICAgICAgICAgICAgICsgQ09BTEVTQ0UoU1VNKHRvdGFsX2Jsa3NfaGl0KSwgMCkgPiAwCisg ICAgICAgICAgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX3Rh YmxlcworICAgICAgICAgV0hFUkUgcmVsbmFtZSA9ICdndWNfdGVzdCcKKyAgICB9KTsKKyAg ICBpcygkYnVmLCAndCcsICJjb2xsZWN0PSdidWZmZXJzJzogYnVmZmVyIGNvdW50ZXJzIGFj Y3VtdWxhdGVkIik7CisKKyAgICBteSAkd2FsX29mZiA9ICRub2RlLT5zYWZlX3BzcWwoJGRi bmFtZSwgcXsKKyAgICAgICAgU0VMRUNUIENPQUxFU0NFKFNVTSh3YWxfcmVjb3JkcyksIDAp CisgICAgICAgICAgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVt X3RhYmxlcworICAgICAgICAgV0hFUkUgcmVsbmFtZSA9ICdndWNfdGVzdCcKKyAgICB9KTsK KyAgICBpcygkd2FsX29mZiwgJzAnLAorICAgICAgICAiY29sbGVjdD0nYnVmZmVycyc6IFdB TCBjb3VudGVycyBub3QgYWNjdW11bGF0ZWQiKTsKKworICAgICMgVW5rbm93biBjYXRlZ29y eSBtdXN0IGJlIHJlamVjdGVkIGJ5IHRoZSBjaGVjay1ob29rLgorICAgIG15ICgkcmV0LCAk c3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlLT5wc3FsKCRkYm5hbWUsCisgICAgICAgICJTRVQg dmFjdXVtX3N0YXRpc3RpY3MuY29sbGVjdCA9ICdub3BlJyIpOworICAgIGlzbnQoJHJldCwg MCwgImNvbGxlY3Q9J25vcGUnOiByZWplY3RlZCBieSBjaGVjay1ob29rIik7CisgICAgbGlr ZSgkc3RkZXJyLCBxci9VbnJlY29nbml6ZWQgY2F0ZWdvcnkgIm5vcGUiLywKKyAgICAgICAg ImNvbGxlY3Q9J25vcGUnOiBlcnJkZXRhaWwgbmFtZXMgdGhlIG9mZmVuZGluZyB0b2tlbiIp OworfTsKKworJG5vZGUtPnN0b3A7CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEv Y29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvdmFjdXVtX3N0YXRpc3RpY3MuYyBiL2Nv bnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3ZhY3V1bV9zdGF0aXN0aWNzLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc1ZDFiZDJjZjA2Ci0tLSAvZGV2 L251bGwKKysrIGIvY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvdmFjdXVtX3N0YXRp c3RpY3MuYwpAQCAtMCwwICsxLDEzODcgQEAKKy8qCisgKiBleHRfdmFjdXVtX3N0YXRpc3Rp Y3MgLSBFeHRlbmRlZCB2YWN1dW0gc3RhdGlzdGljcyBmb3IgUG9zdGdyZVNRTAorICoKKyAq IFRoaXMgbW9kdWxlIGNvbGxlY3RzIGRldGFpbGVkIHZhY3V1bSBzdGF0aXN0aWNzIChJL08s IFdBTCwgdGltaW5nLCBldGMuKQorICogYXQgcmVsYXRpb24gYW5kIGRhdGFiYXNlIGxldmVs IGJ5IGhvb2tpbmcgaW50byB0aGUgdmFjdXVtIHJlcG9ydGluZyBwYXRoLgorICogU3RhdGlz dGljcyBhcmUgc3RvcmVkIHZpYSBwZ3N0YXQgY3VzdG9tIHN0YXRpc3RpY3MuIE1hbmFnZW1l bnQgb2Ygc3RhdGlzdGljcworICogc3RvcmFnZSBhbmQgb3V0cHV0IGZ1bmN0aW9ucyBhcmUg aW1wbGVtZW50ZWQgaW4gdGhpcyBtb2R1bGUuCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5o IgorCisjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKKyNpbmNsdWRlICJjYXRhbG9nL2Nh dGFsb2cuaCIKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFjY2Vzcy5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfYXV0aGlkLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzcy5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2UuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisj aW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUg InBnc3RhdC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdl L2lwYy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCisjaW5jbHVkZSAidXRpbHMv YWNsLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9m bWdycHJvdG9zLmgiCisjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRpbHMv aHNlYXJjaC5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0 aWxzL3Bnc3RhdF9raW5kLmgiCisjaW5jbHVkZSAidXRpbHMvcGdzdGF0X2ludGVybmFsLmgi CisjaW5jbHVkZSAidXRpbHMvdHVwbGVzdG9yZS5oIgorCisjaWZkZWYgUEdfTU9EVUxFX01B R0lDCitQR19NT0RVTEVfTUFHSUM7CisjZW5kaWYKKworLyogVHdvIGtpbmRzOiByZWxhdGlv bnMgKHRhYmxlcy9pbmRleGVzKSBhbmQgZGF0YWJhc2UgYWdncmVnYXRlcyAqLworI2RlZmlu ZSBQR1NUQVRfS0lORF9FWFRWQUNfUkVMQVRJT04JMjQKKyNkZWZpbmUgUEdTVEFUX0tJTkRf RVhUVkFDX0RCCQkyNQorCisjZGVmaW5lIFNKX05PREVOQU1FCQkidmFjdXVtX3N0YXRpc3Rp Y3MiCisjZGVmaW5lIEVWU19UUkFDS19GSUxFTkFNRQkicGdfc3RhdC9leHRfdmFjdXVtX3N0 YXRpc3RpY3NfdHJhY2sub2lkIgorCisvKiBCaXQgZmxhZ3MgZm9yIGV2c190cmFjayAob2Jq ZWN0X3R5cGVzKTogJ2FsbCcsICdkYXRhYmFzZXMnLCAncmVsYXRpb25zJyAqLworI2RlZmlu ZSBFVlNfVFJBQ0tfUkVMQVRJT05TCQkweDAxCisjZGVmaW5lIEVWU19UUkFDS19EQVRBQkFT RVMJCTB4MDIKKworLyogQml0IGZsYWdzIGZvciBldnNfdHJhY2tfcmVsYXRpb25zOiAnYWxs JywgJ3N5c3RlbScsICd1c2VyJyAqLworI2RlZmluZSBFVlNfRklMVEVSX1NZU1RFTQkJMHgw MQorI2RlZmluZSBFVlNfRklMVEVSX1VTRVIJCQkweDAyCisKKy8qCisgKiBCaXQgZmxhZ3Mg Zm9yIGV2c19jb2xsZWN0X21hc2suIEVhY2ggY2F0ZWdvcnkgZ3JvdXBzIGNvdW50ZXJzIHRo YXQgY2FuIGJlCisgKiBhY2N1bXVsYXRlZCAob3Igc2tpcHBlZCkgdG9nZXRoZXIsIGxldHRp bmcgdXNlcnMgcmVkdWNlIG92ZXJoZWFkIGF0IHJ1bgorICogdGltZSBieSB0dXJuaW5nIG9m ZiBjYXRlZ29yaWVzIHRoZXkgZG9uJ3QgbmVlZC4KKyAqLworI2RlZmluZSBFVlNfQ09MTEVD VF9CVUZGRVJTCQkweDEgLyogYmxrc18qLCBibGtfKl90aW1lICovCisjZGVmaW5lIEVWU19D T0xMRUNUX1dBTAkJCTB4MiAvKiB3YWxfcmVjb3Jkcywgd2FsX2ZwaSwgd2FsX2J5dGVzICov CisjZGVmaW5lIEVWU19DT0xMRUNUX0dFTkVSQUwJCTB4NCAvKiB0dXBsZXNfZGVsZXRlZCwg cGFnZXNfKiwgdm1fKiwKKwkJCQkJCQkJCSAqIHdyYXBhcm91bmRfZmFpbHNhZmVfY291bnQs CisJCQkJCQkJCQkgKiBpbnRlcnJ1cHRzX2NvdW50ICovCisjZGVmaW5lIEVWU19DT0xMRUNU X1RJTUlORwkJMHg4IC8qIGRlbGF5X3RpbWUsIHRvdGFsX3RpbWUgKi8KKyNkZWZpbmUgRVZT X0NPTExFQ1RfQUxMCQkJKEVWU19DT0xMRUNUX0JVRkZFUlMgfCBFVlNfQ09MTEVDVF9XQUwg fCBcCisJCQkJCQkJCSBFVlNfQ09MTEVDVF9HRU5FUkFMIHwgRVZTX0NPTExFQ1RfVElNSU5H KQorCisvKiAgR1VDcyAgKi8KK3N0YXRpYyBib29sIGV2c19lbmFibGVkID0gdHJ1ZTsKK3N0 YXRpYyBjaGFyICpldnNfdHJhY2sgPSAiYWxsIjsgLyogJ2FsbCcsICdkYXRhYmFzZXMnLCAn cmVsYXRpb25zJyAqLworc3RhdGljIGNoYXIgKmV2c190cmFja19yZWxhdGlvbnMgPSAiYWxs IjsJLyogJ2FsbCcsICdzeXN0ZW0nLCAndXNlcicgKi8KK3N0YXRpYyBpbnQJZXZzX3RyYWNr X2JpdHMgPSBFVlNfVFJBQ0tfUkVMQVRJT05TIHwgRVZTX1RSQUNLX0RBVEFCQVNFUzsKK3N0 YXRpYyBpbnQJZXZzX3RyYWNrX3JlbGF0aW9uc19iaXRzID0gRVZTX0ZJTFRFUl9TWVNURU0g fCBFVlNfRklMVEVSX1VTRVI7CitzdGF0aWMgYm9vbCBldnNfdHJhY2tfZGF0YWJhc2VzX2Zy b21fbGlzdCA9IGZhbHNlOwkvKiBpZiB0cnVlLCB0cmFjayBvbmx5CisJCQkJCQkJCQkJCQkJ ICogZGF0YWJhc2VzIGluIGxpc3QgKi8KK3N0YXRpYyBib29sIGV2c190cmFja19yZWxhdGlv bnNfZnJvbV9saXN0ID0gZmFsc2U7CS8qIGlmIHRydWUsIHRyYWNrIG9ubHkKKwkJCQkJCQkJ CQkJCQkgKiByZWxhdGlvbnMgaW4gbGlzdCAqLworc3RhdGljIGNoYXIgKmV2c19jb2xsZWN0 ID0gImFsbCI7CS8qIGNhdGVnb3JpZXMgdG8gY29sbGVjdCAqLworc3RhdGljIGludAlldnNf Y29sbGVjdF9tYXNrID0gRVZTX0NPTExFQ1RfQUxMOworCisvKiAgSG9vayAgKi8KK3N0YXRp YyBzZXRfcmVwb3J0X3ZhY3V1bV9ob29rX3R5cGUgcHJldl9yZXBvcnRfdmFjdXVtX2hvb2sg PSBOVUxMOworc3RhdGljIG9iamVjdF9hY2Nlc3NfaG9va190eXBlIHByZXZfb2JqZWN0X2Fj Y2Vzc19ob29rID0gTlVMTDsKK3N0YXRpYyBzaG1lbV9yZXF1ZXN0X2hvb2tfdHlwZSBwcmV2 X3NobWVtX3JlcXVlc3RfaG9vayA9IE5VTEw7CisKKy8qICBGb3J3YXJkIGRlY2xhcmF0aW9u cyAgKi8KK3N0YXRpYyB2b2lkIHBnc3RhdF9yZXBvcnRfdmFjdXVtX2V4dHN0YXRzKE9pZCB0 YWJsZW9pZCwgYm9vbCBzaGFyZWQsCisJCQkJCQkJCQkJICBQZ1N0YXRfVmFjdXVtUmVsYXRp b25Db3VudHMgKiBwYXJhbXMpOworc3RhdGljIGJvb2wgZXZzX29pZF9pbl9saXN0KEhUQUIg Kmhhc2gsIE9pZCBvaWQpOworc3RhdGljIHZvaWQgZXZzX3RyYWNrX2hhc2hfZW5zdXJlX2lu aXQodm9pZCk7CitzdGF0aWMgdm9pZCBldnNfdHJhY2tfc2F2ZV9maWxlKHZvaWQpOworc3Rh dGljIHZvaWQgZXZzX3RyYWNrX2xvYWRfZmlsZSh2b2lkKTsKK3N0YXRpYyB2b2lkIGV2c19k cm9wX2FjY2Vzc19ob29rKE9iamVjdEFjY2Vzc1R5cGUgYWNjZXNzLCBPaWQgY2xhc3NJZCwK KwkJCQkJCQkJIE9pZCBvYmplY3RJZCwgaW50IHN1YklkLCB2b2lkICphcmcpOworc3RhdGlj IHZvaWQgZXZzX3NobWVtX3JlcXVlc3Qodm9pZCk7CisKKy8qIEhhc2ggdGFibGVzIGZvciB0 cmFja19kYXRhYmFzZXMgYW5kIHRyYWNrX3JlbGF0aW9uc19saXN0IChiYWNrZW5kLWxvY2Fs KSAqLworc3RhdGljIEhUQUIgKmV2c190cmFja19kYXRhYmFzZXNfaGFzaCA9IE5VTEw7Citz dGF0aWMgSFRBQiAqZXZzX3RyYWNrX3JlbGF0aW9uc19oYXNoID0gTlVMTDsKK3N0YXRpYyBi b29sIGV2c190cmFja19oYXNoX2luaXRpYWxpemVkID0gZmFsc2U7CisKKy8qCisgKiBOYW1l ZCBMV0xvY2sgdHJhbmNoZSBwcm90ZWN0aW5nIHRoZSBvbi1kaXNrIHRyYWNrIGZpbGUgYW5k IHNlcmlhbGl6aW5nCisgKiBiYWNrZW5kLWxvY2FsIHJlbG9hZHMvc2F2ZXMgYWNyb3NzIGNv bmN1cnJlbnQgYmFja2VuZHMuCisgKi8KKyNkZWZpbmUgRVZTX1RSQUNLX1RSQU5DSEVfTkFN RSAiZXh0X3ZhY3V1bV9zdGF0aXN0aWNzX3RyYWNrIgorc3RhdGljIExXTG9jayAqZXZzX3Ry YWNrX2xvY2sgPSBOVUxMOworCitzdGF0aWMgaW5saW5lIExXTG9jayAqCitldnNfZ2V0X3Ry YWNrX2xvY2sodm9pZCkKK3sKKwlpZiAoZXZzX3RyYWNrX2xvY2sgPT0gTlVMTCkKKwkJZXZz X3RyYWNrX2xvY2sgPSAmR2V0TmFtZWRMV0xvY2tUcmFuY2hlKEVWU19UUkFDS19UUkFOQ0hF X05BTUUpLT5sb2NrOworCXJldHVybiBldnNfdHJhY2tfbG9jazsKK30KKworLyoKKyAqIG9i amlkIGVuY29kaW5nIGZvciByZWxhdGlvbnM6IChyZWxpZCA8PCAyKSB8ICh0eXBlICYgMykK KyAqLworI2RlZmluZSBFWFRWQUNfT0JKSUQocmVsaWQsIHR5cGUpICgoKHVpbnQ2NCkgKHJl bGlkKSkgPDwgMiB8ICgodHlwZSkgJiAzKSkKKworLyogS2V5IGZvciByZWxhdGlvbiB0cmFj a2luZzogKGRib2lkLCByZWxvaWQpLgorICogSW52YWxpZE9pZCBmb3IgZGJvaWQgbWVhbnMg aXQgaXMgYSBjbHVzdGVyIG9iamVjdC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlPaWQJ CQlkYm9pZDsKKwlPaWQJCQlyZWxvaWQ7Cit9CQkJRXZzVHJhY2tSZWxLZXk7CisKKy8qIFNo YXJlZCBtZW1vcnkgZW50cnkgZm9yIHZhY3V1bSBzdGF0czsgb25lIHBlciByZWxhdGlvbiBv ciBkYXRhYmFzZS4gKi8KK3R5cGVkZWYgc3RydWN0IFBnU3RhdFNoYXJlZF9FeHRWYWNFbnRy eQoreworCVBnU3RhdFNoYXJlZF9Db21tb24gaGVhZGVyOworCVBnU3RhdF9WYWN1dW1SZWxh dGlvbkNvdW50cyBzdGF0czsKK30JCQlQZ1N0YXRTaGFyZWRfRXh0VmFjRW50cnk7CisKKy8q IFBnU3RhdCBraW5kIGZvciBwZXItcmVsYXRpb24gdmFjdXVtIHN0YXRpc3RpY3MgKHRhYmxl cy9pbmRleGVzKSAqLworc3RhdGljIGNvbnN0IFBnU3RhdF9LaW5kSW5mbyBleHR2YWNfcmVs YXRpb25fa2luZF9pbmZvID0geworCS5uYW1lID0gImV4dF92YWN1dW1fc3RhdGlzdGljc19y ZWxhdGlvbiIsCisJLmZpeGVkX2Ftb3VudCA9IGZhbHNlLAorCS5hY2Nlc3NlZF9hY3Jvc3Nf ZGF0YWJhc2VzID0gdHJ1ZSwKKwkud3JpdGVfdG9fZmlsZSA9IHRydWUsCisJLnRyYWNrX2Vu dHJ5X2NvdW50ID0gdHJ1ZSwKKwkuc2hhcmVkX3NpemUgPSBzaXplb2YoUGdTdGF0U2hhcmVk X0V4dFZhY0VudHJ5KSwKKwkuc2hhcmVkX2RhdGFfb2ZmID0gb2Zmc2V0b2YoUGdTdGF0U2hh cmVkX0V4dFZhY0VudHJ5LCBzdGF0cyksCisJLnNoYXJlZF9kYXRhX2xlbiA9IHNpemVvZihQ Z1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMpLAorCS5wZW5kaW5nX3NpemUgPSAwLAorCS5m bHVzaF9wZW5kaW5nX2NiID0gTlVMTCwKK307CisKKy8qIFBnU3RhdCBraW5kIGZvciBwZXIt ZGF0YWJhc2UgYWdncmVnYXRlZCB2YWN1dW0gc3RhdGlzdGljcyAqLworc3RhdGljIGNvbnN0 IFBnU3RhdF9LaW5kSW5mbyBleHR2YWNfZGJfa2luZF9pbmZvID0geworCS5uYW1lID0gImV4 dF92YWN1dW1fc3RhdGlzdGljc19kYiIsCisJLmZpeGVkX2Ftb3VudCA9IGZhbHNlLAorCS5h Y2Nlc3NlZF9hY3Jvc3NfZGF0YWJhc2VzID0gdHJ1ZSwKKwkud3JpdGVfdG9fZmlsZSA9IHRy dWUsCisJLnRyYWNrX2VudHJ5X2NvdW50ID0gdHJ1ZSwKKwkuc2hhcmVkX3NpemUgPSBzaXpl b2YoUGdTdGF0U2hhcmVkX0V4dFZhY0VudHJ5KSwKKwkuc2hhcmVkX2RhdGFfb2ZmID0gb2Zm c2V0b2YoUGdTdGF0U2hhcmVkX0V4dFZhY0VudHJ5LCBzdGF0cyksCisJLnNoYXJlZF9kYXRh X2xlbiA9IHNpemVvZihQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMpLAorCS5wZW5kaW5n X3NpemUgPSAwLAorCS5mbHVzaF9wZW5kaW5nX2NiID0gTlVMTCwKK307CisKKy8qCisgKiBB Y2N1bXVsYXRlIGEgc2luZ2xlIGNvdW50ZXIgb25seSBpZiBpdHMgY2F0ZWdvcnkgaXMgZW5h YmxlZCBpbgorICogZXZzX2NvbGxlY3RfbWFzay4gUGFyZW50aGVzZXMgYXJvdW5kIGV2ZXJ5 IGFyZ3VtZW50OiB0aGUgbWFjcm8gaXMgaW52b2tlZAorICogZnJvbSBleHByZXNzaW9uIGNv bnRleHRzIGFuZCB3aXRoIGV4cHJlc3Npb25zIGFzIHRoZSBkZXN0aW5hdGlvbiBwb2ludGVy LgorICovCisjZGVmaW5lIEFDQ1VNX0lGKGRzdCwgc3JjLCBmaWVsZCwgY2F0KSBcCisJZG8g eyBcCisJCWlmICgoZXZzX2NvbGxlY3RfbWFzaykgJiAoY2F0KSkgXAorCQkJKChkc3QpKS0+ ZmllbGQgKz0gKChzcmMpKS0+ZmllbGQ7IFwKKwl9IHdoaWxlICgwKQorCitzdGF0aWMgaW5s aW5lIHZvaWQKK3Bnc3RhdF9hY2N1bXVsYXRlX2NvbW1vbihQZ1N0YXRfQ29tbW9uQ291bnRz ICogZHN0LCBjb25zdCBQZ1N0YXRfQ29tbW9uQ291bnRzICogc3JjKQoreworCUFDQ1VNX0lG KGRzdCwgc3JjLCB0b3RhbF9ibGtzX3JlYWQsIEVWU19DT0xMRUNUX0JVRkZFUlMpOworCUFD Q1VNX0lGKGRzdCwgc3JjLCB0b3RhbF9ibGtzX2hpdCwgRVZTX0NPTExFQ1RfQlVGRkVSUyk7 CisJQUNDVU1fSUYoZHN0LCBzcmMsIHRvdGFsX2Jsa3NfZGlydGllZCwgRVZTX0NPTExFQ1Rf QlVGRkVSUyk7CisJQUNDVU1fSUYoZHN0LCBzcmMsIHRvdGFsX2Jsa3Nfd3JpdHRlbiwgRVZT X0NPTExFQ1RfQlVGRkVSUyk7CisJQUNDVU1fSUYoZHN0LCBzcmMsIGJsa3NfZmV0Y2hlZCwg RVZTX0NPTExFQ1RfQlVGRkVSUyk7CisJQUNDVU1fSUYoZHN0LCBzcmMsIGJsa3NfaGl0LCBF VlNfQ09MTEVDVF9CVUZGRVJTKTsKKwlBQ0NVTV9JRihkc3QsIHNyYywgYmxrX3JlYWRfdGlt ZSwgRVZTX0NPTExFQ1RfQlVGRkVSUyk7CisJQUNDVU1fSUYoZHN0LCBzcmMsIGJsa193cml0 ZV90aW1lLCBFVlNfQ09MTEVDVF9CVUZGRVJTKTsKKwlBQ0NVTV9JRihkc3QsIHNyYywgZGVs YXlfdGltZSwgRVZTX0NPTExFQ1RfVElNSU5HKTsKKwlBQ0NVTV9JRihkc3QsIHNyYywgdG90 YWxfdGltZSwgRVZTX0NPTExFQ1RfVElNSU5HKTsKKwlBQ0NVTV9JRihkc3QsIHNyYywgd2Fs X3JlY29yZHMsIEVWU19DT0xMRUNUX1dBTCk7CisJQUNDVU1fSUYoZHN0LCBzcmMsIHdhbF9m cGksIEVWU19DT0xMRUNUX1dBTCk7CisJQUNDVU1fSUYoZHN0LCBzcmMsIHdhbF9ieXRlcywg RVZTX0NPTExFQ1RfV0FMKTsKKwlBQ0NVTV9JRihkc3QsIHNyYywgd3JhcGFyb3VuZF9mYWls c2FmZV9jb3VudCwgRVZTX0NPTExFQ1RfR0VORVJBTCk7CisJQUNDVU1fSUYoZHN0LCBzcmMs IGludGVycnVwdHNfY291bnQsIEVWU19DT0xMRUNUX0dFTkVSQUwpOworCUFDQ1VNX0lGKGRz dCwgc3JjLCB0dXBsZXNfZGVsZXRlZCwgRVZTX0NPTExFQ1RfR0VORVJBTCk7Cit9CisKK3N0 YXRpYyBpbmxpbmUgdm9pZAorcGdzdGF0X2FjY3VtdWxhdGVfZXh0dmFjX3N0YXRzKFBnU3Rh dF9WYWN1dW1SZWxhdGlvbkNvdW50cyAqIGRzdCwKKwkJCQkJCQkgICBjb25zdCBQZ1N0YXRf VmFjdXVtUmVsYXRpb25Db3VudHMgKiBzcmMpCit7CisJaWYgKGRzdC0+dHlwZSA9PSBQR1NU QVRfRVhUVkFDX0lOVkFMSUQpCisJCWRzdC0+dHlwZSA9IHNyYy0+dHlwZTsKKworCUFzc2Vy dChzcmMtPnR5cGUgIT0gUEdTVEFUX0VYVFZBQ19JTlZBTElEICYmIHNyYy0+dHlwZSAhPSBQ R1NUQVRfRVhUVkFDX0RCKTsKKwlBc3NlcnQoc3JjLT50eXBlID09IGRzdC0+dHlwZSk7CisK KwlwZ3N0YXRfYWNjdW11bGF0ZV9jb21tb24oJmRzdC0+Y29tbW9uLCAmc3JjLT5jb21tb24p OworCisJaWYgKGRzdC0+dHlwZSA9PSBQR1NUQVRfRVhUVkFDX1RBQkxFICYmCisJCShldnNf Y29sbGVjdF9tYXNrICYgRVZTX0NPTExFQ1RfR0VORVJBTCkgIT0gMCkKKwl7CisJCWRzdC0+ dGFibGUucGFnZXNfc2Nhbm5lZCArPSBzcmMtPnRhYmxlLnBhZ2VzX3NjYW5uZWQ7CisJCWRz dC0+dGFibGUucGFnZXNfcmVtb3ZlZCArPSBzcmMtPnRhYmxlLnBhZ2VzX3JlbW92ZWQ7CisJ CWRzdC0+dGFibGUudHVwbGVzX2Zyb3plbiArPSBzcmMtPnRhYmxlLnR1cGxlc19mcm96ZW47 CisJCWRzdC0+dGFibGUucmVjZW50bHlfZGVhZF90dXBsZXMgKz0gc3JjLT50YWJsZS5yZWNl bnRseV9kZWFkX3R1cGxlczsKKwkJZHN0LT50YWJsZS52bV9uZXdfZnJvemVuX3BhZ2VzICs9 IHNyYy0+dGFibGUudm1fbmV3X2Zyb3plbl9wYWdlczsKKwkJZHN0LT50YWJsZS52bV9uZXdf dmlzaWJsZV9wYWdlcyArPSBzcmMtPnRhYmxlLnZtX25ld192aXNpYmxlX3BhZ2VzOworCQlk c3QtPnRhYmxlLnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyArPSBzcmMtPnRhYmxlLnZt X25ld192aXNpYmxlX2Zyb3plbl9wYWdlczsKKwkJZHN0LT50YWJsZS5taXNzZWRfZGVhZF9w YWdlcyArPSBzcmMtPnRhYmxlLm1pc3NlZF9kZWFkX3BhZ2VzOworCQlkc3QtPnRhYmxlLm1p c3NlZF9kZWFkX3R1cGxlcyArPSBzcmMtPnRhYmxlLm1pc3NlZF9kZWFkX3R1cGxlczsKKwkJ ZHN0LT50YWJsZS5pbmRleF92YWN1dW1fY291bnQgKz0gc3JjLT50YWJsZS5pbmRleF92YWN1 dW1fY291bnQ7CisJfQorCWVsc2UgaWYgKGRzdC0+dHlwZSA9PSBQR1NUQVRfRVhUVkFDX0lO REVYICYmCisJCQkgKGV2c19jb2xsZWN0X21hc2sgJiBFVlNfQ09MTEVDVF9HRU5FUkFMKSAh PSAwKQorCXsKKwkJZHN0LT5pbmRleC5wYWdlc19kZWxldGVkICs9IHNyYy0+aW5kZXgucGFn ZXNfZGVsZXRlZDsKKwl9Cit9CisKKy8qCisgKiBHVUMgY2hlY2sgaG9va3M6IHZhbGlkYXRl IHRoZSBzdHJpbmcgYW5kIGNvbXB1dGUgdGhlIGJpdG1hc2sgaW50byAqZXh0cmEuCisgKiBS ZWplY3RpbmcgdW5rbm93biB2YWx1ZXMgaGVyZSBwcmV2ZW50cyBzaWxlbnQgZmFsbC10aHJv dWdoIHRvICJhbGwiLgorICovCitzdGF0aWMgYm9vbAorZXZzX3RyYWNrX2NoZWNrX2hvb2so Y2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ugc291cmNlKQoreworCWlu dAkJICAgKmJpdHM7CisKKwlpZiAoKm5ld3ZhbCA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7 CisKKwliaXRzID0gKGludCAqKSBndWNfbWFsbG9jKExPRywgc2l6ZW9mKGludCkpOworCWlm ICghYml0cykKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKHN0cmNtcCgqbmV3dmFsLCAiYWxs IikgPT0gMCkKKwkJKmJpdHMgPSBFVlNfVFJBQ0tfUkVMQVRJT05TIHwgRVZTX1RSQUNLX0RB VEFCQVNFUzsKKwllbHNlIGlmIChzdHJjbXAoKm5ld3ZhbCwgImRhdGFiYXNlcyIpID09IDAp CisJCSpiaXRzID0gRVZTX1RSQUNLX0RBVEFCQVNFUzsKKwllbHNlIGlmIChzdHJjbXAoKm5l d3ZhbCwgInJlbGF0aW9ucyIpID09IDApCisJCSpiaXRzID0gRVZTX1RSQUNLX1JFTEFUSU9O UzsKKwllbHNlCisJeworCQlndWNfZnJlZShiaXRzKTsKKwkJR1VDX2NoZWNrX2VycmRldGFp bCgiQWxsb3dlZCB2YWx1ZXMgYXJlIFwiYWxsXCIsIFwiZGF0YWJhc2VzXCIsIFwicmVsYXRp b25zXCIuIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisJKmV4dHJhID0gYml0czsKKwlyZXR1 cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQKK2V2c190cmFja19hc3NpZ25faG9vayhjb25z dCBjaGFyICpuZXd2YWwsIHZvaWQgKmV4dHJhKQoreworCWV2c190cmFja19iaXRzID0gKigo aW50ICopIGV4dHJhKTsKK30KKworc3RhdGljIGJvb2wKK2V2c190cmFja19yZWxhdGlvbnNf Y2hlY2tfaG9vayhjaGFyICoqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3Vy Y2UpCit7CisJaW50CQkgICAqYml0czsKKworCWlmICgqbmV3dmFsID09IE5VTEwpCisJCXJl dHVybiBmYWxzZTsKKworCWJpdHMgPSAoaW50ICopIGd1Y19tYWxsb2MoTE9HLCBzaXplb2Yo aW50KSk7CisJaWYgKCFiaXRzKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoc3RyY21wKCpu ZXd2YWwsICJhbGwiKSA9PSAwKQorCQkqYml0cyA9IEVWU19GSUxURVJfU1lTVEVNIHwgRVZT X0ZJTFRFUl9VU0VSOworCWVsc2UgaWYgKHN0cmNtcCgqbmV3dmFsLCAic3lzdGVtIikgPT0g MCkKKwkJKmJpdHMgPSBFVlNfRklMVEVSX1NZU1RFTTsKKwllbHNlIGlmIChzdHJjbXAoKm5l d3ZhbCwgInVzZXIiKSA9PSAwKQorCQkqYml0cyA9IEVWU19GSUxURVJfVVNFUjsKKwllbHNl CisJeworCQlndWNfZnJlZShiaXRzKTsKKwkJR1VDX2NoZWNrX2VycmRldGFpbCgiQWxsb3dl ZCB2YWx1ZXMgYXJlIFwiYWxsXCIsIFwic3lzdGVtXCIsIFwidXNlclwiLiIpOworCQlyZXR1 cm4gZmFsc2U7CisJfQorCSpleHRyYSA9IGJpdHM7CisJcmV0dXJuIHRydWU7Cit9CisKK3N0 YXRpYyB2b2lkCitldnNfdHJhY2tfcmVsYXRpb25zX2Fzc2lnbl9ob29rKGNvbnN0IGNoYXIg Km5ld3ZhbCwgdm9pZCAqZXh0cmEpCit7CisJZXZzX3RyYWNrX3JlbGF0aW9uc19iaXRzID0g KigoaW50ICopIGV4dHJhKTsKK30KKworLyoKKyAqIENoZWNrIGhvb2sgZm9yIHZhY3V1bV9z dGF0aXN0aWNzLmNvbGxlY3QuCisgKgorICogQWNjZXB0cyBhIGNvbW1hLSBvciB3aGl0ZXNw YWNlLXNlcGFyYXRlZCBsaXN0IG9mIGNhdGVnb3J5IG5hbWVzCisgKiAoYnVmZmVycywgd2Fs LCBnZW5lcmFsLCB0aW1pbmcpIG9yIHRoZSBzaG9ydGhhbmQgImFsbCIuICBDb21wdXRlcyB0 aGUKKyAqIG1hdGNoaW5nIGJpdG1hc2sgb25jZSBhbmQgc3Rhc2hlcyBpdCBpbiAqZXh0cmE7 IHRoZSBhc3NpZ24gaG9vayBqdXN0CisgKiBjb3BpZXMgaXQgaW50byBldnNfY29sbGVjdF9t YXNrLiAgVW5rbm93biB0b2tlbnMgYXJlIHJlamVjdGVkIHNvIHRoZQorICogc2V0dGluZyBj YW5ub3Qgc2lsZW50bHkgY29sbGFwc2UgdG8gdGhlICJhbGwiIGRlZmF1bHQuCisgKi8KK3N0 YXRpYyBib29sCitldnNfY29sbGVjdF9jaGVja19ob29rKGNoYXIgKipuZXd2YWwsIHZvaWQg KipleHRyYSwgR3VjU291cmNlIHNvdXJjZSkKK3sKKwlpbnQJCSAgICptYXNrOworCWNoYXIJ ICAgKmNvcHk7CisJY2hhcgkgICAqcDsKKwljaGFyCSAgICp0b2s7CisJaW50CQkJYWNjdW0g PSAwOworCWJvb2wJCXNhd19hbGwgPSBmYWxzZTsKKworCWlmICgqbmV3dmFsID09IE5VTEwp CisJCXJldHVybiBmYWxzZTsKKworCW1hc2sgPSAoaW50ICopIGd1Y19tYWxsb2MoTE9HLCBz aXplb2YoaW50KSk7CisJaWYgKCFtYXNrKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBFbXB0 eSBzdHJpbmcgbWVhbnMgImFsbCIsIG1hdGNoaW5nIHRoZSBkZWZhdWx0IGJlaGF2aW9yLiAq LworCWlmICgoKm5ld3ZhbClbMF0gPT0gJ1wwJykKKwl7CisJCSptYXNrID0gRVZTX0NPTExF Q1RfQUxMOworCQkqZXh0cmEgPSBtYXNrOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwljb3B5 ID0gcHN0cmR1cCgqbmV3dmFsKTsKKwlmb3IgKHAgPSBjb3B5OyAodG9rID0gc3RydG9rKHAs ICIgXHQsIikpICE9IE5VTEw7IHAgPSBOVUxMKQorCXsKKwkJaWYgKHBnX3N0cmNhc2VjbXAo dG9rLCAiYWxsIikgPT0gMCkKKwkJCXNhd19hbGwgPSB0cnVlOworCQllbHNlIGlmIChwZ19z dHJjYXNlY21wKHRvaywgImJ1ZmZlcnMiKSA9PSAwKQorCQkJYWNjdW0gfD0gRVZTX0NPTExF Q1RfQlVGRkVSUzsKKwkJZWxzZSBpZiAocGdfc3RyY2FzZWNtcCh0b2ssICJ3YWwiKSA9PSAw KQorCQkJYWNjdW0gfD0gRVZTX0NPTExFQ1RfV0FMOworCQllbHNlIGlmIChwZ19zdHJjYXNl Y21wKHRvaywgImdlbmVyYWwiKSA9PSAwKQorCQkJYWNjdW0gfD0gRVZTX0NPTExFQ1RfR0VO RVJBTDsKKwkJZWxzZSBpZiAocGdfc3RyY2FzZWNtcCh0b2ssICJ0aW1pbmciKSA9PSAwKQor CQkJYWNjdW0gfD0gRVZTX0NPTExFQ1RfVElNSU5HOworCQllbHNlCisJCXsKKwkJCS8qCisJ CQkgKiBHVUNfY2hlY2tfZXJyZGV0YWlsIGZvcm1hdHMgdGhlIG1lc3NhZ2UgaW1tZWRpYXRl bHksIGJ1dCB0b2sKKwkJCSAqIHBvaW50cyBpbnRvIGNvcHk7IGVtaXQgdGhlIGRldGFpbCBm aXJzdCwgdGhlbiBmcmVlIHRoZQorCQkJICogc2NyYXRjaCBidWZmZXIgc28gdGhlIGZvcm1h dHRlZCBzdHJpbmcgaXMgYWxyZWFkeSBzdGFzaGVkIGluCisJCQkgKiBHVUNfY2hlY2tfZXJy ZGV0YWlsX3N0cmluZy4KKwkJCSAqLworCQkJR1VDX2NoZWNrX2VycmRldGFpbCgiVW5yZWNv Z25pemVkIGNhdGVnb3J5IFwiJXNcIiBpbiB2YWN1dW1fc3RhdGlzdGljcy5jb2xsZWN0OyAi CisJCQkJCQkJCSJhbGxvd2VkIHZhbHVlcyBhcmUgXCJhbGxcIiwgXCJidWZmZXJzXCIsIFwi d2FsXCIsIFwiZ2VuZXJhbFwiLCBcInRpbWluZ1wiLiIsCisJCQkJCQkJCXRvayk7CisJCQlw ZnJlZShjb3B5KTsKKwkJCWd1Y19mcmVlKG1hc2spOworCQkJcmV0dXJuIGZhbHNlOworCQl9 CisJfQorCXBmcmVlKGNvcHkpOworCisJKm1hc2sgPSBzYXdfYWxsID8gRVZTX0NPTExFQ1Rf QUxMIDogYWNjdW07CisJaWYgKCptYXNrID09IDApCisJCSptYXNrID0gRVZTX0NPTExFQ1Rf QUxMOworCSpleHRyYSA9IG1hc2s7CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lk CitldnNfY29sbGVjdF9hc3NpZ25faG9vayhjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQgKmV4 dHJhKQoreworCWV2c19jb2xsZWN0X21hc2sgPSAqKChpbnQgKikgZXh0cmEpOworfQorCit2 b2lkCitfUEdfaW5pdCh2b2lkKQoreworCWlmICghcHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9s aWJyYXJpZXNfaW5fcHJvZ3Jlc3MpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coImV4dF92YWN1 dW1fc3RhdGlzdGljcyBtb2R1bGUgY291bGQgYmUgbG9hZGVkIG9ubHkgb24gc3RhcnR1cC4i KSwKKwkJCQkgZXJyZGV0YWlsKCJBZGQgJ2V4dF92YWN1dW1fc3RhdGlzdGljcycgaW50byB0 aGUgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzIGxpc3QuIikpKTsKKworCURlZmluZUN1c3Rv bUJvb2xWYXJpYWJsZSgidmFjdXVtX3N0YXRpc3RpY3MuZW5hYmxlZCIsCisJCQkJCQkJICJF bmFibGUgZXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3RpY3MgY29sbGVjdGlvbi4iLAorCQkJCQkJ CSBOVUxMLCAmZXZzX2VuYWJsZWQsIHRydWUsCisJCQkJCQkJIFBHQ19TVVNFVCwgMCwgTlVM TCwgTlVMTCwgTlVMTCk7CisKKwlEZWZpbmVDdXN0b21TdHJpbmdWYXJpYWJsZSgidmFjdXVt X3N0YXRpc3RpY3Mub2JqZWN0X3R5cGVzIiwKKwkJCQkJCQkgICAiT2JqZWN0IHR5cGVzIGZv ciBzdGF0aXN0aWNzOiAnYWxsJywgJ2RhdGFiYXNlcycsICdyZWxhdGlvbnMnLiIsCisJCQkJ CQkJICAgTlVMTCwgJmV2c190cmFjaywgImFsbCIsCisJCQkJCQkJICAgUEdDX1NVU0VULCAw LAorCQkJCQkJCSAgIGV2c190cmFja19jaGVja19ob29rLAorCQkJCQkJCSAgIGV2c190cmFj a19hc3NpZ25faG9vaywgTlVMTCk7CisKKwlEZWZpbmVDdXN0b21TdHJpbmdWYXJpYWJsZSgi dmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfcmVsYXRpb25zIiwKKwkJCQkJCQkgICAiV2hlbiB0 cmFja2luZyByZWxhdGlvbnM6ICdhbGwnLCAnc3lzdGVtJywgJ3VzZXInLiIsCisJCQkJCQkJ ICAgTlVMTCwgJmV2c190cmFja19yZWxhdGlvbnMsICJhbGwiLAorCQkJCQkJCSAgIFBHQ19T VVNFVCwgMCwKKwkJCQkJCQkgICBldnNfdHJhY2tfcmVsYXRpb25zX2NoZWNrX2hvb2ssCisJ CQkJCQkJICAgZXZzX3RyYWNrX3JlbGF0aW9uc19hc3NpZ25faG9vaywgTlVMTCk7CisKKwlE ZWZpbmVDdXN0b21Cb29sVmFyaWFibGUoInZhY3V1bV9zdGF0aXN0aWNzLnRyYWNrX2RhdGFi YXNlc19mcm9tX2xpc3QiLAorCQkJCQkJCSAiSWYgdHJ1ZSwgdHJhY2sgb25seSBkYXRhYmFz ZXMgYWRkZWQgdmlhIGFkZF90cmFja19kYXRhYmFzZS4iLAorCQkJCQkJCSBOVUxMLCAmZXZz X3RyYWNrX2RhdGFiYXNlc19mcm9tX2xpc3QsIGZhbHNlLAorCQkJCQkJCSBQR0NfU1VTRVQs IDAsIE5VTEwsIE5VTEwsIE5VTEwpOworCisJRGVmaW5lQ3VzdG9tQm9vbFZhcmlhYmxlKCJ2 YWN1dW1fc3RhdGlzdGljcy50cmFja19yZWxhdGlvbnNfZnJvbV9saXN0IiwKKwkJCQkJCQkg IklmIHRydWUsIHRyYWNrIG9ubHkgcmVsYXRpb25zIGFkZGVkIHZpYSBhZGRfdHJhY2tfcmVs YXRpb24uIiwKKwkJCQkJCQkgTlVMTCwgJmV2c190cmFja19yZWxhdGlvbnNfZnJvbV9saXN0 LCBmYWxzZSwKKwkJCQkJCQkgUEdDX1NVU0VULCAwLCBOVUxMLCBOVUxMLCBOVUxMKTsKKwor CURlZmluZUN1c3RvbVN0cmluZ1ZhcmlhYmxlKCJ2YWN1dW1fc3RhdGlzdGljcy5jb2xsZWN0 IiwKKwkJCQkJCQkgICAiU3RhdGlzdGljcyBjYXRlZ29yaWVzIHRvIGNvbGxlY3QuIiwKKwkJ CQkJCQkgICAiQ29tbWEtIG9yIHdoaXRlc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2Y6ICIKKwkJ CQkJCQkgICAiXCJidWZmZXJzXCIsIFwid2FsXCIsIFwiZ2VuZXJhbFwiLCBcInRpbWluZ1wi OyAiCisJCQkJCQkJICAgIm9yIFwiYWxsXCIgZm9yIGV2ZXJ5IGNhdGVnb3J5IChkZWZhdWx0 KS4iLAorCQkJCQkJCSAgICZldnNfY29sbGVjdCwgImFsbCIsCisJCQkJCQkJICAgUEdDX1NV U0VULCAwLAorCQkJCQkJCSAgIGV2c19jb2xsZWN0X2NoZWNrX2hvb2ssCisJCQkJCQkJICAg ZXZzX2NvbGxlY3RfYXNzaWduX2hvb2ssIE5VTEwpOworCisJTWFya0dVQ1ByZWZpeFJlc2Vy dmVkKFNKX05PREVOQU1FKTsKKworCXBnc3RhdF9yZWdpc3Rlcl9raW5kKFBHU1RBVF9LSU5E X0VYVFZBQ19SRUxBVElPTiwgJmV4dHZhY19yZWxhdGlvbl9raW5kX2luZm8pOworCXBnc3Rh dF9yZWdpc3Rlcl9raW5kKFBHU1RBVF9LSU5EX0VYVFZBQ19EQiwgJmV4dHZhY19kYl9raW5k X2luZm8pOworCisJcHJldl9zaG1lbV9yZXF1ZXN0X2hvb2sgPSBzaG1lbV9yZXF1ZXN0X2hv b2s7CisJc2htZW1fcmVxdWVzdF9ob29rID0gZXZzX3NobWVtX3JlcXVlc3Q7CisKKwlwcmV2 X3JlcG9ydF92YWN1dW1faG9vayA9IHNldF9yZXBvcnRfdmFjdXVtX2hvb2s7CisJc2V0X3Jl cG9ydF92YWN1dW1faG9vayA9IHBnc3RhdF9yZXBvcnRfdmFjdXVtX2V4dHN0YXRzOworCisJ cHJldl9vYmplY3RfYWNjZXNzX2hvb2sgPSBvYmplY3RfYWNjZXNzX2hvb2s7CisJb2JqZWN0 X2FjY2Vzc19ob29rID0gZXZzX2Ryb3BfYWNjZXNzX2hvb2s7Cit9CisKK3N0YXRpYyB2b2lk CitldnNfc2htZW1fcmVxdWVzdCh2b2lkKQoreworCWlmIChwcmV2X3NobWVtX3JlcXVlc3Rf aG9vaykKKwkJcHJldl9zaG1lbV9yZXF1ZXN0X2hvb2soKTsKKworCVJlcXVlc3ROYW1lZExX TG9ja1RyYW5jaGUoRVZTX1RSQUNLX1RSQU5DSEVfTkFNRSwgMSk7Cit9CisKKy8qCisgKiBP YmplY3QgYWNjZXNzIGhvb2s6IHJlbW92ZSBkcm9wcGVkIG9iamVjdHMgZnJvbSB0cmFjayBs aXN0cy4KKyAqLworc3RhdGljIHZvaWQKK2V2c19kcm9wX2FjY2Vzc19ob29rKE9iamVjdEFj Y2Vzc1R5cGUgYWNjZXNzLCBPaWQgY2xhc3NJZCwKKwkJCQkJIE9pZCBvYmplY3RJZCwgaW50 IHN1YklkLCB2b2lkICphcmcpCit7CisJaWYgKHByZXZfb2JqZWN0X2FjY2Vzc19ob29rKQor CQkoKnByZXZfb2JqZWN0X2FjY2Vzc19ob29rKSAoYWNjZXNzLCBjbGFzc0lkLCBvYmplY3RJ ZCwgc3ViSWQsIGFyZyk7CisKKwlpZiAoYWNjZXNzID09IE9BVF9EUk9QKQorCXsKKwkJaWYg KGNsYXNzSWQgPT0gUmVsYXRpb25SZWxhdGlvbklkICYmIHN1YklkID09IDApCisJCXsKKwkJ CWNoYXIJCXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtpbmQob2JqZWN0SWQpOworCQkJRXZzVHJh Y2tSZWxLZXkga2V5OworCQkJYm9vbAkJZm91bmQ7CisKKwkJCWlmIChyZWxraW5kID09IFJF TEtJTkRfUkVMQVRJT04gfHwgcmVsa2luZCA9PSBSRUxLSU5EX0lOREVYKQorCQkJeworCQkJ CUxXTG9jawkgICAqbG9jayA9IGV2c19nZXRfdHJhY2tfbG9jaygpOworCisJCQkJTFdMb2Nr QWNxdWlyZShsb2NrLCBMV19FWENMVVNJVkUpOworCQkJCWV2c190cmFja19oYXNoX2Vuc3Vy ZV9pbml0KCk7CisJCQkJa2V5LmRib2lkID0gTXlEYXRhYmFzZUlkOworCQkJCWtleS5yZWxv aWQgPSBvYmplY3RJZDsKKwkJCQloYXNoX3NlYXJjaChldnNfdHJhY2tfcmVsYXRpb25zX2hh c2gsICZrZXksIEhBU0hfUkVNT1ZFLCAmZm91bmQpOworCQkJCWtleS5kYm9pZCA9IEludmFs aWRPaWQ7CisJCQkJaGFzaF9zZWFyY2goZXZzX3RyYWNrX3JlbGF0aW9uc19oYXNoLCAma2V5 LCBIQVNIX1JFTU9WRSwgJmZvdW5kKTsKKwkJCQlldnNfdHJhY2tfc2F2ZV9maWxlKCk7CisJ CQkJTFdMb2NrUmVsZWFzZShsb2NrKTsKKwkJCX0KKwkJfQorCisJCWlmIChjbGFzc0lkID09 IERhdGFiYXNlUmVsYXRpb25JZCAmJiBvYmplY3RJZCAhPSBJbnZhbGlkT2lkKQorCQl7CisJ CQlMV0xvY2sJICAgKmxvY2sgPSBldnNfZ2V0X3RyYWNrX2xvY2soKTsKKwkJCWJvb2wJCWZv dW5kOworCisJCQlMV0xvY2tBY3F1aXJlKGxvY2ssIExXX0VYQ0xVU0lWRSk7CisJCQlldnNf dHJhY2tfaGFzaF9lbnN1cmVfaW5pdCgpOworCQkJaGFzaF9zZWFyY2goZXZzX3RyYWNrX2Rh dGFiYXNlc19oYXNoLCAmb2JqZWN0SWQsIEhBU0hfUkVNT1ZFLCAmZm91bmQpOworCQkJZXZz X3RyYWNrX3NhdmVfZmlsZSgpOworCQkJTFdMb2NrUmVsZWFzZShsb2NrKTsKKwkJfQorCX0K K30KKworLyoKKyAqIFN0b3JhZ2Ugb2YgdHJhY2sgbGlzdHMgaW4gYSBzZXBhcmF0ZSBmaWxl LgorICoKKyAqIFN0b3JlcyB0aGUgbGlzdHMgb2YgZGF0YWJhc2UgT0lEcyBhbmQgKGRib2lk LCByZWxvaWQpIHBhaXJzIHVzZWQgZm9yCisgKiBzZWxlY3RpdmUgdHJhY2tpbmcgd2hlbiB0 cmFja19kYXRhYmFzZXNfZnJvbV9saXN0IG9yIHRyYWNrX3JlbGF0aW9uc19mcm9tX2xpc3QK KyAqIGlzIGVuYWJsZWQuCisgKiBEYXRhIHN0b3JlcyBpbiBwZ19zdGF0L2V4dF92YWN1dW1f c3RhdGlzdGljc190cmFjay5vaWQKKyAqLworLyoKKyAqIEluaXRpYWxpemUgdGhlIGJhY2tl bmQtbG9jYWwgdHJhY2tpbmcgaGFzaGVzIGFuZCBsb2FkIHRoZWlyIGNvbnRlbnRzCisgKiBm cm9tIHRoZSBvbi1kaXNrIGZpbGUuCisgKgorICogVGhlIGhhc2hlcyBhcmUgcGVyLWJhY2tl bmQsIHNvIG5vIGxvY2sgaXMgbmVlZGVkIHRvIHByb3RlY3QgdGhlbSBmcm9tCisgKiBvdGhl ciBwcm9jZXNzZXM7IGhvd2V2ZXIsIGFub3RoZXIgYmFja2VuZCBtYXkgYmUgY29uY3VycmVu dGx5IHJld3JpdGluZworICogdGhlIHRyYWNrIGZpbGUsIHNvIHdlIHRha2UgYSBzaGFyZWQg bG9jayBmb3IgdGhlIGZpbGUgcmVhZC4KKyAqLworc3RhdGljIHZvaWQKK2V2c190cmFja19o YXNoX2Vuc3VyZV9pbml0KHZvaWQpCit7CisJSEFTSENUTAkJY3RsOworCUxXTG9jawkgICAq bG9jazsKKwlib29sCQluZWVkX2xvYWQ7CisKKwlpZiAoZXZzX3RyYWNrX2hhc2hfaW5pdGlh bGl6ZWQpCisJCXJldHVybjsKKworCWxvY2sgPSBldnNfZ2V0X3RyYWNrX2xvY2soKTsKKwor CWlmIChldnNfdHJhY2tfZGF0YWJhc2VzX2hhc2ggPT0gTlVMTCkKKwl7CisJCW1lbXNldCgm Y3RsLCAwLCBzaXplb2YoY3RsKSk7CisJCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7CisJ CWN0bC5lbnRyeXNpemUgPSBzaXplb2YoT2lkKTsKKwkJY3RsLmhjeHQgPSBUb3BNZW1vcnlD b250ZXh0OworCQlldnNfdHJhY2tfZGF0YWJhc2VzX2hhc2ggPQorCQkJaGFzaF9jcmVhdGUo ImV4dF92YWN1dW1fc3RhdGlzdGljcyB0cmFjayBkYXRhYmFzZXMiLAorCQkJCQkJNjQsICZj dGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCX0KKworCWlmIChldnNfdHJhY2tfcmVs YXRpb25zX2hhc2ggPT0gTlVMTCkKKwl7CisJCW1lbXNldCgmY3RsLCAwLCBzaXplb2YoY3Rs KSk7CisJCWN0bC5rZXlzaXplID0gc2l6ZW9mKEV2c1RyYWNrUmVsS2V5KTsKKwkJY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihFdnNUcmFja1JlbEtleSk7CisJCWN0bC5oY3h0ID0gVG9wTWVt b3J5Q29udGV4dDsKKwkJZXZzX3RyYWNrX3JlbGF0aW9uc19oYXNoID0KKwkJCWhhc2hfY3Jl YXRlKCJleHRfdmFjdXVtX3N0YXRpc3RpY3MgdHJhY2sgcmVsYXRpb25zIiwKKwkJCQkJCTY0 LCAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwl9CisKKwluZWVkX2xvYWQgPSAh TFdMb2NrSGVsZEJ5TWUobG9jayk7CisJaWYgKG5lZWRfbG9hZCkKKwkJTFdMb2NrQWNxdWly ZShsb2NrLCBMV19TSEFSRUQpOworCVBHX1RSWSgpOworCXsKKwkJZXZzX3RyYWNrX2xvYWRf ZmlsZSgpOworCQlldnNfdHJhY2tfaGFzaF9pbml0aWFsaXplZCA9IHRydWU7CisJfQorCVBH X0ZJTkFMTFkoKTsKKwl7CisJCWlmIChuZWVkX2xvYWQpCisJCQlMV0xvY2tSZWxlYXNlKGxv Y2spOworCX0KKwlQR19FTkRfVFJZKCk7Cit9CisKKy8qCisgKiBMb2FkIHRyYWNrIGxpc3Rz IGZyb20gZGlzayBpbnRvIHRoZSBiYWNrZW5kLWxvY2FsIGhhc2hlcy4KKyAqCisgKiBDYWxs ZXIgbXVzdCBob2xkIGV2c190cmFja19sb2NrIGF0IGxlYXN0IGluIHNoYXJlZCBtb2RlLCBz aW5jZSB0aGUgZmlsZQorICogbWF5IGJlIGNvbmN1cnJlbnRseSByZXdyaXR0ZW4gYnkgYW5v dGhlciBiYWNrZW5kLgorICovCitzdGF0aWMgdm9pZAorZXZzX3RyYWNrX2xvYWRfZmlsZSh2 b2lkKQoreworCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKKwlGSUxFCSAgICpmcDsKKwljaGFy CQlidWZbTUFYUEdQQVRIXTsKKwlib29sCQlpbl9yZWxhdGlvbnMgPSBmYWxzZTsKKwlPaWQJ CQlvaWQ7CisJRXZzVHJhY2tSZWxLZXkga2V5OworCWJvb2wJCWZvdW5kOworCisJaWYgKCFE YXRhRGlyIHx8IERhdGFEaXJbMF0gPT0gJ1wwJyB8fAorCQkhZXZzX3RyYWNrX2RhdGFiYXNl c19oYXNoIHx8ICFldnNfdHJhY2tfcmVsYXRpb25zX2hhc2gpCisJCXJldHVybjsKKworCXNu cHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIiVzLyVzIiwgRGF0YURpciwgRVZTX1RSQUNL X0ZJTEVOQU1FKTsKKwlmcCA9IEFsbG9jYXRlRmlsZShwYXRoLCAiciIpOworCWlmICghZnAp CisJeworCQlpZiAoZXJybm8gIT0gRU5PRU5UKQorCQkJZXJlcG9ydChMT0csCisJCQkJCShl cnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgb3Bl biB0cmFjayBmaWxlIFwiJXNcIjogJW0iLCBwYXRoKSkpOworCQlyZXR1cm47CisJfQorCisJ UEdfVFJZKCk7CisJeworCQl3aGlsZSAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZnApKQor CQl7CisJCQlzaXplX3QJCWxlbiA9IHN0cmxlbihidWYpOworCisJCQkvKiBSZWplY3QgdW50 ZXJtaW5hdGVkIGxpbmVzIChsb25nZXIgdGhhbiBidWZmZXIpIGFzIGNvcnJ1cHRpb24uICov CisJCQlpZiAobGVuID4gMCAmJiBidWZbbGVuIC0gMV0gIT0gJ1xuJyAmJiAhZmVvZihmcCkp CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JS VVBURUQpLAorCQkJCQkJIGVycm1zZygibGluZSB0b28gbG9uZyBpbiB0cmFjayBmaWxlIFwi JXNcIiIsIHBhdGgpKSk7CisKKwkJCWlmIChzdHJuY21wKGJ1ZiwgIltkYXRhYmFzZXNdIiwg MTEpID09IDApCisJCQl7CisJCQkJaW5fcmVsYXRpb25zID0gZmFsc2U7CisJCQkJY29udGlu dWU7CisJCQl9CisJCQlpZiAoc3RybmNtcChidWYsICJbcmVsYXRpb25zXSIsIDExKSA9PSAw KQorCQkJeworCQkJCWluX3JlbGF0aW9ucyA9IHRydWU7CisJCQkJY29udGludWU7CisJCQl9 CisJCQlpZiAoaW5fcmVsYXRpb25zKQorCQkJeworCQkJCWlmIChzc2NhbmYoYnVmLCAiJXUg JXUiLCAma2V5LmRib2lkLCAma2V5LnJlbG9pZCkgPT0gMikKKwkJCQkJaGFzaF9zZWFyY2go ZXZzX3RyYWNrX3JlbGF0aW9uc19oYXNoLCAma2V5LCBIQVNIX0VOVEVSLCAmZm91bmQpOwor CQkJCWVsc2UgaWYgKHNzY2FuZihidWYsICIldSIsICZvaWQpID09IDEpCisJCQkJeworCQkJ CQlrZXkuZGJvaWQgPSBJbnZhbGlkT2lkOworCQkJCQlrZXkucmVsb2lkID0gb2lkOworCQkJ CQloYXNoX3NlYXJjaChldnNfdHJhY2tfcmVsYXRpb25zX2hhc2gsICZrZXksIEhBU0hfRU5U RVIsICZmb3VuZCk7CisJCQkJfQorCQkJfQorCQkJZWxzZSBpZiAoc3NjYW5mKGJ1ZiwgIiV1 IiwgJm9pZCkgPT0gMSkKKwkJCQloYXNoX3NlYXJjaChldnNfdHJhY2tfZGF0YWJhc2VzX2hh c2gsICZvaWQsIEhBU0hfRU5URVIsICZmb3VuZCk7CisJCX0KKworCQlpZiAoZmVycm9yKGZw KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2Vzcygp LAorCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcmVhZCB0cmFjayBmaWxlIFwiJXNcIjogJW0i LCBwYXRoKSkpOworCX0KKwlQR19GSU5BTExZKCk7CisJeworCQlGcmVlRmlsZShmcCk7CisJ fQorCVBHX0VORF9UUlkoKTsKK30KKworLyoKKyAqIEF0b21pY2FsbHkgcmV3cml0ZSB0aGUg dHJhY2sgZmlsZS4gQ2FsbGVyIG11c3QgaG9sZCBldnNfdHJhY2tfbG9jaworICogaW4gZXhj bHVzaXZlIG1vZGUuCisgKi8KK3N0YXRpYyB2b2lkCitldnNfdHJhY2tfc2F2ZV9maWxlKHZv aWQpCit7CisJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOworCWNoYXIJCXRtcHBhdGhbTUFYUEdQ QVRIXTsKKwlGSUxFCSAgICpmcDsKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCU9pZAkJ ICAgKmVudHJ5OworCUV2c1RyYWNrUmVsS2V5ICpyZWxfZW50cnk7CisJYm9vbAkJZmFpbGVk ID0gZmFsc2U7CisKKwlpZiAoIURhdGFEaXIgfHwgRGF0YURpclswXSA9PSAnXDAnIHx8CisJ CSFldnNfdHJhY2tfZGF0YWJhc2VzX2hhc2ggfHwgIWV2c190cmFja19yZWxhdGlvbnNfaGFz aCkKKwkJcmV0dXJuOworCisJc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMvJXMi LCBEYXRhRGlyLCBFVlNfVFJBQ0tfRklMRU5BTUUpOworCXNucHJpbnRmKHRtcHBhdGgsIHNp emVvZih0bXBwYXRoKSwgIiVzLnRtcCIsIHBhdGgpOworCisJZnAgPSBBbGxvY2F0ZUZpbGUo dG1wcGF0aCwgUEdfQklOQVJZX1cpOworCWlmICghZnApCisJeworCQllcmVwb3J0KExPRywK KwkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBu b3QgY3JlYXRlIHRyYWNrIGZpbGUgXCIlc1wiOiAlbSIsIHRtcHBhdGgpKSk7CisJCXJldHVy bjsKKwl9CisKKwlQR19UUlkoKTsKKwl7CisJCWlmIChmcHV0cygiW2RhdGFiYXNlc11cbiIs IGZwKSA9PSBFT0YpCisJCQlmYWlsZWQgPSB0cnVlOworCisJCWlmICghZmFpbGVkKQorCQl7 CisJCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGV2c190cmFja19kYXRhYmFzZXNfaGFzaCk7 CisJCQl3aGlsZSAoKGVudHJ5ID0gKE9pZCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJCQl7CisJCQkJaWYgKGZwcmludGYoZnAsICIldVxuIiwgKmVudHJ5KSA8 IDApCisJCQkJeworCQkJCQloYXNoX3NlcV90ZXJtKCZzdGF0dXMpOworCQkJCQlmYWlsZWQg PSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCX0KKworCQlpZiAoIWZhaWxl ZCAmJiBmcHV0cygiW3JlbGF0aW9uc11cbiIsIGZwKSA9PSBFT0YpCisJCQlmYWlsZWQgPSB0 cnVlOworCisJCWlmICghZmFpbGVkKQorCQl7CisJCQloYXNoX3NlcV9pbml0KCZzdGF0dXMs IGV2c190cmFja19yZWxhdGlvbnNfaGFzaCk7CisJCQl3aGlsZSAoKHJlbF9lbnRyeSA9IChF dnNUcmFja1JlbEtleSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJ CQl7CisJCQkJaW50CQkJcmM7CisKKwkJCQlpZiAoT2lkSXNWYWxpZChyZWxfZW50cnktPmRi b2lkKSkKKwkJCQkJcmMgPSBmcHJpbnRmKGZwLCAiJXUgJXVcbiIsIHJlbF9lbnRyeS0+ZGJv aWQsIHJlbF9lbnRyeS0+cmVsb2lkKTsKKwkJCQllbHNlCisJCQkJCXJjID0gZnByaW50Zihm cCwgIjAgJXVcbiIsIHJlbF9lbnRyeS0+cmVsb2lkKTsKKwkJCQlpZiAocmMgPCAwKQorCQkJ CXsKKwkJCQkJaGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKKwkJCQkJZmFpbGVkID0gdHJ1ZTsK KwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQl9CisKKwkJaWYgKCFmYWlsZWQgJiYgZmZs dXNoKGZwKSAhPSAwKQorCQkJZmFpbGVkID0gdHJ1ZTsKKworCQlpZiAoIWZhaWxlZCkKKwkJ eworCQkJaW50CQkJZmQgPSBmaWxlbm8oZnApOworCisJCQlpZiAoZmQgPj0gMCAmJiBwZ19m c3luYyhmZCkgIT0gMCkKKwkJCQllcmVwb3J0KExPRywKKwkJCQkJCShlcnJjb2RlX2Zvcl9m aWxlX2FjY2VzcygpLAorCQkJCQkJIGVycm1zZygiY291bGQgbm90IGZzeW5jIHRyYWNrIGZp bGUgXCIlc1wiOiAlbSIsCisJCQkJCQkJCXRtcHBhdGgpKSk7CisJCX0KKwl9CisJUEdfQ0FU Q0goKTsKKwl7CisJCUZyZWVGaWxlKGZwKTsKKwkJKHZvaWQpIHVubGluayh0bXBwYXRoKTsK KwkJUEdfUkVfVEhST1coKTsKKwl9CisJUEdfRU5EX1RSWSgpOworCisJaWYgKEZyZWVGaWxl KGZwKSAhPSAwKQorCXsKKwkJZXJlcG9ydChMT0csCisJCQkJKGVycmNvZGVfZm9yX2ZpbGVf YWNjZXNzKCksCisJCQkJIGVycm1zZygiY291bGQgbm90IGNsb3NlIHRyYWNrIGZpbGUgXCIl c1wiOiAlbSIsIHRtcHBhdGgpKSk7CisJCWZhaWxlZCA9IHRydWU7CisJfQorCisJaWYgKGZh aWxlZCkKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2Vz cygpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCB3cml0ZSB0cmFjayBmaWxlIFwiJXNcIjog JW0iLCB0bXBwYXRoKSkpOworCQlpZiAodW5saW5rKHRtcHBhdGgpICE9IDAgJiYgZXJybm8g IT0gRU5PRU5UKQorCQkJZXJlcG9ydChMT0csCisJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2Fj Y2VzcygpLAorCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgdW5saW5rIFwiJXNcIjogJW0iLCB0 bXBwYXRoKSkpOworCQlyZXR1cm47CisJfQorCisJaWYgKGR1cmFibGVfcmVuYW1lKHRtcHBh dGgsIHBhdGgsIExPRykgIT0gMCkKKwl7CisJCWlmICh1bmxpbmsodG1wcGF0aCkgIT0gMCAm JiBlcnJubyAhPSBFTk9FTlQpCisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycmNvZGVfZm9y X2ZpbGVfYWNjZXNzKCksCisJCQkJCSBlcnJtc2coImNvdWxkIG5vdCB1bmxpbmsgXCIlc1wi OiAlbSIsIHRtcHBhdGgpKSk7CisJfQorfQorCisvKgorICogQ2hlY2sgaWYgT0lEIGlzIGlu IHRoZSBnaXZlbiBoYXNoCisgKi8KK3N0YXRpYyBib29sCitldnNfb2lkX2luX2xpc3QoSFRB QiAqaGFzaCwgT2lkIG9pZCkKK3sKKwlpZiAoIWhhc2gpCisJCXJldHVybiBmYWxzZTsKKwlp ZiAoaGFzaF9nZXRfbnVtX2VudHJpZXMoaGFzaCkgPT0gMCkKKwkJcmV0dXJuIGZhbHNlOwor CXJldHVybiBoYXNoX3NlYXJjaChoYXNoLCAmb2lkLCBIQVNIX0ZJTkQsIE5VTEwpICE9IE5V TEw7Cit9CisKKy8qCisgKiBDaGVjayBpZiAoZGJvaWQsIHJlbGlkKSBpcyBpbiB0cmFja19y ZWxhdGlvbnMgbGlzdC4KKyAqLworc3RhdGljIGJvb2wKK2V2c19yZWxfaW5fbGlzdChPaWQg ZGJvaWQsIE9pZCByZWxpZCkKK3sKKwlFdnNUcmFja1JlbEtleSBrZXk7CisKKwlpZiAoIWV2 c190cmFja19yZWxhdGlvbnNfaGFzaCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChoYXNoX2dl dF9udW1fZW50cmllcyhldnNfdHJhY2tfcmVsYXRpb25zX2hhc2gpID09IDApCisJCXJldHVy biBmYWxzZTsKKwlrZXkuZGJvaWQgPSBkYm9pZDsKKwlrZXkucmVsb2lkID0gcmVsaWQ7CisJ aWYgKGhhc2hfc2VhcmNoKGV2c190cmFja19yZWxhdGlvbnNfaGFzaCwgJmtleSwgSEFTSF9G SU5ELCBOVUxMKSAhPSBOVUxMKQorCQlyZXR1cm4gdHJ1ZTsKKwlrZXkuZGJvaWQgPSBJbnZh bGlkT2lkOworCXJldHVybiBoYXNoX3NlYXJjaChldnNfdHJhY2tfcmVsYXRpb25zX2hhc2gs ICZrZXksIEhBU0hfRklORCwgTlVMTCkgIT0gTlVMTDsKK30KKworLyoKKyAqIERlY2lkZSB3 aGV0aGVyIHRvIHRyYWNrIHN0YXRpc3RpY3MgZm9yIHJlbGF0aW9ucy4KKyAqIFJlbGF0aW9u IGlzIHRyYWNrZWQgaWYgaXQgaXMgaW4gdGhlIHRyYWNrIGxpc3Qgb3IgYSBzcGVjaWFsIGZp bHRlciBpcyBlbmFibGVkLgorICovCitzdGF0aWMgYm9vbAorZXZzX3Nob3VsZF90cmFja19y ZWxhdGlvbl9zdGF0aXN0aWNzKE9pZCBkYm9pZCwgT2lkIHJlbGlkKQoreworCWV2c190cmFj a19oYXNoX2Vuc3VyZV9pbml0KCk7CisKKwlpZiAoZXZzX3RyYWNrX2RhdGFiYXNlc19mcm9t X2xpc3QgJiYKKwkJIWV2c19vaWRfaW5fbGlzdChldnNfdHJhY2tfZGF0YWJhc2VzX2hhc2gs IGRib2lkKSkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChldnNfdHJhY2tfcmVsYXRpb25zX2Zy b21fbGlzdCAmJgorCQkhKGV2c19yZWxfaW5fbGlzdChkYm9pZCwgcmVsaWQpIHx8IGV2c19y ZWxfaW5fbGlzdChJbnZhbGlkT2lkLCByZWxpZCkpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlp ZiAoKGV2c190cmFja19iaXRzICYgRVZTX1RSQUNLX1JFTEFUSU9OUykgPT0gMCkKKwkJcmV0 dXJuIGZhbHNlOwkJCS8qIGRhdGFiYXNlLW9ubHkgbW9kZSAqLworCWlmIChldnNfdHJhY2tf cmVsYXRpb25zX2JpdHMgPT0gRVZTX0ZJTFRFUl9TWVNURU0pCisJCXJldHVybiBJc0NhdGFs b2dSZWxhdGlvbk9pZChyZWxpZCk7CisJaWYgKGV2c190cmFja19yZWxhdGlvbnNfYml0cyA9 PSBFVlNfRklMVEVSX1VTRVIpCisJCXJldHVybiAhSXNDYXRhbG9nUmVsYXRpb25PaWQocmVs aWQpOworCXJldHVybiB0cnVlOworfQorCisvKgorICogRGVjaWRlIHdoZXRoZXIgdG8gdHJh Y2sgc3RhdGlzdGljcyBmb3IgZGF0YWJhc2VzLgorICogRGF0YWJhc2Ugc3RhdGlzdGljcyBp cyB0cmFja2VkIGlmIGl0IGlzIGluIHRoZSB0cmFjayBsaXN0IG9yIGEgc3BlY2lhbCBmaWx0 ZXIgaXMgZW5hYmxlZC4KKyAqLworc3RhdGljIGJvb2wKK2V2c19zaG91bGRfdHJhY2tfZGF0 YWJhc2Vfc3RhdGlzdGljcyhPaWQgZGJvaWQpCit7CisJZXZzX3RyYWNrX2hhc2hfZW5zdXJl X2luaXQoKTsKKworCWlmIChldnNfdHJhY2tfZGF0YWJhc2VzX2Zyb21fbGlzdCAmJgorCQkh ZXZzX29pZF9pbl9saXN0KGV2c190cmFja19kYXRhYmFzZXNfaGFzaCwgZGJvaWQpKQorCQly ZXR1cm4gZmFsc2U7CisJaWYgKChldnNfdHJhY2tfYml0cyAmIEVWU19UUkFDS19EQVRBQkFT RVMpID09IDApCisJCXJldHVybiBmYWxzZTsJCQkvKiByZWxhdGlvbnMtb25seSBtb2RlICov CisJaWYgKGV2c190cmFja19iaXRzID09IEVWU19UUkFDS19EQVRBQkFTRVMpCisJCXJldHVy biB0cnVlOwkJCS8qIGRhdGFiYXNlcy1vbmx5LCBhY2N1bXVsYXRlIHRvIGRiICovCisJcmV0 dXJuIHRydWU7Cit9CisKKworLyogQWNjdW11bGF0ZSBjb21tb24gY291bnRzIGZvciBkYXRh YmFzZS1sZXZlbCBzdGF0cy4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorcGdzdGF0X2FjY3Vt dWxhdGVfY29tbW9uX2Zvcl9kYihQZ1N0YXRfQ29tbW9uQ291bnRzICogZHN0LAorCQkJCQkJ CQljb25zdCBQZ1N0YXRfQ29tbW9uQ291bnRzICogc3JjKQoreworCXBnc3RhdF9hY2N1bXVs YXRlX2NvbW1vbihkc3QsIHNyYyk7Cit9CisKKy8qCisgKiBTdG9yZSBpbmNvbWluZyB2YWN1 dW0gc3RhdHMgaW50byBwZ3N0YXQgY3VzdG9tIHN0YXRpc3RpY3MuCisgKiBzdG9yZV9yZWxh dGlvbjogY3JlYXRlL3VwZGF0ZSBwZXItcmVsYXRpb24gZW50cnkKKyAqIHN0b3JlX2RiOiBh Y2N1bXVsYXRlIGludG8gZGF0YWJhc2UtbGV2ZWwgZW50cnkgKGRib2lkLCBvYmppZD0wKS4K KyAqIFVzZXMgcGdzdGF0X2dldF9lbnRyeV9yZWZfbG9ja2VkIGFuZCBwZ3N0YXRfYWNjdW11 bGF0ZV8qIGZvciBhdG9taWMgdXBkYXRlcy4KKyAqLworc3RhdGljIHZvaWQKK2V4dHZhY19z dG9yZShPaWQgZGJvaWQsIE9pZCByZWxpZCwgaW50IHR5cGUsCisJCQkgUGdTdGF0X1ZhY3V1 bVJlbGF0aW9uQ291bnRzICogcGFyYW1zLAorCQkJIGJvb2wgc3RvcmVfcmVsYXRpb24sIGJv b2wgc3RvcmVfZGIpCit7CisJUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWY7CisJUGdTdGF0 U2hhcmVkX0V4dFZhY0VudHJ5ICpzaGFyZWQ7CisJdWludDY0CQlvYmppZDsKKworCWlmICgh ZXZzX2VuYWJsZWQpCisJCXJldHVybjsKKworCWlmIChzdG9yZV9yZWxhdGlvbikKKwl7CisJ CW9iamlkID0gRVhUVkFDX09CSklEKHJlbGlkLCB0eXBlKTsKKwkJZW50cnlfcmVmID0gcGdz dGF0X2dldF9lbnRyeV9yZWZfbG9ja2VkKFBHU1RBVF9LSU5EX0VYVFZBQ19SRUxBVElPTiwg ZGJvaWQsIG9iamlkLCBmYWxzZSk7CisJCWlmIChlbnRyeV9yZWYpCisJCXsKKwkJCXNoYXJl ZCA9IChQZ1N0YXRTaGFyZWRfRXh0VmFjRW50cnkgKikgZW50cnlfcmVmLT5zaGFyZWRfc3Rh dHM7CisJCQlpZiAoc2hhcmVkLT5zdGF0cy50eXBlID09IFBHU1RBVF9FWFRWQUNfSU5WQUxJ RCkKKwkJCXsKKwkJCQltZW1zZXQoJnNoYXJlZC0+c3RhdHMsIDAsIHNpemVvZihzaGFyZWQt PnN0YXRzKSk7CisJCQkJc2hhcmVkLT5zdGF0cy50eXBlID0gcGFyYW1zLT50eXBlOworCQkJ fQorCQkJcGdzdGF0X2FjY3VtdWxhdGVfZXh0dmFjX3N0YXRzKCZzaGFyZWQtPnN0YXRzLCBw YXJhbXMpOworCQkJcGdzdGF0X3VubG9ja19lbnRyeShlbnRyeV9yZWYpOworCQl9CisJfQor CisJaWYgKHN0b3JlX2RiKQorCXsKKwkJZW50cnlfcmVmID0gcGdzdGF0X2dldF9lbnRyeV9y ZWZfbG9ja2VkKFBHU1RBVF9LSU5EX0VYVFZBQ19EQiwgZGJvaWQsIEludmFsaWRPaWQsIGZh bHNlKTsKKwkJaWYgKGVudHJ5X3JlZikKKwkJeworCQkJc2hhcmVkID0gKFBnU3RhdFNoYXJl ZF9FeHRWYWNFbnRyeSAqKSBlbnRyeV9yZWYtPnNoYXJlZF9zdGF0czsKKwkJCWlmIChzaGFy ZWQtPnN0YXRzLnR5cGUgPT0gUEdTVEFUX0VYVFZBQ19JTlZBTElEKQorCQkJeworCQkJCW1l bXNldCgmc2hhcmVkLT5zdGF0cywgMCwgc2l6ZW9mKHNoYXJlZC0+c3RhdHMpKTsKKwkJCQlz aGFyZWQtPnN0YXRzLnR5cGUgPSBQR1NUQVRfRVhUVkFDX0RCOworCQkJfQorCQkJcGdzdGF0 X2FjY3VtdWxhdGVfY29tbW9uX2Zvcl9kYigmc2hhcmVkLT5zdGF0cy5jb21tb24sICZwYXJh bXMtPmNvbW1vbik7CisJCQlwZ3N0YXRfdW5sb2NrX2VudHJ5KGVudHJ5X3JlZik7CisJCX0K Kwl9Cit9CisKKy8qCisgKiBWYWN1dW0gcmVwb3J0IGhvb2s6IGNhbGxlZCB3aGVuIHZhY3V1 bSBmaW5pc2hlcy4gRmlsdGVycyBieSB0cmFjayBzZXR0aW5ncywKKyAqIHN0b3JlcyBzdGF0 cyBwZXItcmVsYXRpb24gYW5kL29yIHBlci1kYXRhYmFzZSwgdGhlbiBjaGFpbnMgdG8gcHJl dmlvdXMgaG9vay4KKyAqLworc3RhdGljIHZvaWQKK3Bnc3RhdF9yZXBvcnRfdmFjdXVtX2V4 dHN0YXRzKE9pZCB0YWJsZW9pZCwgYm9vbCBzaGFyZWQsCisJCQkJCQkJICBQZ1N0YXRfVmFj dXVtUmVsYXRpb25Db3VudHMgKiBwYXJhbXMpCit7CisJT2lkCQkJZGJvaWQgPSBzaGFyZWQg PyBJbnZhbGlkT2lkIDogTXlEYXRhYmFzZUlkOworCWJvb2wJCXN0b3JlX3JlbGF0aW9uOwor CWJvb2wJCXN0b3JlX2RiOworCisJaWYgKGV2c19lbmFibGVkKQorCXsKKwkJc3RvcmVfcmVs YXRpb24gPSBldnNfc2hvdWxkX3RyYWNrX3JlbGF0aW9uX3N0YXRpc3RpY3MoZGJvaWQsIHRh Ymxlb2lkKTsKKwkJc3RvcmVfZGIgPSBldnNfc2hvdWxkX3RyYWNrX2RhdGFiYXNlX3N0YXRp c3RpY3MoZGJvaWQpOworCisJCWlmIChzdG9yZV9yZWxhdGlvbiB8fCBzdG9yZV9kYikKKwkJ CWV4dHZhY19zdG9yZShkYm9pZCwgdGFibGVvaWQsIHBhcmFtcy0+dHlwZSwgcGFyYW1zLCBz dG9yZV9yZWxhdGlvbiwgc3RvcmVfZGIpOworCX0KKwlpZiAocHJldl9yZXBvcnRfdmFjdXVt X2hvb2spCisJCXByZXZfcmVwb3J0X3ZhY3V1bV9ob29rKHRhYmxlb2lkLCBzaGFyZWQsIHBh cmFtcyk7Cit9CisKKy8qIFJlc2V0IHN0YXRpc3RpY3MgZm9yIGEgc2luZ2xlIHJlbGF0aW9u IGVudHJ5LiAqLworc3RhdGljIGJvb2wKK2V4dHZhY19yZXNldF9ieV9yZWxpZChPaWQgZGJv aWQsIE9pZCByZWxpZCwgaW50IHR5cGUpCit7CisJdWludDY0CQlvYmppZCA9IEVYVFZBQ19P QkpJRChyZWxpZCwgdHlwZSk7CisKKwlwZ3N0YXRfcmVzZXRfZW50cnkoUEdTVEFUX0tJTkRf RVhUVkFDX1JFTEFUSU9OLCBkYm9pZCwgb2JqaWQsIDApOworCXJldHVybiB0cnVlOworfQor CisvKiBDYWxsYmFjayBmb3IgcGdzdGF0X3Jlc2V0X21hdGNoaW5nX2VudHJpZXM6IG1hdGNo IHJlbGF0aW9uIGVudHJpZXMgZm9yIGdpdmVuIGRiICovCitzdGF0aWMgYm9vbAorbWF0Y2hf ZXh0dmFjX3JlbGF0aW9uc19mb3JfZGIoUGdTdGF0U2hhcmVkX0hhc2hFbnRyeSAqZW50cnks IERhdHVtIG1hdGNoX2RhdGEpCit7CisJcmV0dXJuIGVudHJ5LT5rZXkua2luZCA9PSBQR1NU QVRfS0lORF9FWFRWQUNfUkVMQVRJT04gJiYKKwkJZW50cnktPmtleS5kYm9pZCA9PSBEYXR1 bUdldE9iamVjdElkKG1hdGNoX2RhdGEpOworfQorCisvKgorICogUmVzZXQgc3RhdGlzdGlj cyBmb3IgYSBkYXRhYmFzZSAoYWdncmVnYXRlIGVudHJ5KSBhbmQgYWxsIGl0cyByZWxhdGlv bnMuCisgKi8KK3N0YXRpYyBpbnQ2NAorZXh0dmFjX2RhdGFiYXNlX3Jlc2V0KE9pZCBkYm9p ZCkKK3sKKwlwZ3N0YXRfcmVzZXRfbWF0Y2hpbmdfZW50cmllcyhtYXRjaF9leHR2YWNfcmVs YXRpb25zX2Zvcl9kYiwKKwkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKGRib2lkKSwgMCk7 CisJcGdzdGF0X3Jlc2V0X2VudHJ5KFBHU1RBVF9LSU5EX0VYVFZBQ19EQiwgZGJvaWQsIDAs IDApOworCXJldHVybiAxOworfQorCisvKiBSZXNldCBhbGwgdmFjdXVtIHN0YXRpc3RpY3Mg KGJvdGggcmVsYXRpb24gYW5kIGRhdGFiYXNlIGVudHJpZXMpLiAqLworc3RhdGljIGludDY0 CitleHR2YWNfc3RhdF9yZXNldCh2b2lkKQoreworCXBnc3RhdF9yZXNldF9vZl9raW5kKFBH U1RBVF9LSU5EX0VYVFZBQ19SRUxBVElPTik7CisJcGdzdGF0X3Jlc2V0X29mX2tpbmQoUEdT VEFUX0tJTkRfRVhUVkFDX0RCKTsKKwlyZXR1cm4gMDsJCQkJCS8qIGNvdW50IG5vdCBhdmFp bGFibGUgKi8KK30KKworUEdfRlVOQ1RJT05fSU5GT19WMSh2YWN1dW1fc3RhdGlzdGljc19y ZXNldCk7CitQR19GVU5DVElPTl9JTkZPX1YxKGV4dHZhY19zaGFyZWRfbWVtb3J5X3NpemUp OworUEdfRlVOQ1RJT05fSU5GT19WMShleHR2YWNfcmVzZXRfZW50cnkpOworUEdfRlVOQ1RJ T05fSU5GT19WMShleHR2YWNfcmVzZXRfZGJfZW50cnkpOworCitEYXR1bQordmFjdXVtX3N0 YXRpc3RpY3NfcmVzZXQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlQR19SRVRVUk5fSU5UNjQo ZXh0dmFjX3N0YXRfcmVzZXQoKSk7Cit9CisKK0RhdHVtCitleHR2YWNfcmVzZXRfZW50cnko UEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQlkYm9pZCA9IFBHX0dFVEFSR19PSUQoMCk7 CisJT2lkCQkJcmVsaWQgPSBQR19HRVRBUkdfT0lEKDEpOworCWludAkJCXR5cGUgPSBQR19H RVRBUkdfSU5UMzIoMik7CisKKwlQR19SRVRVUk5fQk9PTChleHR2YWNfcmVzZXRfYnlfcmVs aWQoZGJvaWQsIHJlbGlkLCB0eXBlKSk7Cit9CisKK0RhdHVtCitleHR2YWNfcmVzZXRfZGJf ZW50cnkoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQlkYm9pZCA9IFBHX0dFVEFSR19P SUQoMCk7CisKKwlQR19SRVRVUk5fSU5UNjQoZXh0dmFjX2RhdGFiYXNlX3Jlc2V0KGRib2lk KSk7Cit9CisKKy8qCisgKiBSZXR1cm4gdG90YWwgc2hhcmVkIG1lbW9yeSBpbiBieXRlcyB1 c2VkIGJ5IHRoZSBleHRlbnNpb24gZm9yIHZhY3V1bSBzdGF0cy4KKyAqIFVzZWQgZm9yIG1v bml0b3JpbmcgYW5kIGNhcGFjaXR5IHBsYW5uaW5nOiBtZW1vcnkgZ3Jvd3Mgd2l0aCB0aGUg bnVtYmVyIG9mCisgKiB0cmFja2VkIHJlbGF0aW9ucyBhbmQgZGF0YWJhc2VzLgorICovCitE YXR1bQorZXh0dmFjX3NoYXJlZF9tZW1vcnlfc2l6ZShQR19GVU5DVElPTl9BUkdTKQorewor CXVpbnQ2NAkJcmVsX2NvdW50OworCXVpbnQ2NAkJZGJfY291bnQ7CisJdWludDY0CQl0b3Rh bDsKKwlzaXplX3QJCWVudHJ5X3NpemUgPSBzaXplb2YoUGdTdGF0U2hhcmVkX0V4dFZhY0Vu dHJ5KTsKKworCXJlbF9jb3VudCA9IHBnc3RhdF9nZXRfZW50cnlfY291bnQoUEdTVEFUX0tJ TkRfRVhUVkFDX1JFTEFUSU9OKTsKKwlkYl9jb3VudCA9IHBnc3RhdF9nZXRfZW50cnlfY291 bnQoUEdTVEFUX0tJTkRfRVhUVkFDX0RCKTsKKwl0b3RhbCA9IHJlbF9jb3VudCArIGRiX2Nv dW50OworCisJUEdfUkVUVVJOX0lOVDY0KChpbnQ2NCkgKHRvdGFsICogZW50cnlfc2l6ZSkp OworfQorCisvKgorICogVHJhY2sgbGlzdCBtYW5hZ2VtZW50OiBhZGQvcmVtb3ZlIGRhdGFi YXNlIG9yIHJlbGF0aW9uIE9JRHMuCisgKiBDaGFuZ2VzIGFyZSBwZXJzaXN0ZWQgdG8gcGdf c3RhdC9leHRfdmFjdXVtX3N0YXRpc3RpY3NfdHJhY2sub2lkLgorICovCisKK1BHX0ZVTkNU SU9OX0lORk9fVjEoZXZzX2FkZF90cmFja19kYXRhYmFzZSk7CitQR19GVU5DVElPTl9JTkZP X1YxKGV2c19yZW1vdmVfdHJhY2tfZGF0YWJhc2UpOworUEdfRlVOQ1RJT05fSU5GT19WMShl dnNfYWRkX3RyYWNrX3JlbGF0aW9uKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZXZzX3JlbW92 ZV90cmFja19yZWxhdGlvbik7CisKKy8qCisgKiBNdXRhdGluZyB0cmFjay1saXN0IGVudHJ5 IHBvaW50czogcmVxdWlyZSBzZXJ2ZXItd2lkZSBwcml2aWxlZ2UsIHNpbmNlCisgKiB0aGUg dW5kZXJseWluZyBsaXN0cyBzdGVlciB0cmFja2luZyBmb3IgZXZlcnkgYmFja2VuZC4KKyAq Lworc3RhdGljIHZvaWQKK2V2c19yZXF1aXJlX3RyYWNrX3ByaXZpbGVnZShjb25zdCBjaGFy ICpmdW5jbmFtZSkKK3sKKwlpZiAoIXN1cGVydXNlcigpICYmICFoYXNfcHJpdnNfb2Zfcm9s ZShHZXRVc2VySWQoKSwgUk9MRV9QR19SRUFEX0FMTF9TVEFUUykpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJ CQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgZnVuY3Rpb24gJXMiLCBmdW5jbmFt ZSksCisJCQkJIGVycmhpbnQoIk9ubHkgc3VwZXJ1c2VycyBhbmQgbWVtYmVycyBvZiBwZ19y ZWFkX2FsbF9zdGF0cyAiCisJCQkJCQkgIm1heSBjaGFuZ2UgdGhlIHZhY3V1bSBzdGF0aXN0 aWNzIHRyYWNrIGxpc3QuIikpKTsKK30KKworRGF0dW0KK2V2c19hZGRfdHJhY2tfZGF0YWJh c2UoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQlvaWQgPSBQR19HRVRBUkdfT0lEKDAp OworCWJvb2wJCWZvdW5kOworCUxXTG9jawkgICAqbG9jazsKKworCWV2c19yZXF1aXJlX3Ry YWNrX3ByaXZpbGVnZSgiYWRkX3RyYWNrX2RhdGFiYXNlIik7CisJbG9jayA9IGV2c19nZXRf dHJhY2tfbG9jaygpOworCUxXTG9ja0FjcXVpcmUobG9jaywgTFdfRVhDTFVTSVZFKTsKKwll dnNfdHJhY2tfaGFzaF9lbnN1cmVfaW5pdCgpOworCWhhc2hfc2VhcmNoKGV2c190cmFja19k YXRhYmFzZXNfaGFzaCwgJm9pZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwlldnNfdHJhY2tf c2F2ZV9maWxlKCk7CisJTFdMb2NrUmVsZWFzZShsb2NrKTsKKwlQR19SRVRVUk5fQk9PTCgh Zm91bmQpOwkJLyogdHJ1ZSBpZiBuZXdseSBhZGRlZCAqLworfQorCitEYXR1bQorZXZzX3Jl bW92ZV90cmFja19kYXRhYmFzZShQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCW9pZCA9 IFBHX0dFVEFSR19PSUQoMCk7CisJYm9vbAkJZm91bmQ7CisJTFdMb2NrCSAgICpsb2NrOwor CisJZXZzX3JlcXVpcmVfdHJhY2tfcHJpdmlsZWdlKCJyZW1vdmVfdHJhY2tfZGF0YWJhc2Ui KTsKKwlsb2NrID0gZXZzX2dldF90cmFja19sb2NrKCk7CisJTFdMb2NrQWNxdWlyZShsb2Nr LCBMV19FWENMVVNJVkUpOworCWV2c190cmFja19oYXNoX2Vuc3VyZV9pbml0KCk7CisJaGFz aF9zZWFyY2goZXZzX3RyYWNrX2RhdGFiYXNlc19oYXNoLCAmb2lkLCBIQVNIX1JFTU9WRSwg JmZvdW5kKTsKKwlldnNfdHJhY2tfc2F2ZV9maWxlKCk7CisJTFdMb2NrUmVsZWFzZShsb2Nr KTsKKwlQR19SRVRVUk5fQk9PTChmb3VuZCk7Cit9CisKK0RhdHVtCitldnNfYWRkX3RyYWNr X3JlbGF0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJRXZzVHJhY2tSZWxLZXkga2V5Owor CWJvb2wJCWZvdW5kOworCUxXTG9jawkgICAqbG9jazsKKworCWV2c19yZXF1aXJlX3RyYWNr X3ByaXZpbGVnZSgiYWRkX3RyYWNrX3JlbGF0aW9uIik7CisJa2V5LmRib2lkID0gUEdfR0VU QVJHX09JRCgwKTsKKwlrZXkucmVsb2lkID0gUEdfR0VUQVJHX09JRCgxKTsKKwlsb2NrID0g ZXZzX2dldF90cmFja19sb2NrKCk7CisJTFdMb2NrQWNxdWlyZShsb2NrLCBMV19FWENMVVNJ VkUpOworCWV2c190cmFja19oYXNoX2Vuc3VyZV9pbml0KCk7CisJaGFzaF9zZWFyY2goZXZz X3RyYWNrX3JlbGF0aW9uc19oYXNoLCAma2V5LCBIQVNIX0VOVEVSLCAmZm91bmQpOworCWV2 c190cmFja19zYXZlX2ZpbGUoKTsKKwlMV0xvY2tSZWxlYXNlKGxvY2spOworCVBHX1JFVFVS Tl9CT09MKCFmb3VuZCk7CQkvKiB0cnVlIGlmIG5ld2x5IGFkZGVkICovCit9CisKK0RhdHVt CitldnNfcmVtb3ZlX3RyYWNrX3JlbGF0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJRXZz VHJhY2tSZWxLZXkga2V5OworCWJvb2wJCWZvdW5kOworCUxXTG9jawkgICAqbG9jazsKKwor CWV2c19yZXF1aXJlX3RyYWNrX3ByaXZpbGVnZSgicmVtb3ZlX3RyYWNrX3JlbGF0aW9uIik7 CisJa2V5LmRib2lkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlrZXkucmVsb2lkID0gUEdfR0VU QVJHX09JRCgxKTsKKwlsb2NrID0gZXZzX2dldF90cmFja19sb2NrKCk7CisJTFdMb2NrQWNx dWlyZShsb2NrLCBMV19FWENMVVNJVkUpOworCWV2c190cmFja19oYXNoX2Vuc3VyZV9pbml0 KCk7CisJaGFzaF9zZWFyY2goZXZzX3RyYWNrX3JlbGF0aW9uc19oYXNoLCAma2V5LCBIQVNI X1JFTU9WRSwgJmZvdW5kKTsKKwlldnNfdHJhY2tfc2F2ZV9maWxlKCk7CisJTFdMb2NrUmVs ZWFzZShsb2NrKTsKKwlQR19SRVRVUk5fQk9PTChmb3VuZCk7Cit9CisKKy8qCisgKiBSZXR1 cm5zIHRoZSBsaXN0IG9mIGRhdGFiYXNlIGFuZCByZWxhdGlvbiBPSURzIGZvciB3aGljaCBz dGF0aXN0aWNzCisgKiBhcmUgY29sbGVjdGVkLgorICovCitQR19GVU5DVElPTl9JTkZPX1Yx KGV2c190cmFja19saXN0KTsKKworRGF0dW0KK2V2c190cmFja19saXN0KFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikg ZmNpbmZvLT5yZXN1bHRpbmZvOworCVR1cGxlRGVzYwl0dXBkZXNjOworCVR1cGxlc3RvcmVz dGF0ZSAqdHVwc3RvcmU7CisJTWVtb3J5Q29udGV4dCBwZXJfcXVlcnlfY3R4OworCU1lbW9y eUNvbnRleHQgb2xkY29udGV4dDsKKwlEYXR1bQkJdmFsdWVzWzNdOworCWJvb2wJCW51bGxz WzNdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2V9OworCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 CisJT2lkCQkgICAqZW50cnk7CisJRXZzVHJhY2tSZWxLZXkgKnJlbF9lbnRyeTsKKworCWlm ICghcnNpbmZvIHx8ICFJc0EocnNpbmZvLCBSZXR1cm5TZXRJbmZvKSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJ CQkJIGVycm1zZygiZXh0X3ZhY3V1bV9zdGF0aXN0aWNzOiBzZXQtdmFsdWVkIGZ1bmN0aW9u IGNhbGxlZCBpbiBjb250ZXh0IHRoYXQgY2Fubm90IGFjY2VwdCBhIHNldCIpKSk7CisJaWYg KCEocnNpbmZvLT5hbGxvd2VkTW9kZXMgJiBTRlJNX01hdGVyaWFsaXplKSkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJIGVycm1zZygiZXh0X3ZhY3V1bV9zdGF0aXN0aWNzOiBtYXRlcmlhbGl6ZSBtb2Rl IHJlcXVpcmVkIikpKTsKKworCWV2c190cmFja19oYXNoX2Vuc3VyZV9pbml0KCk7CisKKwlw ZXJfcXVlcnlfY3R4ID0gcnNpbmZvLT5lY29udGV4dC0+ZWN4dF9wZXJfcXVlcnlfbWVtb3J5 OworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGVyX3F1ZXJ5X2N0eCk7 CisKKwlpZiAoZ2V0X2NhbGxfcmVzdWx0X3R5cGUoZmNpbmZvLCBOVUxMLCAmdHVwZGVzYykg IT0gVFlQRUZVTkNfQ09NUE9TSVRFKQorCQllbG9nKEVSUk9SLCAiZXh0X3ZhY3V1bV9zdGF0 aXN0aWNzOiByZXR1cm4gdHlwZSBtdXN0IGJlIGEgcm93IHR5cGUiKTsKKworCXR1cHN0b3Jl ID0gdHVwbGVzdG9yZV9iZWdpbl9oZWFwKHRydWUsIGZhbHNlLCB3b3JrX21lbSk7CisJcnNp bmZvLT5yZXR1cm5Nb2RlID0gU0ZSTV9NYXRlcmlhbGl6ZTsKKwlyc2luZm8tPnNldFJlc3Vs dCA9IHR1cHN0b3JlOworCXJzaW5mby0+c2V0RGVzYyA9IHR1cGRlc2M7CisKKwkvKiBEYXRh YmFzZXMgKi8KKwlpZiAoaGFzaF9nZXRfbnVtX2VudHJpZXMoZXZzX3RyYWNrX2RhdGFiYXNl c19oYXNoKSA9PSAwKQorCXsKKwkJdmFsdWVzWzBdID0gQ1N0cmluZ0dldFRleHREYXR1bSgi ZGF0YWJhc2UiKTsKKwkJbnVsbHNbMV0gPSB0cnVlOworCQludWxsc1syXSA9IHRydWU7CisJ CXR1cGxlc3RvcmVfcHV0dmFsdWVzKHR1cHN0b3JlLCB0dXBkZXNjLCB2YWx1ZXMsIG51bGxz KTsKKwkJbnVsbHNbMV0gPSBmYWxzZTsKKwkJbnVsbHNbMl0gPSBmYWxzZTsKKwl9CisJZWxz ZQorCXsKKwkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBldnNfdHJhY2tfZGF0YWJhc2VzX2hh c2gpOworCQl3aGlsZSAoKGVudHJ5ID0gKE9pZCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1 cykpICE9IE5VTEwpCisJCXsKKwkJCXZhbHVlc1swXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0o ImRhdGFiYXNlIik7CisJCQl2YWx1ZXNbMV0gPSBPYmplY3RJZEdldERhdHVtKCplbnRyeSk7 CisJCQludWxsc1syXSA9IHRydWU7CisJCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyh0dXBzdG9y ZSwgdHVwZGVzYywgdmFsdWVzLCBudWxscyk7CisJCQludWxsc1syXSA9IGZhbHNlOworCQl9 CisJfQorCisJLyogUmVsYXRpb25zICovCisJaWYgKGhhc2hfZ2V0X251bV9lbnRyaWVzKGV2 c190cmFja19yZWxhdGlvbnNfaGFzaCkgPT0gMCkKKwl7CisJCXZhbHVlc1swXSA9IENTdHJp bmdHZXRUZXh0RGF0dW0oInJlbGF0aW9uIik7CisJCW51bGxzWzFdID0gdHJ1ZTsKKwkJbnVs bHNbMl0gPSB0cnVlOworCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyh0dXBzdG9yZSwgdHVwZGVz YywgdmFsdWVzLCBudWxscyk7CisJCW51bGxzWzFdID0gZmFsc2U7CisJCW51bGxzWzJdID0g ZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgZXZzX3Ry YWNrX3JlbGF0aW9uc19oYXNoKTsKKwkJd2hpbGUgKChyZWxfZW50cnkgPSAoRXZzVHJhY2tS ZWxLZXkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQl7CisJCQl2 YWx1ZXNbMF0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKCJyZWxhdGlvbiIpOworCQkJdmFsdWVz WzFdID0gT2JqZWN0SWRHZXREYXR1bShyZWxfZW50cnktPmRib2lkKTsKKwkJCXZhbHVlc1sy XSA9IE9iamVjdElkR2V0RGF0dW0ocmVsX2VudHJ5LT5yZWxvaWQpOworCQkJdHVwbGVzdG9y ZV9wdXR2YWx1ZXModHVwc3RvcmUsIHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpOworCQl9CisJ fQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJcmV0dXJuIChE YXR1bSkgMDsKK30KKworLyoKKyAqIE91dHB1dCB2YWN1dW0gc3RhdGlzdGljcyAodGFibGVz LCBpbmRleGVzLCBvciBwZXItZGF0YWJhc2UgYWdncmVnYXRlcykuCisgKi8KKyNkZWZpbmUg RVhUVkFDX0NPTU1PTl9TVEFUX0NPTFMgMTIKKworc3RhdGljIHZvaWQKK3R1cGxlc3RvcmVf cHV0X2NvbW1vbihQZ1N0YXRfQ29tbW9uQ291bnRzICogdmFjdXVtX2V4dCwKKwkJCQkJICBE YXR1bSAqdmFsdWVzLCBib29sICpudWxscywgaW50ICppKQoreworCWNoYXIJCWJ1ZlsyNTZd OworCWNvbnN0IGludAliYXNlID0gKmk7CisKKwl2YWx1ZXNbKCppKSsrXSA9IEludDY0R2V0 RGF0dW0odmFjdXVtX2V4dC0+dG90YWxfYmxrc19yZWFkKTsKKwl2YWx1ZXNbKCppKSsrXSA9 IEludDY0R2V0RGF0dW0odmFjdXVtX2V4dC0+dG90YWxfYmxrc19oaXQpOworCXZhbHVlc1so KmkpKytdID0gSW50NjRHZXREYXR1bSh2YWN1dW1fZXh0LT50b3RhbF9ibGtzX2RpcnRpZWQp OworCXZhbHVlc1soKmkpKytdID0gSW50NjRHZXREYXR1bSh2YWN1dW1fZXh0LT50b3RhbF9i bGtzX3dyaXR0ZW4pOworCXZhbHVlc1soKmkpKytdID0gSW50NjRHZXREYXR1bSh2YWN1dW1f ZXh0LT53YWxfcmVjb3Jkcyk7CisJdmFsdWVzWygqaSkrK10gPSBJbnQ2NEdldERhdHVtKHZh Y3V1bV9leHQtPndhbF9mcGkpOworCXNucHJpbnRmKGJ1Ziwgc2l6ZW9mIGJ1ZiwgVUlOVDY0 X0ZPUk1BVCwgdmFjdXVtX2V4dC0+d2FsX2J5dGVzKTsKKwl2YWx1ZXNbKCppKSsrXSA9IERp cmVjdEZ1bmN0aW9uQ2FsbDMobnVtZXJpY19pbiwKKwkJCQkJCQkJCQkgQ1N0cmluZ0dldERh dHVtKGJ1ZiksCisJCQkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0oMCksCisJCQkJCQkJCQkJ IEludDMyR2V0RGF0dW0oLTEpKTsKKwl2YWx1ZXNbKCppKSsrXSA9IEZsb2F0OEdldERhdHVt KHZhY3V1bV9leHQtPmJsa19yZWFkX3RpbWUpOworCXZhbHVlc1soKmkpKytdID0gRmxvYXQ4 R2V0RGF0dW0odmFjdXVtX2V4dC0+YmxrX3dyaXRlX3RpbWUpOworCXZhbHVlc1soKmkpKytd ID0gRmxvYXQ4R2V0RGF0dW0odmFjdXVtX2V4dC0+ZGVsYXlfdGltZSk7CisJdmFsdWVzWygq aSkrK10gPSBGbG9hdDhHZXREYXR1bSh2YWN1dW1fZXh0LT50b3RhbF90aW1lKTsKKwl2YWx1 ZXNbKCppKSsrXSA9IEludDMyR2V0RGF0dW0odmFjdXVtX2V4dC0+d3JhcGFyb3VuZF9mYWls c2FmZV9jb3VudCk7CisJQXNzZXJ0KCgqaSAtIGJhc2UpID09IEVYVFZBQ19DT01NT05fU1RB VF9DT0xTKTsKK30KKworI2RlZmluZSBFWFRWQUNfSEVBUF9TVEFUX0NPTFMJMjYKKyNkZWZp bmUgRVhUVkFDX0lEWF9TVEFUX0NPTFMJMTcKKyNkZWZpbmUgRVhUVkFDX01BWF9TVEFUX0NP TFMJTWF4KEVYVFZBQ19IRUFQX1NUQVRfQ09MUywgRVhUVkFDX0lEWF9TVEFUX0NPTFMpCisK K3N0YXRpYyB2b2lkCit0dXBsZXN0b3JlX3B1dF9mb3JfcmVsYXRpb24oT2lkIHJlbGlkLCBU dXBsZXN0b3Jlc3RhdGUgKnR1cHN0b3JlLAorCQkJCQkJCVR1cGxlRGVzYyB0dXBkZXNjLCBQ Z1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMgKiB2YWN1dW1fZXh0KQoreworCURhdHVtCQl2 YWx1ZXNbRVhUVkFDX01BWF9TVEFUX0NPTFNdOworCWJvb2wJCW51bGxzW0VYVFZBQ19NQVhf U1RBVF9DT0xTXTsKKwlpbnQJCQlpID0gMDsKKworCW1lbXNldChudWxscywgMCwgc2l6ZW9m KG51bGxzKSk7CisJdmFsdWVzW2krK10gPSBPYmplY3RJZEdldERhdHVtKHJlbGlkKTsKKwor CXR1cGxlc3RvcmVfcHV0X2NvbW1vbigmdmFjdXVtX2V4dC0+Y29tbW9uLCB2YWx1ZXMsIG51 bGxzLCAmaSk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHZhY3V1bV9leHQtPmNv bW1vbi5ibGtzX2ZldGNoZWQgLSB2YWN1dW1fZXh0LT5jb21tb24uYmxrc19oaXQpOworCXZh bHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh2YWN1dW1fZXh0LT5jb21tb24uYmxrc19oaXQp OworCisJaWYgKHZhY3V1bV9leHQtPnR5cGUgPT0gUEdTVEFUX0VYVFZBQ19UQUJMRSkKKwl7 CisJCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh2YWN1dW1fZXh0LT5jb21tb24udHVw bGVzX2RlbGV0ZWQpOworCQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVtX2V4 dC0+dGFibGUucGFnZXNfc2Nhbm5lZCk7CisJCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1 bSh2YWN1dW1fZXh0LT50YWJsZS5wYWdlc19yZW1vdmVkKTsKKwkJdmFsdWVzW2krK10gPSBJ bnQ2NEdldERhdHVtKHZhY3V1bV9leHQtPnRhYmxlLnZtX25ld19mcm96ZW5fcGFnZXMpOwor CQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVtX2V4dC0+dGFibGUudm1fbmV3 X3Zpc2libGVfcGFnZXMpOworCQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVt X2V4dC0+dGFibGUudm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKTsKKwkJdmFsdWVzW2kr K10gPSBJbnQ2NEdldERhdHVtKHZhY3V1bV9leHQtPnRhYmxlLnR1cGxlc19mcm96ZW4pOwor CQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVtX2V4dC0+dGFibGUucmVjZW50 bHlfZGVhZF90dXBsZXMpOworCQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVt X2V4dC0+dGFibGUuaW5kZXhfdmFjdXVtX2NvdW50KTsKKwkJdmFsdWVzW2krK10gPSBJbnQ2 NEdldERhdHVtKHZhY3V1bV9leHQtPnRhYmxlLm1pc3NlZF9kZWFkX3BhZ2VzKTsKKwkJdmFs dWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHZhY3V1bV9leHQtPnRhYmxlLm1pc3NlZF9kZWFk X3R1cGxlcyk7CisJfQorCWVsc2UgaWYgKHZhY3V1bV9leHQtPnR5cGUgPT0gUEdTVEFUX0VY VFZBQ19JTkRFWCkKKwl7CisJCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh2YWN1dW1f ZXh0LT5jb21tb24udHVwbGVzX2RlbGV0ZWQpOworCQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0 RGF0dW0odmFjdXVtX2V4dC0+aW5kZXgucGFnZXNfZGVsZXRlZCk7CisJfQorCisJQXNzZXJ0 KGkgPT0gKCh2YWN1dW1fZXh0LT50eXBlID09IFBHU1RBVF9FWFRWQUNfVEFCTEUpID8gRVhU VkFDX0hFQVBfU1RBVF9DT0xTIDogRVhUVkFDX0lEWF9TVEFUX0NPTFMpKTsKKwl0dXBsZXN0 b3JlX3B1dHZhbHVlcyh0dXBzdG9yZSwgdHVwZGVzYywgdmFsdWVzLCBudWxscyk7Cit9CisK K3N0YXRpYyBEYXR1bQorcGdfc3RhdHNfdmFjdXVtKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZv LCBpbnQgdHlwZSkKK3sKKwlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5m byAqKSBmY2luZm8tPnJlc3VsdGluZm87CisJTWVtb3J5Q29udGV4dCBwZXJfcXVlcnlfY3R4 OworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlUdXBsZXN0b3Jlc3RhdGUgKnR1cHN0 b3JlOworCVR1cGxlRGVzYwl0dXBkZXNjOworCU9pZAkJCWRiaWQgPSBQR19HRVRBUkdfT0lE KDApOworCisJaWYgKHJzaW5mbyA9PSBOVUxMIHx8ICFJc0EocnNpbmZvLCBSZXR1cm5TZXRJ bmZvKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiZXh0X3ZhY3V1bV9zdGF0aXN0aWNzOiBz ZXQtdmFsdWVkIGZ1bmN0aW9uIGNhbGxlZCBpbiBjb250ZXh0IHRoYXQgY2Fubm90IGFjY2Vw dCBhIHNldCIpKSk7CisJaWYgKCEocnNpbmZvLT5hbGxvd2VkTW9kZXMgJiBTRlJNX01hdGVy aWFsaXplKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiZXh0X3ZhY3V1bV9zdGF0aXN0aWNz OiBtYXRlcmlhbGl6ZSBtb2RlIHJlcXVpcmVkIikpKTsKKworCXBlcl9xdWVyeV9jdHggPSBy c2luZm8tPmVjb250ZXh0LT5lY3h0X3Blcl9xdWVyeV9tZW1vcnk7CisJb2xkY29udGV4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwZXJfcXVlcnlfY3R4KTsKKworCWlmIChnZXRfY2Fs bF9yZXN1bHRfdHlwZShmY2luZm8sIE5VTEwsICZ0dXBkZXNjKSAhPSBUWVBFRlVOQ19DT01Q T1NJVEUpCisJCWVsb2coRVJST1IsICJleHRfdmFjdXVtX3N0YXRpc3RpY3M6IHJldHVybiB0 eXBlIG11c3QgYmUgYSByb3cgdHlwZSIpOworCisJdHVwc3RvcmUgPSB0dXBsZXN0b3JlX2Jl Z2luX2hlYXAodHJ1ZSwgZmFsc2UsIHdvcmtfbWVtKTsKKwlyc2luZm8tPnJldHVybk1vZGUg PSBTRlJNX01hdGVyaWFsaXplOworCXJzaW5mby0+c2V0UmVzdWx0ID0gdHVwc3RvcmU7CisJ cnNpbmZvLT5zZXREZXNjID0gdHVwZGVzYzsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjb250ZXh0KTsKKworCWlmICh0eXBlID09IFBHU1RBVF9FWFRWQUNfSU5ERVggfHwgdHlw ZSA9PSBQR1NUQVRfRVhUVkFDX1RBQkxFKQorCXsKKwkJT2lkCQkJcmVsaWQgPSBQR19HRVRB UkdfT0lEKDEpOworCQlQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMgKnN0YXRzOworCisJ CWlmICghT2lkSXNWYWxpZChyZWxpZCkpCisJCQlyZXR1cm4gKERhdHVtKSAwOworCisJCXN0 YXRzID0gKFBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cyAqKQorCQkJcGdzdGF0X2ZldGNo X2VudHJ5KFBHU1RBVF9LSU5EX0VYVFZBQ19SRUxBVElPTiwgZGJpZCwKKwkJCQkJCQkgICBF WFRWQUNfT0JKSUQocmVsaWQsIHR5cGUpLCBOVUxMKTsKKworCQlpZiAoIXN0YXRzKQorCQkJ c3RhdHMgPSAoUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzICopCisJCQkJcGdzdGF0X2Zl dGNoX2VudHJ5KFBHU1RBVF9LSU5EX0VYVFZBQ19SRUxBVElPTiwgSW52YWxpZE9pZCwKKwkJ CQkJCQkJICAgRVhUVkFDX09CSklEKHJlbGlkLCB0eXBlKSwgTlVMTCk7CisKKwkJaWYgKHN0 YXRzICYmIHN0YXRzLT50eXBlID09IHR5cGUpCisJCQl0dXBsZXN0b3JlX3B1dF9mb3JfcmVs YXRpb24ocmVsaWQsIHR1cHN0b3JlLCB0dXBkZXNjLCBzdGF0cyk7CisJfQorCWVsc2UgaWYg KHR5cGUgPT0gUEdTVEFUX0VYVFZBQ19EQikKKwl7CisJCWlmIChPaWRJc1ZhbGlkKGRiaWQp KQorCQl7CisjZGVmaW5lIEVYVFZBQ19EQl9TVEFUX0NPTFMgMTQKKwkJCURhdHVtCQl2YWx1 ZXNbRVhUVkFDX0RCX1NUQVRfQ09MU107CisJCQlib29sCQludWxsc1tFWFRWQUNfREJfU1RB VF9DT0xTXTsKKwkJCWludAkJCWkgPSAwOworCQkJUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291 bnRzICpzdGF0czsKKworCQkJc3RhdHMgPSAoUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRz ICopCisJCQkJcGdzdGF0X2ZldGNoX2VudHJ5KFBHU1RBVF9LSU5EX0VYVFZBQ19EQiwgZGJp ZCwKKwkJCQkJCQkJICAgSW52YWxpZE9pZCwgTlVMTCk7CisJCQlpZiAoc3RhdHMgJiYgc3Rh dHMtPnR5cGUgPT0gUEdTVEFUX0VYVFZBQ19EQikKKwkJCXsKKwkJCQltZW1zZXQobnVsbHMs IDAsIHNpemVvZihudWxscykpOworCQkJCXZhbHVlc1tpKytdID0gT2JqZWN0SWRHZXREYXR1 bShkYmlkKTsKKwkJCQl0dXBsZXN0b3JlX3B1dF9jb21tb24oJnN0YXRzLT5jb21tb24sIHZh bHVlcywgbnVsbHMsICZpKTsKKwkJCQl2YWx1ZXNbaSsrXSA9IEludDMyR2V0RGF0dW0oc3Rh dHMtPmNvbW1vbi5pbnRlcnJ1cHRzX2NvdW50KTsKKwkJCQlBc3NlcnQoaSA9PSBFWFRWQUNf REJfU1RBVF9DT0xTKTsKKwkJCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyh0dXBzdG9yZSwgdHVw ZGVzYywgdmFsdWVzLCBudWxscyk7CisJCQl9CisJCX0KKwkJLyogaW52YWxpZCBkYmlkOiBy ZXR1cm4gZW1wdHkgc2V0ICovCisJfQorCWVsc2UKKwkJZWxvZyhQQU5JQywgImV4dF92YWN1 dW1fc3RhdGlzdGljczogaW52YWxpZCB0eXBlICVkIiwgdHlwZSk7CisKKwlyZXR1cm4gKERh dHVtKSAwOworfQorCitQR19GVU5DVElPTl9JTkZPX1YxKHBnX3N0YXRzX2dldF92YWN1dW1f dGFibGVzKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEocGdfc3RhdHNfZ2V0X3ZhY3V1bV9pbmRl eGVzKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEocGdfc3RhdHNfZ2V0X3ZhY3V1bV9kYXRhYmFz ZSk7CisKK0RhdHVtCitwZ19zdGF0c19nZXRfdmFjdXVtX3RhYmxlcyhQR19GVU5DVElPTl9B UkdTKQoreworCXJldHVybiBwZ19zdGF0c192YWN1dW0oZmNpbmZvLCBQR1NUQVRfRVhUVkFD X1RBQkxFKTsKK30KKworRGF0dW0KK3BnX3N0YXRzX2dldF92YWN1dW1faW5kZXhlcyhQR19G VU5DVElPTl9BUkdTKQoreworCXJldHVybiBwZ19zdGF0c192YWN1dW0oZmNpbmZvLCBQR1NU QVRfRVhUVkFDX0lOREVYKTsKK30KKworRGF0dW0KK3BnX3N0YXRzX2dldF92YWN1dW1fZGF0 YWJhc2UoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlyZXR1cm4gcGdfc3RhdHNfdmFjdXVtKGZj aW5mbywgUEdTVEFUX0VYVFZBQ19EQik7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL21lc29u LmJ1aWxkIGIvY29udHJpYi9tZXNvbi5idWlsZAppbmRleCBlYmI3ZjgzZDhjNS4uZDdkYzBm ZDA3ZjAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi9t ZXNvbi5idWlsZApAQCAtMjYsNiArMjYsNyBAQCBzdWJkaXIoJ2N1YmUnKQogc3ViZGlyKCdk YmxpbmsnKQogc3ViZGlyKCdkaWN0X2ludCcpCiBzdWJkaXIoJ2RpY3RfeHN5bicpCitzdWJk aXIoJ2V4dF92YWN1dW1fc3RhdGlzdGljcycpCiBzdWJkaXIoJ2VhcnRoZGlzdGFuY2UnKQog c3ViZGlyKCdmaWxlX2ZkdycpCiBzdWJkaXIoJ2Z1enp5c3RybWF0Y2gnKQpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL2NvbnRyaWIuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb250cmliLnNn bWwKaW5kZXggYjliMDM2NTRhYWQuLjJhMzhmOTA0MmJiIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvY29udHJpYi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb250cmliLnNnbWwKQEAg LTE0MSw2ICsxNDEsNyBAQCBDUkVBVEUgRVhURU5TSU9OIDxyZXBsYWNlYWJsZT5leHRlbnNp b25fbmFtZTwvcmVwbGFjZWFibGU+OwogICZkaWN0LWludDsKICAmZGljdC14c3luOwogICZl YXJ0aGRpc3RhbmNlOworICZleHR2YWN1dW1zdGF0aXN0aWNzOwogICZmaWxlLWZkdzsKICAm ZnV6enlzdHJtYXRjaDsKICAmaHN0b3JlOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2V4 dHZhY3V1bXN0YXRpc3RpY3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9leHR2YWN1dW1zdGF0aXN0 aWNzLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc1ZWI0 NjkxYzRkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL2V4dHZhY3V1bXN0YXRp c3RpY3Muc2dtbApAQCAtMCwwICsxLDUwMiBAQAorPCEtLSBkb2Mvc3JjL3NnbWwvZXh0dmFj dXVtc3RhdGlzdGljcy5zZ21sIC0tPgorCis8c2VjdDEgaWQ9ImV4dHZhY3V1bXN0YXRpc3Rp Y3MiIHhyZWZsYWJlbD0iZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIj4KKyA8dGl0bGU+ZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzICZtZGFzaDsgZXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3RpY3M8L3Rp dGxlPgorCisgPGluZGV4dGVybSB6b25lPSJleHR2YWN1dW1zdGF0aXN0aWNzIj4KKyAgPHBy aW1hcnk+ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzPC9wcmltYXJ5PgorIDwvaW5kZXh0ZXJtPgor CisgPHBhcmE+CisgIFRoZSA8ZmlsZW5hbWU+ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzPC9maWxl bmFtZT4gbW9kdWxlIHByb3ZpZGVzCisgIGV4dGVuZGVkIHBlci10YWJsZSwgcGVyLWluZGV4 LCBhbmQgcGVyLWRhdGFiYXNlIHZhY3V1bSBzdGF0aXN0aWNzCisgIChidWZmZXIgSS9PLCBX QUwsIGdlbmVyYWwsIHRpbWluZykgdmlhIHZpZXdzIGluIHRoZQorICA8bGl0ZXJhbD5leHRf dmFjdXVtX3N0YXRpc3RpY3M8L2xpdGVyYWw+IHNjaGVtYS4KKyA8L3BhcmE+CisKKyA8cGFy YT4KKyAgVGhlIG1vZHVsZSBtdXN0IGJlIGxvYWRlZCBieSBhZGRpbmcgPGxpdGVyYWw+ZXh0 X3ZhY3V1bV9zdGF0aXN0aWNzPC9saXRlcmFsPiB0bworICA8eHJlZiBsaW5rZW5kPSJndWMt c2hhcmVkLXByZWxvYWQtbGlicmFyaWVzIi8+IGluCisgIDxmaWxlbmFtZT5wb3N0Z3Jlc3Fs LmNvbmY8L2ZpbGVuYW1lPiwgYmVjYXVzZSBpdCByZWdpc3RlcnMgYSB2YWN1dW0gaG9vayBh dAorICBzZXJ2ZXIgc3RhcnR1cC4gIFRoaXMgbWVhbnMgdGhhdCBhIHNlcnZlciByZXN0YXJ0 IGlzIG5lZWRlZCB0byBhZGQgb3IgcmVtb3ZlCisgIHRoZSBtb2R1bGUuICBBZnRlciBpbnN0 YWxsYXRpb24sIHJ1bgorICA8Y29tbWFuZD5DUkVBVEUgRVhURU5TSU9OIGV4dF92YWN1dW1f c3RhdGlzdGljczwvY29tbWFuZD4gaW4gZWFjaCBkYXRhYmFzZQorICB3aGVyZSB5b3Ugd2Fu dCB0byB1c2UgaXQuCisgPC9wYXJhPgorCisgPHBhcmE+CisgIFdoZW4gYWN0aXZlLCB0aGUg bW9kdWxlIHByb3ZpZGVzIHZpZXdzCisgIDxzdHJ1Y3RuYW1lPmV4dF92YWN1dW1fc3RhdGlz dGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzPC9zdHJ1Y3RuYW1lPiwKKyAgPHN0cnVjdG5h bWU+ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9pbmRleGVzPC9zdHJ1 Y3RuYW1lPiwgYW5kCisgIDxzdHJ1Y3RuYW1lPmV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19z dGF0c192YWN1dW1fZGF0YWJhc2U8L3N0cnVjdG5hbWU+LAorICBwbHVzIGZ1bmN0aW9ucyB0 byByZXNldCBzdGF0aXN0aWNzIGFuZCBtYW5hZ2UgdHJhY2tpbmcuCisgPC9wYXJhPgorCisg PHBhcmE+CisgIEVhY2ggdHJhY2tlZCBvYmplY3QgKG9uZSB0YWJsZSwgb25lIGluZGV4LCBv ciBvbmUgZGF0YWJhc2UpIHVzZXMKKyAgYXBwcm94aW1hdGVseSAyMzIgYnl0ZXMgb2Ygc2hh cmVkIG1lbW9yeSBvbiBMaW51eCB4ODZfNjQgKGUuZy4gVWJ1bnR1KToKKyAgY29tbW9uIHN0 YXRzIChidWZmZXJzLCBXQUwsIHRpbWluZykgcGx1cyBoZWFkZXIgYW5kIExXTG9jayB+MTQ0 IGJ5dGVzOworICB0eXBlICsgdW5pb24gfjg4IGJ5dGVzICh0aGUgdW5pb24gaG9sZHMgdGFi bGUtc3BlY2lmaWMgb3IgaW5kZXgtc3BlY2lmaWMKKyAgZmllbGRzOyB0aGUgYWxsb2NhdGVk IHNpemUgaXMgdGhlIHNhbWUgZm9yIGJvdGgpLiAgVGhlIGV4YWN0IHNpemUgZGVwZW5kcyBv biB0aGUgcGxhdGZvcm0uICBDYWxsCisgIDxmdW5jdGlvbj5leHRfdmFjdXVtX3N0YXRpc3Rp Y3Muc2hhcmVkX21lbW9yeV9zaXplKCk8L2Z1bmN0aW9uPiB0byBnZXQKKyAgdGhlIHRvdGFs IHNoYXJlZCBtZW1vcnkgdXNlZCBieSB0aGUgZXh0ZW5zaW9uLiAgVGhlIGV4dGVuc2lvbidz IEdVQ3MgYWxsb3cgY29udHJvbGxpbmcgbWVtb3J5IGJ5IGxpbWl0aW5nCisgIHdoaWNoIG9i amVjdHMgYXJlIHRyYWNrZWQ6CisgIDx2YXJuYW1lPnZhY3V1bV9zdGF0aXN0aWNzLm9iamVj dF90eXBlczwvdmFybmFtZT4sCisgIDx2YXJuYW1lPnZhY3V1bV9zdGF0aXN0aWNzLnRyYWNr X3JlbGF0aW9uczwvdmFybmFtZT4sIGFuZAorICA8dmFybmFtZT50cmFja18qX2Zyb21fbGlz dDwvdmFybmFtZT4uCisgIEV4YW1wbGU6IGEgZGF0YWJhc2Ugd2l0aCAxMDAwIHRhYmxlcyBh bmQgMjAwMCBpbmRleGVzIHVzZXMgYWJvdXQgNzAwIEtCCisgIG9uIFVidW50dSAoKDEwMDAg KyAyMDAwICsgMSkgw5cgMjMyIGJ5dGVzKS4KKyA8L3BhcmE+CisKKyA8c2VjdDIgaWQ9ImV4 dHZhY3V1bXN0YXRpc3RpY3MtcGctc3RhdHMtdmFjdXVtLXRhYmxlcyI+CisgIDx0aXRsZT5U aGUgPHN0cnVjdG5hbWU+ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV90 YWJsZXM8L3N0cnVjdG5hbWU+IFZpZXc8L3RpdGxlPgorCisgIDxpbmRleHRlcm0gem9uZT0i ZXh0dmFjdXVtc3RhdGlzdGljcyI+CisgICA8c2Vjb25kYXJ5PnBnX3N0YXRzX3ZhY3V1bV90 YWJsZXM8L3NlY29uZGFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBUaGUg dmlldyA8c3RydWN0bmFtZT5leHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVt X3RhYmxlczwvc3RydWN0bmFtZT4KKyAgIGNvbnRhaW5zIG9uZSByb3cgZm9yIGVhY2ggdGFi bGUgaW4gdGhlIGN1cnJlbnQgZGF0YWJhc2UgKGluY2x1ZGluZyBUT0FTVAorICAgdGFibGVz KSwgc2hvd2luZyBzdGF0aXN0aWNzIGFib3V0IHZhY3V1bWluZyB0aGF0IHNwZWNpZmljIHRh YmxlLiAgVGhlIGNvbHVtbnMKKyAgIGFyZSBzaG93biBpbiA8eHJlZiBsaW5rZW5kPSJleHR2 YWN1dW1zdGF0aXN0aWNzLXBnLXN0YXRzLXZhY3V1bS10YWJsZXMtY29sdW1ucyIvPi4KKyAg PC9wYXJhPgorCisgIDx0YWJsZSBpZD0iZXh0dmFjdXVtc3RhdGlzdGljcy1wZy1zdGF0cy12 YWN1dW0tdGFibGVzLWNvbHVtbnMiPgorICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPmV4dF92YWN1 dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzPC9zdHJ1Y3RuYW1lPiBDb2x1 bW5zPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFkPgorICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICBDb2x1bW4gVHlwZQorICAgICAgPC9w YXJhPgorICAgICAgPHBhcmE+CisgICAgICAgRGVzY3JpcHRpb24KKyAgICAgIDwvcGFyYT48 L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorICAgIDx0Ym9keT4KKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBh cmE+CisgICAgICAgT0lEIG9mIGEgdGFibGUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnNjaGVtYTwvc3RydWN0ZmllbGQ+IDx0eXBlPm5hbWU8L3R5cGU+CisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoZSBzY2hlbWEgdGhpcyB0 YWJsZSBpcyBpbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cmVsbmFtZTwv c3RydWN0ZmllbGQ+IDx0eXBlPm5hbWU8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoaXMgdGFibGUKKyAgICAgIDwvcGFyYT48L2VudHJ5 PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAg PHN0cnVjdGZpZWxkPmRibmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPm5hbWU8L3R5cGU+Cisg ICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoZSBkYXRhYmFz ZSBjb250YWluaW5nIHRoaXMgdGFibGUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZp ZWxkPnRvdGFsX2Jsa3NfcmVhZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+Cisg ICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgZGF0YWJhc2Ug YmxvY2tzIHJlYWQgYnkgdmFjdXVtIG9wZXJhdGlvbnMgcGVyZm9ybWVkIG9uIHRoaXMgdGFi bGUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnRvdGFsX2Jsa3NfaGl0PC9z dHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIE51bWJlciBvZiB0aW1lcyBkYXRhYmFzZSBibG9ja3Mgd2VyZSBmb3Vu ZCBpbiB0aGUgYnVmZmVyIGNhY2hlIGJ5IHZhY3V1bSBvcGVyYXRpb25zCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD50b3RhbF9ibGtzX2RpcnRpZWQ8L3N0cnVjdGZpZWxk PiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgTnVtYmVyIG9mIGRhdGFiYXNlIGJsb2NrcyBkaXJ0aWVkIGJ5IHZhY3V1bSBvcGVyYXRp b25zCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD50b3RhbF9ibGtzX3dyaXR0 ZW48L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIGRhdGFiYXNlIGJsb2NrcyB3cml0dGVuIGJ5 IHZhY3V1bSBvcGVyYXRpb25zCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+ CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD53 YWxfcmVjb3Jkczwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUb3RhbCBudW1iZXIgb2YgV0FMIHJlY29yZHMg Z2VuZXJhdGVkIGJ5IHZhY3V1bSBvcGVyYXRpb25zIHBlcmZvcm1lZCBvbiB0aGlzIHRhYmxl CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD53YWxfZnBpPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIFRvdGFsIG51bWJlciBvZiBXQUwgZnVsbCBwYWdlIGltYWdlcyBnZW5lcmF0ZWQgYnkg dmFjdXVtIG9wZXJhdGlvbnMKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPndh bF9ieXRlczwvc3RydWN0ZmllbGQ+IDx0eXBlPm51bWVyaWM8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUb3RhbCBhbW91bnQgb2YgV0FMIGJ5dGVzIGdl bmVyYXRlZCBieSB2YWN1dW0gb3BlcmF0aW9ucworICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3Ry dWN0ZmllbGQ+YmxrX3JlYWRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmZsb2F0ODwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRpbWUgc3BlbnQgcmVh ZGluZyBibG9ja3MgYnkgdmFjdXVtIG9wZXJhdGlvbnMsIGluIG1pbGxpc2Vjb25kcworICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+YmxrX3dyaXRlX3RpbWU8L3N0cnVjdGZp ZWxkPiA8dHlwZT5mbG9hdDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBUaW1lIHNwZW50IHdyaXRpbmcgYmxvY2tzIGJ5IHZhY3V1bSBvcGVyYXRpb25z LCBpbiBtaWxsaXNlY29uZHMKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmRl bGF5X3RpbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5mbG9hdDg8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaW1lIHNwZW50IGluIHZhY3V1bSBkZWxheSBw b2ludHMsIGluIG1pbGxpc2Vjb25kcworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwv cm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0Zmll bGQ+dG90YWxfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmZsb2F0ODwvdHlwZT4KKyAgICAg IDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRvdGFsIHRpbWUgb2YgdmFjdXVtaW5n IHRoaXMgdGFibGUsIGluIG1pbGxpc2Vjb25kcworICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3Ry dWN0ZmllbGQ+d3JhcGFyb3VuZF9mYWlsc2FmZV9jb3VudDwvc3RydWN0ZmllbGQ+IDx0eXBl PmludDQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1i ZXIgb2YgdGltZXMgdmFjdXVtIHdhcyBydW4gdG8gcHJldmVudCBhIHdyYXBhcm91bmQgcHJv YmxlbQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cmVsX2Jsa3NfcmVhZDwv c3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgYmxvY2tzIHZhY3V1bSBvcGVyYXRpb25zIHJlYWQg ZnJvbSB0aGlzIHRhYmxlCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+Cisg ICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxf Ymxrc19oaXQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIHRpbWVzIGJsb2NrcyBvZiB0aGlz IHRhYmxlIHdlcmUgZm91bmQgaW4gdGhlIGJ1ZmZlciBjYWNoZSBieSB2YWN1dW0KKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnR1cGxlc19kZWxldGVkPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIE51bWJlciBvZiBkZWFkIHR1cGxlcyB2YWN1dW0gb3BlcmF0aW9ucyBkZWxldGVkIGZy b20gdGhpcyB0YWJsZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGFnZXNf c2Nhbm5lZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgcGFnZXMgZXhhbWluZWQgYnkgdmFj dXVtIG9wZXJhdGlvbnMKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBhZ2Vz X3JlbW92ZWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIHBhZ2VzIHJlbW92ZWQgZnJvbSBw aHlzaWNhbCBzdG9yYWdlIGJ5IHZhY3V1bSBvcGVyYXRpb25zCisgICAgICA8L3BhcmE+PC9l bnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAg ICAgIDxzdHJ1Y3RmaWVsZD52bV9uZXdfZnJvemVuX3BhZ2VzPC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51 bWJlciBvZiBwYWdlcyBuZXdseSBzZXQgYWxsLWZyb3plbiBieSB2YWN1dW0gaW4gdGhlIHZp c2liaWxpdHkgbWFwCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD52bV9uZXdf dmlzaWJsZV9wYWdlczwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgcGFnZXMgbmV3bHkgc2V0 IGFsbC12aXNpYmxlIGJ5IHZhY3V1bSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAKKyAgICAgIDwv cGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlczwv c3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgcGFnZXMgbmV3bHkgc2V0IGFsbC12aXNpYmxlIGFu ZCBhbGwtZnJvemVuIGJ5IHZhY3V1bSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAKKyAgICAgIDwv cGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPnR1cGxlc19mcm96ZW48L3N0cnVjdGZpZWxkPiA8 dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAg TnVtYmVyIG9mIHR1cGxlcyB0aGF0IHZhY3V1bSBvcGVyYXRpb25zIG1hcmtlZCBhcyBmcm96 ZW4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnJlY2VudGx5X2RlYWRfdHVw bGVzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiBkZWFkIHR1cGxlcyBsZWZ0IGR1ZSB0byB2 aXNpYmlsaXR5IGluIHRyYW5zYWN0aW9ucworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0 ZmllbGQ+aW5kZXhfdmFjdXVtX2NvdW50PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiB0aW1l cyBpbmRleGVzIG9uIHRoaXMgdGFibGUgd2VyZSB2YWN1dW1lZAorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAg ICAgICA8c3RydWN0ZmllbGQ+bWlzc2VkX2RlYWRfcGFnZXM8L3N0cnVjdGZpZWxkPiA8dHlw ZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVt YmVyIG9mIHBhZ2VzIHRoYXQgaGFkIGF0IGxlYXN0IG9uZSBtaXNzZWQgZGVhZCB0dXBsZQor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+bWlzc2VkX2RlYWRfdHVwbGVzPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIE51bWJlciBvZiBmdWxseSBERUFEIHR1cGxlcyB0aGF0IGNvdWxkIG5v dCBiZSBwcnVuZWQgZHVlIHRvIGZhaWx1cmUgdG8gYWNxdWlyZSBhIGNsZWFudXAgbG9jawor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+CisgICA8 L3Rncm91cD4KKyAgPC90YWJsZT4KKyA8L3NlY3QyPgorCisgPHNlY3QyIGlkPSJleHR2YWN1 dW1zdGF0aXN0aWNzLXBnLXN0YXRzLXZhY3V1bS1pbmRleGVzIj4KKyAgPHRpdGxlPlRoZSA8 c3RydWN0bmFtZT5leHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX2luZGV4 ZXM8L3N0cnVjdG5hbWU+IFZpZXc8L3RpdGxlPgorCisgIDxpbmRleHRlcm0gem9uZT0iZXh0 dmFjdXVtc3RhdGlzdGljcyI+CisgICA8c2Vjb25kYXJ5PnBnX3N0YXRzX3ZhY3V1bV9pbmRl eGVzPC9zZWNvbmRhcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlIHZp ZXcgPHN0cnVjdG5hbWU+ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9p bmRleGVzPC9zdHJ1Y3RuYW1lPgorICAgY29udGFpbnMgb25lIHJvdyBmb3IgZWFjaCBpbmRl eCBpbiB0aGUgY3VycmVudCBkYXRhYmFzZSwgc2hvd2luZyBzdGF0aXN0aWNzCisgICBhYm91 dCB2YWN1dW1pbmcgdGhhdCBzcGVjaWZpYyBpbmRleC4gIENvbHVtbnMgaW5jbHVkZQorICAg PHN0cnVjdGZpZWxkPmluZGV4cmVsaWQ8L3N0cnVjdGZpZWxkPiwgPHN0cnVjdGZpZWxkPnNj aGVtYTwvc3RydWN0ZmllbGQ+LAorICAgPHN0cnVjdGZpZWxkPmluZGV4cmVsbmFtZTwvc3Ry dWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+ZGJuYW1lPC9zdHJ1Y3RmaWVsZD4sCisgICBidWZm ZXIgSS9PICg8c3RydWN0ZmllbGQ+dG90YWxfYmxrc19yZWFkPC9zdHJ1Y3RmaWVsZD4sCisg ICA8c3RydWN0ZmllbGQ+dG90YWxfYmxrc19oaXQ8L3N0cnVjdGZpZWxkPiwgZXRjLiksIFdB TAorICAgKDxzdHJ1Y3RmaWVsZD53YWxfcmVjb3Jkczwvc3RydWN0ZmllbGQ+LCA8c3RydWN0 ZmllbGQ+d2FsX2ZwaTwvc3RydWN0ZmllbGQ+LAorICAgPHN0cnVjdGZpZWxkPndhbF9ieXRl czwvc3RydWN0ZmllbGQ+KSwgdGltaW5nCisgICAoPHN0cnVjdGZpZWxkPmJsa19yZWFkX3Rp bWU8L3N0cnVjdGZpZWxkPiwgPHN0cnVjdGZpZWxkPmJsa193cml0ZV90aW1lPC9zdHJ1Y3Rm aWVsZD4sCisgICA8c3RydWN0ZmllbGQ+ZGVsYXlfdGltZTwvc3RydWN0ZmllbGQ+LCA8c3Ry dWN0ZmllbGQ+dG90YWxfdGltZTwvc3RydWN0ZmllbGQ+KSwKKyAgIGFuZCA8c3RydWN0Zmll bGQ+dHVwbGVzX2RlbGV0ZWQ8L3N0cnVjdGZpZWxkPiwgPHN0cnVjdGZpZWxkPnBhZ2VzX2Rl bGV0ZWQ8L3N0cnVjdGZpZWxkPi4KKyAgPC9wYXJhPgorIDwvc2VjdDI+CisKKyA8c2VjdDIg aWQ9ImV4dHZhY3V1bXN0YXRpc3RpY3MtcGctc3RhdHMtdmFjdXVtLWRhdGFiYXNlIj4KKyAg PHRpdGxlPlRoZSA8c3RydWN0bmFtZT5leHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNf dmFjdXVtX2RhdGFiYXNlPC9zdHJ1Y3RuYW1lPiBWaWV3PC90aXRsZT4KKworICA8aW5kZXh0 ZXJtIHpvbmU9ImV4dHZhY3V1bXN0YXRpc3RpY3MiPgorICAgPHNlY29uZGFyeT5wZ19zdGF0 c192YWN1dW1fZGF0YWJhc2U8L3NlY29uZGFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBh cmE+CisgICBUaGUgdmlldyA8c3RydWN0bmFtZT5leHRfdmFjdXVtX3N0YXRpc3RpY3MucGdf c3RhdHNfdmFjdXVtX2RhdGFiYXNlPC9zdHJ1Y3RuYW1lPgorICAgY29udGFpbnMgb25lIHJv dyBmb3IgZWFjaCBkYXRhYmFzZSBpbiB0aGUgY2x1c3Rlciwgc2hvd2luZyBhZ2dyZWdhdGUg dmFjdXVtCisgICBzdGF0aXN0aWNzIGZvciB0aGF0IGRhdGFiYXNlLiAgQ29sdW1ucyBpbmNs dWRlCisgICA8c3RydWN0ZmllbGQ+ZGJvaWQ8L3N0cnVjdGZpZWxkPiwgPHN0cnVjdGZpZWxk PmRibmFtZTwvc3RydWN0ZmllbGQ+LAorICAgPHN0cnVjdGZpZWxkPmRiX2Jsa3NfcmVhZDwv c3RydWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+ZGJfYmxrc19oaXQ8L3N0cnVjdGZpZWxkPiwK KyAgIDxzdHJ1Y3RmaWVsZD5kYl9ibGtzX2RpcnRpZWQ8L3N0cnVjdGZpZWxkPiwgPHN0cnVj dGZpZWxkPmRiX2Jsa3Nfd3JpdHRlbjwvc3RydWN0ZmllbGQ+LAorICAgV0FMIHN0YXRzICg8 c3RydWN0ZmllbGQ+ZGJfd2FsX3JlY29yZHM8L3N0cnVjdGZpZWxkPiwKKyAgIDxzdHJ1Y3Rm aWVsZD5kYl93YWxfZnBpPC9zdHJ1Y3RmaWVsZD4sIDxzdHJ1Y3RmaWVsZD5kYl93YWxfYnl0 ZXM8L3N0cnVjdGZpZWxkPiksCisgICB0aW1pbmcgKDxzdHJ1Y3RmaWVsZD5kYl9ibGtfcmVh ZF90aW1lPC9zdHJ1Y3RmaWVsZD4sCisgICA8c3RydWN0ZmllbGQ+ZGJfYmxrX3dyaXRlX3Rp bWU8L3N0cnVjdGZpZWxkPiwgPHN0cnVjdGZpZWxkPmRiX2RlbGF5X3RpbWU8L3N0cnVjdGZp ZWxkPiwKKyAgIDxzdHJ1Y3RmaWVsZD5kYl90b3RhbF90aW1lPC9zdHJ1Y3RmaWVsZD4pLAor ICAgPHN0cnVjdGZpZWxkPmRiX3dyYXBhcm91bmRfZmFpbHNhZmVfY291bnQ8L3N0cnVjdGZp ZWxkPiwgYW5kCisgICA8c3RydWN0ZmllbGQ+aW50ZXJydXB0c19jb3VudDwvc3RydWN0Zmll bGQ+LgorICA8L3BhcmE+CisgPC9zZWN0Mj4KKworIDxzZWN0MiBpZD0iZXh0dmFjdXVtc3Rh dGlzdGljcy1mdW5jdGlvbnMiPgorICA8dGl0bGU+RnVuY3Rpb25zPC90aXRsZT4KKworICA8 dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGZ1 bmN0aW9uPmV4dF92YWN1dW1fc3RhdGlzdGljcy5zaGFyZWRfbWVtb3J5X3NpemUoKTwvZnVu Y3Rpb24+CisgICAgIDxyZXR1cm52YWx1ZT5iaWdpbnQ8L3JldHVybnZhbHVlPgorICAgIDwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgUmV0dXJucyB0aGUg dG90YWwgc2hhcmVkIG1lbW9yeSBpbiBieXRlcyB1c2VkIGJ5IHRoZSBleHRlbnNpb24gZm9y CisgICAgICB2YWN1dW0gc3RhdGlzdGljcyAocmVsYXRpb25zIHBsdXMgZGF0YWJhc2VzKS4K KyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxmdW5jdGlvbj5leHRfdmFjdXVt X3N0YXRpc3RpY3MudmFjdXVtX3N0YXRpc3RpY3NfcmVzZXQoKTwvZnVuY3Rpb24+CisgICAg IDxyZXR1cm52YWx1ZT5iaWdpbnQ8L3JldHVybnZhbHVlPgorICAgIDwvdGVybT4KKyAgICA8 bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgUmVzZXRzIGFsbCB2YWN1dW0gc3RhdGlz dGljcy4gIFJldHVybnMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHJlc2V0LgorICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICAgPHZhcmxpc3Rl bnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGZ1bmN0aW9uPmV4dF92YWN1dW1fc3RhdGlzdGlj cy5hZGRfdHJhY2tfZGF0YWJhc2UoZGJvaWQgb2lkKTwvZnVuY3Rpb24+CisgICAgIDxyZXR1 cm52YWx1ZT5ib29sZWFuPC9yZXR1cm52YWx1ZT4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIEFkZHMgYSBkYXRhYmFzZSBPSUQgdG8gdGhlIHRy YWNraW5nIGxpc3QgKHBlcnNpc3RlZCB0bworICAgICAgPGZpbGVuYW1lPnBnX3N0YXQvZXh0 X3ZhY3V1bV9zdGF0aXN0aWNzX3RyYWNrLm9pZDwvZmlsZW5hbWU+KS4KKyAgICAgIFJldHVy bnMgdHJ1ZSBpZiBuZXdseSBhZGRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+Cisg ICAgIDxmdW5jdGlvbj5leHRfdmFjdXVtX3N0YXRpc3RpY3MucmVtb3ZlX3RyYWNrX2RhdGFi YXNlKGRib2lkIG9pZCk8L2Z1bmN0aW9uPgorICAgICA8cmV0dXJudmFsdWU+Ym9vbGVhbjwv cmV0dXJudmFsdWU+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBSZW1vdmVzIGEgZGF0YWJhc2UgT0lEIGZyb20gdGhlIHRyYWNraW5nIGxpc3Qu ICBSZXR1cm5zIHRydWUgaWYgZm91bmQgYW5kIHJlbW92ZWQuCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPgorICAgICA8ZnVuY3Rpb24+ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLmFkZF90 cmFja19yZWxhdGlvbihkYm9pZCBvaWQsIHJlbG9pZCBvaWQpPC9mdW5jdGlvbj4KKyAgICAg PHJldHVybnZhbHVlPmJvb2xlYW48L3JldHVybnZhbHVlPgorICAgIDwvdGVybT4KKyAgICA8 bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgQWRkcyBhIChkYXRhYmFzZSwgcmVsYXRp b24pIE9JRCBwYWlyIHRvIHRoZSB0cmFja2luZyBsaXN0LiAgUmV0dXJucyB0cnVlIGlmIG5l d2x5IGFkZGVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlz dGVudHJ5PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGZ1bmN0aW9u PmV4dF92YWN1dW1fc3RhdGlzdGljcy5yZW1vdmVfdHJhY2tfcmVsYXRpb24oZGJvaWQgb2lk LCByZWxvaWQgb2lkKTwvZnVuY3Rpb24+CisgICAgIDxyZXR1cm52YWx1ZT5ib29sZWFuPC9y ZXR1cm52YWx1ZT4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIFJlbW92ZXMgYSAoZGF0YWJhc2UsIHJlbGF0aW9uKSBwYWlyIGZyb20gdGhlIHRy YWNraW5nIGxpc3QuICBSZXR1cm5zIHRydWUgaWYgZm91bmQgYW5kIHJlbW92ZWQuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8ZnVuY3Rpb24+ZXh0X3ZhY3V1bV9zdGF0 aXN0aWNzLnRyYWNrX2xpc3QoKTwvZnVuY3Rpb24+CisgICAgIDxyZXR1cm52YWx1ZT5UQUJM RSh0cmFja19raW5kIHRleHQsIGRib2lkIG9pZCwgcmVsb2lkIG9pZCk8L3JldHVybnZhbHVl PgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgUmV0 dXJucyB0aGUgbGlzdCBvZiBkYXRhYmFzZSBhbmQgcmVsYXRpb24gT0lEcyBmb3Igd2hpY2gg dmFjdXVtIHN0YXRpc3RpY3MKKyAgICAgIGFyZSBjb2xsZWN0ZWQuICBXaGVuIDxzdHJ1Y3Rm aWVsZD5kYm9pZDwvc3RydWN0ZmllbGQ+IG9yCisgICAgICA8c3RydWN0ZmllbGQ+cmVsb2lk PC9zdHJ1Y3RmaWVsZD4gaXMgTlVMTCwgc3RhdGlzdGljcyBhcmUgY29sbGVjdGVkIGZvciBh bGwuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+ CisgIDwvdmFyaWFibGVsaXN0PgorIDwvc2VjdDI+CisKKyA8c2VjdDIgaWQ9ImV4dHZhY3V1 bXN0YXRpc3RpY3MtY29uZmlndXJhdGlvbiI+CisgIDx0aXRsZT5Db25maWd1cmF0aW9uIFBh cmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5 PgorICAgIDx0ZXJtPjx2YXJuYW1lPnZhY3V1bV9zdGF0aXN0aWNzLmVuYWJsZWQ8L3Zhcm5h bWU+ICg8dHlwZT5ib29sZWFuPC90eXBlPik8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAg ICA8cGFyYT4KKyAgICAgIEVuYWJsZXMgZXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3RpY3MgY29s bGVjdGlvbi4gIERlZmF1bHQ6IDxsaXRlcmFsPm9uPC9saXRlcmFsPi4KKyAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+PHZhcm5hbWU+dmFjdXVtX3N0YXRpc3RpY3Mub2JqZWN0X3R5cGVz PC92YXJuYW1lPiAoPHR5cGU+c3RyaW5nPC90eXBlPik8L3Rlcm0+CisgICAgPGxpc3RpdGVt PgorICAgICA8cGFyYT4KKyAgICAgIE9iamVjdCB0eXBlcyBmb3Igc3RhdGlzdGljczogPGxp dGVyYWw+YWxsPC9saXRlcmFsPiwgPGxpdGVyYWw+ZGF0YWJhc2VzPC9saXRlcmFsPiwgb3IK KyAgICAgIDxsaXRlcmFsPnJlbGF0aW9uczwvbGl0ZXJhbD4uICBEZWZhdWx0OiA8bGl0ZXJh bD5hbGw8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48dmFybmFtZT52 YWN1dW1fc3RhdGlzdGljcy50cmFja19yZWxhdGlvbnM8L3Zhcm5hbWU+ICg8dHlwZT5zdHJp bmc8L3R5cGU+KTwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg V2hlbiB0cmFja2luZyByZWxhdGlvbnM6IDxsaXRlcmFsPmFsbDwvbGl0ZXJhbD4sIDxsaXRl cmFsPnN5c3RlbTwvbGl0ZXJhbD4sIG9yCisgICAgICA8bGl0ZXJhbD51c2VyPC9saXRlcmFs Pi4gIERlZmF1bHQ6IDxsaXRlcmFsPmFsbDwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPjx2YXJuYW1lPnZhY3V1bV9zdGF0aXN0aWNzLnRyYWNrX2RhdGFiYXNlc19m cm9tX2xpc3Q8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90eXBlPik8L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIElmIG9uLCB0cmFjayBvbmx5IGRhdGFi YXNlcyBhZGRlZCB2aWEgPGZ1bmN0aW9uPmFkZF90cmFja19kYXRhYmFzZTwvZnVuY3Rpb24+ LgorICAgICAgRGVmYXVsdDogPGxpdGVyYWw+b2ZmPC9saXRlcmFsPi4KKyAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+PHZhcm5hbWU+dmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfcmVsYXRp b25zX2Zyb21fbGlzdDwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KTwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgSWYgb24sIHRyYWNrIG9ubHkg cmVsYXRpb25zIGFkZGVkIHZpYSA8ZnVuY3Rpb24+YWRkX3RyYWNrX3JlbGF0aW9uPC9mdW5j dGlvbj4uCisgICAgICBEZWZhdWx0OiA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+LgorICAgICA8 L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3Zhcmlh YmxlbGlzdD4KKyA8L3NlY3QyPgorPC9zZWN0MT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9maWxlbGlzdC5zZ21sIGIvZG9jL3NyYy9zZ21sL2ZpbGVsaXN0LnNnbWwKaW5kZXggMjVh ODUwODI3NTkuLjg1ZDcyMTQ2N2MwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZmlsZWxp c3Quc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZmlsZWxpc3Quc2dtbApAQCAtMTMzLDYgKzEz Myw3IEBACiA8IUVOVElUWSBkaWN0LXhzeW4gICAgICAgU1lTVEVNICJkaWN0LXhzeW4uc2dt bCI+CiA8IUVOVElUWSBkdW1teS1zZWNsYWJlbCAgU1lTVEVNICJkdW1teS1zZWNsYWJlbC5z Z21sIj4KIDwhRU5USVRZIGVhcnRoZGlzdGFuY2UgICBTWVNURU0gImVhcnRoZGlzdGFuY2Uu c2dtbCI+Cis8IUVOVElUWSBleHR2YWN1dW1zdGF0aXN0aWNzIFNZU1RFTSAiZXh0dmFjdXVt c3RhdGlzdGljcy5zZ21sIj4KIDwhRU5USVRZIGZpbGUtZmR3ICAgICAgICBTWVNURU0gImZp bGUtZmR3LnNnbWwiPgogPCFFTlRJVFkgZnV6enlzdHJtYXRjaCAgIFNZU1RFTSAiZnV6enlz dHJtYXRjaC5zZ21sIj4KIDwhRU5USVRZIGhzdG9yZSAgICAgICAgICBTWVNURU0gImhzdG9y ZS5zZ21sIj4KLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --------------thBbqvYkvYX0JXIsOOCVBtFF--