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 1vzca1-001AbU-1o for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Mar 2026 15:31:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vzca0-00HBGl-01 for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Mar 2026 15:31:36 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vzcZy-00HBGc-2w for pgsql-hackers@lists.postgresql.org; Mon, 09 Mar 2026 15:31:36 +0000 Received: from forward101d.mail.yandex.net ([2a02:6b8:c41:1300:1:45:d181:d101]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vzcZr-00000001Isp-1z2N for pgsql-hackers@postgresql.org; Mon, 09 Mar 2026 15:31:34 +0000 Received: from mail-nwsmtp-smtp-production-main-77.iva.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-77.iva.yp-c.yandex.net [IPv6:2a02:6b8:c0c:b003:0:640:9753:0]) by forward101d.mail.yandex.net (Yandex) with ESMTPS id A3149C0061; Mon, 09 Mar 2026 18:31:22 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-77.iva.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id HVGkpgcGBa60-znbWktgs; Mon, 09 Mar 2026 18:31:21 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1773070281; bh=LK1cwA5yClsXW8/Lm+0cp7/j7raoj2jeb7GOERHIDAE=; h=In-Reply-To:Cc:Date:References:To:Subject:Message-ID:From; b=bEvkMvEV9Z4KQgZeRB/uYSMNoAJM5Q/HPMVlOqJYBnKZK9yAhMEX2eHuzSCMwy/6Y +FcKd3bNoAUbQvv9yNXf2nlxpgRNB/RMrCnr7Zm5hGUhASzUpdg9Ntb51aZ0k/UeTz wmuPdJbxoZygfWcP+yc4g0713kNeYfNgcAifc8dI= Authentication-Results: mail-nwsmtp-smtp-production-main-77.iva.yp-c.yandex.net; dkim=pass header.i=@yandex.ru Content-Type: multipart/mixed; boundary="------------mbznC2Bpd5jSTp4e82HRfj32" Message-ID: <77f1b8bc-b365-4e88-b87b-ced37fabbbf0@yandex.ru> Date: Mon, 9 Mar 2026 18:46:14 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Vacuum statistics From: Alena Rybakina To: pgsql-hackers Cc: Alexander Korotkov , Amit Kapila , Jim Nasby , Bertrand Drouvot , Kirill Reshke , Andrei Zubkov , Masahiko Sawada , Melanie Plageman , jian he , Sami Imseih , vignesh C , Ilia Evdokimov References: <86f76aa5-1ab5-4e2e-9b15-405051852a2a@postgrespro.ru> <5583261b-eede-4341-b3b1-91650fefc1cf@postgrespro.ru> <2a04ad18-5572-4633-848b-eb57209e7ac0@postgrespro.ru> <2f48399f-2959-4483-938f-64edb863ca76@postgrespro.ru> <18169b68-5b10-40fd-9657-be04f2bd0161@postgrespro.ru> <612819ad-beca-41fb-bb7f-d5a7c11f0045@yandex.ru> <277ce149-4333-463d-bad6-ccd785606c7f@yandex.ru> <3f9c57bc-dc1f-4ad8-a2e1-5be15ac79264@yandex.ru> Content-Language: en-US In-Reply-To: <3f9c57bc-dc1f-4ad8-a2e1-5be15ac79264@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. --------------mbznC2Bpd5jSTp4e82HRfj32 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit I discovered that my last patches were incorrectly formed. I updated the correct version. On 09.03.2026 18:25, Alena Rybakina wrote: > I developed a patch with a different approach - using custom > statistics. As in the previous approach, I store statistics separately > in slots for relations and for databases. It was also necessary to > introduce a hook, and all control is handled through an extension. > Statistics collection in the core occurs only if the hook is defined > (i.e., the extension is added to shared_preload_libraries). > The extension is also controlled by additional gucs that allow > disabling vacuum statistics collection, or collecting statistics only > for system relations, only for user relations, or only at the database > or relation level. > > For now, I have divided them into several categories: general > statistics (including the number of removed tables and tuples, and how > many times wraparound prevention occurred), cost-based statistics, > buffer statistics, and timing statistics. Memory is dynamically freed > or allocated when the corresponding guc configuration changes. This > approach is still a work in progress. > > In the README and documentation in the extension, I also added > information about how much memory will be used to store the objects > (approximately 300 KB) and added the function to measure memory > consumption. > > Currently there are three patches: > The first patch still collects statistics about frozen pages and pages > where the visibility flag is cleared. > The second patch implements statistics collection in the core, but > without storing them. > > The third patch is the extension itself, where the statistics are > stored and displayed, with the control mechanisms described above. > > > ----------- > Best regards, > Alena Rybakina --------------mbznC2Bpd5jSTp4e82HRfj32 Content-Type: text/plain; charset=UTF-8; name="v29-0001-Introduce-new-statistics-tracking-the-number-of-time.patch" Content-Disposition: attachment; filename*0="v29-0001-Introduce-new-statistics-tracking-the-number-of-tim"; filename*1="e.patch" Content-Transfer-Encoding: base64 RnJvbSA3ODExZDFiNzZiOGU2NWMwZWIzNjRjOGQxMTNkZjdhMzA0NDIyYThhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8bGVuYS5yaWJhY2tpbmFA eWFuZGV4LnJ1PgpEYXRlOiBTYXQsIDI4IEZlYiAyMDI2IDE4OjMwOjEyICswMzAwClN1Ympl Y3Q6IFtQQVRDSCAxLzNdIEludHJvZHVjZSBuZXcgc3RhdGlzdGljcyB0cmFja2luZyB0aGUg bnVtYmVyIG9mIHRpbWVzIHRoZQogYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYml0cyBh cmUgY2xlYXJlZCBpbiB0aGUgdmlzaWJpbGl0eSBtYXAKIChyZXZfYWxsX3Zpc2libGVfcGFn ZXMgYW5kIHJldl9hbGxfZnJvemVuX3BhZ2VzKS4gVGhlc2UgY291bnRlcnMsIHRvZ2V0aGVy CiB3aXRoIHRoZSBleGlzdGluZyBwZXItdmFjdXVtIGZyb3plbiBwYWdlIHN0YXRpc3RpY3Mg KHZtX25ld19mcm96ZW5fcGFnZXMsCiB2bV9uZXdfdmlzaWJsZV9wYWdlcyksIGhlbHAgYXNz ZXNzIGhvdyBhZ2dyZXNzaXZlbHkgdmFjdXVtIGlzIGNvbmZpZ3VyZWQgYW5kCiBob3cgZnJl cXVlbnRseSB0aGUgYmFja2VuZCBoYXMgdG8gcmV2b2tlIGFsbC1mcm96ZW4vYWxsLXZpc2li bGUgYml0cyBkdWUgdG8KIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucy4KCkF1dGhvcnM6IEFs ZW5hIFJ5YmFraW5hIDxsZW5hLnJpYmFja2luYUB5YW5kZXgucnU+LAogICAgICAgICBBbmRy ZWkgTGVwaWtob3YgPGEubGVwaWtob3ZAcG9zdGdyZXNwcm8ucnU+LAogICAgICAgICBBbmRy ZWkgWnVia292IDxhLnp1YmtvdkBwb3N0Z3Jlc3Byby5ydT4KUmV2aWV3ZWQtYnk6IERpbGlw IEt1bWFyIDxkaWxpcGJhbGF1dEBnbWFpbC5jb20+LAogICAgICAgICAgICAgTWFzYWhpa28g U2F3YWRhIDxzYXdhZGEubXNoa0BnbWFpbC5jb20+LAogICAgICAgICAgICAgSWxpYSBFdmRv a2ltb3YgPGlseWEuZXZkb2tpbW92QHRhbnRvcmxhYnMuY29tPiwKICAgICAgICAgICAgIGpp YW4gaGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4sCiAgICAgICAgICAgICBLaXJp bGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPiwKICAgICAgICAgICAgIEFsZXhh bmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+LAogICAgICAgICAgICAgSmlt IE5hc2J5IDxqbmFzYnlAdXBncmFkZS5jb20+LAogICAgICAgICAgICAgU2FtaSBJbXNlaWgg PHNhbWltc2VpaEBnbWFpbC5jb20+LAogICAgICAgICAgICAgS2FyaW5hIExpdHNrZXZpY2gg PGxpdHNrZXZpY2hrYXJpbmFAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3Zpc2liaWxpdHltYXAuYyAgICAgIHwgMTAgKysrKysrKysrKwogc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgfCAgNCArKystCiBzcmMvYmFja2Vu ZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYyB8ICAyICsrCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAgICAgICB8ICA2ICsrKysrKwogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgfCAxMiArKysrKysrKysr Ky0KIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTgg KysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dCAgICAgICAgICB8IDEyICsrKysrKysrKy0tLQogNyBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNl cnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zp c2liaWxpdHltYXAuYwppbmRleCBlMjFiOTYyODFhNi4uOWVhN2EwNjhlZjAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKQEAgLTkyLDYgKzkyLDcgQEAK ICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9n dXRpbHMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIK ICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZt Z3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKQEAgLTE2Myw2ICsxNjQsMTUgQEAg dmlzaWJpbGl0eW1hcF9jbGVhcihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGss IEJ1ZmZlciB2bWJ1ZiwgdWludDggZmxhZ3MKIAogCWlmIChtYXBbbWFwQnl0ZV0gJiBtYXNr KQogCXsKKwkJLyoKKwkJICogVHJhY2sgaG93IG9mdGVuIGFsbC12aXNpYmxlIG9yIGFsbC1m cm96ZW4gYml0cyBhcmUgY2xlYXJlZCBpbiB0aGUKKwkJICogdmlzaWJpbGl0eSBtYXAuCisJ CSAqLworCQlpZiAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCAmIGZsYWdzICYgVklTSUJJ TElUWU1BUF9BTExfVklTSUJMRSkKKwkJCXBnc3RhdF9jb3VudF92bV9yZXZfYWxsX3Zpc2li bGUocmVsKTsKKwkJaWYgKG1hcFttYXBCeXRlXSA+PiBtYXBPZmZzZXQgJiBmbGFncyAmIFZJ U0lCSUxJVFlNQVBfQUxMX0ZST1pFTikKKwkJCXBnc3RhdF9jb3VudF92bV9yZXZfYWxsX2Zy b3plbihyZWwpOworCiAJCW1hcFttYXBCeXRlXSAmPSB+bWFzazsKIAogCQlNYXJrQnVmZmVy RGlydHkodm1idWYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f dmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4 IGVjYjdjOTk2ZTg2Li4xMjQyZWNhNzMwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbApAQCAtNzQxLDcgKzc0MSw5IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfYWxs X3RhYmxlcyBBUwogICAgICAgICAgICAgcGdfc3RhdF9nZXRfdG90YWxfYXV0b3ZhY3V1bV90 aW1lKEMub2lkKSBBUyB0b3RhbF9hdXRvdmFjdXVtX3RpbWUsCiAgICAgICAgICAgICBwZ19z dGF0X2dldF90b3RhbF9hbmFseXplX3RpbWUoQy5vaWQpIEFTIHRvdGFsX2FuYWx5emVfdGlt ZSwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3RvdGFsX2F1dG9hbmFseXplX3RpbWUoQy5v aWQpIEFTIHRvdGFsX2F1dG9hbmFseXplX3RpbWUsCi0gICAgICAgICAgICBwZ19zdGF0X2dl dF9zdGF0X3Jlc2V0X3RpbWUoQy5vaWQpIEFTIHN0YXRzX3Jlc2V0CisgICAgICAgICAgICBw Z19zdGF0X2dldF9zdGF0X3Jlc2V0X3RpbWUoQy5vaWQpIEFTIHN0YXRzX3Jlc2V0LAorICAg ICAgICAgICAgcGdfc3RhdF9nZXRfcmV2X2FsbF9mcm96ZW5fcGFnZXMoQy5vaWQpIEFTIHJl dl9hbGxfZnJvemVuX3BhZ2VzLAorICAgICAgICAgICAgcGdfc3RhdF9nZXRfcmV2X2FsbF92 aXNpYmxlX3BhZ2VzKEMub2lkKSBBUyByZXZfYWxsX3Zpc2libGVfcGFnZXMKICAgICBGUk9N IHBnX2NsYXNzIEMgTEVGVCBKT0lOCiAgICAgICAgICBwZ19pbmRleCBJIE9OIEMub2lkID0g SS5pbmRyZWxpZAogICAgICAgICAgTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBOIE9OIChOLm9p ZCA9IEMucmVsbmFtZXNwYWNlKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9w Z3N0YXRfcmVsYXRpb24uYwppbmRleCBiYzhjNDNiOTZhYS4uODg1ZDU5MGQyYjIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCkBAIC04 NzksNiArODc5LDggQEAgcGdzdGF0X3JlbGF0aW9uX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJl ZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCkKIAogCXRhYmVudHJ5LT5ibG9ja3NfZmV0Y2hl ZCArPSBsc3RhdHMtPmNvdW50cy5ibG9ja3NfZmV0Y2hlZDsKIAl0YWJlbnRyeS0+YmxvY2tz X2hpdCArPSBsc3RhdHMtPmNvdW50cy5ibG9ja3NfaGl0OworCXRhYmVudHJ5LT5yZXZfYWxs X2Zyb3plbl9wYWdlcyArPSBsc3RhdHMtPmNvdW50cy5yZXZfYWxsX2Zyb3plbl9wYWdlczsK Kwl0YWJlbnRyeS0+cmV2X2FsbF92aXNpYmxlX3BhZ2VzICs9IGxzdGF0cy0+Y291bnRzLnJl dl9hbGxfdmlzaWJsZV9wYWdlczsKIAogCS8qIENsYW1wIGxpdmVfdHVwbGVzIGluIGNhc2Ug b2YgbmVnYXRpdmUgZGVsdGFfbGl2ZV90dXBsZXMgKi8KIAl0YWJlbnRyeS0+bGl2ZV90dXBs ZXMgPSBNYXgodGFiZW50cnktPmxpdmVfdHVwbGVzLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3Bnc3RhdGZ1bmNzLmMKaW5kZXggNTBlYTllOGZiODMuLjgzZmYxZmZmODdkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwpAQCAtMTA3LDYgKzEwNywxMiBAQCBQR19T VEFUX0dFVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfdXBkYXRlZCkKIC8qIHBnX3N0YXRfZ2V0 X3ZhY3V1bV9jb3VudCAqLwogUEdfU1RBVF9HRVRfUkVMRU5UUllfSU5UNjQodmFjdXVtX2Nv dW50KQogCisvKiBwZ19zdGF0X2dldF9yZXZfYWxsX2Zyb3plbl9wYWdlcyAqLworUEdfU1RB VF9HRVRfUkVMRU5UUllfSU5UNjQocmV2X2FsbF9mcm96ZW5fcGFnZXMpCisKKy8qIHBnX3N0 YXRfZ2V0X3Jldl9hbGxfdmlzaWJsZV9wYWdlcyAqLworUEdfU1RBVF9HRVRfUkVMRU5UUllf SU5UNjQocmV2X2FsbF92aXNpYmxlX3BhZ2VzKQorCiAjZGVmaW5lIFBHX1NUQVRfR0VUX1JF TEVOVFJZX0ZMT0FUOChzdGF0KQkJCQkJCVwKIERhdHVtCQkJCQkJCQkJCQkJCQkJXAogQ3Bw Q29uY2F0KHBnX3N0YXRfZ2V0XyxzdGF0KShQR19GVU5DVElPTl9BUkdTKQkJCQkJXApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggMzYxZTJjZmZmZWIuLjI1MmVhYjA3OWQ2IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTEyODMxLDYgKzEyODMxLDE2IEBACiAg IHByb3NyYyA9PiAnaGFzaG9pZDgnIH0sCiB7IG9pZCA9PiAnODI4MScsIGRlc2NyID0+ICdo YXNoJywKICAgcHJvbmFtZSA9PiAnaGFzaG9pZDhleHRlbmRlZCcsIHByb3JldHR5cGUgPT4g J2ludDgnLAotICBwcm9hcmd0eXBlcyA9PiAnb2lkOCBpbnQ4JywgcHJvc3JjID0+ICdoYXNo b2lkOGV4dGVuZGVkJyB9LAorICBwcm9hcmd0eXBlcyA9PiAnb2lkOCBpbnQ4JywgICBwcm9z cmMgPT4gJ2hhc2hvaWQ4ZXh0ZW5kZWQnIH0sCiAKK3sgb2lkID0+ICc4MDAyJywKKyAgZGVz Y3IgPT4gJ3N0YXRpc3RpY3M6IG51bWJlciBvZiB0aW1lcyB0aGUgYWxsLXZpc2libGUgcGFn ZXMgaW4gdGhlIHZpc2liaWxpdHkgbWFwIHdhcyByZW1vdmVkIGZvciBwYWdlcyBvZiB0YWJs ZScsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3Jldl9hbGxfdmlzaWJsZV9wYWdlcycs IHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBl ID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdfc3Rh dF9nZXRfcmV2X2FsbF92aXNpYmxlX3BhZ2VzJyB9LAoreyBvaWQgPT4gJzgwMDMnLAorICBk ZXNjciA9PiAnc3RhdGlzdGljczogbnVtYmVyIG9mIHRpbWVzIHRoZSBhbGwtZnJvemVuIHBh Z2VzIGluIHRoZSB2aXNpYmlsaXR5IG1hcCB3YXMgcmVtb3ZlZCBmb3IgcGFnZXMgb2YgdGFi bGUnLAorICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9yZXZfYWxsX2Zyb3plbl9wYWdlcycs IHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBl ID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdfc3Rh dF9nZXRfcmV2X2FsbF9mcm96ZW5fcGFnZXMnIH0sCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmluZGV4IDIxNmI5MzQ5MmJh Li4wMmZiYjg0ODBkZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdzdGF0LmgKKysrIGIv c3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTE1OSw2ICsxNTksOSBAQCB0eXBlZGVmIHN0cnVj dCBQZ1N0YXRfVGFibGVDb3VudHMKIAogCVBnU3RhdF9Db3VudGVyIGJsb2Nrc19mZXRjaGVk OwogCVBnU3RhdF9Db3VudGVyIGJsb2Nrc19oaXQ7CisKKwlQZ1N0YXRfQ291bnRlciByZXZf YWxsX3Zpc2libGVfcGFnZXM7CisJUGdTdGF0X0NvdW50ZXIgcmV2X2FsbF9mcm96ZW5fcGFn ZXM7CiB9IFBnU3RhdF9UYWJsZUNvdW50czsKIAogLyogLS0tLS0tLS0tLQpAQCAtMjE3LDcg KzIyMCw3IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9UYWJsZVhhY3RTdGF0dXMKICAqIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICovCiAKLSNkZWZpbmUgUEdTVEFUX0ZJTEVfRk9STUFUX0lECTB4MDFBNUJDQkIK KyNkZWZpbmUgUEdTVEFUX0ZJTEVfRk9STUFUX0lECTB4MDFBNUJDQkMKIAogdHlwZWRlZiBz dHJ1Y3QgUGdTdGF0X0FyY2hpdmVyU3RhdHMKIHsKQEAgLTQ2Niw2ICs0NjksOCBAQCB0eXBl ZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdFRhYkVudHJ5CiAJUGdTdGF0X0NvdW50ZXIgdG90YWxf YXV0b2FuYWx5emVfdGltZTsKIAogCVRpbWVzdGFtcFR6IHN0YXRfcmVzZXRfdGltZTsKKwlQ Z1N0YXRfQ291bnRlciByZXZfYWxsX3Zpc2libGVfcGFnZXM7CisJUGdTdGF0X0NvdW50ZXIg cmV2X2FsbF9mcm96ZW5fcGFnZXM7CiB9IFBnU3RhdF9TdGF0VGFiRW50cnk7CiAKIC8qIC0t LS0tLQpAQCAtNzI1LDYgKzczMCwxNyBAQCBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2Fu YWx5emUoUmVsYXRpb24gcmVsLAogCQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlv bihyZWwpKQkJCQkJCVwKIAkJCShyZWwpLT5wZ3N0YXRfaW5mby0+Y291bnRzLmJsb2Nrc19o aXQrKzsJCQkJXAogCX0gd2hpbGUgKDApCisvKiBjb3VudCByZXZvY2F0aW9ucyBvZiBhbGwt dmlzaWJsZSBhbmQgYWxsLWZyb3plbiBiaXRzIGluIHZpc2liaWxpdHkgbWFwICovCisjZGVm aW5lIHBnc3RhdF9jb3VudF92bV9yZXZfYWxsX3Zpc2libGUocmVsKQkJCQkJCVwKKwlkbyB7 CQkJCQkJCQkJCQkJCQkJXAorCQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihy ZWwpKQkJCQkJCVwKKwkJCShyZWwpLT5wZ3N0YXRfaW5mby0+Y291bnRzLnJldl9hbGxfdmlz aWJsZV9wYWdlcysrOwlcCisJfSB3aGlsZSAoMCkKKyNkZWZpbmUgcGdzdGF0X2NvdW50X3Zt X3Jldl9hbGxfZnJvemVuKHJlbCkJCQkJCQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJ aWYgKHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlcCisJCQkocmVs KS0+cGdzdGF0X2luZm8tPmNvdW50cy5yZXZfYWxsX2Zyb3plbl9wYWdlcysrOwlcCisJfSB3 aGlsZSAoMCkKIAogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X2hlYXBfaW5zZXJ0KFJlbGF0 aW9uIHJlbCwgUGdTdGF0X0NvdW50ZXIgbik7CiBleHRlcm4gdm9pZCBwZ3N0YXRfY291bnRf aGVhcF91cGRhdGUoUmVsYXRpb24gcmVsLCBib29sIGhvdCwgYm9vbCBuZXdwYWdlKTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggZGViNmUyYWQ2YTkuLmUzOTI0 MjgzNzdkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTg0Niw3 ICsxODQ2LDkgQEAgcGdfc3RhdF9hbGxfdGFibGVzfCBTRUxFQ1QgYy5vaWQgQVMgcmVsaWQs CiAgICAgcGdfc3RhdF9nZXRfdG90YWxfYXV0b3ZhY3V1bV90aW1lKGMub2lkKSBBUyB0b3Rh bF9hdXRvdmFjdXVtX3RpbWUsCiAgICAgcGdfc3RhdF9nZXRfdG90YWxfYW5hbHl6ZV90aW1l KGMub2lkKSBBUyB0b3RhbF9hbmFseXplX3RpbWUsCiAgICAgcGdfc3RhdF9nZXRfdG90YWxf YXV0b2FuYWx5emVfdGltZShjLm9pZCkgQVMgdG90YWxfYXV0b2FuYWx5emVfdGltZSwKLSAg ICBwZ19zdGF0X2dldF9zdGF0X3Jlc2V0X3RpbWUoYy5vaWQpIEFTIHN0YXRzX3Jlc2V0Cisg ICAgcGdfc3RhdF9nZXRfc3RhdF9yZXNldF90aW1lKGMub2lkKSBBUyBzdGF0c19yZXNldCwK KyAgICBwZ19zdGF0X2dldF9yZXZfYWxsX2Zyb3plbl9wYWdlcyhjLm9pZCkgQVMgcmV2X2Fs bF9mcm96ZW5fcGFnZXMsCisgICAgcGdfc3RhdF9nZXRfcmV2X2FsbF92aXNpYmxlX3BhZ2Vz KGMub2lkKSBBUyByZXZfYWxsX3Zpc2libGVfcGFnZXMKICAgIEZST00gKChwZ19jbGFzcyBj CiAgICAgIExFRlQgSk9JTiBwZ19pbmRleCBpIE9OICgoYy5vaWQgPSBpLmluZHJlbGlkKSkp CiAgICAgIExFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiAoKG4ub2lkID0gYy5yZWxuYW1l c3BhY2UpKSkKQEAgLTIyNzksNyArMjI4MSw5IEBAIHBnX3N0YXRfc3lzX3RhYmxlc3wgU0VM RUNUIHJlbGlkLAogICAgIHRvdGFsX2F1dG92YWN1dW1fdGltZSwKICAgICB0b3RhbF9hbmFs eXplX3RpbWUsCiAgICAgdG90YWxfYXV0b2FuYWx5emVfdGltZSwKLSAgICBzdGF0c19yZXNl dAorICAgIHN0YXRzX3Jlc2V0LAorICAgIHJldl9hbGxfZnJvemVuX3BhZ2VzLAorICAgIHJl dl9hbGxfdmlzaWJsZV9wYWdlcwogICAgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMKICAgV0hF UkUgKChzY2hlbWFuYW1lID0gQU5ZIChBUlJBWVsncGdfY2F0YWxvZyc6Om5hbWUsICdpbmZv cm1hdGlvbl9zY2hlbWEnOjpuYW1lXSkpIE9SIChzY2hlbWFuYW1lIH4gJ15wZ190b2FzdCc6 OnRleHQpKTsKIHBnX3N0YXRfdXNlcl9mdW5jdGlvbnN8IFNFTEVDVCBwLm9pZCBBUyBmdW5j aWQsCkBAIC0yMzM0LDcgKzIzMzgsOSBAQCBwZ19zdGF0X3VzZXJfdGFibGVzfCBTRUxFQ1Qg cmVsaWQsCiAgICAgdG90YWxfYXV0b3ZhY3V1bV90aW1lLAogICAgIHRvdGFsX2FuYWx5emVf dGltZSwKICAgICB0b3RhbF9hdXRvYW5hbHl6ZV90aW1lLAotICAgIHN0YXRzX3Jlc2V0Cisg ICAgc3RhdHNfcmVzZXQsCisgICAgcmV2X2FsbF9mcm96ZW5fcGFnZXMsCisgICAgcmV2X2Fs bF92aXNpYmxlX3BhZ2VzCiAgICBGUk9NIHBnX3N0YXRfYWxsX3RhYmxlcwogICBXSEVSRSAo KHNjaGVtYW5hbWUgPD4gQUxMIChBUlJBWVsncGdfY2F0YWxvZyc6Om5hbWUsICdpbmZvcm1h dGlvbl9zY2hlbWEnOjpuYW1lXSkpIEFORCAoc2NoZW1hbmFtZSAhfiAnXnBnX3RvYXN0Jzo6 dGV4dCkpOwogcGdfc3RhdF93YWx8IFNFTEVDVCB3YWxfcmVjb3JkcywKLS0gCjIuMzkuNSAo QXBwbGUgR2l0LTE1NCkKCg== --------------mbznC2Bpd5jSTp4e82HRfj32 Content-Type: text/plain; charset=UTF-8; name="v29-0002-Machinery-for-grabbing-extended-vacuum-statistics.patch" Content-Disposition: attachment; filename*0="v29-0002-Machinery-for-grabbing-extended-vacuum-statistics.p"; filename*1="atch" Content-Transfer-Encoding: base64 RnJvbSBmNzgyNTM4OTVlZjdlNDg5ZTU5Mzg5ZDYwYmM1OTZiN2NmNDJhMTllIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8bGVuYS5yaWJhY2tpbmFA eWFuZGV4LnJ1PgpEYXRlOiBNb24sIDIgTWFyIDIwMjYgMjM6MDk6MzIgKzAzMDAKU3ViamVj dDogW1BBVENIIDIvM10gTWFjaGluZXJ5IGZvciBncmFiYmluZyBleHRlbmRlZCB2YWN1dW0g c3RhdGlzdGljcy4KClZhY3V1bSBzdGF0aXN0aWNzIGFyZSBzdG9yZWQgc2VwYXJhdGVseSBm cm9tIHJlZ3VsYXIgcmVsYXRpb24gYW5kCmRhdGFiYXNlIHN0YXRpc3RpY3MuIERlZGljYXRl ZCBQR1NUQVRfS0lORF9WQUNVVU1fUkVMQVRJT04gYW5kClBHU1RBVF9LSU5EX1ZBQ1VVTV9E QiBlbnRyaWVzIGluIHRoZSBjdW11bGF0aXZlIHN0YXRpc3RpY3Mgc3lzdGVtCmFsbG9jYXRl IG1lbW9yeSBmb3IgdmFjdXVtLXNwZWNpZmljIG1ldHJpY3MuIFN0YXRpc3RpY3MgYXJlIGdh dGhlcmVkCnNlcGFyYXRlbHkgZm9yIHRhYmxlcyBhbmQgaW5kZXhlcyBhY2NvcmRpbmcgdG8g dmFjdXVtIHBoYXNlcy4gVGhlCkV4dFZhY1JlcG9ydCB1bmlvbiBhbmQgdHlwZSBmaWVsZCBk aXN0aW5ndWlzaCBQR1NUQVRfRVhUVkFDX1RBQkxFIHZzClBHU1RBVF9FWFRWQUNfSU5ERVgu IEhlYXAgdmFjdXVtIHN0YXRzIGFyZSBzZW50IHRvIHRoZSBjdW11bGF0aXZlCnN0YXRpc3Rp Y3Mgc3lzdGVtIGFmdGVyIHZhY3V1bSBoYXMgcHJvY2Vzc2VkIHRoZSBpbmRleGVzLiBEYXRh YmFzZQp2YWN1dW0gc3RhdGlzdGljcyBhZ2dyZWdhdGUgcGVyLXRhYmxlIGFuZCBwZXItaW5k ZXggc3RhdGlzdGljcyB3aXRoaW4KdGhlIGRhdGFiYXNlLgoKQ29tbW9uIGZvciB0YWJsZXMs IGluZGV4ZXMsIGFuZCBkYXRhYmFzZTogdG90YWxfYmxrc19oaXQsIHRvdGFsX2Jsa3NfcmVh ZAphbmQgdG90YWxfYmxrc19kaXJ0aWVkIGFyZSB0aGUgbnVtYmVyIG9mIGhpdCwgbWlzcyBh bmQgZGlydGllZCBwYWdlcwppbiBzaGFyZWQgYnVmZmVycyBkdXJpbmcgYSB2YWN1dW0gb3Bl cmF0aW9uLiB0b3RhbF9ibGtzX2RpcnRpZWQgY291bnRzCm9ubHkgcGFnZXMgZGlydGllZCBi eSB0aGlzIHZhY3V1bS4gYmxrX3JlYWRfdGltZSBhbmQgYmxrX3dyaXRlX3RpbWUKdHJhY2sg YWNjZXNzIGFuZCBmbHVzaCB0aW1lIGZvciBidWZmZXIgcGFnZXM7IGJsa193cml0ZV90aW1l IGNhbiBzdGF5Cnplcm8gaWYgbm8gZmx1c2hlcyBvY2N1cnJlZC4gdG90YWxfdGltZSBpcyB3 YWxsLWNsb2NrIHRpbWUgZnJvbSBzdGFydAp0byBmaW5pc2gsIGluY2x1ZGluZyBpZGxlIHRp bWUgKEkvTyBhbmQgbG9jayB3YWl0cykuIGRlbGF5X3RpbWUgaXMKdG90YWwgdmFjdXVtIHNs ZWVwIHRpbWUgaW4gdmFjdXVtIGRlbGF5IHBvaW50cy4KCkJvdGggdGFibGUgYW5kIGluZGV4 IHJlcG9ydCB0dXBsZXNfZGVsZXRlZCAodHVwbGVzIHJlbW92ZWQgYnkgdGhlIHZhY3V1bSks CnBhZ2VzX3JlbW92ZWQgKHBhZ2VzIGJ5IHdoaWNoIHJlbGF0aW9uIHN0b3JhZ2Ugd2FzIHJl ZHVjZWQpIGFuZApwYWdlc19kZWxldGVkIChmcmVlZCBwYWdlczsgZmlsZSBzaXplIG1heSBy ZW1haW4gdW5jaGFuZ2VkKS4gVGhlc2UgYXJlCmluZGVwZW5kZW50IG9mIFdBTCBhbmQgYnVm ZmVyIHN0YXRzIGFuZCBhcmUgbm90IHN1bW1lZCBhdCB0aGUgZGF0YWJhc2UKbGV2ZWwuCgpU YWJsZSBvbmx5OiBwYWdlc19mcm96ZW4gKHBhZ2VzIG1hcmtlZCBhbGwtZnJvemVuIGluIHRo ZSB2aXNpYmlsaXR5IG1hcCksCnBhZ2VzX2FsbF92aXNpYmxlIChwYWdlcyBtYXJrZWQgYWxs LXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwKSwKd3JhcGFyb3VuZF9mYWlsc2FmZV9j b3VudCAobnVtYmVyIG9mIHVyZ2VudCBhbnRpLXdyYXBhcm91bmQgdmFjdXVtcykuCgpUYWJs ZSBhbmQgZGF0YWJhc2Ugc2hhcmUgd3JhcGFyb3VuZF9mYWlsc2FmZSAoY291bnQgb2YgdXJn ZW50IGFudGktd3JhcGFyb3VuZApjbGVhbnVwcykuIERhdGFiYXNlIG9ubHk6IGVycm9ycyAo bnVtYmVyIG9mIGVycm9yLWxldmVsIGVycm9ycyBjYXVnaHQKZHVyaW5nIHZhY3V1bSkuCgpB dXRob3JzOiBBbGVuYSBSeWJha2luYSA8bGVuYS5yaWJhY2tpbmFAeWFuZGV4LnJ1PiwKICAg ICAgICAgQW5kcmVpIExlcGlraG92IDxhLmxlcGlraG92QHBvc3RncmVzcHJvLnJ1PiwKICAg ICAgICAgQW5kcmVpIFp1YmtvdiA8YS56dWJrb3ZAcG9zdGdyZXNwcm8ucnU+ClJldmlld2Vk LWJ5OiBEaWxpcCBLdW1hciA8ZGlsaXBiYWxhdXRAZ21haWwuY29tPiwKICAgICAgICAgICAg IE1hc2FoaWtvIFNhd2FkYSA8c2F3YWRhLm1zaGtAZ21haWwuY29tPiwKICAgICAgICAgICAg IElsaWEgRXZkb2tpbW92IDxpbHlhLmV2ZG9raW1vdkB0YW50b3JsYWJzLmNvbT4sCiAgICAg ICAgICAgICBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+LAogICAgICAg ICAgICAgS2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4sCiAgICAgICAg ICAgICBBbGV4YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPiwKICAgICAg ICAgICAgIEppbSBOYXNieSA8am5hc2J5QHVwZ3JhZGUuY29tPiwKICAgICAgICAgICAgIFNh bWkgSW1zZWloIDxzYW1pbXNlaWhAZ21haWwuY29tPiwKICAgICAgICAgICAgIEthcmluYSBM aXRza2V2aWNoIDxsaXRza2V2aWNoa2FyaW5hQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgIHwgMTQwICsrKysrKysrKysrKysrKysrKysr KysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAgICAgICAgIHwgICA0ICsK IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgfCAgIDggKysKIHNyYy9p bmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oICAgICAgICAgfCAgMjggKysrKysrCiBzcmMvaW5j bHVkZS9wZ3N0YXQuaCAgICAgICAgICAgICAgICAgIHwgIDU4ICsrKysrKysrKysrCiA1IGZp bGVzIGNoYW5nZWQsIDIzOCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCmluZGV4IDgyYzViMjhlMGFkLi4wNGIwODdlMmE1YyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMjgyLDYgKzI4Miw4IEBAIHR5cGVk ZWYgc3RydWN0IExWUmVsU3RhdGUKIAkvKiBFcnJvciByZXBvcnRpbmcgc3RhdGUgKi8KIAlj aGFyCSAgICpkYm5hbWU7CiAJY2hhcgkgICAqcmVsbmFtZXNwYWNlOworCU9pZAkJCXJlbG9p ZDsKKwlPaWQJCQlpbmRvaWQ7CiAJY2hhcgkgICAqcmVsbmFtZTsKIAljaGFyCSAgICppbmRu YW1lOwkJLyogQ3VycmVudCBpbmRleCBuYW1lICovCiAJQmxvY2tOdW1iZXIgYmxrbm87CQkJ LyogdXNlZCBvbmx5IGZvciBoZWFwIG9wZXJhdGlvbnMgKi8KQEAgLTQwMiw2ICs0MDQsMTUg QEAgdHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogCSAqIGJlZW4gcGVybWFuZW50bHkgZGlz YWJsZWQuCiAJICovCiAJQmxvY2tOdW1iZXIgZWFnZXJfc2Nhbl9yZW1haW5pbmdfZmFpbHM7 CisKKwlpbnQzMgkJd3JhcGFyb3VuZF9mYWlsc2FmZV9jb3VudDsJLyogIyBvZiBlbWVyZ2Vu Y3kgdmFjdXVtcyBmb3IKKwkJCQkJCQkJCQkJICogYW50aS13cmFwYXJvdW5kICovCisKKwkv KgorCSAqIFdlIG5lZWQgdG8gYWNjdW11bGF0ZSBpbmRleCBzdGF0aXN0aWNzIGZvciBsYXRl ciBzdWJ0cmFjdGlvbiBmcm9tIGhlYXAKKwkgKiBzdGF0cy4KKwkgKi8KKwlQZ1N0YXRfVmFj dXVtUmVsYXRpb25Db3VudHMgZXh0VmFjUmVwb3J0SWR4OwogfSBMVlJlbFN0YXRlOwogCiAK QEAgLTQ4OCw2ICs0OTksMTA3IEBAIHN0YXRpYyB2b2lkIHJlc3RvcmVfdmFjdXVtX2Vycm9y X2luZm8oTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQkJCQkJCQkJICBjb25zdCBMVlNhdmVkRXJy SW5mbyAqc2F2ZWRfdmFjcmVsKTsKIAogCisvKiBFeHRlbmRlZCB2YWN1dW0gc3RhdGlzdGlj cyBmdW5jdGlvbnMgKi8KKworLyoKKyAqIGV4dHZhY19zdGF0c19zdGFydCAtIFNhdmUgY3V0 LW9mZiB2YWx1ZXMgYmVmb3JlIHN0YXJ0IG9mIHJlbGF0aW9uIHByb2Nlc3NpbmcuCisgKi8K K3N0YXRpYyB2b2lkCitleHR2YWNfc3RhdHNfc3RhcnQoUmVsYXRpb24gcmVsLCBMVkV4dFN0 YXRDb3VudGVycyAqIGNvdW50ZXJzKQoreworCW1lbXNldChjb3VudGVycywgMCwgc2l6ZW9m KExWRXh0U3RhdENvdW50ZXJzKSk7CisJY291bnRlcnMtPnN0YXJ0dGltZSA9IEdldEN1cnJl bnRUaW1lc3RhbXAoKTsKKwljb3VudGVycy0+d2FsdXNhZ2UgPSBwZ1dhbFVzYWdlOworCWNv dW50ZXJzLT5idWZ1c2FnZSA9IHBnQnVmZmVyVXNhZ2U7CisJY291bnRlcnMtPlZhY3V1bURl bGF5VGltZSA9IFZhY3V1bURlbGF5VGltZTsKKwljb3VudGVycy0+YmxvY2tzX2ZldGNoZWQg PSAwOworCWNvdW50ZXJzLT5ibG9ja3NfaGl0ID0gMDsKKworCWlmIChyZWwtPnBnc3RhdF9p bmZvICYmIHBnc3RhdF90cmFja19jb3VudHMpCisJeworCQljb3VudGVycy0+YmxvY2tzX2Zl dGNoZWQgPSByZWwtPnBnc3RhdF9pbmZvLT5jb3VudHMuYmxvY2tzX2ZldGNoZWQ7CisJCWNv dW50ZXJzLT5ibG9ja3NfaGl0ID0gcmVsLT5wZ3N0YXRfaW5mby0+Y291bnRzLmJsb2Nrc19o aXQ7CisJfQorfQorCisvKgorICogZXh0dmFjX3N0YXRzX2VuZCAtIEZpbmlzaCBleHRlbmRl ZCB2YWN1dW0gc3RhdGlzdGljIGdhdGhlcmluZyBhbmQgZm9ybSByZXBvcnQuCisgKi8KK3N0 YXRpYyB2b2lkCitleHR2YWNfc3RhdHNfZW5kKFJlbGF0aW9uIHJlbCwgTFZFeHRTdGF0Q291 bnRlcnMgKiBjb3VudGVycywKKwkJCQkgUGdTdGF0X0NvbW1vbkNvdW50cyAqIHJlcG9ydCkK K3sKKwlXYWxVc2FnZQl3YWx1c2FnZTsKKwlCdWZmZXJVc2FnZSBidWZ1c2FnZTsKKwlUaW1l c3RhbXBUeiBlbmR0aW1lOworCWxvbmcJCXNlY3M7CisJaW50CQkJdXNlY3M7CisKKwltZW1z ZXQocmVwb3J0LCAwLCBzaXplb2YoUGdTdGF0X0NvbW1vbkNvdW50cykpOworCW1lbXNldCgm d2FsdXNhZ2UsIDAsIHNpemVvZihXYWxVc2FnZSkpOworCVdhbFVzYWdlQWNjdW1EaWZmKCZ3 YWx1c2FnZSwgJnBnV2FsVXNhZ2UsICZjb3VudGVycy0+d2FsdXNhZ2UpOworCW1lbXNldCgm YnVmdXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOworCUJ1ZmZlclVzYWdlQWNjdW1E aWZmKCZidWZ1c2FnZSwgJnBnQnVmZmVyVXNhZ2UsICZjb3VudGVycy0+YnVmdXNhZ2UpOwor CWVuZHRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisJVGltZXN0YW1wRGlmZmVyZW5j ZShjb3VudGVycy0+c3RhcnR0aW1lLCBlbmR0aW1lLCAmc2VjcywgJnVzZWNzKTsKKworCXJl cG9ydC0+dG90YWxfYmxrc19yZWFkID0gYnVmdXNhZ2UubG9jYWxfYmxrc19yZWFkICsgYnVm dXNhZ2Uuc2hhcmVkX2Jsa3NfcmVhZDsKKwlyZXBvcnQtPnRvdGFsX2Jsa3NfaGl0ID0gYnVm dXNhZ2UubG9jYWxfYmxrc19oaXQgKyBidWZ1c2FnZS5zaGFyZWRfYmxrc19oaXQ7CisJcmVw b3J0LT50b3RhbF9ibGtzX2RpcnRpZWQgPSBidWZ1c2FnZS5sb2NhbF9ibGtzX2RpcnRpZWQg KyBidWZ1c2FnZS5zaGFyZWRfYmxrc19kaXJ0aWVkOworCXJlcG9ydC0+dG90YWxfYmxrc193 cml0dGVuID0gYnVmdXNhZ2Uuc2hhcmVkX2Jsa3Nfd3JpdHRlbjsKKwlyZXBvcnQtPndhbF9y ZWNvcmRzID0gd2FsdXNhZ2Uud2FsX3JlY29yZHM7CisJcmVwb3J0LT53YWxfZnBpID0gd2Fs dXNhZ2Uud2FsX2ZwaTsKKwlyZXBvcnQtPndhbF9ieXRlcyA9IHdhbHVzYWdlLndhbF9ieXRl czsKKwlyZXBvcnQtPmJsa19yZWFkX3RpbWUgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhi dWZ1c2FnZS5sb2NhbF9ibGtfcmVhZF90aW1lKSArCisJCUlOU1RSX1RJTUVfR0VUX01JTExJ U0VDKGJ1ZnVzYWdlLnNoYXJlZF9ibGtfcmVhZF90aW1lKTsKKwlyZXBvcnQtPmJsa193cml0 ZV90aW1lID0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoYnVmdXNhZ2UubG9jYWxfYmxrX3dy aXRlX3RpbWUpICsKKwkJSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoYnVmdXNhZ2Uuc2hhcmVk X2Jsa193cml0ZV90aW1lKTsKKwlyZXBvcnQtPmRlbGF5X3RpbWUgPSBWYWN1dW1EZWxheVRp bWUgLSBjb3VudGVycy0+VmFjdXVtRGVsYXlUaW1lOworCXJlcG9ydC0+dG90YWxfdGltZSA9 IHNlY3MgKiAxMDAwLjAgKyB1c2VjcyAvIDEwMDAuMDsKKworCWlmIChyZWwtPnBnc3RhdF9p bmZvICYmIHBnc3RhdF90cmFja19jb3VudHMpCisJeworCQlyZXBvcnQtPmJsa3NfZmV0Y2hl ZCA9IHJlbC0+cGdzdGF0X2luZm8tPmNvdW50cy5ibG9ja3NfZmV0Y2hlZCAtIGNvdW50ZXJz LT5ibG9ja3NfZmV0Y2hlZDsKKwkJcmVwb3J0LT5ibGtzX2hpdCA9IHJlbC0+cGdzdGF0X2lu Zm8tPmNvdW50cy5ibG9ja3NfaGl0IC0gY291bnRlcnMtPmJsb2Nrc19oaXQ7CisJfQorfQor CisvKgorICogZXh0dmFjX3N0YXRzX3N0YXJ0X2lkeCAtIFN0YXJ0IGV4dGVuZGVkIHZhY3V1 bSBzdGF0aXN0aWMgZ2F0aGVyaW5nIGZvciBpbmRleC4KKyAqLwordm9pZAorZXh0dmFjX3N0 YXRzX3N0YXJ0X2lkeChSZWxhdGlvbiByZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3Rh dHMsCisJCQkJCSAgIExWRXh0U3RhdENvdW50ZXJzSWR4ICogY291bnRlcnMpCit7CisJZXh0 dmFjX3N0YXRzX3N0YXJ0KHJlbCwgJmNvdW50ZXJzLT5jb21tb24pOworCWNvdW50ZXJzLT5w YWdlc19kZWxldGVkID0gMDsKKwljb3VudGVycy0+dHVwbGVzX3JlbW92ZWQgPSAwOworCisJ aWYgKHN0YXRzICE9IE5VTEwpCisJeworCQljb3VudGVycy0+dHVwbGVzX3JlbW92ZWQgPSBz dGF0cy0+dHVwbGVzX3JlbW92ZWQ7CisJCWNvdW50ZXJzLT5wYWdlc19kZWxldGVkID0gc3Rh dHMtPnBhZ2VzX2RlbGV0ZWQ7CisJfQorfQorCisKKy8qCisgKiBleHR2YWNfc3RhdHNfZW5k X2lkeCAtIEZpbmlzaCBleHRlbmRlZCB2YWN1dW0gc3RhdGlzdGljIGdhdGhlcmluZyBmb3Ig aW5kZXguCisgKi8KK3ZvaWQKK2V4dHZhY19zdGF0c19lbmRfaWR4KFJlbGF0aW9uIHJlbCwg SW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywKKwkJCQkJIExWRXh0U3RhdENvdW50ZXJz SWR4ICogY291bnRlcnMsIFBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cyAqIHJlcG9ydCkK K3sKKwltZW1zZXQocmVwb3J0LCAwLCBzaXplb2YoUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291 bnRzKSk7CisJZXh0dmFjX3N0YXRzX2VuZChyZWwsICZjb3VudGVycy0+Y29tbW9uLCAmcmVw b3J0LT5jb21tb24pOworCXJlcG9ydC0+dHlwZSA9IFBHU1RBVF9FWFRWQUNfSU5ERVg7CisK KwlpZiAoc3RhdHMgIT0gTlVMTCkKKwl7CisJCXJlcG9ydC0+Y29tbW9uLnR1cGxlc19kZWxl dGVkID0gc3RhdHMtPnR1cGxlc19yZW1vdmVkIC0gY291bnRlcnMtPnR1cGxlc19yZW1vdmVk OworCQlyZXBvcnQtPmluZGV4LnBhZ2VzX2RlbGV0ZWQgPSBzdGF0cy0+cGFnZXNfZGVsZXRl ZCAtIGNvdW50ZXJzLT5wYWdlc19kZWxldGVkOworCX0KK30KIAogLyoKICAqIEhlbHBlciB0 byBzZXQgdXAgdGhlIGVhZ2VyIHNjYW5uaW5nIHN0YXRlIGZvciB2YWN1dW1pbmcgYSBzaW5n bGUgcmVsYXRpb24uCkBAIC02NDYsNyArNzU4LDEwIEBAIGhlYXBfdmFjdXVtX3JlbChSZWxh dGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJRXJyb3JDb250ZXh0Q2Fs bGJhY2sgZXJyY2FsbGJhY2s7CiAJY2hhcgkgICoqaW5kbmFtZXMgPSBOVUxMOwogCVNpemUJ CWRlYWRfaXRlbXNfbWF4X2J5dGVzID0gMDsKKwlMVkV4dFN0YXRDb3VudGVycyBleHRWYWND b3VudGVyczsKKwlQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMgZXh0VmFjUmVwb3J0Owog CisJbWVtc2V0KCZleHRWYWNSZXBvcnQsIDAsIHNpemVvZihleHRWYWNSZXBvcnQpKTsKIAl2 ZXJib3NlID0gKHBhcmFtcy5vcHRpb25zICYgVkFDT1BUX1ZFUkJPU0UpICE9IDA7CiAJaW5z dHJ1bWVudCA9ICh2ZXJib3NlIHx8IChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYK IAkJCQkJCQkgIHBhcmFtcy5sb2dfdmFjdXVtX21pbl9kdXJhdGlvbiA+PSAwKSk7CkBAIC02 NjMsNiArNzc4LDggQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFj dXVtUGFyYW1zIHBhcmFtcywKIAkvKiBVc2VkIGZvciBpbnN0cnVtZW50YXRpb24gYW5kIHN0 YXRzIHJlcG9ydCAqLwogCXN0YXJ0dGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAor CWV4dHZhY19zdGF0c19zdGFydChyZWwsICZleHRWYWNDb3VudGVycyk7CisKIAlwZ3N0YXRf cHJvZ3Jlc3Nfc3RhcnRfY29tbWFuZChQUk9HUkVTU19DT01NQU5EX1ZBQ1VVTSwKIAkJCQkJ CQkJICBSZWxhdGlvbkdldFJlbGlkKHJlbCkpOwogCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQ cm9jZXNzKCkpCkBAIC02OTAsNyArODA3LDkgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9u IHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAl2YWNyZWwtPmRibmFtZSA9IGdl dF9kYXRhYmFzZV9uYW1lKE15RGF0YWJhc2VJZCk7CiAJdmFjcmVsLT5yZWxuYW1lc3BhY2Ug PSBnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSk7CiAJdmFj cmVsLT5yZWxuYW1lID0gcHN0cmR1cChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKTsK Kwl2YWNyZWwtPnJlbG9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKIAl2YWNyZWwtPmlu ZG5hbWUgPSBOVUxMOworCW1lbXNldCgmdmFjcmVsLT5leHRWYWNSZXBvcnRJZHgsIDAsIHNp emVvZih2YWNyZWwtPmV4dFZhY1JlcG9ydElkeCkpOwogCXZhY3JlbC0+cGhhc2UgPSBWQUNV VU1fRVJSQ0JfUEhBU0VfVU5LTk9XTjsKIAl2YWNyZWwtPnZlcmJvc2UgPSB2ZXJib3NlOwog CWVycmNhbGxiYWNrLmNhbGxiYWNrID0gdmFjdXVtX2Vycm9yX2NhbGxiYWNrOwpAQCAtODAx LDYgKzkyMCw5IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1 bVBhcmFtcyBwYXJhbXMsCiAJdmFjcmVsLT5yZWxfcGFnZXMgPSBvcmlnX3JlbF9wYWdlcyA9 IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MocmVsKTsKIAl2YWNyZWwtPnZpc3Rlc3QgPSBH bG9iYWxWaXNUZXN0Rm9yKHJlbCk7CiAKKwkvKiBJbml0aWFsaXplIHdyYXBhcm91bmQgZmFp bHNhZmUgY291bnQgZm9yIGV4dGVuZGVkIHZhY3V1bSBzdGF0cyAqLworCXZhY3JlbC0+d3Jh cGFyb3VuZF9mYWlsc2FmZV9jb3VudCA9IDA7CisKIAkvKiBJbml0aWFsaXplIHN0YXRlIHVz ZWQgdG8gdHJhY2sgb2xkZXN0IGV4dGFudCBYSUQvTVhJRCAqLwogCXZhY3JlbC0+TmV3UmVs ZnJvemVuWGlkID0gdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW47CiAJdmFjcmVsLT5OZXdS ZWxtaW5NeGlkID0gdmFjcmVsLT5jdXRvZmZzLk9sZGVzdE14YWN0OwpAQCAtOTc3LDYgKzEw OTksNyBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJh bXMgcGFyYW1zLAogCQkJCQkJIHZhY3JlbC0+cmVjZW50bHlfZGVhZF90dXBsZXMgKwogCQkJ CQkJIHZhY3JlbC0+bWlzc2VkX2RlYWRfdHVwbGVzLAogCQkJCQkJIHN0YXJ0dGltZSk7CisK IAlwZ3N0YXRfcHJvZ3Jlc3NfZW5kX2NvbW1hbmQoKTsKIAogCWlmIChpbnN0cnVtZW50KQpA QCAtMzAxOCw2ICszMTQxLDcgQEAgbGF6eV9jaGVja193cmFwYXJvdW5kX2ZhaWxzYWZlKExW UmVsU3RhdGUgKnZhY3JlbCkKIAkJaW50NjQJCXByb2dyZXNzX3ZhbFszXSA9IHswLCAwLCBQ Uk9HUkVTU19WQUNVVU1fTU9ERV9GQUlMU0FGRX07CiAKIAkJVmFjdXVtRmFpbHNhZmVBY3Rp dmUgPSB0cnVlOworCQl2YWNyZWwtPndyYXBhcm91bmRfZmFpbHNhZmVfY291bnQrKzsKIAog CQkvKgogCQkgKiBBYmFuZG9uIHVzZSBvZiBhIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgdG8g YWxsb3cgdXNlIG9mIGFsbCBvZgpAQCAtMzEyOSw2ICszMjUzLDEwIEBAIGxhenlfdmFjdXVt X29uZV9pbmRleChSZWxhdGlvbiBpbmRyZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0 YXQsCiB7CiAJSW5kZXhWYWN1dW1JbmZvIGl2aW5mbzsKIAlMVlNhdmVkRXJySW5mbyBzYXZl ZF9lcnJfaW5mbzsKKwlMVkV4dFN0YXRDb3VudGVyc0lkeCBleHRWYWNDb3VudGVyczsKKwlQ Z1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMgZXh0VmFjUmVwb3J0OworCisJZXh0dmFjX3N0 YXRzX3N0YXJ0X2lkeChpbmRyZWwsIGlzdGF0LCAmZXh0VmFjQ291bnRlcnMpOwogCiAJaXZp bmZvLmluZGV4ID0gaW5kcmVsOwogCWl2aW5mby5oZWFwcmVsID0gdmFjcmVsLT5yZWw7CkBA IC0zMTQ3LDYgKzMyNzUsNyBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5k cmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCSAqLwogCUFzc2VydCh2YWNy ZWwtPmluZG5hbWUgPT0gTlVMTCk7CiAJdmFjcmVsLT5pbmRuYW1lID0gcHN0cmR1cChSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShpbmRyZWwpKTsKKwl2YWNyZWwtPmluZG9pZCA9IFJlbGF0 aW9uR2V0UmVsaWQoaW5kcmVsKTsKIAl1cGRhdGVfdmFjdXVtX2Vycm9yX2luZm8odmFjcmVs LCAmc2F2ZWRfZXJyX2luZm8sCiAJCQkJCQkJIFZBQ1VVTV9FUlJDQl9QSEFTRV9WQUNVVU1f SU5ERVgsCiAJCQkJCQkJIEludmFsaWRCbG9ja051bWJlciwgSW52YWxpZE9mZnNldE51bWJl cik7CkBAIC0zMTU1LDYgKzMyODQsOSBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRp b24gaW5kcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCWlzdGF0ID0gdmFj X2J1bGtkZWxfb25lX2luZGV4KCZpdmluZm8sIGlzdGF0LCB2YWNyZWwtPmRlYWRfaXRlbXMs CiAJCQkJCQkJCSAgdmFjcmVsLT5kZWFkX2l0ZW1zX2luZm8pOwogCisJbWVtc2V0KCZleHRW YWNSZXBvcnQsIDAsIHNpemVvZihleHRWYWNSZXBvcnQpKTsKKwlleHR2YWNfc3RhdHNfZW5k X2lkeChpbmRyZWwsIGlzdGF0LCAmZXh0VmFjQ291bnRlcnMsICZleHRWYWNSZXBvcnQpOwor CiAJLyogUmV2ZXJ0IHRvIHRoZSBwcmV2aW91cyBwaGFzZSBpbmZvcm1hdGlvbiBmb3IgZXJy b3IgdHJhY2ViYWNrICovCiAJcmVzdG9yZV92YWN1dW1fZXJyb3JfaW5mbyh2YWNyZWwsICZz YXZlZF9lcnJfaW5mbyk7CiAJcGZyZWUodmFjcmVsLT5pbmRuYW1lKTsKQEAgLTMxNzksNiAr MzMxMSwxMCBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwgSW5k ZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIHsKIAlJbmRleFZhY3V1bUluZm8gaXZpbmZv OwogCUxWU2F2ZWRFcnJJbmZvIHNhdmVkX2Vycl9pbmZvOworCUxWRXh0U3RhdENvdW50ZXJz SWR4IGV4dFZhY0NvdW50ZXJzOworCVBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cyBleHRW YWNSZXBvcnQ7CisKKwlleHR2YWNfc3RhdHNfc3RhcnRfaWR4KGluZHJlbCwgaXN0YXQsICZl eHRWYWNDb3VudGVycyk7CiAKIAlpdmluZm8uaW5kZXggPSBpbmRyZWw7CiAJaXZpbmZvLmhl YXByZWwgPSB2YWNyZWwtPnJlbDsKQEAgLTMxOTgsMTIgKzMzMzQsMTYgQEAgbGF6eV9jbGVh bnVwX29uZV9pbmRleChSZWxhdGlvbiBpbmRyZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq aXN0YXQsCiAJICovCiAJQXNzZXJ0KHZhY3JlbC0+aW5kbmFtZSA9PSBOVUxMKTsKIAl2YWNy ZWwtPmluZG5hbWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZHJlbCkp OworCXZhY3JlbC0+aW5kb2lkID0gUmVsYXRpb25HZXRSZWxpZChpbmRyZWwpOwogCXVwZGF0 ZV92YWN1dW1fZXJyb3JfaW5mbyh2YWNyZWwsICZzYXZlZF9lcnJfaW5mbywKIAkJCQkJCQkg VkFDVVVNX0VSUkNCX1BIQVNFX0lOREVYX0NMRUFOVVAsCiAJCQkJCQkJIEludmFsaWRCbG9j a051bWJlciwgSW52YWxpZE9mZnNldE51bWJlcik7CiAKIAlpc3RhdCA9IHZhY19jbGVhbnVw X29uZV9pbmRleCgmaXZpbmZvLCBpc3RhdCk7CiAKKwltZW1zZXQoJmV4dFZhY1JlcG9ydCwg MCwgc2l6ZW9mKGV4dFZhY1JlcG9ydCkpOworCWV4dHZhY19zdGF0c19lbmRfaWR4KGluZHJl bCwgaXN0YXQsICZleHRWYWNDb3VudGVycywgJmV4dFZhY1JlcG9ydCk7CisKIAkvKiBSZXZl cnQgdG8gdGhlIHByZXZpb3VzIHBoYXNlIGluZm9ybWF0aW9uIGZvciBlcnJvciB0cmFjZWJh Y2sgKi8KIAlyZXN0b3JlX3ZhY3V1bV9lcnJvcl9pbmZvKHZhY3JlbCwgJnNhdmVkX2Vycl9p bmZvKTsKIAlwZnJlZSh2YWNyZWwtPmluZG5hbWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpp bmRleCA2MmMxZWJkZmQ5Yi4uZmFlYWIwNmQyYmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5j CkBAIC0xMTgsNiArMTE4LDkgQEAgcGdfYXRvbWljX3VpbnQzMiAqVmFjdXVtU2hhcmVkQ29z dEJhbGFuY2UgPSBOVUxMOwogcGdfYXRvbWljX3VpbnQzMiAqVmFjdXVtQWN0aXZlTldvcmtl cnMgPSBOVUxMOwogaW50CQkJVmFjdXVtQ29zdEJhbGFuY2VMb2NhbCA9IDA7CiAKKy8qIEN1 bXVsYXRpdmUgc3RvcmFnZSB0byByZXBvcnQgdG90YWwgdmFjdXVtIGRlbGF5IHRpbWUgKG1z ZWMpLiAqLworZG91YmxlCQlWYWN1dW1EZWxheVRpbWUgPSAwOworCiAvKiBub24tZXhwb3J0 IGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KIHN0YXRpYyBMaXN0ICpleHBhbmRfdmFjdXVtX3Jl bChWYWN1dW1SZWxhdGlvbiAqdnJlbCwKIAkJCQkJCQkgICBNZW1vcnlDb250ZXh0IHZhY19j b250ZXh0LCBpbnQgb3B0aW9ucyk7CkBAIC0yNTQxLDYgKzI1NDQsNyBAQCB2YWN1dW1fZGVs YXlfcG9pbnQoYm9vbCBpc19hbmFseXplKQogCQkJZXhpdCgxKTsKIAogCQlWYWN1dW1Db3N0 QmFsYW5jZSA9IDA7CisJCVZhY3V1bURlbGF5VGltZSArPSBtc2VjOwogCiAJCS8qCiAJCSAq IEJhbGFuY2UgYW5kIHVwZGF0ZSBsaW1pdCB2YWx1ZXMgZm9yIGF1dG92YWN1dW0gd29ya2Vy cy4gV2UgbXVzdCBkbwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt cGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5k ZXggMjc5MTA4Y2E4OWYuLjdhODVjNjQ0NzQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bXBhcmFsbGVsLmMKQEAgLTg2OSw2ICs4NjksOCBAQCBwYXJhbGxlbF92YWN1dW1fcHJv Y2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBSZWxhdGlvbiBpbmRy ZWwsCiAJSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCA9IE5VTEw7CiAJSW5kZXhCdWxr RGVsZXRlUmVzdWx0ICppc3RhdF9yZXM7CiAJSW5kZXhWYWN1dW1JbmZvIGl2aW5mbzsKKwlM VkV4dFN0YXRDb3VudGVyc0lkeCBleHRWYWNDb3VudGVyczsKKwlQZ1N0YXRfVmFjdXVtUmVs YXRpb25Db3VudHMgZXh0VmFjUmVwb3J0OwogCiAJLyoKIAkgKiBVcGRhdGUgdGhlIHBvaW50 ZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYnVsay1kZWxldGlvbiByZXN1bHQgaWYgc29tZW9u ZQpAQCAtODc3LDYgKzg3OSw4IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX29uZV9pbmRl eChQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIFJlbGF0aW9uIGluZHJlbCwKIAlpZiAoaW5k c3RhdHMtPmlzdGF0X3VwZGF0ZWQpCiAJCWlzdGF0ID0gJihpbmRzdGF0cy0+aXN0YXQpOwog CisJZXh0dmFjX3N0YXRzX3N0YXJ0X2lkeChpbmRyZWwsIGlzdGF0LCAmZXh0VmFjQ291bnRl cnMpOworCiAJaXZpbmZvLmluZGV4ID0gaW5kcmVsOwogCWl2aW5mby5oZWFwcmVsID0gcHZz LT5oZWFwcmVsOwogCWl2aW5mby5hbmFseXplX29ubHkgPSBmYWxzZTsKQEAgLTkwNSw2ICs5 MDksOSBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzLCBSZWxhdGlvbiBpbmRyZWwsCiAJCQkJIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKGluZHJlbCkpOwogCX0KIAorCW1lbXNldCgmZXh0VmFjUmVwb3J0LCAwLCBzaXpl b2YoZXh0VmFjUmVwb3J0KSk7CisJZXh0dmFjX3N0YXRzX2VuZF9pZHgoaW5kcmVsLCBpc3Rh dF9yZXMsICZleHRWYWNDb3VudGVycywgJmV4dFZhY1JlcG9ydCk7CisKIAkvKgogCSAqIENv cHkgdGhlIGluZGV4IGJ1bGstZGVsZXRpb24gcmVzdWx0IHJldHVybmVkIGZyb20gYW1idWxr ZGVsZXRlIGFuZAogCSAqIGFtdmFjdXVtY2xlYW51cCB0byB0aGUgRFNNIHNlZ21lbnQgaWYg aXQncyB0aGUgZmlyc3QgY3ljbGUgYmVjYXVzZSB0aGV5CkBAIC0xMDU1LDYgKzEwNjIsNyBA QCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2Mp CiAJLyogU2V0IGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5ICovCiAJVmFjdXVtVXBkYXRlQ29z dHMoKTsKIAlWYWN1dW1Db3N0QmFsYW5jZSA9IDA7CisJVmFjdXVtRGVsYXlUaW1lID0gMDsK IAlWYWN1dW1Db3N0QmFsYW5jZUxvY2FsID0gMDsKIAlWYWN1dW1TaGFyZWRDb3N0QmFsYW5j ZSA9ICYoc2hhcmVkLT5jb3N0X2JhbGFuY2UpOwogCVZhY3V1bUFjdGl2ZU5Xb3JrZXJzID0g JihzaGFyZWQtPmFjdGl2ZV9ud29ya2Vycyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oCmluZGV4 IGU4ODVhNGI5Yzc3Li5jNTBjZTUxZTlkYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29t bWFuZHMvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKQEAg LTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvbG9jay5oIgogI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCisjaW5jbHVkZSAi cGdzdGF0LmgiCiAKIC8qCiAgKiBGbGFncyBmb3IgYW1wYXJhbGxlbHZhY3V1bW9wdGlvbnMg dG8gY29udHJvbCB0aGUgcGFydGljaXBhdGlvbiBvZiBidWxrZGVsZXRlCkBAIC0zMzMsNiAr MzM0LDMzIEBAIGV4dGVybiBQR0RMTElNUE9SVCBwZ19hdG9taWNfdWludDMyICpWYWN1dW1T aGFyZWRDb3N0QmFsYW5jZTsKIGV4dGVybiBQR0RMTElNUE9SVCBwZ19hdG9taWNfdWludDMy ICpWYWN1dW1BY3RpdmVOV29ya2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgVmFjdXVt Q29zdEJhbGFuY2VMb2NhbDsKIAorLyogQ3VtdWxhdGl2ZSBzdG9yYWdlIHRvIHJlcG9ydCB0 b3RhbCB2YWN1dW0gZGVsYXkgdGltZSAobXNlYykuICovCitleHRlcm4gUEdETExJTVBPUlQg ZG91YmxlIFZhY3V1bURlbGF5VGltZTsKKworLyogQ291bnRlcnMgZm9yIGV4dGVuZGVkIHZh Y3V1bSBzdGF0aXN0aWNzIGdhdGhlcmluZyAqLwordHlwZWRlZiBzdHJ1Y3QgTFZFeHRTdGF0 Q291bnRlcnMKK3sKKwlUaW1lc3RhbXBUeiBzdGFydHRpbWU7CisJV2FsVXNhZ2UJd2FsdXNh Z2U7CisJQnVmZmVyVXNhZ2UgYnVmdXNhZ2U7CisJZG91YmxlCQlWYWN1dW1EZWxheVRpbWU7 CisJUGdTdGF0X0NvdW50ZXIgYmxvY2tzX2ZldGNoZWQ7CisJUGdTdGF0X0NvdW50ZXIgYmxv Y2tzX2hpdDsKK30gTFZFeHRTdGF0Q291bnRlcnM7CisKK3R5cGVkZWYgc3RydWN0IExWRXh0 U3RhdENvdW50ZXJzSWR4Cit7CisJTFZFeHRTdGF0Q291bnRlcnMgY29tbW9uOworCWludDY0 CQlwYWdlc19kZWxldGVkOworCWludDY0CQl0dXBsZXNfcmVtb3ZlZDsKK30gTFZFeHRTdGF0 Q291bnRlcnNJZHg7CisKK2V4dGVybiB2b2lkIGV4dHZhY19zdGF0c19zdGFydF9pZHgoUmVs YXRpb24gcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAorCQkJCQkJCQkgICBM VkV4dFN0YXRDb3VudGVyc0lkeCAqY291bnRlcnMpOworZXh0ZXJuIHZvaWQgZXh0dmFjX3N0 YXRzX2VuZF9pZHgoUmVsYXRpb24gcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRz LAorCQkJCQkJCQkgTFZFeHRTdGF0Q291bnRlcnNJZHggKmNvdW50ZXJzLAorCQkJCQkJCQkg UGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzICpyZXBvcnQpOworCiBleHRlcm4gUEdETExJ TVBPUlQgYm9vbCBWYWN1dW1GYWlsc2FmZUFjdGl2ZTsKIGV4dGVybiBQR0RMTElNUE9SVCBk b3VibGUgdmFjdXVtX2Nvc3RfZGVsYXk7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IHZhY3V1 bV9jb3N0X2xpbWl0OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdzdGF0LmggYi9zcmMv aW5jbHVkZS9wZ3N0YXQuaAppbmRleCAwMmZiYjg0ODBkZC4uN2ZlOGU1NDY4YjggMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5o CkBAIC05Miw2ICs5Miw2MyBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfRnVuY3Rpb25Db3Vu dHMKIC8qCiAgKiBXb3JraW5nIHN0YXRlIG5lZWRlZCB0byBhY2N1bXVsYXRlIHBlci1mdW5j dGlvbi1jYWxsIHRpbWluZyBzdGF0aXN0aWNzLgogICovCisvKgorICogVHlwZSBvZiBlbnRy eTogdGFibGUgKGhlYXApLCBpbmRleCwgb3IgZGF0YWJhc2UgYWdncmVnYXRlLgorICovCit0 eXBlZGVmIGVudW0gRXh0VmFjUmVwb3J0VHlwZQoreworCVBHU1RBVF9FWFRWQUNfSU5WQUxJ RCA9IDAsCisJUEdTVEFUX0VYVFZBQ19UQUJMRSA9IDEsCisJUEdTVEFUX0VYVFZBQ19JTkRF WCA9IDIsCisJUEdTVEFUX0VYVFZBQ19EQiA9IDMsCit9CQkJRXh0VmFjUmVwb3J0VHlwZTsK KwordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0NvbW1vbkNvdW50cworeworCWludDY0CQl0b3Rh bF9ibGtzX3JlYWQ7CisJaW50NjQJCXRvdGFsX2Jsa3NfaGl0OworCWludDY0CQl0b3RhbF9i bGtzX2RpcnRpZWQ7CisJaW50NjQJCXRvdGFsX2Jsa3Nfd3JpdHRlbjsKKwlpbnQ2NAkJYmxr c19mZXRjaGVkOworCWludDY0CQlibGtzX2hpdDsKKwlpbnQ2NAkJd2FsX3JlY29yZHM7CisJ aW50NjQJCXdhbF9mcGk7CisJdWludDY0CQl3YWxfYnl0ZXM7CisJZG91YmxlCQlibGtfcmVh ZF90aW1lOworCWRvdWJsZQkJYmxrX3dyaXRlX3RpbWU7CisJZG91YmxlCQlkZWxheV90aW1l OworCWRvdWJsZQkJdG90YWxfdGltZTsKKwlpbnQzMgkJd3JhcGFyb3VuZF9mYWlsc2FmZV9j b3VudDsKKwlpbnQzMgkJaW50ZXJydXB0c19jb3VudDsKKwlpbnQ2NAkJdHVwbGVzX2RlbGV0 ZWQ7Cit9CQkJUGdTdGF0X0NvbW1vbkNvdW50czsKKwordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0 X1ZhY3V1bVJlbGF0aW9uQ291bnRzCit7CisJUGdTdGF0X0NvbW1vbkNvdW50cyBjb21tb247 CisJRXh0VmFjUmVwb3J0VHlwZSB0eXBlOworCXVuaW9uCisJeworCQlzdHJ1Y3QKKwkJewor CQkJaW50NjQJCXR1cGxlc19mcm96ZW47CisJCQlpbnQ2NAkJcmVjZW50bHlfZGVhZF90dXBs ZXM7CisJCQlpbnQ2NAkJbWlzc2VkX2RlYWRfdHVwbGVzOworCQkJaW50NjQJCXBhZ2VzX3Nj YW5uZWQ7CisJCQlpbnQ2NAkJcGFnZXNfcmVtb3ZlZDsKKwkJCWludDY0CQl2bV9uZXdfZnJv emVuX3BhZ2VzOworCQkJaW50NjQJCXZtX25ld192aXNpYmxlX3BhZ2VzOworCQkJaW50NjQJ CXZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlczsKKwkJCWludDY0CQltaXNzZWRfZGVhZF9w YWdlczsKKwkJCWludDY0CQlpbmRleF92YWN1dW1fY291bnQ7CisJCX0JCQl0YWJsZTsKKwkJ c3RydWN0CisJCXsKKwkJCWludDY0CQlwYWdlc19kZWxldGVkOworCQl9CQkJaW5kZXg7CisJ fTsKK30JCQlQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHM7CisKIHR5cGVkZWYgc3RydWN0 IFBnU3RhdF9GdW5jdGlvbkNhbGxVc2FnZQogewogCS8qIExpbmsgdG8gZnVuY3Rpb24ncyBo YXNodGFibGUgZW50cnkgKG11c3Qgc3RpbGwgYmUgdGhlcmUgYXQgZXhpdCEpICovCkBAIC02 ODAsNiArNzM3LDcgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0X3VubGlua19yZWxhdGlvbihSZWxh dGlvbiByZWwpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF92YWN1dW0oUmVsYXRpb24g cmVsLCBQZ1N0YXRfQ291bnRlciBsaXZldHVwbGVzLAogCQkJCQkJCQkgUGdTdGF0X0NvdW50 ZXIgZGVhZHR1cGxlcywKIAkJCQkJCQkJIFRpbWVzdGFtcFR6IHN0YXJ0dGltZSk7CisKIGV4 dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfYW5hbHl6ZShSZWxhdGlvbiByZWwsCiAJCQkJCQkJ CSAgUGdTdGF0X0NvdW50ZXIgbGl2ZXR1cGxlcywgUGdTdGF0X0NvdW50ZXIgZGVhZHR1cGxl cywKIAkJCQkJCQkJICBib29sIHJlc2V0Y291bnRlciwgVGltZXN0YW1wVHogc3RhcnR0aW1l KTsKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --------------mbznC2Bpd5jSTp4e82HRfj32 Content-Type: text/plain; charset=UTF-8; name="v29-0003-ext_vacuum_statistics-extension-for-extended-vacuum-.patch" Content-Disposition: attachment; filename*0="v29-0003-ext_vacuum_statistics-extension-for-extended-vacuum"; filename*1="-.patch" Content-Transfer-Encoding: base64 RnJvbSA3YzQyYjY4ZTdlYmVlY2ViMTQ3NTUwMmQyYWI1ZTJmOWJkNTQzNjcwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8bGVuYS5yaWJhY2tpbmFA eWFuZGV4LnJ1PgpEYXRlOiBUdWUsIDMgTWFyIDIwMjYgMDA6MTc6MTMgKzAzMDAKU3ViamVj dDogW1BBVENIIDMvM10gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIGV4dGVuc2lvbiBmb3IgZXh0 ZW5kZWQgdmFjdXVtCiBzdGF0aXN0aWNzLgoKVGhpcyBjb21taXQgaW50cm9kdWNlcyB0aGUg ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIGV4dGVuc2lvbiwgd2hpY2ggcHJvdmlkZXMKZXh0ZW5k ZWQgdmFjdXVtIHN0YXRpc3RpY3MgdGhyb3VnaCBhIGRlZGljYXRlZCBzY2hlbWEgYW5kIHZp ZXdzLiBTdGF0aXN0aWNzCmFyZSBzdG9yZWQgdmlhIHRoZSBwZ3N0YXQgY3VzdG9tIHN0YXRp c3RpY3MgaW5mcmFzdHJ1Y3R1cmUuIFRoZSBleHRlbnNpb24KcmVnaXN0ZXJzIHNldF9yZXBv cnRfdmFjdXVtX2hvb2sgdG8gcmVjZWl2ZSB2YWN1dW0gbWV0cmljcyBhbmQgcGVyc2lzdHMK dGhlbSBpbnRvIGN1c3RvbSBzdGF0czsgd2hlbiB0aGUgaG9vayBpcyBub3Qgc2V0LCBubyBh ZGRpdGlvbmFsIG92ZXJoZWFkCmlzIGluY3VycmVkLgoKVmlld3MgcGdfc3RhdHNfdmFjdXVt X3RhYmxlcywgcGdfc3RhdHNfdmFjdXVtX2luZGV4ZXMgYW5kCnBnX3N0YXRzX3ZhY3V1bV9k YXRhYmFzZSBleHBvc2UgcGVyLXRhYmxlLCBwZXItaW5kZXggYW5kIGFnZ3JlZ2F0ZWQKcGVy LWRhdGFiYXNlIHZhY3V1bSBzdGF0aXN0aWNzIHJlc3BlY3RpdmVseS4KCkdVQ3MgY29udHJv bCB3aGljaCBvYmplY3RzIGFyZSB0cmFja2VkIGFuZCBob3cuIHZhY3V1bV9zdGF0aXN0aWNz LmVuYWJsZWQKKGRlZmF1bHQgb24pIHR1cm5zIGNvbGxlY3Rpb24gb24gb3Igb2ZmLiB2YWN1 dW1fc3RhdGlzdGljcy5vYmplY3RfdHlwZXMKKGRlZmF1bHQgYWxsKSByZXN0cmljdHMgdHJh Y2tpbmcgdG8gZGF0YWJhc2VzIG9ubHksIHJlbGF0aW9ucyBvbmx5LCBvciBib3RoLgpXaGVu IHRyYWNraW5nIHJlbGF0aW9ucywgdmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfcmVsYXRpb25z IChkZWZhdWx0IGFsbCkKZmlsdGVycyBieSBzeXN0ZW0gb3IgdXNlciB0YWJsZXMuIHZhY3V1 bV9zdGF0aXN0aWNzLnRyYWNrX2RhdGFiYXNlc19mcm9tX2xpc3QKYW5kIHZhY3V1bV9zdGF0 aXN0aWNzLnRyYWNrX3JlbGF0aW9uc19mcm9tX2xpc3QgKGJvdGggZGVmYXVsdCBvZmYpIHJl c3RyaWN0CnRyYWNraW5nIHRvIGRhdGFiYXNlcyBhbmQgcmVsYXRpb25zIGV4cGxpY2l0bHkg YWRkZWQgdmlhIGFkZF90cmFja19kYXRhYmFzZQphbmQgYWRkX3RyYWNrX3JlbGF0aW9uOyB3 aGVuIG9mZiwgYWxsIG9iamVjdHMgb2YgdGhlIGNob3NlbiB0eXBlcyBhcmUgdHJhY2tlZC4K LS0tCiBjb250cmliL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAxICsKIGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL01ha2VmaWxlICAgICAgICB8 ICAgMjQgKwogY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvUkVBRE1FLm1kICAgICAg IHwgIDE2NSArKysKIC4uLi9leHBlY3RlZC9leHRfdmFjdXVtX3N0YXRpc3RpY3Mub3V0ICAg ICAgICB8ICAgNTIgKwogLi4uL3ZhY3V1bS1leHRlbmRpbmctaW4tcmVwZXRhYmxlLXJlYWQu b3V0ICAgIHwgICA1MiArCiAuLi4vZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLS0xLjAuc3FsICAg ICAgICAgICAgfCAgMjYwICsrKysrCiAuLi4vZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLmNvbmYg ICAgICAgICAgICAgICAgfCAgICAyICsKIC4uLi9leHRfdmFjdXVtX3N0YXRpc3RpY3MuY29u dHJvbCAgICAgICAgICAgICB8ICAgIDUgKwogY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3Rp Y3MvbWVzb24uYnVpbGQgICAgIHwgICA0MSArCiAuLi4vdmFjdXVtLWV4dGVuZGluZy1pbi1y ZXBldGFibGUtcmVhZC5zcGVjICAgfCAgIDU5ICsKIC4uLi90LzA1Ml92YWN1dW1fZXh0ZW5k aW5nX2Jhc2ljX3Rlc3QucGwgICAgICB8ICA3ODAgKysrKysrKysrKysrKwogLi4uL3QvMDUz X3ZhY3V1bV9leHRlbmRpbmdfZnJlZXplX3Rlc3QucGwgICAgIHwgIDI4NSArKysrKwogLi4u L3QvMDU0X3ZhY3V1bV9leHRlbmRpbmdfZ3Vjc190ZXN0LnBsICAgICAgIHwgIDIwMyArKysr CiAuLi4vZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3ZhY3V1bV9zdGF0aXN0aWNzLmMgfCAxMDAw ICsrKysrKysrKysrKysrKysrCiBjb250cmliL21lc29uLmJ1aWxkICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAxICsKIGRvYy9zcmMvc2dtbC9jb250cmliLnNnbWwgICAgICAg ICAgICAgICAgICAgICB8ICAgIDEgKwogZG9jL3NyYy9zZ21sL2V4dHZhY3V1bXN0YXRpc3Rp Y3Muc2dtbCAgICAgICAgIHwgIDUwMiArKysrKysrKysKIGRvYy9zcmMvc2dtbC9maWxlbGlz dC5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jICAgICAgICAgIHwgIDExMiArLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgICAxMiArLQogc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMgIHwgICAyNCArCiBzcmMvaW5jbHVk ZS9jb21tYW5kcy92YWN1dW0uaCAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNs dWRlL3Bnc3RhdC5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKwogMjMgZmls ZXMgY2hhbmdlZCwgMzU3NiBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBjb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy9NYWtlZmlsZQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL1JFQURN RS5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNz L2V4cGVjdGVkL2V4dF92YWN1dW1fc3RhdGlzdGljcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBjb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy9leHBlY3RlZC92YWN1dW0tZXh0ZW5k aW5nLWluLXJlcGV0YWJsZS1yZWFkLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIv ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL2V4dF92YWN1dW1fc3RhdGlzdGljcy0tMS4wLnNxbAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL2V4dF92 YWN1dW1fc3RhdGlzdGljcy5jb25mCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9leHRf dmFjdXVtX3N0YXRpc3RpY3MvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLmNvbnRyb2wKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBjb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy9tZXNvbi5idWls ZAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3Nw ZWNzL3ZhY3V1bS1leHRlbmRpbmctaW4tcmVwZXRhYmxlLXJlYWQuc3BlYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3QvMDUyX3ZhY3V1bV9l eHRlbmRpbmdfYmFzaWNfdGVzdC5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvZXh0 X3ZhY3V1bV9zdGF0aXN0aWNzL3QvMDUzX3ZhY3V1bV9leHRlbmRpbmdfZnJlZXplX3Rlc3Qu cGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy90 LzA1NF92YWN1dW1fZXh0ZW5kaW5nX2d1Y3NfdGVzdC5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0 IGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3ZhY3V1bV9zdGF0aXN0aWNzLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkb2Mvc3JjL3NnbWwvZXh0dmFjdXVtc3RhdGlzdGljcy5zZ21s CgpkaWZmIC0tZ2l0IGEvY29udHJpYi9NYWtlZmlsZSBiL2NvbnRyaWIvTWFrZWZpbGUKaW5k ZXggMmYwYTg4ZDNmNzcuLjZlMDY0YzU2NmFhIDEwMDY0NAotLS0gYS9jb250cmliL01ha2Vm aWxlCisrKyBiL2NvbnRyaWIvTWFrZWZpbGUKQEAgLTE5LDYgKzE5LDcgQEAgU1VCRElSUyA9 IFwKIAkJZGljdF9pbnQJXAogCQlkaWN0X3hzeW4JXAogCQllYXJ0aGRpc3RhbmNlCVwKKwkJ ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIFwKIAkJZmlsZV9mZHcJXAogCQlmdXp6eXN0cm1hdGNo CVwKIAkJaHN0b3JlCQlcCmRpZmYgLS1naXQgYS9jb250cmliL2V4dF92YWN1dW1fc3RhdGlz dGljcy9NYWtlZmlsZSBiL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL01ha2VmaWxl Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lZDgwYmRmMjhkMAot LS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL01ha2Vm aWxlCkBAIC0wLDAgKzEsMjQgQEAKKyMgY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3Mv TWFrZWZpbGUKKworRVhURU5TSU9OID0gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzCitNT0RVTEVf YmlnID0gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzCitPQkpTID0gdmFjdXVtX3N0YXRpc3RpY3Mu bworREFUQSA9IGV4dF92YWN1dW1fc3RhdGlzdGljcy0tMS4wLnNxbAorUEdGSUxFREVTQyA9 ICJleHRfdmFjdXVtX3N0YXRpc3RpY3MgLSBjb252ZW5pZW5jZSB2aWV3cyBmb3IgZXh0ZW5k ZWQgdmFjdXVtIHN0YXRpc3RpY3MiCisKK0lTT0xBVElPTiA9IHZhY3V1bS1leHRlbmRpbmct aW4tcmVwZXRhYmxlLXJlYWQKK0lTT0xBVElPTl9PUFRTID0gLS10ZW1wLWNvbmZpZz0kKHRv cF9zcmNkaXIpL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL2V4dF92YWN1dW1fc3Rh dGlzdGljcy5jb25mCitUQVBfVEVTVFMgPSAxCisKK05PX0lOU1RBTExDSEVDSyA9IDEKKwor aWZkZWYgVVNFX1BHWFMKK1BHX0NPTkZJRyA9IHBnX2NvbmZpZworUEdYUyA6PSAkKHNoZWxs ICQoUEdfQ09ORklHKSAtLXBneHMpCitpbmNsdWRlICQoUEdYUykKK2Vsc2UKK3N1YmRpciA9 IGNvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzCit0b3BfYnVpbGRkaXIgPSAuLi8uLgor aW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAoraW5jbHVkZSAk KHRvcF9zcmNkaXIpL2NvbnRyaWIvY29udHJpYi1nbG9iYWwubWsKK2VuZGlmCmRpZmYgLS1n aXQgYS9jb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy9SRUFETUUubWQgYi9jb250cmli L2V4dF92YWN1dW1fc3RhdGlzdGljcy9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjUxNjk3ZWFiMDIzCi0tLSAvZGV2L251bGwKKysrIGIvY29u dHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMTY1IEBA CisjIGV4dF92YWN1dW1fc3RhdGlzdGljcworCitFeHRlbmRlZCB2YWN1dW0gc3RhdGlzdGlj cyBleHRlbnNpb24gZm9yIFBvc3RncmVTUUwuIEl0IGNvbGxlY3RzIGFuZCBleHBvc2VzIGRl dGFpbGVkIHBlci10YWJsZSwgcGVyLWluZGV4LCBhbmQgcGVyLWRhdGFiYXNlIHZhY3V1bSBz dGF0aXN0aWNzIChidWZmZXIgSS9PLCBXQUwsIGdlbmVyYWwsIHRpbWluZykgdmlhIGNvbnZl bmllbnQgdmlld3MgaW4gdGhlIGBleHRfdmFjdXVtX3N0YXRpc3RpY3NgIHNjaGVtYS4KKwor IyMgSW5zdGFsbGF0aW9uCisKK2BgYAorLi9jb25maWd1cmUgdG1wX2luc3RhbGw9IiQocHdk KS9teS9pbnN0IgorbWFrZSBjbGVhbiAmJiBtYWtlICYmIG1ha2UgaW5zdGFsbAorY2QgY29u dHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MKK21ha2UgJiYgbWFrZSBpbnN0YWxsCitgYGAK KworSXQgaXMgZXNzZW50aWFsIHRoYXQgdGhlIGV4dGVuc2lvbiBpcyBsaXN0ZWQgaW4gYHNo YXJlZF9wcmVsb2FkX2xpYnJhcmllc2AgYmVjYXVzZSBpdCByZWdpc3RlcnMgYSB2YWN1dW0g aG9vayBhdCBzZXJ2ZXIgc3RhcnR1cC4KKworSW4geW91ciBgcG9zdGdyZXNxbC5jb25mYDoK KworYGBgCitzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgPSAnZXh0X3ZhY3V1bV9zdGF0aXN0 aWNzJworYGBgCisKK1Jlc3RhcnQgUG9zdGdyZVNRTC4KKworSW4geW91ciBkYXRhYmFzZToK KworYGBgc3FsCitDUkVBVEUgRVhURU5TSU9OIGV4dF92YWN1dW1fc3RhdGlzdGljczsKK2Bg YAorCisjIyBVc2FnZQorCitRdWVyeSB2YWN1dW0gc3RhdGlzdGljcyB2aWEgdGhlIHByb3Zp ZGVkIHZpZXdzOgorCitgYGBzcWwKKy0tIFBlci10YWJsZSBoZWFwIHZhY3V1bSBzdGF0aXN0 aWNzCitTRUxFQ1QgKiBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1 dW1fdGFibGVzOworCistLSBQZXItaW5kZXggdmFjdXVtIHN0YXRpc3RpY3MKK1NFTEVDVCAq IEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9pbmRleGVzOwor CistLSBQZXItZGF0YWJhc2UgYWdncmVnYXRlIHZhY3V1bSBzdGF0aXN0aWNzCitTRUxFQ1Qg KiBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fZGF0YWJhc2U7 CitgYGAKKworRXhhbXBsZSBvdXRwdXQ6CisKK2BgYAorIHJlbG5hbWUgICB8IHRvdGFsX2Js a3NfcmVhZCB8IHRvdGFsX2Jsa3NfaGl0IHwgd2FsX3JlY29yZHMgfCB0dXBsZXNfZGVsZXRl ZCB8IHBhZ2VzX3JlbW92ZWQKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLQorIG15dGFibGUgICB8ICAgICAgICAgICAgIDEyMCB8ICAgICAgICAgICAgMzQwIHwg ICAgICAgICAgMTUgfCAgICAgICAgICAgIDUwMCB8ICAgICAgICAgICAgMTAKK2BgYAorCitS ZXNldCBzdGF0aXN0aWNzIHdoZW4gbmVlZGVkOgorCitgYGBzcWwKK1NFTEVDVCBleHRfdmFj dXVtX3N0YXRpc3RpY3MudmFjdXVtX3N0YXRpc3RpY3NfcmVzZXQoKTsKK2BgYAorCisjIyBD b25maWd1cmF0aW9uIChHVUNzKQorCit8IEdVQyB8IERlZmF1bHQgfCBEZXNjcmlwdGlvbiB8 Cit8LS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18Cit8IGB2YWN1dW1fc3RhdGlzdGlj cy5lbmFibGVkYCB8IG9uIHwgRW5hYmxlIGV4dGVuZGVkIHZhY3V1bSBzdGF0aXN0aWNzIGNv bGxlY3Rpb24gfAorfCBgdmFjdXVtX3N0YXRpc3RpY3Mub2JqZWN0X3R5cGVzYCB8IGFsbCB8 IE9iamVjdCB0eXBlcyBmb3Igc3RhdGlzdGljczogYGFsbGAsIGBkYXRhYmFzZXNgLCBgcmVs YXRpb25zYCB8Cit8IGB2YWN1dW1fc3RhdGlzdGljcy50cmFja19yZWxhdGlvbnNgIHwgYWxs IHwgV2hlbiB0cmFja2luZyByZWxhdGlvbnM6IGBhbGxgLCBgc3lzdGVtYCwgYHVzZXJgIHwK K3wgYHZhY3V1bV9zdGF0aXN0aWNzLnRyYWNrX2RhdGFiYXNlc19mcm9tX2xpc3RgIHwgb2Zm IHwgSWYgb24sIHRyYWNrIG9ubHkgZGF0YWJhc2VzIGFkZGVkIHZpYSBhZGRfdHJhY2tfZGF0 YWJhc2UgfAorfCBgdmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfcmVsYXRpb25zX2Zyb21fbGlz dGAgfCBvZmYgfCBJZiBvbiwgdHJhY2sgb25seSByZWxhdGlvbnMgYWRkZWQgdmlhIGFkZF90 cmFja19yZWxhdGlvbiB8CisKKyMjIE1lbW9yeSB1c2FnZQorCitFYWNoIHRyYWNrZWQgb2Jq ZWN0ICh0YWJsZSwgaW5kZXgsIG9yIGRhdGFiYXNlKSB1c2VzIGFwcHJveGltYXRlbHkgKioy MzIgYnl0ZXMqKiBvZiBzaGFyZWQgbWVtb3J5IG9uIExpbnV4IHg4Nl82NCAoZS5nLiBVYnVu dHUpOiBjb21tb24gc3RhdHMgKGJ1ZmZlcnMsIFdBTCwgdGltaW5nKSB+MTQ0IGJ5dGVzOyB0 eXBlICsgdW5pb24gfjg4IGJ5dGVzICh1bmlvbiBob2xkcyB0YWJsZS1zcGVjaWZpYyBvciBp bmRleC1zcGVjaWZpYyBmaWVsZHMsIGFsbG9jYXRlZCBzaXplIGlzIHRoZSBzYW1lIGZvciBi b3RoKS4KKworVGhlIGV4YWN0IHNpemUgZGVwZW5kcyBvbiB0aGUgcGxhdGZvcm0uIENhbGwg YGV4dF92YWN1dW1fc3RhdGlzdGljcy5zaGFyZWRfbWVtb3J5X3NpemUoKWAgdG8gZ2V0IHRo ZSB0b3RhbCBzaGFyZWQgbWVtb3J5IHVzZWQgYnkgdGhlIGV4dGVuc2lvbi4gVGhlIEdVQ3Mg cHJvdmlkZWQgYnkgdGhlIGV4dGVuc2lvbiBhbGxvdyBjb250cm9sbGluZyB0aGUgYW1vdW50 IG9mIG1lbW9yeSB1c2VkOiBgdmFjdXVtX3N0YXRpc3RpY3Mub2JqZWN0X3R5cGVzYCB0byB0 cmFjayBvbmx5IGRhdGFiYXNlcyBvciByZWxhdGlvbnMsIGB2YWN1dW1fc3RhdGlzdGljcy50 cmFja19yZWxhdGlvbnNgIHRvIHJlc3RyaWN0IHRvIHVzZXIgb3Igc3lzdGVtIHRhYmxlcy9p bmRleGVzLCBhbmQgYHRyYWNrXypfZnJvbV9saXN0YCB0byB0cmFjayBvbmx5IHNlbGVjdGVk IGRhdGFiYXNlcyBhbmQgcmVsYXRpb25zLgorCitFeGFtcGxlOiBhIGRhdGFiYXNlIHdpdGgg MTAwMCB0YWJsZXMgYW5kIDIwMDAgaW5kZXhlcywgYWxsIHRyYWNrZWQsIHVzZXMgYWJvdXQg Kio3MDAgS0IqKiBvbiBVYnVudHUgKDMwMDEgZW50cmllcyDDlyAyMzIgYnl0ZXMpLiBQZXIt ZGF0YWJhc2UgZW50cmllcyBhZGQgb25lIGVudHJ5IHBlciB0cmFja2VkIGRhdGFiYXNlLgor CisjIyBBZHZhbmNlZCB0dW5pbmcKKworIyMjIFRyYWNrIG9ubHkgZGF0YWJhc2UtbGV2ZWwg c3RhdHMKKworYGBgc3FsCitTRVQgdmFjdXVtX3N0YXRpc3RpY3Mub2JqZWN0X3R5cGVzID0g J2RhdGFiYXNlcyc7CitgYGAKKworU3RhdGlzdGljcyBhcmUgYWNjdW11bGF0ZWQgcGVyIGRh dGFiYXNlOyBwZXItcmVsYXRpb24gdmlld3MgcmVtYWluIGVtcHR5LgorCisjIyMgVHJhY2sg b25seSB1c2VyIG9yIHN5c3RlbSB0YWJsZXMKKworYGBgc3FsCitTRVQgdmFjdXVtX3N0YXRp c3RpY3Mub2JqZWN0X3R5cGVzID0gJ3JlbGF0aW9ucyc7CitTRVQgdmFjdXVtX3N0YXRpc3Rp Y3MudHJhY2tfcmVsYXRpb25zID0gJ3VzZXInOyAgIC0tIHNraXAgc3lzdGVtIGNhdGFsb2dz CistLSBvcgorU0VUIHZhY3V1bV9zdGF0aXN0aWNzLnRyYWNrX3JlbGF0aW9ucyA9ICdzeXN0 ZW0nOyAtLSBvbmx5IHN5c3RlbSBjYXRhbG9ncworYGBgCisKKyMjIyBGaWx0ZXIgYnkgZGF0 YWJhc2Ugb3IgcmVsYXRpb24gT0lEcworCitBZGQgT0lEcyB2aWEgZnVuY3Rpb25zIChwZXJz aXN0ZWQgdG8gYHBnX3N0YXQvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzX3RyYWNrLm9pZGApIGFu ZCBlbmFibGUgZmlsdGVyaW5nOgorCitgYGBzcWwKKy0tIEFkZCBkYXRhYmFzZXMgYW5kIHJl bGF0aW9ucyB0byB0cmFjaworU0VMRUNUIGV4dF92YWN1dW1fc3RhdGlzdGljcy5hZGRfdHJh Y2tfZGF0YWJhc2UoMTYzODQpOworU0VMRUNUIGV4dF92YWN1dW1fc3RhdGlzdGljcy5hZGRf dHJhY2tfcmVsYXRpb24oMTYzODQsIDE2Mzg1KTsgIC0tIGRib2lkLCByZWxvaWQKK1NFTEVD VCBleHRfdmFjdXVtX3N0YXRpc3RpY3MuYWRkX3RyYWNrX3JlbGF0aW9uKDAsIDE2Mzg2KTsg ICAgICAtLSByZWwgMTYzODYgaW4gYW55IGRiCisKKy0tIEVuYWJsZSBsaXN0LWJhc2VkIGZp bHRlcmluZyAob2ZmID0gdHJhY2sgYWxsKQorU0VUIHZhY3V1bV9zdGF0aXN0aWNzLnRyYWNr X2RhdGFiYXNlc19mcm9tX2xpc3QgPSBvbjsKK1NFVCB2YWN1dW1fc3RhdGlzdGljcy50cmFj a19yZWxhdGlvbnNfZnJvbV9saXN0ID0gb247CitgYGAKKworUmVtb3ZlIE9JRHMgd2hlbiBu byBsb25nZXIgbmVlZGVkOgorCitgYGBzcWwKK1NFTEVDVCBleHRfdmFjdXVtX3N0YXRpc3Rp Y3MucmVtb3ZlX3RyYWNrX2RhdGFiYXNlKDE2Mzg0KTsKK1NFTEVDVCBleHRfdmFjdXVtX3N0 YXRpc3RpY3MucmVtb3ZlX3RyYWNrX3JlbGF0aW9uKDE2Mzg0LCAxNjM4NSk7CitgYGAKKwor SW5zcGVjdCB0aGUgY3VycmVudCB0cmFja2luZyBjb25maWd1cmF0aW9uOgorCitgYGBzcWwK K1NFTEVDVCAqIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnRyYWNrX2xpc3QoKTsKK2Bg YAorCitSZXR1cm5zIGB0cmFja19raW5kYCwgYGRib2lkYCwgYHJlbG9pZGAuIFdoZW4gYGRi b2lkYCBvciBgcmVsb2lkYCBpcyBOVUxMLCBzdGF0aXN0aWNzIGFyZSBjb2xsZWN0ZWQgZm9y IGFsbC4KKworIyMgUmVjaXBlcworCisqKlJlZHVjZSBvdmVyaGVhZCBieSB0cmFja2luZyBv bmx5IGRhdGFiYXNlczoqKgorCitgYGBzcWwKK1NFVCB2YWN1dW1fc3RhdGlzdGljcy5vYmpl Y3RfdHlwZXMgPSAnZGF0YWJhc2VzJzsKK2BgYAorCisqKlRyYWNrIG9ubHkgYSBzcGVjaWZp YyB0YWJsZSBpbiBhIHNwZWNpZmljIGRhdGFiYXNlOioqCisKK2BgYHNxbAorU0VMRUNUIGV4 dF92YWN1dW1fc3RhdGlzdGljcy5hZGRfdHJhY2tfZGF0YWJhc2UoCisgICAgKFNFTEVDVCBv aWQgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgp KQorKTsKK1NFTEVDVCBleHRfdmFjdXVtX3N0YXRpc3RpY3MuYWRkX3RyYWNrX3JlbGF0aW9u KAorICAgIChTRUxFQ1Qgb2lkIEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFtZSA9IGN1 cnJlbnRfZGF0YWJhc2UoKSksCisgICAgJ215dGFibGUnOjpyZWdjbGFzcworKTsKK1NFVCB2 YWN1dW1fc3RhdGlzdGljcy50cmFja19kYXRhYmFzZXNfZnJvbV9saXN0ID0gb247CitTRVQg dmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfcmVsYXRpb25zX2Zyb21fbGlzdCA9IG9uOworYGBg CisKKyoqRGlzYWJsZSBzdGF0aXN0aWNzIGNvbGxlY3Rpb24gdGVtcG9yYXJpbHk6KioKKwor YGBgc3FsCitTRVQgdmFjdXVtX3N0YXRpc3RpY3MuZW5hYmxlZCA9IG9mZjsKK2BgYAorCisj IyBWaWV3cworCit8IFZpZXcgfCBEZXNjcmlwdGlvbiB8Cit8LS0tLS0tfC0tLS0tLS0tLS0t LS18Cit8IGBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX3RhYmxlc2Ag fCBQZXItdGFibGUgaGVhcCB2YWN1dW0gc3RhdHMgKHBhZ2VzIHNjYW5uZWQsIHR1cGxlcyBk ZWxldGVkLCBXQUwsIHRpbWluZywgZXRjLikgfAorfCBgZXh0X3ZhY3V1bV9zdGF0aXN0aWNz LnBnX3N0YXRzX3ZhY3V1bV9pbmRleGVzYCB8IFBlci1pbmRleCB2YWN1dW0gc3RhdHMgfAor fCBgZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9kYXRhYmFzZWAgfCBQ ZXItZGF0YWJhc2UgYWdncmVnYXRlIHZhY3V1bSBzdGF0cyB8CisKKyMjIExpbWl0YXRpb25z CisKKy0gTXVzdCBiZSBsb2FkZWQgdmlhIGBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNgOyBp dCBjYW5ub3QgYmUgbG9hZGVkIG9uIGRlbWFuZC4KKy0gVHJhY2tpbmcgY29uZmlndXJhdGlv biAoYGFkZF90cmFja18qYCwgYHJlbW92ZV90cmFja18qYCkgaXMgc3RvcmVkIGluIGEgZmls ZSBhbmQgc2hhcmVkIGFjcm9zcyBhbGwgZGF0YWJhc2VzIGluIHRoZSBjbHVzdGVyLgpkaWZm IC0tZ2l0IGEvY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvZXhwZWN0ZWQvZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzLm91dCBiL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL2V4 cGVjdGVkL2V4dF92YWN1dW1fc3RhdGlzdGljcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjg5Yzk1OTRkZWE4Ci0tLSAvZGV2L251bGwKKysrIGIvY29u dHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvZXhwZWN0ZWQvZXh0X3ZhY3V1bV9zdGF0aXN0 aWNzLm91dApAQCAtMCwwICsxLDUyIEBACistLSBleHRfdmFjdXVtX3N0YXRpc3RpY3MgcmVn cmVzc2lvbiB0ZXN0CisKKy0tIENyZWF0ZSBleHRlbnNpb24KK0NSRUFURSBFWFRFTlNJT04g ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzOworCistLSBWZXJpZnkgc2NoZW1hIGFuZCB2aWV3cyBl eGlzdAorU0VMRUNUIG5zcG5hbWUgRlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgbnNwbmFtZSA9 ICdleHRfdmFjdXVtX3N0YXRpc3RpY3MnOworICAgICBuc3BuYW1lICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0KKyBleHRfdmFjdXVtX3N0YXRpc3RpY3MKKygxIHJvdykKKworLS0gVmll d3Mgc2hvdWxkIGJlIHF1ZXJ5YWJsZSAobWF5IHJldHVybiBlbXB0eSBpZiBubyB2YWN1dW0g aGFzIHJ1bikKK1NFTEVDVCBDT1VOVCgqKSA+PSAwIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0 aWNzLnBnX3N0YXRzX3ZhY3V1bV90YWJsZXM7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisg dAorKDEgcm93KQorCitTRUxFQ1QgQ09VTlQoKikgPj0gMCBGUk9NIGV4dF92YWN1dW1fc3Rh dGlzdGljcy5wZ19zdGF0c192YWN1dW1faW5kZXhlczsKKyA/Y29sdW1uPyAKKy0tLS0tLS0t LS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBDT1VOVCgqKSA+PSAwIEZST00gZXh0X3ZhY3V1 bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9kYXRhYmFzZTsKKyA/Y29sdW1uPyAKKy0t LS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIFZlcmlmeSB2aWV3cyBoYXZlIGV4cGVjdGVk IGNvbHVtbnMKK1NFTEVDVCBDT1VOVCgqKSBBUyB0YWJsZXNfY29scyBGUk9NIGluZm9ybWF0 aW9uX3NjaGVtYS5jb2x1bW5zCitXSEVSRSB0YWJsZV9zY2hlbWEgPSAnZXh0X3ZhY3V1bV9z dGF0aXN0aWNzJyBBTkQgdGFibGVfbmFtZSA9ICd0YWJsZXMnOworIHRhYmxlc19jb2xzIAor LS0tLS0tLS0tLS0tLQorICAgICAgICAgIDI4CisoMSByb3cpCisKK1NFTEVDVCBDT1VOVCgq KSBBUyBpbmRleGVzX2NvbHMgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1ucworV0hF UkUgdGFibGVfc2NoZW1hID0gJ2V4dF92YWN1dW1fc3RhdGlzdGljcycgQU5EIHRhYmxlX25h bWUgPSAnaW5kZXhlcyc7CisgaW5kZXhlc19jb2xzIAorLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgIDIwCisoMSByb3cpCisKK1NFTEVDVCBDT1VOVCgqKSBBUyBkYXRhYmFzZV9jb2xz IEZST00gaW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMKK1dIRVJFIHRhYmxlX3NjaGVtYSA9 ICdleHRfdmFjdXVtX3N0YXRpc3RpY3MnIEFORCB0YWJsZV9uYW1lID0gJ2RhdGFiYXNlJzsK KyBkYXRhYmFzZV9jb2xzIAorLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTUKKygx IHJvdykKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL2V4cGVj dGVkL3ZhY3V1bS1leHRlbmRpbmctaW4tcmVwZXRhYmxlLXJlYWQub3V0IGIvY29udHJpYi9l eHRfdmFjdXVtX3N0YXRpc3RpY3MvZXhwZWN0ZWQvdmFjdXVtLWV4dGVuZGluZy1pbi1yZXBl dGFibGUtcmVhZC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjZiMzgxZjlkMjMyCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9leHRfdmFjdXVtX3N0 YXRpc3RpY3MvZXhwZWN0ZWQvdmFjdXVtLWV4dGVuZGluZy1pbi1yZXBldGFibGUtcmVhZC5v dXQKQEAgLTAsMCArMSw1MiBAQAordW51c2VkIHN0ZXAgbmFtZTogczJfZGVsZXRlCitQYXJz ZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjog czJfaW5zZXJ0IHMyX3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZSBzMV9iZWdpbl9yZXBlYXRh YmxlX3JlYWQgczJfdXBkYXRlIHMyX2luc2VydF9pbnRlcnJ1cHQgczJfdmFjdXVtIHMyX3By aW50X3ZhY3V1bV9zdGF0c190YWJsZSBzMV9jb21taXQgczJfY2hlY2twb2ludCBzMl92YWN1 dW0gczJfcHJpbnRfdmFjdXVtX3N0YXRzX3RhYmxlCitzdGVwIHMyX2luc2VydDogSU5TRVJU IElOVE8gdGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb24oaWQsIGl2YWwpIFNFTEVDVCBpdmFs LCBpdmFsJTEwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgQXMgaXZhbDsKK3N0ZXAg czJfcHJpbnRfdmFjdXVtX3N0YXRzX3RhYmxlOiAKKyAgICBTRUxFQ1QKKyAgICAgICAgdnQu cmVsbmFtZSwgdnQudHVwbGVzX2RlbGV0ZWQsIHZ0LnJlY2VudGx5X2RlYWRfdHVwbGVzLCB2 dC5taXNzZWRfZGVhZF90dXBsZXMsIHZ0Lm1pc3NlZF9kZWFkX3BhZ2VzLCB2dC50dXBsZXNf ZnJvemVuCisgICAgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVt X3RhYmxlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndGVzdF92 YWN1dW1fc3RhdF9pc29sYXRpb24nIEFORCB2dC5yZWxpZCA9IGMub2lkOworCityZWxuYW1l fHR1cGxlc19kZWxldGVkfHJlY2VudGx5X2RlYWRfdHVwbGVzfG1pc3NlZF9kZWFkX3R1cGxl c3xtaXNzZWRfZGVhZF9wYWdlc3x0dXBsZXNfZnJvemVuCistLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tCisoMCByb3dzKQorCitzdGVwIHMxX2JlZ2luX3JlcGVh dGFibGVfcmVhZDogCisgICAgQkVHSU4gdHJhbnNhY3Rpb24gSVNPTEFUSU9OIExFVkVMIFJF UEVBVEFCTEUgUkVBRDsKKyAgICBzZWxlY3QgY291bnQoaXZhbCkgZnJvbSB0ZXN0X3ZhY3V1 bV9zdGF0X2lzb2xhdGlvbiB3aGVyZSBpZD45MDA7CisKK2NvdW50CistLS0tLQorICAxMDAK KygxIHJvdykKKworc3RlcCBzMl91cGRhdGU6IFVQREFURSB0ZXN0X3ZhY3V1bV9zdGF0X2lz b2xhdGlvbiBTRVQgaXZhbCA9IGl2YWwgKyAyIHdoZXJlIGlkID4gOTAwOworc3RlcCBzMl9p bnNlcnRfaW50ZXJydXB0OiBJTlNFUlQgSU5UTyB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlv biB2YWx1ZXMgKDEsMSk7CitzdGVwIHMyX3ZhY3V1bTogVkFDVVVNIHRlc3RfdmFjdXVtX3N0 YXRfaXNvbGF0aW9uOworc3RlcCBzMl9wcmludF92YWN1dW1fc3RhdHNfdGFibGU6IAorICAg IFNFTEVDVAorICAgICAgICB2dC5yZWxuYW1lLCB2dC50dXBsZXNfZGVsZXRlZCwgdnQucmVj ZW50bHlfZGVhZF90dXBsZXMsIHZ0Lm1pc3NlZF9kZWFkX3R1cGxlcywgdnQubWlzc2VkX2Rl YWRfcGFnZXMsIHZ0LnR1cGxlc19mcm96ZW4KKyAgICBGUk9NIGV4dF92YWN1dW1fc3RhdGlz dGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIHZ0LCBwZ19jbGFzcyBjCisgICAgV0hFUkUg dnQucmVsbmFtZSA9ICd0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbicgQU5EIHZ0LnJlbGlk ID0gYy5vaWQ7CisKK3JlbG5hbWUgICAgICAgICAgICAgICAgICAgfHR1cGxlc19kZWxldGVk fHJlY2VudGx5X2RlYWRfdHVwbGVzfG1pc3NlZF9kZWFkX3R1cGxlc3xtaXNzZWRfZGVhZF9w YWdlc3x0dXBsZXNfZnJvemVuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQordGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb258 ICAgICAgICAgICAgIDB8ICAgICAgICAgICAgICAgICAxMDB8ICAgICAgICAgICAgICAgICAw fCAgICAgICAgICAgICAgICAwfCAgICAgICAgICAgIDAKKygxIHJvdykKKworc3RlcCBzMV9j b21taXQ6IENPTU1JVDsKK3N0ZXAgczJfY2hlY2twb2ludDogQ0hFQ0tQT0lOVDsKK3N0ZXAg czJfdmFjdXVtOiBWQUNVVU0gdGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb247CitzdGVwIHMy X3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZTogCisgICAgU0VMRUNUCisgICAgICAgIHZ0LnJl bG5hbWUsIHZ0LnR1cGxlc19kZWxldGVkLCB2dC5yZWNlbnRseV9kZWFkX3R1cGxlcywgdnQu bWlzc2VkX2RlYWRfdHVwbGVzLCB2dC5taXNzZWRfZGVhZF9wYWdlcywgdnQudHVwbGVzX2Zy b3plbgorICAgIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV90 YWJsZXMgdnQsIHBnX2NsYXNzIGMKKyAgICBXSEVSRSB2dC5yZWxuYW1lID0gJ3Rlc3RfdmFj dXVtX3N0YXRfaXNvbGF0aW9uJyBBTkQgdnQucmVsaWQgPSBjLm9pZDsKKworcmVsbmFtZSAg ICAgICAgICAgICAgICAgICB8dHVwbGVzX2RlbGV0ZWR8cmVjZW50bHlfZGVhZF90dXBsZXN8 bWlzc2VkX2RlYWRfdHVwbGVzfG1pc3NlZF9kZWFkX3BhZ2VzfHR1cGxlc19mcm96ZW4KKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCit0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbnwgICAgICAgICAgIDEwMHwgICAgICAg ICAgICAgICAgIDEwMHwgICAgICAgICAgICAgICAgIDB8ICAgICAgICAgICAgICAgIDB8ICAg ICAgICAgIDEwMQorKDEgcm93KQorCmRpZmYgLS1naXQgYS9jb250cmliL2V4dF92YWN1dW1f c3RhdGlzdGljcy9leHRfdmFjdXVtX3N0YXRpc3RpY3MtLTEuMC5zcWwgYi9jb250cmliL2V4 dF92YWN1dW1fc3RhdGlzdGljcy9leHRfdmFjdXVtX3N0YXRpc3RpY3MtLTEuMC5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRmMGIxODc3ZjkwCi0tLSAv ZGV2L251bGwKKysrIGIvY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvZXh0X3ZhY3V1 bV9zdGF0aXN0aWNzLS0xLjAuc3FsCkBAIC0wLDAgKzEsMjYwIEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiBleHRfdmFjdXVtX3N0YXRpc3RpY3MtLTEuMC5zcWwKKyAqICAg IEV4dGVuZGVkIHZhY3V1bSBzdGF0aXN0aWNzIHZpYSBob29rIGFuZCBjdXN0b20gc3RvcmFn ZQorICoKKyAqIFRoaXMgZXh0ZW5zaW9uIGNvbGxlY3RzIGV4dGVuZGVkIHZhY3V1bSBzdGF0 aXN0aWNzIHZpYSBzZXRfcmVwb3J0X3ZhY3V1bV9ob29rCisgKiBhbmQgc3RvcmVzIHRoZW0g aW4gc2hhcmVkIG1lbW9yeS4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCitc ZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIiB0byBs b2FkIHRoaXMgZmlsZS4gXHF1aXQKKworQ1JFQVRFIFNDSEVNQSBJRiBOT1QgRVhJU1RTIGV4 dF92YWN1dW1fc3RhdGlzdGljczsKKworQ09NTUVOVCBPTiBTQ0hFTUEgZXh0X3ZhY3V1bV9z dGF0aXN0aWNzIElTCisgICdFeHRlbmRlZCB2YWN1dW0gc3RhdGlzdGljcyAoaGVhcCwgaW5k ZXgsIGRhdGFiYXNlKSc7CisKKy0tIFJlc2V0IGZ1bmN0aW9ucworQ1JFQVRFIE9SIFJFUExB Q0UgRlVOQ1RJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLmV4dHZhY19yZXNldF9lbnRyeSgK KyAgICBkYm9pZCBvaWQsCisgICAgcmVsaWQgb2lkLAorICAgIHR5cGUgaW50NAorKQorUkVU VVJOUyBib29sZWFuCitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ2V4dHZhY19yZXNldF9lbnRy eScKK0xBTkdVQUdFIEMgU1RSSUNUIFBBUkFMTEVMIFNBRkU7CisKK0NSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIGV4dF92YWN1dW1fc3RhdGlzdGljcy5leHR2YWNfcmVzZXRfZGJfZW50 cnkoZGJvaWQgb2lkKQorUkVUVVJOUyBiaWdpbnQKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAn ZXh0dmFjX3Jlc2V0X2RiX2VudHJ5JworTEFOR1VBR0UgQyBTVFJJQ1QgUEFSQUxMRUwgU0FG RTsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNz LnZhY3V1bV9zdGF0aXN0aWNzX3Jlc2V0KCkKK1JFVFVSTlMgYmlnaW50CitBUyAnTU9EVUxF X1BBVEhOQU1FJywgJ3ZhY3V1bV9zdGF0aXN0aWNzX3Jlc2V0JworTEFOR1VBR0UgQyBTVFJJ Q1QgUEFSQUxMRUwgU0FGRTsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzLnNoYXJlZF9tZW1vcnlfc2l6ZSgpCitSRVRVUk5TIGJpZ2ludAor QVMgJ01PRFVMRV9QQVRITkFNRScsICdleHR2YWNfc2hhcmVkX21lbW9yeV9zaXplJworTEFO R1VBR0UgQyBTVFJJQ1QgUEFSQUxMRUwgU0FGRTsKKworQ09NTUVOVCBPTiBGVU5DVElPTiBl eHRfdmFjdXVtX3N0YXRpc3RpY3Muc2hhcmVkX21lbW9yeV9zaXplKCkgSVMKKyAgJ1RvdGFs IHNoYXJlZCBtZW1vcnkgaW4gYnl0ZXMgdXNlZCBieSB0aGUgZXh0ZW5zaW9uIGZvciB2YWN1 dW0gc3RhdGlzdGljcy4nOworCistLSBBZGQvcmVtb3ZlIE9JRHMgZm9yIHRyYWNraW5nCitD UkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBleHRfdmFjdXVtX3N0YXRpc3RpY3MuYWRkX3Ry YWNrX2RhdGFiYXNlKGRib2lkIG9pZCkKK1JFVFVSTlMgYm9vbGVhbgorQVMgJ01PRFVMRV9Q QVRITkFNRScsICdldnNfYWRkX3RyYWNrX2RhdGFiYXNlJworTEFOR1VBR0UgQyBTVFJJQ1Q7 CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGV4dF92YWN1dW1fc3RhdGlzdGljcy5y ZW1vdmVfdHJhY2tfZGF0YWJhc2UoZGJvaWQgb2lkKQorUkVUVVJOUyBib29sZWFuCitBUyAn TU9EVUxFX1BBVEhOQU1FJywgJ2V2c19yZW1vdmVfdHJhY2tfZGF0YWJhc2UnCitMQU5HVUFH RSBDIFNUUklDVDsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZXh0X3ZhY3V1bV9z dGF0aXN0aWNzLmFkZF90cmFja19yZWxhdGlvbihkYm9pZCBvaWQsIHJlbG9pZCBvaWQpCitS RVRVUk5TIGJvb2xlYW4KK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAnZXZzX2FkZF90cmFja19y ZWxhdGlvbicKK0xBTkdVQUdFIEMgU1RSSUNUOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5D VElPTiBleHRfdmFjdXVtX3N0YXRpc3RpY3MucmVtb3ZlX3RyYWNrX3JlbGF0aW9uKGRib2lk IG9pZCwgcmVsb2lkIG9pZCkKK1JFVFVSTlMgYm9vbGVhbgorQVMgJ01PRFVMRV9QQVRITkFN RScsICdldnNfcmVtb3ZlX3RyYWNrX3JlbGF0aW9uJworTEFOR1VBR0UgQyBTVFJJQ1Q7CisK K0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGV4dF92YWN1dW1fc3RhdGlzdGljcy50cmFj a19saXN0KCkKK1JFVFVSTlMgVEFCTEUodHJhY2tfa2luZCB0ZXh0LCBkYm9pZCBvaWQsIHJl bG9pZCBvaWQpCitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ2V2c190cmFja19saXN0JworTEFO R1VBR0UgQyBTVFJJQ1Q7CisKK0NPTU1FTlQgT04gRlVOQ1RJT04gZXh0X3ZhY3V1bV9zdGF0 aXN0aWNzLnRyYWNrX2xpc3QoKSBJUworICAnTGlzdCBvZiBkYXRhYmFzZSBhbmQgcmVsYXRp b24gT0lEcyBmb3Igd2hpY2ggdmFjdXVtIHN0YXRpc3RpY3MgYXJlIGNvbGxlY3RlZC4nOwor CistLSBJbnRlcm5hbCBDIGZ1bmN0aW9uIHRvIGZldGNoIHRhYmxlIHZhY3V1bSBzdGF0cwor Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0 YXRzX2dldF92YWN1dW1fdGFibGVzKAorICAgIElOICBkYm9pZCBvaWQsCisgICAgSU4gIHJl bG9pZCBvaWQsCisgICAgT1VUIHJlbGlkIG9pZCwKKyAgICBPVVQgdG90YWxfYmxrc19yZWFk IGJpZ2ludCwKKyAgICBPVVQgdG90YWxfYmxrc19oaXQgYmlnaW50LAorICAgIE9VVCB0b3Rh bF9ibGtzX2RpcnRpZWQgYmlnaW50LAorICAgIE9VVCB0b3RhbF9ibGtzX3dyaXR0ZW4gYmln aW50LAorICAgIE9VVCB3YWxfcmVjb3JkcyBiaWdpbnQsCisgICAgT1VUIHdhbF9mcGkgYmln aW50LAorICAgIE9VVCB3YWxfYnl0ZXMgbnVtZXJpYywKKyAgICBPVVQgYmxrX3JlYWRfdGlt ZSBkb3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCBibGtfd3JpdGVfdGltZSBkb3VibGUgcHJl Y2lzaW9uLAorICAgIE9VVCBkZWxheV90aW1lIGRvdWJsZSBwcmVjaXNpb24sCisgICAgT1VU IHRvdGFsX3RpbWUgZG91YmxlIHByZWNpc2lvbiwKKyAgICBPVVQgd3JhcGFyb3VuZF9mYWls c2FmZV9jb3VudCBpbnRlZ2VyLAorICAgIE9VVCByZWxfYmxrc19yZWFkIGJpZ2ludCwKKyAg ICBPVVQgcmVsX2Jsa3NfaGl0IGJpZ2ludCwKKyAgICBPVVQgdHVwbGVzX2RlbGV0ZWQgYmln aW50LAorICAgIE9VVCBwYWdlc19zY2FubmVkIGJpZ2ludCwKKyAgICBPVVQgcGFnZXNfcmVt b3ZlZCBiaWdpbnQsCisgICAgT1VUIHZtX25ld19mcm96ZW5fcGFnZXMgYmlnaW50LAorICAg IE9VVCB2bV9uZXdfdmlzaWJsZV9wYWdlcyBiaWdpbnQsCisgICAgT1VUIHZtX25ld192aXNp YmxlX2Zyb3plbl9wYWdlcyBiaWdpbnQsCisgICAgT1VUIHR1cGxlc19mcm96ZW4gYmlnaW50 LAorICAgIE9VVCByZWNlbnRseV9kZWFkX3R1cGxlcyBiaWdpbnQsCisgICAgT1VUIGluZGV4 X3ZhY3V1bV9jb3VudCBiaWdpbnQsCisgICAgT1VUIG1pc3NlZF9kZWFkX3BhZ2VzIGJpZ2lu dCwKKyAgICBPVVQgbWlzc2VkX2RlYWRfdHVwbGVzIGJpZ2ludAorKQorUkVUVVJOUyBTRVRP RiByZWNvcmQKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAncGdfc3RhdHNfZ2V0X3ZhY3V1bV90 YWJsZXMnCitMQU5HVUFHRSBDIFNUUklDVCBWT0xBVElMRTsKKworLS0gSW50ZXJuYWwgQyBm dW5jdGlvbiB0byBmZXRjaCBpbmRleCB2YWN1dW0gc3RhdHMKK0NSRUFURSBPUiBSRVBMQUNF IEZVTkNUSU9OIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c19nZXRfdmFjdXVtX2lu ZGV4ZXMoCisgICAgSU4gIGRib2lkIG9pZCwKKyAgICBJTiAgcmVsb2lkIG9pZCwKKyAgICBP VVQgcmVsaWQgb2lkLAorICAgIE9VVCB0b3RhbF9ibGtzX3JlYWQgYmlnaW50LAorICAgIE9V VCB0b3RhbF9ibGtzX2hpdCBiaWdpbnQsCisgICAgT1VUIHRvdGFsX2Jsa3NfZGlydGllZCBi aWdpbnQsCisgICAgT1VUIHRvdGFsX2Jsa3Nfd3JpdHRlbiBiaWdpbnQsCisgICAgT1VUIHdh bF9yZWNvcmRzIGJpZ2ludCwKKyAgICBPVVQgd2FsX2ZwaSBiaWdpbnQsCisgICAgT1VUIHdh bF9ieXRlcyBudW1lcmljLAorICAgIE9VVCBibGtfcmVhZF90aW1lIGRvdWJsZSBwcmVjaXNp b24sCisgICAgT1VUIGJsa193cml0ZV90aW1lIGRvdWJsZSBwcmVjaXNpb24sCisgICAgT1VU IGRlbGF5X3RpbWUgZG91YmxlIHByZWNpc2lvbiwKKyAgICBPVVQgdG90YWxfdGltZSBkb3Vi bGUgcHJlY2lzaW9uLAorICAgIE9VVCB3cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50IGludGVn ZXIsCisgICAgT1VUIHJlbF9ibGtzX3JlYWQgYmlnaW50LAorICAgIE9VVCByZWxfYmxrc19o aXQgYmlnaW50LAorICAgIE9VVCB0dXBsZXNfZGVsZXRlZCBiaWdpbnQsCisgICAgT1VUIHBh Z2VzX2RlbGV0ZWQgYmlnaW50CispCitSRVRVUk5TIFNFVE9GIHJlY29yZAorQVMgJ01PRFVM RV9QQVRITkFNRScsICdwZ19zdGF0c19nZXRfdmFjdXVtX2luZGV4ZXMnCitMQU5HVUFHRSBD IFNUUklDVCBWT0xBVElMRTsKKworLS0gSW50ZXJuYWwgQyBmdW5jdGlvbiB0byBmZXRjaCBk YXRhYmFzZSB2YWN1dW0gc3RhdHMKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGV4dF92 YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c19nZXRfdmFjdXVtX2RhdGFiYXNlKAorICAgIElO ICBkYm9pZCBvaWQsCisgICAgT1VUIGRiaWQgb2lkLAorICAgIE9VVCB0b3RhbF9ibGtzX3Jl YWQgYmlnaW50LAorICAgIE9VVCB0b3RhbF9ibGtzX2hpdCBiaWdpbnQsCisgICAgT1VUIHRv dGFsX2Jsa3NfZGlydGllZCBiaWdpbnQsCisgICAgT1VUIHRvdGFsX2Jsa3Nfd3JpdHRlbiBi aWdpbnQsCisgICAgT1VUIHdhbF9yZWNvcmRzIGJpZ2ludCwKKyAgICBPVVQgd2FsX2ZwaSBi aWdpbnQsCisgICAgT1VUIHdhbF9ieXRlcyBudW1lcmljLAorICAgIE9VVCBibGtfcmVhZF90 aW1lIGRvdWJsZSBwcmVjaXNpb24sCisgICAgT1VUIGJsa193cml0ZV90aW1lIGRvdWJsZSBw cmVjaXNpb24sCisgICAgT1VUIGRlbGF5X3RpbWUgZG91YmxlIHByZWNpc2lvbiwKKyAgICBP VVQgdG90YWxfdGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCB3cmFwYXJvdW5kX2Zh aWxzYWZlX2NvdW50IGludGVnZXIsCisgICAgT1VUIGludGVycnVwdHNfY291bnQgaW50ZWdl cgorKQorUkVUVVJOUyBTRVRPRiByZWNvcmQKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAncGdf c3RhdHNfZ2V0X3ZhY3V1bV9kYXRhYmFzZScKK0xBTkdVQUdFIEMgU1RSSUNUIFZPTEFUSUxF OworCistLSBWaWV3OiB2YWN1dW0gc3RhdGlzdGljcyBwZXIgdGFibGUgKGhlYXApCitDUkVB VEUgVklFVyBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX3RhYmxlcyBB UworU0VMRUNUCisgIHJlbC5vaWQgQVMgcmVsaWQsCisgIG5zLm5zcG5hbWUgQVMgc2NoZW1h LAorICByZWwucmVsbmFtZSBBUyByZWxuYW1lLAorICBkYi5kYXRuYW1lIEFTIGRibmFtZSwK KyAgc3RhdHMudG90YWxfYmxrc19yZWFkLAorICBzdGF0cy50b3RhbF9ibGtzX2hpdCwKKyAg c3RhdHMudG90YWxfYmxrc19kaXJ0aWVkLAorICBzdGF0cy50b3RhbF9ibGtzX3dyaXR0ZW4s CisgIHN0YXRzLndhbF9yZWNvcmRzLAorICBzdGF0cy53YWxfZnBpLAorICBzdGF0cy53YWxf Ynl0ZXMsCisgIHN0YXRzLmJsa19yZWFkX3RpbWUsCisgIHN0YXRzLmJsa193cml0ZV90aW1l LAorICBzdGF0cy5kZWxheV90aW1lLAorICBzdGF0cy50b3RhbF90aW1lLAorICBzdGF0cy53 cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50LAorICBzdGF0cy5yZWxfYmxrc19yZWFkLAorICBz dGF0cy5yZWxfYmxrc19oaXQsCisgIHN0YXRzLnR1cGxlc19kZWxldGVkLAorICBzdGF0cy5w YWdlc19zY2FubmVkLAorICBzdGF0cy5wYWdlc19yZW1vdmVkLAorICBzdGF0cy52bV9uZXdf ZnJvemVuX3BhZ2VzLAorICBzdGF0cy52bV9uZXdfdmlzaWJsZV9wYWdlcywKKyAgc3RhdHMu dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzLAorICBzdGF0cy50dXBsZXNfZnJvemVuLAor ICBzdGF0cy5yZWNlbnRseV9kZWFkX3R1cGxlcywKKyAgc3RhdHMuaW5kZXhfdmFjdXVtX2Nv dW50LAorICBzdGF0cy5taXNzZWRfZGVhZF9wYWdlcywKKyAgc3RhdHMubWlzc2VkX2RlYWRf dHVwbGVzCitGUk9NIHBnX2RhdGFiYXNlIGRiLAorICAgICBwZ19jbGFzcyByZWwsCisgICAg IHBnX25hbWVzcGFjZSBucywKKyAgICAgTEFURVJBTCBleHRfdmFjdXVtX3N0YXRpc3RpY3Mu cGdfc3RhdHNfZ2V0X3ZhY3V1bV90YWJsZXMoZGIub2lkLCByZWwub2lkKSBzdGF0cworV0hF UkUgZGIuZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKQorICBBTkQgcmVsLnJlbGtpbmQg PSAncicKKyAgQU5EIHJlbC5yZWxuYW1lc3BhY2UgPSBucy5vaWQKKyAgQU5EIHJlbC5vaWQg PSBzdGF0cy5yZWxpZDsKKworQ09NTUVOVCBPTiBWSUVXIGV4dF92YWN1dW1fc3RhdGlzdGlj cy5wZ19zdGF0c192YWN1dW1fdGFibGVzIElTCisgICdFeHRlbmRlZCB2YWN1dW0gc3RhdGlz dGljcyBwZXIgdGFibGUgKGhlYXApJzsKKworLS0gVmlldzogdmFjdXVtIHN0YXRpc3RpY3Mg cGVyIGluZGV4CitDUkVBVEUgVklFVyBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNf dmFjdXVtX2luZGV4ZXMgQVMKK1NFTEVDVAorICByZWwub2lkIEFTIGluZGV4cmVsaWQsCisg IG5zLm5zcG5hbWUgQVMgc2NoZW1hLAorICByZWwucmVsbmFtZSBBUyBpbmRleHJlbG5hbWUs CisgIGRiLmRhdG5hbWUgQVMgZGJuYW1lLAorICBzdGF0cy50b3RhbF9ibGtzX3JlYWQsCisg IHN0YXRzLnRvdGFsX2Jsa3NfaGl0LAorICBzdGF0cy50b3RhbF9ibGtzX2RpcnRpZWQsCisg IHN0YXRzLnRvdGFsX2Jsa3Nfd3JpdHRlbiwKKyAgc3RhdHMud2FsX3JlY29yZHMsCisgIHN0 YXRzLndhbF9mcGksCisgIHN0YXRzLndhbF9ieXRlcywKKyAgc3RhdHMuYmxrX3JlYWRfdGlt ZSwKKyAgc3RhdHMuYmxrX3dyaXRlX3RpbWUsCisgIHN0YXRzLmRlbGF5X3RpbWUsCisgIHN0 YXRzLnRvdGFsX3RpbWUsCisgIHN0YXRzLndyYXBhcm91bmRfZmFpbHNhZmVfY291bnQsCisg IHN0YXRzLnJlbF9ibGtzX3JlYWQsCisgIHN0YXRzLnJlbF9ibGtzX2hpdCwKKyAgc3RhdHMu dHVwbGVzX2RlbGV0ZWQsCisgIHN0YXRzLnBhZ2VzX2RlbGV0ZWQKK0ZST00gcGdfZGF0YWJh c2UgZGIsCisgICAgIHBnX2NsYXNzIHJlbCwKKyAgICAgcGdfbmFtZXNwYWNlIG5zLAorICAg ICBMQVRFUkFMIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c19nZXRfdmFjdXVtX2lu ZGV4ZXMoZGIub2lkLCByZWwub2lkKSBzdGF0cworV0hFUkUgZGIuZGF0bmFtZSA9IGN1cnJl bnRfZGF0YWJhc2UoKQorICBBTkQgcmVsLnJlbGtpbmQgPSAnaScKKyAgQU5EIHJlbC5yZWxu YW1lc3BhY2UgPSBucy5vaWQKKyAgQU5EIHJlbC5vaWQgPSBzdGF0cy5yZWxpZDsKKworQ09N TUVOVCBPTiBWSUVXIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1faW5k ZXhlcyBJUworICAnRXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3RpY3MgcGVyIGluZGV4JzsKKwor LS0gVmlldzogdmFjdXVtIHN0YXRpc3RpY3MgcGVyIGRhdGFiYXNlIChhZ2dyZWdhdGUpCitD UkVBVEUgVklFVyBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX2RhdGFi YXNlIEFTCitTRUxFQ1QKKyAgZGIub2lkIEFTIGRib2lkLAorICBkYi5kYXRuYW1lIEFTIGRi bmFtZSwKKyAgc3RhdHMudG90YWxfYmxrc19yZWFkIEFTIGRiX2Jsa3NfcmVhZCwKKyAgc3Rh dHMudG90YWxfYmxrc19oaXQgQVMgZGJfYmxrc19oaXQsCisgIHN0YXRzLnRvdGFsX2Jsa3Nf ZGlydGllZCBBUyBkYl9ibGtzX2RpcnRpZWQsCisgIHN0YXRzLnRvdGFsX2Jsa3Nfd3JpdHRl biBBUyBkYl9ibGtzX3dyaXR0ZW4sCisgIHN0YXRzLndhbF9yZWNvcmRzIEFTIGRiX3dhbF9y ZWNvcmRzLAorICBzdGF0cy53YWxfZnBpIEFTIGRiX3dhbF9mcGksCisgIHN0YXRzLndhbF9i eXRlcyBBUyBkYl93YWxfYnl0ZXMsCisgIHN0YXRzLmJsa19yZWFkX3RpbWUgQVMgZGJfYmxr X3JlYWRfdGltZSwKKyAgc3RhdHMuYmxrX3dyaXRlX3RpbWUgQVMgZGJfYmxrX3dyaXRlX3Rp bWUsCisgIHN0YXRzLmRlbGF5X3RpbWUgQVMgZGJfZGVsYXlfdGltZSwKKyAgc3RhdHMudG90 YWxfdGltZSBBUyBkYl90b3RhbF90aW1lLAorICBzdGF0cy53cmFwYXJvdW5kX2ZhaWxzYWZl X2NvdW50IEFTIGRiX3dyYXBhcm91bmRfZmFpbHNhZmVfY291bnQsCisgIHN0YXRzLmludGVy cnVwdHNfY291bnQKK0ZST00gcGdfZGF0YWJhc2UgZGIKK0xFRlQgSk9JTiBMQVRFUkFMIGV4 dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c19nZXRfdmFjdXVtX2RhdGFiYXNlKGRiLm9p ZCkgc3RhdHMgT04gZGIub2lkID0gc3RhdHMuZGJpZDsKKworQ09NTUVOVCBPTiBWSUVXIGV4 dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fZGF0YWJhc2UgSVMKKyAgJ0V4 dGVuZGVkIHZhY3V1bSBzdGF0aXN0aWNzIHBlciBkYXRhYmFzZSAoYWdncmVnYXRlKSc7CmRp ZmYgLS1naXQgYS9jb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy9leHRfdmFjdXVtX3N0 YXRpc3RpY3MuY29uZiBiL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL2V4dF92YWN1 dW1fc3RhdGlzdGljcy5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi45YjcxMTQ4NzYyMwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvZXh0X3ZhY3V1 bV9zdGF0aXN0aWNzL2V4dF92YWN1dW1fc3RhdGlzdGljcy5jb25mCkBAIC0wLDAgKzEsMiBA QAorIyBDb25maWcgZm9yIGV4dF92YWN1dW1fc3RhdGlzdGljcyByZWdyZXNzaW9uIHRlc3Rz CitzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgPSAnZXh0X3ZhY3V1bV9zdGF0aXN0aWNzJwpk aWZmIC0tZ2l0IGEvY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvZXh0X3ZhY3V1bV9z dGF0aXN0aWNzLmNvbnRyb2wgYi9jb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy9leHRf dmFjdXVtX3N0YXRpc3RpY3MuY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uNTE4MzUwYTY0YjcKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2V4 dF92YWN1dW1fc3RhdGlzdGljcy9leHRfdmFjdXVtX3N0YXRpc3RpY3MuY29udHJvbApAQCAt MCwwICsxLDUgQEAKKyMgZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIGV4dGVuc2lvbgorY29tbWVu dCA9ICdFeHRlbmRlZCB2YWN1dW0gc3RhdGlzdGljcyB2aWEgaG9vayAocmVxdWlyZXMgc2hh cmVkX3ByZWxvYWRfbGlicmFyaWVzKScKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCityZWxv Y2F0YWJsZSA9IHRydWUKK21vZHVsZV9wYXRobmFtZSA9ICckbGliZGlyL2V4dF92YWN1dW1f c3RhdGlzdGljcycKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNz L21lc29uLmJ1aWxkIGIvY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvbWVzb24uYnVp bGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcyMzM4YmFhNTAw Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvbWVz b24uYnVpbGQKQEAgLTAsMCArMSw0MSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjItMjAyNiwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyMKKyMgZXh0X3ZhY3V1bV9z dGF0aXN0aWNzIC0gZXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3RpY3MgdmlhIGhvb2sKKyMgUmVx dWlyZXMgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzID0gJ2V4dF92YWN1dW1fc3RhdGlzdGlj cycKKworZXh0X3ZhY3V1bV9zdGF0aXN0aWNzX3NvdXJjZXMgPSBmaWxlcygKKyAgJ3ZhY3V1 bV9zdGF0aXN0aWNzLmMnLAorKQorCitleHRfdmFjdXVtX3N0YXRpc3RpY3MgPSBzaGFyZWRf bW9kdWxlKCdleHRfdmFjdXVtX3N0YXRpc3RpY3MnLAorICBleHRfdmFjdXVtX3N0YXRpc3Rp Y3Nfc291cmNlcywKKyAga3dhcmdzOiBjb250cmliX21vZF9hcmdzICsgeworICAgICdkZXBl bmRlbmNpZXMnOiBjb250cmliX21vZF9hcmdzWydkZXBlbmRlbmNpZXMnXSwKKyAgfSwKKykK K2NvbnRyaWJfdGFyZ2V0cyArPSBleHRfdmFjdXVtX3N0YXRpc3RpY3MKKworaW5zdGFsbF9k YXRhKAorICAnZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLmNvbnRyb2wnLAorICAnZXh0X3ZhY3V1 bV9zdGF0aXN0aWNzLS0xLjAuc3FsJywKKyAga3dhcmdzOiBjb250cmliX2RhdGFfYXJncywK KykKKwordGVzdHMgKz0geworICAnbmFtZSc6ICdleHRfdmFjdXVtX3N0YXRpc3RpY3MnLAor ICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24uY3Vy cmVudF9idWlsZF9kaXIoKSwKKyAgJ2lzb2xhdGlvbic6IHsKKyAgICAnc3BlY3MnOiBbCisg ICAgICAndmFjdXVtLWV4dGVuZGluZy1pbi1yZXBldGFibGUtcmVhZCcsCisgICAgXSwKKyAg ICAncmVncmVzc19hcmdzJzogWyctLXRlbXAtY29uZmlnJywgZmlsZXMoJ2V4dF92YWN1dW1f c3RhdGlzdGljcy5jb25mJyldLAorICAgICdydW5uaW5nY2hlY2snOiBmYWxzZSwKKyAgfSwK KyAgJ3RhcCc6IHsKKyAgICAndGVzdHMnOiBbCisgICAgICAndC8wNTJfdmFjdXVtX2V4dGVu ZGluZ19iYXNpY190ZXN0LnBsJywKKyAgICAgICd0LzA1M192YWN1dW1fZXh0ZW5kaW5nX2Zy ZWV6ZV90ZXN0LnBsJywKKyAgICBdLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9l eHRfdmFjdXVtX3N0YXRpc3RpY3Mvc3BlY3MvdmFjdXVtLWV4dGVuZGluZy1pbi1yZXBldGFi bGUtcmVhZC5zcGVjIGIvY29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3Mvc3BlY3MvdmFj dXVtLWV4dGVuZGluZy1pbi1yZXBldGFibGUtcmVhZC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40ODkxZTI0OGNjYQotLS0gL2Rldi9udWxsCisrKyBi L2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3NwZWNzL3ZhY3V1bS1leHRlbmRpbmct aW4tcmVwZXRhYmxlLXJlYWQuc3BlYwpAQCAtMCwwICsxLDU5IEBACisjIFRlc3QgZm9yIGNo ZWNraW5nIHJlY2VudGx5X2RlYWRfdHVwbGVzLCB0dXBsZXNfZGVsZXRlZCBhbmQgZnJvemVu IHR1cGxlcyBpbiBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX3RhYmxl cy4KKyMgcmVjZW50bHlfZGVhZF90dXBsZXMgdmFsdWVzIGFyZSBjb3VudGVkIHdoZW4gdmFj dXVtIGhhc24ndCBjbGVhcmVkIHR1cGxlcyBiZWNhdXNlIHRoZXkgd2VyZSBkZWxldGVkIHJl Y2VudGx5LgorIyByZWNlbnRseV9kZWFkX3R1cGxlcyBhcmVuJ3QgaW5jcmVhc2VkIGFmdGVy IHJlbGVhc2luZyBsb2NrIGNvbXBhcmVkIHdpdGggdHVwbGVzX2RlbGV0ZWQsIHdoaWNoIGlu Y3JlYXNlZAorIyBieSB0aGUgdmFsdWUgb2YgdGhlIGNsZWFyZWQgdHVwbGVzIHRoYXQgdGhl IHZhY3V1bSBtYW5hZ2VkIHRvIGNsZWFyLgorCitzZXR1cAoreworICAgIENSRUFURSBUQUJM RSB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbihpZCBpbnQsIGl2YWwgaW50KSBXSVRIIChh dXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYpOworICAgIENSRUFURSBFWFRFTlNJT04gZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzOworICAgIFNFVCB0cmFja19pb190aW1pbmcgPSBvbjsKK30KKwor dGVhcmRvd24KK3sKKyAgICBEUk9QIEVYVEVOU0lPTiBleHRfdmFjdXVtX3N0YXRpc3RpY3Mg Q0FTQ0FERTsKKyAgICBEUk9QIFRBQkxFIHRlc3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9uIENB U0NBREU7CisgICAgUkVTRVQgdHJhY2tfaW9fdGltaW5nOworfQorCitzZXNzaW9uIHMxCitz ZXR1cCB7CisgICAgU0VUIHRyYWNrX2lvX3RpbWluZyA9IG9uOworfQorc3RlcCBzMV9iZWdp bl9yZXBlYXRhYmxlX3JlYWQgeworICAgIEJFR0lOIHRyYW5zYWN0aW9uIElTT0xBVElPTiBM RVZFTCBSRVBFQVRBQkxFIFJFQUQ7CisgICAgc2VsZWN0IGNvdW50KGl2YWwpIGZyb20gdGVz dF92YWN1dW1fc3RhdF9pc29sYXRpb24gd2hlcmUgaWQ+OTAwOworfQorc3RlcCBzMV9jb21t aXQgeyBDT01NSVQ7IH0KKworc2Vzc2lvbiBzMgorc2V0dXAgeworICAgIFNFVCB0cmFja19p b190aW1pbmcgPSBvbjsKK30KK3N0ZXAgczJfaW5zZXJ0ICAgICAgICAgICAgICAgICAgeyBJ TlNFUlQgSU5UTyB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbihpZCwgaXZhbCkgU0VMRUNU IGl2YWwsIGl2YWwlMTAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBBcyBpdmFsOyB9 CitzdGVwIHMyX3VwZGF0ZSAgICAgICAgICAgICAgICAgIHsgVVBEQVRFIHRlc3RfdmFjdXVt X3N0YXRfaXNvbGF0aW9uIFNFVCBpdmFsID0gaXZhbCArIDIgd2hlcmUgaWQgPiA5MDA7IH0K K3N0ZXAgczJfZGVsZXRlICAgICAgICAgICAgICAgICAgeyBERUxFVEUgRlJPTSB0ZXN0X3Zh Y3V1bV9zdGF0X2lzb2xhdGlvbiB3aGVyZSBpZCA+IDkwMDsgfQorc3RlcCBzMl9pbnNlcnRf aW50ZXJydXB0ICAgICAgICB7IElOU0VSVCBJTlRPIHRlc3RfdmFjdXVtX3N0YXRfaXNvbGF0 aW9uIHZhbHVlcyAoMSwxKTsgfQorc3RlcCBzMl92YWN1dW0gICAgICAgICAgICAgICAgICB7 IFZBQ1VVTSB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbjsgfQorc3RlcCBzMl9jaGVja3Bv aW50ICAgICAgICAgICAgICB7IENIRUNLUE9JTlQ7IH0KK3N0ZXAgczJfcHJpbnRfdmFjdXVt X3N0YXRzX3RhYmxlCit7CisgICAgU0VMRUNUCisgICAgICAgIHZ0LnJlbG5hbWUsIHZ0LnR1 cGxlc19kZWxldGVkLCB2dC5yZWNlbnRseV9kZWFkX3R1cGxlcywgdnQubWlzc2VkX2RlYWRf dHVwbGVzLCB2dC5taXNzZWRfZGVhZF9wYWdlcywgdnQudHVwbGVzX2Zyb3plbgorICAgIEZS T00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV90YWJsZXMgdnQsIHBn X2NsYXNzIGMKKyAgICBXSEVSRSB2dC5yZWxuYW1lID0gJ3Rlc3RfdmFjdXVtX3N0YXRfaXNv bGF0aW9uJyBBTkQgdnQucmVsaWQgPSBjLm9pZDsKK30KKworcGVybXV0YXRpb24KKyAgICBz Ml9pbnNlcnQKKyAgICBzMl9wcmludF92YWN1dW1fc3RhdHNfdGFibGUKKyAgICBzMV9iZWdp bl9yZXBlYXRhYmxlX3JlYWQKKyAgICBzMl91cGRhdGUKKyAgICBzMl9pbnNlcnRfaW50ZXJy dXB0CisgICAgczJfdmFjdXVtCisgICAgczJfcHJpbnRfdmFjdXVtX3N0YXRzX3RhYmxlCisg ICAgczFfY29tbWl0CisgICAgczJfY2hlY2twb2ludAorICAgIHMyX3ZhY3V1bQorICAgIHMy X3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9leHRfdmFj dXVtX3N0YXRpc3RpY3MvdC8wNTJfdmFjdXVtX2V4dGVuZGluZ19iYXNpY190ZXN0LnBsIGIv Y29udHJpYi9leHRfdmFjdXVtX3N0YXRpc3RpY3MvdC8wNTJfdmFjdXVtX2V4dGVuZGluZ19i YXNpY190ZXN0LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45 NDYzZDUxNDVmNAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0 aXN0aWNzL3QvMDUyX3ZhY3V1bV9leHRlbmRpbmdfYmFzaWNfdGVzdC5wbApAQCAtMCwwICsx LDc4MCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKyMgVGVzdCBjdW11bGF0aXZlIHZhY3V1bSBzdGF0cyBzeXN0ZW0gdXNp bmcgVEFQCisjCisjIFRoaXMgdGVzdCB2YWxpZGF0ZXMgdGhlIGFjY3VyYWN5IGFuZCBiZWhh dmlvciBvZiBjdW11bGF0aXZlIHZhY3V1bSBzdGF0aXN0aWNzCisjIGFjcm9zcyBoZWFwIHRh YmxlcywgaW5kZXhlcywgYW5kIGRhdGFiYXNlcyB1c2luZzoKKyMKKyMgICDigKIgZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV90YWJsZXMKKyMgICDigKIgZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9pbmRleGVzCisjICAg4oCiIGV4dF92 YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fZGF0YWJhc2UKKyMKKyMgQSBwb2xs aW5nIGhlbHBlciBmdW5jdGlvbiByZXBlYXRlZGx5IGNoZWNrcyB0aGUgc3RhdHMgdmlld3Mg dW50aWwgZXhwZWN0ZWQKKyMgZGVsdGFzIGFwcGVhciBvciBhIGNvbmZpZ3VyYWJsZSB0aW1l b3V0IGV4cGlyZXMuIFRoaXMgZ3VhcmFudGVlcyB0aGF0CisjIHN0YXRzLWNvbGxlY3RvciBw cm9wYWdhdGlvbiBkZWxheXMgZG8gbm90IGxlYWQgdG8gZmxha3kgdGVzdCBiZWhhdmlvci4K KwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7 CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdCBoYXJuZXNzIHNldHVwCisj LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdzdGF0X3ZhY3V1bScpOworJG5vZGUtPmluaXQ7CisKKyMgQ29u ZmlndXJlIHRoZSBzZXJ2ZXI6IHByZWxvYWQgZXh0ZW5zaW9uIGFuZCBsb2dnaW5nIGxldmVs Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHF7CisgICAgc2hhcmVk X3ByZWxvYWRfbGlicmFyaWVzID0gJ2V4dF92YWN1dW1fc3RhdGlzdGljcycKKyAgICBsb2df bWluX21lc3NhZ2VzID0gbm90aWNlCit9KTsKKworbXkgJHN0ZGVycjsKK215ICRiYXNlX3N0 YXRzOworbXkgJHdhbHM7CitteSAkaWJhc2Vfc3RhdHM7CitteSAkaXdhbHM7CisKKyRub2Rl LT5zdGFydCgKKyAgICAnPicgPT4gXCRiYXNlX3N0YXRzLAorCScyPicgPT4gXCRzdGRlcnIK Kyk7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGF0YWJhc2UgY3JlYXRpb24g YW5kIGluaXRpYWxpemF0aW9uCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKyAgICBDUkVBVEUgREFUQUJBU0Ugc3RhdGlz dGljX3ZhY3V1bV9kYXRhYmFzZV9yZWdyZXNzaW9uOworICAgIENSRUFURSBFWFRFTlNJT04g ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzOworfSk7CisjIE1haW4gdGVzdCBkYXRhYmFzZSBuYW1l IGFuZCBudW1iZXIgb2Ygcm93cyB0byBpbnNlcnQKK215ICRkYm5hbWUgICA9ICdzdGF0aXN0 aWNfdmFjdXVtX2RhdGFiYXNlX3JlZ3Jlc3Npb24nOworbXkgJHNpemVfdGFiID0gMTAwMDsK KworIyBFbmFibGUgcmVxdWlyZWQgc2Vzc2lvbiBzZXR0aW5ncyBhbmQgZm9yY2UgdGhlIHN0 YXRzIGNvbGxlY3RvciB0byBmbHVzaCBuZXh0Ciskbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUs IHF7CisgICAgU0VUIHRyYWNrX2Z1bmN0aW9ucyA9ICdhbGwnOworICAgIFNFTEVDVCBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK30pOworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisjIENyZWF0ZSB0ZXN0IHRhYmxlIGFuZCBwb3B1bGF0ZSBpdAorIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorCiskbm9kZS0+c2FmZV9wc3FsKAorICAgICRkYm5hbWUsCisgICAg IkNSRUFURSBFWFRFTlNJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzOworICAgICBDUkVBVEUg VEFCTEUgdmVzdGF0ICh4IGludCBQUklNQVJZIEtFWSkKKyAgICAgICAgIFdJVEggKGF1dG92 YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDEwKTsKKyAgICAgSU5TRVJUIElO VE8gdmVzdGF0IFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsICRzaXplX3RhYikg QVMgZyh4KTsKKyAgICAgQU5BTFlaRSB2ZXN0YXQ7IgorKTsKKworIy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIyBUaW1pbmcgcGFyYW1ldGVycyBmb3IgcG9sbGluZyBsb29wcworIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitteSAkdGltZW91dCAgICA9IDMwOyAgICAgIyBv dmVyYWxsIHdhaXQgdGltZW91dCBpbiBzZWNvbmRzCitteSAkaW50ZXJ2YWwgICA9IDAuMDE1 OyAgIyBwb2xsIGludGVydmFsIGluIHNlY29uZHMgKDE1IG1zKQorbXkgJHN0YXJ0X3RpbWUg PSB0aW1lKCk7CitteSAkdXBkYXRlZCAgICA9IDA7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyMgd2FpdF9mb3JfdmFjdXVtX3N0YXRzCisjCisjIFBvbGxzIGV4dF92YWN1dW1f c3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIGFuZCBleHRfdmFjdXVtX3N0YXRp c3RpY3MucGdfc3RhdHNfdmFjdXVtX2luZGV4ZXMgdW50aWwgYm90aCB0aGUKKyMgdGFibGUt bGV2ZWwgYW5kIGluZGV4LWxldmVsIGNvdW50ZXJzIGV4Y2VlZCB0aGUgcHJvdmlkZWQgYmFz ZWxpbmVzLCBvciB1bnRpbAorIyB0aGUgY29uZmlndXJlZCB0aW1lb3V0IGVsYXBzZXMuCisj CisjIEV4cGVjdGVkIG5hbWVkIGFyZ3MgKGJhc2VsaW5lIHZhbHVlcyk6CisjICAgdGFiX3R1 cGxlc19kZWxldGVkCisjICAgdGFiX3dhbF9yZWNvcmRzCisjICAgaWR4X3R1cGxlc19kZWxl dGVkCisjICAgaWR4X3dhbF9yZWNvcmRzCisjCisjIFJldHVybnM6IDEgaWYgdGhlIGNvbmRp dGlvbiBpcyBtZXQgYmVmb3JlIHRpbWVvdXQsIDAgb3RoZXJ3aXNlLgorIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorCitzdWIgd2FpdF9mb3JfdmFjdXVtX3N0YXRzIHsKKyAgICBteSAo JWFyZ3MpID0gQF87CisgICAgbXkgJHRhYl90dXBsZXNfZGVsZXRlZCA9ICgkYXJnc3t0YWJf dHVwbGVzX2RlbGV0ZWR9IG9yIDApOworICAgIG15ICR0YWJfd2FsX3JlY29yZHMgICAgPSAo JGFyZ3N7dGFiX3dhbF9yZWNvcmRzfSBvciAwKTsKKyAgICBteSAkaWR4X3R1cGxlc19kZWxl dGVkID0gKCRhcmdze2lkeF90dXBsZXNfZGVsZXRlZH0gb3IgMCk7CisgICAgbXkgJGlkeF93 YWxfcmVjb3JkcyAgICA9ICgkYXJnc3tpZHhfd2FsX3JlY29yZHN9IG9yIDApOworCisgICAg bXkgJHN0YXJ0ID0gdGltZSgpOworICAgIHdoaWxlICgodGltZSgpIC0gJHN0YXJ0KSA8ICR0 aW1lb3V0KSB7CisKKyAgICAgICAgbXkgJHJlc3VsdF9xdWVyeSA9ICRub2RlLT5zYWZlX3Bz cWwoCisgICAgICAgICAgICAkZGJuYW1lLAorICAgICAgICAgICAgIlZBQ1VVTSB2ZXN0YXQ7 CisgICAgICAgICAgICAgU0VMRUNUCisgICAgICAgICAgICAgICAgKFNFTEVDVCAodHVwbGVz X2RlbGV0ZWQgPiAkdGFiX3R1cGxlc19kZWxldGVkIEFORCB3YWxfcmVjb3JkcyA+ICR0YWJf d2FsX3JlY29yZHMpCisgICAgICAgICAgICAgICAgICBGUk9NIGV4dF92YWN1dW1fc3RhdGlz dGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzCisgICAgICAgICAgICAgICAgICBXSEVSRSBy ZWxuYW1lID0gJ3Zlc3RhdCcpCisgICAgICAgICAgICAgICAgQU5ECisgICAgICAgICAgICAg ICAgKFNFTEVDVCAodHVwbGVzX2RlbGV0ZWQgPiAkaWR4X3R1cGxlc19kZWxldGVkIEFORCB3 YWxfcmVjb3JkcyA+ICRpZHhfd2FsX3JlY29yZHMpCisgICAgICAgICAgICAgICAgICBGUk9N IGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1faW5kZXhlcworICAgICAg ICAgICAgICAgICAgV0hFUkUgaW5kZXhyZWxuYW1lID0gJ3Zlc3RhdF9wa2V5Jyk7IgorICAg ICAgICApOworCisgICAgICAgIHJldHVybiAxIGlmICgkcmVzdWx0X3F1ZXJ5IGVxICd0Jyk7 CisKKyAgICAgICAgc2xlZXAoJGludGVydmFsKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsK K30KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBWYXJpYWJsZXMgdG8gaG9sZCB2 YWN1dW0tc3RhdCBzbmFwc2hvdHMgZm9yIGxhdGVyIGNvbXBhcmlzb25zCisjLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisKK215ICR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgPSAw OworbXkgJHR1cGxlc19kZWxldGVkID0gMDsKK215ICRwYWdlc19zY2FubmVkID0gMDsKK215 ICRwYWdlc19yZW1vdmVkID0gMDsKK215ICR3YWxfcmVjb3JkcyA9IDA7CitteSAkd2FsX2J5 dGVzID0gMDsKK215ICR3YWxfZnBpID0gMDsKKworbXkgJGluZGV4X3R1cGxlc19kZWxldGVk ID0gMDsKK215ICRpbmRleF9wYWdlc19kZWxldGVkID0gMDsKK215ICRpbmRleF93YWxfcmVj b3JkcyA9IDA7CitteSAkaW5kZXhfd2FsX2J5dGVzID0gMDsKK215ICRpbmRleF93YWxfZnBp ID0gMDsKKworbXkgJHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlc19wcmV2ID0gMDsKK215 ICR0dXBsZXNfZGVsZXRlZF9wcmV2ID0gMDsKK215ICRwYWdlc19zY2FubmVkX3ByZXYgPSAw OworbXkgJHBhZ2VzX3JlbW92ZWRfcHJldiA9IDA7CitteSAkd2FsX3JlY29yZHNfcHJldiA9 IDA7CitteSAkd2FsX2J5dGVzX3ByZXYgPSAwOworbXkgJHdhbF9mcGlfcHJldiA9IDA7CisK K215ICRpbmRleF90dXBsZXNfZGVsZXRlZF9wcmV2ID0gMDsKK215ICRpbmRleF9wYWdlc19k ZWxldGVkX3ByZXYgPSAwOworbXkgJGluZGV4X3dhbF9yZWNvcmRzX3ByZXYgPSAwOworbXkg JGluZGV4X3dhbF9ieXRlc19wcmV2ID0gMDsKK215ICRpbmRleF93YWxfZnBpX3ByZXYgPSAw OworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGZldGNoX3ZhY3V1bV9zdGF0cwor IworIyBSZWFkcyBjdXJyZW50IHZhbHVlcyBvZiByZWxldmFudCB2YWN1dW0gY291bnRlcnMg Zm9yIHRoZSB0ZXN0IHRhYmxlIGFuZCBpdHMKKyMgcHJpbWFyeSBpbmRleCwgc3RvcmluZyB0 aGVtIGluIHBhY2thZ2UgdmFyaWFibGVzIGZvciBzdWJzZXF1ZW50IGNvbXBhcmlzb25zLgor Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdWIgZmV0Y2hfdmFjdXVtX3N0YXRzIHsK KyAgICAjIGZldGNoIGFjdHVhbCBiYXNlIHZhY3V1bSBzdGF0aXN0aWNzCisgICAgbXkgJGJh c2Vfc3RhdGlzdGljcyA9ICRub2RlLT5zYWZlX3BzcWwoCisgICAgICAgICRkYm5hbWUsCisg ICAgICAgICJTRUxFQ1Qgdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzLCB0dXBsZXNfZGVs ZXRlZCwgcGFnZXNfc2Nhbm5lZCwgcGFnZXNfcmVtb3ZlZCwgd2FsX3JlY29yZHMsIHdhbF9i eXRlcywgd2FsX2ZwaQorICAgICAgICAgICBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5w Z19zdGF0c192YWN1dW1fdGFibGVzCisgICAgICAgICAgV0hFUkUgcmVsbmFtZSA9ICd2ZXN0 YXQnOyIKKyAgICApOworCisgICAgJGJhc2Vfc3RhdGlzdGljcyA9fiBzL1xzKlx8XHMqLyAv ZzsgICAjIHRyYW5zZm9ybSAiIHwgIiBpbnRvIHNwYWNlCisgICAgKCR2bV9uZXdfdmlzaWJs ZV9mcm96ZW5fcGFnZXMsICR0dXBsZXNfZGVsZXRlZCwgJHBhZ2VzX3NjYW5uZWQsICRwYWdl c19yZW1vdmVkLCAkd2FsX3JlY29yZHMsICR3YWxfYnl0ZXMsICR3YWxfZnBpKQorICAgICAg ICA9IHNwbGl0IC9ccysvLCAkYmFzZV9zdGF0aXN0aWNzOworCisgICAgIyAtLS0gaW5kZXgg c3RhdHMgLS0tCisgICAgbXkgJGluZGV4X2Jhc2Vfc3RhdGlzdGljcyA9ICRub2RlLT5zYWZl X3BzcWwoCisgICAgICAgICRkYm5hbWUsCisgICAgICAgICJTRUxFQ1QgdHVwbGVzX2RlbGV0 ZWQsIHBhZ2VzX2RlbGV0ZWQsIHdhbF9yZWNvcmRzLCB3YWxfYnl0ZXMsIHdhbF9mcGkKKyAg ICAgICAgICAgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX2lu ZGV4ZXMKKyAgICAgICAgICBXSEVSRSBpbmRleHJlbG5hbWUgPSAndmVzdGF0X3BrZXknOyIK KyAgICApOworCisgICAgJGluZGV4X2Jhc2Vfc3RhdGlzdGljcyA9fiBzL1xzKlx8XHMqLyAv ZzsgICAjIHRyYW5zZm9ybSAiIHwgIiBpbnRvIHNwYWNlCisgICAgKCRpbmRleF90dXBsZXNf ZGVsZXRlZCwgJGluZGV4X3BhZ2VzX2RlbGV0ZWQsICRpbmRleF93YWxfcmVjb3JkcywgJGlu ZGV4X3dhbF9ieXRlcywgJGluZGV4X3dhbF9mcGkpCisgICAgICAgID0gc3BsaXQgL1xzKy8s ICRpbmRleF9iYXNlX3N0YXRpc3RpY3M7Cit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyMgc2F2ZV92YWN1dW1fc3RhdHMKKyMKKyMgU2F2ZSBjdXJyZW50IHZhbHVlcyAocHJl dmlvdXNseSBmZXRjaGVkIGJ5IGZldGNoX3ZhY3V1bV9zdGF0cykgc28gdGhhdCB3ZQorIyBs YXRlciBmZXRjaCBuZXcgdmFsdWVzIGFuZCBjb21wYXJlIHRoZW0uCisjLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitzdWIgc2F2ZV92YWN1dW1fc3RhdHMgeworICAgICR2bV9uZXdfdmlz aWJsZV9mcm96ZW5fcGFnZXNfcHJldiA9ICR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXM7 CisgICAgJHR1cGxlc19kZWxldGVkX3ByZXYgPSAkdHVwbGVzX2RlbGV0ZWQ7CisgICAgJHBh Z2VzX3NjYW5uZWRfcHJldiA9ICRwYWdlc19zY2FubmVkOworICAgICRwYWdlc19yZW1vdmVk X3ByZXYgPSAkcGFnZXNfcmVtb3ZlZDsKKyAgICAkd2FsX3JlY29yZHNfcHJldiA9ICR3YWxf cmVjb3JkczsKKyAgICAkd2FsX2J5dGVzX3ByZXYgPSAkd2FsX2J5dGVzOworICAgICR3YWxf ZnBpX3ByZXYgPSAkd2FsX2ZwaTsKKworICAgICRpbmRleF90dXBsZXNfZGVsZXRlZF9wcmV2 ID0gJGluZGV4X3R1cGxlc19kZWxldGVkOworICAgICRpbmRleF9wYWdlc19kZWxldGVkX3By ZXYgPSAkaW5kZXhfcGFnZXNfZGVsZXRlZDsKKyAgICAkaW5kZXhfd2FsX3JlY29yZHNfcHJl diA9ICRpbmRleF93YWxfcmVjb3JkczsKKyAgICAkaW5kZXhfd2FsX2J5dGVzX3ByZXYgPSAk aW5kZXhfd2FsX2J5dGVzOworICAgICRpbmRleF93YWxfZnBpX3ByZXYgPSAkaW5kZXhfd2Fs X2ZwaTsKK30KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBwcmludF92YWN1dW1f c3RhdHNfb25fZXJyb3IKKyMKKyMgUHJpbnQgdmFsdWVzIGluIGNhc2Ugb2YgYW4gZXJyb3IK KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N1YiBwcmludF92YWN1dW1fc3RhdHNfb25f ZXJyb3IgeworICAgIGRpYWcoCisgICAgICAgICAgICAiU3RhdGlzdGljcyBpbiB0aGUgZmFp bGVkIHRlc3RcbiIgLgorICAgICAgICAgICAgIlRhYmxlIHN0YXRpc3RpY3M6XG4iIC4KKyAg ICAgICAgICAgICIgIEJlZm9yZSB0ZXN0OlxuIiAuCisgICAgICAgICAgICAiICAgIHZtX25l d192aXNpYmxlX2Zyb3plbl9wYWdlcyA9ICR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXNf cHJldlxuIiAuCisgICAgICAgICAgICAiICAgIHR1cGxlc19kZWxldGVkICAgID0gJHR1cGxl c19kZWxldGVkX3ByZXZcbiIgLgorICAgICAgICAgICAgIiAgICBwYWdlc19zY2FubmVkICAg ICA9ICRwYWdlc19zY2FubmVkX3ByZXZcbiIgLgorICAgICAgICAgICAgIiAgICBwYWdlc19y ZW1vdmVkICAgICA9ICRwYWdlc19yZW1vdmVkX3ByZXZcbiIgLgorICAgICAgICAgICAgIiAg ICB3YWxfcmVjb3JkcyAgICAgICA9ICR3YWxfcmVjb3Jkc19wcmV2XG4iIC4KKyAgICAgICAg ICAgICIgICAgd2FsX2J5dGVzICAgICAgICAgPSAkd2FsX2J5dGVzX3ByZXZcbiIgLgorICAg ICAgICAgICAgIiAgICB3YWxfZnBpICAgICAgICAgICA9ICR3YWxfZnBpX3ByZXZcbiIgLgor ICAgICAgICAgICAgIiAgQWZ0ZXIgdGVzdDpcbiIgLgorICAgICAgICAgICAgIiAgICB2bV9u ZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgPSAkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2Vz XG4iIC4KKyAgICAgICAgICAgICIgICAgdHVwbGVzX2RlbGV0ZWQgICAgPSAkdHVwbGVzX2Rl bGV0ZWRcbiIgLgorICAgICAgICAgICAgIiAgICBwYWdlc19zY2FubmVkICAgICA9ICRwYWdl c19zY2FubmVkXG4iIC4KKyAgICAgICAgICAgICIgICAgcGFnZXNfcmVtb3ZlZCAgICAgPSAk cGFnZXNfcmVtb3ZlZFxuIiAuCisgICAgICAgICAgICAiICAgIHdhbF9yZWNvcmRzICAgICAg ID0gJHdhbF9yZWNvcmRzXG4iIC4KKyAgICAgICAgICAgICIgICAgd2FsX2J5dGVzICAgICAg ICAgPSAkd2FsX2J5dGVzXG4iIC4KKyAgICAgICAgICAgICIgICAgd2FsX2ZwaSAgICAgICAg ICAgPSAkd2FsX2ZwaVxuIiAuCisgICAgICAgICAgICAiSW5kZXggc3RhdGlzdGljczpcbiIg LgorICAgICAgICAgICAgIiAgIEJlZm9yZSB0ZXN0OlxuIiAuCisgICAgICAgICAgICAiICAg IHR1cGxlc19kZWxldGVkICAgID0gJGluZGV4X3R1cGxlc19kZWxldGVkX3ByZXZcbiIgLgor ICAgICAgICAgICAgIiAgICBwYWdlc19kZWxldGVkICAgICA9ICRpbmRleF9wYWdlc19kZWxl dGVkX3ByZXZcbiIgLgorICAgICAgICAgICAgIiAgICB3YWxfcmVjb3JkcyAgICAgICA9ICRp bmRleF93YWxfcmVjb3Jkc19wcmV2XG4iIC4KKyAgICAgICAgICAgICIgICAgd2FsX2J5dGVz ICAgICAgICAgPSAkaW5kZXhfd2FsX2J5dGVzX3ByZXZcbiIgLgorICAgICAgICAgICAgIiAg ICB3YWxfZnBpICAgICAgICAgICA9ICRpbmRleF93YWxfZnBpX3ByZXZcbiIgLgorICAgICAg ICAgICAgIiAgQWZ0ZXIgdGVzdDpcbiIgLgorICAgICAgICAgICAgIiAgICB0dXBsZXNfZGVs ZXRlZCAgICA9ICRpbmRleF90dXBsZXNfZGVsZXRlZFxuIiAuCisgICAgICAgICAgICAiICAg IHBhZ2VzX2RlbGV0ZWQgICAgID0gJGluZGV4X3BhZ2VzX2RlbGV0ZWRcbiIgLgorICAgICAg ICAgICAgIiAgICB3YWxfcmVjb3JkcyAgICAgICA9ICRpbmRleF93YWxfcmVjb3Jkc1xuIiAu CisgICAgICAgICAgICAiICAgIHdhbF9ieXRlcyAgICAgICAgID0gJGluZGV4X3dhbF9ieXRl c1xuIiAuCisgICAgICAgICAgICAiICAgIHdhbF9mcGkgICAgICAgICAgID0gJGluZGV4X3dh bF9mcGlcbiIKKyAgICApOworfTsKKworc3ViIGZldGNoX2Vycm9yX2Jhc2VfZGJfdmFjdXVt X3N0YXRpc3RpY3MgeworICAgIG15ICglYXJncykgPSBAXzsKKworICAgICMgVmFsaWRhdGUg cHJlc2VuY2Ugb2YgcmVxdWlyZWQgYXJncyAoYWxsb3cgMCBhcyB2YWxpZCBudW1lcmljIGJh c2VsaW5lKQorICAgIGRpZSAiZGF0YWJhc2UgbmFtZSByZXF1aXJlZCIKKyAgICAgIHVubGVz cyBleGlzdHMgJGFyZ3N7ZGF0YWJhc2VfbmFtZX0gJiYgZGVmaW5lZCAkYXJnc3tkYXRhYmFz ZV9uYW1lfTsKKyAgICBteSAkZGF0YWJhc2VfbmFtZSAgICAgICA9ICRhcmdze2RhdGFiYXNl X25hbWV9OworCisgICAgIyBmZXRjaCBhY3R1YWwgYmFzZSBkYXRhYmFzZSB2YWN1dW0gc3Rh dGlzdGljcworICAgIG15ICRiYXNlX3N0YXRpc3RpY3MgPSAkbm9kZS0+c2FmZV9wc3FsKAor ICAgICRkYXRhYmFzZV9uYW1lLAorICAgICJTRUxFQ1QgZGJfYmxrc19oaXQsIGRiX2Jsa3Nf ZGlydGllZCwKKyAgICAgICAgICAgIGRiX2Jsa3Nfd3JpdHRlbiwgZGJfd2FsX3JlY29yZHMs CisgICAgICAgICAgICBkYl93YWxfZnBpLCBkYl93YWxfYnl0ZXMKKyAgICAgICBGUk9NIGV4 dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fZGF0YWJhc2UsIHBnX2RhdGFi YXNlCisgICAgICBXSEVSRSBwZ19kYXRhYmFzZS5kYXRuYW1lID0gJyRkYm5hbWUnCisgICAg ICAgICAgICBBTkQgcGdfZGF0YWJhc2Uub2lkID0gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBn X3N0YXRzX3ZhY3V1bV9kYXRhYmFzZS5kYm9pZDsiCisgICAgKTsKKyAgICAkYmFzZV9zdGF0 aXN0aWNzID1+IHMvXHMqXHxccyovIC9nOyAgICMgdHJhbnNmb3JtICIgfCAiIGluIHNwYWNl CisgICAgbXkgKCRkYl9ibGtzX2hpdCwgJHRvdGFsX2Jsa3NfZGlydGllZCwgJHRvdGFsX2Js a3Nfd3JpdHRlbiwKKyAgICAgICAgJHdhbF9yZWNvcmRzLCAkd2FsX2ZwaSwgJHdhbF9ieXRl cykgPSBzcGxpdCAvXHMrLywgJGJhc2Vfc3RhdGlzdGljczsKKworICAgIGRpYWcoCisgICAg ICAgICAgICAiQkFTRSBTVEFUUyBNSVNNQVRDSCBGT1IgREFUQUJBU0UgJGRibmFtZTpcbiIg LgorICAgICAgICAgICAgIiAgICBkYl9ibGtzX2hpdCAgICAgICAgPSAkZGJfYmxrc19oaXRc biIgLgorICAgICAgICAgICAgIiAgICB0b3RhbF9ibGtzX2RpcnRpZWQgPSAkdG90YWxfYmxr c19kaXJ0aWVkXG4iIC4KKyAgICAgICAgICAgICIgICAgdG90YWxfYmxrc193cml0dGVuID0g JHRvdGFsX2Jsa3Nfd3JpdHRlblxuIiAuCisgICAgICAgICAgICAiICAgIHdhbF9yZWNvcmRz ICAgICAgICA9ICR3YWxfcmVjb3Jkc1xuIiAuCisgICAgICAgICAgICAiICAgIHdhbF9mcGkg ICAgICAgICAgICA9ICR3YWxfZnBpXG4iIC4KKyAgICAgICAgICAgICIgICAgd2FsX2J5dGVz ICAgICAgICAgID0gJHdhbF9ieXRlc1xuIgorICAgICk7Cit9CisKKworIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIyBUZXN0IDE6IERlbGV0ZSBoYWxmIHRoZSByb3dzLCBydW4gVkFD VVVNLCBhbmQgd2FpdCBmb3Igc3RhdHMgdG8gYWR2YW5jZQorIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorc3VidGVzdCAnVGVzdCAxOiBEZWxldGUgaGFsZiB0aGUgcm93cywgcnVuIFZB Q1VVTScgPT4gc3ViCit7CisKKyRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwgIkRFTEVURSBG Uk9NIHZlc3RhdCBXSEVSRSB4ICUgMiA9IDA7Iik7Ciskbm9kZS0+c2FmZV9wc3FsKCRkYm5h bWUsICJWQUNVVU0gdmVzdGF0OyIpOworCisjIFBvbGwgdGhlIHN0YXRzIHZpZXcgdW50aWwg ZXhwZWN0ZWQgZGVsdGFzIGFwcGVhciBvciB0aW1lb3V0CiskdXBkYXRlZCA9IHdhaXRfZm9y X3ZhY3V1bV9zdGF0cygKKyAgICB0YWJfdHVwbGVzX2RlbGV0ZWQgPT4gMCwKKyAgICB0YWJf d2FsX3JlY29yZHMgPT4gMCwKKyAgICBpZHhfdHVwbGVzX2RlbGV0ZWQgPT4gMCwKKyAgICBp ZHhfd2FsX3JlY29yZHMgPT4gMCwKKyk7CitvaygkdXBkYXRlZCwgJ3ZhY3V1bSBzdGF0cyB1 cGRhdGVkIGFmdGVyIHZhY3V1bWluZyBoYWxmLWRlbGV0ZWQgdGFibGUgKHR1cGxlc19kZWxl dGVkIGFuZCB3YWxfZnBpIGFkdmFuY2VkKScpCisgIG9yIGRpYWcgIlRpbWVvdXQgd2FpdGlu ZyBmb3IgZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIHVwZGF0ZSBhZnRlciAkdGltZW91dCBzZWNv bmRzIGFmdGVyIHZhY3V1bWluZyBoYWxmLWRlbGV0ZWQgdGFibGUiOworCitmZXRjaF92YWN1 dW1fc3RhdHMoKTsKKworb2soJHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyA9PSAkdm1f bmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzX3ByZXYsICd0YWJsZSB2bV9uZXdfdmlzaWJsZV9m cm96ZW5fcGFnZXMgc3RheSB0aGUgc2FtZScpOworb2soJHR1cGxlc19kZWxldGVkID4gJHR1 cGxlc19kZWxldGVkX3ByZXYsICd0YWJsZSB0dXBsZXNfZGVsZXRlZCBoYXMgaW5jcmVhc2Vk Jyk7CitvaygkcGFnZXNfc2Nhbm5lZCA+ICRwYWdlc19zY2FubmVkX3ByZXYsICd0YWJsZSBw YWdlc19zY2FubmVkIGhhcyBpbmNyZWFzZWQnKTsKK29rKCRwYWdlc19yZW1vdmVkID09ICRw YWdlc19yZW1vdmVkX3ByZXYsICd0YWJsZSBwYWdlc19yZW1vdmVkIHN0YXkgdGhlIHNhbWUn KTsKK29rKCR3YWxfcmVjb3JkcyA+ICR3YWxfcmVjb3Jkc19wcmV2LCAndGFibGUgd2FsX3Jl Y29yZHMgaGFzIGluY3JlYXNlZCcpOworb2soJHdhbF9ieXRlcyA+ICR3YWxfYnl0ZXNfcHJl diwgJ3RhYmxlIHdhbF9ieXRlcyBoYXMgaW5jcmVhc2VkJyk7Citvaygkd2FsX2ZwaSA+ICR3 YWxfZnBpX3ByZXYsICd0YWJsZSB3YWxfZnBpIGhhcyBpbmNyZWFzZWQnKTsKKworb2soJGlu ZGV4X3BhZ2VzX2RlbGV0ZWQgPT0gJGluZGV4X3BhZ2VzX2RlbGV0ZWRfcHJldiwgJ2luZGV4 IHBhZ2VzX2RlbGV0ZWQgc3RheSB0aGUgc2FtZScpOworb2soJGluZGV4X3R1cGxlc19kZWxl dGVkID4gJGluZGV4X3R1cGxlc19kZWxldGVkX3ByZXYsICdpbmRleCB0dXBsZXNfZGVsZXRl ZCBoYXMgaW5jcmVhc2VkJyk7CitvaygkaW5kZXhfd2FsX3JlY29yZHMgPiAkaW5kZXhfd2Fs X3JlY29yZHNfcHJldiwgJ2luZGV4IHdhbF9yZWNvcmRzIGhhcyBpbmNyZWFzZWQnKTsKK29r KCRpbmRleF93YWxfYnl0ZXMgPiAkaW5kZXhfd2FsX2J5dGVzX3ByZXYsICdpbmRleCB3YWxf Ynl0ZXMgaGFzIGluY3JlYXNlZCcpOworb2soJGluZGV4X3dhbF9mcGkgPT0gJGluZGV4X3dh bF9mcGlfcHJldiwgJ2luZGV4IHdhbF9mcGkgc3RheSB0aGUgc2FtZScpOworCit9IG9yIHBy aW50X3ZhY3V1bV9zdGF0c19vbl9lcnJvcigpOworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisjIFRlc3QgMjogRGVsZXRlIGFsbCByb3dzLCBydW4gVkFDVVVNLCBhbmQgd2FpdCBm b3Igc3RhdHMgdG8gYWR2YW5jZQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc3VidGVz dCAnVGVzdCAyOiBEZWxldGUgYWxsIHJvd3MsIHJ1biBWQUNVVU0nID0+IHN1Ygoreworc2F2 ZV92YWN1dW1fc3RhdHMoKTsKKworJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1lLCAiREVMRVRF IEZST00gdmVzdGF0OyIpOworJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1lLCAiVkFDVVVNIHZl c3RhdDsiKTsKKworJHVwZGF0ZWQgPSB3YWl0X2Zvcl92YWN1dW1fc3RhdHMoCisgICAgdGFi X3R1cGxlc19kZWxldGVkID0+ICR0dXBsZXNfZGVsZXRlZF9wcmV2LAorICAgIHRhYl93YWxf cmVjb3JkcyA9PiAkd2FsX3JlY29yZHNfcHJldiwKKyAgICBpZHhfdHVwbGVzX2RlbGV0ZWQg PT4gJGluZGV4X3R1cGxlc19kZWxldGVkX3ByZXYsCisgICAgaWR4X3dhbF9yZWNvcmRzID0+ ICRpbmRleF93YWxfcmVjb3Jkc19wcmV2LAorKTsKKworb2soJHVwZGF0ZWQsICd2YWN1dW0g c3RhdHMgdXBkYXRlZCBhZnRlciB2YWN1dW1pbmcgYWxsLWRlbGV0ZWQgdGFibGUgKHR1cGxl c19kZWxldGVkIGFuZCB3YWxfcmVjb3JkcyBhZHZhbmNlZCknKQorICBvciBkaWFnICJUaW1l b3V0IHdhaXRpbmcgZm9yIGV4dF92YWN1dW1fc3RhdGlzdGljcyB1cGRhdGUgYWZ0ZXIgJHRp bWVvdXQgc2Vjb25kcyBhZnRlciB2YWN1dW1pbmcgYWxsLWRlbGV0ZWQgdGFibGUiOworCitm ZXRjaF92YWN1dW1fc3RhdHMoKTsKKworb2soJHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdl cyA+ICR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXNfcHJldiwgJ3RhYmxlIHZtX25ld192 aXNpYmxlX2Zyb3plbl9wYWdlcyBoYXMgaW5jcmVhc2VkJyk7CitvaygkdHVwbGVzX2RlbGV0 ZWQgPiAkdHVwbGVzX2RlbGV0ZWRfcHJldiwgJ3RhYmxlIHR1cGxlc19kZWxldGVkIGhhcyBp bmNyZWFzZWQnKTsKK29rKCRwYWdlc19zY2FubmVkID4gJHBhZ2VzX3NjYW5uZWRfcHJldiwg J3RhYmxlIHBhZ2VzX3NjYW5uZWQgaGFzIGluY3JlYXNlZCcpOworb2soJHBhZ2VzX3JlbW92 ZWQgPiAkcGFnZXNfcmVtb3ZlZF9wcmV2LCAndGFibGUgcGFnZXNfcmVtb3ZlZCBoYXMgaW5j cmVhc2VkJyk7Citvaygkd2FsX3JlY29yZHMgPiAkd2FsX3JlY29yZHNfcHJldiwgJ3RhYmxl IHdhbF9yZWNvcmRzIGhhcyBpbmNyZWFzZWQnKTsKK29rKCR3YWxfYnl0ZXMgPiAkd2FsX2J5 dGVzX3ByZXYsICd0YWJsZSB3YWxfYnl0ZXMgaGFzIGluY3JlYXNlZCcpOworb2soJHdhbF9m cGkgPiAwLCAndGFibGUgd2FsX2ZwaSBoYXMgaW5jcmVhc2VkJyk7CisKK29rKCRpbmRleF9w YWdlc19kZWxldGVkID4gJGluZGV4X3BhZ2VzX2RlbGV0ZWRfcHJldiwgJ2luZGV4IHBhZ2Vz X2RlbGV0ZWQgaGFzIGluY3JlYXNlZCcpOworb2soJGluZGV4X3R1cGxlc19kZWxldGVkID4g JGluZGV4X3R1cGxlc19kZWxldGVkX3ByZXYsICdpbmRleCB0dXBsZXNfZGVsZXRlZCBoYXMg aW5jcmVhc2VkJyk7CitvaygkaW5kZXhfd2FsX3JlY29yZHMgPiAkaW5kZXhfd2FsX3JlY29y ZHNfcHJldiwgJ2luZGV4IHdhbF9yZWNvcmRzIGhhcyBpbmNyZWFzZWQnKTsKK29rKCRpbmRl eF93YWxfYnl0ZXMgPiAkaW5kZXhfd2FsX2J5dGVzX3ByZXYsICdpbmRleCB3YWxfYnl0ZXMg aGFzIGluY3JlYXNlZCcpOworb2soJGluZGV4X3dhbF9mcGkgPT0gJGluZGV4X3dhbF9mcGlf cHJldiwgJ2luZGV4IHdhbF9mcGkgc3RheSB0aGUgc2FtZScpOworCit9IG9yIHByaW50X3Zh Y3V1bV9zdGF0c19vbl9lcnJvcigpOworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj IFRlc3QgMzogVGVzdCBWQUNVVU0gRlVMTCDigJQgaXQgc2hvdWxkIG5vdCByZXBvcnQgdG8g dGhlIHN0YXRzIGNvbGxlY3RvcgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc3VidGVz dCAnVGVzdCAzOiBUZXN0IFZBQ1VVTSBGVUxMIOKAlCBpdCBzaG91bGQgbm90IHJlcG9ydCB0 byB0aGUgc3RhdHMgY29sbGVjdG9yJyA9PiBzdWIKK3sKK3NhdmVfdmFjdXVtX3N0YXRzKCk7 CisKKyRub2RlLT5zYWZlX3BzcWwoCisgICAgJGRibmFtZSwKKyAgICAiSU5TRVJUIElOVE8g dmVzdGF0IFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsICRzaXplX3RhYikgQVMg Zyh4KTsKKyAgICAgQ0hFQ0tQT0lOVDsKKyAgICAgREVMRVRFIEZST00gdmVzdGF0OworICAg ICBWQUNVVU0gRlVMTCB2ZXN0YXQ7IgorKTsKKworZmV0Y2hfdmFjdXVtX3N0YXRzKCk7CisK K29rKCR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgPT0gJHZtX25ld192aXNpYmxlX2Zy b3plbl9wYWdlc19wcmV2LCAndGFibGUgdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzIHN0 YXkgdGhlIHNhbWUnKTsKK29rKCR0dXBsZXNfZGVsZXRlZCA9PSAkdHVwbGVzX2RlbGV0ZWRf cHJldiwgJ3RhYmxlIHR1cGxlc19kZWxldGVkIHN0YXkgdGhlIHNhbWUnKTsKK29rKCRwYWdl c19zY2FubmVkID09ICRwYWdlc19zY2FubmVkX3ByZXYsICd0YWJsZSBwYWdlc19zY2FubmVk IHN0YXkgdGhlIHNhbWUnKTsKK29rKCRwYWdlc19yZW1vdmVkID09ICRwYWdlc19yZW1vdmVk X3ByZXYsICd0YWJsZSBwYWdlc19yZW1vdmVkIHN0YXkgdGhlIHNhbWUnKTsKK29rKCR3YWxf cmVjb3JkcyA9PSAkd2FsX3JlY29yZHNfcHJldiwgJ3RhYmxlIHdhbF9yZWNvcmRzIHN0YXkg dGhlIHNhbWUnKTsKK29rKCR3YWxfYnl0ZXMgPT0gJHdhbF9ieXRlc19wcmV2LCAndGFibGUg d2FsX2J5dGVzIHN0YXkgdGhlIHNhbWUnKTsKK29rKCR3YWxfZnBpID09ICR3YWxfZnBpX3By ZXYsICd0YWJsZSB3YWxfZnBpIHN0YXkgdGhlIHNhbWUnKTsKKworb2soJGluZGV4X3BhZ2Vz X2RlbGV0ZWQgPT0gJGluZGV4X3BhZ2VzX2RlbGV0ZWRfcHJldiwgJ2luZGV4IHBhZ2VzX2Rl bGV0ZWQgc3RheSB0aGUgc2FtZScpOworb2soJGluZGV4X3R1cGxlc19kZWxldGVkID09ICRp bmRleF90dXBsZXNfZGVsZXRlZF9wcmV2LCAnaW5kZXggdHVwbGVzX2RlbGV0ZWQgc3RheSB0 aGUgc2FtZScpOworb2soJGluZGV4X3dhbF9yZWNvcmRzID09ICRpbmRleF93YWxfcmVjb3Jk c19wcmV2LCAnaW5kZXggd2FsX3JlY29yZHMgc3RheSB0aGUgc2FtZScpOworb2soJGluZGV4 X3dhbF9ieXRlcyA9PSAkaW5kZXhfd2FsX2J5dGVzX3ByZXYsICdpbmRleCB3YWxfYnl0ZXMg c3RheSB0aGUgc2FtZScpOworb2soJGluZGV4X3dhbF9mcGkgPT0gJGluZGV4X3dhbF9mcGlf cHJldiwgJ2luZGV4IHdhbF9mcGkgc3RheSB0aGUgc2FtZScpOworCit9IG9yIHByaW50X3Zh Y3V1bV9zdGF0c19vbl9lcnJvcigpOworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj IFRlc3QgNDogVXBkYXRlIHRhYmxlLCBjaGVja3BvaW50LCBhbmQgVkFDVVVNIHRvIHByb3Zv a2UgV0FML0ZQSSBhY2NvdW50aW5nCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWJ0 ZXN0ICdUZXN0IDQ6IFVwZGF0ZSB0YWJsZSwgY2hlY2twb2ludCwgYW5kIFZBQ1VVTSB0byBw cm92b2tlIFdBTC9GUEkgYWNjb3VudGluZycgPT4gc3ViCit7CisKK3NhdmVfdmFjdXVtX3N0 YXRzKCk7CisKKyRub2RlLT5zYWZlX3BzcWwoCisgICAgJGRibmFtZSwKKyAgICAiSU5TRVJU IElOVE8gdmVzdGF0IFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsICRzaXplX3Rh YikgQVMgZyh4KTsKKyAgICAgQ0hFQ0tQT0lOVDsKKyAgICAgVVBEQVRFIHZlc3RhdCBTRVQg eCA9IHggKyAxMDAwOworICAgICBWQUNVVU0gdmVzdGF0OyIKKyk7CisKKyR1cGRhdGVkID0g d2FpdF9mb3JfdmFjdXVtX3N0YXRzKAorICAgIHRhYl90dXBsZXNfZGVsZXRlZCA9PiAkdHVw bGVzX2RlbGV0ZWRfcHJldiwKKyAgICB0YWJfd2FsX3JlY29yZHMgPT4gJHdhbF9yZWNvcmRz X3ByZXYsCisgICAgaWR4X3R1cGxlc19kZWxldGVkID0+ICRpbmRleF90dXBsZXNfZGVsZXRl ZF9wcmV2LAorICAgIGlkeF93YWxfcmVjb3JkcyA9PiAkaW5kZXhfd2FsX3JlY29yZHNfcHJl diwKKyk7CisKK29rKCR1cGRhdGVkLCAndmFjdXVtIHN0YXRzIHVwZGF0ZWQgYWZ0ZXIgdXBk YXRpbmcgdHVwbGVzIGluIHRoZSB0YWJsZSAodHVwbGVzX2RlbGV0ZWQgYW5kIHdhbF9yZWNv cmRzIGFkdmFuY2VkKScpCisgIG9yIGRpYWcgIlRpbWVvdXQgd2FpdGluZyBmb3IgZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzIHVwZGF0ZSBhZnRlciAkdGltZW91dCBzZWNvbmRzIjsKKworZmV0 Y2hfdmFjdXVtX3N0YXRzKCk7CisKK29rKCR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMg PT0gJHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlc19wcmV2LCAndGFibGUgdm1fbmV3X3Zp c2libGVfZnJvemVuX3BhZ2VzIHN0YXkgdGhlIHNhbWUnKTsKK29rKCR0dXBsZXNfZGVsZXRl ZCA+ICR0dXBsZXNfZGVsZXRlZF9wcmV2LCAndGFibGUgdHVwbGVzX2RlbGV0ZWQgaGFzIGlu Y3JlYXNlZCcpOworb2soJHBhZ2VzX3NjYW5uZWQgPiAkcGFnZXNfc2Nhbm5lZF9wcmV2LCAn dGFibGUgcGFnZXNfc2Nhbm5lZCBoYXMgaW5jcmVhc2VkJyk7CitvaygkcGFnZXNfcmVtb3Zl ZCA9PSAkcGFnZXNfcmVtb3ZlZF9wcmV2LCAndGFibGUgcGFnZXNfcmVtb3ZlZCBzdGF5IHRo ZSBzYW1lJyk7Citvaygkd2FsX3JlY29yZHMgPiAkd2FsX3JlY29yZHNfcHJldiwgJ3RhYmxl IHdhbF9yZWNvcmRzIGhhcyBpbmNyZWFzZWQnKTsKK29rKCR3YWxfYnl0ZXMgPiAkd2FsX2J5 dGVzX3ByZXYsICd0YWJsZSB3YWxfYnl0ZXMgaGFzIGluY3JlYXNlZCcpOworb2soJHdhbF9m cGkgPiAkd2FsX2ZwaV9wcmV2LCAndGFibGUgd2FsX2ZwaSBoYXMgaW5jcmVhc2VkJyk7CisK K29rKCRpbmRleF9wYWdlc19kZWxldGVkID4gJGluZGV4X3BhZ2VzX2RlbGV0ZWRfcHJldiwg J2luZGV4IHBhZ2VzX2RlbGV0ZWQgaGFzIGluY3JlYXNlZCcpOworb2soJGluZGV4X3R1cGxl c19kZWxldGVkID4gJGluZGV4X3R1cGxlc19kZWxldGVkX3ByZXYsICdpbmRleCB0dXBsZXNf ZGVsZXRlZCBoYXMgaW5jcmVhc2VkJyk7CitvaygkaW5kZXhfd2FsX3JlY29yZHMgPiAkaW5k ZXhfd2FsX3JlY29yZHNfcHJldiwgJ2luZGV4IHdhbF9yZWNvcmRzIGhhcyBpbmNyZWFzZWQn KTsKK29rKCRpbmRleF93YWxfYnl0ZXMgPiAkaW5kZXhfd2FsX2J5dGVzX3ByZXYsICdpbmRl eCB3YWxfYnl0ZXMgaGFzIGluY3JlYXNlZCcpOworb2soJGluZGV4X3dhbF9mcGkgPiAkaW5k ZXhfd2FsX2ZwaV9wcmV2LCAnaW5kZXggd2FsX2ZwaSBoYXMgaW5jcmVhc2VkJyk7CisKK30g b3IgcHJpbnRfdmFjdXVtX3N0YXRzX29uX2Vycm9yKCk7CisKKyMtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyMgVGVzdCA1OiBVcGRhdGUgdGFibGUsIHRyYW5jYXRlIGFuZCB2YWN1dW1p bmcKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N1YnRlc3QgJ1Rlc3QgNTogVXBkYXRl IHRhYmxlLCB0cmFuY2F0ZSBhbmQgdmFjdXVtaW5nJyA9PiBzdWIKK3sKKworc2F2ZV92YWN1 dW1fc3RhdHMoKTsKKworJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAkZGJuYW1lLAorICAgICJJ TlNFUlQgSU5UTyB2ZXN0YXQgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJHNp emVfdGFiKSBBUyBnKHgpOworICAgICBVUERBVEUgdmVzdGF0IFNFVCB4ID0geCArIDEwMDA7 IgorKTsKKyRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwgIlRSVU5DQVRFIHZlc3RhdDsiKTsK KyRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwgIkNIRUNLUE9JTlQ7Iik7Ciskbm9kZS0+c2Fm ZV9wc3FsKCRkYm5hbWUsICJWQUNVVU0gdmVzdGF0OyIpOworCiskdXBkYXRlZCA9IHdhaXRf Zm9yX3ZhY3V1bV9zdGF0cygKKyAgICB0YWJfd2FsX3JlY29yZHMgPT4gJHdhbF9yZWNvcmRz X3ByZXYsCispOworCitvaygkdXBkYXRlZCwgJ3ZhY3V1bSBzdGF0cyB1cGRhdGVkIGFmdGVy IHVwZGF0aW5nIHR1cGxlcyBhbmQgdHJhbmNhdGlvbiBpbiB0aGUgdGFibGUgKHdhbF9yZWNv cmRzIGFkdmFuY2VkKScpCisgIG9yIGRpYWcgIlRpbWVvdXQgd2FpdGluZyBmb3IgZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzIHVwZGF0ZSBhZnRlciAkdGltZW91dCBzZWNvbmRzIjsKKworZmV0 Y2hfdmFjdXVtX3N0YXRzKCk7CisKK29rKCR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMg PT0gJHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlc19wcmV2LCAndGFibGUgdm1fbmV3X3Zp c2libGVfZnJvemVuX3BhZ2VzIHN0YXkgdGhlIHNhbWUnKTsKK29rKCR0dXBsZXNfZGVsZXRl ZCA9PSAkdHVwbGVzX2RlbGV0ZWRfcHJldiwgJ3RhYmxlIHR1cGxlc19kZWxldGVkIHN0YXkg dGhlIHNhbWUnKTsKK29rKCRwYWdlc19zY2FubmVkID09ICRwYWdlc19zY2FubmVkX3ByZXYs ICd0YWJsZSBwYWdlc19zY2FubmVkIHN0YXkgdGhlIHNhbWUnKTsKK29rKCRwYWdlc19yZW1v dmVkID09ICRwYWdlc19yZW1vdmVkX3ByZXYsICd0YWJsZSBwYWdlc19yZW1vdmVkIHN0YXkg dGhlIHNhbWUnKTsKK29rKCR3YWxfcmVjb3JkcyA+ICR3YWxfcmVjb3Jkc19wcmV2LCAndGFi bGUgd2FsX3JlY29yZHMgaGFzIGluY3JlYXNlZCcpOworb2soJHdhbF9ieXRlcyA+ICR3YWxf Ynl0ZXNfcHJldiwgJ3RhYmxlIHdhbF9ieXRlcyBoYXMgaW5jcmVhc2VkJyk7Citvaygkd2Fs X2ZwaSA9PSAkd2FsX2ZwaV9wcmV2LCAndGFibGUgd2FsX2ZwaSBzdGF5IHRoZSBzYW1lJyk7 CisKK29rKCRpbmRleF9wYWdlc19kZWxldGVkID09ICRpbmRleF9wYWdlc19kZWxldGVkX3By ZXYsICdpbmRleCBwYWdlc19kZWxldGVkIHN0YXkgdGhlIHNhbWUnKTsKK29rKCRpbmRleF90 dXBsZXNfZGVsZXRlZCA9PSAkaW5kZXhfdHVwbGVzX2RlbGV0ZWRfcHJldiwgJ2luZGV4IHR1 cGxlc19kZWxldGVkIHN0YXkgdGhlIHNhbWUnKTsKK29rKCRpbmRleF93YWxfcmVjb3JkcyA9 PSAkaW5kZXhfd2FsX3JlY29yZHNfcHJldiwgJ2luZGV4IHdhbF9yZWNvcmRzIHN0YXkgdGhl IHNhbWUnKTsKK29rKCRpbmRleF93YWxfYnl0ZXMgPT0gJGluZGV4X3dhbF9ieXRlc19wcmV2 LCAnaW5kZXggd2FsX2J5dGVzIHN0YXkgdGhlIHNhbWUnKTsKK29rKCRpbmRleF93YWxfZnBp ID09ICRpbmRleF93YWxfZnBpX3ByZXYsICdpbmRleCB3YWxfZnBpIHN0YXkgdGhlIHNhbWUn KTsKKworfSBvciBwcmludF92YWN1dW1fc3RhdHNfb25fZXJyb3IoKTsKKworIy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0IDY6IERlbGV0ZSBhbGwgdHVwbGVzIGZyb20gdGFi bGUsIHRyYW5jYXRlLCBhbmQgdmFjdXVtaW5nCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitzdWJ0ZXN0ICdUZXN0IDY6IERlbGV0ZSBhbGwgdHVwbGVzIGZyb20gdGFibGUsIHRyYW5j YXRlLCBhbmQgdmFjdXVtaW5nJyA9PiBzdWIKK3sKKworc2F2ZV92YWN1dW1fc3RhdHMoKTsK KworJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAkZGJuYW1lLAorICAgICJJTlNFUlQgSU5UTyB2 ZXN0YXQgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJHNpemVfdGFiKSBBUyBn KHgpOworICAgICBERUxFVEUgRlJPTSB2ZXN0YXQ7CisgICAgIFRSVU5DQVRFIHZlc3RhdDsK KyAgICAgQ0hFQ0tQT0lOVDsKKyAgICAgVkFDVVVNIHZlc3RhdDsiCispOworCiskdXBkYXRl ZCA9IHdhaXRfZm9yX3ZhY3V1bV9zdGF0cygKKyAgICB0YWJfd2FsX3JlY29yZHMgPT4gJHdh bF9yZWNvcmRzLAorKTsKKworb2soJHVwZGF0ZWQsICd2YWN1dW0gc3RhdHMgdXBkYXRlZCBh ZnRlciBkZWxldGluZyBhbGwgdHVwbGVzIGFuZCB0cmFuY2F0aW9uIGluIHRoZSB0YWJsZSAo d2FsX3JlY29yZHMgYWR2YW5jZWQpJykKKyAgb3IgZGlhZyAiVGltZW91dCB3YWl0aW5nIGZv ciBleHRfdmFjdXVtX3N0YXRpc3RpY3MgdXBkYXRlIGFmdGVyICR0aW1lb3V0IHNlY29uZHMi OworCitmZXRjaF92YWN1dW1fc3RhdHMoKTsKKworb2soJHZtX25ld192aXNpYmxlX2Zyb3pl bl9wYWdlcyA9PSAkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzX3ByZXYsICd0YWJsZSB2 bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgc3RheSB0aGUgc2FtZScpOworb2soJHR1cGxl c19kZWxldGVkID09ICR0dXBsZXNfZGVsZXRlZF9wcmV2LCAndGFibGUgdHVwbGVzX2RlbGV0 ZWQgc3RheSB0aGUgc2FtZScpOworb2soJHBhZ2VzX3NjYW5uZWQgPT0gJHBhZ2VzX3NjYW5u ZWRfcHJldiwgJ3RhYmxlIHBhZ2VzX3NjYW5uZWQgc3RheSB0aGUgc2FtZScpOworb2soJHBh Z2VzX3JlbW92ZWQgPT0gJHBhZ2VzX3JlbW92ZWRfcHJldiwgJ3RhYmxlIHBhZ2VzX3JlbW92 ZWQgc3RheSB0aGUgc2FtZScpOworb2soJHdhbF9yZWNvcmRzID4gJHdhbF9yZWNvcmRzX3By ZXYsICd0YWJsZSB3YWxfcmVjb3JkcyBoYXMgaW5jcmVhc2VkJyk7Citvaygkd2FsX2J5dGVz ID4gJHdhbF9ieXRlc19wcmV2LCAndGFibGUgd2FsX2J5dGVzIGhhcyBpbmNyZWFzZWQnKTsK K29rKCR3YWxfZnBpID09ICR3YWxfZnBpX3ByZXYsICd0YWJsZSB3YWxfZnBpIHN0YXkgdGhl IHNhbWUnKTsKKworb2soJGluZGV4X3BhZ2VzX2RlbGV0ZWQgPT0gJGluZGV4X3BhZ2VzX2Rl bGV0ZWRfcHJldiwgJ2luZGV4IHBhZ2VzX2RlbGV0ZWQgc3RheSB0aGUgc2FtZScpOworb2so JGluZGV4X3R1cGxlc19kZWxldGVkID09ICRpbmRleF90dXBsZXNfZGVsZXRlZF9wcmV2LCAn aW5kZXggdHVwbGVzX2RlbGV0ZWQgc3RheSB0aGUgc2FtZScpOworb2soJGluZGV4X3dhbF9y ZWNvcmRzID09ICRpbmRleF93YWxfcmVjb3Jkc19wcmV2LCAnaW5kZXggd2FsX3JlY29yZHMg c3RheSB0aGUgc2FtZScpOworb2soJGluZGV4X3dhbF9ieXRlcyA9PSAkaW5kZXhfd2FsX2J5 dGVzX3ByZXYsICdpbmRleCB3YWxfYnl0ZXMgc3RheSB0aGUgc2FtZScpOworb2soJGluZGV4 X3dhbF9mcGkgPT0gJGluZGV4X3dhbF9mcGlfcHJldiwgJ2luZGV4IHdhbF9mcGkgc3RheSB0 aGUgc2FtZScpOworCit9IG9yIHByaW50X3ZhY3V1bV9zdGF0c19vbl9lcnJvcigpOworCitt eSAkZGJvaWQgPSAkbm9kZS0+c2FmZV9wc3FsKAorICAgICRkYm5hbWUsCisgICAgIlNFTEVD VCBvaWQgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gY3VycmVudF9kYXRhYmFz ZSgpOyIKKyk7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisjIFRlc3QgNzogQ2hlY2sgaWYgd2UgcmV0dXJuIHNpbmdsZSB2YWN1dW0g c3RhdGlzdGljcyBmb3IgcGFydGljdWxhciByZWxhdGlvbiBmcm9tIHRoZSBjdXJyZW50IGRh dGFiYXNlCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorc3VidGVzdCAnVGVzdCA3OiBDaGVjayBpZiB3ZSByZXR1cm4gdmFjdXVtIHN0YXRp c3RpY3MgZnJvbSB0aGUgY3VycmVudCBkYXRhYmFzZScgPT4gc3ViCit7CitzYXZlX3ZhY3V1 bV9zdGF0cygpOworCitteSAkcmVsb2lkID0gJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAkZGJu YW1lLAorICAgIHF7CisgICAgICAgIFNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBXSEVSRSBy ZWxuYW1lID0gJ3Zlc3RhdCc7CisgICAgfQorKTsKKworIyBDaGVjayBpZiB3ZSBjYW4gZ2V0 IHZhY3V1bSBzdGF0aXN0aWNzIG9mIHBhcnRpY3VsYXIgaGVhcCByZWxhdGlvbiBpbiB0aGUg Y3VycmVudCBkYXRhYmFzZQorJGJhc2Vfc3RhdHMgPSAkbm9kZS0+c2FmZV9wc3FsKAorICAg ICRkYm5hbWUsCisgICAgIlNFTEVDVCBjb3VudCgqKSBGUk9NIGV4dF92YWN1dW1fc3RhdGlz dGljcy5wZ19zdGF0c19nZXRfdmFjdXVtX3RhYmxlcygoU0VMRUNUIG9pZCBGUk9NIHBnX2Rh dGFiYXNlIFdIRVJFIGRhdG5hbWUgPSBjdXJyZW50X2RhdGFiYXNlKCkpLCAkcmVsb2lkKTsi CispOworaXMoJGJhc2Vfc3RhdHMsIDEsICdoZWFwIHZhY3V1bSBzdGF0cyByZXR1cm4gZnJv bSB0aGUgY3VycmVudCByZWxhdGlvbiBhbmQgZGF0YWJhc2UgYXMgZXhwZWN0ZWQnKTsKKwor JHJlbG9pZCA9ICRub2RlLT5zYWZlX3BzcWwoCisgICAgJGRibmFtZSwKKyAgICBxeworICAg ICAgICBTRUxFQ1Qgb2lkIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICd2ZXN0YXRf cGtleSc7CisgICAgfQorKTsKKworIyBDaGVjayBpZiB3ZSBjYW4gZ2V0IHZhY3V1bSBzdGF0 aXN0aWNzIG9mIHBhcnRpY3VsYXIgaW5kZXggcmVsYXRpb24gaW4gdGhlIGN1cnJlbnQgZGF0 YWJhc2UKKyRiYXNlX3N0YXRzID0gJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAkZGJuYW1lLAor ICAgICJTRUxFQ1QgY291bnQoKikgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3Rh dHNfZ2V0X3ZhY3V1bV9pbmRleGVzKChTRUxFQ1Qgb2lkIEZST00gcGdfZGF0YWJhc2UgV0hF UkUgZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSksICRyZWxvaWQpOyIKKyk7Citpcygk YmFzZV9zdGF0cywgMSwgJ2luZGV4IHZhY3V1bSBzdGF0cyByZXR1cm4gZnJvbSB0aGUgY3Vy cmVudCByZWxhdGlvbiBhbmQgZGF0YWJhc2UgYXMgZXhwZWN0ZWQnKTsKKworIyBDaGVjayBp ZiB3ZSByZXR1cm4gZW1wdHkgcmVzdWx0cyBpZiB2YWN1dW0gc3RhdGlzdGljcyB3aXRoIHBh cnRpY3VsYXIgb2lkIGRvZXNuJ3QgZXhpc3QKKyRiYXNlX3N0YXRzID0gJG5vZGUtPnNhZmVf cHNxbCgKKyAgICAkZGJuYW1lLAorICAgICJTRUxFQ1QgY291bnQoKikgRlJPTSBleHRfdmFj dXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfZ2V0X3ZhY3V1bV90YWJsZXMoKFNFTEVDVCBvaWQg RlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpKSwg MSk7IgorKTsKK2lzKCRiYXNlX3N0YXRzLCAwLCAndGFibGUgdmFjdXVtIHN0YXRzIHJldHVy biBubyByb3dzLCBhcyBleHBlY3RlZCcpOworCiskYmFzZV9zdGF0cyA9ICRub2RlLT5zYWZl X3BzcWwoCisgICAgJGRibmFtZSwKKyAgICAiU0VMRUNUIGNvdW50KCopIEZST00gZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX2dldF92YWN1dW1faW5kZXhlcygoU0VMRUNUIG9p ZCBGUk9NIHBnX2RhdGFiYXNlIFdIRVJFIGRhdG5hbWUgPSBjdXJyZW50X2RhdGFiYXNlKCkp LCAxKTsiCispOworaXMoJGJhc2Vfc3RhdHMsIDAsICdpbmRleCB2YWN1dW0gc3RhdHMgcmV0 dXJuIG5vIHJvd3MsIGFzIGV4cGVjdGVkJyk7CisKKyMgQ2hlY2sgaWYgd2UgY2FuIGdldCB2 YWN1dW0gc3RhdGlzdGljcyBvZiBhbGwgcmVsYXRpb25zIGluIHRoZSBjdXJyZW50IGRhdGFi YXNlCiskYmFzZV9zdGF0cyA9ICRub2RlLT5zYWZlX3BzcWwoCisgICAgJGRibmFtZSwKKyAg ICAiU0VMRUNUIGNvdW50KCopID4gMCBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19z dGF0c192YWN1dW1fdGFibGVzOyIKKyk7CitvaygkYmFzZV9zdGF0cyBlcSAndCcsICd2YWN1 dW0gc3RhdHMgcGVyIGFsbCBoZWFwIG9iamVjdHMgYXZhaWxhYmxlJyk7CisKKyRiYXNlX3N0 YXRzID0gJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAkZGJuYW1lLAorICAgICJTRUxFQ1QgY291 bnQoKikgPiAwIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9p bmRleGVzOyIKKyk7CitvaygkYmFzZV9zdGF0cyBlcSAndCcsICd2YWN1dW0gc3RhdHMgcGVy IGFsbCBpbmRleCBvYmplY3RzIGF2YWlsYWJsZScpOworfTsKKworIy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIyBUZXN0IDg6IENoZWNrIHJlbGF0aW9uLWxldmVsIHZhY3V1bSBzdGF0 aXN0aWNzIGZyb20gYW5vdGhlciBkYXRhYmFzZQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorc3VidGVzdCAnVGVzdCA4OiBDaGVjayByZWxhdGlvbi1sZXZlbCB2YWN1dW0gc3RhdGlz dGljcyBmcm9tIGFub3RoZXIgZGF0YWJhc2UnID0+IHN1YgoreworJGJhc2Vfc3RhdHMgPSAk bm9kZS0+c2FmZV9wc3FsKAorICAgICdwb3N0Z3JlcycsCisgICAgIlNFTEVDVCBjb3VudCgq KQorICAgIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9pbmRl eGVzCisgICAgV0hFUkUgaW5kZXhyZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JzsiCispOworaXMo JGJhc2Vfc3RhdHMsIDAsICdjaGVjayB0aGUgcHJpbnRpbmcgaW5kZXggdmFjdXVtIGV4dGVu ZGVkIHN0YXRpc3RpY3MgZnJvbSBhbm90aGVyIGRhdGFiYXNlIGFyZSBub3QgYXZhaWxhYmxl Jyk7CisKKyRiYXNlX3N0YXRzID0gJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAncG9zdGdyZXMn LAorICAgICJTRUxFQ1QgY291bnQoKikKKyAgICBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGlj cy5wZ19zdGF0c192YWN1dW1fdGFibGVzCisgICAgV0hFUkUgcmVsbmFtZSA9ICd2ZXN0YXQn OyIKKyk7CitpcygkYmFzZV9zdGF0cywgMCwgJ2NoZWNrIHRoZSBwcmludGluZyBoZWFwIHZh Y3V1bSBleHRlbmRlZCBzdGF0aXN0aWNzIGZyb20gYW5vdGhlciBkYXRhYmFzZSBhcmUgbm90 IGF2YWlsYWJsZScpOworCisjIENoZWNrIHRoYXQgcmVsYXRpb25zIGZyb20gYW5vdGhlciBk YXRhYmFzZSBhcmUgbm90IHZpc2libGUgaW4gdGhlIHZpZXcgd2hlbiBxdWVyeWluZyBmcm9t IHBvc3RncmVzCiskYmFzZV9zdGF0cyA9ICRub2RlLT5zYWZlX3BzcWwoCisgICAgJ3Bvc3Rn cmVzJywKKyAgICAiU0VMRUNUIGNvdW50KCopIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNz LnBnX3N0YXRzX3ZhY3V1bV90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICd2ZXN0YXQnOyIKKyk7 CitpcygkYmFzZV9zdGF0cywgMCwgJ3ZhY3V1bSBzdGF0cyBwZXIgYWxsIHRhYmxlcyBvYmpl Y3RzIGZyb20gYW5vdGhlciBkYXRhYmFzZSBhcmUgbm90IGF2YWlsYWJsZSBhcyBleHBlY3Rl ZCcpOworCiskYmFzZV9zdGF0cyA9ICRub2RlLT5zYWZlX3BzcWwoCisgICAgJ3Bvc3RncmVz JywKKyAgICAiU0VMRUNUIGNvdW50KCopIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBn X3N0YXRzX3ZhY3V1bV9pbmRleGVzIFdIRVJFIGluZGV4cmVsbmFtZSA9ICd2ZXN0YXRfcGtl eSc7IgorKTsKK2lzKCRiYXNlX3N0YXRzLCAwLCAndmFjdXVtIHN0YXRzIHBlciBhbGwgaW5k ZXggb2JqZWN0cyBmcm9tIGFub3RoZXIgZGF0YWJhc2UgYXJlIG5vdCBhdmFpbGFibGUgYXMg ZXhwZWN0ZWQnKTsKK307CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IyBUZXN0IDk6IENoZWNrIGRhdGFiYXNlLWxldmVsIHZhY3V1bSBzdGF0aXN0aWNzIGZyb20g dGhlIGN1cnJlbnQgYW5kIGFub3RoZXIgZGF0YWJhc2UKKyMtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorc3VidGVzdCAnVGVzdCA5OiBDaGVjayBkYXRhYmFzZS1sZXZlbCB2 YWN1dW0gc3RhdGlzdGljcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBhbm90aGVyIGRhdGFiYXNl JyA9PiBzdWIKK3sKK215ICRkYl9ibGtfaGl0ID0gMDsKK215ICR0b3RhbF9ibGtzX2RpcnRp ZWQgPSAwOworbXkgJHRvdGFsX2Jsa3Nfd3JpdHRlbiA9IDA7CitteSAkd2FsX3JlY29yZHMg PSAwOworbXkgJHdhbF9mcGkgPSAwOworbXkgJHdhbF9ieXRlcyA9IDA7CiskYmFzZV9zdGF0 cyA9ICRub2RlLT5zYWZlX3BzcWwoCisgICAgJGRibmFtZSwKKyAgICAiU0VMRUNUIGRiX2Js a3NfaGl0LCBkYl9ibGtzX2RpcnRpZWQsCisgICAgICAgICAgICBkYl9ibGtzX3dyaXR0ZW4s IGRiX3dhbF9yZWNvcmRzLAorICAgICAgICAgICAgZGJfd2FsX2ZwaSwgZGJfd2FsX2J5dGVz CisgICAgIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9kYXRh YmFzZSwgcGdfZGF0YWJhc2UKKyAgICAgV0hFUkUgcGdfZGF0YWJhc2UuZGF0bmFtZSA9ICck ZGJuYW1lJworICAgICAgICAgICAgQU5EIHBnX2RhdGFiYXNlLm9pZCA9IGV4dF92YWN1dW1f c3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fZGF0YWJhc2UuZGJvaWQ7IgorKTsKKyRiYXNl X3N0YXRzID1+IHMvXHMqXHxccyovIC9nOyAgICMgdHJhbnNmb3JtICIgfCAiIGludG8gc3Bh Y2UKKyAgICAoJGRiX2Jsa19oaXQsICR0b3RhbF9ibGtzX2RpcnRpZWQsICR0b3RhbF9ibGtz X3dyaXR0ZW4sICR3YWxfcmVjb3JkcywgJHdhbF9mcGksICR3YWxfYnl0ZXMpCisgICAgICAg ID0gc3BsaXQgL1xzKy8sICRiYXNlX3N0YXRzOworCitvaygkZGJfYmxrX2hpdCA+IDAsICdk Yl9ibGtzX2hpdCBpcyBtb3JlIHRoYW4gMCcpOworb2soJHRvdGFsX2Jsa3NfZGlydGllZCA+ IDAsICd0b3RhbF9ibGtzX2RpcnRpZWQgaXMgbW9yZSB0aGFuIDAnKTsKK29rKCR0b3RhbF9i bGtzX3dyaXR0ZW4gPiAwLCAndG90YWxfYmxrc193cml0dGVuIGlzIG1vcmUgdGhhbiAwJyk7 Citvaygkd2FsX3JlY29yZHMgPiAwLCAnd2FsX3JlY29yZHMgaXMgbW9yZSB0aGFuIDAnKTsK K29rKCR3YWxfZnBpID4gMCwgJ3dhbF9mcGkgaXMgbW9yZSB0aGFuIDAnKTsKK29rKCR3YWxf Ynl0ZXMgPiAwLCAnd2FsX2J5dGVzIGlzIG1vcmUgdGhhbiAwJyk7CisKKyRiYXNlX3N0YXRz ID0gJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAncG9zdGdyZXMnLAorICAgICJTRUxFQ1QgY291 bnQoKikgPSAxCisgICAgIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3Zh Y3V1bV9kYXRhYmFzZSwgcGdfZGF0YWJhc2UKKyAgICAgV0hFUkUgcGdfZGF0YWJhc2UuZGF0 bmFtZSA9ICckZGJuYW1lJworICAgICAgICAgICAgQU5EIHBnX2RhdGFiYXNlLm9pZCA9IGV4 dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fZGF0YWJhc2UuZGJvaWQ7Igor KTsKK29rKCRiYXNlX3N0YXRzIGVxICd0JywgJ2NoZWNrIGRhdGFiYXNlLWxldmVsIHZhY3V1 bSBzdGF0cyBmcm9tIGFub3RoZXIgZGF0YWJhc2UgYXJlIGF2YWlsYWJsZScpOworfTsKKwor Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0IDEwOiBDbGVhbnVwIGNoZWNrczog ZW5zdXJlIGZ1bmN0aW9ucyByZXR1cm4gZW1wdHkgc2V0cyBmb3IgT0lEID0gMAorIy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorc3VidGVzdCAnVGVzdCAxMDogQ2xlYW51cCBjaGVja3M6 IGVuc3VyZSBmdW5jdGlvbnMgcmV0dXJuIGVtcHR5IHNldHMgZm9yIE9JRCA9IDAnID0+IHN1 YgoreworbXkgJGRib2lkID0gJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAkZGJuYW1lLAorICAg ICJTRUxFQ1Qgb2lkIEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFtZSA9IGN1cnJlbnRf ZGF0YWJhc2UoKTsiCispOworCisjIFZhY3V1bSBzdGF0aXN0aWNzIGZvciBpbnZhbGlkIHJl bGF0aW9uIE9JRCByZXR1cm4gZW1wdHkKKyRiYXNlX3N0YXRzID0gJG5vZGUtPnNhZmVfcHNx bCgKKyAgICAkZGJuYW1lLAorICAgIHF7CisgICAgICAgU0VMRUNUIENPVU5UKCopCisgICAg ICAgICBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c19nZXRfdmFjdXVtX3Rh YmxlcygoU0VMRUNUIG9pZCBGUk9NIHBnX2RhdGFiYXNlIFdIRVJFIGRhdG5hbWUgPSBjdXJy ZW50X2RhdGFiYXNlKCkpLCAwKTsKKyAgICB9CispOworaXMoJGJhc2Vfc3RhdHMsIDAsICd2 YWN1dW0gc3RhdHMgcGVyIGhlYXAgZnJvbSBpbnZhbGlkIHJlbGF0aW9uIE9JRCByZXR1cm4g ZW1wdHkgYXMgZXhwZWN0ZWQnKTsKKworJGJhc2Vfc3RhdHMgPSAkbm9kZS0+c2FmZV9wc3Fs KAorICAgICRkYm5hbWUsCisgICAgcXsKKyAgICAgICBTRUxFQ1QgQ09VTlQoKikKKyAgICAg ICAgIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX2dldF92YWN1dW1faW5k ZXhlcygoU0VMRUNUIG9pZCBGUk9NIHBnX2RhdGFiYXNlIFdIRVJFIGRhdG5hbWUgPSBjdXJy ZW50X2RhdGFiYXNlKCkpLCAwKTsKKyAgICB9CispOworaXMoJGJhc2Vfc3RhdHMsIDAsICd2 YWN1dW0gc3RhdHMgcGVyIGluZGV4IGZyb20gaW52YWxpZCByZWxhdGlvbiBPSUQgcmV0dXJu IGVtcHR5IGFzIGV4cGVjdGVkJyk7CisKKyRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwgcXsK KyAgICBEUk9QIFRBQkxFIHZlc3RhdCBDQVNDQURFOworICAgIFZBQ1VVTTsKK30pOworCisj IENoZWNrIHRoYXQgd2UgZG9uJ3QgcHJpbnQgdmFjdXVtIHN0YXRpc3RpY3MgZm9yIGRlbGV0 ZWQgb2JqZWN0cworJGJhc2Vfc3RhdHMgPSAkbm9kZS0+c2FmZV9wc3FsKAorICAgICRkYm5h bWUsCisgICAgcXsKKyAgICAgICAgU0VMRUNUIENPVU5UKCopCisgICAgICAgICAgRlJPTSBl eHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX3RhYmxlcyBXSEVSRSByZWxp ZCA9IDA7CisgICAgfQorKTsKK2lzKCRiYXNlX3N0YXRzLCAwLCAnZXh0X3ZhY3V1bV9zdGF0 aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV90YWJsZXMgY29ycmVjdGx5IHJldHVybnMgbm8gcm93 cyBmb3IgT0lEID0gMCcpOworCiskYmFzZV9zdGF0cyA9ICRub2RlLT5zYWZlX3BzcWwoCisg ICAgJGRibmFtZSwKKyAgICBxeworICAgICAgICBTRUxFQ1QgQ09VTlQoKikKKyAgICAgICAg ICBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1faW5kZXhlcyBX SEVSRSBpbmRleHJlbGlkID0gMDsKKyAgICB9CispOworaXMoJGJhc2Vfc3RhdHMsIDAsICdl eHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX2luZGV4ZXMgY29ycmVjdGx5 IHJldHVybnMgbm8gcm93cyBmb3IgT0lEID0gMCcpOworCitteSAkcmVsb2lkID0gJG5vZGUt PnNhZmVfcHNxbCgKKyAgICAkZGJuYW1lLAorICAgIHF7CisgICAgICAgIFNFTEVDVCBvaWQg RlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnX3NoZGVwZW5kJzsKKyAgICB9Cisp OworCiskbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsICJWQUNVVU0gcGdfc2hkZXBlbmQ7Iik7 CisKKyMgQ2hlY2sgaWYgd2UgY2FuIGdldCB2YWN1dW0gc3RhdGlzdGljcyBmb3IgY2x1c3Rl ciByZWxhdGlvbnMgKHNoYXJlZCBjYXRhbG9ncykKKyRiYXNlX3N0YXRzID0gJG5vZGUtPnNh ZmVfcHNxbCgKKyAgICAkZGJuYW1lLAorICAgIHFxeworICAgICAgICBTRUxFQ1QgY291bnQo KikgPiAwCisgICAgICAgIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX2dl dF92YWN1dW1fdGFibGVzKChTRUxFQ1Qgb2lkIEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0 bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSksICRyZWxvaWQpOworICAgIH0KKyk7CisKK2lz KCRiYXNlX3N0YXRzLCAndCcsICd2YWN1dW0gc3RhdHMgZm9yIGNvbW1vbiBoZWFwIG9iamVj dHMgYXZhaWxhYmxlJyk7CisKK215ICRpbmRvaWQgPSAkbm9kZS0+c2FmZV9wc3FsKAorICAg ICRkYm5hbWUsCisgICAgcXsKKyAgICAgICAgU0VMRUNUIG9pZCBGUk9NIHBnX2NsYXNzIFdI RVJFIHJlbG5hbWUgPSAncGdfc2hkZXBlbmRfcmVmZXJlbmNlX2luZGV4JzsKKyAgICB9Cisp OworCiskYmFzZV9zdGF0cyA9ICRub2RlLT5zYWZlX3BzcWwoCisgICAgJGRibmFtZSwKKyAg ICBxcXsKKyAgICAgICAgU0VMRUNUIGNvdW50KCopID4gMAorICAgICAgICBGUk9NIGV4dF92 YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c19nZXRfdmFjdXVtX2luZGV4ZXMoKFNFTEVDVCBv aWQgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgp KSwgJGluZG9pZCk7CisgICAgfQorKTsKKworaXMoJGJhc2Vfc3RhdHMsICd0JywgJ3ZhY3V1 bSBzdGF0cyBmb3IgY29tbW9uIGluZGV4IG9iamVjdHMgYXZhaWxhYmxlJyk7CisKKyRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAiRFJPUCBEQVRBQkFTRSAkZGJuYW1lOwor ICAgICBWQUNVVU07IgorKTsKKworJGJhc2Vfc3RhdHMgPSAkbm9kZS0+c2FmZV9wc3FsKAor ICAgICdwb3N0Z3JlcycsCisgICAgcXsKKyAgICAgICBTRUxFQ1QgY291bnQoKikgPSAwCisg ICAgICAgIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX2dldF92YWN1dW1f ZGF0YWJhc2UoMCk7CisgICAgfQorKTsKK2lzKCRiYXNlX3N0YXRzLCAndCcsICd2YWN1dW0g c3RhdHMgZnJvbSBkYXRhYmFzZSB3aXRoIGludmFsaWQgZGF0YWJhc2UgT0lEIHJldHVybiBl bXB0eSwgYXMgZXhwZWN0ZWQnKTsKK307CisKKyRub2RlLT5zdG9wOworCitkb25lX3Rlc3Rp bmcoKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3QvMDUz X3ZhY3V1bV9leHRlbmRpbmdfZnJlZXplX3Rlc3QucGwgYi9jb250cmliL2V4dF92YWN1dW1f c3RhdGlzdGljcy90LzA1M192YWN1dW1fZXh0ZW5kaW5nX2ZyZWV6ZV90ZXN0LnBsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wYmE1MmY3OTg4ZgotLS0gL2Rl di9udWxsCisrKyBiL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3QvMDUzX3ZhY3V1 bV9leHRlbmRpbmdfZnJlZXplX3Rlc3QucGwKQEAgLTAsMCArMSwyODUgQEAKKyMgQ29weXJp Z2h0IChjKSAyMDI1IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisjCisj IFRlc3QgY3VtdWxhdGl2ZSB2YWN1dW0gc3RhdHMgdXNpbmcgZXh0X3ZhY3V1bV9zdGF0aXN0 aWNzIGV4dGVuc2lvbiAoVEFQKQorIworIyBJbiBzaG9ydCwgdGhpcyB0ZXN0IHZhbGlkYXRl cyB0aGUgY29ycmVjdG5lc3MgYW5kIHN0YWJpbGl0eSBvZiBjdW11bGF0aXZlCisjIHZhY3V1 bSBzdGF0aXN0aWNzIGFjY291bnRpbmcgYXJvdW5kIGZyZWV6aW5nLCB2aXNpYmlsaXR5LCBh bmQgcmV2aXNpb24KKyMgdHJhY2tpbmcgYWNyb3NzIG11bHRpcGxlIFZBQ1VVTXMgYW5kIGJh Y2tlbmQgb3BlcmF0aW9ucy4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz OwordXNlIFRlc3Q6Ok1vcmU7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVz dCBjbHVzdGVyIHNldHVwCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK215ICRub2Rl ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdleHRfc3RhdF92YWN1dW0nKTsK KyRub2RlLT5pbml0OworCisjIENvbmZpZ3VyZSB0aGUgc2VydmVyOiBwcmVsb2FkIGV4dGVu c2lvbiBhbmQgYWdncmVzc2l2ZSBmcmVlemluZyBiZWhhdmlvcgorJG5vZGUtPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxeworICAgIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmll cyA9ICdleHRfdmFjdXVtX3N0YXRpc3RpY3MnCisgICAgbG9nX21pbl9tZXNzYWdlcyA9IG5v dGljZQorICAgIHZhY3V1bV9mcmVlemVfbWluX2FnZSA9IDAKKyAgICB2YWN1dW1fZnJlZXpl X3RhYmxlX2FnZSA9IDAKKyAgICB2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlID0g MAorICAgIHZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZSA9IDAKKyAgICB2YWN1 dW1fbWF4X2VhZ2VyX2ZyZWV6ZV9mYWlsdXJlX3JhdGUgPSAxLjAKKyAgICB2YWN1dW1fZmFp bHNhZmVfYWdlID0gMAorICAgIHZhY3V1bV9tdWx0aXhhY3RfZmFpbHNhZmVfYWdlID0gMAor ICAgIHRyYWNrX2Z1bmN0aW9ucyA9ICdhbGwnCit9KTsKKworJG5vZGUtPnN0YXJ0KCk7CisK KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGF0YWJhc2UgY3JlYXRpb24gYW5kIGlu aXRpYWxpemF0aW9uCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXsKKyAgICBDUkVBVEUgREFUQUJBU0Ugc3RhdGlzdGljX3Zh Y3V1bV9kYXRhYmFzZV9yZWdyZXNzaW9uOworfSk7CisKKyMgTWFpbiB0ZXN0IGRhdGFiYXNl IG5hbWUKK215ICRkYm5hbWUgPSAnc3RhdGlzdGljX3ZhY3V1bV9kYXRhYmFzZV9yZWdyZXNz aW9uJzsKKworIyBDcmVhdGUgZXh0ZW5zaW9uCiskbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUs IHF7CisgICAgQ1JFQVRFIEVYVEVOU0lPTiBleHRfdmFjdXVtX3N0YXRpc3RpY3M7Cit9KTsK KworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUaW1pbmcgcGFyYW1ldGVycyBmb3Ig cG9sbGluZyBsb29wcworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitteSAkdGltZW91 dCAgICA9IDMwOyAgICAgIyBvdmVyYWxsIHdhaXQgdGltZW91dCBpbiBzZWNvbmRzCitteSAk aW50ZXJ2YWwgICA9IDAuMDE1OyAgIyBwb2xsIGludGVydmFsIGluIHNlY29uZHMgKDE1IG1z KQorbXkgJHN0YXJ0X3RpbWUgPSB0aW1lKCk7CitteSAkdXBkYXRlZCAgICA9IDA7CisKKyMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgd2FpdF9mb3JfdmFjdXVtX3N0YXRzCisjCisj IFBvbGxzIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIHVu dGlsIHRoZSBuYW1lZCBjb2x1bW5zIGV4Y2VlZCB0aGUKKyMgcHJvdmlkZWQgYmFzZWxpbmUg dmFsdWVzIG9yIHVudGlsIHRpbWVvdXQuCisjCisjICAgdGFiX2FsbF9mcm96ZW5fcGFnZXNf Y291bnQgID0+IDAgICAjIGJhc2VsaW5lIG51bWVyaWMKKyMgICB0YWJfYWxsX3Zpc2libGVf cGFnZXNfY291bnQgPT4gMCAgICMgYmFzZWxpbmUgbnVtZXJpYworIyAgIHJ1bl92YWN1dW0g ICAgICAgICAgICAgICAgICA9PiAwICAgIyBpZiB0cnVlLCBydW4gdmFjdXVtIGJlZm9yZSBw b2xsaW5nCisjCisjIFJldHVybnM6IDEgaWYgdGhlIGNvbmRpdGlvbiBpcyBtZXQgYmVmb3Jl IHRpbWVvdXQsIDAgb3RoZXJ3aXNlLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc3Vi IHdhaXRfZm9yX3ZhY3V1bV9zdGF0cyB7CisgICAgbXkgKCVhcmdzKSA9IEBfOworCisgICAg bXkgJHRhYl9hbGxfZnJvemVuX3BhZ2VzX2NvdW50ICA9ICRhcmdze3RhYl9hbGxfZnJvemVu X3BhZ2VzX2NvdW50fSB8fCAwOworICAgIG15ICR0YWJfYWxsX3Zpc2libGVfcGFnZXNfY291 bnQgPSAkYXJnc3t0YWJfYWxsX3Zpc2libGVfcGFnZXNfY291bnR9IHx8IDA7CisgICAgbXkg JHJ1bl92YWN1dW0gICAgICAgICAgICAgICAgICA9ICRhcmdze3J1bl92YWN1dW19ID8gMSA6 IDA7CisgICAgbXkgJHJlc3VsdF9xdWVyeTsKKworICAgIG15ICRzdGFydCA9IHRpbWUoKTsK KyAgICBteSAkc3FsOworCisgICAgIyBSdW4gVkFDVVVNIG9uY2UgaWYgcmVxdWVzdGVkLCBi ZWZvcmUgcG9sbGluZworICAgIGlmICgkcnVuX3ZhY3V1bSkgeworICAgICAgICAkbm9kZS0+ c2FmZV9wc3FsKCRkYm5hbWUsICdWQUNVVU0gKEZSRUVaRSwgVkVSQk9TRSkgdmVzdGF0Jyk7 CisgICAgfQorCisgICAgd2hpbGUgKCh0aW1lKCkgLSAkc3RhcnQpIDwgJHRpbWVvdXQpIHsK KworICAgICAgICBpZiAoJHJ1bl92YWN1dW0pIHsKKyAgICAgICAgICAgICRzcWwgPSAiCisg ICAgICAgICAgICBTRUxFQ1QgKHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyA+ICR0YWJf YWxsX2Zyb3plbl9wYWdlc19jb3VudCkKKyAgICAgICAgICAgICAgIEZST00gZXh0X3ZhY3V1 bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV90YWJsZXMKKyAgICAgICAgICAgICAgV0hF UkUgcmVsbmFtZSA9ICd2ZXN0YXQnIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg ICAgICAgICAgICRzcWwgPSAiCisgICAgICAgICAgICBTRUxFQ1QgKHBnX3N0YXRfZ2V0X3Jl dl9hbGxfZnJvemVuX3BhZ2VzKGMub2lkKSA+ICR0YWJfYWxsX2Zyb3plbl9wYWdlc19jb3Vu dCBBTkQKKyAgICAgICAgICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3Jldl9hbGxfdmlzaWJs ZV9wYWdlcyhjLm9pZCkgPiAkdGFiX2FsbF92aXNpYmxlX3BhZ2VzX2NvdW50KQorICAgICAg ICAgICAgICAgRlJPTSBwZ19jbGFzcyBjCisgICAgICAgICAgICAgIFdIRVJFIHJlbG5hbWUg PSAndmVzdGF0JyI7CisgICAgICAgIH0KKworICAgICAgICAkcmVzdWx0X3F1ZXJ5ID0gJG5v ZGUtPnNhZmVfcHNxbCgkZGJuYW1lLCAkc3FsKTsKKworICAgICAgICByZXR1cm4gMSBpZiAo ZGVmaW5lZCAkcmVzdWx0X3F1ZXJ5ICYmICRyZXN1bHRfcXVlcnkgZXEgJ3QnKTsKKworICAg ICAgICBzbGVlcCgkaW50ZXJ2YWwpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisj LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFZhcmlhYmxlcyB0byBob2xkIHZhY3V1bSBz dGF0aXN0aWNzIHNuYXBzaG90cyBmb3IgY29tcGFyaXNvbnMKKyMtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKworbXkgJHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyA9IDA7CisKK215 ICRyZXZfYWxsX2Zyb3plbl9wYWdlcyA9IDA7CitteSAkcmV2X2FsbF92aXNpYmxlX3BhZ2Vz ID0gMDsKKworbXkgJHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlc19wcmV2ID0gMDsKKwor bXkgJHJldl9hbGxfZnJvemVuX3BhZ2VzX3ByZXYgPSAwOworbXkgJHJldl9hbGxfdmlzaWJs ZV9wYWdlc19wcmV2ID0gMDsKKworbXkgJHJlczsKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIyBmZXRjaF92YWN1dW1fc3RhdHMKKyMKKyMgTG9hZHMgY3VycmVudCB2YWx1ZXMg b2YgdGhlIHJlbGV2YW50IHZhY3V1bSBjb3VudGVycyBmb3IgdGhlIHRlc3QgdGFibGUKKyMg aW50byB0aGUgcGFja2FnZS1sZXZlbCB2YXJpYWJsZXMgYWJvdmUgc28gdGVzdHMgY2FuIGNv bXBhcmUgbGF0ZXIuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YiBmZXRjaF92 YWN1dW1fc3RhdHMgeworICAgICR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgPSAkbm9k ZS0+c2FmZV9wc3FsKAorICAgICAgICAkZGJuYW1lLAorICAgICAgICAiU0VMRUNUIHZ0LnZt X25ld192aXNpYmxlX2Zyb3plbl9wYWdlcworICAgICAgICAgICBGUk9NIGV4dF92YWN1dW1f c3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIHZ0CisgICAgICAgICAgV0hFUkUg dnQucmVsbmFtZSA9ICd2ZXN0YXQnOyIKKyAgICApOworCisgICAgJHJldl9hbGxfZnJvemVu X3BhZ2VzID0gJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAgICAgJGRibmFtZSwKKyAgICAgICAg IlNFTEVDVCBwZ19zdGF0X2dldF9yZXZfYWxsX2Zyb3plbl9wYWdlcyhjLm9pZCkKKyAgICAg ICAgICAgRlJPTSBwZ19jbGFzcyBjCisgICAgICAgICAgV0hFUkUgYy5yZWxuYW1lID0gJ3Zl c3RhdCc7IgorICAgICk7CisKKyAgICAkcmV2X2FsbF92aXNpYmxlX3BhZ2VzID0gJG5vZGUt PnNhZmVfcHNxbCgKKyAgICAgICAgJGRibmFtZSwKKyAgICAgICAgIlNFTEVDVCBwZ19zdGF0 X2dldF9yZXZfYWxsX3Zpc2libGVfcGFnZXMoYy5vaWQpCisgICAgICAgICAgIEZST00gcGdf Y2xhc3MgYworICAgICAgICAgIFdIRVJFIGMucmVsbmFtZSA9ICd2ZXN0YXQnOyIKKyAgICAp OworfQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIHNhdmVfdmFjdXVtX3N0YXRz CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWIgc2F2ZV92YWN1dW1fc3RhdHMgewor ICAgICR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXNfcHJldiA9ICR2bV9uZXdfdmlzaWJs ZV9mcm96ZW5fcGFnZXM7CisgICAgJHJldl9hbGxfZnJvemVuX3BhZ2VzX3ByZXYgPSAkcmV2 X2FsbF9mcm96ZW5fcGFnZXM7CisgICAgJHJldl9hbGxfdmlzaWJsZV9wYWdlc19wcmV2ID0g JHJldl9hbGxfdmlzaWJsZV9wYWdlczsKK30KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIyBwcmludF92YWN1dW1fc3RhdHNfb25fZXJyb3IKKyMtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK3N1YiBwcmludF92YWN1dW1fc3RhdHNfb25fZXJyb3IgeworICAgIGRpYWcoCisg ICAgICAgICAgICAiU3RhdGlzdGljcyBpbiB0aGUgZmFpbGVkIHRlc3RcbiIgLgorICAgICAg ICAgICAgIlRhYmxlIHN0YXRpc3RpY3M6XG4iIC4KKyAgICAgICAgICAgICIgIEJlZm9yZSB0 ZXN0OlxuIiAuCisgICAgICAgICAgICAiICAgIHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdl cyA9ICR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXNfcHJldlxuIiAuCisgICAgICAgICAg ICAiICAgIHJldl9hbGxfZnJvemVuX3BhZ2VzID0gJHJldl9hbGxfZnJvemVuX3BhZ2VzX3By ZXZcbiIgLgorICAgICAgICAgICAgIiAgICByZXZfYWxsX3Zpc2libGVfcGFnZXMgPSAkcmV2 X2FsbF92aXNpYmxlX3BhZ2VzX3ByZXZcbiIgLgorICAgICAgICAgICAgIiAgQWZ0ZXIgdGVz dDpcbiIgLgorICAgICAgICAgICAgIiAgICB2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMg PSAkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzXG4iIC4KKyAgICAgICAgICAgICIgICAg cmV2X2FsbF9mcm96ZW5fcGFnZXMgPSAkcmV2X2FsbF9mcm96ZW5fcGFnZXNcbiIgLgorICAg ICAgICAgICAgIiAgICByZXZfYWxsX3Zpc2libGVfcGFnZXMgPSAkcmV2X2FsbF92aXNpYmxl X3BhZ2VzXG4iCisgICAgKTsKK307CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg VGVzdCAxOiBDcmVhdGUgdGVzdCB0YWJsZSwgcG9wdWxhdGUgaXQgYW5kIHJ1biBhbiBpbml0 aWFsIHZhY3V1bSB0byBmb3JjZSBmcmVlemluZworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorCitzdWJ0ZXN0ICdUZXN0IDE6IENyZWF0ZSB0ZXN0IHRhYmxlLCBwb3B1bGF0ZSBpdCBh bmQgcnVuIGFuIGluaXRpYWwgdmFjdXVtIHRvIGZvcmNlIGZyZWV6aW5nJyA9PiBzdWIKK3sK KyRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwgcXsKKyAgICBDUkVBVEUgVEFCTEUgdmVzdGF0 ICh4IGludCkKKyAgICAgICAgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxs ZmFjdG9yID0gMTApOworICAgIElOU0VSVCBJTlRPIHZlc3RhdCBTRUxFQ1QgeCBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyBnKHgpOworICAgIEFOQUxZWkUgdmVzdGF0Owor ICAgIFZBQ1VVTSAoRlJFRVpFLCBWRVJCT1NFKSB2ZXN0YXQ7Cit9KTsKKworJHVwZGF0ZWQg PSB3YWl0X2Zvcl92YWN1dW1fc3RhdHMoCisgICAgdGFiX2FsbF9mcm96ZW5fcGFnZXNfY291 bnQgID0+IDAsCisgICAgdGFiX2FsbF92aXNpYmxlX3BhZ2VzX2NvdW50ID0+IDAsCisgICAg cnVuX3ZhY3V1bSAgICAgICAgICAgICAgICAgID0+IDEsCispOworCitvaygkdXBkYXRlZCwK KyAgICd2YWN1dW0gc3RhdHMgdXBkYXRlZCBhZnRlciB2YWN1dW1pbmcgdGhlIHRhYmxlICh2 bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgYWR2YW5jZWQpJykKKyAgb3IgZGlhZyAiVGlt ZW91dCB3YWl0aW5nIGZvciBleHRfdmFjdXVtX3N0YXRpc3RpY3MgdG8gdXBkYXRlIGFmdGVy ICR0aW1lb3V0IHNlY29uZHMgZHVyaW5nIHZhY3V1bSI7CisKK2ZldGNoX3ZhY3V1bV9zdGF0 cygpOworCitvaygkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzID4gJHZtX25ld192aXNp YmxlX2Zyb3plbl9wYWdlc19wcmV2LCAndGFibGUgdm1fbmV3X3Zpc2libGVfZnJvemVuX3Bh Z2VzIGhhcyBpbmNyZWFzZWQnKTsKK29rKCRyZXZfYWxsX2Zyb3plbl9wYWdlcyA9PSAkcmV2 X2FsbF9mcm96ZW5fcGFnZXNfcHJldiwgJ3RhYmxlIHJldl9hbGxfZnJvemVuX3BhZ2VzIHN0 YXkgdGhlIHNhbWUnKTsKK29rKCRyZXZfYWxsX3Zpc2libGVfcGFnZXMgPT0gJHJldl9hbGxf dmlzaWJsZV9wYWdlc19wcmV2LCAndGFibGUgcmV2X2FsbF92aXNpYmxlX3BhZ2VzIHN0YXkg dGhlIHNhbWUnKTsKK30gb3IgcHJpbnRfdmFjdXVtX3N0YXRzX29uX2Vycm9yKCk7CisKKyMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdCAyOiBUcmlnZ2VyIGJhY2tlbmQgdXBk YXRlcworIyBCYWNrZW5kIGFjdGl2aXR5IHNob3VsZCByZXNldCBwZXItcGFnZSB2aXNpYmls aXR5L2ZyZWV6ZSBtYXJrcyBhbmQgaW5jcmVtZW50IHJldmlzaW9uIGNvdW50ZXJzCisjLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWJ0ZXN0ICdUZXN0IDI6IFRyaWdnZXIgYmFja2Vu ZCB1cGRhdGVzJyA9PiBzdWIKK3sKK3NhdmVfdmFjdXVtX3N0YXRzKCk7CisKKyRub2RlLT5z YWZlX3BzcWwoJGRibmFtZSwgcXsKKyAgICBVUERBVEUgdmVzdGF0IFNFVCB4ID0geCArIDEw MDE7Cit9KTsKKworJHVwZGF0ZWQgPSB3YWl0X2Zvcl92YWN1dW1fc3RhdHMoCisgICAgdGFi X2FsbF9mcm96ZW5fcGFnZXNfY291bnQgID0+IDAsCisgICAgdGFiX2FsbF92aXNpYmxlX3Bh Z2VzX2NvdW50ID0+IDAsCisgICAgcnVuX3ZhY3V1bSAgICAgICAgICAgICAgICAgID0+IDAs CispOworCitvaygkdXBkYXRlZCwKKyAgICd2YWN1dW0gc3RhdHMgdXBkYXRlZCBhZnRlciBi YWNrZW5kIHR1cGxlIHVwZGF0ZXMgKHJldl9hbGxfZnJvemVuX3BhZ2VzIGFuZCByZXZfYWxs X3Zpc2libGVfcGFnZXMgYWR2YW5jZWQpJykKKyAgb3IgZGlhZyAiVGltZW91dCB3YWl0aW5n IGZvciB2YWN1dW0gc3RhdHMgdXBkYXRlIGFmdGVyICR0aW1lb3V0IHNlY29uZHMiOworCitm ZXRjaF92YWN1dW1fc3RhdHMoKTsKKworb2soJHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdl cyA9PSAkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzX3ByZXYsICd0YWJsZSB2bV9uZXdf dmlzaWJsZV9mcm96ZW5fcGFnZXMgc3RheSB0aGUgc2FtZScpOworb2soJHJldl9hbGxfZnJv emVuX3BhZ2VzID4gJHJldl9hbGxfZnJvemVuX3BhZ2VzX3ByZXYsICd0YWJsZSByZXZfYWxs X2Zyb3plbl9wYWdlcyBoYXMgaW5jcmVhc2VkJyk7CitvaygkcmV2X2FsbF92aXNpYmxlX3Bh Z2VzID4gJHJldl9hbGxfdmlzaWJsZV9wYWdlc19wcmV2LCAndGFibGUgcmV2X2FsbF92aXNp YmxlX3BhZ2VzIGhhcyBpbmNyZWFzZWQnKTsKK30gb3IgcHJpbnRfdmFjdXVtX3N0YXRzX29u X2Vycm9yKCk7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdCAzOiBGb3Jj ZSBhbm90aGVyIHZhY3V1bSBhZnRlciBiYWNrZW5kIG1vZGlmaWNhdGlvbnMgLSB2YWN1dW0g c2hvdWxkIHJlc3RvcmUgZnJlZXplL3Zpc2liaWxpdHkKKyMtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK3N1YnRlc3QgJ1Rlc3QgMzogRm9yY2UgYW5vdGhlciB2YWN1dW0gYWZ0ZXIgYmFj a2VuZCBtb2RpZmljYXRpb25zIC0gdmFjdXVtIHNob3VsZCByZXN0b3JlIGZyZWV6ZS92aXNp YmlsaXR5JyA9PiBzdWIKK3sKK3NhdmVfdmFjdXVtX3N0YXRzKCk7CisKKyRub2RlLT5zYWZl X3BzcWwoJGRibmFtZSwgcXsgVkFDVVVNIHZlc3RhdDsgfSk7CisKKyR1cGRhdGVkID0gd2Fp dF9mb3JfdmFjdXVtX3N0YXRzKAorICAgIHRhYl9hbGxfZnJvemVuX3BhZ2VzX2NvdW50ICA9 PiAkdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzLAorICAgIHRhYl9hbGxfdmlzaWJsZV9w YWdlc19jb3VudCA9PiAwLAorICAgIHJ1bl92YWN1dW0gICAgICAgICAgICAgICAgICA9PiAx LAorKTsKKworb2soJHVwZGF0ZWQsCisgICAndmFjdXVtIHN0YXRzIHVwZGF0ZWQgYWZ0ZXIg dmFjdXVtaW5nIHRoZSBhbGwtdXBkYXRlZCB0YWJsZSAodm1fbmV3X3Zpc2libGVfZnJvemVu X3BhZ2VzIGFkdmFuY2VkKScpCisgIG9yIGRpYWcgIlRpbWVvdXQgd2FpdGluZyBmb3IgZXh0 X3ZhY3V1bV9zdGF0aXN0aWNzIHRvIHVwZGF0ZSBhZnRlciAkdGltZW91dCBzZWNvbmRzIGR1 cmluZyB2YWN1dW0iOworCitmZXRjaF92YWN1dW1fc3RhdHMoKTsKKworb2soJHZtX25ld192 aXNpYmxlX2Zyb3plbl9wYWdlcyA+ICR2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXNfcHJl diwgJ3RhYmxlIHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyBoYXMgaW5jcmVhc2VkJyk7 CitvaygkcmV2X2FsbF9mcm96ZW5fcGFnZXMgPT0gJHJldl9hbGxfZnJvemVuX3BhZ2VzX3By ZXYsICd0YWJsZSByZXZfYWxsX2Zyb3plbl9wYWdlcyBzdGF5IHRoZSBzYW1lJyk7Citvaygk cmV2X2FsbF92aXNpYmxlX3BhZ2VzID09ICRyZXZfYWxsX3Zpc2libGVfcGFnZXNfcHJldiwg J3RhYmxlIHJldl9hbGxfdmlzaWJsZV9wYWdlcyBzdGF5IHRoZSBzYW1lJyk7Cit9IG9yIHBy aW50X3ZhY3V1bV9zdGF0c19vbl9lcnJvcigpOworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisjIENsZWFudXAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCBxeworICAgIERST1AgREFUQUJBU0Ugc3RhdGlzdGljX3Zh Y3V1bV9kYXRhYmFzZV9yZWdyZXNzaW9uOworfSk7CisKKyRub2RlLT5zdG9wOworZG9uZV90 ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9jb250cmliL2V4dF92YWN1dW1fc3RhdGlzdGljcy90 LzA1NF92YWN1dW1fZXh0ZW5kaW5nX2d1Y3NfdGVzdC5wbCBiL2NvbnRyaWIvZXh0X3ZhY3V1 bV9zdGF0aXN0aWNzL3QvMDU0X3ZhY3V1bV9leHRlbmRpbmdfZ3Vjc190ZXN0LnBsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iOGQ1YmYzMGVjZgotLS0gL2Rl di9udWxsCisrKyBiL2NvbnRyaWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3QvMDU0X3ZhY3V1 bV9leHRlbmRpbmdfZ3Vjc190ZXN0LnBsCkBAIC0wLDAgKzEsMjAzIEBACisjIENvcHlyaWdo dCAoYykgMjAyNSBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorIworIyBU ZXN0IEdVQyBwYXJhbWV0ZXJzIGZvciBleHRfdmFjdXVtX3N0YXRpc3RpY3MgZXh0ZW5zaW9u OgorIyAgIHZhY3V1bV9zdGF0aXN0aWNzLmVuYWJsZWQKKyMgICB2YWN1dW1fc3RhdGlzdGlj cy5vYmplY3RfdHlwZXMgKGFsbCwgZGF0YWJhc2VzLCByZWxhdGlvbnMpCisjICAgdmFjdXVt X3N0YXRpc3RpY3MudHJhY2tfcmVsYXRpb25zIChhbGwsIHN5c3RlbSwgdXNlcikKKyMgICB2 YWN1dW1fc3RhdGlzdGljcy50cmFja19kYXRhYmFzZXNfZnJvbV9saXN0LCBhZGQvcmVtb3Zl X3RyYWNrX2RhdGFiYXNlCisjICAgYWRkL3JlbW92ZV90cmFja19kYXRhYmFzZSwgYWRkL3Jl bW92ZV90cmFja19yZWxhdGlvbiwgdHJhY2tfKl9mcm9tX2xpc3QKKwordXNlIHN0cmljdDsK K3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyMgVGVzdCBjbHVzdGVyIHNldHVwCisjLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3 KCdleHRfc3RhdF92YWN1dW1fZ3VjcycpOworJG5vZGUtPmluaXQ7CisKKyRub2RlLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgcXsKKyAgICBzaGFyZWRfcHJlbG9hZF9saWJy YXJpZXMgPSAnZXh0X3ZhY3V1bV9zdGF0aXN0aWNzJworICAgIGxvZ19taW5fbWVzc2FnZXMg PSBub3RpY2UKK30pOworCiskbm9kZS0+c3RhcnQ7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyMgRGF0YWJhc2UgY3JlYXRpb24gYW5kIGluaXRpYWxpemF0aW9uCisjLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsK KyAgICBDUkVBVEUgREFUQUJBU0Ugc3RhdGlzdGljX3ZhY3V1bV9ndWNzOworfSk7CisKK215 ICRkYm5hbWUgPSAnc3RhdGlzdGljX3ZhY3V1bV9ndWNzJzsKKworJG5vZGUtPnNhZmVfcHNx bCgkZGJuYW1lLCBxeworICAgIENSRUFURSBFWFRFTlNJT04gZXh0X3ZhY3V1bV9zdGF0aXN0 aWNzOworICAgIENSRUFURSBUQUJMRSBndWNfdGVzdCAoeCBpbnQgUFJJTUFSWSBLRVkpCisg ICAgICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZik7CisgICAgSU5TRVJUIElO VE8gZ3VjX3Rlc3QgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBn KHgpOworICAgIEFOQUxZWkUgZ3VjX3Rlc3Q7Cit9KTsKKworIyBHZXQgT0lEcyBmb3IgZmls dGVyaW5nIHRlc3RzCitteSAkZGJvaWQgPSAkbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsIHF7 U0VMRUNUIG9pZCBGUk9NIHBnX2RhdGFiYXNlIFdIRVJFIGRhdG5hbWUgPSBjdXJyZW50X2Rh dGFiYXNlKCl9KTsKK215ICRyZWxvaWQgPSAkbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsIHF7 U0VMRUNUIG9pZCBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAnZ3VjX3Rlc3QnfSk7 CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVzZXQgc3RhdHMgYW5kIHJ1biB2 YWN1dW0gKGFsbCBpbiBvbmUgc2Vzc2lvbiBzbyBHVUNzIHBlcnNpc3QpCisjLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisKK3N1YiByZXNldF9hbmRfdmFjdXVtIHsKKyAgICBteSAoJGRi LCAkdGFibGUsICRvcHRzKSA9IEBfOworICAgICR0YWJsZSB8fD0gJ2d1Y190ZXN0JzsKKyAg ICBteSAkZ3VjcyA9ICRvcHRzICYmICRvcHRzLT57Z3Vjc30gPyAkb3B0cy0+e2d1Y3N9IDog W107CisgICAgbXkgJG1vZGlmeSA9ICRvcHRzICYmICRvcHRzLT57bW9kaWZ5fTsKKyAgICBt eSAkZXh0cmEgPSAkb3B0cyAmJiAkb3B0cy0+e2V4dHJhX3ZhY3V1bX0gPyAkb3B0cy0+e2V4 dHJhX3ZhY3V1bX0gOiBbXTsKKyAgICAkZXh0cmEgPSBbJGV4dHJhXSB1bmxlc3MgcmVmICRl eHRyYSBlcSAnQVJSQVknOworICAgIG15ICRzcWwgPSBqb2luKCJcbiIsIChtYXAgeyAiU0VU ICRfOyIgfSBAJGd1Y3MpLAorICAgICAgICAiU0VMRUNUIGV4dF92YWN1dW1fc3RhdGlzdGlj cy52YWN1dW1fc3RhdGlzdGljc19yZXNldCgpOyIsCisgICAgICAgICRtb2RpZnkgPyAoCisg ICAgICAgICAgICAiVFJVTkNBVEUgJHRhYmxlOyIsCisgICAgICAgICAgICAiSU5TRVJUIElO VE8gJHRhYmxlIFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgZyh4 KTsiLAorICAgICAgICAgICAgIkRFTEVURSBGUk9NICR0YWJsZTsiLAorICAgICAgICApIDog KCksCisgICAgICAgICJWQUNVVU0gJHRhYmxlOyIsCisgICAgICAgIChtYXAgeyAiVkFDVVVN ICRfOyIgfSBAJGV4dHJhKSk7CisgICAgJG5vZGUtPnNhZmVfcHNxbCgkZGIsICRzcWwpOwor ICAgIHNsZWVwKDAuMSk7Cit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVz dCAxOiB2YWN1dW1fc3RhdGlzdGljcy5lbmFibGVkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitzdWJ0ZXN0ICd2YWN1dW1fc3RhdGlzdGljcy5lbmFibGVkJyA9PiBzdWIgeworICAg IHJlc2V0X2FuZF92YWN1dW0oJGRibmFtZSk7CisKKyAgICAjIERlZmF1bHQ6IGVuYWJsZWQg LSBzaG91bGQgaGF2ZSBzdGF0cworICAgIG15ICRjb3VudCA9ICRub2RlLT5zYWZlX3BzcWwo JGRibmFtZSwKKyAgICAgICAgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGV4dF92YWN1dW1fc3Rh dGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAnZ3VjX3Rl c3QnIik7CisgICAgb2soJGNvdW50ID4gMCwgJ3N0YXRzIGNvbGxlY3RlZCB3aGVuIGVuYWJs ZWQnKTsKKworICAgICMgRGlzYWJsZSwgcmVzZXQgYW5kIHZhY3V1bSBpbiBzYW1lIHNlc3Np b24KKyAgICByZXNldF9hbmRfdmFjdXVtKCRkYm5hbWUsICdndWNfdGVzdCcsIHsgZ3VjcyA9 PiBbJ3ZhY3V1bV9zdGF0aXN0aWNzLmVuYWJsZWQgPSBvZmYnXSB9KTsKKworICAgICRjb3Vu dCA9ICRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwKKyAgICAgICAgIlNFTEVDVCBDT1VOVCgq KSBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIFdI RVJFIHJlbG5hbWUgPSAnZ3VjX3Rlc3QnIik7CisgICAgaXMoJGNvdW50LCAwLCAnbm8gc3Rh dHMgd2hlbiBkaXNhYmxlZCcpOworfTsKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IyBUZXN0IDI6IHZhY3V1bV9zdGF0aXN0aWNzLm9iamVjdF90eXBlcyAoZGF0YWJhc2VzIG9u bHksIHJlbGF0aW9ucyBvbmx5KQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc3VidGVz dCAndmFjdXVtX3N0YXRpc3RpY3Mub2JqZWN0X3R5cGVzJyA9PiBzdWIgeworICAgICMgdHJh Y2sgb25seSBkYiBzdGF0cywgbm8gcmVsYXRpb24gc3RhdHMKKyAgICByZXNldF9hbmRfdmFj dXVtKCRkYm5hbWUsICdndWNfdGVzdCcsIHsKKyAgICAgICAgZ3VjcyA9PiBbInZhY3V1bV9z dGF0aXN0aWNzLm9iamVjdF90eXBlcyA9ICdkYXRhYmFzZXMnIl0sCisgICAgICAgIG1vZGlm eSA9PiAxLAorICAgIH0pOworICAgIG15ICRkYl9oYXNfZGJzID0gJG5vZGUtPnNhZmVfcHNx bCgkZGJuYW1lLAorICAgICAgICAiU0VMRUNUIENPQUxFU0NFKFNVTShkYl9ibGtzX2hpdCks IDApIEZST00gZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV9kYXRhYmFz ZSBXSEVSRSBkYm9pZCA9ICRkYm9pZCIpOworICAgIG15ICRyZWxfZGJzID0gJG5vZGUtPnNh ZmVfcHNxbCgkZGJuYW1lLAorICAgICAgICAiU0VMRUNUIENPVU5UKCopIEZST00gZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1bV90YWJsZXMgV0hFUkUgcmVsbmFtZSA9 ICdndWNfdGVzdCciKTsKKyAgICBpcygkcmVsX2RicywgMCwgJ3RyYWNrPWRhdGFiYXNlczog bm8gcmVsYXRpb24gc3RhdHMnKTsKKyAgICBvaygkZGJfaGFzX2RicyA+IDAsICd0cmFjaz1k YXRhYmFzZXM6IGRhdGFiYXNlIHN0YXRzIGNvbGxlY3RlZCcpOworCisgICAgIyB0cmFjayBv bmx5IHJlbGF0aW9uIHN0YXRzLCBubyBkYiBzdGF0cworICAgIHJlc2V0X2FuZF92YWN1dW0o JGRibmFtZSwgJ2d1Y190ZXN0JywgeworICAgICAgICBndWNzID0+IFsidmFjdXVtX3N0YXRp c3RpY3Mub2JqZWN0X3R5cGVzID0gJ3JlbGF0aW9ucyciXSwKKyAgICAgICAgbW9kaWZ5ID0+ IDEsCisgICAgfSk7CisgICAgbXkgJGRiX2hhc19yZWxzID0gJG5vZGUtPnNhZmVfcHNxbCgk ZGJuYW1lLAorICAgICAgICAiU0VMRUNUIENPQUxFU0NFKFNVTShkYl9ibGtzX2hpdCksIDAp ID4gMCBGUk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fZGF0YWJh c2UgV0hFUkUgZGJvaWQgPSAkZGJvaWQiKTsKKyAgICBteSAkcmVsX3JlbHMgPSAkbm9kZS0+ c2FmZV9wc3FsKCRkYm5hbWUsCisgICAgICAgICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBleHRf dmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX3RhYmxlcyBXSEVSRSByZWxuYW1l ID0gJ2d1Y190ZXN0JyIpOworICAgIG9rKCRyZWxfcmVscyA+IDAsICd0cmFjaz1yZWxhdGlv bnM6IHJlbGF0aW9uIHN0YXRzIGNvbGxlY3RlZCcpOworICAgIGlzKCRkYl9oYXNfcmVscywg J2YnLCAndHJhY2s9cmVsYXRpb25zOiBubyBkYXRhYmFzZSBzdGF0cycpOworfTsKKworIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0IDM6IHZhY3V1bV9zdGF0aXN0aWNzLnRy YWNrX3JlbGF0aW9ucyAoc3lzdGVtLCB1c2VyKQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorc3VidGVzdCAndmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfcmVsYXRpb25zJyA9PiBzdWIg eworICAgICMgdHJhY2tfcmVsYXRpb25zIC0gb25seSB1c2VyIHRhYmxlcworICAgIHJlc2V0 X2FuZF92YWN1dW0oJGRibmFtZSwgJ2d1Y190ZXN0JywgeworICAgICAgICBndWNzID0+IFsK KyAgICAgICAgICAgICJ2YWN1dW1fc3RhdGlzdGljcy5vYmplY3RfdHlwZXMgPSAncmVsYXRp b25zJyIsCisgICAgICAgICAgICAidmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfcmVsYXRpb25z ID0gJ3VzZXInIiwKKyAgICAgICAgXSwKKyAgICAgICAgZXh0cmFfdmFjdXVtID0+IFsncGdf Y2xhc3MnXSwKKyAgICB9KTsKKworICAgIG15ICR1c2VyX3JlbCA9ICRub2RlLT5zYWZlX3Bz cWwoJGRibmFtZSwKKyAgICAgICAgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGV4dF92YWN1dW1f c3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAnZ3Vj X3Rlc3QnIik7CisgICAgbXkgJHN5c19yZWwgPSAkbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUs CisgICAgICAgICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3Mu cGdfc3RhdHNfdmFjdXVtX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ3BnX2NsYXNzJyIpOwor ICAgIG9rKCR1c2VyX3JlbCA+IDAsICd0cmFja19yZWxhdGlvbnM9dXNlcjogdXNlciB0YWJs ZSBzdGF0cyBjb2xsZWN0ZWQnKTsKKyAgICBpcygkc3lzX3JlbCwgMCwgJ3RyYWNrX3JlbGF0 aW9ucz11c2VyOiBzeXN0ZW0gdGFibGUgc3RhdHMgbm90IGNvbGxlY3RlZCcpOworCisgICAg IyB0cmFja19yZWxhdGlvbnMgLSBvbmx5IHN5c3RlbSB0YWJsZXMKKyAgICByZXNldF9hbmRf dmFjdXVtKCRkYm5hbWUsICdndWNfdGVzdCcsIHsKKyAgICAgICAgZ3VjcyA9PiBbCisgICAg ICAgICAgICAidmFjdXVtX3N0YXRpc3RpY3Mub2JqZWN0X3R5cGVzID0gJ3JlbGF0aW9ucyci LAorICAgICAgICAgICAgInZhY3V1bV9zdGF0aXN0aWNzLnRyYWNrX3JlbGF0aW9ucyA9ICdz eXN0ZW0nIiwKKyAgICAgICAgXSwKKyAgICAgICAgZXh0cmFfdmFjdXVtID0+IFsncGdfY2xh c3MnXSwKKyAgICB9KTsKKworICAgICR1c2VyX3JlbCA9ICRub2RlLT5zYWZlX3BzcWwoJGRi bmFtZSwKKyAgICAgICAgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGV4dF92YWN1dW1fc3RhdGlz dGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAnZ3VjX3Rlc3Qn Iik7CisgICAgJHN5c19yZWwgPSAkbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsCisgICAgICAg ICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNf dmFjdXVtX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ3BnX2NsYXNzJyIpOworICAgIGlzKCR1 c2VyX3JlbCwgMCwgJ3RyYWNrX3JlbGF0aW9ucz1zeXN0ZW06IHVzZXIgdGFibGUgc3RhdHMg bm90IGNvbGxlY3RlZCcpOworICAgIG9rKCRzeXNfcmVsID4gMCwgJ3RyYWNrX3JlbGF0aW9u cz1zeXN0ZW06IHN5c3RlbSB0YWJsZSBzdGF0cyBjb2xsZWN0ZWQnKTsKK307CisKKyMtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdCA0OiB0cmFja19kYXRhYmFzZXMgKHZpYSBh ZGQvcmVtb3ZlX3RyYWNrX2RhdGFiYXNlKQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor c3VidGVzdCAndHJhY2tfZGF0YWJhc2VzIChhZGQvcmVtb3ZlKScgPT4gc3ViIHsKKyAgICAk bm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsICJTRUxFQ1QgZXh0X3ZhY3V1bV9zdGF0aXN0aWNz LnJlbW92ZV90cmFja19kYXRhYmFzZSgkZGJvaWQpIik7CisgICAgJG5vZGUtPnNhZmVfcHNx bCgkZGJuYW1lLCAiU0VMRUNUIGV4dF92YWN1dW1fc3RhdGlzdGljcy5hZGRfdHJhY2tfZGF0 YWJhc2UoJGRib2lkKSIpOworICAgIHJlc2V0X2FuZF92YWN1dW0oJGRibmFtZSwgJ2d1Y190 ZXN0JywgeyBndWNzID0+IFsidmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfZGF0YWJhc2VzX2Zy b21fbGlzdCA9IG9uIl0sIG1vZGlmeSA9PiAxIH0pOworCisgICAgbXkgJHJlbF9jb3VudCA9 ICRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwKKyAgICAgICAgIlNFTEVDVCBDT1VOVCgqKSBG Uk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIFdIRVJF IHJlbG5hbWUgPSAnZ3VjX3Rlc3QnIik7CisgICAgb2soJHJlbF9jb3VudCA+IDAsICdkYiBp biBsaXN0OiBzdGF0cyBjb2xsZWN0ZWQnKTsKKworICAgICRub2RlLT5zYWZlX3BzcWwoJGRi bmFtZSwgIlNFTEVDVCBleHRfdmFjdXVtX3N0YXRpc3RpY3MucmVtb3ZlX3RyYWNrX2RhdGFi YXNlKCRkYm9pZCkiKTsKKyAgICByZXNldF9hbmRfdmFjdXVtKCRkYm5hbWUsICdndWNfdGVz dCcsIHsgZ3VjcyA9PiBbInZhY3V1bV9zdGF0aXN0aWNzLnRyYWNrX2RhdGFiYXNlc19mcm9t X2xpc3QgPSBvbiJdLCBtb2RpZnkgPT4gMSB9KTsKKworICAgICRyZWxfY291bnQgPSAkbm9k ZS0+c2FmZV9wc3FsKCRkYm5hbWUsCisgICAgICAgICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBl eHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX3RhYmxlcyBXSEVSRSByZWxu YW1lID0gJ2d1Y190ZXN0JyIpOworICAgIGlzKCRyZWxfY291bnQsIDAsICdkYiByZW1vdmVk IGZyb20gbGlzdDogbm8gc3RhdHMnKTsKK307CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyMgVGVzdCA1OiB0cmFja19yZWxhdGlvbnMgKHZpYSBhZGQvcmVtb3ZlX3RyYWNrX3Jl bGF0aW9uKQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc3VidGVzdCAndHJhY2tfcmVs YXRpb25zIChhZGQvcmVtb3ZlKScgPT4gc3ViIHsKKyAgICAkbm9kZS0+c2FmZV9wc3FsKCRk Ym5hbWUsICJTRUxFQ1QgZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnJlbW92ZV90cmFja19yZWxh dGlvbigkZGJvaWQsICRyZWxvaWQpIik7CisgICAgJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1l LCAiU0VMRUNUIGV4dF92YWN1dW1fc3RhdGlzdGljcy5hZGRfdHJhY2tfcmVsYXRpb24oJGRi b2lkLCAkcmVsb2lkKSIpOworICAgIHJlc2V0X2FuZF92YWN1dW0oJGRibmFtZSwgJ2d1Y190 ZXN0JywgeyBndWNzID0+IFsidmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfcmVsYXRpb25zX2Zy b21fbGlzdCA9IG9uIl0sIG1vZGlmeSA9PiAxIH0pOworCisgICAgbXkgJHJlbF9jb3VudCA9 ICRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwKKyAgICAgICAgIlNFTEVDVCBDT1VOVCgqKSBG Uk9NIGV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzIFdIRVJF IHJlbG5hbWUgPSAnZ3VjX3Rlc3QnIik7CisgICAgb2soJHJlbF9jb3VudCA+IDAsICd0YWJs ZSBpbiBsaXN0OiBzdGF0cyBjb2xsZWN0ZWQnKTsKKworICAgICRub2RlLT5zYWZlX3BzcWwo JGRibmFtZSwgIlNFTEVDVCBleHRfdmFjdXVtX3N0YXRpc3RpY3MucmVtb3ZlX3RyYWNrX3Jl bGF0aW9uKCRkYm9pZCwgJHJlbG9pZCkiKTsKKyAgICByZXNldF9hbmRfdmFjdXVtKCRkYm5h bWUsICdndWNfdGVzdCcsIHsgZ3VjcyA9PiBbInZhY3V1bV9zdGF0aXN0aWNzLnRyYWNrX3Jl bGF0aW9uc19mcm9tX2xpc3QgPSBvbiJdLCBtb2RpZnkgPT4gMSB9KTsKKworICAgICRyZWxf Y291bnQgPSAkbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsCisgICAgICAgICJTRUxFQ1QgQ09V TlQoKikgRlJPTSBleHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX3RhYmxl cyBXSEVSRSByZWxuYW1lID0gJ2d1Y190ZXN0JyIpOworICAgIGlzKCRyZWxfY291bnQsIDAs ICd0YWJsZSByZW1vdmVkIGZyb20gbGlzdDogbm8gc3RhdHMnKTsKK307CisKKyRub2RlLT5z dG9wOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZXh0X3ZhY3V1 bV9zdGF0aXN0aWNzL3ZhY3V1bV9zdGF0aXN0aWNzLmMgYi9jb250cmliL2V4dF92YWN1dW1f c3RhdGlzdGljcy92YWN1dW1fc3RhdGlzdGljcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4xZjZmM2U5MDYxNAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRy aWIvZXh0X3ZhY3V1bV9zdGF0aXN0aWNzL3ZhY3V1bV9zdGF0aXN0aWNzLmMKQEAgLTAsMCAr MSwxMDAwIEBACisvKgorICogZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIC0gRXh0ZW5kZWQgdmFj dXVtIHN0YXRpc3RpY3MgZm9yIFBvc3RncmVTUUwKKyAqCisgKiBUaGlzIG1vZHVsZSBjb2xs ZWN0cyBkZXRhaWxlZCB2YWN1dW0gc3RhdGlzdGljcyAoSS9PLCBXQUwsIHRpbWluZywgZXRj LikKKyAqIGF0IHJlbGF0aW9uIGFuZCBkYXRhYmFzZSBsZXZlbCBieSBob29raW5nIGludG8g dGhlIHZhY3V1bSByZXBvcnRpbmcgcGF0aC4KKyAqIFN0YXRpc3RpY3MgYXJlIHN0b3JlZCB2 aWEgcGdzdGF0IGN1c3RvbSBzdGF0aXN0aWNzLiBNYW5hZ2VtZW50IG9mIHN0YXRpc3RpY3MK KyAqIHN0b3JhZ2UgYW5kIG91dHB1dCBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIGluIHRo aXMgbW9kdWxlLgorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFj Y2Vzcy90cmFuc2FtLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9vYmplY3RhY2Nlc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NsYXNz LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZS5oIgorI2luY2x1ZGUgImZtZ3Iu aCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5j bHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1 ZGUgInV0aWxzL2d1Yy5oIgorI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNpbmNsdWRl ICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ3N0YXRfa2luZC5oIgor I2luY2x1ZGUgInV0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oIgorCisjaWZkZWYgUEdfTU9EVUxF X01BR0lDCitQR19NT0RVTEVfTUFHSUM7CisjZW5kaWYKKworLyogVHdvIGtpbmRzOiByZWxh dGlvbnMgKHRhYmxlcy9pbmRleGVzKSBhbmQgZGF0YWJhc2UgYWdncmVnYXRlcyAqLworI2Rl ZmluZSBQR1NUQVRfS0lORF9FWFRWQUNfUkVMQVRJT04JMjQKKyNkZWZpbmUgUEdTVEFUX0tJ TkRfRVhUVkFDX0RCCQkyNQorCisjZGVmaW5lIFNKX05PREVOQU1FCQkidmFjdXVtX3N0YXRp c3RpY3MiCisjZGVmaW5lIEVWU19UUkFDS19GSUxFTkFNRQkicGdfc3RhdC9leHRfdmFjdXVt X3N0YXRpc3RpY3NfdHJhY2sub2lkIgorCisvKiBCaXQgZmxhZ3MgZm9yIGV2c190cmFjayAo b2JqZWN0X3R5cGVzKTogJ2FsbCcsICdkYXRhYmFzZXMnLCAncmVsYXRpb25zJyAqLworI2Rl ZmluZSBFVlNfVFJBQ0tfUkVMQVRJT05TCQkweDAxCisjZGVmaW5lIEVWU19UUkFDS19EQVRB QkFTRVMJCTB4MDIKKworLyogQml0IGZsYWdzIGZvciBldnNfdHJhY2tfcmVsYXRpb25zOiAn YWxsJywgJ3N5c3RlbScsICd1c2VyJyAqLworI2RlZmluZSBFVlNfRklMVEVSX1NZU1RFTQkJ MHgwMQorI2RlZmluZSBFVlNfRklMVEVSX1VTRVIJCQkweDAyCisKKy8qICBHVUNzICAqLwor c3RhdGljIGJvb2wgZXZzX2VuYWJsZWQgPSB0cnVlOworc3RhdGljIGNoYXIgKmV2c190cmFj ayA9ICJhbGwiOyAvKiAnYWxsJywgJ2RhdGFiYXNlcycsICdyZWxhdGlvbnMnICovCitzdGF0 aWMgY2hhciAqZXZzX3RyYWNrX3JlbGF0aW9ucyA9ICJhbGwiOwkvKiAnYWxsJywgJ3N5c3Rl bScsICd1c2VyJyAqLworc3RhdGljIGludAlldnNfdHJhY2tfYml0cyA9IEVWU19UUkFDS19S RUxBVElPTlMgfCBFVlNfVFJBQ0tfREFUQUJBU0VTOworc3RhdGljIGludAlldnNfdHJhY2tf cmVsYXRpb25zX2JpdHMgPSBFVlNfRklMVEVSX1NZU1RFTSB8IEVWU19GSUxURVJfVVNFUjsK K3N0YXRpYyBib29sIGV2c190cmFja19kYXRhYmFzZXNfZnJvbV9saXN0ID0gZmFsc2U7CS8q IGlmIHRydWUsIHRyYWNrIG9ubHkKKwkJCQkJCQkJCQkJCQkgKiBkYXRhYmFzZXMgaW4gbGlz dCAqLworc3RhdGljIGJvb2wgZXZzX3RyYWNrX3JlbGF0aW9uc19mcm9tX2xpc3QgPSBmYWxz ZTsJLyogaWYgdHJ1ZSwgdHJhY2sgb25seQorCQkJCQkJCQkJCQkJCSAqIHJlbGF0aW9ucyBp biBsaXN0ICovCisKKy8qICBIb29rICAqLworc3RhdGljIHNldF9yZXBvcnRfdmFjdXVtX2hv b2tfdHlwZSBwcmV2X3JlcG9ydF92YWN1dW1faG9vayA9IE5VTEw7CitzdGF0aWMgb2JqZWN0 X2FjY2Vzc19ob29rX3R5cGUgcHJldl9vYmplY3RfYWNjZXNzX2hvb2sgPSBOVUxMOworCisv KiAgRm9yd2FyZCBkZWNsYXJhdGlvbnMgICovCitzdGF0aWMgdm9pZCBwZ3N0YXRfcmVwb3J0 X3ZhY3V1bV9leHRzdGF0cyhPaWQgdGFibGVvaWQsIGJvb2wgc2hhcmVkLAorCQkJCQkJCQkJ CSAgUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzICogcGFyYW1zKTsKK3N0YXRpYyBib29s IGV2c19vaWRfaW5fbGlzdChIVEFCICpoYXNoLCBPaWQgb2lkKTsKK3N0YXRpYyB2b2lkIGV2 c190cmFja19oYXNoX2Vuc3VyZV9pbml0KHZvaWQpOworc3RhdGljIHZvaWQgZXZzX3RyYWNr X3NhdmVfZmlsZSh2b2lkKTsKK3N0YXRpYyB2b2lkIGV2c190cmFja19sb2FkX2ZpbGUodm9p ZCk7CitzdGF0aWMgdm9pZCBldnNfZHJvcF9hY2Nlc3NfaG9vayhPYmplY3RBY2Nlc3NUeXBl IGFjY2VzcywgT2lkIGNsYXNzSWQsCisJCQkJCQkJCSBPaWQgb2JqZWN0SWQsIGludCBzdWJJ ZCwgdm9pZCAqYXJnKTsKKworLyogSGFzaCB0YWJsZXMgZm9yIHRyYWNrX2RhdGFiYXNlcyBh bmQgdHJhY2tfcmVsYXRpb25zX2xpc3QgKi8KK3N0YXRpYyBIVEFCICpldnNfdHJhY2tfZGF0 YWJhc2VzX2hhc2ggPSBOVUxMOworc3RhdGljIEhUQUIgKmV2c190cmFja19yZWxhdGlvbnNf aGFzaCA9IE5VTEw7CitzdGF0aWMgYm9vbCBldnNfdHJhY2tfaGFzaF9pbml0aWFsaXplZCA9 IGZhbHNlOworCitzdGF0aWMgdm9pZCBldnNfdHJhY2tfbG9hZF9maWxlKHZvaWQpOworCisv KgorICogb2JqaWQgZW5jb2RpbmcgZm9yIHJlbGF0aW9uczogKHJlbGlkIDw8IDIpIHwgKHR5 cGUgJiAzKQorICovCisjZGVmaW5lIEVYVFZBQ19PQkpJRChyZWxpZCwgdHlwZSkgKCgodWlu dDY0KSAocmVsaWQpKSA8PCAyIHwgKCh0eXBlKSAmIDMpKQorCisvKiBLZXkgZm9yIHJlbGF0 aW9uIHRyYWNraW5nOiAoZGJvaWQsIHJlbG9pZCkuCisgKiBJbnZhbGlkT2lkIGZvciBkYm9p ZCBtZWFucyBpdCBpcyBhIGNsdXN0ZXIgb2JqZWN0LgorICovCit0eXBlZGVmIHN0cnVjdAor eworCU9pZAkJCWRib2lkOworCU9pZAkJCXJlbG9pZDsKK30JCQlFdnNUcmFja1JlbEtleTsK KworLyogU2hhcmVkIG1lbW9yeSBlbnRyeSBmb3IgdmFjdXVtIHN0YXRzOyBvbmUgcGVyIHJl bGF0aW9uIG9yIGRhdGFiYXNlLiAqLwordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0U2hhcmVkX0V4 dFZhY0VudHJ5Cit7CisJUGdTdGF0U2hhcmVkX0NvbW1vbiBoZWFkZXI7CisJUGdTdGF0X1Zh Y3V1bVJlbGF0aW9uQ291bnRzIHN0YXRzOworfQkJCVBnU3RhdFNoYXJlZF9FeHRWYWNFbnRy eTsKKworLyogUGdTdGF0IGtpbmQgZm9yIHBlci1yZWxhdGlvbiB2YWN1dW0gc3RhdGlzdGlj cyAodGFibGVzL2luZGV4ZXMpICovCitzdGF0aWMgY29uc3QgUGdTdGF0X0tpbmRJbmZvIGV4 dHZhY19yZWxhdGlvbl9raW5kX2luZm8gPSB7CisJLm5hbWUgPSAiZXh0X3ZhY3V1bV9zdGF0 aXN0aWNzX3JlbGF0aW9uIiwKKwkuZml4ZWRfYW1vdW50ID0gZmFsc2UsCisJLmFjY2Vzc2Vk X2Fjcm9zc19kYXRhYmFzZXMgPSB0cnVlLAorCS53cml0ZV90b19maWxlID0gdHJ1ZSwKKwku dHJhY2tfZW50cnlfY291bnQgPSB0cnVlLAorCS5zaGFyZWRfc2l6ZSA9IHNpemVvZihQZ1N0 YXRTaGFyZWRfRXh0VmFjRW50cnkpLAorCS5zaGFyZWRfZGF0YV9vZmYgPSBvZmZzZXRvZihQ Z1N0YXRTaGFyZWRfRXh0VmFjRW50cnksIHN0YXRzKSwKKwkuc2hhcmVkX2RhdGFfbGVuID0g c2l6ZW9mKFBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cyksCisJLnBlbmRpbmdfc2l6ZSA9 IDAsCisJLmZsdXNoX3BlbmRpbmdfY2IgPSBOVUxMLAorfTsKKworLyogUGdTdGF0IGtpbmQg Zm9yIHBlci1kYXRhYmFzZSBhZ2dyZWdhdGVkIHZhY3V1bSBzdGF0aXN0aWNzICovCitzdGF0 aWMgY29uc3QgUGdTdGF0X0tpbmRJbmZvIGV4dHZhY19kYl9raW5kX2luZm8gPSB7CisJLm5h bWUgPSAiZXh0X3ZhY3V1bV9zdGF0aXN0aWNzX2RiIiwKKwkuZml4ZWRfYW1vdW50ID0gZmFs c2UsCisJLmFjY2Vzc2VkX2Fjcm9zc19kYXRhYmFzZXMgPSB0cnVlLAorCS53cml0ZV90b19m aWxlID0gdHJ1ZSwKKwkudHJhY2tfZW50cnlfY291bnQgPSB0cnVlLAorCS5zaGFyZWRfc2l6 ZSA9IHNpemVvZihQZ1N0YXRTaGFyZWRfRXh0VmFjRW50cnkpLAorCS5zaGFyZWRfZGF0YV9v ZmYgPSBvZmZzZXRvZihQZ1N0YXRTaGFyZWRfRXh0VmFjRW50cnksIHN0YXRzKSwKKwkuc2hh cmVkX2RhdGFfbGVuID0gc2l6ZW9mKFBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cyksCisJ LnBlbmRpbmdfc2l6ZSA9IDAsCisJLmZsdXNoX3BlbmRpbmdfY2IgPSBOVUxMLAorfTsKKwor I2RlZmluZSBBQ0NVTV9JRihkc3QsIHNyYywgZmllbGQpIFwKKwlkbyB7IChkc3QpLT5maWVs ZCArPSAoc3JjKS0+ZmllbGQ7IH0gd2hpbGUgKDApCisKK3N0YXRpYyBpbmxpbmUgdm9pZAor cGdzdGF0X2FjY3VtdWxhdGVfY29tbW9uKFBnU3RhdF9Db21tb25Db3VudHMgKiBkc3QsIGNv bnN0IFBnU3RhdF9Db21tb25Db3VudHMgKiBzcmMpCit7CisJQUNDVU1fSUYoZHN0LCBzcmMs IHRvdGFsX2Jsa3NfcmVhZCk7CisJQUNDVU1fSUYoZHN0LCBzcmMsIHRvdGFsX2Jsa3NfaGl0 KTsKKwlBQ0NVTV9JRihkc3QsIHNyYywgdG90YWxfYmxrc19kaXJ0aWVkKTsKKwlBQ0NVTV9J Rihkc3QsIHNyYywgdG90YWxfYmxrc193cml0dGVuKTsKKwlBQ0NVTV9JRihkc3QsIHNyYywg Ymxrc19mZXRjaGVkKTsKKwlBQ0NVTV9JRihkc3QsIHNyYywgYmxrc19oaXQpOworCUFDQ1VN X0lGKGRzdCwgc3JjLCBibGtfcmVhZF90aW1lKTsKKwlBQ0NVTV9JRihkc3QsIHNyYywgYmxr X3dyaXRlX3RpbWUpOworCUFDQ1VNX0lGKGRzdCwgc3JjLCBkZWxheV90aW1lKTsKKwlBQ0NV TV9JRihkc3QsIHNyYywgdG90YWxfdGltZSk7CisJQUNDVU1fSUYoZHN0LCBzcmMsIHdhbF9y ZWNvcmRzKTsKKwlBQ0NVTV9JRihkc3QsIHNyYywgd2FsX2ZwaSk7CisJQUNDVU1fSUYoZHN0 LCBzcmMsIHdhbF9ieXRlcyk7CisJQUNDVU1fSUYoZHN0LCBzcmMsIHdyYXBhcm91bmRfZmFp bHNhZmVfY291bnQpOworCUFDQ1VNX0lGKGRzdCwgc3JjLCBpbnRlcnJ1cHRzX2NvdW50KTsK KwlBQ0NVTV9JRihkc3QsIHNyYywgdHVwbGVzX2RlbGV0ZWQpOworfQorCitzdGF0aWMgaW5s aW5lIHZvaWQKK3Bnc3RhdF9hY2N1bXVsYXRlX2V4dHZhY19zdGF0cyhQZ1N0YXRfVmFjdXVt UmVsYXRpb25Db3VudHMgKiBkc3QsCisJCQkJCQkJICAgY29uc3QgUGdTdGF0X1ZhY3V1bVJl bGF0aW9uQ291bnRzICogc3JjKQoreworCWlmIChkc3QtPnR5cGUgPT0gUEdTVEFUX0VYVFZB Q19JTlZBTElEKQorCQlkc3QtPnR5cGUgPSBzcmMtPnR5cGU7CisKKwlBc3NlcnQoc3JjLT50 eXBlICE9IFBHU1RBVF9FWFRWQUNfSU5WQUxJRCAmJiBzcmMtPnR5cGUgIT0gUEdTVEFUX0VY VFZBQ19EQik7CisJQXNzZXJ0KHNyYy0+dHlwZSA9PSBkc3QtPnR5cGUpOworCisJcGdzdGF0 X2FjY3VtdWxhdGVfY29tbW9uKCZkc3QtPmNvbW1vbiwgJnNyYy0+Y29tbW9uKTsKKworCWlm IChkc3QtPnR5cGUgPT0gUEdTVEFUX0VYVFZBQ19UQUJMRSkKKwl7CisJCWRzdC0+dGFibGUu cGFnZXNfc2Nhbm5lZCArPSBzcmMtPnRhYmxlLnBhZ2VzX3NjYW5uZWQ7CisJCWRzdC0+dGFi bGUucGFnZXNfcmVtb3ZlZCArPSBzcmMtPnRhYmxlLnBhZ2VzX3JlbW92ZWQ7CisJCWRzdC0+ dGFibGUudHVwbGVzX2Zyb3plbiArPSBzcmMtPnRhYmxlLnR1cGxlc19mcm96ZW47CisJCWRz dC0+dGFibGUucmVjZW50bHlfZGVhZF90dXBsZXMgKz0gc3JjLT50YWJsZS5yZWNlbnRseV9k ZWFkX3R1cGxlczsKKwkJZHN0LT50YWJsZS52bV9uZXdfZnJvemVuX3BhZ2VzICs9IHNyYy0+ dGFibGUudm1fbmV3X2Zyb3plbl9wYWdlczsKKwkJZHN0LT50YWJsZS52bV9uZXdfdmlzaWJs ZV9wYWdlcyArPSBzcmMtPnRhYmxlLnZtX25ld192aXNpYmxlX3BhZ2VzOworCQlkc3QtPnRh YmxlLnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyArPSBzcmMtPnRhYmxlLnZtX25ld192 aXNpYmxlX2Zyb3plbl9wYWdlczsKKwkJZHN0LT50YWJsZS5taXNzZWRfZGVhZF9wYWdlcyAr PSBzcmMtPnRhYmxlLm1pc3NlZF9kZWFkX3BhZ2VzOworCQlkc3QtPnRhYmxlLm1pc3NlZF9k ZWFkX3R1cGxlcyArPSBzcmMtPnRhYmxlLm1pc3NlZF9kZWFkX3R1cGxlczsKKwkJZHN0LT50 YWJsZS5pbmRleF92YWN1dW1fY291bnQgKz0gc3JjLT50YWJsZS5pbmRleF92YWN1dW1fY291 bnQ7CisJfQorCWVsc2UgaWYgKGRzdC0+dHlwZSA9PSBQR1NUQVRfRVhUVkFDX0lOREVYKQor CXsKKwkJZHN0LT5pbmRleC5wYWdlc19kZWxldGVkICs9IHNyYy0+aW5kZXgucGFnZXNfZGVs ZXRlZDsKKwl9Cit9CisKKy8qIEdVQyBhc3NpZ24gaG9va3M6IHBhcnNlIHN0cmluZyBhbmQg dXBkYXRlIGJpdCBmbGFncyAqLworc3RhdGljIHZvaWQKK2V2c190cmFja19hc3NpZ25faG9v ayhjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQgKmV4dHJhKQoreworCWlmIChzdHJjbXAobmV3 dmFsLCAiZGF0YWJhc2VzIikgPT0gMCkKKwkJZXZzX3RyYWNrX2JpdHMgPSBFVlNfVFJBQ0tf REFUQUJBU0VTOworCWVsc2UgaWYgKHN0cmNtcChuZXd2YWwsICJyZWxhdGlvbnMiKSA9PSAw KQorCQlldnNfdHJhY2tfYml0cyA9IEVWU19UUkFDS19SRUxBVElPTlM7CisJZWxzZQorCQll dnNfdHJhY2tfYml0cyA9IEVWU19UUkFDS19SRUxBVElPTlMgfCBFVlNfVFJBQ0tfREFUQUJB U0VTOyAvKiAiYWxsIiBvciB1bmtub3duICovCit9CisKK3N0YXRpYyB2b2lkCitldnNfdHJh Y2tfcmVsYXRpb25zX2Fzc2lnbl9ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCwgdm9pZCAqZXh0 cmEpCit7CisJaWYgKHN0cmNtcChuZXd2YWwsICJzeXN0ZW0iKSA9PSAwKQorCQlldnNfdHJh Y2tfcmVsYXRpb25zX2JpdHMgPSBFVlNfRklMVEVSX1NZU1RFTTsKKwllbHNlIGlmIChzdHJj bXAobmV3dmFsLCAidXNlciIpID09IDApCisJCWV2c190cmFja19yZWxhdGlvbnNfYml0cyA9 IEVWU19GSUxURVJfVVNFUjsKKwllbHNlCisJCWV2c190cmFja19yZWxhdGlvbnNfYml0cyA9 IEVWU19GSUxURVJfU1lTVEVNIHwgRVZTX0ZJTFRFUl9VU0VSOyAvKiAiYWxsIiBvciB1bmtu b3duICovCit9CisKK3ZvaWQKK19QR19pbml0KHZvaWQpCit7CisJaWYgKCFwcm9jZXNzX3No YXJlZF9wcmVsb2FkX2xpYnJhcmllc19pbl9wcm9ncmVzcykKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVy cm1zZygiZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIG1vZHVsZSBjb3VsZCBiZSBsb2FkZWQgb25s eSBvbiBzdGFydHVwLiIpLAorCQkJCSBlcnJkZXRhaWwoIkFkZCAnZXh0X3ZhY3V1bV9zdGF0 aXN0aWNzJyBpbnRvIHRoZSBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgbGlzdC4iKSkpOwor CisJRGVmaW5lQ3VzdG9tQm9vbFZhcmlhYmxlKCJ2YWN1dW1fc3RhdGlzdGljcy5lbmFibGVk IiwKKwkJCQkJCQkgIkVuYWJsZSBleHRlbmRlZCB2YWN1dW0gc3RhdGlzdGljcyBjb2xsZWN0 aW9uLiIsCisJCQkJCQkJIE5VTEwsICZldnNfZW5hYmxlZCwgdHJ1ZSwKKwkJCQkJCQkgUEdD X1NVU0VULCAwLCBOVUxMLCBOVUxMLCBOVUxMKTsKKworCURlZmluZUN1c3RvbVN0cmluZ1Zh cmlhYmxlKCJ2YWN1dW1fc3RhdGlzdGljcy5vYmplY3RfdHlwZXMiLAorCQkJCQkJCSAgICJP YmplY3QgdHlwZXMgZm9yIHN0YXRpc3RpY3M6ICdhbGwnLCAnZGF0YWJhc2VzJywgJ3JlbGF0 aW9ucycuIiwKKwkJCQkJCQkgICBOVUxMLCAmZXZzX3RyYWNrLCAiYWxsIiwKKwkJCQkJCQkg ICBQR0NfU1VTRVQsIDAsIE5VTEwsIGV2c190cmFja19hc3NpZ25faG9vaywgTlVMTCk7CisK KwlEZWZpbmVDdXN0b21TdHJpbmdWYXJpYWJsZSgidmFjdXVtX3N0YXRpc3RpY3MudHJhY2tf cmVsYXRpb25zIiwKKwkJCQkJCQkgICAiV2hlbiB0cmFja2luZyByZWxhdGlvbnM6ICdhbGwn LCAnc3lzdGVtJywgJ3VzZXInLiIsCisJCQkJCQkJICAgTlVMTCwgJmV2c190cmFja19yZWxh dGlvbnMsICJhbGwiLAorCQkJCQkJCSAgIFBHQ19TVVNFVCwgMCwgTlVMTCwgZXZzX3RyYWNr X3JlbGF0aW9uc19hc3NpZ25faG9vaywgTlVMTCk7CisKKwlEZWZpbmVDdXN0b21Cb29sVmFy aWFibGUoInZhY3V1bV9zdGF0aXN0aWNzLnRyYWNrX2RhdGFiYXNlc19mcm9tX2xpc3QiLAor CQkJCQkJCSAiSWYgdHJ1ZSwgdHJhY2sgb25seSBkYXRhYmFzZXMgYWRkZWQgdmlhIGFkZF90 cmFja19kYXRhYmFzZS4iLAorCQkJCQkJCSBOVUxMLCAmZXZzX3RyYWNrX2RhdGFiYXNlc19m cm9tX2xpc3QsIGZhbHNlLAorCQkJCQkJCSBQR0NfU1VTRVQsIDAsIE5VTEwsIE5VTEwsIE5V TEwpOworCisJRGVmaW5lQ3VzdG9tQm9vbFZhcmlhYmxlKCJ2YWN1dW1fc3RhdGlzdGljcy50 cmFja19yZWxhdGlvbnNfZnJvbV9saXN0IiwKKwkJCQkJCQkgIklmIHRydWUsIHRyYWNrIG9u bHkgcmVsYXRpb25zIGFkZGVkIHZpYSBhZGRfdHJhY2tfcmVsYXRpb24uIiwKKwkJCQkJCQkg TlVMTCwgJmV2c190cmFja19yZWxhdGlvbnNfZnJvbV9saXN0LCBmYWxzZSwKKwkJCQkJCQkg UEdDX1NVU0VULCAwLCBOVUxMLCBOVUxMLCBOVUxMKTsKKworCU1hcmtHVUNQcmVmaXhSZXNl cnZlZChTSl9OT0RFTkFNRSk7CisKKwlwZ3N0YXRfcmVnaXN0ZXJfa2luZChQR1NUQVRfS0lO RF9FWFRWQUNfUkVMQVRJT04sICZleHR2YWNfcmVsYXRpb25fa2luZF9pbmZvKTsKKwlwZ3N0 YXRfcmVnaXN0ZXJfa2luZChQR1NUQVRfS0lORF9FWFRWQUNfREIsICZleHR2YWNfZGJfa2lu ZF9pbmZvKTsKKworCXByZXZfcmVwb3J0X3ZhY3V1bV9ob29rID0gc2V0X3JlcG9ydF92YWN1 dW1faG9vazsKKwlzZXRfcmVwb3J0X3ZhY3V1bV9ob29rID0gcGdzdGF0X3JlcG9ydF92YWN1 dW1fZXh0c3RhdHM7CisKKwlwcmV2X29iamVjdF9hY2Nlc3NfaG9vayA9IG9iamVjdF9hY2Nl c3NfaG9vazsKKwlvYmplY3RfYWNjZXNzX2hvb2sgPSBldnNfZHJvcF9hY2Nlc3NfaG9vazsK K30KKworLyoKKyAqIE9iamVjdCBhY2Nlc3MgaG9vazogcmVtb3ZlIGRyb3BwZWQgb2JqZWN0 cyBmcm9tIHRyYWNrIGxpc3RzLgorICovCitzdGF0aWMgdm9pZAorZXZzX2Ryb3BfYWNjZXNz X2hvb2soT2JqZWN0QWNjZXNzVHlwZSBhY2Nlc3MsIE9pZCBjbGFzc0lkLAorCQkJCQkgT2lk IG9iamVjdElkLCBpbnQgc3ViSWQsIHZvaWQgKmFyZykKK3sKKwlpZiAocHJldl9vYmplY3Rf YWNjZXNzX2hvb2spCisJCSgqcHJldl9vYmplY3RfYWNjZXNzX2hvb2spIChhY2Nlc3MsIGNs YXNzSWQsIG9iamVjdElkLCBzdWJJZCwgYXJnKTsKKworCWlmIChhY2Nlc3MgPT0gT0FUX0RS T1ApCisJeworCQlpZiAoY2xhc3NJZCA9PSBSZWxhdGlvblJlbGF0aW9uSWQgJiYgc3ViSWQg PT0gMCkKKwkJeworCQkJY2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChvYmplY3RJ ZCk7CisJCQlFdnNUcmFja1JlbEtleSBrZXk7CisJCQlib29sCQlmb3VuZDsKKworCQkJaWYg KHJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTiB8fCByZWxraW5kID09IFJFTEtJTkRfSU5E RVgpCisJCQl7CisJCQkJZXZzX3RyYWNrX2hhc2hfZW5zdXJlX2luaXQoKTsKKwkJCQlrZXku ZGJvaWQgPSBNeURhdGFiYXNlSWQ7CisJCQkJa2V5LnJlbG9pZCA9IG9iamVjdElkOworCQkJ CWhhc2hfc2VhcmNoKGV2c190cmFja19yZWxhdGlvbnNfaGFzaCwgJmtleSwgSEFTSF9SRU1P VkUsICZmb3VuZCk7CisJCQkJa2V5LmRib2lkID0gSW52YWxpZE9pZDsKKwkJCQloYXNoX3Nl YXJjaChldnNfdHJhY2tfcmVsYXRpb25zX2hhc2gsICZrZXksIEhBU0hfUkVNT1ZFLCAmZm91 bmQpOworCQkJCWV2c190cmFja19zYXZlX2ZpbGUoKTsKKwkJCX0KKwkJfQorCisJCWlmIChj bGFzc0lkID09IERhdGFiYXNlUmVsYXRpb25JZCAmJiBvYmplY3RJZCAhPSBJbnZhbGlkT2lk KQorCQl7CisJCQlib29sCQlmb3VuZDsKKworCQkJZXZzX3RyYWNrX2hhc2hfZW5zdXJlX2lu aXQoKTsKKwkJCWhhc2hfc2VhcmNoKGV2c190cmFja19kYXRhYmFzZXNfaGFzaCwgJm9iamVj dElkLCBIQVNIX1JFTU9WRSwgJmZvdW5kKTsKKwkJCWV2c190cmFja19zYXZlX2ZpbGUoKTsK KwkJfQorCX0KK30KKworLyoKKyAqIFN0b3JhZ2Ugb2YgdHJhY2sgbGlzdHMgaW4gYSBzZXBh cmF0ZSBmaWxlLgorICoKKyAqIFN0b3JlcyB0aGUgbGlzdHMgb2YgZGF0YWJhc2UgT0lEcyBh bmQgKGRib2lkLCByZWxvaWQpIHBhaXJzIHVzZWQgZm9yCisgKiBzZWxlY3RpdmUgdHJhY2tp bmcgd2hlbiB0cmFja19kYXRhYmFzZXNfZnJvbV9saXN0IG9yIHRyYWNrX3JlbGF0aW9uc19m cm9tX2xpc3QKKyAqIGlzIGVuYWJsZWQuCisgKiBEYXRhIHN0b3JlcyBpbiBwZ19zdGF0L2V4 dF92YWN1dW1fc3RhdGlzdGljc190cmFjay5vaWQKKyAqLworc3RhdGljIHZvaWQKK2V2c190 cmFja19oYXNoX2Vuc3VyZV9pbml0KHZvaWQpCit7CisJSEFTSENUTAkJY3RsOworCisJaWYg KGV2c190cmFja19oYXNoX2luaXRpYWxpemVkKQorCQlyZXR1cm47CisKKwltZW1zZXQoJmN0 bCwgMCwgc2l6ZW9mKGN0bCkpOworCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7CisJY3Rs LmVudHJ5c2l6ZSA9IHNpemVvZihPaWQpOworCWN0bC5oY3h0ID0gVG9wTWVtb3J5Q29udGV4 dDsKKwkvKiBIYXNoIG9mIGRhdGFiYXNlIE9JRHMgdG8gdHJhY2sgc3BlY2lmaWMgZGF0YWJh c2VzICovCisJZXZzX3RyYWNrX2RhdGFiYXNlc19oYXNoID0gaGFzaF9jcmVhdGUoImV4dF92 YWN1dW1fc3RhdGlzdGljcyB0cmFjayBkYXRhYmFzZXMiLAorCQkJCQkJCQkJCSAgIDY0LCAm Y3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKworCW1lbXNldCgmY3RsLCAwLCBzaXpl b2YoY3RsKSk7CisJY3RsLmtleXNpemUgPSBzaXplb2YoRXZzVHJhY2tSZWxLZXkpOworCWN0 bC5lbnRyeXNpemUgPSBzaXplb2YoRXZzVHJhY2tSZWxLZXkpOworCWN0bC5oY3h0ID0gVG9w TWVtb3J5Q29udGV4dDsKKwkvKiBIYXNoIG9mIChkYm9pZCwgcmVsb2lkKSB0byB0cmFjayBz cGVjaWZpYyByZWxhdGlvbnMgKi8KKwlldnNfdHJhY2tfcmVsYXRpb25zX2hhc2ggPSBoYXNo X2NyZWF0ZSgiZXh0X3ZhY3V1bV9zdGF0aXN0aWNzIHRyYWNrIHJlbGF0aW9ucyIsCisJCQkJ CQkJCQkJICAgNjQsICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCisJZXZzX3Ry YWNrX2xvYWRfZmlsZSgpOworCWV2c190cmFja19oYXNoX2luaXRpYWxpemVkID0gdHJ1ZTsK K30KKworc3RhdGljIHZvaWQKK2V2c190cmFja19sb2FkX2ZpbGUodm9pZCkKK3sKKwljaGFy CQlwYXRoW01BWFBHUEFUSF07CisJRklMRQkgICAqZnA7CisJY2hhcgkJYnVmWzI1Nl07CisJ Ym9vbAkJaW5fcmVsYXRpb25zID0gZmFsc2U7CisJT2lkCQkJb2lkOworCUV2c1RyYWNrUmVs S2V5IGtleTsKKwlib29sCQlmb3VuZDsKKworCWlmICghRGF0YURpciB8fCBEYXRhRGlyWzBd ID09ICdcMCcgfHwgIWV2c190cmFja19kYXRhYmFzZXNfaGFzaCB8fCAhZXZzX3RyYWNrX3Jl bGF0aW9uc19oYXNoKQorCQlyZXR1cm47CisKKwlzbnByaW50ZihwYXRoLCBzaXplb2YocGF0 aCksICIlcy8lcyIsIERhdGFEaXIsIEVWU19UUkFDS19GSUxFTkFNRSk7CisJZnAgPSBBbGxv Y2F0ZUZpbGUocGF0aCwgInIiKTsKKwlpZiAoIWZwKQorCQlyZXR1cm47CisKKwl3aGlsZSAo ZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZnApKQorCXsKKwkJaWYgKHN0cm5jbXAoYnVmLCAi W2RhdGFiYXNlc10iLCAxMSkgPT0gMCkKKwkJeworCQkJaW5fcmVsYXRpb25zID0gZmFsc2U7 CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoc3RybmNtcChidWYsICJbcmVsYXRpb25zXSIs IDExKSA9PSAwKQorCQl7CisJCQlpbl9yZWxhdGlvbnMgPSB0cnVlOworCQkJY29udGludWU7 CisJCX0KKwkJaWYgKGluX3JlbGF0aW9ucykKKwkJeworCQkJaWYgKHNzY2FuZihidWYsICIl dSAldSIsICZrZXkuZGJvaWQsICZrZXkucmVsb2lkKSA9PSAyKQorCQkJCWhhc2hfc2VhcmNo KGV2c190cmFja19yZWxhdGlvbnNfaGFzaCwgJmtleSwgSEFTSF9FTlRFUiwgJmZvdW5kKTsK KwkJCWVsc2UgaWYgKHNzY2FuZihidWYsICIldSIsICZvaWQpID09IDEpCisJCQl7CisJCQkJ a2V5LmRib2lkID0gSW52YWxpZE9pZDsKKwkJCQlrZXkucmVsb2lkID0gb2lkOworCQkJCWhh c2hfc2VhcmNoKGV2c190cmFja19yZWxhdGlvbnNfaGFzaCwgJmtleSwgSEFTSF9FTlRFUiwg JmZvdW5kKTsKKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChzc2NhbmYoYnVmLCAi JXUiLCAmb2lkKSA9PSAxKQorCQkJCWhhc2hfc2VhcmNoKGV2c190cmFja19kYXRhYmFzZXNf aGFzaCwgJm9pZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwkJfQorCX0KKwlGcmVlRmlsZShm cCk7Cit9CisKK3N0YXRpYyB2b2lkCitldnNfdHJhY2tfc2F2ZV9maWxlKHZvaWQpCit7CisJ Y2hhcgkJcGF0aFtNQVhQR1BBVEhdOworCWNoYXIJCXRtcHBhdGhbTUFYUEdQQVRIXTsKKwlG SUxFCSAgICpmcDsKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCU9pZAkJICAgKmVudHJ5 OworCUV2c1RyYWNrUmVsS2V5ICpyZWxfZW50cnk7CisKKwlpZiAoIURhdGFEaXIgfHwgRGF0 YURpclswXSA9PSAnXDAnIHx8ICFldnNfdHJhY2tfZGF0YWJhc2VzX2hhc2ggfHwgIWV2c190 cmFja19yZWxhdGlvbnNfaGFzaCkKKwkJcmV0dXJuOworCisJc25wcmludGYocGF0aCwgc2l6 ZW9mKHBhdGgpLCAiJXMvJXMiLCBEYXRhRGlyLCBFVlNfVFJBQ0tfRklMRU5BTUUpOworCXNu cHJpbnRmKHRtcHBhdGgsIHNpemVvZih0bXBwYXRoKSwgIiVzLyVzLnRtcCIsIERhdGFEaXIs IEVWU19UUkFDS19GSUxFTkFNRSk7CisJZnAgPSBBbGxvY2F0ZUZpbGUodG1wcGF0aCwgInci KTsKKwlpZiAoIWZwKQorCQlyZXR1cm47CisKKwlmcHJpbnRmKGZwLCAiW2RhdGFiYXNlc11c biIpOworCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgZXZzX3RyYWNrX2RhdGFiYXNlc19oYXNo KTsKKwl3aGlsZSAoKGVudHJ5ID0gKE9pZCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJCWZwcmludGYoZnAsICIldVxuIiwgKmVudHJ5KTsKKworCWZwcmludGYo ZnAsICJbcmVsYXRpb25zXVxuIik7CisJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBldnNfdHJh Y2tfcmVsYXRpb25zX2hhc2gpOworCXdoaWxlICgocmVsX2VudHJ5ID0gKEV2c1RyYWNrUmVs S2V5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCWlmIChP aWRJc1ZhbGlkKHJlbF9lbnRyeS0+ZGJvaWQpKQorCQkJZnByaW50ZihmcCwgIiV1ICV1XG4i LCByZWxfZW50cnktPmRib2lkLCByZWxfZW50cnktPnJlbG9pZCk7CisJCWVsc2UKKwkJCWZw cmludGYoZnAsICIwICV1XG4iLCByZWxfZW50cnktPnJlbG9pZCk7CisJfQorCisJaWYgKEZy ZWVGaWxlKGZwKSAhPSAwIHx8IHJlbmFtZSh0bXBwYXRoLCBwYXRoKSAhPSAwKQorCQl1bmxp bmsodG1wcGF0aCk7Cit9CisKKy8qCisgKiBDaGVjayBpZiBPSUQgaXMgaW4gdGhlIGdpdmVu IGhhc2gKKyAqLworc3RhdGljIGJvb2wKK2V2c19vaWRfaW5fbGlzdChIVEFCICpoYXNoLCBP aWQgb2lkKQoreworCWlmICghaGFzaCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChoYXNoX2dl dF9udW1fZW50cmllcyhoYXNoKSA9PSAwKQorCQlyZXR1cm4gZmFsc2U7CisJcmV0dXJuIGhh c2hfc2VhcmNoKGhhc2gsICZvaWQsIEhBU0hfRklORCwgTlVMTCkgIT0gTlVMTDsKK30KKwor LyoKKyAqIENoZWNrIGlmIChkYm9pZCwgcmVsaWQpIGlzIGluIHRyYWNrX3JlbGF0aW9ucyBs aXN0LgorICovCitzdGF0aWMgYm9vbAorZXZzX3JlbF9pbl9saXN0KE9pZCBkYm9pZCwgT2lk IHJlbGlkKQoreworCUV2c1RyYWNrUmVsS2V5IGtleTsKKworCWlmICghZXZzX3RyYWNrX3Jl bGF0aW9uc19oYXNoKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKGhhc2hfZ2V0X251bV9lbnRy aWVzKGV2c190cmFja19yZWxhdGlvbnNfaGFzaCkgPT0gMCkKKwkJcmV0dXJuIGZhbHNlOwor CWtleS5kYm9pZCA9IGRib2lkOworCWtleS5yZWxvaWQgPSByZWxpZDsKKwlpZiAoaGFzaF9z ZWFyY2goZXZzX3RyYWNrX3JlbGF0aW9uc19oYXNoLCAma2V5LCBIQVNIX0ZJTkQsIE5VTEwp ICE9IE5VTEwpCisJCXJldHVybiB0cnVlOworCWtleS5kYm9pZCA9IEludmFsaWRPaWQ7CisJ cmV0dXJuIGhhc2hfc2VhcmNoKGV2c190cmFja19yZWxhdGlvbnNfaGFzaCwgJmtleSwgSEFT SF9GSU5ELCBOVUxMKSAhPSBOVUxMOworfQorCisvKgorICogRGVjaWRlIHdoZXRoZXIgdG8g dHJhY2sgc3RhdGlzdGljcyBmb3IgcmVsYXRpb25zLgorICogUmVsYXRpb24gaXMgdHJhY2tl ZCBpZiBpdCBpcyBpbiB0aGUgdHJhY2sgbGlzdCBvciBhIHNwZWNpYWwgZmlsdGVyIGlzIGVu YWJsZWQuCisgKi8KK3N0YXRpYyBib29sCitldnNfc2hvdWxkX3RyYWNrX3JlbGF0aW9uX3N0 YXRpc3RpY3MoT2lkIGRib2lkLCBPaWQgcmVsaWQpCit7CisJZXZzX3RyYWNrX2hhc2hfZW5z dXJlX2luaXQoKTsKKworCWlmIChldnNfdHJhY2tfZGF0YWJhc2VzX2Zyb21fbGlzdCAmJgor CQkhZXZzX29pZF9pbl9saXN0KGV2c190cmFja19kYXRhYmFzZXNfaGFzaCwgZGJvaWQpKQor CQlyZXR1cm4gZmFsc2U7CisJaWYgKGV2c190cmFja19yZWxhdGlvbnNfZnJvbV9saXN0ICYm CisJCSEoZXZzX3JlbF9pbl9saXN0KGRib2lkLCByZWxpZCkgfHwgZXZzX3JlbF9pbl9saXN0 KEludmFsaWRPaWQsIHJlbGlkKSkpCisJCXJldHVybiBmYWxzZTsKKworCWlmICgoZXZzX3Ry YWNrX2JpdHMgJiBFVlNfVFJBQ0tfUkVMQVRJT05TKSA9PSAwKQorCQlyZXR1cm4gZmFsc2U7 CQkJLyogZGF0YWJhc2Utb25seSBtb2RlICovCisJaWYgKGV2c190cmFja19yZWxhdGlvbnNf Yml0cyA9PSBFVlNfRklMVEVSX1NZU1RFTSkKKwkJcmV0dXJuIElzQ2F0YWxvZ1JlbGF0aW9u T2lkKHJlbGlkKTsKKwlpZiAoZXZzX3RyYWNrX3JlbGF0aW9uc19iaXRzID09IEVWU19GSUxU RVJfVVNFUikKKwkJcmV0dXJuICFJc0NhdGFsb2dSZWxhdGlvbk9pZChyZWxpZCk7CisJcmV0 dXJuIHRydWU7Cit9CisKKy8qCisgKiBEZWNpZGUgd2hldGhlciB0byB0cmFjayBzdGF0aXN0 aWNzIGZvciBkYXRhYmFzZXMuCisgKiBEYXRhYmFzZSBzdGF0aXN0aWNzIGlzIHRyYWNrZWQg aWYgaXQgaXMgaW4gdGhlIHRyYWNrIGxpc3Qgb3IgYSBzcGVjaWFsIGZpbHRlciBpcyBlbmFi bGVkLgorICovCitzdGF0aWMgYm9vbAorZXZzX3Nob3VsZF90cmFja19kYXRhYmFzZV9zdGF0 aXN0aWNzKE9pZCBkYm9pZCkKK3sKKwlldnNfdHJhY2tfaGFzaF9lbnN1cmVfaW5pdCgpOwor CisJaWYgKGV2c190cmFja19kYXRhYmFzZXNfZnJvbV9saXN0ICYmCisJCSFldnNfb2lkX2lu X2xpc3QoZXZzX3RyYWNrX2RhdGFiYXNlc19oYXNoLCBkYm9pZCkpCisJCXJldHVybiBmYWxz ZTsKKwlpZiAoKGV2c190cmFja19iaXRzICYgRVZTX1RSQUNLX0RBVEFCQVNFUykgPT0gMCkK KwkJcmV0dXJuIGZhbHNlOwkJCS8qIHJlbGF0aW9ucy1vbmx5IG1vZGUgKi8KKwlpZiAoZXZz X3RyYWNrX2JpdHMgPT0gRVZTX1RSQUNLX0RBVEFCQVNFUykKKwkJcmV0dXJuIHRydWU7CQkJ LyogZGF0YWJhc2VzLW9ubHksIGFjY3VtdWxhdGUgdG8gZGIgKi8KKwlyZXR1cm4gdHJ1ZTsK K30KKworCisvKiBBY2N1bXVsYXRlIGNvbW1vbiBjb3VudHMgZm9yIGRhdGFiYXNlLWxldmVs IHN0YXRzLiAqLworc3RhdGljIGlubGluZSB2b2lkCitwZ3N0YXRfYWNjdW11bGF0ZV9jb21t b25fZm9yX2RiKFBnU3RhdF9Db21tb25Db3VudHMgKiBkc3QsCisJCQkJCQkJCWNvbnN0IFBn U3RhdF9Db21tb25Db3VudHMgKiBzcmMpCit7CisJcGdzdGF0X2FjY3VtdWxhdGVfY29tbW9u KGRzdCwgc3JjKTsKK30KKworLyoKKyAqIFN0b3JlIGluY29taW5nIHZhY3V1bSBzdGF0cyBp bnRvIHBnc3RhdCBjdXN0b20gc3RhdGlzdGljcy4KKyAqIHN0b3JlX3JlbGF0aW9uOiBjcmVh dGUvdXBkYXRlIHBlci1yZWxhdGlvbiBlbnRyeQorICogc3RvcmVfZGI6IGFjY3VtdWxhdGUg aW50byBkYXRhYmFzZS1sZXZlbCBlbnRyeSAoZGJvaWQsIG9iamlkPTApLgorICogVXNlcyBw Z3N0YXRfZ2V0X2VudHJ5X3JlZl9sb2NrZWQgYW5kIHBnc3RhdF9hY2N1bXVsYXRlXyogZm9y IGF0b21pYyB1cGRhdGVzLgorICovCitzdGF0aWMgdm9pZAorZXh0dmFjX3N0b3JlKE9pZCBk Ym9pZCwgT2lkIHJlbGlkLCBpbnQgdHlwZSwKKwkJCSBQZ1N0YXRfVmFjdXVtUmVsYXRpb25D b3VudHMgKiBwYXJhbXMsCisJCQkgYm9vbCBzdG9yZV9yZWxhdGlvbiwgYm9vbCBzdG9yZV9k YikKK3sKKwlQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZjsKKwlQZ1N0YXRTaGFyZWRfRXh0 VmFjRW50cnkgKnNoYXJlZDsKKwl1aW50NjQJCW9iamlkOworCisJaWYgKCFldnNfZW5hYmxl ZCkKKwkJcmV0dXJuOworCisJaWYgKHN0b3JlX3JlbGF0aW9uKQorCXsKKwkJb2JqaWQgPSBF WFRWQUNfT0JKSUQocmVsaWQsIHR5cGUpOworCQllbnRyeV9yZWYgPSBwZ3N0YXRfZ2V0X2Vu dHJ5X3JlZl9sb2NrZWQoUEdTVEFUX0tJTkRfRVhUVkFDX1JFTEFUSU9OLCBkYm9pZCwgb2Jq aWQsIGZhbHNlKTsKKwkJaWYgKGVudHJ5X3JlZikKKwkJeworCQkJc2hhcmVkID0gKFBnU3Rh dFNoYXJlZF9FeHRWYWNFbnRyeSAqKSBlbnRyeV9yZWYtPnNoYXJlZF9zdGF0czsKKwkJCWlm IChzaGFyZWQtPnN0YXRzLnR5cGUgPT0gUEdTVEFUX0VYVFZBQ19JTlZBTElEKQorCQkJewor CQkJCW1lbXNldCgmc2hhcmVkLT5zdGF0cywgMCwgc2l6ZW9mKHNoYXJlZC0+c3RhdHMpKTsK KwkJCQlzaGFyZWQtPnN0YXRzLnR5cGUgPSBwYXJhbXMtPnR5cGU7CisJCQl9CisJCQlwZ3N0 YXRfYWNjdW11bGF0ZV9leHR2YWNfc3RhdHMoJnNoYXJlZC0+c3RhdHMsIHBhcmFtcyk7CisJ CQlwZ3N0YXRfdW5sb2NrX2VudHJ5KGVudHJ5X3JlZik7CisJCX0KKwl9CisKKwlpZiAoc3Rv cmVfZGIpCisJeworCQllbnRyeV9yZWYgPSBwZ3N0YXRfZ2V0X2VudHJ5X3JlZl9sb2NrZWQo UEdTVEFUX0tJTkRfRVhUVkFDX0RCLCBkYm9pZCwgSW52YWxpZE9pZCwgZmFsc2UpOworCQlp ZiAoZW50cnlfcmVmKQorCQl7CisJCQlzaGFyZWQgPSAoUGdTdGF0U2hhcmVkX0V4dFZhY0Vu dHJ5ICopIGVudHJ5X3JlZi0+c2hhcmVkX3N0YXRzOworCQkJaWYgKHNoYXJlZC0+c3RhdHMu dHlwZSA9PSBQR1NUQVRfRVhUVkFDX0lOVkFMSUQpCisJCQl7CisJCQkJbWVtc2V0KCZzaGFy ZWQtPnN0YXRzLCAwLCBzaXplb2Yoc2hhcmVkLT5zdGF0cykpOworCQkJCXNoYXJlZC0+c3Rh dHMudHlwZSA9IFBHU1RBVF9FWFRWQUNfREI7CisJCQl9CisJCQlwZ3N0YXRfYWNjdW11bGF0 ZV9jb21tb25fZm9yX2RiKCZzaGFyZWQtPnN0YXRzLmNvbW1vbiwgJnBhcmFtcy0+Y29tbW9u KTsKKwkJCXBnc3RhdF91bmxvY2tfZW50cnkoZW50cnlfcmVmKTsKKwkJfQorCX0KK30KKwor LyoKKyAqIFZhY3V1bSByZXBvcnQgaG9vazogY2FsbGVkIHdoZW4gdmFjdXVtIGZpbmlzaGVz LiBGaWx0ZXJzIGJ5IHRyYWNrIHNldHRpbmdzLAorICogc3RvcmVzIHN0YXRzIHBlci1yZWxh dGlvbiBhbmQvb3IgcGVyLWRhdGFiYXNlLCB0aGVuIGNoYWlucyB0byBwcmV2aW91cyBob29r LgorICovCitzdGF0aWMgdm9pZAorcGdzdGF0X3JlcG9ydF92YWN1dW1fZXh0c3RhdHMoT2lk IHRhYmxlb2lkLCBib29sIHNoYXJlZCwKKwkJCQkJCQkgIFBnU3RhdF9WYWN1dW1SZWxhdGlv bkNvdW50cyAqIHBhcmFtcykKK3sKKwlPaWQJCQlkYm9pZCA9IHNoYXJlZCA/IEludmFsaWRP aWQgOiBNeURhdGFiYXNlSWQ7CisJYm9vbAkJc3RvcmVfcmVsYXRpb247CisJYm9vbAkJc3Rv cmVfZGI7CisKKwlpZiAoZXZzX2VuYWJsZWQpCisJeworCQlzdG9yZV9yZWxhdGlvbiA9IGV2 c19zaG91bGRfdHJhY2tfcmVsYXRpb25fc3RhdGlzdGljcyhkYm9pZCwgdGFibGVvaWQpOwor CQlzdG9yZV9kYiA9IGV2c19zaG91bGRfdHJhY2tfZGF0YWJhc2Vfc3RhdGlzdGljcyhkYm9p ZCk7CisKKwkJaWYgKHN0b3JlX3JlbGF0aW9uIHx8IHN0b3JlX2RiKQorCQkJZXh0dmFjX3N0 b3JlKGRib2lkLCB0YWJsZW9pZCwgcGFyYW1zLT50eXBlLCBwYXJhbXMsIHN0b3JlX3JlbGF0 aW9uLCBzdG9yZV9kYik7CisJfQorCWlmIChwcmV2X3JlcG9ydF92YWN1dW1faG9vaykKKwkJ cHJldl9yZXBvcnRfdmFjdXVtX2hvb2sodGFibGVvaWQsIHNoYXJlZCwgcGFyYW1zKTsKK30K KworLyogUmVzZXQgc3RhdGlzdGljcyBmb3IgYSBzaW5nbGUgcmVsYXRpb24gZW50cnkuICov CitzdGF0aWMgYm9vbAorZXh0dmFjX3Jlc2V0X2J5X3JlbGlkKE9pZCBkYm9pZCwgT2lkIHJl bGlkLCBpbnQgdHlwZSkKK3sKKwl1aW50NjQJCW9iamlkID0gRVhUVkFDX09CSklEKHJlbGlk LCB0eXBlKTsKKworCXBnc3RhdF9yZXNldF9lbnRyeShQR1NUQVRfS0lORF9FWFRWQUNfUkVM QVRJT04sIGRib2lkLCBvYmppZCwgMCk7CisJcmV0dXJuIHRydWU7Cit9CisKKy8qIENhbGxi YWNrIGZvciBwZ3N0YXRfcmVzZXRfbWF0Y2hpbmdfZW50cmllczogbWF0Y2ggcmVsYXRpb24g ZW50cmllcyBmb3IgZ2l2ZW4gZGIgKi8KK3N0YXRpYyBib29sCittYXRjaF9leHR2YWNfcmVs YXRpb25zX2Zvcl9kYihQZ1N0YXRTaGFyZWRfSGFzaEVudHJ5ICplbnRyeSwgRGF0dW0gbWF0 Y2hfZGF0YSkKK3sKKwlyZXR1cm4gZW50cnktPmtleS5raW5kID09IFBHU1RBVF9LSU5EX0VY VFZBQ19SRUxBVElPTiAmJgorCQllbnRyeS0+a2V5LmRib2lkID09IERhdHVtR2V0T2JqZWN0 SWQobWF0Y2hfZGF0YSk7Cit9CisKKy8qCisgKiBSZXNldCBzdGF0aXN0aWNzIGZvciBhIGRh dGFiYXNlIChhZ2dyZWdhdGUgZW50cnkpIGFuZCBhbGwgaXRzIHJlbGF0aW9ucy4KKyAqLwor c3RhdGljIGludDY0CitleHR2YWNfZGF0YWJhc2VfcmVzZXQoT2lkIGRib2lkKQoreworCXBn c3RhdF9yZXNldF9tYXRjaGluZ19lbnRyaWVzKG1hdGNoX2V4dHZhY19yZWxhdGlvbnNfZm9y X2RiLAorCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oZGJvaWQpLCAwKTsKKwlwZ3N0YXRf cmVzZXRfZW50cnkoUEdTVEFUX0tJTkRfRVhUVkFDX0RCLCBkYm9pZCwgMCwgMCk7CisJcmV0 dXJuIDE7Cit9CisKKy8qIFJlc2V0IGFsbCB2YWN1dW0gc3RhdGlzdGljcyAoYm90aCByZWxh dGlvbiBhbmQgZGF0YWJhc2UgZW50cmllcykuICovCitzdGF0aWMgaW50NjQKK2V4dHZhY19z dGF0X3Jlc2V0KHZvaWQpCit7CisJcGdzdGF0X3Jlc2V0X29mX2tpbmQoUEdTVEFUX0tJTkRf RVhUVkFDX1JFTEFUSU9OKTsKKwlwZ3N0YXRfcmVzZXRfb2Zfa2luZChQR1NUQVRfS0lORF9F WFRWQUNfREIpOworCXJldHVybiAwOwkJCQkJLyogY291bnQgbm90IGF2YWlsYWJsZSAqLwor fQorCitQR19GVU5DVElPTl9JTkZPX1YxKHZhY3V1bV9zdGF0aXN0aWNzX3Jlc2V0KTsKK1BH X0ZVTkNUSU9OX0lORk9fVjEoZXh0dmFjX3NoYXJlZF9tZW1vcnlfc2l6ZSk7CitQR19GVU5D VElPTl9JTkZPX1YxKGV4dHZhY19yZXNldF9lbnRyeSk7CitQR19GVU5DVElPTl9JTkZPX1Yx KGV4dHZhY19yZXNldF9kYl9lbnRyeSk7CisKK0RhdHVtCit2YWN1dW1fc3RhdGlzdGljc19y ZXNldChQR19GVU5DVElPTl9BUkdTKQoreworCVBHX1JFVFVSTl9JTlQ2NChleHR2YWNfc3Rh dF9yZXNldCgpKTsKK30KKworRGF0dW0KK2V4dHZhY19yZXNldF9lbnRyeShQR19GVU5DVElP Tl9BUkdTKQoreworCU9pZAkJCWRib2lkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlPaWQJCQly ZWxpZCA9IFBHX0dFVEFSR19PSUQoMSk7CisJaW50CQkJdHlwZSA9IFBHX0dFVEFSR19JTlQz MigyKTsKKworCVBHX1JFVFVSTl9CT09MKGV4dHZhY19yZXNldF9ieV9yZWxpZChkYm9pZCwg cmVsaWQsIHR5cGUpKTsKK30KKworRGF0dW0KK2V4dHZhY19yZXNldF9kYl9lbnRyeShQR19G VU5DVElPTl9BUkdTKQoreworCU9pZAkJCWRib2lkID0gUEdfR0VUQVJHX09JRCgwKTsKKwor CVBHX1JFVFVSTl9JTlQ2NChleHR2YWNfZGF0YWJhc2VfcmVzZXQoZGJvaWQpKTsKK30KKwor LyoKKyAqIFJldHVybiB0b3RhbCBzaGFyZWQgbWVtb3J5IGluIGJ5dGVzIHVzZWQgYnkgdGhl IGV4dGVuc2lvbiBmb3IgdmFjdXVtIHN0YXRzLgorICogVXNlZCBmb3IgbW9uaXRvcmluZyBh bmQgY2FwYWNpdHkgcGxhbm5pbmc6IG1lbW9yeSBncm93cyB3aXRoIHRoZSBudW1iZXIgb2YK KyAqIHRyYWNrZWQgcmVsYXRpb25zIGFuZCBkYXRhYmFzZXMuCisgKi8KK0RhdHVtCitleHR2 YWNfc2hhcmVkX21lbW9yeV9zaXplKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJdWludDY0CQly ZWxfY291bnQ7CisJdWludDY0CQlkYl9jb3VudDsKKwl1aW50NjQJCXRvdGFsOworCXNpemVf dAkJZW50cnlfc2l6ZSA9IHNpemVvZihQZ1N0YXRTaGFyZWRfRXh0VmFjRW50cnkpOworCisJ cmVsX2NvdW50ID0gcGdzdGF0X2dldF9lbnRyeV9jb3VudChQR1NUQVRfS0lORF9FWFRWQUNf UkVMQVRJT04pOworCWRiX2NvdW50ID0gcGdzdGF0X2dldF9lbnRyeV9jb3VudChQR1NUQVRf S0lORF9FWFRWQUNfREIpOworCXRvdGFsID0gcmVsX2NvdW50ICsgZGJfY291bnQ7CisKKwlQ R19SRVRVUk5fSU5UNjQoKGludDY0KSAodG90YWwgKiBlbnRyeV9zaXplKSk7Cit9CisKKy8q CisgKiBUcmFjayBsaXN0IG1hbmFnZW1lbnQ6IGFkZC9yZW1vdmUgZGF0YWJhc2Ugb3IgcmVs YXRpb24gT0lEcy4KKyAqIENoYW5nZXMgYXJlIHBlcnNpc3RlZCB0byBwZ19zdGF0L2V4dF92 YWN1dW1fc3RhdGlzdGljc190cmFjay5vaWQuCisgKi8KKworUEdfRlVOQ1RJT05fSU5GT19W MShldnNfYWRkX3RyYWNrX2RhdGFiYXNlKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZXZzX3Jl bW92ZV90cmFja19kYXRhYmFzZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKGV2c19hZGRfdHJh Y2tfcmVsYXRpb24pOworUEdfRlVOQ1RJT05fSU5GT19WMShldnNfcmVtb3ZlX3RyYWNrX3Jl bGF0aW9uKTsKKworRGF0dW0KK2V2c19hZGRfdHJhY2tfZGF0YWJhc2UoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlPaWQJCQlvaWQgPSBQR19HRVRBUkdfT0lEKDApOworCWJvb2wJCWZvdW5k OworCisJZXZzX3RyYWNrX2hhc2hfZW5zdXJlX2luaXQoKTsKKwloYXNoX3NlYXJjaChldnNf dHJhY2tfZGF0YWJhc2VzX2hhc2gsICZvaWQsIEhBU0hfRU5URVIsICZmb3VuZCk7CisJZXZz X3RyYWNrX3NhdmVfZmlsZSgpOworCVBHX1JFVFVSTl9CT09MKCFmb3VuZCk7CQkvKiB0cnVl IGlmIG5ld2x5IGFkZGVkICovCit9CisKK0RhdHVtCitldnNfcmVtb3ZlX3RyYWNrX2RhdGFi YXNlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJb2lkID0gUEdfR0VUQVJHX09JRCgw KTsKKwlib29sCQlmb3VuZDsKKworCWV2c190cmFja19oYXNoX2Vuc3VyZV9pbml0KCk7CisJ aGFzaF9zZWFyY2goZXZzX3RyYWNrX2RhdGFiYXNlc19oYXNoLCAmb2lkLCBIQVNIX1JFTU9W RSwgJmZvdW5kKTsKKwlldnNfdHJhY2tfc2F2ZV9maWxlKCk7CisJUEdfUkVUVVJOX0JPT0wo Zm91bmQpOworfQorCitEYXR1bQorZXZzX2FkZF90cmFja19yZWxhdGlvbihQR19GVU5DVElP Tl9BUkdTKQoreworCUV2c1RyYWNrUmVsS2V5IGtleTsKKworCWtleS5kYm9pZCA9IFBHX0dF VEFSR19PSUQoMCk7CisJa2V5LnJlbG9pZCA9IFBHX0dFVEFSR19PSUQoMSk7CisJeworCQli b29sCQlmb3VuZDsKKworCQlldnNfdHJhY2tfaGFzaF9lbnN1cmVfaW5pdCgpOworCQloYXNo X3NlYXJjaChldnNfdHJhY2tfcmVsYXRpb25zX2hhc2gsICZrZXksIEhBU0hfRU5URVIsICZm b3VuZCk7CisJCWV2c190cmFja19zYXZlX2ZpbGUoKTsKKwkJUEdfUkVUVVJOX0JPT0woIWZv dW5kKTsgLyogdHJ1ZSBpZiBuZXdseSBhZGRlZCAqLworCX0KK30KKworRGF0dW0KK2V2c19y ZW1vdmVfdHJhY2tfcmVsYXRpb24oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlFdnNUcmFja1Jl bEtleSBrZXk7CisJYm9vbAkJZm91bmQ7CisKKwlrZXkuZGJvaWQgPSBQR19HRVRBUkdfT0lE KDApOworCWtleS5yZWxvaWQgPSBQR19HRVRBUkdfT0lEKDEpOworCWV2c190cmFja19oYXNo X2Vuc3VyZV9pbml0KCk7CisJaGFzaF9zZWFyY2goZXZzX3RyYWNrX3JlbGF0aW9uc19oYXNo LCAma2V5LCBIQVNIX1JFTU9WRSwgJmZvdW5kKTsKKwlldnNfdHJhY2tfc2F2ZV9maWxlKCk7 CisJUEdfUkVUVVJOX0JPT0woZm91bmQpOworfQorCisvKgorICogUmV0dXJucyB0aGUgbGlz dCBvZiBkYXRhYmFzZSBhbmQgcmVsYXRpb24gT0lEcyBmb3Igd2hpY2ggc3RhdGlzdGljcwor ICogYXJlIGNvbGxlY3RlZC4KKyAqLworUEdfRlVOQ1RJT05fSU5GT19WMShldnNfdHJhY2tf bGlzdCk7CisKK0RhdHVtCitldnNfdHJhY2tfbGlzdChQR19GVU5DVElPTl9BUkdTKQorewor CVJldHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVz dWx0aW5mbzsKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlUdXBsZXN0b3Jlc3RhdGUgKnR1cHN0 b3JlOworCU1lbW9yeUNvbnRleHQgcGVyX3F1ZXJ5X2N0eDsKKwlNZW1vcnlDb250ZXh0IG9s ZGNvbnRleHQ7CisJRGF0dW0JCXZhbHVlc1szXTsKKwlib29sCQludWxsc1szXSA9IHtmYWxz ZSwgZmFsc2UsIGZhbHNlfTsKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCU9pZAkJICAg KmVudHJ5OworCUV2c1RyYWNrUmVsS2V5ICpyZWxfZW50cnk7CisKKwlpZiAoIXJzaW5mbyB8 fCAhSXNBKHJzaW5mbywgUmV0dXJuU2V0SW5mbykpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2co ImV4dF92YWN1dW1fc3RhdGlzdGljczogc2V0LXZhbHVlZCBmdW5jdGlvbiBjYWxsZWQgaW4g Y29udGV4dCB0aGF0IGNhbm5vdCBhY2NlcHQgYSBzZXQiKSkpOworCWlmICghKHJzaW5mby0+ YWxsb3dlZE1vZGVzICYgU0ZSTV9NYXRlcmlhbGl6ZSkpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJt c2coImV4dF92YWN1dW1fc3RhdGlzdGljczogbWF0ZXJpYWxpemUgbW9kZSByZXF1aXJlZCIp KSk7CisKKwlldnNfdHJhY2tfaGFzaF9lbnN1cmVfaW5pdCgpOworCisJcGVyX3F1ZXJ5X2N0 eCA9IHJzaW5mby0+ZWNvbnRleHQtPmVjeHRfcGVyX3F1ZXJ5X21lbW9yeTsKKwlvbGRjb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBlcl9xdWVyeV9jdHgpOworCisJaWYgKGdl dF9jYWxsX3Jlc3VsdF90eXBlKGZjaW5mbywgTlVMTCwgJnR1cGRlc2MpICE9IFRZUEVGVU5D X0NPTVBPU0lURSkKKwkJZWxvZyhFUlJPUiwgImV4dF92YWN1dW1fc3RhdGlzdGljczogcmV0 dXJuIHR5cGUgbXVzdCBiZSBhIHJvdyB0eXBlIik7CisKKwl0dXBzdG9yZSA9IHR1cGxlc3Rv cmVfYmVnaW5faGVhcCh0cnVlLCBmYWxzZSwgd29ya19tZW0pOworCXJzaW5mby0+cmV0dXJu TW9kZSA9IFNGUk1fTWF0ZXJpYWxpemU7CisJcnNpbmZvLT5zZXRSZXN1bHQgPSB0dXBzdG9y ZTsKKwlyc2luZm8tPnNldERlc2MgPSB0dXBkZXNjOworCisJLyogRGF0YWJhc2VzICovCisJ aWYgKGhhc2hfZ2V0X251bV9lbnRyaWVzKGV2c190cmFja19kYXRhYmFzZXNfaGFzaCkgPT0g MCkKKwl7CisJCXZhbHVlc1swXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oImRhdGFiYXNlIik7 CisJCW51bGxzWzFdID0gdHJ1ZTsKKwkJbnVsbHNbMl0gPSB0cnVlOworCQl0dXBsZXN0b3Jl X3B1dHZhbHVlcyh0dXBzdG9yZSwgdHVwZGVzYywgdmFsdWVzLCBudWxscyk7CisJCW51bGxz WzFdID0gZmFsc2U7CisJCW51bGxzWzJdID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgZXZzX3RyYWNrX2RhdGFiYXNlc19oYXNoKTsKKwkJd2hp bGUgKChlbnRyeSA9IChPaWQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxM KQorCQl7CisJCQl2YWx1ZXNbMF0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKCJkYXRhYmFzZSIp OworCQkJdmFsdWVzWzFdID0gT2JqZWN0SWRHZXREYXR1bSgqZW50cnkpOworCQkJbnVsbHNb Ml0gPSB0cnVlOworCQkJdHVwbGVzdG9yZV9wdXR2YWx1ZXModHVwc3RvcmUsIHR1cGRlc2Ms IHZhbHVlcywgbnVsbHMpOworCQkJbnVsbHNbMl0gPSBmYWxzZTsKKwkJfQorCX0KKworCS8q IFJlbGF0aW9ucyAqLworCWlmIChoYXNoX2dldF9udW1fZW50cmllcyhldnNfdHJhY2tfcmVs YXRpb25zX2hhc2gpID09IDApCisJeworCQl2YWx1ZXNbMF0gPSBDU3RyaW5nR2V0VGV4dERh dHVtKCJyZWxhdGlvbiIpOworCQludWxsc1sxXSA9IHRydWU7CisJCW51bGxzWzJdID0gdHJ1 ZTsKKwkJdHVwbGVzdG9yZV9wdXR2YWx1ZXModHVwc3RvcmUsIHR1cGRlc2MsIHZhbHVlcywg bnVsbHMpOworCQludWxsc1sxXSA9IGZhbHNlOworCQludWxsc1syXSA9IGZhbHNlOworCX0K KwllbHNlCisJeworCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGV2c190cmFja19yZWxhdGlv bnNfaGFzaCk7CisJCXdoaWxlICgocmVsX2VudHJ5ID0gKEV2c1RyYWNrUmVsS2V5ICopIGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJeworCQkJdmFsdWVzWzBdID0g Q1N0cmluZ0dldFRleHREYXR1bSgicmVsYXRpb24iKTsKKwkJCXZhbHVlc1sxXSA9IE9iamVj dElkR2V0RGF0dW0ocmVsX2VudHJ5LT5kYm9pZCk7CisJCQl2YWx1ZXNbMl0gPSBPYmplY3RJ ZEdldERhdHVtKHJlbF9lbnRyeS0+cmVsb2lkKTsKKwkJCXR1cGxlc3RvcmVfcHV0dmFsdWVz KHR1cHN0b3JlLCB0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKTsKKwkJfQorCX0KKworCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiAoRGF0dW0pIDA7Cit9 CisKKy8qCisgKiBPdXRwdXQgdmFjdXVtIHN0YXRpc3RpY3MgKHRhYmxlcywgaW5kZXhlcywg b3IgcGVyLWRhdGFiYXNlIGFnZ3JlZ2F0ZXMpLgorICovCisjZGVmaW5lIEVYVFZBQ19DT01N T05fU1RBVF9DT0xTIDEyCisKK3N0YXRpYyB2b2lkCit0dXBsZXN0b3JlX3B1dF9jb21tb24o UGdTdGF0X0NvbW1vbkNvdW50cyAqIHZhY3V1bV9leHQsCisJCQkJCSAgRGF0dW0gKnZhbHVl cywgYm9vbCAqbnVsbHMsIGludCAqaSkKK3sKKwljaGFyCQlidWZbMjU2XTsKKwljb25zdCBp bnQJYmFzZSA9ICppOworCisJdmFsdWVzWygqaSkrK10gPSBJbnQ2NEdldERhdHVtKHZhY3V1 bV9leHQtPnRvdGFsX2Jsa3NfcmVhZCk7CisJdmFsdWVzWygqaSkrK10gPSBJbnQ2NEdldERh dHVtKHZhY3V1bV9leHQtPnRvdGFsX2Jsa3NfaGl0KTsKKwl2YWx1ZXNbKCppKSsrXSA9IElu dDY0R2V0RGF0dW0odmFjdXVtX2V4dC0+dG90YWxfYmxrc19kaXJ0aWVkKTsKKwl2YWx1ZXNb KCppKSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVtX2V4dC0+dG90YWxfYmxrc193cml0dGVu KTsKKwl2YWx1ZXNbKCppKSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVtX2V4dC0+d2FsX3Jl Y29yZHMpOworCXZhbHVlc1soKmkpKytdID0gSW50NjRHZXREYXR1bSh2YWN1dW1fZXh0LT53 YWxfZnBpKTsKKwlzbnByaW50ZihidWYsIHNpemVvZiBidWYsIFVJTlQ2NF9GT1JNQVQsIHZh Y3V1bV9leHQtPndhbF9ieXRlcyk7CisJdmFsdWVzWygqaSkrK10gPSBEaXJlY3RGdW5jdGlv bkNhbGwzKG51bWVyaWNfaW4sCisJCQkJCQkJCQkJIENTdHJpbmdHZXREYXR1bShidWYpLAor CQkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKDApLAorCQkJCQkJCQkJCSBJbnQzMkdldERh dHVtKC0xKSk7CisJdmFsdWVzWygqaSkrK10gPSBGbG9hdDhHZXREYXR1bSh2YWN1dW1fZXh0 LT5ibGtfcmVhZF90aW1lKTsKKwl2YWx1ZXNbKCppKSsrXSA9IEZsb2F0OEdldERhdHVtKHZh Y3V1bV9leHQtPmJsa193cml0ZV90aW1lKTsKKwl2YWx1ZXNbKCppKSsrXSA9IEZsb2F0OEdl dERhdHVtKHZhY3V1bV9leHQtPmRlbGF5X3RpbWUpOworCXZhbHVlc1soKmkpKytdID0gRmxv YXQ4R2V0RGF0dW0odmFjdXVtX2V4dC0+dG90YWxfdGltZSk7CisJdmFsdWVzWygqaSkrK10g PSBJbnQzMkdldERhdHVtKHZhY3V1bV9leHQtPndyYXBhcm91bmRfZmFpbHNhZmVfY291bnQp OworCUFzc2VydCgoKmkgLSBiYXNlKSA9PSBFWFRWQUNfQ09NTU9OX1NUQVRfQ09MUyk7Cit9 CisKKyNkZWZpbmUgRVhUVkFDX0hFQVBfU1RBVF9DT0xTCTI2CisjZGVmaW5lIEVYVFZBQ19J RFhfU1RBVF9DT0xTCTE3CisjZGVmaW5lIEVYVFZBQ19NQVhfU1RBVF9DT0xTCU1heChFWFRW QUNfSEVBUF9TVEFUX0NPTFMsIEVYVFZBQ19JRFhfU1RBVF9DT0xTKQorCitzdGF0aWMgdm9p ZAordHVwbGVzdG9yZV9wdXRfZm9yX3JlbGF0aW9uKE9pZCByZWxpZCwgVHVwbGVzdG9yZXN0 YXRlICp0dXBzdG9yZSwKKwkJCQkJCQlUdXBsZURlc2MgdHVwZGVzYywgUGdTdGF0X1ZhY3V1 bVJlbGF0aW9uQ291bnRzICogdmFjdXVtX2V4dCkKK3sKKwlEYXR1bQkJdmFsdWVzW0VYVFZB Q19NQVhfU1RBVF9DT0xTXTsKKwlib29sCQludWxsc1tFWFRWQUNfTUFYX1NUQVRfQ09MU107 CisJaW50CQkJaSA9IDA7CisKKwltZW1zZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOwor CXZhbHVlc1tpKytdID0gT2JqZWN0SWRHZXREYXR1bShyZWxpZCk7CisKKwl0dXBsZXN0b3Jl X3B1dF9jb21tb24oJnZhY3V1bV9leHQtPmNvbW1vbiwgdmFsdWVzLCBudWxscywgJmkpOwor CXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh2YWN1dW1fZXh0LT5jb21tb24uYmxrc19m ZXRjaGVkIC0gdmFjdXVtX2V4dC0+Y29tbW9uLmJsa3NfaGl0KTsKKwl2YWx1ZXNbaSsrXSA9 IEludDY0R2V0RGF0dW0odmFjdXVtX2V4dC0+Y29tbW9uLmJsa3NfaGl0KTsKKworCWlmICh2 YWN1dW1fZXh0LT50eXBlID09IFBHU1RBVF9FWFRWQUNfVEFCTEUpCisJeworCQl2YWx1ZXNb aSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVtX2V4dC0+Y29tbW9uLnR1cGxlc19kZWxldGVk KTsKKwkJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHZhY3V1bV9leHQtPnRhYmxlLnBh Z2VzX3NjYW5uZWQpOworCQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVtX2V4 dC0+dGFibGUucGFnZXNfcmVtb3ZlZCk7CisJCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1 bSh2YWN1dW1fZXh0LT50YWJsZS52bV9uZXdfZnJvemVuX3BhZ2VzKTsKKwkJdmFsdWVzW2kr K10gPSBJbnQ2NEdldERhdHVtKHZhY3V1bV9leHQtPnRhYmxlLnZtX25ld192aXNpYmxlX3Bh Z2VzKTsKKwkJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHZhY3V1bV9leHQtPnRhYmxl LnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyk7CisJCXZhbHVlc1tpKytdID0gSW50NjRH ZXREYXR1bSh2YWN1dW1fZXh0LT50YWJsZS50dXBsZXNfZnJvemVuKTsKKwkJdmFsdWVzW2kr K10gPSBJbnQ2NEdldERhdHVtKHZhY3V1bV9leHQtPnRhYmxlLnJlY2VudGx5X2RlYWRfdHVw bGVzKTsKKwkJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHZhY3V1bV9leHQtPnRhYmxl LmluZGV4X3ZhY3V1bV9jb3VudCk7CisJCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh2 YWN1dW1fZXh0LT50YWJsZS5taXNzZWRfZGVhZF9wYWdlcyk7CisJCXZhbHVlc1tpKytdID0g SW50NjRHZXREYXR1bSh2YWN1dW1fZXh0LT50YWJsZS5taXNzZWRfZGVhZF90dXBsZXMpOwor CX0KKwllbHNlIGlmICh2YWN1dW1fZXh0LT50eXBlID09IFBHU1RBVF9FWFRWQUNfSU5ERVgp CisJeworCQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVtX2V4dC0+Y29tbW9u LnR1cGxlc19kZWxldGVkKTsKKwkJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHZhY3V1 bV9leHQtPmluZGV4LnBhZ2VzX2RlbGV0ZWQpOworCX0KKworCUFzc2VydChpID09ICgodmFj dXVtX2V4dC0+dHlwZSA9PSBQR1NUQVRfRVhUVkFDX1RBQkxFKSA/IEVYVFZBQ19IRUFQX1NU QVRfQ09MUyA6IEVYVFZBQ19JRFhfU1RBVF9DT0xTKSk7CisJdHVwbGVzdG9yZV9wdXR2YWx1 ZXModHVwc3RvcmUsIHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpOworfQorCitzdGF0aWMgRGF0 dW0KK3BnX3N0YXRzX3ZhY3V1bShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgaW50IHR5cGUp Cit7CisJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZv LT5yZXN1bHRpbmZvOworCU1lbW9yeUNvbnRleHQgcGVyX3F1ZXJ5X2N0eDsKKwlNZW1vcnlD b250ZXh0IG9sZGNvbnRleHQ7CisJVHVwbGVzdG9yZXN0YXRlICp0dXBzdG9yZTsKKwlUdXBs ZURlc2MJdHVwZGVzYzsKKwlPaWQJCQlkYmlkID0gUEdfR0VUQVJHX09JRCgwKTsKKworCWlm IChyc2luZm8gPT0gTlVMTCB8fCAhSXNBKHJzaW5mbywgUmV0dXJuU2V0SW5mbykpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCSBlcnJtc2coImV4dF92YWN1dW1fc3RhdGlzdGljczogc2V0LXZhbHVlZCBm dW5jdGlvbiBjYWxsZWQgaW4gY29udGV4dCB0aGF0IGNhbm5vdCBhY2NlcHQgYSBzZXQiKSkp OworCWlmICghKHJzaW5mby0+YWxsb3dlZE1vZGVzICYgU0ZSTV9NYXRlcmlhbGl6ZSkpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCSBlcnJtc2coImV4dF92YWN1dW1fc3RhdGlzdGljczogbWF0ZXJpYWxp emUgbW9kZSByZXF1aXJlZCIpKSk7CisKKwlwZXJfcXVlcnlfY3R4ID0gcnNpbmZvLT5lY29u dGV4dC0+ZWN4dF9wZXJfcXVlcnlfbWVtb3J5OworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8ocGVyX3F1ZXJ5X2N0eCk7CisKKwlpZiAoZ2V0X2NhbGxfcmVzdWx0X3R5 cGUoZmNpbmZvLCBOVUxMLCAmdHVwZGVzYykgIT0gVFlQRUZVTkNfQ09NUE9TSVRFKQorCQll bG9nKEVSUk9SLCAiZXh0X3ZhY3V1bV9zdGF0aXN0aWNzOiByZXR1cm4gdHlwZSBtdXN0IGJl IGEgcm93IHR5cGUiKTsKKworCXR1cHN0b3JlID0gdHVwbGVzdG9yZV9iZWdpbl9oZWFwKHRy dWUsIGZhbHNlLCB3b3JrX21lbSk7CisJcnNpbmZvLT5yZXR1cm5Nb2RlID0gU0ZSTV9NYXRl cmlhbGl6ZTsKKwlyc2luZm8tPnNldFJlc3VsdCA9IHR1cHN0b3JlOworCXJzaW5mby0+c2V0 RGVzYyA9IHR1cGRlc2M7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 CisKKwlpZiAodHlwZSA9PSBQR1NUQVRfRVhUVkFDX0lOREVYIHx8IHR5cGUgPT0gUEdTVEFU X0VYVFZBQ19UQUJMRSkKKwl7CisJCU9pZAkJCXJlbGlkID0gUEdfR0VUQVJHX09JRCgxKTsK KwkJUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzICpzdGF0czsKKworCQlpZiAoIU9pZElz VmFsaWQocmVsaWQpKQorCQkJcmV0dXJuIChEYXR1bSkgMDsKKworCQlzdGF0cyA9IChQZ1N0 YXRfVmFjdXVtUmVsYXRpb25Db3VudHMgKikKKwkJCXBnc3RhdF9mZXRjaF9lbnRyeShQR1NU QVRfS0lORF9FWFRWQUNfUkVMQVRJT04sIGRiaWQsIEVYVFZBQ19PQkpJRChyZWxpZCwgdHlw ZSkpOworCisJCWlmICghc3RhdHMpCisJCQlzdGF0cyA9IChQZ1N0YXRfVmFjdXVtUmVsYXRp b25Db3VudHMgKikKKwkJCQlwZ3N0YXRfZmV0Y2hfZW50cnkoUEdTVEFUX0tJTkRfRVhUVkFD X1JFTEFUSU9OLCBJbnZhbGlkT2lkLCBFWFRWQUNfT0JKSUQocmVsaWQsIHR5cGUpKTsKKwor CQlpZiAoc3RhdHMgJiYgc3RhdHMtPnR5cGUgPT0gdHlwZSkKKwkJCXR1cGxlc3RvcmVfcHV0 X2Zvcl9yZWxhdGlvbihyZWxpZCwgdHVwc3RvcmUsIHR1cGRlc2MsIHN0YXRzKTsKKwl9CisJ ZWxzZSBpZiAodHlwZSA9PSBQR1NUQVRfRVhUVkFDX0RCKQorCXsKKwkJaWYgKE9pZElzVmFs aWQoZGJpZCkpCisJCXsKKyNkZWZpbmUgRVhUVkFDX0RCX1NUQVRfQ09MUyAxNAorCQkJRGF0 dW0JCXZhbHVlc1tFWFRWQUNfREJfU1RBVF9DT0xTXTsKKwkJCWJvb2wJCW51bGxzW0VYVFZB Q19EQl9TVEFUX0NPTFNdOworCQkJaW50CQkJaSA9IDA7CisJCQlQZ1N0YXRfVmFjdXVtUmVs YXRpb25Db3VudHMgKnN0YXRzOworCisJCQlzdGF0cyA9IChQZ1N0YXRfVmFjdXVtUmVsYXRp b25Db3VudHMgKikKKwkJCQlwZ3N0YXRfZmV0Y2hfZW50cnkoUEdTVEFUX0tJTkRfRVhUVkFD X0RCLCBkYmlkLCBJbnZhbGlkT2lkKTsKKwkJCWlmIChzdGF0cyAmJiBzdGF0cy0+dHlwZSA9 PSBQR1NUQVRfRVhUVkFDX0RCKQorCQkJeworCQkJCW1lbXNldChudWxscywgMCwgc2l6ZW9m KG51bGxzKSk7CisJCQkJdmFsdWVzW2krK10gPSBPYmplY3RJZEdldERhdHVtKGRiaWQpOwor CQkJCXR1cGxlc3RvcmVfcHV0X2NvbW1vbigmc3RhdHMtPmNvbW1vbiwgdmFsdWVzLCBudWxs cywgJmkpOworCQkJCXZhbHVlc1tpKytdID0gSW50MzJHZXREYXR1bShzdGF0cy0+Y29tbW9u LmludGVycnVwdHNfY291bnQpOworCQkJCUFzc2VydChpID09IEVYVFZBQ19EQl9TVEFUX0NP TFMpOworCQkJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHR1cHN0b3JlLCB0dXBkZXNjLCB2YWx1 ZXMsIG51bGxzKTsKKwkJCX0KKwkJfQorCQkvKiBpbnZhbGlkIGRiaWQ6IHJldHVybiBlbXB0 eSBzZXQgKi8KKwl9CisJZWxzZQorCQllbG9nKFBBTklDLCAiZXh0X3ZhY3V1bV9zdGF0aXN0 aWNzOiBpbnZhbGlkIHR5cGUgJWQiLCB0eXBlKTsKKworCXJldHVybiAoRGF0dW0pIDA7Cit9 CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEocGdfc3RhdHNfZ2V0X3ZhY3V1bV90YWJsZXMpOwor UEdfRlVOQ1RJT05fSU5GT19WMShwZ19zdGF0c19nZXRfdmFjdXVtX2luZGV4ZXMpOworUEdf RlVOQ1RJT05fSU5GT19WMShwZ19zdGF0c19nZXRfdmFjdXVtX2RhdGFiYXNlKTsKKworRGF0 dW0KK3BnX3N0YXRzX2dldF92YWN1dW1fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJ cmV0dXJuIHBnX3N0YXRzX3ZhY3V1bShmY2luZm8sIFBHU1RBVF9FWFRWQUNfVEFCTEUpOwor fQorCitEYXR1bQorcGdfc3RhdHNfZ2V0X3ZhY3V1bV9pbmRleGVzKFBHX0ZVTkNUSU9OX0FS R1MpCit7CisJcmV0dXJuIHBnX3N0YXRzX3ZhY3V1bShmY2luZm8sIFBHU1RBVF9FWFRWQUNf SU5ERVgpOworfQorCitEYXR1bQorcGdfc3RhdHNfZ2V0X3ZhY3V1bV9kYXRhYmFzZShQR19G VU5DVElPTl9BUkdTKQoreworCXJldHVybiBwZ19zdGF0c192YWN1dW0oZmNpbmZvLCBQR1NU QVRfRVhUVkFDX0RCKTsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvbWVzb24uYnVpbGQgYi9j b250cmliL21lc29uLmJ1aWxkCmluZGV4IGRlZjEzMjU3Y2JlLi5iOGNiNjJkMjJmMSAxMDA2 NDQKLS0tIGEvY29udHJpYi9tZXNvbi5idWlsZAorKysgYi9jb250cmliL21lc29uLmJ1aWxk CkBAIC0yNiw2ICsyNiw3IEBAIHN1YmRpcignY3ViZScpCiBzdWJkaXIoJ2RibGluaycpCiBz dWJkaXIoJ2RpY3RfaW50JykKIHN1YmRpcignZGljdF94c3luJykKK3N1YmRpcignZXh0X3Zh Y3V1bV9zdGF0aXN0aWNzJykKIHN1YmRpcignZWFydGhkaXN0YW5jZScpCiBzdWJkaXIoJ2Zp bGVfZmR3JykKIHN1YmRpcignZnV6enlzdHJtYXRjaCcpCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY29udHJpYi5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbnRyaWIuc2dtbAppbmRleCAy NGI3MDZiMjlhZC4uZjhhNTc4MWJkZTMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb250 cmliLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbnRyaWIuc2dtbApAQCAtMTQxLDYgKzE0 MSw3IEBAIENSRUFURSBFWFRFTlNJT04gPHJlcGxhY2VhYmxlPmV4dGVuc2lvbl9uYW1lPC9y ZXBsYWNlYWJsZT47CiAgJmRpY3QtaW50OwogICZkaWN0LXhzeW47CiAgJmVhcnRoZGlzdGFu Y2U7CisgJmV4dHZhY3V1bXN0YXRpc3RpY3M7CiAgJmZpbGUtZmR3OwogICZmdXp6eXN0cm1h dGNoOwogICZoc3RvcmU7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZXh0dmFjdXVtc3Rh dGlzdGljcy5zZ21sIGIvZG9jL3NyYy9zZ21sL2V4dHZhY3V1bXN0YXRpc3RpY3Muc2dtbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzVlYjQ2OTFjNGQKLS0t IC9kZXYvbnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvZXh0dmFjdXVtc3RhdGlzdGljcy5zZ21s CkBAIC0wLDAgKzEsNTAyIEBACis8IS0tIGRvYy9zcmMvc2dtbC9leHR2YWN1dW1zdGF0aXN0 aWNzLnNnbWwgLS0+CisKKzxzZWN0MSBpZD0iZXh0dmFjdXVtc3RhdGlzdGljcyIgeHJlZmxh YmVsPSJleHRfdmFjdXVtX3N0YXRpc3RpY3MiPgorIDx0aXRsZT5leHRfdmFjdXVtX3N0YXRp c3RpY3MgJm1kYXNoOyBleHRlbmRlZCB2YWN1dW0gc3RhdGlzdGljczwvdGl0bGU+CisKKyA8 aW5kZXh0ZXJtIHpvbmU9ImV4dHZhY3V1bXN0YXRpc3RpY3MiPgorICA8cHJpbWFyeT5leHRf dmFjdXVtX3N0YXRpc3RpY3M8L3ByaW1hcnk+CisgPC9pbmRleHRlcm0+CisKKyA8cGFyYT4K KyAgVGhlIDxmaWxlbmFtZT5leHRfdmFjdXVtX3N0YXRpc3RpY3M8L2ZpbGVuYW1lPiBtb2R1 bGUgcHJvdmlkZXMKKyAgZXh0ZW5kZWQgcGVyLXRhYmxlLCBwZXItaW5kZXgsIGFuZCBwZXIt ZGF0YWJhc2UgdmFjdXVtIHN0YXRpc3RpY3MKKyAgKGJ1ZmZlciBJL08sIFdBTCwgZ2VuZXJh bCwgdGltaW5nKSB2aWEgdmlld3MgaW4gdGhlCisgIDxsaXRlcmFsPmV4dF92YWN1dW1fc3Rh dGlzdGljczwvbGl0ZXJhbD4gc2NoZW1hLgorIDwvcGFyYT4KKworIDxwYXJhPgorICBUaGUg bW9kdWxlIG11c3QgYmUgbG9hZGVkIGJ5IGFkZGluZyA8bGl0ZXJhbD5leHRfdmFjdXVtX3N0 YXRpc3RpY3M8L2xpdGVyYWw+IHRvCisgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1zaGFyZWQtcHJl bG9hZC1saWJyYXJpZXMiLz4gaW4KKyAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmls ZW5hbWU+LCBiZWNhdXNlIGl0IHJlZ2lzdGVycyBhIHZhY3V1bSBob29rIGF0CisgIHNlcnZl ciBzdGFydHVwLiAgVGhpcyBtZWFucyB0aGF0IGEgc2VydmVyIHJlc3RhcnQgaXMgbmVlZGVk IHRvIGFkZCBvciByZW1vdmUKKyAgdGhlIG1vZHVsZS4gIEFmdGVyIGluc3RhbGxhdGlvbiwg cnVuCisgIDxjb21tYW5kPkNSRUFURSBFWFRFTlNJT04gZXh0X3ZhY3V1bV9zdGF0aXN0aWNz PC9jb21tYW5kPiBpbiBlYWNoIGRhdGFiYXNlCisgIHdoZXJlIHlvdSB3YW50IHRvIHVzZSBp dC4KKyA8L3BhcmE+CisKKyA8cGFyYT4KKyAgV2hlbiBhY3RpdmUsIHRoZSBtb2R1bGUgcHJv dmlkZXMgdmlld3MKKyAgPHN0cnVjdG5hbWU+ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0 YXRzX3ZhY3V1bV90YWJsZXM8L3N0cnVjdG5hbWU+LAorICA8c3RydWN0bmFtZT5leHRfdmFj dXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX2luZGV4ZXM8L3N0cnVjdG5hbWU+LCBh bmQKKyAgPHN0cnVjdG5hbWU+ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLnBnX3N0YXRzX3ZhY3V1 bV9kYXRhYmFzZTwvc3RydWN0bmFtZT4sCisgIHBsdXMgZnVuY3Rpb25zIHRvIHJlc2V0IHN0 YXRpc3RpY3MgYW5kIG1hbmFnZSB0cmFja2luZy4KKyA8L3BhcmE+CisKKyA8cGFyYT4KKyAg RWFjaCB0cmFja2VkIG9iamVjdCAob25lIHRhYmxlLCBvbmUgaW5kZXgsIG9yIG9uZSBkYXRh YmFzZSkgdXNlcworICBhcHByb3hpbWF0ZWx5IDIzMiBieXRlcyBvZiBzaGFyZWQgbWVtb3J5 IG9uIExpbnV4IHg4Nl82NCAoZS5nLiBVYnVudHUpOgorICBjb21tb24gc3RhdHMgKGJ1ZmZl cnMsIFdBTCwgdGltaW5nKSBwbHVzIGhlYWRlciBhbmQgTFdMb2NrIH4xNDQgYnl0ZXM7Cisg IHR5cGUgKyB1bmlvbiB+ODggYnl0ZXMgKHRoZSB1bmlvbiBob2xkcyB0YWJsZS1zcGVjaWZp YyBvciBpbmRleC1zcGVjaWZpYworICBmaWVsZHM7IHRoZSBhbGxvY2F0ZWQgc2l6ZSBpcyB0 aGUgc2FtZSBmb3IgYm90aCkuICBUaGUgZXhhY3Qgc2l6ZSBkZXBlbmRzIG9uIHRoZSBwbGF0 Zm9ybS4gIENhbGwKKyAgPGZ1bmN0aW9uPmV4dF92YWN1dW1fc3RhdGlzdGljcy5zaGFyZWRf bWVtb3J5X3NpemUoKTwvZnVuY3Rpb24+IHRvIGdldAorICB0aGUgdG90YWwgc2hhcmVkIG1l bW9yeSB1c2VkIGJ5IHRoZSBleHRlbnNpb24uICBUaGUgZXh0ZW5zaW9uJ3MgR1VDcyBhbGxv dyBjb250cm9sbGluZyBtZW1vcnkgYnkgbGltaXRpbmcKKyAgd2hpY2ggb2JqZWN0cyBhcmUg dHJhY2tlZDoKKyAgPHZhcm5hbWU+dmFjdXVtX3N0YXRpc3RpY3Mub2JqZWN0X3R5cGVzPC92 YXJuYW1lPiwKKyAgPHZhcm5hbWU+dmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfcmVsYXRpb25z PC92YXJuYW1lPiwgYW5kCisgIDx2YXJuYW1lPnRyYWNrXypfZnJvbV9saXN0PC92YXJuYW1l Pi4KKyAgRXhhbXBsZTogYSBkYXRhYmFzZSB3aXRoIDEwMDAgdGFibGVzIGFuZCAyMDAwIGlu ZGV4ZXMgdXNlcyBhYm91dCA3MDAgS0IKKyAgb24gVWJ1bnR1ICgoMTAwMCArIDIwMDAgKyAx KSDDlyAyMzIgYnl0ZXMpLgorIDwvcGFyYT4KKworIDxzZWN0MiBpZD0iZXh0dmFjdXVtc3Rh dGlzdGljcy1wZy1zdGF0cy12YWN1dW0tdGFibGVzIj4KKyAgPHRpdGxlPlRoZSA8c3RydWN0 bmFtZT5leHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX3RhYmxlczwvc3Ry dWN0bmFtZT4gVmlldzwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJleHR2YWN1dW1z dGF0aXN0aWNzIj4KKyAgIDxzZWNvbmRhcnk+cGdfc3RhdHNfdmFjdXVtX3RhYmxlczwvc2Vj b25kYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8cGFyYT4KKyAgIFRoZSB2aWV3IDxzdHJ1 Y3RuYW1lPmV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fdGFibGVzPC9z dHJ1Y3RuYW1lPgorICAgY29udGFpbnMgb25lIHJvdyBmb3IgZWFjaCB0YWJsZSBpbiB0aGUg Y3VycmVudCBkYXRhYmFzZSAoaW5jbHVkaW5nIFRPQVNUCisgICB0YWJsZXMpLCBzaG93aW5n IHN0YXRpc3RpY3MgYWJvdXQgdmFjdXVtaW5nIHRoYXQgc3BlY2lmaWMgdGFibGUuICBUaGUg Y29sdW1ucworICAgYXJlIHNob3duIGluIDx4cmVmIGxpbmtlbmQ9ImV4dHZhY3V1bXN0YXRp c3RpY3MtcGctc3RhdHMtdmFjdXVtLXRhYmxlcy1jb2x1bW5zIi8+LgorICA8L3BhcmE+CisK KyAgPHRhYmxlIGlkPSJleHR2YWN1dW1zdGF0aXN0aWNzLXBnLXN0YXRzLXZhY3V1bS10YWJs ZXMtY29sdW1ucyI+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+ZXh0X3ZhY3V1bV9zdGF0aXN0 aWNzLnBnX3N0YXRzX3ZhY3V1bV90YWJsZXM8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxl PgorICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisgICAgPHRib2R5PgorICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cmVsaWQ8L3N0cnVjdGZpZWxk PiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAg ICBPSUQgb2YgYSB0YWJsZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c2No ZW1hPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIHNjaGVtYSB0aGlzIHRhYmxlIGlzIGlu CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxuYW1lPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIE5hbWUgb2YgdGhpcyB0YWJsZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwv cm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0Zmll bGQ+ZGJuYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIGRhdGFiYXNlIGNvbnRhaW5p bmcgdGhpcyB0YWJsZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dG90YWxf Ymxrc19yZWFkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiBkYXRhYmFzZSBibG9ja3MgcmVh ZCBieSB2YWN1dW0gb3BlcmF0aW9ucyBwZXJmb3JtZWQgb24gdGhpcyB0YWJsZQorICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dG90YWxfYmxrc19oaXQ8L3N0cnVjdGZpZWxk PiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgTnVtYmVyIG9mIHRpbWVzIGRhdGFiYXNlIGJsb2NrcyB3ZXJlIGZvdW5kIGluIHRoZSBi dWZmZXIgY2FjaGUgYnkgdmFjdXVtIG9wZXJhdGlvbnMKKyAgICAgIDwvcGFyYT48L2VudHJ5 PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAg PHN0cnVjdGZpZWxkPnRvdGFsX2Jsa3NfZGlydGllZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmlu dDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIg b2YgZGF0YWJhc2UgYmxvY2tzIGRpcnRpZWQgYnkgdmFjdXVtIG9wZXJhdGlvbnMKKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnRvdGFsX2Jsa3Nfd3JpdHRlbjwvc3RydWN0 ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBOdW1iZXIgb2YgZGF0YWJhc2UgYmxvY2tzIHdyaXR0ZW4gYnkgdmFjdXVtIG9w ZXJhdGlvbnMKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPndhbF9yZWNvcmRz PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIFRvdGFsIG51bWJlciBvZiBXQUwgcmVjb3JkcyBnZW5lcmF0ZWQg YnkgdmFjdXVtIG9wZXJhdGlvbnMgcGVyZm9ybWVkIG9uIHRoaXMgdGFibGUKKyAgICAgIDwv cGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPndhbF9mcGk8L3N0cnVjdGZpZWxkPiA8dHlwZT5p bnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVG90YWwg bnVtYmVyIG9mIFdBTCBmdWxsIHBhZ2UgaW1hZ2VzIGdlbmVyYXRlZCBieSB2YWN1dW0gb3Bl cmF0aW9ucworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+d2FsX2J5dGVzPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+bnVtZXJpYzwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIFRvdGFsIGFtb3VudCBvZiBXQUwgYnl0ZXMgZ2VuZXJhdGVkIGJ5 IHZhY3V1bSBvcGVyYXRpb25zCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+ CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5i bGtfcmVhZF90aW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ZmxvYXQ4PC90eXBlPgorICAgICAg PC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGltZSBzcGVudCByZWFkaW5nIGJsb2Nr cyBieSB2YWN1dW0gb3BlcmF0aW9ucywgaW4gbWlsbGlzZWNvbmRzCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5ibGtfd3JpdGVfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBl PmZsb2F0ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRp bWUgc3BlbnQgd3JpdGluZyBibG9ja3MgYnkgdmFjdXVtIG9wZXJhdGlvbnMsIGluIG1pbGxp c2Vjb25kcworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ZGVsYXlfdGltZTwv c3RydWN0ZmllbGQ+IDx0eXBlPmZsb2F0ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIFRpbWUgc3BlbnQgaW4gdmFjdXVtIGRlbGF5IHBvaW50cywgaW4g bWlsbGlzZWNvbmRzCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD50b3RhbF90 aW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ZmxvYXQ4PC90eXBlPgorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgVG90YWwgdGltZSBvZiB2YWN1dW1pbmcgdGhpcyB0YWJs ZSwgaW4gbWlsbGlzZWNvbmRzCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+ CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD53 cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50NDwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiB0aW1l cyB2YWN1dW0gd2FzIHJ1biB0byBwcmV2ZW50IGEgd3JhcGFyb3VuZCBwcm9ibGVtCisgICAg ICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxfYmxrc19yZWFkPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIE51bWJlciBvZiBibG9ja3MgdmFjdXVtIG9wZXJhdGlvbnMgcmVhZCBmcm9tIHRoaXMg dGFibGUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnJlbF9ibGtzX2hpdDwv c3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgdGltZXMgYmxvY2tzIG9mIHRoaXMgdGFibGUgd2Vy ZSBmb3VuZCBpbiB0aGUgYnVmZmVyIGNhY2hlIGJ5IHZhY3V1bQorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAg ICAgICA8c3RydWN0ZmllbGQ+dHVwbGVzX2RlbGV0ZWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5p bnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVy IG9mIGRlYWQgdHVwbGVzIHZhY3V1bSBvcGVyYXRpb25zIGRlbGV0ZWQgZnJvbSB0aGlzIHRh YmxlCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wYWdlc19zY2FubmVkPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIE51bWJlciBvZiBwYWdlcyBleGFtaW5lZCBieSB2YWN1dW0gb3BlcmF0 aW9ucworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGFnZXNfcmVtb3ZlZDwv c3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgcGFnZXMgcmVtb3ZlZCBmcm9tIHBoeXNpY2FsIHN0 b3JhZ2UgYnkgdmFjdXVtIG9wZXJhdGlvbnMKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnZtX25ld19mcm96ZW5fcGFnZXM8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90 eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIHBh Z2VzIG5ld2x5IHNldCBhbGwtZnJvemVuIGJ5IHZhY3V1bSBpbiB0aGUgdmlzaWJpbGl0eSBt YXAKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnZtX25ld192aXNpYmxlX3Bh Z2VzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiBwYWdlcyBuZXdseSBzZXQgYWxsLXZpc2li bGUgYnkgdmFjdXVtIGluIHRoZSB2aXNpYmlsaXR5IG1hcAorICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAg ICA8c3RydWN0ZmllbGQ+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIE51bWJlciBvZiBwYWdlcyBuZXdseSBzZXQgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96 ZW4gYnkgdmFjdXVtIGluIHRoZSB2aXNpYmlsaXR5IG1hcAorICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAg ICA8c3RydWN0ZmllbGQ+dHVwbGVzX2Zyb3plbjwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8 L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2Yg dHVwbGVzIHRoYXQgdmFjdXVtIG9wZXJhdGlvbnMgbWFya2VkIGFzIGZyb3plbgorICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cmVjZW50bHlfZGVhZF90dXBsZXM8L3N0cnVj dGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgTnVtYmVyIG9mIGRlYWQgdHVwbGVzIGxlZnQgZHVlIHRvIHZpc2liaWxpdHkg aW4gdHJhbnNhY3Rpb25zCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+Cisg ICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5pbmRl eF92YWN1dW1fY291bnQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAg PC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIHRpbWVzIGluZGV4ZXMg b24gdGhpcyB0YWJsZSB3ZXJlIHZhY3V1bWVkCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5taXNzZWRfZGVhZF9wYWdlczwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgcGFn ZXMgdGhhdCBoYWQgYXQgbGVhc3Qgb25lIG1pc3NlZCBkZWFkIHR1cGxlCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD5taXNzZWRfZGVhZF90dXBsZXM8L3N0cnVjdGZpZWxk PiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgTnVtYmVyIG9mIGZ1bGx5IERFQUQgdHVwbGVzIHRoYXQgY291bGQgbm90IGJlIHBydW5l ZCBkdWUgdG8gZmFpbHVyZSB0byBhY3F1aXJlIGEgY2xlYW51cCBsb2NrCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgor ICA8L3RhYmxlPgorIDwvc2VjdDI+CisKKyA8c2VjdDIgaWQ9ImV4dHZhY3V1bXN0YXRpc3Rp Y3MtcGctc3RhdHMtdmFjdXVtLWluZGV4ZXMiPgorICA8dGl0bGU+VGhlIDxzdHJ1Y3RuYW1l PmV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1faW5kZXhlczwvc3RydWN0 bmFtZT4gVmlldzwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJleHR2YWN1dW1zdGF0 aXN0aWNzIj4KKyAgIDxzZWNvbmRhcnk+cGdfc3RhdHNfdmFjdXVtX2luZGV4ZXM8L3NlY29u ZGFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBUaGUgdmlldyA8c3RydWN0 bmFtZT5leHRfdmFjdXVtX3N0YXRpc3RpY3MucGdfc3RhdHNfdmFjdXVtX2luZGV4ZXM8L3N0 cnVjdG5hbWU+CisgICBjb250YWlucyBvbmUgcm93IGZvciBlYWNoIGluZGV4IGluIHRoZSBj dXJyZW50IGRhdGFiYXNlLCBzaG93aW5nIHN0YXRpc3RpY3MKKyAgIGFib3V0IHZhY3V1bWlu ZyB0aGF0IHNwZWNpZmljIGluZGV4LiAgQ29sdW1ucyBpbmNsdWRlCisgICA8c3RydWN0Zmll bGQ+aW5kZXhyZWxpZDwvc3RydWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+c2NoZW1hPC9zdHJ1 Y3RmaWVsZD4sCisgICA8c3RydWN0ZmllbGQ+aW5kZXhyZWxuYW1lPC9zdHJ1Y3RmaWVsZD4s IDxzdHJ1Y3RmaWVsZD5kYm5hbWU8L3N0cnVjdGZpZWxkPiwKKyAgIGJ1ZmZlciBJL08gKDxz dHJ1Y3RmaWVsZD50b3RhbF9ibGtzX3JlYWQ8L3N0cnVjdGZpZWxkPiwKKyAgIDxzdHJ1Y3Rm aWVsZD50b3RhbF9ibGtzX2hpdDwvc3RydWN0ZmllbGQ+LCBldGMuKSwgV0FMCisgICAoPHN0 cnVjdGZpZWxkPndhbF9yZWNvcmRzPC9zdHJ1Y3RmaWVsZD4sIDxzdHJ1Y3RmaWVsZD53YWxf ZnBpPC9zdHJ1Y3RmaWVsZD4sCisgICA8c3RydWN0ZmllbGQ+d2FsX2J5dGVzPC9zdHJ1Y3Rm aWVsZD4pLCB0aW1pbmcKKyAgICg8c3RydWN0ZmllbGQ+YmxrX3JlYWRfdGltZTwvc3RydWN0 ZmllbGQ+LCA8c3RydWN0ZmllbGQ+YmxrX3dyaXRlX3RpbWU8L3N0cnVjdGZpZWxkPiwKKyAg IDxzdHJ1Y3RmaWVsZD5kZWxheV90aW1lPC9zdHJ1Y3RmaWVsZD4sIDxzdHJ1Y3RmaWVsZD50 b3RhbF90aW1lPC9zdHJ1Y3RmaWVsZD4pLAorICAgYW5kIDxzdHJ1Y3RmaWVsZD50dXBsZXNf ZGVsZXRlZDwvc3RydWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+cGFnZXNfZGVsZXRlZDwvc3Ry dWN0ZmllbGQ+LgorICA8L3BhcmE+CisgPC9zZWN0Mj4KKworIDxzZWN0MiBpZD0iZXh0dmFj dXVtc3RhdGlzdGljcy1wZy1zdGF0cy12YWN1dW0tZGF0YWJhc2UiPgorICA8dGl0bGU+VGhl IDxzdHJ1Y3RuYW1lPmV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1dW1fZGF0 YWJhc2U8L3N0cnVjdG5hbWU+IFZpZXc8L3RpdGxlPgorCisgIDxpbmRleHRlcm0gem9uZT0i ZXh0dmFjdXVtc3RhdGlzdGljcyI+CisgICA8c2Vjb25kYXJ5PnBnX3N0YXRzX3ZhY3V1bV9k YXRhYmFzZTwvc2Vjb25kYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8cGFyYT4KKyAgIFRo ZSB2aWV3IDxzdHJ1Y3RuYW1lPmV4dF92YWN1dW1fc3RhdGlzdGljcy5wZ19zdGF0c192YWN1 dW1fZGF0YWJhc2U8L3N0cnVjdG5hbWU+CisgICBjb250YWlucyBvbmUgcm93IGZvciBlYWNo IGRhdGFiYXNlIGluIHRoZSBjbHVzdGVyLCBzaG93aW5nIGFnZ3JlZ2F0ZSB2YWN1dW0KKyAg IHN0YXRpc3RpY3MgZm9yIHRoYXQgZGF0YWJhc2UuICBDb2x1bW5zIGluY2x1ZGUKKyAgIDxz dHJ1Y3RmaWVsZD5kYm9pZDwvc3RydWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+ZGJuYW1lPC9z dHJ1Y3RmaWVsZD4sCisgICA8c3RydWN0ZmllbGQ+ZGJfYmxrc19yZWFkPC9zdHJ1Y3RmaWVs ZD4sIDxzdHJ1Y3RmaWVsZD5kYl9ibGtzX2hpdDwvc3RydWN0ZmllbGQ+LAorICAgPHN0cnVj dGZpZWxkPmRiX2Jsa3NfZGlydGllZDwvc3RydWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+ZGJf Ymxrc193cml0dGVuPC9zdHJ1Y3RmaWVsZD4sCisgICBXQUwgc3RhdHMgKDxzdHJ1Y3RmaWVs ZD5kYl93YWxfcmVjb3Jkczwvc3RydWN0ZmllbGQ+LAorICAgPHN0cnVjdGZpZWxkPmRiX3dh bF9mcGk8L3N0cnVjdGZpZWxkPiwgPHN0cnVjdGZpZWxkPmRiX3dhbF9ieXRlczwvc3RydWN0 ZmllbGQ+KSwKKyAgIHRpbWluZyAoPHN0cnVjdGZpZWxkPmRiX2Jsa19yZWFkX3RpbWU8L3N0 cnVjdGZpZWxkPiwKKyAgIDxzdHJ1Y3RmaWVsZD5kYl9ibGtfd3JpdGVfdGltZTwvc3RydWN0 ZmllbGQ+LCA8c3RydWN0ZmllbGQ+ZGJfZGVsYXlfdGltZTwvc3RydWN0ZmllbGQ+LAorICAg PHN0cnVjdGZpZWxkPmRiX3RvdGFsX3RpbWU8L3N0cnVjdGZpZWxkPiksCisgICA8c3RydWN0 ZmllbGQ+ZGJfd3JhcGFyb3VuZF9mYWlsc2FmZV9jb3VudDwvc3RydWN0ZmllbGQ+LCBhbmQK KyAgIDxzdHJ1Y3RmaWVsZD5pbnRlcnJ1cHRzX2NvdW50PC9zdHJ1Y3RmaWVsZD4uCisgIDwv cGFyYT4KKyA8L3NlY3QyPgorCisgPHNlY3QyIGlkPSJleHR2YWN1dW1zdGF0aXN0aWNzLWZ1 bmN0aW9ucyI+CisgIDx0aXRsZT5GdW5jdGlvbnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxp c3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8ZnVuY3Rpb24+ZXh0 X3ZhY3V1bV9zdGF0aXN0aWNzLnNoYXJlZF9tZW1vcnlfc2l6ZSgpPC9mdW5jdGlvbj4KKyAg ICAgPHJldHVybnZhbHVlPmJpZ2ludDwvcmV0dXJudmFsdWU+CisgICAgPC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBSZXR1cm5zIHRoZSB0b3RhbCBzaGFy ZWQgbWVtb3J5IGluIGJ5dGVzIHVzZWQgYnkgdGhlIGV4dGVuc2lvbiBmb3IKKyAgICAgIHZh Y3V1bSBzdGF0aXN0aWNzIChyZWxhdGlvbnMgcGx1cyBkYXRhYmFzZXMpLgorICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICAgPHZhcmxpc3Rl bnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGZ1bmN0aW9uPmV4dF92YWN1dW1fc3RhdGlzdGlj cy52YWN1dW1fc3RhdGlzdGljc19yZXNldCgpPC9mdW5jdGlvbj4KKyAgICAgPHJldHVybnZh bHVlPmJpZ2ludDwvcmV0dXJudmFsdWU+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICBSZXNldHMgYWxsIHZhY3V1bSBzdGF0aXN0aWNzLiAgUmV0 dXJucyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcmVzZXQuCisgICAgIDwvcGFyYT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgICA8dmFybGlzdGVudHJ5PgorICAg IDx0ZXJtPgorICAgICA8ZnVuY3Rpb24+ZXh0X3ZhY3V1bV9zdGF0aXN0aWNzLmFkZF90cmFj a19kYXRhYmFzZShkYm9pZCBvaWQpPC9mdW5jdGlvbj4KKyAgICAgPHJldHVybnZhbHVlPmJv b2xlYW48L3JldHVybnZhbHVlPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAg IDxwYXJhPgorICAgICAgQWRkcyBhIGRhdGFiYXNlIE9JRCB0byB0aGUgdHJhY2tpbmcgbGlz dCAocGVyc2lzdGVkIHRvCisgICAgICA8ZmlsZW5hbWU+cGdfc3RhdC9leHRfdmFjdXVtX3N0 YXRpc3RpY3NfdHJhY2sub2lkPC9maWxlbmFtZT4pLgorICAgICAgUmV0dXJucyB0cnVlIGlm IG5ld2x5IGFkZGVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFy bGlzdGVudHJ5PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGZ1bmN0 aW9uPmV4dF92YWN1dW1fc3RhdGlzdGljcy5yZW1vdmVfdHJhY2tfZGF0YWJhc2UoZGJvaWQg b2lkKTwvZnVuY3Rpb24+CisgICAgIDxyZXR1cm52YWx1ZT5ib29sZWFuPC9yZXR1cm52YWx1 ZT4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFJl bW92ZXMgYSBkYXRhYmFzZSBPSUQgZnJvbSB0aGUgdHJhY2tpbmcgbGlzdC4gIFJldHVybnMg dHJ1ZSBpZiBmb3VuZCBhbmQgcmVtb3ZlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0 ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ CisgICAgIDxmdW5jdGlvbj5leHRfdmFjdXVtX3N0YXRpc3RpY3MuYWRkX3RyYWNrX3JlbGF0 aW9uKGRib2lkIG9pZCwgcmVsb2lkIG9pZCk8L2Z1bmN0aW9uPgorICAgICA8cmV0dXJudmFs dWU+Ym9vbGVhbjwvcmV0dXJudmFsdWU+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICBBZGRzIGEgKGRhdGFiYXNlLCByZWxhdGlvbikgT0lEIHBh aXIgdG8gdGhlIHRyYWNraW5nIGxpc3QuICBSZXR1cm5zIHRydWUgaWYgbmV3bHkgYWRkZWQu CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+Cisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8ZnVuY3Rpb24+ZXh0X3ZhY3V1 bV9zdGF0aXN0aWNzLnJlbW92ZV90cmFja19yZWxhdGlvbihkYm9pZCBvaWQsIHJlbG9pZCBv aWQpPC9mdW5jdGlvbj4KKyAgICAgPHJldHVybnZhbHVlPmJvb2xlYW48L3JldHVybnZhbHVl PgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgUmVt b3ZlcyBhIChkYXRhYmFzZSwgcmVsYXRpb24pIHBhaXIgZnJvbSB0aGUgdHJhY2tpbmcgbGlz dC4gIFJldHVybnMgdHJ1ZSBpZiBmb3VuZCBhbmQgcmVtb3ZlZC4KKyAgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgIDx2YXJsaXN0ZW50cnk+ CisgICAgPHRlcm0+CisgICAgIDxmdW5jdGlvbj5leHRfdmFjdXVtX3N0YXRpc3RpY3MudHJh Y2tfbGlzdCgpPC9mdW5jdGlvbj4KKyAgICAgPHJldHVybnZhbHVlPlRBQkxFKHRyYWNrX2tp bmQgdGV4dCwgZGJvaWQgb2lkLCByZWxvaWQgb2lkKTwvcmV0dXJudmFsdWU+CisgICAgPC90 ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBSZXR1cm5zIHRoZSBs aXN0IG9mIGRhdGFiYXNlIGFuZCByZWxhdGlvbiBPSURzIGZvciB3aGljaCB2YWN1dW0gc3Rh dGlzdGljcworICAgICAgYXJlIGNvbGxlY3RlZC4gIFdoZW4gPHN0cnVjdGZpZWxkPmRib2lk PC9zdHJ1Y3RmaWVsZD4gb3IKKyAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxvaWQ8L3N0cnVjdGZp ZWxkPiBpcyBOVUxMLCBzdGF0aXN0aWNzIGFyZSBjb2xsZWN0ZWQgZm9yIGFsbC4KKyAgICAg PC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgPC92YXJp YWJsZWxpc3Q+CisgPC9zZWN0Mj4KKworIDxzZWN0MiBpZD0iZXh0dmFjdXVtc3RhdGlzdGlj cy1jb25maWd1cmF0aW9uIj4KKyAgPHRpdGxlPkNvbmZpZ3VyYXRpb24gUGFyYW1ldGVyczwv dGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+PHZhcm5hbWU+dmFjdXVtX3N0YXRpc3RpY3MuZW5hYmxlZDwvdmFybmFtZT4gKDx0eXBl PmJvb2xlYW48L3R5cGU+KTwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgor ICAgICAgRW5hYmxlcyBleHRlbmRlZCB2YWN1dW0gc3RhdGlzdGljcyBjb2xsZWN0aW9uLiAg RGVmYXVsdDogPGxpdGVyYWw+b248L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8 dGVybT48dmFybmFtZT52YWN1dW1fc3RhdGlzdGljcy5vYmplY3RfdHlwZXM8L3Zhcm5hbWU+ ICg8dHlwZT5zdHJpbmc8L3R5cGU+KTwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxw YXJhPgorICAgICAgT2JqZWN0IHR5cGVzIGZvciBzdGF0aXN0aWNzOiA8bGl0ZXJhbD5hbGw8 L2xpdGVyYWw+LCA8bGl0ZXJhbD5kYXRhYmFzZXM8L2xpdGVyYWw+LCBvcgorICAgICAgPGxp dGVyYWw+cmVsYXRpb25zPC9saXRlcmFsPi4gIERlZmF1bHQ6IDxsaXRlcmFsPmFsbDwvbGl0 ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjx2YXJuYW1lPnZhY3V1bV9zdGF0 aXN0aWNzLnRyYWNrX3JlbGF0aW9uczwvdmFybmFtZT4gKDx0eXBlPnN0cmluZzwvdHlwZT4p PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBXaGVuIHRyYWNr aW5nIHJlbGF0aW9uczogPGxpdGVyYWw+YWxsPC9saXRlcmFsPiwgPGxpdGVyYWw+c3lzdGVt PC9saXRlcmFsPiwgb3IKKyAgICAgIDxsaXRlcmFsPnVzZXI8L2xpdGVyYWw+LiAgRGVmYXVs dDogPGxpdGVyYWw+YWxsPC9saXRlcmFsPi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0 ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ PHZhcm5hbWU+dmFjdXVtX3N0YXRpc3RpY3MudHJhY2tfZGF0YWJhc2VzX2Zyb21fbGlzdDwv dmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KTwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgSWYgb24sIHRyYWNrIG9ubHkgZGF0YWJhc2VzIGFkZGVk IHZpYSA8ZnVuY3Rpb24+YWRkX3RyYWNrX2RhdGFiYXNlPC9mdW5jdGlvbj4uCisgICAgICBE ZWZhdWx0OiA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8 dGVybT48dmFybmFtZT52YWN1dW1fc3RhdGlzdGljcy50cmFja19yZWxhdGlvbnNfZnJvbV9s aXN0PC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pPC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBJZiBvbiwgdHJhY2sgb25seSByZWxhdGlvbnMg YWRkZWQgdmlhIDxmdW5jdGlvbj5hZGRfdHJhY2tfcmVsYXRpb248L2Z1bmN0aW9uPi4KKyAg ICAgIERlZmF1bHQ6IDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgIDwvdmFyaWFibGVsaXN0Pgor IDwvc2VjdDI+Cis8L3NlY3QxPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2ZpbGVsaXN0 LnNnbWwgYi9kb2Mvc3JjL3NnbWwvZmlsZWxpc3Quc2dtbAppbmRleCBhYzY2ZmNiZGI1Ny4u YjAzMjU3YzY5NzMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9maWxlbGlzdC5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9maWxlbGlzdC5zZ21sCkBAIC0xMzMsNiArMTMzLDcgQEAKIDwh RU5USVRZIGRpY3QteHN5biAgICAgICBTWVNURU0gImRpY3QteHN5bi5zZ21sIj4KIDwhRU5U SVRZIGR1bW15LXNlY2xhYmVsICBTWVNURU0gImR1bW15LXNlY2xhYmVsLnNnbWwiPgogPCFF TlRJVFkgZWFydGhkaXN0YW5jZSAgIFNZU1RFTSAiZWFydGhkaXN0YW5jZS5zZ21sIj4KKzwh RU5USVRZIGV4dHZhY3V1bXN0YXRpc3RpY3MgU1lTVEVNICJleHR2YWN1dW1zdGF0aXN0aWNz LnNnbWwiPgogPCFFTlRJVFkgZmlsZS1mZHcgICAgICAgIFNZU1RFTSAiZmlsZS1mZHcuc2dt bCI+CiA8IUVOVElUWSBmdXp6eXN0cm1hdGNoICAgU1lTVEVNICJmdXp6eXN0cm1hdGNoLnNn bWwiPgogPCFFTlRJVFkgaHN0b3JlICAgICAgICAgIFNZU1RFTSAiaHN0b3JlLnNnbWwiPgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDA0YjA4N2UyYTVjLi5k MjBkNWRkZGNjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAt NjAxLDYgKzYwMSw2NSBAQCBleHR2YWNfc3RhdHNfZW5kX2lkeChSZWxhdGlvbiByZWwsIElu ZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMsCiAJfQogfQogCisvKgorICogQWNjdW11bGF0 ZSBpbmRleCBzdGF0cyBpbnRvIHZhY3JlbCBmb3IgbGF0ZXIgc3VidHJhY3Rpb24gZnJvbSBo ZWFwIHN0YXRzLgorICogSXQgbmVlZHMgdG8gcHJldmVudCBkb3VibGUtY291bnRpbmcgb2Yg c3RhdHMgZm9yIGhlYXBzIHRoYXQKKyAqIGluY2x1ZGUgaW5kZXhlcyBiZWNhdXNlIGluZGV4 ZXMgYXJlIHZhY3V1bWVkIGJlZm9yZSB0aGUgaGVhcC4KKyAqIFdlIG5lZWQgdG8gYmUgY2Fy ZWZ1bCB3aXRoIGJ1ZmZlciB1c2FnZSBhbmQgd2FsIHVzYWdlIGR1cmluZyBwYXJhbGxlbCB2 YWN1dW0KKyAqIGJlY2F1c2UgdGhleSBhcmUgYWNjdW11bGF0ZWQgc3VtbWFybHkgZm9yIGFs bCBpbmRleGVzIGF0IG9uY2UgYnkgbGVhZGVyIGFmdGVyCisgKiBhbGwgd29ya2VycyBoYXZl IGZpbmlzaGVkLgorICovCitzdGF0aWMgdm9pZAorYWNjdW11bGF0ZV9pZHhzX3ZhY3V1bV9z dGF0aXN0aWNzKExWUmVsU3RhdGUgKnZhY3JlbCwKKwkJCQkJCQkJICBQZ1N0YXRfVmFjdXVt UmVsYXRpb25Db3VudHMgKiBleHRWYWNJZHhTdGF0cykKK3sKKwl2YWNyZWwtPmV4dFZhY1Jl cG9ydElkeC5jb21tb24uYmxrX3JlYWRfdGltZSArPSBleHRWYWNJZHhTdGF0cy0+Y29tbW9u LmJsa19yZWFkX3RpbWU7CisJdmFjcmVsLT5leHRWYWNSZXBvcnRJZHguY29tbW9uLmJsa193 cml0ZV90aW1lICs9IGV4dFZhY0lkeFN0YXRzLT5jb21tb24uYmxrX3dyaXRlX3RpbWU7CisJ dmFjcmVsLT5leHRWYWNSZXBvcnRJZHguY29tbW9uLnRvdGFsX2Jsa3NfZGlydGllZCArPSBl eHRWYWNJZHhTdGF0cy0+Y29tbW9uLnRvdGFsX2Jsa3NfZGlydGllZDsKKwl2YWNyZWwtPmV4 dFZhY1JlcG9ydElkeC5jb21tb24udG90YWxfYmxrc19oaXQgKz0gZXh0VmFjSWR4U3RhdHMt PmNvbW1vbi50b3RhbF9ibGtzX2hpdDsKKwl2YWNyZWwtPmV4dFZhY1JlcG9ydElkeC5jb21t b24udG90YWxfYmxrc19yZWFkICs9IGV4dFZhY0lkeFN0YXRzLT5jb21tb24udG90YWxfYmxr c19yZWFkOworCXZhY3JlbC0+ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi50b3RhbF9ibGtzX3dy aXR0ZW4gKz0gZXh0VmFjSWR4U3RhdHMtPmNvbW1vbi50b3RhbF9ibGtzX3dyaXR0ZW47CisJ dmFjcmVsLT5leHRWYWNSZXBvcnRJZHguY29tbW9uLndhbF9ieXRlcyArPSBleHRWYWNJZHhT dGF0cy0+Y29tbW9uLndhbF9ieXRlczsKKwl2YWNyZWwtPmV4dFZhY1JlcG9ydElkeC5jb21t b24ud2FsX2ZwaSArPSBleHRWYWNJZHhTdGF0cy0+Y29tbW9uLndhbF9mcGk7CisJdmFjcmVs LT5leHRWYWNSZXBvcnRJZHguY29tbW9uLndhbF9yZWNvcmRzICs9IGV4dFZhY0lkeFN0YXRz LT5jb21tb24ud2FsX3JlY29yZHM7CisJdmFjcmVsLT5leHRWYWNSZXBvcnRJZHguY29tbW9u LmRlbGF5X3RpbWUgKz0gZXh0VmFjSWR4U3RhdHMtPmNvbW1vbi5kZWxheV90aW1lOworCXZh Y3JlbC0+ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi50b3RhbF90aW1lICs9IGV4dFZhY0lkeFN0 YXRzLT5jb21tb24udG90YWxfdGltZTsKK30KKworLyogQnVpbGQgaGVhcC1zcGVjaWZpYyBl eHRlbmRlZCBzdGF0cyAqLworc3RhdGljIHZvaWQKK2FjY3VtdWxhdGVfaGVhcF92YWN1dW1f c3RhdGlzdGljcyhMVlJlbFN0YXRlICp2YWNyZWwsIFBnU3RhdF9WYWN1dW1SZWxhdGlvbkNv dW50cyAqIGV4dFZhY1N0YXRzKQoreworCWV4dFZhY1N0YXRzLT50eXBlID0gUEdTVEFUX0VY VFZBQ19UQUJMRTsKKwlleHRWYWNTdGF0cy0+dGFibGUucGFnZXNfc2Nhbm5lZCA9IHZhY3Jl bC0+c2Nhbm5lZF9wYWdlczsKKwlleHRWYWNTdGF0cy0+dGFibGUucGFnZXNfcmVtb3ZlZCA9 IHZhY3JlbC0+cmVtb3ZlZF9wYWdlczsKKwlleHRWYWNTdGF0cy0+dGFibGUudm1fbmV3X2Zy b3plbl9wYWdlcyA9IHZhY3JlbC0+bmV3X2FsbF9mcm96ZW5fcGFnZXM7CisJZXh0VmFjU3Rh dHMtPnRhYmxlLnZtX25ld192aXNpYmxlX3BhZ2VzID0gdmFjcmVsLT5uZXdfYWxsX3Zpc2li bGVfcGFnZXM7CisJZXh0VmFjU3RhdHMtPnRhYmxlLnZtX25ld192aXNpYmxlX2Zyb3plbl9w YWdlcyA9IHZhY3JlbC0+bmV3X2FsbF92aXNpYmxlX2FsbF9mcm96ZW5fcGFnZXM7CisJZXh0 VmFjU3RhdHMtPmNvbW1vbi50dXBsZXNfZGVsZXRlZCA9IHZhY3JlbC0+dHVwbGVzX2RlbGV0 ZWQ7CisJZXh0VmFjU3RhdHMtPnRhYmxlLnR1cGxlc19mcm96ZW4gPSB2YWNyZWwtPnR1cGxl c19mcm96ZW47CisJZXh0VmFjU3RhdHMtPnRhYmxlLnJlY2VudGx5X2RlYWRfdHVwbGVzID0g dmFjcmVsLT5yZWNlbnRseV9kZWFkX3R1cGxlczsKKwlleHRWYWNTdGF0cy0+dGFibGUubWlz c2VkX2RlYWRfdHVwbGVzID0gdmFjcmVsLT5taXNzZWRfZGVhZF90dXBsZXM7CisJZXh0VmFj U3RhdHMtPnRhYmxlLm1pc3NlZF9kZWFkX3BhZ2VzID0gdmFjcmVsLT5taXNzZWRfZGVhZF9w YWdlczsKKwlleHRWYWNTdGF0cy0+dGFibGUuaW5kZXhfdmFjdXVtX2NvdW50ID0gdmFjcmVs LT5udW1faW5kZXhfc2NhbnM7CisJZXh0VmFjU3RhdHMtPmNvbW1vbi53cmFwYXJvdW5kX2Zh aWxzYWZlX2NvdW50ID0gdmFjcmVsLT53cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50OworCisJ LyogSG9vayBpcyBpbnZva2VkIGZyb20gcGdzdGF0X3JlcG9ydF92YWN1dW0oKSB3aGVuIGV4 dHN0YXRzIGlzIHBhc3NlZCAqLworCisJLyogU3VidHJhY3QgaW5kZXggc3RhdHMgZnJvbSBo ZWFwIHRvIGF2b2lkIGRvdWJsZS1jb3VudGluZyAqLworCWV4dFZhY1N0YXRzLT5jb21tb24u YmxrX3JlYWRfdGltZSAtPSB2YWNyZWwtPmV4dFZhY1JlcG9ydElkeC5jb21tb24uYmxrX3Jl YWRfdGltZTsKKwlleHRWYWNTdGF0cy0+Y29tbW9uLmJsa193cml0ZV90aW1lIC09IHZhY3Jl bC0+ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi5ibGtfd3JpdGVfdGltZTsKKwlleHRWYWNTdGF0 cy0+Y29tbW9uLnRvdGFsX2Jsa3NfZGlydGllZCAtPSB2YWNyZWwtPmV4dFZhY1JlcG9ydElk eC5jb21tb24udG90YWxfYmxrc19kaXJ0aWVkOworCWV4dFZhY1N0YXRzLT5jb21tb24udG90 YWxfYmxrc19oaXQgLT0gdmFjcmVsLT5leHRWYWNSZXBvcnRJZHguY29tbW9uLnRvdGFsX2Js a3NfaGl0OworCWV4dFZhY1N0YXRzLT5jb21tb24udG90YWxfYmxrc19yZWFkIC09IHZhY3Jl bC0+ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi50b3RhbF9ibGtzX3JlYWQ7CisJZXh0VmFjU3Rh dHMtPmNvbW1vbi50b3RhbF9ibGtzX3dyaXR0ZW4gLT0gdmFjcmVsLT5leHRWYWNSZXBvcnRJ ZHguY29tbW9uLnRvdGFsX2Jsa3Nfd3JpdHRlbjsKKwlleHRWYWNTdGF0cy0+Y29tbW9uLndh bF9ieXRlcyAtPSB2YWNyZWwtPmV4dFZhY1JlcG9ydElkeC5jb21tb24ud2FsX2J5dGVzOwor CWV4dFZhY1N0YXRzLT5jb21tb24ud2FsX2ZwaSAtPSB2YWNyZWwtPmV4dFZhY1JlcG9ydElk eC5jb21tb24ud2FsX2ZwaTsKKwlleHRWYWNTdGF0cy0+Y29tbW9uLndhbF9yZWNvcmRzIC09 IHZhY3JlbC0+ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi53YWxfcmVjb3JkczsKKwlleHRWYWNT dGF0cy0+Y29tbW9uLnRvdGFsX3RpbWUgLT0gdmFjcmVsLT5leHRWYWNSZXBvcnRJZHguY29t bW9uLnRvdGFsX3RpbWU7CisJZXh0VmFjU3RhdHMtPmNvbW1vbi5kZWxheV90aW1lIC09IHZh Y3JlbC0+ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi5kZWxheV90aW1lOworfQorCiAvKgogICog SGVscGVyIHRvIHNldCB1cCB0aGUgZWFnZXIgc2Nhbm5pbmcgc3RhdGUgZm9yIHZhY3V1bWlu ZyBhIHNpbmdsZSByZWxhdGlvbi4KICAqIEluaXRpYWxpemVzIHRoZSBlYWdlciBzY2FuIG1h bmFnZW1lbnQgcmVsYXRlZCBtZW1iZXJzIG9mIHRoZSBMVlJlbFN0YXRlLgpAQCAtNzc4LDcg KzgzNyw4IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBh cmFtcyBwYXJhbXMsCiAJLyogVXNlZCBmb3IgaW5zdHJ1bWVudGF0aW9uIGFuZCBzdGF0cyBy ZXBvcnQgKi8KIAlzdGFydHRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKLQlleHR2 YWNfc3RhdHNfc3RhcnQocmVsLCAmZXh0VmFjQ291bnRlcnMpOworCWlmIChzZXRfcmVwb3J0 X3ZhY3V1bV9ob29rKQorCQlleHR2YWNfc3RhdHNfc3RhcnQocmVsLCAmZXh0VmFjQ291bnRl cnMpOwogCiAJcGdzdGF0X3Byb2dyZXNzX3N0YXJ0X2NvbW1hbmQoUFJPR1JFU1NfQ09NTUFO RF9WQUNVVU0sCiAJCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxpZChyZWwpKTsKQEAgLTEwOTQs MTEgKzExNTQsMjUgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFj dXVtUGFyYW1zIHBhcmFtcywKIAkgKiBzb29uIGluIGNhc2VzIHdoZXJlIHRoZSBmYWlsc2Fm ZSBwcmV2ZW50ZWQgc2lnbmlmaWNhbnQgYW1vdW50cyBvZiBoZWFwCiAJICogdmFjdXVtaW5n LgogCSAqLwotCXBnc3RhdF9yZXBvcnRfdmFjdXVtKHJlbCwKLQkJCQkJCSBNYXgodmFjcmVs LT5uZXdfbGl2ZV90dXBsZXMsIDApLAotCQkJCQkJIHZhY3JlbC0+cmVjZW50bHlfZGVhZF90 dXBsZXMgKwotCQkJCQkJIHZhY3JlbC0+bWlzc2VkX2RlYWRfdHVwbGVzLAotCQkJCQkJIHN0 YXJ0dGltZSk7CisJaWYgKHNldF9yZXBvcnRfdmFjdXVtX2hvb2spCisJeworCQlleHR2YWNf c3RhdHNfZW5kKHJlbCwgJmV4dFZhY0NvdW50ZXJzLCAmZXh0VmFjUmVwb3J0LmNvbW1vbik7 CisJCWFjY3VtdWxhdGVfaGVhcF92YWN1dW1fc3RhdGlzdGljcyh2YWNyZWwsICZleHRWYWNS ZXBvcnQpOworCisJCXBnc3RhdF9yZXBvcnRfdmFjdXVtX2V4dChyZWwsCisJCQkJCQkJCSBN YXgodmFjcmVsLT5uZXdfbGl2ZV90dXBsZXMsIDApLAorCQkJCQkJCQkgdmFjcmVsLT5yZWNl bnRseV9kZWFkX3R1cGxlcyArCisJCQkJCQkJCSB2YWNyZWwtPm1pc3NlZF9kZWFkX3R1cGxl cywKKwkJCQkJCQkJIHN0YXJ0dGltZSwKKwkJCQkJCQkJICZleHRWYWNSZXBvcnQpOworCX0K KwllbHNlCisJCXBnc3RhdF9yZXBvcnRfdmFjdXVtX2V4dChyZWwsCisJCQkJCQkJCSBNYXgo dmFjcmVsLT5uZXdfbGl2ZV90dXBsZXMsIDApLAorCQkJCQkJCQkgdmFjcmVsLT5yZWNlbnRs eV9kZWFkX3R1cGxlcyArCisJCQkJCQkJCSB2YWNyZWwtPm1pc3NlZF9kZWFkX3R1cGxlcywK KwkJCQkJCQkJIHN0YXJ0dGltZSwKKwkJCQkJCQkJIE5VTEwpOwogCiAJcGdzdGF0X3Byb2dy ZXNzX2VuZF9jb21tYW5kKCk7CiAKQEAgLTMyNTYsOCArMzMzMCw4IEBAIGxhenlfdmFjdXVt X29uZV9pbmRleChSZWxhdGlvbiBpbmRyZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0 YXQsCiAJTFZFeHRTdGF0Q291bnRlcnNJZHggZXh0VmFjQ291bnRlcnM7CiAJUGdTdGF0X1Zh Y3V1bVJlbGF0aW9uQ291bnRzIGV4dFZhY1JlcG9ydDsKIAotCWV4dHZhY19zdGF0c19zdGFy dF9pZHgoaW5kcmVsLCBpc3RhdCwgJmV4dFZhY0NvdW50ZXJzKTsKLQorCWlmIChzZXRfcmVw b3J0X3ZhY3V1bV9ob29rKQorCQlleHR2YWNfc3RhdHNfc3RhcnRfaWR4KGluZHJlbCwgaXN0 YXQsICZleHRWYWNDb3VudGVycyk7CiAJaXZpbmZvLmluZGV4ID0gaW5kcmVsOwogCWl2aW5m by5oZWFwcmVsID0gdmFjcmVsLT5yZWw7CiAJaXZpbmZvLmFuYWx5emVfb25seSA9IGZhbHNl OwpAQCAtMzI4NCw4ICszMzU4LDEzIEBAIGxhenlfdmFjdXVtX29uZV9pbmRleChSZWxhdGlv biBpbmRyZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAJaXN0YXQgPSB2YWNf YnVsa2RlbF9vbmVfaW5kZXgoJml2aW5mbywgaXN0YXQsIHZhY3JlbC0+ZGVhZF9pdGVtcywK IAkJCQkJCQkJICB2YWNyZWwtPmRlYWRfaXRlbXNfaW5mbyk7CiAKLQltZW1zZXQoJmV4dFZh Y1JlcG9ydCwgMCwgc2l6ZW9mKGV4dFZhY1JlcG9ydCkpOwotCWV4dHZhY19zdGF0c19lbmRf aWR4KGluZHJlbCwgaXN0YXQsICZleHRWYWNDb3VudGVycywgJmV4dFZhY1JlcG9ydCk7CisJ aWYgKHNldF9yZXBvcnRfdmFjdXVtX2hvb2spCisJeworCQltZW1zZXQoJmV4dFZhY1JlcG9y dCwgMCwgc2l6ZW9mKGV4dFZhY1JlcG9ydCkpOworCQlleHR2YWNfc3RhdHNfZW5kX2lkeChp bmRyZWwsIGlzdGF0LCAmZXh0VmFjQ291bnRlcnMsICZleHRWYWNSZXBvcnQpOworCQlwZ3N0 YXRfcmVwb3J0X3ZhY3V1bV9leHQoaW5kcmVsLCAtMSwgLTEsIDAsICZleHRWYWNSZXBvcnQp OworCQlhY2N1bXVsYXRlX2lkeHNfdmFjdXVtX3N0YXRpc3RpY3ModmFjcmVsLCAmZXh0VmFj UmVwb3J0KTsKKwl9CiAKIAkvKiBSZXZlcnQgdG8gdGhlIHByZXZpb3VzIHBoYXNlIGluZm9y bWF0aW9uIGZvciBlcnJvciB0cmFjZWJhY2sgKi8KIAlyZXN0b3JlX3ZhY3V1bV9lcnJvcl9p bmZvKHZhY3JlbCwgJnNhdmVkX2Vycl9pbmZvKTsKQEAgLTMzMTQsOCArMzM5Myw4IEBAIGxh enlfY2xlYW51cF9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtEZWxldGVS ZXN1bHQgKmlzdGF0LAogCUxWRXh0U3RhdENvdW50ZXJzSWR4IGV4dFZhY0NvdW50ZXJzOwog CVBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cyBleHRWYWNSZXBvcnQ7CiAKLQlleHR2YWNf c3RhdHNfc3RhcnRfaWR4KGluZHJlbCwgaXN0YXQsICZleHRWYWNDb3VudGVycyk7Ci0KKwlp ZiAoc2V0X3JlcG9ydF92YWN1dW1faG9vaykKKwkJZXh0dmFjX3N0YXRzX3N0YXJ0X2lkeChp bmRyZWwsIGlzdGF0LCAmZXh0VmFjQ291bnRlcnMpOwogCWl2aW5mby5pbmRleCA9IGluZHJl bDsKIAlpdmluZm8uaGVhcHJlbCA9IHZhY3JlbC0+cmVsOwogCWl2aW5mby5hbmFseXplX29u bHkgPSBmYWxzZTsKQEAgLTMzNDEsOCArMzQyMCwxMyBAQCBsYXp5X2NsZWFudXBfb25lX2lu ZGV4KFJlbGF0aW9uIGluZHJlbCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAog CWlzdGF0ID0gdmFjX2NsZWFudXBfb25lX2luZGV4KCZpdmluZm8sIGlzdGF0KTsKIAotCW1l bXNldCgmZXh0VmFjUmVwb3J0LCAwLCBzaXplb2YoZXh0VmFjUmVwb3J0KSk7Ci0JZXh0dmFj X3N0YXRzX2VuZF9pZHgoaW5kcmVsLCBpc3RhdCwgJmV4dFZhY0NvdW50ZXJzLCAmZXh0VmFj UmVwb3J0KTsKKwlpZiAoc2V0X3JlcG9ydF92YWN1dW1faG9vaykKKwl7CisJCW1lbXNldCgm ZXh0VmFjUmVwb3J0LCAwLCBzaXplb2YoZXh0VmFjUmVwb3J0KSk7CisJCWV4dHZhY19zdGF0 c19lbmRfaWR4KGluZHJlbCwgaXN0YXQsICZleHRWYWNDb3VudGVycywgJmV4dFZhY1JlcG9y dCk7CisJCXBnc3RhdF9yZXBvcnRfdmFjdXVtX2V4dChpbmRyZWwsIC0xLCAtMSwgMCwgJmV4 dFZhY1JlcG9ydCk7CisJCWFjY3VtdWxhdGVfaWR4c192YWN1dW1fc3RhdGlzdGljcyh2YWNy ZWwsICZleHRWYWNSZXBvcnQpOworCX0KIAogCS8qIFJldmVydCB0byB0aGUgcHJldmlvdXMg cGhhc2UgaW5mb3JtYXRpb24gZm9yIGVycm9yIHRyYWNlYmFjayAqLwogCXJlc3RvcmVfdmFj dXVtX2Vycm9yX2luZm8odmFjcmVsLCAmc2F2ZWRfZXJyX2luZm8pOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggN2E4NWM2NDQ3NDkuLmQwNDI2ZTIyOGI0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTg3OSw4ICs4 NzksOCBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzLCBSZWxhdGlvbiBpbmRyZWwsCiAJaWYgKGluZHN0YXRzLT5pc3RhdF91 cGRhdGVkKQogCQlpc3RhdCA9ICYoaW5kc3RhdHMtPmlzdGF0KTsKIAotCWV4dHZhY19zdGF0 c19zdGFydF9pZHgoaW5kcmVsLCBpc3RhdCwgJmV4dFZhY0NvdW50ZXJzKTsKLQorCWlmIChz ZXRfcmVwb3J0X3ZhY3V1bV9ob29rKQorCQlleHR2YWNfc3RhdHNfc3RhcnRfaWR4KGluZHJl bCwgaXN0YXQsICZleHRWYWNDb3VudGVycyk7CiAJaXZpbmZvLmluZGV4ID0gaW5kcmVsOwog CWl2aW5mby5oZWFwcmVsID0gcHZzLT5oZWFwcmVsOwogCWl2aW5mby5hbmFseXplX29ubHkg PSBmYWxzZTsKQEAgLTkwOSw4ICs5MDksMTIgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nf b25lX2luZGV4KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24gaW5kcmVsLAog CQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRyZWwpKTsKIAl9CiAKLQltZW1zZXQo JmV4dFZhY1JlcG9ydCwgMCwgc2l6ZW9mKGV4dFZhY1JlcG9ydCkpOwotCWV4dHZhY19zdGF0 c19lbmRfaWR4KGluZHJlbCwgaXN0YXRfcmVzLCAmZXh0VmFjQ291bnRlcnMsICZleHRWYWNS ZXBvcnQpOworCWlmIChzZXRfcmVwb3J0X3ZhY3V1bV9ob29rKQorCXsKKwkJbWVtc2V0KCZl eHRWYWNSZXBvcnQsIDAsIHNpemVvZihleHRWYWNSZXBvcnQpKTsKKwkJZXh0dmFjX3N0YXRz X2VuZF9pZHgoaW5kcmVsLCBpc3RhdF9yZXMsICZleHRWYWNDb3VudGVycywgJmV4dFZhY1Jl cG9ydCk7CisJCXBnc3RhdF9yZXBvcnRfdmFjdXVtX2V4dChpbmRyZWwsIC0xLCAtMSwgMCwg JmV4dFZhY1JlcG9ydCk7CisJfQogCiAJLyoKIAkgKiBDb3B5IHRoZSBpbmRleCBidWxrLWRl bGV0aW9uIHJlc3VsdCByZXR1cm5lZCBmcm9tIGFtYnVsa2RlbGV0ZSBhbmQKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKaW5kZXggODg1ZDU5 MGQyYjIuLmYwZGIxMDgwM2Q1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXRfcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfcmVsYXRpb24uYwpAQCAtMjcxLDYgKzI3MSwzMCBAQCBwZ3N0YXRfcmVwb3J0 X3ZhY3V1bShSZWxhdGlvbiByZWwsIFBnU3RhdF9Db3VudGVyIGxpdmV0dXBsZXMsCiAJKHZv aWQpIHBnc3RhdF9mbHVzaF9iYWNrZW5kKGZhbHNlLCBQR1NUQVRfQkFDS0VORF9GTFVTSF9J Tyk7CiB9CiAKKy8qCisgKiBIb29rIGZvciBleHRlbnNpb25zIHRvIHJlY2VpdmUgZXh0ZW5k ZWQgdmFjdXVtIHN0YXRpc3RpY3MuCisgKiBOVUxMIHdoZW4gbm8gZXh0ZW5zaW9uIGhhcyBy ZWdpc3RlcmVkLgorICovCitzZXRfcmVwb3J0X3ZhY3V1bV9ob29rX3R5cGUgc2V0X3JlcG9y dF92YWN1dW1faG9vayA9IE5VTEw7CisKKy8qCisgKiBSZXBvcnQgZXh0ZW5kZWQgdmFjdXVt IHN0YXRpc3RpY3MgdG8gZXh0ZW5zaW9ucyB2aWEgc2V0X3JlcG9ydF92YWN1dW1faG9vay4K KyAqIFdoZW4gbGl2ZXR1cGxlcy9kZWFkdHVwbGVzL3N0YXJ0dGltZSBhcmUgcHJvdmlkZWQg KGhlYXAgY2FzZSksIGFsc28gY2FsbHMKKyAqIHBnc3RhdF9yZXBvcnRfdmFjdXVtLiBGb3Ig aW5kZXhlcywgcGFzcyAtMSwgLTEsIDAgdG8gc2tpcCBwZ3N0YXRfcmVwb3J0X3ZhY3V1bS4K KyAqLwordm9pZAorcGdzdGF0X3JlcG9ydF92YWN1dW1fZXh0KFJlbGF0aW9uIHJlbCwgUGdT dGF0X0NvdW50ZXIgbGl2ZXR1cGxlcywKKwkJCQkJCSBQZ1N0YXRfQ291bnRlciBkZWFkdHVw bGVzLCBUaW1lc3RhbXBUeiBzdGFydHRpbWUsCisJCQkJCQkgUGdTdGF0X1ZhY3V1bVJlbGF0 aW9uQ291bnRzICogZXh0c3RhdHMpCit7CisJcGdzdGF0X3JlcG9ydF92YWN1dW0ocmVsLCBs aXZldHVwbGVzLCBkZWFkdHVwbGVzLCBzdGFydHRpbWUpOworCisJaWYgKGV4dHN0YXRzICE9 IE5VTEwgJiYgc2V0X3JlcG9ydF92YWN1dW1faG9vaykKKwkJKCpzZXRfcmVwb3J0X3ZhY3V1 bV9ob29rKSAoUmVsYXRpb25HZXRSZWxpZChyZWwpLAorCQkJCQkJCQkgICByZWwtPnJkX3Jl bC0+cmVsaXNzaGFyZWQsCisJCQkJCQkJCSAgIGV4dHN0YXRzKTsKK30KKwogLyoKICAqIFJl cG9ydCB0aGF0IHRoZSB0YWJsZSB3YXMganVzdCBhbmFseXplZCBhbmQgZmx1c2ggSU8gc3Rh dGlzdGljcy4KICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0u aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oCmluZGV4IGM1MGNlNTFlOWRhLi4w OWY3Nzc1Yjg1ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgK KysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKQEAgLTIzLDYgKzIzLDcgQEAK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vf bm9kZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Iv aW5zdHJ1bWVudC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgogI2luY2x1ZGUgInV0 aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmluZGV4IDdmZThlNTQ2 OGI4Li4xMDEzYTUyZGU2ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdzdGF0LmgKKysr IGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTkzLDYgKzkzLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGdTdGF0X0Z1bmN0aW9uQ291bnRzCiAgKiBXb3JraW5nIHN0YXRlIG5lZWRlZCB0byBh Y2N1bXVsYXRlIHBlci1mdW5jdGlvbi1jYWxsIHRpbWluZyBzdGF0aXN0aWNzLgogICovCiAv KgorICogRXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3RpY3MgLSBwYXNzZWQgdG8gZXh0ZW5zaW9u cyB2aWEgc2V0X3JlcG9ydF92YWN1dW1faG9vay4KICAqIFR5cGUgb2YgZW50cnk6IHRhYmxl IChoZWFwKSwgaW5kZXgsIG9yIGRhdGFiYXNlIGFnZ3JlZ2F0ZS4KICAqLwogdHlwZWRlZiBl bnVtIEV4dFZhY1JlcG9ydFR5cGUKQEAgLTczOCw2ICs3MzksMTYgQEAgZXh0ZXJuIHZvaWQg cGdzdGF0X3JlcG9ydF92YWN1dW0oUmVsYXRpb24gcmVsLCBQZ1N0YXRfQ291bnRlciBsaXZl dHVwbGVzLAogCQkJCQkJCQkgUGdTdGF0X0NvdW50ZXIgZGVhZHR1cGxlcywKIAkJCQkJCQkJ IFRpbWVzdGFtcFR6IHN0YXJ0dGltZSk7CiAKK2V4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRf dmFjdXVtX2V4dChSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkgUGdTdGF0X0NvdW50ZXIgbGl2 ZXR1cGxlcywKKwkJCQkJCQkJCSBQZ1N0YXRfQ291bnRlciBkZWFkdHVwbGVzLAorCQkJCQkJ CQkJIFRpbWVzdGFtcFR6IHN0YXJ0dGltZSwKKwkJCQkJCQkJCSBQZ1N0YXRfVmFjdXVtUmVs YXRpb25Db3VudHMgKiBleHRzdGF0cyk7CisKKy8qIEhvb2sgZm9yIGV4dGVuc2lvbnMgdG8g cmVjZWl2ZSBleHRlbmRlZCB2YWN1dW0gc3RhdGlzdGljcyAqLwordHlwZWRlZiB2b2lkICgq c2V0X3JlcG9ydF92YWN1dW1faG9va190eXBlKSAoT2lkIHRhYmxlb2lkLCBib29sIHNoYXJl ZCwKKwkJCQkJCQkJCQkJIFBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cyAqIHBhcmFtcyk7 CitleHRlcm4gUEdETExJTVBPUlQgc2V0X3JlcG9ydF92YWN1dW1faG9va190eXBlIHNldF9y ZXBvcnRfdmFjdXVtX2hvb2s7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2FuYWx5emUo UmVsYXRpb24gcmVsLAogCQkJCQkJCQkgIFBnU3RhdF9Db3VudGVyIGxpdmV0dXBsZXMsIFBn U3RhdF9Db3VudGVyIGRlYWR0dXBsZXMsCiAJCQkJCQkJCSAgYm9vbCByZXNldGNvdW50ZXIs IFRpbWVzdGFtcFR6IHN0YXJ0dGltZSk7Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --------------mbznC2Bpd5jSTp4e82HRfj32--