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 1vhV3C-00Ggju-1f for pgsql-hackers@arkaria.postgresql.org; Sun, 18 Jan 2026 15:50:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vhV3A-00Abdv-1F for pgsql-hackers@arkaria.postgresql.org; Sun, 18 Jan 2026 15:50:48 +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 1vhV39-00Abdn-13 for pgsql-hackers@lists.postgresql.org; Sun, 18 Jan 2026 15:50:48 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vhV34-0015zJ-2U for pgsql-hackers@postgresql.org; Sun, 18 Jan 2026 15:50:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1768751441; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=13yP5c6ZPksq0C6zCdD9tQQmgqOQzLo5h77b8B81+/s=; b=XzrCrcImLSEhd4atVyab+mO8aBA6K5DjVeTvWmAgVTGX9kpqsy2hU7xgw669OKMpN2V+4/ CFsxODtzYQQZuf5YAQ+7odqzT8lsfaGYAIOMWOLpPLRofgT0L09sty5fBH31DogSTGRkNT iYQWuly8KjEb12DnSE/wr22sJyq0B0o= Received: from mail-ej1-f70.google.com (mail-ej1-f70.google.com [209.85.218.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-259-CSx_6a6iO1W6AXb1Yytugw-1; Sun, 18 Jan 2026 10:50:38 -0500 X-MC-Unique: CSx_6a6iO1W6AXb1Yytugw-1 X-Mimecast-MFC-AGG-ID: CSx_6a6iO1W6AXb1Yytugw_1768751437 Received: by mail-ej1-f70.google.com with SMTP id a640c23a62f3a-b8701569041so377805566b.2 for ; Sun, 18 Jan 2026 07:50:38 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768751437; x=1769356237; 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=PLFH72KwAR4j9VRZ6tSa/woua61FiEG2NN3tvz/KGJ4=; b=J8T0rtPHkQLAoJ+ni8mZATgGN6WfPjM1zAo0bpbU2UCCDaRZ9pz0N4HIbYcGDKScN0 LZkVz4bSaD5ou3ksXfM6odcicoKPjl8w7bEi/MqrebiGaBHqXw3Y0xlSsoj2UKNEkLvb EnFiTUPDb/Z+esnGXupZOmAvl0wftPWhqam4due3CpI+F6e+5iBvHlMmd5D433fDEIjl XA32BB2N+aftw7ebYEVXYdKtaEO5lzf4plA+Yty2t7sEBB7JaEfN8U+kS7N+fAzaiuhx PLD/DuH/MHRl3sX0J6nI+hSxb7oOay2MXc9OZVoDi7YbSt+YEZukKanOHfZy7lQ48Qjc YJ1g== X-Gm-Message-State: AOJu0Yygfl27mQj6klfLUUYMBdDDJDLEatZ0yBV3Qg8f6iSn6b76kuyf V1TJ2PW7secZcgEIW/yvIppf9pSayX6qic4NjHq6JmsWvPqxev0NJ7AT9ujJ7elatTay8IsDR10 yUPL/T0bR4Wnuu3NuNrVF3Mxo1bg6+/HlFJKE6Ot+WO/TK8iHP9+W9IgENBw5aTgSx8T8dopq6d 0wDwXwqbnkgfQfq1ljMhejguKEc1GJoh02d7ps7RxM X-Gm-Gg: AY/fxX7M4TK5pnO8lNm37ALTUku4oEApLc/D8O9M+sUmft1lanLnDeh2wPCg1heLylE V7WEudZAJIzfRAj+giErVfy6GjQJo0s/3pJin5WIidoX1XmhhjH3X6hzl7r36S7OWTBc35nCdF2 78Q6BWxW7g1G9k5rgBSCfsSqJVOwiZwgexC0ZJfuPfolW3TcVZz0RpRCdhuK7jTy2Llw== X-Received: by 2002:a17:907:d0d:b0:b87:c13:f334 with SMTP id a640c23a62f3a-b8796b85d4dmr795660966b.53.1768751437020; Sun, 18 Jan 2026 07:50:37 -0800 (PST) X-Received: by 2002:a17:907:d0d:b0:b87:c13:f334 with SMTP id a640c23a62f3a-b8796b85d4dmr795659166b.53.1768751436425; Sun, 18 Jan 2026 07:50:36 -0800 (PST) MIME-Version: 1.0 References: <7bcc0420-d457-4af5-a459-a4e5d929a665@vondra.me> <7gbzkoxrpqvj2sgxof4pqirz7pf6wb5vizak3mxrz2zpvrf3pa@lvnwdsy3em56> In-Reply-To: From: Filip Janus Date: Sun, 18 Jan 2026 16:50:24 +0100 X-Gm-Features: AZwV_QhqLub_GzU1L8wezgrPK8d4yd5AONtstDt2q0UexB0H0Bdawm06q5RsIw8 Message-ID: Subject: Re: Proposal: Adding compression of temporary files To: lakshmi , Tomas Vondra Cc: pgsql-hackers@postgresql.org X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: TXI41AUQyyEx4FoJ9AXhRR_o9pCJqe7fsdxbu4ejp0U_1768751437 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="00000000000011029a0648ab89e6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000011029a0648ab89e6 Content-Type: multipart/alternative; boundary="0000000000001102990648ab89e4" --0000000000001102990648ab89e4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Thank you, Tomas, for the thorough and detailed review! I'm posting an updated patch set incorporating the changes from your review= . Changes applied from review: - Simplified BufFileCreateTemp interface - Improved error handling in BufFileLoadBuffer/BufFileDumpBuffer - Unified compression header format (CompressHeader struct) - Added tuplestore integration (compression when EXEC_FLAG_BACKWARD is not required) - Various code cleanups and comment improvements Additional change (not from review): - Switched from static shared buffer to per-file allocation. The shared buffer provided a negligible performance benefit while keeping memory allocated for the backend's lifetime. Future work: - Support for additional compression methods (gzip, zstd) - Random access and seek operations with compression -Filip- =C3=BAt 13. 1. 2026 v 14:34 odes=C3=ADlatel Filip Janus = napsal: > Hi, > Yes, it needs to be rebased. I am working on it. I will post it here soon= . > > > -Filip- > > > =C3=BAt 13. 1. 2026 v 13:51 odes=C3=ADlatel lakshmi napsal: > >> Hi all, >> I tried to replicate the temporary file compression issue by applying th= e >> two patches shared in the thread on current PostgreSQL master. >> here is what i observed, >> 1) patch 1:0001-Add-transparent-compression-for-temporary-files.patch >> when applying the first patch it ultimately fails to apply due to contex= t >> mismatches. >> >> failures i see are in the following files: >> src/backend/storage/file/buffile.c >> src/backend/utils/misc/guc_tables.c >> src/backend/utils/misc/postgresql.conf.sample >> >> 2) The second >> patch 0002-Add-regression-tests-for-temporary-file-compression.patch >> ,applies successfully without any issues. >> >> Does it mean that the implementation patch needs to be rebased or >> otherwise adjusted for the current codebase, and if so, what would be th= e >> recommended way to proceed?could you please suggest how I should apply t= he >> implementation patch in this case? >> >> >> regards >> lakshmi >> >> On Tue, Jan 13, 2026 at 5:01=E2=80=AFPM Filip Janus = wrote: >> >>> Rebase after changes introduced in guc_tables.c >>> >>> -Filip- >>> >>> >>> =C3=BAt 19. 8. 2025 v 17:48 odes=C3=ADlatel Filip Janus >>> napsal: >>> >>>> Fix overlooked compiler warnings >>>> >>>> -Filip- >>>> >>>> >>>> po 18. 8. 2025 v 18:51 odes=C3=ADlatel Filip Janus >>>> napsal: >>>> >>>>> I rebased the proposal and fixed the problem causing those problems. >>>>> >>>>> -Filip- >>>>> >>>>> >>>>> =C3=BAt 17. 6. 2025 v 16:49 odes=C3=ADlatel Andres Freund >>>>> napsal: >>>>> >>>>>> Hi, >>>>>> >>>>>> On 2025-04-25 23:54:00 +0200, Filip Janus wrote: >>>>>> > The latest rebase. >>>>>> >>>>>> This often seems to fail during tests: >>>>>> https://cirrus-ci.com/github/postgresql-cfbot/postgresql/cf%2F5382 >>>>>> >>>>>> E.g. >>>>>> >>>>>> https://api.cirrus-ci.com/v1/artifact/task/4667337632120832/testrun/= build-32/testrun/recovery/027_stream_regress/log/regress_log_027_stream_reg= ress >>>>>> >>>>>> =3D=3D=3D dumping >>>>>> /tmp/cirrus-ci-build/build-32/testrun/recovery/027_stream_regress/da= ta/regression.diffs >>>>>> =3D=3D=3D >>>>>> diff -U3 >>>>>> /tmp/cirrus-ci-build/src/test/regress/expected/join_hash_pglz.out >>>>>> /tmp/cirrus-ci-build/build-32/testrun/recovery/027_stream_regress/da= ta/results/join_hash_pglz.out >>>>>> --- >>>>>> /tmp/cirrus-ci-build/src/test/regress/expected/join_hash_pglz.out >>>>>> 2025-05-26 05:04:40.686524215 +0000 >>>>>> +++ >>>>>> /tmp/cirrus-ci-build/build-32/testrun/recovery/027_stream_regress/da= ta/results/join_hash_pglz.out >>>>>> 2025-05-26 05:15:00.534907680 +0000 >>>>>> @@ -594,11 +594,8 @@ >>>>>> select count(*) from join_foo >>>>>> left join (select b1.id, b1.t from join_bar b1 join join_bar b2 >>>>>> using (id)) ss >>>>>> on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1; >>>>>> - count >>>>>> -------- >>>>>> - 3 >>>>>> -(1 row) >>>>>> - >>>>>> +ERROR: could not read from temporary file: read only 8180 of >>>>>> 1572860 bytes >>>>>> +CONTEXT: parallel worker >>>>>> select final > 1 as multibatch >>>>>> from hash_join_batches( >>>>>> $$ >>>>>> @@ -606,11 +603,7 @@ >>>>>> left join (select b1.id, b1.t from join_bar b1 join join_bar b2 >>>>>> using (id)) ss >>>>>> on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1; >>>>>> $$); >>>>>> - multibatch >>>>>> ------------- >>>>>> - t >>>>>> -(1 row) >>>>>> - >>>>>> +ERROR: current transaction is aborted, commands ignored until end >>>>>> of transaction block >>>>>> rollback to settings; >>>>>> -- single-batch with rescan, parallel-oblivious >>>>>> savepoint settings; >>>>>> >>>>>> >>>>>> Greetings, >>>>>> >>>>>> Andres >>>>>> >>>>>> >>>>>> --0000000000001102990648ab89e4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,
Thank you, Tomas, for the thorough and detaile= d review!
I'm posting an updated patch set incorporating the = changes from your review.

Changes applied from rev= iew:
- Simplified BufFileCreateTemp interface
- Improved error hand= ling in BufFileLoadBuffer/BufFileDumpBuffer
- Unified compression header= format (CompressHeader struct)
- Added tuplestore integration (compress= ion when EXEC_FLAG_BACKWARD is not required)
- Various code cleanups and= comment improvements
Additional change (not from review):
- Swi= tched from static shared buffer to per-file allocation. The shared buffer= =C2=A0
=C2=A0 =C2=A0provided a negligible performance benefit whi= le keeping memory allocated for the backend's lifetime.
Future wor= k:
- Support for additional compression methods (gzip, zstd)
- Random= access and seek operations with compression


=C2= =A0 =C2=A0 -Filip-


= =C3=BAt 13. 1. 2026 v=C2=A014:34 odes=C3=ADlatel Filip Janus <fjanus@redhat.com> napsal:
Hi,=C2= =A0
Yes, it needs to be rebased. I am working on it. I will post = it here soon.
=C2=A0

= =C2=A0 =C2=A0 -Filip-


=C3=BAt 13. 1. 2026 = v=C2=A013:51 odes=C3=ADlatel lakshmi <lakshmigcdac@gmail.com> napsal:
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">
Hi all,I tried to replicate the temporary file compression issue by applying the= two patches shared in the thread on current PostgreSQL master.
here is = what i observed,
1) patch 1:0001-Add-transparent-compression-for-tempora= ry-files.patch
when applying the first patch it ultimately fails to appl= y due to context mismatches.

failures i see are in the following fil= es:
src/backend/storage/file/buffile.c
src/backend/utils/misc/guc_tables.c
src/backend/utils/misc/postgresql.conf.sample

2) The second patc= h=C2=A00002-Add-regression-tests-for-temporary-file-compression.patch ,appl= ies successfully without any issues.

Does it mean that the impl= ementation patch needs to be rebased or otherwise adjusted for the current = codebase, and if so, what would be the recommended way to proceed?could you= please suggest how I should apply the implementation patch in this case?

regards
lakshmi

On Tue, Jan 13, 2026 at 5:01=E2=80=AFPM F= ilip Janus <fjanu= s@redhat.com> wrote:
Rebase after changes=C2=A0introduced in g= uc_tables.c

=C2=A0 =C2=A0 -Fi= lip-


=
=C3=BAt 19. 8. 2025 v=C2=A017:48 odes= =C3=ADlatel Filip Janus <fjanus@redhat.com> napsal:
Fix overlooked compiler war= nings=C2=A0

=C2=A0 =C2=A0 -Fi= lip-


=
po 18. 8. 2025 v=C2=A018:51 odes=C3= =ADlatel Filip Janus <fjanus@redhat.com> napsal:
I rebased the proposal and fix= ed=C2=A0the problem causing those problems.

=C2=A0 =C2=A0 -Filip-

<= br>
=C3=BAt= 17. 6. 2025 v=C2=A016:49 odes=C3=ADlatel Andres Freund <andres@anarazel.de> napsal:=
Hi,

On 2025-04-25 23:54:00 +0200, Filip Janus wrote:
> The latest rebase.

This often seems to fail during tests:
https://cirrus-ci.com/github/postg= resql-cfbot/postgresql/cf%2F5382

E.g.
https://api.cirrus-ci.com/v1= /artifact/task/4667337632120832/testrun/build-32/testrun/recovery/027_strea= m_regress/log/regress_log_027_stream_regress

=3D=3D=3D dumping /tmp/cirrus-ci-build/build-32/testrun/recovery/027_stream= _regress/data/regression.diffs =3D=3D=3D
diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/join_hash_pglz.out = /tmp/cirrus-ci-build/build-32/testrun/recovery/027_stream_regress/data/resu= lts/join_hash_pglz.out
--- /tmp/cirrus-ci-build/src/test/regress/expected/join_hash_pglz.out=C2=A0= =C2=A02025-05-26 05:04:40.686524215 +0000
+++ /tmp/cirrus-ci-build/build-32/testrun/recovery/027_stream_regress/data/= results/join_hash_pglz.out=C2=A0 =C2=A02025-05-26 05:15:00.534907680 +0000<= br> @@ -594,11 +594,8 @@
=C2=A0select count(*) from join_foo
=C2=A0 =C2=A0left join (select b1.id, b1.t from join_bar b1 join join_bar b2 using (= id)) ss
=C2=A0 =C2=A0on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1;
- count
--------
-=C2=A0 =C2=A0 =C2=A03
-(1 row)
-
+ERROR:=C2=A0 could not read from temporary file: read only 8180 of 1572860= bytes
+CONTEXT:=C2=A0 parallel worker
=C2=A0select final > 1 as multibatch
=C2=A0 =C2=A0from hash_join_batches(
=C2=A0$$
@@ -606,11 +603,7 @@
=C2=A0 =C2=A0 =C2=A0left join (select b1.id, b1.t from join_bar b1 join join_bar b2 = using (id)) ss
=C2=A0 =C2=A0 =C2=A0on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1;
=C2=A0$$);
- multibatch
-------------
- t
-(1 row)
-
+ERROR:=C2=A0 current transaction is aborted, commands ignored until end of= transaction block
=C2=A0rollback to settings;
=C2=A0-- single-batch with rescan, parallel-oblivious
=C2=A0savepoint settings;


Greetings,

Andres


--0000000000001102990648ab89e4-- --00000000000011029a0648ab89e6 Content-Type: application/octet-stream; name="0002-Add-regression-tests-for-temporary-file-compression.patch" Content-Disposition: attachment; filename="0002-Add-regression-tests-for-temporary-file-compression.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkjwwwdt1 RnJvbSA3N2Q1ZjA2ZTNiMWRkYzUwMDI0ZjI2ZGYxOGYxNjZiZDBlOThkNGI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxpcCBKYW51cyA8ZmphbnVzQHJlZGhhdC5jb20+CkRhdGU6 IFRodSwgMzEgSnVsIDIwMjUgMTQ6MDI6NDUgKzAyMDAKU3ViamVjdDogW1BBVENIIDIvMl0gQWRk IHJlZ3Jlc3Npb24gdGVzdHMgZm9yIHRlbXBvcmFyeSBmaWxlIGNvbXByZXNzaW9uCgpUaGlzIGNv bW1pdCBhZGRzIGNvbXByZWhlbnNpdmUgcmVncmVzc2lvbiB0ZXN0cyBmb3IgdGhlIHRyYW5zcGFy ZW50CnRlbXBvcmFyeSBmaWxlIGNvbXByZXNzaW9uIGZlYXR1cmUuCgpUZXN0IGNvdmVyYWdlOgot IGpvaW5faGFzaF9sejQuc3FsOiBUZXN0cyBoYXNoIGpvaW4gb3BlcmF0aW9ucyB3aXRoIExaNCBj b21wcmVzc2lvbgotIGpvaW5faGFzaF9wZ2x6LnNxbDogVGVzdHMgaGFzaCBqb2luIG9wZXJhdGlv bnMgd2l0aCBQR0xaIGNvbXByZXNzaW9uCi0gQm90aCB0ZXN0cyB2ZXJpZnkgY29tcHJlc3Npb24g d29ya3MgY29ycmVjdGx5IGZvciB2YXJpb3VzIGhhc2ggam9pbiBzY2VuYXJpb3MKLSBFeHBlY3Rl ZCBvdXRwdXQgZmlsZXMgZm9yIHZhbGlkYXRpb24KClRlc3QgaW50ZWdyYXRpb246Ci0gTFo0IHRl c3RzIGFyZSBjb25kaXRpb25hbGx5IGVuYWJsZWQgd2hlbiBQb3N0Z3JlU1FMIGlzIGJ1aWx0IHdp dGggLS13aXRoLWx6NAotIFBHTFogdGVzdHMgYXJlIGFsd2F5cyBlbmFibGVkIGFzIFBHTFogaXMg YnVpbHQtaW4KLSBUZXN0cyBhZGRlZCB0byBwYXJhbGxlbCByZWdyZXNzaW9uIHRlc3Qgc2NoZWR1 bGUKLSBHTlVtYWtlZmlsZSB1cGRhdGVkIHRvIGluY2x1ZGUgY29uZGl0aW9uYWwgTFo0IHRlc3Qg ZXhlY3V0aW9uCgpUaGUgdGVzdHMgZW5zdXJlIHRoYXQgY29tcHJlc3Npb24vZGVjb21wcmVzc2lv biB3b3JrcyB0cmFuc3BhcmVudGx5CndpdGhvdXQgYWZmZWN0aW5nIHF1ZXJ5IHJlc3VsdHMsIHdo aWxlIHByb3ZpZGluZyBjb3ZlcmFnZSBmb3IgYm90aApzdXBwb3J0ZWQgY29tcHJlc3Npb24gYWxn b3JpdGhtcy4KLS0tCiBzcmMvTWFrZWZpbGUuZ2xvYmFsLmluICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9HTlVtYWtlZmlsZSAgICAgICAgICAgICAgICAg fCAgICA0ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbl9oYXNoX2x6NC5vdXQgIHwg MTE2NyArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbl9o YXNoX3BnbHoub3V0IHwgMTE2NyArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgIHwgICAgNCArLQogc3JjL3Rlc3QvcmVncmVzcy9z cWwvam9pbl9oYXNoX2x6NC5zcWwgICAgICAgfCAgNjI3ICsrKysrKysrKysKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2pvaW5faGFzaF9wZ2x6LnNxbCAgICAgIHwgIDYyNyArKysrKysrKysrCiA3IGZp bGVzIGNoYW5nZWQsIDM1OTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbl9oYXNoX2x6NC5vdXQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW5faGFzaF9wZ2x6 Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW5faGFzaF9s ejQuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbl9oYXNo X3BnbHouc3FsCgpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmdsb2JhbC5pbiBiL3NyYy9NYWtl ZmlsZS5nbG9iYWwuaW4KaW5kZXggMzcxY2Q3ZWJhMmMuLjE2MTA5NjQzZmQzIDEwMDY0NAotLS0g YS9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluCisrKyBiL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4KQEAg LTIwMSw2ICsyMDEsNyBAQCB3aXRoX2xpYnVyaW5nCT0gQHdpdGhfbGlidXJpbmdACiB3aXRoX2xp YnhtbAk9IEB3aXRoX2xpYnhtbEAKIHdpdGhfbGlieHNsdAk9IEB3aXRoX2xpYnhzbHRACiB3aXRo X2xsdm0JPSBAd2l0aF9sbHZtQAord2l0aF9sejQJPSBAd2l0aF9sejRACiB3aXRoX3N5c3RlbV90 emRhdGEgPSBAd2l0aF9zeXN0ZW1fdHpkYXRhQAogd2l0aF91dWlkCT0gQHdpdGhfdXVpZEAKIHdp dGhfemxpYgk9IEB3aXRoX3psaWJACmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL0dOVW1h a2VmaWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9HTlVtYWtlZmlsZQppbmRleCBhOGJhMTllNTk3MS4u NWM0ZTI1YmMwN2MgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvR05VbWFrZWZpbGUKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9HTlVtYWtlZmlsZQpAQCAtOTQsNiArOTQsMTAgQEAgaW5zdGFs bGRpcnMtdGVzdHM6IGluc3RhbGxkaXJzCiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0uIC0tbWF4 LWNvbmN1cnJlbnQtdGVzdHM9MjAgXAogCSQoRVhUUkFfUkVHUkVTU19PUFRTKQogCitpZmVxICgk KHdpdGhfbHo0KSx5ZXMpCitvdmVycmlkZSBFWFRSQV9URVNUUyA6PSAkKEVYVFJBX1RFU1RTKSBq b2luX2hhc2hfbHo0CitlbmRpZgorCiBjaGVjazogYWxsCiAJJChwZ19yZWdyZXNzX2NoZWNrKSAk KFJFR1JFU1NfT1BUUykgLS1zY2hlZHVsZT0kKHNyY2RpcikvcGFyYWxsZWxfc2NoZWR1bGUgJChN QVhDT05OT1BUKSAkKEVYVFJBX1RFU1RTKQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pvaW5faGFzaF9sejQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luX2hhc2hfbHo0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u NzgzNjdiZjM3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pvaW5faGFzaF9sejQub3V0CkBAIC0wLDAgKzEsMTE2NyBAQAorLS0KKy0tIGV4ZXJjaXNlcyBm b3IgdGhlIGhhc2ggam9pbiBjb2RlCistLQorYmVnaW47CitzZXQgbG9jYWwgbWluX3BhcmFsbGVs X3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgbG9jYWwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7 CitzZXQgbG9jYWwgZW5hYmxlX2hhc2hqb2luID0gb247CitzZXQgbG9jYWwgdGVtcF9maWxlX2Nv bXByZXNzaW9uID0gJ2x6NCc7CistLSBFeHRyYWN0IGJ1Y2tldCBhbmQgYmF0Y2ggY291bnRzIGZy b20gYW4gZXhwbGFpbiBhbmFseXplIHBsYW4uICBJbgorLS0gZ2VuZXJhbCB3ZSBjYW4ndCBtYWtl IGFzc2VydGlvbnMgYWJvdXQgaG93IG1hbnkgYmF0Y2hlcyAob3IKKy0tIGJ1Y2tldHMpIHdpbGwg YmUgcmVxdWlyZWQgYmVjYXVzZSBpdCBjYW4gdmFyeSwgYnV0IHdlIGNhbiBpbiBzb21lCistLSBz cGVjaWFsIGNhc2VzIGFuZCB3ZSBjYW4gY2hlY2sgZm9yIGdyb3d0aC4KK2NyZWF0ZSBvciByZXBs YWNlIGZ1bmN0aW9uIGZpbmRfaGFzaChub2RlIGpzb24pCityZXR1cm5zIGpzb24gbGFuZ3VhZ2Ug cGxwZ3NxbAorYXMKKyQkCitkZWNsYXJlCisgIHgganNvbjsKKyAgY2hpbGQganNvbjsKK2JlZ2lu CisgIGlmIG5vZGUtPj4nTm9kZSBUeXBlJyA9ICdIYXNoJyB0aGVuCisgICAgcmV0dXJuIG5vZGU7 CisgIGVsc2UKKyAgICBmb3IgY2hpbGQgaW4gc2VsZWN0IGpzb25fYXJyYXlfZWxlbWVudHMobm9k ZS0+J1BsYW5zJykKKyAgICBsb29wCisgICAgICB4IDo9IGZpbmRfaGFzaChjaGlsZCk7CisgICAg ICBpZiB4IGlzIG5vdCBudWxsIHRoZW4KKyAgICAgICAgcmV0dXJuIHg7CisgICAgICBlbmQgaWY7 CisgICAgZW5kIGxvb3A7CisgICAgcmV0dXJuIG51bGw7CisgIGVuZCBpZjsKK2VuZDsKKyQkOwor Y3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gaGFzaF9qb2luX2JhdGNoZXMocXVlcnkgdGV4dCkK K3JldHVybnMgdGFibGUgKG9yaWdpbmFsIGludCwgZmluYWwgaW50KSBsYW5ndWFnZSBwbHBnc3Fs CithcworJCQKK2RlY2xhcmUKKyAgd2hvbGVfcGxhbiBqc29uOworICBoYXNoX25vZGUganNvbjsK K2JlZ2luCisgIGZvciB3aG9sZV9wbGFuIGluCisgICAgZXhlY3V0ZSAnZXhwbGFpbiAoYW5hbHl6 ZSwgZm9ybWF0ICcnanNvbicnKSAnIHx8IHF1ZXJ5CisgIGxvb3AKKyAgICBoYXNoX25vZGUgOj0g ZmluZF9oYXNoKGpzb25fZXh0cmFjdF9wYXRoKHdob2xlX3BsYW4sICcwJywgJ1BsYW4nKSk7Cisg ICAgb3JpZ2luYWwgOj0gaGFzaF9ub2RlLT4+J09yaWdpbmFsIEhhc2ggQmF0Y2hlcyc7CisgICAg ZmluYWwgOj0gaGFzaF9ub2RlLT4+J0hhc2ggQmF0Y2hlcyc7CisgICAgcmV0dXJuIG5leHQ7Cisg IGVuZCBsb29wOworZW5kOworJCQ7CistLSBNYWtlIGEgc2ltcGxlIHJlbGF0aW9uIHdpdGggd2Vs bCBkaXN0cmlidXRlZCBrZXlzIGFuZCBjb3JyZWN0bHkKKy0tIGVzdGltYXRlZCBzaXplLgorY3Jl YXRlIHRhYmxlIHNpbXBsZSBhcworICBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBB UyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUg c2ltcGxlIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBzaW1wbGU7CistLSBN YWtlIGEgcmVsYXRpb24gd2hvc2Ugc2l6ZSB3ZSB3aWxsIHVuZGVyLWVzdGltYXRlLiAgV2Ugd2Fu dCBzdGF0cworLS0gdG8gc2F5IDEwMDAgcm93cywgYnV0IGFjdHVhbGx5IHRoZXJlIGFyZSAyMCww MDAgcm93cy4KK2NyZWF0ZSB0YWJsZSBiaWdnZXJfdGhhbl9pdF9sb29rcyBhcworICBzZWxlY3Qg Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3Mgc2V0IChhdXRv dmFjdXVtX2VuYWJsZWQgPSAnZmFsc2UnKTsKK2FsdGVyIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xv b2tzIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBiaWdnZXJfdGhhbl9pdF9s b29rczsKK3VwZGF0ZSBwZ19jbGFzcyBzZXQgcmVsdHVwbGVzID0gMTAwMCB3aGVyZSByZWxuYW1l ID0gJ2JpZ2dlcl90aGFuX2l0X2xvb2tzJzsKKy0tIE1ha2UgYSByZWxhdGlvbiB3aG9zZSBzaXpl IHdlIHVuZGVyZXN0aW1hdGUgYW5kIHRoYXQgYWxzbyBoYXMgYQorLS0ga2luZCBvZiBza2V3IHRo YXQgYnJlYWtzIG91ciBiYXRjaGluZyBzY2hlbWUuICBXZSB3YW50IHN0YXRzIHRvIHNheQorLS0g MiByb3dzLCBidXQgYWN0dWFsbHkgdGhlcmUgYXJlIDIwLDAwMCByb3dzIHdpdGggdGhlIHNhbWUg a2V5LgorY3JlYXRlIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgKGlkIGludCwgdCB0ZXh0KTsKK2Fs dGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChhdXRvdmFjdXVtX2VuYWJsZWQgPSAnZmFs c2UnKTsKK2FsdGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChwYXJhbGxlbF93b3JrZXJz ID0gMik7CithbmFseXplIGV4dHJlbWVseV9za2V3ZWQ7CitpbnNlcnQgaW50byBleHRyZW1lbHlf c2tld2VkCisgIHNlbGVjdCA0MiBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWEnCisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKTsKK3VwZGF0ZSBwZ19jbGFz cworICBzZXQgcmVsdHVwbGVzID0gMiwgcmVscGFnZXMgPSBwZ19yZWxhdGlvbl9zaXplKCdleHRy ZW1lbHlfc2tld2VkJykgLyA4MTkyCisgIHdoZXJlIHJlbG5hbWUgPSAnZXh0cmVtZWx5X3NrZXdl ZCc7CistLSBNYWtlIGEgcmVsYXRpb24gd2l0aCBhIGNvdXBsZSBvZiBlbm9ybW91cyB0dXBsZXMu CitjcmVhdGUgdGFibGUgd2lkZSBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGFzIGlk LCBycGFkKCcnLCAzMjAwMDAsICd4JykgYXMgdDsKK2FsdGVyIHRhYmxlIHdpZGUgc2V0IChwYXJh bGxlbF93b3JrZXJzID0gMik7CistLSBUaGUgIm9wdGltYWwiIGNhc2U6IHRoZSBoYXNoIHRhYmxl IGZpdHMgaW4gbWVtb3J5OyB3ZSBwbGFuIGZvciAxCistLSBiYXRjaCwgd2Ugc3RpY2sgdG8gdGhh dCBudW1iZXIsIGFuZCBwZWFrIG1lbW9yeSB1c2FnZSBzdGF5cyB3aXRoaW4KKy0tIG91ciB3b3Jr X21lbSBidWRnZXQKKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxv Y2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtf bWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxh aW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1w bGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQor ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0t LS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxs eV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZy b20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUg ciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2gg fCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCityb2xsYmFjayB0 byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9p bgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Bl cl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFz aF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9 IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4g IEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlh bCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBz CisoOSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBz IHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0 IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBh cyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2Vs ZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQp OworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAgICAgICAgICAgICAgICAgICB8 IGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBh cmFsbGVsLWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0g JzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBl bmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3Qg Y291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJz IFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNj YW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxl IHMKKyg5IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxl IHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxl Y3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFs IGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBz ZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7Cisk JCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAg IHwgZgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIFRoZSAiZ29vZCIgY2Fz ZTogYmF0Y2hlcyByZXF1aXJlZCwgYnV0IHdlIHBsYW4gdGhlIHJpZ2h0IG51bWJlcjsgd2UKKy0t IHBsYW4gZm9yIHNvbWUgbnVtYmVyIG9mIGJhdGNoZXMsIGFuZCB3ZSBzdGljayB0byB0aGF0IG51 bWJlciwgYW5kCistLSBwZWFrIG1lbW9yeSB1c2FnZSBzYXlzIHdpdGhpbiBvdXIgd29ya19tZW0g YnVkZ2V0CistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21lbSA9 ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4g KGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUg cyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAg LT4gIEhhc2ggSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0t LS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9t dWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20g aGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBq b2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBp bmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLQorIHQgICAgICAgICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCityb2xsYmFjayB0byBz ZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgor c2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNo X21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0g b2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUg ciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAg R2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFs IEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAg UGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMK Kyg5IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qg b3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFz IGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7 CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgICAgICAgICAgIHwg ZgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFy YWxsZWwtYXdhcmUgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29ya19tZW0gPSAn MTkya0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwg ZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2Vy cyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBT Y2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBs ZSBzCisoOSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBs ZSBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2Vs ZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5h bCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAg c2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOwor JCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICAgICAgICAg ICB8IGYKKygxIHJvdykKKworLS0gcGFyYWxsZWwgZnVsbCBtdWx0aS1iYXRjaCBoYXNoIGpvaW4K K3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1 c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNr IHRvIHNldHRpbmdzOworLS0gVGhlICJiYWQiIGNhc2U6IGR1cmluZyBleGVjdXRpb24gd2UgbmVl ZCB0byBpbmNyZWFzZSBudW1iZXIgb2YKKy0tIGJhdGNoZXM7IGluIHRoaXMgY2FzZSB3ZSBwbGFu IGZvciAxIGJhdGNoLCBhbmQgaW5jcmVhc2UgYXQgbGVhc3QgYQorLS0gY291cGxlIG9mIHRpbWVz LCBhbmQgcGVhayBtZW1vcnkgdXNhZ2Ugc3RheXMgd2l0aGluIG91ciB3b3JrX21lbQorLS0gYnVk Z2V0CistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcx MjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNv c3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIEZST00gc2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhh bl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g c2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gYmlnZ2VyX3RoYW5faXRfbG9va3MgcworKDYgcm93cykKKworc2VsZWN0IGNvdW50KCopIEZS T00gc2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CisgY291 bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBp bml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hl cworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIEZST00g c2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CiskJCk7Cisg aW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgdAor KDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxs ZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0g JzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2Fs IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNp bmcgKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAt PiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0 aWFsIEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYmlnZ2Vy X3RoYW5faXRfbG9va3MgcworKDkgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0t LS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlf bXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9t IGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIg am9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5 X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQor Cityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUg aGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dv cmtlcnNfcGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTkya0InOworc2V0 IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFs bGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQor ICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAxCisgICAgICAgICAtPiAg UGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAg ICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMKKyg5IHJvd3Mp CisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9v a3MgcyB1c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3Nl bGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2lu YWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisg IHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3Mg cyB1c2luZyAoaWQpOworJCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2Jh dGNoZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAg ICAgICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7Cist LSBUaGUgInVnbHkiIGNhc2U6IGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBiYXRjaGVzIGR1cmlu ZyBleGVjdXRpb24KKy0tIGRvZXNuJ3QgaGVscCwgc28gc3RvcCB0cnlpbmcgdG8gZml0IGluIHdv cmtfbWVtIGFuZCBob3BlIGZvciB0aGUKKy0tIGJlc3Q7IGluIHRoaXMgY2FzZSB3ZSBwbGFuIGZv ciAxIGJhdGNoLCBpbmNyZWFzZXMganVzdCBvbmNlIGFuZAorLS0gdGhlbiBzdG9wIGluY3JlYXNp bmcgYmVjYXVzZSB0aGF0IGRpZG4ndCBoZWxwIGF0IGFsbCwgc28gd2UgYmxvdworLS0gcmlnaHQg dGhyb3VnaCB0aGUgd29ya19tZW0gYnVkZ2V0IGFuZCBob3BlIGZvciB0aGUgYmVzdC4uLgorLS0g bm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVs X3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOwor c2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYp CisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBz IHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgIEhhc2ggQ29uZDogKHIu aWQgPSBzLmlkKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGV4dHJlbWVseV9za2V3ZWQg cworKDYgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1l bHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93 KQorCitzZWxlY3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50 KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQk KTsKKyBvcmlnaW5hbCB8IGZpbmFsIAorLS0tLS0tLS0tLSstLS0tLS0tCisgICAgICAgIDEgfCAg ICAgMgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGgg cGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxv Y2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtf bWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0 IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1 c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJz IFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2Fu IG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIGV4dHJlbWVseV9za2V3ZWQgcworKDggcm93cykKKworc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlk KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIGhh c2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9p biBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBvcmlnaW5hbCB8IGZpbmFs IAorLS0tLS0tLS0tLSstLS0tLS0tCisgICAgICAgIDEgfCAgICAgMgorKDEgcm93KQorCityb2xs YmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUgaGFzaCBq b2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOworc2V0IGxvY2Fs IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hh c2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2lt cGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVk OiAxCisgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAgICAgICBIYXNo IENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2Nh biBvbiBzaW1wbGUgcgorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBleHRyZW1lbHlfc2tld2VkIHMK Kyg4IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5 X3NrZXdlZCBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykK Kworc2VsZWN0ICogZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7 Cisgb3JpZ2luYWwgfCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0tLQorICAgICAgICAxIHwgICAg IDQKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBBIGNvdXBsZSBvZiBvdGhl ciBoYXNoIGpvaW4gdGVzdHMgdW5yZWxhdGVkIHRvIHdvcmtfbWVtIG1hbmFnZW1lbnQuCistLSBD aGVjayB0aGF0IEVYUExBSU4gQU5BTFlaRSBoYXMgZGF0YSBldmVuIGlmIHRoZSBsZWFkZXIgZG9l c24ndCBwYXJ0aWNpcGF0ZQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7 CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBwYXJhbGxl bF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2Jh dGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBz IHVzaW5nIChpZCk7CiskJCk7Cisgb3JpZ2luYWwgfCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0t LQorICAgICAgICAxIHwgICAgIDEKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7Cist LSBFeGVyY2lzZSByZXNjYW5zLiAgV2UnbGwgdHVybiBvZmYgcGFyYWxsZWxfbGVhZGVyX3BhcnRp Y2lwYXRpb24gc28KKy0tIHRoYXQgd2UgY2FuIGNoZWNrIHRoYXQgaW5zdHJ1bWVudGF0aW9uIGNv bWVzIGJhY2sgY29ycmVjdGx5LgorY3JlYXRlIHRhYmxlIGpvaW5fZm9vIGFzIHNlbGVjdCBnZW5l cmF0ZV9zZXJpZXMoMSwgMykgYXMgaWQsICd4eHh4eCc6OnRleHQgYXMgdDsKK2FsdGVyIHRhYmxl IGpvaW5fZm9vIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDApOworY3JlYXRlIHRhYmxlIGpvaW5f YmFyIGFzIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDApIGFzIGlkLCAneHh4eHgnOjp0 ZXh0IGFzIHQ7CithbHRlciB0YWJsZSBqb2luX2JhciBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAy KTsKK2FuYWx5emUgam9pbl9mb28sIGpvaW5fYmFyOworLS0gbXVsdGktYmF0Y2ggd2l0aCByZXNj YW4sIHBhcmFsbGVsLW9ibGl2aW91cworc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9w YXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0g b2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworc2V0IHBhcmFsbGVs X3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworc2V0IG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9tYXRlcmlhbCA9IG9m ZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVtID0gJzY0a0InOwor c2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNl bGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQs IGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisg ICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAx OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAgICAgICAgIEpv aW4gRmlsdGVyOiAoKGpvaW5fZm9vLmlkIDwgKGIxLmlkICsgMSkpIEFORCAoam9pbl9mb28uaWQg PiAoYjEuaWQgLSAxKSkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gam9pbl9mb28KKyAgICAg ICAgIC0+ICBHYXRoZXIKKyAgICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo YjEuaWQgPSBiMi5pZCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2Nh biBvbiBqb2luX2JhciBiMQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBqb2luX2JhciBiMgorKDExIHJvd3Mp CisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIx LmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBz cworICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAt IDE7CisgY291bnQgCistLS0tLS0tCisgICAgIDMKKygxIHJvdykKKworc2VsZWN0IGZpbmFsID4g MSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3Qg Y291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50 IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9u IGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQk KTsKKyBtdWx0aWJhdGNoIAorLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0 byBzZXR0aW5nczsKKy0tIHNpbmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtb2JsaXZp b3VzCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7 CitzZXQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFs bGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7Citz ZXQgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDI7CitzZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJn ZWpvaW4gPSBvZmY7CitzZXQgd29ya19tZW0gPSAnNE1CJzsKK3NldCBoYXNoX21lbV9tdWx0aXBs aWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBq b2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIg YjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwg c3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAt PiAgTmVzdGVkIExvb3AgTGVmdCBKb2luCisgICAgICAgICBKb2luIEZpbHRlcjogKChqb2luX2Zv by5pZCA8IChiMS5pZCArIDEpKSBBTkQgKGpvaW5fZm9vLmlkID4gKGIxLmlkIC0gMSkpKQorICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIGpvaW5fZm9vCisgICAgICAgICAtPiAgR2F0aGVyCisgICAg ICAgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKGIxLmlkID0gYjIuaWQpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gam9pbl9iYXIgYjEKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gam9pbl9iYXIgYjIKKygxMSByb3dzKQorCitzZWxlY3QgY291bnQoKikg ZnJvbSBqb2luX2ZvbworICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5f YmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgb24gam9pbl9mb28uaWQg PCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworIGNvdW50IAorLS0tLS0t LQorICAgICAzCisoMSByb3cpCisKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRjaAorICBm cm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9m b28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpv aW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlk ICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7CisgbXVsdGliYXRjaCAKKy0t LS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBtdWx0 aS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0 aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOwor c2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAw Oworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9t YXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVt ID0gJzY0a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChz ZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5n IChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlk ID4gc3MuaWQgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4K KyAgICAgICAgIEpvaW4gRmlsdGVyOiAoKGpvaW5fZm9vLmlkIDwgKGIxLmlkICsgMSkpIEFORCAo am9pbl9mb28uaWQgPiAoYjEuaWQgLSAxKSkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gam9p bl9mb28KKyAgICAgICAgIC0+ICBHYXRoZXIKKyAgICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5l ZDogMgorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAoYjEuaWQgPSBiMi5pZCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBqb2luX2JhciBiMQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJh bGxlbCBTZXEgU2NhbiBvbiBqb2luX2JhciBiMgorKDExIHJvd3MpCisKK3NlbGVjdCBjb3VudCgq KSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9p bl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zvby5p ZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CisgY291bnQgCistLS0t LS0tCisgICAgIDMKKygxIHJvdykKKworc2VsZWN0IGZpbmFsID4gMSBhcyBtdWx0aWJhdGNoCisg IGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2lu X2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEg am9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3Mu aWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQkKTsKKyBtdWx0aWJhdGNoIAor LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHNp bmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5n czsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9w YXJ0aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAw Oworc2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3Qg PSAwOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJs ZV9tYXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtf bWVtID0gJzRNQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNv c3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4g KHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNp bmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28u aWQgPiBzcy5pZCAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIE5lc3RlZCBMb29wIExlZnQgSm9p bgorICAgICAgICAgSm9pbiBGaWx0ZXI6ICgoam9pbl9mb28uaWQgPCAoYjEuaWQgKyAxKSkgQU5E IChqb2luX2Zvby5pZCA+IChiMS5pZCAtIDEpKSkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBq b2luX2ZvbworICAgICAgICAgLT4gIEdhdGhlcgorICAgICAgICAgICAgICAgV29ya2VycyBQbGFu bmVkOiAyCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICBIYXNoIENvbmQ6IChiMS5pZCA9IGIyLmlkKQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIxCisgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBh cmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIyCisoMTEgcm93cykKKworc2VsZWN0IGNvdW50 KCopIGZyb20gam9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBq b2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9v LmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyBjb3VudCAKKy0t LS0tLS0KKyAgICAgMworKDEgcm93KQorCitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gK KyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpv aW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBi MSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBz cy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQpOworIG11bHRpYmF0Y2gg CistLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0g QSBmdWxsIG91dGVyIGpvaW4gd2hlcmUgZXZlcnkgcmVjb3JkIGlzIG1hdGNoZWQuCistLSBub24t cGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29y a2Vyc19wZXJfZ2F0aGVyID0gMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp OworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEhhc2ggRnVs bCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBzaW1wbGUgcgorICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworKDYgcm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9t IHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworIGNvdW50IAor LS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gcGFy YWxsZWxpc20gbm90IHBvc3NpYmxlIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGZ1bGwgaGFzaCBq b2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7 CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitleHBsYWlu IChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91 dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNoIEZ1bGwgSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAo ci5pZCA9IHMuaWQpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJv d3MpCisKK3NlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2lt cGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCity b2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxlIHdpdGggcGFy YWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2Nh bCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9m ZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBz aW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAg LT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFy dGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEZ1bGwgSm9p bgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAg ICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg5IHJvd3MpCisKK3NlbGVjdCAg Y291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlk KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0 aW5nczsKKy0tIEEgZnVsbCBvdXRlciBqb2luIHdoZXJlIGV2ZXJ5IHJlY29yZCBpcyBub3QgbWF0 Y2hlZC4KKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBs ZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFn Z3JlZ2F0ZQorICAgLT4gIEhhc2ggRnVsbCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICgoMCAt IHMuaWQpID0gci5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorKDYg cm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBz aW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyA0MDAwMAor KDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIG5vdCBwb3Nz aWJsZSB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBmdWxsIGhhc2ggam9pbgorc2F2ZXBvaW50IHNl dHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IGxvY2FsIG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAg ICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBz IG9uIChyLmlkID0gMCAtIHMuaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEhhc2ggRnVsbCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICgoMCAtIHMu aWQpID0gci5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorKDYgcm93 cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1w bGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyA0MDAwMAorKDEg cm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxl IHdpdGggcGFyYWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4g KGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0 ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5h bGl6ZSBBZ2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDog MgorICAgICAgICAgLT4gIFBhcnRpYWwgQWdncmVnYXRlCisgICAgICAgICAgICAgICAtPiAgUGFy YWxsZWwgSGFzaCBGdWxsIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKCgw IC0gcy5pZCkgPSByLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBT Y2FuIG9uIHNpbXBsZSBzCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBs ZSByCisoOSByb3dzKQorCitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRl ciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworIGNvdW50IAorLS0tLS0tLQor IDQwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gZXhlcmNpc2Ugc3Bl Y2lhbCBjb2RlIHBhdGhzIGZvciBodWdlIHR1cGxlcyAobm90ZSB1c2Ugb2Ygbm9uLXN0cmljdAor LS0gZXhwcmVzc2lvbiBhbmQgbGVmdCBqb2luIHJlcXVpcmVkIHRvIGdldCB0aGUgZGV0b2FzdGVk IHR1cGxlIGludG8KKy0tIHRoZSBoYXNoIHRhYmxlKQorLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxl bC1hd2FyZSBoYXNoIGpvaW4gKGhpdHMgRXhlY1BhcmFsbGVsSGFzaExvYWRUdXBsZSBhbmQKKy0t IHN0c19wdXR0dXBsZSBvdmVyc2l6ZWQgdHVwbGUgY2FzZXMgYmVjYXVzZSBpdCdzIG11bHRpLWJh dGNoKQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAyOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitzZXQgd29ya19tZW0g PSAnMTI4a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBsZW5ndGgobWF4KHMudCkpCisgIGZyb20gd2lkZSBsZWZ0IGpvaW4g KHNlbGVjdCBpZCwgY29hbGVzY2UodCwgJycpIHx8ICcnIGFzIHQgZnJvbSB3aWRlKSBzIHVzaW5n IChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAgR2F0 aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggTGVmdCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh3aWRlLmlkID0gd2lkZV8xLmlkKQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHdpZGUKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gd2lkZSB3aWRlXzEKKyg5IHJvd3MpCisKK3NlbGVjdCBs ZW5ndGgobWF4KHMudCkpCitmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxlc2Nl KHQsICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworIGxlbmd0aCAKKy0t LS0tLS0tCisgMzIwMDAwCisoMSByb3cpCisKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRj aAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGxlbmd0aChtYXgocy50 KSkKKyAgZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAnJykgfHwg JycgYXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBtdWx0aWJhdGNoIAorLS0t LS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIEhhc2gg am9pbiByZXVzZXMgdGhlIEhPVCBzdGF0dXMgYml0IHRvIGluZGljYXRlIG1hdGNoIHN0YXR1cy4g VGhpcyBjYW4gb25seQorLS0gYmUgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGNvcnJlY3QgcmVzdWx0 cyBpZiBhbGwgdGhlIGhhc2ggam9pbiB0dXBsZSBtYXRjaAorLS0gYml0cyBhcmUgcmVzZXQgYmVm b3JlIHJldXNlLiBUaGlzIGlzIGRvbmUgdXBvbiBsb2FkaW5nIHRoZW0gaW50byB0aGUKKy0tIGhh c2h0YWJsZS4KK1NBVkVQT0lOVCBzZXR0aW5nczsKK1NFVCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9 IG9uOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworU0VUIHBhcmFsbGVs X3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworQ1JFQVRFIFRB QkxFIGhqdGVzdF9tYXRjaGJpdHNfdDEoaWQgaW50KTsKK0NSRUFURSBUQUJMRSBoanRlc3RfbWF0 Y2hiaXRzX3QyKGlkIGludCk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRzX3QxIFZBTFVF UyAoMSk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRzX3QyIFZBTFVFUyAoMik7CistLSBV cGRhdGUgc2hvdWxkIGNyZWF0ZSBhIEhPVCB0dXBsZS4gSWYgdGhpcyBzdGF0dXMgYml0IGlzbid0 IGNsZWFyZWQsIHdlIHdvbid0CistLSBjb3JyZWN0bHkgZW1pdCB0aGUgTlVMTC1leHRlbmRlZCB1 bm1hdGNoaW5nIHR1cGxlIGluIGZ1bGwgaGFzaCBqb2luLgorVVBEQVRFIGhqdGVzdF9tYXRjaGJp dHNfdDIgc2V0IGlkID0gMjsKK1NFTEVDVCAqIEZST00gaGp0ZXN0X21hdGNoYml0c190MSB0MSBG VUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0c190MiB0MiBPTiB0MS5pZCA9IHQyLmlkCisgIE9SREVS IEJZIHQxLmlkOworIGlkIHwgaWQgCistLS0tKy0tLS0KKyAgMSB8ICAgCisgICAgfCAgMgorKDIg cm93cykKKworLS0gVGVzdCBzZXJpYWwgZnVsbCBoYXNoIGpvaW4uCistLSBSZXNldHRpbmcgcGFy YWxsZWxfc2V0dXBfY29zdCBzaG91bGQgZm9yY2UgYSBzZXJpYWwgcGxhbi4KKy0tIEp1c3QgdG8g YmUgc2FmZSwgaG93ZXZlciwgc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoIHRvIG9mZiwgYXMgcGFy YWxsZWwgZnVsbAorLS0gaGFzaCBqb2lucyBhcmUgb25seSBzdXBwb3J0ZWQgd2l0aCBzaGFyZWQg aGFzaHRhYmxlcy4KK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitTRVQgZW5hYmxlX3BhcmFs bGVsX2hhc2ggPSBvZmY7CitTRUxFQ1QgKiBGUk9NIGhqdGVzdF9tYXRjaGJpdHNfdDEgdDEgRlVM TCBKT0lOIGhqdGVzdF9tYXRjaGJpdHNfdDIgdDIgT04gdDEuaWQgPSB0Mi5pZDsKKyBpZCB8IGlk IAorLS0tLSstLS0tCisgIDEgfCAgIAorICAgIHwgIDIKKygyIHJvd3MpCisKK1JPTExCQUNLIFRP IHNldHRpbmdzOworcm9sbGJhY2s7CistLSBWZXJpZnkgdGhhdCBoYXNoIGtleSBleHByZXNzaW9u cyByZWZlcmVuY2UgdGhlIGNvcnJlY3QKKy0tIG5vZGVzLiBIYXNoam9pbidzIGhhc2hrZXlzIG5l ZWQgdG8gcmVmZXJlbmNlIGl0cyBvdXRlciBwbGFuLCBIYXNoJ3MKKy0tIG5lZWQgdG8gcmVmZXJl bmNlIEhhc2gncyBvdXRlciBwbGFuICh3aGljaCBpcyBiZWxvdyBIYXNoSm9pbidzCistLSBpbm5l ciBwbGFuKS4gSXQncyBub3QgdHJpdmlhbCB0byB2ZXJpZnkgdGhhdCB0aGUgcmVmZXJlbmNlcyBh cmUKKy0tIGNvcnJlY3QgKHdlIGRvbid0IGRpc3BsYXkgdGhlIGhhc2hrZXlzIHRoZW1zZWx2ZXMp LCBidXQgaWYgdGhlCistLSBoYXNoa2V5cyBjb250YWluIHN1YnBsYW4gcmVmZXJlbmNlcywgdGhv c2Ugd2lsbCBiZSBkaXNwbGF5ZWQuIEZvcmNlCistLSBzdWJwbGFucyB0byBhcHBlYXIganVzdCBh Ym91dCBldmVyeXdoZXJlLgorLS0KKy0tIEJ1ZyByZXBvcnQ6CistLSBodHRwczovL3d3dy5wb3N0 Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBUHBIZmR2R1ZlZ0ZfVEtLUmlCclNtYXRKTDJkUjl1d0ZD dVIlMkJ0ZVFfOHRFWFU4bXhnJTQwbWFpbC5nbWFpbC5jb20KKy0tCitCRUdJTjsKK1NFVCBMT0NB TCBlbmFibGVfc29ydCA9IE9GRjsgLS0gYXZvaWQgbWVyZ2Vqb2lucworU0VUIExPQ0FMIGZyb21f Y29sbGFwc2VfbGltaXQgPSAxOyAtLSBhbGxvd3MgZWFzeSBjaGFuZ2luZyBvZiBqb2luIG9yZGVy CitDUkVBVEUgVEFCTEUgaGp0ZXN0XzEgKGEgdGV4dCwgYiBpbnQsIGlkIGludCwgYyBib29sKTsK K0NSRUFURSBUQUJMRSBoanRlc3RfMiAoYSBib29sLCBpZCBpbnQsIGIgdGV4dCwgYyBpbnQpOwor SU5TRVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAyLCAxLCBm YWxzZSk7IC0tIG1hdGNoZXMKK0lOU0VSVCBJTlRPIGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxV RVMgKCd0ZXh0JywgMSwgMiwgZmFsc2UpOyAtLSBmYWlscyBpZCBqb2luIGNvbmRpdGlvbgorSU5T RVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAyMCwgMSwgZmFs c2UpOyAtLSBmYWlscyA8IDUwCitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBiLCBpZCwgYykgVkFM VUVTICgndGV4dCcsIDEsIDEsIGZhbHNlKTsgLS0gZmFpbHMgKFNFTEVDVCBoanRlc3RfMS5iICog NSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBi LCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVyJywgMik7IC0tIG1hdGNoZXMKK0lOU0VSVCBJ TlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDMsICdhbm90aGVyJywgNyk7 IC0tIGZhaWxzIGlkIGpvaW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwg YiwgYykgVkFMVUVTICh0cnVlLCAxLCAnYW5vdGhlcicsIDkwKTsgIC0tIGZhaWxzIDwgNTUKK0lO U0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVy JywgMyk7IC0tIGZhaWxzIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3Rf Mi5jKjUpCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAx LCAndGV4dCcsIDEpOyAtLSAgZmFpbHMgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworRVhQTEFJ TiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEg YTIsaGp0ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVn Y2xhc3MgdDIKK0ZST00gaGp0ZXN0XzEsIGhqdGVzdF8yCitXSEVSRQorICAgIGhqdGVzdF8xLmlk ID0gKFNFTEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMS5iICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMS5iICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1Cisg ICAgQU5EIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgSGFzaCBKb2luCisgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8yLmEsIChoanRlc3Rf MS50YWJsZW9pZCk6OnJlZ2NsYXNzLCAoaGp0ZXN0XzIudGFibGVvaWQpOjpyZWdjbGFzcworICAg SGFzaCBDb25kOiAoKGhqdGVzdF8xLmlkID0gKFN1YlBsYW4gZXhwcl8xKSkgQU5EICgoU3ViUGxh biBleHByXzIpID0gKFN1YlBsYW4gZXhwcl8zKSkpCisgICBKb2luIEZpbHRlcjogKGhqdGVzdF8x LmEgPD4gaGp0ZXN0XzIuYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaGp0ZXN0XzEKKyAg ICAgICAgIE91dHB1dDogaGp0ZXN0XzEuYSwgaGp0ZXN0XzEudGFibGVvaWQsIGhqdGVzdF8xLmlk LCBoanRlc3RfMS5iCisgICAgICAgICBGaWx0ZXI6ICgoU3ViUGxhbiBleHByXzQpIDwgNTApCisg ICAgICAgICBTdWJQbGFuIGV4cHJfNAorICAgICAgICAgICAtPiAgUmVzdWx0CisgICAgICAgICAg ICAgICAgIE91dHB1dDogKGhqdGVzdF8xLmIgKiA1KQorICAgLT4gIEhhc2gKKyAgICAgICAgIE91 dHB1dDogaGp0ZXN0XzIuYSwgaGp0ZXN0XzIudGFibGVvaWQsIGhqdGVzdF8yLmlkLCBoanRlc3Rf Mi5jLCBoanRlc3RfMi5iCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmhqdGVzdF8y CisgICAgICAgICAgICAgICBPdXRwdXQ6IGhqdGVzdF8yLmEsIGhqdGVzdF8yLnRhYmxlb2lkLCBo anRlc3RfMi5pZCwgaGp0ZXN0XzIuYywgaGp0ZXN0XzIuYgorICAgICAgICAgICAgICAgRmlsdGVy OiAoKFN1YlBsYW4gZXhwcl81KSA8IDU1KQorICAgICAgICAgICAgICAgU3ViUGxhbiBleHByXzUK KyAgICAgICAgICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IChoanRlc3RfMi5jICogNSkKKyAgICAgICAgIFN1YlBsYW4gZXhwcl8xCisgICAgICAgICAg IC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAxCisgICAgICAgICAgICAgICAg IE9uZS1UaW1lIEZpbHRlcjogKGhqdGVzdF8yLmlkID0gMSkKKyAgICAgICAgIFN1YlBsYW4gZXhw cl8zCisgICAgICAgICAgIC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0 ZXN0XzIuYyAqIDUpCisgICBTdWJQbGFuIGV4cHJfMgorICAgICAtPiAgUmVzdWx0CisgICAgICAg ICAgIE91dHB1dDogKGhqdGVzdF8xLmIgKiA1KQorKDI4IHJvd3MpCisKK1NFTEVDVCBoanRlc3Rf MS5hIGExLCBoanRlc3RfMi5hIGEyLGhqdGVzdF8xLnRhYmxlb2lkOjpyZWdjbGFzcyB0MSwgaGp0 ZXN0XzIudGFibGVvaWQ6OnJlZ2NsYXNzIHQyCitGUk9NIGhqdGVzdF8xLCBoanRlc3RfMgorV0hF UkUKKyAgICBoanRlc3RfMS5pZCA9IChTRUxFQ1QgMSBXSEVSRSBoanRlc3RfMi5pZCA9IDEpCisg ICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3RfMi5jKjUpCisg ICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpIDwgNTAKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMi5jICogNSkgPCA1NQorICAgIEFORCBoanRlc3RfMS5hIDw+IGhqdGVzdF8yLmI7CisgIGEx ICB8IGEyIHwgICAgdDEgICAgfCAgICB0MiAgICAKKy0tLS0tLSstLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHRleHQgfCB0ICB8IGhqdGVzdF8xIHwgaGp0ZXN0XzIKKygxIHJvdykKKworRVhQ TEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8y LmEgYTIsaGp0ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6 cmVnY2xhc3MgdDIKK0ZST00gaGp0ZXN0XzIsIGhqdGVzdF8xCitXSEVSRQorICAgIGhqdGVzdF8x LmlkID0gKFNFTEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBo anRlc3RfMS5iICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBo anRlc3RfMS5iICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1 CisgICAgQU5EIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgSGFzaCBKb2luCisgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8yLmEsIChoanRl c3RfMS50YWJsZW9pZCk6OnJlZ2NsYXNzLCAoaGp0ZXN0XzIudGFibGVvaWQpOjpyZWdjbGFzcwor ICAgSGFzaCBDb25kOiAoKChTdWJQbGFuIGV4cHJfMSkgPSBoanRlc3RfMS5pZCkgQU5EICgoU3Vi UGxhbiBleHByXzMpID0gKFN1YlBsYW4gZXhwcl8yKSkpCisgICBKb2luIEZpbHRlcjogKGhqdGVz dF8xLmEgPD4gaGp0ZXN0XzIuYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaGp0ZXN0XzIK KyAgICAgICAgIE91dHB1dDogaGp0ZXN0XzIuYSwgaGp0ZXN0XzIudGFibGVvaWQsIGhqdGVzdF8y LmlkLCBoanRlc3RfMi5jLCBoanRlc3RfMi5iCisgICAgICAgICBGaWx0ZXI6ICgoU3ViUGxhbiBl eHByXzUpIDwgNTUpCisgICAgICAgICBTdWJQbGFuIGV4cHJfNQorICAgICAgICAgICAtPiAgUmVz dWx0CisgICAgICAgICAgICAgICAgIE91dHB1dDogKGhqdGVzdF8yLmMgKiA1KQorICAgLT4gIEhh c2gKKyAgICAgICAgIE91dHB1dDogaGp0ZXN0XzEuYSwgaGp0ZXN0XzEudGFibGVvaWQsIGhqdGVz dF8xLmlkLCBoanRlc3RfMS5iCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmhqdGVz dF8xCisgICAgICAgICAgICAgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8xLnRhYmxlb2lk LCBoanRlc3RfMS5pZCwgaGp0ZXN0XzEuYgorICAgICAgICAgICAgICAgRmlsdGVyOiAoKFN1YlBs YW4gZXhwcl80KSA8IDUwKQorICAgICAgICAgICAgICAgU3ViUGxhbiBleHByXzQKKyAgICAgICAg ICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IChoanRl c3RfMS5iICogNSkKKyAgICAgICAgIFN1YlBsYW4gZXhwcl8yCisgICAgICAgICAgIC0+ICBSZXN1 bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0ZXN0XzEuYiAqIDUpCisgICBTdWJQbGFu IGV4cHJfMQorICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogMQorICAgICAgICAg ICBPbmUtVGltZSBGaWx0ZXI6IChoanRlc3RfMi5pZCA9IDEpCisgICBTdWJQbGFuIGV4cHJfMwor ICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogKGhqdGVzdF8yLmMgKiA1KQorKDI4 IHJvd3MpCisKK1NFTEVDVCBoanRlc3RfMS5hIGExLCBoanRlc3RfMi5hIGEyLGhqdGVzdF8xLnRh Ymxlb2lkOjpyZWdjbGFzcyB0MSwgaGp0ZXN0XzIudGFibGVvaWQ6OnJlZ2NsYXNzIHQyCitGUk9N IGhqdGVzdF8yLCBoanRlc3RfMQorV0hFUkUKKyAgICBoanRlc3RfMS5pZCA9IChTRUxFQ1QgMSBX SEVSRSBoanRlc3RfMi5pZCA9IDEpCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0g KFNFTEVDVCBoanRlc3RfMi5jKjUpCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpIDwg NTAKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMi5jICogNSkgPCA1NQorICAgIEFORCBoanRlc3Rf MS5hIDw+IGhqdGVzdF8yLmI7CisgIGExICB8IGEyIHwgICAgdDEgICAgfCAgICB0MiAgICAKKy0t LS0tLSstLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRleHQgfCB0ICB8IGhqdGVzdF8xIHwg aGp0ZXN0XzIKKygxIHJvdykKKworUk9MTEJBQ0s7CistLSBWZXJpZnkgdGhhdCB3ZSBiZWhhdmUg c2FuZWx5IHdoZW4gdGhlIGlubmVyIGhhc2gga2V5cyBjb250YWluIHBhcmFtZXRlcnMKKy0tICh0 aGF0IGlzLCBvdXRlciBvciBsYXRlcmFsIHJlZmVyZW5jZXMpLiAgVGhpcyBzaXR1YXRpb24gaGFz IHRvIGRlZmVhdAorLS0gcmUtdXNlIG9mIHRoZSBpbm5lciBoYXNoIHRhYmxlIGFjcm9zcyByZXNj YW5zLgorYmVnaW47CitzZXQgbG9jYWwgZW5hYmxlX2hhc2hqb2luID0gb247CitleHBsYWluIChj b3N0cyBvZmYpCitzZWxlY3QgaTgucTIsIHNzLiogZnJvbQoraW50OF90YmwgaTgsCitsYXRlcmFs IChzZWxlY3QgdDEuZml2ZXRob3VzLCBpNC5mMSBmcm9tIHRlbmsxIHQxIGpvaW4gaW50NF90Ymwg aTQKKyAgICAgICAgIG9uIHQxLmZpdmV0aG91cyA9IGk0LmYxK2k4LnEyIG9yZGVyIGJ5IDEsMikg c3M7CisgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgLT4gIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4 CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IHQxLmZpdmV0aG91cywgaTQuZjEKKyAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmZpdmV0 aG91cyA9IChpNC5mMSArIGk4LnEyKSkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0 ZW5rMSB0MQorICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBpbnQ0X3RibCBpNAorKDkgcm93cykKKworc2VsZWN0IGk4LnEyLCBzcy4q IGZyb20KK2ludDhfdGJsIGk4LAorbGF0ZXJhbCAoc2VsZWN0IHQxLmZpdmV0aG91cywgaTQuZjEg ZnJvbSB0ZW5rMSB0MSBqb2luIGludDRfdGJsIGk0CisgICAgICAgICBvbiB0MS5maXZldGhvdXMg PSBpNC5mMStpOC5xMiBvcmRlciBieSAxLDIpIHNzOworIHEyICB8IGZpdmV0aG91cyB8IGYxIAor LS0tLS0rLS0tLS0tLS0tLS0rLS0tLQorIDQ1NiB8ICAgICAgIDQ1NiB8ICAwCisgNDU2IHwgICAg ICAgNDU2IHwgIDAKKyAxMjMgfCAgICAgICAxMjMgfCAgMAorIDEyMyB8ICAgICAgIDEyMyB8ICAw CisoNCByb3dzKQorCityb2xsYmFjazsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvam9pbl9oYXNoX3BnbHoub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2lu X2hhc2hfcGdsei5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM2 YWU1ZTI1NWQyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luX2hhc2hfcGdsei5vdXQKQEAgLTAsMCArMSwxMTY3IEBACistLQorLS0gZXhlcmNpc2VzIGZv ciB0aGUgaGFzaCBqb2luIGNvZGUKKy0tCitiZWdpbjsKK3NldCBsb2NhbCBtaW5fcGFyYWxsZWxf dGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBsb2NhbCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsK K3NldCBsb2NhbCBlbmFibGVfaGFzaGpvaW4gPSBvbjsKK3NldCBsb2NhbCB0ZW1wX2ZpbGVfY29t cHJlc3Npb24gPSAncGdseic7CistLSBFeHRyYWN0IGJ1Y2tldCBhbmQgYmF0Y2ggY291bnRzIGZy b20gYW4gZXhwbGFpbiBhbmFseXplIHBsYW4uICBJbgorLS0gZ2VuZXJhbCB3ZSBjYW4ndCBtYWtl IGFzc2VydGlvbnMgYWJvdXQgaG93IG1hbnkgYmF0Y2hlcyAob3IKKy0tIGJ1Y2tldHMpIHdpbGwg YmUgcmVxdWlyZWQgYmVjYXVzZSBpdCBjYW4gdmFyeSwgYnV0IHdlIGNhbiBpbiBzb21lCistLSBz cGVjaWFsIGNhc2VzIGFuZCB3ZSBjYW4gY2hlY2sgZm9yIGdyb3d0aC4KK2NyZWF0ZSBvciByZXBs YWNlIGZ1bmN0aW9uIGZpbmRfaGFzaChub2RlIGpzb24pCityZXR1cm5zIGpzb24gbGFuZ3VhZ2Ug cGxwZ3NxbAorYXMKKyQkCitkZWNsYXJlCisgIHgganNvbjsKKyAgY2hpbGQganNvbjsKK2JlZ2lu CisgIGlmIG5vZGUtPj4nTm9kZSBUeXBlJyA9ICdIYXNoJyB0aGVuCisgICAgcmV0dXJuIG5vZGU7 CisgIGVsc2UKKyAgICBmb3IgY2hpbGQgaW4gc2VsZWN0IGpzb25fYXJyYXlfZWxlbWVudHMobm9k ZS0+J1BsYW5zJykKKyAgICBsb29wCisgICAgICB4IDo9IGZpbmRfaGFzaChjaGlsZCk7CisgICAg ICBpZiB4IGlzIG5vdCBudWxsIHRoZW4KKyAgICAgICAgcmV0dXJuIHg7CisgICAgICBlbmQgaWY7 CisgICAgZW5kIGxvb3A7CisgICAgcmV0dXJuIG51bGw7CisgIGVuZCBpZjsKK2VuZDsKKyQkOwor Y3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gaGFzaF9qb2luX2JhdGNoZXMocXVlcnkgdGV4dCkK K3JldHVybnMgdGFibGUgKG9yaWdpbmFsIGludCwgZmluYWwgaW50KSBsYW5ndWFnZSBwbHBnc3Fs CithcworJCQKK2RlY2xhcmUKKyAgd2hvbGVfcGxhbiBqc29uOworICBoYXNoX25vZGUganNvbjsK K2JlZ2luCisgIGZvciB3aG9sZV9wbGFuIGluCisgICAgZXhlY3V0ZSAnZXhwbGFpbiAoYW5hbHl6 ZSwgZm9ybWF0ICcnanNvbicnKSAnIHx8IHF1ZXJ5CisgIGxvb3AKKyAgICBoYXNoX25vZGUgOj0g ZmluZF9oYXNoKGpzb25fZXh0cmFjdF9wYXRoKHdob2xlX3BsYW4sICcwJywgJ1BsYW4nKSk7Cisg ICAgb3JpZ2luYWwgOj0gaGFzaF9ub2RlLT4+J09yaWdpbmFsIEhhc2ggQmF0Y2hlcyc7CisgICAg ZmluYWwgOj0gaGFzaF9ub2RlLT4+J0hhc2ggQmF0Y2hlcyc7CisgICAgcmV0dXJuIG5leHQ7Cisg IGVuZCBsb29wOworZW5kOworJCQ7CistLSBNYWtlIGEgc2ltcGxlIHJlbGF0aW9uIHdpdGggd2Vs bCBkaXN0cmlidXRlZCBrZXlzIGFuZCBjb3JyZWN0bHkKKy0tIGVzdGltYXRlZCBzaXplLgorY3Jl YXRlIHRhYmxlIHNpbXBsZSBhcworICBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBB UyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUg c2ltcGxlIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBzaW1wbGU7CistLSBN YWtlIGEgcmVsYXRpb24gd2hvc2Ugc2l6ZSB3ZSB3aWxsIHVuZGVyLWVzdGltYXRlLiAgV2Ugd2Fu dCBzdGF0cworLS0gdG8gc2F5IDEwMDAgcm93cywgYnV0IGFjdHVhbGx5IHRoZXJlIGFyZSAyMCww MDAgcm93cy4KK2NyZWF0ZSB0YWJsZSBiaWdnZXJfdGhhbl9pdF9sb29rcyBhcworICBzZWxlY3Qg Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3Mgc2V0IChhdXRv dmFjdXVtX2VuYWJsZWQgPSAnZmFsc2UnKTsKK2FsdGVyIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xv b2tzIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBiaWdnZXJfdGhhbl9pdF9s b29rczsKK3VwZGF0ZSBwZ19jbGFzcyBzZXQgcmVsdHVwbGVzID0gMTAwMCB3aGVyZSByZWxuYW1l ID0gJ2JpZ2dlcl90aGFuX2l0X2xvb2tzJzsKKy0tIE1ha2UgYSByZWxhdGlvbiB3aG9zZSBzaXpl IHdlIHVuZGVyZXN0aW1hdGUgYW5kIHRoYXQgYWxzbyBoYXMgYQorLS0ga2luZCBvZiBza2V3IHRo YXQgYnJlYWtzIG91ciBiYXRjaGluZyBzY2hlbWUuICBXZSB3YW50IHN0YXRzIHRvIHNheQorLS0g MiByb3dzLCBidXQgYWN0dWFsbHkgdGhlcmUgYXJlIDIwLDAwMCByb3dzIHdpdGggdGhlIHNhbWUg a2V5LgorY3JlYXRlIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgKGlkIGludCwgdCB0ZXh0KTsKK2Fs dGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChhdXRvdmFjdXVtX2VuYWJsZWQgPSAnZmFs c2UnKTsKK2FsdGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChwYXJhbGxlbF93b3JrZXJz ID0gMik7CithbmFseXplIGV4dHJlbWVseV9za2V3ZWQ7CitpbnNlcnQgaW50byBleHRyZW1lbHlf c2tld2VkCisgIHNlbGVjdCA0MiBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWEnCisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKTsKK3VwZGF0ZSBwZ19jbGFz cworICBzZXQgcmVsdHVwbGVzID0gMiwgcmVscGFnZXMgPSBwZ19yZWxhdGlvbl9zaXplKCdleHRy ZW1lbHlfc2tld2VkJykgLyA4MTkyCisgIHdoZXJlIHJlbG5hbWUgPSAnZXh0cmVtZWx5X3NrZXdl ZCc7CistLSBNYWtlIGEgcmVsYXRpb24gd2l0aCBhIGNvdXBsZSBvZiBlbm9ybW91cyB0dXBsZXMu CitjcmVhdGUgdGFibGUgd2lkZSBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGFzIGlk LCBycGFkKCcnLCAzMjAwMDAsICd4JykgYXMgdDsKK2FsdGVyIHRhYmxlIHdpZGUgc2V0IChwYXJh bGxlbF93b3JrZXJzID0gMik7CistLSBUaGUgIm9wdGltYWwiIGNhc2U6IHRoZSBoYXNoIHRhYmxl IGZpdHMgaW4gbWVtb3J5OyB3ZSBwbGFuIGZvciAxCistLSBiYXRjaCwgd2Ugc3RpY2sgdG8gdGhh dCBudW1iZXIsIGFuZCBwZWFrIG1lbW9yeSB1c2FnZSBzdGF5cyB3aXRoaW4KKy0tIG91ciB3b3Jr X21lbSBidWRnZXQKKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxv Y2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtf bWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxh aW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1w bGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQor ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0t LS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxs eV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZy b20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUg ciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2gg fCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCityb2xsYmFjayB0 byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9p bgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Bl cl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFz aF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9 IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4g IEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlh bCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBz CisoOSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBz IHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0 IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBh cyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2Vs ZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQp OworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAgICAgICAgICAgICAgICAgICB8 IGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBh cmFsbGVsLWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0g JzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBl bmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3Qg Y291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJz IFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNj YW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxl IHMKKyg5IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxl IHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxl Y3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFs IGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBz ZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7Cisk JCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAg IHwgZgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIFRoZSAiZ29vZCIgY2Fz ZTogYmF0Y2hlcyByZXF1aXJlZCwgYnV0IHdlIHBsYW4gdGhlIHJpZ2h0IG51bWJlcjsgd2UKKy0t IHBsYW4gZm9yIHNvbWUgbnVtYmVyIG9mIGJhdGNoZXMsIGFuZCB3ZSBzdGljayB0byB0aGF0IG51 bWJlciwgYW5kCistLSBwZWFrIG1lbW9yeSB1c2FnZSBzYXlzIHdpdGhpbiBvdXIgd29ya19tZW0g YnVkZ2V0CistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21lbSA9 ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4g KGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUg cyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAg LT4gIEhhc2ggSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0t LS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9t dWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20g aGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBq b2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBp bmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLQorIHQgICAgICAgICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCityb2xsYmFjayB0byBz ZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgor c2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNo X21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0g b2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUg ciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAg R2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFs IEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAg UGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMK Kyg5IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qg b3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFz IGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7 CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgICAgICAgICAgIHwg ZgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFy YWxsZWwtYXdhcmUgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29ya19tZW0gPSAn MTkya0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwg ZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2Vy cyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBT Y2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBs ZSBzCisoOSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBs ZSBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2Vs ZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5h bCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAg c2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOwor JCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICAgICAgICAg ICB8IGYKKygxIHJvdykKKworLS0gcGFyYWxsZWwgZnVsbCBtdWx0aS1iYXRjaCBoYXNoIGpvaW4K K3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1 c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNr IHRvIHNldHRpbmdzOworLS0gVGhlICJiYWQiIGNhc2U6IGR1cmluZyBleGVjdXRpb24gd2UgbmVl ZCB0byBpbmNyZWFzZSBudW1iZXIgb2YKKy0tIGJhdGNoZXM7IGluIHRoaXMgY2FzZSB3ZSBwbGFu IGZvciAxIGJhdGNoLCBhbmQgaW5jcmVhc2UgYXQgbGVhc3QgYQorLS0gY291cGxlIG9mIHRpbWVz LCBhbmQgcGVhayBtZW1vcnkgdXNhZ2Ugc3RheXMgd2l0aGluIG91ciB3b3JrX21lbQorLS0gYnVk Z2V0CistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcx MjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNv c3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIEZST00gc2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhh bl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g c2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gYmlnZ2VyX3RoYW5faXRfbG9va3MgcworKDYgcm93cykKKworc2VsZWN0IGNvdW50KCopIEZS T00gc2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CisgY291 bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBp bml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hl cworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIEZST00g c2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CiskJCk7Cisg aW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgdAor KDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxs ZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0g JzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2Fs IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNp bmcgKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAt PiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0 aWFsIEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYmlnZ2Vy X3RoYW5faXRfbG9va3MgcworKDkgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0t LS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlf bXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9t IGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIg am9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5 X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQor Cityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUg aGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dv cmtlcnNfcGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTkya0InOworc2V0 IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFs bGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQor ICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAxCisgICAgICAgICAtPiAg UGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAg ICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMKKyg5IHJvd3Mp CisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9v a3MgcyB1c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3Nl bGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2lu YWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisg IHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3Mg cyB1c2luZyAoaWQpOworJCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2Jh dGNoZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAg ICAgICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7Cist LSBUaGUgInVnbHkiIGNhc2U6IGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBiYXRjaGVzIGR1cmlu ZyBleGVjdXRpb24KKy0tIGRvZXNuJ3QgaGVscCwgc28gc3RvcCB0cnlpbmcgdG8gZml0IGluIHdv cmtfbWVtIGFuZCBob3BlIGZvciB0aGUKKy0tIGJlc3Q7IGluIHRoaXMgY2FzZSB3ZSBwbGFuIGZv ciAxIGJhdGNoLCBpbmNyZWFzZXMganVzdCBvbmNlIGFuZAorLS0gdGhlbiBzdG9wIGluY3JlYXNp bmcgYmVjYXVzZSB0aGF0IGRpZG4ndCBoZWxwIGF0IGFsbCwgc28gd2UgYmxvdworLS0gcmlnaHQg dGhyb3VnaCB0aGUgd29ya19tZW0gYnVkZ2V0IGFuZCBob3BlIGZvciB0aGUgYmVzdC4uLgorLS0g bm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVs X3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOwor c2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYp CisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBz IHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgIEhhc2ggQ29uZDogKHIu aWQgPSBzLmlkKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGV4dHJlbWVseV9za2V3ZWQg cworKDYgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1l bHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93 KQorCitzZWxlY3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50 KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQk KTsKKyBvcmlnaW5hbCB8IGZpbmFsIAorLS0tLS0tLS0tLSstLS0tLS0tCisgICAgICAgIDEgfCAg ICAgMgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGgg cGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxv Y2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtf bWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0 IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1 c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJz IFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2Fu IG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIGV4dHJlbWVseV9za2V3ZWQgcworKDggcm93cykKKworc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlk KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIGhh c2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9p biBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBvcmlnaW5hbCB8IGZpbmFs IAorLS0tLS0tLS0tLSstLS0tLS0tCisgICAgICAgIDEgfCAgICAgMgorKDEgcm93KQorCityb2xs YmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUgaGFzaCBq b2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOworc2V0IGxvY2Fs IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hh c2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2lt cGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVk OiAxCisgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAgICAgICBIYXNo IENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2Nh biBvbiBzaW1wbGUgcgorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBleHRyZW1lbHlfc2tld2VkIHMK Kyg4IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5 X3NrZXdlZCBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykK Kworc2VsZWN0ICogZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7 Cisgb3JpZ2luYWwgfCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0tLQorICAgICAgICAxIHwgICAg IDQKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBBIGNvdXBsZSBvZiBvdGhl ciBoYXNoIGpvaW4gdGVzdHMgdW5yZWxhdGVkIHRvIHdvcmtfbWVtIG1hbmFnZW1lbnQuCistLSBD aGVjayB0aGF0IEVYUExBSU4gQU5BTFlaRSBoYXMgZGF0YSBldmVuIGlmIHRoZSBsZWFkZXIgZG9l c24ndCBwYXJ0aWNpcGF0ZQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7 CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBwYXJhbGxl bF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2Jh dGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBz IHVzaW5nIChpZCk7CiskJCk7Cisgb3JpZ2luYWwgfCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0t LQorICAgICAgICAxIHwgICAgIDEKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7Cist LSBFeGVyY2lzZSByZXNjYW5zLiAgV2UnbGwgdHVybiBvZmYgcGFyYWxsZWxfbGVhZGVyX3BhcnRp Y2lwYXRpb24gc28KKy0tIHRoYXQgd2UgY2FuIGNoZWNrIHRoYXQgaW5zdHJ1bWVudGF0aW9uIGNv bWVzIGJhY2sgY29ycmVjdGx5LgorY3JlYXRlIHRhYmxlIGpvaW5fZm9vIGFzIHNlbGVjdCBnZW5l cmF0ZV9zZXJpZXMoMSwgMykgYXMgaWQsICd4eHh4eCc6OnRleHQgYXMgdDsKK2FsdGVyIHRhYmxl IGpvaW5fZm9vIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDApOworY3JlYXRlIHRhYmxlIGpvaW5f YmFyIGFzIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDApIGFzIGlkLCAneHh4eHgnOjp0 ZXh0IGFzIHQ7CithbHRlciB0YWJsZSBqb2luX2JhciBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAy KTsKK2FuYWx5emUgam9pbl9mb28sIGpvaW5fYmFyOworLS0gbXVsdGktYmF0Y2ggd2l0aCByZXNj YW4sIHBhcmFsbGVsLW9ibGl2aW91cworc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9w YXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0g b2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworc2V0IHBhcmFsbGVs X3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworc2V0IG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9tYXRlcmlhbCA9IG9m ZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVtID0gJzY0a0InOwor c2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNl bGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQs IGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisg ICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAx OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAgICAgICAgIEpv aW4gRmlsdGVyOiAoKGpvaW5fZm9vLmlkIDwgKGIxLmlkICsgMSkpIEFORCAoam9pbl9mb28uaWQg PiAoYjEuaWQgLSAxKSkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gam9pbl9mb28KKyAgICAg ICAgIC0+ICBHYXRoZXIKKyAgICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo YjEuaWQgPSBiMi5pZCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2Nh biBvbiBqb2luX2JhciBiMQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBqb2luX2JhciBiMgorKDExIHJvd3Mp CisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIx LmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBz cworICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAt IDE7CisgY291bnQgCistLS0tLS0tCisgICAgIDMKKygxIHJvdykKKworc2VsZWN0IGZpbmFsID4g MSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3Qg Y291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50 IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9u IGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQk KTsKKyBtdWx0aWJhdGNoIAorLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0 byBzZXR0aW5nczsKKy0tIHNpbmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtb2JsaXZp b3VzCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7 CitzZXQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFs bGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7Citz ZXQgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDI7CitzZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJn ZWpvaW4gPSBvZmY7CitzZXQgd29ya19tZW0gPSAnNE1CJzsKK3NldCBoYXNoX21lbV9tdWx0aXBs aWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBq b2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIg YjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwg c3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAt PiAgTmVzdGVkIExvb3AgTGVmdCBKb2luCisgICAgICAgICBKb2luIEZpbHRlcjogKChqb2luX2Zv by5pZCA8IChiMS5pZCArIDEpKSBBTkQgKGpvaW5fZm9vLmlkID4gKGIxLmlkIC0gMSkpKQorICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIGpvaW5fZm9vCisgICAgICAgICAtPiAgR2F0aGVyCisgICAg ICAgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKGIxLmlkID0gYjIuaWQpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gam9pbl9iYXIgYjEKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gam9pbl9iYXIgYjIKKygxMSByb3dzKQorCitzZWxlY3QgY291bnQoKikg ZnJvbSBqb2luX2ZvbworICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5f YmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgb24gam9pbl9mb28uaWQg PCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworIGNvdW50IAorLS0tLS0t LQorICAgICAzCisoMSByb3cpCisKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRjaAorICBm cm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9m b28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpv aW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlk ICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7CisgbXVsdGliYXRjaCAKKy0t LS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBtdWx0 aS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0 aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOwor c2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAw Oworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9t YXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVt ID0gJzY0a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChz ZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5n IChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlk ID4gc3MuaWQgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4K KyAgICAgICAgIEpvaW4gRmlsdGVyOiAoKGpvaW5fZm9vLmlkIDwgKGIxLmlkICsgMSkpIEFORCAo am9pbl9mb28uaWQgPiAoYjEuaWQgLSAxKSkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gam9p bl9mb28KKyAgICAgICAgIC0+ICBHYXRoZXIKKyAgICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5l ZDogMgorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAoYjEuaWQgPSBiMi5pZCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBqb2luX2JhciBiMQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJh bGxlbCBTZXEgU2NhbiBvbiBqb2luX2JhciBiMgorKDExIHJvd3MpCisKK3NlbGVjdCBjb3VudCgq KSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9p bl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zvby5p ZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CisgY291bnQgCistLS0t LS0tCisgICAgIDMKKygxIHJvdykKKworc2VsZWN0IGZpbmFsID4gMSBhcyBtdWx0aWJhdGNoCisg IGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2lu X2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEg am9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3Mu aWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQkKTsKKyBtdWx0aWJhdGNoIAor LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHNp bmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5n czsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9w YXJ0aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAw Oworc2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3Qg PSAwOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJs ZV9tYXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtf bWVtID0gJzRNQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNv c3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4g KHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNp bmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28u aWQgPiBzcy5pZCAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIE5lc3RlZCBMb29wIExlZnQgSm9p bgorICAgICAgICAgSm9pbiBGaWx0ZXI6ICgoam9pbl9mb28uaWQgPCAoYjEuaWQgKyAxKSkgQU5E IChqb2luX2Zvby5pZCA+IChiMS5pZCAtIDEpKSkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBq b2luX2ZvbworICAgICAgICAgLT4gIEdhdGhlcgorICAgICAgICAgICAgICAgV29ya2VycyBQbGFu bmVkOiAyCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICBIYXNoIENvbmQ6IChiMS5pZCA9IGIyLmlkKQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIxCisgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBh cmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIyCisoMTEgcm93cykKKworc2VsZWN0IGNvdW50 KCopIGZyb20gam9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBq b2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9v LmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyBjb3VudCAKKy0t LS0tLS0KKyAgICAgMworKDEgcm93KQorCitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gK KyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpv aW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBi MSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBz cy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQpOworIG11bHRpYmF0Y2gg CistLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0g QSBmdWxsIG91dGVyIGpvaW4gd2hlcmUgZXZlcnkgcmVjb3JkIGlzIG1hdGNoZWQuCistLSBub24t cGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29y a2Vyc19wZXJfZ2F0aGVyID0gMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp OworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEhhc2ggRnVs bCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBzaW1wbGUgcgorICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworKDYgcm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9t IHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworIGNvdW50IAor LS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gcGFy YWxsZWxpc20gbm90IHBvc3NpYmxlIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGZ1bGwgaGFzaCBq b2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7 CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitleHBsYWlu IChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91 dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNoIEZ1bGwgSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAo ci5pZCA9IHMuaWQpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJv d3MpCisKK3NlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2lt cGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCity b2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxlIHdpdGggcGFy YWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2Nh bCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9m ZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBz aW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAg LT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFy dGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEZ1bGwgSm9p bgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAg ICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg5IHJvd3MpCisKK3NlbGVjdCAg Y291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlk KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0 aW5nczsKKy0tIEEgZnVsbCBvdXRlciBqb2luIHdoZXJlIGV2ZXJ5IHJlY29yZCBpcyBub3QgbWF0 Y2hlZC4KKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBs ZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFn Z3JlZ2F0ZQorICAgLT4gIEhhc2ggRnVsbCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICgoMCAt IHMuaWQpID0gci5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorKDYg cm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBz aW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyA0MDAwMAor KDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIG5vdCBwb3Nz aWJsZSB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBmdWxsIGhhc2ggam9pbgorc2F2ZXBvaW50IHNl dHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IGxvY2FsIG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAg ICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBz IG9uIChyLmlkID0gMCAtIHMuaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEhhc2ggRnVsbCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICgoMCAtIHMu aWQpID0gci5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorKDYgcm93 cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1w bGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyA0MDAwMAorKDEg cm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxl IHdpdGggcGFyYWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4g KGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0 ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5h bGl6ZSBBZ2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDog MgorICAgICAgICAgLT4gIFBhcnRpYWwgQWdncmVnYXRlCisgICAgICAgICAgICAgICAtPiAgUGFy YWxsZWwgSGFzaCBGdWxsIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKCgw IC0gcy5pZCkgPSByLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBT Y2FuIG9uIHNpbXBsZSBzCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBs ZSByCisoOSByb3dzKQorCitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRl ciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworIGNvdW50IAorLS0tLS0tLQor IDQwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gZXhlcmNpc2Ugc3Bl Y2lhbCBjb2RlIHBhdGhzIGZvciBodWdlIHR1cGxlcyAobm90ZSB1c2Ugb2Ygbm9uLXN0cmljdAor LS0gZXhwcmVzc2lvbiBhbmQgbGVmdCBqb2luIHJlcXVpcmVkIHRvIGdldCB0aGUgZGV0b2FzdGVk IHR1cGxlIGludG8KKy0tIHRoZSBoYXNoIHRhYmxlKQorLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxl bC1hd2FyZSBoYXNoIGpvaW4gKGhpdHMgRXhlY1BhcmFsbGVsSGFzaExvYWRUdXBsZSBhbmQKKy0t IHN0c19wdXR0dXBsZSBvdmVyc2l6ZWQgdHVwbGUgY2FzZXMgYmVjYXVzZSBpdCdzIG11bHRpLWJh dGNoKQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAyOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitzZXQgd29ya19tZW0g PSAnMTI4a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBsZW5ndGgobWF4KHMudCkpCisgIGZyb20gd2lkZSBsZWZ0IGpvaW4g KHNlbGVjdCBpZCwgY29hbGVzY2UodCwgJycpIHx8ICcnIGFzIHQgZnJvbSB3aWRlKSBzIHVzaW5n IChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAgR2F0 aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggTGVmdCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh3aWRlLmlkID0gd2lkZV8xLmlkKQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHdpZGUKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gd2lkZSB3aWRlXzEKKyg5IHJvd3MpCisKK3NlbGVjdCBs ZW5ndGgobWF4KHMudCkpCitmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxlc2Nl KHQsICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworIGxlbmd0aCAKKy0t LS0tLS0tCisgMzIwMDAwCisoMSByb3cpCisKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRj aAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGxlbmd0aChtYXgocy50 KSkKKyAgZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAnJykgfHwg JycgYXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBtdWx0aWJhdGNoIAorLS0t LS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIEhhc2gg am9pbiByZXVzZXMgdGhlIEhPVCBzdGF0dXMgYml0IHRvIGluZGljYXRlIG1hdGNoIHN0YXR1cy4g VGhpcyBjYW4gb25seQorLS0gYmUgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGNvcnJlY3QgcmVzdWx0 cyBpZiBhbGwgdGhlIGhhc2ggam9pbiB0dXBsZSBtYXRjaAorLS0gYml0cyBhcmUgcmVzZXQgYmVm b3JlIHJldXNlLiBUaGlzIGlzIGRvbmUgdXBvbiBsb2FkaW5nIHRoZW0gaW50byB0aGUKKy0tIGhh c2h0YWJsZS4KK1NBVkVQT0lOVCBzZXR0aW5nczsKK1NFVCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9 IG9uOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworU0VUIHBhcmFsbGVs X3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworQ1JFQVRFIFRB QkxFIGhqdGVzdF9tYXRjaGJpdHNfdDEoaWQgaW50KTsKK0NSRUFURSBUQUJMRSBoanRlc3RfbWF0 Y2hiaXRzX3QyKGlkIGludCk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRzX3QxIFZBTFVF UyAoMSk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRzX3QyIFZBTFVFUyAoMik7CistLSBV cGRhdGUgc2hvdWxkIGNyZWF0ZSBhIEhPVCB0dXBsZS4gSWYgdGhpcyBzdGF0dXMgYml0IGlzbid0 IGNsZWFyZWQsIHdlIHdvbid0CistLSBjb3JyZWN0bHkgZW1pdCB0aGUgTlVMTC1leHRlbmRlZCB1 bm1hdGNoaW5nIHR1cGxlIGluIGZ1bGwgaGFzaCBqb2luLgorVVBEQVRFIGhqdGVzdF9tYXRjaGJp dHNfdDIgc2V0IGlkID0gMjsKK1NFTEVDVCAqIEZST00gaGp0ZXN0X21hdGNoYml0c190MSB0MSBG VUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0c190MiB0MiBPTiB0MS5pZCA9IHQyLmlkCisgIE9SREVS IEJZIHQxLmlkOworIGlkIHwgaWQgCistLS0tKy0tLS0KKyAgMSB8ICAgCisgICAgfCAgMgorKDIg cm93cykKKworLS0gVGVzdCBzZXJpYWwgZnVsbCBoYXNoIGpvaW4uCistLSBSZXNldHRpbmcgcGFy YWxsZWxfc2V0dXBfY29zdCBzaG91bGQgZm9yY2UgYSBzZXJpYWwgcGxhbi4KKy0tIEp1c3QgdG8g YmUgc2FmZSwgaG93ZXZlciwgc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoIHRvIG9mZiwgYXMgcGFy YWxsZWwgZnVsbAorLS0gaGFzaCBqb2lucyBhcmUgb25seSBzdXBwb3J0ZWQgd2l0aCBzaGFyZWQg aGFzaHRhYmxlcy4KK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitTRVQgZW5hYmxlX3BhcmFs bGVsX2hhc2ggPSBvZmY7CitTRUxFQ1QgKiBGUk9NIGhqdGVzdF9tYXRjaGJpdHNfdDEgdDEgRlVM TCBKT0lOIGhqdGVzdF9tYXRjaGJpdHNfdDIgdDIgT04gdDEuaWQgPSB0Mi5pZDsKKyBpZCB8IGlk IAorLS0tLSstLS0tCisgIDEgfCAgIAorICAgIHwgIDIKKygyIHJvd3MpCisKK1JPTExCQUNLIFRP IHNldHRpbmdzOworcm9sbGJhY2s7CistLSBWZXJpZnkgdGhhdCBoYXNoIGtleSBleHByZXNzaW9u cyByZWZlcmVuY2UgdGhlIGNvcnJlY3QKKy0tIG5vZGVzLiBIYXNoam9pbidzIGhhc2hrZXlzIG5l ZWQgdG8gcmVmZXJlbmNlIGl0cyBvdXRlciBwbGFuLCBIYXNoJ3MKKy0tIG5lZWQgdG8gcmVmZXJl bmNlIEhhc2gncyBvdXRlciBwbGFuICh3aGljaCBpcyBiZWxvdyBIYXNoSm9pbidzCistLSBpbm5l ciBwbGFuKS4gSXQncyBub3QgdHJpdmlhbCB0byB2ZXJpZnkgdGhhdCB0aGUgcmVmZXJlbmNlcyBh cmUKKy0tIGNvcnJlY3QgKHdlIGRvbid0IGRpc3BsYXkgdGhlIGhhc2hrZXlzIHRoZW1zZWx2ZXMp LCBidXQgaWYgdGhlCistLSBoYXNoa2V5cyBjb250YWluIHN1YnBsYW4gcmVmZXJlbmNlcywgdGhv c2Ugd2lsbCBiZSBkaXNwbGF5ZWQuIEZvcmNlCistLSBzdWJwbGFucyB0byBhcHBlYXIganVzdCBh Ym91dCBldmVyeXdoZXJlLgorLS0KKy0tIEJ1ZyByZXBvcnQ6CistLSBodHRwczovL3d3dy5wb3N0 Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBUHBIZmR2R1ZlZ0ZfVEtLUmlCclNtYXRKTDJkUjl1d0ZD dVIlMkJ0ZVFfOHRFWFU4bXhnJTQwbWFpbC5nbWFpbC5jb20KKy0tCitCRUdJTjsKK1NFVCBMT0NB TCBlbmFibGVfc29ydCA9IE9GRjsgLS0gYXZvaWQgbWVyZ2Vqb2lucworU0VUIExPQ0FMIGZyb21f Y29sbGFwc2VfbGltaXQgPSAxOyAtLSBhbGxvd3MgZWFzeSBjaGFuZ2luZyBvZiBqb2luIG9yZGVy CitDUkVBVEUgVEFCTEUgaGp0ZXN0XzEgKGEgdGV4dCwgYiBpbnQsIGlkIGludCwgYyBib29sKTsK K0NSRUFURSBUQUJMRSBoanRlc3RfMiAoYSBib29sLCBpZCBpbnQsIGIgdGV4dCwgYyBpbnQpOwor SU5TRVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAyLCAxLCBm YWxzZSk7IC0tIG1hdGNoZXMKK0lOU0VSVCBJTlRPIGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxV RVMgKCd0ZXh0JywgMSwgMiwgZmFsc2UpOyAtLSBmYWlscyBpZCBqb2luIGNvbmRpdGlvbgorSU5T RVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAyMCwgMSwgZmFs c2UpOyAtLSBmYWlscyA8IDUwCitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBiLCBpZCwgYykgVkFM VUVTICgndGV4dCcsIDEsIDEsIGZhbHNlKTsgLS0gZmFpbHMgKFNFTEVDVCBoanRlc3RfMS5iICog NSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBi LCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVyJywgMik7IC0tIG1hdGNoZXMKK0lOU0VSVCBJ TlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDMsICdhbm90aGVyJywgNyk7 IC0tIGZhaWxzIGlkIGpvaW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwg YiwgYykgVkFMVUVTICh0cnVlLCAxLCAnYW5vdGhlcicsIDkwKTsgIC0tIGZhaWxzIDwgNTUKK0lO U0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVy JywgMyk7IC0tIGZhaWxzIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3Rf Mi5jKjUpCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAx LCAndGV4dCcsIDEpOyAtLSAgZmFpbHMgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworRVhQTEFJ TiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEg YTIsaGp0ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVn Y2xhc3MgdDIKK0ZST00gaGp0ZXN0XzEsIGhqdGVzdF8yCitXSEVSRQorICAgIGhqdGVzdF8xLmlk ID0gKFNFTEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMS5iICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMS5iICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1Cisg ICAgQU5EIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgSGFzaCBKb2luCisgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8yLmEsIChoanRlc3Rf MS50YWJsZW9pZCk6OnJlZ2NsYXNzLCAoaGp0ZXN0XzIudGFibGVvaWQpOjpyZWdjbGFzcworICAg SGFzaCBDb25kOiAoKGhqdGVzdF8xLmlkID0gKFN1YlBsYW4gZXhwcl8xKSkgQU5EICgoU3ViUGxh biBleHByXzIpID0gKFN1YlBsYW4gZXhwcl8zKSkpCisgICBKb2luIEZpbHRlcjogKGhqdGVzdF8x LmEgPD4gaGp0ZXN0XzIuYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaGp0ZXN0XzEKKyAg ICAgICAgIE91dHB1dDogaGp0ZXN0XzEuYSwgaGp0ZXN0XzEudGFibGVvaWQsIGhqdGVzdF8xLmlk LCBoanRlc3RfMS5iCisgICAgICAgICBGaWx0ZXI6ICgoU3ViUGxhbiBleHByXzQpIDwgNTApCisg ICAgICAgICBTdWJQbGFuIGV4cHJfNAorICAgICAgICAgICAtPiAgUmVzdWx0CisgICAgICAgICAg ICAgICAgIE91dHB1dDogKGhqdGVzdF8xLmIgKiA1KQorICAgLT4gIEhhc2gKKyAgICAgICAgIE91 dHB1dDogaGp0ZXN0XzIuYSwgaGp0ZXN0XzIudGFibGVvaWQsIGhqdGVzdF8yLmlkLCBoanRlc3Rf Mi5jLCBoanRlc3RfMi5iCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmhqdGVzdF8y CisgICAgICAgICAgICAgICBPdXRwdXQ6IGhqdGVzdF8yLmEsIGhqdGVzdF8yLnRhYmxlb2lkLCBo anRlc3RfMi5pZCwgaGp0ZXN0XzIuYywgaGp0ZXN0XzIuYgorICAgICAgICAgICAgICAgRmlsdGVy OiAoKFN1YlBsYW4gZXhwcl81KSA8IDU1KQorICAgICAgICAgICAgICAgU3ViUGxhbiBleHByXzUK KyAgICAgICAgICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IChoanRlc3RfMi5jICogNSkKKyAgICAgICAgIFN1YlBsYW4gZXhwcl8xCisgICAgICAgICAg IC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAxCisgICAgICAgICAgICAgICAg IE9uZS1UaW1lIEZpbHRlcjogKGhqdGVzdF8yLmlkID0gMSkKKyAgICAgICAgIFN1YlBsYW4gZXhw cl8zCisgICAgICAgICAgIC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0 ZXN0XzIuYyAqIDUpCisgICBTdWJQbGFuIGV4cHJfMgorICAgICAtPiAgUmVzdWx0CisgICAgICAg ICAgIE91dHB1dDogKGhqdGVzdF8xLmIgKiA1KQorKDI4IHJvd3MpCisKK1NFTEVDVCBoanRlc3Rf MS5hIGExLCBoanRlc3RfMi5hIGEyLGhqdGVzdF8xLnRhYmxlb2lkOjpyZWdjbGFzcyB0MSwgaGp0 ZXN0XzIudGFibGVvaWQ6OnJlZ2NsYXNzIHQyCitGUk9NIGhqdGVzdF8xLCBoanRlc3RfMgorV0hF UkUKKyAgICBoanRlc3RfMS5pZCA9IChTRUxFQ1QgMSBXSEVSRSBoanRlc3RfMi5pZCA9IDEpCisg ICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3RfMi5jKjUpCisg ICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpIDwgNTAKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMi5jICogNSkgPCA1NQorICAgIEFORCBoanRlc3RfMS5hIDw+IGhqdGVzdF8yLmI7CisgIGEx ICB8IGEyIHwgICAgdDEgICAgfCAgICB0MiAgICAKKy0tLS0tLSstLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHRleHQgfCB0ICB8IGhqdGVzdF8xIHwgaGp0ZXN0XzIKKygxIHJvdykKKworRVhQ TEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8y LmEgYTIsaGp0ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6 cmVnY2xhc3MgdDIKK0ZST00gaGp0ZXN0XzIsIGhqdGVzdF8xCitXSEVSRQorICAgIGhqdGVzdF8x LmlkID0gKFNFTEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBo anRlc3RfMS5iICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBo anRlc3RfMS5iICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1 CisgICAgQU5EIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgSGFzaCBKb2luCisgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8yLmEsIChoanRl c3RfMS50YWJsZW9pZCk6OnJlZ2NsYXNzLCAoaGp0ZXN0XzIudGFibGVvaWQpOjpyZWdjbGFzcwor ICAgSGFzaCBDb25kOiAoKChTdWJQbGFuIGV4cHJfMSkgPSBoanRlc3RfMS5pZCkgQU5EICgoU3Vi UGxhbiBleHByXzMpID0gKFN1YlBsYW4gZXhwcl8yKSkpCisgICBKb2luIEZpbHRlcjogKGhqdGVz dF8xLmEgPD4gaGp0ZXN0XzIuYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaGp0ZXN0XzIK KyAgICAgICAgIE91dHB1dDogaGp0ZXN0XzIuYSwgaGp0ZXN0XzIudGFibGVvaWQsIGhqdGVzdF8y LmlkLCBoanRlc3RfMi5jLCBoanRlc3RfMi5iCisgICAgICAgICBGaWx0ZXI6ICgoU3ViUGxhbiBl eHByXzUpIDwgNTUpCisgICAgICAgICBTdWJQbGFuIGV4cHJfNQorICAgICAgICAgICAtPiAgUmVz dWx0CisgICAgICAgICAgICAgICAgIE91dHB1dDogKGhqdGVzdF8yLmMgKiA1KQorICAgLT4gIEhh c2gKKyAgICAgICAgIE91dHB1dDogaGp0ZXN0XzEuYSwgaGp0ZXN0XzEudGFibGVvaWQsIGhqdGVz dF8xLmlkLCBoanRlc3RfMS5iCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmhqdGVz dF8xCisgICAgICAgICAgICAgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8xLnRhYmxlb2lk LCBoanRlc3RfMS5pZCwgaGp0ZXN0XzEuYgorICAgICAgICAgICAgICAgRmlsdGVyOiAoKFN1YlBs YW4gZXhwcl80KSA8IDUwKQorICAgICAgICAgICAgICAgU3ViUGxhbiBleHByXzQKKyAgICAgICAg ICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IChoanRl c3RfMS5iICogNSkKKyAgICAgICAgIFN1YlBsYW4gZXhwcl8yCisgICAgICAgICAgIC0+ICBSZXN1 bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0ZXN0XzEuYiAqIDUpCisgICBTdWJQbGFu IGV4cHJfMQorICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogMQorICAgICAgICAg ICBPbmUtVGltZSBGaWx0ZXI6IChoanRlc3RfMi5pZCA9IDEpCisgICBTdWJQbGFuIGV4cHJfMwor ICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogKGhqdGVzdF8yLmMgKiA1KQorKDI4 IHJvd3MpCisKK1NFTEVDVCBoanRlc3RfMS5hIGExLCBoanRlc3RfMi5hIGEyLGhqdGVzdF8xLnRh Ymxlb2lkOjpyZWdjbGFzcyB0MSwgaGp0ZXN0XzIudGFibGVvaWQ6OnJlZ2NsYXNzIHQyCitGUk9N IGhqdGVzdF8yLCBoanRlc3RfMQorV0hFUkUKKyAgICBoanRlc3RfMS5pZCA9IChTRUxFQ1QgMSBX SEVSRSBoanRlc3RfMi5pZCA9IDEpCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0g KFNFTEVDVCBoanRlc3RfMi5jKjUpCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpIDwg NTAKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMi5jICogNSkgPCA1NQorICAgIEFORCBoanRlc3Rf MS5hIDw+IGhqdGVzdF8yLmI7CisgIGExICB8IGEyIHwgICAgdDEgICAgfCAgICB0MiAgICAKKy0t LS0tLSstLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRleHQgfCB0ICB8IGhqdGVzdF8xIHwg aGp0ZXN0XzIKKygxIHJvdykKKworUk9MTEJBQ0s7CistLSBWZXJpZnkgdGhhdCB3ZSBiZWhhdmUg c2FuZWx5IHdoZW4gdGhlIGlubmVyIGhhc2gga2V5cyBjb250YWluIHBhcmFtZXRlcnMKKy0tICh0 aGF0IGlzLCBvdXRlciBvciBsYXRlcmFsIHJlZmVyZW5jZXMpLiAgVGhpcyBzaXR1YXRpb24gaGFz IHRvIGRlZmVhdAorLS0gcmUtdXNlIG9mIHRoZSBpbm5lciBoYXNoIHRhYmxlIGFjcm9zcyByZXNj YW5zLgorYmVnaW47CitzZXQgbG9jYWwgZW5hYmxlX2hhc2hqb2luID0gb247CitleHBsYWluIChj b3N0cyBvZmYpCitzZWxlY3QgaTgucTIsIHNzLiogZnJvbQoraW50OF90YmwgaTgsCitsYXRlcmFs IChzZWxlY3QgdDEuZml2ZXRob3VzLCBpNC5mMSBmcm9tIHRlbmsxIHQxIGpvaW4gaW50NF90Ymwg aTQKKyAgICAgICAgIG9uIHQxLmZpdmV0aG91cyA9IGk0LmYxK2k4LnEyIG9yZGVyIGJ5IDEsMikg c3M7CisgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgLT4gIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4 CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IHQxLmZpdmV0aG91cywgaTQuZjEKKyAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmZpdmV0 aG91cyA9IChpNC5mMSArIGk4LnEyKSkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0 ZW5rMSB0MQorICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBpbnQ0X3RibCBpNAorKDkgcm93cykKKworc2VsZWN0IGk4LnEyLCBzcy4q IGZyb20KK2ludDhfdGJsIGk4LAorbGF0ZXJhbCAoc2VsZWN0IHQxLmZpdmV0aG91cywgaTQuZjEg ZnJvbSB0ZW5rMSB0MSBqb2luIGludDRfdGJsIGk0CisgICAgICAgICBvbiB0MS5maXZldGhvdXMg PSBpNC5mMStpOC5xMiBvcmRlciBieSAxLDIpIHNzOworIHEyICB8IGZpdmV0aG91cyB8IGYxIAor LS0tLS0rLS0tLS0tLS0tLS0rLS0tLQorIDQ1NiB8ICAgICAgIDQ1NiB8ICAwCisgNDU2IHwgICAg ICAgNDU2IHwgIDAKKyAxMjMgfCAgICAgICAxMjMgfCAgMAorIDEyMyB8ICAgICAgIDEyMyB8ICAw CisoNCByb3dzKQorCityb2xsYmFjazsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4 IDAyMWQ1N2Y2NmJiLi5lZWIwNjQwN2QxMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CkBAIC0xNSw3ICsxNSw2IEBAIHRlc3Q6IHRlc3Rfc2V0dXAKICMgVGhlIGZpcnN0IGdyb3VwIG9m IHBhcmFsbGVsIHRlc3RzCiAjIC0tLS0tLS0tLS0KIHRlc3Q6IGJvb2xlYW4gY2hhciBuYW1lIHZh cmNoYXIgdGV4dCBpbnQyIGludDQgaW50OCBvaWQgZmxvYXQ0IGZsb2F0OCBiaXQgbnVtZXJpYyB0 eGlkIHV1aWQgZW51bSBtb25leSByYW5nZXR5cGVzIHBnX2xzbiByZWdwcm9jCi0KICMgLS0tLS0t LS0tLQogIyBUaGUgc2Vjb25kIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCiAjIG11bHRpcmFuZ2V0 eXBlcyBkZXBlbmRzIG9uIHJhbmdldHlwZXMKQEAgLTE0MCwzICsxMzksNiBAQCB0ZXN0OiBmYXN0 X2RlZmF1bHQKICMgcnVuIHRhYmxlc3BhY2UgdGVzdCBhdCB0aGUgZW5kIGJlY2F1c2UgaXQgZHJv cHMgdGhlIHRhYmxlc3BhY2UgY3JlYXRlZCBkdXJpbmcKICMgc2V0dXAgdGhhdCBvdGhlciB0ZXN0 cyBtYXkgdXNlLgogdGVzdDogdGFibGVzcGFjZQorCisjIHRoaXMgdGVzdCBpcyBlcXVpdmFsZW50 IHRvIGpvaW5faGFzaCB0ZXN0IGp1c3QgdGhlIGNvbXByZXNzaW9uIGlzIGVuYWJsZWQKK3Rlc3Q6 IGpvaW5faGFzaF9wZ2x6CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luX2hh c2hfbHo0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW5faGFzaF9sejQuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43Zjc5MjQyYzMwNgotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW5faGFzaF9sejQuc3FsCkBAIC0wLDAg KzEsNjI3IEBACistLQorLS0gZXhlcmNpc2VzIGZvciB0aGUgaGFzaCBqb2luIGNvZGUKKy0tCisK K2JlZ2luOworCitzZXQgbG9jYWwgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7Citz ZXQgbG9jYWwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQgbG9jYWwgZW5hYmxlX2hhc2hq b2luID0gb247CitzZXQgbG9jYWwgdGVtcF9maWxlX2NvbXByZXNzaW9uID0gJ2x6NCc7CisKKy0t IEV4dHJhY3QgYnVja2V0IGFuZCBiYXRjaCBjb3VudHMgZnJvbSBhbiBleHBsYWluIGFuYWx5emUg cGxhbi4gIEluCistLSBnZW5lcmFsIHdlIGNhbid0IG1ha2UgYXNzZXJ0aW9ucyBhYm91dCBob3cg bWFueSBiYXRjaGVzIChvcgorLS0gYnVja2V0cykgd2lsbCBiZSByZXF1aXJlZCBiZWNhdXNlIGl0 IGNhbiB2YXJ5LCBidXQgd2UgY2FuIGluIHNvbWUKKy0tIHNwZWNpYWwgY2FzZXMgYW5kIHdlIGNh biBjaGVjayBmb3IgZ3Jvd3RoLgorY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gZmluZF9oYXNo KG5vZGUganNvbikKK3JldHVybnMganNvbiBsYW5ndWFnZSBwbHBnc3FsCithcworJCQKK2RlY2xh cmUKKyAgeCBqc29uOworICBjaGlsZCBqc29uOworYmVnaW4KKyAgaWYgbm9kZS0+PidOb2RlIFR5 cGUnID0gJ0hhc2gnIHRoZW4KKyAgICByZXR1cm4gbm9kZTsKKyAgZWxzZQorICAgIGZvciBjaGls ZCBpbiBzZWxlY3QganNvbl9hcnJheV9lbGVtZW50cyhub2RlLT4nUGxhbnMnKQorICAgIGxvb3AK KyAgICAgIHggOj0gZmluZF9oYXNoKGNoaWxkKTsKKyAgICAgIGlmIHggaXMgbm90IG51bGwgdGhl bgorICAgICAgICByZXR1cm4geDsKKyAgICAgIGVuZCBpZjsKKyAgICBlbmQgbG9vcDsKKyAgICBy ZXR1cm4gbnVsbDsKKyAgZW5kIGlmOworZW5kOworJCQ7CitjcmVhdGUgb3IgcmVwbGFjZSBmdW5j dGlvbiBoYXNoX2pvaW5fYmF0Y2hlcyhxdWVyeSB0ZXh0KQorcmV0dXJucyB0YWJsZSAob3JpZ2lu YWwgaW50LCBmaW5hbCBpbnQpIGxhbmd1YWdlIHBscGdzcWwKK2FzCiskJAorZGVjbGFyZQorICB3 aG9sZV9wbGFuIGpzb247CisgIGhhc2hfbm9kZSBqc29uOworYmVnaW4KKyAgZm9yIHdob2xlX3Bs YW4gaW4KKyAgICBleGVjdXRlICdleHBsYWluIChhbmFseXplLCBmb3JtYXQgJydqc29uJycpICcg fHwgcXVlcnkKKyAgbG9vcAorICAgIGhhc2hfbm9kZSA6PSBmaW5kX2hhc2goanNvbl9leHRyYWN0 X3BhdGgod2hvbGVfcGxhbiwgJzAnLCAnUGxhbicpKTsKKyAgICBvcmlnaW5hbCA6PSBoYXNoX25v ZGUtPj4nT3JpZ2luYWwgSGFzaCBCYXRjaGVzJzsKKyAgICBmaW5hbCA6PSBoYXNoX25vZGUtPj4n SGFzaCBCYXRjaGVzJzsKKyAgICByZXR1cm4gbmV4dDsKKyAgZW5kIGxvb3A7CitlbmQ7CiskJDsK KworLS0gTWFrZSBhIHNpbXBsZSByZWxhdGlvbiB3aXRoIHdlbGwgZGlzdHJpYnV0ZWQga2V5cyBh bmQgY29ycmVjdGx5CistLSBlc3RpbWF0ZWQgc2l6ZS4KK2NyZWF0ZSB0YWJsZSBzaW1wbGUgYXMK KyAgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAyMDAwMCkgQVMgaWQsICdhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhJzsKK2FsdGVyIHRhYmxlIHNpbXBsZSBzZXQgKHBhcmFsbGVs X3dvcmtlcnMgPSAyKTsKK2FuYWx5emUgc2ltcGxlOworCistLSBNYWtlIGEgcmVsYXRpb24gd2hv c2Ugc2l6ZSB3ZSB3aWxsIHVuZGVyLWVzdGltYXRlLiAgV2Ugd2FudCBzdGF0cworLS0gdG8gc2F5 IDEwMDAgcm93cywgYnV0IGFjdHVhbGx5IHRoZXJlIGFyZSAyMCwwMDAgcm93cy4KK2NyZWF0ZSB0 YWJsZSBiaWdnZXJfdGhhbl9pdF9sb29rcyBhcworICBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEs IDIwMDAwKSBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnOworYWx0 ZXIgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3Mgc2V0IChhdXRvdmFjdXVtX2VuYWJsZWQgPSAn ZmFsc2UnKTsKK2FsdGVyIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHNldCAocGFyYWxsZWxf d29ya2VycyA9IDIpOworYW5hbHl6ZSBiaWdnZXJfdGhhbl9pdF9sb29rczsKK3VwZGF0ZSBwZ19j bGFzcyBzZXQgcmVsdHVwbGVzID0gMTAwMCB3aGVyZSByZWxuYW1lID0gJ2JpZ2dlcl90aGFuX2l0 X2xvb2tzJzsKKworLS0gTWFrZSBhIHJlbGF0aW9uIHdob3NlIHNpemUgd2UgdW5kZXJlc3RpbWF0 ZSBhbmQgdGhhdCBhbHNvIGhhcyBhCistLSBraW5kIG9mIHNrZXcgdGhhdCBicmVha3Mgb3VyIGJh dGNoaW5nIHNjaGVtZS4gIFdlIHdhbnQgc3RhdHMgdG8gc2F5CistLSAyIHJvd3MsIGJ1dCBhY3R1 YWxseSB0aGVyZSBhcmUgMjAsMDAwIHJvd3Mgd2l0aCB0aGUgc2FtZSBrZXkuCitjcmVhdGUgdGFi bGUgZXh0cmVtZWx5X3NrZXdlZCAoaWQgaW50LCB0IHRleHQpOworYWx0ZXIgdGFibGUgZXh0cmVt ZWx5X3NrZXdlZCBzZXQgKGF1dG92YWN1dW1fZW5hYmxlZCA9ICdmYWxzZScpOworYWx0ZXIgdGFi bGUgZXh0cmVtZWx5X3NrZXdlZCBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAyKTsKK2FuYWx5emUg ZXh0cmVtZWx5X3NrZXdlZDsKK2luc2VydCBpbnRvIGV4dHJlbWVseV9za2V3ZWQKKyAgc2VsZWN0 IDQyIGFzIGlkLCAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYScKKyAgZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMjAwMDApOwordXBkYXRlIHBnX2NsYXNzCisgIHNldCByZWx0dXBs ZXMgPSAyLCByZWxwYWdlcyA9IHBnX3JlbGF0aW9uX3NpemUoJ2V4dHJlbWVseV9za2V3ZWQnKSAv IDgxOTIKKyAgd2hlcmUgcmVsbmFtZSA9ICdleHRyZW1lbHlfc2tld2VkJzsKKworLS0gTWFrZSBh IHJlbGF0aW9uIHdpdGggYSBjb3VwbGUgb2YgZW5vcm1vdXMgdHVwbGVzLgorY3JlYXRlIHRhYmxl IHdpZGUgYXMgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAyKSBhcyBpZCwgcnBhZCgnJywgMzIw MDAwLCAneCcpIGFzIHQ7CithbHRlciB0YWJsZSB3aWRlIHNldCAocGFyYWxsZWxfd29ya2VycyA9 IDIpOworCistLSBUaGUgIm9wdGltYWwiIGNhc2U6IHRoZSBoYXNoIHRhYmxlIGZpdHMgaW4gbWVt b3J5OyB3ZSBwbGFuIGZvciAxCistLSBiYXRjaCwgd2Ugc3RpY2sgdG8gdGhhdCBudW1iZXIsIGFu ZCBwZWFrIG1lbW9yeSB1c2FnZSBzdGF5cyB3aXRoaW4KKy0tIG91ciB3b3JrX21lbSBidWRnZXQK KworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3Bh cmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnNE1C JzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMg b2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5n IChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5n IChpZCk7CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5h bCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNo ZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVz aW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWwgd2l0 aCBwYXJhbGxlbC1vYmxpdmlvdXMgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQg bG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29y a19tZW0gPSAnNE1CJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0 IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9y aWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCisk JAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChp ZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWwgd2l0aCBwYXJh bGxlbC1hd2FyZSBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICc0 TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5h YmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNv dW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0IGNv dW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0IG9y aWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBp bmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQpOwor cm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIFRoZSAiZ29vZCIgY2FzZTogYmF0Y2hlcyByZXF1 aXJlZCwgYnV0IHdlIHBsYW4gdGhlIHJpZ2h0IG51bWJlcjsgd2UKKy0tIHBsYW4gZm9yIHNvbWUg bnVtYmVyIG9mIGJhdGNoZXMsIGFuZCB3ZSBzdGljayB0byB0aGF0IG51bWJlciwgYW5kCistLSBw ZWFrIG1lbW9yeSB1c2FnZSBzYXlzIHdpdGhpbiBvdXIgd29ya19tZW0gYnVkZ2V0CisKKy0tIG5v bi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93 b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3Nl dCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9y aWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCisk JAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChp ZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWwgd2l0aCBwYXJh bGxlbC1vYmxpdmlvdXMgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29ya19tZW0g PSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9j YWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNl bGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3Nl bGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3Nl bGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2lu YWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisg IHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsK KyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVs LWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzE5MmtC JzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJs ZV9wYXJhbGxlbF9oYXNoID0gb247CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBvcmln aW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5j cmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyQkKTsKKy0t IHBhcmFsbGVsIGZ1bGwgbXVsdGktYmF0Y2ggaGFzaCBqb2luCitzZWxlY3QgY291bnQoKikgZnJv bSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3JvbGxiYWNr IHRvIHNldHRpbmdzOworCistLSBUaGUgImJhZCIgY2FzZTogZHVyaW5nIGV4ZWN1dGlvbiB3ZSBu ZWVkIHRvIGluY3JlYXNlIG51bWJlciBvZgorLS0gYmF0Y2hlczsgaW4gdGhpcyBjYXNlIHdlIHBs YW4gZm9yIDEgYmF0Y2gsIGFuZCBpbmNyZWFzZSBhdCBsZWFzdCBhCistLSBjb3VwbGUgb2YgdGlt ZXMsIGFuZCBwZWFrIG1lbW9yeSB1c2FnZSBzdGF5cyB3aXRoaW4gb3VyIHdvcmtfbWVtCistLSBi dWRnZXQKKworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0g PSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWlu IChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBGUk9NIHNpbXBsZSByIEpPSU4gYmlnZ2Vy X3RoYW5faXRfbG9va3MgcyBVU0lORyAoaWQpOworc2VsZWN0IGNvdW50KCopIEZST00gc2ltcGxl IHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CitzZWxlY3Qgb3JpZ2lu YWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3Jl YXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291 bnQoKikgRlJPTSBzaW1wbGUgciBKT0lOIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgVVNJTkcgKGlk KTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbCB3aXRoIHBhcmFs bGVsLW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9 ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2Nh bCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2Vs ZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVz aW5nIChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFu X2l0X2xvb2tzIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5 X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJv bSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSBy IGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sg dG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUgaGFzaCBqb2lu CitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTkya0InOworc2V0IGxvY2FsIGhh c2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2gg PSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CitzZWxlY3QgY291bnQo KikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNpbmcgKGlkKTsK K3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3Jp Z2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQk CisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9v a3MgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIFRoZSAi dWdseSIgY2FzZTogaW5jcmVhc2luZyB0aGUgbnVtYmVyIG9mIGJhdGNoZXMgZHVyaW5nIGV4ZWN1 dGlvbgorLS0gZG9lc24ndCBoZWxwLCBzbyBzdG9wIHRyeWluZyB0byBmaXQgaW4gd29ya19tZW0g YW5kIGhvcGUgZm9yIHRoZQorLS0gYmVzdDsgaW4gdGhpcyBjYXNlIHdlIHBsYW4gZm9yIDEgYmF0 Y2gsIGluY3JlYXNlcyBqdXN0IG9uY2UgYW5kCistLSB0aGVuIHN0b3AgaW5jcmVhc2luZyBiZWNh dXNlIHRoYXQgZGlkbid0IGhlbHAgYXQgYWxsLCBzbyB3ZSBibG93CistLSByaWdodCB0aHJvdWdo IHRoZSB3b3JrX21lbSBidWRnZXQgYW5kIGhvcGUgZm9yIHRoZSBiZXN0Li4uCisKKy0tIG5vbi1w YXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3Jr ZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBs b2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBz ZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1c2lu ZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tl d2VkIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1 c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsIHdp dGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0 IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdv cmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOwor c2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2Zm KQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQg cyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1l bHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2JhdGNoZXMo CiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3 ZWQgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFs bGVsIHdpdGggcGFyYWxsZWwtYXdhcmUgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7Citz ZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwg d29ya19tZW0gPSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7 CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9m ZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2Vk IHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVt ZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CitzZWxlY3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVz KAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tl d2VkIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBBIGNv dXBsZSBvZiBvdGhlciBoYXNoIGpvaW4gdGVzdHMgdW5yZWxhdGVkIHRvIHdvcmtfbWVtIG1hbmFn ZW1lbnQuCisKKy0tIENoZWNrIHRoYXQgRVhQTEFJTiBBTkFMWVpFIGhhcyBkYXRhIGV2ZW4gaWYg dGhlIGxlYWRlciBkb2Vzbid0IHBhcnRpY2lwYXRlCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQg bG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29y a19tZW0gPSAnNE1CJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0 IGxvY2FsIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworc2VsZWN0ICogZnJv bSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSBy IGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOwor CistLSBFeGVyY2lzZSByZXNjYW5zLiAgV2UnbGwgdHVybiBvZmYgcGFyYWxsZWxfbGVhZGVyX3Bh cnRpY2lwYXRpb24gc28KKy0tIHRoYXQgd2UgY2FuIGNoZWNrIHRoYXQgaW5zdHJ1bWVudGF0aW9u IGNvbWVzIGJhY2sgY29ycmVjdGx5LgorCitjcmVhdGUgdGFibGUgam9pbl9mb28gYXMgc2VsZWN0 IGdlbmVyYXRlX3NlcmllcygxLCAzKSBhcyBpZCwgJ3h4eHh4Jzo6dGV4dCBhcyB0OworYWx0ZXIg dGFibGUgam9pbl9mb28gc2V0IChwYXJhbGxlbF93b3JrZXJzID0gMCk7CitjcmVhdGUgdGFibGUg am9pbl9iYXIgYXMgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAxMDAwMCkgYXMgaWQsICd4eHh4 eCc6OnRleHQgYXMgdDsKK2FsdGVyIHRhYmxlIGpvaW5fYmFyIHNldCAocGFyYWxsZWxfd29ya2Vy cyA9IDIpOworYW5hbHl6ZSBqb2luX2Zvbywgam9pbl9iYXI7CisKKy0tIG11bHRpLWJhdGNoIHdp dGggcmVzY2FuLCBwYXJhbGxlbC1vYmxpdmlvdXMKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBl bmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBh dGlvbiA9IG9mZjsKK3NldCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBw YXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK3NldCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK3Nl dCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBlbmFibGVfbWF0ZXJp YWwgPSBvZmY7CitzZXQgZW5hYmxlX21lcmdlam9pbiA9IG9mZjsKK3NldCB3b3JrX21lbSA9ICc2 NGtCJzsKK3NldCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2Zm KQorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0 IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQp KSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNz LmlkIC0gMTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2Vs ZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAo aWQpKSBzcworICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBz cy5pZCAtIDE7CitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gKKyAgZnJvbSBoYXNoX2pv aW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVm dCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFy IGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpv aW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0t IHNpbmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtb2JsaXZpb3VzCitzYXZlcG9pbnQg c2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitzZXQgcGFyYWxsZWxf bGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5f c2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQgcGFyYWxsZWxfdHVw bGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7Citz ZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJnZWpvaW4gPSBvZmY7Citz ZXQgd29ya19tZW0gPSAnNE1CJzsKK3NldCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhw bGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxl ZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2Jh ciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBq b2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisg IGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2lu X2JhciBiMiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQg am9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gK KyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpv aW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBi MSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBz cy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQpOworcm9sbGJhY2sgdG8g c2V0dGluZ3M7CisKKy0tIG11bHRpLWJhdGNoIHdpdGggcmVzY2FuLCBwYXJhbGxlbC1hd2FyZQor c2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitzZXQg cGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFsbGVsX3Rh YmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQgcGFy YWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhl ciA9IDI7CitzZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJnZWpvaW4g PSBvZmY7CitzZXQgd29ya19tZW0gPSAnNjRrQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGllciA9 IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9m b28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpv aW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlk ICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CitzZWxlY3QgY291bnQoKikgZnJvbSBq b2luX2ZvbworICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIx IGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgb24gam9pbl9mb28uaWQgPCBzcy5p ZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0IGZpbmFsID4gMSBhcyBt dWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQo KikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20g am9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5f Zm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQkKTsKK3Jv bGxiYWNrIHRvIHNldHRpbmdzOworCistLSBzaW5nbGUtYmF0Y2ggd2l0aCByZXNjYW4sIHBhcmFs bGVsLWF3YXJlCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2gg PSBvbjsKK3NldCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NldCBtaW5f cGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0g MDsKK3NldCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vy c19wZXJfZ2F0aGVyID0gMjsKK3NldCBlbmFibGVfbWF0ZXJpYWwgPSBvZmY7CitzZXQgZW5hYmxl X21lcmdlam9pbiA9IG9mZjsKK3NldCB3b3JrX21lbSA9ICc0TUInOworc2V0IGhhc2hfbWVtX211 bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBm cm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2lu X2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28u aWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0IGNvdW50 KCopIGZyb20gam9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBq b2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9v LmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBmaW5h bCA+IDEgYXMgbXVsdGliYXRjaAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2Vs ZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwg YjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAg ICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7 CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gQSBmdWxsIG91dGVyIGpvaW4gd2hl cmUgZXZlcnkgcmVjb3JkIGlzIG1hdGNoZWQuCisKKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50 IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAw OworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxl IHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CitzZWxlY3QgIGNvdW50KCop IGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7Cityb2xs YmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWxpc20gbm90IHBvc3NpYmxlIHdpdGggcGFy YWxsZWwtb2JsaXZpb3VzIGZ1bGwgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQg ZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtl cnNfcGVyX2dhdGhlciA9IDI7CitleHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291 bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsK K3NlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbGlzbSBpcyBw b3NzaWJsZSB3aXRoIHBhcmFsbGVsLWF3YXJlIGZ1bGwgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0 dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7Citl eHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBm dWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCAgY291bnQoKikgZnJv bSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3JvbGxiYWNr IHRvIHNldHRpbmdzOworCistLSBBIGZ1bGwgb3V0ZXIgam9pbiB3aGVyZSBldmVyeSByZWNvcmQg aXMgbm90IG1hdGNoZWQuCisKKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOwor c2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworZXhwbGFpbiAo Y29zdHMgb2ZmKQorICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRl ciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworc2VsZWN0ICBjb3VudCgqKSBm cm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlk KTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbGlzbSBub3QgcG9zc2libGUg d2l0aCBwYXJhbGxlbC1vYmxpdmlvdXMgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5n czsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBsb2NhbCBtYXhfcGFyYWxs ZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2Vs ZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyBvbiAo ci5pZCA9IDAgLSBzLmlkKTsKK3NlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91 dGVyIGpvaW4gc2ltcGxlIHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7Cityb2xsYmFjayB0byBzZXR0 aW5nczsKKworLS0gcGFyYWxsZWxpc20gaXMgcG9zc2libGUgd2l0aCBwYXJhbGxlbC1hd2FyZSBm dWxsIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAgICBzZWxl Y3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChy LmlkID0gMCAtIHMuaWQpOworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0 ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKK3JvbGxiYWNrIHRvIHNldHRp bmdzOworCisKKy0tIGV4ZXJjaXNlIHNwZWNpYWwgY29kZSBwYXRocyBmb3IgaHVnZSB0dXBsZXMg KG5vdGUgdXNlIG9mIG5vbi1zdHJpY3QKKy0tIGV4cHJlc3Npb24gYW5kIGxlZnQgam9pbiByZXF1 aXJlZCB0byBnZXQgdGhlIGRldG9hc3RlZCB0dXBsZSBpbnRvCistLSB0aGUgaGFzaCB0YWJsZSkK KworLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1hd2FyZSBoYXNoIGpvaW4gKGhpdHMgRXhlY1Bh cmFsbGVsSGFzaExvYWRUdXBsZSBhbmQKKy0tIHN0c19wdXR0dXBsZSBvdmVyc2l6ZWQgdHVwbGUg Y2FzZXMgYmVjYXVzZSBpdCdzIG11bHRpLWJhdGNoKQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0 IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9wYXJhbGxl bF9oYXNoID0gb247CitzZXQgd29ya19tZW0gPSAnMTI4a0InOworc2V0IGhhc2hfbWVtX211bHRp cGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBsZW5ndGgobWF4KHMu dCkpCisgIGZyb20gd2lkZSBsZWZ0IGpvaW4gKHNlbGVjdCBpZCwgY29hbGVzY2UodCwgJycpIHx8 ICcnIGFzIHQgZnJvbSB3aWRlKSBzIHVzaW5nIChpZCk7CitzZWxlY3QgbGVuZ3RoKG1heChzLnQp KQorZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAnJykgfHwgJycg YXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGli YXRjaAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGxlbmd0aChtYXgo cy50KSkKKyAgZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAnJykg fHwgJycgYXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNl dHRpbmdzOworCisKKy0tIEhhc2ggam9pbiByZXVzZXMgdGhlIEhPVCBzdGF0dXMgYml0IHRvIGlu ZGljYXRlIG1hdGNoIHN0YXR1cy4gVGhpcyBjYW4gb25seQorLS0gYmUgZ3VhcmFudGVlZCB0byBw cm9kdWNlIGNvcnJlY3QgcmVzdWx0cyBpZiBhbGwgdGhlIGhhc2ggam9pbiB0dXBsZSBtYXRjaAor LS0gYml0cyBhcmUgcmVzZXQgYmVmb3JlIHJldXNlLiBUaGlzIGlzIGRvbmUgdXBvbiBsb2FkaW5n IHRoZW0gaW50byB0aGUKKy0tIGhhc2h0YWJsZS4KK1NBVkVQT0lOVCBzZXR0aW5nczsKK1NFVCBl bmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3Np emUgPSAwOworU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxl X2Nvc3QgPSAwOworQ1JFQVRFIFRBQkxFIGhqdGVzdF9tYXRjaGJpdHNfdDEoaWQgaW50KTsKK0NS RUFURSBUQUJMRSBoanRlc3RfbWF0Y2hiaXRzX3QyKGlkIGludCk7CitJTlNFUlQgSU5UTyBoanRl c3RfbWF0Y2hiaXRzX3QxIFZBTFVFUyAoMSk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRz X3QyIFZBTFVFUyAoMik7CistLSBVcGRhdGUgc2hvdWxkIGNyZWF0ZSBhIEhPVCB0dXBsZS4gSWYg dGhpcyBzdGF0dXMgYml0IGlzbid0IGNsZWFyZWQsIHdlIHdvbid0CistLSBjb3JyZWN0bHkgZW1p dCB0aGUgTlVMTC1leHRlbmRlZCB1bm1hdGNoaW5nIHR1cGxlIGluIGZ1bGwgaGFzaCBqb2luLgor VVBEQVRFIGhqdGVzdF9tYXRjaGJpdHNfdDIgc2V0IGlkID0gMjsKK1NFTEVDVCAqIEZST00gaGp0 ZXN0X21hdGNoYml0c190MSB0MSBGVUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0c190MiB0MiBPTiB0 MS5pZCA9IHQyLmlkCisgIE9SREVSIEJZIHQxLmlkOworLS0gVGVzdCBzZXJpYWwgZnVsbCBoYXNo IGpvaW4uCistLSBSZXNldHRpbmcgcGFyYWxsZWxfc2V0dXBfY29zdCBzaG91bGQgZm9yY2UgYSBz ZXJpYWwgcGxhbi4KKy0tIEp1c3QgdG8gYmUgc2FmZSwgaG93ZXZlciwgc2V0IGVuYWJsZV9wYXJh bGxlbF9oYXNoIHRvIG9mZiwgYXMgcGFyYWxsZWwgZnVsbAorLS0gaGFzaCBqb2lucyBhcmUgb25s eSBzdXBwb3J0ZWQgd2l0aCBzaGFyZWQgaGFzaHRhYmxlcy4KK1JFU0VUIHBhcmFsbGVsX3NldHVw X2Nvc3Q7CitTRVQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitTRUxFQ1QgKiBGUk9NIGhq dGVzdF9tYXRjaGJpdHNfdDEgdDEgRlVMTCBKT0lOIGhqdGVzdF9tYXRjaGJpdHNfdDIgdDIgT04g dDEuaWQgPSB0Mi5pZDsKK1JPTExCQUNLIFRPIHNldHRpbmdzOworCityb2xsYmFjazsKKworLS0g VmVyaWZ5IHRoYXQgaGFzaCBrZXkgZXhwcmVzc2lvbnMgcmVmZXJlbmNlIHRoZSBjb3JyZWN0Cist LSBub2Rlcy4gSGFzaGpvaW4ncyBoYXNoa2V5cyBuZWVkIHRvIHJlZmVyZW5jZSBpdHMgb3V0ZXIg cGxhbiwgSGFzaCdzCistLSBuZWVkIHRvIHJlZmVyZW5jZSBIYXNoJ3Mgb3V0ZXIgcGxhbiAod2hp Y2ggaXMgYmVsb3cgSGFzaEpvaW4ncworLS0gaW5uZXIgcGxhbikuIEl0J3Mgbm90IHRyaXZpYWwg dG8gdmVyaWZ5IHRoYXQgdGhlIHJlZmVyZW5jZXMgYXJlCistLSBjb3JyZWN0ICh3ZSBkb24ndCBk aXNwbGF5IHRoZSBoYXNoa2V5cyB0aGVtc2VsdmVzKSwgYnV0IGlmIHRoZQorLS0gaGFzaGtleXMg Y29udGFpbiBzdWJwbGFuIHJlZmVyZW5jZXMsIHRob3NlIHdpbGwgYmUgZGlzcGxheWVkLiBGb3Jj ZQorLS0gc3VicGxhbnMgdG8gYXBwZWFyIGp1c3QgYWJvdXQgZXZlcnl3aGVyZS4KKy0tCistLSBC dWcgcmVwb3J0OgorLS0gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQVBw SGZkdkdWZWdGX1RLS1JpQnJTbWF0SkwyZFI5dXdGQ3VSJTJCdGVRXzh0RVhVOG14ZyU0MG1haWwu Z21haWwuY29tCistLQorQkVHSU47CitTRVQgTE9DQUwgZW5hYmxlX3NvcnQgPSBPRkY7IC0tIGF2 b2lkIG1lcmdlam9pbnMKK1NFVCBMT0NBTCBmcm9tX2NvbGxhcHNlX2xpbWl0ID0gMTsgLS0gYWxs b3dzIGVhc3kgY2hhbmdpbmcgb2Ygam9pbiBvcmRlcgorCitDUkVBVEUgVEFCTEUgaGp0ZXN0XzEg KGEgdGV4dCwgYiBpbnQsIGlkIGludCwgYyBib29sKTsKK0NSRUFURSBUQUJMRSBoanRlc3RfMiAo YSBib29sLCBpZCBpbnQsIGIgdGV4dCwgYyBpbnQpOworCitJTlNFUlQgSU5UTyBoanRlc3RfMShh LCBiLCBpZCwgYykgVkFMVUVTICgndGV4dCcsIDIsIDEsIGZhbHNlKTsgLS0gbWF0Y2hlcworSU5T RVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAxLCAyLCBmYWxz ZSk7IC0tIGZhaWxzIGlkIGpvaW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBi LCBpZCwgYykgVkFMVUVTICgndGV4dCcsIDIwLCAxLCBmYWxzZSk7IC0tIGZhaWxzIDwgNTAKK0lO U0VSVCBJTlRPIGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxVRVMgKCd0ZXh0JywgMSwgMSwgZmFs c2UpOyAtLSBmYWlscyAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIu Yyo1KQorCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAx LCAnYW5vdGhlcicsIDIpOyAtLSBtYXRjaGVzCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwg YiwgYykgVkFMVUVTICh0cnVlLCAzLCAnYW5vdGhlcicsIDcpOyAtLSBmYWlscyBpZCBqb2luIGNv bmRpdGlvbgorSU5TRVJUIElOVE8gaGp0ZXN0XzIoYSwgaWQsIGIsIGMpIFZBTFVFUyAodHJ1ZSwg MSwgJ2Fub3RoZXInLCA5MCk7ICAtLSBmYWlscyA8IDU1CitJTlNFUlQgSU5UTyBoanRlc3RfMihh LCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAxLCAnYW5vdGhlcicsIDMpOyAtLSBmYWlscyAoU0VM RUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorSU5TRVJUIElOVE8g aGp0ZXN0XzIoYSwgaWQsIGIsIGMpIFZBTFVFUyAodHJ1ZSwgMSwgJ3RleHQnLCAxKTsgLS0gIGZh aWxzIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJC T1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEgYTIsaGp0ZXN0XzEudGFibGVv aWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVnY2xhc3MgdDIKK0ZST00gaGp0 ZXN0XzEsIGhqdGVzdF8yCitXSEVSRQorICAgIGhqdGVzdF8xLmlkID0gKFNFTEVDVCAxIFdIRVJF IGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkgPSAoU0VM RUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkgPCA1MAor ICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1CisgICAgQU5EIGhqdGVzdF8xLmEg PD4gaGp0ZXN0XzIuYjsKKworU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEgYTIsaGp0 ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVnY2xhc3Mg dDIKK0ZST00gaGp0ZXN0XzEsIGhqdGVzdF8yCitXSEVSRQorICAgIGhqdGVzdF8xLmlkID0gKFNF TEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5i ICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5i ICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1CisgICAgQU5E IGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NF KQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEgYTIsaGp0ZXN0XzEudGFibGVvaWQ6 OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVnY2xhc3MgdDIKK0ZST00gaGp0ZXN0 XzIsIGhqdGVzdF8xCitXSEVSRQorICAgIGhqdGVzdF8xLmlkID0gKFNFTEVDVCAxIFdIRVJFIGhq dGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkgPSAoU0VMRUNU IGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkgPCA1MAorICAg IEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1CisgICAgQU5EIGhqdGVzdF8xLmEgPD4g aGp0ZXN0XzIuYjsKKworU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEgYTIsaGp0ZXN0 XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVnY2xhc3MgdDIK K0ZST00gaGp0ZXN0XzIsIGhqdGVzdF8xCitXSEVSRQorICAgIGhqdGVzdF8xLmlkID0gKFNFTEVD VCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICog NSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICog NSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1CisgICAgQU5EIGhq dGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKworUk9MTEJBQ0s7CisKKy0tIFZlcmlmeSB0aGF0IHdl IGJlaGF2ZSBzYW5lbHkgd2hlbiB0aGUgaW5uZXIgaGFzaCBrZXlzIGNvbnRhaW4gcGFyYW1ldGVy cworLS0gKHRoYXQgaXMsIG91dGVyIG9yIGxhdGVyYWwgcmVmZXJlbmNlcykuICBUaGlzIHNpdHVh dGlvbiBoYXMgdG8gZGVmZWF0CistLSByZS11c2Ugb2YgdGhlIGlubmVyIGhhc2ggdGFibGUgYWNy b3NzIHJlc2NhbnMuCitiZWdpbjsKK3NldCBsb2NhbCBlbmFibGVfaGFzaGpvaW4gPSBvbjsKKwor ZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0IGk4LnEyLCBzcy4qIGZyb20KK2ludDhfdGJsIGk4 LAorbGF0ZXJhbCAoc2VsZWN0IHQxLmZpdmV0aG91cywgaTQuZjEgZnJvbSB0ZW5rMSB0MSBqb2lu IGludDRfdGJsIGk0CisgICAgICAgICBvbiB0MS5maXZldGhvdXMgPSBpNC5mMStpOC5xMiBvcmRl ciBieSAxLDIpIHNzOworCitzZWxlY3QgaTgucTIsIHNzLiogZnJvbQoraW50OF90YmwgaTgsCits YXRlcmFsIChzZWxlY3QgdDEuZml2ZXRob3VzLCBpNC5mMSBmcm9tIHRlbmsxIHQxIGpvaW4gaW50 NF90YmwgaTQKKyAgICAgICAgIG9uIHQxLmZpdmV0aG91cyA9IGk0LmYxK2k4LnEyIG9yZGVyIGJ5 IDEsMikgc3M7CisKK3JvbGxiYWNrOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv am9pbl9oYXNoX3BnbHouc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbl9oYXNoX3BnbHou c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hNzUyOWVjMzQwMAot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW5faGFzaF9wZ2x6LnNx bApAQCAtMCwwICsxLDYyNyBAQAorLS0KKy0tIGV4ZXJjaXNlcyBmb3IgdGhlIGhhc2ggam9pbiBj b2RlCistLQorCitiZWdpbjsKKworc2V0IGxvY2FsIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3Np emUgPSAwOworc2V0IGxvY2FsIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IGxvY2FsIGVu YWJsZV9oYXNoam9pbiA9IG9uOworc2V0IGxvY2FsIHRlbXBfZmlsZV9jb21wcmVzc2lvbiA9ICdw Z2x6JzsKKworLS0gRXh0cmFjdCBidWNrZXQgYW5kIGJhdGNoIGNvdW50cyBmcm9tIGFuIGV4cGxh aW4gYW5hbHl6ZSBwbGFuLiAgSW4KKy0tIGdlbmVyYWwgd2UgY2FuJ3QgbWFrZSBhc3NlcnRpb25z IGFib3V0IGhvdyBtYW55IGJhdGNoZXMgKG9yCistLSBidWNrZXRzKSB3aWxsIGJlIHJlcXVpcmVk IGJlY2F1c2UgaXQgY2FuIHZhcnksIGJ1dCB3ZSBjYW4gaW4gc29tZQorLS0gc3BlY2lhbCBjYXNl cyBhbmQgd2UgY2FuIGNoZWNrIGZvciBncm93dGguCitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlv biBmaW5kX2hhc2gobm9kZSBqc29uKQorcmV0dXJucyBqc29uIGxhbmd1YWdlIHBscGdzcWwKK2Fz CiskJAorZGVjbGFyZQorICB4IGpzb247CisgIGNoaWxkIGpzb247CitiZWdpbgorICBpZiBub2Rl LT4+J05vZGUgVHlwZScgPSAnSGFzaCcgdGhlbgorICAgIHJldHVybiBub2RlOworICBlbHNlCisg ICAgZm9yIGNoaWxkIGluIHNlbGVjdCBqc29uX2FycmF5X2VsZW1lbnRzKG5vZGUtPidQbGFucycp CisgICAgbG9vcAorICAgICAgeCA6PSBmaW5kX2hhc2goY2hpbGQpOworICAgICAgaWYgeCBpcyBu b3QgbnVsbCB0aGVuCisgICAgICAgIHJldHVybiB4OworICAgICAgZW5kIGlmOworICAgIGVuZCBs b29wOworICAgIHJldHVybiBudWxsOworICBlbmQgaWY7CitlbmQ7CiskJDsKK2NyZWF0ZSBvciBy ZXBsYWNlIGZ1bmN0aW9uIGhhc2hfam9pbl9iYXRjaGVzKHF1ZXJ5IHRleHQpCityZXR1cm5zIHRh YmxlIChvcmlnaW5hbCBpbnQsIGZpbmFsIGludCkgbGFuZ3VhZ2UgcGxwZ3NxbAorYXMKKyQkCitk ZWNsYXJlCisgIHdob2xlX3BsYW4ganNvbjsKKyAgaGFzaF9ub2RlIGpzb247CitiZWdpbgorICBm b3Igd2hvbGVfcGxhbiBpbgorICAgIGV4ZWN1dGUgJ2V4cGxhaW4gKGFuYWx5emUsIGZvcm1hdCAn J2pzb24nJykgJyB8fCBxdWVyeQorICBsb29wCisgICAgaGFzaF9ub2RlIDo9IGZpbmRfaGFzaChq c29uX2V4dHJhY3RfcGF0aCh3aG9sZV9wbGFuLCAnMCcsICdQbGFuJykpOworICAgIG9yaWdpbmFs IDo9IGhhc2hfbm9kZS0+PidPcmlnaW5hbCBIYXNoIEJhdGNoZXMnOworICAgIGZpbmFsIDo9IGhh c2hfbm9kZS0+PidIYXNoIEJhdGNoZXMnOworICAgIHJldHVybiBuZXh0OworICBlbmQgbG9vcDsK K2VuZDsKKyQkOworCistLSBNYWtlIGEgc2ltcGxlIHJlbGF0aW9uIHdpdGggd2VsbCBkaXN0cmli dXRlZCBrZXlzIGFuZCBjb3JyZWN0bHkKKy0tIGVzdGltYXRlZCBzaXplLgorY3JlYXRlIHRhYmxl IHNpbXBsZSBhcworICBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBBUyBpZCwgJ2Fh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUgc2ltcGxlIHNl dCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBzaW1wbGU7CisKKy0tIE1ha2UgYSBy ZWxhdGlvbiB3aG9zZSBzaXplIHdlIHdpbGwgdW5kZXItZXN0aW1hdGUuICBXZSB3YW50IHN0YXRz CistLSB0byBzYXkgMTAwMCByb3dzLCBidXQgYWN0dWFsbHkgdGhlcmUgYXJlIDIwLDAwMCByb3dz LgorY3JlYXRlIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xvb2tzIGFzCisgIHNlbGVjdCBnZW5lcmF0 ZV9zZXJpZXMoMSwgMjAwMDApIGFzIGlkLCAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYSc7CithbHRlciB0YWJsZSBiaWdnZXJfdGhhbl9pdF9sb29rcyBzZXQgKGF1dG92YWN1dW1f ZW5hYmxlZCA9ICdmYWxzZScpOworYWx0ZXIgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3Mgc2V0 IChwYXJhbGxlbF93b3JrZXJzID0gMik7CithbmFseXplIGJpZ2dlcl90aGFuX2l0X2xvb2tzOwor dXBkYXRlIHBnX2NsYXNzIHNldCByZWx0dXBsZXMgPSAxMDAwIHdoZXJlIHJlbG5hbWUgPSAnYmln Z2VyX3RoYW5faXRfbG9va3MnOworCistLSBNYWtlIGEgcmVsYXRpb24gd2hvc2Ugc2l6ZSB3ZSB1 bmRlcmVzdGltYXRlIGFuZCB0aGF0IGFsc28gaGFzIGEKKy0tIGtpbmQgb2Ygc2tldyB0aGF0IGJy ZWFrcyBvdXIgYmF0Y2hpbmcgc2NoZW1lLiAgV2Ugd2FudCBzdGF0cyB0byBzYXkKKy0tIDIgcm93 cywgYnV0IGFjdHVhbGx5IHRoZXJlIGFyZSAyMCwwMDAgcm93cyB3aXRoIHRoZSBzYW1lIGtleS4K K2NyZWF0ZSB0YWJsZSBleHRyZW1lbHlfc2tld2VkIChpZCBpbnQsIHQgdGV4dCk7CithbHRlciB0 YWJsZSBleHRyZW1lbHlfc2tld2VkIHNldCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gJ2ZhbHNlJyk7 CithbHRlciB0YWJsZSBleHRyZW1lbHlfc2tld2VkIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIp OworYW5hbHl6ZSBleHRyZW1lbHlfc2tld2VkOworaW5zZXJ0IGludG8gZXh0cmVtZWx5X3NrZXdl ZAorICBzZWxlY3QgNDIgYXMgaWQsICdhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh JworICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAyMDAwMCk7Cit1cGRhdGUgcGdfY2xhc3MKKyAg c2V0IHJlbHR1cGxlcyA9IDIsIHJlbHBhZ2VzID0gcGdfcmVsYXRpb25fc2l6ZSgnZXh0cmVtZWx5 X3NrZXdlZCcpIC8gODE5MgorICB3aGVyZSByZWxuYW1lID0gJ2V4dHJlbWVseV9za2V3ZWQnOwor CistLSBNYWtlIGEgcmVsYXRpb24gd2l0aCBhIGNvdXBsZSBvZiBlbm9ybW91cyB0dXBsZXMuCitj cmVhdGUgdGFibGUgd2lkZSBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGFzIGlkLCBy cGFkKCcnLCAzMjAwMDAsICd4JykgYXMgdDsKK2FsdGVyIHRhYmxlIHdpZGUgc2V0IChwYXJhbGxl bF93b3JrZXJzID0gMik7CisKKy0tIFRoZSAib3B0aW1hbCIgY2FzZTogdGhlIGhhc2ggdGFibGUg Zml0cyBpbiBtZW1vcnk7IHdlIHBsYW4gZm9yIDEKKy0tIGJhdGNoLCB3ZSBzdGljayB0byB0aGF0 IG51bWJlciwgYW5kIHBlYWsgbWVtb3J5IHVzYWdlIHN0YXlzIHdpdGhpbgorLS0gb3VyIHdvcmtf bWVtIGJ1ZGdldAorCistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBs b2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3Jr X21lbSA9ICc0TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBs YWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2lt cGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2lt cGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRp YmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNo X2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4g c2ltcGxlIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBw YXJhbGxlbCB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0 aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3Nl dCBsb2NhbCB3b3JrX21lbSA9ICc0TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIg PSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitleHBsYWluIChj b3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gs IGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5f YmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxl IHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxl bCB3aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0 IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdv cmtfbWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3Nl dCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9y aWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCisk JAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChp ZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gVGhlICJnb29kIiBjYXNlOiBi YXRjaGVzIHJlcXVpcmVkLCBidXQgd2UgcGxhbiB0aGUgcmlnaHQgbnVtYmVyOyB3ZQorLS0gcGxh biBmb3Igc29tZSBudW1iZXIgb2YgYmF0Y2hlcywgYW5kIHdlIHN0aWNrIHRvIHRoYXQgbnVtYmVy LCBhbmQKKy0tIHBlYWsgbWVtb3J5IHVzYWdlIHNheXMgd2l0aGluIG91ciB3b3JrX21lbSBidWRn ZXQKKworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAn MTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChj b3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gs IGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5f YmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxl IHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxl bCB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2Nh bCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEu MDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK2V4cGxhaW4gKGNvc3Rz IG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2lu ZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2lu ZyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmlu YWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRj aGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1 c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsIHdp dGggcGFyYWxsZWwtYXdhcmUgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9j YWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29ya19t ZW0gPSAnMTkya0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQg bG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAg c2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOwor c2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOwor c2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmln aW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQK KyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp OworJCQpOworLS0gcGFyYWxsZWwgZnVsbCBtdWx0aS1iYXRjaCBoYXNoIGpvaW4KK3NlbGVjdCBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp Oworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIFRoZSAiYmFkIiBjYXNlOiBkdXJpbmcgZXhl Y3V0aW9uIHdlIG5lZWQgdG8gaW5jcmVhc2UgbnVtYmVyIG9mCistLSBiYXRjaGVzOyBpbiB0aGlz IGNhc2Ugd2UgcGxhbiBmb3IgMSBiYXRjaCwgYW5kIGluY3JlYXNlIGF0IGxlYXN0IGEKKy0tIGNv dXBsZSBvZiB0aW1lcywgYW5kIHBlYWsgbWVtb3J5IHVzYWdlIHN0YXlzIHdpdGhpbiBvdXIgd29y a19tZW0KKy0tIGJ1ZGdldAorCistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2Nh bCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEu MDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIEZST00gc2ltcGxlIHIg Sk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CitzZWxlY3QgY291bnQoKikg RlJPTSBzaW1wbGUgciBKT0lOIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgVVNJTkcgKGlkKTsKK3Nl bGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2lu YWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisg IHNlbGVjdCBjb3VudCgqKSBGUk9NIHNpbXBsZSByIEpPSU4gYmlnZ2VyX3RoYW5faXRfbG9va3Mg cyBVU0lORyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVs IHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOwor c2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2Fs IHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4w Oworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMg b2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0 X2xvb2tzIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4g YmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1c2luZyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBh cyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0 Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CiskJCk7 Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1hd2Fy ZSBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxf d29ya2Vyc19wZXJfZ2F0aGVyID0gMTsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcxOTJrQic7Citz ZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFy YWxsZWxfaGFzaCA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikg ZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNpbmcgKGlkKTsKK3Nl bGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1 c2luZyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwg ZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9i YXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBiaWdnZXJf dGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsK KworLS0gVGhlICJ1Z2x5IiBjYXNlOiBpbmNyZWFzaW5nIHRoZSBudW1iZXIgb2YgYmF0Y2hlcyBk dXJpbmcgZXhlY3V0aW9uCistLSBkb2Vzbid0IGhlbHAsIHNvIHN0b3AgdHJ5aW5nIHRvIGZpdCBp biB3b3JrX21lbSBhbmQgaG9wZSBmb3IgdGhlCistLSBiZXN0OyBpbiB0aGlzIGNhc2Ugd2UgcGxh biBmb3IgMSBiYXRjaCwgaW5jcmVhc2VzIGp1c3Qgb25jZSBhbmQKKy0tIHRoZW4gc3RvcCBpbmNy ZWFzaW5nIGJlY2F1c2UgdGhhdCBkaWRuJ3QgaGVscCBhdCBhbGwsIHNvIHdlIGJsb3cKKy0tIHJp Z2h0IHRocm91Z2ggdGhlIHdvcmtfbWVtIGJ1ZGdldCBhbmQgaG9wZSBmb3IgdGhlIGJlc3QuLi4K KworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3Bh cmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4 a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3Nr ZXdlZCBzIHVzaW5nIChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4 dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworc2VsZWN0ICogZnJvbSBoYXNoX2pvaW5fYmF0 Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5 X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0g cGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1vYmxpdmlvdXMgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0 dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7Citz ZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxp ZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitleHBsYWlu IChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVt ZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBq b2luIGV4dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworc2VsZWN0ICogZnJvbSBoYXNoX2pv aW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0 cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsK KworLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1hd2FyZSBoYXNoIGpvaW4KK3NhdmVwb2ludCBz ZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMTsK K3NldCBsb2NhbCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlw bGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworZXhwbGFp biAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJl bWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIg am9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCAqIGZyb20gaGFzaF9q b2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4 dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7 CisKKy0tIEEgY291cGxlIG9mIG90aGVyIGhhc2ggam9pbiB0ZXN0cyB1bnJlbGF0ZWQgdG8gd29y a19tZW0gbWFuYWdlbWVudC4KKworLS0gQ2hlY2sgdGhhdCBFWFBMQUlOIEFOQUxZWkUgaGFzIGRh dGEgZXZlbiBpZiB0aGUgbGVhZGVyIGRvZXNuJ3QgcGFydGljaXBhdGUKK3NhdmVwb2ludCBzZXR0 aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3Nl dCBsb2NhbCB3b3JrX21lbSA9ICc0TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIg PSAxLjA7CitzZXQgbG9jYWwgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7Citz ZWxlY3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8g c2V0dGluZ3M7CisKKy0tIEV4ZXJjaXNlIHJlc2NhbnMuICBXZSdsbCB0dXJuIG9mZiBwYXJhbGxl bF9sZWFkZXJfcGFydGljaXBhdGlvbiBzbworLS0gdGhhdCB3ZSBjYW4gY2hlY2sgdGhhdCBpbnN0 cnVtZW50YXRpb24gY29tZXMgYmFjayBjb3JyZWN0bHkuCisKK2NyZWF0ZSB0YWJsZSBqb2luX2Zv byBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIGFzIGlkLCAneHh4eHgnOjp0ZXh0IGFz IHQ7CithbHRlciB0YWJsZSBqb2luX2ZvbyBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAwKTsKK2Ny ZWF0ZSB0YWJsZSBqb2luX2JhciBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwKSBh cyBpZCwgJ3h4eHh4Jzo6dGV4dCBhcyB0OworYWx0ZXIgdGFibGUgam9pbl9iYXIgc2V0IChwYXJh bGxlbF93b3JrZXJzID0gMik7CithbmFseXplIGpvaW5fZm9vLCBqb2luX2JhcjsKKworLS0gbXVs dGktYmF0Y2ggd2l0aCByZXNjYW4sIHBhcmFsbGVsLW9ibGl2aW91cworc2F2ZXBvaW50IHNldHRp bmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IHBhcmFsbGVsX2xlYWRl cl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUg PSAwOworc2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nv c3QgPSAwOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVu YWJsZV9tYXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdv cmtfbWVtID0gJzY0a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWlu IChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBq b2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIy IHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5f Zm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgbGVm dCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFy IGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2lu X2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRjaAorICBm cm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9m b28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpv aW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlk ICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7Cityb2xsYmFjayB0byBzZXR0 aW5nczsKKworLS0gc2luZ2xlLWJhdGNoIHdpdGggcmVzY2FuLCBwYXJhbGxlbC1vYmxpdmlvdXMK K3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3Nl dCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NldCBtaW5fcGFyYWxsZWxf dGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK3NldCBw YXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyID0gMjsKK3NldCBlbmFibGVfbWF0ZXJpYWwgPSBvZmY7CitzZXQgZW5hYmxlX21lcmdlam9p biA9IG9mZjsKK3NldCB3b3JrX21lbSA9ICc0TUInOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIg PSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5f Zm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBq b2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5p ZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0IGNvdW50KCopIGZyb20g am9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBi MSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9vLmlkIDwgc3Mu aWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBmaW5hbCA+IDEgYXMg bXVsdGliYXRjaAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50 KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9t IGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2lu X2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7City b2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gbXVsdGktYmF0Y2ggd2l0aCByZXNjYW4sIHBhcmFs bGVsLWF3YXJlCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2gg PSBvbjsKK3NldCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NldCBtaW5f cGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0g MDsKK3NldCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vy c19wZXJfZ2F0aGVyID0gMjsKK3NldCBlbmFibGVfbWF0ZXJpYWwgPSBvZmY7CitzZXQgZW5hYmxl X21lcmdlam9pbiA9IG9mZjsKK3NldCB3b3JrX21lbSA9ICc2NGtCJzsKK3NldCBoYXNoX21lbV9t dWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikg ZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9p bl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9v LmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBjb3Vu dCgqKSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20g am9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zv by5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CitzZWxlY3QgZmlu YWwgPiAxIGFzIG11bHRpYmF0Y2gKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNl bGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQs IGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisg ICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAx OworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHNpbmdsZS1iYXRjaCB3aXRoIHJl c2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBlbmFibGVfcGFy YWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2Zm Oworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworc2V0IHBhcmFsbGVsX3Nl dHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworc2V0IG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9tYXRlcmlhbCA9IG9mZjsK K3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVtID0gJzRNQic7CitzZXQg aGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0 IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEu dCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBv biBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7Citz ZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwg YjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAg b24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOwor c2VsZWN0IGZpbmFsID4gMSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMo CiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2Vs ZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAo aWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+ IHNzLmlkIC0gMTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBBIGZ1bGwgb3V0 ZXIgam9pbiB3aGVyZSBldmVyeSByZWNvcmQgaXMgbWF0Y2hlZC4KKworLS0gbm9uLXBhcmFsbGVs CitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDA7CitleHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikg ZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVj dCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcg KGlkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbGlzbSBub3QgcG9zc2li bGUgd2l0aCBwYXJhbGxlbC1vYmxpdmlvdXMgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0 aW5nczsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBsb2NhbCBtYXhfcGFy YWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAg c2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1 c2luZyAoaWQpOworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9p biBzaW1wbGUgcyB1c2luZyAoaWQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFs bGVsaXNtIGlzIHBvc3NpYmxlIHdpdGggcGFyYWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3Nh dmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9t IHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0ICBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp Oworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIEEgZnVsbCBvdXRlciBqb2luIHdoZXJlIGV2 ZXJ5IHJlY29yZCBpcyBub3QgbWF0Y2hlZC4KKworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQg c2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7 CitleHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUg ciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7CitzZWxlY3Qg IGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlk ID0gMCAtIHMuaWQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsaXNtIG5v dCBwb3NzaWJsZSB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBmdWxsIGhhc2ggam9pbgorc2F2ZXBv aW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IGxvY2Fs IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2Zm KQorICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNp bXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBs ZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKK3JvbGxi YWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbGlzbSBpcyBwb3NzaWJsZSB3aXRoIHBhcmFs bGVsLWF3YXJlIGZ1bGwgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitleHBsYWluIChjb3N0cyBvZmYp CisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2lt cGxlIHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7CitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxl IHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworcm9sbGJh Y2sgdG8gc2V0dGluZ3M7CisKKworLS0gZXhlcmNpc2Ugc3BlY2lhbCBjb2RlIHBhdGhzIGZvciBo dWdlIHR1cGxlcyAobm90ZSB1c2Ugb2Ygbm9uLXN0cmljdAorLS0gZXhwcmVzc2lvbiBhbmQgbGVm dCBqb2luIHJlcXVpcmVkIHRvIGdldCB0aGUgZGV0b2FzdGVkIHR1cGxlIGludG8KKy0tIHRoZSBo YXNoIHRhYmxlKQorCistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9pbiAo aGl0cyBFeGVjUGFyYWxsZWxIYXNoTG9hZFR1cGxlIGFuZAorLS0gc3RzX3B1dHR1cGxlIG92ZXJz aXplZCB0dXBsZSBjYXNlcyBiZWNhdXNlIGl0J3MgbXVsdGktYmF0Y2gpCitzYXZlcG9pbnQgc2V0 dGluZ3M7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgZW5h YmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK3NldCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgaGFz aF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGxl bmd0aChtYXgocy50KSkKKyAgZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNj ZSh0LCAnJykgfHwgJycgYXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBsZW5n dGgobWF4KHMudCkpCitmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxlc2NlKHQs ICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworc2VsZWN0IGZpbmFsID4g MSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3Qg bGVuZ3RoKG1heChzLnQpKQorICBmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxl c2NlKHQsICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworJCQpOworcm9s bGJhY2sgdG8gc2V0dGluZ3M7CisKKworLS0gSGFzaCBqb2luIHJldXNlcyB0aGUgSE9UIHN0YXR1 cyBiaXQgdG8gaW5kaWNhdGUgbWF0Y2ggc3RhdHVzLiBUaGlzIGNhbiBvbmx5CistLSBiZSBndWFy YW50ZWVkIHRvIHByb2R1Y2UgY29ycmVjdCByZXN1bHRzIGlmIGFsbCB0aGUgaGFzaCBqb2luIHR1 cGxlIG1hdGNoCistLSBiaXRzIGFyZSByZXNldCBiZWZvcmUgcmV1c2UuIFRoaXMgaXMgZG9uZSB1 cG9uIGxvYWRpbmcgdGhlbSBpbnRvIHRoZQorLS0gaGFzaHRhYmxlLgorU0FWRVBPSU5UIHNldHRp bmdzOworU0VUIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitTRVQgbWluX3BhcmFsbGVsX3Rh YmxlX3NjYW5fc2l6ZSA9IDA7CitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitTRVQgcGFy YWxsZWxfdHVwbGVfY29zdCA9IDA7CitDUkVBVEUgVEFCTEUgaGp0ZXN0X21hdGNoYml0c190MShp ZCBpbnQpOworQ1JFQVRFIFRBQkxFIGhqdGVzdF9tYXRjaGJpdHNfdDIoaWQgaW50KTsKK0lOU0VS VCBJTlRPIGhqdGVzdF9tYXRjaGJpdHNfdDEgVkFMVUVTICgxKTsKK0lOU0VSVCBJTlRPIGhqdGVz dF9tYXRjaGJpdHNfdDIgVkFMVUVTICgyKTsKKy0tIFVwZGF0ZSBzaG91bGQgY3JlYXRlIGEgSE9U IHR1cGxlLiBJZiB0aGlzIHN0YXR1cyBiaXQgaXNuJ3QgY2xlYXJlZCwgd2Ugd29uJ3QKKy0tIGNv cnJlY3RseSBlbWl0IHRoZSBOVUxMLWV4dGVuZGVkIHVubWF0Y2hpbmcgdHVwbGUgaW4gZnVsbCBo YXNoIGpvaW4uCitVUERBVEUgaGp0ZXN0X21hdGNoYml0c190MiBzZXQgaWQgPSAyOworU0VMRUNU ICogRlJPTSBoanRlc3RfbWF0Y2hiaXRzX3QxIHQxIEZVTEwgSk9JTiBoanRlc3RfbWF0Y2hiaXRz X3QyIHQyIE9OIHQxLmlkID0gdDIuaWQKKyAgT1JERVIgQlkgdDEuaWQ7CistLSBUZXN0IHNlcmlh bCBmdWxsIGhhc2ggam9pbi4KKy0tIFJlc2V0dGluZyBwYXJhbGxlbF9zZXR1cF9jb3N0IHNob3Vs ZCBmb3JjZSBhIHNlcmlhbCBwbGFuLgorLS0gSnVzdCB0byBiZSBzYWZlLCBob3dldmVyLCBzZXQg ZW5hYmxlX3BhcmFsbGVsX2hhc2ggdG8gb2ZmLCBhcyBwYXJhbGxlbCBmdWxsCistLSBoYXNoIGpv aW5zIGFyZSBvbmx5IHN1cHBvcnRlZCB3aXRoIHNoYXJlZCBoYXNodGFibGVzLgorUkVTRVQgcGFy YWxsZWxfc2V0dXBfY29zdDsKK1NFVCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK1NFTEVD VCAqIEZST00gaGp0ZXN0X21hdGNoYml0c190MSB0MSBGVUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0 c190MiB0MiBPTiB0MS5pZCA9IHQyLmlkOworUk9MTEJBQ0sgVE8gc2V0dGluZ3M7CisKK3JvbGxi YWNrOworCistLSBWZXJpZnkgdGhhdCBoYXNoIGtleSBleHByZXNzaW9ucyByZWZlcmVuY2UgdGhl IGNvcnJlY3QKKy0tIG5vZGVzLiBIYXNoam9pbidzIGhhc2hrZXlzIG5lZWQgdG8gcmVmZXJlbmNl IGl0cyBvdXRlciBwbGFuLCBIYXNoJ3MKKy0tIG5lZWQgdG8gcmVmZXJlbmNlIEhhc2gncyBvdXRl ciBwbGFuICh3aGljaCBpcyBiZWxvdyBIYXNoSm9pbidzCistLSBpbm5lciBwbGFuKS4gSXQncyBu b3QgdHJpdmlhbCB0byB2ZXJpZnkgdGhhdCB0aGUgcmVmZXJlbmNlcyBhcmUKKy0tIGNvcnJlY3Qg KHdlIGRvbid0IGRpc3BsYXkgdGhlIGhhc2hrZXlzIHRoZW1zZWx2ZXMpLCBidXQgaWYgdGhlCist LSBoYXNoa2V5cyBjb250YWluIHN1YnBsYW4gcmVmZXJlbmNlcywgdGhvc2Ugd2lsbCBiZSBkaXNw bGF5ZWQuIEZvcmNlCistLSBzdWJwbGFucyB0byBhcHBlYXIganVzdCBhYm91dCBldmVyeXdoZXJl LgorLS0KKy0tIEJ1ZyByZXBvcnQ6CistLSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNz YWdlLWlkL0NBUHBIZmR2R1ZlZ0ZfVEtLUmlCclNtYXRKTDJkUjl1d0ZDdVIlMkJ0ZVFfOHRFWFU4 bXhnJTQwbWFpbC5nbWFpbC5jb20KKy0tCitCRUdJTjsKK1NFVCBMT0NBTCBlbmFibGVfc29ydCA9 IE9GRjsgLS0gYXZvaWQgbWVyZ2Vqb2lucworU0VUIExPQ0FMIGZyb21fY29sbGFwc2VfbGltaXQg PSAxOyAtLSBhbGxvd3MgZWFzeSBjaGFuZ2luZyBvZiBqb2luIG9yZGVyCisKK0NSRUFURSBUQUJM RSBoanRlc3RfMSAoYSB0ZXh0LCBiIGludCwgaWQgaW50LCBjIGJvb2wpOworQ1JFQVRFIFRBQkxF IGhqdGVzdF8yIChhIGJvb2wsIGlkIGludCwgYiB0ZXh0LCBjIGludCk7CisKK0lOU0VSVCBJTlRP IGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxVRVMgKCd0ZXh0JywgMiwgMSwgZmFsc2UpOyAtLSBt YXRjaGVzCitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBiLCBpZCwgYykgVkFMVUVTICgndGV4dCcs IDEsIDIsIGZhbHNlKTsgLS0gZmFpbHMgaWQgam9pbiBjb25kaXRpb24KK0lOU0VSVCBJTlRPIGhq dGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxVRVMgKCd0ZXh0JywgMjAsIDEsIGZhbHNlKTsgLS0gZmFp bHMgPCA1MAorSU5TRVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQn LCAxLCAxLCBmYWxzZSk7IC0tIGZhaWxzIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVD VCBoanRlc3RfMi5jKjUpCisKK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxV RVMgKHRydWUsIDEsICdhbm90aGVyJywgMik7IC0tIG1hdGNoZXMKK0lOU0VSVCBJTlRPIGhqdGVz dF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDMsICdhbm90aGVyJywgNyk7IC0tIGZhaWxz IGlkIGpvaW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFM VUVTICh0cnVlLCAxLCAnYW5vdGhlcicsIDkwKTsgIC0tIGZhaWxzIDwgNTUKK0lOU0VSVCBJTlRP IGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVyJywgMyk7IC0t IGZhaWxzIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3RfMi5jKjUpCitJ TlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAxLCAndGV4dCcs IDEpOyAtLSAgZmFpbHMgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitFWFBMQUlOIChDT1NU UyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRl c3RfMS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0 MgorRlJPTSBoanRlc3RfMSwgaGp0ZXN0XzIKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VM RUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIg KiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIg KiA1KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQg aGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0 XzIuYSBhMixoanRlc3RfMS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lk OjpyZWdjbGFzcyB0MgorRlJPTSBoanRlc3RfMSwgaGp0ZXN0XzIKK1dIRVJFCisgICAgaGp0ZXN0 XzEuaWQgPSAoU0VMRUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNU IGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNU IGhqdGVzdF8xLmIgKiA1KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwg NTUKKyAgICBBTkQgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitFWFBMQUlOIChDT1NUUyBP RkYsIFZFUkJPU0UpCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRlc3Rf MS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0Mgor RlJPTSBoanRlc3RfMiwgaGp0ZXN0XzEKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VMRUNU IDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1 KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1 KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQgaGp0 ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIu YSBhMixoanRlc3RfMS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpy ZWdjbGFzcyB0MgorRlJPTSBoanRlc3RfMiwgaGp0ZXN0XzEKK1dIRVJFCisgICAgaGp0ZXN0XzEu aWQgPSAoU0VMRUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhq dGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhq dGVzdF8xLmIgKiA1KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUK KyAgICBBTkQgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitST0xMQkFDSzsKKworLS0gVmVy aWZ5IHRoYXQgd2UgYmVoYXZlIHNhbmVseSB3aGVuIHRoZSBpbm5lciBoYXNoIGtleXMgY29udGFp biBwYXJhbWV0ZXJzCistLSAodGhhdCBpcywgb3V0ZXIgb3IgbGF0ZXJhbCByZWZlcmVuY2VzKS4g IFRoaXMgc2l0dWF0aW9uIGhhcyB0byBkZWZlYXQKKy0tIHJlLXVzZSBvZiB0aGUgaW5uZXIgaGFz aCB0YWJsZSBhY3Jvc3MgcmVzY2Fucy4KK2JlZ2luOworc2V0IGxvY2FsIGVuYWJsZV9oYXNoam9p biA9IG9uOworCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgaTgucTIsIHNzLiogZnJvbQor aW50OF90YmwgaTgsCitsYXRlcmFsIChzZWxlY3QgdDEuZml2ZXRob3VzLCBpNC5mMSBmcm9tIHRl bmsxIHQxIGpvaW4gaW50NF90YmwgaTQKKyAgICAgICAgIG9uIHQxLmZpdmV0aG91cyA9IGk0LmYx K2k4LnEyIG9yZGVyIGJ5IDEsMikgc3M7CisKK3NlbGVjdCBpOC5xMiwgc3MuKiBmcm9tCitpbnQ4 X3RibCBpOCwKK2xhdGVyYWwgKHNlbGVjdCB0MS5maXZldGhvdXMsIGk0LmYxIGZyb20gdGVuazEg dDEgam9pbiBpbnQ0X3RibCBpNAorICAgICAgICAgb24gdDEuZml2ZXRob3VzID0gaTQuZjEraTgu cTIgb3JkZXIgYnkgMSwyKSBzczsKKworcm9sbGJhY2s7Ci0tIAoyLjUxLjEKCg== --00000000000011029a0648ab89e6 Content-Type: application/octet-stream; name="0001-Add-transparent-compression-for-temporary-files.patch" Content-Disposition: attachment; filename="0001-Add-transparent-compression-for-temporary-files.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkjwwwdl0 RnJvbSAwNWU1ZjVhZDBlOTA5Y2IwMzFlMDUyMGRlMmY2MzZiNTJlMzI4MGJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxpcCBKYW51cyA8ZmphbnVzQHJlZGhhdC5jb20+CkRhdGU6 IFRodSwgMzEgSnVsIDIwMjUgMTQ6MDI6MTYgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvMl0gQWRk IHRyYW5zcGFyZW50IGNvbXByZXNzaW9uIGZvciB0ZW1wb3JhcnkgZmlsZXMKClRoaXMgY29tbWl0 IGltcGxlbWVudHMgdHJhbnNwYXJlbnQgY29tcHJlc3Npb24gZm9yIHRlbXBvcmFyeSBmaWxlcyBp biBQb3N0Z3JlU1FMLApzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGhhc2ggam9pbiBvcGVyYXRp b25zIHRoYXQgc3BpbGwgdG8gZGlzay4KCkZlYXR1cmVzOgotIFN1cHBvcnQgZm9yIExaNCBhbmQg UEdMWiBjb21wcmVzc2lvbiBhbGdvcml0aG1zCi0gR1VDIHBhcmFtZXRlciAndGVtcF9maWxlX2Nv bXByZXNzaW9uJyB0byBjb250cm9sIGNvbXByZXNzaW9uCi0gVHJhbnNwYXJlbnQgY29tcHJlc3Np b24vZGVjb21wcmVzc2lvbiBpbiBCdWZGaWxlIGxheWVyCi0gU2hhcmVkIGNvbXByZXNzaW9uIGJ1 ZmZlciB0byBtaW5pbWl6ZSBtZW1vcnkgYWxsb2NhdGlvbgotIEludGVncmF0aW9uOiBIYXNoIGpv aW4gdXNlcyBCdWZGaWxlQ3JlYXRlQ29tcHJlc3NUZW1wKCksIHR1cGxlc3RvcmUKICAgICB1c2Vz IGNvbXByZXNzaW9uIHdoZW4gRVhFQ19GTEFHX0JBQ0tXQVJEIGlzIG5vdCByZXF1aXJlZAoKVGhl IGNvbXByZXNzaW9uIGlzIGFwcGxpZWQgYXV0b21hdGljYWxseSB3aGVuIHRlbXBfZmlsZV9jb21w cmVzc2lvbiBpcyBlbmFibGVkLAp3aXRoIG5vIGNoYW5nZXMgcmVxdWlyZWQgdG8gY2FsbGluZyBj b2RlLiBPbmx5IGhhc2ggam9pbnMgdXNlIGNvbXByZXNzaW9uCmN1cnJlbnRseSwgd2l0aCBzZWVr aW5nIGxpbWl0ZWQgdG8gcmV3aW5kaW5nIHRvIHN0YXJ0LgoKQ29uZmlndXJhdGlvbiBvcHRpb25z OgotIHRlbXBfZmlsZV9jb21wcmVzc2lvbiA9ICdubycgKGRlZmF1bHQpCi0gdGVtcF9maWxlX2Nv bXByZXNzaW9uID0gJ3BnbHonCi0gdGVtcF9maWxlX2NvbXByZXNzaW9uID0gJ2x6NCcgKHJlcXVp cmVzIC0td2l0aC1sejQpCgpGaXggR1VDIHRhYmxlcyBzdHJ1Y3R1cmUgZm9yIGNvbXByZXNzaW9u IHN1cHBvcnQKLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYyAgICAgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMgICAgICAgICAg ICB8IDM1MiArKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Bh cmFtZXRlcnMuZGF0ICAgICB8ICAgNyArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYyAgICAgICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlIHwgICA1ICstCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUu YyAgICAgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmZmlsZS5oICAgICAg ICAgICAgICAgICB8ICAxMCArCiA3IGZpbGVzIGNoYW5nZWQsIDM3NCBpbnNlcnRpb25zKCspLCAy MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFz aGpvaW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCmluZGV4IDExNDYy MGE4MTM3Li5jMmYxYjI2NThlMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUhhc2hqb2luLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAg LTE0MzQsNyArMTQzNCw3IEBAIEV4ZWNIYXNoSm9pblNhdmVUdXBsZShNaW5pbWFsVHVwbGUgdHVw bGUsIHVpbnQzMiBoYXNodmFsdWUsCiAJewogCQlNZW1vcnlDb250ZXh0IG9sZGN0eCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhoYXNodGFibGUtPnNwaWxsQ3h0KTsKIAotCQlmaWxlID0gQnVmRmls ZUNyZWF0ZVRlbXAoZmFsc2UpOworCQlmaWxlID0gQnVmRmlsZUNyZWF0ZUNvbXByZXNzVGVtcChm YWxzZSk7CiAJCSpmaWxlcHRyID0gZmlsZTsKIAogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y3R4KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvYnVmZmlsZS5jCmluZGV4IGRkZjNhNDEwZDZmLi4yMTUw NzRhMzM0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvYnVmZmlsZS5jCkBAIC01Myw2ICs1MywxNyBA QAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgog I2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK KyNpbmNsdWRlICJjb21tb24vcGdfbHpjb21wcmVzcy5oIgorCisjaWZkZWYgVVNFX0xaNAorI2lu Y2x1ZGUgPGx6NC5oPgorI2VuZGlmCisKKy8qIENvbXByZXNzaW9uIHR5cGVzICovCisjZGVmaW5l IFRFTVBfTk9ORV9DT01QUkVTU0lPTiAgMAorI2RlZmluZSBURU1QX1BHTFpfQ09NUFJFU1NJT04g IDEKKyNkZWZpbmUgVEVNUF9MWjRfQ09NUFJFU1NJT04gICAyCiAKIC8qCiAgKiBXZSBicmVhayBC dWZGaWxlcyBpbnRvIGdpZ2FieXRlLXNpemVkIHNlZ21lbnRzLCByZWdhcmRsZXNzIG9mIFJFTFNF R19TSVpFLgpAQCAtNjIsNiArNzMsMTEgQEAKICNkZWZpbmUgTUFYX1BIWVNJQ0FMX0ZJTEVTSVpF CTB4NDAwMDAwMDAKICNkZWZpbmUgQlVGRklMRV9TRUdfU0laRQkJKE1BWF9QSFlTSUNBTF9GSUxF U0laRSAvIEJMQ0tTWikKIAorLyoKKyAqIE9wdGlvbmFsIHRyYW5zcGFyZW50IGNvbXByZXNzaW9u IG9mIHRlbXBvcmFyeSBmaWxlcy4gRGlzYWxlZCBieSBkZWZhdWx0LgorICovCitpbnQJCQl0ZW1w X2ZpbGVfY29tcHJlc3Npb24gPSBURU1QX05PTkVfQ09NUFJFU1NJT047CisKIC8qCiAgKiBUaGlz IGRhdGEgc3RydWN0dXJlIHJlcHJlc2VudHMgYSBidWZmZXJlZCBmaWxlIHRoYXQgY29uc2lzdHMg b2Ygb25lIG9yCiAgKiBtb3JlIHBoeXNpY2FsIGZpbGVzIChlYWNoIGFjY2Vzc2VkIHRocm91Z2gg YSB2aXJ0dWFsIGZpbGUgZGVzY3JpcHRvcgpAQCAtMTAxLDggKzExNywyOSBAQCBzdHJ1Y3QgQnVm RmlsZQogCSAqIHdhc3RpbmcgcGVyLWZpbGUgYWxpZ25tZW50IHBhZGRpbmcgd2hlbiBzb21lIHVz ZXJzIGNyZWF0ZSBtYW55IGZpbGVzLgogCSAqLwogCVBHQWxpZ25lZEJsb2NrIGJ1ZmZlcjsKKwor CWJvb2wJCWNvbXByZXNzX3RlbXBmaWxlOwkvKiB0cmFuc3BhcmVudCBjb21wcmVzc2lvbiBtb2Rl ICovCisJaW50CQkJY29tcHJlc3M7CQkvKiBlbmFibGVkIGNvbXByZXNzaW9uIGZvciB0aGUgZmls ZSAqLworCWNoYXIJICAgKmNCdWZmZXI7CQkvKiBjb21wcmVzc2lvbiBidWZmZXIgKi8KIH07CiAK Ky8qCisgKiBIZWFkZXIgd3JpdHRlbiByaWdodCBiZWZvcmUgZWFjaCBjaHVuayBvZiBkYXRhIHdp dGggY29tcHJlc3Npb24gZW5hYmxlZC4KKyAqIFRoZSAnbGVuJyBpcyB0aGUgbGVuZ3RoIG9mIHRo ZSBkYXRhIGJ1ZmZlciB3cml0dGVuIHJpZ2h0IGFmdGVyIHRoZSBoZWFkZXIsCisgKiBhbmQgJ3Jh d19sZW4nIGlzIHRoZSBsZW5ndGggb2YgdW5jb21wcmVzc2VkIGRhdGEuIElmIHRoZSBkYXRhIGVu ZHMgdXAgbm90CisgKiBiZWluZyBjb21wcmVzc2VkIChlLmcuIHdoZW4gcGdseiBkb2VzIG5vdCBy ZWFjaCB0aGUgY29tcHJlc3Npb24gcmF0aW8pLAorICogdGhlIHJhd19sZW4gaXMgc2V0IHRvIC0x IGFuZCB0aGUgbGVuIGlzIHRoZSByYXcgKHVuY29tcHJlc3NlZCkgbGVuZ3RoLgorICoKKyAqIFRv IG1ha2UgdGhpbmdzIHNpbXBsZXIsIHdlIHdyaXRlIHRoZXNlIGhlYWRlcnMgZXZlbiBmb3IgbWF0 aG9kcyB0aGF0IGRvCisgKiBub3QgZmFpbCAob3IgcmF0aGVyIHdoZW4gdGhleSBmYWlsLCBpdCdz IGEgcHJvcGVyIGVycm9yKS4gVGhlIHNwYWNlIGZvcgorICogYW4gZXh0cmEgaW50ZWdlciBzZWVt cyBuZWdsaWdpYmxlLgorICovCit0eXBlZGVmIHN0cnVjdCBDb21wcmVzc0hlYWRlcgoreworCWlu dAkJCWxlbjsJCQkvKiBkYXRhIGxlbmd0aCAoY29tcHJlc3NlZCwgZXhjbHVkaW5nIGhlYWRlcikg Ki8KKwlpbnQJCQlyYXdfbGVuOwkJLyogcmF3IGxlbmd0aCAoLTE6IG5vdCBjb21wcmVzc2VkKSAq LworfQkJCUNvbXByZXNzSGVhZGVyOworCiBzdGF0aWMgQnVmRmlsZSAqbWFrZUJ1ZkZpbGVDb21t b24oaW50IG5maWxlcyk7CiBzdGF0aWMgQnVmRmlsZSAqbWFrZUJ1ZkZpbGUoRmlsZSBmaXJzdGZp bGUpOwogc3RhdGljIHZvaWQgZXh0ZW5kQnVmRmlsZShCdWZGaWxlICpmaWxlKTsKQEAgLTEyNyw2 ICsxNjQsOSBAQCBtYWtlQnVmRmlsZUNvbW1vbihpbnQgbmZpbGVzKQogCWZpbGUtPmN1ck9mZnNl dCA9IDA7CiAJZmlsZS0+cG9zID0gMDsKIAlmaWxlLT5uYnl0ZXMgPSAwOworCWZpbGUtPmNvbXBy ZXNzX3RlbXBmaWxlID0gZmFsc2U7CisJZmlsZS0+Y29tcHJlc3MgPSBURU1QX05PTkVfQ09NUFJF U1NJT047CisJZmlsZS0+Y0J1ZmZlciA9IE5VTEw7CiAKIAlyZXR1cm4gZmlsZTsKIH0KQEAgLTIx NSw2ICsyNTUsNTcgQEAgQnVmRmlsZUNyZWF0ZVRlbXAoYm9vbCBpbnRlclhhY3QpCiAJcmV0dXJu IGZpbGU7CiB9CiAKKy8qCisgKiBCdWZGaWxlQ3JlYXRlQ29tcHJlc3NUZW1wCisgKgkJQ3JlYXRl IGEgdGVtcG9yYXJ5IGZpbGUgd2l0aCB0cmFuc3BhcmVudCBjb21wcmVzc2lvbi4KKyAqCisgKiBU aGUgdGVtcG9yYXJ5IGZpbGVzIHdpbGwgdXNlIGNvbXByZXNzaW9uLCBkZXBlbmRpbmcgb24gdGhl IGN1cnJlbnQgdmFsdWUgb2YKKyAqIHRlbXBfZmlsZV9jb21wcmVzc2lvbiBHVUMuCisgKgorICog Tm90ZTogQ29tcHJlc3NlZCBmaWxlcyBkbyBub3Qgc3VwcG9ydCByYW5kb20gYWNjZXNzLiBBIHNl ZWsgb3BlcmF0aW9uIG90aGVyCisgKiB0aGFuIHNlZWsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUg YnVmZmlsZSB3aWxsIGNvcnJ1cHQgZGF0YS4KKyAqCisgKiBOb3RlOiBUaGUgY29tcHJlc3Npb24g YWxnb3JpdGhtIGlzIGRldGVybWluZWQgYnkgdGVtcF9maWxlX2NvbXByZXNzaW9uIEdVQy4KKyAq IElmIHNldCB0byAibm9uZSIgKFRFTVBfTk9ORV9DT01QUkVTU0lPTiksIHRoZSBmaWxlIGlzIG5v dCBjb21wcmVzc2VkLgorICoKKyAqLworQnVmRmlsZSAqCitCdWZGaWxlQ3JlYXRlQ29tcHJlc3NU ZW1wKGJvb2wgaW50ZXJYYWN0KQoreworCUJ1ZkZpbGUgICAgKmZpbGUgPSBCdWZGaWxlQ3JlYXRl VGVtcChpbnRlclhhY3QpOworCisJaWYgKHRlbXBfZmlsZV9jb21wcmVzc2lvbiAhPSBURU1QX05P TkVfQ09NUFJFU1NJT04pCisJeworCQlpbnQJCQlzaXplID0gMDsKKworCQlzd2l0Y2ggKHRlbXBf ZmlsZV9jb21wcmVzc2lvbikKKwkJeworCQkJY2FzZSBURU1QX0xaNF9DT01QUkVTU0lPTjoKKyNp ZmRlZiBVU0VfTFo0CisJCQkJc2l6ZSA9IExaNF9jb21wcmVzc0JvdW5kKEJMQ0tTWikgKyBzaXpl b2YoQ29tcHJlc3NIZWFkZXIpOworI2VuZGlmCisJCQkJYnJlYWs7CisJCQljYXNlIFRFTVBfUEdM Wl9DT01QUkVTU0lPTjoKKwkJCQlzaXplID0gcGdsel9tYXhpbXVtX2NvbXByZXNzZWRfc2l6ZShC TENLU1osIEJMQ0tTWikgKyBzaXplb2YoQ29tcHJlc3NIZWFkZXIpOworCQkJCWJyZWFrOworCQkJ ZGVmYXVsdDoKKwkJCQlicmVhazsKKwkJfQorCisJCWlmIChzaXplID4gMCkKKwkJeworCQkJZmls ZS0+Y29tcHJlc3MgPSB0ZW1wX2ZpbGVfY29tcHJlc3Npb247CisJCQlmaWxlLT5jQnVmZmVyID0g cGFsbG9jKHNpemUpOworCQl9CisJfQorCisJLyogY29tcHJlc3Npb24gd2l0aCBidWZmZXIsIG9y IG5vIGNvbXByZXNzaW9uIGFuZCBubyBidWZmZXIgKi8KKwlBc3NlcnQoKCFmaWxlLT5jb21wcmVz cyAmJiBmaWxlLT5jQnVmZmVyID09IE5VTEwpIHx8CisJCSAgIChmaWxlLT5jb21wcmVzcyAmJiBm aWxlLT5jQnVmZmVyICE9IE5VTEwpKTsKKworCXJldHVybiBmaWxlOworfQorCiAvKgogICogQnVp bGQgdGhlIG5hbWUgZm9yIGEgZ2l2ZW4gc2VnbWVudCBvZiBhIGdpdmVuIEJ1ZkZpbGUuCiAgKi8K QEAgLTQxNSw5ICs1MDYsMTUgQEAgQnVmRmlsZUNsb3NlKEJ1ZkZpbGUgKmZpbGUpCiAKIAkvKiBm bHVzaCBhbnkgdW53cml0dGVuIGRhdGEgKi8KIAlCdWZGaWxlRmx1c2goZmlsZSk7CisKIAkvKiBj bG9zZSBhbmQgZGVsZXRlIHRoZSB1bmRlcmx5aW5nIGZpbGUocykgKi8KIAlmb3IgKGkgPSAwOyBp IDwgZmlsZS0+bnVtRmlsZXM7IGkrKykKIAkJRmlsZUNsb3NlKGZpbGUtPmZpbGVzW2ldKTsKKwor CS8qIHJlbGVhc2UgY29tcHJlc3Npb24gYnVmZmVyIGlmIGFsbG9jYXRlZCAqLworCWlmIChmaWxl LT5jQnVmZmVyKQorCQlwZnJlZShmaWxlLT5jQnVmZmVyKTsKKwogCS8qIHJlbGVhc2UgdGhlIGJ1 ZmZlciBzcGFjZSAqLwogCXBmcmVlKGZpbGUtPmZpbGVzKTsKIAlwZnJlZShmaWxlKTsKQEAgLTQ1 NCwyMSArNTUxLDEzNyBAQCBCdWZGaWxlTG9hZEJ1ZmZlcihCdWZGaWxlICpmaWxlKQogCWVsc2UK IAkJSU5TVFJfVElNRV9TRVRfWkVSTyhpb19zdGFydCk7CiAKLQkvKgotCSAqIFJlYWQgd2hhdGV2 ZXIgd2UgY2FuIGdldCwgdXAgdG8gYSBmdWxsIGJ1ZmZlcmxvYWQuCi0JICovCi0JZmlsZS0+bmJ5 dGVzID0gRmlsZVJlYWQodGhpc2ZpbGUsCi0JCQkJCQkJZmlsZS0+YnVmZmVyLmRhdGEsCi0JCQkJ CQkJc2l6ZW9mKGZpbGUtPmJ1ZmZlci5kYXRhKSwKLQkJCQkJCQlmaWxlLT5jdXJPZmZzZXQsCi0J CQkJCQkJV0FJVF9FVkVOVF9CVUZGSUxFX1JFQUQpOwotCWlmIChmaWxlLT5uYnl0ZXMgPCAwKQor CWlmIChmaWxlLT5jb21wcmVzcyA9PSBURU1QX05PTkVfQ09NUFJFU1NJT04pCiAJewotCQlmaWxl LT5uYnl0ZXMgPSAwOwotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlX2Zvcl9maWxlX2Fj Y2VzcygpLAotCQkJCSBlcnJtc2coImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIsCi0J CQkJCQlGaWxlUGF0aE5hbWUodGhpc2ZpbGUpKSkpOworCQkvKgorCQkgKiBSZWFkIHdoYXRldmVy IHdlIGNhbiBnZXQsIHVwIHRvIGEgZnVsbCBidWZmZXJsb2FkLgorCQkgKi8KKwkJZmlsZS0+bmJ5 dGVzID0gRmlsZVJlYWQodGhpc2ZpbGUsCisJCQkJCQkJCWZpbGUtPmJ1ZmZlci5kYXRhLAorCQkJ CQkJCQlzaXplb2YoZmlsZS0+YnVmZmVyKSwKKwkJCQkJCQkJZmlsZS0+Y3VyT2Zmc2V0LAorCQkJ CQkJCQlXQUlUX0VWRU5UX0JVRkZJTEVfUkVBRCk7CisJCWlmIChmaWxlLT5uYnl0ZXMgPCAwKQor CQl7CisJCQlmaWxlLT5uYnl0ZXMgPSAwOworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJCSBlcnJtc2coImNvdWxkIG5vdCByZWFkIGZpbGUg XCIlc1wiOiAlbSIsCisJCQkJCQkJRmlsZVBhdGhOYW1lKHRoaXNmaWxlKSkpKTsKKwkJfQorCX0K KwllbHNlCisJeworCQkvKgorCQkgKiBSZWFkIGFuZCBkZWNvbXByZXNzIGRhdGEgZnJvbSBhIHRl bXBvcmFyeSBmaWxlLiBXZSBmaXJzdCByZWFkIHRoZQorCQkgKiBoZWFkZXIgd2l0aCBjb21wcmVz c2VkL3JhdyBsZW5ndGhzLCBhbmQgdGhlbiB0aGUgY29tcHJlc3NlZCBkYXRhLgorCQkgKi8KKwkJ aW50CQkJbnJlYWQ7CisJCUNvbXByZXNzSGVhZGVyIGhlYWRlcjsKKworCQlucmVhZCA9IEZpbGVS ZWFkKHRoaXNmaWxlLAorCQkJCQkJICZoZWFkZXIsCisJCQkJCQkgc2l6ZW9mKGhlYWRlciksCisJ CQkJCQkgZmlsZS0+Y3VyT2Zmc2V0LAorCQkJCQkJIFdBSVRfRVZFTlRfQlVGRklMRV9SRUFEKTsK KworCQkvKiBkaWQgd2UgcmVhZCB0aGUgbGVuZ3RoIG9mIHRoZSBuZXh0IGJ1ZmZlcj8gKi8KKwkJ aWYgKG5yZWFkID09IDApCisJCXsKKwkJCS8qIGVvZiwgbm90aGluZyB0byBkbyAqLworCQl9CisJ CWVsc2UgaWYgKG5yZWFkICE9IHNpemVvZihoZWFkZXIpKQorCQl7CisJCQkvKiB1bmV4cGVjdGVk IG51bWJlciBvZiBieXRlcywgYWxzbyBjb3ZlcnMgKG5yZWFkIDwgMCkgKi8KKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCQkgZXJybXNnKCJj b3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQkJCUZpbGVQYXRoTmFtZSh0aGlz ZmlsZSkpKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiByZWFkIGxlbmd0aCBvZiBjb21wcmVz c2VkIGRhdGEsIHJlYWQgKGFuZCBkZWNvbXByZXNzKSBkYXRhICovCisJCQljaGFyCSAgICpidWZm ID0gZmlsZS0+Y0J1ZmZlcjsKKworCQkJQXNzZXJ0KGZpbGUtPmNCdWZmZXIgIT0gTlVMTCk7CisK KwkJCS8qIGFkdmFuY2UgcGFzdCB0aGUgbGVuZ3RoIGZpZWxkICovCisJCQlmaWxlLT5jdXJPZmZz ZXQgKz0gc2l6ZW9mKGhlYWRlcik7CisKKwkJCS8qCisJCQkgKiByYXdfbGVuPT0tMSBtZWFucyB0 aGUgZGF0YSB3YXMgbm90IGNvbXByZXNzZWQgYWZ0ZXIgYWxsLCB3aGljaAorCQkJICogY2FuIGhh cHBlbiBlLmcuIGZvciBub24tY29tcHJlc3NpYmxlIGRhdGEgd2l0aCBwZ2x6LiBJbiB0aGF0CisJ CQkgKiBjYXNlIGp1c3QgY29weSB0aGUgZGF0YSBpbiBwbGFjZS4gT3RoZXJ3aXNlIGRvIHRoZQor CQkJICogZGVjb21wcmVzc2lvbi4KKwkJCSAqCisJCQkgKiBYWFggTWF5YmUgd2Ugc2hvdWxkIGp1 c3QgZG8gdGhlIEZpbGVSZWFkIGZpcnN0LCBhbmQgdGhlbiBlaXRoZXIKKwkJCSAqIGRlY29tcHJl c3Mgb3IgbWVtY3B5KCkgZm9yIHJhd19sZW49LTEuIFRoYXQnZCBiZSBhbiBleHRyYQorCQkJICog bWVtY3B5LCBidXQgaXQnZCBtYWtlIHRoZSBjb2RlIHNpbXBsZXIgKHRoaXMgd2F5cyB3ZSBkbyB0 aGUKKwkJCSAqIGVycm9yIGNoZWNrcyB0d2ljZSwgZm9yIGVhY2ggYnJhbmNoKS4KKwkJCSAqLwor CQkJaWYgKGhlYWRlci5yYXdfbGVuID09IC0xKQorCQkJeworCQkJCW5yZWFkID0gRmlsZVJlYWQo dGhpc2ZpbGUsCisJCQkJCQkJCSBmaWxlLT5idWZmZXIuZGF0YSwKKwkJCQkJCQkJIGhlYWRlci5s ZW4sCisJCQkJCQkJCSBmaWxlLT5jdXJPZmZzZXQsCisJCQkJCQkJCSBXQUlUX0VWRU5UX0JVRkZJ TEVfUkVBRCk7CisJCQkJaWYgKG5yZWFkICE9IGhlYWRlci5sZW4pCisJCQkJeworCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCQkJCSBl cnJtc2coImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCQkJCQlGaWxlUGF0 aE5hbWUodGhpc2ZpbGUpKSkpOworCQkJCX0KKworCQkJCWZpbGUtPm5ieXRlcyA9IG5yZWFkOwor CQkJCWZpbGUtPmN1ck9mZnNldCArPSBucmVhZDsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkv KgorCQkJCSAqIFJlYWQgY29tcHJlc3NlZCBkYXRhIGludG8gdGhlIHNlcGFyYXRlIGJ1ZmZlciwg YW5kIHRoZW4KKwkJCQkgKiBkZWNvbXByZXNzIGludG8gdGhlIHRhcmdldCBmaWxlIGJ1ZmZlci4K KwkJCQkgKi8KKwkJCQlucmVhZCA9IEZpbGVSZWFkKHRoaXNmaWxlLAorCQkJCQkJCQkgYnVmZiwK KwkJCQkJCQkJIGhlYWRlci5sZW4sCisJCQkJCQkJCSBmaWxlLT5jdXJPZmZzZXQsCisJCQkJCQkJ CSBXQUlUX0VWRU5UX0JVRkZJTEVfUkVBRCk7CisJCQkJaWYgKG5yZWFkICE9IGhlYWRlci5sZW4p CisJCQkJeworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2Fj Y2VzcygpLAorCQkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIs CisJCQkJCQkJCQlGaWxlUGF0aE5hbWUodGhpc2ZpbGUpKSkpOworCQkJCX0KKworCQkJCXN3aXRj aCAoZmlsZS0+Y29tcHJlc3MpCisJCQkJeworCQkJCQljYXNlIFRFTVBfTFo0X0NPTVBSRVNTSU9O OgorI2lmZGVmIFVTRV9MWjQKKwkJCQkJCWZpbGUtPm5ieXRlcyA9IExaNF9kZWNvbXByZXNzX3Nh ZmUoYnVmZiwKKwkJCQkJCQkJCQkJCQkJICAgZmlsZS0+YnVmZmVyLmRhdGEsIGhlYWRlci5sZW4s CisJCQkJCQkJCQkJCQkJCSAgIHNpemVvZihmaWxlLT5idWZmZXIpKTsKKyNlbmRpZgorCQkJCQkJ YnJlYWs7CisKKwkJCQkJY2FzZSBURU1QX1BHTFpfQ09NUFJFU1NJT046CisJCQkJCQlmaWxlLT5u Ynl0ZXMgPSBwZ2x6X2RlY29tcHJlc3MoYnVmZiwgaGVhZGVyLmxlbiwKKwkJCQkJCQkJCQkJCQkg ICBmaWxlLT5idWZmZXIuZGF0YSwgaGVhZGVyLnJhd19sZW4sIGZhbHNlKTsKKwkJCQkJCWJyZWFr OworCQkJCX0KKwkJCQlmaWxlLT5jdXJPZmZzZXQgKz0gbnJlYWQ7CisKKwkJCQlpZiAoZmlsZS0+ bmJ5dGVzIDwgMCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RF X0RBVEFfQ09SUlVQVEVEKSwKKwkJCQkJCQkgZXJybXNnX2ludGVybmFsKCJjb21wcmVzc2VkIGRh dGEgaXMgY29ycnVwdCIpKSk7CisKKwkJCQkvKiBzaG91bGQgaGF2ZSBnb3QgdGhlIGV4cGVjdGVk IGxlbmd0aCAqLworCQkJCUFzc2VydChmaWxlLT5uYnl0ZXMgPT0gaGVhZGVyLnJhd19sZW4pOwor CQkJfQorCQl9CiAJfQogCiAJaWYgKHRyYWNrX2lvX3RpbWluZykKQEAgLTQ5NCw4ICs3MDcsOTMg QEAgc3RhdGljIHZvaWQKIEJ1ZkZpbGVEdW1wQnVmZmVyKEJ1ZkZpbGUgKmZpbGUpCiB7CiAJaW50 NjQJCXdwb3MgPSAwOwotCWludDY0CQlieXRlc3Rvd3JpdGU7CisJaW50NjQJCWJ5dGVzdG93cml0 ZSA9IDA7CiAJRmlsZQkJdGhpc2ZpbGU7CisJY2hhcgkgICAqRGF0YVRvV3JpdGUgPSBmaWxlLT5i dWZmZXIuZGF0YTsKKwlpbnQJCQluYnl0ZXNPcmlnaW5hbCA9IGZpbGUtPm5ieXRlczsKKworCS8q CisJICogQ29tcHJlc3MgdGhlIGRhdGEgaWYgcmVxdWVzdGVkIGZvciB0aGlzIHRlbXBvcmFyeSBm aWxlIChhbmQgaWYgZW5hYmxlZAorCSAqIGJ5IHRoZSB0ZW1wX2ZpbGVfY29tcHJlc3Npb24gR1VD KS4KKwkgKgorCSAqIFRoZSBjb21wcmVzc2VkIGRhdGEgaXMgd3JpdHRlbiB0byB0aGUgb25lIHNo YXJlZCBjb21wcmVzc2lvbiBidWZmZXIuCisJICogVGhlcmUncyBvbmx5IGEgc2luZ2xlIGNvbXBy ZXNzaW9uIG9wZXJhdGlvbiBhdCBhbnkgZ2l2ZW4gdGltZSwgc28gb25lCisJICogYnVmZmVyIGlz IGVub3VnaC4KKwkgKgorCSAqIFRoZW4gd2Ugc2ltcGx5IHBvaW50IHRoZSAiRGF0YVRvV3JpdGUi IGJ1ZmZlciBhdCB0aGUgY29tcHJlc3NlZCBidWZmZXIuCisJICovCisJaWYgKGZpbGUtPmNvbXBy ZXNzICE9IFRFTVBfTk9ORV9DT01QUkVTU0lPTikKKwl7CisJCWNoYXIJICAgKmNEYXRhOworCQlp bnQJCQljU2l6ZSA9IDA7CisJCUNvbXByZXNzSGVhZGVyIGhlYWRlcjsKKworCQlBc3NlcnQoZmls ZS0+Y0J1ZmZlciAhPSBOVUxMKTsKKwkJY0RhdGEgPSBmaWxlLT5jQnVmZmVyOworCisJCS8qIGlu aXRpYWxpemUgdGhlIGhlYWRlciBmb3IgY29tcHJlc3Npb24gKi8KKwkJaGVhZGVyLmxlbiA9IC0x OworCQloZWFkZXIucmF3X2xlbiA9IG5ieXRlc09yaWdpbmFsOworCisJCXN3aXRjaCAoZmlsZS0+ Y29tcHJlc3MpCisJCXsKKwkJCWNhc2UgVEVNUF9MWjRfQ09NUFJFU1NJT046CisJCQkJeworI2lm ZGVmIFVTRV9MWjQKKwkJCQkJaW50CQkJY0J1ZmZlclNpemUgPSBMWjRfY29tcHJlc3NCb3VuZChm aWxlLT5uYnl0ZXMpOworCisJCQkJCS8qCisJCQkJCSAqIFhYWCBXZSBtaWdodCB1c2UgbHo0IHN0 cmVhbSBjb21wcmVzc2lvbiBoZXJlLiBEZXBlbmRpbmcKKwkJCQkJICogb24gdGhlIGRhdGEsIHRo YXQgbWlnaHQgaW1wcm92ZSB0aGUgY29tcHJlc3Npb24gcmF0aW8uCisJCQkJCSAqIFRoZSBsZW5n dGggaXMgc3RvcmVkIGF0IHRoZSBiZWdpbm5pbmcsIHdlJ2xsIGZpbGwgaXQgaW4KKwkJCQkJICog YXQgdGhlIGVuZC4KKwkJCQkJICovCisJCQkJCWNTaXplID0gTFo0X2NvbXByZXNzX2RlZmF1bHQo ZmlsZS0+YnVmZmVyLmRhdGEsCisJCQkJCQkJCQkJCQkgY0RhdGEgKyBzaXplb2YoQ29tcHJlc3NI ZWFkZXIpLAorCQkJCQkJCQkJCQkJIGZpbGUtPm5ieXRlcywgY0J1ZmZlclNpemUpOworCQkJCQlp ZiAoY1NpemUgPT0gMCkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJCQkJCSBlcnJtc2dfaW50ZXJuYWwo ImNvbXByZXNzaW9uIGZhaWxlZCwgY29tcHJlc3NlZCBzaXplICVkLCBvcmlnaW5hbCBzaXplICVk IiwKKwkJCQkJCQkJCQkJCSBjU2l6ZSwgbmJ5dGVzT3JpZ2luYWwpKSk7CisJCQkJCX0KKyNlbmRp ZgorCQkJCQlicmVhazsKKwkJCQl9CisJCQljYXNlIFRFTVBfUEdMWl9DT01QUkVTU0lPTjoKKwkJ CQljU2l6ZSA9IHBnbHpfY29tcHJlc3MoZmlsZS0+YnVmZmVyLmRhdGEsIGZpbGUtPm5ieXRlcywK KwkJCQkJCQkJCSAgY0RhdGEgKyBzaXplb2YoQ29tcHJlc3NIZWFkZXIpLAorCQkJCQkJCQkJICBQ R0xaX3N0cmF0ZWd5X2Fsd2F5cyk7CisKKwkJCQkvKgorCQkJCSAqIHBnbHogcmV0dXJucyAtMSBm b3Igbm9uLWNvbXByZXNzaWJsZSBkYXRhLiBJbiB0aGF0IGNhc2UKKwkJCQkgKiBqdXN0IGNvcHkg dGhlIHJhdyBkYXRhIGludG8gdGhlIG91dHB1dCBidWZmZXIuCisJCQkJICovCisJCQkJaWYgKGNT aXplID09IC0xKQorCQkJCXsKKwkJCQkJbWVtY3B5KGNEYXRhICsgc2l6ZW9mKENvbXByZXNzSGVh ZGVyKSwgZmlsZS0+YnVmZmVyLmRhdGEsCisJCQkJCQkgICBoZWFkZXIucmF3X2xlbik7CisKKwkJ CQkJY1NpemUgPSBoZWFkZXIucmF3X2xlbjsKKwkJCQkJaGVhZGVyLnJhd19sZW4gPSAtMTsKKwkJ CQl9CisJCQkJYnJlYWs7CisJCX0KKworCQlBc3NlcnQoY1NpemUgIT0gLTEpOworCQloZWFkZXIu bGVuID0gY1NpemU7CisKKwkJLyoKKwkJICogV3JpdGUgdGhlIGhlYWRlciB3aXRoIGNvbXByZXNz ZWQgbGVuZ3RoIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlCisJCSAqIGJ1ZmZlci4gV2Ugc3RvcmUg Ym90aCB0aGUgY29tcHJlc3NlZCBhbmQgcmF3IGxlbmd0aHMsIGFuZCB1c2UKKwkJICogcmF3X2xl bj0tMSB3aGVuIHRoZSBkYXRhIHdhcyBub3QgY29tcHJlc3NlZCBhZnRlciBhbGwuCisJCSAqLwor CQltZW1jcHkoY0RhdGEsICZoZWFkZXIsIHNpemVvZihDb21wcmVzc0hlYWRlcikpOworCQlmaWxl LT5uYnl0ZXMgPSBoZWFkZXIubGVuICsgc2l6ZW9mKENvbXByZXNzSGVhZGVyKTsKKworCQlEYXRh VG9Xcml0ZSA9IGNEYXRhOworCX0KIAogCS8qCiAJICogVW5saWtlIEJ1ZkZpbGVMb2FkQnVmZmVy LCB3ZSBtdXN0IGR1bXAgdGhlIHdob2xlIGJ1ZmZlciBldmVuIGlmIGl0CkBAIC01MzUsNyArODMz LDcgQEAgQnVmRmlsZUR1bXBCdWZmZXIoQnVmRmlsZSAqZmlsZSkKIAkJCUlOU1RSX1RJTUVfU0VU X1pFUk8oaW9fc3RhcnQpOwogCiAJCWJ5dGVzdG93cml0ZSA9IEZpbGVXcml0ZSh0aGlzZmlsZSwK LQkJCQkJCQkJIGZpbGUtPmJ1ZmZlci5kYXRhICsgd3BvcywKKwkJCQkJCQkJIERhdGFUb1dyaXRl ICsgd3BvcywKIAkJCQkJCQkJIGJ5dGVzdG93cml0ZSwKIAkJCQkJCQkJIGZpbGUtPmN1ck9mZnNl dCwKIAkJCQkJCQkJIFdBSVRfRVZFTlRfQlVGRklMRV9XUklURSk7CkBAIC01NjQsNyArODYyLDE3 IEBAIEJ1ZkZpbGVEdW1wQnVmZmVyKEJ1ZkZpbGUgKmZpbGUpCiAJICogbG9naWNhbCBmaWxlIHBv c2l0aW9uLCBpZSwgb3JpZ2luYWwgdmFsdWUgKyBwb3MsIGluIGNhc2UgdGhhdCBpcyBsZXNzCiAJ ICogKGFzIGNvdWxkIGhhcHBlbiBkdWUgdG8gYSBzbWFsbCBiYWNrd2FyZHMgc2VlayBpbiBhIGRp cnR5IGJ1ZmZlciEpCiAJICovCi0JZmlsZS0+Y3VyT2Zmc2V0IC09IChmaWxlLT5uYnl0ZXMgLSBm aWxlLT5wb3MpOworCWlmICghZmlsZS0+Y29tcHJlc3MpCisJCWZpbGUtPmN1ck9mZnNldCAtPSAo ZmlsZS0+bmJ5dGVzIC0gZmlsZS0+cG9zKTsKKwllbHNlIGlmIChuYnl0ZXNPcmlnaW5hbCAtIGZp bGUtPnBvcyAhPSAwKQorCXsKKwkJLyoKKwkJICogY3VyT2Zmc2V0IG11c3QgYmUgY29ycmVjdGVk IGFsc28gaWYgY29tcHJlc3Npb24gaXMgZW5hYmxlZCwgbmJ5dGVzCisJCSAqIHdhcyBjaGFuZ2Vk IGJ5IGNvbXByZXNzaW9uIGJ1dCB3ZSBoYXZlIHRvIHVzZSB0aGUgb3JpZ2luYWwgdmFsdWUgb2YK KwkJICogbmJ5dGVzCisJCSAqLworCQlmaWxlLT5jdXJPZmZzZXQgLT0gYnl0ZXN0b3dyaXRlOwor CX0KIAlpZiAoZmlsZS0+Y3VyT2Zmc2V0IDwgMCkJLyogaGFuZGxlIHBvc3NpYmxlIHNlZ21lbnQg Y3Jvc3NpbmcgKi8KIAl7CiAJCWZpbGUtPmN1ckZpbGUtLTsKQEAgLTYwMiw4ICs5MTAsMTQgQEAg QnVmRmlsZVJlYWRDb21tb24oQnVmRmlsZSAqZmlsZSwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwg Ym9vbCBleGFjdCwgYm9vbCBlb2ZPSykKIAl7CiAJCWlmIChmaWxlLT5wb3MgPj0gZmlsZS0+bmJ5 dGVzKQogCQl7Ci0JCQkvKiBUcnkgdG8gbG9hZCBtb3JlIGRhdGEgaW50byBidWZmZXIuICovCi0J CQlmaWxlLT5jdXJPZmZzZXQgKz0gZmlsZS0+cG9zOworCQkJLyoKKwkJCSAqIFRyeSB0byBsb2Fk IG1vcmUgZGF0YSBpbnRvIGJ1ZmZlci4KKwkJCSAqCisJCQkgKiBjdXJPZmZzZXQgaXMgbW92ZWQg d2l0aGluIEJ1ZkZpbGVMb2FkQnVmZmVyIGJlY2F1c2Ugc3RvcmVkIGRhdGEKKwkJCSAqIHNpemUg ZGlmZmVycyBmcm9tIGxvYWRlZC8gZGVjb21wcmVzc2VkIHNpemUKKwkJCSAqLworCQkJaWYgKCFm aWxlLT5jb21wcmVzcykKKwkJCQlmaWxlLT5jdXJPZmZzZXQgKz0gZmlsZS0+cG9zOwogCQkJZmls ZS0+cG9zID0gMDsKIAkJCWZpbGUtPm5ieXRlcyA9IDA7CiAJCQlCdWZGaWxlTG9hZEJ1ZmZlcihm aWxlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMu ZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKaW5kZXggN2M2 MGIxMjU1NjQuLjRhNTFjNGJiMTMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJh bWV0ZXJzLmRhdApAQCAtMjkzMyw2ICsyOTMzLDEzIEBACiAgIGNoZWNrX2hvb2sgPT4gJ2NoZWNr X3RlbXBfYnVmZmVycycsCiB9LAogCit7IG5hbWUgPT4gJ3RlbXBfZmlsZV9jb21wcmVzc2lvbics IHR5cGUgPT4gJ2VudW0nLCBjb250ZXh0ID0+ICdQR0NfVVNFUlNFVCcsIGdyb3VwID0+ICdDTElF TlRfQ09OTl9TVEFURU1FTlQnLAorICBzaG9ydF9kZXNjID0+ICdTZXRzIHRoZSBkZWZhdWx0IGNv bXByZXNzaW9uIG1ldGhvZCBmb3IgdGVtcG9yYXJ5IGZpbGVzLicsCisgIHZhcmlhYmxlID0+ICd0 ZW1wX2ZpbGVfY29tcHJlc3Npb24nLAorICBib290X3ZhbCA9PiAnVEVNUF9OT05FX0NPTVBSRVNT SU9OJywKKyAgb3B0aW9ucyA9PiAndGVtcF9maWxlX2NvbXByZXNzaW9uX29wdGlvbnMnLAorfSwK KwogeyBuYW1lID0+ICd0ZW1wX2ZpbGVfbGltaXQnLCB0eXBlID0+ICdpbnQnLCBjb250ZXh0ID0+ ICdQR0NfU1VTRVQnLCBncm91cCA9PiAnUkVTT1VSQ0VTX0RJU0snLAogICBzaG9ydF9kZXNjID0+ ICdMaW1pdHMgdGhlIHRvdGFsIHNpemUgb2YgYWxsIHRlbXBvcmFyeSBmaWxlcyB1c2VkIGJ5IGVh Y2ggcHJvY2Vzcy4nLAogICBsb25nX2Rlc2MgPT4gJy0xIG1lYW5zIG5vIGxpbWl0LicsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDczZmY2YWQwYTMyLi4yODg3ZDhjOTgyNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTc4LDYgKzc4LDcgQEAKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9zeW5jcmVwLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9haW8uaCIKICNp bmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmZmlsZS5oIgog I2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29weWRpci5o IgogI2luY2x1ZGUgInN0b3JhZ2UvaW9fd29ya2VyLmgiCkBAIC00NjQsNiArNDY1LDE4IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2VudW1fZW50cnkgZGVmYXVsdF90b2FzdF9jb21wcmVz c2lvbl9vcHRpb25zW10gPSB7CiAJe05VTEwsIDAsIGZhbHNlfQogfTsKIAorLyoKKyAqIHBnbHog YW5kIHpzdGQgc3VwcG9ydCBzaG91bGQgYmUgYWRkZWQgYXMgZnV0dXJlIGVuaGFuY2VtZW50Cisg Ki8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2VudW1fZW50cnkgdGVtcF9maWxlX2NvbXBy ZXNzaW9uX29wdGlvbnNbXSA9IHsKKwl7Im5vIiwgVEVNUF9OT05FX0NPTVBSRVNTSU9OLCBmYWxz ZX0sCisJeyJwZ2x6IiwgVEVNUF9QR0xaX0NPTVBSRVNTSU9OLCBmYWxzZX0sCisjaWZkZWYgIFVT RV9MWjQKKwl7Imx6NCIsIFRFTVBfTFo0X0NPTVBSRVNTSU9OLCBmYWxzZX0sCisjZW5kaWYKKwl7 TlVMTCwgMCwgZmFsc2V9Cit9OworCiBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ19lbnVtX2Vu dHJ5IHdhbF9jb21wcmVzc2lvbl9vcHRpb25zW10gPSB7CiAJeyJwZ2x6IiwgV0FMX0NPTVBSRVNT SU9OX1BHTFosIGZhbHNlfSwKICNpZmRlZiBVU0VfTFo0CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggZGM5ZTIyNTVmOGEuLjlmMGZjOTk2YjZl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1w bGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBA IC0xODAsOCArMTgwLDkgQEAKIAogI2ZpbGVfY29weV9tZXRob2QgPSBjb3B5ICAgICAgICAgICAg ICAgICMgY29weSwgY2xvbmUgKGlmIHN1cHBvcnRlZCBieSBPUykKIAotI21heF9ub3RpZnlfcXVl dWVfcGFnZXMgPSAxMDQ4NTc2ICAgICAgICMgbGltaXRzIHRoZSBudW1iZXIgb2YgU0xSVSBwYWdl cyBhbGxvY2F0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZv ciBOT1RJRlkgLyBMSVNURU4gcXVldWUKKyNtYXhfbm90aWZ5X3F1ZXVlX3BhZ2VzID0gMTA0ODU3 NgkjIGxpbWl0cyB0aGUgbnVtYmVyIG9mIFNMUlUgcGFnZXMgYWxsb2NhdGVkCisJCQkJCSMgZm9y IE5PVElGWSAvIExJU1RFTiBxdWV1ZQorI3RlbXBfZmlsZV9jb21wcmVzc2lvbiA9ICdubycJCSMg ZW5hYmxlcyB0ZW1wb3JhcnkgZmlsZXMgY29tcHJlc3Npb24KIAogIyAtIEtlcm5lbCBSZXNvdXJj ZXMgLQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5jCmluZGV4IGU1N2ZhNWJjYTY0Li43 NjY5NWU0YzllNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3Jl LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKQEAgLTg2MCw3ICs4 NjAsMTMgQEAgdHVwbGVzdG9yZV9wdXR0dXBsZV9jb21tb24oVHVwbGVzdG9yZXN0YXRlICpzdGF0 ZSwgdm9pZCAqdHVwbGUpCiAJCQkgKi8KIAkJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhzdGF0ZS0+Y29udGV4dC0+cGFyZW50KTsKIAotCQkJc3RhdGUtPm15ZmlsZSA9IEJ1ZkZpbGVD cmVhdGVUZW1wKHN0YXRlLT5pbnRlclhhY3QpOworCQkJLyoKKwkJCSAqIElmIHJlcXVlc3RlZCBy YW5kb20gYWNjZXNzLCBjYW4ndCBjb21wcmVzcyB0aGUgdGVtcCBmaWxlLgorCQkJICovCisJCQlp ZiAoKHN0YXRlLT5lZmxhZ3MgJiBFWEVDX0ZMQUdfQkFDS1dBUkQpICE9IDApCisJCQkJc3RhdGUt Pm15ZmlsZSA9IEJ1ZkZpbGVDcmVhdGVUZW1wKHN0YXRlLT5pbnRlclhhY3QpOworCQkJZWxzZQor CQkJCXN0YXRlLT5teWZpbGUgPSBCdWZGaWxlQ3JlYXRlQ29tcHJlc3NUZW1wKHN0YXRlLT5pbnRl clhhY3QpOwogCiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZmaWxlLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1 ZmZpbGUuaAppbmRleCA2NzU0ZjM3ODM2Yy4uMmU1MmNhNzRiZGUgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvYnVmZmlsZS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmZmls ZS5oCkBAIC0zMiwxMSArMzIsMjEgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgQnVmRmlsZSBCdWZGaWxl OwogCit0eXBlZGVmIGVudW0KK3sKKwlURU1QX05PTkVfQ09NUFJFU1NJT04sCisJVEVNUF9QR0xa X0NPTVBSRVNTSU9OLAorCVRFTVBfTFo0X0NPTVBSRVNTSU9OCit9IFRlbXBDb21wcmVzc2lvbjsK KworZXh0ZXJuIFBHRExMSU1QT1JUIGludCB0ZW1wX2ZpbGVfY29tcHJlc3Npb247CisKIC8qCiAg KiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gYnVmZmlsZS5jCiAgKi8KIAogZXh0ZXJuIEJ1 ZkZpbGUgKkJ1ZkZpbGVDcmVhdGVUZW1wKGJvb2wgaW50ZXJYYWN0KTsKK2V4dGVybiBCdWZGaWxl ICpCdWZGaWxlQ3JlYXRlQ29tcHJlc3NUZW1wKGJvb2wgaW50ZXJYYWN0KTsKIGV4dGVybiB2b2lk IEJ1ZkZpbGVDbG9zZShCdWZGaWxlICpmaWxlKTsKIHBnX25vZGlzY2FyZCBleHRlcm4gc2l6ZV90 IEJ1ZkZpbGVSZWFkKEJ1ZkZpbGUgKmZpbGUsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOwogZXh0 ZXJuIHZvaWQgQnVmRmlsZVJlYWRFeGFjdChCdWZGaWxlICpmaWxlLCB2b2lkICpwdHIsIHNpemVf dCBzaXplKTsKLS0gCjIuNTEuMQoK --00000000000011029a0648ab89e6--