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 1wSYoB-003G9y-37 for pgsql-hackers@arkaria.postgresql.org; Thu, 28 May 2026 11:21:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wSYo8-00BeEC-2R for pgsql-hackers@arkaria.postgresql.org; Thu, 28 May 2026 11:21:49 +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 1wSYo7-00BeE4-2Y for pgsql-hackers@lists.postgresql.org; Thu, 28 May 2026 11:21:49 +0000 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wSYo5-000000019nD-3fQi for pgsql-hackers@postgresql.org; Thu, 28 May 2026 11:21:47 +0000 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-834f1075805so9572320b3a.2 for ; Thu, 28 May 2026 04:21:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779967305; cv=none; d=google.com; s=arc-20240605; b=ZiARdSzE4Q/FkOD/kzTdlCiK4JC6m2mZ3arumggOmu2sDBaIQLuT1LYA9T5GUcnzXn 2jCFeKodJb5v3RnptejuWAsjqcileIvZ3iWDlIQm0LKnNQSpiIw/vLiFQnFWF34N/Mbg XX+2nsSUUTHgEcH8G4MXL7plYN8kQBy426WLkjbVbzHdpPz5yL4MXruCRlNbmwruMIaG xI7yFLWMUEAUj/n9Bku/YkJjnGpjpZmEbGI++1pgp4h35Iqrq8QJW4W2hy7G1w5Kt/lV udq/kIuo2wxAKzI79xFM8V0m69SWitPiGoHJh6LbPLxhY2Yvh0gOEWYlnbKKEFeEBkyx cwmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=wUH4Pvf8JDFBvwTNlToveOvCR02E81hJ1dcQCrasdeA=; fh=GxyMRk3vMnT5dLtCj5/1JAlmuGl0Bl4frI5UrsOkdOM=; b=eIC8T3EAcQP46KZlTnvoVyK7SbZwrMz6psdyg8NQbrBLamlPXjaBx/A1gwpBTviNo5 2sK3pVrGjxy2pDbEsyconbuFU3KgQG6oMDjKZ12NXHnjH0QQqVtc7K0ui34bSgI7e1zt MNwb7YgYZA3TUpWVfAf/cESslohFrPZw0pVW8kVVe3DKRyNicZzWh7Zv33nailPjoZIW nK1cCF+jy1XxhYW8OssxDOhxtZeb8EVtOO6zEXNTU0PJJapcztag4RULv6fn157x59A+ E2VDRjQU6YARQpAu8GuRj6PCZZ+i3xzvq+5eC1jNUWaU7HDAQu+AmBe7P+I83B3voSTI /RmQ==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779967305; x=1780572105; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=wUH4Pvf8JDFBvwTNlToveOvCR02E81hJ1dcQCrasdeA=; b=lBkzm5VEGOi2zF8mERV8Jde3c8nn/w2acJAApLdKTmKNWLvYtqs6sNTyHSPkQehI1i wtP9O1DR8rf7ARVimuBsAD5ERZAgcOuTwtU8CmoyOl6vKlRQerUb8AUC8anMe/H2+5C6 kYBS8pKFgM5sYP1NhsjvHdWipb86enrCnR10088KNP4r7y6QNed7ixeImKb9JbirrJ9n dxC4Z6LdaFMvLfnQFk9D+K/lWNmOIQuX42VgQxut093l/5Atj6gEN26mU0+5jYizoC6B UyRRPp9sRTyYwshL1taxQHm+aOG4pfphcmJ43j5g1SF9+zlhljYh17XlAJVtZU65VG4K /BkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779967305; x=1780572105; 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=wUH4Pvf8JDFBvwTNlToveOvCR02E81hJ1dcQCrasdeA=; b=cd4vSK3obPzXNI51gvIqII8Zk8Ew9hoeOZCG2QGcwc5Rz2X9PJ+tAnmBzC88d6eiBi C1oYPJ6mWPuhtibP6/vumN/yUS6qWR0wPoDEEnoMHp3EpHeY+oLss+AxIvvW2YU5iG93 EeV00vd2RvJvLiNB3qQBT4qjcDEp+X0RYejy87hN/l2K+1Fe8C3VXVg5sjzc0321UzNU sGMIyVQ724kePcVHmjeQL0HaTVfwy7a6Bk/y0YI1vrEO6oXxgrvWNYR+4mI/vhny77En loR2bbwKXFyYhf03xg/ty5vHXkjTXCrWIF+FnPdA/4ncvxzLp2nSaDuSlnXDjo4jEjUV +MVA== X-Gm-Message-State: AOJu0YwG6Pc754DrzQx8f/MjnjM3Vex8Gsoa1HvWiXOWKBwHxfd/76kj eJAINBsTt7KrDQqOjMiRc5PKumKByw2TDiMqJUmk1crbVC29l4rbwezagctY6D9BXCgyuXJTa81 LOZgZEw2lx45g3K9BjUzsdGQKkWVA2SdGXR4zQag= X-Gm-Gg: Acq92OHzKIUeI6zPgqMlZlGtc85J61KoY21PfGQAr3Wbj04AByRhKlmvSNeLnPgJ+vw wnbwdMeIToonUqIl3ZOjCjhSjOOT4W5ZSm29IcG2HmPgEdx9KXP6By5SZ+v/slnAMNiKKx2zNwF 63y0pG7ngpxqJYJ4hkO35aDfRnARbedcai1wpcTtIArDyQyShhHUE5Nzbn7/Nv6ilcTtFxOZ+qB dUTLt1L8MZhRjS98SOHNQlqXGLShl+gO7NiIQOvv0q1RMoFToMmStLwNrN/oytP8JpF6HiimCjO aFtIR25kCctVyZtcDX/TSfQ7K+v5vDa4cl62IGncTpehOwjLdZeivMHayaUb X-Received: by 2002:a05:6a00:28c3:b0:838:4952:1109 with SMTP id d2e1a72fcca58-8415f0ebe62mr27825437b3a.3.1779967304641; Thu, 28 May 2026 04:21:44 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: r314tive Date: Thu, 28 May 2026 16:21:32 +0500 X-Gm-Features: AVHnY4KVZ4eatd3DDHgNMOMvWcadR37llwSrz13bFmMTWl4DgbK6hasw-CIET2w Message-ID: Subject: [RFC PATCH v3] Add EXPLAIN ANALYZE wait event reporting To: pgsql-hackers@postgresql.org Cc: Michael Paquier Content-Type: multipart/mixed; boundary="000000000000e7e4510652deeeb3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e7e4510652deeeb3 Content-Type: multipart/alternative; boundary="000000000000e7e4500652deeeb1" --000000000000e7e4500652deeeb1 Content-Type: text/plain; charset="UTF-8" This v3 rebases v2 over current master after CFBot reported that v2 no longer applied cleanly. The rebase conflict was in psql EXPLAIN option completion. Current master already has IO in that completion list; v3 preserves IO and adds WAITS alongside it. No accounting-code changes from v2. One mechanical difference from v2: the old v2 patch that only kept psql completion current is gone. That change is obsolete on current master, so v3 has seven patches instead of eight. v0 thread: https://www.postgresql.org/message-id/cover.1778280923.git.tanswis42%40gmail.com CommitFest entry: https://commitfest.postgresql.org/patch/6753/ This RFC prototype adds EXPLAIN (ANALYZE, WAITS), which reports completed wait intervals observed through pgstat_report_wait_start/end(). Statement-level wait events are counted once per active statement collector. Plan-node wait events use inclusive attribution, similar to EXPLAIN ANALYZE timing: a completed wait is attributed to every active plan node captured when the wait begins. Per-node wait times therefore must not be summed across plan nodes. The patch series is split as follows: 1. Add statement-level EXPLAIN WAITS reporting. 2. Aggregate statement-level EXPLAIN WAITS from parallel workers. 3. Attribute EXPLAIN WAITS to plan nodes. 4. Refine attribution semantics, documentation, regression coverage, and psql EXPLAIN option completion for current master. 5. Harden accumulator handling with fixed-size, allocation-free storage. 6. Hide accumulator internals from public headers. 7. Stabilize EXPLAIN WAITS regression tests. The main review questions are: - whether the option should be named WAITS or WAIT_EVENTS; - whether inclusive per-node attribution is the right initial semantics; - whether the fixed accumulator limit and overflow reporting are acceptable; - whether the disabled/enabled hot-path overhead is acceptable. Local verification for this rebase: - the v3 patch series applies cleanly to current origin/master; - git diff --check passes; - a fresh verify worktree after applying the v3 attachments matches the v3 branch tree. I did not rerun the regression suite in the fresh v3 rebase worktree; it is not configured for a local build. The v2 accounting code plus the regression stabilization patch passed make -C src/test/regress check TESTS=explain locally before this rebase. Regards, Ilmar > --000000000000e7e4500652deeeb1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
This v3 rebases v2 over current master after CFBot reporte= d that v2 no
longer applied cleanly.

The rebase conflict was in p= sql EXPLAIN option completion. Current master
already has IO in that com= pletion list; v3 preserves IO and adds WAITS
alongside it.

No acc= ounting-code changes from v2.

One mechanical difference from v2: the= old v2 patch that only kept psql
completion current is gone.=C2=A0 That= change is obsolete on current master, so
v3 has seven patches instead o= f eight.

v0 thread:
https://www.postgresql.org/= message-id/cover.1778280923.git.tanswis42%40gmail.com

CommitFest= entry:
https:= //commitfest.postgresql.org/patch/6753/

This RFC prototype adds = EXPLAIN (ANALYZE, WAITS), which reports completed wait
intervals observe= d through pgstat_report_wait_start/end().

Statement-level wait event= s are counted once per active statement collector.
Plan-node wait events= use inclusive attribution, similar to EXPLAIN ANALYZE
timing: a complet= ed wait is attributed to every active plan node captured when
the wait b= egins.=C2=A0 Per-node wait times therefore must not be summed across plannodes.

The patch series is split as follows:

1. Add stateme= nt-level EXPLAIN WAITS reporting.
2. Aggregate statement-level EXPLAIN W= AITS from parallel workers.
3. Attribute EXPLAIN WAITS to plan nodes.4. Refine attribution semantics, documentation, regression coverage, and p= sql
=C2=A0 =C2=A0EXPLAIN option completion for current master.
5. Har= den accumulator handling with fixed-size, allocation-free storage.
6. Hi= de accumulator internals from public headers.
7. Stabilize EXPLAIN WAITS= regression tests.

The main review questions are:

- whether t= he option should be named WAITS or WAIT_EVENTS;
- whether inclusive per-= node attribution is the right initial semantics;
- whether the fixed acc= umulator limit and overflow reporting are acceptable;
- whether the disa= bled/enabled hot-path overhead is acceptable.

Local verification for= this rebase:

- the v3 patch series applies cleanly to current origi= n/master;
- git diff --check passes;
- a fresh verify worktree after = applying the v3 attachments matches the v3
=C2=A0 branch tree.

I = did not rerun the regression suite in the fresh v3 rebase worktree; it isnot configured for a local build. The v2 accounting code plus the regress= ion
stabilization patch passed make -C src/test/regress check TESTS=3Dex= plain
locally before this rebase.

Regards,
Ilmar
--000000000000e7e4500652deeeb1-- --000000000000e7e4510652deeeb3 Content-Type: application/octet-stream; name="0003-Attribute-EXPLAIN-WAITS-to-plan-nodes.patch" Content-Disposition: attachment; filename="0003-Attribute-EXPLAIN-WAITS-to-plan-nodes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mppej28v2 RnJvbSBmZDJjNDg0YmQzMTg0YjBlNTBkMjVkZjI3YjdiODc4Y2E0NmY3YzE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDQ6MzUgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MyAzLzddIEF0dHJpYnV0ZSBFWFBMQUlOIFdBSVRTIHRvIHBsYW4gbm9kZXMKCi0tLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjQXN5bmMuYyAgICAgICAgICAgfCAgMjIgKysrKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgIHwgMTMxICsrKysrKysrKysrKysrKysrKy0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAgIHwgIDMxICsrKyst CiBzcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgICAgICAgICAgfCAgIDcgKysKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYyAgICAgICB8ICAgNyArKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jIHwgICA3ICsrCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYyAgICAgICAgfCAgIDcgKysKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVIYXNoLmMgICAgICAgICAgICB8ICAgNyArKwogc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvd2FpdF9ldmVudC5jICAgIHwgIDQ5ICsrKysrKystCiBzcmMvaW5jbHVkZS9leGVj dXRvci9pbnN0cnVtZW50LmggICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZl bnQuaCAgICAgICAgICAgICB8ICAgNCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxh aW4ub3V0ICAgICAgfCAgNTIgKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4u c3FsICAgICAgICAgICB8ICAyOSArKysrKwogMTUgZmlsZXMgY2hhbmdlZCwgMzMzIGluc2VydGlv bnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCA5ZDczNzJm NTQxNS4uMDU3NWFlODM2OGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTUzMCw2ICs1MzAs OCBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2Ug KmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1F TlRfV0FMOwogCWlmIChlcy0+aW8pCiAJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRf SU87CisJaWYgKGVzLT53YWl0cykKKwkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9X QUlUUzsKIAogCS8qCiAJICogV2UgYWx3YXlzIGNvbGxlY3QgdGltaW5nIGZvciB0aGUgZW50aXJl IHN0YXRlbWVudCwgZXZlbiB3aGVuIG5vZGUtbGV2ZWwKQEAgLTIzMzIsNiArMjMzNCw4IEBAIEV4 cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJCXNob3df YnVmZmVyX3VzYWdlKGVzLCAmcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5pbnN0ci5idWZ1c2FnZSk7 CiAJaWYgKGVzLT53YWwgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQogCQlzaG93X3dhbF91c2Fn ZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIud2FsdXNhZ2UpOworCWlmIChlcy0+ d2FpdHMpCisJCXNob3dfd2FpdF9ldmVudF91c2FnZShlcywgcGxhbnN0YXRlLT53YWl0X2V2ZW50 X3VzYWdlKTsKIAogCS8qIFByZXBhcmUgcGVyLXdvcmtlciBidWZmZXIvV0FMIHVzYWdlICovCiAJ aWYgKGVzLT53b3JrZXJzX3N0YXRlICYmIChlcy0+YnVmZmVycyB8fCBlcy0+d2FsKSAmJiBlcy0+ dmVyYm9zZSkKQEAgLTQ1NTksNyArNDU2Myw3IEBAIHNob3dfd2FpdF9ldmVudF91c2FnZShFeHBs YWluU3RhdGUgKmVzLCBjb25zdCBXYWl0RXZlbnRVc2FnZSAqdXNhZ2UpCiAJaWYgKHVzYWdlID09 IE5VTEwpCiAJCXJldHVybjsKIAotCWlmIChlcy0+Zm9ybWF0ID09IEVYUExBSU5fRk9STUFUX1RF WFQgJiYgdXNhZ2UtPm5lbnRyaWVzID09IDApCisJaWYgKHVzYWdlLT5uZW50cmllcyA9PSAwKQog CQlyZXR1cm47CiAKIAlpZiAodXNhZ2UtPm5lbnRyaWVzID4gMCkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNBc3luYy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0Fz eW5jLmMKaW5kZXggY2Y3ZGRiYjAxZjQuLmU3M2VhNTVjZjkyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjQXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj QXN5bmMuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQu aCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlQXBwZW5kLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv bm9kZUZvcmVpZ25zY2FuLmgiCisjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgogCiAvKgog ICogQXN5bmNocm9ub3VzbHkgcmVxdWVzdCBhIHR1cGxlIGZyb20gYSBkZXNpZ25lZCBhc3luYy1j YXBhYmxlIG5vZGUuCkBAIC0yNiwxMiArMjcsMTcgQEAKIHZvaWQKIEV4ZWNBc3luY1JlcXVlc3Qo QXN5bmNSZXF1ZXN0ICphcmVxKQogeworCVdhaXRFdmVudFVzYWdlICpwcmV2aW91c193YWl0X2V2 ZW50X3VzYWdlID0gTlVMTDsKKwogCWlmIChhcmVxLT5yZXF1ZXN0ZWUtPmNoZ1BhcmFtICE9IE5V TEwpCS8qIHNvbWV0aGluZyBjaGFuZ2VkPyAqLwogCQlFeGVjUmVTY2FuKGFyZXEtPnJlcXVlc3Rl ZSk7CS8qIGxldCBSZVNjYW4gaGFuZGxlIHRoaXMgKi8KIAogCS8qIG11c3QgcHJvdmlkZSBvdXIg b3duIGluc3RydW1lbnRhdGlvbiBzdXBwb3J0ICovCiAJaWYgKGFyZXEtPnJlcXVlc3RlZS0+aW5z dHJ1bWVudCkKIAkJSW5zdHJTdGFydE5vZGUoYXJlcS0+cmVxdWVzdGVlLT5pbnN0cnVtZW50KTsK KwlpZiAoYXJlcS0+cmVxdWVzdGVlLT53YWl0X2V2ZW50X3VzYWdlKQorCQlwcmV2aW91c193YWl0 X2V2ZW50X3VzYWdlID0KKwkJCXBnc3RhdF9lbnRlcl93YWl0X2V2ZW50X3VzYWdlKGFyZXEtPnJl cXVlc3RlZS0+d2FpdF9ldmVudF91c2FnZSk7CiAKIAlzd2l0Y2ggKG5vZGVUYWcoYXJlcS0+cmVx dWVzdGVlKSkKIAl7CkBAIC00Nyw2ICs1Myw4IEBAIEV4ZWNBc3luY1JlcXVlc3QoQXN5bmNSZXF1 ZXN0ICphcmVxKQogCUV4ZWNBc3luY1Jlc3BvbnNlKGFyZXEpOwogCiAJLyogbXVzdCBwcm92aWRl IG91ciBvd24gaW5zdHJ1bWVudGF0aW9uIHN1cHBvcnQgKi8KKwlpZiAoYXJlcS0+cmVxdWVzdGVl LT53YWl0X2V2ZW50X3VzYWdlKQorCQlwZ3N0YXRfcmVzdG9yZV93YWl0X2V2ZW50X3VzYWdlKHBy ZXZpb3VzX3dhaXRfZXZlbnRfdXNhZ2UpOwogCWlmIChhcmVxLT5yZXF1ZXN0ZWUtPmluc3RydW1l bnQpCiAJCUluc3RyU3RvcE5vZGUoYXJlcS0+cmVxdWVzdGVlLT5pbnN0cnVtZW50LAogCQkJCQkg IFR1cElzTnVsbChhcmVxLT5yZXN1bHQpID8gMC4wIDogMS4wKTsKQEAgLTYyLDkgKzcwLDE0IEBA IEV4ZWNBc3luY1JlcXVlc3QoQXN5bmNSZXF1ZXN0ICphcmVxKQogdm9pZAogRXhlY0FzeW5jQ29u ZmlndXJlV2FpdChBc3luY1JlcXVlc3QgKmFyZXEpCiB7CisJV2FpdEV2ZW50VXNhZ2UgKnByZXZp b3VzX3dhaXRfZXZlbnRfdXNhZ2UgPSBOVUxMOworCiAJLyogbXVzdCBwcm92aWRlIG91ciBvd24g aW5zdHJ1bWVudGF0aW9uIHN1cHBvcnQgKi8KIAlpZiAoYXJlcS0+cmVxdWVzdGVlLT5pbnN0cnVt ZW50KQogCQlJbnN0clN0YXJ0Tm9kZShhcmVxLT5yZXF1ZXN0ZWUtPmluc3RydW1lbnQpOworCWlm IChhcmVxLT5yZXF1ZXN0ZWUtPndhaXRfZXZlbnRfdXNhZ2UpCisJCXByZXZpb3VzX3dhaXRfZXZl bnRfdXNhZ2UgPQorCQkJcGdzdGF0X2VudGVyX3dhaXRfZXZlbnRfdXNhZ2UoYXJlcS0+cmVxdWVz dGVlLT53YWl0X2V2ZW50X3VzYWdlKTsKIAogCXN3aXRjaCAobm9kZVRhZyhhcmVxLT5yZXF1ZXN0 ZWUpKQogCXsKQEAgLTc4LDYgKzkxLDggQEAgRXhlY0FzeW5jQ29uZmlndXJlV2FpdChBc3luY1Jl cXVlc3QgKmFyZXEpCiAJfQogCiAJLyogbXVzdCBwcm92aWRlIG91ciBvd24gaW5zdHJ1bWVudGF0 aW9uIHN1cHBvcnQgKi8KKwlpZiAoYXJlcS0+cmVxdWVzdGVlLT53YWl0X2V2ZW50X3VzYWdlKQor CQlwZ3N0YXRfcmVzdG9yZV93YWl0X2V2ZW50X3VzYWdlKHByZXZpb3VzX3dhaXRfZXZlbnRfdXNh Z2UpOwogCWlmIChhcmVxLT5yZXF1ZXN0ZWUtPmluc3RydW1lbnQpCiAJCUluc3RyU3RvcE5vZGUo YXJlcS0+cmVxdWVzdGVlLT5pbnN0cnVtZW50LCAwLjApOwogfQpAQCAtODgsOSArMTAzLDE0IEBA IEV4ZWNBc3luY0NvbmZpZ3VyZVdhaXQoQXN5bmNSZXF1ZXN0ICphcmVxKQogdm9pZAogRXhlY0Fz eW5jTm90aWZ5KEFzeW5jUmVxdWVzdCAqYXJlcSkKIHsKKwlXYWl0RXZlbnRVc2FnZSAqcHJldmlv dXNfd2FpdF9ldmVudF91c2FnZSA9IE5VTEw7CisKIAkvKiBtdXN0IHByb3ZpZGUgb3VyIG93biBp bnN0cnVtZW50YXRpb24gc3VwcG9ydCAqLwogCWlmIChhcmVxLT5yZXF1ZXN0ZWUtPmluc3RydW1l bnQpCiAJCUluc3RyU3RhcnROb2RlKGFyZXEtPnJlcXVlc3RlZS0+aW5zdHJ1bWVudCk7CisJaWYg KGFyZXEtPnJlcXVlc3RlZS0+d2FpdF9ldmVudF91c2FnZSkKKwkJcHJldmlvdXNfd2FpdF9ldmVu dF91c2FnZSA9CisJCQlwZ3N0YXRfZW50ZXJfd2FpdF9ldmVudF91c2FnZShhcmVxLT5yZXF1ZXN0 ZWUtPndhaXRfZXZlbnRfdXNhZ2UpOwogCiAJc3dpdGNoIChub2RlVGFnKGFyZXEtPnJlcXVlc3Rl ZSkpCiAJewpAQCAtMTA2LDYgKzEyNiw4IEBAIEV4ZWNBc3luY05vdGlmeShBc3luY1JlcXVlc3Qg KmFyZXEpCiAJRXhlY0FzeW5jUmVzcG9uc2UoYXJlcSk7CiAKIAkvKiBtdXN0IHByb3ZpZGUgb3Vy IG93biBpbnN0cnVtZW50YXRpb24gc3VwcG9ydCAqLworCWlmIChhcmVxLT5yZXF1ZXN0ZWUtPndh aXRfZXZlbnRfdXNhZ2UpCisJCXBnc3RhdF9yZXN0b3JlX3dhaXRfZXZlbnRfdXNhZ2UocHJldmlv dXNfd2FpdF9ldmVudF91c2FnZSk7CiAJaWYgKGFyZXEtPnJlcXVlc3RlZS0+aW5zdHJ1bWVudCkK IAkJSW5zdHJTdG9wTm9kZShhcmVxLT5yZXF1ZXN0ZWUtPmluc3RydW1lbnQsCiAJCQkJCSAgVHVw SXNOdWxsKGFyZXEtPnJlc3VsdCkgPyAwLjAgOiAxLjApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy YWxsZWwuYwppbmRleCA4MjEzNTY1YTcwOC4uZjc3ZjUzOWRkMjcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJhbGxlbC5jCkBAIC04Myw2ICs4MywxMiBAQCB0eXBlZGVmIHN0cnVjdCBGaXhlZFBh cmFsbGVsRXhlY3V0b3JTdGF0ZQogCWludAkJCWppdF9mbGFnczsKIH0gRml4ZWRQYXJhbGxlbEV4 ZWN1dG9yU3RhdGU7CiAKK3R5cGVkZWYgc3RydWN0IFNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2Vy Cit7CisJaW50CQkJbmVudHJpZXM7CisJZHNhX3BvaW50ZXIgZW50cmllczsKK30gU2hhcmVkV2Fp dEV2ZW50VXNhZ2VXb3JrZXI7CisKIC8qCiAgKiBEU00gc3RydWN0dXJlIGZvciBhY2N1bXVsYXRp bmcgcGVyLVBsYW5TdGF0ZSBpbnN0cnVtZW50YXRpb24uCiAgKgpAQCAtOTIsNiArOTgsMTAgQEAg dHlwZWRlZiBzdHJ1Y3QgRml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3RhdGUKICAqIG9mIHRoZSBmaXJz dCBOb2RlSW5zdHJ1bWVudGF0aW9uIG9iamVjdC4gIFRoaXMgd2lsbCBkZXBlbmQgb24gdGhlIGxl bmd0aCBvZgogICogdGhlIHBsYW5fbm9kZV9pZCBhcnJheS4KICAqCisgKiB3YWl0X2V2ZW50X3Vz YWdlX29mZnNldDogT2Zmc2V0LCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhpcyBzdHJ1Y3R1 cmUsCisgKiBvZiB0aGUgZmlyc3QgU2hhcmVkV2FpdEV2ZW50VXNhZ2VXb3JrZXIgb2JqZWN0LCBv ciAwIGlmIHdhaXQgZXZlbnQgdXNhZ2UgaXMKKyAqIG5vdCBiZWluZyBjb2xsZWN0ZWQuCisgKgog ICogbnVtX3dvcmtlcnM6IE51bWJlciBvZiB3b3JrZXJzLgogICoKICAqIG51bV9wbGFuX25vZGVz OiBOdW1iZXIgb2YgcGxhbiBub2Rlcy4KQEAgLTEwMyw2ICsxMTMsNyBAQCBzdHJ1Y3QgU2hhcmVk RXhlY3V0b3JJbnN0cnVtZW50YXRpb24KIHsKIAlpbnQJCQlpbnN0cnVtZW50X29wdGlvbnM7CiAJ aW50CQkJaW5zdHJ1bWVudF9vZmZzZXQ7CisJaW50CQkJd2FpdF9ldmVudF91c2FnZV9vZmZzZXQ7 CiAJaW50CQkJbnVtX3dvcmtlcnM7CiAJaW50CQkJbnVtX3BsYW5fbm9kZXM7CiAJaW50CQkJcGxh bl9ub2RlX2lkW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CkBAIC0xMTAsMTcgKzEyMSwxNyBAQCBz dHJ1Y3QgU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24KIAkvKgogCSAqIEFycmF5IG9mIG51 bV9wbGFuX25vZGVzICogbnVtX3dvcmtlcnMgTm9kZUluc3RydW1lbnRhdGlvbiBvYmplY3RzCiAJ ICogZm9sbG93cy4KKwkgKgorCSAqIElmIHdhaXRfZXZlbnRfdXNhZ2Vfb2Zmc2V0IGlzIG5vbi16 ZXJvLCBhbiBhcnJheSBvZiBudW1fcGxhbl9ub2RlcyAqCisJICogbnVtX3dvcmtlcnMgU2hhcmVk V2FpdEV2ZW50VXNhZ2VXb3JrZXIgb2JqZWN0cyBmb2xsb3dzLgogCSAqLwogfTsKICNkZWZpbmUg R2V0SW5zdHJ1bWVudGF0aW9uQXJyYXkoc2VpKSBcCiAJKFN0YXRpY0Fzc2VydFZhcmlhYmxlSXNP ZlR5cGVNYWNybyhzZWksIFNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICopLCBcCiAJIChO b2RlSW5zdHJ1bWVudGF0aW9uICopICgoKGNoYXIgKikgc2VpKSArIHNlaS0+aW5zdHJ1bWVudF9v ZmZzZXQpKQotCi10eXBlZGVmIHN0cnVjdCBTaGFyZWRXYWl0RXZlbnRVc2FnZVdvcmtlcgotewot CWludAkJCW5lbnRyaWVzOwotCWRzYV9wb2ludGVyIGVudHJpZXM7Ci19IFNoYXJlZFdhaXRFdmVu dFVzYWdlV29ya2VyOworI2RlZmluZSBHZXRJbnN0cnVtZW50YXRpb25XYWl0RXZlbnRVc2FnZUFy cmF5KHNlaSkgXAorCShTdGF0aWNBc3NlcnRWYXJpYWJsZUlzT2ZUeXBlTWFjcm8oc2VpLCBTaGFy ZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqKSwgXAorCSAoU2hhcmVkV2FpdEV2ZW50VXNhZ2VX b3JrZXIgKikgKCgoY2hhciAqKSBzZWkpICsgc2VpLT53YWl0X2V2ZW50X3VzYWdlX29mZnNldCkp CiAKIHN0cnVjdCBTaGFyZWRXYWl0RXZlbnRVc2FnZQogewpAQCAtMTQzLDYgKzE1NCwxMiBAQCB0 eXBlZGVmIHN0cnVjdCBFeGVjUGFyYWxsZWxJbml0aWFsaXplRFNNQ29udGV4dAogCWludAkJCW5u b2RlczsKIH0gRXhlY1BhcmFsbGVsSW5pdGlhbGl6ZURTTUNvbnRleHQ7CiAKK3R5cGVkZWYgc3Ry dWN0IEV4ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uQ29udGV4dAoreworCVNoYXJl ZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50YXRpb247CisJZHNhX2FyZWEgICAq YXJlYTsKK30gRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb25Db250ZXh0OworCiAv KiBIZWxwZXIgZnVuY3Rpb25zIHRoYXQgcnVuIGluIHRoZSBwYXJhbGxlbCBsZWFkZXIuICovCiBz dGF0aWMgY2hhciAqRXhlY1NlcmlhbGl6ZVBsYW4oUGxhbiAqcGxhbiwgRVN0YXRlICplc3RhdGUp Owogc3RhdGljIGJvb2wgRXhlY1BhcmFsbGVsRXN0aW1hdGUoUGxhblN0YXRlICpwbGFuc3RhdGUs CkBAIC0xNTQsOCArMTcxLDExIEBAIHN0YXRpYyBzaG1fbXFfaGFuZGxlICoqRXhlY1BhcmFsbGVs U2V0dXBUdXBsZVF1ZXVlcyhQYXJhbGxlbENvbnRleHQgKnBjeHQsCiBzdGF0aWMgYm9vbCBFeGVj UGFyYWxsZWxSZUluaXRpYWxpemVEU00oUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJCQkJ UGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKIHN0YXRpYyBib29sIEV4ZWNQYXJhbGxlbFJldHJpZXZl SW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAotCQkJCQkJCQkJCQkJU2hhcmVk RXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnRhdGlvbik7CisJCQkJCQkJCQkJCQlF eGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbkNvbnRleHQgKnIpOwogc3RhdGljIHZv aWQgRXhlY1BhcmFsbGVsUmV0cmlldmVXYWl0RXZlbnRVc2FnZShQYXJhbGxlbEV4ZWN1dG9ySW5m byAqcGVpKTsKK3N0YXRpYyB2b2lkIEV4ZWNQYXJhbGxlbFJlcG9ydFdhaXRFdmVudFVzYWdlV29y a2VyKFNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2VyICp3b3JrZXIsCisJCQkJCQkJCQkJCQkgICBk c2FfYXJlYSAqYXJlYSwKKwkJCQkJCQkJCQkJCSAgIGNvbnN0IFdhaXRFdmVudFVzYWdlICp1c2Fn ZSk7CiBzdGF0aWMgdm9pZCBFeGVjUGFyYWxsZWxSZXBvcnRXYWl0RXZlbnRVc2FnZShTaGFyZWRX YWl0RXZlbnRVc2FnZSAqc2hhcmVkLAogCQkJCQkJCQkJCQkgZHNhX2FyZWEgKmFyZWEsCiAJCQkJ CQkJCQkJCSBjb25zdCBXYWl0RXZlbnRVc2FnZSAqdXNhZ2UpOwpAQCAtNjkxLDYgKzcxMSw3IEBA IEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0 ZSwKIAlpbnQJCQlpbnN0cnVtZW50YXRpb25fbGVuID0gMDsKIAlpbnQJCQlqaXRfaW5zdHJ1bWVu dGF0aW9uX2xlbiA9IDA7CiAJaW50CQkJaW5zdHJ1bWVudF9vZmZzZXQgPSAwOworCWludAkJCXdh aXRfZXZlbnRfdXNhZ2Vfb2Zmc2V0ID0gMDsKIAlTaXplCQlkc2FfbWluc2l6ZSA9IGRzYV9taW5p bXVtX3NpemUoKTsKIAljaGFyCSAgICpxdWVyeV9zdHJpbmc7CiAJaW50CQkJcXVlcnlfbGVuOwpA QCAtNzk4LDYgKzgxOSwxNCBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5z dGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJCWluc3RydW1lbnRhdGlvbl9sZW4gKz0KIAkJCW11bF9z aXplKHNpemVvZihOb2RlSW5zdHJ1bWVudGF0aW9uKSwKIAkJCQkJIG11bF9zaXplKGUubm5vZGVz LCBud29ya2VycykpOworCQlpZiAoZXN0YXRlLT5lc19pbnN0cnVtZW50ICYgSU5TVFJVTUVOVF9X QUlUUykKKwkJeworCQkJaW5zdHJ1bWVudGF0aW9uX2xlbiA9IE1BWEFMSUdOKGluc3RydW1lbnRh dGlvbl9sZW4pOworCQkJd2FpdF9ldmVudF91c2FnZV9vZmZzZXQgPSBpbnN0cnVtZW50YXRpb25f bGVuOworCQkJaW5zdHJ1bWVudGF0aW9uX2xlbiArPQorCQkJCW11bF9zaXplKHNpemVvZihTaGFy ZWRXYWl0RXZlbnRVc2FnZVdvcmtlciksCisJCQkJCQkgbXVsX3NpemUoZS5ubm9kZXMsIG53b3Jr ZXJzKSk7CisJCX0KIAkJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBp bnN0cnVtZW50YXRpb25fbGVuKTsKIAkJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3Rp bWF0b3IsIDEpOwogCkBAIC05MDMsMTEgKzkzMiwyMyBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQ bGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJCWluc3RydW1lbnRhdGlvbiA9 IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBpbnN0cnVtZW50YXRpb25fbGVuKTsKIAkJaW5z dHJ1bWVudGF0aW9uLT5pbnN0cnVtZW50X29wdGlvbnMgPSBlc3RhdGUtPmVzX2luc3RydW1lbnQ7 CiAJCWluc3RydW1lbnRhdGlvbi0+aW5zdHJ1bWVudF9vZmZzZXQgPSBpbnN0cnVtZW50X29mZnNl dDsKKwkJaW5zdHJ1bWVudGF0aW9uLT53YWl0X2V2ZW50X3VzYWdlX29mZnNldCA9IHdhaXRfZXZl bnRfdXNhZ2Vfb2Zmc2V0OwogCQlpbnN0cnVtZW50YXRpb24tPm51bV93b3JrZXJzID0gbndvcmtl cnM7CiAJCWluc3RydW1lbnRhdGlvbi0+bnVtX3BsYW5fbm9kZXMgPSBlLm5ub2RlczsKIAkJaW5z dHJ1bWVudCA9IEdldEluc3RydW1lbnRhdGlvbkFycmF5KGluc3RydW1lbnRhdGlvbik7CiAJCWZv ciAoaSA9IDA7IGkgPCBud29ya2VycyAqIGUubm5vZGVzOyArK2kpCiAJCQlJbnN0ckluaXROb2Rl KCZpbnN0cnVtZW50W2ldLCBlc3RhdGUtPmVzX2luc3RydW1lbnQsIGZhbHNlKTsKKwkJaWYgKHdh aXRfZXZlbnRfdXNhZ2Vfb2Zmc2V0ICE9IDApCisJCXsKKwkJCVNoYXJlZFdhaXRFdmVudFVzYWdl V29ya2VyICp3b3JrZXJfdXNhZ2U7CisKKwkJCXdvcmtlcl91c2FnZSA9IEdldEluc3RydW1lbnRh dGlvbldhaXRFdmVudFVzYWdlQXJyYXkoaW5zdHJ1bWVudGF0aW9uKTsKKwkJCWZvciAoaSA9IDA7 IGkgPCBud29ya2VycyAqIGUubm5vZGVzOyArK2kpCisJCQl7CisJCQkJd29ya2VyX3VzYWdlW2ld Lm5lbnRyaWVzID0gMDsKKwkJCQl3b3JrZXJfdXNhZ2VbaV0uZW50cmllcyA9IEludmFsaWREc2FQ b2ludGVyOworCQkJfQorCQl9CiAJCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxf S0VZX0lOU1RSVU1FTlRBVElPTiwKIAkJCQkJICAgaW5zdHJ1bWVudGF0aW9uKTsKIAkJcGVpLT5p bnN0cnVtZW50YXRpb24gPSBpbnN0cnVtZW50YXRpb247CkBAIC0xMTM3LDkgKzExNzgsMTEgQEAg RXhlY1BhcmFsbGVsUmVJbml0aWFsaXplRFNNKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogICovCiBz dGF0aWMgYm9vbAogRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRl ICpwbGFuc3RhdGUsCi0JCQkJCQkJCQlTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqaW5z dHJ1bWVudGF0aW9uKQorCQkJCQkJCQkJRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRp b25Db250ZXh0ICpyKQogeworCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICppbnN0cnVt ZW50YXRpb24gPSByLT5pbnN0cnVtZW50YXRpb247CiAJTm9kZUluc3RydW1lbnRhdGlvbiAqaW5z dHJ1bWVudDsKKwlTaGFyZWRXYWl0RXZlbnRVc2FnZVdvcmtlciAqd2FpdF9ldmVudF91c2FnZSA9 IE5VTEw7CiAJaW50CQkJaTsKIAlpbnQJCQluOwogCWludAkJCWlieXRlczsKQEAgLTExNTksNiAr MTIwMiwzMCBAQCBFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUg KnBsYW5zdGF0ZSwKIAlmb3IgKG4gPSAwOyBuIDwgaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2Vy czsgKytuKQogCQlJbnN0ckFnZ05vZGUocGxhbnN0YXRlLT5pbnN0cnVtZW50LCAmaW5zdHJ1bWVu dFtuXSk7CiAKKwkvKiBBY2N1bXVsYXRlIHRoZSB3YWl0IGV2ZW50IHVzYWdlIGZyb20gYWxsIHdv cmtlcnMuICovCisJaWYgKGluc3RydW1lbnRhdGlvbi0+d2FpdF9ldmVudF91c2FnZV9vZmZzZXQg IT0gMCAmJgorCQlwbGFuc3RhdGUtPndhaXRfZXZlbnRfdXNhZ2UgIT0gTlVMTCkKKwl7CisJCXdh aXRfZXZlbnRfdXNhZ2UgPSBHZXRJbnN0cnVtZW50YXRpb25XYWl0RXZlbnRVc2FnZUFycmF5KGlu c3RydW1lbnRhdGlvbik7CisJCXdhaXRfZXZlbnRfdXNhZ2UgKz0gaSAqIGluc3RydW1lbnRhdGlv bi0+bnVtX3dvcmtlcnM7CisJCWZvciAobiA9IDA7IG4gPCBpbnN0cnVtZW50YXRpb24tPm51bV93 b3JrZXJzOyArK24pCisJCXsKKwkJCVNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2VyICp3b3JrZXIg PSAmd2FpdF9ldmVudF91c2FnZVtuXTsKKwkJCVdhaXRFdmVudFVzYWdlRW50cnkgKmVudHJpZXM7 CisKKwkJCWlmICh3b3JrZXItPm5lbnRyaWVzIDw9IDAgfHwgIURzYVBvaW50ZXJJc1ZhbGlkKHdv cmtlci0+ZW50cmllcykpCisJCQkJY29udGludWU7CisKKwkJCWVudHJpZXMgPSBkc2FfZ2V0X2Fk ZHJlc3Moci0+YXJlYSwgd29ya2VyLT5lbnRyaWVzKTsKKwkJCXBnc3RhdF9hY2N1bXVsYXRlX3dh aXRfZXZlbnRfdXNhZ2UocGxhbnN0YXRlLT53YWl0X2V2ZW50X3VzYWdlLAorCQkJCQkJCQkJCQkg ICBlbnRyaWVzLAorCQkJCQkJCQkJCQkgICB3b3JrZXItPm5lbnRyaWVzKTsKKwkJCWRzYV9mcmVl KHItPmFyZWEsIHdvcmtlci0+ZW50cmllcyk7CisJCQl3b3JrZXItPm5lbnRyaWVzID0gMDsKKwkJ CXdvcmtlci0+ZW50cmllcyA9IEludmFsaWREc2FQb2ludGVyOworCQl9CisJfQorCiAJLyoKIAkg KiBBbHNvIHN0b3JlIHRoZSBwZXItd29ya2VyIGRldGFpbC4KIAkgKgpAQCAtMTIxNiw3ICsxMjgz LDcgQEAgRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpwbGFu c3RhdGUsCiAJfQogCiAJcmV0dXJuIHBsYW5zdGF0ZV90cmVlX3dhbGtlcihwbGFuc3RhdGUsIEV4 ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uLAotCQkJCQkJCQkgaW5zdHJ1bWVudGF0 aW9uKTsKKwkJCQkJCQkJIHIpOwogfQogCiAvKgpAQCAtMTI5MCwyNSArMTM1NywyMSBAQCBFeGVj UGFyYWxsZWxSZXRyaWV2ZVdhaXRFdmVudFVzYWdlKFBhcmFsbGVsRXhlY3V0b3JJbmZvICpwZWkp CiB9CiAKIHN0YXRpYyB2b2lkCi1FeGVjUGFyYWxsZWxSZXBvcnRXYWl0RXZlbnRVc2FnZShTaGFy ZWRXYWl0RXZlbnRVc2FnZSAqc2hhcmVkLAotCQkJCQkJCQkgZHNhX2FyZWEgKmFyZWEsCi0JCQkJ CQkJCSBjb25zdCBXYWl0RXZlbnRVc2FnZSAqdXNhZ2UpCitFeGVjUGFyYWxsZWxSZXBvcnRXYWl0 RXZlbnRVc2FnZVdvcmtlcihTaGFyZWRXYWl0RXZlbnRVc2FnZVdvcmtlciAqd29ya2VyLAorCQkJ CQkJCQkJICAgZHNhX2FyZWEgKmFyZWEsCisJCQkJCQkJCQkgICBjb25zdCBXYWl0RXZlbnRVc2Fn ZSAqdXNhZ2UpCiB7Ci0JU2hhcmVkV2FpdEV2ZW50VXNhZ2VXb3JrZXIgKndvcmtlcjsKIAlXYWl0 RXZlbnRVc2FnZUVudHJ5ICplbnRyaWVzOwogCWRzYV9wb2ludGVyIGVudHJpZXNfZHNhOwogCVNp emUJCWVudHJpZXNfc2l6ZTsKIAotCUFzc2VydChzaGFyZWQgIT0gTlVMTCk7CisJQXNzZXJ0KHdv cmtlciAhPSBOVUxMKTsKIAlBc3NlcnQoYXJlYSAhPSBOVUxMKTsKIAlBc3NlcnQodXNhZ2UgIT0g TlVMTCk7Ci0JQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIoKSk7Ci0JQXNzZXJ0KFBhcmFsbGVsV29y a2VyTnVtYmVyIDwgc2hhcmVkLT5udW1fd29ya2Vycyk7CiAKIAlpZiAodXNhZ2UtPm5lbnRyaWVz IDw9IDApCiAJCXJldHVybjsKIAotCXdvcmtlciA9ICZzaGFyZWQtPndvcmtlcl91c2FnZVtQYXJh bGxlbFdvcmtlck51bWJlcl07CiAJZW50cmllc19zaXplID0gbXVsX3NpemUoc2l6ZW9mKFdhaXRF dmVudFVzYWdlRW50cnkpLCB1c2FnZS0+bmVudHJpZXMpOwogCWVudHJpZXNfZHNhID0gZHNhX2Fs bG9jYXRlKGFyZWEsIGVudHJpZXNfc2l6ZSk7CiAJZW50cmllcyA9IGRzYV9nZXRfYWRkcmVzcyhh cmVhLCBlbnRyaWVzX2RzYSk7CkBAIC0xMzIwLDYgKzEzODMsMjAgQEAgRXhlY1BhcmFsbGVsUmVw b3J0V2FpdEV2ZW50VXNhZ2UoU2hhcmVkV2FpdEV2ZW50VXNhZ2UgKnNoYXJlZCwKIAl3b3JrZXIt PmVudHJpZXMgPSBlbnRyaWVzX2RzYTsKIH0KIAorc3RhdGljIHZvaWQKK0V4ZWNQYXJhbGxlbFJl cG9ydFdhaXRFdmVudFVzYWdlKFNoYXJlZFdhaXRFdmVudFVzYWdlICpzaGFyZWQsCisJCQkJCQkJ CSBkc2FfYXJlYSAqYXJlYSwKKwkJCQkJCQkJIGNvbnN0IFdhaXRFdmVudFVzYWdlICp1c2FnZSkK K3sKKwlBc3NlcnQoc2hhcmVkICE9IE5VTEwpOworCUFzc2VydChJc1BhcmFsbGVsV29ya2VyKCkp OworCUFzc2VydChQYXJhbGxlbFdvcmtlck51bWJlciA8IHNoYXJlZC0+bnVtX3dvcmtlcnMpOwor CisJRXhlY1BhcmFsbGVsUmVwb3J0V2FpdEV2ZW50VXNhZ2VXb3JrZXIoJnNoYXJlZC0+d29ya2Vy X3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKKwkJCQkJCQkJCQkgICBhcmVhLAorCQkJCQkJ CQkJCSAgIHVzYWdlKTsKK30KKwogLyoKICAqIEZpbmlzaCBwYXJhbGxlbCBleGVjdXRpb24uICBX ZSB3YWl0IGZvciBwYXJhbGxlbCB3b3JrZXJzIHRvIGZpbmlzaCwgYW5kCiAgKiBhY2N1bXVsYXRl IHRoZWlyIGJ1ZmZlci9XQUwgdXNhZ2UuCkBAIC0xMzg1LDggKzE0NjIsMTMgQEAgRXhlY1BhcmFs bGVsQ2xlYW51cChQYXJhbGxlbEV4ZWN1dG9ySW5mbyAqcGVpKQogewogCS8qIEFjY3VtdWxhdGUg aW5zdHJ1bWVudGF0aW9uLCBpZiBhbnkuICovCiAJaWYgKHBlaS0+aW5zdHJ1bWVudGF0aW9uKQot CQlFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihwZWktPnBsYW5zdGF0ZSwKLQkJ CQkJCQkJCQkJcGVpLT5pbnN0cnVtZW50YXRpb24pOworCXsKKwkJRXhlY1BhcmFsbGVsUmV0cmll dmVJbnN0cnVtZW50YXRpb25Db250ZXh0IHI7CisKKwkJci5pbnN0cnVtZW50YXRpb24gPSBwZWkt Pmluc3RydW1lbnRhdGlvbjsKKwkJci5hcmVhID0gcGVpLT5hcmVhOworCQlFeGVjUGFyYWxsZWxS ZXRyaWV2ZUluc3RydW1lbnRhdGlvbihwZWktPnBsYW5zdGF0ZSwgJnIpOworCX0KIAogCS8qIEFj Y3VtdWxhdGUgSklUIGluc3RydW1lbnRhdGlvbiwgaWYgYW55LiAqLwogCWlmIChwZWktPmppdF9p bnN0cnVtZW50YXRpb24pCkBAIC0xNDk1LDYgKzE1NzcsMTcgQEAgRXhlY1BhcmFsbGVsUmVwb3J0 SW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCUFzc2VydChJc1BhcmFsbGVs V29ya2VyKCkpOwogCUFzc2VydChQYXJhbGxlbFdvcmtlck51bWJlciA8IGluc3RydW1lbnRhdGlv bi0+bnVtX3dvcmtlcnMpOwogCUluc3RyQWdnTm9kZSgmaW5zdHJ1bWVudFtQYXJhbGxlbFdvcmtl ck51bWJlcl0sIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCk7CisJaWYgKGluc3RydW1lbnRhdGlvbi0+ d2FpdF9ldmVudF91c2FnZV9vZmZzZXQgIT0gMCAmJgorCQlwbGFuc3RhdGUtPndhaXRfZXZlbnRf dXNhZ2UgIT0gTlVMTCkKKwl7CisJCVNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2VyICp3YWl0X2V2 ZW50X3VzYWdlOworCisJCXdhaXRfZXZlbnRfdXNhZ2UgPSBHZXRJbnN0cnVtZW50YXRpb25XYWl0 RXZlbnRVc2FnZUFycmF5KGluc3RydW1lbnRhdGlvbik7CisJCXdhaXRfZXZlbnRfdXNhZ2UgKz0g aSAqIGluc3RydW1lbnRhdGlvbi0+bnVtX3dvcmtlcnM7CisJCUV4ZWNQYXJhbGxlbFJlcG9ydFdh aXRFdmVudFVzYWdlV29ya2VyKCZ3YWl0X2V2ZW50X3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVy XSwKKwkJCQkJCQkJCQkJICAgcGxhbnN0YXRlLT5zdGF0ZS0+ZXNfcXVlcnlfZHNhLAorCQkJCQkJ CQkJCQkgICBwbGFuc3RhdGUtPndhaXRfZXZlbnRfdXNhZ2UpOworCX0KIAogCXJldHVybiBwbGFu c3RhdGVfdHJlZV93YWxrZXIocGxhbnN0YXRlLCBFeGVjUGFyYWxsZWxSZXBvcnRJbnN0cnVtZW50 YXRpb24sCiAJCQkJCQkJCSBpbnN0cnVtZW50YXRpb24pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJv Y25vZGUuYwppbmRleCA3YzRjNjZlMzIzZi4uMDgxODU1YjNmZWQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQcm9jbm9kZS5jCkBAIC0xMTgsNiArMTE4LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9u b2RlV2luZG93QWdnLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVdvcmt0YWJsZXNjYW4uaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAj aW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhl Y1Byb2NOb2RlRmlyc3QoUGxhblN0YXRlICpub2RlKTsKQEAgLTQxNSw2ICs0MTYsMTYgQEAgRXhl Y0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChl c3RhdGUtPmVzX2luc3RydW1lbnQpCiAJCXJlc3VsdC0+aW5zdHJ1bWVudCA9IEluc3RyQWxsb2NO b2RlKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCwKIAkJCQkJCQkJCQkJcmVzdWx0LT5hc3luY19jYXBh YmxlKTsKKwlpZiAoZXN0YXRlLT5lc19pbnN0cnVtZW50ICYgSU5TVFJVTUVOVF9XQUlUUykKKwl7 CisJCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKwkJcmVzdWx0LT53YWl0X2V2ZW50 X3VzYWdlID0gcGFsbG9jX29iamVjdChXYWl0RXZlbnRVc2FnZSk7CisJCXBnc3RhdF9pbml0X3dh aXRfZXZlbnRfdXNhZ2UocmVzdWx0LT53YWl0X2V2ZW50X3VzYWdlLAorCQkJCQkJCQkJIGVzdGF0 ZS0+ZXNfcXVlcnlfY3h0KTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwor CX0KIAogCXJldHVybiByZXN1bHQ7CiB9CkBAIC00ODEsNyArNDkyLDggQEAgRXhlY1Byb2NOb2Rl Rmlyc3QoUGxhblN0YXRlICpub2RlKQogICogVGhpcyBoYXMgZXNzZW50aWFsbHkgdGhlIHNhbWUg cmVzcG9uc2liaWxpdGllcyBhcyBFeGVjUHJvY05vZGUsCiAgKiBidXQgaXQgZG9lcyBub3QgZG8g SW5zdHJTdGFydE5vZGUvSW5zdHJTdG9wTm9kZSAobWFpbmx5IGJlY2F1c2UKICAqIGl0IGNhbid0 IHRlbGwgaG93IG1hbnkgcmV0dXJuZWQgdHVwbGVzIHRvIGNvdW50KS4gIEVhY2ggcGVyLW5vZGUK LSAqIGZ1bmN0aW9uIG11c3QgcHJvdmlkZSBpdHMgb3duIGluc3RydW1lbnRhdGlvbiBzdXBwb3J0 LgorICogZnVuY3Rpb24gbXVzdCBwcm92aWRlIGl0cyBvd24gaW5zdHJ1bWVudGF0aW9uIHN1cHBv cnQsIGluY2x1ZGluZworICogd2FpdCBldmVudCBhdHRyaWJ1dGlvbiB3aGVuIGVuYWJsZWQuCiAg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKi8KIE5vZGUgKgpAQCAtNzU4LDYgKzc3MCw5IEBAIEV4ZWNTaHV0ZG93bk5v ZGUoUGxhblN0YXRlICpub2RlKQogc3RhdGljIGJvb2wKIEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2Vy KFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIHsKKwlib29sCQlub2RlX3J1bm5pbmc7 CisJV2FpdEV2ZW50VXNhZ2UgKnByZXZpb3VzX3dhaXRfZXZlbnRfdXNhZ2UgPSBOVUxMOworCiAJ aWYgKG5vZGUgPT0gTlVMTCkKIAkJcmV0dXJuIGZhbHNlOwogCkBAIC03NzMsOCArNzg4LDE0IEBA IEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkK IAkgKiBoYXMgbmV2ZXIgYmVlbiBleGVjdXRlZCwgc28gYXMgdG8gYXZvaWQgaW5jb3JyZWN0bHkg bWFraW5nIGl0IGFwcGVhcgogCSAqIHRoYXQgaXQgaGFzLgogCSAqLwotCWlmIChub2RlLT5pbnN0 cnVtZW50ICYmIG5vZGUtPmluc3RydW1lbnQtPnJ1bm5pbmcpCisJbm9kZV9ydW5uaW5nID0gbm9k ZS0+aW5zdHJ1bWVudCAmJiBub2RlLT5pbnN0cnVtZW50LT5ydW5uaW5nOworCWlmIChub2RlX3J1 bm5pbmcpCisJewogCQlJbnN0clN0YXJ0Tm9kZShub2RlLT5pbnN0cnVtZW50KTsKKwkJaWYgKG5v ZGUtPndhaXRfZXZlbnRfdXNhZ2UpCisJCQlwcmV2aW91c193YWl0X2V2ZW50X3VzYWdlID0KKwkJ CQlwZ3N0YXRfZW50ZXJfd2FpdF9ldmVudF91c2FnZShub2RlLT53YWl0X2V2ZW50X3VzYWdlKTsK Kwl9CiAKIAlwbGFuc3RhdGVfdHJlZV93YWxrZXIobm9kZSwgRXhlY1NodXRkb3duTm9kZV93YWxr ZXIsIGNvbnRleHQpOwogCkBAIC04MDMsOCArODI0LDEyIEBAIEV4ZWNTaHV0ZG93bk5vZGVfd2Fs a2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAl9CiAKIAkvKiBTdG9wIHRoZSBu b2RlIGlmIHdlIHN0YXJ0ZWQgaXQgYWJvdmUsIHJlcG9ydGluZyAwIHR1cGxlcy4gKi8KLQlpZiAo bm9kZS0+aW5zdHJ1bWVudCAmJiBub2RlLT5pbnN0cnVtZW50LT5ydW5uaW5nKQorCWlmIChub2Rl X3J1bm5pbmcpCisJeworCQlpZiAobm9kZS0+d2FpdF9ldmVudF91c2FnZSkKKwkJCXBnc3RhdF9y ZXN0b3JlX3dhaXRfZXZlbnRfdXNhZ2UocHJldmlvdXNfd2FpdF9ldmVudF91c2FnZSk7CiAJCUlu c3RyU3RvcE5vZGUobm9kZS0+aW5zdHJ1bWVudCwgMCk7CisJfQogCiAJcmV0dXJuIGZhbHNlOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCmluZGV4IGZmYmNkNTcyMTMzLi5hMWYyMjE4MGY4 MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1 ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogI2luY2x1ZGUgInBvcnRhYmlsaXR5L2luc3RyX3RpbWUu aCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKKyNpbmNsdWRlICJ1dGlscy93YWl0X2V2 ZW50LmgiCiAKIEJ1ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7CiBzdGF0aWMgQnVmZmVyVXNhZ2Ug c2F2ZV9wZ0J1ZmZlclVzYWdlOwpAQCAtMTgxLDExICsxODIsMTcgQEAgVHVwbGVUYWJsZVNsb3Qg KgogRXhlY1Byb2NOb2RlSW5zdHIoUGxhblN0YXRlICpub2RlKQogewogCVR1cGxlVGFibGVTbG90 ICpyZXN1bHQ7CisJV2FpdEV2ZW50VXNhZ2UgKnByZXZpb3VzX3dhaXRfZXZlbnRfdXNhZ2UgPSBO VUxMOwogCiAJSW5zdHJTdGFydE5vZGUobm9kZS0+aW5zdHJ1bWVudCk7CisJaWYgKG5vZGUtPndh aXRfZXZlbnRfdXNhZ2UpCisJCXByZXZpb3VzX3dhaXRfZXZlbnRfdXNhZ2UgPQorCQkJcGdzdGF0 X2VudGVyX3dhaXRfZXZlbnRfdXNhZ2Uobm9kZS0+d2FpdF9ldmVudF91c2FnZSk7CiAKIAlyZXN1 bHQgPSBub2RlLT5FeGVjUHJvY05vZGVSZWFsKG5vZGUpOwogCisJaWYgKG5vZGUtPndhaXRfZXZl bnRfdXNhZ2UpCisJCXBnc3RhdF9yZXN0b3JlX3dhaXRfZXZlbnRfdXNhZ2UocHJldmlvdXNfd2Fp dF9ldmVudF91c2FnZSk7CiAJSW5zdHJTdG9wTm9kZShub2RlLT5pbnN0cnVtZW50LCBUdXBJc051 bGwocmVzdWx0KSA/IDAuMCA6IDEuMCk7CiAKIAlyZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUJpdG1hcEFuZC5jCmluZGV4IDY0MDkyZmE4MDY1Li45ODI1NDE4OGE4YyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg ImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlQml0bWFwQW5k LmgiCiAjaW5jbHVkZSAibm9kZXMvdGlkYml0bWFwLmgiCisjaW5jbHVkZSAidXRpbHMvd2FpdF9l dmVudC5oIgogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTExNiwxMCArMTE3LDE0IEBAIE11bHRpRXhlY0Jp dG1hcEFuZChCaXRtYXBBbmRTdGF0ZSAqbm9kZSkKIAlpbnQJCQlucGxhbnM7CiAJaW50CQkJaTsK IAlUSURCaXRtYXAgICpyZXN1bHQgPSBOVUxMOworCVdhaXRFdmVudFVzYWdlICpwcmV2aW91c193 YWl0X2V2ZW50X3VzYWdlID0gTlVMTDsKIAogCS8qIG11c3QgcHJvdmlkZSBvdXIgb3duIGluc3Ry dW1lbnRhdGlvbiBzdXBwb3J0ICovCiAJaWYgKG5vZGUtPnBzLmluc3RydW1lbnQpCiAJCUluc3Ry U3RhcnROb2RlKG5vZGUtPnBzLmluc3RydW1lbnQpOworCWlmIChub2RlLT5wcy53YWl0X2V2ZW50 X3VzYWdlKQorCQlwcmV2aW91c193YWl0X2V2ZW50X3VzYWdlID0KKwkJCXBnc3RhdF9lbnRlcl93 YWl0X2V2ZW50X3VzYWdlKG5vZGUtPnBzLndhaXRfZXZlbnRfdXNhZ2UpOwogCiAJLyoKIAkgKiBn ZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQpAQCAtMTYzLDYgKzE2OCw4IEBAIE11bHRpRXhl Y0JpdG1hcEFuZChCaXRtYXBBbmRTdGF0ZSAqbm9kZSkKIAkJZWxvZyhFUlJPUiwgIkJpdG1hcEFu ZCBkb2Vzbid0IHN1cHBvcnQgemVybyBpbnB1dHMiKTsKIAogCS8qIG11c3QgcHJvdmlkZSBvdXIg b3duIGluc3RydW1lbnRhdGlvbiBzdXBwb3J0ICovCisJaWYgKG5vZGUtPnBzLndhaXRfZXZlbnRf dXNhZ2UpCisJCXBnc3RhdF9yZXN0b3JlX3dhaXRfZXZlbnRfdXNhZ2UocHJldmlvdXNfd2FpdF9l dmVudF91c2FnZSk7CiAJaWYgKG5vZGUtPnBzLmluc3RydW1lbnQpCiAJCUluc3RyU3RvcE5vZGUo bm9kZS0+cHMuaW5zdHJ1bWVudCwgMCAvKiBYWFggKi8gKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCmluZGV4IDc5Nzg1MTRlMWJjLi5jMjc5OGE4MWU5NyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwpAQCAtMjgsNiAr MjgsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVJbmRleHNjYW4uaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy90aWRiaXRtYXAuaCIKKyNpbmNsdWRlICJ1dGls cy93YWl0X2V2ZW50LmgiCiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTQsMTAgKzU1LDE0IEBAIE11bHRp RXhlY0JpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAlJbmRleFNj YW5EZXNjIHNjYW5kZXNjOwogCWRvdWJsZQkJblR1cGxlcyA9IDA7CiAJYm9vbAkJZG9zY2FuOwor CVdhaXRFdmVudFVzYWdlICpwcmV2aW91c193YWl0X2V2ZW50X3VzYWdlID0gTlVMTDsKIAogCS8q IG11c3QgcHJvdmlkZSBvdXIgb3duIGluc3RydW1lbnRhdGlvbiBzdXBwb3J0ICovCiAJaWYgKG5v ZGUtPnNzLnBzLmluc3RydW1lbnQpCiAJCUluc3RyU3RhcnROb2RlKG5vZGUtPnNzLnBzLmluc3Ry dW1lbnQpOworCWlmIChub2RlLT5zcy5wcy53YWl0X2V2ZW50X3VzYWdlKQorCQlwcmV2aW91c193 YWl0X2V2ZW50X3VzYWdlID0KKwkJCXBnc3RhdF9lbnRlcl93YWl0X2V2ZW50X3VzYWdlKG5vZGUt PnNzLnBzLndhaXRfZXZlbnRfdXNhZ2UpOwogCiAJLyoKIAkgKiBleHRyYWN0IG5lY2Vzc2FyeSBp bmZvcm1hdGlvbiBmcm9tIGluZGV4IHNjYW4gbm9kZQpAQCAtMTE2LDYgKzEyMSw4IEBAIE11bHRp RXhlY0JpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAl9CiAKIAkv KiBtdXN0IHByb3ZpZGUgb3VyIG93biBpbnN0cnVtZW50YXRpb24gc3VwcG9ydCAqLworCWlmIChu b2RlLT5zcy5wcy53YWl0X2V2ZW50X3VzYWdlKQorCQlwZ3N0YXRfcmVzdG9yZV93YWl0X2V2ZW50 X3VzYWdlKHByZXZpb3VzX3dhaXRfZXZlbnRfdXNhZ2UpOwogCWlmIChub2RlLT5zcy5wcy5pbnN0 cnVtZW50KQogCQlJbnN0clN0b3BOb2RlKG5vZGUtPnNzLnBzLmluc3RydW1lbnQsIG5UdXBsZXMp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jCmluZGV4IGI5OGI5NjE3MmZlLi5lMzk4 ZGU0Zjc3ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKQEAgLTM0LDYgKzM0LDcg QEAKICNpbmNsdWRlICJleGVjdXRvci9ub2RlQml0bWFwT3IuaCIKICNpbmNsdWRlICJub2Rlcy90 aWRiaXRtYXAuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJ1dGlscy93YWl0 X2V2ZW50LmgiCiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTE3LDEwICsxMTgsMTQgQEAgTXVsdGlFeGVj Qml0bWFwT3IoQml0bWFwT3JTdGF0ZSAqbm9kZSkKIAlpbnQJCQlucGxhbnM7CiAJaW50CQkJaTsK IAlUSURCaXRtYXAgICpyZXN1bHQgPSBOVUxMOworCVdhaXRFdmVudFVzYWdlICpwcmV2aW91c193 YWl0X2V2ZW50X3VzYWdlID0gTlVMTDsKIAogCS8qIG11c3QgcHJvdmlkZSBvdXIgb3duIGluc3Ry dW1lbnRhdGlvbiBzdXBwb3J0ICovCiAJaWYgKG5vZGUtPnBzLmluc3RydW1lbnQpCiAJCUluc3Ry U3RhcnROb2RlKG5vZGUtPnBzLmluc3RydW1lbnQpOworCWlmIChub2RlLT5wcy53YWl0X2V2ZW50 X3VzYWdlKQorCQlwcmV2aW91c193YWl0X2V2ZW50X3VzYWdlID0KKwkJCXBnc3RhdF9lbnRlcl93 YWl0X2V2ZW50X3VzYWdlKG5vZGUtPnBzLndhaXRfZXZlbnRfdXNhZ2UpOwogCiAJLyoKIAkgKiBn ZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQpAQCAtMTgxLDYgKzE4Niw4IEBAIE11bHRpRXhl Y0JpdG1hcE9yKEJpdG1hcE9yU3RhdGUgKm5vZGUpCiAJCWVsb2coRVJST1IsICJCaXRtYXBPciBk b2Vzbid0IHN1cHBvcnQgemVybyBpbnB1dHMiKTsKIAogCS8qIG11c3QgcHJvdmlkZSBvdXIgb3du IGluc3RydW1lbnRhdGlvbiBzdXBwb3J0ICovCisJaWYgKG5vZGUtPnBzLndhaXRfZXZlbnRfdXNh Z2UpCisJCXBnc3RhdF9yZXN0b3JlX3dhaXRfZXZlbnRfdXNhZ2UocHJldmlvdXNfd2FpdF9ldmVu dF91c2FnZSk7CiAJaWYgKG5vZGUtPnBzLmluc3RydW1lbnQpCiAJCUluc3RyU3RvcE5vZGUobm9k ZS0+cHMuaW5zdHJ1bWVudCwgMCAvKiBYWFggKi8gKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUhhc2guYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMK aW5kZXggODgyNWJiNmZhMjMuLjZlOWU0YjQyMThmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMK QEAgLTEwNSw5ICsxMDUsMTQgQEAgRXhlY0hhc2goUGxhblN0YXRlICpwc3RhdGUpCiBOb2RlICoK IE11bHRpRXhlY0hhc2goSGFzaFN0YXRlICpub2RlKQogeworCVdhaXRFdmVudFVzYWdlICpwcmV2 aW91c193YWl0X2V2ZW50X3VzYWdlID0gTlVMTDsKKwogCS8qIG11c3QgcHJvdmlkZSBvdXIgb3du IGluc3RydW1lbnRhdGlvbiBzdXBwb3J0ICovCiAJaWYgKG5vZGUtPnBzLmluc3RydW1lbnQpCiAJ CUluc3RyU3RhcnROb2RlKG5vZGUtPnBzLmluc3RydW1lbnQpOworCWlmIChub2RlLT5wcy53YWl0 X2V2ZW50X3VzYWdlKQorCQlwcmV2aW91c193YWl0X2V2ZW50X3VzYWdlID0KKwkJCXBnc3RhdF9l bnRlcl93YWl0X2V2ZW50X3VzYWdlKG5vZGUtPnBzLndhaXRfZXZlbnRfdXNhZ2UpOwogCiAJaWYg KG5vZGUtPnBhcmFsbGVsX3N0YXRlICE9IE5VTEwpCiAJCU11bHRpRXhlY1BhcmFsbGVsSGFzaChu b2RlKTsKQEAgLTExNSw2ICsxMjAsOCBAQCBNdWx0aUV4ZWNIYXNoKEhhc2hTdGF0ZSAqbm9kZSkK IAkJTXVsdGlFeGVjUHJpdmF0ZUhhc2gobm9kZSk7CiAKIAkvKiBtdXN0IHByb3ZpZGUgb3VyIG93 biBpbnN0cnVtZW50YXRpb24gc3VwcG9ydCAqLworCWlmIChub2RlLT5wcy53YWl0X2V2ZW50X3Vz YWdlKQorCQlwZ3N0YXRfcmVzdG9yZV93YWl0X2V2ZW50X3VzYWdlKHByZXZpb3VzX3dhaXRfZXZl bnRfdXNhZ2UpOwogCWlmIChub2RlLT5wcy5pbnN0cnVtZW50KQogCQlJbnN0clN0b3BOb2RlKG5v ZGUtPnBzLmluc3RydW1lbnQsIG5vZGUtPmhhc2h0YWJsZS0+cmVwb3J0VHVwbGVzKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IGViMDFiYzNkODhjLi4zZDVh MTBiNDRjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVu dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMjcs NiArMjcsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdl L3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKKyNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIAogCkBAIC00Nyw2 ICs0OCw3IEBAIHVpbnQzMgkgICAqbXlfd2FpdF9ldmVudF9pbmZvID0gJmxvY2FsX215X3dhaXRf ZXZlbnRfaW5mbzsKIAogaW50CQkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfZGVwdGggPSAwOwog c3RhdGljIFdhaXRFdmVudFVzYWdlICpwZ3N0YXRfd2FpdF9ldmVudF91c2FnZSA9IE5VTEw7Citz dGF0aWMgV2FpdEV2ZW50VXNhZ2UgKnBnc3RhdF93YWl0X2V2ZW50X25vZGVfdXNhZ2UgPSBOVUxM Owogc3RhdGljIHVpbnQzMiBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9jdXJyZW50ID0gMDsKIHN0 YXRpYyBpbnN0cl90aW1lIHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX3N0YXJ0OwogCkBAIC0zNTgs NiArMzYwLDI4IEBAIHBnc3RhdF9yZXNldF93YWl0X2V2ZW50X3N0b3JhZ2Uodm9pZCkKIAlteV93 YWl0X2V2ZW50X2luZm8gPSAmbG9jYWxfbXlfd2FpdF9ldmVudF9pbmZvOwogfQogCisvKgorICog SW5pdGlhbGl6ZSBhIHdhaXQgZXZlbnQgdXNhZ2UgYWNjdW11bGF0b3IuCisgKi8KK3ZvaWQKK3Bn c3RhdF9pbml0X3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCBNZW1vcnlD b250ZXh0IG1lbWNvbnRleHQpCit7CisJQXNzZXJ0KHVzYWdlICE9IE5VTEwpOworCUFzc2VydCht ZW1jb250ZXh0ICE9IE5VTEwpOworCisJbWVtc2V0KHVzYWdlLCAwLCBzaXplb2YoV2FpdEV2ZW50 VXNhZ2UpKTsKKworCS8qCisJICogV2FpdCBldmVudHMgbWF5IGVuZCBpbnNpZGUgY3JpdGljYWwg c2VjdGlvbnMsIGZvciBleGFtcGxlIHdoaWxlCisJICogcGVyZm9ybWluZyBzeW5jaHJvbm91cyBJ L08uICBLZWVwIHVzYWdlIGVudHJpZXMgaW4gYSBkZWRpY2F0ZWQgY29udGV4dAorCSAqIHdoZXJl IHRoZSBtZW1vcnkgbWFuYWdlciBwZXJtaXRzIHRoYXQgYWNjb3VudGluZyBwYXRoIHRvIGdyb3cu CisJICovCisJdXNhZ2UtPm1lbWNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUobWVtY29u dGV4dCwKKwkJCQkJCQkJCQkJICAiV2FpdCBFdmVudCBVc2FnZSIsCisJCQkJCQkJCQkJCSAgQUxM T0NTRVRfU01BTExfU0laRVMpOworCU1lbW9yeUNvbnRleHRBbGxvd0luQ3JpdGljYWxTZWN0aW9u KHVzYWdlLT5tZW1jb250ZXh0LCB0cnVlKTsKK30KKwogLyoKICAqIFN0YXJ0IGNvbGxlY3Rpbmcg ZXhhY3Qgd2FpdCBldmVudCB0aW1pbmdzIGluIHRoaXMgYmFja2VuZC4KICAqCkBAIC0zNzUsOSAr Mzk5LDkgQEAgcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVz YWdlLCBNZW1vcnlDb250ZXh0IG1lbWNvbnRleHQpCiAKIAlpZiAocGdzdGF0X3dhaXRfZXZlbnRf dXNhZ2VfZGVwdGgrKyA9PSAwKQogCXsKLQkJbWVtc2V0KHVzYWdlLCAwLCBzaXplb2YoV2FpdEV2 ZW50VXNhZ2UpKTsKLQkJdXNhZ2UtPm1lbWNvbnRleHQgPSBtZW1jb250ZXh0OworCQlwZ3N0YXRf aW5pdF93YWl0X2V2ZW50X3VzYWdlKHVzYWdlLCBtZW1jb250ZXh0KTsKIAkJcGdzdGF0X3dhaXRf ZXZlbnRfdXNhZ2UgPSB1c2FnZTsKKwkJcGdzdGF0X3dhaXRfZXZlbnRfbm9kZV91c2FnZSA9IE5V TEw7CiAJCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2N1cnJlbnQgPSAwOwogCQlJTlNUUl9USU1F X1NFVF9aRVJPKHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX3N0YXJ0KTsKIAl9CkBAIC0zOTgsMTEg KzQyMiwyNyBAQCBwZ3N0YXRfZW5kX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVz YWdlKQogCQkJcGdzdGF0X2NvdW50X3dhaXRfZXZlbnRfZW5kKCk7CiAKIAkJcGdzdGF0X3dhaXRf ZXZlbnRfdXNhZ2UgPSBOVUxMOworCQlwZ3N0YXRfd2FpdF9ldmVudF9ub2RlX3VzYWdlID0gTlVM TDsKIAkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfY3VycmVudCA9IDA7CiAJCUlOU1RSX1RJTUVf U0VUX1pFUk8ocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfc3RhcnQpOwogCX0KIH0KIAorV2FpdEV2 ZW50VXNhZ2UgKgorcGdzdGF0X2VudGVyX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2Ug KnVzYWdlKQoreworCVdhaXRFdmVudFVzYWdlICpwcmV2aW91cyA9IHBnc3RhdF93YWl0X2V2ZW50 X25vZGVfdXNhZ2U7CisKKwlwZ3N0YXRfd2FpdF9ldmVudF9ub2RlX3VzYWdlID0gdXNhZ2U7CisJ cmV0dXJuIHByZXZpb3VzOworfQorCit2b2lkCitwZ3N0YXRfcmVzdG9yZV93YWl0X2V2ZW50X3Vz YWdlKFdhaXRFdmVudFVzYWdlICp1c2FnZSkKK3sKKwlwZ3N0YXRfd2FpdF9ldmVudF9ub2RlX3Vz YWdlID0gdXNhZ2U7Cit9CisKIC8qCiAgKiBSZWNvcmQgdGhlIGJlZ2lubmluZyBvZiBhIHdhaXQg ZXZlbnQgZm9yIGV4YWN0IEVYUExBSU4tc3R5bGUgYWNjb3VudGluZy4KICAqLwpAQCAtNDQ0LDYg KzQ4NCwxMSBAQCBwZ3N0YXRfY291bnRfd2FpdF9ldmVudF9lbmQodm9pZCkKIAkJCQkJICBwZ3N0 YXRfd2FpdF9ldmVudF91c2FnZV9jdXJyZW50LAogCQkJCQkgIDEsCiAJCQkJCSAgJmVsYXBzZWQp OworCWlmIChwZ3N0YXRfd2FpdF9ldmVudF9ub2RlX3VzYWdlICE9IE5VTEwpCisJCVdhaXRFdmVu dFVzYWdlQWRkKHBnc3RhdF93YWl0X2V2ZW50X25vZGVfdXNhZ2UsCisJCQkJCQkgIHBnc3RhdF93 YWl0X2V2ZW50X3VzYWdlX2N1cnJlbnQsCisJCQkJCQkgIDEsCisJCQkJCQkgICZlbGFwc2VkKTsK IAogCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2N1cnJlbnQgPSAwOwogCUlOU1RSX1RJTUVfU0VU X1pFUk8ocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfc3RhcnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1 bWVudC5oCmluZGV4IGYwOTNhNTJhYWUwLi5mNDZlZTAzZDJjMSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2lu c3RydW1lbnQuaApAQCAtNjUsNiArNjUsNyBAQCB0eXBlZGVmIGVudW0gSW5zdHJ1bWVudE9wdGlv bgogCUlOU1RSVU1FTlRfUk9XUyA9IDEgPDwgMiwJLyogbmVlZHMgcm93IGNvdW50ICovCiAJSU5T VFJVTUVOVF9XQUwgPSAxIDw8IDMsCS8qIG5lZWRzIFdBTCB1c2FnZSAqLwogCUlOU1RSVU1FTlRf SU8gPSAxIDw8IDQsCQkvKiBuZWVkcyBJTyB1c2FnZSAqLworCUlOU1RSVU1FTlRfV0FJVFMgPSAx IDw8IDUsCS8qIG5lZWRzIHdhaXQgZXZlbnQgdXNhZ2UgKi8KIAlJTlNUUlVNRU5UX0FMTCA9IFBH X0lOVDMyX01BWAogfSBJbnN0cnVtZW50T3B0aW9uOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4 IDc4MWM4Yzc5MTMyLi41NmY5ZGNiZWY4OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTEyMTIs NiArMTIxMiw3IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5TdGF0ZQogCiAJTm9kZUluc3RydW1lbnRh dGlvbiAqaW5zdHJ1bWVudDsJLyogT3B0aW9uYWwgcnVudGltZSBzdGF0cyBmb3IgdGhpcwogCQkJ CQkJCQkJCSAqIG5vZGUgKi8KKwlXYWl0RXZlbnRVc2FnZSAqd2FpdF9ldmVudF91c2FnZTsgLyog T3B0aW9uYWwgd2FpdCBldmVudCB1c2FnZSAqLwogCVdvcmtlck5vZGVJbnN0cnVtZW50YXRpb24g Kndvcmtlcl9pbnN0cnVtZW50OwkvKiBwZXItd29ya2VyCiAJCQkJCQkJCQkJCQkJICogaW5zdHJ1 bWVudGF0aW9uICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCA2Mzk5MjEzN2VlNy4uNjQ0 MTEyODg0MDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKQEAgLTM2LDEyICszNiwxNiBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KHVpbnQzMiB3YWl0X2V2ZW50 X2luZm8pOwogc3RhdGljIGlubGluZSB2b2lkIHBnc3RhdF9yZXBvcnRfd2FpdF9lbmQodm9pZCk7 CiBleHRlcm4gdm9pZCBwZ3N0YXRfc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSh1aW50MzIgKndhaXRf ZXZlbnRfaW5mbyk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVzZXRfd2FpdF9ldmVudF9zdG9yYWdl KHZvaWQpOworZXh0ZXJuIHZvaWQgcGdzdGF0X2luaXRfd2FpdF9ldmVudF91c2FnZShXYWl0RXZl bnRVc2FnZSAqdXNhZ2UsCisJCQkJCQkJCQkJIE1lbW9yeUNvbnRleHQgbWVtY29udGV4dCk7CiBl eHRlcm4gdm9pZCBwZ3N0YXRfYmVnaW5fd2FpdF9ldmVudF91c2FnZShXYWl0RXZlbnRVc2FnZSAq dXNhZ2UsCiAJCQkJCQkJCQkJICBNZW1vcnlDb250ZXh0IG1lbWNvbnRleHQpOwogZXh0ZXJuIHZv aWQgcGdzdGF0X2VuZF93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVzYWdlICp1c2FnZSk7CiBl eHRlcm4gdm9pZCBwZ3N0YXRfYWNjdW11bGF0ZV93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVz YWdlICp1c2FnZSwKIAkJCQkJCQkJCQkJICAgY29uc3QgV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50 cmllcywKIAkJCQkJCQkJCQkJICAgaW50IG5lbnRyaWVzKTsKK2V4dGVybiBXYWl0RXZlbnRVc2Fn ZSAqcGdzdGF0X2VudGVyX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlKTsK K2V4dGVybiB2b2lkIHBnc3RhdF9yZXN0b3JlX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNh Z2UgKnVzYWdlKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9jb3VudF93YWl0X2V2ZW50X3N0YXJ0KHVp bnQzMiB3YWl0X2V2ZW50X2luZm8pOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X3dhaXRfZXZl bnRfZW5kKHZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4 cGxhaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dAppbmRleCBl Mzg0N2UyMjJiZS4uYzA4NmZhNDhkODAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvZXhwbGFpbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWlu Lm91dApAQCAtMTAxLDEyICsxMDEsMTQgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWlu IChidWZmZXJzLCBmb3JtYXQgdGV4dCkgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcKIAogLS0g V0FJVFMgb3B0aW9uCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIHdh aXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZikgc2Vs ZWN0IHBnX3NsZWVwKDAuMDEpJyk7Ci0gICAgICAgICAgICBleHBsYWluX2ZpbHRlciAgICAgICAg ICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgIGV4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgUmVzdWx0IChhY3R1YWwgcm93cz1OLk4gbG9vcHM9TikKKyAg IFdhaXQgRXZlbnRzOgorICAgICBUaW1lb3V0OlBnU2xlZXAgY2FsbHM9TiB0aW1lPU4uTiBtcwog IFdhaXQgRXZlbnRzOgogICAgVGltZW91dDpQZ1NsZWVwIGNhbGxzPU4gdGltZT1OLk4gbXMKLSgz IHJvd3MpCisoNSByb3dzKQogCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFp biAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1 ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3NsZWVwKDAuMDEpJykgIz4gJ3swLFdh aXQgRXZlbnRzLDB9JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Y29s dW1uPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTExNCw2ICsxMTYs MTIgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdh aXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLAogIHsiVGltZSI6IDAuMCwgIkNhbGxzIjogMCwg IldhaXQgRXZlbnQiOiAiUGdTbGVlcCIsICJXYWl0IEV2ZW50IFR5cGUiOiAiVGltZW91dCJ9CiAo MSByb3cpCiAKK3NlbGVjdCBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXpl LCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYs IGZvcm1hdCBqc29uKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKSAjPiAnezAsUGxhbixXYWl0IEV2 ZW50cywwfSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2NvbHVtbj8g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgeyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1NsZWVw IiwgIldhaXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0In0KKygxIHJvdykKKwogYmVnaW47CiBjcmVh dGUgZnVuY3Rpb24gcGdfdGVtcC5wYXJhbGxlbF9wZ19zbGVlcChmbG9hdDgpIHJldHVybnMgdm9p ZAogICBsYW5ndWFnZSBpbnRlcm5hbCB2b2xhdGlsZSBwYXJhbGxlbCBzYWZlIGFzICdwZ19zbGVl cCc7CkBAIC0xMzAsNiArMTM4LDQ0IEBAIHNlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAog IHsiVGltZSI6IDAuMCwgIkNhbGxzIjogMCwgIldhaXQgRXZlbnQiOiAiUGdTbGVlcCIsICJXYWl0 IEV2ZW50IFR5cGUiOiAiVGltZW91dCJ9CiAoMSByb3cpCiAKK3NlbGVjdCBqc29uYl9wYXRoX3F1 ZXJ5X2ZpcnN0KAorICBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3 YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZv cm1hdCBqc29uKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCBwZ190ZW1wLnBhcmFs bGVsX3BnX3NsZWVwKDAuMDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0ZW5rMSB3 aGVyZSB1bmlxdWUxID0gMScpICM+ICd7MCxQbGFufScsCisgICckLioqLiJXYWl0IEV2ZW50cyJb Kl0gPyAoQC4iV2FpdCBFdmVudCIgPT0gIlBnU2xlZXAiKScKKyk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJUaW1lIjogMC4wLCAiQ2Fs bHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1NsZWVwIiwgIldhaXQgRXZlbnQgVHlwZSI6ICJUaW1l b3V0In0KKygxIHJvdykKKworcm9sbGJhY2s7CitiZWdpbjsKKy0tIFRoaXMgdGVzdCBkZWxpYmVy YXRlbHkgY3JlYXRlcyBhIEJpdG1hcCBJbmRleCBTY2FuIHJ1bnRpbWUta2V5IHdhaXQuCistLSBU aGUgU1RBQkxFIFBML3BnU1FMIHdyYXBwZXIgaXMgdGVzdCBzY2FmZm9sZGluZzogU1RBQkxFIGxl dHMgdGhlCistLSBleHByZXNzaW9uIGJlIHVzZWQgYXMgYW4gaW5kZXggcnVudGltZSBrZXksIHdo aWxlIFBML3BnU1FMIHByZXZlbnRzIFNRTAorLS0gaW5saW5pbmcgZnJvbSBtb3ZpbmcgcGdfc2xl ZXAoKSBvdXQgb2YgdGhlIEJpdG1hcCBJbmRleCBTY2FuIGJvdW5kYXJ5LgorLS0gVGhlIHBsYW5u ZXIgR1VDcyBiZWxvdyBhcmUgbGlrZXdpc2UgdGVzdC1vbmx5IHNjYWZmb2xkaW5nIHRvIG1ha2Ug dGhlCistLSBub2RlIHNoYXBlIGRldGVybWluaXN0aWMuCitjcmVhdGUgZnVuY3Rpb24gcGdfdGVt cC5leHBsYWluX3dhaXRzX3NsZWVwX2ludChpbnQpIHJldHVybnMgaW50CisgIGxhbmd1YWdlIHBs cGdzcWwgc3RhYmxlIGFzICQkYmVnaW4gcGVyZm9ybSBwZ19zbGVlcCgwLjAxKTsgcmV0dXJuICQx OyBlbmQkJDsKK2NyZWF0ZSB0ZW1wIHRhYmxlIGV4cGxhaW5fd2FpdHNfYml0bWFwIChhIGludCk7 CitpbnNlcnQgaW50byBleHBsYWluX3dhaXRzX2JpdG1hcCBzZWxlY3QgZyBmcm9tIGdlbmVyYXRl X3NlcmllcygxLCAxMCkgZzsKK2NyZWF0ZSBpbmRleCBleHBsYWluX3dhaXRzX2JpdG1hcF9hX2lk eCBvbiBleHBsYWluX3dhaXRzX2JpdG1hcChhKTsKK2FuYWx5emUgZXhwbGFpbl93YWl0c19iaXRt YXA7CitzZXQgbG9jYWwgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitzZXQgbG9jYWwgZW5hYmxlX2lu ZGV4c2NhbiA9IG9mZjsKK3NlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAorICBleHBsYWlu X2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1t YXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKQorICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGVjdCAqIGZyb20gZXhwbGFpbl93YWl0c19iaXRtYXAKKyAgICAg ICAgICAgICAgICAgICAgICAgICB3aGVyZSBhID0gcGdfdGVtcC5leHBsYWluX3dhaXRzX3NsZWVw X2ludCgxKScpICM+ICd7MCxQbGFufScsCisgICckLioqID8gKEAuIk5vZGUgVHlwZSIgPT0gIkJp dG1hcCBJbmRleCBTY2FuIikuIldhaXQgRXZlbnRzIlsqXSA/IChALiJXYWl0IEV2ZW50IiA9PSAi UGdTbGVlcCIpJworKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25iX3BhdGhf cXVlcnlfZmlyc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyB7IlRpbWUiOiAwLjAsICJDYWxscyI6IDAsICJXYWl0IEV2ZW50IjogIlBn U2xlZXAiLCAiV2FpdCBFdmVudCBUeXBlIjogIlRpbWVvdXQifQorKDEgcm93KQorCiByb2xsYmFj azsKIGV4cGxhaW4gKHdhaXRzKSBzZWxlY3QgMTsKIEVSUk9SOiAgRVhQTEFJTiBvcHRpb24gV0FJ VFMgcmVxdWlyZXMgQU5BTFlaRQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhw bGFpbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbAppbmRleCA4ODIxMjUw YmNlZi4uYmQxOTZmMjQ4ZGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxh aW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsCkBAIC03MSw2ICs3 MSw3IEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYnVmZmVycywgZm9ybWF0IHRl eHQpIHNlbGVjdCAqIGZyb20gaW50OF90YmwgaTgnCiAtLSBXQUlUUyBvcHRpb24KIHNlbGVjdCBl eHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFy eSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKTsK IHNlbGVjdCBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywg Y29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBq c29uKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKSAjPiAnezAsV2FpdCBFdmVudHMsMH0nOworc2Vs ZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0 cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24p IHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxQbGFuLFdhaXQgRXZlbnRzLDB9JzsKIGJl Z2luOwogY3JlYXRlIGZ1bmN0aW9uIHBnX3RlbXAucGFyYWxsZWxfcGdfc2xlZXAoZmxvYXQ4KSBy ZXR1cm5zIHZvaWQKICAgbGFuZ3VhZ2UgaW50ZXJuYWwgdm9sYXRpbGUgcGFyYWxsZWwgc2FmZSBh cyAncGdfc2xlZXAnOwpAQCAtODIsNiArODMsMzQgQEAgc2VsZWN0IGpzb25iX3BhdGhfcXVlcnlf Zmlyc3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0ZW5rMSB3aGVyZSB1bmlxdWUx ID0gMScpICM+ICd7MCxXYWl0IEV2ZW50c30nLAogICAnJFsqXSA/IChALiJXYWl0IEV2ZW50IiA9 PSAiUGdTbGVlcCIpJwogKTsKK3NlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAorICBleHBs YWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBz dW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKQorICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGVjdCBwZ190ZW1wLnBhcmFsbGVsX3BnX3NsZWVwKDAuMDEp CisgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0ZW5rMSB3aGVyZSB1bmlxdWUxID0gMScp ICM+ICd7MCxQbGFufScsCisgICckLioqLiJXYWl0IEV2ZW50cyJbKl0gPyAoQC4iV2FpdCBFdmVu dCIgPT0gIlBnU2xlZXAiKScKKyk7Cityb2xsYmFjazsKK2JlZ2luOworLS0gVGhpcyB0ZXN0IGRl bGliZXJhdGVseSBjcmVhdGVzIGEgQml0bWFwIEluZGV4IFNjYW4gcnVudGltZS1rZXkgd2FpdC4K Ky0tIFRoZSBTVEFCTEUgUEwvcGdTUUwgd3JhcHBlciBpcyB0ZXN0IHNjYWZmb2xkaW5nOiBTVEFC TEUgbGV0cyB0aGUKKy0tIGV4cHJlc3Npb24gYmUgdXNlZCBhcyBhbiBpbmRleCBydW50aW1lIGtl eSwgd2hpbGUgUEwvcGdTUUwgcHJldmVudHMgU1FMCistLSBpbmxpbmluZyBmcm9tIG1vdmluZyBw Z19zbGVlcCgpIG91dCBvZiB0aGUgQml0bWFwIEluZGV4IFNjYW4gYm91bmRhcnkuCistLSBUaGUg cGxhbm5lciBHVUNzIGJlbG93IGFyZSBsaWtld2lzZSB0ZXN0LW9ubHkgc2NhZmZvbGRpbmcgdG8g bWFrZSB0aGUKKy0tIG5vZGUgc2hhcGUgZGV0ZXJtaW5pc3RpYy4KK2NyZWF0ZSBmdW5jdGlvbiBw Z190ZW1wLmV4cGxhaW5fd2FpdHNfc2xlZXBfaW50KGludCkgcmV0dXJucyBpbnQKKyAgbGFuZ3Vh Z2UgcGxwZ3NxbCBzdGFibGUgYXMgJCRiZWdpbiBwZXJmb3JtIHBnX3NsZWVwKDAuMDEpOyByZXR1 cm4gJDE7IGVuZCQkOworY3JlYXRlIHRlbXAgdGFibGUgZXhwbGFpbl93YWl0c19iaXRtYXAgKGEg aW50KTsKK2luc2VydCBpbnRvIGV4cGxhaW5fd2FpdHNfYml0bWFwIHNlbGVjdCBnIGZyb20gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwKSBnOworY3JlYXRlIGluZGV4IGV4cGxhaW5fd2FpdHNfYml0bWFw X2FfaWR4IG9uIGV4cGxhaW5fd2FpdHNfYml0bWFwKGEpOworYW5hbHl6ZSBleHBsYWluX3dhaXRz X2JpdG1hcDsKK3NldCBsb2NhbCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK3NldCBsb2NhbCBlbmFi bGVfaW5kZXhzY2FuID0gb2ZmOworc2VsZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCisgIGV4 cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYs IHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pCisgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ICogZnJvbSBleHBsYWluX3dhaXRzX2JpdG1hcAor ICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIGEgPSBwZ190ZW1wLmV4cGxhaW5fd2FpdHNf c2xlZXBfaW50KDEpJykgIz4gJ3swLFBsYW59JywKKyAgJyQuKiogPyAoQC4iTm9kZSBUeXBlIiA9 PSAiQml0bWFwIEluZGV4IFNjYW4iKS4iV2FpdCBFdmVudHMiWypdID8gKEAuIldhaXQgRXZlbnQi ID09ICJQZ1NsZWVwIiknCispOwogcm9sbGJhY2s7CiBleHBsYWluICh3YWl0cykgc2VsZWN0IDE7 CiAKLS0gCjIuNTIuMAoK --000000000000e7e4510652deeeb3 Content-Type: application/octet-stream; name="0001-Add-EXPLAIN-WAITS-statement-reporting.patch" Content-Disposition: attachment; filename="0001-Add-EXPLAIN-WAITS-statement-reporting.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mppej28k0 RnJvbSA4NzIwMjhlMzk1YmUyMGE4YzcwNzIzNWIwYzlkMDU0YjE4NDU5MmYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDQ6MTAgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MyAxLzddIEFkZCBFWFBMQUlOIFdBSVRTIHN0YXRlbWVudCByZXBvcnRpbmcKCi0tLQogZG9jL3Ny Yy9zZ21sL3JlZi9leHBsYWluLnNnbWwgICAgICAgICAgIHwgIDE0ICsrKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgIHwgMTI5ICsrKysrKysrKysrKysrKysrKystCiBz cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX3N0YXRlLmMgICAgfCAgIDggKysKIHNyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyB8IDE0OSArKysrKysrKysrKysrKysrKysr KysrKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUuaCAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAgfCAgMjkgKysrKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQgICB8ICAxNyArKysKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2V4cGxhaW4uc3FsICAgICAgICB8ICAgNSArCiA4IGZpbGVzIGNoYW5nZWQsIDM0 OSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvZXhwbGFpbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwKaW5kZXgg ZTk1ZTE5MDgxZTEuLjU0NjA1NjhhZjFkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2V4 cGxhaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbApAQCAtNDcsNiAr NDcsNyBAQCBFWFBMQUlOIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9u PC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0gPHJlcAogICAgIFNVTU1BUlkgWyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0KICAgICBNRU1PUlkg WyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0K ICAgICBJTyBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNl YWJsZT4gXQorICAgIFdBSVRTIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xl YW48L3JlcGxhY2VhYmxlPiBdCiAgICAgRk9STUFUIHsgVEVYVCB8IFhNTCB8IEpTT04gfCBZQU1M IH0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KQEAgLTMxMCw2ICszMTEsMTkgQEAg Uk9MTEJBQ0s7CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPldBSVRTPC9saXRlcmFsPjwvdGVybT4KKyAg ICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgSW5jbHVkZSBleGFjdCBiYWNrZW5kLWxv Y2FsIHdhaXQgZXZlbnQgdGltaW5nIG9ic2VydmVkIGR1cmluZyBxdWVyeQorICAgICAgZXhlY3V0 aW9uLiAgV2FpdCBldmVudHMgYXJlIGdyb3VwZWQgYnkgd2FpdCBldmVudCB0eXBlIGFuZCB3YWl0 IGV2ZW50CisgICAgICBuYW1lLCBhbmQgaW5jbHVkZSB0aGUgbnVtYmVyIG9mIHdhaXRzIGFuZCB0 b3RhbCB0aW1lIHNwZW50IHdhaXRpbmcuCisgICAgICBUaGlzIHBhcmFtZXRlciBtYXkgb25seSBi ZSB1c2VkIHdoZW4gPGxpdGVyYWw+QU5BTFlaRTwvbGl0ZXJhbD4gaXMgYWxzbworICAgICAgZW5h YmxlZC4gIEl0IGRlZmF1bHRzIHRvIDxsaXRlcmFsPkZBTFNFPC9saXRlcmFsPi4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3Rl bnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5GT1JNQVQ8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxs aXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCAxMTJjMTdiMGQ2NC4uMGI3Y2M1YzE1 YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJ1 dGlscy90dXBsZXNvcnQuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXN0b3JlLmgiCiAjaW5jbHVk ZSAidXRpbHMvdHlwY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAjaW5j bHVkZSAidXRpbHMveG1sLmgiCiAKIApAQCAtMTQ5LDYgKzE1MCw5IEBAIHN0YXRpYyBjb25zdCBj aGFyICpleHBsYWluX2dldF9pbmRleF9uYW1lKE9pZCBpbmRleElkKTsKIHN0YXRpYyBib29sIHBl ZWtfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2Fn ZSk7CiBzdGF0aWMgdm9pZCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25z dCBCdWZmZXJVc2FnZSAqdXNhZ2UpOwogc3RhdGljIHZvaWQgc2hvd193YWxfdXNhZ2UoRXhwbGFp blN0YXRlICplcywgY29uc3QgV2FsVXNhZ2UgKnVzYWdlKTsKK3N0YXRpYyBpbnQJd2FpdF9ldmVu dF91c2FnZV9jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYik7CitzdGF0aWMgdm9pZCBz aG93X3dhaXRfZXZlbnRfdXNhZ2UoRXhwbGFpblN0YXRlICplcywKKwkJCQkJCQkJICBjb25zdCBX YWl0RXZlbnRVc2FnZSAqdXNhZ2UpOwogc3RhdGljIHZvaWQgc2hvd19tZW1vcnlfY291bnRlcnMo RXhwbGFpblN0YXRlICplcywKIAkJCQkJCQkJIGNvbnN0IE1lbW9yeUNvbnRleHRDb3VudGVycyAq bWVtX2NvdW50ZXJzKTsKIHN0YXRpYyB2b2lkIHNob3dfcmVzdWx0X3JlcGxhY2VtZW50X2luZm8o UmVzdWx0ICpyZXN1bHQsIEV4cGxhaW5TdGF0ZSAqZXMpOwpAQCAtNTEwLDYgKzUxNCw4IEBAIEV4 cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywg RXhwbGFpblN0YXRlICplcywKIAlpbnQJCQllZmxhZ3M7CiAJaW50CQkJaW5zdHJ1bWVudF9vcHRp b24gPSAwOwogCVNlcmlhbGl6ZU1ldHJpY3Mgc2VyaWFsaXplTWV0cmljcyA9IHswfTsKKwlXYWl0 RXZlbnRVc2FnZSB3YWl0RXZlbnRVc2FnZTsKKwlXYWl0RXZlbnRVc2FnZSAqd2FpdEV2ZW50VXNh Z2VQdHIgPSBOVUxMOwogCiAJQXNzZXJ0KHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSAhPSBDTURf VVRJTElUWSk7CiAKQEAgLTU4MywxMSArNTg5LDI3IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRT dG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJ ZWxzZQogCQkJZGlyID0gRm9yd2FyZFNjYW5EaXJlY3Rpb247CiAKKwkJaWYgKGVzLT53YWl0cykK KwkJeworCQkJd2FpdEV2ZW50VXNhZ2VQdHIgPSAmd2FpdEV2ZW50VXNhZ2U7CisJCQlwZ3N0YXRf YmVnaW5fd2FpdF9ldmVudF91c2FnZSh3YWl0RXZlbnRVc2FnZVB0ciwKKwkJCQkJCQkJCQkgIHF1 ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCQl9CisKIAkJLyogcnVuIHRoZSBwbGFu ICovCi0JCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgZGlyLCAwKTsKKwkJUEdfVFJZKCk7CisJCXsK KwkJCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgZGlyLCAwKTsKIAotCQkvKiBydW4gY2xlYW51cCB0 b28gKi8KLQkJRXhlY3V0b3JGaW5pc2gocXVlcnlEZXNjKTsKKwkJCS8qIHJ1biBjbGVhbnVwIHRv byAqLworCQkJRXhlY3V0b3JGaW5pc2gocXVlcnlEZXNjKTsKKwkJfQorCQlQR19GSU5BTExZKCk7 CisJCXsKKwkJCWlmICh3YWl0RXZlbnRVc2FnZVB0cikKKwkJCQlwZ3N0YXRfZW5kX3dhaXRfZXZl bnRfdXNhZ2Uod2FpdEV2ZW50VXNhZ2VQdHIpOworCQl9CisJCVBHX0VORF9UUlkoKTsKIAogCQkv KiBXZSBjYW4ndCBydW4gRXhlY3V0b3JFbmQgJ3RpbGwgd2UncmUgZG9uZSBwcmludGluZyB0aGUg c3RhdHMuLi4gKi8KIAkJdG90YWx0aW1lICs9IGVsYXBzZWRfdGltZSgmc3RhcnR0aW1lKTsKQEAg LTYwNSw2ICs2MjcsOSBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQs IEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJLyogQ3JlYXRlIHRleHR1YWwg ZHVtcCBvZiBwbGFuIHRyZWUgKi8KIAlFeHBsYWluUHJpbnRQbGFuKGVzLCBxdWVyeURlc2MpOwog CisJaWYgKHdhaXRFdmVudFVzYWdlUHRyKQorCQlzaG93X3dhaXRfZXZlbnRfdXNhZ2UoZXMsIHdh aXRFdmVudFVzYWdlUHRyKTsKKwogCS8qIFNob3cgYnVmZmVyIGFuZC9vciBtZW1vcnkgdXNhZ2Ug aW4gcGxhbm5pbmcgKi8KIAlpZiAocGVla19idWZmZXJfdXNhZ2UoZXMsIGJ1ZnVzYWdlKSB8fCBt ZW1fY291bnRlcnMpCiAJewpAQCAtNDUwMyw2ICs0NTI4LDEwNCBAQCBzaG93X3dhbF91c2FnZShF eHBsYWluU3RhdGUgKmVzLCBjb25zdCBXYWxVc2FnZSAqdXNhZ2UpCiAJfQogfQogCitzdGF0aWMg aW50Cit3YWl0X2V2ZW50X3VzYWdlX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQor eworCWNvbnN0IFdhaXRFdmVudFVzYWdlRW50cnkgKmVhID0gKGNvbnN0IFdhaXRFdmVudFVzYWdl RW50cnkgKikgYTsKKwljb25zdCBXYWl0RXZlbnRVc2FnZUVudHJ5ICplYiA9IChjb25zdCBXYWl0 RXZlbnRVc2FnZUVudHJ5ICopIGI7CisJaW50NjQJCXRhID0gSU5TVFJfVElNRV9HRVRfTUlDUk9T RUMoZWEtPnRpbWUpOworCWludDY0CQl0YiA9IElOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKGViLT50 aW1lKTsKKworCWlmICh0YSA8IHRiKQorCQlyZXR1cm4gMTsKKwlpZiAodGEgPiB0YikKKwkJcmV0 dXJuIC0xOworCWlmIChlYS0+d2FpdF9ldmVudF9pbmZvIDwgZWItPndhaXRfZXZlbnRfaW5mbykK KwkJcmV0dXJuIC0xOworCWlmIChlYS0+d2FpdF9ldmVudF9pbmZvID4gZWItPndhaXRfZXZlbnRf aW5mbykKKwkJcmV0dXJuIDE7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X3dh aXRfZXZlbnRfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgV2FpdEV2ZW50VXNhZ2UgKnVz YWdlKQoreworCVdhaXRFdmVudFVzYWdlRW50cnkgKmVudHJpZXM7CisKKwlpZiAodXNhZ2UgPT0g TlVMTCkKKwkJcmV0dXJuOworCisJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVY VCAmJiB1c2FnZS0+bmVudHJpZXMgPT0gMCkKKwkJcmV0dXJuOworCisJaWYgKHVzYWdlLT5uZW50 cmllcyA+IDApCisJeworCQllbnRyaWVzID0gcGFsbG9jX2FycmF5KFdhaXRFdmVudFVzYWdlRW50 cnksIHVzYWdlLT5uZW50cmllcyk7CisJCW1lbWNweShlbnRyaWVzLCB1c2FnZS0+ZW50cmllcywK KwkJCSAgIHNpemVvZihXYWl0RXZlbnRVc2FnZUVudHJ5KSAqIHVzYWdlLT5uZW50cmllcyk7CisJ CXFzb3J0KGVudHJpZXMsIHVzYWdlLT5uZW50cmllcywgc2l6ZW9mKFdhaXRFdmVudFVzYWdlRW50 cnkpLAorCQkJICB3YWl0X2V2ZW50X3VzYWdlX2NtcCk7CisJfQorCWVsc2UKKwkJZW50cmllcyA9 IE5VTEw7CisKKwlpZiAoZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQorCXsKKwkJ RXhwbGFpbkluZGVudFRleHQoZXMpOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGVzLT5zdHIs ICJXYWl0IEV2ZW50czpcbiIpOworCQllcy0+aW5kZW50Kys7CisKKwkJZm9yIChpbnQgaSA9IDA7 IGkgPCB1c2FnZS0+bmVudHJpZXM7IGkrKykKKwkJeworCQkJY29uc3QgY2hhciAqZXZlbnRfdHlw ZTsKKwkJCWNvbnN0IGNoYXIgKmV2ZW50X25hbWU7CisKKwkJCWV2ZW50X3R5cGUgPSBwZ3N0YXRf Z2V0X3dhaXRfZXZlbnRfdHlwZShlbnRyaWVzW2ldLndhaXRfZXZlbnRfaW5mbyk7CisJCQlldmVu dF9uYW1lID0gcGdzdGF0X2dldF93YWl0X2V2ZW50KGVudHJpZXNbaV0ud2FpdF9ldmVudF9pbmZv KTsKKworCQkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+ c3RyLCAiJXM6JXMgY2FsbHM9JSIgUFJJdTY0ICIgdGltZT0lMC4zZiBtc1xuIiwKKwkJCQkJCQkg ZXZlbnRfdHlwZSA/IGV2ZW50X3R5cGUgOiAiVW5rbm93biIsCisJCQkJCQkJIGV2ZW50X25hbWUg PyBldmVudF9uYW1lIDogInVua25vd24iLAorCQkJCQkJCSBlbnRyaWVzW2ldLmNhbGxzLAorCQkJ CQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhlbnRyaWVzW2ldLnRpbWUpKTsKKwkJfQorCisJ CWVzLT5pbmRlbnQtLTsKKwl9CisJZWxzZQorCXsKKwkJRXhwbGFpbk9wZW5Hcm91cCgiV2FpdC1F dmVudHMiLCAiV2FpdCBFdmVudHMiLCBmYWxzZSwgZXMpOworCisJCWZvciAoaW50IGkgPSAwOyBp IDwgdXNhZ2UtPm5lbnRyaWVzOyBpKyspCisJCXsKKwkJCWNvbnN0IGNoYXIgKmV2ZW50X3R5cGU7 CisJCQljb25zdCBjaGFyICpldmVudF9uYW1lOworCisJCQlldmVudF90eXBlID0gcGdzdGF0X2dl dF93YWl0X2V2ZW50X3R5cGUoZW50cmllc1tpXS53YWl0X2V2ZW50X2luZm8pOworCQkJZXZlbnRf bmFtZSA9IHBnc3RhdF9nZXRfd2FpdF9ldmVudChlbnRyaWVzW2ldLndhaXRfZXZlbnRfaW5mbyk7 CisKKwkJCUV4cGxhaW5PcGVuR3JvdXAoIldhaXQtRXZlbnQiLCBOVUxMLCB0cnVlLCBlcyk7CisJ CQlFeHBsYWluUHJvcGVydHlUZXh0KCJXYWl0IEV2ZW50IFR5cGUiLAorCQkJCQkJCQlldmVudF90 eXBlID8gZXZlbnRfdHlwZSA6ICJVbmtub3duIiwKKwkJCQkJCQkJZXMpOworCQkJRXhwbGFpblBy b3BlcnR5VGV4dCgiV2FpdCBFdmVudCIsCisJCQkJCQkJCWV2ZW50X25hbWUgPyBldmVudF9uYW1l IDogInVua25vd24iLAorCQkJCQkJCQllcyk7CisJCQlFeHBsYWluUHJvcGVydHlVSW50ZWdlcigi Q2FsbHMiLCBOVUxMLCBlbnRyaWVzW2ldLmNhbGxzLCBlcyk7CisJCQlFeHBsYWluUHJvcGVydHlG bG9hdCgiVGltZSIsICJtcyIsCisJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhlbnRy aWVzW2ldLnRpbWUpLAorCQkJCQkJCQkgMywgZXMpOworCQkJRXhwbGFpbkNsb3NlR3JvdXAoIldh aXQtRXZlbnQiLCBOVUxMLCB0cnVlLCBlcyk7CisJCX0KKworCQlFeHBsYWluQ2xvc2VHcm91cCgi V2FpdC1FdmVudHMiLCAiV2FpdCBFdmVudHMiLCBmYWxzZSwgZXMpOworCX0KKworCWlmIChlbnRy aWVzKQorCQlwZnJlZShlbnRyaWVzKTsKK30KKwogLyoKICAqIFNob3cgbWVtb3J5IHVzYWdlIGRl dGFpbHMuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fc3Rh dGUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUuYwppbmRleCBhMGVlMGE2 NjRiZS4uMmFiY2I2NGNjOTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW5fc3RhdGUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX3N0YXRlLmMKQEAg LTE2NCw2ICsxNjQsOCBAQCBQYXJzZUV4cGxhaW5PcHRpb25MaXN0KEV4cGxhaW5TdGF0ZSAqZXMs IExpc3QgKm9wdGlvbnMsIFBhcnNlU3RhdGUgKnBzdGF0ZSkKIAkJfQogCQllbHNlIGlmIChzdHJj bXAob3B0LT5kZWZuYW1lLCAiaW8iKSA9PSAwKQogCQkJZXMtPmlvID0gZGVmR2V0Qm9vbGVhbihv cHQpOworCQllbHNlIGlmIChzdHJjbXAob3B0LT5kZWZuYW1lLCAid2FpdHMiKSA9PSAwKQorCQkJ ZXMtPndhaXRzID0gZGVmR2V0Qm9vbGVhbihvcHQpOwogCQllbHNlIGlmICghQXBwbHlFeHRlbnNp b25FeHBsYWluT3B0aW9uKGVzLCBvcHQsIHBzdGF0ZSkpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC0xOTYsNiArMTk4LDEyIEBAIFBh cnNlRXhwbGFpbk9wdGlvbkxpc3QoRXhwbGFpblN0YXRlICplcywgTGlzdCAqb3B0aW9ucywgUGFy c2VTdGF0ZSAqcHN0YXRlKQogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLAogCQkJCSBlcnJtc2coIkVYUExBSU4gb3B0aW9uICVzIHJlcXVpcmVzIEFOQUxZWkUi LCAiSU8iKSkpOwogCisJLyogY2hlY2sgdGhhdCBXQUlUUyBpcyB1c2VkIHdpdGggRVhQTEFJTiBB TkFMWVpFICovCisJaWYgKGVzLT53YWl0cyAmJiAhZXMtPmFuYWx5emUpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJ IGVycm1zZygiRVhQTEFJTiBvcHRpb24gJXMgcmVxdWlyZXMgQU5BTFlaRSIsICJXQUlUUyIpKSk7 CisKIAkvKiBjaGVjayB0aGF0IHNlcmlhbGl6ZSBpcyB1c2VkIHdpdGggRVhQTEFJTiBBTkFMWVpF ICovCiAJaWYgKGVzLT5zZXJpYWxpemUgIT0gRVhQTEFJTl9TRVJJQUxJWkVfTk9ORSAmJiAhZXMt PmFuYWx5emUpCiAJCWVyZXBvcnQoRVJST1IsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50LmMKaW5kZXggOTU2MzVjN2Y1NmMuLjYwZDM3Y2NiYjczIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBAIC0zNiwxMSArMzYsMjAgQEAgc3RhdGljIGNvbnN0 IGNoYXIgKnBnc3RhdF9nZXRfd2FpdF9jbGllbnQoV2FpdEV2ZW50Q2xpZW50IHcpOwogc3RhdGlj IGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50SVBDIHcpOwogc3RhdGlj IGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfd2FpdF90aW1lb3V0KFdhaXRFdmVudFRpbWVvdXQgdyk7 CiBzdGF0aWMgY29uc3QgY2hhciAqcGdzdGF0X2dldF93YWl0X2lvKFdhaXRFdmVudElPIHcpOwor c3RhdGljIHZvaWQgV2FpdEV2ZW50VXNhZ2VBZGQoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCB1aW50 MzIgd2FpdF9ldmVudF9pbmZvLAorCQkJCQkJCSAgY29uc3QgaW5zdHJfdGltZSAqZWxhcHNlZCk7 CiAKIAogc3RhdGljIHVpbnQzMiBsb2NhbF9teV93YWl0X2V2ZW50X2luZm87CiB1aW50MzIJICAg Km15X3dhaXRfZXZlbnRfaW5mbyA9ICZsb2NhbF9teV93YWl0X2V2ZW50X2luZm87CiAKKyNkZWZp bmUgV0FJVF9FVkVOVF9VU0FHRV9JTklUSUFMX0VWRU5UUwkxNgorCitpbnQJCQlwZ3N0YXRfd2Fp dF9ldmVudF91c2FnZV9kZXB0aCA9IDA7CitzdGF0aWMgV2FpdEV2ZW50VXNhZ2UgKnBnc3RhdF93 YWl0X2V2ZW50X3VzYWdlID0gTlVMTDsKK3N0YXRpYyB1aW50MzIgcGdzdGF0X3dhaXRfZXZlbnRf dXNhZ2VfY3VycmVudCA9IDA7CitzdGF0aWMgaW5zdHJfdGltZSBwZ3N0YXRfd2FpdF9ldmVudF91 c2FnZV9zdGFydDsKKwogI2RlZmluZSBXQUlUX0VWRU5UX0NMQVNTX01BU0sJMHhGRjAwMDAwMAog I2RlZmluZSBXQUlUX0VWRU5UX0lEX01BU0sJCTB4MDAwMEZGRkYKIApAQCAtMzQ5LDYgKzM1OCwx NDYgQEAgcGdzdGF0X3Jlc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSh2b2lkKQogCW15X3dhaXRfZXZl bnRfaW5mbyA9ICZsb2NhbF9teV93YWl0X2V2ZW50X2luZm87CiB9CiAKKy8qCisgKiBTdGFydCBj b2xsZWN0aW5nIGV4YWN0IHdhaXQgZXZlbnQgdGltaW5ncyBpbiB0aGlzIGJhY2tlbmQuCisgKgor ICogVGhpcyBpcyBpbnRlbmRlZCBmb3Igc2hvcnQtbGl2ZWQgaW5zdHJ1bWVudGF0aW9uIHN1Y2gg YXMgRVhQTEFJTiBBTkFMWVpFLgorICogSXQgcmVjb3JkcyB3YWl0cyBvYnNlcnZlZCB0aHJvdWdo IHBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydC9lbmQgaW4gYmFja2VuZAorICogbG9jYWwgbWVtb3J5 LiAgTmVzdGVkIGNvbGxlY3Rpb24gaXMgZGVsaWJlcmF0ZWx5IHRyZWF0ZWQgYXMgcGFydCBvZiB0 aGUKKyAqIG91dGVyIGNvbGxlY3Rpb24gZm9yIG5vdzsgY2FsbGVycyB0aGF0IHdhbnQgaW5kZXBl bmRlbnQgbmVzdGVkIGFjY291bnRpbmcKKyAqIG5lZWQgYSBzdGFjayBvZiBXYWl0RXZlbnRVc2Fn ZSBjb250ZXh0cy4KKyAqLwordm9pZAorcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2UoV2Fp dEV2ZW50VXNhZ2UgKnVzYWdlLCBNZW1vcnlDb250ZXh0IG1lbWNvbnRleHQpCit7CisJQXNzZXJ0 KHVzYWdlICE9IE5VTEwpOworCUFzc2VydChtZW1jb250ZXh0ICE9IE5VTEwpOworCisJaWYgKHBn c3RhdF93YWl0X2V2ZW50X3VzYWdlX2RlcHRoKysgPT0gMCkKKwl7CisJCW1lbXNldCh1c2FnZSwg MCwgc2l6ZW9mKFdhaXRFdmVudFVzYWdlKSk7CisJCXVzYWdlLT5tZW1jb250ZXh0ID0gbWVtY29u dGV4dDsKKwkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2UgPSB1c2FnZTsKKwkJcGdzdGF0X3dhaXRf ZXZlbnRfdXNhZ2VfY3VycmVudCA9IDA7CisJCUlOU1RSX1RJTUVfU0VUX1pFUk8ocGdzdGF0X3dh aXRfZXZlbnRfdXNhZ2Vfc3RhcnQpOworCX0KK30KKworLyoKKyAqIFN0b3AgY29sbGVjdGluZyB3 YWl0IGV2ZW50IHRpbWluZ3MuCisgKi8KK3ZvaWQKK3Bnc3RhdF9lbmRfd2FpdF9ldmVudF91c2Fn ZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2UpCit7CisJQXNzZXJ0KHVzYWdlICE9IE5VTEwpOworCUFz c2VydChwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9kZXB0aCA+IDApOworCisJaWYgKC0tcGdzdGF0 X3dhaXRfZXZlbnRfdXNhZ2VfZGVwdGggPT0gMCkKKwl7CisJCWlmIChwZ3N0YXRfd2FpdF9ldmVu dF91c2FnZV9jdXJyZW50ICE9IDApCisJCQlwZ3N0YXRfY291bnRfd2FpdF9ldmVudF9lbmQoKTsK KworCQlwZ3N0YXRfd2FpdF9ldmVudF91c2FnZSA9IE5VTEw7CisJCXBnc3RhdF93YWl0X2V2ZW50 X3VzYWdlX2N1cnJlbnQgPSAwOworCQlJTlNUUl9USU1FX1NFVF9aRVJPKHBnc3RhdF93YWl0X2V2 ZW50X3VzYWdlX3N0YXJ0KTsKKwl9Cit9CisKKy8qCisgKiBSZWNvcmQgdGhlIGJlZ2lubmluZyBv ZiBhIHdhaXQgZXZlbnQgZm9yIGV4YWN0IEVYUExBSU4tc3R5bGUgYWNjb3VudGluZy4KKyAqLwor dm9pZAorcGdzdGF0X2NvdW50X3dhaXRfZXZlbnRfc3RhcnQodWludDMyIHdhaXRfZXZlbnRfaW5m bykKK3sKKwlpZiAocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2UgPT0gTlVMTCkKKwkJcmV0dXJuOwor CisJLyoKKwkgKiBXYWl0cyBhcmUgbm90IGV4cGVjdGVkIHRvIG5lc3QuICBJZiB0aGV5IGRvLCBm aW5pc2ggdGhlIHByZXZpb3VzIHdhaXQKKwkgKiBhdCB0aGUgYm91bmRhcnkgc28gYWNjb3VudGlu ZyByZW1haW5zIGludGVybmFsbHkgY29uc2lzdGVudC4KKwkgKi8KKwlpZiAocGdzdGF0X3dhaXRf ZXZlbnRfdXNhZ2VfY3VycmVudCAhPSAwKQorCQlwZ3N0YXRfY291bnRfd2FpdF9ldmVudF9lbmQo KTsKKworCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2N1cnJlbnQgPSB3YWl0X2V2ZW50X2luZm87 CisJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9zdGFydCk7 Cit9CisKKy8qCisgKiBSZWNvcmQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCB3YWl0IGV2ZW50Lgor ICovCit2b2lkCitwZ3N0YXRfY291bnRfd2FpdF9ldmVudF9lbmQodm9pZCkKK3sKKwlpbnN0cl90 aW1lCWVuZDsKKwlpbnN0cl90aW1lCWVsYXBzZWQ7CisKKwlpZiAocGdzdGF0X3dhaXRfZXZlbnRf dXNhZ2UgPT0gTlVMTCB8fAorCQlwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9jdXJyZW50ID09IDAp CisJCXJldHVybjsKKworCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoZW5kKTsKKwllbGFwc2VkID0g ZW5kOworCUlOU1RSX1RJTUVfU1VCVFJBQ1QoZWxhcHNlZCwgcGdzdGF0X3dhaXRfZXZlbnRfdXNh Z2Vfc3RhcnQpOworCisJV2FpdEV2ZW50VXNhZ2VBZGQocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Us CisJCQkJCSAgcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfY3VycmVudCwKKwkJCQkJICAmZWxhcHNl ZCk7CisKKwlwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9jdXJyZW50ID0gMDsKKwlJTlNUUl9USU1F X1NFVF9aRVJPKHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX3N0YXJ0KTsKK30KKworc3RhdGljIHZv aWQKK1dhaXRFdmVudFVzYWdlQWRkKFdhaXRFdmVudFVzYWdlICp1c2FnZSwgdWludDMyIHdhaXRf ZXZlbnRfaW5mbywKKwkJCQkgIGNvbnN0IGluc3RyX3RpbWUgKmVsYXBzZWQpCit7CisJV2FpdEV2 ZW50VXNhZ2VFbnRyeSAqZW50cnkgPSBOVUxMOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCB1c2Fn ZS0+bmVudHJpZXM7IGkrKykKKwl7CisJCWlmICh1c2FnZS0+ZW50cmllc1tpXS53YWl0X2V2ZW50 X2luZm8gPT0gd2FpdF9ldmVudF9pbmZvKQorCQl7CisJCQllbnRyeSA9ICZ1c2FnZS0+ZW50cmll c1tpXTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKGVudHJ5ID09IE5VTEwpCisJeworCQlp ZiAodXNhZ2UtPm5lbnRyaWVzID49IHVzYWdlLT5tYXhlbnRyaWVzKQorCQl7CisJCQlNZW1vcnlD b250ZXh0IG9sZGNvbnRleHQ7CisJCQlpbnQJCQluZXdtYXhlbnRyaWVzOworCisJCQlpZiAodXNh Z2UtPm1heGVudHJpZXMgPiAwKQorCQkJCW5ld21heGVudHJpZXMgPSB1c2FnZS0+bWF4ZW50cmll cyAqIDI7CisJCQllbHNlCisJCQkJbmV3bWF4ZW50cmllcyA9IFdBSVRfRVZFTlRfVVNBR0VfSU5J VElBTF9FVkVOVFM7CisKKwkJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8odXNh Z2UtPm1lbWNvbnRleHQpOworCQkJaWYgKHVzYWdlLT5lbnRyaWVzKQorCQkJCXVzYWdlLT5lbnRy aWVzID0gcmVwYWxsb2NfYXJyYXkodXNhZ2UtPmVudHJpZXMsCisJCQkJCQkJCQkJCQlXYWl0RXZl bnRVc2FnZUVudHJ5LAorCQkJCQkJCQkJCQkJbmV3bWF4ZW50cmllcyk7CisJCQllbHNlCisJCQkJ dXNhZ2UtPmVudHJpZXMgPSBwYWxsb2NfYXJyYXkoV2FpdEV2ZW50VXNhZ2VFbnRyeSwKKwkJCQkJ CQkJCQkJICBuZXdtYXhlbnRyaWVzKTsKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250 ZXh0KTsKKworCQkJdXNhZ2UtPm1heGVudHJpZXMgPSBuZXdtYXhlbnRyaWVzOworCQl9CisKKwkJ ZW50cnkgPSAmdXNhZ2UtPmVudHJpZXNbdXNhZ2UtPm5lbnRyaWVzKytdOworCQllbnRyeS0+d2Fp dF9ldmVudF9pbmZvID0gd2FpdF9ldmVudF9pbmZvOworCQllbnRyeS0+Y2FsbHMgPSAwOworCQlJ TlNUUl9USU1FX1NFVF9aRVJPKGVudHJ5LT50aW1lKTsKKwl9CisKKwllbnRyeS0+Y2FsbHMrKzsK KwlJTlNUUl9USU1FX0FERChlbnRyeS0+dGltZSwgKmVsYXBzZWQpOworfQorCiAvKiAtLS0tLS0t LS0tCiAgKiBwZ3N0YXRfZ2V0X3dhaXRfZXZlbnRfdHlwZSgpIC0KICAqCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX3N0YXRlLmggYi9zcmMvaW5jbHVkZS9jb21tYW5k cy9leHBsYWluX3N0YXRlLmgKaW5kZXggOTdiYzdlZDQ5ZjYuLjRmMGQwZDQ5NWQ0IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX3N0YXRlLmgKKysrIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZXhwbGFpbl9zdGF0ZS5oCkBAIC01Niw2ICs1Niw3IEBAIHR5cGVkZWYgc3Ry dWN0IEV4cGxhaW5TdGF0ZQogCWJvb2wJCW1lbW9yeTsJCQkvKiBwcmludCBwbGFubmVyJ3MgbWVt b3J5IHVzYWdlIGluZm9ybWF0aW9uICovCiAJYm9vbAkJc2V0dGluZ3M7CQkvKiBwcmludCBtb2Rp ZmllZCBzZXR0aW5ncyAqLwogCWJvb2wJCWlvOwkJCQkvKiBwcmludCBpbmZvIGFib3V0IElPIChw cmVmZXRjaCwgLi4uKSAqLworCWJvb2wJCXdhaXRzOwkJCS8qIHByaW50IHdhaXQgZXZlbnQgdXNh Z2UgKi8KIAlib29sCQlnZW5lcmljOwkJLyogZ2VuZXJhdGUgYSBnZW5lcmljIHBsYW4gKi8KIAlF eHBsYWluU2VyaWFsaXplT3B0aW9uIHNlcmlhbGl6ZTsJLyogc2VyaWFsaXplIHRoZSBxdWVyeSdz IG91dHB1dD8gKi8KIAlFeHBsYWluRm9ybWF0IGZvcm1hdDsJCS8qIG91dHB1dCBmb3JtYXQgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRl L3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCA4NmVlMzQ4MjIwZC4uZjdmYWI1NzM2YmIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy93YWl0X2V2ZW50LmgKQEAgLTExLDE2ICsxMSwzOSBAQAogI2RlZmluZSBXQUlUX0VWRU5U X0gKIAogLyogZW51bXMgZm9yIHdhaXQgZXZlbnRzICovCisjaW5jbHVkZSAicG9ydGFiaWxpdHkv aW5zdHJfdGltZS5oIgorI2luY2x1ZGUgInV0aWxzL3BhbGxvYy5oIgogI2luY2x1ZGUgInV0aWxz L3dhaXRfZXZlbnRfdHlwZXMuaCIKIAordHlwZWRlZiBzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2VFbnRy eQoreworCXVpbnQzMgkJd2FpdF9ldmVudF9pbmZvOworCXVpbnQ2NAkJY2FsbHM7CisJaW5zdHJf dGltZQl0aW1lOworfSBXYWl0RXZlbnRVc2FnZUVudHJ5OworCit0eXBlZGVmIHN0cnVjdCBXYWl0 RXZlbnRVc2FnZQoreworCU1lbW9yeUNvbnRleHQgbWVtY29udGV4dDsKKwlpbnQJCQluZW50cmll czsKKwlpbnQJCQltYXhlbnRyaWVzOworCVdhaXRFdmVudFVzYWdlRW50cnkgKmVudHJpZXM7Cit9 IFdhaXRFdmVudFVzYWdlOworCiBleHRlcm4gY29uc3QgY2hhciAqcGdzdGF0X2dldF93YWl0X2V2 ZW50KHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwogZXh0ZXJuIGNvbnN0IGNoYXIgKnBnc3RhdF9n ZXRfd2FpdF9ldmVudF90eXBlKHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwogc3RhdGljIGlubGlu ZSB2b2lkIHBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydCh1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsK IHN0YXRpYyBpbmxpbmUgdm9pZCBwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKHZvaWQpOwogZXh0ZXJu IHZvaWQgcGdzdGF0X3NldF93YWl0X2V2ZW50X3N0b3JhZ2UodWludDMyICp3YWl0X2V2ZW50X2lu Zm8pOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3Jlc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSh2b2lkKTsK K2V4dGVybiB2b2lkIHBnc3RhdF9iZWdpbl93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVzYWdl ICp1c2FnZSwKKwkJCQkJCQkJCQkgIE1lbW9yeUNvbnRleHQgbWVtY29udGV4dCk7CitleHRlcm4g dm9pZCBwZ3N0YXRfZW5kX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlKTsK K2V4dGVybiB2b2lkIHBnc3RhdF9jb3VudF93YWl0X2V2ZW50X3N0YXJ0KHVpbnQzMiB3YWl0X2V2 ZW50X2luZm8pOworZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X3dhaXRfZXZlbnRfZW5kKHZvaWQp OwogCiBleHRlcm4gUEdETExJTVBPUlQgdWludDMyICpteV93YWl0X2V2ZW50X2luZm87CitleHRl cm4gUEdETExJTVBPUlQgaW50IHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2RlcHRoOwogCiAKIC8q CkBAIC02Niw2ICs4OSw5IEBAIGV4dGVybiBjaGFyICoqR2V0V2FpdEV2ZW50Q3VzdG9tTmFtZXMo dWludDMyIGNsYXNzSWQsIGludCAqbndhaXRldmVudHMpOwogc3RhdGljIGlubGluZSB2b2lkCiBw Z3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQodWludDMyIHdhaXRfZXZlbnRfaW5mbykKIHsKKwlpZiAo cGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfZGVwdGggPiAwKQorCQlwZ3N0YXRfY291bnRfd2FpdF9l dmVudF9zdGFydCh3YWl0X2V2ZW50X2luZm8pOworCiAJLyoKIAkgKiBTaW5jZSB0aGlzIGlzIGEg Zm91ci1ieXRlIGZpZWxkIHdoaWNoIGlzIGFsd2F5cyByZWFkIGFuZCB3cml0dGVuIGFzCiAJICog Zm91ci1ieXRlcywgdXBkYXRlcyBhcmUgYXRvbWljLgpAQCAtODIsNiArMTA4LDkgQEAgcGdzdGF0 X3JlcG9ydF93YWl0X3N0YXJ0KHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiBzdGF0aWMgaW5saW5l IHZvaWQKIHBnc3RhdF9yZXBvcnRfd2FpdF9lbmQodm9pZCkKIHsKKwlpZiAocGdzdGF0X3dhaXRf ZXZlbnRfdXNhZ2VfZGVwdGggPiAwKQorCQlwZ3N0YXRfY291bnRfd2FpdF9ldmVudF9lbmQoKTsK KwogCS8qIHNlZSBwZ3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQoKSAqLwogCSoodm9sYXRpbGUgdWlu dDMyICopIG15X3dhaXRfZXZlbnRfaW5mbyA9IDA7CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9l eHBsYWluLm91dAppbmRleCA3NGE0ZDg3ODAxZS4uMmM3YTdlMWQ0YzYgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9leHBsYWluLm91dApAQCAtOTksNiArOTksMjMgQEAgc2VsZWN0IGV4cGxhaW5f ZmlsdGVyKCdleHBsYWluIChidWZmZXJzLCBmb3JtYXQgdGV4dCkgc2VsZWN0ICogZnJvbSBpbnQ4 X3RibCBpOCcKICBTZXEgU2NhbiBvbiBpbnQ4X3RibCBpOCAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1O IHdpZHRoPU4pCiAoMSByb3cpCiAKKy0tIFdBSVRTIG9wdGlvbgorc2VsZWN0IGV4cGxhaW5fZmls dGVyKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGlt aW5nIG9mZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpOworICAgICAgICAg ICAgZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQgKGFjdHVhbCByb3dzPU4uTiBsb29wcz1OKQorIFdhaXQg RXZlbnRzOgorICAgVGltZW91dDpQZ1NsZWVwIGNhbGxzPU4gdGltZT1OLk4gbXMKKygzIHJvd3Mp CisKK3NlbGVjdCBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0 cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1h dCBqc29uKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKSAjPiAnezAsV2FpdCBFdmVudHMsMH0nOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9jb2x1bW4/ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsi VGltZSI6IDAuMCwgIkNhbGxzIjogMCwgIldhaXQgRXZlbnQiOiAiUGdTbGVlcCIsICJXYWl0IEV2 ZW50IFR5cGUiOiAiVGltZW91dCJ9CisoMSByb3cpCisKK2V4cGxhaW4gKHdhaXRzKSBzZWxlY3Qg MTsKK0VSUk9SOiAgRVhQTEFJTiBvcHRpb24gV0FJVFMgcmVxdWlyZXMgQU5BTFlaRQogXGEKIHNl bGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgYnVmZmVycywgaW8sIGZvcm1h dCB4bWwpIHNlbGVjdCAqIGZyb20gaW50OF90YmwgaTgnKTsKIGV4cGxhaW5fZmlsdGVyCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2V4cGxhaW4uc3FsCmluZGV4IDJmMTYzYzY0YmY2Li5mZTAyNWRkZWFjNSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvZXhwbGFpbi5zcWwKQEAgLTY4LDYgKzY4LDExIEBAIHNlbGVjdCBleHBsYWluX2Zp bHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgYnVmZmVycyBvZmYsIHZlcmJvc2UpIHNlbGVjdCAqIGZy b20gaW50CiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIGJ1ZmZlcnMs IGZvcm1hdCB0ZXh0KSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CiBzZWxlY3QgZXhwbGFp bl9maWx0ZXIoJ2V4cGxhaW4gKGJ1ZmZlcnMsIGZvcm1hdCB0ZXh0KSBzZWxlY3QgKiBmcm9tIGlu dDhfdGJsIGk4Jyk7CiAKKy0tIFdBSVRTIG9wdGlvbgorc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdl eHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9m ZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpOworc2VsZWN0IGV4cGxhaW5f ZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1h cnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pIHNlbGVjdCBwZ19z bGVlcCgwLjAxKScpICM+ICd7MCxXYWl0IEV2ZW50cywwfSc7CitleHBsYWluICh3YWl0cykgc2Vs ZWN0IDE7CisKIFxhCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIGJ1 ZmZlcnMsIGlvLCBmb3JtYXQgeG1sKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CiBzZWxl Y3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIHNlcmlhbGl6ZSwgYnVmZmVycywg aW8sIGZvcm1hdCB5YW1sKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7Ci0tIAoyLjUyLjAK Cg== --000000000000e7e4510652deeeb3 Content-Type: application/octet-stream; name="0002-Aggregate-EXPLAIN-WAITS-from-parallel-workers.patch" Content-Disposition: attachment; filename="0002-Aggregate-EXPLAIN-WAITS-from-parallel-workers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mppej28q1 RnJvbSAyZmIwNWNkNGRhN2M0NzkyYjRlODJkZjY4MjJlZWRmZDM0MGU1MTFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDQ6MjQgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MyAyLzddIEFnZ3JlZ2F0ZSBFWFBMQUlOIFdBSVRTIGZyb20gcGFyYWxsZWwgd29ya2VycwoKLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgfCAgIDQgKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICB8IDEyOSArKysrKysrKysrKysrKysrKysrKysrKysK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICB8ICAgMSArCiBzcmMvYmFj a2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgfCAgMjIgKysrLQogc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmggICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50 LmggICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91 dCAgIHwgIDE3ICsrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsICAgICAgICB8 ICAxMiArKysKIDEwIGZpbGVzIGNoYW5nZWQsIDE5MCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCAwYjdjYzVjMTVjNi4uOWQ3MzcyZjU0MTUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTU5NCw2ICs1OTQsNyBAQCBFeHBsYWluT25lUGxh bihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0 ZSAqZXMsCiAJCQl3YWl0RXZlbnRVc2FnZVB0ciA9ICZ3YWl0RXZlbnRVc2FnZTsKIAkJCXBnc3Rh dF9iZWdpbl93YWl0X2V2ZW50X3VzYWdlKHdhaXRFdmVudFVzYWdlUHRyLAogCQkJCQkJCQkJCSAg cXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CisJCQlxdWVyeURlc2MtPmVzdGF0ZS0+ ZXNfd2FpdF9ldmVudF91c2FnZSA9IHdhaXRFdmVudFVzYWdlUHRyOwogCQl9CiAKIAkJLyogcnVu IHRoZSBwbGFuICovCkBAIC02MDcsNyArNjA4LDEwIEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRT dG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJ UEdfRklOQUxMWSgpOwogCQl7CiAJCQlpZiAod2FpdEV2ZW50VXNhZ2VQdHIpCisJCQl7CiAJCQkJ cGdzdGF0X2VuZF93YWl0X2V2ZW50X3VzYWdlKHdhaXRFdmVudFVzYWdlUHRyKTsKKwkJCQlxdWVy eURlc2MtPmVzdGF0ZS0+ZXNfd2FpdF9ldmVudF91c2FnZSA9IE5VTEw7CisJCQl9CiAJCX0KIAkJ UEdfRU5EX1RSWSgpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCA0YjMwZjc2ODY4MC4u ODZhYjEyNGMxYzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMzA2Niw2ICszMDY2LDcg QEAgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSkK IAkvKiBlc190cmlnX3RhcmdldF9yZWxhdGlvbnMgbXVzdCBOT1QgYmUgY29waWVkICovCiAJcmNl c3RhdGUtPmVzX3RvcF9lZmxhZ3MgPSBwYXJlbnRlc3RhdGUtPmVzX3RvcF9lZmxhZ3M7CiAJcmNl c3RhdGUtPmVzX2luc3RydW1lbnQgPSBwYXJlbnRlc3RhdGUtPmVzX2luc3RydW1lbnQ7CisJcmNl c3RhdGUtPmVzX3dhaXRfZXZlbnRfdXNhZ2UgPSBwYXJlbnRlc3RhdGUtPmVzX3dhaXRfZXZlbnRf dXNhZ2U7CiAJLyogZXNfYXV4bW9kaWZ5dGFibGVzIG11c3QgTk9UIGJlIGNvcGllZCAqLwogCiAJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggODFiODdkODJmYWIuLjgyMTM1 NjVhNzA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtNTEsNiArNTEsNyBA QAogI2luY2x1ZGUgInV0aWxzL2RzYS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50Lmgi CiAKIC8qCiAgKiBNYWdpYyBudW1iZXJzIGZvciBwYXJhbGxlbCBleGVjdXRvciBjb21tdW5pY2F0 aW9uLiAgV2UgdXNlIGNvbnN0YW50cwpAQCAtNjcsNiArNjgsNyBAQAogI2RlZmluZSBQQVJBTExF TF9LRVlfUVVFUllfVEVYVAkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA4KQogI2RlZmlu ZSBQQVJBTExFTF9LRVlfSklUX0lOU1RSVU1FTlRBVElPTiBVSU5UNjRDT05TVCgweEUwMDAwMDAw MDAwMDAwMDkpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgw eEUwMDAwMDAwMDAwMDAwMEEpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9XQUlUX0VWRU5UX1VTQUdF CVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwQikKIAogI2RlZmluZSBQQVJBTExFTF9UVVBM RV9RVUVVRV9TSVpFCQk2NTUzNgogCkBAIC0xMTQsNiArMTE2LDE4IEBAIHN0cnVjdCBTaGFyZWRF eGVjdXRvckluc3RydW1lbnRhdGlvbgogCShTdGF0aWNBc3NlcnRWYXJpYWJsZUlzT2ZUeXBlTWFj cm8oc2VpLCBTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqKSwgXAogCSAoTm9kZUluc3Ry dW1lbnRhdGlvbiAqKSAoKChjaGFyICopIHNlaSkgKyBzZWktPmluc3RydW1lbnRfb2Zmc2V0KSkK IAordHlwZWRlZiBzdHJ1Y3QgU2hhcmVkV2FpdEV2ZW50VXNhZ2VXb3JrZXIKK3sKKwlpbnQJCQlu ZW50cmllczsKKwlkc2FfcG9pbnRlciBlbnRyaWVzOworfSBTaGFyZWRXYWl0RXZlbnRVc2FnZVdv cmtlcjsKKworc3RydWN0IFNoYXJlZFdhaXRFdmVudFVzYWdlCit7CisJaW50CQkJbnVtX3dvcmtl cnM7CisJU2hhcmVkV2FpdEV2ZW50VXNhZ2VXb3JrZXIgd29ya2VyX3VzYWdlW0ZMRVhJQkxFX0FS UkFZX01FTUJFUl07Cit9OworCiAvKiBDb250ZXh0IG9iamVjdCBmb3IgRXhlY1BhcmFsbGVsRXN0 aW1hdGUuICovCiB0eXBlZGVmIHN0cnVjdCBFeGVjUGFyYWxsZWxFc3RpbWF0ZUNvbnRleHQKIHsK QEAgLTE0MSw2ICsxNTUsMTAgQEAgc3RhdGljIGJvb2wgRXhlY1BhcmFsbGVsUmVJbml0aWFsaXpl RFNNKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkJCVBhcmFsbGVsQ29udGV4dCAqcGN4 dCk7CiBzdGF0aWMgYm9vbCBFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihQbGFu U3RhdGUgKnBsYW5zdGF0ZSwKIAkJCQkJCQkJCQkJCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0 aW9uICppbnN0cnVtZW50YXRpb24pOworc3RhdGljIHZvaWQgRXhlY1BhcmFsbGVsUmV0cmlldmVX YWl0RXZlbnRVc2FnZShQYXJhbGxlbEV4ZWN1dG9ySW5mbyAqcGVpKTsKK3N0YXRpYyB2b2lkIEV4 ZWNQYXJhbGxlbFJlcG9ydFdhaXRFdmVudFVzYWdlKFNoYXJlZFdhaXRFdmVudFVzYWdlICpzaGFy ZWQsCisJCQkJCQkJCQkJCSBkc2FfYXJlYSAqYXJlYSwKKwkJCQkJCQkJCQkJIGNvbnN0IFdhaXRF dmVudFVzYWdlICp1c2FnZSk7CiAKIC8qIEhlbHBlciBmdW5jdGlvbiB0aGF0IHJ1bnMgaW4gdGhl IHBhcmFsbGVsIHdvcmtlci4gKi8KIHN0YXRpYyBEZXN0UmVjZWl2ZXIgKkV4ZWNQYXJhbGxlbEdl dFJlY2VpdmVyKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYyk7CkBAIC02NjQsMTAgKzY4 MiwxMiBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRl ICplc3RhdGUsCiAJY2hhcgkgICAqcGFyYW1saXN0aW5mb19zcGFjZTsKIAlCdWZmZXJVc2FnZSAq YnVmdXNhZ2Vfc3BhY2U7CiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2Vfc3BhY2U7CisJU2hhcmVkV2Fp dEV2ZW50VXNhZ2UgKndhaXRfZXZlbnRfdXNhZ2UgPSBOVUxMOwogCVNoYXJlZEV4ZWN1dG9ySW5z dHJ1bWVudGF0aW9uICppbnN0cnVtZW50YXRpb24gPSBOVUxMOwogCVNoYXJlZEppdEluc3RydW1l bnRhdGlvbiAqaml0X2luc3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJaW50CQkJcHN0bXRfbGVuOwog CWludAkJCXBhcmFtbGlzdGluZm9fbGVuOworCWludAkJCXdhaXRfZXZlbnRfdXNhZ2VfbGVuID0g MDsKIAlpbnQJCQlpbnN0cnVtZW50YXRpb25fbGVuID0gMDsKIAlpbnQJCQlqaXRfaW5zdHJ1bWVu dGF0aW9uX2xlbiA9IDA7CiAJaW50CQkJaW5zdHJ1bWVudF9vZmZzZXQgPSAwOwpAQCAtNzQ0LDYg Kzc2NCwxNiBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0 YXRlICplc3RhdGUsCiAJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5u d29ya2VycykpOwogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsK IAorCS8qIEVzdGltYXRlIHNwYWNlIGZvciBwZXItd29ya2VyIHdhaXQgZXZlbnQgdXNhZ2UgbWV0 YWRhdGEuICovCisJaWYgKGVzdGF0ZS0+ZXNfd2FpdF9ldmVudF91c2FnZSAhPSBOVUxMKQorCXsK KwkJd2FpdF9ldmVudF91c2FnZV9sZW4gPQorCQkJb2Zmc2V0b2YoU2hhcmVkV2FpdEV2ZW50VXNh Z2UsIHdvcmtlcl91c2FnZSkgKworCQkJbXVsX3NpemUoc2l6ZW9mKFNoYXJlZFdhaXRFdmVudFVz YWdlV29ya2VyKSwgcGN4dC0+bndvcmtlcnMpOworCQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZw Y3h0LT5lc3RpbWF0b3IsIHdhaXRfZXZlbnRfdXNhZ2VfbGVuKTsKKwkJc2htX3RvY19lc3RpbWF0 ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOworCX0KKwogCS8qIEVzdGltYXRlIHNwYWNlIGZv ciB0dXBsZSBxdWV1ZXMuICovCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1h dG9yLAogCQkJCQkJICAgbXVsX3NpemUoUEFSQUxMRUxfVFVQTEVfUVVFVUVfU0laRSwgcGN4dC0+ bndvcmtlcnMpKTsKQEAgLTgzOSw2ICs4NjksMjEgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxh blN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCXNobV90b2NfaW5zZXJ0KHBjeHQt PnRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgd2FsdXNhZ2Vfc3BhY2UpOwogCXBlaS0+d2Fs X3VzYWdlID0gd2FsdXNhZ2Vfc3BhY2U7CiAKKwkvKiBBbGxvY2F0ZSBtZXRhZGF0YSBmb3IgZWFj aCB3b3JrZXIncyB3YWl0IGV2ZW50IHVzYWdlLCBpZiByZXF1ZXN0ZWQuICovCisJaWYgKGVzdGF0 ZS0+ZXNfd2FpdF9ldmVudF91c2FnZSAhPSBOVUxMKQorCXsKKwkJd2FpdF9ldmVudF91c2FnZSA9 IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCB3YWl0X2V2ZW50X3VzYWdlX2xlbik7CisJCXdh aXRfZXZlbnRfdXNhZ2UtPm51bV93b3JrZXJzID0gbndvcmtlcnM7CisJCWZvciAoaW50IGkgPSAw OyBpIDwgbndvcmtlcnM7IGkrKykKKwkJeworCQkJd2FpdF9ldmVudF91c2FnZS0+d29ya2VyX3Vz YWdlW2ldLm5lbnRyaWVzID0gMDsKKwkJCXdhaXRfZXZlbnRfdXNhZ2UtPndvcmtlcl91c2FnZVtp XS5lbnRyaWVzID0gSW52YWxpZERzYVBvaW50ZXI7CisJCX0KKwkJc2htX3RvY19pbnNlcnQocGN4 dC0+dG9jLCBQQVJBTExFTF9LRVlfV0FJVF9FVkVOVF9VU0FHRSwKKwkJCQkJICAgd2FpdF9ldmVu dF91c2FnZSk7CisJCXBlaS0+d2FpdF9ldmVudF91c2FnZSA9IHdhaXRfZXZlbnRfdXNhZ2U7CisJ fQorCiAJLyogU2V0IHVwIHRoZSB0dXBsZSBxdWV1ZXMgdGhhdCB0aGUgd29ya2VycyB3aWxsIHdy aXRlIGludG8uICovCiAJcGVpLT50cXVldWUgPSBFeGVjUGFyYWxsZWxTZXR1cFR1cGxlUXVldWVz KHBjeHQsIGZhbHNlKTsKIApAQCAtMTIxMyw2ICsxMjU4LDY4IEBAIEV4ZWNQYXJhbGxlbFJldHJp ZXZlSml0SW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCW1lbWNweShwbGFu c3RhdGUtPndvcmtlcl9qaXRfaW5zdHJ1bWVudCwgc2hhcmVkX2ppdCwgaWJ5dGVzKTsKIH0KIAor c3RhdGljIHZvaWQKK0V4ZWNQYXJhbGxlbFJldHJpZXZlV2FpdEV2ZW50VXNhZ2UoUGFyYWxsZWxF eGVjdXRvckluZm8gKnBlaSkKK3sKKwlTaGFyZWRXYWl0RXZlbnRVc2FnZSAqc2hhcmVkID0gcGVp LT53YWl0X2V2ZW50X3VzYWdlOworCVdhaXRFdmVudFVzYWdlICp1c2FnZTsKKworCWlmIChzaGFy ZWQgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJdXNhZ2UgPSBwZWktPnBsYW5zdGF0ZS0+c3RhdGUt PmVzX3dhaXRfZXZlbnRfdXNhZ2U7CisJaWYgKHVzYWdlID09IE5VTEwpCisJCXJldHVybjsKKwor CWZvciAoaW50IGkgPSAwOyBpIDwgc2hhcmVkLT5udW1fd29ya2VyczsgaSsrKQorCXsKKwkJU2hh cmVkV2FpdEV2ZW50VXNhZ2VXb3JrZXIgKndvcmtlciA9ICZzaGFyZWQtPndvcmtlcl91c2FnZVtp XTsKKwkJV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cmllczsKKworCQlpZiAod29ya2VyLT5uZW50 cmllcyA8PSAwIHx8ICFEc2FQb2ludGVySXNWYWxpZCh3b3JrZXItPmVudHJpZXMpKQorCQkJY29u dGludWU7CisKKwkJZW50cmllcyA9IGRzYV9nZXRfYWRkcmVzcyhwZWktPmFyZWEsIHdvcmtlci0+ ZW50cmllcyk7CisJCXBnc3RhdF9hY2N1bXVsYXRlX3dhaXRfZXZlbnRfdXNhZ2UodXNhZ2UsCisJ CQkJCQkJCQkJICAgZW50cmllcywKKwkJCQkJCQkJCQkgICB3b3JrZXItPm5lbnRyaWVzKTsKKwkJ ZHNhX2ZyZWUocGVpLT5hcmVhLCB3b3JrZXItPmVudHJpZXMpOworCQl3b3JrZXItPm5lbnRyaWVz ID0gMDsKKwkJd29ya2VyLT5lbnRyaWVzID0gSW52YWxpZERzYVBvaW50ZXI7CisJfQorfQorCitz dGF0aWMgdm9pZAorRXhlY1BhcmFsbGVsUmVwb3J0V2FpdEV2ZW50VXNhZ2UoU2hhcmVkV2FpdEV2 ZW50VXNhZ2UgKnNoYXJlZCwKKwkJCQkJCQkJIGRzYV9hcmVhICphcmVhLAorCQkJCQkJCQkgY29u c3QgV2FpdEV2ZW50VXNhZ2UgKnVzYWdlKQoreworCVNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2Vy ICp3b3JrZXI7CisJV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cmllczsKKwlkc2FfcG9pbnRlciBl bnRyaWVzX2RzYTsKKwlTaXplCQllbnRyaWVzX3NpemU7CisKKwlBc3NlcnQoc2hhcmVkICE9IE5V TEwpOworCUFzc2VydChhcmVhICE9IE5VTEwpOworCUFzc2VydCh1c2FnZSAhPSBOVUxMKTsKKwlB c3NlcnQoSXNQYXJhbGxlbFdvcmtlcigpKTsKKwlBc3NlcnQoUGFyYWxsZWxXb3JrZXJOdW1iZXIg PCBzaGFyZWQtPm51bV93b3JrZXJzKTsKKworCWlmICh1c2FnZS0+bmVudHJpZXMgPD0gMCkKKwkJ cmV0dXJuOworCisJd29ya2VyID0gJnNoYXJlZC0+d29ya2VyX3VzYWdlW1BhcmFsbGVsV29ya2Vy TnVtYmVyXTsKKwllbnRyaWVzX3NpemUgPSBtdWxfc2l6ZShzaXplb2YoV2FpdEV2ZW50VXNhZ2VF bnRyeSksIHVzYWdlLT5uZW50cmllcyk7CisJZW50cmllc19kc2EgPSBkc2FfYWxsb2NhdGUoYXJl YSwgZW50cmllc19zaXplKTsKKwllbnRyaWVzID0gZHNhX2dldF9hZGRyZXNzKGFyZWEsIGVudHJp ZXNfZHNhKTsKKwltZW1jcHkoZW50cmllcywgdXNhZ2UtPmVudHJpZXMsIGVudHJpZXNfc2l6ZSk7 CisKKwlpZiAoRHNhUG9pbnRlcklzVmFsaWQod29ya2VyLT5lbnRyaWVzKSkKKwkJZHNhX2ZyZWUo YXJlYSwgd29ya2VyLT5lbnRyaWVzKTsKKwl3b3JrZXItPm5lbnRyaWVzID0gdXNhZ2UtPm5lbnRy aWVzOworCXdvcmtlci0+ZW50cmllcyA9IGVudHJpZXNfZHNhOworfQorCiAvKgogICogRmluaXNo IHBhcmFsbGVsIGV4ZWN1dGlvbi4gIFdlIHdhaXQgZm9yIHBhcmFsbGVsIHdvcmtlcnMgdG8gZmlu aXNoLCBhbmQKICAqIGFjY3VtdWxhdGUgdGhlaXIgYnVmZmVyL1dBTCB1c2FnZS4KQEAgLTEyNjEs NiArMTM2OCw5IEBAIEV4ZWNQYXJhbGxlbEZpbmlzaChQYXJhbGxlbEV4ZWN1dG9ySW5mbyAqcGVp KQogCWZvciAoaSA9IDA7IGkgPCBud29ya2VyczsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxR dWVyeSgmcGVpLT5idWZmZXJfdXNhZ2VbaV0sICZwZWktPndhbF91c2FnZVtpXSk7CiAKKwkvKiBB Y2N1bXVsYXRlIHdhaXQgZXZlbnQgdXNhZ2UsIGlmIHJlcXVlc3RlZC4gKi8KKwlFeGVjUGFyYWxs ZWxSZXRyaWV2ZVdhaXRFdmVudFVzYWdlKHBlaSk7CisKIAlwZWktPmZpbmlzaGVkID0gdHJ1ZTsK IH0KIApAQCAtMTUxNiwxMCArMTYyNiwxMyBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVu dCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJRml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3RhdGUgKmZwZXM7 CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcl91c2FnZTsKIAlXYWxVc2FnZSAgICp3YWxfdXNhZ2U7CisJ U2hhcmVkV2FpdEV2ZW50VXNhZ2UgKndhaXRfZXZlbnRfdXNhZ2U7CiAJRGVzdFJlY2VpdmVyICpy ZWNlaXZlcjsKIAlRdWVyeURlc2MgICpxdWVyeURlc2M7CiAJU2hhcmVkRXhlY3V0b3JJbnN0cnVt ZW50YXRpb24gKmluc3RydW1lbnRhdGlvbjsKIAlTaGFyZWRKaXRJbnN0cnVtZW50YXRpb24gKmpp dF9pbnN0cnVtZW50YXRpb247CisJV2FpdEV2ZW50VXNhZ2Ugd2FpdEV2ZW50VXNhZ2U7CisJV2Fp dEV2ZW50VXNhZ2UgKndhaXRFdmVudFVzYWdlUHRyID0gTlVMTDsKIAlpbnQJCQlpbnN0cnVtZW50 X29wdGlvbnMgPSAwOwogCXZvaWQJICAgKmFyZWFfc3BhY2U7CiAJZHNhX2FyZWEgICAqYXJlYTsK QEAgLTE1MzUsNiArMTY0OCw3IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcs IHNobV90b2MgKnRvYykKIAkJaW5zdHJ1bWVudF9vcHRpb25zID0gaW5zdHJ1bWVudGF0aW9uLT5p bnN0cnVtZW50X29wdGlvbnM7CiAJaml0X2luc3RydW1lbnRhdGlvbiA9IHNobV90b2NfbG9va3Vw KHRvYywgUEFSQUxMRUxfS0VZX0pJVF9JTlNUUlVNRU5UQVRJT04sCiAJCQkJCQkJCQkJIHRydWUp OworCXdhaXRfZXZlbnRfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9X QUlUX0VWRU5UX1VTQUdFLCB0cnVlKTsKIAlxdWVyeURlc2MgPSBFeGVjUGFyYWxsZWxHZXRRdWVy eURlc2ModG9jLCByZWNlaXZlciwgaW5zdHJ1bWVudF9vcHRpb25zKTsKIAogCS8qIFNldHRpbmcg ZGVidWdfcXVlcnlfc3RyaW5nIGZvciBpbmRpdmlkdWFsIHdvcmtlcnMgKi8KQEAgLTE1NzYsNiAr MTY5MCwxMyBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0 b2MpCiAJICovCiAJSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoKTsKIAorCWlmICh3YWl0X2V2ZW50 X3VzYWdlICE9IE5VTEwpCisJeworCQl3YWl0RXZlbnRVc2FnZVB0ciA9ICZ3YWl0RXZlbnRVc2Fn ZTsKKwkJcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2Uod2FpdEV2ZW50VXNhZ2VQdHIsCisJ CQkJCQkJCQkgIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCX0KKwogCS8qCiAJ ICogUnVuIHRoZSBwbGFuLiAgSWYgd2Ugc3BlY2lmaWVkIGEgdHVwbGUgYm91bmQsIGJlIGNhcmVm dWwgbm90IHRvIGRlbWFuZAogCSAqIG1vcmUgdHVwbGVzIHRoYW4gdGhhdC4KQEAgLTE1ODcsNiAr MTcwOCwxNCBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0 b2MpCiAJLyogU2h1dCBkb3duIHRoZSBleGVjdXRvciAqLwogCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5 RGVzYyk7CiAKKwlpZiAod2FpdEV2ZW50VXNhZ2VQdHIgIT0gTlVMTCkKKwl7CisJCXBnc3RhdF9l bmRfd2FpdF9ldmVudF91c2FnZSh3YWl0RXZlbnRVc2FnZVB0cik7CisJCUV4ZWNQYXJhbGxlbFJl cG9ydFdhaXRFdmVudFVzYWdlKHdhaXRfZXZlbnRfdXNhZ2UsCisJCQkJCQkJCQkJIGFyZWEsCisJ CQkJCQkJCQkJIHdhaXRFdmVudFVzYWdlUHRyKTsKKwl9CisKIAkvKiBSZXBvcnQgYnVmZmVyL1dB TCB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uLiAqLwogCWJ1ZmZlcl91c2FnZSA9IHNo bV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdh bF91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFs c2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCAxZWI2YjlmMWY0MC4uODBlYTc3NzYz MmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xNTEsNiArMTUxLDcgQEAgQ3JlYXRl RXhlY3V0b3JTdGF0ZSh2b2lkKQogCiAJZXN0YXRlLT5lc190b3BfZWZsYWdzID0gMDsKIAllc3Rh dGUtPmVzX2luc3RydW1lbnQgPSAwOworCWVzdGF0ZS0+ZXNfd2FpdF9ldmVudF91c2FnZSA9IE5V TEw7CiAJZXN0YXRlLT5lc19maW5pc2hlZCA9IGZhbHNlOwogCiAJZXN0YXRlLT5lc19leHByY29u dGV4dHMgPSBOSUw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKaW5kZXgg NjBkMzdjY2JiNzMuLmViMDFiYzNkODhjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpwZ3N0YXRfZ2V0 X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KTsKIHN0YXRpYyBjb25zdCBjaGFyICpwZ3N0YXRfZ2V0 X3dhaXRfdGltZW91dChXYWl0RXZlbnRUaW1lb3V0IHcpOwogc3RhdGljIGNvbnN0IGNoYXIgKnBn c3RhdF9nZXRfd2FpdF9pbyhXYWl0RXZlbnRJTyB3KTsKIHN0YXRpYyB2b2lkIFdhaXRFdmVudFVz YWdlQWRkKFdhaXRFdmVudFVzYWdlICp1c2FnZSwgdWludDMyIHdhaXRfZXZlbnRfaW5mbywKLQkJ CQkJCQkgIGNvbnN0IGluc3RyX3RpbWUgKmVsYXBzZWQpOworCQkJCQkJCSAgdWludDY0IGNhbGxz LCBjb25zdCBpbnN0cl90aW1lICplbGFwc2VkKTsKIAogCiBzdGF0aWMgdWludDMyIGxvY2FsX215 X3dhaXRfZXZlbnRfaW5mbzsKQEAgLTQ0MiwxNSArNDQyLDMxIEBAIHBnc3RhdF9jb3VudF93YWl0 X2V2ZW50X2VuZCh2b2lkKQogCiAJV2FpdEV2ZW50VXNhZ2VBZGQocGdzdGF0X3dhaXRfZXZlbnRf dXNhZ2UsCiAJCQkJCSAgcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfY3VycmVudCwKKwkJCQkJICAx LAogCQkJCQkgICZlbGFwc2VkKTsKIAogCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2N1cnJlbnQg PSAwOwogCUlOU1RSX1RJTUVfU0VUX1pFUk8ocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfc3RhcnQp OwogfQogCit2b2lkCitwZ3N0YXRfYWNjdW11bGF0ZV93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVu dFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJICAgY29uc3QgV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50 cmllcywKKwkJCQkJCQkJICAgaW50IG5lbnRyaWVzKQoreworCUFzc2VydCh1c2FnZSAhPSBOVUxM KTsKKwlBc3NlcnQobmVudHJpZXMgPT0gMCB8fCBlbnRyaWVzICE9IE5VTEwpOworCisJZm9yIChp bnQgaSA9IDA7IGkgPCBuZW50cmllczsgaSsrKQorCQlXYWl0RXZlbnRVc2FnZUFkZCh1c2FnZSwK KwkJCQkJCSAgZW50cmllc1tpXS53YWl0X2V2ZW50X2luZm8sCisJCQkJCQkgIGVudHJpZXNbaV0u Y2FsbHMsCisJCQkJCQkgICZlbnRyaWVzW2ldLnRpbWUpOworfQorCiBzdGF0aWMgdm9pZAogV2Fp dEV2ZW50VXNhZ2VBZGQoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCB1aW50MzIgd2FpdF9ldmVudF9p bmZvLAotCQkJCSAgY29uc3QgaW5zdHJfdGltZSAqZWxhcHNlZCkKKwkJCQkgIHVpbnQ2NCBjYWxs cywgY29uc3QgaW5zdHJfdGltZSAqZWxhcHNlZCkKIHsKIAlXYWl0RXZlbnRVc2FnZUVudHJ5ICpl bnRyeSA9IE5VTEw7CiAKQEAgLTQ5NCw3ICs1MTAsNyBAQCBXYWl0RXZlbnRVc2FnZUFkZChXYWl0 RXZlbnRVc2FnZSAqdXNhZ2UsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8sCiAJCUlOU1RSX1RJTUVf U0VUX1pFUk8oZW50cnktPnRpbWUpOwogCX0KIAotCWVudHJ5LT5jYWxscysrOworCWVudHJ5LT5j YWxscyArPSBjYWxsczsKIAlJTlNUUl9USU1FX0FERChlbnRyeS0+dGltZSwgKmVsYXBzZWQpOwog fQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFyYWxsZWwuaCBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oCmluZGV4IDVhMjAzNDgxMWQ1Li43MWRm MmMyNTExYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmgK KysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmgKQEAgLTIwLDYgKzIwLDcg QEAKICNpbmNsdWRlICJ1dGlscy9kc2EuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgU2hhcmVkRXhlY3V0 b3JJbnN0cnVtZW50YXRpb24gU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb247Cit0eXBlZGVm IHN0cnVjdCBTaGFyZWRXYWl0RXZlbnRVc2FnZSBTaGFyZWRXYWl0RXZlbnRVc2FnZTsKIAogdHlw ZWRlZiBzdHJ1Y3QgUGFyYWxsZWxFeGVjdXRvckluZm8KIHsKQEAgLTI3LDYgKzI4LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGFyYWxsZWxFeGVjdXRvckluZm8KIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7 CQkvKiBwYXJhbGxlbCBjb250ZXh0IHdlJ3JlIHVzaW5nICovCiAJQnVmZmVyVXNhZ2UgKmJ1ZmZl cl91c2FnZTsJLyogcG9pbnRzIHRvIGJ1ZnVzYWdlIGFyZWEgaW4gRFNNICovCiAJV2FsVXNhZ2Ug ICAqd2FsX3VzYWdlOwkJLyogd2FsdXNhZ2UgYXJlYSBpbiBEU00gKi8KKwlTaGFyZWRXYWl0RXZl bnRVc2FnZSAqd2FpdF9ldmVudF91c2FnZTsJLyogb3B0aW9uYWwgKi8KIAlTaGFyZWRFeGVjdXRv ckluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uOyAvKiBvcHRpb25hbCAqLwogCXN0cnVj dCBTaGFyZWRKaXRJbnN0cnVtZW50YXRpb24gKmppdF9pbnN0cnVtZW50YXRpb247CS8qIG9wdGlv bmFsICovCiAJZHNhX2FyZWEgICAqYXJlYTsJCQkvKiBwb2ludHMgdG8gRFNBIGFyZWEgaW4gRFNN ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDEzMzU5MTgwZDI1Li43ODFjOGM3OTEzMiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgKQEAgLTY5LDYgKzY5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVHVwbGVz dG9yZXN0YXRlIFR1cGxlc3RvcmVzdGF0ZTsKIHR5cGVkZWYgc3RydWN0IFR1cGxlVGFibGVTbG90 IFR1cGxlVGFibGVTbG90OwogdHlwZWRlZiBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3RPcHMgVHVwbGVU YWJsZVNsb3RPcHM7CiB0eXBlZGVmIHN0cnVjdCBXYWxVc2FnZSBXYWxVc2FnZTsKK3R5cGVkZWYg c3RydWN0IFdhaXRFdmVudFVzYWdlIFdhaXRFdmVudFVzYWdlOwogdHlwZWRlZiBzdHJ1Y3QgV29y a2VyTm9kZUluc3RydW1lbnRhdGlvbiBXb3JrZXJOb2RlSW5zdHJ1bWVudGF0aW9uOwogCiAKQEAg LTc1NCw2ICs3NTUsNyBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAogCWludAkJCWVzX3RvcF9l ZmxhZ3M7CS8qIGVmbGFncyBwYXNzZWQgdG8gRXhlY3V0b3JTdGFydCAqLwogCWludAkJCWVzX2lu c3RydW1lbnQ7CS8qIE9SIG9mIEluc3RydW1lbnRPcHRpb24gZmxhZ3MgKi8KKwlXYWl0RXZlbnRV c2FnZSAqZXNfd2FpdF9ldmVudF91c2FnZTsJLyogRVhQTEFJTiBXQUlUUyBhY2N1bXVsYXRvciAq LwogCWJvb2wJCWVzX2ZpbmlzaGVkOwkvKiB0cnVlIHdoZW4gRXhlY3V0b3JGaW5pc2ggaXMgZG9u ZSAqLwogCiAJTGlzdAkgICAqZXNfZXhwcmNvbnRleHRzOwkvKiBMaXN0IG9mIEV4cHJDb250ZXh0 cyB3aXRoaW4gRVN0YXRlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2 ZW50LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKaW5kZXggZjdmYWI1NzM2YmIu LjYzOTkyMTM3ZWU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0zOSw2ICszOSw5IEBAIGV4 dGVybiB2b2lkIHBnc3RhdF9yZXNldF93YWl0X2V2ZW50X3N0b3JhZ2Uodm9pZCk7CiBleHRlcm4g dm9pZCBwZ3N0YXRfYmVnaW5fd2FpdF9ldmVudF91c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2Us CiAJCQkJCQkJCQkJICBNZW1vcnlDb250ZXh0IG1lbWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgcGdz dGF0X2VuZF93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVzYWdlICp1c2FnZSk7CitleHRlcm4g dm9pZCBwZ3N0YXRfYWNjdW11bGF0ZV93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVzYWdlICp1 c2FnZSwKKwkJCQkJCQkJCQkJICAgY29uc3QgV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cmllcywK KwkJCQkJCQkJCQkJICAgaW50IG5lbnRyaWVzKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9jb3VudF93 YWl0X2V2ZW50X3N0YXJ0KHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwogZXh0ZXJuIHZvaWQgcGdz dGF0X2NvdW50X3dhaXRfZXZlbnRfZW5kKHZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9l eHBsYWluLm91dAppbmRleCAyYzdhN2UxZDRjNi4uZTM4NDdlMjIyYmUgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9leHBsYWluLm91dApAQCAtMTE0LDYgKzExNCwyMyBAQCBzZWxlY3QgZXhwbGFp bl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3Vt bWFyeSBvZmYsCiAgeyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1Ns ZWVwIiwgIldhaXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0In0KICgxIHJvdykKIAorYmVnaW47Citj cmVhdGUgZnVuY3Rpb24gcGdfdGVtcC5wYXJhbGxlbF9wZ19zbGVlcChmbG9hdDgpIHJldHVybnMg dm9pZAorICBsYW5ndWFnZSBpbnRlcm5hbCB2b2xhdGlsZSBwYXJhbGxlbCBzYWZlIGFzICdwZ19z bGVlcCc7CitzZXQgbG9jYWwgZGVidWdfcGFyYWxsZWxfcXVlcnkgPSBvbjsKK3NldCBsb2NhbCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMTsKK3NlbGVjdCBqc29uYl9wYXRoX3F1 ZXJ5X2ZpcnN0KAorICBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3 YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZv cm1hdCBqc29uKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCBwZ190ZW1wLnBhcmFs bGVsX3BnX3NsZWVwKDAuMDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0ZW5rMSB3 aGVyZSB1bmlxdWUxID0gMScpICM+ICd7MCxXYWl0IEV2ZW50c30nLAorICAnJFsqXSA/IChALiJX YWl0IEV2ZW50IiA9PSAiUGdTbGVlcCIpJworKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGpzb25iX3BhdGhfcXVlcnlfZmlyc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7IlRpbWUiOiAwLjAsICJDYWxscyI6IDAsICJX YWl0IEV2ZW50IjogIlBnU2xlZXAiLCAiV2FpdCBFdmVudCBUeXBlIjogIlRpbWVvdXQifQorKDEg cm93KQorCityb2xsYmFjazsKIGV4cGxhaW4gKHdhaXRzKSBzZWxlY3QgMTsKIEVSUk9SOiAgRVhQ TEFJTiBvcHRpb24gV0FJVFMgcmVxdWlyZXMgQU5BTFlaRQogXGEKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFp bi5zcWwKaW5kZXggZmUwMjVkZGVhYzUuLjg4MjEyNTBiY2VmIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBs YWluLnNxbApAQCAtNzEsNiArNzEsMTggQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWlu IChidWZmZXJzLCBmb3JtYXQgdGV4dCkgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcKIC0tIFdB SVRTIG9wdGlvbgogc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCB3YWl0 cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYpIHNlbGVj dCBwZ19zbGVlcCgwLjAxKScpOwogc2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxh aW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBi dWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxX YWl0IEV2ZW50cywwfSc7CitiZWdpbjsKK2NyZWF0ZSBmdW5jdGlvbiBwZ190ZW1wLnBhcmFsbGVs X3BnX3NsZWVwKGZsb2F0OCkgcmV0dXJucyB2b2lkCisgIGxhbmd1YWdlIGludGVybmFsIHZvbGF0 aWxlIHBhcmFsbGVsIHNhZmUgYXMgJ3BnX3NsZWVwJzsKK3NldCBsb2NhbCBkZWJ1Z19wYXJhbGxl bF9xdWVyeSA9IG9uOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIg PSAxOworc2VsZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCisgIGV4cGxhaW5fZmlsdGVyX3Rv X2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0 aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pCisgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZWN0IHBnX3RlbXAucGFyYWxsZWxfcGdfc2xlZXAoMC4wMSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICBmcm9tIHRlbmsxIHdoZXJlIHVuaXF1ZTEgPSAxJykgIz4gJ3swLFdhaXQg RXZlbnRzfScsCisgICckWypdID8gKEAuIldhaXQgRXZlbnQiID09ICJQZ1NsZWVwIiknCispOwor cm9sbGJhY2s7CiBleHBsYWluICh3YWl0cykgc2VsZWN0IDE7CiAKIFxhCi0tIAoyLjUyLjAKCg== --000000000000e7e4510652deeeb3 Content-Type: application/octet-stream; name="0004-Refine-EXPLAIN-WAITS-attribution-semantics.patch" Content-Disposition: attachment; filename="0004-Refine-EXPLAIN-WAITS-attribution-semantics.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mppej2903 RnJvbSBlYTZmNzQxZDA1YmYxM2I0NTkyNjI1OWViMGFlZTI0ZWIxYTZmNjEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDQ6NDkgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MyA0LzddIFJlZmluZSBFWFBMQUlOIFdBSVRTIGF0dHJpYnV0aW9uIHNlbWFudGljcwoKLS0tCiBk b2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbCAgICAgICAgICAgfCAgNTIgKysrKysrLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgIHwgIDgyICsrKysrKystLS0tCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgfCAxMjEgKysrKysrKysrKyst LS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIHwgMTg0ICsrKysr KysrKysrKysrKysrKystLS0tLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAg ICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAgfCAg IDUgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dCAgIHwgMTI4ICsrKysr KysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbCAgICAgICAgfCAx MDIgKysrKysrKysrKysrLQogOCBmaWxlcyBjaGFuZ2VkLCA1NzQgaW5zZXJ0aW9ucygrKSwgMTA0 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwKaW5kZXggNTQ2MDU2OGFmMWQuLmQ2OTli MjE1MTIwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbApAQCAtMzE1LDkgKzMxNSw0NiBAQCBST0xMQkFD SzsKICAgICA8dGVybT48bGl0ZXJhbD5XQUlUUzwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3Rp dGVtPgogICAgICA8cGFyYT4KLSAgICAgIEluY2x1ZGUgZXhhY3QgYmFja2VuZC1sb2NhbCB3YWl0 IGV2ZW50IHRpbWluZyBvYnNlcnZlZCBkdXJpbmcgcXVlcnkKLSAgICAgIGV4ZWN1dGlvbi4gIFdh aXQgZXZlbnRzIGFyZSBncm91cGVkIGJ5IHdhaXQgZXZlbnQgdHlwZSBhbmQgd2FpdCBldmVudAot ICAgICAgbmFtZSwgYW5kIGluY2x1ZGUgdGhlIG51bWJlciBvZiB3YWl0cyBhbmQgdG90YWwgdGlt ZSBzcGVudCB3YWl0aW5nLgorICAgICAgSW5jbHVkZSB3YWl0IGV2ZW50IHRpbWluZyBvYnNlcnZl ZCBkdXJpbmcgcXVlcnkgZXhlY3V0aW9uLiAgV2FpdAorICAgICAgZXZlbnRzIGFyZSBncm91cGVk IGJ5IHdhaXQgZXZlbnQgdHlwZSBhbmQgd2FpdCBldmVudCBuYW1lLCB1c2luZyB0aGUKKyAgICAg IHNhbWUgd2FpdCBldmVudCBpZGVudGlmaWVycyByZXBvcnRlZCBieQorICAgICAgPHN0cnVjdG5h bWU+cGdfc3RhdF9hY3Rpdml0eTwvc3RydWN0bmFtZT47IHNlZQorICAgICAgPHhyZWYgbGlua2Vu ZD0id2FpdC1ldmVudC10YWJsZSIvPi4gIEVhY2ggZW50cnkgaW5jbHVkZXMgdGhlIG51bWJlcgor ICAgICAgb2YgY29tcGxldGVkIHdhaXRzIGFuZCB0aGUgdG90YWwgdGltZSBzcGVudCB3YWl0aW5n LiAgV2FpdCB0aW1pbmcgaXMKKyAgICAgIGNvbGxlY3RlZCB3aGVuIHRoaXMgb3B0aW9uIGlzIGVu YWJsZWQgZXZlbiBpZiA8bGl0ZXJhbD5USU1JTkc8L2xpdGVyYWw+CisgICAgICBpcyBkaXNhYmxl ZC4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgSWYgPGNvbW1hbmQ+RVhQTEFJ TjwvY29tbWFuZD4gY2Fubm90IGdyb3cgaXRzIHBlci1xdWVyeSBvciBwZXItbm9kZSB3YWl0Cisg ICAgICBldmVudCBzdG9yYWdlIHdpdGhvdXQgcmlza2luZyBhbiBlcnJvciB3aGlsZSBhIHdhaXQg aXMgZW5kaW5nLCB3YWl0cworICAgICAgd2hvc2UgZXhhY3QgZXZlbnQgaWRlbnRpZmllciBjb3Vs ZCBub3QgYmUgc3RvcmVkIGFyZSBhY2N1bXVsYXRlZCBpbiBhbgorICAgICAgPGxpdGVyYWw+VW5y ZWNvcmRlZCBXYWl0IEV2ZW50IENhbGxzPC9saXRlcmFsPiBjb3VudGVyIGFuZAorICAgICAgPGxp dGVyYWw+VW5yZWNvcmRlZCBXYWl0IEV2ZW50IFRpbWU8L2xpdGVyYWw+IHRvdGFsLiAgVGhpcyBp cyBhCisgICAgICByZXBvcnRpbmcgZmFsbGJhY2sgdW5kZXIgbWVtb3J5IHByZXNzdXJlLCBub3Qg YSB3YWl0IGV2ZW50IGVtaXR0ZWQgYnkKKyAgICAgIHNlcnZlciBpbnN0cnVtZW50YXRpb24uCisg ICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSB0b3AtbGV2ZWwgPGxpdGVyYWw+ U3RhdGVtZW50IFdhaXQgRXZlbnRzPC9saXRlcmFsPiBzdW1tYXJ5IGNvdW50cworICAgICAgZWFj aCB3YWl0IG9uY2UgZm9yIHRoZSBzdGF0ZW1lbnQsIGluY2x1ZGluZyB3YWl0cyByZXBvcnRlZCBi eSBwYXJhbGxlbAorICAgICAgd29ya2Vycy4gIE5lc3RlZCA8Y29tbWFuZD5FWFBMQUlOIChBTkFM WVpFLCBXQUlUUyk8L2NvbW1hbmQ+IGNvbW1hbmRzCisgICAgICBtYWludGFpbiBzZXBhcmF0ZSBz dGF0ZW1lbnQtbGV2ZWwgc3VtbWFyaWVzOyBhIHdhaXQgaXMgY291bnRlZCBvbmNlIGluCisgICAg ICBlYWNoIGFjdGl2ZSBzdW1tYXJ5LiAgUGxhbiBub2RlcyBjYW4gYWxzbyBzaG93IDxsaXRlcmFs PldhaXQKKyAgICAgIEV2ZW50czwvbGl0ZXJhbD4uICBOb2RlLWxldmVsIHdhaXQgZXZlbnRzIGFy ZSBpbmNsdXNpdmUsIGxpa2UgcGxhbiBub2RlCisgICAgICB0aW1pbmcgaW4KKyAgICAgIDxjb21t YW5kPkVYUExBSU4gQU5BTFlaRTwvY29tbWFuZD46IGEgd2FpdCBpcyBhdHRyaWJ1dGVkIHRvIGV2 ZXJ5CisgICAgICBhY3RpdmUgcGxhbiBub2RlIHdoZW4gdGhlIHdhaXQgYmVnaW5zLiAgVGhlcmVm b3JlIG5vZGUtbGV2ZWwgd2FpdCBldmVudAorICAgICAgdGltZXMgc2hvdWxkIG5vdCBiZSBzdW1t ZWQgdG8gY29tcHV0ZSB0aGUgc3RhdGVtZW50IHRvdGFsLgorICAgICA8L3BhcmE+CisKKyAgICAg PHBhcmE+CisgICAgICBUaGUgb3ZlcmhlYWQgb2YgdGhpcyBvcHRpb24gZGVwZW5kcyBvbiB0aGUg bnVtYmVyIG9mIHdhaXRzIG9ic2VydmVkIGFuZCwKKyAgICAgIGZvciBub2RlLWxldmVsIG91dHB1 dCwgb24gdGhlIG51bWJlciBvZiBhY3RpdmUgcGxhbiBub2RlcyB3aGVuIGVhY2ggd2FpdAorICAg ICAgYmVnaW5zLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CiAgICAgICBUaGlzIHBhcmFt ZXRlciBtYXkgb25seSBiZSB1c2VkIHdoZW4gPGxpdGVyYWw+QU5BTFlaRTwvbGl0ZXJhbD4gaXMg YWxzbwogICAgICAgZW5hYmxlZC4gIEl0IGRlZmF1bHRzIHRvIDxsaXRlcmFsPkZBTFNFPC9saXRl cmFsPi4KICAgICAgPC9wYXJhPgpAQCAtNDA1LDYgKzQ0MiwxNSBAQCBST0xMQkFDSzsKICAgIGV4 ZWN1dGlvbiwgYW5kIG9uIG1hY2hpbmVzIHRoYXQgaGF2ZSByZWxhdGl2ZWx5IHNsb3cgb3BlcmF0 aW5nCiAgICBzeXN0ZW0gY2FsbHMgZm9yIG9idGFpbmluZyB0aGUgdGltZSBvZiBkYXkuCiAgIDwv cGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSA8bGl0ZXJhbD5XQUlUUzwvbGl0ZXJhbD4gb3B0aW9u IGFsc28gYWRkcyBwcm9maWxpbmcgb3ZlcmhlYWQgd2hlbgorICAgPGxpdGVyYWw+QU5BTFlaRTwv bGl0ZXJhbD4gaXMgdXNlZC4gIEl0IG1lYXN1cmVzIHdhaXQgaW50ZXJ2YWxzIHJlcG9ydGVkCisg ICBieSBzZXJ2ZXIgaW5zdHJ1bWVudGF0aW9uIGFuZCBtYWludGFpbnMgcGVyLXN0YXRlbWVudCBh bmQgcGVyLW5vZGUgd2FpdAorICAgZXZlbnQgY291bnRlcnMgd2hpbGUgdGhlIHN0YXRlbWVudCBl eGVjdXRlcy4gIFRoZSBvdmVyaGVhZCBkZXBlbmRzIG9uIHRoZQorICAgbnVtYmVyIG9mIHJlcG9y dGVkIHdhaXRzLCB0aGUgbnVtYmVyIG9mIGRpc3RpbmN0IHdhaXQgZXZlbnRzLCBhbmQgdGhlIGRl cHRoCisgICBvZiB0aGUgYWN0aXZlIGV4ZWN1dG9yIHBsYW4gbm9kZSBzdGFjay4KKyAgPC9wYXJh PgogIDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXgg MDU3NWFlODM2OGIuLjljMTk4ZjhlNTk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0xNTEs NyArMTUxLDcgQEAgc3RhdGljIGJvb2wgcGVla19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICpl cywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKTsKIHN0YXRpYyB2b2lkIHNob3dfYnVmZmVyX3Vz YWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSk7CiBzdGF0aWMg dm9pZCBzaG93X3dhbF91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBXYWxVc2FnZSAqdXNh Z2UpOwogc3RhdGljIGludAl3YWl0X2V2ZW50X3VzYWdlX2NtcChjb25zdCB2b2lkICphLCBjb25z dCB2b2lkICpiKTsKLXN0YXRpYyB2b2lkIHNob3dfd2FpdF9ldmVudF91c2FnZShFeHBsYWluU3Rh dGUgKmVzLAorc3RhdGljIHZvaWQgc2hvd193YWl0X2V2ZW50X3VzYWdlKEV4cGxhaW5TdGF0ZSAq ZXMsIGNvbnN0IGNoYXIgKmxhYmVsbmFtZSwKIAkJCQkJCQkJICBjb25zdCBXYWl0RXZlbnRVc2Fn ZSAqdXNhZ2UpOwogc3RhdGljIHZvaWQgc2hvd19tZW1vcnlfY291bnRlcnMoRXhwbGFpblN0YXRl ICplcywKIAkJCQkJCQkJIGNvbnN0IE1lbW9yeUNvbnRleHRDb3VudGVycyAqbWVtX2NvdW50ZXJz KTsKQEAgLTIxOSw3ICsyMTksNyBAQCBFeHBsYWluUXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBF eHBsYWluU3RtdCAqc3RtdCwKIAkJICogSW4gdGhlIGNhc2Ugb2YgYW4gSU5TVEVBRCBOT1RISU5H LCB0ZWxsIGF0IGxlYXN0IHRoYXQuICBCdXQgaW4KIAkJICogbm9uLXRleHQgZm9ybWF0LCB0aGUg b3V0cHV0IGlzIGRlbGltaXRlZCwgc28gdGhpcyBpc24ndCBuZWNlc3NhcnkuCiAJCSAqLwotCQlp ZiAoZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQorCWlmIChlcy0+Zm9ybWF0ID09 IEVYUExBSU5fRk9STUFUX1RFWFQpCiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGVzLT5zdHIs ICJRdWVyeSByZXdyaXRlcyB0byBub3RoaW5nXG4iKTsKIAl9CiAJZWxzZQpAQCAtNjM0LDcgKzYz NCw3IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVz ZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlFeHBsYWluUHJpbnRQbGFuKGVzLCBxdWVyeURl c2MpOwogCiAJaWYgKHdhaXRFdmVudFVzYWdlUHRyKQotCQlzaG93X3dhaXRfZXZlbnRfdXNhZ2Uo ZXMsIHdhaXRFdmVudFVzYWdlUHRyKTsKKwkJc2hvd193YWl0X2V2ZW50X3VzYWdlKGVzLCAiU3Rh dGVtZW50IFdhaXQgRXZlbnRzIiwgd2FpdEV2ZW50VXNhZ2VQdHIpOwogCiAJLyogU2hvdyBidWZm ZXIgYW5kL29yIG1lbW9yeSB1c2FnZSBpbiBwbGFubmluZyAqLwogCWlmIChwZWVrX2J1ZmZlcl91 c2FnZShlcywgYnVmdXNhZ2UpIHx8IG1lbV9jb3VudGVycykKQEAgLTIzMzUsNyArMjMzNSw3IEBA IEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJaWYg KGVzLT53YWwgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQogCQlzaG93X3dhbF91c2FnZShlcywg JnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIud2FsdXNhZ2UpOwogCWlmIChlcy0+d2FpdHMp Ci0JCXNob3dfd2FpdF9ldmVudF91c2FnZShlcywgcGxhbnN0YXRlLT53YWl0X2V2ZW50X3VzYWdl KTsKKwkJc2hvd193YWl0X2V2ZW50X3VzYWdlKGVzLCAiV2FpdCBFdmVudHMiLCBwbGFuc3RhdGUt PndhaXRfZXZlbnRfdXNhZ2UpOwogCiAJLyogUHJlcGFyZSBwZXItd29ya2VyIGJ1ZmZlci9XQUwg dXNhZ2UgKi8KIAlpZiAoZXMtPndvcmtlcnNfc3RhdGUgJiYgKGVzLT5idWZmZXJzIHx8IGVzLT53 YWwpICYmIGVzLT52ZXJib3NlKQpAQCAtNDU1NiwxNCArNDU1NiwxNSBAQCB3YWl0X2V2ZW50X3Vz YWdlX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogfQogCiBzdGF0aWMgdm9pZAot c2hvd193YWl0X2V2ZW50X3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IFdhaXRFdmVudFVz YWdlICp1c2FnZSkKK3Nob3dfd2FpdF9ldmVudF91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25z dCBjaGFyICpsYWJlbG5hbWUsCisJCQkJCSAgY29uc3QgV2FpdEV2ZW50VXNhZ2UgKnVzYWdlKQog ewogCVdhaXRFdmVudFVzYWdlRW50cnkgKmVudHJpZXM7CiAKIAlpZiAodXNhZ2UgPT0gTlVMTCkK IAkJcmV0dXJuOwogCi0JaWYgKHVzYWdlLT5uZW50cmllcyA9PSAwKQorCWlmICh1c2FnZS0+bmVu dHJpZXMgPT0gMCAmJiB1c2FnZS0+b3ZlcmZsb3dlZF9jYWxscyA9PSAwKQogCQlyZXR1cm47CiAK IAlpZiAodXNhZ2UtPm5lbnRyaWVzID4gMCkKQEAgLTQ1NzcsMTAgKzQ1NzgsMTAgQEAgc2hvd193 YWl0X2V2ZW50X3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IFdhaXRFdmVudFVzYWdlICp1 c2FnZSkKIAllbHNlCiAJCWVudHJpZXMgPSBOVUxMOwogCi0JaWYgKGVzLT5mb3JtYXQgPT0gRVhQ TEFJTl9GT1JNQVRfVEVYVCkKKwkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVY VCkKIAl7CiAJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKLQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu Zyhlcy0+c3RyLCAiV2FpdCBFdmVudHM6XG4iKTsKKwkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3Ry LCAiJXM6XG4iLCBsYWJlbG5hbWUpOwogCQllcy0+aW5kZW50Kys7CiAKIAkJZm9yIChpbnQgaSA9 IDA7IGkgPCB1c2FnZS0+bmVudHJpZXM7IGkrKykKQEAgLTQ1OTksMzUgKzQ2MDAsNjAgQEAgc2hv d193YWl0X2V2ZW50X3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IFdhaXRFdmVudFVzYWdl ICp1c2FnZSkKIAkJCQkJCQkgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoZW50cmllc1tpXS50aW1l KSk7CiAJCX0KIAorCQlpZiAodXNhZ2UtPm92ZXJmbG93ZWRfY2FsbHMgPiAwKQorCQl7CisJCQlF eHBsYWluSW5kZW50VGV4dChlcyk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsCisJCQkJ CQkJICJVbnJlY29yZGVkIFdhaXQgRXZlbnQgQ2FsbHM6IGNhbGxzPSUiIFBSSXU2NCAiIHRpbWU9 JTAuM2YgbXNcbiIsCisJCQkJCQkJIHVzYWdlLT5vdmVyZmxvd2VkX2NhbGxzLAorCQkJCQkJCSBJ TlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+b3ZlcmZsb3dlZF90aW1lKSk7CisJCX0KKwog CQllcy0+aW5kZW50LS07CiAJfQogCWVsc2UKIAl7Ci0JCUV4cGxhaW5PcGVuR3JvdXAoIldhaXQt RXZlbnRzIiwgIldhaXQgRXZlbnRzIiwgZmFsc2UsIGVzKTsKLQotCQlmb3IgKGludCBpID0gMDsg aSA8IHVzYWdlLT5uZW50cmllczsgaSsrKQorCQlpZiAodXNhZ2UtPm5lbnRyaWVzID4gMCkKIAkJ ewotCQkJY29uc3QgY2hhciAqZXZlbnRfdHlwZTsKLQkJCWNvbnN0IGNoYXIgKmV2ZW50X25hbWU7 CisJCQlFeHBsYWluT3Blbkdyb3VwKCJXYWl0LUV2ZW50cyIsIGxhYmVsbmFtZSwgZmFsc2UsIGVz KTsKIAotCQkJZXZlbnRfdHlwZSA9IHBnc3RhdF9nZXRfd2FpdF9ldmVudF90eXBlKGVudHJpZXNb aV0ud2FpdF9ldmVudF9pbmZvKTsKLQkJCWV2ZW50X25hbWUgPSBwZ3N0YXRfZ2V0X3dhaXRfZXZl bnQoZW50cmllc1tpXS53YWl0X2V2ZW50X2luZm8pOworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCB1 c2FnZS0+bmVudHJpZXM7IGkrKykKKwkJCXsKKwkJCQljb25zdCBjaGFyICpldmVudF90eXBlOwor CQkJCWNvbnN0IGNoYXIgKmV2ZW50X25hbWU7CiAKLQkJCUV4cGxhaW5PcGVuR3JvdXAoIldhaXQt RXZlbnQiLCBOVUxMLCB0cnVlLCBlcyk7Ci0JCQlFeHBsYWluUHJvcGVydHlUZXh0KCJXYWl0IEV2 ZW50IFR5cGUiLAotCQkJCQkJCQlldmVudF90eXBlID8gZXZlbnRfdHlwZSA6ICJVbmtub3duIiwK LQkJCQkJCQkJZXMpOwotCQkJRXhwbGFpblByb3BlcnR5VGV4dCgiV2FpdCBFdmVudCIsCi0JCQkJ CQkJCWV2ZW50X25hbWUgPyBldmVudF9uYW1lIDogInVua25vd24iLAotCQkJCQkJCQllcyk7Ci0J CQlFeHBsYWluUHJvcGVydHlVSW50ZWdlcigiQ2FsbHMiLCBOVUxMLCBlbnRyaWVzW2ldLmNhbGxz LCBlcyk7Ci0JCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiVGltZSIsICJtcyIsCi0JCQkJCQkJCSBJ TlNUUl9USU1FX0dFVF9NSUxMSVNFQyhlbnRyaWVzW2ldLnRpbWUpLAotCQkJCQkJCQkgMywgZXMp OwotCQkJRXhwbGFpbkNsb3NlR3JvdXAoIldhaXQtRXZlbnQiLCBOVUxMLCB0cnVlLCBlcyk7CisJ CQkJZXZlbnRfdHlwZSA9IHBnc3RhdF9nZXRfd2FpdF9ldmVudF90eXBlKGVudHJpZXNbaV0ud2Fp dF9ldmVudF9pbmZvKTsKKwkJCQlldmVudF9uYW1lID0gcGdzdGF0X2dldF93YWl0X2V2ZW50KGVu dHJpZXNbaV0ud2FpdF9ldmVudF9pbmZvKTsKKworCQkJCUV4cGxhaW5PcGVuR3JvdXAoIldhaXQt RXZlbnQiLCBOVUxMLCB0cnVlLCBlcyk7CisJCQkJRXhwbGFpblByb3BlcnR5VGV4dCgiV2FpdCBF dmVudCBUeXBlIiwKKwkJCQkJCQkJCWV2ZW50X3R5cGUgPyBldmVudF90eXBlIDogIlVua25vd24i LAorCQkJCQkJCQkJZXMpOworCQkJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIldhaXQgRXZlbnQiLAor CQkJCQkJCQkJZXZlbnRfbmFtZSA/IGV2ZW50X25hbWUgOiAidW5rbm93biIsCisJCQkJCQkJCQll cyk7CisJCQkJRXhwbGFpblByb3BlcnR5VUludGVnZXIoIkNhbGxzIiwgTlVMTCwgZW50cmllc1tp XS5jYWxscywgZXMpOworCQkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJUaW1lIiwgIm1zIiwKKwkJ CQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhlbnRyaWVzW2ldLnRpbWUpLAorCQkJCQkJ CQkJIDMsIGVzKTsKKwkJCQlFeHBsYWluQ2xvc2VHcm91cCgiV2FpdC1FdmVudCIsIE5VTEwsIHRy dWUsIGVzKTsKKwkJCX0KKworCQkJRXhwbGFpbkNsb3NlR3JvdXAoIldhaXQtRXZlbnRzIiwgbGFi ZWxuYW1lLCBmYWxzZSwgZXMpOwogCQl9CiAKLQkJRXhwbGFpbkNsb3NlR3JvdXAoIldhaXQtRXZl bnRzIiwgIldhaXQgRXZlbnRzIiwgZmFsc2UsIGVzKTsKKwkJaWYgKHVzYWdlLT5vdmVyZmxvd2Vk X2NhbGxzID4gMCkKKwkJeworCQkJLyoKKwkJCSAqIFRoaXMgaXMgbm90IGEgd2FpdCBldmVudCBp ZGVudGl0eSwgc28ga2VlcCBpdCBvdXRzaWRlIHRoZQorCQkJICogV2FpdCBFdmVudHMgYXJyYXkg aW4gc3RydWN0dXJlZCBvdXRwdXQuCisJCQkgKi8KKwkJCUV4cGxhaW5Qcm9wZXJ0eVVJbnRlZ2Vy KCJVbnJlY29yZGVkIFdhaXQgRXZlbnQgQ2FsbHMiLCBOVUxMLAorCQkJCQkJCQkJdXNhZ2UtPm92 ZXJmbG93ZWRfY2FsbHMsIGVzKTsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJVbnJlY29yZGVk IFdhaXQgRXZlbnQgVGltZSIsICJtcyIsCisJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNF Qyh1c2FnZS0+b3ZlcmZsb3dlZF90aW1lKSwKKwkJCQkJCQkJIDMsIGVzKTsKKwkJfQogCX0KIAog CWlmIChlbnRyaWVzKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFs bGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBmNzdmNTM5 ZGQyNy4uNTIwYjRiODQ4NGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC04 Nyw2ICs4Nyw4IEBAIHR5cGVkZWYgc3RydWN0IFNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2VyCiB7 CiAJaW50CQkJbmVudHJpZXM7CiAJZHNhX3BvaW50ZXIgZW50cmllczsKKwl1aW50NjQJCW92ZXJm bG93ZWRfY2FsbHM7CisJaW5zdHJfdGltZQlvdmVyZmxvd2VkX3RpbWU7CiB9IFNoYXJlZFdhaXRF dmVudFVzYWdlV29ya2VyOwogCiAvKgpAQCAtMTczLDYgKzE3NSwxMCBAQCBzdGF0aWMgYm9vbCBF eGVjUGFyYWxsZWxSZUluaXRpYWxpemVEU00oUGxhblN0YXRlICpwbGFuc3RhdGUsCiBzdGF0aWMg Ym9vbCBFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUgKnBsYW5z dGF0ZSwKIAkJCQkJCQkJCQkJCUV4ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uQ29u dGV4dCAqcik7CiBzdGF0aWMgdm9pZCBFeGVjUGFyYWxsZWxSZXRyaWV2ZVdhaXRFdmVudFVzYWdl KFBhcmFsbGVsRXhlY3V0b3JJbmZvICpwZWkpOworc3RhdGljIHZvaWQgRXhlY1BhcmFsbGVsSW5p dFdhaXRFdmVudFVzYWdlV29ya2VyKFNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2VyICp3b3JrZXIp Oworc3RhdGljIHZvaWQgRXhlY1BhcmFsbGVsQWNjdW11bGF0ZVdhaXRFdmVudFVzYWdlV29ya2Vy KFdhaXRFdmVudFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJCQkJCQkgICBTaGFyZWRXYWl0RXZlbnRV c2FnZVdvcmtlciAqd29ya2VyLAorCQkJCQkJCQkJCQkJCSAgIGRzYV9hcmVhICphcmVhKTsKIHN0 YXRpYyB2b2lkIEV4ZWNQYXJhbGxlbFJlcG9ydFdhaXRFdmVudFVzYWdlV29ya2VyKFNoYXJlZFdh aXRFdmVudFVzYWdlV29ya2VyICp3b3JrZXIsCiAJCQkJCQkJCQkJCQkgICBkc2FfYXJlYSAqYXJl YSwKIAkJCQkJCQkJCQkJCSAgIGNvbnN0IFdhaXRFdmVudFVzYWdlICp1c2FnZSk7CkBAIC05MDQs MTAgKzkxMCw3IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBF U3RhdGUgKmVzdGF0ZSwKIAkJd2FpdF9ldmVudF91c2FnZSA9IHNobV90b2NfYWxsb2NhdGUocGN4 dC0+dG9jLCB3YWl0X2V2ZW50X3VzYWdlX2xlbik7CiAJCXdhaXRfZXZlbnRfdXNhZ2UtPm51bV93 b3JrZXJzID0gbndvcmtlcnM7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgbndvcmtlcnM7IGkrKykK LQkJewotCQkJd2FpdF9ldmVudF91c2FnZS0+d29ya2VyX3VzYWdlW2ldLm5lbnRyaWVzID0gMDsK LQkJCXdhaXRfZXZlbnRfdXNhZ2UtPndvcmtlcl91c2FnZVtpXS5lbnRyaWVzID0gSW52YWxpZERz YVBvaW50ZXI7Ci0JCX0KKwkJCUV4ZWNQYXJhbGxlbEluaXRXYWl0RXZlbnRVc2FnZVdvcmtlcigm d2FpdF9ldmVudF91c2FnZS0+d29ya2VyX3VzYWdlW2ldKTsKIAkJc2htX3RvY19pbnNlcnQocGN4 dC0+dG9jLCBQQVJBTExFTF9LRVlfV0FJVF9FVkVOVF9VU0FHRSwKIAkJCQkJICAgd2FpdF9ldmVu dF91c2FnZSk7CiAJCXBlaS0+d2FpdF9ldmVudF91c2FnZSA9IHdhaXRfZXZlbnRfdXNhZ2U7CkBA IC05NDQsMTAgKzk0Nyw3IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0 YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAogCQkJd29ya2VyX3VzYWdlID0gR2V0SW5zdHJ1bWVudGF0 aW9uV2FpdEV2ZW50VXNhZ2VBcnJheShpbnN0cnVtZW50YXRpb24pOwogCQkJZm9yIChpID0gMDsg aSA8IG53b3JrZXJzICogZS5ubm9kZXM7ICsraSkKLQkJCXsKLQkJCQl3b3JrZXJfdXNhZ2VbaV0u bmVudHJpZXMgPSAwOwotCQkJCXdvcmtlcl91c2FnZVtpXS5lbnRyaWVzID0gSW52YWxpZERzYVBv aW50ZXI7Ci0JCQl9CisJCQkJRXhlY1BhcmFsbGVsSW5pdFdhaXRFdmVudFVzYWdlV29ya2VyKCZ3 b3JrZXJfdXNhZ2VbaV0pOwogCQl9CiAJCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxM RUxfS0VZX0lOU1RSVU1FTlRBVElPTiwKIAkJCQkJICAgaW5zdHJ1bWVudGF0aW9uKTsKQEAgLTEy MDksMjEgKzEyMDksOSBAQCBFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihQbGFu U3RhdGUgKnBsYW5zdGF0ZSwKIAkJd2FpdF9ldmVudF91c2FnZSA9IEdldEluc3RydW1lbnRhdGlv bldhaXRFdmVudFVzYWdlQXJyYXkoaW5zdHJ1bWVudGF0aW9uKTsKIAkJd2FpdF9ldmVudF91c2Fn ZSArPSBpICogaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2VyczsKIAkJZm9yIChuID0gMDsgbiA8 IGluc3RydW1lbnRhdGlvbi0+bnVtX3dvcmtlcnM7ICsrbikKLQkJewotCQkJU2hhcmVkV2FpdEV2 ZW50VXNhZ2VXb3JrZXIgKndvcmtlciA9ICZ3YWl0X2V2ZW50X3VzYWdlW25dOwotCQkJV2FpdEV2 ZW50VXNhZ2VFbnRyeSAqZW50cmllczsKLQotCQkJaWYgKHdvcmtlci0+bmVudHJpZXMgPD0gMCB8 fCAhRHNhUG9pbnRlcklzVmFsaWQod29ya2VyLT5lbnRyaWVzKSkKLQkJCQljb250aW51ZTsKLQot CQkJZW50cmllcyA9IGRzYV9nZXRfYWRkcmVzcyhyLT5hcmVhLCB3b3JrZXItPmVudHJpZXMpOwot CQkJcGdzdGF0X2FjY3VtdWxhdGVfd2FpdF9ldmVudF91c2FnZShwbGFuc3RhdGUtPndhaXRfZXZl bnRfdXNhZ2UsCi0JCQkJCQkJCQkJCSAgIGVudHJpZXMsCi0JCQkJCQkJCQkJCSAgIHdvcmtlci0+ bmVudHJpZXMpOwotCQkJZHNhX2ZyZWUoci0+YXJlYSwgd29ya2VyLT5lbnRyaWVzKTsKLQkJCXdv cmtlci0+bmVudHJpZXMgPSAwOwotCQkJd29ya2VyLT5lbnRyaWVzID0gSW52YWxpZERzYVBvaW50 ZXI7Ci0JCX0KKwkJCUV4ZWNQYXJhbGxlbEFjY3VtdWxhdGVXYWl0RXZlbnRVc2FnZVdvcmtlcihw bGFuc3RhdGUtPndhaXRfZXZlbnRfdXNhZ2UsCisJCQkJCQkJCQkJCQkJICAgJndhaXRfZXZlbnRf dXNhZ2Vbbl0sCisJCQkJCQkJCQkJCQkJICAgci0+YXJlYSk7CiAJfQogCiAJLyoKQEAgLTEzMzks MTggKzEzMjcsNDYgQEAgRXhlY1BhcmFsbGVsUmV0cmlldmVXYWl0RXZlbnRVc2FnZShQYXJhbGxl bEV4ZWN1dG9ySW5mbyAqcGVpKQogCQlyZXR1cm47CiAKIAlmb3IgKGludCBpID0gMDsgaSA8IHNo YXJlZC0+bnVtX3dvcmtlcnM7IGkrKykKKwkJRXhlY1BhcmFsbGVsQWNjdW11bGF0ZVdhaXRFdmVu dFVzYWdlV29ya2VyKHVzYWdlLAorCQkJCQkJCQkJCQkJICAgJnNoYXJlZC0+d29ya2VyX3VzYWdl W2ldLAorCQkJCQkJCQkJCQkJICAgcGVpLT5hcmVhKTsKK30KKworc3RhdGljIHZvaWQKK0V4ZWNQ YXJhbGxlbEluaXRXYWl0RXZlbnRVc2FnZVdvcmtlcihTaGFyZWRXYWl0RXZlbnRVc2FnZVdvcmtl ciAqd29ya2VyKQoreworCXdvcmtlci0+bmVudHJpZXMgPSAwOworCXdvcmtlci0+ZW50cmllcyA9 IEludmFsaWREc2FQb2ludGVyOworCXdvcmtlci0+b3ZlcmZsb3dlZF9jYWxscyA9IDA7CisJSU5T VFJfVElNRV9TRVRfWkVSTyh3b3JrZXItPm92ZXJmbG93ZWRfdGltZSk7Cit9CisKK3N0YXRpYyB2 b2lkCitFeGVjUGFyYWxsZWxBY2N1bXVsYXRlV2FpdEV2ZW50VXNhZ2VXb3JrZXIoV2FpdEV2ZW50 VXNhZ2UgKnVzYWdlLAorCQkJCQkJCQkJCSAgIFNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2VyICp3 b3JrZXIsCisJCQkJCQkJCQkJICAgZHNhX2FyZWEgKmFyZWEpCit7CisJQXNzZXJ0KHVzYWdlICE9 IE5VTEwpOworCUFzc2VydCh3b3JrZXIgIT0gTlVMTCk7CisJQXNzZXJ0KGFyZWEgIT0gTlVMTCk7 CisKKwlpZiAod29ya2VyLT5vdmVyZmxvd2VkX2NhbGxzID4gMCkKIAl7Ci0JCVNoYXJlZFdhaXRF dmVudFVzYWdlV29ya2VyICp3b3JrZXIgPSAmc2hhcmVkLT53b3JrZXJfdXNhZ2VbaV07Ci0JCVdh aXRFdmVudFVzYWdlRW50cnkgKmVudHJpZXM7CisJCXVzYWdlLT5vdmVyZmxvd2VkX2NhbGxzICs9 IHdvcmtlci0+b3ZlcmZsb3dlZF9jYWxsczsKKwkJSU5TVFJfVElNRV9BREQodXNhZ2UtPm92ZXJm bG93ZWRfdGltZSwgd29ya2VyLT5vdmVyZmxvd2VkX3RpbWUpOworCQl3b3JrZXItPm92ZXJmbG93 ZWRfY2FsbHMgPSAwOworCQlJTlNUUl9USU1FX1NFVF9aRVJPKHdvcmtlci0+b3ZlcmZsb3dlZF90 aW1lKTsKKwl9CiAKLQkJaWYgKHdvcmtlci0+bmVudHJpZXMgPD0gMCB8fCAhRHNhUG9pbnRlcklz VmFsaWQod29ya2VyLT5lbnRyaWVzKSkKLQkJCWNvbnRpbnVlOworCWlmICh3b3JrZXItPm5lbnRy aWVzID4gMCAmJiBEc2FQb2ludGVySXNWYWxpZCh3b3JrZXItPmVudHJpZXMpKQorCXsKKwkJV2Fp dEV2ZW50VXNhZ2VFbnRyeSAqZW50cmllczsKIAotCQllbnRyaWVzID0gZHNhX2dldF9hZGRyZXNz KHBlaS0+YXJlYSwgd29ya2VyLT5lbnRyaWVzKTsKKwkJZW50cmllcyA9IGRzYV9nZXRfYWRkcmVz cyhhcmVhLCB3b3JrZXItPmVudHJpZXMpOwogCQlwZ3N0YXRfYWNjdW11bGF0ZV93YWl0X2V2ZW50 X3VzYWdlKHVzYWdlLAogCQkJCQkJCQkJCSAgIGVudHJpZXMsCiAJCQkJCQkJCQkJICAgd29ya2Vy LT5uZW50cmllcyk7Ci0JCWRzYV9mcmVlKHBlaS0+YXJlYSwgd29ya2VyLT5lbnRyaWVzKTsKKwkJ ZHNhX2ZyZWUoYXJlYSwgd29ya2VyLT5lbnRyaWVzKTsKIAkJd29ya2VyLT5uZW50cmllcyA9IDA7 CiAJCXdvcmtlci0+ZW50cmllcyA9IEludmFsaWREc2FQb2ludGVyOwogCX0KQEAgLTEzNjIsMjQg KzEzNzgsNjUgQEAgRXhlY1BhcmFsbGVsUmVwb3J0V2FpdEV2ZW50VXNhZ2VXb3JrZXIoU2hhcmVk V2FpdEV2ZW50VXNhZ2VXb3JrZXIgKndvcmtlciwKIAkJCQkJCQkJCSAgIGNvbnN0IFdhaXRFdmVu dFVzYWdlICp1c2FnZSkKIHsKIAlXYWl0RXZlbnRVc2FnZUVudHJ5ICplbnRyaWVzOworCVdhaXRF dmVudFVzYWdlRW50cnkgKm9sZF9lbnRyaWVzID0gTlVMTDsKIAlkc2FfcG9pbnRlciBlbnRyaWVz X2RzYTsKIAlTaXplCQllbnRyaWVzX3NpemU7CisJaW50CQkJb2xkX25lbnRyaWVzID0gMDsKKwlp bnQJCQluZXdfbmVudHJpZXMgPSAwOworCWludAkJCWkgPSAwOworCWludAkJCWogPSAwOwogCiAJ QXNzZXJ0KHdvcmtlciAhPSBOVUxMKTsKIAlBc3NlcnQoYXJlYSAhPSBOVUxMKTsKIAlBc3NlcnQo dXNhZ2UgIT0gTlVMTCk7CiAKKwl3b3JrZXItPm92ZXJmbG93ZWRfY2FsbHMgKz0gdXNhZ2UtPm92 ZXJmbG93ZWRfY2FsbHM7CisJSU5TVFJfVElNRV9BREQod29ya2VyLT5vdmVyZmxvd2VkX3RpbWUs IHVzYWdlLT5vdmVyZmxvd2VkX3RpbWUpOworCiAJaWYgKHVzYWdlLT5uZW50cmllcyA8PSAwKQog CQlyZXR1cm47CiAKLQllbnRyaWVzX3NpemUgPSBtdWxfc2l6ZShzaXplb2YoV2FpdEV2ZW50VXNh Z2VFbnRyeSksIHVzYWdlLT5uZW50cmllcyk7CisJaWYgKERzYVBvaW50ZXJJc1ZhbGlkKHdvcmtl ci0+ZW50cmllcykpCisJeworCQlBc3NlcnQod29ya2VyLT5uZW50cmllcyA+IDApOworCQlvbGRf bmVudHJpZXMgPSB3b3JrZXItPm5lbnRyaWVzOworCQlvbGRfZW50cmllcyA9IGRzYV9nZXRfYWRk cmVzcyhhcmVhLCB3b3JrZXItPmVudHJpZXMpOworCX0KKworCWVudHJpZXNfc2l6ZSA9IG11bF9z aXplKHNpemVvZihXYWl0RXZlbnRVc2FnZUVudHJ5KSwKKwkJCQkJCQkoU2l6ZSkgb2xkX25lbnRy aWVzICsgKFNpemUpIHVzYWdlLT5uZW50cmllcyk7CiAJZW50cmllc19kc2EgPSBkc2FfYWxsb2Nh dGUoYXJlYSwgZW50cmllc19zaXplKTsKIAllbnRyaWVzID0gZHNhX2dldF9hZGRyZXNzKGFyZWEs IGVudHJpZXNfZHNhKTsKLQltZW1jcHkoZW50cmllcywgdXNhZ2UtPmVudHJpZXMsIGVudHJpZXNf c2l6ZSk7CisKKwl3aGlsZSAoaSA8IG9sZF9uZW50cmllcyAmJiBqIDwgdXNhZ2UtPm5lbnRyaWVz KQorCXsKKwkJV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cnkgPSAmZW50cmllc1tuZXdfbmVudHJp ZXNdOworCQl1aW50MzIJCW9sZF9pbmZvID0gb2xkX2VudHJpZXNbaV0ud2FpdF9ldmVudF9pbmZv OworCQl1aW50MzIJCW5ld19pbmZvID0gdXNhZ2UtPmVudHJpZXNbal0ud2FpdF9ldmVudF9pbmZv OworCisJCWlmIChvbGRfaW5mbyA8IG5ld19pbmZvKQorCQkJKmVudHJ5ID0gb2xkX2VudHJpZXNb aSsrXTsKKwkJZWxzZSBpZiAob2xkX2luZm8gPiBuZXdfaW5mbykKKwkJCSplbnRyeSA9IHVzYWdl LT5lbnRyaWVzW2orK107CisJCWVsc2UKKwkJeworCQkJKmVudHJ5ID0gb2xkX2VudHJpZXNbaSsr XTsKKwkJCWVudHJ5LT5jYWxscyArPSB1c2FnZS0+ZW50cmllc1tqXS5jYWxsczsKKwkJCUlOU1RS X1RJTUVfQUREKGVudHJ5LT50aW1lLCB1c2FnZS0+ZW50cmllc1tqXS50aW1lKTsKKwkJCWorKzsK KwkJfQorCisJCW5ld19uZW50cmllcysrOworCX0KKworCXdoaWxlIChpIDwgb2xkX25lbnRyaWVz KQorCQllbnRyaWVzW25ld19uZW50cmllcysrXSA9IG9sZF9lbnRyaWVzW2krK107CisJd2hpbGUg KGogPCB1c2FnZS0+bmVudHJpZXMpCisJCWVudHJpZXNbbmV3X25lbnRyaWVzKytdID0gdXNhZ2Ut PmVudHJpZXNbaisrXTsKIAogCWlmIChEc2FQb2ludGVySXNWYWxpZCh3b3JrZXItPmVudHJpZXMp KQogCQlkc2FfZnJlZShhcmVhLCB3b3JrZXItPmVudHJpZXMpOwotCXdvcmtlci0+bmVudHJpZXMg PSB1c2FnZS0+bmVudHJpZXM7CisJd29ya2VyLT5uZW50cmllcyA9IG5ld19uZW50cmllczsKIAl3 b3JrZXItPmVudHJpZXMgPSBlbnRyaWVzX2RzYTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvd2FpdF9ldmVudC5jCmluZGV4IDNkNWExMGI0NGM0Li42MWI0MThlOGZkNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMzksNiArMzksMTAgQEAgc3RhdGlj IGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfd2FpdF90aW1lb3V0KFdhaXRFdmVudFRpbWVvdXQgdyk7 CiBzdGF0aWMgY29uc3QgY2hhciAqcGdzdGF0X2dldF93YWl0X2lvKFdhaXRFdmVudElPIHcpOwog c3RhdGljIHZvaWQgV2FpdEV2ZW50VXNhZ2VBZGQoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCB1aW50 MzIgd2FpdF9ldmVudF9pbmZvLAogCQkJCQkJCSAgdWludDY0IGNhbGxzLCBjb25zdCBpbnN0cl90 aW1lICplbGFwc2VkKTsKK3N0YXRpYyB2b2lkIFdhaXRFdmVudFVzYWdlQWRkT3ZlcmZsb3coV2Fp dEV2ZW50VXNhZ2UgKnVzYWdlLCB1aW50NjQgY2FsbHMsCisJCQkJCQkJCQkgIGNvbnN0IGluc3Ry X3RpbWUgKmVsYXBzZWQpOworc3RhdGljIGludAlXYWl0RXZlbnRVc2FnZUZpbmQoY29uc3QgV2Fp dEV2ZW50VXNhZ2UgKnVzYWdlLAorCQkJCQkJCSAgIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8sIGJv b2wgKmZvdW5kKTsKIAogCiBzdGF0aWMgdWludDMyIGxvY2FsX215X3dhaXRfZXZlbnRfaW5mbzsK QEAgLTQ4LDcgKzUyLDE2IEBAIHVpbnQzMgkgICAqbXlfd2FpdF9ldmVudF9pbmZvID0gJmxvY2Fs X215X3dhaXRfZXZlbnRfaW5mbzsKIAogaW50CQkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfZGVw dGggPSAwOwogc3RhdGljIFdhaXRFdmVudFVzYWdlICpwZ3N0YXRfd2FpdF9ldmVudF91c2FnZSA9 IE5VTEw7CisKKy8qCisgKiBUb3Agb2YgdGhlIGFjdGl2ZSBleGVjdXRvciBub2RlIGFuZCBxdWVy eS1sZXZlbCBzdGFja3MuICBRdWVyeS1sZXZlbCB3YWl0CisgKiBhY2NvdW50aW5nIHJlY29yZHMg ZWFjaCB3YWl0IG9uY2UgaW4gZXZlcnkgYWN0aXZlIHF1ZXJ5LWxldmVsIGNvbGxlY3Rvci4KKyAq IFBlci1ub2RlIHdhaXQgYWNjb3VudGluZyByZWNvcmRzIGVhY2ggd2FpdCBpbiBldmVyeSBhY3Rp dmUgcGxhbiBub2RlLAorICogbWF0Y2hpbmcgdGhlIGluY2x1c2l2ZSB0aW1pbmcgc2VtYW50aWNz IG9mIEVYUExBSU4gQU5BTFlaRSBwbGFuIG5vZGVzLgorICovCiBzdGF0aWMgV2FpdEV2ZW50VXNh Z2UgKnBnc3RhdF93YWl0X2V2ZW50X25vZGVfdXNhZ2UgPSBOVUxMOworc3RhdGljIFdhaXRFdmVu dFVzYWdlICpwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9ub2RlX3N0YWNrID0gTlVMTDsKK3N0YXRp YyBXYWl0RXZlbnRVc2FnZSAqcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfcXVlcnlfc3RhY2sgPSBO VUxMOwogc3RhdGljIHVpbnQzMiBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9jdXJyZW50ID0gMDsK IHN0YXRpYyBpbnN0cl90aW1lIHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX3N0YXJ0OwogCkBAIC0z ODcsMjQgKzQwMCwzNyBAQCBwZ3N0YXRfaW5pdF93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVz YWdlICp1c2FnZSwgTWVtb3J5Q29udGV4dCBtZW1jb250ZXh0KQogICoKICAqIFRoaXMgaXMgaW50 ZW5kZWQgZm9yIHNob3J0LWxpdmVkIGluc3RydW1lbnRhdGlvbiBzdWNoIGFzIEVYUExBSU4gQU5B TFlaRS4KICAqIEl0IHJlY29yZHMgd2FpdHMgb2JzZXJ2ZWQgdGhyb3VnaCBwZ3N0YXRfcmVwb3J0 X3dhaXRfc3RhcnQvZW5kIGluIGJhY2tlbmQKLSAqIGxvY2FsIG1lbW9yeS4gIE5lc3RlZCBjb2xs ZWN0aW9uIGlzIGRlbGliZXJhdGVseSB0cmVhdGVkIGFzIHBhcnQgb2YgdGhlCi0gKiBvdXRlciBj b2xsZWN0aW9uIGZvciBub3c7IGNhbGxlcnMgdGhhdCB3YW50IGluZGVwZW5kZW50IG5lc3RlZCBh Y2NvdW50aW5nCi0gKiBuZWVkIGEgc3RhY2sgb2YgV2FpdEV2ZW50VXNhZ2UgY29udGV4dHMuCisg KiBsb2NhbCBtZW1vcnkuICBOZXN0ZWQgdG9wLWxldmVsIGNvbGxlY3RvcnMgYXJlIGtlcHQgaW4g YSBxdWVyeS1sZXZlbCBzdGFjazsKKyAqIGEgd2FpdCBpcyBjb3VudGVkIG9uY2UgaW4gZWFjaCBh Y3RpdmUgY29sbGVjdG9yLgogICovCiB2b2lkCiBwZ3N0YXRfYmVnaW5fd2FpdF9ldmVudF91c2Fn ZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2UsIE1lbW9yeUNvbnRleHQgbWVtY29udGV4dCkKIHsKKwli b29sCQlmaXJzdDsKKwogCUFzc2VydCh1c2FnZSAhPSBOVUxMKTsKIAlBc3NlcnQobWVtY29udGV4 dCAhPSBOVUxMKTsKIAotCWlmIChwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9kZXB0aCsrID09IDAp CisJZmlyc3QgPSBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9kZXB0aCA9PSAwOworCWlmIChmaXJz dCkKIAl7Ci0JCXBnc3RhdF9pbml0X3dhaXRfZXZlbnRfdXNhZ2UodXNhZ2UsIG1lbWNvbnRleHQp OwotCQlwZ3N0YXRfd2FpdF9ldmVudF91c2FnZSA9IHVzYWdlOwogCQlwZ3N0YXRfd2FpdF9ldmVu dF9ub2RlX3VzYWdlID0gTlVMTDsKKwkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfbm9kZV9zdGFj ayA9IE5VTEw7CisJCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX3F1ZXJ5X3N0YWNrID0gTlVMTDsK IAkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfY3VycmVudCA9IDA7CiAJCUlOU1RSX1RJTUVfU0VU X1pFUk8ocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfc3RhcnQpOwogCX0KKworCXBnc3RhdF9pbml0 X3dhaXRfZXZlbnRfdXNhZ2UodXNhZ2UsIG1lbWNvbnRleHQpOworCXVzYWdlLT5xdWVyeV9wYXJl bnQgPSBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZTsKKwkvKgorCSAqIEEgbmVzdGVkIEVYUExBSU4g Y2FuIGVycm9yIG91dCB3aGlsZSBvbmUgb2YgaXRzIHBsYW4gbm9kZXMgaXMgYWN0aXZlLAorCSAq IHNraXBwaW5nIHRoZSB1c3VhbCBub2RlLWxldmVsIHJlc3RvcmUuICBSZW1lbWJlciB0aGUgb3V0 ZXIgbm9kZSBzdGFjayBzbworCSAqIGVuZGluZyB0aGlzIGNvbGxlY3RvciBjYW4gZGlzY2FyZCBh bnkgbGVha2VkIGlubmVyIG5vZGUgZnJhbWVzLgorCSAqLworCXVzYWdlLT5zYXZlZF9ub2RlX3Vz YWdlID0gcGdzdGF0X3dhaXRfZXZlbnRfbm9kZV91c2FnZTsKKwlwZ3N0YXRfd2FpdF9ldmVudF91 c2FnZSA9IHVzYWdlOworCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2RlcHRoKys7CiB9CiAKIC8q CkBAIC00MTUsMTQgKzQ0MSwyMiBAQCBwZ3N0YXRfZW5kX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2 ZW50VXNhZ2UgKnVzYWdlKQogewogCUFzc2VydCh1c2FnZSAhPSBOVUxMKTsKIAlBc3NlcnQocGdz dGF0X3dhaXRfZXZlbnRfdXNhZ2VfZGVwdGggPiAwKTsKKwlBc3NlcnQocGdzdGF0X3dhaXRfZXZl bnRfdXNhZ2UgPT0gdXNhZ2UpOworCisJaWYgKHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2N1cnJl bnQgIT0gMCkKKwkJcGdzdGF0X2NvdW50X3dhaXRfZXZlbnRfZW5kKCk7CisKKwlwZ3N0YXRfd2Fp dF9ldmVudF91c2FnZSA9IHVzYWdlLT5xdWVyeV9wYXJlbnQ7CisJdXNhZ2UtPnF1ZXJ5X3BhcmVu dCA9IE5VTEw7CisJcGdzdGF0X3dhaXRfZXZlbnRfbm9kZV91c2FnZSA9IHVzYWdlLT5zYXZlZF9u b2RlX3VzYWdlOworCXVzYWdlLT5zYXZlZF9ub2RlX3VzYWdlID0gTlVMTDsKIAogCWlmICgtLXBn c3RhdF93YWl0X2V2ZW50X3VzYWdlX2RlcHRoID09IDApCiAJewotCQlpZiAocGdzdGF0X3dhaXRf ZXZlbnRfdXNhZ2VfY3VycmVudCAhPSAwKQotCQkJcGdzdGF0X2NvdW50X3dhaXRfZXZlbnRfZW5k KCk7Ci0KIAkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2UgPSBOVUxMOwogCQlwZ3N0YXRfd2FpdF9l dmVudF9ub2RlX3VzYWdlID0gTlVMTDsKKwkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfbm9kZV9z dGFjayA9IE5VTEw7CisJCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX3F1ZXJ5X3N0YWNrID0gTlVM TDsKIAkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfY3VycmVudCA9IDA7CiAJCUlOU1RSX1RJTUVf U0VUX1pFUk8ocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfc3RhcnQpOwogCX0KQEAgLTQzMyw2ICs0 NjcsOSBAQCBwZ3N0YXRfZW50ZXJfd2FpdF9ldmVudF91c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNh Z2UpCiB7CiAJV2FpdEV2ZW50VXNhZ2UgKnByZXZpb3VzID0gcGdzdGF0X3dhaXRfZXZlbnRfbm9k ZV91c2FnZTsKIAorCUFzc2VydCh1c2FnZSAhPSBOVUxMKTsKKworCXVzYWdlLT5hY3RpdmVfcGFy ZW50ID0gcHJldmlvdXM7CiAJcGdzdGF0X3dhaXRfZXZlbnRfbm9kZV91c2FnZSA9IHVzYWdlOwog CXJldHVybiBwcmV2aW91czsKIH0KQEAgLTQ0MCw2ICs0NzcsOSBAQCBwZ3N0YXRfZW50ZXJfd2Fp dF9ldmVudF91c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2UpCiB2b2lkCiBwZ3N0YXRfcmVzdG9y ZV93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVzYWdlICp1c2FnZSkKIHsKKwlBc3NlcnQocGdz dGF0X3dhaXRfZXZlbnRfbm9kZV91c2FnZSA9PSBOVUxMIHx8CisJCSAgIHBnc3RhdF93YWl0X2V2 ZW50X25vZGVfdXNhZ2UtPmFjdGl2ZV9wYXJlbnQgPT0gdXNhZ2UpOworCiAJcGdzdGF0X3dhaXRf ZXZlbnRfbm9kZV91c2FnZSA9IHVzYWdlOwogfQogCkBAIC00NjAsNiArNTAwLDggQEAgcGdzdGF0 X2NvdW50X3dhaXRfZXZlbnRfc3RhcnQodWludDMyIHdhaXRfZXZlbnRfaW5mbykKIAkJcGdzdGF0 X2NvdW50X3dhaXRfZXZlbnRfZW5kKCk7CiAKIAlwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9jdXJy ZW50ID0gd2FpdF9ldmVudF9pbmZvOworCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX25vZGVfc3Rh Y2sgPSBwZ3N0YXRfd2FpdF9ldmVudF9ub2RlX3VzYWdlOworCXBnc3RhdF93YWl0X2V2ZW50X3Vz YWdlX3F1ZXJ5X3N0YWNrID0gcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2U7CiAJSU5TVFJfVElNRV9T RVRfQ1VSUkVOVChwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9zdGFydCk7CiB9CiAKQEAgLTQ4MCwx NyArNTIyLDI0IEBAIHBnc3RhdF9jb3VudF93YWl0X2V2ZW50X2VuZCh2b2lkKQogCWVsYXBzZWQg PSBlbmQ7CiAJSU5TVFJfVElNRV9TVUJUUkFDVChlbGFwc2VkLCBwZ3N0YXRfd2FpdF9ldmVudF91 c2FnZV9zdGFydCk7CiAKLQlXYWl0RXZlbnRVc2FnZUFkZChwZ3N0YXRfd2FpdF9ldmVudF91c2Fn ZSwKLQkJCQkJICBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9jdXJyZW50LAotCQkJCQkgIDEsCi0J CQkJCSAgJmVsYXBzZWQpOwotCWlmIChwZ3N0YXRfd2FpdF9ldmVudF9ub2RlX3VzYWdlICE9IE5V TEwpCi0JCVdhaXRFdmVudFVzYWdlQWRkKHBnc3RhdF93YWl0X2V2ZW50X25vZGVfdXNhZ2UsCisJ Zm9yIChXYWl0RXZlbnRVc2FnZSAqcXVlcnlfdXNhZ2UgPSBwZ3N0YXRfd2FpdF9ldmVudF91c2Fn ZV9xdWVyeV9zdGFjazsKKwkJIHF1ZXJ5X3VzYWdlICE9IE5VTEw7CisJCSBxdWVyeV91c2FnZSA9 IHF1ZXJ5X3VzYWdlLT5xdWVyeV9wYXJlbnQpCisJCVdhaXRFdmVudFVzYWdlQWRkKHF1ZXJ5X3Vz YWdlLAorCQkJCQkJICBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9jdXJyZW50LAorCQkJCQkJICAx LAorCQkJCQkJICAmZWxhcHNlZCk7CisJZm9yIChXYWl0RXZlbnRVc2FnZSAqbm9kZV91c2FnZSA9 IHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX25vZGVfc3RhY2s7CisJCSBub2RlX3VzYWdlICE9IE5V TEw7CisJCSBub2RlX3VzYWdlID0gbm9kZV91c2FnZS0+YWN0aXZlX3BhcmVudCkKKwkJV2FpdEV2 ZW50VXNhZ2VBZGQobm9kZV91c2FnZSwKIAkJCQkJCSAgcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vf Y3VycmVudCwKIAkJCQkJCSAgMSwKIAkJCQkJCSAgJmVsYXBzZWQpOwogCiAJcGdzdGF0X3dhaXRf ZXZlbnRfdXNhZ2VfY3VycmVudCA9IDA7CisJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfbm9kZV9z dGFjayA9IE5VTEw7CisJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfcXVlcnlfc3RhY2sgPSBOVUxM OwogCUlOU1RSX1RJTUVfU0VUX1pFUk8ocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfc3RhcnQpOwog fQogCkBAIC01MDksNTYgKzU1OCwxMjMgQEAgcGdzdGF0X2FjY3VtdWxhdGVfd2FpdF9ldmVudF91 c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2UsCiAJCQkJCQkgICZlbnRyaWVzW2ldLnRpbWUpOwog fQogCisvKgorICogRmluZCB0aGUgZXhpc3RpbmcgZW50cnksIG9yIHRoZSBpbnNlcnRpb24gcG9z aXRpb24gZm9yIGEgbmV3IGVudHJ5LgorICoKKyAqIFdhaXRFdmVudFVzYWdlIGVudHJpZXMgYXJl IGtlcHQgc29ydGVkIGJ5IHdhaXRfZXZlbnRfaW5mbyBzbyB0aGUgaG90CisgKiB3YWl0LWVuZCBw YXRoIGRvZXMgbm90IG5lZWQgYSBsaW5lYXIgc2NhbiB0aHJvdWdoIGFsbCBkaXN0aW5jdCB3YWl0 IGV2ZW50cworICogYWxyZWFkeSBzZWVuIGJ5IHRoZSBxdWVyeSBvciBwbGFuIG5vZGUuCisgKi8K K3N0YXRpYyBpbnQKK1dhaXRFdmVudFVzYWdlRmluZChjb25zdCBXYWl0RXZlbnRVc2FnZSAqdXNh Z2UsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8sCisJCQkJICAgYm9vbCAqZm91bmQpCit7CisJaW50 CQkJbG93ID0gMDsKKwlpbnQJCQloaWdoID0gdXNhZ2UtPm5lbnRyaWVzOworCisJd2hpbGUgKGxv dyA8IGhpZ2gpCisJeworCQlpbnQJCQltaWQgPSBsb3cgKyAoaGlnaCAtIGxvdykgLyAyOworCQl1 aW50MzIJCWVudHJ5X2luZm8gPSB1c2FnZS0+ZW50cmllc1ttaWRdLndhaXRfZXZlbnRfaW5mbzsK KworCQlpZiAoZW50cnlfaW5mbyA8IHdhaXRfZXZlbnRfaW5mbykKKwkJCWxvdyA9IG1pZCArIDE7 CisJCWVsc2UKKwkJCWhpZ2ggPSBtaWQ7CisJfQorCisJKmZvdW5kID0gbG93IDwgdXNhZ2UtPm5l bnRyaWVzICYmCisJCXVzYWdlLT5lbnRyaWVzW2xvd10ud2FpdF9ldmVudF9pbmZvID09IHdhaXRf ZXZlbnRfaW5mbzsKKwlyZXR1cm4gbG93OworfQorCiBzdGF0aWMgdm9pZAogV2FpdEV2ZW50VXNh Z2VBZGQoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCB1aW50MzIgd2FpdF9ldmVudF9pbmZvLAogCQkJ CSAgdWludDY0IGNhbGxzLCBjb25zdCBpbnN0cl90aW1lICplbGFwc2VkKQogewotCVdhaXRFdmVu dFVzYWdlRW50cnkgKmVudHJ5ID0gTlVMTDsKKwlib29sCQlmb3VuZDsKKwlpbnQJCQlpZHg7CisJ V2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cnk7CiAKLQlmb3IgKGludCBpID0gMDsgaSA8IHVzYWdl LT5uZW50cmllczsgaSsrKQotCXsKLQkJaWYgKHVzYWdlLT5lbnRyaWVzW2ldLndhaXRfZXZlbnRf aW5mbyA9PSB3YWl0X2V2ZW50X2luZm8pCi0JCXsKLQkJCWVudHJ5ID0gJnVzYWdlLT5lbnRyaWVz W2ldOwotCQkJYnJlYWs7Ci0JCX0KLQl9CisJaWR4ID0gV2FpdEV2ZW50VXNhZ2VGaW5kKHVzYWdl LCB3YWl0X2V2ZW50X2luZm8sICZmb3VuZCk7CiAKLQlpZiAoZW50cnkgPT0gTlVMTCkKKwlpZiAo IWZvdW5kKQogCXsKIAkJaWYgKHVzYWdlLT5uZW50cmllcyA+PSB1c2FnZS0+bWF4ZW50cmllcykK IAkJewotCQkJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCQkJaW50CQkJbmV3bWF4ZW50cmll czsKKwkJCVNpemUJCWVudHJpZXNfc2l6ZTsKKwkJCVdhaXRFdmVudFVzYWdlRW50cnkgKm5ld2Vu dHJpZXM7CiAKIAkJCWlmICh1c2FnZS0+bWF4ZW50cmllcyA+IDApCisJCQl7CisJCQkJaWYgKChT aXplKSB1c2FnZS0+bWF4ZW50cmllcyA+CisJCQkJCU1heEFsbG9jU2l6ZSAvIHNpemVvZihXYWl0 RXZlbnRVc2FnZUVudHJ5KSAvIDIpCisJCQkJeworCQkJCQlXYWl0RXZlbnRVc2FnZUFkZE92ZXJm bG93KHVzYWdlLCBjYWxscywgZWxhcHNlZCk7CisJCQkJCXJldHVybjsKKwkJCQl9CisKIAkJCQlu ZXdtYXhlbnRyaWVzID0gdXNhZ2UtPm1heGVudHJpZXMgKiAyOworCQkJfQogCQkJZWxzZQogCQkJ CW5ld21heGVudHJpZXMgPSBXQUlUX0VWRU5UX1VTQUdFX0lOSVRJQUxfRVZFTlRTOwogCi0JCQlv bGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHVzYWdlLT5tZW1jb250ZXh0KTsKKwkJ CWlmICgoU2l6ZSkgbmV3bWF4ZW50cmllcyA+CisJCQkJTWF4QWxsb2NTaXplIC8gc2l6ZW9mKFdh aXRFdmVudFVzYWdlRW50cnkpKQorCQkJeworCQkJCVdhaXRFdmVudFVzYWdlQWRkT3ZlcmZsb3co dXNhZ2UsIGNhbGxzLCBlbGFwc2VkKTsKKwkJCQlyZXR1cm47CisJCQl9CisKKwkJCWVudHJpZXNf c2l6ZSA9IHNpemVvZihXYWl0RXZlbnRVc2FnZUVudHJ5KSAqIG5ld21heGVudHJpZXM7CisJCQkv KgorCQkJICogV2FpdCBjb21wbGV0aW9uIGNhbiBoYXBwZW4gaW4gYSBjcml0aWNhbCBzZWN0aW9u LCBzbyBncm93dGgKKwkJCSAqIG11c3Qgbm90IHRocm93IEVSUk9SLiAgSWYgc3RvcmFnZSBjYW5u b3QgYmUgZ3Jvd24gd2l0aG91dAorCQkJICogdGhyb3dpbmcsIHByZXNlcnZlIHRvdGFsIHdhaXQg dGltZSBpbiB0aGUgb3ZlcmZsb3cgYnVja2V0LgorCQkJICovCiAJCQlpZiAodXNhZ2UtPmVudHJp ZXMpCi0JCQkJdXNhZ2UtPmVudHJpZXMgPSByZXBhbGxvY19hcnJheSh1c2FnZS0+ZW50cmllcywK LQkJCQkJCQkJCQkJCVdhaXRFdmVudFVzYWdlRW50cnksCi0JCQkJCQkJCQkJCQluZXdtYXhlbnRy aWVzKTsKKwkJCQluZXdlbnRyaWVzID0gcmVwYWxsb2NfZXh0ZW5kZWQodXNhZ2UtPmVudHJpZXMs IGVudHJpZXNfc2l6ZSwKKwkJCQkJCQkJCQkJICAgTUNYVF9BTExPQ19OT19PT00pOwogCQkJZWxz ZQotCQkJCXVzYWdlLT5lbnRyaWVzID0gcGFsbG9jX2FycmF5KFdhaXRFdmVudFVzYWdlRW50cnks Ci0JCQkJCQkJCQkJCSAgbmV3bWF4ZW50cmllcyk7Ci0JCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY29udGV4dCk7CisJCQkJbmV3ZW50cmllcyA9IE1lbW9yeUNvbnRleHRBbGxvY0V4dGVuZGVk KHVzYWdlLT5tZW1jb250ZXh0LAorCQkJCQkJCQkJCQkJCQllbnRyaWVzX3NpemUsCisJCQkJCQkJ CQkJCQkJCU1DWFRfQUxMT0NfTk9fT09NKTsKKwkJCWlmIChuZXdlbnRyaWVzID09IE5VTEwpCisJ CQl7CisJCQkJV2FpdEV2ZW50VXNhZ2VBZGRPdmVyZmxvdyh1c2FnZSwgY2FsbHMsIGVsYXBzZWQp OworCQkJCXJldHVybjsKKwkJCX0KIAorCQkJdXNhZ2UtPmVudHJpZXMgPSBuZXdlbnRyaWVzOwog CQkJdXNhZ2UtPm1heGVudHJpZXMgPSBuZXdtYXhlbnRyaWVzOwogCQl9CiAKLQkJZW50cnkgPSAm dXNhZ2UtPmVudHJpZXNbdXNhZ2UtPm5lbnRyaWVzKytdOworCQlpZiAoaWR4IDwgdXNhZ2UtPm5l bnRyaWVzKQorCQkJbWVtbW92ZSgmdXNhZ2UtPmVudHJpZXNbaWR4ICsgMV0sICZ1c2FnZS0+ZW50 cmllc1tpZHhdLAorCQkJCQlzaXplb2YoV2FpdEV2ZW50VXNhZ2VFbnRyeSkgKiAodXNhZ2UtPm5l bnRyaWVzIC0gaWR4KSk7CisKKwkJZW50cnkgPSAmdXNhZ2UtPmVudHJpZXNbaWR4XTsKKwkJdXNh Z2UtPm5lbnRyaWVzKys7CiAJCWVudHJ5LT53YWl0X2V2ZW50X2luZm8gPSB3YWl0X2V2ZW50X2lu Zm87CiAJCWVudHJ5LT5jYWxscyA9IDA7CiAJCUlOU1RSX1RJTUVfU0VUX1pFUk8oZW50cnktPnRp bWUpOwogCX0KKwllbHNlCisJCWVudHJ5ID0gJnVzYWdlLT5lbnRyaWVzW2lkeF07CiAKIAllbnRy eS0+Y2FsbHMgKz0gY2FsbHM7CiAJSU5TVFJfVElNRV9BREQoZW50cnktPnRpbWUsICplbGFwc2Vk KTsKIH0KIAorc3RhdGljIHZvaWQKK1dhaXRFdmVudFVzYWdlQWRkT3ZlcmZsb3coV2FpdEV2ZW50 VXNhZ2UgKnVzYWdlLCB1aW50NjQgY2FsbHMsCisJCQkJCQkgIGNvbnN0IGluc3RyX3RpbWUgKmVs YXBzZWQpCit7CisJdXNhZ2UtPm92ZXJmbG93ZWRfY2FsbHMgKz0gY2FsbHM7CisJSU5TVFJfVElN RV9BREQodXNhZ2UtPm92ZXJmbG93ZWRfdGltZSwgKmVsYXBzZWQpOworfQorCiAvKiAtLS0tLS0t LS0tCiAgKiBwZ3N0YXRfZ2V0X3dhaXRfZXZlbnRfdHlwZSgpIC0KICAqCmRpZmYgLS1naXQgYS9z cmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKaW5kZXggZGU1NDdhOGNiMzcuLjMwZGU4ZTk0NWU5IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5p bi5jCkBAIC00NTM5LDkgKzQ1MzksOSBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVy bl9pZCwKIAkJICovCiAJCWlmIChlbmRzX3dpdGgocHJldl93ZCwgJygnKSB8fCBlbmRzX3dpdGgo cHJldl93ZCwgJywnKSkKIAkJCUNPTVBMRVRFX1dJVEgoIkFOQUxZWkUiLCAiVkVSQk9TRSIsICJD T1NUUyIsICJTRVRUSU5HUyIsICJHRU5FUklDX1BMQU4iLAotCQkJCQkJICAiQlVGRkVSUyIsICJT RVJJQUxJWkUiLCAiV0FMIiwgIlRJTUlORyIsICJTVU1NQVJZIiwKKwkJCQkJCSAgIkJVRkZFUlMi LCAiU0VSSUFMSVpFIiwgIldBTCIsICJXQUlUUyIsICJUSU1JTkciLCAiU1VNTUFSWSIsCiAJCQkJ CQkgICJNRU1PUlkiLCAiSU8iLCAiRk9STUFUIik7Ci0JCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJB TkFMWVpFfFZFUkJPU0V8Q09TVFN8U0VUVElOR1N8R0VORVJJQ19QTEFOfEJVRkZFUlN8V0FMfFRJ TUlOR3xTVU1NQVJZfE1FTU9SWXxJTyIpKQorCQllbHNlIGlmIChUYWlsTWF0Y2hlcygiQU5BTFla RXxWRVJCT1NFfENPU1RTfFNFVFRJTkdTfEdFTkVSSUNfUExBTnxCVUZGRVJTfFdBTHxXQUlUU3xU SU1JTkd8U1VNTUFSWXxNRU1PUll8SU8iKSkKIAkJCUNPTVBMRVRFX1dJVEgoIk9OIiwgIk9GRiIp OwogCQllbHNlIGlmIChUYWlsTWF0Y2hlcygiU0VSSUFMSVpFIikpCiAJCQlDT01QTEVURV9XSVRI KCJURVhUIiwgIk5PTkUiLCAiQklOQVJZIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKaW5kZXggNjQ0 MTEyODg0MDMuLmYxNDk0NWNkYjE2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0 X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0yNSw5ICsy NSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnRVc2FnZUVudHJ5CiB0eXBlZGVmIHN0cnVj dCBXYWl0RXZlbnRVc2FnZQogewogCU1lbW9yeUNvbnRleHQgbWVtY29udGV4dDsKKwlzdHJ1Y3Qg V2FpdEV2ZW50VXNhZ2UgKmFjdGl2ZV9wYXJlbnQ7IC8qIGFjdGl2ZSBwbGFuLW5vZGUgc3RhY2sg bGluayAqLworCXN0cnVjdCBXYWl0RXZlbnRVc2FnZSAqcXVlcnlfcGFyZW50OwkvKiBhY3RpdmUg cXVlcnktbGV2ZWwgc3RhY2sgbGluayAqLworCXN0cnVjdCBXYWl0RXZlbnRVc2FnZSAqc2F2ZWRf bm9kZV91c2FnZTsJLyogbm9kZSBzdGFjayBhdCBxdWVyeSBzdGFydCAqLwogCWludAkJCW5lbnRy aWVzOwogCWludAkJCW1heGVudHJpZXM7CiAJV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cmllczsK Kwl1aW50NjQJCW92ZXJmbG93ZWRfY2FsbHM7CisJaW5zdHJfdGltZQlvdmVyZmxvd2VkX3RpbWU7 CiB9IFdhaXRFdmVudFVzYWdlOwogCiBleHRlcm4gY29uc3QgY2hhciAqcGdzdGF0X2dldF93YWl0 X2V2ZW50KHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9leHBsYWluLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhw bGFpbi5vdXQKaW5kZXggYzA4NmZhNDhkODAuLjI3NTI5MmQ2MTcyIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvZXhwbGFpbi5vdXQKQEAgLTQ3LDYgKzQ3LDIxIEBAIGJlZ2luCiAgICAgcmV0dXJu IGRhdGE6Ompzb25iOwogZW5kOwogJCQ7CistLSBGb3IgdGVzdHMgdGhhdCBhc3NlcnQgbnVtZXJp YyBFWFBMQUlOIGZpZWxkcywgcHJlc2VydmUgdW5maWx0ZXJlZCBKU09OLgorY3JlYXRlIGZ1bmN0 aW9uIGV4cGxhaW5fdG9fanNvbih0ZXh0KSByZXR1cm5zIGpzb25iCitsYW5ndWFnZSBwbHBnc3Fs IGFzCiskJAorZGVjbGFyZQorICAgIGRhdGEgdGV4dCA6PSAnJzsKKyAgICBsbiB0ZXh0OworYmVn aW4KKyAgICBmb3IgbG4gaW4gZXhlY3V0ZSAkMQorICAgIGxvb3AKKyAgICAgICAgZGF0YSA6PSBk YXRhIHx8IGxuOworICAgIGVuZCBsb29wOworICAgIHJldHVybiBkYXRhOjpqc29uYjsKK2VuZDsK KyQkOwogLS0gRGlzYWJsZSBKSVQsIG9yIHdlJ2xsIGdldCBkaWZmZXJlbnQgb3V0cHV0IG9uIG1h Y2hpbmVzIHdoZXJlIHRoYXQncyBiZWVuCiAtLSBmb3JjZWQgb24KIHNldCBqaXQgPSBvZmY7CkBA IC0xMDYsMTEgKzEyMSwxMSBAQCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5 emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgbwogIFJlc3VsdCAoYWN0 dWFsIHJvd3M9Ti5OIGxvb3BzPU4pCiAgICBXYWl0IEV2ZW50czoKICAgICAgVGltZW91dDpQZ1Ns ZWVwIGNhbGxzPU4gdGltZT1OLk4gbXMKLSBXYWl0IEV2ZW50czoKKyBTdGF0ZW1lbnQgV2FpdCBF dmVudHM6CiAgICBUaW1lb3V0OlBnU2xlZXAgY2FsbHM9TiB0aW1lPU4uTiBtcwogKDUgcm93cykK IAotc2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRz LCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0 IGpzb24pIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxXYWl0IEV2ZW50cywwfSc7Citz ZWxlY3QgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNv c3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNv bikgc2VsZWN0IHBnX3NsZWVwKDAuMDEpJykgIz4gJ3swLFN0YXRlbWVudCBXYWl0IEV2ZW50cyww fSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgeyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1NsZWVwIiwgIldh aXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0In0KQEAgLTEyMiw2ICsxMzcsNTIgQEAgc2VsZWN0IGV4 cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYs IHN1bW1hcnkgb2ZmLAogIHsiVGltZSI6IDAuMCwgIkNhbGxzIjogMCwgIldhaXQgRXZlbnQiOiAi UGdTbGVlcCIsICJXYWl0IEV2ZW50IFR5cGUiOiAiVGltZW91dCJ9CiAoMSByb3cpCiAKK2JlZ2lu OworY3JlYXRlIGZ1bmN0aW9uIHBnX3RlbXAubmVzdGVkX2V4cGxhaW5fd2FpdHMoKSByZXR1cm5z IHZvaWQKKyAgbGFuZ3VhZ2UgcGxwZ3NxbCBhcworJCQKK2JlZ2luCisgIHBlcmZvcm0gZXhwbGFp bl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3Vt bWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBn X3NsZWVwKDAuMDEpJyk7CitlbmQ7CiskJDsKK3NlbGVjdCBleHBsYWluX2ZpbHRlcl90b19qc29u KCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5n IG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKSBzZWxlY3QgcGdfdGVtcC5uZXN0ZWRfZXhw bGFpbl93YWl0cygpJykgIz4gJ3swLFN0YXRlbWVudCBXYWl0IEV2ZW50cywwfSc7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJUaW1lIjog MC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1NsZWVwIiwgIldhaXQgRXZlbnQgVHlw ZSI6ICJUaW1lb3V0In0KKygxIHJvdykKKworc2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24o J2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcg b2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pIHNlbGVjdCBwZ190ZW1wLm5lc3RlZF9leHBs YWluX3dhaXRzKCknKSAjPiAnezAsUGxhbixXYWl0IEV2ZW50cywwfSc7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJUaW1lIjogMC4wLCAi Q2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1NsZWVwIiwgIldhaXQgRXZlbnQgVHlwZSI6ICJU aW1lb3V0In0KKygxIHJvdykKKworcm9sbGJhY2s7CitiZWdpbjsKKy0tIElmIGEgbmVzdGVkIEVY UExBSU4gZXJyb3JzIHdoaWxlIG9uZSBvZiBpdHMgcGxhbiBub2RlcyBpcyBhY3RpdmUsIGVuZGlu ZworLS0gdGhhdCBjb2xsZWN0b3IgbXVzdCByZXN0b3JlIHRoZSBvdXRlciBub2RlIHdhaXQtYXR0 cmlidXRpb24gc3RhY2suICBUaGUKKy0tIHZvbGF0aWxlIGRpdmlzaW9uLWJ5LXplcm8gaGVscGVy IGtlZXBzIHRoZSBlcnJvciBhdCBleGVjdXRpb24gdGltZS4KK2NyZWF0ZSBmdW5jdGlvbiBwZ190 ZW1wLmV4cGxhaW5fd2FpdHNfZGl2emVybygpIHJldHVybnMgaW50CisgIGxhbmd1YWdlIHBscGdz cWwgdm9sYXRpbGUgYXMgJCRiZWdpbiByZXR1cm4gMSAvIDA7IGVuZCQkOworY3JlYXRlIGZ1bmN0 aW9uIHBnX3RlbXAubmVzdGVkX2V4cGxhaW5fd2FpdHNfZXJyb3IoKSByZXR1cm5zIHZvaWQKKyAg bGFuZ3VhZ2UgcGxwZ3NxbCBhcworJCQKK2JlZ2luCisgIGJlZ2luCisgICAgcGVyZm9ybSBleHBs YWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBz dW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKSBzZWxlY3Qg cGdfdGVtcC5leHBsYWluX3dhaXRzX2Rpdnplcm8oKScpOworICBleGNlcHRpb24gd2hlbiBkaXZp c2lvbl9ieV96ZXJvIHRoZW4KKyAgICBudWxsOworICBlbmQ7CisgIHBlcmZvcm0gcGdfc2xlZXAo MC4wMSk7CitlbmQ7CiskJDsKK3NlbGVjdCBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWlu IChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVm ZmVycyBvZmYsIGZvcm1hdCBqc29uKSBzZWxlY3QgcGdfdGVtcC5uZXN0ZWRfZXhwbGFpbl93YWl0 c19lcnJvcigpJykgIz4gJ3swLFBsYW4sV2FpdCBFdmVudHMsMH0nOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgID9jb2x1bW4/ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiVGltZSI6IDAuMCwgIkNh bGxzIjogMCwgIldhaXQgRXZlbnQiOiAiUGdTbGVlcCIsICJXYWl0IEV2ZW50IFR5cGUiOiAiVGlt ZW91dCJ9CisoMSByb3cpCisKK3JvbGxiYWNrOwogYmVnaW47CiBjcmVhdGUgZnVuY3Rpb24gcGdf dGVtcC5wYXJhbGxlbF9wZ19zbGVlcChmbG9hdDgpIHJldHVybnMgdm9pZAogICBsYW5ndWFnZSBp bnRlcm5hbCB2b2xhdGlsZSBwYXJhbGxlbCBzYWZlIGFzICdwZ19zbGVlcCc7CkBAIC0xMzAsNyAr MTkxLDcgQEAgc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAxOwog c2VsZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCiAgIGV4cGxhaW5fZmlsdGVyX3RvX2pzb24o J2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcg b2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZWN0IHBnX3RlbXAucGFyYWxsZWxfcGdfc2xlZXAoMC4wMSkKLSAgICAgICAgICAgICAgICAg ICAgICAgICBmcm9tIHRlbmsxIHdoZXJlIHVuaXF1ZTEgPSAxJykgIz4gJ3swLFdhaXQgRXZlbnRz fScsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0ZW5rMSB3aGVyZSB1bmlxdWUxID0g MScpICM+ICd7MCxTdGF0ZW1lbnQgV2FpdCBFdmVudHN9JywKICAgJyRbKl0gPyAoQC4iV2FpdCBF dmVudCIgPT0gIlBnU2xlZXAiKScKICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkBAIC0x NDksNiArMjEwLDUzIEBAIHNlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAogIHsiVGltZSI6 IDAuMCwgIkNhbGxzIjogMCwgIldhaXQgRXZlbnQiOiAiUGdTbGVlcCIsICJXYWl0IEV2ZW50IFR5 cGUiOiAiVGltZW91dCJ9CiAoMSByb3cpCiAKK3JvbGxiYWNrOworYmVnaW47CistLSBUaGlzIHRl c3QgZGVsaWJlcmF0ZWx5IGNyZWF0ZXMgYSByZXNjYW5uZWQgcGFyYWxsZWwtYXdhcmUgSW5kZXgg U2Nhbi4KKy0tIFRoZSBwbGFubmVyIEdVQ3MgYW5kIHRlbmsxIHBhcmFsbGVsX3dvcmtlcnMgcmVs b3B0aW9uIGFyZSB0ZXN0LW9ubHkKKy0tIHNjYWZmb2xkaW5nIHRvIG1ha2UgdGhlIHBhcmFsbGVs IHJlc2Nhbm5lZCBub2RlIHNoYXBlIGRldGVybWluaXN0aWMuICBUaGUKKy0tIFNUQUJMRSBQQVJB TExFTCBTQUZFIHdyYXBwZXIgYXJvdW5kIHBnX3NsZWVwKCkgY3JlYXRlcyBhIHJ1bnRpbWUga2V5 IHdhaXQKKy0tIHVuZGVyIHRoZSBwYXJhbGxlbC1hd2FyZSBJbmRleCBTY2FuLiAgVGhlIGludmFy aWFudCBjaGVja2VkIGJlbG93IGlzIHRoYXQKKy0tIFBnU2xlZXAgY2FsbHMgYWNjdW11bGF0ZWQg Zm9yIHRoYXQgbm9kZSBjb3ZlciBhbGwgcmVwb3J0ZWQgc2NhbiBsb29wczsgdGhpcworLS0gZmFp bHMgaWYgcGVyLW5vZGUgd29ya2VyIHdhaXQgdXNhZ2UgaXMgcmVwbGFjZWQgb24gcmVsYXVuY2gg aW5zdGVhZCBvZgorLS0gbWVyZ2VkIGFjcm9zcyB3b3JrZXIgcmVwb3J0cy4KK2NyZWF0ZSBmdW5j dGlvbiBwZ190ZW1wLmV4cGxhaW5fd2FpdHNfcGFyYWxsZWxfc2xlZXBfaW50KGludCkgcmV0dXJu cyBpbnQKKyAgbGFuZ3VhZ2UgcGxwZ3NxbCBzdGFibGUgcGFyYWxsZWwgc2FmZSBhcyAkJGJlZ2lu IHBlcmZvcm0gcGdfc2xlZXAoMC4wMDEpOyByZXR1cm4gJDE7IGVuZCQkOworYWx0ZXIgdGFibGUg dGVuazEgc2V0IChwYXJhbGxlbF93b3JrZXJzID0gNCk7CitzZXQgbG9jYWwgcGFyYWxsZWxfc2V0 dXBfY29zdCA9IDA7CitzZXQgbG9jYWwgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbG9j YWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDQ7CitzZXQgbG9jYWwgcGFyYWxs ZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbG9jYWwgbWluX3BhcmFsbGVsX2lu ZGV4X3NjYW5fc2l6ZSA9IDA7CitzZXQgbG9jYWwgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitzZXQg bG9jYWwgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitzZXQgbG9jYWwgZW5hYmxlX21hdGVyaWFs ID0gb2ZmOworc2V0IGxvY2FsIHJhbmRvbV9wYWdlX2Nvc3QgPSAyOword2l0aCBwbGFuX2pzb24g YXMgKAorICBzZWxlY3QgZXhwbGFpbl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywg Y29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBq c29uKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCAqIGZyb20KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZWxlY3QgY291bnQodW5pcXVlMSkgZnJvbSB0ZW5rMQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIGh1bmRyZWQgPiBwZ190ZW1wLmV4cGxhaW5fd2Fp dHNfcGFyYWxsZWxfc2xlZXBfaW50KDEwKSkgc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHJpZ2h0IGpvaW4gKHZhbHVlcyAoMSksKDIpLCgzKSkgdih4KSBvbiB0cnVlJykgIz4gJ3swLFBs YW59JyBhcyBwbGFuCispLAorcGFyYWxsZWxfc2NhbiBhcyAoCisgIHNlbGVjdCBqc29uYl9wYXRo X3F1ZXJ5X2ZpcnN0KHBsYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICckLioq ID8gKEAuIk5vZGUgVHlwZSIgPT0gIkluZGV4IFNjYW4iICYmIEAuIlBhcmFsbGVsIEF3YXJlIiA9 PSB0cnVlKScpIGFzIG5vZGUKKyAgZnJvbSBwbGFuX2pzb24KKyksCitwZ3NsZWVwX3dhaXQgYXMg KAorICBzZWxlY3Qgbm9kZSwKKyAgICAgICAgIGpzb25iX3BhdGhfcXVlcnlfZmlyc3Qobm9kZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyQuIldhaXQgRXZlbnRzIlsqXSA/IChA LiJXYWl0IEV2ZW50IiA9PSAiUGdTbGVlcCIpJykgYXMgd2FpdAorICBmcm9tIHBhcmFsbGVsX3Nj YW4KKykKK3NlbGVjdCAod2FpdC0+PidDYWxscycpOjpudW1lcmljID49IChub2RlLT4+J0FjdHVh bCBMb29wcycpOjpudW1lcmljIGFzICJwYXJhbGxlbCByZXNjYW4gd2FpdHMgYWNjdW11bGF0ZWQi Citmcm9tIHBnc2xlZXBfd2FpdDsKKyBwYXJhbGxlbCByZXNjYW4gd2FpdHMgYWNjdW11bGF0ZWQg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwogcm9s bGJhY2s7CiBiZWdpbjsKIC0tIFRoaXMgdGVzdCBkZWxpYmVyYXRlbHkgY3JlYXRlcyBhIEJpdG1h cCBJbmRleCBTY2FuIHJ1bnRpbWUta2V5IHdhaXQuCkBAIC0xNTcsNiArMjY1LDkgQEAgYmVnaW47 CiAtLSBpbmxpbmluZyBmcm9tIG1vdmluZyBwZ19zbGVlcCgpIG91dCBvZiB0aGUgQml0bWFwIElu ZGV4IFNjYW4gYm91bmRhcnkuCiAtLSBUaGUgcGxhbm5lciBHVUNzIGJlbG93IGFyZSBsaWtld2lz ZSB0ZXN0LW9ubHkgc2NhZmZvbGRpbmcgdG8gbWFrZSB0aGUKIC0tIG5vZGUgc2hhcGUgZGV0ZXJt aW5pc3RpYy4KKy0tIFRoZSB0d28gSlNPTlBhdGggY2hlY2tzIHZlcmlmeSBpbmNsdXNpdmUgcGVy LW5vZGUgYXR0cmlidXRpb246IHRoZSBzYW1lCistLSBydW50aW1lLWtleSB3YWl0IGFwcGVhcnMg b24gdGhlIEJpdG1hcCBJbmRleCBTY2FuIGFuZCBpdHMgQml0bWFwIEhlYXAgU2NhbgorLS0gcGFy ZW50LCB3aGlsZSBxdWVyeS1sZXZlbCB3YWl0IGFjY291bnRpbmcgc3RpbGwgY291bnRzIHRoZSB3 YWl0IG9uY2UuCiBjcmVhdGUgZnVuY3Rpb24gcGdfdGVtcC5leHBsYWluX3dhaXRzX3NsZWVwX2lu dChpbnQpIHJldHVybnMgaW50CiAgIGxhbmd1YWdlIHBscGdzcWwgc3RhYmxlIGFzICQkYmVnaW4g cGVyZm9ybSBwZ19zbGVlcCgwLjAxKTsgcmV0dXJuICQxOyBlbmQkJDsKIGNyZWF0ZSB0ZW1wIHRh YmxlIGV4cGxhaW5fd2FpdHNfYml0bWFwIChhIGludCk7CkBAIC0xNzYsNiArMjg3LDE3IEBAIHNl bGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAogIHsiVGltZSI6IDAuMCwgIkNhbGxzIjogMCwg IldhaXQgRXZlbnQiOiAiUGdTbGVlcCIsICJXYWl0IEV2ZW50IFR5cGUiOiAiVGltZW91dCJ9CiAo MSByb3cpCiAKK3NlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAorICBleHBsYWluX2ZpbHRl cl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9m ZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKQorICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGVjdCAqIGZyb20gZXhwbGFpbl93YWl0c19iaXRtYXAKKyAgICAgICAgICAg ICAgICAgICAgICAgICB3aGVyZSBhID0gcGdfdGVtcC5leHBsYWluX3dhaXRzX3NsZWVwX2ludCgx KScpICM+ICd7MCxQbGFufScsCisgICckLioqID8gKEAuIk5vZGUgVHlwZSIgPT0gIkJpdG1hcCBI ZWFwIFNjYW4iKS4iV2FpdCBFdmVudHMiWypdID8gKEAuIldhaXQgRXZlbnQiID09ICJQZ1NsZWVw IiknCispOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbmJfcGF0aF9xdWVyeV9m aXJzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHsiVGltZSI6IDAuMCwgIkNhbGxzIjogMCwgIldhaXQgRXZlbnQiOiAiUGdTbGVlcCIs ICJXYWl0IEV2ZW50IFR5cGUiOiAiVGltZW91dCJ9CisoMSByb3cpCisKIHJvbGxiYWNrOwogZXhw bGFpbiAod2FpdHMpIHNlbGVjdCAxOwogRVJST1I6ICBFWFBMQUlOIG9wdGlvbiBXQUlUUyByZXF1 aXJlcyBBTkFMWVpFCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsCmluZGV4IGJkMTk2ZjI0OGRiLi45 ZjUwZWYxODliMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5zcWwKQEAgLTUxLDYgKzUxLDIyIEBA IGJlZ2luCiBlbmQ7CiAkJDsKIAorLS0gRm9yIHRlc3RzIHRoYXQgYXNzZXJ0IG51bWVyaWMgRVhQ TEFJTiBmaWVsZHMsIHByZXNlcnZlIHVuZmlsdGVyZWQgSlNPTi4KK2NyZWF0ZSBmdW5jdGlvbiBl eHBsYWluX3RvX2pzb24odGV4dCkgcmV0dXJucyBqc29uYgorbGFuZ3VhZ2UgcGxwZ3NxbCBhcwor JCQKK2RlY2xhcmUKKyAgICBkYXRhIHRleHQgOj0gJyc7CisgICAgbG4gdGV4dDsKK2JlZ2luCisg ICAgZm9yIGxuIGluIGV4ZWN1dGUgJDEKKyAgICBsb29wCisgICAgICAgIGRhdGEgOj0gZGF0YSB8 fCBsbjsKKyAgICBlbmQgbG9vcDsKKyAgICByZXR1cm4gZGF0YTo6anNvbmI7CitlbmQ7CiskJDsK KwogLS0gRGlzYWJsZSBKSVQsIG9yIHdlJ2xsIGdldCBkaWZmZXJlbnQgb3V0cHV0IG9uIG1hY2hp bmVzIHdoZXJlIHRoYXQncyBiZWVuCiAtLSBmb3JjZWQgb24KIHNldCBqaXQgPSBvZmY7CkBAIC03 MCw5ICs4Niw0MCBAQCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGJ1ZmZlcnMsIGZv cm1hdCB0ZXh0KSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4JwogCiAtLSBXQUlUUyBvcHRpb24K IHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9m Ziwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmKSBzZWxlY3QgcGdfc2xlZXAo MC4wMSknKTsKLXNlbGVjdCBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXpl LCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYs IGZvcm1hdCBqc29uKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKSAjPiAnezAsV2FpdCBFdmVudHMs MH0nOworc2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdh aXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9y bWF0IGpzb24pIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxTdGF0ZW1lbnQgV2FpdCBF dmVudHMsMH0nOwogc2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5 emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9m ZiwgZm9ybWF0IGpzb24pIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxQbGFuLFdhaXQg RXZlbnRzLDB9JzsKIGJlZ2luOworY3JlYXRlIGZ1bmN0aW9uIHBnX3RlbXAubmVzdGVkX2V4cGxh aW5fd2FpdHMoKSByZXR1cm5zIHZvaWQKKyAgbGFuZ3VhZ2UgcGxwZ3NxbCBhcworJCQKK2JlZ2lu CisgIHBlcmZvcm0gZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2Fp dHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3Jt YXQganNvbikgc2VsZWN0IHBnX3NsZWVwKDAuMDEpJyk7CitlbmQ7CiskJDsKK3NlbGVjdCBleHBs YWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBz dW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKSBzZWxlY3Qg cGdfdGVtcC5uZXN0ZWRfZXhwbGFpbl93YWl0cygpJykgIz4gJ3swLFN0YXRlbWVudCBXYWl0IEV2 ZW50cywwfSc7CitzZWxlY3QgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6 ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2Zm LCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3RlbXAubmVzdGVkX2V4cGxhaW5fd2FpdHMoKScpICM+ ICd7MCxQbGFuLFdhaXQgRXZlbnRzLDB9JzsKK3JvbGxiYWNrOworYmVnaW47CistLSBJZiBhIG5l c3RlZCBFWFBMQUlOIGVycm9ycyB3aGlsZSBvbmUgb2YgaXRzIHBsYW4gbm9kZXMgaXMgYWN0aXZl LCBlbmRpbmcKKy0tIHRoYXQgY29sbGVjdG9yIG11c3QgcmVzdG9yZSB0aGUgb3V0ZXIgbm9kZSB3 YWl0LWF0dHJpYnV0aW9uIHN0YWNrLiAgVGhlCistLSB2b2xhdGlsZSBkaXZpc2lvbi1ieS16ZXJv IGhlbHBlciBrZWVwcyB0aGUgZXJyb3IgYXQgZXhlY3V0aW9uIHRpbWUuCitjcmVhdGUgZnVuY3Rp b24gcGdfdGVtcC5leHBsYWluX3dhaXRzX2Rpdnplcm8oKSByZXR1cm5zIGludAorICBsYW5ndWFn ZSBwbHBnc3FsIHZvbGF0aWxlIGFzICQkYmVnaW4gcmV0dXJuIDEgLyAwOyBlbmQkJDsKK2NyZWF0 ZSBmdW5jdGlvbiBwZ190ZW1wLm5lc3RlZF9leHBsYWluX3dhaXRzX2Vycm9yKCkgcmV0dXJucyB2 b2lkCisgIGxhbmd1YWdlIHBscGdzcWwgYXMKKyQkCitiZWdpbgorICBiZWdpbgorICAgIHBlcmZv cm0gZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3Rz IG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikg c2VsZWN0IHBnX3RlbXAuZXhwbGFpbl93YWl0c19kaXZ6ZXJvKCknKTsKKyAgZXhjZXB0aW9uIHdo ZW4gZGl2aXNpb25fYnlfemVybyB0aGVuCisgICAgbnVsbDsKKyAgZW5kOworICBwZXJmb3JtIHBn X3NsZWVwKDAuMDEpOworZW5kOworJCQ7CitzZWxlY3QgZXhwbGFpbl9maWx0ZXJfdG9fanNvbign ZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBv ZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3RlbXAubmVzdGVkX2V4cGxh aW5fd2FpdHNfZXJyb3IoKScpICM+ICd7MCxQbGFuLFdhaXQgRXZlbnRzLDB9JzsKK3JvbGxiYWNr OworYmVnaW47CiBjcmVhdGUgZnVuY3Rpb24gcGdfdGVtcC5wYXJhbGxlbF9wZ19zbGVlcChmbG9h dDgpIHJldHVybnMgdm9pZAogICBsYW5ndWFnZSBpbnRlcm5hbCB2b2xhdGlsZSBwYXJhbGxlbCBz YWZlIGFzICdwZ19zbGVlcCc7CiBzZXQgbG9jYWwgZGVidWdfcGFyYWxsZWxfcXVlcnkgPSBvbjsK QEAgLTgwLDcgKzEyNyw3IEBAIHNldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyID0gMTsKIHNlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAogICBleHBsYWluX2ZpbHRl cl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9m ZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKQogICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGVjdCBwZ190ZW1wLnBhcmFsbGVsX3BnX3NsZWVwKDAuMDEpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgZnJvbSB0ZW5rMSB3aGVyZSB1bmlxdWUxID0gMScpICM+ICd7MCxX YWl0IEV2ZW50c30nLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGVuazEgd2hlcmUg dW5pcXVlMSA9IDEnKSAjPiAnezAsU3RhdGVtZW50IFdhaXQgRXZlbnRzfScsCiAgICckWypdID8g KEAuIldhaXQgRXZlbnQiID09ICJQZ1NsZWVwIiknCiApOwogc2VsZWN0IGpzb25iX3BhdGhfcXVl cnlfZmlyc3QoCkBAIC05MSwxMiArMTM4LDU3IEBAIHNlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2Zp cnN0KAogKTsKIHJvbGxiYWNrOwogYmVnaW47CistLSBUaGlzIHRlc3QgZGVsaWJlcmF0ZWx5IGNy ZWF0ZXMgYSByZXNjYW5uZWQgcGFyYWxsZWwtYXdhcmUgSW5kZXggU2Nhbi4KKy0tIFRoZSBwbGFu bmVyIEdVQ3MgYW5kIHRlbmsxIHBhcmFsbGVsX3dvcmtlcnMgcmVsb3B0aW9uIGFyZSB0ZXN0LW9u bHkKKy0tIHNjYWZmb2xkaW5nIHRvIG1ha2UgdGhlIHBhcmFsbGVsIHJlc2Nhbm5lZCBub2RlIHNo YXBlIGRldGVybWluaXN0aWMuICBUaGUKKy0tIFNUQUJMRSBQQVJBTExFTCBTQUZFIHdyYXBwZXIg YXJvdW5kIHBnX3NsZWVwKCkgY3JlYXRlcyBhIHJ1bnRpbWUga2V5IHdhaXQKKy0tIHVuZGVyIHRo ZSBwYXJhbGxlbC1hd2FyZSBJbmRleCBTY2FuLiAgVGhlIGludmFyaWFudCBjaGVja2VkIGJlbG93 IGlzIHRoYXQKKy0tIFBnU2xlZXAgY2FsbHMgYWNjdW11bGF0ZWQgZm9yIHRoYXQgbm9kZSBjb3Zl ciBhbGwgcmVwb3J0ZWQgc2NhbiBsb29wczsgdGhpcworLS0gZmFpbHMgaWYgcGVyLW5vZGUgd29y a2VyIHdhaXQgdXNhZ2UgaXMgcmVwbGFjZWQgb24gcmVsYXVuY2ggaW5zdGVhZCBvZgorLS0gbWVy Z2VkIGFjcm9zcyB3b3JrZXIgcmVwb3J0cy4KK2NyZWF0ZSBmdW5jdGlvbiBwZ190ZW1wLmV4cGxh aW5fd2FpdHNfcGFyYWxsZWxfc2xlZXBfaW50KGludCkgcmV0dXJucyBpbnQKKyAgbGFuZ3VhZ2Ug cGxwZ3NxbCBzdGFibGUgcGFyYWxsZWwgc2FmZSBhcyAkJGJlZ2luIHBlcmZvcm0gcGdfc2xlZXAo MC4wMDEpOyByZXR1cm4gJDE7IGVuZCQkOworYWx0ZXIgdGFibGUgdGVuazEgc2V0IChwYXJhbGxl bF93b3JrZXJzID0gNCk7CitzZXQgbG9jYWwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQg bG9jYWwgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dv cmtlcnNfcGVyX2dhdGhlciA9IDQ7CitzZXQgbG9jYWwgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lw YXRpb24gPSBvZmY7CitzZXQgbG9jYWwgbWluX3BhcmFsbGVsX2luZGV4X3NjYW5fc2l6ZSA9IDA7 CitzZXQgbG9jYWwgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitzZXQgbG9jYWwgZW5hYmxlX2JpdG1h cHNjYW4gPSBvZmY7CitzZXQgbG9jYWwgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGxvY2Fs IHJhbmRvbV9wYWdlX2Nvc3QgPSAyOword2l0aCBwbGFuX2pzb24gYXMgKAorICBzZWxlY3QgZXhw bGFpbl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5 IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKQorICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGVjdCAqIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChz ZWxlY3QgY291bnQodW5pcXVlMSkgZnJvbSB0ZW5rMQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdoZXJlIGh1bmRyZWQgPiBwZ190ZW1wLmV4cGxhaW5fd2FpdHNfcGFyYWxsZWxfc2xlZXBf aW50KDEwKSkgc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0IGpvaW4gKHZhbHVl cyAoMSksKDIpLCgzKSkgdih4KSBvbiB0cnVlJykgIz4gJ3swLFBsYW59JyBhcyBwbGFuCispLAor cGFyYWxsZWxfc2NhbiBhcyAoCisgIHNlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHBsYW4s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICckLioqID8gKEAuIk5vZGUgVHlwZSIg PT0gIkluZGV4IFNjYW4iICYmIEAuIlBhcmFsbGVsIEF3YXJlIiA9PSB0cnVlKScpIGFzIG5vZGUK KyAgZnJvbSBwbGFuX2pzb24KKyksCitwZ3NsZWVwX3dhaXQgYXMgKAorICBzZWxlY3Qgbm9kZSwK KyAgICAgICAgIGpzb25iX3BhdGhfcXVlcnlfZmlyc3Qobm9kZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJyQuIldhaXQgRXZlbnRzIlsqXSA/IChALiJXYWl0IEV2ZW50IiA9PSAi UGdTbGVlcCIpJykgYXMgd2FpdAorICBmcm9tIHBhcmFsbGVsX3NjYW4KKykKK3NlbGVjdCAod2Fp dC0+PidDYWxscycpOjpudW1lcmljID49IChub2RlLT4+J0FjdHVhbCBMb29wcycpOjpudW1lcmlj IGFzICJwYXJhbGxlbCByZXNjYW4gd2FpdHMgYWNjdW11bGF0ZWQiCitmcm9tIHBnc2xlZXBfd2Fp dDsKK3JvbGxiYWNrOworYmVnaW47CiAtLSBUaGlzIHRlc3QgZGVsaWJlcmF0ZWx5IGNyZWF0ZXMg YSBCaXRtYXAgSW5kZXggU2NhbiBydW50aW1lLWtleSB3YWl0LgogLS0gVGhlIFNUQUJMRSBQTC9w Z1NRTCB3cmFwcGVyIGlzIHRlc3Qgc2NhZmZvbGRpbmc6IFNUQUJMRSBsZXRzIHRoZQogLS0gZXhw cmVzc2lvbiBiZSB1c2VkIGFzIGFuIGluZGV4IHJ1bnRpbWUga2V5LCB3aGlsZSBQTC9wZ1NRTCBw cmV2ZW50cyBTUUwKIC0tIGlubGluaW5nIGZyb20gbW92aW5nIHBnX3NsZWVwKCkgb3V0IG9mIHRo ZSBCaXRtYXAgSW5kZXggU2NhbiBib3VuZGFyeS4KIC0tIFRoZSBwbGFubmVyIEdVQ3MgYmVsb3cg YXJlIGxpa2V3aXNlIHRlc3Qtb25seSBzY2FmZm9sZGluZyB0byBtYWtlIHRoZQogLS0gbm9kZSBz aGFwZSBkZXRlcm1pbmlzdGljLgorLS0gVGhlIHR3byBKU09OUGF0aCBjaGVja3MgdmVyaWZ5IGlu Y2x1c2l2ZSBwZXItbm9kZSBhdHRyaWJ1dGlvbjogdGhlIHNhbWUKKy0tIHJ1bnRpbWUta2V5IHdh aXQgYXBwZWFycyBvbiB0aGUgQml0bWFwIEluZGV4IFNjYW4gYW5kIGl0cyBCaXRtYXAgSGVhcCBT Y2FuCistLSBwYXJlbnQsIHdoaWxlIHF1ZXJ5LWxldmVsIHdhaXQgYWNjb3VudGluZyBzdGlsbCBj b3VudHMgdGhlIHdhaXQgb25jZS4KIGNyZWF0ZSBmdW5jdGlvbiBwZ190ZW1wLmV4cGxhaW5fd2Fp dHNfc2xlZXBfaW50KGludCkgcmV0dXJucyBpbnQKICAgbGFuZ3VhZ2UgcGxwZ3NxbCBzdGFibGUg YXMgJCRiZWdpbiBwZXJmb3JtIHBnX3NsZWVwKDAuMDEpOyByZXR1cm4gJDE7IGVuZCQkOwogY3Jl YXRlIHRlbXAgdGFibGUgZXhwbGFpbl93YWl0c19iaXRtYXAgKGEgaW50KTsKQEAgLTExMSw2ICsy MDMsMTIgQEAgc2VsZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCiAgICAgICAgICAgICAgICAg ICAgICAgICAgd2hlcmUgYSA9IHBnX3RlbXAuZXhwbGFpbl93YWl0c19zbGVlcF9pbnQoMSknKSAj PiAnezAsUGxhbn0nLAogICAnJC4qKiA/IChALiJOb2RlIFR5cGUiID09ICJCaXRtYXAgSW5kZXgg U2NhbiIpLiJXYWl0IEV2ZW50cyJbKl0gPyAoQC4iV2FpdCBFdmVudCIgPT0gIlBnU2xlZXAiKScK ICk7CitzZWxlY3QganNvbmJfcGF0aF9xdWVyeV9maXJzdCgKKyAgZXhwbGFpbl9maWx0ZXJfdG9f anNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRp bWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikKKyAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxlY3QgKiBmcm9tIGV4cGxhaW5fd2FpdHNfYml0bWFwCisgICAgICAgICAgICAgICAg ICAgICAgICAgd2hlcmUgYSA9IHBnX3RlbXAuZXhwbGFpbl93YWl0c19zbGVlcF9pbnQoMSknKSAj PiAnezAsUGxhbn0nLAorICAnJC4qKiA/IChALiJOb2RlIFR5cGUiID09ICJCaXRtYXAgSGVhcCBT Y2FuIikuIldhaXQgRXZlbnRzIlsqXSA/IChALiJXYWl0IEV2ZW50IiA9PSAiUGdTbGVlcCIpJwor KTsKIHJvbGxiYWNrOwogZXhwbGFpbiAod2FpdHMpIHNlbGVjdCAxOwogCi0tIAoyLjUyLjAKCg== --000000000000e7e4510652deeeb3 Content-Type: application/octet-stream; name="0005-Harden-EXPLAIN-WAITS-accumulator-handling.patch" Content-Disposition: attachment; filename="0005-Harden-EXPLAIN-WAITS-accumulator-handling.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mppej2934 RnJvbSA5MzZjZDU5NDM1NWJiMGM2ZWY4MTUyMDAwNjBkMDExY2I5ZmUwNjZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDU6NDQgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MyA1LzddIEhhcmRlbiBFWFBMQUlOIFdBSVRTIGFjY3VtdWxhdG9yIGhhbmRsaW5nCgotLS0KIGRv Yy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21sICAgICAgICAgICB8ICAxNSArKy0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jICAgICB8ICAxMSArLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYyB8IDEwMCArKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIHNyYy9p bmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICB8ICAxMCArLS0KIDUgZmlsZXMgY2hh bmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgODIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dt bAppbmRleCBkNjk5YjIxNTEyMC4uN2ZhNGIxY2Q5NTUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvZXhwbGFpbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21sCkBA IC0zMjYsMTMgKzMyNiwxNCBAQCBST0xMQkFDSzsKICAgICAgPC9wYXJhPgogCiAgICAgIDxwYXJh PgotICAgICAgSWYgPGNvbW1hbmQ+RVhQTEFJTjwvY29tbWFuZD4gY2Fubm90IGdyb3cgaXRzIHBl ci1xdWVyeSBvciBwZXItbm9kZSB3YWl0Ci0gICAgICBldmVudCBzdG9yYWdlIHdpdGhvdXQgcmlz a2luZyBhbiBlcnJvciB3aGlsZSBhIHdhaXQgaXMgZW5kaW5nLCB3YWl0cwotICAgICAgd2hvc2Ug ZXhhY3QgZXZlbnQgaWRlbnRpZmllciBjb3VsZCBub3QgYmUgc3RvcmVkIGFyZSBhY2N1bXVsYXRl ZCBpbiBhbgotICAgICAgPGxpdGVyYWw+VW5yZWNvcmRlZCBXYWl0IEV2ZW50IENhbGxzPC9saXRl cmFsPiBjb3VudGVyIGFuZAotICAgICAgPGxpdGVyYWw+VW5yZWNvcmRlZCBXYWl0IEV2ZW50IFRp bWU8L2xpdGVyYWw+IHRvdGFsLiAgVGhpcyBpcyBhCi0gICAgICByZXBvcnRpbmcgZmFsbGJhY2sg dW5kZXIgbWVtb3J5IHByZXNzdXJlLCBub3QgYSB3YWl0IGV2ZW50IGVtaXR0ZWQgYnkKLSAgICAg IHNlcnZlciBpbnN0cnVtZW50YXRpb24uCisgICAgICBFYWNoIHN0YXRlbWVudCBhbmQgcGxhbi1u b2RlIGFjY3VtdWxhdG9yIHByZWFsbG9jYXRlcyBzdG9yYWdlIGZvciB1cCB0bworICAgICAgPGxp dGVyYWw+NjQ8L2xpdGVyYWw+IGRpc3RpbmN0IHdhaXQgZXZlbnQgaWRlbnRpZmllcnMuICBUaGlz IGJvdW5kCisgICAgICBhdm9pZHMgbWVtb3J5IGFsbG9jYXRpb24gd2hpbGUgYSB3YWl0IGlzIGVu ZGluZy4gIElmIG1vcmUgZGlzdGluY3Qgd2FpdAorICAgICAgZXZlbnQgaWRlbnRpZmllcnMgYXJl IG9ic2VydmVkLCB3YWl0cyB3aG9zZSBleGFjdCBldmVudCBpZGVudGlmaWVyIGNvdWxkCisgICAg ICBub3QgYmUgc3RvcmVkIGFyZSBhY2N1bXVsYXRlZCBpbiBhbiA8bGl0ZXJhbD5VbnJlY29yZGVk IFdhaXQgRXZlbnQKKyAgICAgIENhbGxzPC9saXRlcmFsPiBjb3VudGVyIGFuZCA8bGl0ZXJhbD5V bnJlY29yZGVkIFdhaXQgRXZlbnQgVGltZTwvbGl0ZXJhbD4KKyAgICAgIHRvdGFsLiAgVGhpcyBp cyBhIHJlcG9ydGluZyBmYWxsYmFjaywgbm90IGEgd2FpdCBldmVudCBlbWl0dGVkIGJ5IHNlcnZl cgorICAgICAgaW5zdHJ1bWVudGF0aW9uLgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMKaW5kZXggOWMxOThmOGU1OTkuLmVlNjlkNzIzY2Q4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbi5jCkBAIC00NTc4LDcgKzQ1NzgsNyBAQCBzaG93X3dhaXRfZXZlbnRfdXNh Z2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqbGFiZWxuYW1lLAogCWVsc2UKIAkJZW50 cmllcyA9IE5VTEw7CiAKLQkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkK KwlpZiAoZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQogCXsKIAkJRXhwbGFpbklu ZGVudFRleHQoZXMpOwogCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICIlczpcbiIsIGxhYmVs bmFtZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IDA4MTg1NWIzZmVkLi5k ZWVlMTQ4MzlmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2Rl LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTQxNywxNSAr NDE3LDggQEAgRXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCQlyZXN1bHQtPmluc3RydW1lbnQgPSBJbnN0ckFsbG9jTm9kZShlc3RhdGUtPmVzX2lu c3RydW1lbnQsCiAJCQkJCQkJCQkJCXJlc3VsdC0+YXN5bmNfY2FwYWJsZSk7CiAJaWYgKGVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudCAmIElOU1RSVU1FTlRfV0FJVFMpCi0JewotCQlNZW1vcnlDb250ZXh0 IG9sZGNvbnRleHQ7Ci0KLQkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3Rh dGUtPmVzX3F1ZXJ5X2N4dCk7Ci0JCXJlc3VsdC0+d2FpdF9ldmVudF91c2FnZSA9IHBhbGxvY19v YmplY3QoV2FpdEV2ZW50VXNhZ2UpOwotCQlwZ3N0YXRfaW5pdF93YWl0X2V2ZW50X3VzYWdlKHJl c3VsdC0+d2FpdF9ldmVudF91c2FnZSwKLQkJCQkJCQkJCSBlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7 Ci0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKLQl9CisJCXJlc3VsdC0+d2Fp dF9ldmVudF91c2FnZSA9CisJCQlwZ3N0YXRfY3JlYXRlX3dhaXRfZXZlbnRfdXNhZ2UoZXN0YXRl LT5lc19xdWVyeV9jeHQpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCA2MWI0MThlOGZkNy4uNjc5ODBjYzBhM2IgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTI3LDcgKzI3LDYgQEAKICNp bmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCi0jaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK ICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKIApAQCAtNDMsMTUgKzQyLDI1IEBAIHN0 YXRpYyB2b2lkIFdhaXRFdmVudFVzYWdlQWRkT3ZlcmZsb3coV2FpdEV2ZW50VXNhZ2UgKnVzYWdl LCB1aW50NjQgY2FsbHMsCiAJCQkJCQkJCQkgIGNvbnN0IGluc3RyX3RpbWUgKmVsYXBzZWQpOwog c3RhdGljIGludAlXYWl0RXZlbnRVc2FnZUZpbmQoY29uc3QgV2FpdEV2ZW50VXNhZ2UgKnVzYWdl LAogCQkJCQkJCSAgIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8sIGJvb2wgKmZvdW5kKTsKK3N0YXRp YyB2b2lkIFdhaXRFdmVudFVzYWdlSW5pdChXYWl0RXZlbnRVc2FnZSAqdXNhZ2UsCisJCQkJCQkJ ICAgTWVtb3J5Q29udGV4dCBtZW1jb250ZXh0KTsKIAogCiBzdGF0aWMgdWludDMyIGxvY2FsX215 X3dhaXRfZXZlbnRfaW5mbzsKIHVpbnQzMgkgICAqbXlfd2FpdF9ldmVudF9pbmZvID0gJmxvY2Fs X215X3dhaXRfZXZlbnRfaW5mbzsKIAotI2RlZmluZSBXQUlUX0VWRU5UX1VTQUdFX0lOSVRJQUxf RVZFTlRTCTE2CisvKgorICogSGFyZGNvZGVkIGxpbWl0OiBlYWNoIEVYUExBSU4gV0FJVFMgc3Rh dGVtZW50LWxldmVsIG9yIHBsYW4tbm9kZSBhY2N1bXVsYXRvcgorICogY2FuIHJlY29yZCB0aGlz IG1hbnkgZGlzdGluY3Qgd2FpdCBldmVudCBpZGVudGl0aWVzIHdpdGhvdXQgYWxsb2NhdGluZyB3 aGlsZQorICogd2FpdHMgYXJlIGVuZGluZy4gIEFkZGl0aW9uYWwgZGlzdGluY3Qgd2FpdCBpZGVu dGl0aWVzIGFyZSBhY2NvdW50ZWQgZm9yIGluCisgKiB0aGUgb3ZlcmZsb3cgYnVja2V0LgorICov CisjZGVmaW5lIFdBSVRfRVZFTlRfVVNBR0VfTUFYX0VWRU5UUwkJNjQKIAotaW50CQkJcGdzdGF0 X3dhaXRfZXZlbnRfdXNhZ2VfZGVwdGggPSAwOworLyogRmFzdC1wYXRoIGZsYWcgZXhwb3J0ZWQg Zm9yIGlubGluZSBwZ3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQvZW5kKCkuICovCitib29sCQlwZ3N0 YXRfd2FpdF9ldmVudF91c2FnZV9hY3RpdmUgPSBmYWxzZTsKIHN0YXRpYyBXYWl0RXZlbnRVc2Fn ZSAqcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2UgPSBOVUxMOworc3RhdGljIGludAlwZ3N0YXRfd2Fp dF9ldmVudF91c2FnZV9kZXB0aCA9IDA7CiAKIC8qCiAgKiBUb3Agb2YgdGhlIGFjdGl2ZSBleGVj dXRvciBub2RlIGFuZCBxdWVyeS1sZXZlbCBzdGFja3MuICBRdWVyeS1sZXZlbCB3YWl0CkBAIC0z NzMsMjYgKzM4MiwzNiBAQCBwZ3N0YXRfcmVzZXRfd2FpdF9ldmVudF9zdG9yYWdlKHZvaWQpCiAJ bXlfd2FpdF9ldmVudF9pbmZvID0gJmxvY2FsX215X3dhaXRfZXZlbnRfaW5mbzsKIH0KIAorLyoK KyAqIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGEgd2FpdCBldmVudCB1c2FnZSBhY2N1bXVsYXRv ci4KKyAqLworV2FpdEV2ZW50VXNhZ2UgKgorcGdzdGF0X2NyZWF0ZV93YWl0X2V2ZW50X3VzYWdl KE1lbW9yeUNvbnRleHQgbWVtY29udGV4dCkKK3sKKwlXYWl0RXZlbnRVc2FnZSAqdXNhZ2U7CisK KwlBc3NlcnQobWVtY29udGV4dCAhPSBOVUxMKTsKKworCXVzYWdlID0gTWVtb3J5Q29udGV4dEFs bG9jKG1lbWNvbnRleHQsIHNpemVvZihXYWl0RXZlbnRVc2FnZSkpOworCVdhaXRFdmVudFVzYWdl SW5pdCh1c2FnZSwgbWVtY29udGV4dCk7CisJcmV0dXJuIHVzYWdlOworfQorCiAvKgogICogSW5p dGlhbGl6ZSBhIHdhaXQgZXZlbnQgdXNhZ2UgYWNjdW11bGF0b3IuCiAgKi8KLXZvaWQKLXBnc3Rh dF9pbml0X3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCBNZW1vcnlDb250 ZXh0IG1lbWNvbnRleHQpCitzdGF0aWMgdm9pZAorV2FpdEV2ZW50VXNhZ2VJbml0KFdhaXRFdmVu dFVzYWdlICp1c2FnZSwgTWVtb3J5Q29udGV4dCBtZW1jb250ZXh0KQogewogCUFzc2VydCh1c2Fn ZSAhPSBOVUxMKTsKIAlBc3NlcnQobWVtY29udGV4dCAhPSBOVUxMKTsKIAogCW1lbXNldCh1c2Fn ZSwgMCwgc2l6ZW9mKFdhaXRFdmVudFVzYWdlKSk7CiAKLQkvKgotCSAqIFdhaXQgZXZlbnRzIG1h eSBlbmQgaW5zaWRlIGNyaXRpY2FsIHNlY3Rpb25zLCBmb3IgZXhhbXBsZSB3aGlsZQotCSAqIHBl cmZvcm1pbmcgc3luY2hyb25vdXMgSS9PLiAgS2VlcCB1c2FnZSBlbnRyaWVzIGluIGEgZGVkaWNh dGVkIGNvbnRleHQKLQkgKiB3aGVyZSB0aGUgbWVtb3J5IG1hbmFnZXIgcGVybWl0cyB0aGF0IGFj Y291bnRpbmcgcGF0aCB0byBncm93LgotCSAqLwotCXVzYWdlLT5tZW1jb250ZXh0ID0gQWxsb2NT ZXRDb250ZXh0Q3JlYXRlKG1lbWNvbnRleHQsCi0JCQkJCQkJCQkJCSAgIldhaXQgRXZlbnQgVXNh Z2UiLAotCQkJCQkJCQkJCQkgIEFMTE9DU0VUX1NNQUxMX1NJWkVTKTsKLQlNZW1vcnlDb250ZXh0 QWxsb3dJbkNyaXRpY2FsU2VjdGlvbih1c2FnZS0+bWVtY29udGV4dCwgdHJ1ZSk7CisJdXNhZ2Ut PmVudHJpZXMgPSBNZW1vcnlDb250ZXh0QWxsb2MobWVtY29udGV4dCwKKwkJCQkJCQkJCQlzaXpl b2YoV2FpdEV2ZW50VXNhZ2VFbnRyeSkgKgorCQkJCQkJCQkJCVdBSVRfRVZFTlRfVVNBR0VfTUFY X0VWRU5UUyk7CisJdXNhZ2UtPm1heGVudHJpZXMgPSBXQUlUX0VWRU5UX1VTQUdFX01BWF9FVkVO VFM7CiB9CiAKIC8qCkBAIC00MjEsNyArNDQwLDcgQEAgcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRf dXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCBNZW1vcnlDb250ZXh0IG1lbWNvbnRleHQpCiAJ CUlOU1RSX1RJTUVfU0VUX1pFUk8ocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfc3RhcnQpOwogCX0K IAotCXBnc3RhdF9pbml0X3dhaXRfZXZlbnRfdXNhZ2UodXNhZ2UsIG1lbWNvbnRleHQpOworCVdh aXRFdmVudFVzYWdlSW5pdCh1c2FnZSwgbWVtY29udGV4dCk7CiAJdXNhZ2UtPnF1ZXJ5X3BhcmVu dCA9IHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlOwogCS8qCiAJICogQSBuZXN0ZWQgRVhQTEFJTiBj YW4gZXJyb3Igb3V0IHdoaWxlIG9uZSBvZiBpdHMgcGxhbiBub2RlcyBpcyBhY3RpdmUsCkBAIC00 MzEsNiArNDUwLDcgQEAgcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNh Z2UgKnVzYWdlLCBNZW1vcnlDb250ZXh0IG1lbWNvbnRleHQpCiAJdXNhZ2UtPnNhdmVkX25vZGVf dXNhZ2UgPSBwZ3N0YXRfd2FpdF9ldmVudF9ub2RlX3VzYWdlOwogCXBnc3RhdF93YWl0X2V2ZW50 X3VzYWdlID0gdXNhZ2U7CiAJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfZGVwdGgrKzsKKwlwZ3N0 YXRfd2FpdF9ldmVudF91c2FnZV9hY3RpdmUgPSB0cnVlOwogfQogCiAvKgpAQCAtNDUzLDYgKzQ3 Myw3IEBAIHBnc3RhdF9lbmRfd2FpdF9ldmVudF91c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2Up CiAKIAlpZiAoLS1wZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9kZXB0aCA9PSAwKQogCXsKKwkJcGdz dGF0X3dhaXRfZXZlbnRfdXNhZ2VfYWN0aXZlID0gZmFsc2U7CiAJCXBnc3RhdF93YWl0X2V2ZW50 X3VzYWdlID0gTlVMTDsKIAkJcGdzdGF0X3dhaXRfZXZlbnRfbm9kZV91c2FnZSA9IE5VTEw7CiAJ CXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX25vZGVfc3RhY2sgPSBOVUxMOwpAQCAtNjAyLDUyICs2 MjMsMTMgQEAgV2FpdEV2ZW50VXNhZ2VBZGQoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCB1aW50MzIg d2FpdF9ldmVudF9pbmZvLAogCXsKIAkJaWYgKHVzYWdlLT5uZW50cmllcyA+PSB1c2FnZS0+bWF4 ZW50cmllcykKIAkJewotCQkJaW50CQkJbmV3bWF4ZW50cmllczsKLQkJCVNpemUJCWVudHJpZXNf c2l6ZTsKLQkJCVdhaXRFdmVudFVzYWdlRW50cnkgKm5ld2VudHJpZXM7Ci0KLQkJCWlmICh1c2Fn ZS0+bWF4ZW50cmllcyA+IDApCi0JCQl7Ci0JCQkJaWYgKChTaXplKSB1c2FnZS0+bWF4ZW50cmll cyA+Ci0JCQkJCU1heEFsbG9jU2l6ZSAvIHNpemVvZihXYWl0RXZlbnRVc2FnZUVudHJ5KSAvIDIp Ci0JCQkJewotCQkJCQlXYWl0RXZlbnRVc2FnZUFkZE92ZXJmbG93KHVzYWdlLCBjYWxscywgZWxh cHNlZCk7Ci0JCQkJCXJldHVybjsKLQkJCQl9Ci0KLQkJCQluZXdtYXhlbnRyaWVzID0gdXNhZ2Ut Pm1heGVudHJpZXMgKiAyOwotCQkJfQotCQkJZWxzZQotCQkJCW5ld21heGVudHJpZXMgPSBXQUlU X0VWRU5UX1VTQUdFX0lOSVRJQUxfRVZFTlRTOwotCi0JCQlpZiAoKFNpemUpIG5ld21heGVudHJp ZXMgPgotCQkJCU1heEFsbG9jU2l6ZSAvIHNpemVvZihXYWl0RXZlbnRVc2FnZUVudHJ5KSkKLQkJ CXsKLQkJCQlXYWl0RXZlbnRVc2FnZUFkZE92ZXJmbG93KHVzYWdlLCBjYWxscywgZWxhcHNlZCk7 Ci0JCQkJcmV0dXJuOwotCQkJfQotCi0JCQllbnRyaWVzX3NpemUgPSBzaXplb2YoV2FpdEV2ZW50 VXNhZ2VFbnRyeSkgKiBuZXdtYXhlbnRyaWVzOwogCQkJLyoKLQkJCSAqIFdhaXQgY29tcGxldGlv biBjYW4gaGFwcGVuIGluIGEgY3JpdGljYWwgc2VjdGlvbiwgc28gZ3Jvd3RoCi0JCQkgKiBtdXN0 IG5vdCB0aHJvdyBFUlJPUi4gIElmIHN0b3JhZ2UgY2Fubm90IGJlIGdyb3duIHdpdGhvdXQKLQkJ CSAqIHRocm93aW5nLCBwcmVzZXJ2ZSB0b3RhbCB3YWl0IHRpbWUgaW4gdGhlIG92ZXJmbG93IGJ1 Y2tldC4KKwkJCSAqIFdhaXQtZW5kIGFjY291bnRpbmcgbXVzdCBub3QgYWxsb2NhdGU6IGl0IGNh biBydW4gaW4gYSBjcml0aWNhbAorCQkJICogc2VjdGlvbi4gIFByZXNlcnZlIHRvdGFsIGNhbGxz L3RpbWUgd2l0aG91dCB0aGUgZXhhY3QgZXZlbnQKKwkJCSAqIGlkZW50aXR5IG9uY2UgcHJlYWxs b2NhdGVkIHN0b3JhZ2UgaXMgZnVsbC4KIAkJCSAqLwotCQkJaWYgKHVzYWdlLT5lbnRyaWVzKQot CQkJCW5ld2VudHJpZXMgPSByZXBhbGxvY19leHRlbmRlZCh1c2FnZS0+ZW50cmllcywgZW50cmll c19zaXplLAotCQkJCQkJCQkJCQkgICBNQ1hUX0FMTE9DX05PX09PTSk7Ci0JCQllbHNlCi0JCQkJ bmV3ZW50cmllcyA9IE1lbW9yeUNvbnRleHRBbGxvY0V4dGVuZGVkKHVzYWdlLT5tZW1jb250ZXh0 LAotCQkJCQkJCQkJCQkJCQllbnRyaWVzX3NpemUsCi0JCQkJCQkJCQkJCQkJCU1DWFRfQUxMT0Nf Tk9fT09NKTsKLQkJCWlmIChuZXdlbnRyaWVzID09IE5VTEwpCi0JCQl7Ci0JCQkJV2FpdEV2ZW50 VXNhZ2VBZGRPdmVyZmxvdyh1c2FnZSwgY2FsbHMsIGVsYXBzZWQpOwotCQkJCXJldHVybjsKLQkJ CX0KLQotCQkJdXNhZ2UtPmVudHJpZXMgPSBuZXdlbnRyaWVzOwotCQkJdXNhZ2UtPm1heGVudHJp ZXMgPSBuZXdtYXhlbnRyaWVzOworCQkJV2FpdEV2ZW50VXNhZ2VBZGRPdmVyZmxvdyh1c2FnZSwg Y2FsbHMsIGVsYXBzZWQpOworCQkJcmV0dXJuOwogCQl9CiAKIAkJaWYgKGlkeCA8IHVzYWdlLT5u ZW50cmllcykKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCBmMTQ5NDVjZGIxNi4uNjc0OTc3OTAz MDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKQEAgLTI0LDcgKzI0LDYgQEAgdHlwZWRlZiBzdHJ1 Y3QgV2FpdEV2ZW50VXNhZ2VFbnRyeQogCiB0eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnRVc2FnZQog ewotCU1lbW9yeUNvbnRleHQgbWVtY29udGV4dDsKIAlzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2UgKmFj dGl2ZV9wYXJlbnQ7IC8qIGFjdGl2ZSBwbGFuLW5vZGUgc3RhY2sgbGluayAqLwogCXN0cnVjdCBX YWl0RXZlbnRVc2FnZSAqcXVlcnlfcGFyZW50OwkvKiBhY3RpdmUgcXVlcnktbGV2ZWwgc3RhY2sg bGluayAqLwogCXN0cnVjdCBXYWl0RXZlbnRVc2FnZSAqc2F2ZWRfbm9kZV91c2FnZTsJLyogbm9k ZSBzdGFjayBhdCBxdWVyeSBzdGFydCAqLwpAQCAtNDEsOCArNDAsNyBAQCBzdGF0aWMgaW5saW5l IHZvaWQgcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwog c3RhdGljIGlubGluZSB2b2lkIHBnc3RhdF9yZXBvcnRfd2FpdF9lbmQodm9pZCk7CiBleHRlcm4g dm9pZCBwZ3N0YXRfc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSh1aW50MzIgKndhaXRfZXZlbnRfaW5m byk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVzZXRfd2FpdF9ldmVudF9zdG9yYWdlKHZvaWQpOwot ZXh0ZXJuIHZvaWQgcGdzdGF0X2luaXRfd2FpdF9ldmVudF91c2FnZShXYWl0RXZlbnRVc2FnZSAq dXNhZ2UsCi0JCQkJCQkJCQkJIE1lbW9yeUNvbnRleHQgbWVtY29udGV4dCk7CitleHRlcm4gV2Fp dEV2ZW50VXNhZ2UgKnBnc3RhdF9jcmVhdGVfd2FpdF9ldmVudF91c2FnZShNZW1vcnlDb250ZXh0 IG1lbWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2Uo V2FpdEV2ZW50VXNhZ2UgKnVzYWdlLAogCQkJCQkJCQkJCSAgTWVtb3J5Q29udGV4dCBtZW1jb250 ZXh0KTsKIGV4dGVybiB2b2lkIHBnc3RhdF9lbmRfd2FpdF9ldmVudF91c2FnZShXYWl0RXZlbnRV c2FnZSAqdXNhZ2UpOwpAQCAtNTUsNyArNTMsNyBAQCBleHRlcm4gdm9pZCBwZ3N0YXRfY291bnRf d2FpdF9ldmVudF9zdGFydCh1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKIGV4dGVybiB2b2lkIHBn c3RhdF9jb3VudF93YWl0X2V2ZW50X2VuZCh2b2lkKTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIHVp bnQzMiAqbXlfd2FpdF9ldmVudF9pbmZvOwotZXh0ZXJuIFBHRExMSU1QT1JUIGludCBwZ3N0YXRf d2FpdF9ldmVudF91c2FnZV9kZXB0aDsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIHBnc3RhdF93 YWl0X2V2ZW50X3VzYWdlX2FjdGl2ZTsKIAogCiAvKgpAQCAtMTAxLDcgKzk5LDcgQEAgZXh0ZXJu IGNoYXIgKipHZXRXYWl0RXZlbnRDdXN0b21OYW1lcyh1aW50MzIgY2xhc3NJZCwgaW50ICpud2Fp dGV2ZW50cyk7CiBzdGF0aWMgaW5saW5lIHZvaWQKIHBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydCh1 aW50MzIgd2FpdF9ldmVudF9pbmZvKQogewotCWlmIChwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9k ZXB0aCA+IDApCisJaWYgKHVubGlrZWx5KHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2FjdGl2ZSkp CiAJCXBnc3RhdF9jb3VudF93YWl0X2V2ZW50X3N0YXJ0KHdhaXRfZXZlbnRfaW5mbyk7CiAKIAkv KgpAQCAtMTIwLDcgKzExOCw3IEBAIHBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydCh1aW50MzIgd2Fp dF9ldmVudF9pbmZvKQogc3RhdGljIGlubGluZSB2b2lkCiBwZ3N0YXRfcmVwb3J0X3dhaXRfZW5k KHZvaWQpCiB7Ci0JaWYgKHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2RlcHRoID4gMCkKKwlpZiAo dW5saWtlbHkocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfYWN0aXZlKSkKIAkJcGdzdGF0X2NvdW50 X3dhaXRfZXZlbnRfZW5kKCk7CiAKIAkvKiBzZWUgcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KCkg Ki8KLS0gCjIuNTIuMAoK --000000000000e7e4510652deeeb3 Content-Type: application/octet-stream; name="0006-Hide-EXPLAIN-WAITS-accumulator-internals.patch" Content-Disposition: attachment; filename="0006-Hide-EXPLAIN-WAITS-accumulator-internals.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mppej2965 RnJvbSAxYjRjODA3ZjM3MTU1MzVmNjRiZDQ5ODM4ZjFjMmUzOWJkMTM2NThmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDY6MTIgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MyA2LzddIEhpZGUgRVhQTEFJTiBXQUlUUyBhY2N1bXVsYXRvciBpbnRlcm5hbHMKCi0tLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgIHwgNDUgKysrKysrKysrKy0tLS0t LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgfCA0NCArKysrKysr KystLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIHwgNjMg KysrKysrKysrKysrKysrKysrKysrKystLQogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5o ICAgICAgICAgIHwgMzIgKysrKysrKystLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0 aW9ucygrKSwgNTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGVlNjlk NzIzY2Q4Li4wZTJlYzUxMGZlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtNTE0LDcgKzUx NCw2IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVz ZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlpbnQJCQllZmxhZ3M7CiAJaW50CQkJaW5zdHJ1 bWVudF9vcHRpb24gPSAwOwogCVNlcmlhbGl6ZU1ldHJpY3Mgc2VyaWFsaXplTWV0cmljcyA9IHsw fTsKLQlXYWl0RXZlbnRVc2FnZSB3YWl0RXZlbnRVc2FnZTsKIAlXYWl0RXZlbnRVc2FnZSAqd2Fp dEV2ZW50VXNhZ2VQdHIgPSBOVUxMOwogCiAJQXNzZXJ0KHBsYW5uZWRzdG10LT5jb21tYW5kVHlw ZSAhPSBDTURfVVRJTElUWSk7CkBAIC01OTMsOSArNTkyLDggQEAgRXhwbGFpbk9uZVBsYW4oUGxh bm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVz LAogCiAJCWlmIChlcy0+d2FpdHMpCiAJCXsKLQkJCXdhaXRFdmVudFVzYWdlUHRyID0gJndhaXRF dmVudFVzYWdlOwotCQkJcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2Uod2FpdEV2ZW50VXNh Z2VQdHIsCi0JCQkJCQkJCQkJICBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKwkJ CXdhaXRFdmVudFVzYWdlUHRyID0KKwkJCQlwZ3N0YXRfYmVnaW5fd2FpdF9ldmVudF91c2FnZShx dWVyeURlc2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKIAkJCXF1ZXJ5RGVzYy0+ZXN0YXRlLT5l c193YWl0X2V2ZW50X3VzYWdlID0gd2FpdEV2ZW50VXNhZ2VQdHI7CiAJCX0KIApAQCAtNDU1OSwy MCArNDU1NywyOSBAQCBzdGF0aWMgdm9pZAogc2hvd193YWl0X2V2ZW50X3VzYWdlKEV4cGxhaW5T dGF0ZSAqZXMsIGNvbnN0IGNoYXIgKmxhYmVsbmFtZSwKIAkJCQkJICBjb25zdCBXYWl0RXZlbnRV c2FnZSAqdXNhZ2UpCiB7CisJY29uc3QgV2FpdEV2ZW50VXNhZ2VFbnRyeSAqdXNhZ2VfZW50cmll czsKIAlXYWl0RXZlbnRVc2FnZUVudHJ5ICplbnRyaWVzOworCXVpbnQ2NAkJb3ZlcmZsb3dlZF9j YWxsczsKKwlpbnN0cl90aW1lCW92ZXJmbG93ZWRfdGltZTsKKwlpbnQJCQluZW50cmllczsKIAog CWlmICh1c2FnZSA9PSBOVUxMKQogCQlyZXR1cm47CiAKLQlpZiAodXNhZ2UtPm5lbnRyaWVzID09 IDAgJiYgdXNhZ2UtPm92ZXJmbG93ZWRfY2FsbHMgPT0gMCkKKwlpZiAocGdzdGF0X3dhaXRfZXZl bnRfdXNhZ2VfaXNfZW1wdHkodXNhZ2UpKQogCQlyZXR1cm47CiAKLQlpZiAodXNhZ2UtPm5lbnRy aWVzID4gMCkKKwluZW50cmllcyA9IHBnc3RhdF9nZXRfd2FpdF9ldmVudF91c2FnZV9lbnRyaWVz KHVzYWdlLCAmdXNhZ2VfZW50cmllcyk7CisJcGdzdGF0X2dldF93YWl0X2V2ZW50X3VzYWdlX292 ZXJmbG93KHVzYWdlLAorCQkJCQkJCQkJCSAmb3ZlcmZsb3dlZF9jYWxscywKKwkJCQkJCQkJCQkg Jm92ZXJmbG93ZWRfdGltZSk7CisKKwlpZiAobmVudHJpZXMgPiAwKQogCXsKLQkJZW50cmllcyA9 IHBhbGxvY19hcnJheShXYWl0RXZlbnRVc2FnZUVudHJ5LCB1c2FnZS0+bmVudHJpZXMpOwotCQlt ZW1jcHkoZW50cmllcywgdXNhZ2UtPmVudHJpZXMsCi0JCQkgICBzaXplb2YoV2FpdEV2ZW50VXNh Z2VFbnRyeSkgKiB1c2FnZS0+bmVudHJpZXMpOwotCQlxc29ydChlbnRyaWVzLCB1c2FnZS0+bmVu dHJpZXMsIHNpemVvZihXYWl0RXZlbnRVc2FnZUVudHJ5KSwKKwkJZW50cmllcyA9IHBhbGxvY19h cnJheShXYWl0RXZlbnRVc2FnZUVudHJ5LCBuZW50cmllcyk7CisJCW1lbWNweShlbnRyaWVzLCB1 c2FnZV9lbnRyaWVzLAorCQkJICAgc2l6ZW9mKFdhaXRFdmVudFVzYWdlRW50cnkpICogbmVudHJp ZXMpOworCQlxc29ydChlbnRyaWVzLCBuZW50cmllcywgc2l6ZW9mKFdhaXRFdmVudFVzYWdlRW50 cnkpLAogCQkJICB3YWl0X2V2ZW50X3VzYWdlX2NtcCk7CiAJfQogCWVsc2UKQEAgLTQ1ODQsNyAr NDU5MSw3IEBAIHNob3dfd2FpdF9ldmVudF91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBj aGFyICpsYWJlbG5hbWUsCiAJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIiVzOlxuIiwgbGFi ZWxuYW1lKTsKIAkJZXMtPmluZGVudCsrOwogCi0JCWZvciAoaW50IGkgPSAwOyBpIDwgdXNhZ2Ut Pm5lbnRyaWVzOyBpKyspCisJCWZvciAoaW50IGkgPSAwOyBpIDwgbmVudHJpZXM7IGkrKykKIAkJ ewogCQkJY29uc3QgY2hhciAqZXZlbnRfdHlwZTsKIAkJCWNvbnN0IGNoYXIgKmV2ZW50X25hbWU7 CkBAIC00NjAwLDI0ICs0NjA3LDI0IEBAIHNob3dfd2FpdF9ldmVudF91c2FnZShFeHBsYWluU3Rh dGUgKmVzLCBjb25zdCBjaGFyICpsYWJlbG5hbWUsCiAJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01J TExJU0VDKGVudHJpZXNbaV0udGltZSkpOwogCQl9CiAKLQkJaWYgKHVzYWdlLT5vdmVyZmxvd2Vk X2NhbGxzID4gMCkKKwkJaWYgKG92ZXJmbG93ZWRfY2FsbHMgPiAwKQogCQl7CiAJCQlFeHBsYWlu SW5kZW50VGV4dChlcyk7CiAJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsCiAJCQkJCQkJICJV bnJlY29yZGVkIFdhaXQgRXZlbnQgQ2FsbHM6IGNhbGxzPSUiIFBSSXU2NCAiIHRpbWU9JTAuM2Yg bXNcbiIsCi0JCQkJCQkJIHVzYWdlLT5vdmVyZmxvd2VkX2NhbGxzLAotCQkJCQkJCSBJTlNUUl9U SU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+b3ZlcmZsb3dlZF90aW1lKSk7CisJCQkJCQkJIG92ZXJm bG93ZWRfY2FsbHMsCisJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKG92ZXJmbG93ZWRf dGltZSkpOwogCQl9CiAKIAkJZXMtPmluZGVudC0tOwogCX0KIAllbHNlCiAJewotCQlpZiAodXNh Z2UtPm5lbnRyaWVzID4gMCkKKwkJaWYgKG5lbnRyaWVzID4gMCkKIAkJewogCQkJRXhwbGFpbk9w ZW5Hcm91cCgiV2FpdC1FdmVudHMiLCBsYWJlbG5hbWUsIGZhbHNlLCBlcyk7CiAKLQkJCWZvciAo aW50IGkgPSAwOyBpIDwgdXNhZ2UtPm5lbnRyaWVzOyBpKyspCisJCQlmb3IgKGludCBpID0gMDsg aSA8IG5lbnRyaWVzOyBpKyspCiAJCQl7CiAJCQkJY29uc3QgY2hhciAqZXZlbnRfdHlwZTsKIAkJ CQljb25zdCBjaGFyICpldmVudF9uYW1lOwpAQCAtNDY0MiwxNiArNDY0OSwxNiBAQCBzaG93X3dh aXRfZXZlbnRfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqbGFiZWxuYW1lLAog CQkJRXhwbGFpbkNsb3NlR3JvdXAoIldhaXQtRXZlbnRzIiwgbGFiZWxuYW1lLCBmYWxzZSwgZXMp OwogCQl9CiAKLQkJaWYgKHVzYWdlLT5vdmVyZmxvd2VkX2NhbGxzID4gMCkKKwkJaWYgKG92ZXJm bG93ZWRfY2FsbHMgPiAwKQogCQl7CiAJCQkvKgogCQkJICogVGhpcyBpcyBub3QgYSB3YWl0IGV2 ZW50IGlkZW50aXR5LCBzbyBrZWVwIGl0IG91dHNpZGUgdGhlCiAJCQkgKiBXYWl0IEV2ZW50cyBh cnJheSBpbiBzdHJ1Y3R1cmVkIG91dHB1dC4KIAkJCSAqLwogCQkJRXhwbGFpblByb3BlcnR5VUlu dGVnZXIoIlVucmVjb3JkZWQgV2FpdCBFdmVudCBDYWxscyIsIE5VTEwsCi0JCQkJCQkJCQl1c2Fn ZS0+b3ZlcmZsb3dlZF9jYWxscywgZXMpOworCQkJCQkJCQkJb3ZlcmZsb3dlZF9jYWxscywgZXMp OwogCQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIlVucmVjb3JkZWQgV2FpdCBFdmVudCBUaW1lIiwg Im1zIiwKLQkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5vdmVyZmxvd2Vk X3RpbWUpLAorCQkJCQkJCQkgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMob3ZlcmZsb3dlZF90aW1l KSwKIAkJCQkJCQkJIDMsIGVzKTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVs LmMKaW5kZXggNTIwYjRiODQ4NGYuLmRjZDA2YzcxOGM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UGFyYWxsZWwuYwpAQCAtMTM1Miw4ICsxMzUyLDkgQEAgRXhlY1BhcmFsbGVsQWNjdW11bGF0ZVdh aXRFdmVudFVzYWdlV29ya2VyKFdhaXRFdmVudFVzYWdlICp1c2FnZSwKIAogCWlmICh3b3JrZXIt Pm92ZXJmbG93ZWRfY2FsbHMgPiAwKQogCXsKLQkJdXNhZ2UtPm92ZXJmbG93ZWRfY2FsbHMgKz0g d29ya2VyLT5vdmVyZmxvd2VkX2NhbGxzOwotCQlJTlNUUl9USU1FX0FERCh1c2FnZS0+b3ZlcmZs b3dlZF90aW1lLCB3b3JrZXItPm92ZXJmbG93ZWRfdGltZSk7CisJCXBnc3RhdF9hY2N1bXVsYXRl X3dhaXRfZXZlbnRfdXNhZ2Vfb3ZlcmZsb3codXNhZ2UsCisJCQkJCQkJCQkJCQkJd29ya2VyLT5v dmVyZmxvd2VkX2NhbGxzLAorCQkJCQkJCQkJCQkJCSZ3b3JrZXItPm92ZXJmbG93ZWRfdGltZSk7 CiAJCXdvcmtlci0+b3ZlcmZsb3dlZF9jYWxscyA9IDA7CiAJCUlOU1RSX1RJTUVfU0VUX1pFUk8o d29ya2VyLT5vdmVyZmxvd2VkX3RpbWUpOwogCX0KQEAgLTEzNzcsMTEgKzEzNzgsMTUgQEAgRXhl Y1BhcmFsbGVsUmVwb3J0V2FpdEV2ZW50VXNhZ2VXb3JrZXIoU2hhcmVkV2FpdEV2ZW50VXNhZ2VX b3JrZXIgKndvcmtlciwKIAkJCQkJCQkJCSAgIGRzYV9hcmVhICphcmVhLAogCQkJCQkJCQkJICAg Y29uc3QgV2FpdEV2ZW50VXNhZ2UgKnVzYWdlKQogeworCWNvbnN0IFdhaXRFdmVudFVzYWdlRW50 cnkgKnVzYWdlX2VudHJpZXM7CiAJV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cmllczsKIAlXYWl0 RXZlbnRVc2FnZUVudHJ5ICpvbGRfZW50cmllcyA9IE5VTEw7CiAJZHNhX3BvaW50ZXIgZW50cmll c19kc2E7CisJdWludDY0CQlvdmVyZmxvd2VkX2NhbGxzOworCWluc3RyX3RpbWUJb3ZlcmZsb3dl ZF90aW1lOwogCVNpemUJCWVudHJpZXNfc2l6ZTsKIAlpbnQJCQlvbGRfbmVudHJpZXMgPSAwOwor CWludAkJCXVzYWdlX25lbnRyaWVzOwogCWludAkJCW5ld19uZW50cmllcyA9IDA7CiAJaW50CQkJ aSA9IDA7CiAJaW50CQkJaiA9IDA7CkBAIC0xMzkwLDEwICsxMzk1LDE1IEBAIEV4ZWNQYXJhbGxl bFJlcG9ydFdhaXRFdmVudFVzYWdlV29ya2VyKFNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2VyICp3 b3JrZXIsCiAJQXNzZXJ0KGFyZWEgIT0gTlVMTCk7CiAJQXNzZXJ0KHVzYWdlICE9IE5VTEwpOwog Ci0Jd29ya2VyLT5vdmVyZmxvd2VkX2NhbGxzICs9IHVzYWdlLT5vdmVyZmxvd2VkX2NhbGxzOwot CUlOU1RSX1RJTUVfQUREKHdvcmtlci0+b3ZlcmZsb3dlZF90aW1lLCB1c2FnZS0+b3ZlcmZsb3dl ZF90aW1lKTsKKwl1c2FnZV9uZW50cmllcyA9CisJCXBnc3RhdF9nZXRfd2FpdF9ldmVudF91c2Fn ZV9lbnRyaWVzKHVzYWdlLCAmdXNhZ2VfZW50cmllcyk7CisJcGdzdGF0X2dldF93YWl0X2V2ZW50 X3VzYWdlX292ZXJmbG93KHVzYWdlLAorCQkJCQkJCQkJCSAmb3ZlcmZsb3dlZF9jYWxscywKKwkJ CQkJCQkJCQkgJm92ZXJmbG93ZWRfdGltZSk7CisJd29ya2VyLT5vdmVyZmxvd2VkX2NhbGxzICs9 IG92ZXJmbG93ZWRfY2FsbHM7CisJSU5TVFJfVElNRV9BREQod29ya2VyLT5vdmVyZmxvd2VkX3Rp bWUsIG92ZXJmbG93ZWRfdGltZSk7CiAKLQlpZiAodXNhZ2UtPm5lbnRyaWVzIDw9IDApCisJaWYg KHVzYWdlX25lbnRyaWVzIDw9IDApCiAJCXJldHVybjsKIAogCWlmIChEc2FQb2ludGVySXNWYWxp ZCh3b3JrZXItPmVudHJpZXMpKQpAQCAtMTQwNCwyNSArMTQxNCwyNSBAQCBFeGVjUGFyYWxsZWxS ZXBvcnRXYWl0RXZlbnRVc2FnZVdvcmtlcihTaGFyZWRXYWl0RXZlbnRVc2FnZVdvcmtlciAqd29y a2VyLAogCX0KIAogCWVudHJpZXNfc2l6ZSA9IG11bF9zaXplKHNpemVvZihXYWl0RXZlbnRVc2Fn ZUVudHJ5KSwKLQkJCQkJCQkoU2l6ZSkgb2xkX25lbnRyaWVzICsgKFNpemUpIHVzYWdlLT5uZW50 cmllcyk7CisJCQkJCQkJKFNpemUpIG9sZF9uZW50cmllcyArIChTaXplKSB1c2FnZV9uZW50cmll cyk7CiAJZW50cmllc19kc2EgPSBkc2FfYWxsb2NhdGUoYXJlYSwgZW50cmllc19zaXplKTsKIAll bnRyaWVzID0gZHNhX2dldF9hZGRyZXNzKGFyZWEsIGVudHJpZXNfZHNhKTsKIAotCXdoaWxlIChp IDwgb2xkX25lbnRyaWVzICYmIGogPCB1c2FnZS0+bmVudHJpZXMpCisJd2hpbGUgKGkgPCBvbGRf bmVudHJpZXMgJiYgaiA8IHVzYWdlX25lbnRyaWVzKQogCXsKIAkJV2FpdEV2ZW50VXNhZ2VFbnRy eSAqZW50cnkgPSAmZW50cmllc1tuZXdfbmVudHJpZXNdOwogCQl1aW50MzIJCW9sZF9pbmZvID0g b2xkX2VudHJpZXNbaV0ud2FpdF9ldmVudF9pbmZvOwotCQl1aW50MzIJCW5ld19pbmZvID0gdXNh Z2UtPmVudHJpZXNbal0ud2FpdF9ldmVudF9pbmZvOworCQl1aW50MzIJCW5ld19pbmZvID0gdXNh Z2VfZW50cmllc1tqXS53YWl0X2V2ZW50X2luZm87CiAKIAkJaWYgKG9sZF9pbmZvIDwgbmV3X2lu Zm8pCiAJCQkqZW50cnkgPSBvbGRfZW50cmllc1tpKytdOwogCQllbHNlIGlmIChvbGRfaW5mbyA+ IG5ld19pbmZvKQotCQkJKmVudHJ5ID0gdXNhZ2UtPmVudHJpZXNbaisrXTsKKwkJCSplbnRyeSA9 IHVzYWdlX2VudHJpZXNbaisrXTsKIAkJZWxzZQogCQl7CiAJCQkqZW50cnkgPSBvbGRfZW50cmll c1tpKytdOwotCQkJZW50cnktPmNhbGxzICs9IHVzYWdlLT5lbnRyaWVzW2pdLmNhbGxzOwotCQkJ SU5TVFJfVElNRV9BREQoZW50cnktPnRpbWUsIHVzYWdlLT5lbnRyaWVzW2pdLnRpbWUpOworCQkJ ZW50cnktPmNhbGxzICs9IHVzYWdlX2VudHJpZXNbal0uY2FsbHM7CisJCQlJTlNUUl9USU1FX0FE RChlbnRyeS0+dGltZSwgdXNhZ2VfZW50cmllc1tqXS50aW1lKTsKIAkJCWorKzsKIAkJfQogCkBA IC0xNDMxLDggKzE0NDEsOCBAQCBFeGVjUGFyYWxsZWxSZXBvcnRXYWl0RXZlbnRVc2FnZVdvcmtl cihTaGFyZWRXYWl0RXZlbnRVc2FnZVdvcmtlciAqd29ya2VyLAogCiAJd2hpbGUgKGkgPCBvbGRf bmVudHJpZXMpCiAJCWVudHJpZXNbbmV3X25lbnRyaWVzKytdID0gb2xkX2VudHJpZXNbaSsrXTsK LQl3aGlsZSAoaiA8IHVzYWdlLT5uZW50cmllcykKLQkJZW50cmllc1tuZXdfbmVudHJpZXMrK10g PSB1c2FnZS0+ZW50cmllc1tqKytdOworCXdoaWxlIChqIDwgdXNhZ2VfbmVudHJpZXMpCisJCWVu dHJpZXNbbmV3X25lbnRyaWVzKytdID0gdXNhZ2VfZW50cmllc1tqKytdOwogCiAJaWYgKERzYVBv aW50ZXJJc1ZhbGlkKHdvcmtlci0+ZW50cmllcykpCiAJCWRzYV9mcmVlKGFyZWEsIHdvcmtlci0+ ZW50cmllcyk7CkBAIC0xNzgxLDcgKzE3OTEsNiBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2Vn bWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJUXVlcnlEZXNjICAqcXVlcnlEZXNjOwogCVNoYXJl ZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50YXRpb247CiAJU2hhcmVkSml0SW5z dHJ1bWVudGF0aW9uICpqaXRfaW5zdHJ1bWVudGF0aW9uOwotCVdhaXRFdmVudFVzYWdlIHdhaXRF dmVudFVzYWdlOwogCVdhaXRFdmVudFVzYWdlICp3YWl0RXZlbnRVc2FnZVB0ciA9IE5VTEw7CiAJ aW50CQkJaW5zdHJ1bWVudF9vcHRpb25zID0gMDsKIAl2b2lkCSAgICphcmVhX3NwYWNlOwpAQCAt MTg0MSwxMSArMTg1MCw4IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYykKIAlJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOwogCiAJaWYgKHdhaXRfZXZl bnRfdXNhZ2UgIT0gTlVMTCkKLQl7Ci0JCXdhaXRFdmVudFVzYWdlUHRyID0gJndhaXRFdmVudFVz YWdlOwotCQlwZ3N0YXRfYmVnaW5fd2FpdF9ldmVudF91c2FnZSh3YWl0RXZlbnRVc2FnZVB0ciwK LQkJCQkJCQkJCSAgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7Ci0JfQorCQl3YWl0 RXZlbnRVc2FnZVB0ciA9CisJCQlwZ3N0YXRfYmVnaW5fd2FpdF9ldmVudF91c2FnZShxdWVyeURl c2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKIAogCS8qCiAJICogUnVuIHRoZSBwbGFuLiAgSWYg d2Ugc3BlY2lmaWVkIGEgdHVwbGUgYm91bmQsIGJlIGNhcmVmdWwgbm90IHRvIGRlbWFuZApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDY3OTgwY2MwYTNiLi45NzE5 ZTM4NzI5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVu dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMzYs NiArMzYsMTcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfd2FpdF9jbGllbnQoV2Fp dEV2ZW50Q2xpZW50IHcpOwogc3RhdGljIGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfd2FpdF9pcGMo V2FpdEV2ZW50SVBDIHcpOwogc3RhdGljIGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfd2FpdF90aW1l b3V0KFdhaXRFdmVudFRpbWVvdXQgdyk7CiBzdGF0aWMgY29uc3QgY2hhciAqcGdzdGF0X2dldF93 YWl0X2lvKFdhaXRFdmVudElPIHcpOworc3RydWN0IFdhaXRFdmVudFVzYWdlCit7CisJc3RydWN0 IFdhaXRFdmVudFVzYWdlICphY3RpdmVfcGFyZW50OyAvKiBhY3RpdmUgcGxhbi1ub2RlIHN0YWNr IGxpbmsgKi8KKwlzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2UgKnF1ZXJ5X3BhcmVudDsJLyogYWN0aXZl IHF1ZXJ5LWxldmVsIHN0YWNrIGxpbmsgKi8KKwlzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2UgKnNhdmVk X25vZGVfdXNhZ2U7CS8qIG5vZGUgc3RhY2sgYXQgcXVlcnkgc3RhcnQgKi8KKwlpbnQJCQluZW50 cmllczsKKwlpbnQJCQltYXhlbnRyaWVzOworCVdhaXRFdmVudFVzYWdlRW50cnkgKmVudHJpZXM7 CisJdWludDY0CQlvdmVyZmxvd2VkX2NhbGxzOworCWluc3RyX3RpbWUJb3ZlcmZsb3dlZF90aW1l OworfTsKIHN0YXRpYyB2b2lkIFdhaXRFdmVudFVzYWdlQWRkKFdhaXRFdmVudFVzYWdlICp1c2Fn ZSwgdWludDMyIHdhaXRfZXZlbnRfaW5mbywKIAkJCQkJCQkgIHVpbnQ2NCBjYWxscywgY29uc3Qg aW5zdHJfdGltZSAqZWxhcHNlZCk7CiBzdGF0aWMgdm9pZCBXYWl0RXZlbnRVc2FnZUFkZE92ZXJm bG93KFdhaXRFdmVudFVzYWdlICp1c2FnZSwgdWludDY0IGNhbGxzLApAQCAtNDIyLDEyICs0MzMs MTIgQEAgV2FpdEV2ZW50VXNhZ2VJbml0KFdhaXRFdmVudFVzYWdlICp1c2FnZSwgTWVtb3J5Q29u dGV4dCBtZW1jb250ZXh0KQogICogbG9jYWwgbWVtb3J5LiAgTmVzdGVkIHRvcC1sZXZlbCBjb2xs ZWN0b3JzIGFyZSBrZXB0IGluIGEgcXVlcnktbGV2ZWwgc3RhY2s7CiAgKiBhIHdhaXQgaXMgY291 bnRlZCBvbmNlIGluIGVhY2ggYWN0aXZlIGNvbGxlY3Rvci4KICAqLwotdm9pZAotcGdzdGF0X2Jl Z2luX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCBNZW1vcnlDb250ZXh0 IG1lbWNvbnRleHQpCitXYWl0RXZlbnRVc2FnZSAqCitwZ3N0YXRfYmVnaW5fd2FpdF9ldmVudF91 c2FnZShNZW1vcnlDb250ZXh0IG1lbWNvbnRleHQpCiB7CisJV2FpdEV2ZW50VXNhZ2UgKnVzYWdl OwogCWJvb2wJCWZpcnN0OwogCi0JQXNzZXJ0KHVzYWdlICE9IE5VTEwpOwogCUFzc2VydChtZW1j b250ZXh0ICE9IE5VTEwpOwogCiAJZmlyc3QgPSBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9kZXB0 aCA9PSAwOwpAQCAtNDQwLDcgKzQ1MSw3IEBAIHBnc3RhdF9iZWdpbl93YWl0X2V2ZW50X3VzYWdl KFdhaXRFdmVudFVzYWdlICp1c2FnZSwgTWVtb3J5Q29udGV4dCBtZW1jb250ZXh0KQogCQlJTlNU Ul9USU1FX1NFVF9aRVJPKHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX3N0YXJ0KTsKIAl9CiAKLQlX YWl0RXZlbnRVc2FnZUluaXQodXNhZ2UsIG1lbWNvbnRleHQpOworCXVzYWdlID0gcGdzdGF0X2Ny ZWF0ZV93YWl0X2V2ZW50X3VzYWdlKG1lbWNvbnRleHQpOwogCXVzYWdlLT5xdWVyeV9wYXJlbnQg PSBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZTsKIAkvKgogCSAqIEEgbmVzdGVkIEVYUExBSU4gY2Fu IGVycm9yIG91dCB3aGlsZSBvbmUgb2YgaXRzIHBsYW4gbm9kZXMgaXMgYWN0aXZlLApAQCAtNDUx LDYgKzQ2Miw3IEBAIHBnc3RhdF9iZWdpbl93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVzYWdl ICp1c2FnZSwgTWVtb3J5Q29udGV4dCBtZW1jb250ZXh0KQogCXBnc3RhdF93YWl0X2V2ZW50X3Vz YWdlID0gdXNhZ2U7CiAJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfZGVwdGgrKzsKIAlwZ3N0YXRf d2FpdF9ldmVudF91c2FnZV9hY3RpdmUgPSB0cnVlOworCXJldHVybiB1c2FnZTsKIH0KIAogLyoK QEAgLTU3OSw2ICs1OTEsNDkgQEAgcGdzdGF0X2FjY3VtdWxhdGVfd2FpdF9ldmVudF91c2FnZShX YWl0RXZlbnRVc2FnZSAqdXNhZ2UsCiAJCQkJCQkgICZlbnRyaWVzW2ldLnRpbWUpOwogfQogCit2 b2lkCitwZ3N0YXRfYWNjdW11bGF0ZV93YWl0X2V2ZW50X3VzYWdlX292ZXJmbG93KFdhaXRFdmVu dFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJCQkJdWludDY0IGNhbGxzLAorCQkJCQkJCQkJCQljb25z dCBpbnN0cl90aW1lICplbGFwc2VkKQoreworCUFzc2VydCh1c2FnZSAhPSBOVUxMKTsKKwlBc3Nl cnQoZWxhcHNlZCAhPSBOVUxMKTsKKworCVdhaXRFdmVudFVzYWdlQWRkT3ZlcmZsb3codXNhZ2Us IGNhbGxzLCBlbGFwc2VkKTsKK30KKworYm9vbAorcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfaXNf ZW1wdHkoY29uc3QgV2FpdEV2ZW50VXNhZ2UgKnVzYWdlKQoreworCUFzc2VydCh1c2FnZSAhPSBO VUxMKTsKKworCXJldHVybiB1c2FnZS0+bmVudHJpZXMgPT0gMCAmJiB1c2FnZS0+b3ZlcmZsb3dl ZF9jYWxscyA9PSAwOworfQorCitpbnQKK3Bnc3RhdF9nZXRfd2FpdF9ldmVudF91c2FnZV9lbnRy aWVzKGNvbnN0IFdhaXRFdmVudFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJCWNvbnN0IFdhaXRFdmVu dFVzYWdlRW50cnkgKiplbnRyaWVzKQoreworCUFzc2VydCh1c2FnZSAhPSBOVUxMKTsKKwlBc3Nl cnQoZW50cmllcyAhPSBOVUxMKTsKKworCSplbnRyaWVzID0gdXNhZ2UtPmVudHJpZXM7CisJcmV0 dXJuIHVzYWdlLT5uZW50cmllczsKK30KKwordm9pZAorcGdzdGF0X2dldF93YWl0X2V2ZW50X3Vz YWdlX292ZXJmbG93KGNvbnN0IFdhaXRFdmVudFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJCSB1aW50 NjQgKmNhbGxzLAorCQkJCQkJCQkJIGluc3RyX3RpbWUgKmVsYXBzZWQpCit7CisJQXNzZXJ0KHVz YWdlICE9IE5VTEwpOworCUFzc2VydChjYWxscyAhPSBOVUxMKTsKKwlBc3NlcnQoZWxhcHNlZCAh PSBOVUxMKTsKKworCSpjYWxscyA9IHVzYWdlLT5vdmVyZmxvd2VkX2NhbGxzOworCSplbGFwc2Vk ID0gdXNhZ2UtPm92ZXJmbG93ZWRfdGltZTsKK30KKwogLyoKICAqIEZpbmQgdGhlIGV4aXN0aW5n IGVudHJ5LCBvciB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9uIGZvciBhIG5ldyBlbnRyeS4KICAqCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91 dGlscy93YWl0X2V2ZW50LmgKaW5kZXggNjc0OTc3OTAzMDcuLjE5NzYzY2ZjYWU1IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvd2FpdF9ldmVudC5oCkBAIC0xNSw2ICsxNSwxMiBAQAogI2luY2x1ZGUgInV0aWxzL3BhbGxv Yy5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnRfdHlwZXMuaCIKIAorLyoKKyAqIEVYUExB SU4gd2FpdCBldmVudCBhY2NvdW50aW5nIHN1cHBvcnQuICBXYWl0RXZlbnRVc2FnZSBpcyBpbnRl bnRpb25hbGx5CisgKiBvcGFxdWUgb3V0c2lkZSB3YWl0X2V2ZW50LmM7IGNhbGxlcnMgc2hvdWxk IGFsbG9jYXRlLCBhY2N1bXVsYXRlLCBhbmQgcmVhZAorICogaXQgdGhyb3VnaCB0aGUgZnVuY3Rp b25zIGJlbG93LiAgV2FpdEV2ZW50VXNhZ2VFbnRyeSBpcyB0aGUgcmVwb3J0YWJsZQorICogdHVw bGUgY29waWVkIHRvIEVYUExBSU4gb3V0cHV0IGFuZCBwYXJhbGxlbC13b3JrZXIgc3RvcmFnZS4K KyAqLwogdHlwZWRlZiBzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2VFbnRyeQogewogCXVpbnQzMgkJd2Fp dF9ldmVudF9pbmZvOwpAQCAtMjIsMTcgKzI4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV2FpdEV2ZW50 VXNhZ2VFbnRyeQogCWluc3RyX3RpbWUJdGltZTsKIH0gV2FpdEV2ZW50VXNhZ2VFbnRyeTsKIAot dHlwZWRlZiBzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2UKLXsKLQlzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2Ug KmFjdGl2ZV9wYXJlbnQ7IC8qIGFjdGl2ZSBwbGFuLW5vZGUgc3RhY2sgbGluayAqLwotCXN0cnVj dCBXYWl0RXZlbnRVc2FnZSAqcXVlcnlfcGFyZW50OwkvKiBhY3RpdmUgcXVlcnktbGV2ZWwgc3Rh Y2sgbGluayAqLwotCXN0cnVjdCBXYWl0RXZlbnRVc2FnZSAqc2F2ZWRfbm9kZV91c2FnZTsJLyog bm9kZSBzdGFjayBhdCBxdWVyeSBzdGFydCAqLwotCWludAkJCW5lbnRyaWVzOwotCWludAkJCW1h eGVudHJpZXM7Ci0JV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cmllczsKLQl1aW50NjQJCW92ZXJm bG93ZWRfY2FsbHM7Ci0JaW5zdHJfdGltZQlvdmVyZmxvd2VkX3RpbWU7Ci19IFdhaXRFdmVudFVz YWdlOwordHlwZWRlZiBzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2UgV2FpdEV2ZW50VXNhZ2U7CiAKIGV4 dGVybiBjb25zdCBjaGFyICpwZ3N0YXRfZ2V0X3dhaXRfZXZlbnQodWludDMyIHdhaXRfZXZlbnRf aW5mbyk7CiBleHRlcm4gY29uc3QgY2hhciAqcGdzdGF0X2dldF93YWl0X2V2ZW50X3R5cGUodWlu dDMyIHdhaXRfZXZlbnRfaW5mbyk7CkBAIC00MCwxMyArMzYsMjMgQEAgc3RhdGljIGlubGluZSB2 b2lkIHBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydCh1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKIHN0 YXRpYyBpbmxpbmUgdm9pZCBwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKHZvaWQpOwogZXh0ZXJuIHZv aWQgcGdzdGF0X3NldF93YWl0X2V2ZW50X3N0b3JhZ2UodWludDMyICp3YWl0X2V2ZW50X2luZm8p OwogZXh0ZXJuIHZvaWQgcGdzdGF0X3Jlc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSh2b2lkKTsKKwor LyogRVhQTEFJTiB3YWl0IGV2ZW50IGFjY291bnRpbmcuICovCiBleHRlcm4gV2FpdEV2ZW50VXNh Z2UgKnBnc3RhdF9jcmVhdGVfd2FpdF9ldmVudF91c2FnZShNZW1vcnlDb250ZXh0IG1lbWNvbnRl eHQpOwotZXh0ZXJuIHZvaWQgcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50 VXNhZ2UgKnVzYWdlLAotCQkJCQkJCQkJCSAgTWVtb3J5Q29udGV4dCBtZW1jb250ZXh0KTsKK2V4 dGVybiBXYWl0RXZlbnRVc2FnZSAqcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2UoTWVtb3J5 Q29udGV4dCBtZW1jb250ZXh0KTsKIGV4dGVybiB2b2lkIHBnc3RhdF9lbmRfd2FpdF9ldmVudF91 c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2UpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2FjY3VtdWxh dGVfd2FpdF9ldmVudF91c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2UsCiAJCQkJCQkJCQkJCSAg IGNvbnN0IFdhaXRFdmVudFVzYWdlRW50cnkgKmVudHJpZXMsCiAJCQkJCQkJCQkJCSAgIGludCBu ZW50cmllcyk7CitleHRlcm4gdm9pZCBwZ3N0YXRfYWNjdW11bGF0ZV93YWl0X2V2ZW50X3VzYWdl X292ZXJmbG93KFdhaXRFdmVudFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJCQkJCQkJdWludDY0IGNh bGxzLAorCQkJCQkJCQkJCQkJCQljb25zdCBpbnN0cl90aW1lICplbGFwc2VkKTsKK2V4dGVybiBi b29sIHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2lzX2VtcHR5KGNvbnN0IFdhaXRFdmVudFVzYWdl ICp1c2FnZSk7CitleHRlcm4gaW50IHBnc3RhdF9nZXRfd2FpdF9ldmVudF91c2FnZV9lbnRyaWVz KGNvbnN0IFdhaXRFdmVudFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJCQkJICAgY29uc3QgV2FpdEV2 ZW50VXNhZ2VFbnRyeSAqKmVudHJpZXMpOworZXh0ZXJuIHZvaWQgcGdzdGF0X2dldF93YWl0X2V2 ZW50X3VzYWdlX292ZXJmbG93KGNvbnN0IFdhaXRFdmVudFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJ CQkJCSB1aW50NjQgKmNhbGxzLAorCQkJCQkJCQkJCQkJIGluc3RyX3RpbWUgKmVsYXBzZWQpOwog ZXh0ZXJuIFdhaXRFdmVudFVzYWdlICpwZ3N0YXRfZW50ZXJfd2FpdF9ldmVudF91c2FnZShXYWl0 RXZlbnRVc2FnZSAqdXNhZ2UpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3Jlc3RvcmVfd2FpdF9ldmVu dF91c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2UpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50 X3dhaXRfZXZlbnRfc3RhcnQodWludDMyIHdhaXRfZXZlbnRfaW5mbyk7Ci0tIAoyLjUyLjAKCg== --000000000000e7e4510652deeeb3 Content-Type: application/octet-stream; name="0007-Stabilize-EXPLAIN-WAITS-regression-tests.patch" Content-Disposition: attachment; filename="0007-Stabilize-EXPLAIN-WAITS-regression-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mppej29a6 RnJvbSA3MWZjZjNlM2FmYjg2ODQ5NTg1ZDViZjVlZjAyMTYzYTg3Njg4NTlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBNb24sIDE4IE1heSAyMDI2IDEwOjU2OjU0ICswNTAwClN1YmplY3Q6IFtSRkMgUEFUQ0gg djMgNy83XSBTdGFiaWxpemUgRVhQTEFJTiBXQUlUUyByZWdyZXNzaW9uIHRlc3RzCgotLS0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQgfCAxMTkgKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsICAgICAgfCAgOTAg KysrKysrKysrLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCAx MTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9l eHBsYWluLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKaW5kZXgg Mjc1MjkyZDYxNzIuLjZiMDY4M2FkODMzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2V4cGxhaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFp bi5vdXQKQEAgLTY4LDYgKzY4LDEwIEBAIHNldCBqaXQgPSBvZmY7CiAtLSBTaW1pbGFybHksIGRp c2FibGUgdHJhY2tfaW9fdGltaW5nLCB0byBhdm9pZCBvdXRwdXQgZGlmZmVyZW5jZXMgd2hlbgog LS0gZW5hYmxlZC4KIHNldCB0cmFja19pb190aW1pbmcgPSBvZmY7CistLSBLZWVwIHRlc3RzIHRo YXQgYXNzZXJ0IGV4YWN0IEVYUExBSU4gb3V0cHV0IGRldGVybWluaXN0aWMgZXZlbiB3aGVuIHRo ZQorLS0gc3Vycm91bmRpbmcgdGVzdCBlbnZpcm9ubWVudCBlbmFibGVzIHBhcmFsbGVsLXF1ZXJ5 IGRlYnVnZ2luZy4KK3NldCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSA9IG9mZjsKK3NldCBtYXhfcGFy YWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKIC0tIFNpbXBsZSBjYXNlcwogZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgMSBhcyBhLCAyIGFzIGIgaGF2aW5nIGZhbHNlOwogICAgICAgICBR VUVSWSBQTEFOICAgICAgICAKQEAgLTExNSwyNCArMTE5LDQzIEBAIHNlbGVjdCBleHBsYWluX2Zp bHRlcignZXhwbGFpbiAoYnVmZmVycywgZm9ybWF0IHRleHQpIHNlbGVjdCAqIGZyb20gaW50OF90 YmwgaTgnCiAoMSByb3cpCiAKIC0tIFdBSVRTIG9wdGlvbgotc2VsZWN0IGV4cGxhaW5fZmlsdGVy KCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5n IG9mZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpOwotICAgICAgICAgICAg IGV4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0gUmVzdWx0IChhY3R1YWwgcm93cz1OLk4gbG9vcHM9TikKLSAgIFdh aXQgRXZlbnRzOgotICAgICBUaW1lb3V0OlBnU2xlZXAgY2FsbHM9TiB0aW1lPU4uTiBtcwotIFN0 YXRlbWVudCBXYWl0IEV2ZW50czoKLSAgIFRpbWVvdXQ6UGdTbGVlcCBjYWxscz1OIHRpbWU9Ti5O IG1zCi0oNSByb3dzKQorc2VsZWN0IHRydWUgYXMgIndhaXRzIHRleHQgb3V0cHV0IG9rIgorICBm cm9tIGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBz dW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVlcCgwLjAx KScpIGxuCisgIHdoZXJlIGxuID0gJyAgV2FpdCBFdmVudHM6JworICB1bmlvbiBhbGwKK3NlbGVj dCB0cnVlCisgIGZyb20gZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBj b3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZikgc2VsZWN0IHBn X3NsZWVwKDAuMDEpJykgbG4KKyAgd2hlcmUgbG4gPSAnU3RhdGVtZW50IFdhaXQgRXZlbnRzOicK KyAgdW5pb24gYWxsCitzZWxlY3QgdHJ1ZQorICBmcm9tIGV4cGxhaW5fZmlsdGVyKCdleHBsYWlu IChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVm ZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpIGxuCisgIHdoZXJlIGxuIH4gJ14gICAg VGltZW91dDpQZ1NsZWVwIGNhbGxzPU4gdGltZT1OLk4gbXMkJworICB1bmlvbiBhbGwKK3NlbGVj dCB0cnVlCisgIGZyb20gZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBj b3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZikgc2VsZWN0IHBn X3NsZWVwKDAuMDEpJykgbG4KKyAgd2hlcmUgbG4gfiAnXiAgVGltZW91dDpQZ1NsZWVwIGNhbGxz PU4gdGltZT1OLk4gbXMkJzsKKyB3YWl0cyB0ZXh0IG91dHB1dCBvayAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB0CisgdAorIHQKKyB0CisoNCByb3dzKQogCi1zZWxlY3QgZXhwbGFpbl9maWx0 ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBv ZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3NsZWVw KDAuMDEpJykgIz4gJ3swLFN0YXRlbWVudCBXYWl0IEV2ZW50cywwfSc7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCitzZWxlY3QganNvbmJfcGF0aF9xdWVyeV9maXJzdCgKKyAgZXhwbGFpbl9m aWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFy eSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3Ns ZWVwKDAuMDEpJykgIz4gJ3swLFN0YXRlbWVudCBXYWl0IEV2ZW50c30nLAorICAnJFsqXSA/IChA LiJXYWl0IEV2ZW50IiA9PSAiUGdTbGVlcCIpJworKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGpzb25iX3BhdGhfcXVlcnlfZmlyc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICB7IlRpbWUiOiAwLjAsICJDYWxscyI6IDAs ICJXYWl0IEV2ZW50IjogIlBnU2xlZXAiLCAiV2FpdCBFdmVudCBUeXBlIjogIlRpbWVvdXQifQog KDEgcm93KQogCi1zZWxlY3QgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6 ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2Zm LCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3NsZWVwKDAuMDEpJykgIz4gJ3swLFBsYW4sV2FpdCBF dmVudHMsMH0nOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9jb2x1bW4/ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorc2VsZWN0IGpzb25iX3BhdGhf cXVlcnlfZmlyc3QoCisgIGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUs IHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwg Zm9ybWF0IGpzb24pIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxQbGFufScsCisgICck LiJXYWl0IEV2ZW50cyJbKl0gPyAoQC4iV2FpdCBFdmVudCIgPT0gIlBnU2xlZXAiKScKKyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgeyJU aW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1NsZWVwIiwgIldhaXQgRXZl bnQgVHlwZSI6ICJUaW1lb3V0In0KICgxIHJvdykKQEAgLTE0NSwxNCArMTY4LDIwIEBAIGJlZ2lu CiAgIHBlcmZvcm0gZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2Fp dHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3Jt YXQganNvbikgc2VsZWN0IHBnX3NsZWVwKDAuMDEpJyk7CiBlbmQ7CiAkJDsKLXNlbGVjdCBleHBs YWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBz dW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKSBzZWxlY3Qg cGdfdGVtcC5uZXN0ZWRfZXhwbGFpbl93YWl0cygpJykgIz4gJ3swLFN0YXRlbWVudCBXYWl0IEV2 ZW50cywwfSc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2NvbHVtbj8g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitzZWxlY3QganNvbmJfcGF0aF9x dWVyeV9maXJzdCgKKyAgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwg d2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBm b3JtYXQganNvbikgc2VsZWN0IHBnX3RlbXAubmVzdGVkX2V4cGxhaW5fd2FpdHMoKScpICM+ICd7 MCxTdGF0ZW1lbnQgV2FpdCBFdmVudHN9JywKKyAgJyRbKl0gPyAoQC4iV2FpdCBFdmVudCIgPT0g IlBnU2xlZXAiKScKKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uYl9wYXRo X3F1ZXJ5X2ZpcnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgeyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQ Z1NsZWVwIiwgIldhaXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0In0KICgxIHJvdykKIAotc2VsZWN0 IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBv ZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pIHNl bGVjdCBwZ190ZW1wLm5lc3RlZF9leHBsYWluX3dhaXRzKCknKSAjPiAnezAsUGxhbixXYWl0IEV2 ZW50cywwfSc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2NvbHVtbj8g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitzZWxlY3QganNvbmJfcGF0aF9x dWVyeV9maXJzdCgKKyAgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwg d2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBm b3JtYXQganNvbikgc2VsZWN0IHBnX3RlbXAubmVzdGVkX2V4cGxhaW5fd2FpdHMoKScpICM+ICd7 MCxQbGFufScsCisgICckLiJXYWl0IEV2ZW50cyJbKl0gPyAoQC4iV2FpdCBFdmVudCIgPT0gIlBn U2xlZXAiKScKKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uYl9wYXRoX3F1 ZXJ5X2ZpcnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgeyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1Ns ZWVwIiwgIldhaXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0In0KICgxIHJvdykKQEAgLTE3Niw4ICsy MDUsMTEgQEAgYmVnaW4KICAgcGVyZm9ybSBwZ19zbGVlcCgwLjAxKTsKIGVuZDsKICQkOwotc2Vs ZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0 cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24p IHNlbGVjdCBwZ190ZW1wLm5lc3RlZF9leHBsYWluX3dhaXRzX2Vycm9yKCknKSAjPiAnezAsUGxh bixXYWl0IEV2ZW50cywwfSc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg P2NvbHVtbj8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitzZWxlY3QganNv bmJfcGF0aF9xdWVyeV9maXJzdCgKKyAgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAo YW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZl cnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3RlbXAubmVzdGVkX2V4cGxhaW5fd2FpdHNf ZXJyb3IoKScpICM+ICd7MCxQbGFufScsCisgICckLiJXYWl0IEV2ZW50cyJbKl0gPyAoQC4iV2Fp dCBFdmVudCIgPT0gIlBnU2xlZXAiKScKKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgeyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAiV2Fp dCBFdmVudCI6ICJQZ1NsZWVwIiwgIldhaXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0In0KICgxIHJv dykKQEAgLTIxMCw1MyArMjQyLDYgQEAgc2VsZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCiAg eyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1NsZWVwIiwgIldhaXQg RXZlbnQgVHlwZSI6ICJUaW1lb3V0In0KICgxIHJvdykKIAotcm9sbGJhY2s7Ci1iZWdpbjsKLS0t IFRoaXMgdGVzdCBkZWxpYmVyYXRlbHkgY3JlYXRlcyBhIHJlc2Nhbm5lZCBwYXJhbGxlbC1hd2Fy ZSBJbmRleCBTY2FuLgotLS0gVGhlIHBsYW5uZXIgR1VDcyBhbmQgdGVuazEgcGFyYWxsZWxfd29y a2VycyByZWxvcHRpb24gYXJlIHRlc3Qtb25seQotLS0gc2NhZmZvbGRpbmcgdG8gbWFrZSB0aGUg cGFyYWxsZWwgcmVzY2FubmVkIG5vZGUgc2hhcGUgZGV0ZXJtaW5pc3RpYy4gIFRoZQotLS0gU1RB QkxFIFBBUkFMTEVMIFNBRkUgd3JhcHBlciBhcm91bmQgcGdfc2xlZXAoKSBjcmVhdGVzIGEgcnVu dGltZSBrZXkgd2FpdAotLS0gdW5kZXIgdGhlIHBhcmFsbGVsLWF3YXJlIEluZGV4IFNjYW4uICBU aGUgaW52YXJpYW50IGNoZWNrZWQgYmVsb3cgaXMgdGhhdAotLS0gUGdTbGVlcCBjYWxscyBhY2N1 bXVsYXRlZCBmb3IgdGhhdCBub2RlIGNvdmVyIGFsbCByZXBvcnRlZCBzY2FuIGxvb3BzOyB0aGlz Ci0tLSBmYWlscyBpZiBwZXItbm9kZSB3b3JrZXIgd2FpdCB1c2FnZSBpcyByZXBsYWNlZCBvbiBy ZWxhdW5jaCBpbnN0ZWFkIG9mCi0tLSBtZXJnZWQgYWNyb3NzIHdvcmtlciByZXBvcnRzLgotY3Jl YXRlIGZ1bmN0aW9uIHBnX3RlbXAuZXhwbGFpbl93YWl0c19wYXJhbGxlbF9zbGVlcF9pbnQoaW50 KSByZXR1cm5zIGludAotICBsYW5ndWFnZSBwbHBnc3FsIHN0YWJsZSBwYXJhbGxlbCBzYWZlIGFz ICQkYmVnaW4gcGVyZm9ybSBwZ19zbGVlcCgwLjAwMSk7IHJldHVybiAkMTsgZW5kJCQ7Ci1hbHRl ciB0YWJsZSB0ZW5rMSBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSA0KTsKLXNldCBsb2NhbCBwYXJh bGxlbF9zZXR1cF9jb3N0ID0gMDsKLXNldCBsb2NhbCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsK LXNldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gNDsKLXNldCBsb2Nh bCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKLXNldCBsb2NhbCBtaW5fcGFy YWxsZWxfaW5kZXhfc2Nhbl9zaXplID0gMDsKLXNldCBsb2NhbCBlbmFibGVfc2Vxc2NhbiA9IG9m ZjsKLXNldCBsb2NhbCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKLXNldCBsb2NhbCBlbmFibGVf bWF0ZXJpYWwgPSBvZmY7Ci1zZXQgbG9jYWwgcmFuZG9tX3BhZ2VfY29zdCA9IDI7Ci13aXRoIHBs YW5fanNvbiBhcyAoCi0gIHNlbGVjdCBleHBsYWluX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUs IHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwg Zm9ybWF0IGpzb24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ICogZnJvbQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdCBjb3VudCh1bmlxdWUxKSBmcm9tIHRlbmsx Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgaHVuZHJlZCA+IHBnX3RlbXAuZXhw bGFpbl93YWl0c19wYXJhbGxlbF9zbGVlcF9pbnQoMTApKSBzcwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmlnaHQgam9pbiAodmFsdWVzICgxKSwoMiksKDMpKSB2KHgpIG9uIHRydWUnKSAj PiAnezAsUGxhbn0nIGFzIHBsYW4KLSksCi1wYXJhbGxlbF9zY2FuIGFzICgKLSAgc2VsZWN0IGpz b25iX3BhdGhfcXVlcnlfZmlyc3QocGxhbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJyQuKiogPyAoQC4iTm9kZSBUeXBlIiA9PSAiSW5kZXggU2NhbiIgJiYgQC4iUGFyYWxsZWwg QXdhcmUiID09IHRydWUpJykgYXMgbm9kZQotICBmcm9tIHBsYW5fanNvbgotKSwKLXBnc2xlZXBf d2FpdCBhcyAoCi0gIHNlbGVjdCBub2RlLAotICAgICAgICAganNvbmJfcGF0aF9xdWVyeV9maXJz dChub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJC4iV2FpdCBFdmVudHMi WypdID8gKEAuIldhaXQgRXZlbnQiID09ICJQZ1NsZWVwIiknKSBhcyB3YWl0Ci0gIGZyb20gcGFy YWxsZWxfc2NhbgotKQotc2VsZWN0ICh3YWl0LT4+J0NhbGxzJyk6Om51bWVyaWMgPj0gKG5vZGUt Pj4nQWN0dWFsIExvb3BzJyk6Om51bWVyaWMgYXMgInBhcmFsbGVsIHJlc2NhbiB3YWl0cyBhY2N1 bXVsYXRlZCIKLWZyb20gcGdzbGVlcF93YWl0OwotIHBhcmFsbGVsIHJlc2NhbiB3YWl0cyBhY2N1 bXVsYXRlZCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gdAotKDEgcm93 KQotCiByb2xsYmFjazsKIGJlZ2luOwogLS0gVGhpcyB0ZXN0IGRlbGliZXJhdGVseSBjcmVhdGVz IGEgQml0bWFwIEluZGV4IFNjYW4gcnVudGltZS1rZXkgd2FpdC4KQEAgLTI3NCw2ICsyNTksOCBA QCBjcmVhdGUgdGVtcCB0YWJsZSBleHBsYWluX3dhaXRzX2JpdG1hcCAoYSBpbnQpOwogaW5zZXJ0 IGludG8gZXhwbGFpbl93YWl0c19iaXRtYXAgc2VsZWN0IGcgZnJvbSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTApIGc7CiBjcmVhdGUgaW5kZXggZXhwbGFpbl93YWl0c19iaXRtYXBfYV9pZHggb24gZXhw bGFpbl93YWl0c19iaXRtYXAoYSk7CiBhbmFseXplIGV4cGxhaW5fd2FpdHNfYml0bWFwOworc2V0 IGxvY2FsIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb2ZmOworc2V0IGxvY2FsIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOwogc2V0IGxvY2FsIGVuYWJsZV9zZXFzY2FuID0gb2Zm Owogc2V0IGxvY2FsIGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CiBzZWxlY3QganNvbmJfcGF0aF9x dWVyeV9maXJzdCgKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5zcWwKaW5kZXggOWY1MGVmMTg5YjAuLmMz N2ZjMDljNGRlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbApAQCAtNzUsNiArNzUsMTEgQEAg c2V0IGppdCA9IG9mZjsKIC0tIGVuYWJsZWQuCiBzZXQgdHJhY2tfaW9fdGltaW5nID0gb2ZmOwog CistLSBLZWVwIHRlc3RzIHRoYXQgYXNzZXJ0IGV4YWN0IEVYUExBSU4gb3V0cHV0IGRldGVybWlu aXN0aWMgZXZlbiB3aGVuIHRoZQorLS0gc3Vycm91bmRpbmcgdGVzdCBlbnZpcm9ubWVudCBlbmFi bGVzIHBhcmFsbGVsLXF1ZXJ5IGRlYnVnZ2luZy4KK3NldCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSA9 IG9mZjsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKKwogLS0gU2lt cGxlIGNhc2VzCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0IDEgYXMgYSwgMiBhcyBiIGhh dmluZyBmYWxzZTsKQEAgLTg1LDkgKzkwLDI5IEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhw bGFpbiAoYW5hbHl6ZSwgYnVmZmVycywgZm9ybWF0IHRleHQpIHNlbGVjdCAqIGZyb20gaW50CiBz ZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGJ1ZmZlcnMsIGZvcm1hdCB0ZXh0KSBzZWxl Y3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CiAKIC0tIFdBSVRTIG9wdGlvbgotc2VsZWN0IGV4cGxh aW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9m ZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpOwotc2Vs ZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0 cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24p IHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxTdGF0ZW1lbnQgV2FpdCBFdmVudHMsMH0n Owotc2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRz LCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0 IGpzb24pIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxQbGFuLFdhaXQgRXZlbnRzLDB9 JzsKK3NlbGVjdCB0cnVlIGFzICJ3YWl0cyB0ZXh0IG91dHB1dCBvayIKKyAgZnJvbSBleHBsYWlu X2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYs IHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKSBsbgorICB3 aGVyZSBsbiA9ICcgIFdhaXQgRXZlbnRzOicKKyAgdW5pb24gYWxsCitzZWxlY3QgdHJ1ZQorICBm cm9tIGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBz dW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVlcCgwLjAx KScpIGxuCisgIHdoZXJlIGxuID0gJ1N0YXRlbWVudCBXYWl0IEV2ZW50czonCisgIHVuaW9uIGFs bAorc2VsZWN0IHRydWUKKyAgZnJvbSBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwg d2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmKSBz ZWxlY3QgcGdfc2xlZXAoMC4wMSknKSBsbgorICB3aGVyZSBsbiB+ICdeICAgIFRpbWVvdXQ6UGdT bGVlcCBjYWxscz1OIHRpbWU9Ti5OIG1zJCcKKyAgdW5pb24gYWxsCitzZWxlY3QgdHJ1ZQorICBm cm9tIGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBz dW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVlcCgwLjAx KScpIGxuCisgIHdoZXJlIGxuIH4gJ14gIFRpbWVvdXQ6UGdTbGVlcCBjYWxscz1OIHRpbWU9Ti5O IG1zJCc7CitzZWxlY3QganNvbmJfcGF0aF9xdWVyeV9maXJzdCgKKyAgZXhwbGFpbl9maWx0ZXJf dG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYs IHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3NsZWVwKDAu MDEpJykgIz4gJ3swLFN0YXRlbWVudCBXYWl0IEV2ZW50c30nLAorICAnJFsqXSA/IChALiJXYWl0 IEV2ZW50IiA9PSAiUGdTbGVlcCIpJworKTsKK3NlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0 KAorICBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29z dHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29u KSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKSAjPiAnezAsUGxhbn0nLAorICAnJC4iV2FpdCBFdmVu dHMiWypdID8gKEAuIldhaXQgRXZlbnQiID09ICJQZ1NsZWVwIiknCispOwogYmVnaW47CiBjcmVh dGUgZnVuY3Rpb24gcGdfdGVtcC5uZXN0ZWRfZXhwbGFpbl93YWl0cygpIHJldHVybnMgdm9pZAog ICBsYW5ndWFnZSBwbHBnc3FsIGFzCkBAIC05Niw4ICsxMjEsMTQgQEAgYmVnaW4KICAgcGVyZm9y bSBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMg b2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKSBz ZWxlY3QgcGdfc2xlZXAoMC4wMSknKTsKIGVuZDsKICQkOwotc2VsZWN0IGV4cGxhaW5fZmlsdGVy X3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2Zm LCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pIHNlbGVjdCBwZ190ZW1wLm5l c3RlZF9leHBsYWluX3dhaXRzKCknKSAjPiAnezAsU3RhdGVtZW50IFdhaXQgRXZlbnRzLDB9JzsK LXNlbGVjdCBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywg Y29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBq c29uKSBzZWxlY3QgcGdfdGVtcC5uZXN0ZWRfZXhwbGFpbl93YWl0cygpJykgIz4gJ3swLFBsYW4s V2FpdCBFdmVudHMsMH0nOworc2VsZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCisgIGV4cGxh aW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1 bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pIHNlbGVjdCBw Z190ZW1wLm5lc3RlZF9leHBsYWluX3dhaXRzKCknKSAjPiAnezAsU3RhdGVtZW50IFdhaXQgRXZl bnRzfScsCisgICckWypdID8gKEAuIldhaXQgRXZlbnQiID09ICJQZ1NsZWVwIiknCispOworc2Vs ZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCisgIGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4 cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2Zm LCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pIHNlbGVjdCBwZ190ZW1wLm5lc3RlZF9leHBsYWlu X3dhaXRzKCknKSAjPiAnezAsUGxhbn0nLAorICAnJC4iV2FpdCBFdmVudHMiWypdID8gKEAuIldh aXQgRXZlbnQiID09ICJQZ1NsZWVwIiknCispOwogcm9sbGJhY2s7CiBiZWdpbjsKIC0tIElmIGEg bmVzdGVkIEVYUExBSU4gZXJyb3JzIHdoaWxlIG9uZSBvZiBpdHMgcGxhbiBub2RlcyBpcyBhY3Rp dmUsIGVuZGluZwpAQCAtMTE3LDcgKzE0OCwxMCBAQCBiZWdpbgogICBwZXJmb3JtIHBnX3NsZWVw KDAuMDEpOwogZW5kOwogJCQ7Ci1zZWxlY3QgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFp biAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1 ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3RlbXAubmVzdGVkX2V4cGxhaW5fd2Fp dHNfZXJyb3IoKScpICM+ICd7MCxQbGFuLFdhaXQgRXZlbnRzLDB9JzsKK3NlbGVjdCBqc29uYl9w YXRoX3F1ZXJ5X2ZpcnN0KAorICBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFs eXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBv ZmYsIGZvcm1hdCBqc29uKSBzZWxlY3QgcGdfdGVtcC5uZXN0ZWRfZXhwbGFpbl93YWl0c19lcnJv cigpJykgIz4gJ3swLFBsYW59JywKKyAgJyQuIldhaXQgRXZlbnRzIlsqXSA/IChALiJXYWl0IEV2 ZW50IiA9PSAiUGdTbGVlcCIpJworKTsKIHJvbGxiYWNrOwogYmVnaW47CiBjcmVhdGUgZnVuY3Rp b24gcGdfdGVtcC5wYXJhbGxlbF9wZ19zbGVlcChmbG9hdDgpIHJldHVybnMgdm9pZApAQCAtMTM4 LDQ4ICsxNzIsNiBAQCBzZWxlY3QganNvbmJfcGF0aF9xdWVyeV9maXJzdCgKICk7CiByb2xsYmFj azsKIGJlZ2luOwotLS0gVGhpcyB0ZXN0IGRlbGliZXJhdGVseSBjcmVhdGVzIGEgcmVzY2FubmVk IHBhcmFsbGVsLWF3YXJlIEluZGV4IFNjYW4uCi0tLSBUaGUgcGxhbm5lciBHVUNzIGFuZCB0ZW5r MSBwYXJhbGxlbF93b3JrZXJzIHJlbG9wdGlvbiBhcmUgdGVzdC1vbmx5Ci0tLSBzY2FmZm9sZGlu ZyB0byBtYWtlIHRoZSBwYXJhbGxlbCByZXNjYW5uZWQgbm9kZSBzaGFwZSBkZXRlcm1pbmlzdGlj LiAgVGhlCi0tLSBTVEFCTEUgUEFSQUxMRUwgU0FGRSB3cmFwcGVyIGFyb3VuZCBwZ19zbGVlcCgp IGNyZWF0ZXMgYSBydW50aW1lIGtleSB3YWl0Ci0tLSB1bmRlciB0aGUgcGFyYWxsZWwtYXdhcmUg SW5kZXggU2Nhbi4gIFRoZSBpbnZhcmlhbnQgY2hlY2tlZCBiZWxvdyBpcyB0aGF0Ci0tLSBQZ1Ns ZWVwIGNhbGxzIGFjY3VtdWxhdGVkIGZvciB0aGF0IG5vZGUgY292ZXIgYWxsIHJlcG9ydGVkIHNj YW4gbG9vcHM7IHRoaXMKLS0tIGZhaWxzIGlmIHBlci1ub2RlIHdvcmtlciB3YWl0IHVzYWdlIGlz IHJlcGxhY2VkIG9uIHJlbGF1bmNoIGluc3RlYWQgb2YKLS0tIG1lcmdlZCBhY3Jvc3Mgd29ya2Vy IHJlcG9ydHMuCi1jcmVhdGUgZnVuY3Rpb24gcGdfdGVtcC5leHBsYWluX3dhaXRzX3BhcmFsbGVs X3NsZWVwX2ludChpbnQpIHJldHVybnMgaW50Ci0gIGxhbmd1YWdlIHBscGdzcWwgc3RhYmxlIHBh cmFsbGVsIHNhZmUgYXMgJCRiZWdpbiBwZXJmb3JtIHBnX3NsZWVwKDAuMDAxKTsgcmV0dXJuICQx OyBlbmQkJDsKLWFsdGVyIHRhYmxlIHRlbmsxIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDQpOwot c2V0IGxvY2FsIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOwotc2V0IGxvY2FsIHBhcmFsbGVsX3R1 cGxlX2Nvc3QgPSAwOwotc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIg PSA0Owotc2V0IGxvY2FsIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOwotc2V0 IGxvY2FsIG1pbl9wYXJhbGxlbF9pbmRleF9zY2FuX3NpemUgPSAwOwotc2V0IGxvY2FsIGVuYWJs ZV9zZXFzY2FuID0gb2ZmOwotc2V0IGxvY2FsIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOwotc2V0 IGxvY2FsIGVuYWJsZV9tYXRlcmlhbCA9IG9mZjsKLXNldCBsb2NhbCByYW5kb21fcGFnZV9jb3N0 ID0gMjsKLXdpdGggcGxhbl9qc29uIGFzICgKLSAgc2VsZWN0IGV4cGxhaW5fdG9fanNvbignZXhw bGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYs IGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxl Y3QgKiBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0IGNvdW50KHVuaXF1 ZTEpIGZyb20gdGVuazEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBodW5kcmVk ID4gcGdfdGVtcC5leHBsYWluX3dhaXRzX3BhcmFsbGVsX3NsZWVwX2ludCgxMCkpIHNzCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICByaWdodCBqb2luICh2YWx1ZXMgKDEpLCgyKSwoMykpIHYo eCkgb24gdHJ1ZScpICM+ICd7MCxQbGFufScgYXMgcGxhbgotKSwKLXBhcmFsbGVsX3NjYW4gYXMg KAotICBzZWxlY3QganNvbmJfcGF0aF9xdWVyeV9maXJzdChwbGFuLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnJC4qKiA/IChALiJOb2RlIFR5cGUiID09ICJJbmRleCBTY2FuIiAm JiBALiJQYXJhbGxlbCBBd2FyZSIgPT0gdHJ1ZSknKSBhcyBub2RlCi0gIGZyb20gcGxhbl9qc29u Ci0pLAotcGdzbGVlcF93YWl0IGFzICgKLSAgc2VsZWN0IG5vZGUsCi0gICAgICAgICBqc29uYl9w YXRoX3F1ZXJ5X2ZpcnN0KG5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICck LiJXYWl0IEV2ZW50cyJbKl0gPyAoQC4iV2FpdCBFdmVudCIgPT0gIlBnU2xlZXAiKScpIGFzIHdh aXQKLSAgZnJvbSBwYXJhbGxlbF9zY2FuCi0pCi1zZWxlY3QgKHdhaXQtPj4nQ2FsbHMnKTo6bnVt ZXJpYyA+PSAobm9kZS0+PidBY3R1YWwgTG9vcHMnKTo6bnVtZXJpYyBhcyAicGFyYWxsZWwgcmVz Y2FuIHdhaXRzIGFjY3VtdWxhdGVkIgotZnJvbSBwZ3NsZWVwX3dhaXQ7Ci1yb2xsYmFjazsKLWJl Z2luOwogLS0gVGhpcyB0ZXN0IGRlbGliZXJhdGVseSBjcmVhdGVzIGEgQml0bWFwIEluZGV4IFNj YW4gcnVudGltZS1rZXkgd2FpdC4KIC0tIFRoZSBTVEFCTEUgUEwvcGdTUUwgd3JhcHBlciBpcyB0 ZXN0IHNjYWZmb2xkaW5nOiBTVEFCTEUgbGV0cyB0aGUKIC0tIGV4cHJlc3Npb24gYmUgdXNlZCBh cyBhbiBpbmRleCBydW50aW1lIGtleSwgd2hpbGUgUEwvcGdTUUwgcHJldmVudHMgU1FMCkBAIC0x OTUsNiArMTg3LDggQEAgY3JlYXRlIHRlbXAgdGFibGUgZXhwbGFpbl93YWl0c19iaXRtYXAgKGEg aW50KTsKIGluc2VydCBpbnRvIGV4cGxhaW5fd2FpdHNfYml0bWFwIHNlbGVjdCBnIGZyb20gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwKSBnOwogY3JlYXRlIGluZGV4IGV4cGxhaW5fd2FpdHNfYml0bWFw X2FfaWR4IG9uIGV4cGxhaW5fd2FpdHNfYml0bWFwKGEpOwogYW5hbHl6ZSBleHBsYWluX3dhaXRz X2JpdG1hcDsKK3NldCBsb2NhbCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSA9IG9mZjsKK3NldCBsb2Nh bCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKIHNldCBsb2NhbCBlbmFibGVf c2Vxc2NhbiA9IG9mZjsKIHNldCBsb2NhbCBlbmFibGVfaW5kZXhzY2FuID0gb2ZmOwogc2VsZWN0 IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCi0tIAoyLjUyLjAKCg== --000000000000e7e4510652deeeb3--