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 1vN6mv-00BHab-2q for pgpool-hackers@arkaria.postgresql.org; Sun, 23 Nov 2025 09:53:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vN6mu-00E43F-1h for pgpool-hackers@arkaria.postgresql.org; Sun, 23 Nov 2025 09:53:44 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vN6mu-00E437-0e for pgpool-hackers@lists.postgresql.org; Sun, 23 Nov 2025 09:53:44 +0000 Received: from mail-yx1-xb12d.google.com ([2607:f8b0:4864:20::b12d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vN6mr-0012bL-13 for pgpool-hackers@lists.postgresql.org; Sun, 23 Nov 2025 09:53:44 +0000 Received: by mail-yx1-xb12d.google.com with SMTP id 956f58d0204a3-640f2c9cc72so2567311d50.3 for ; Sun, 23 Nov 2025 01:53:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tailorbrands.com; s=google; t=1763891619; x=1764496419; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=qITg/ycQ5+/1Y+0yF1zBsOMfsQzKrVyCZGe/9/Q1m7k=; b=JLPjqu4oFOxGKb0AFIsKRoQrpxZrJJddLloUt3Invvo/vv/TSpyB8wi1YjEekMulXW +qiS1TkkiTx+fEAtbSxDZB6FU5i8Cv/9iJhBVrCW9JmtABgUPSzSk74DL1PPGqitr6Xd wcIo9oW8ED+DmP/10XweZq35nRtvU2g/v2aKYuVFVe7Qrc8ajvYnnThd8geovfBsRpyl NwrHYh1/DQMjDdtZ6XGemnJCJdUTuHW3Q1hYqWKP5ztrOdKqKotr+GA7k80dTvtZuxaQ o2poet8TLW4i30QCPIqz4SB8zsF/kyj4tCzH2Cq2lefUBJW55JGMLxfe5y/hqi3hPehV Rn6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763891619; x=1764496419; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=qITg/ycQ5+/1Y+0yF1zBsOMfsQzKrVyCZGe/9/Q1m7k=; b=CPquZaSLtBNid0/C1sCSGDwEMVDY7VZzjU3+1LyHMAqIs1Cftdt61uFrb+F2GaDo9o nzt4QIYAcy/fsVZ1GFhwPCIBFjVjS1FGkr+WDpv7XSK8ufC6YPQzh+iAZth1m93BhuyG 1Ll1tAlDy688rHg2iUw3aJqSgP4o8RhgBTWymf7HzaAkPR19Il4n+bXECBo5NMs7y/7u l2yp5stxc9I6MAM6nM6yCbUjXoR2U2vRbo7iHDDxflrsgRScgxhrT3PyetMb0COZ6SRn mMjoJ6dZjS+RDEWc34MaSR1ahdj1RSNqQQffglErDbJoYHffK/swHe16kL/8kNyoDh9c sq+w== X-Gm-Message-State: AOJu0YygPdrS2dr+RRn1C1d8BH8BFtkJemq/Z78s+N38ZECtrxvHQeiV +fnM46nlLQTaa7mb06aBF4mlMuR1pj+QLGvQZj4NxYsr3JbfJ8ENwYkZ7KMpXYvhnGxcG6xo535 ywR2eEKXYRhR0j/s6md73wXgv/vPjigP70yto+ITrVMat8gH2jRqHyLvGELpX X-Gm-Gg: ASbGncuig7+BEznJYmJ7vTOZeT9nLvCvWhIWjPXQ4MmrszutRs9ZlJDsXIDXxSyXCSf 2/tm3YfHhARwA0pgd6wRhTqErhQIFqWUQS0ereq4qXV+A6rOcKVXB3unwZ8qrwJDWeIdqiewiEE gV6H4SbzeVco6GHgmFN1L4hAReRZb3K/Hw2h7pCzBk5Cng7mT/vfZ+QeQEkoUDZupgsqOGeElip 5U5eSvXAhBospQG8w9pjMj6hmOmvPP8pup0iJycTGpGMzeK58MqNVz/ylIrK3fH8nPkIuVNJYPl lUiqIQ2sQjBIxDTI+WcXXWxKzu1h7IqxpGgiK9C68w8aJD5SMG212u/RHbvo6PSZcq+/ X-Google-Smtp-Source: AGHT+IEFWbnXQwr8Ha1JYg/7JNwjtY7F4gcCBVpw4GJ/sSg4HlIp7BaLv+xChRVKM/kyQHY/My6Gfq2e8Icig+5aeCw= X-Received: by 2002:a05:690c:30f:b0:786:506c:3cd8 with SMTP id 00721157ae682-78a8b4975d7mr117284207b3.21.1763891618860; Sun, 23 Nov 2025 01:53:38 -0800 (PST) MIME-Version: 1.0 References: <20251106.182419.823615469104357272.ishii@postgresql.org> <20251120.080930.16399896794232732.ishii@postgresql.org> In-Reply-To: <20251120.080930.16399896794232732.ishii@postgresql.org> From: Nadav Shatz Date: Sun, 23 Nov 2025 11:53:27 +0200 X-Gm-Features: AWmQ_bkvWvgG5Ed62XuuZZqSRRnHF0eHXcvlGkaTfNyzqAdQhH1OG1bfXX7V2Sw Message-ID: Subject: Re: Proposal: recent access based routing for primary-replica setups To: Tatsuo Ishii Cc: pgpool-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000005d861a0644400529" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005d861a0644400529 Content-Type: multipart/alternative; boundary="0000000000005d86180644400527" --0000000000005d86180644400527 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Tatsuo, Sorry again, this was due to the separation of 2 patches and i only sent the one. I've merged it into 1 commit and 1 patch and rebased over master to avoid these issues moving forward. PFA latest version On Thu, Nov 20, 2025 at 1:09=E2=80=AFAM Tatsuo Ishii = wrote: > Hi Nadav, > > Thank you for new patch. > Unfortunately the patch did not apply to current master. > > $ git apply > ~/0001-Fix-multiple-issues-in-external-replication-delay-fe.patch > error: patch failed: src/streaming_replication/pool_worker_child.c:694 > error: src/streaming_replication/pool_worker_child.c: patch does not appl= y > > Maybe the patch is on top of your previous patch? > > Also I suggest to use "-v" option of "git format-patch" to add the > patch version number so that we can easily know which patch is the > latest. > > Best regards, > -- > Tatsuo Ishii > SRA OSS K.K. > English: http://www.sraoss.co.jp/index_en/ > Japanese:http://www.sraoss.co.jp > > > Hi Tatsuo, > > > > Please see attached an updated version. > > > > thank you > > > > On Fri, Nov 7, 2025 at 2:07=E2=80=AFAM Tatsuo Ishii > wrote: > > > >> > Sorry for that - thanks for the patch. > >> > > >> > Please find attached a new version > >> > >> Thanks for the new version. Unfortunately this time regression test > >> fails at: > >> > >> > Waiting for command timeout... > >> > fail: command timeout not detected > >> > >> Attached is the pgpool.log. > >> > >> Best regards, > >> -- > >> Tatsuo Ishii > >> SRA OSS K.K. > >> English: http://www.sraoss.co.jp/index_en/ > >> Japanese:http://www.sraoss.co.jp > >> > >> > On Mon, Nov 3, 2025 at 9:05=E2=80=AFAM Tatsuo Ishii > >> wrote: > >> > > >> >> > thanks and sorry for the issues, please find attached updated > version. > >> >> > >> >> No problem. > >> >> > >> >> This time the patch applies fine, no compiler warnings. However, > >> >> regression test did not passed here (on Ubuntu 24 LTS if this > >> >> matters). So I looked into > >> >> src/test/regression/tests/041.external_replication_delay/test.sh a > >> >> little bit and apply attached patch (test.sh.patch). It moved forwa= rd > >> >> partially but failed at: > >> >> > >> >> fail: command execution failure not detected > >> >> > >> >> Please find attached > >> >> > >> > src/test/regression/tests/041.external_replication_delay/testdir/pgpool.l= og > >> >> and src/test/regression/log/041.external_replication_delay. > >> >> > >> >> Best regards, > >> >> -- > >> >> Tatsuo Ishii > >> >> SRA OSS K.K. > >> >> English: http://www.sraoss.co.jp/index_en/ > >> >> Japanese:http://www.sraoss.co.jp > >> >> > >> > > >> > > >> > -- > >> > Nadav Shatz > >> > Tailor Brands | CTO > >> > > > > > > -- > > Nadav Shatz > > Tailor Brands | CTO > --=20 Nadav Shatz Tailor Brands | CTO --0000000000005d86180644400527 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Tatsuo,

Sorry again, this was due to= the separation of 2 patches and i only sent the one.

<= div>I've merged it into 1 commit and 1 patch and rebased over master to= avoid these issues moving=C2=A0forward.

PFA lates= t version

<= div dir=3D"ltr" class=3D"gmail_attr">On Thu, Nov 20, 2025 at 1:09=E2=80=AFA= M Tatsuo Ishii <ishii@postgresql= .org> wrote:
Hi Nadav,

Thank you for new patch.
Unfortunately the patch did not apply to current master.

$ git apply ~/0001-Fix-multiple-issues-in-external-replication-delay-fe.pat= ch
error: patch failed: src/streaming_replication/pool_worker_child.c:694
error: src/streaming_replication/pool_worker_child.c: patch does not apply<= br>
Maybe the patch is on top of your previous patch?

Also I suggest to use "-v" option of "git format-patch"= to add the
patch version number so that we can easily know which patch is the
latest.

Best regards,
--
Tatsuo Ishii
SRA OSS K.K.
English: http://www.sraoss.co.jp/index_en/
Japanese:http://www.sraoss.co.jp

> Hi Tatsuo,
>
> Please see attached an updated version.
>
> thank you
>
> On Fri, Nov 7, 2025 at 2:07=E2=80=AFAM Tatsuo Ishii <ishii@postgresql.org> wr= ote:
>
>> > Sorry for that - thanks for the patch.
>> >
>> > Please find attached a new version
>>
>> Thanks for the new version. Unfortunately this time regression tes= t
>> fails at:
>>
>> > Waiting for command timeout...
>> > fail: command timeout not detected
>>
>> Attached is the pgpool.log.
>>
>> Best regards,
>> --
>> Tatsuo Ishii
>> SRA OSS K.K.
>> English: http://www.sraoss.co.jp/index_en/
>> Japanese:http://www.sraoss.co.jp
>>
>> > On Mon, Nov 3, 2025 at 9:05=E2=80=AFAM Tatsuo Ishii <ishii@postgresql.org>
>> wrote:
>> >
>> >> > thanks and sorry for the issues, please find attache= d updated version.
>> >>
>> >> No problem.
>> >>
>> >> This time the patch applies fine, no compiler warnings.= =C2=A0 However,
>> >> regression test did not passed here (on Ubuntu 24 LTS if = this
>> >> matters).=C2=A0 So I looked into
>> >> src/test/regression/tests/041.external_replication_delay/= test.sh a
>> >> little bit and apply attached patch (test.sh.patch). It m= oved forward
>> >> partially but failed at:
>> >>
>> >> fail: command execution failure not detected
>> >>
>> >> Please find attached
>> >>
>> src/test/regression/tests/041.external_replication_delay/testdir/p= gpool.log
>> >> and src/test/regression/log/041.external_replication_dela= y.
>> >>
>> >> Best regards,
>> >> --
>> >> Tatsuo Ishii
>> >> SRA OSS K.K.
>> >> English:
http://www.sraoss.co.jp/index_en/ >> >> Japanese:http://www.sraoss.co.jp
>> >>
>> >
>> >
>> > --
>> > Nadav Shatz
>> > Tailor Brands | CTO
>>
>
>
> --
> Nadav Shatz
> Tailor Brands | CTO


--
Nadav Shatz
<= font color=3D"#000000">Tailor Brands=C2=A0| CTO
--0000000000005d86180644400527-- --0000000000005d861a0644400529 Content-Type: application/octet-stream; name="v1-0001-feat-external-replication-delay-injection-via-ext.patch" Content-Disposition: attachment; filename="v1-0001-feat-external-replication-delay-injection-via-ext.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mibjio850 RnJvbSBjYWFlOGUwNTI4NGJhOTQwOTAwNDg3NThlYzRlNmI0OWE2YjRkMTUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYWRhdiBTaGF0eiA8bmFkYXZAdGFpbG9yYnJhbmRzLmNvbT4K RGF0ZTogU3VuLCAyMyBOb3YgMjAyNSAxMDo1NjozMCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjFd IGZlYXQ6IGV4dGVybmFsIHJlcGxpY2F0aW9uIGRlbGF5IGluamVjdGlvbiB2aWEgZXh0ZXJuYWwK IGNvbW1hbmQKCi0tLQogZG9jL3NyYy9zZ21sL3N0cmVhbS1jaGVjay5zZ21sICAgICAgICAgICAg ICAgIHwgIDY4ICsrKwogc3JjL2NvbmZpZy9wb29sX2NvbmZpZ192YXJpYWJsZXMuYyAgICAgICAg ICAgIHwgIDIxICsKIHNyYy9pbmNsdWRlL3Bvb2xfY29uZmlnLmggICAgICAgICAgICAgICAgICAg ICB8ICAgMyArLQogc3JjL3NhbXBsZS9wZ3Bvb2wuY29uZi5zYW1wbGUtc3RyZWFtICAgICAgICAg IHwgIDE0ICsKIHNyYy9zdHJlYW1pbmdfcmVwbGljYXRpb24vcG9vbF93b3JrZXJfY2hpbGQuYyB8 IDM2NCArKysrKysrKysrKysrKystCiAuLi4vMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5 L1JFQURNRSAgICAgfCAgNTkgKysrCiAuLi4vMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5 L3Rlc3Quc2ggICAgfCA0MDQgKysrKysrKysrKysrKysrKysrCiAuLi4vdGVzdF9wYXJzaW5nLnNo ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTQgKysrCiAuLi4vdGVzdF92YWxpZGF0aW9u LnNoICAgICAgICAgICAgICAgICAgICAgICAgfCAzMjMgKysrKysrKysrKysrKysKIDkgZmlsZXMg Y2hhbmdlZCwgMTMwNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9u X2RlbGF5L1JFQURNRQogY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy90ZXN0L3JlZ3Jlc3Npb24vdGVz dHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L3Rlc3Quc2gKIGNyZWF0ZSBtb2RlIDEw MDc1NSBzcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9k ZWxheS90ZXN0X3BhcnNpbmcuc2gKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMvdGVzdC9yZWdyZXNz aW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS90ZXN0X3ZhbGlkYXRpb24u c2gKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3RyZWFtLWNoZWNrLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvc3RyZWFtLWNoZWNrLnNnbWwKaW5kZXggZDJjYTNjYTQ5Li5mYzQ3OTkwODAgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9zdHJlYW0tY2hlY2suc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv c3RyZWFtLWNoZWNrLnNnbWwKQEAgLTMwOSw2ICszMDksNzQgQEAgR1JBTlQgcGdfbW9uaXRvciBU TyBzcl9jaGVja191c2VyOwogICAgIDwvbGlzdGl0ZW0+CiAgIDwvdmFybGlzdGVudHJ5PgogCisg IDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1yZXBsaWNhdGlvbi1kZWxheS1zb3VyY2UtY21kIiB4cmVm bGFiZWw9InJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQiPgorICAgPHRlcm0+PHZhcm5hbWU+ cmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZDwvdmFybmFtZT4gKDx0eXBlPnN0cmluZzwvdHlw ZT4pCisgICAgPGluZGV4dGVybT4KKyAgICAgPHByaW1hcnk+PHZhcm5hbWU+cmVwbGljYXRpb25f ZGVsYXlfc291cmNlX2NtZDwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1h cnk+CisgICAgPC9pbmRleHRlcm0+CisgICA8L3Rlcm0+CisgICA8bGlzdGl0ZW0+CisgICAgPHBh cmE+CisgICAgIFNwZWNpZmllcyBhbiBleHRlcm5hbCBjb21tYW5kIHRvIHJldHJpZXZlIHJlcGxp Y2F0aW9uIGRlbGF5IGluZm9ybWF0aW9uIGZvciByZXBsaWNhIG5vZGVzLgorICAgICBXaGVuIHRo aXMgcGFyYW1ldGVyIGlzIHNldCBhbmQgbm90IGVtcHR5LCA8cHJvZHVjdG5hbWU+UGdwb29sLUlJ PC9wcm9kdWN0bmFtZT4gdXNlcyB0aGUKKyAgICAgZXh0ZXJuYWwgY29tbWFuZCBpbnN0ZWFkIG9m IGJ1aWx0LWluIGRhdGFiYXNlIHF1ZXJpZXMgdG8gb2J0YWluIHJlcGxpY2F0aW9uIGRlbGF5cy4K KyAgICAgVGhlIGNvbW1hbmQgaXMgZXhlY3V0ZWQgYXMgdGhlIDxwcm9kdWN0bmFtZT5QZ3Bvb2wt SUk8L3Byb2R1Y3RuYW1lPiBwcm9jZXNzIHVzZXIuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgor ICAgICBUaGUgY29tbWFuZCByZWNlaXZlcyByZXBsaWNhIG5vZGUgaWRlbnRpZmllcnMgYXMgcG9z aXRpb25hbCBhcmd1bWVudHMsIHdpdGggdGhlIHByaW1hcnkKKyAgICAgbm9kZSBvbWl0dGVkLiBF YWNoIGlkZW50aWZpZXIgaXMgaW4gdGhlIGZvcm1hdCA8bGl0ZXJhbD4mbHQ7aG9zdG5hbWUmZ3Q7 OiZsdDtwb3J0Jmd0OzwvbGl0ZXJhbD4sCisgICAgIGZvciBleGFtcGxlIDxsaXRlcmFsPnNlcnZl cjE6NTQzMiBzZXJ2ZXIyOjU0MzI8L2xpdGVyYWw+LiBUaGUgb3JkZXIgbWF0Y2hlcworICAgICA8 cHJvZHVjdG5hbWU+UGdwb29sLUlJPC9wcm9kdWN0bmFtZT4ncyBiYWNrZW5kIG9yZGVyIChleGNs dWRpbmcgdGhlIHByaW1hcnkpLCBhbGxvd2luZyB0aGUKKyAgICAgc2NyaXB0IHRvIGNvcnJlbGF0 ZSBleHRlcm5hbCBtZXRyaWNzIChzdWNoIGFzIGZyb20gQVdTIENsb3VkV2F0Y2ggZm9yIEF1cm9y YSkgdG8gdGhlIGNvcnJlY3Qgbm9kZXMuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBU aGUgY29tbWFuZCBtdXN0IHdyaXRlIGEgc2luZ2xlIGxpbmUgdG8gc3Rkb3V0IGNvbnRhaW5pbmcg b25lIHdoaXRlc3BhY2Utc2VwYXJhdGVkIGRlbGF5IHZhbHVlCisgICAgIHBlciByZXBsaWNhLCBp biBtaWxsaXNlY29uZHMsIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBhcmd1bWVudHMuIFRoZSBw cmltYXJ5IG5vZGUncyBkZWxheSBpcworICAgICBpbXBsaWNpdGx5IHplcm8gYW5kIHNob3VsZCBu b3QgYmUgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC4gRGVsYXkgdmFsdWVzIGNhbiBiZSBpbnRlZ2Vy cyBvcgorICAgICBmbG9hdGluZy1wb2ludCBudW1iZXJzLgorICAgIDwvcGFyYT4KKyAgICA8cGFy YT4KKyAgICAgU3BlY2lhbCB2YWx1ZTogPGxpdGVyYWw+LTE8L2xpdGVyYWw+IGluZGljYXRlcyBh IHJlcGxpY2EgdGhhdCBpcyBkb3duIGJ1dCBub3QgeWV0IGRldGVjdGVkCisgICAgIGJ5IDxwcm9k dWN0bmFtZT5QZ3Bvb2wtSUk8L3Byb2R1Y3RuYW1lPidzIGhlYWx0aCBjaGVja3MuIDxwcm9kdWN0 bmFtZT5QZ3Bvb2wtSUk8L3Byb2R1Y3RuYW1lPgorICAgICB3aWxsIGxvZyB0aGlzIGNvbmRpdGlv biBidXQgcmVseSBvbiBpdHMgb3duIGhlYWx0aC1jaGVjayBsb2dpYyB0byBkZWNpZGUgd2hldGhl ciB0byB0cmlnZ2VyCisgICAgIGZhaWxvdmVyOyBubyBmYWlsb3ZlciBpcyB0cmlnZ2VyZWQgc29s ZWx5IGJ5IHJlY2VpdmluZyA8bGl0ZXJhbD4tMTwvbGl0ZXJhbD4uCisgICAgPC9wYXJhPgorICAg IDxwYXJhPgorICAgICBFeGFtcGxlIGZvciBhIDMtbm9kZSBjbHVzdGVyICgxIHByaW1hcnkgKyAy IHJlcGxpY2FzKTogaWYgdGhlIGNvbW1hbmQgcmVjZWl2ZXMgYXJndW1lbnRzCisgICAgIDxsaXRl cmFsPnNlcnZlcjE6NTQzMiBzZXJ2ZXIyOjU0MzI8L2xpdGVyYWw+LCBpdCBzaG91bGQgb3V0cHV0 IDxsaXRlcmFsPiIyNS41IDEwMCI8L2xpdGVyYWw+CisgICAgIHRvIGluZGljYXRlIHRoZSBmaXJz dCByZXBsaWNhIGhhcyAyNS41bXMgZGVsYXkgYW5kIHRoZSBzZWNvbmQgaGFzIDEwMG1zIGRlbGF5 LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgRGVmYXVsdCBpcyBlbXB0eSAodXNlIGJ1 aWx0LWluIHJlcGxpY2F0aW9uIGRlbGF5IHF1ZXJpZXMpLgorICAgIDwvcGFyYT4KKyAgICA8cGFy YT4KKyAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGNoYW5nZWQgYnkgcmVsb2FkaW5nIHRoZSA8 cHJvZHVjdG5hbWU+UGdwb29sLUlJPC8+IGNvbmZpZ3VyYXRpb25zLgorICAgIDwvcGFyYT4KKyAg IDwvbGlzdGl0ZW0+CisgIDwvdmFybGlzdGVudHJ5PgorCisgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1 Yy1yZXBsaWNhdGlvbi1kZWxheS1zb3VyY2UtdGltZW91dCIgeHJlZmxhYmVsPSJyZXBsaWNhdGlv bl9kZWxheV9zb3VyY2VfdGltZW91dCI+CisgICA8dGVybT48dmFybmFtZT5yZXBsaWNhdGlvbl9k ZWxheV9zb3VyY2VfdGltZW91dDwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAg IDxpbmRleHRlcm0+CisgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPnJlcGxpY2F0aW9uX2RlbGF5X3Nv dXJjZV90aW1lb3V0PC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4K KyAgICA8L2luZGV4dGVybT4KKyAgIDwvdGVybT4KKyAgIDxsaXN0aXRlbT4KKyAgICA8cGFyYT4K KyAgICAgU3BlY2lmaWVzIHRoZSB0aW1lb3V0IGluIHNlY29uZHMgZm9yIHRoZSBleHRlcm5hbCBj b21tYW5kIHNwZWNpZmllZCBieQorICAgICA8eHJlZiBsaW5rZW5kPSJndWMtcmVwbGljYXRpb24t ZGVsYXktc291cmNlLWNtZCI+LgorICAgICBJZiB0aGUgY29tbWFuZCBkb2VzIG5vdCBmaW5pc2gg d2l0aGluIHRoZSB0aW1lb3V0LCA8cHJvZHVjdG5hbWU+UGdwb29sLUlJPC9wcm9kdWN0bmFtZT4K KyAgICAgbG9ncyBhbiBlcnJvciBhbmQgY29udGludWVzIHVzaW5nIHRoZSBidWlsdC1pbiBtZXRo b2QuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBEZWZhdWx0IGlzIDEwIHNlY29uZHMu IFZhbGlkIHJhbmdlIGlzIDEtMzYwMCBzZWNvbmRzLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4K KyAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGNoYW5nZWQgYnkgcmVsb2FkaW5nIHRoZSA8cHJv ZHVjdG5hbWU+UGdwb29sLUlJPC8+IGNvbmZpZ3VyYXRpb25zLgorICAgIDwvcGFyYT4KKyAgIDwv bGlzdGl0ZW0+CisgIDwvdmFybGlzdGVudHJ5PgorCiAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1s b2ctc3RhbmRieS1kZWxheSIgeHJlZmxhYmVsPSJsb2dfc3RhbmRieV9kZWxheSI+CiAgICA8dGVy bT48dmFybmFtZT5sb2dfc3RhbmRieV9kZWxheTwvdmFybmFtZT4gKDx0eXBlPmVudW08L3R5cGU+ KQogICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9zcmMvY29uZmlnL3Bvb2xfY29uZmlnX3Zh cmlhYmxlcy5jIGIvc3JjL2NvbmZpZy9wb29sX2NvbmZpZ192YXJpYWJsZXMuYwppbmRleCA2MmEw NTk3OWEuLmEzNWQyMjAwZiAxMDA2NDQKLS0tIGEvc3JjL2NvbmZpZy9wb29sX2NvbmZpZ192YXJp YWJsZXMuYworKysgYi9zcmMvY29uZmlnL3Bvb2xfY29uZmlnX3ZhcmlhYmxlcy5jCkBAIC05ODAs NiArOTgwLDE2IEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmlnX3N0cmluZyBDb25maWd1cmVOYW1lc1N0 cmluZ1tdID0KIAkJTlVMTCwgTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsicmVwbGlj YXRpb25fZGVsYXlfc291cmNlX2NtZCIsIENGR0NYVF9SRUxPQUQsIFNUUkVBTUlOR19SRVBMSUNB VElPTl9DT05GSUcsCisJCQkiRXh0ZXJuYWwgY29tbWFuZCB0byByZXRyaWV2ZSByZXBsaWNhdGlv biBkZWxheSBpbmZvcm1hdGlvbi4iLAorCQkJQ09ORklHX1ZBUl9UWVBFX1NUUklORywgZmFsc2Us IDAKKwkJfSwKKwkJJmdfcG9vbF9jb25maWcucmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCwK KwkJIiIsCisJCU5VTEwsIE5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7ImZhaWxiYWNr X2NvbW1hbmQiLCBDRkdDWFRfUkVMT0FELCBGQUlMT1ZFUl9DT05GSUcsCiAJCQkiQ29tbWFuZCB0 byBleGVjdXRlIHdoZW4gYmFja2VuZCBub2RlIGlzIGF0dGFjaGVkLiIsCkBAIC0yMzM0LDYgKzIz NDQsMTcgQEAgc3RhdGljIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQog CQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJyZXBsaWNhdGlvbl9kZWxheV9zb3Vy Y2VfdGltZW91dCIsIENGR0NYVF9SRUxPQUQsIFNUUkVBTUlOR19SRVBMSUNBVElPTl9DT05GSUcs CisJCQkiVGltZW91dCBmb3IgZXh0ZXJuYWwgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCBleGVj dXRpb24gaW4gc2Vjb25kcy4iLAorCQkJQ09ORklHX1ZBUl9UWVBFX0lOVCwgZmFsc2UsIDAKKwkJ fSwKKwkJJmdfcG9vbF9jb25maWcucmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQsCisJ CTEwLAorCQkxLCAzNjAwLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCS8qIEVuZC1vZi1s aXN0IG1hcmtlciAqLwogCUVNUFRZX0NPTkZJR19JTlQKIH07CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9wb29sX2NvbmZpZy5oIGIvc3JjL2luY2x1ZGUvcG9vbF9jb25maWcuaAppbmRleCA5MTYw YTMxYzguLjViYzY0NjgwNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9vbF9jb25maWcuaAor KysgYi9zcmMvaW5jbHVkZS9wb29sX2NvbmZpZy5oCkBAIC04Niw3ICs4Niw2IEBAIHR5cGVkZWYg ZW51bSBMb2dTdGFuZGJ5RGVsYXlNb2RlcwogCUxTRF9OT05FCiB9IExvZ1N0YW5kYnlEZWxheU1v ZGVzOwogCi0KIHR5cGVkZWYgZW51bSBNZW1DYWNoZU1ldGhvZAogewogCVNITUVNX0NBQ0hFID0g MSwKQEAgLTM2Myw2ICszNjIsOCBAQCB0eXBlZGVmIHN0cnVjdAogCWNoYXIJICAgKnNyX2NoZWNr X3Bhc3N3b3JkOwkvKiBwYXNzd29yZCBmb3Igc3JfY2hlY2tfdXNlciAqLwogCWNoYXIJICAgKnNy X2NoZWNrX2RhdGFiYXNlOwkvKiBQb3N0Z3JlU1FMIGRhdGFiYXNlIG5hbWUgZm9yIHN0cmVhbWlu ZwogCQkJCQkJCQkJICogcmVwbGljYXRpb24gY2hlY2sgKi8KKwljaGFyCSAgICpyZXBsaWNhdGlv bl9kZWxheV9zb3VyY2VfY21kOwkvKiBleHRlcm5hbCBjb21tYW5kIGZvciByZXBsaWNhdGlvbiBk ZWxheSAqLworCWludAkJCXJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90aW1lb3V0OwkvKiB0aW1l b3V0IGZvciBleHRlcm5hbCBjb21tYW5kIGluIHNlY29uZHMgKi8KIAljaGFyCSAgICpmYWlsb3Zl cl9jb21tYW5kOwkvKiBleGVjdXRlIGNvbW1hbmQgd2hlbiBmYWlsb3ZlciBoYXBwZW5zICovCiAJ Y2hhcgkgICAqZm9sbG93X3ByaW1hcnlfY29tbWFuZDsgLyogZXhlY3V0ZSBjb21tYW5kIHdoZW4g ZmFpbG92ZXIgaXMKIAkJCQkJCQkJCQkgKiBlbmRlZCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3NhbXBs ZS9wZ3Bvb2wuY29uZi5zYW1wbGUtc3RyZWFtIGIvc3JjL3NhbXBsZS9wZ3Bvb2wuY29uZi5zYW1w bGUtc3RyZWFtCmluZGV4IDc5NzkwNjQ5MS4uNDU0ZmRiOWU1IDEwMDY0NAotLS0gYS9zcmMvc2Ft cGxlL3BncG9vbC5jb25mLnNhbXBsZS1zdHJlYW0KKysrIGIvc3JjL3NhbXBsZS9wZ3Bvb2wuY29u Zi5zYW1wbGUtc3RyZWFtCkBAIC01MTksNiArNTE5LDIwIEBAIGJhY2tlbmRfY2x1c3RlcmluZ19t b2RlID0gc3RyZWFtaW5nX3JlcGxpY2F0aW9uCiAKICNzcl9jaGVja19kYXRhYmFzZSA9ICdwb3N0 Z3JlcycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBEYXRhYmFzZSBuYW1l IGZvciBzdHJlYW1pbmcgcmVwbGljYXRpb24gY2hlY2sKKworI3JlcGxpY2F0aW9uX2RlbGF5X3Nv dXJjZV9jbWQgPSAnJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEV4dGVy bmFsIGNvbW1hbmQgdG8gcmV0cmlldmUgcmVwbGljYXRpb24gZGVsYXkgaW5mb3JtYXRpb24KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBzZXQsIHBncG9vbCB1c2VzIHRo aXMgY29tbWFuZCBpbnN0ZWFkIG9mIGJ1aWx0LWluIHF1ZXJpZXMKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBDb21tYW5kIHJlY2VpdmVzIHJlcGxpY2Egbm9kZSBpZGVudGlm aWVycyAoaG9zdDpwb3J0KSBhcyBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBQcmltYXJ5IG5vZGUgaXMgb21pdHRlZCBmcm9tIGFyZ3VtZW50cworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENvbW1hbmQgc2hvdWxkIG91dHB1dCBvbmUg ZGVsYXkgdmFsdWUgKGluIG1zKSBwZXIgcmVwbGljYQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIFVzZSAtMSB0byBpbmRpY2F0ZSBhIHJlcGxpY2EgdGhhdCBpcyBkb3duIGJ1 dCBub3QgeWV0IGRldGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg Rm9ybWF0OiAiMjUgMTAwIiBmb3IgMiByZXBsaWNhcyAoZS5nLiwgMy1ub2RlIGNsdXN0ZXIgd2l0 aCAxIHByaW1hcnkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ29tbWFu ZCBydW5zIGFzIHRoZSBwZ3Bvb2wgcHJvY2VzcyB1c2VyCisjcmVwbGljYXRpb25fZGVsYXlfc291 cmNlX3RpbWVvdXQgPSAxMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRp bWVvdXQgZm9yIGV4dGVybmFsIGNvbW1hbmQgZXhlY3V0aW9uIGluIHNlY29uZHMKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSYW5nZTogMS0zNjAwIHNlY29uZHMgKGRlZmF1 bHQ6IDEwKQorCiAjZGVsYXlfdGhyZXNob2xkID0gMAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIFRocmVzaG9sZCBiZWZvcmUgbm90IGRpc3BhdGNoaW5nIHF1ZXJ5IHRvIHN0 YW5kYnkgbm9kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFVuaXQgaXMg aW4gYnl0ZXMKZGlmZiAtLWdpdCBhL3NyYy9zdHJlYW1pbmdfcmVwbGljYXRpb24vcG9vbF93b3Jr ZXJfY2hpbGQuYyBiL3NyYy9zdHJlYW1pbmdfcmVwbGljYXRpb24vcG9vbF93b3JrZXJfY2hpbGQu YwppbmRleCA1YmYxOWMzN2QuLjFhZTI5MGUyOCAxMDA2NDQKLS0tIGEvc3JjL3N0cmVhbWluZ19y ZXBsaWNhdGlvbi9wb29sX3dvcmtlcl9jaGlsZC5jCisrKyBiL3NyYy9zdHJlYW1pbmdfcmVwbGlj YXRpb24vcG9vbF93b3JrZXJfY2hpbGQuYwpAQCAtNzYsNiArNzYsOCBAQCBzdGF0aWMgdm9sYXRp bGUgc2lnX2F0b21pY190IHJlc3RhcnRfcmVxdWVzdCA9IDA7CiBzdGF0aWMgdm9pZCBlc3RhYmxp c2hfcGVyc2lzdGVudF9jb25uZWN0aW9uKHZvaWQpOwogc3RhdGljIHZvaWQgZGlzY2FyZF9wZXJz aXN0ZW50X2Nvbm5lY3Rpb24odm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVja19yZXBsaWNhdGlvbl90 aW1lX2xhZyh2b2lkKTsKK3N0YXRpYyB2b2lkIGNoZWNrX3JlcGxpY2F0aW9uX3RpbWVfbGFnX3dp dGhfY21kKHZvaWQpOworc3RhdGljIGNoYXIgKmJ1aWxkX2luc3RhbmNlX2lkZW50aWZpZXJfZm9y X25vZGUoaW50IG5vZGVfaWQpOwogc3RhdGljIHZvaWQgQ2hlY2tSZXBsaWNhdGlvblRpbWVMYWdF cnJvckNiKHZvaWQgKmFyZyk7CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGludCB0ZXh0X3Rv X2xzbihjaGFyICp0ZXh0KTsKIHN0YXRpYyBSRVRTSUdUWVBFIG15X3NpZ25hbF9oYW5kbGVyKGlu dCBzaWcpOwpAQCAtMjU5LDExICsyNjEsMTYgQEAgZG9fd29ya2VyX2NoaWxkKHZvaWQgKnBhcmFt cykKIAkJCQkJUE9PTF9OT0RFX1NUQVRVUyAqbm9kZV9zdGF0dXM7CiAJCQkJCWludAkJCWk7CiAK LQkJCQkJLyogRG8gcmVwbGljYXRpb24gdGltZSBsYWcgY2hlY2tpbmcgKi8KLQkJCQkJY2hlY2tf cmVwbGljYXRpb25fdGltZV9sYWcoKTsKKwkJCS8qIERvIHJlcGxpY2F0aW9uIHRpbWUgbGFnIGNo ZWNraW5nICovCisJCQkvKiBVc2UgZXh0ZXJuYWwgY29tbWFuZCBpZiByZXBsaWNhdGlvbl9kZWxh eV9zb3VyY2VfY21kIGlzIGNvbmZpZ3VyZWQgKi8KKwkJCWlmIChwb29sX2NvbmZpZy0+cmVwbGlj YXRpb25fZGVsYXlfc291cmNlX2NtZCAmJgorCQkJCXN0cmxlbihwb29sX2NvbmZpZy0+cmVwbGlj YXRpb25fZGVsYXlfc291cmNlX2NtZCkgPiAwKQorCQkJCWNoZWNrX3JlcGxpY2F0aW9uX3RpbWVf bGFnX3dpdGhfY21kKCk7CisJCQllbHNlCisJCQkJY2hlY2tfcmVwbGljYXRpb25fdGltZV9sYWco KTsKIAotCQkJCQkvKiBDaGVjayBub2RlIHN0YXR1cyAqLwotCQkJCQlub2RlX3N0YXR1cyA9IHZl cmlmeV9iYWNrZW5kX25vZGVfc3RhdHVzKHNsb3RzKTsKKwkJCS8qIENoZWNrIG5vZGUgc3RhdHVz ICovCisJCQlub2RlX3N0YXR1cyA9IHZlcmlmeV9iYWNrZW5kX25vZGVfc3RhdHVzKHNsb3RzKTsK IAogCiAJCQkJCWZvciAoaSA9IDA7IGkgPCBOVU1fQkFDS0VORFM7IGkrKykKQEAgLTY1OSw2ICs2 NjYsMzU1IEBAIGNoZWNrX3JlcGxpY2F0aW9uX3RpbWVfbGFnKHZvaWQpCiAJZXJyb3JfY29udGV4 dF9zdGFjayA9IGNhbGxiYWNrLnByZXZpb3VzOwogfQogCisjZGVmaW5lIE1BWF9DTURfT1VUUFVU IDQwOTYKKyNkZWZpbmUgTUFYX1JFQVNPTkFCTEVfREVMQVlfTVMgMzYwMDAwMC4wICAvKiAxIGhv dXIgaW4gbWlsbGlzZWNvbmRzICovCisKKy8qIEdsb2JhbCB2YXJpYWJsZSB0byB0cmFjayBjb21t YW5kIHRpbWVvdXQgKi8KK3N0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgY29tbWFuZF90aW1l b3V0X29jY3VycmVkID0gMDsKKworLyoKKyAqIFNpZ25hbCBoYW5kbGVyIGZvciBjb21tYW5kIHRp bWVvdQorICovCitzdGF0aWMgdm9pZAorY29tbWFuZF90aW1lb3V0X2hhbmRsZXIoaW50IHNpZykK K3sKKwljb21tYW5kX3RpbWVvdXRfb2NjdXJyZWQgPSAxOworfQorCisKKworLyoKKyAqIENoZWNr IHJlcGxpY2F0aW9uIHRpbWUgbGFnIHVzaW5nIGV4dGVybmFsIGNvbW1hbmQKKyAqCisgKiBUaGUg ZXh0ZXJuYWwgY29tbWFuZCByZWNlaXZlcyBvbmx5IHJlcGxpY2EgKHN0YW5kYnkpIG5vZGUgaWRl bnRpZmllcnMgYXMgYXJndW1lbnRzLAorICogb21pdHRpbmcgdGhlIHByaW1hcnkgbm9kZS4gSXQg cmV0dXJucyBkZWxheSB2YWx1ZXMgaW4gbWlsbGlzZWNvbmRzIGZvciBlYWNoIHJlcGxpY2EuCisg KiBBIHZhbHVlIG9mIC0xIGluZGljYXRlcyBhIG5vZGUgdGhhdCBpcyBkb3duIGJ1dCBub3QgeWV0 IGRldGVjdGVkIGJ5IHBncG9vbCdzIGhlYWx0aCBjaGVja3MuCisgKi8KK3N0YXRpYyB2b2lkCitj aGVja19yZXBsaWNhdGlvbl90aW1lX2xhZ193aXRoX2NtZCh2b2lkKQoreworCUZJTEUJCSAgICpm cDsKKwljaGFyCQkgICAqY29tbWFuZCA9IE5VTEw7CisJY2hhcgkJICAgKmxpbmU7CisJY2hhcgkJ ICAgKnRva2VuOworCWNoYXIJCSAgICpzYXZlcHRyOworCWludAkJCQludW1fcmVwbGljYXM7CisJ ZG91YmxlCQkJZGVsYXlfbXM7CisJdWludDY0CQkJZGVsYXk7CisJaW50CQkJCXRva2VuX2NvdW50 ID0gMDsKKwlCYWNrZW5kSW5mbwkgICAqYmtpbmZvOworCUVycm9yQ29udGV4dENhbGxiYWNrIGNh bGxiYWNrOworCisJaWYgKE5VTV9CQUNLRU5EUyA8PSAxKQorCXsKKwkJLyogSWYgdGhlcmUncyBv bmx5IG9uZSBub2RlLCB0aGVyZSdzIG5vIHBvaW50IHRvIGRvIGNoZWNraW5nICovCisJCXJldHVy bjsKKwl9CisKKwlpZiAoUkVBTF9QUklNQVJZX05PREVfSUQgPCAwKQorCXsKKwkJLyogTm8gbmVl ZCB0byBjaGVjayBpZiB0aGVyZSdzIG5vIHByaW1hcnkgKi8KKwkJcmV0dXJuOworCX0KKworCWlm ICghVkFMSURfQkFDS0VORChSRUFMX1BSSU1BUllfTk9ERV9JRCkpCisJeworCQkvKiBObyBuZWVk IHRvIGNoZWNrIHJlcGxpY2F0aW9uIGRlbGF5IGlmIHByaW1hcnkgaXMgZG93biAqLworCQlyZXR1 cm47CisJfQorCisJLyogQ2FwdHVyZSBwcmltYXJ5IG5vZGUgSUQgdG8gYXZvaWQgcmFjZSBjb25k aXRpb25zIGR1cmluZyBleGVjdXRpb24gKi8KKwlpbnQgcHJpbWFyeV9ub2RlX2lkID0gUkVBTF9Q UklNQVJZX05PREVfSUQ7CisKKwlpZiAoIXBvb2xfY29uZmlnLT5yZXBsaWNhdGlvbl9kZWxheV9z b3VyY2VfY21kIHx8CisJCXN0cmxlbihwb29sX2NvbmZpZy0+cmVwbGljYXRpb25fZGVsYXlfc291 cmNlX2NtZCkgPT0gMCkKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJybXNnKCJyZXBs aWNhdGlvbl9kZWxheV9zb3VyY2VfY21kIGlzIG5vdCBjb25maWd1cmVkIiksCisJCQkJIGVycmhp bnQoIlNldCByZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kIHRvIHVzZSBleHRlcm5hbCBjb21t YW5kIG1vZGUiKSkpOworCQkvKiBGYWxsIGJhY2sgdG8gYnVpbHRpbiBtZXRob2QgKi8KKwkJY2hl Y2tfcmVwbGljYXRpb25fdGltZV9sYWcoKTsKKwkJcmV0dXJuOworCX0KKworCS8qIEFsbG9jYXRl IGJ1ZmZlciBmb3IgY29tbWFuZCBvdXRwdXQgKi8KKwlsaW5lID0gcGFsbG9jKE1BWF9DTURfT1VU UFVUKTsKKwlmcCA9IE5VTEw7CisKKwkvKgorCSAqIFJlZ2lzdGVyIGEgZXJyb3IgY29udGV4dCBj YWxsYmFjayB0byB0aHJvdyBwcm9wZXIgY29udGV4dCBtZXNzYWdlCisJICovCisJY2FsbGJhY2su Y2FsbGJhY2sgPSBDaGVja1JlcGxpY2F0aW9uVGltZUxhZ0Vycm9yQ2I7CisJY2FsbGJhY2suYXJn ID0gTlVMTDsKKwljYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJZXJy b3JfY29udGV4dF9zdGFjayA9ICZjYWxsYmFjazsKKworCS8qIEV4ZWN1dGUgY29tbWFuZCBhcyBj dXJyZW50IHByb2Nlc3MgdXNlciAqLworCVBHX1RSWSgpOworCXsKKwkJY29uc3QgY2hhciAqYmFz ZV9jb21tYW5kID0gcG9vbF9jb25maWctPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQ7CisJ CXNpemVfdCB0b3RhbF9sZW4gPSBzdHJsZW4oYmFzZV9jb21tYW5kKSArIDE7IC8qICsxIGZvciBO VUwgKi8KKworCQkvKiBCdWlsZCBjb21tYW5kIHdpdGggcmVwbGljYS1vbmx5IGFyZ3VtZW50cyAo b21pdCBwcmltYXJ5KSAqLworCQkvKiBDYWxjdWxhdGUgdG90YWwgY29tbWFuZCBsZW5ndGggaW5j bHVkaW5nIHNwYWNlLXNlcGFyYXRlZCByZXBsaWNhIGlkZW50aWZpZXJzICovCisJCWZvciAoaW50 IGkgPSAwOyBpIDwgTlVNX0JBQ0tFTkRTOyBpKyspCisJCXsKKwkJCWlmIChpID09IHByaW1hcnlf bm9kZV9pZCkKKwkJCQljb250aW51ZTsgLyogU2tpcCBwcmltYXJ5IG5vZGUgKi8KKworCQkJY2hh ciAqaWRlbnQgPSBidWlsZF9pbnN0YW5jZV9pZGVudGlmaWVyX2Zvcl9ub2RlKGkpOworCQkJdG90 YWxfbGVuICs9IDEgLyogc3BhY2UgKi8gKyBzdHJsZW4oaWRlbnQpOworCQkJcGZyZWUoaWRlbnQp OworCQl9CisKKwkJY29tbWFuZCA9IHBhbGxvYyh0b3RhbF9sZW4pOworCQlzdHJsY3B5KGNvbW1h bmQsIGJhc2VfY29tbWFuZCwgdG90YWxfbGVuKTsKKworCQkvKiBBcHBlbmQgcmVwbGljYSBpZGVu dGlmaWVycyAqLworCQlmb3IgKGludCBpID0gMDsgaSA8IE5VTV9CQUNLRU5EUzsgaSsrKQorCQl7 CisJCQlpZiAoaSA9PSBwcmltYXJ5X25vZGVfaWQpCisJCQkJY29udGludWU7IC8qIFNraXAgcHJp bWFyeSBub2RlICovCisKKwkJCWNoYXIgKmlkZW50ID0gYnVpbGRfaW5zdGFuY2VfaWRlbnRpZmll cl9mb3Jfbm9kZShpKTsKKwkJCXN0cmxjYXQoY29tbWFuZCwgIiAiLCB0b3RhbF9sZW4pOworCQkJ c3RybGNhdChjb21tYW5kLCBpZGVudCwgdG90YWxfbGVuKTsKKwkJCXBmcmVlKGlkZW50KTsKKwkJ fQorCisJCWVyZXBvcnQoREVCVUcxLAorCQkJCShlcnJtc2coImV4ZWN1dGluZyByZXBsaWNhdGlv biBkZWxheSBjb21tYW5kOiAlcyIsIGNvbW1hbmQpKSk7CisKKwkJLyogU2V0IHVwIHRpbWVvdXQg Zm9yIGNvbW1hbmQgZXhlY3V0aW9uICovCisJCWNvbW1hbmRfdGltZW91dF9vY2N1cnJlZCA9IDA7 CisJCXNpZ25hbChTSUdBTFJNLCBjb21tYW5kX3RpbWVvdXRfaGFuZGxlcik7CisJCWFsYXJtKHBv b2xfY29uZmlnLT5yZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfdGltZW91dCk7CisKKwkJZnAgPSBw b3Blbihjb21tYW5kLCAiciIpOworCQlpZiAoZnAgPT0gTlVMTCkKKwkJeworCQkJLyogQ2FuY2Vs IHRpbWVvdXQ6IHJlc3RvcmUgc2lnbmFsIGhhbmRsZXIgZmlyc3QgdG8gYXZvaWQgcmFjZSBjb25k aXRpb24gKi8KKwkJCXNpZ25hbChTSUdBTFJNLCBTSUdfREZMKTsKKwkJCWFsYXJtKDApOworCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycm1zZygiZmFpbGVkIHRvIGV4ZWN1dGUgcmVwbGljYXRp b24gZGVsYXkgY29tbWFuZDogJXMiLCBjb21tYW5kKSwKKwkJCQkJIGVycmRldGFpbCgicG9wZW4g ZmFpbGVkOiAlbSIpKSk7CisJCX0KKworCQlpZiAoZmdldHMobGluZSwgTUFYX0NNRF9PVVRQVVQs IGZwKSA9PSBOVUxMKQorCQl7CisJCQlpbnQgcGNsb3NlX3Jlc3VsdCA9IHBjbG9zZShmcCk7CisJ CQlmcCA9IE5VTEw7CisJCQkvKiBDYW5jZWwgdGltZW91dDogcmVzdG9yZSBzaWduYWwgaGFuZGxl ciBmaXJzdCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbiAqLworCQkJc2lnbmFsKFNJR0FMUk0sIFNJ R19ERkwpOworCQkJYWxhcm0oMCk7CisKKwkJCWlmIChjb21tYW5kX3RpbWVvdXRfb2NjdXJyZWQp CisJCQl7CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJtc2coInJlcGxpY2F0aW9uIGRl bGF5IGNvbW1hbmQgdGltZWQgb3V0IGFmdGVyICVkIHNlY29uZHM6ICVzIiwKKwkJCQkJCQkJcG9v bF9jb25maWctPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90aW1lb3V0LCBjb21tYW5kKSwKKwkJ CQkJCSBlcnJoaW50KCJDb25zaWRlciBpbmNyZWFzaW5nIHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJj ZV90aW1lb3V0IG9yIG9wdGltaXppbmcgdGhlIGNvbW1hbmQiKSkpOworCQkJfQorCQkJZWxzZQor CQkJeworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJybXNnKCJmYWlsZWQgdG8gcmVhZCBv dXRwdXQgZnJvbSByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kOiAlcyIsIGNvbW1hbmQpLAorCQkJ CQkJIGVycmRldGFpbCgiY29tbWFuZCBleGl0IHN0YXR1czogJWQiLCBwY2xvc2VfcmVzdWx0KSkp OworCQkJfQorCQl9CisKKwkJLyogQ2FuY2VsIHRpbWVvdXQ6IHJlc3RvcmUgc2lnbmFsIGhhbmRs ZXIgZmlyc3QgdG8gYXZvaWQgcmFjZSBjb25kaXRpb24gKi8KKwkJc2lnbmFsKFNJR0FMUk0sIFNJ R19ERkwpOworCQlhbGFybSgwKTsKKworCQkvKiBDaGVjayBpZiBvdXRwdXQgd2FzIHRydW5jYXRl ZCAqLworCQlpZiAoc3RybGVuKGxpbmUpID09IE1BWF9DTURfT1VUUFVUIC0gMSAmJiBsaW5lW01B WF9DTURfT1VUUFVUIC0gMl0gIT0gJ1xuJykKKwkJeworCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJ CQkoZXJybXNnKCJyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIG91dHB1dCBtYXkgaGF2ZSBiZWVu IHRydW5jYXRlZCIpKSk7CisJCX0KKworCQlwY2xvc2UoZnApOworCQlmcCA9IE5VTEw7CisJCXBm cmVlKGNvbW1hbmQpOworCQljb21tYW5kID0gTlVMTDsKKworCQkvKiBTZXQgcHJpbWFyeSBub2Rl IGRlbGF5IHRvIDAgKi8KKwkJYmtpbmZvID0gcG9vbF9nZXRfbm9kZV9pbmZvKHByaW1hcnlfbm9k ZV9pZCk7CisJCWJraW5mby0+c3RhbmRieV9kZWxheSA9IDA7CisJCWJraW5mby0+c3RhbmRieV9k ZWxheV9ieV90aW1lID0gdHJ1ZTsKKworCQkvKiBDb3VudCBleHBlY3RlZCByZXBsaWNhcyAqLwor CQludW1fcmVwbGljYXMgPSBOVU1fQkFDS0VORFMgLSAxOyAvKiBUb3RhbCBub2RlcyBtaW51cyBw cmltYXJ5ICovCisKKwkJLyogQ291bnQgdG9rZW5zIGluIG91dHB1dCBmb3IgdmFsaWRhdGlvbiAq LworCQljaGFyICpsaW5lX2NvcHkgPSBwc3RyZHVwKGxpbmUpOworCQljaGFyICp0ZW1wX3Rva2Vu ID0gc3RydG9rKGxpbmVfY29weSwgIiBcdFxuIik7CisJCXdoaWxlICh0ZW1wX3Rva2VuICE9IE5V TEwpCisJCXsKKwkJCXRva2VuX2NvdW50Kys7CisJCQl0ZW1wX3Rva2VuID0gc3RydG9rKE5VTEws ICIgXHRcbiIpOworCQl9CisJCXBmcmVlKGxpbmVfY29weSk7CisKKwkJLyogVmFsaWRhdGUgb3V0 cHV0IGZvcm1hdCAqLworCQlpZiAodG9rZW5fY291bnQgPT0gMCkKKwkJeworCQkJZXJlcG9ydChX QVJOSU5HLAorCQkJCQkoZXJybXNnKCJyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIHByb2R1Y2Vk IG5vIG91dHB1dCIpLAorCQkJCQkgZXJyaGludCgiQ29tbWFuZCBzaG91bGQgb3V0cHV0IGRlbGF5 IHZhbHVlcyBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBvbmUgcGVyIHJlcGxpY2Egbm9kZSIpKSk7CisJ CX0KKwkJZWxzZSBpZiAodG9rZW5fY291bnQgPCBudW1fcmVwbGljYXMpCisJCXsKKwkJCWVyZXBv cnQoV0FSTklORywKKwkJCQkJKGVycm1zZygicmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCByZXR1 cm5lZCAlZCB2YWx1ZXMsIGV4cGVjdGVkICVkIChvbmUgcGVyIHJlcGxpY2EsIGV4Y2x1ZGluZyBw cmltYXJ5KSIsCisJCQkJCQkJdG9rZW5fY291bnQsIG51bV9yZXBsaWNhcyksCisJCQkJCSBlcnJo aW50KCJDb21tYW5kIHNob3VsZCBvdXRwdXQgb25lIGRlbGF5IHZhbHVlIHBlciByZXBsaWNhIG5v ZGUuIE1pc3NpbmcgdmFsdWVzIHdpbGwgYmUgdHJlYXRlZCBhcyAwLiIpKSk7CisJCX0KKwkJZWxz ZSBpZiAodG9rZW5fY291bnQgPiBudW1fcmVwbGljYXMpCisJCXsKKwkJCWVyZXBvcnQoV0FSTklO RywKKwkJCQkJKGVycm1zZygicmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCByZXR1cm5lZCAlZCB2 YWx1ZXMsIGV4cGVjdGVkICVkIChvbmUgcGVyIHJlcGxpY2EsIGV4Y2x1ZGluZyBwcmltYXJ5KSIs CisJCQkJCQkJdG9rZW5fY291bnQsIG51bV9yZXBsaWNhcyksCisJCQkJCSBlcnJoaW50KCJDb21t YW5kIHNob3VsZCBvdXRwdXQgZXhhY3RseSBvbmUgZGVsYXkgdmFsdWUgcGVyIHJlcGxpY2Egbm9k ZS4gRXh0cmEgdmFsdWVzIHdpbGwgYmUgaWdub3JlZC4iKSkpOworCQl9CisKKwkvKiBQYXJzZSB0 aGUgb3V0cHV0IC0gb25lIGRlbGF5IHZhbHVlIHBlciByZXBsaWNhIGluIG9yZGVyICovCisJdG9r ZW4gPSBzdHJ0b2tfcihsaW5lLCAiIFx0XG4iLCAmc2F2ZXB0cik7CisKKwkJZm9yIChpbnQgaSA9 IDA7IGkgPCBOVU1fQkFDS0VORFMgJiYgdG9rZW4gIT0gTlVMTDsgaSsrKQorCQl7CisJCQlpZiAo aSA9PSBwcmltYXJ5X25vZGVfaWQpCisJCQkJY29udGludWU7IC8qIFNraXAgcHJpbWFyeSAtIGl0 J3Mgbm90IGluIHRoZSBvdXRwdXQgKi8KKworCQkJaWYgKCFWQUxJRF9CQUNLRU5EKGkpKQorCQkJ eworCQkJCS8qIFNraXAgaW52YWxpZCBiYWNrZW5kIGJ1dCBjb25zdW1lIHRva2VuICovCisJCQkJ dG9rZW4gPSBzdHJ0b2tfcihOVUxMLCAiIFx0XG4iLCAmc2F2ZXB0cik7CisJCQkJY29udGludWU7 CisJCQl9CisKKwkJCWNoYXIgKmVuZHB0cjsKKwkJCWRlbGF5X21zID0gc3RydG9kKHRva2VuLCAm ZW5kcHRyKTsKKworCQkJLyogVmFsaWRhdGUgdGhlIGNvbnZlcnNpb24gKi8KKwkJCWlmICgqZW5k cHRyICE9ICdcMCcpCisJCQl7CisJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJKGVycm1zZygi aW52YWxpZCBkZWxheSB2YWx1ZSAnJXMnIGZvciBub2RlICVkLCB0cmVhdGluZyBhcyAwIiwKKwkJ CQkJCQkJdG9rZW4sIGkpKSk7CisJCQkJZGVsYXlfbXMgPSAwOworCQkJfQorCisJCQlia2luZm8g PSBwb29sX2dldF9ub2RlX2luZm8oaSk7CisKKwkJCS8qIEhhbmRsZSAtMSBmb3IgZG93biBub2Rl cyAqLworCQkJaWYgKGRlbGF5X21zID09IC0xLjApCisJCQl7CisJCQkJZXJlcG9ydChMT0csCisJ CQkJCQkoZXJybXNnKCJub2RlICVkIHJlcG9ydGVkIGFzIGRvd24gYnkgZXh0ZXJuYWwgY29tbWFu ZCAoZGVsYXkgLTEpLCByZWx5aW5nIG9uIGhlYWx0aCBjaGVjayBmb3IgZmFpbG92ZXIgZGVjaXNp b24iLAorCQkJCQkJCQlpKSkpOworCQkJCS8qIEtlZXAgcHJldmlvdXMgZGVsYXkgdmFsdWUsIGRv bid0IHRyaWdnZXIgZmFpbG92ZXIgKi8KKwkJCQl0b2tlbiA9IHN0cnRva19yKE5VTEwsICIgXHRc biIsICZzYXZlcHRyKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJLyogVmFsaWRhdGUgZGVs YXkgdmFsdWUgcmFuZ2UgKi8KKwkJCWlmIChkZWxheV9tcyA8IDApCisJCQl7CisJCQkJZXJlcG9y dChXQVJOSU5HLAorCQkJCQkJKGVycm1zZygibmVnYXRpdmUgZGVsYXkgdmFsdWUgJS4zZiBmb3Ig bm9kZSAlZCAob3RoZXIgdGhhbiAtMSksIHRyZWF0aW5nIGFzIDAiLAorCQkJCQkJCQlkZWxheV9t cywgaSkpKTsKKwkJCQlkZWxheV9tcyA9IDA7CisJCQl9CisJCQllbHNlIGlmIChkZWxheV9tcyA+ IE1BWF9SRUFTT05BQkxFX0RFTEFZX01TKQorCQkJeworCQkJCWVyZXBvcnQoV0FSTklORywKKwkJ CQkJCShlcnJtc2coImV4dHJlbWVseSBsYXJnZSBkZWxheSB2YWx1ZSAlLjNmIGZvciBub2RlICVk IiwKKwkJCQkJCQkJZGVsYXlfbXMsIGkpKSk7CisJCQl9CisKKwkJCS8qIENvbnZlcnQgZGVsYXkg ZnJvbSBtaWxsaXNlY29uZHMgdG8gbWljcm9zZWNvbmRzIGZvciBpbnRlcm5hbCBzdG9yYWdlICov CisJCQlkZWxheSA9ICh1aW50NjQpKGRlbGF5X21zICogMTAwMCk7CisJCQlia2luZm8tPnN0YW5k YnlfZGVsYXkgPSBkZWxheTsKKwkJCWJraW5mby0+c3RhbmRieV9kZWxheV9ieV90aW1lID0gdHJ1 ZTsKKworCQkJLyogTG9nIGRlbGF5IGlmIG5lY2Vzc2FyeSAqLworCQkJdWludDY0IGRlbGF5X3Ro cmVzaG9sZF9ieV90aW1lID0gcG9vbF9jb25maWctPmRlbGF5X3RocmVzaG9sZF9ieV90aW1lICog MTAwMDsgLyogdGhyZXNob2xkIGlzIGluIG1pbGxpc2Vjb25kcywgY29udmVydCB0byBtaWNyb3Nl Y29uZHMgKi8KKworCQkJaWYgKChwb29sX2NvbmZpZy0+bG9nX3N0YW5kYnlfZGVsYXkgPT0gTFNE X0FMV0FZUyAmJiBkZWxheV9tcyA+IDApIHx8CisJCQkJKHBvb2xfY29uZmlnLT5sb2dfc3RhbmRi eV9kZWxheSA9PSBMU0RfT1ZFUl9USFJFU0hPTEQgJiYKKwkJCQkgYmtpbmZvLT5zdGFuZGJ5X2Rl bGF5ID4gZGVsYXlfdGhyZXNob2xkX2J5X3RpbWUpKQorCQkJeworCQkJCWVyZXBvcnQoTE9HLAor CQkJCQkJKGVycm1zZygiUmVwbGljYXRpb24gb2Ygbm9kZTogJWQgaXMgYmVoaW5kICUuM2Ygc2Vj b25kKHMpIGZyb20gdGhlIHByaW1hcnkgc2VydmVyIChub2RlOiAlZCkgW2V4dGVybmFsIGNvbW1h bmRdIiwKKwkJCQkJCQkJaSwgZGVsYXlfbXMgLyAxMDAwLCBwcmltYXJ5X25vZGVfaWQpKSk7CisJ CQl9CisKKwkJCXRva2VuID0gc3RydG9rX3IoTlVMTCwgIiBcdFxuIiwgJnNhdmVwdHIpOworCQl9 CisKKwl9CisJUEdfQ0FUQ0goKTsKKwl7CisJCS8qIENsZWFudXAgaW4gY2FzZSBvZiBlcnJvciAq LworCQkvKiBDYW5jZWwgdGltZW91dDogcmVzdG9yZSBzaWduYWwgaGFuZGxlciBmaXJzdCB0byBh dm9pZCByYWNlIGNvbmRpdGlvbiAqLworCQlzaWduYWwoU0lHQUxSTSwgU0lHX0RGTCk7CisJCWFs YXJtKDApOworCQlpZiAoZnApCisJCXsKKwkJCXBjbG9zZShmcCk7CisJCQlmcCA9IE5VTEw7CisJ CX0KKwkJaWYgKGxpbmUpCisJCQlwZnJlZShsaW5lKTsKKwkJaWYgKGNvbW1hbmQpCisJCQlwZnJl ZShjb21tYW5kKTsKKwkJZXJyb3JfY29udGV4dF9zdGFjayA9IGNhbGxiYWNrLnByZXZpb3VzOwor CQlQR19SRV9USFJPVygpOworCX0KKwlQR19FTkRfVFJZKCk7CisKKwkvKiBOb3JtYWwgY2xlYW51 cCAqLworCWlmIChsaW5lKQorCQlwZnJlZShsaW5lKTsKKworCWVycm9yX2NvbnRleHRfc3RhY2sg PSBjYWxsYmFjay5wcmV2aW91czsKK30KKworLyoKKyAqIGJ1aWxkX2luc3RhbmNlX2lkZW50aWZp ZXJfZm9yX25vZGUKKyAqICBCdWlsZCBhbiBpZGVudGlmaWVyIHN0cmluZyBmb3IgYSBiYWNrZW5k IG5vZGUgZm9yIHBhc3NpbmcgdG8gZXh0ZXJuYWwgY29tbWFuZHMuCisgKiAgRm9ybWF0OiAiPGhv c3RuYW1lPjo8cG9ydD4iCisgKi8KK3N0YXRpYyBjaGFyICoKK2J1aWxkX2luc3RhbmNlX2lkZW50 aWZpZXJfZm9yX25vZGUoaW50IG5vZGVfaWQpCit7CisJQmFja2VuZEluZm8gKmJpID0gcG9vbF9n ZXRfbm9kZV9pbmZvKG5vZGVfaWQpOworCWNvbnN0IGNoYXIgKmhvc3RuYW1lOworCisJaWYgKCFi aSB8fCBiaS0+YmFja2VuZF9ob3N0bmFtZVswXSA9PSAnXDAnIHx8IGJpLT5iYWNrZW5kX3BvcnQg PD0gMCkKKwl7CisJCS8qIEZhbGxiYWNrIGlmIGhvc3RuYW1lIG9yIHBvcnQgaXMgbm90IHNldCAq LworCQlyZXR1cm4gcHNwcmludGYoInVua25vd25fbm9kZV8lZCIsIG5vZGVfaWQpOworCX0KKwor CWhvc3RuYW1lID0gYmktPmJhY2tlbmRfaG9zdG5hbWU7CisKKwkvKiBWYWxpZGF0ZSBob3N0bmFt ZSBmb3Igc2VjdXJpdHkgLSBjaGVjayBmb3Igc2hlbGwgbWV0YWNoYXJhY3RlcnMgKi8KKwlpZiAo c3RycGJyayhob3N0bmFtZSwgIiRgXFx8OyY8PigpW117fVwiXCdcblxyXHQiKSAhPSBOVUxMKQor CXsKKwkJZXJlcG9ydChMT0csCisJCQkJKGVycm1zZygiaG9zdG5hbWUgZm9yIG5vZGUgJWQgY29u dGFpbnMgcG90ZW50aWFsbHkgZGFuZ2Vyb3VzIGNoYXJhY3RlcnM6ICVzIiwKKwkJCQkJCW5vZGVf aWQsIGhvc3RuYW1lKSwKKwkJCQkgZXJyaGludCgiSG9zdG5hbWVzIHdpdGggc2hlbGwgbWV0YWNo YXJhY3RlcnMgbWF5IHBvc2Ugc2VjdXJpdHkgcmlza3Mgd2hlbiB1c2VkIHdpdGggZXh0ZXJuYWwg Y29tbWFuZHMuIENvbnNpZGVyIHVzaW5nIElQIGFkZHJlc3NlcyBvciBzYW5pdGl6ZWQgaG9zdG5h bWVzLiIpKSk7CisJfQorCisJLyogVXNlIGhvc3RuYW1lOnBvcnQgZm9ybWF0ICovCisJcmV0dXJu IHBzcHJpbnRmKCIlczolZCIsIGhvc3RuYW1lLCBiaS0+YmFja2VuZF9wb3J0KTsKK30KKwogc3Rh dGljIHZvaWQKIENoZWNrUmVwbGljYXRpb25UaW1lTGFnRXJyb3JDYih2b2lkICphcmcpCiB7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNh dGlvbl9kZWxheS9SRUFETUUgYi9zcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5h bF9yZXBsaWNhdGlvbl9kZWxheS9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwLi5iNGRmNWRhNDAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzaW9u L3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS9SRUFETUUKQEAgLTAsMCArMSw1 OSBAQAorRXh0ZXJuYWwgUmVwbGljYXRpb24gRGVsYXkgQ29tbWFuZCBUZXN0Cis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGUg ZXh0ZXJuYWwgY29tbWFuZCByZXBsaWNhdGlvbiBkZWxheSBzb3VyY2UgZmVhdHVyZS4KKworVGVz dCBDb3ZlcmFnZToKKy0gRXh0ZXJuYWwgY29tbWFuZCByZWNlaXZlcyByZXBsaWNhIG5vZGUgaWRl bnRpZmllcnMgb25seSAocHJpbWFyeSBvbWl0dGVkKQorLSBJbnN0YW5jZSBpZGVudGlmaWVycyBp biBob3N0OnBvcnQgZm9ybWF0CistIEJhc2ljIGV4dGVybmFsIGNvbW1hbmQgZXhlY3V0aW9uIHdp dGggaW50ZWdlciBhbmQgZmxvYXQgbWlsbGlzZWNvbmQgdmFsdWVzCistIERlbGF5IHRocmVzaG9s ZCBmdW5jdGlvbmFsaXR5IHdpdGggZXh0ZXJuYWwgY29tbWFuZHMKKy0gQ29tbWFuZCBleGVjdXRp b24gYXMgcGdwb29sIHByb2Nlc3MgdXNlciAobm8gc3Ugd3JhcHBlcikKKy0gRXJyb3IgaGFuZGxp bmcgZm9yIG1pc3NpbmcvaW52YWxpZCBjb21tYW5kcworLSBDb21tYW5kIGV4ZWN1dGlvbiBmYWls dXJlIHNjZW5hcmlvcworLSBDb21tYW5kIHRpbWVvdXQgaGFuZGxpbmcgd2l0aCBjb25maWd1cmFi bGUgdGltZW91dCB2YWx1ZXMKKy0gSW5wdXQgdmFsaWRhdGlvbiBmb3IgaW52YWxpZCwgbmVnYXRp dmUgKG90aGVyIHRoYW4gLTEpLCBhbmQgZXh0cmVtZWx5IGxhcmdlIGRlbGF5IHZhbHVlcworLSBI YW5kbGluZyBvZiAtMSBmb3IgZG93biBub2RlcyAobG9nZ2VkIGJ1dCBubyBpbW1lZGlhdGUgZmFp bG92ZXIpCistIFdyb25nIG51bWJlciBvZiBvdXRwdXQgdmFsdWVzIHZhbGlkYXRpb24KKy0gTXVs dGlwbGUgLTEgdmFsdWVzIChtdWx0aXBsZSBkb3duIHJlcGxpY2FzKQorLSBNaXhlZCBzY2VuYXJp b3MgKHNvbWUgcmVwbGljYXMgdXAsIHNvbWUgZG93bikKKy0gT3V0cHV0IHRydW5jYXRpb24gZGV0 ZWN0aW9uCisKK0ZpbGVzOgorLSB0ZXN0LnNoOiBNYWluIHRlc3Qgc2NyaXB0CistIHRlc3RfcGFy c2luZy5zaDogVW5pdCB0ZXN0IGZvciBwYXJzaW5nIGxvZ2ljCistIHRlc3RfdmFsaWRhdGlvbi5z aDogVmFsaWRhdGlvbiBhbmQgZWRnZSBjYXNlIHRlc3RpbmcKKy0gUkVBRE1FOiBUaGlzIGRvY3Vt ZW50YXRpb24KKworS2V5IENoYW5nZXMgZnJvbSBPcmlnaW5hbCBWZXJzaW9uOgorLSBQcmltYXJ5 IG5vZGUgaXMgb21pdHRlZCBmcm9tIGNvbW1hbmQgYXJndW1lbnRzCistIENvbW1hbmQgcmVjZWl2 ZXMgb25seSByZXBsaWNhIGlkZW50aWZpZXJzCistIEluc3RhbmNlIGlkZW50aWZpZXJzIGFyZSBp biBob3N0OnBvcnQgZm9ybWF0IChub3QgYXBwbGljYXRpb25fbmFtZSkKKy0gT3V0cHV0IGZvcm1h dDogb25lIGRlbGF5IHBlciByZXBsaWNhIChub3QgcGVyIGFsbCBub2RlcykKKy0gLTEgdmFsdWUg aW5kaWNhdGVzIGRvd24gcmVwbGljYSB3aXRob3V0IHRyaWdnZXJpbmcgZmFpbG92ZXIKKy0gRm9y bWF0IGV4YW1wbGU6ICIyNSAxMDAiIGZvciAyIHJlcGxpY2FzICgzLW5vZGUgY2x1c3RlciA9IDEg cHJpbWFyeSArIDIgcmVwbGljYXMpCisKK1RoZSB0ZXN0IGNyZWF0ZXMgdGVtcG9yYXJ5IGNvbW1h bmQgc2NyaXB0cyB0aGF0IG91dHB1dCBkZWxheSB2YWx1ZXMgaW4gdGhlIGZvcm1hdDoKKyJyZXBs aWNhMV9kZWxheSByZXBsaWNhMl9kZWxheSAuLi4iCisKK1doZXJlIGRlbGF5cyBhcmUgaW4gbWls bGlzZWNvbmRzIGFuZCBjYW4gYmUgaW50ZWdlciBvciBmbG9hdGluZy1wb2ludCB2YWx1ZXMuCitT cGVjaWFsIHZhbHVlIC0xIGluZGljYXRlcyBhIHJlcGxpY2EgdGhhdCBpcyBkb3duIGJ1dCBub3Qg eWV0IGRldGVjdGVkIGJ5IHBncG9vbC4KKworVGVzdCBFbnZpcm9ubWVudDoKKy0gVXNlcyBzdHJl YW1pbmcgcmVwbGljYXRpb24gbW9kZSB3aXRoIDMgbm9kZXMKKy0gTm9kZSAwIGlzIHByaW1hcnkg KG9taXR0ZWQgZnJvbSBjb21tYW5kIGFyZ3VtZW50cykKKy0gTm9kZXMgMSBhbmQgMiBhcmUgcmVw bGljYXMgKGluY2x1ZGVkIGluIGNvbW1hbmQgYXJndW1lbnRzKQorLSBDb25maWd1cmVzIHNyX2No ZWNrX3BlcmlvZCA9IDEgc2Vjb25kIGZvciBmYXN0ZXIgdGVzdGluZworLSBUZXN0cyB2YXJpb3Vz IGRlbGF5IHNjZW5hcmlvcyBhbmQgdGhyZXNob2xkIGJlaGF2aW9ycworCitFeHBlY3RlZCBCZWhh dmlvcjoKKy0gRXh0ZXJuYWwgY29tbWFuZHMgcmVjZWl2ZSByZXBsaWNhIGlkZW50aWZpZXJzIGlu IGhvc3Q6cG9ydCBmb3JtYXQKKy0gUHJpbWFyeSBub2RlIGlkZW50aWZpZXIgaXMgbmV2ZXIgcGFz c2VkIHRvIGNvbW1hbmQKKy0gQ29tbWFuZCBvdXRwdXRzIG9uZSBkZWxheSB2YWx1ZSBwZXIgcmVw bGljYQorLSAtMSB2YWx1ZXMgYXJlIGxvZ2dlZCBidXQgZG9uJ3QgdHJpZ2dlciBpbW1lZGlhdGUg ZmFpbG92ZXIKKy0gRGVsYXkgdmFsdWVzIGFyZSBwYXJzZWQgY29ycmVjdGx5IChib3RoIGludCBh bmQgZmxvYXQpCistIFRocmVzaG9sZCBjb21wYXJpc29ucyB3b3JrIHByb3Blcmx5CistIEVycm9y IGNvbmRpdGlvbnMgYXJlIGhhbmRsZWQgZ3JhY2VmdWxseQorLSBDb21tYW5kcyB0aW1lb3V0IGFw cHJvcHJpYXRlbHkgYmFzZWQgb24gY29uZmlndXJhdGlvbgorLSBUaW1lb3V0IGVycm9ycyBwcm92 aWRlIGhlbHBmdWwgbWVzc2FnZXMgYW5kIGhpbnRzCistIFRlc3RzIGFyZSByZWxpYWJsZSB3aXRo IHByb3BlciB3YWl0IG1lY2hhbmlzbXMgaW5zdGVhZCBvZiBmaXhlZCBzbGVlcHMKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2Rl bGF5L3Rlc3Quc2ggYi9zcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBs aWNhdGlvbl9kZWxheS90ZXN0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw MC4uZTFkZmJjZWNmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzc2lvbi90ZXN0 cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkvdGVzdC5zaApAQCAtMCwwICsxLDQwNCBA QAorIyEvdXNyL2Jpbi9lbnYgYmFzaAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgdGVzdCBzY3JpcHQgZm9yIGV4 dGVybmFsIGNvbW1hbmQgcmVwbGljYXRpb24gZGVsYXkgc291cmNlCisjCitzb3VyY2UgJFRFU1RM SUJTCitURVNURElSPXRlc3RkaXIKK1BHX0NUTD0kUEdCSU4vcGdfY3RsCitQU1FMPSIkUEdCSU4v cHNxbCAtWCAiCisKK3JtIC1mciAkVEVTVERJUgorbWtkaXIgJFRFU1RESVIKK2NkICRURVNURElS CisKKyMgY3JlYXRlIHRlc3QgZW52aXJvbm1lbnQKK2VjaG8gLW4gImNyZWF0aW5nIHRlc3QgZW52 aXJvbm1lbnQuLi4iCiskUEdQT09MX1NFVFVQIC1tIHMgLW4gMyB8fCBleGl0IDEKK2VjaG8gImRv bmUuIgorc291cmNlIC4vYmFzaHJjLnBvcnRzCitleHBvcnQgUEdQT1JUPSRQR1BPT0xfUE9SVAor CisjIENyZWF0ZSBleHRlcm5hbCBjb21tYW5kIHNjcmlwdHMgZm9yIHRlc3RpbmcKKyMgTk9URTog Q29tbWFuZHMgbm93IG9ubHkgb3V0cHV0IGRlbGF5IHZhbHVlcyBmb3IgUkVQTElDQVMgKG5vdCBw cmltYXJ5KQorY2F0ID4gZGVsYXlfY21kX3N0YXRpYy5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gK KyMgU3RhdGljIGRlbGF5IHZhbHVlcyBmb3IgcmVwbGljYXM6IG5vZGUxPTI1bXMsIG5vZGUyPTUw bXMgKG5vZGUwIGlzIHByaW1hcnksIG5vdCBpbmNsdWRlZCkKK2VjaG8gIjI1IDUwIgorRU9GCitj aG1vZCAreCBkZWxheV9jbWRfc3RhdGljLnNoCisKK2NhdCA+IGRlbGF5X2NtZF9mbG9hdC5zaCA8 PCAnRU9GJworIyEvYmluL2Jhc2gKKyMgRmxvYXQgZGVsYXkgdmFsdWVzIGZvciByZXBsaWNhczog bm9kZTE9MjUuNW1zLCBub2RlMj0xMDAuNzVtcworZWNobyAiMjUuNSAxMDAuNzUiCitFT0YKK2No bW9kICt4IGRlbGF5X2NtZF9mbG9hdC5zaAorCitjYXQgPiBkZWxheV9jbWRfaGlnaC5zaCA8PCAn RU9GJworIyEvYmluL2Jhc2gKKyMgSGlnaCBkZWxheSB2YWx1ZXMgdG8gdGVzdCB0aHJlc2hvbGQ6 IG5vZGUxPTIwMDBtcywgbm9kZTI9MzAwMG1zCitlY2hvICIyMDAwIDMwMDAiCitFT0YKK2NobW9k ICt4IGRlbGF5X2NtZF9oaWdoLnNoCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorZWNobyAiPT09IFRlc3QwOiBFeHRlcm5hbCBjb21tYW5kIHJlY2VpdmVzIHJlcGxpY2EgaWRl bnRpZmllcnMgb25seSAocHJpbWFyeSBvbWl0dGVkKSA9PT0iCisjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyMgQ29tbWFuZCB0aGF0IGNhcHR1cmVzIGl0cyBhcmd1bWVudHMgYW5k IG91dHB1dHMgdmFsaWQgZGVsYXlzIGZvciAyIHJlcGxpY2FzCitjYXQgPiBkZWxheV9jbWRfYXJn cy5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gKK3ByaW50ZiAiJXMgIiAiJEAiID4gYXJncy50eHQK K2VjaG8gIjI1IDUwIgorRU9GCitjaG1vZCAreCBkZWxheV9jbWRfYXJncy5zaAorCitlY2hvICJy ZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kID0gJy4vZGVsYXlfY21kX2FyZ3Muc2gnIiA+PiBl dGMvcGdwb29sLmNvbmYKK2VjaG8gInNyX2NoZWNrX3BlcmlvZCA9IDEiID4+IGV0Yy9wZ3Bvb2wu Y29uZgorZWNobyAibG9nX21pbl9tZXNzYWdlcyA9ICdERUJVRzEnIiA+PiBldGMvcGdwb29sLmNv bmYKKyMgUmVkdWNlIG1lbW9yeSByZXF1aXJlbWVudHMgZm9yIG1hY09TIHNoYXJlZCBtZW1vcnkg bGltaXRzCitlY2hvICJudW1faW5pdF9jaGlsZHJlbiA9IDQiID4+IGV0Yy9wZ3Bvb2wuY29uZgor ZWNobyAibWF4X3Bvb2wgPSAyIiA+PiBldGMvcGdwb29sLmNvbmYKKyMgRGlzYWJsZSBxdWVyeSBj YWNoaW5nIHRvIGF2b2lkIHNoYXJlZCBtZW1vcnkgaXNzdWVzIG9uIG1hY09TCitlY2hvICJtZW1v cnlfY2FjaGVfZW5hYmxlZCA9IG9mZiIgPj4gZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwK K3dhaXRfZm9yX3BncG9vbF9zdGFydHVwCisKK2VjaG8gIldhaXRpbmcgZm9yIHNyX2NoZWNrIHRv IHBhc3MgYXJncy4uLiIKK2ZvciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgWyAtZiBhcmdzLnR4 dCBdOyB0aGVuCisgICAgICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKK2lm IFsgISAtZiBhcmdzLnR4dCBdOyB0aGVuCisgICAgZWNobyBmYWlsOiBkaWQgbm90IGNhcHR1cmUg Y29tbWFuZCBhcmd1bWVudHMKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitB UkdTX0NPTlRFTlQ9JChjYXQgYXJncy50eHQgfCBzZWQgJ3MvW1s6c3BhY2U6XV0qJC8vJykKKyMg U2hvdWxkIHJlY2VpdmUgMiByZXBsaWNhIGlkZW50aWZpZXJzIGluIGhvc3Q6cG9ydCBmb3JtYXQg KGxvY2FsaG9zdDoxMTAwMyBsb2NhbGhvc3Q6MTEwMDQgb3Igc2VydmVyMToxMTAwMyBzZXJ2ZXIy OjExMDA0KQorIyBQcmltYXJ5IChsb2NhbGhvc3Q6MTEwMDIgb3Igc2VydmVyMDoxMTAwMikgc2hv dWxkIGJlIG9taXR0ZWQKK2lmICEgZWNobyAiJEFSR1NfQ09OVEVOVCIgfCBncmVwIC1xRSAiKHNl cnZlcjF8bG9jYWxob3N0KToxMTAwMyI7IHRoZW4KKyAgICBlY2hvICJmYWlsOiBleHBlY3RlZCBy ZXBsaWNhMToxMTAwMyBpbiBhcmd1bWVudHMsIGdvdDogJyRBUkdTX0NPTlRFTlQnIgorICAgIC4v c2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCitpZiAhIGVjaG8gIiRBUkdTX0NPTlRFTlQiIHwg Z3JlcCAtcUUgIihzZXJ2ZXIyfGxvY2FsaG9zdCk6MTEwMDQiOyB0aGVuCisgICAgZWNobyAiZmFp bDogZXhwZWN0ZWQgcmVwbGljYTI6MTEwMDQgaW4gYXJndW1lbnRzLCBnb3Q6ICckQVJHU19DT05U RU5UJyIKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQoraWYgZWNobyAiJEFSR1Nf Q09OVEVOVCIgfCBncmVwIC1xRSAiKHNlcnZlcjB8bG9jYWxob3N0KToxMTAwMiI7IHRoZW4KKyAg ICBlY2hvICJmYWlsOiBwcmltYXJ5IHNob3VsZCBub3QgYmUgaW4gYXJndW1lbnRzLCBnb3Q6ICck QVJHU19DT05URU5UJyIKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hv IG9rOiBhcmd1bWVudCBvcmRlciBjb3JyZWN0IC0gcmVwbGljYXMgb25seSwgcHJpbWFyeSBvbWl0 dGVkLCBob3N0OnBvcnQgZm9ybWF0CisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorZWNobyAiPT09IFRlc3QxOiBCYXNpYyBleHRlcm5hbCBjb21tYW5k IHdpdGggaW50ZWdlciBtaWxsaXNlY29uZCB2YWx1ZXMgPT09IgorIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitlY2hvICJyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kID0gJy4v ZGVsYXlfY21kX3N0YXRpYy5zaCciID4+IGV0Yy9wZ3Bvb2wuY29uZgorZWNobyAic3JfY2hlY2tf cGVyaW9kID0gMSIgPj4gZXRjL3BncG9vbC5jb25mCitlY2hvICJsb2dfc3RhbmRieV9kZWxheSA9 ICdhbHdheXMnIiA+PiBldGMvcGdwb29sLmNvbmYKK2VjaG8gImxvZ19taW5fbWVzc2FnZXMgPSAn REVCVUcxJyIgPj4gZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9v bF9zdGFydHVwCisKKyRQU1FMIHRlc3QgPDxFT0YKK0NSRUFURSBUQUJMRSB0MShpIElOVEVHRVIp OworRU9GCisKKyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcnVuIGFuZCBwb3B1bGF0ZSBkZWxheSB2 YWx1ZXMKKyMgc3JfY2hlY2tfcGVyaW9kIGlzIDEgc2Vjb25kLCBzbyB3YWl0IGEgYml0IGxvbmdl ciB0byBlbnN1cmUgaXQgcnVucworZWNobyAiV2FpdGluZyBmb3Igc3JfY2hlY2sgdG8gcnVuLi4u IgorZm9yIGkgaW4gezEuLjEwfTsgZG8KKyAgICBpZiBncmVwIC1xICJleGVjdXRpbmcgcmVwbGlj YXRpb24gZGVsYXkgY29tbWFuZCIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAg ICAgICAgZWNobyAiQ29tbWFuZCBleGVjdXRlZCBhZnRlciAke2l9IHNlY29uZHMiCisgICAgICAg IGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyRQU1FMIHRlc3QgPDxFT0YKK1NI T1cgUE9PTF9OT0RFUzsKK0VPRgorCisjIENoZWNrIHRoYXQgZGVsYXkgdmFsdWVzIGFyZSBwb3B1 bGF0ZWQgaW4gdGhlIGxvZworZ3JlcCAiZXhlY3V0aW5nIHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1h bmQiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgor ICAgIGVjaG8gZmFpbDogZXh0ZXJuYWwgY29tbWFuZCB3YXMgbm90IGV4ZWN1dGVkCisgICAgZWNo byAiTG9nIGNvbnRlbnRzOiIKKyAgICB0YWlsIC0yMCBsb2cvcGdwb29sLmxvZworICAgIC4vc2h1 dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKKyMgVmVyaWZ5IGFjdHVhbCBkZWxheSB2YWx1ZXMg d2VyZSBwYXJzZWQKK2lmICEgJFBTUUwgLXQgLWMgIlNIT1cgUE9PTF9OT0RFUyIgdGVzdCB8IGdy ZXAgLUUgIlswLTldK1wuWzAtOV0rIiA+L2Rldi9udWxsOyB0aGVuCisgICAgZWNobyAiV2Fybmlu ZzogTm8gZGVsYXkgdmFsdWVzIGZvdW5kIGluIFBPT0xfTk9ERVMgb3V0cHV0IgorZmkKKworIyBD aGVjayBmb3IgZGVsYXkgbG9nIG1lc3NhZ2VzCitncmVwICJSZXBsaWNhdGlvbiBvZiBub2RlLipl eHRlcm5hbCBjb21tYW5kIiBsb2cvcGdwb29sLmxvZyA+L2Rldi9udWxsIDI+JjEKK2lmIFsgJD8g IT0gMCBdO3RoZW4KKyAgICBlY2hvIGZhaWw6IGV4dGVybmFsIGNvbW1hbmQgZGVsYXkgbG9nZ2lu ZyBub3QgZm91bmQKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9r OiBiYXNpYyBleHRlcm5hbCBjb21tYW5kIHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisK KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyAiPT09IFRlc3QyOiBFeHRl cm5hbCBjb21tYW5kIHdpdGggZmxvYXRpbmctcG9pbnQgbWlsbGlzZWNvbmQgdmFsdWVzID09PSIK KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBVcGRhdGUgY29uZmlndXJhdGlv biB0byB1c2UgZmxvYXQgY29tbWFuZAorc2VkIC1pLmJhayAic3xkZWxheV9jbWRfc3RhdGljLnNo fGRlbGF5X2NtZF9mbG9hdC5zaHwiIGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0 X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHNyX2NoZWNrIHRvIHJ1biB3aXRoIGZs b2F0IHZhbHVlcworZWNobyAiV2FpdGluZyBmb3Igc3JfY2hlY2sgd2l0aCBmbG9hdCB2YWx1ZXMu Li4iCitmb3IgaSBpbiB7MS4uMTB9OyBkbworICAgIGlmIGdyZXAgLXEgImV4ZWN1dGluZyByZXBs aWNhdGlvbiBkZWxheSBjb21tYW5kLipkZWxheV9jbWRfZmxvYXQuc2giIGxvZy9wZ3Bvb2wubG9n IDI+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGVjaG8gIkZsb2F0IGNvbW1hbmQgZXhlY3V0ZWQg YWZ0ZXIgJHtpfSBzZWNvbmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQor ZG9uZQorCiskUFNRTCB0ZXN0IDw8RU9GCitTSE9XIFBPT0xfTk9ERVM7CitFT0YKKworIyBDaGVj ayB0aGF0IGZsb2F0IHZhbHVlcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkKK2dyZXAgImV4ZWN1dGlu ZyByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kLipkZWxheV9jbWRfZmxvYXQuc2giIGxvZy9wZ3Bv b2wubG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFp bDogZmxvYXQgY29tbWFuZCB3YXMgbm90IGV4ZWN1dGVkCisgICAgLi9zaHV0ZG93bmFsbAorICAg IGV4aXQgMQorZmkKKworZWNobyBvazogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHRlc3Qgc3VjY2Vl ZGVkCisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ZWNobyAiPT09IFRlc3QzOiBFeHRlcm5hbCBjb21tYW5kIHdpdGggZGVsYXkgdGhyZXNob2xkID09 PSIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBVcGRhdGUgY29uZmlndXJh dGlvbiB0byB1c2UgaGlnaCBkZWxheSBjb21tYW5kIGFuZCBzZXQgdGhyZXNob2xkCitzZWQgLWku YmFrICJzfGRlbGF5X2NtZF9mbG9hdC5zaHxkZWxheV9jbWRfaGlnaC5zaHwiIGV0Yy9wZ3Bvb2wu Y29uZgorZWNobyAiZGVsYXlfdGhyZXNob2xkX2J5X3RpbWUgPSAxMDAwIiA+PiBldGMvcGdwb29s LmNvbmYKK2VjaG8gImJhY2tlbmRfd2VpZ2h0MCA9IDAiID4+IGV0Yy9wZ3Bvb2wuY29uZiAgIyBG b3JjZSBxdWVyaWVzIHRvIHN0YW5kYnkgbm9ybWFsbHkKK2VjaG8gImJhY2tlbmRfd2VpZ2h0MiA9 IDAiID4+IGV0Yy9wZ3Bvb2wuY29uZiAgIyBPbmx5IHVzZSBub2RlIDEgYXMgc3RhbmRieQorCisu L3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHNyX2NoZWNr IHRvIHJ1biBhbmQgZGV0ZWN0IGhpZ2ggZGVsYXlzCitlY2hvICJXYWl0aW5nIGZvciBzcl9jaGVj ayB3aXRoIGhpZ2ggZGVsYXkgdmFsdWVzLi4uIgorZm9yIGkgaW4gezEuLjEwfTsgZG8KKyAgICBp ZiBncmVwIC1xICJleGVjdXRpbmcgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZC4qZGVsYXlfY21k X2hpZ2guc2giIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGVjaG8g IkhpZ2ggZGVsYXkgY29tbWFuZCBleGVjdXRlZCBhZnRlciAke2l9IHNlY29uZHMiCisgICAgICAg IGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyRQU1FMIHRlc3QgPDxFT0YKK1NF TEVDVCAqIEZST00gdDEgTElNSVQgMTsKK0VPRgorCisjIFdpdGggaGlnaCBkZWxheXMgKDIwMDBt cyA+IDEwMDBtcyB0aHJlc2hvbGQpLCBxdWVyeSBzaG91bGQgZ28gdG8gcHJpbWFyeSAobm9kZSAw KQorIyBMb2cgZm9ybWF0IGNhbiB2YXJ5OiBlaXRoZXIgInN0YXRlbWVudDogU0VMRUNULi4uIiBv ciAiU0VMRUNULi4uIERCIG5vZGUgaWQ6IgoraWYgISBncmVwIC1FICJEQiBub2RlIGlkOiAwLipz dGF0ZW1lbnQ6IFNFTEVDVCBcKiBGUk9NIHQxIExJTUlUIDEiIGxvZy9wZ3Bvb2wubG9nID4vZGV2 L251bGwgMj4mMSAmJiBcCisgICAhIGdyZXAgLUUgIlNFTEVDVCBcKiBGUk9NIHQxIExJTUlUIDEu KkRCIG5vZGUgaWQ6IDAiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAg IGVjaG8gZmFpbDogcXVlcnkgd2FzIG5vdCBzZW50IHRvIHByaW1hcnkgbm9kZSBkZXNwaXRlIGhp Z2ggZGVsYXkKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiBk ZWxheSB0aHJlc2hvbGQgdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwKKworIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvICI9PT0gVGVzdDQ6IEV4dGVybmFsIGNvbW1h bmQgZXhlY3V0aW9uIGFzIHByb2Nlc3MgdXNlciA9PT0iCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyMgVGVzdCB0aGF0IGNvbW1hbmQgcnVucyBhcyB0aGUgY3VycmVudCBwZ3Bv b2wgcHJvY2VzcyB1c2VyCitzZWQgLWkuYmFrICJzfGRlbGF5X2NtZF9oaWdoLnNofGRlbGF5X2Nt ZF9zdGF0aWMuc2h8IiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdw b29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciBzcl9jaGVjayB0byBydW4KK2VjaG8gIldhaXRpbmcg Zm9yIHNyX2NoZWNrIHRvIHJ1biBhcyBwcm9jZXNzIHVzZXIuLi4iCitmb3IgaSBpbiB7MS4uMTB9 OyBkbworICAgIGlmIGdyZXAgLXEgImV4ZWN1dGluZyByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5k LipkZWxheV9jbWRfc3RhdGljLnNoIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgor ICAgICAgICBlY2hvICJDb21tYW5kIGV4ZWN1dGVkIGFzIHByb2Nlc3MgdXNlciBhZnRlciAke2l9 IHNlY29uZHMiCisgICAgICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyMg Q2hlY2sgdGhhdCBjb21tYW5kIHdhcyBleGVjdXRlZCAod2l0aG91dCBzdSB3cmFwcGVyKQorZ3Jl cCAiZXhlY3V0aW5nIHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQuKmRlbGF5X2NtZF9zdGF0aWMu c2giIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgor ICAgIGVjaG8gZmFpbDogY29tbWFuZCB3YXMgbm90IGV4ZWN1dGVkIGFzIHByb2Nlc3MgdXNlcgor ICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKKyMgVmVyaWZ5IG5vIHN1IGNvbW1h bmQgd2FzIHVzZWQKK2lmIGdyZXAgLXEgImV4ZWN1dGluZyByZXBsaWNhdGlvbiBkZWxheSBjb21t YW5kLipzdS4qIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgIGVjaG8gZmFp bDogY29tbWFuZCBzaG91bGQgbm90IHVzZSBzdSB3cmFwcGVyCisgICAgLi9zaHV0ZG93bmFsbAor ICAgIGV4aXQgMQorZmkKKworZWNobyBvazogcHJvY2VzcyB1c2VyIGV4ZWN1dGlvbiB0ZXN0IHN1 Y2NlZWRlZAorLi9zaHV0ZG93bmFsbAorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK2VjaG8gIj09PSBUZXN0NTogRXJyb3IgaGFuZGxpbmcgLSBtaXNzaW5nIGNvbW1hbmQgPT09 IgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3QgZXJyb3IgaGFuZGxp bmcgd2hlbiBjb21tYW5kIGlzIG5vdCBjb25maWd1cmVkCitzZWQgLWkuYmFrICJzfHJlcGxpY2F0 aW9uX2RlbGF5X3NvdXJjZV9jbWQgPSAnLi9kZWxheV9jbWRfc3RhdGljLnNoJ3xyZXBsaWNhdGlv bl9kZWxheV9zb3VyY2VfY21kID0gJyd8IiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAor d2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKworIyBXaXRoIGVtcHR5IGNvbW1hbmQsIHNob3VsZCBm YWxsIGJhY2sgdG8gYnVpbHRpbiBtZXRob2QKKyMgTm8gc3BlY2lmaWMgZXJyb3IgbWVzc2FnZSBl eHBlY3RlZCAtIGp1c3QgdmVyaWZ5IGl0IGRvZXNuJ3QgY3Jhc2gKK3NsZWVwIDMKKworZWNobyAi b2s6IGVtcHR5IGNvbW1hbmQgdGVzdCBzdWNjZWVkZWQgKGZhbGxiYWNrIHRvIGJ1aWx0aW4pIgor Li9zaHV0ZG93bmFsbAorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8g Ij09PSBUZXN0NjogRXJyb3IgaGFuZGxpbmcgLSBjb21tYW5kIGV4ZWN1dGlvbiBmYWlsdXJlID09 PSIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0IGVycm9yIGhhbmRs aW5nIHdoZW4gY29tbWFuZCBmYWlscworZWNobyAicmVwbGljYXRpb25fZGVsYXlfc291cmNlX2Nt ZCA9ICcuL25vbmV4aXN0ZW50X2NvbW1hbmQuc2gnIiA+PiBldGMvcGdwb29sLmNvbmYKKworLi9z dGFydGFsbAord2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciBzcl9jaGVjayB0 byBydW4gd2l0aCBmYWlsaW5nIGNvbW1hbmQKK2VjaG8gIldhaXRpbmcgZm9yIHNyX2NoZWNrIHdp dGggZmFpbGluZyBjb21tYW5kLi4uIgorZm9yIGkgaW4gezEuLjV9OyBkbworICAgIGlmIGdyZXAg LXFFICJmYWlsZWQgdG8gKGV4ZWN1dGV8cmVhZCBvdXRwdXQgZnJvbSkgcmVwbGljYXRpb24gZGVs YXkgY29tbWFuZCIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgZWNo byAiQ29tbWFuZCBmYWlsdXJlIGRldGVjdGVkIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAg YnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBDaGVjayBmb3IgZXJyb3IgbWVz c2FnZSBhYm91dCBjb21tYW5kIGV4ZWN1dGlvbiBmYWlsdXJlCisjIEFjY2VwdCBtdWx0aXBsZSBw b3NzaWJsZSBlcnJvciBtZXNzYWdlcyBkZXBlbmRpbmcgb24gc2hlbGwgYmVoYXZpb3IKK2lmICEg Z3JlcCAtcUUgImZhaWxlZCB0byAoZXhlY3V0ZXxyZWFkIG91dHB1dCBmcm9tKSByZXBsaWNhdGlv biBkZWxheSBjb21tYW5kIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgIGVj aG8gZmFpbDogY29tbWFuZCBleGVjdXRpb24gZmFpbHVyZSBub3QgZGV0ZWN0ZWQKKyAgICBlY2hv ICJMb2cgY29udGVudHM6IgorICAgIHRhaWwgLTUwIGxvZy9wZ3Bvb2wubG9nCisgICAgLi9zaHV0 ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKworZWNobyBvazogY29tbWFuZCBmYWlsdXJlIHRlc3Qg c3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorZWNobyAiPT09IFRlc3Q3OiBDb21tYW5kIHRpbWVvdXQgaGFuZGxpbmcgPT09IgorIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENyZWF0ZSBhIGNvbW1hbmQgdGhhdCB0 YWtlcyBsb25nZXIgdGhhbiB0aGUgdGltZW91dAorY2F0ID4gZGVsYXlfY21kX3Nsb3cuc2ggPDwg J0VPRicKKyMhL2Jpbi9iYXNoCisjIFNsb3cgY29tbWFuZCB0aGF0IHRha2VzIDE1IHNlY29uZHMg KGxvbmdlciB0aGFuIGRlZmF1bHQgMTBzIHRpbWVvdXQpCitzbGVlcCAxNQorZWNobyAiMjUgNTAi CitFT0YKK2NobW9kICt4IGRlbGF5X2NtZF9zbG93LnNoCisKKyMgU2V0IGEgc2hvcnQgdGltZW91 dCBhbmQgdXNlIHRoZSBzbG93IGNvbW1hbmQKK3NlZCAtaS5iYWsgInN8cmVwbGljYXRpb25fZGVs YXlfc291cmNlX2NtZCA9ICcuL25vbmV4aXN0ZW50X2NvbW1hbmQuc2gnfHJlcGxpY2F0aW9uX2Rl bGF5X3NvdXJjZV9jbWQgPSAnLi9kZWxheV9jbWRfc2xvdy5zaCd8IiBldGMvcGdwb29sLmNvbmYK K2VjaG8gInJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90aW1lb3V0ID0gMyIgPj4gZXRjL3BncG9v bC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9zdGFydHVwCisKKyMgV2FpdCBm b3Igc3JfY2hlY2sgdG8gcnVuIGFuZCB0aW1lb3V0CitlY2hvICJXYWl0aW5nIGZvciBjb21tYW5k IHRpbWVvdXQuLi4iCitmb3IgaSBpbiB7MS4uMTV9OyBkbworICAgIGlmIGdyZXAgLXEgInJlcGxp Y2F0aW9uIGRlbGF5IGNvbW1hbmQgdGltZWQgb3V0IiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVs bDsgdGhlbgorICAgICAgICBlY2hvICJDb21tYW5kIHRpbWVvdXQgZGV0ZWN0ZWQgYWZ0ZXIgJHtp fSBzZWNvbmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisj IENoZWNrIGZvciB0aW1lb3V0IGVycm9yIG1lc3NhZ2UKK2dyZXAgInJlcGxpY2F0aW9uIGRlbGF5 IGNvbW1hbmQgdGltZWQgb3V0IGFmdGVyIDMgc2Vjb25kcyIgbG9nL3BncG9vbC5sb2cgPi9kZXYv bnVsbCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0aGVuCisgICAgZWNobyBmYWlsOiBjb21tYW5kIHRp bWVvdXQgbm90IGRldGVjdGVkCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKwor ZWNobyBvazogY29tbWFuZCB0aW1lb3V0IHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisK KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyAiPT09IFRlc3Q4OiBIYW5k bGluZyBvZiAtMSBmb3IgZG93biBub2RlcyA9PT0iCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyMgQ3JlYXRlIGEgY29tbWFuZCB0aGF0IHJldHVybnMgLTEgZm9yIG9uZSByZXBs aWNhCitjYXQgPiBkZWxheV9jbWRfd2l0aF9kb3duX25vZGUuc2ggPDwgJ0VPRicKKyMhL2Jpbi9i YXNoCisjIFJldHVybiAtMSBmb3IgZmlyc3QgcmVwbGljYSAoaW5kaWNhdGluZyBpdCdzIGRvd24p LCBub3JtYWwgdmFsdWUgZm9yIHNlY29uZAorZWNobyAiLTEgNTAiCitFT0YKK2NobW9kICt4IGRl bGF5X2NtZF93aXRoX2Rvd25fbm9kZS5zaAorCisjIFJlc2V0IGNvbmZpZworcm0gLWYgZXRjL3Bn cG9vbC5jb25mLmJhaworc2VkIC1pLmJhayAic3xkZWxheV9jbWRfc2xvdy5zaHxkZWxheV9jbWRf d2l0aF9kb3duX25vZGUuc2h8IiBldGMvcGdwb29sLmNvbmYKK3NlZCAtaS5iYWsgInN8cmVwbGlj YXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQgPSAzfHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90 aW1lb3V0ID0gMTB8IiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdw b29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciBzcl9jaGVjayB0byBwcm9jZXNzIC0xIHZhbHVlCitl Y2hvICJXYWl0aW5nIGZvciBzcl9jaGVjayB0byBwcm9jZXNzIC0xIHZhbHVlLi4uIgorZm9yIGkg aW4gezEuLjEwfTsgZG8KKyAgICBpZiBncmVwIC1xICJub2RlLipyZXBvcnRlZCBhcyBkb3duIGJ5 IGV4dGVybmFsIGNvbW1hbmQuKmRlbGF5IC0xIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsg dGhlbgorICAgICAgICBlY2hvICItMSBoYW5kbGluZyBkZXRlY3RlZCBhZnRlciAke2l9IHNlY29u ZHMiCisgICAgICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyMgQ2hlY2sg Zm9yIC0xIGxvZ2dpbmcgbWVzc2FnZQorZ3JlcCAibm9kZS4qcmVwb3J0ZWQgYXMgZG93biBieSBl eHRlcm5hbCBjb21tYW5kLipkZWxheSAtMS4qcmVseWluZyBvbiBoZWFsdGggY2hlY2siIGxvZy9w Z3Bvb2wubG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8g ZmFpbDogLTEgaGFuZGxpbmcgbWVzc2FnZSBub3QgZm91bmQKKyAgICAuL3NodXRkb3duYWxsCisg ICAgZXhpdCAxCitmaQorCisjIFZlcmlmeSB0aGF0IHBncG9vbCBkaWRuJ3QgY3Jhc2ggb3IgdHJp Z2dlciBmYWlsb3ZlciBqdXN0IGZyb20gLTEKK2lmIGdyZXAgLXEgImZhaWxvdmVyIiBsb2cvcGdw b29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgIGVjaG8gImZhaWw6IC0xIHNob3VsZCBub3Qg dHJpZ2dlciBpbW1lZGlhdGUgZmFpbG92ZXIiCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQg MQorZmkKKworZWNobyBvazogLTEgaGFuZGxpbmcgdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25h bGwKKworZWNobyAiQWxsIGV4dGVybmFsIHJlcGxpY2F0aW9uIGRlbGF5IHRlc3RzIHBhc3NlZCEi CitleGl0IDAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVy bmFsX3JlcGxpY2F0aW9uX2RlbGF5L3Rlc3RfcGFyc2luZy5zaCBiL3NyYy90ZXN0L3JlZ3Jlc3Np b24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L3Rlc3RfcGFyc2luZy5zaApu ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAuLjgyZmRhZDE0NAotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0 aW9uX2RlbGF5L3Rlc3RfcGFyc2luZy5zaApAQCAtMCwwICsxLDU0IEBACisjIS9iaW4vYmFzaAor Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyMgVW5pdCB0ZXN0IGZvciBleHRlcm5hbCBjb21tYW5kIHBhcnNpbmcgbG9n aWMKKyMgVGhpcyB0ZXN0cyB0aGUgcGFyc2luZyB3aXRob3V0IG5lZWRpbmcgYSBmdWxsIHBncG9v bCBzZXR1cAorIworCitlY2hvICI9PT0gVGVzdGluZyBleHRlcm5hbCBjb21tYW5kIG91dHB1dCBw YXJzaW5nID09PSIKKworIyBUZXN0IDE6IEludGVnZXIgdmFsdWVzCitlY2hvICJUZXN0IDE6IElu dGVnZXIgbWlsbGlzZWNvbmQgdmFsdWVzIgorZWNobyAiMCAyNSA1MCIgPiB0ZXN0X291dHB1dC50 eHQKK2VjaG8gIkV4cGVjdGVkOiAwbXMsIDI1bXMsIDUwbXMiCitlY2hvICJPdXRwdXQ6ICQoY2F0 IHRlc3Rfb3V0cHV0LnR4dCkiCitlY2hvICIiCisKKyMgVGVzdCAyOiBGbG9hdCB2YWx1ZXMKK2Vj aG8gIlRlc3QgMjogRmxvYXRpbmctcG9pbnQgbWlsbGlzZWNvbmQgdmFsdWVzIgorZWNobyAiMCAy NS41IDEwMC43NSIgPiB0ZXN0X291dHB1dF9mbG9hdC50eHQKK2VjaG8gIkV4cGVjdGVkOiAwbXMs IDI1LjVtcywgMTAwLjc1bXMiCitlY2hvICJPdXRwdXQ6ICQoY2F0IHRlc3Rfb3V0cHV0X2Zsb2F0 LnR4dCkiCitlY2hvICIiCisKKyMgVGVzdCAzOiBIaWdoIHByZWNpc2lvbiBmbG9hdCB2YWx1ZXMK K2VjaG8gIlRlc3QgMzogSGlnaCBwcmVjaXNpb24gdmFsdWVzIgorZWNobyAiMCAwLjAwMSA5OTku OTk5IiA+IHRlc3Rfb3V0cHV0X3ByZWNpc2lvbi50eHQKK2VjaG8gIkV4cGVjdGVkOiAwbXMsIDAu MDAxbXMsIDk5OS45OTltcyIKK2VjaG8gIk91dHB1dDogJChjYXQgdGVzdF9vdXRwdXRfcHJlY2lz aW9uLnR4dCkiCitlY2hvICIiCisKKyMgVGVzdCA0OiBFZGdlIGNhc2UgLSB6ZXJvIHZhbHVlcwor ZWNobyAiVGVzdCA0OiBBbGwgemVybyB2YWx1ZXMiCitlY2hvICIwIDAgMCIgPiB0ZXN0X291dHB1 dF96ZXJvcy50eHQKK2VjaG8gIkV4cGVjdGVkOiAwbXMsIDBtcywgMG1zIgorZWNobyAiT3V0cHV0 OiAkKGNhdCB0ZXN0X291dHB1dF96ZXJvcy50eHQpIgorZWNobyAiIgorCisjIFRlc3QgNTogRWRn ZSBjYXNlIC0gbGFyZ2UgdmFsdWVzCitlY2hvICJUZXN0IDU6IExhcmdlIGRlbGF5IHZhbHVlcyIK K2VjaG8gIjAgNTAwMCAxMDAwMCIgPiB0ZXN0X291dHB1dF9sYXJnZS50eHQKK2VjaG8gIkV4cGVj dGVkOiAwbXMsIDUwMDBtcywgMTAwMDBtcyIKK2VjaG8gIk91dHB1dDogJChjYXQgdGVzdF9vdXRw dXRfbGFyZ2UudHh0KSIKK2VjaG8gIiIKKworIyBUZXN0IDY6IE1peGVkIGludGVnZXIgYW5kIGZs b2F0IHZhbHVlcworZWNobyAiVGVzdCA2OiBNaXhlZCBpbnRlZ2VyIGFuZCBmbG9hdCB2YWx1ZXMi CitlY2hvICIwIDI1IDUwLjUiID4gdGVzdF9vdXRwdXRfbWl4ZWQudHh0CitlY2hvICJFeHBlY3Rl ZDogMG1zLCAyNW1zLCA1MC41bXMiCitlY2hvICJPdXRwdXQ6ICQoY2F0IHRlc3Rfb3V0cHV0X21p eGVkLnR4dCkiCitlY2hvICIiCisKKyMgQ2xlYW51cAorcm0gLWYgdGVzdF9vdXRwdXRfKi50eHQK KworZWNobyAiQWxsIHBhcnNpbmcgdGVzdHMgY29tcGxldGVkLiBUaGVzZSBvdXRwdXRzIHNob3Vs ZCBiZSBwYXJzZWFibGUgYnkgdGhlIGV4dGVybmFsIGNvbW1hbmQgZmVhdHVyZS4iCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9k ZWxheS90ZXN0X3ZhbGlkYXRpb24uc2ggYi9zcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5l eHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS90ZXN0X3ZhbGlkYXRpb24uc2gKbmV3IGZpbGUgbW9k ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwLi4yY2Q0YTdmMGIKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS90 ZXN0X3ZhbGlkYXRpb24uc2gKQEAgLTAsMCArMSwzMjMgQEAKKyMhL3Vzci9iaW4vZW52IGJhc2gK KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisjIHRlc3Qgc2NyaXB0IGZvciBleHRlcm5hbCBjb21tYW5kIHZhbGlkYXRp b24gYW5kIGVkZ2UgY2FzZXMKKyMKK3NvdXJjZSAkVEVTVExJQlMKK1RFU1RESVI9dGVzdGRpcl92 YWxpZGF0aW9uCitQR19DVEw9JFBHQklOL3BnX2N0bAorUFNRTD0iJFBHQklOL3BzcWwgLVggIgor CitybSAtZnIgJFRFU1RESVIKK21rZGlyICRURVNURElSCitjZCAkVEVTVERJUgorCisjIGNyZWF0 ZSB0ZXN0IGVudmlyb25tZW50CitlY2hvIC1uICJjcmVhdGluZyB0ZXN0IGVudmlyb25tZW50Li4u IgorJFBHUE9PTF9TRVRVUCAtbSBzIC1uIDMgfHwgZXhpdCAxCitlY2hvICJkb25lLiIKK3NvdXJj ZSAuL2Jhc2hyYy5wb3J0cworZXhwb3J0IFBHUE9SVD0kUEdQT09MX1BPUlQKKworIyBDcmVhdGUg dGVzdCBjb21tYW5kIHNjcmlwdHMKKyMgTk9URTogQWxsIGNvbW1hbmRzIG91dHB1dCB2YWx1ZXMg Zm9yIFJFUExJQ0FTIG9ubHkgKHByaW1hcnkgb21pdHRlZCkKK2NhdCA+IGRlbGF5X2NtZF92YWxp ZGF0aW9uLnNoIDw8ICdFT0YnCisjIS9iaW4vYmFzaAorIyBUZXN0IHZhbGlkYXRpb246IG91dHB1 dCB3aXRoIGludmFsaWQgdmFsdWVzIGZvciAyIHJlcGxpY2FzCitlY2hvICJpbnZhbGlkX3ZhbHVl IDUwLjUiCitFT0YKK2NobW9kICt4IGRlbGF5X2NtZF92YWxpZGF0aW9uLnNoCisKK2NhdCA+IGRl bGF5X2NtZF9uZWdhdGl2ZS5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gKKyMgVGVzdCBuZWdhdGl2 ZSB2YWx1ZXMgKG90aGVyIHRoYW4gLTEpCitlY2hvICItMjUgNTAiCitFT0YKK2NobW9kICt4IGRl bGF5X2NtZF9uZWdhdGl2ZS5zaAorCitjYXQgPiBkZWxheV9jbWRfbGFyZ2Uuc2ggPDwgJ0VPRicK KyMhL2Jpbi9iYXNoCisjIFRlc3QgZXh0cmVtZWx5IGxhcmdlIHZhbHVlcworZWNobyAiOTk5OTk5 OSA1MCIKK0VPRgorY2htb2QgK3ggZGVsYXlfY21kX2xhcmdlLnNoCisKK2NhdCA+IGRlbGF5X2Nt ZF93cm9uZ19jb3VudC5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gKKyMgVGVzdCB3cm9uZyBudW1i ZXIgb2YgdmFsdWVzIChvbmx5IDEgaW5zdGVhZCBvZiAyIGZvciAyIHJlcGxpY2FzKQorZWNobyAi MjUiCitFT0YKK2NobW9kICt4IGRlbGF5X2NtZF93cm9uZ19jb3VudC5zaAorCisjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gIj09PSBUZXN0MTogVmFsaWRhdGlvbiBvZiBp bnZhbGlkIGRlbGF5IHZhbHVlcyA9PT0iCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK2VjaG8gInJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQgPSAnLi9kZWxheV9jbWRfdmFs aWRhdGlvbi5zaCciID4+IGV0Yy9wZ3Bvb2wuY29uZgorZWNobyAic3JfY2hlY2tfcGVyaW9kID0g MSIgPj4gZXRjL3BncG9vbC5jb25mCitlY2hvICJsb2dfc3RhbmRieV9kZWxheSA9ICdhbHdheXMn IiA+PiBldGMvcGdwb29sLmNvbmYKK2VjaG8gImxvZ19taW5fbWVzc2FnZXMgPSAnREVCVUcxJyIg Pj4gZXRjL3BncG9vbC5jb25mCisjIFJlZHVjZSBtZW1vcnkgcmVxdWlyZW1lbnRzIGZvciBtYWNP UyBzaGFyZWQgbWVtb3J5IGxpbWl0cworZWNobyAibnVtX2luaXRfY2hpbGRyZW4gPSA0IiA+PiBl dGMvcGdwb29sLmNvbmYKK2VjaG8gIm1heF9wb29sID0gMiIgPj4gZXRjL3BncG9vbC5jb25mCisj IERpc2FibGUgcXVlcnkgY2FjaGluZyB0byBhdm9pZCBzaGFyZWQgbWVtb3J5IGlzc3VlcyBvbiBt YWNPUworZWNobyAibWVtb3J5X2NhY2hlX2VuYWJsZWQgPSBvZmYiID4+IGV0Yy9wZ3Bvb2wuY29u ZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCiskUFNRTCB0ZXN0IDw8 RU9GCitDUkVBVEUgVEFCTEUgdDEoaSBJTlRFR0VSKTsKK0VPRgorCisjIFdhaXQgZm9yIHNyX2No ZWNrIHRvIHJ1bgorZWNobyAiV2FpdGluZyBmb3IgdmFsaWRhdGlvbiB0ZXN0Li4uIgorZm9yIGkg aW4gezEuLjEwfTsgZG8KKyAgICBpZiBncmVwIC1xICJpbnZhbGlkIGRlbGF5IHZhbHVlIiBsb2cv cGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBlY2hvICJWYWxpZGF0aW9uIGVy cm9yIGRldGVjdGVkIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAgYnJlYWsKKyAgICBmaQor ICAgIHNsZWVwIDEKK2RvbmUKKworIyBDaGVjayBmb3IgdmFsaWRhdGlvbiB3YXJuaW5nCitncmVw ICJpbnZhbGlkIGRlbGF5IHZhbHVlICdpbnZhbGlkX3ZhbHVlJyBmb3Igbm9kZSIgbG9nL3BncG9v bC5sb2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0aGVuCisgICAgZWNobyBmYWls OiB2YWxpZGF0aW9uIHdhcm5pbmcgbm90IGZvdW5kCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4 aXQgMQorZmkKKworZWNobyBvazogaW52YWxpZCB2YWx1ZSB2YWxpZGF0aW9uIHRlc3Qgc3VjY2Vl ZGVkCisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ZWNobyAiPT09IFRlc3QyOiBOZWdhdGl2ZSBkZWxheSB2YWx1ZXMgKG90aGVyIHRoYW4gLTEpID09 PSIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc2VkIC1pLmJhayAic3xkZWxh eV9jbWRfdmFsaWRhdGlvbi5zaHxkZWxheV9jbWRfbmVnYXRpdmUuc2h8IiBldGMvcGdwb29sLmNv bmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciBz cl9jaGVjayB0byBydW4KK2VjaG8gIldhaXRpbmcgZm9yIG5lZ2F0aXZlIHZhbHVlIHRlc3QuLi4i Citmb3IgaSBpbiB7MS4uMTB9OyBkbworICAgIGlmIGdyZXAgLXEgIm5lZ2F0aXZlIGRlbGF5IHZh bHVlLipvdGhlciB0aGFuIC0xIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAg ICAgICBlY2hvICJOZWdhdGl2ZSB2YWx1ZSB3YXJuaW5nIGRldGVjdGVkIGFmdGVyICR7aX0gc2Vj b25kcyIKKyAgICAgICAgYnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBDaGVj ayBmb3IgbmVnYXRpdmUgdmFsdWUgd2FybmluZworZ3JlcCAibmVnYXRpdmUgZGVsYXkgdmFsdWUu Km90aGVyIHRoYW4gLTEuKnRyZWF0aW5nIGFzIDAiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwg Mj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDogbmVnYXRpdmUgdmFsdWUg d2FybmluZyBub3QgZm91bmQKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitl Y2hvIG9rOiBuZWdhdGl2ZSB2YWx1ZSB2YWxpZGF0aW9uIHRlc3Qgc3VjY2VlZGVkCisuL3NodXRk b3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyAiPT09IFRl c3QzOiBFeHRyZW1lbHkgbGFyZ2UgZGVsYXkgdmFsdWVzID09PSIKKyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorc2VkIC1pLmJhayAic3xkZWxheV9jbWRfbmVnYXRpdmUuc2h8ZGVs YXlfY21kX2xhcmdlLnNofCIgZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9y X3BncG9vbF9zdGFydHVwCisKKyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcnVuCitlY2hvICJXYWl0 aW5nIGZvciBsYXJnZSB2YWx1ZSB0ZXN0Li4uIgorZm9yIGkgaW4gezEuLjEwfTsgZG8KKyAgICBp ZiBncmVwIC1xICJleHRyZW1lbHkgbGFyZ2UgZGVsYXkgdmFsdWUiIGxvZy9wZ3Bvb2wubG9nIDI+ L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGVjaG8gIkxhcmdlIHZhbHVlIHdhcm5pbmcgZGV0ZWN0 ZWQgYWZ0ZXIgJHtpfSBzZWNvbmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAg MQorZG9uZQorCisjIENoZWNrIGZvciBsYXJnZSB2YWx1ZSB3YXJuaW5nCitncmVwICJleHRyZW1l bHkgbGFyZ2UgZGVsYXkgdmFsdWUuKmZvciBub2RlIiBsb2cvcGdwb29sLmxvZyA+L2Rldi9udWxs IDI+JjEKK2lmIFsgJD8gIT0gMCBdO3RoZW4KKyAgICBlY2hvIGZhaWw6IGxhcmdlIHZhbHVlIHdh cm5pbmcgbm90IGZvdW5kCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKworZWNo byBvazogbGFyZ2UgdmFsdWUgdmFsaWRhdGlvbiB0ZXN0IHN1Y2NlZWRlZAorLi9zaHV0ZG93bmFs bAorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gIj09PSBUZXN0NDog V3JvbmcgbnVtYmVyIG9mIG91dHB1dCB2YWx1ZXMgPT09IgorIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitzZWQgLWkuYmFrICJzfGRlbGF5X2NtZF9sYXJnZS5zaHxkZWxheV9jbWRf d3JvbmdfY291bnQuc2h8IiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3Jf cGdwb29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciBzcl9jaGVjayB0byBydW4KK2VjaG8gIldhaXRp bmcgZm9yIHdyb25nIGNvdW50IHRlc3QuLi4iCitmb3IgaSBpbiB7MS4uMTB9OyBkbworICAgIGlm IGdyZXAgLXEgInJldHVybmVkLip2YWx1ZXMsIGV4cGVjdGVkLipyZXBsaWNhIiBsb2cvcGdwb29s LmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBlY2hvICJXcm9uZyBjb3VudCB3YXJuaW5n IGRldGVjdGVkIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAgYnJlYWsKKyAgICBmaQorICAg IHNsZWVwIDEKK2RvbmUKKworIyBDaGVjayBmb3Igd3JvbmcgY291bnQgd2FybmluZworZ3JlcCAi cmV0dXJuZWQuKnZhbHVlcywgZXhwZWN0ZWQuKnJlcGxpY2EuKkNvbW1hbmQgc2hvdWxkIG91dHB1 dCBvbmUgZGVsYXkgdmFsdWUgcGVyIHJlcGxpY2EiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwg Mj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDogd3JvbmcgY291bnQgdmFs aWRhdGlvbiB0ZXN0IG5vdCBmb3VuZAorICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2Zp CisKK2VjaG8gb2s6IHdyb25nIGNvdW50IHZhbGlkYXRpb24gdGVzdCBzdWNjZWVkZWQKKy4vc2h1 dGRvd25hbGwKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvICI9PT0g VGVzdDU6IE11bHRpcGxlIC0xIHZhbHVlcyA9PT0iCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KK2NhdCA+IGRlbGF5X2NtZF9tdWx0aV9kb3duLnNoIDw8ICdFT0YnCisjIS9iaW4v YmFzaAorIyBUZXN0IG11bHRpcGxlIHJlcGxpY2FzIGRvd24KK2VjaG8gIi0xIC0xIgorRU9GCitj aG1vZCAreCBkZWxheV9jbWRfbXVsdGlfZG93bi5zaAorCitzZWQgLWkuYmFrICJzfGRlbGF5X2Nt ZF93cm9uZ19jb3VudC5zaHxkZWxheV9jbWRfbXVsdGlfZG93bi5zaHwiIGV0Yy9wZ3Bvb2wuY29u ZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHNy X2NoZWNrIHRvIHJ1bgorZWNobyAiV2FpdGluZyBmb3IgbXVsdGktZG93biB0ZXN0Li4uIgorZm9y IGkgaW4gezEuLjEwfTsgZG8KKyAgICBpZiBncmVwIC1xICJub2RlLipyZXBvcnRlZCBhcyBkb3du IGJ5IGV4dGVybmFsIGNvbW1hbmQiIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisg ICAgICAgIGVjaG8gIk11bHRpcGxlIGRvd24gbm9kZXMgZGV0ZWN0ZWQgYWZ0ZXIgJHtpfSBzZWNv bmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisjIENoZWNr IGZvciBtdWx0aXBsZSAtMSBoYW5kbGluZworRE9XTl9DT1VOVD0kKGdyZXAgLWMgIm5vZGUuKnJl cG9ydGVkIGFzIGRvd24gYnkgZXh0ZXJuYWwgY29tbWFuZC4qZGVsYXkgLTEiIGxvZy9wZ3Bvb2wu bG9nKQoraWYgWyAiJERPV05fQ09VTlQiIC1sdCAyIF07IHRoZW4KKyAgICBlY2hvIGZhaWw6IGV4 cGVjdGVkIDIgZG93biBub2RlIG1lc3NhZ2VzLCBmb3VuZCAkRE9XTl9DT1VOVAorICAgIC4vc2h1 dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6IG11bHRpcGxlIC0xIGhhbmRsaW5n IHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorZWNobyAiPT09IFRlc3Q2OiBDb21tYW5kIHRpbWVvdXQgd2l0aCBkaWZmZXJl bnQgdGltZW91dCB2YWx1ZXMgPT09IgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitjYXQgPiBkZWxheV9jbWRfdGltZW91dC5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gKKyMgQ29t bWFuZCB0aGF0IHRha2VzIDUgc2Vjb25kcworc2xlZXAgNQorZWNobyAiMjUgNTAiCitFT0YKK2No bW9kICt4IGRlbGF5X2NtZF90aW1lb3V0LnNoCisKKyMgVGVzdCB3aXRoIHRpbWVvdXQgc2hvcnRl ciB0aGFuIGNvbW1hbmQgZHVyYXRpb24KK3NlZCAtaS5iYWsgInN8ZGVsYXlfY21kX211bHRpX2Rv d24uc2h8ZGVsYXlfY21kX3RpbWVvdXQuc2h8IiBldGMvcGdwb29sLmNvbmYKK2VjaG8gInJlcGxp Y2F0aW9uX2RlbGF5X3NvdXJjZV90aW1lb3V0ID0gMiIgPj4gZXRjL3BncG9vbC5jb25mCisKKy4v c3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9zdGFydHVwCisKKyMgV2FpdCBmb3IgdGltZW91dAor ZWNobyAiV2FpdGluZyBmb3IgdGltZW91dCB0ZXN0ICgycyB0aW1lb3V0LCA1cyBjb21tYW5kKS4u LiIKK2ZvciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgZ3JlcCAtcSAicmVwbGljYXRpb24gZGVs YXkgY29tbWFuZCB0aW1lZCBvdXQgYWZ0ZXIgMiBzZWNvbmRzIiBsb2cvcGdwb29sLmxvZyAyPi9k ZXYvbnVsbDsgdGhlbgorICAgICAgICBlY2hvICJUaW1lb3V0IGRldGVjdGVkIGFmdGVyICR7aX0g c2Vjb25kcyIKKyAgICAgICAgYnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBD aGVjayBmb3IgdGltZW91dCBtZXNzYWdlCitncmVwICJyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5k IHRpbWVkIG91dCBhZnRlciAyIHNlY29uZHMiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4m MQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDogdGltZW91dCBub3QgZGV0ZWN0 ZWQKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiB0aW1lb3V0 IHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKKyMgVGVzdCB3aXRoIHRpbWVvdXQgbG9u Z2VyIHRoYW4gY29tbWFuZCBkdXJhdGlvbgorc2VkIC1pLmJhayAic3xyZXBsaWNhdGlvbl9kZWxh eV9zb3VyY2VfdGltZW91dCA9IDJ8cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQgPSAx MHwiIGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1 cAorCisjIFdhaXQgZm9yIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uCitlY2hvICJXYWl0aW5nIGZvciBz dWNjZXNzZnVsIGV4ZWN1dGlvbiAoMTBzIHRpbWVvdXQsIDVzIGNvbW1hbmQpLi4uIgorZm9yIGkg aW4gezEuLjE1fTsgZG8KKyAgICBpZiBncmVwIC1xICJleGVjdXRpbmcgcmVwbGljYXRpb24gZGVs YXkgY29tbWFuZC4qZGVsYXlfY21kX3RpbWVvdXQuc2giIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9u dWxsOyB0aGVuCisgICAgICAgIGVjaG8gIkNvbW1hbmQgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5IGFm dGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAgYnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2Rv bmUKKworIyBTaG91bGQgbm90IHRpbWVvdXQgdGhpcyB0aW1lCitpZiBncmVwIC1xICJyZXBsaWNh dGlvbiBkZWxheSBjb21tYW5kIHRpbWVkIG91dCIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7 IHRoZW4KKyAgICBlY2hvIGZhaWw6IGNvbW1hbmQgc2hvdWxkIG5vdCBoYXZlIHRpbWVkIG91dCB3 aXRoIDEwcyB0aW1lb3V0CisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKworZWNo byBvazogZXh0ZW5kZWQgdGltZW91dCB0ZXN0IHN1Y2NlZWRlZAorLi9zaHV0ZG93bmFsbAorCisj IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gIj09PSBUZXN0NzogTWl4IG9m IHZhbGlkIGRlbGF5cyBhbmQgLTEgPT09IgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitjYXQgPiBkZWxheV9jbWRfbWl4ZWQuc2ggPDwgJ0VPRicKKyMhL2Jpbi9iYXNoCisjIE9u ZSByZXBsaWNhIHVwICgyNW1zKSwgb25lIGRvd24gKC0xKQorZWNobyAiMjUgLTEiCitFT0YKK2No bW9kICt4IGRlbGF5X2NtZF9taXhlZC5zaAorCitzZWQgLWkuYmFrICJzfGRlbGF5X2NtZF90aW1l b3V0LnNofGRlbGF5X2NtZF9taXhlZC5zaHwiIGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxs Cit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHNyX2NoZWNrCitlY2hvICJX YWl0aW5nIGZvciBtaXhlZCBkZWxheSB0ZXN0Li4uIgorZm9yIGkgaW4gezEuLjEwfTsgZG8KKyAg ICBpZiBncmVwIC1xICJub2RlLipyZXBvcnRlZCBhcyBkb3duIGJ5IGV4dGVybmFsIGNvbW1hbmQi IGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGVjaG8gIk1peGVkIGRl bGF5IGhhbmRsaW5nIGRldGVjdGVkIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAgYnJlYWsK KyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBTaG91bGQgbG9nIG9uZSAtMSBhbmQgcHJv Y2VzcyBvbmUgbm9ybWFsIGRlbGF5CitncmVwICJub2RlLipyZXBvcnRlZCBhcyBkb3duIGJ5IGV4 dGVybmFsIGNvbW1hbmQuKmRlbGF5IC0xIiBsb2cvcGdwb29sLmxvZyA+L2Rldi9udWxsIDI+JjEK K2lmIFsgJD8gIT0gMCBdO3RoZW4KKyAgICBlY2hvIGZhaWw6IC0xIG5vdCBsb2dnZWQKKyAgICAu L3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCisjIFNob3VsZCBhbHNvIGxvZyB0aGUgbm9y bWFsIHJlcGxpY2EgZGVsYXkKK2dyZXAgIlJlcGxpY2F0aW9uIG9mIG5vZGUuKmV4dGVybmFsIGNv bW1hbmQiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhl bgorICAgIGVjaG8gIk5vdGU6IE5vcm1hbCByZXBsaWNhIGRlbGF5IGxvZ2dpbmcgbWF5IG5vdCBi ZSB2aXNpYmxlIHdpdGggbG9nX3N0YW5kYnlfZGVsYXkgc2V0dGluZ3MiCitmaQorCitlY2hvIG9r OiBtaXhlZCBkZWxheSBoYW5kbGluZyB0ZXN0IHN1Y2NlZWRlZAorLi9zaHV0ZG93bmFsbAorCitl Y2hvICJBbGwgdmFsaWRhdGlvbiB0ZXN0cyBwYXNzZWQhIgorZXhpdCAwClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQotLSAKMi41Mi4wCgo= --0000000000005d861a0644400529--