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 1w2ZQf-000PGR-1Q for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2026 18:46:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2ZQe-00494s-0q for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2026 18:46:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w2ZQd-00494k-2A for pgsql-hackers@lists.postgresql.org; Tue, 17 Mar 2026 18:46:07 +0000 Received: from mail-yw1-x1136.google.com ([2607:f8b0:4864:20::1136]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w2ZQW-00000000eTr-2mnA for pgsql-hackers@postgresql.org; Tue, 17 Mar 2026 18:46:06 +0000 Received: by mail-yw1-x1136.google.com with SMTP id 00721157ae682-79801df3e42so3326547b3.0 for ; Tue, 17 Mar 2026 11:46:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773773159; cv=none; d=google.com; s=arc-20240605; b=aHQ8n7jUDHABt+5YNi814E0+tJ+GwdjPMB2I1//DHI/eOUDHq1iOerQhVkq71hYPm0 Iytjun8pOpsKSZsbgDoU69CUPff09dHNrAE4+Z27wt/HM9FYxIVZGJV12VAam35sEpOh IJMI3oe5eutllk/+FHDn57ytgB8dijvSBSoNkAZDzK32NpcWxvbjelKAQGV6tFUFWo/p 1lGam+PBVsYQ7FKK9L+ZY4Nw04sOSvDp0xqzJNOr3GmaJARrV6k4ymoLUfJaRBPuKqz8 c3zUUsp/MsMJ81mhEG3NCubwEIlHfpabnK94PjWi8VcozxbWWooIvI5RiKCFko8zfA/R Kizw== 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=QdHZvH2Rd1rYVbAffDxAaCdIkLP+obrYyS6Pgv33rOg=; fh=PftJsEHezQ/PtiB/wGkMwRhYq1zOi/eXNv/dUlmKyko=; b=gi985LgcSAjFOHAjjeCrBoFRt7tKHZprk+XA7uPWwfmGWXrh0gyZShG3yiRNb32wBn NbKiHM+JRMfMDHdhCs5lZVW1aOsPoEI7LtRKiul/R8Q9qlr+NMh2PR1a3kvcZe6ddkT3 FHZyWmg8yLKXBZau8lsjsgUUTuI6jOMzfvV1EgX0ghnGGc3KgI/ObAjtkT4MxABdvBF5 Q5k+YYIUgPyxw38IPOnlgHypttjRCUt1Mvgu1KDrIX1IN6RuITkq3V5+YqIrtkw/3wWt MC6dHT616SXN4ItYTreqMwGnPuxuSpdyjCekCaLUjlwARP+IFf/dnhcmDwYyQ+85MyKa MiTw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=percona.com; s=google; t=1773773159; x=1774377959; 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=QdHZvH2Rd1rYVbAffDxAaCdIkLP+obrYyS6Pgv33rOg=; b=YgwDs7AucFMlqs2MBI8rrSAt3xG5rPRyEc2H6d43xZdjr/x6Ze1N/f26PYk7W6Me41 AGMte4ZziX2Lh/TqOTxcxl7D9GsykADaJY41P4hdI5FlBS12bZ+Jl0Xx0Xt31UjLJfUs 45pTQqKM5XnfzS4Pm8oddJaYl1B3nwkP0KrnA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773773159; x=1774377959; 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=QdHZvH2Rd1rYVbAffDxAaCdIkLP+obrYyS6Pgv33rOg=; b=kgH9HrYqZ6nFldrkGZoRgLCx8yRXigk17j/u7wmPSlpWyNeOYZPASQ+m3kXB4/J7oI COGxU3TVIwiWKo0+wQIJw93I+v7fm/3V/8h2HYt/4ShkS9aXlSU2d+5GyWxDVHOzmY8e XTzqaFd9y2NS3A+PgVGnGy8EU+m5KoNtdVL4TzamorbKHg776yhibQSL9B7sjX8/QaoO KefxgfluRFpcCzrcofmforA3UTZ6g1WNxJwHEhqRfRadgmvmGf1t8hL7XfMDvBskVNWy ewlXGv8W1JeuVmsBlnKMp+2Zs3b0RBb0u1mUSV5aBqKr2PuKmOuwqtcNs4fa4ekkem8b 1b7A== X-Forwarded-Encrypted: i=1; AJvYcCVo77LwYxRXkUWNyccWLLo9BVqzxRIw2GdH8sxf1s4lsT2QbpBtdZLxahYQIWMF6p6Iv0r6MziJzgAWzZrb@postgresql.org X-Gm-Message-State: AOJu0YzXL/UQVZlY8cAt3SJq6TlHFn4tl77adoWrkf6DYsJrhz2E3o1V NDNrKIoLNyBJ3CzlCwYt1goN+GQ2l1SnbBdiCSaDLQ0pEz69QCQfYNVDQwUYQ/wbs0H4UPCwMpq KVr8bPV5Xddmk2KvR39P/jRtAXxzIutc0SfBVUmhiYNp8Zv+I5BDZQck+FDcD/9FOUCI9scRL9A 7kR/3D4smcRXOoIaKLcyrRbg2BT0+ybRttE7M8j79tJgUyiUCkrx8Eh5JgZd4B9lfXFfHizdnqp BvswxJkGumFgJTGI10Qtv3JwfX4gght+OoOyddswpG9uAEooyA= X-Gm-Gg: ATEYQzyvxYkCU8pJBOzGplrugVAXSCdgGZK2G0c6vKOy2Uobvt14RnDz7vS0g/qFMwa bBj9TKi6j4AaZPgfSxNZSmrlJgGH6IkdDpb0sqHw2GZVJifMn3VM9t0cxrF0+iIpzhbWrx7mXrZ R0QMxs3Xkj3IsxnJUUe3Rd+2cLUj1CEF2/7em6L0jtGnnBvTlbFTHXO7+YBlG1dbZgsFxhLh0+Z faxVjiCqNDjOhgCQZKj1TksH694wuRyQabQ/bZVQpILCvQE0Rjjvk/dfDFGxUkm+SWZMO6NXBTV fygO+UPU349KjA19zAmT0BePi4lLfYwzirq/0/mBQHarEL+rS7XIKKmT/QGFtIbQiJ54 X-Received: by 2002:a05:690c:c504:b0:797:ce9d:5c9e with SMTP id 00721157ae682-79a70b1b663mr8345357b3.10.1773773159039; Tue, 17 Mar 2026 11:45:59 -0700 (PDT) MIME-Version: 1.0 References: <70674869-2829-4b06-ab93-2f82ea51578c@iki.fi> In-Reply-To: From: Zsolt Parragi Date: Tue, 17 Mar 2026 18:45:46 +0000 X-Gm-Features: AaiRm52XNHpHMjz7oQ77FALulIZMs3Yrp-ZMnhN0pfzKs1aBd1AwfHTa-31oN8o Message-ID: Subject: Re: Fix uninitialized xl_running_xacts padding To: Bertrand Drouvot Cc: Alexander Kuzmenkov , Heikki Linnakangas , Andres Freund , Anthonin Bonnefoy , Michael Paquier , Thomas Munro , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000000f63ed064d3cbf06" X-CLOUD-SEC-AV-Sent: true X-CLOUD-SEC-AV-Info: percona,google_mail,monitor X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000f63ed064d3cbf06 Content-Type: text/plain; charset="UTF-8" Hello! I'd like to propose a different approach: instead of relying on valgrind and runtime detection of the issue, why don't we (also) add specific static analysis rules to detect the situation at compile time? There are several threads when I had the same idea: maybe I should write a postgres specific clang-tidy checker, and ask what everyone thinks about integrating that into the build process in an optional way? I attached a WIP patch that addresses this, specifically for the xlog padding problem for now. src/tools/pg-tidy contains a basic custom clang-tidy plugin that works based on two annotations (and helper macros that resolve to "" for normal compilation): * PG_NOPADDING can be used to mark that a struct doesn't have any padding. If this annotation is added to a struct, but it has padding, it will generate clang-tidy warnings. This is basically "-Wpadded", but specifically for selected types. * A separate check rule requires all PG_NOPADDING structs to be always zero-initialized, meaning we don't have to rely on memset at all * PG_REQUIRE_NOPADDING can be used to mark function arguments. If an argument is marked with this, then the underlying type of its parameter has to be either a primitive type, or a struct annotated with PG_NOPADDING Possible alternatives: * I could simplify this by removing PG_NOPADDING, and instead checking the requirement at every call site of a function with PG_REQUIRE_NOPADDING. That would also mean that it could only enforce zero-initialization when it's clearly visible in the same function. I choose the two annotation approach for increased reliability * I could simplify this to only check for end padding, enforce memset instead of zero initialization, and build upon Alexander's previous patch. 0001 implements and integrates pg-tidy (I only added it to the meson build, if there's interest I can also add it to make. clang-tidy integration works similarly to the llvm bitcode patch, so it is properly parallelized/incremental) 0002 adds basic helper macros 0003 marks the data in XLogRegisterData with PG_REQUIRE_NOPADDING, all related structs with PG_NOPADDING, and then fixes the padding issues by adding explicit padding data instead of the compiler autogenerated padding. We also cast a few arrays to char* (or alternatively we could use nolint to suppress the check), because I didn't want to everywhere zero initialize types like RelFileLocator. 0004 removes the now trivial SizeOf macros Compared to only using valgrind, clang-tidy: * works at compile time, guaranteed for every type used with xlog * in theory should work with extensions (if we want to, e.g. by integrating it into pgxs), without requiring extension developers to add proper test workflows using valgrind * valgrind should still work What do you think? I'm interested in opinions about both the specific case, and the generic idea of using custom clang-tidy checks for various postgres-specific checks. As I mentioned at the beginning of the message I think this could be useful for other things and doesn't always require custom annotations, in several cases it could work without any C code change. --0000000000000f63ed064d3cbf06 Content-Type: application/octet-stream; name="0004-Remove-trivial-SizeOfXXX-macros-that-are-just-sizeof.patch" Content-Disposition: attachment; filename="0004-Remove-trivial-SizeOfXXX-macros-that-are-just-sizeof.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmuyfx2k3 RnJvbSBjZDRhNDM3M2ExYzA3ZDAzZTQ3MzAzMjg4YmRiOTJmNTJlYzU4ZDRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEu Y29tPgpEYXRlOiBUdWUsIDE3IE1hciAyMDI2IDE4OjE0OjM1ICswMDAwClN1YmplY3Q6IFtQQVRD SCA0LzRdIFJlbW92ZSB0cml2aWFsIFNpemVPZlhYWCBtYWNyb3MgdGhhdCBhcmUganVzdAogc2l6 ZW9mKHR5cGUpCgpOb3cgdGhhdCBXQUwgcmVjb3JkIHN0cnVjdHMgaGF2ZSBleHBsaWNpdCBwYWRk aW5nLCB0aGUgU2l6ZU9mWFhYIG1hY3Jvcwp0aGF0IHByZXZpb3VzbHkgdXNlZCBvZmZzZXRvZigp IHRvIHNraXAgdHJhaWxpbmcgcGFkZGluZyBhcmUgcGxhaW4Kc2l6ZW9mKCkgYWxpYXNlcy4gIFJl cGxhY2UgYWxsIHVzYWdlcyB3aXRoIGRpcmVjdCBzaXplb2YoKSBjYWxscyBmb3IKY2xhcml0eSwg YXMgc2l6ZW9mKHR5cGUpIGlzIHNlbGYtZG9jdW1lbnRpbmcgYXQgdGhlIGNhbGwgc2l0ZS4KCk1h Y3JvcyB1c2luZyBvZmZzZXRvZigpIChmb3IgZmxleGlibGUgYXJyYXkgbWVtYmVycyksIE1BWEFM SUdOLCBvcgphcml0aG1ldGljIGFyZSBrZXB0IGFzIHRoZXkgY2FycnkgYWRkaXRpb25hbCBzZW1h bnRpY3MuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICB8ICAy ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3BhZ2VvcHMuYyAgIHwgIDYgKystLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcmV2bWFwLmMgICAgfCAgNCArKy0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jICAgICAgIHwgIDQgKystLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hhc2gvaGFzaC5jICAgICAgICAgICB8ICA0ICsrLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oYXNoL2hhc2hpbnNlcnQuYyAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hh c2gvaGFzaG92ZmwuYyAgICAgICB8ICA2ICsrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9o YXNocGFnZS5jICAgICAgIHwgIDggKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMgICAgICAgICB8IDMwICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICB8IDE4ICsrKysrKystLS0tLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRpbnNlcnQuYyAgICB8ICA2ICsrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHBhZ2UuYyAgICAgIHwgMTggKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0eGxvZy5jICAgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRl c2MvaGVhcGRlc2MuYyAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9uYnRk ZXNjLmMgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MveGFjdGRlc2Mu YyAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jICAgfCAg MiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgICB8ICA0ICsrLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAgICAgICAgfCAgMiArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2luc2VydC5jICB8ICA0ICsrLS0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAyNiArKysrKysrKysrLS0tLS0tLS0tLQog c3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5feGxvZy5oICAgICAgICAgICB8ICA2IC0tLS0tCiBzcmMv aW5jbHVkZS9hY2Nlc3MvY29tbWl0X3RzLmggICAgICAgICAgIHwgIDEgLQogc3JjL2luY2x1ZGUv YWNjZXNzL2dpc3R4bG9nLmggICAgICAgICAgICB8ICAyIC0tCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv aGFzaF94bG9nLmggICAgICAgICAgIHwgMTAgLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW1feGxvZy5oICAgICAgICAgfCAxMSAtLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9t dWx0aXhhY3QuaCAgICAgICAgICAgfCAgMSAtCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5o ICAgICAgICAgICAgIHwgMTAgLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94YWN0LmggICAg ICAgICAgICAgICAgfCAgMSAtCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY29yZC5oICAgICAg ICAgIHwgIDMgKy0tCiAzMiBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCAxMjUgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCmluZGV4IDhlZjQ0YTAwNzViLi5lNGNmNjk4 YjY0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwpAQCAtMTE0Myw3ICsxMTQzLDcgQEAgYnJpbmJ1 aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykK IAkJeGxyZWMucGFnZXNQZXJSYW5nZSA9IEJyaW5HZXRQYWdlc1BlclJhbmdlKGluZGV4KTsKIAog CQlYTG9nQmVnaW5JbnNlcnQoKTsKLQkJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVPZkJy aW5DcmVhdGVJZHgpOworCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgc2l6ZW9mKHhsX2JyaW5f Y3JlYXRlaWR4KSk7CiAJCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCBtZXRhLCBSRUdCVUZfV0lMTF9J TklUIHwgUkVHQlVGX1NUQU5EQVJEKTsKIAogCQlyZWNwdHIgPSBYTG9nSW5zZXJ0KFJNX0JSSU5f SUQsIFhMT0dfQlJJTl9DUkVBVEVfSU5ERVgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbl9wYWdlb3BzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3Bh Z2VvcHMuYwppbmRleCBhMWU4YmQwZTIyNS4uNGYwMTYwMjUwZmYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcGFnZW9wcy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW5fcGFnZW9wcy5jCkBAIC0xOTAsNyArMTkwLDcgQEAgYnJpbl9kb3VwZGF0ZShS ZWxhdGlvbiBpZHhyZWwsIEJsb2NrTnVtYmVyIHBhZ2VzUGVyUmFuZ2UsCiAJCQl4bHJlYy5vZmZu dW0gPSBvbGRvZmY7CiAKIAkJCVhMb2dCZWdpbkluc2VydCgpOwotCQkJWExvZ1JlZ2lzdGVyRGF0 YSgmeGxyZWMsIFNpemVPZkJyaW5TYW1lcGFnZVVwZGF0ZSk7CisJCQlYTG9nUmVnaXN0ZXJEYXRh KCZ4bHJlYywgc2l6ZW9mKHhsX2JyaW5fc2FtZXBhZ2VfdXBkYXRlKSk7CiAKIAkJCVhMb2dSZWdp c3RlckJ1ZmZlcigwLCBvbGRidWYsIFJFR0JVRl9TVEFOREFSRCk7CiAJCQlYTG9nUmVnaXN0ZXJC dWZEYXRhKDAsIG5ld3R1cCwgbmV3c3opOwpAQCAtMjgxLDcgKzI4MSw3IEBAIGJyaW5fZG91cGRh dGUoUmVsYXRpb24gaWR4cmVsLCBCbG9ja051bWJlciBwYWdlc1BlclJhbmdlLAogCQkJWExvZ0Jl Z2luSW5zZXJ0KCk7CiAKIAkJCS8qIG5ldyBwYWdlICovCi0JCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4 bHJlYywgU2l6ZU9mQnJpblVwZGF0ZSk7CisJCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgc2l6 ZW9mKHhsX2JyaW5fdXBkYXRlKSk7CiAKIAkJCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCBuZXdidWYs IFJFR0JVRl9TVEFOREFSRCB8IChleHRlbmRlZCA/IFJFR0JVRl9XSUxMX0lOSVQgOiAwKSk7CiAJ CQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIG5ld3R1cCwgbmV3c3opOwpAQCAtNDMzLDcgKzQzMyw3 IEBAIGJyaW5fZG9pbnNlcnQoUmVsYXRpb24gaWR4cmVsLCBCbG9ja051bWJlciBwYWdlc1BlclJh bmdlLAogCQl4bHJlYy5vZmZudW0gPSBvZmY7CiAKIAkJWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JCVhM b2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZCcmluSW5zZXJ0KTsKKwkJWExvZ1JlZ2lzdGVy RGF0YSgmeGxyZWMsIHNpemVvZih4bF9icmluX2luc2VydCkpOwogCiAJCVhMb2dSZWdpc3RlckJ1 ZmZlcigwLCAqYnVmZmVyLCBSRUdCVUZfU1RBTkRBUkQgfCAoZXh0ZW5kZWQgPyBSRUdCVUZfV0lM TF9JTklUIDogMCkpOwogCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHR1cCwgaXRlbXN6KTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcmV2bWFwLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvYnJpbi9icmluX3Jldm1hcC5jCmluZGV4IDU3YWMwNDQ0OTdhLi5lZTAxM2Jk ZDE2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9yZXZtYXAuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3Jldm1hcC5jCkBAIC00MTYsNyArNDE2 LDcgQEAgYnJpblJldm1hcERlc3VtbWFyaXplUmFuZ2UoUmVsYXRpb24gaWR4cmVsLCBCbG9ja051 bWJlciBoZWFwQmxrKQogCQl4bHJlYy5yZWdPZmZzZXQgPSByZWdPZmZzZXQ7CiAKIAkJWExvZ0Jl Z2luSW5zZXJ0KCk7Ci0JCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZCcmluRGVzdW1t YXJpemUpOworCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgc2l6ZW9mKHhsX2JyaW5fZGVzdW1t YXJpemUpKTsKIAkJWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIHJldm1hcEJ1ZiwgMCk7CiAJCVhMb2dS ZWdpc3RlckJ1ZmZlcigxLCByZWdCdWYsIFJFR0JVRl9TVEFOREFSRCk7CiAJCXJlY3B0ciA9IFhM b2dJbnNlcnQoUk1fQlJJTl9JRCwgWExPR19CUklOX0RFU1VNTUFSSVpFKTsKQEAgLTYyNyw3ICs2 MjcsNyBAQCByZXZtYXBfcGh5c2ljYWxfZXh0ZW5kKEJyaW5SZXZtYXAgKnJldm1hcCkKIAkJeGxy ZWMudGFyZ2V0QmxrID0gbWFwQmxrOwogCiAJCVhMb2dCZWdpbkluc2VydCgpOwotCQlYTG9nUmVn aXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9mQnJpblJldm1hcEV4dGVuZCk7CisJCVhMb2dSZWdpc3Rl ckRhdGEoJnhscmVjLCBzaXplb2YoeGxfYnJpbl9yZXZtYXBfZXh0ZW5kKSk7CiAJCVhMb2dSZWdp c3RlckJ1ZmZlcigwLCByZXZtYXAtPnJtX21ldGFCdWYsIFJFR0JVRl9TVEFOREFSRCk7CiAKIAkJ WExvZ1JlZ2lzdGVyQnVmZmVyKDEsIGJ1ZiwgUkVHQlVGX1dJTExfSU5JVCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdHhsb2cuYwppbmRleCBiOTNlODMxYjgyOS4uMTk0YTdmOGFiMzQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtNTU3LDcgKzU1Nyw3IEBAIGdpc3RYTG9nUGFnZURl bGV0ZShCdWZmZXIgYnVmZmVyLCBGdWxsVHJhbnNhY3Rpb25JZCB4aWQsCiAJeGxyZWMuZG93bmxp bmtPZmZzZXQgPSBkb3dubGlua09mZnNldDsKIAogCVhMb2dCZWdpbkluc2VydCgpOwotCVhMb2dS ZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZHaXN0eGxvZ1BhZ2VEZWxldGUpOworCVhMb2dSZWdp c3RlckRhdGEoJnhscmVjLCBzaXplb2YoZ2lzdHhsb2dQYWdlRGVsZXRlKSk7CiAKIAlYTG9nUmVn aXN0ZXJCdWZmZXIoMCwgYnVmZmVyLCBSRUdCVUZfU1RBTkRBUkQpOwogCVhMb2dSZWdpc3RlckJ1 ZmZlcigxLCBwYXJlbnRCdWZmZXIsIFJFR0JVRl9TVEFOREFSRCk7CkBAIC02MDcsNyArNjA3LDcg QEAgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLAogCXhs cmVjX3JldXNlLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gZGVsZXRlWGlkOwogCiAJWExvZ0Jl Z2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWNfcmV1c2UsIFNpemVPZkdpc3R4 bG9nUGFnZVJldXNlKTsKKwlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlY19yZXVzZSwgc2l6ZW9mKGdp c3R4bG9nUGFnZVJldXNlKSk7CiAKIAlYTG9nSW5zZXJ0KFJNX0dJU1RfSUQsIFhMT0dfR0lTVF9Q QUdFX1JFVVNFKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2gu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYwppbmRleCBmNTY1Y2ZjNzdhOC4uZDRl M2I0YzU0YTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKQEAgLTYxOSw3ICs2MTksNyBAQCBsb29w X3RvcDoKIAkJeGxyZWMubnR1cGxlcyA9IG1ldGFwLT5oYXNobV9udHVwbGVzOwogCiAJCVhMb2dC ZWdpbkluc2VydCgpOwotCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9mSGFzaFVwZGF0 ZU1ldGFQYWdlKTsKKwkJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIHNpemVvZih4bF9oYXNoX3Vw ZGF0ZV9tZXRhX3BhZ2UpKTsKIAogCQlYTG9nUmVnaXN0ZXJCdWZmZXIoMCwgbWV0YWJ1ZiwgUkVH QlVGX1NUQU5EQVJEKTsKIApAQCAtODI2LDcgKzgyNiw3IEBAIGhhc2hidWNrZXRjbGVhbnVwKFJl bGF0aW9uIHJlbCwgQnVja2V0IGN1cl9idWNrZXQsIEJ1ZmZlciBidWNrZXRfYnVmLAogCQkJCXhs cmVjLmlzX3ByaW1hcnlfYnVja2V0X3BhZ2UgPSAoYnVmID09IGJ1Y2tldF9idWYpOwogCiAJCQkJ WExvZ0JlZ2luSW5zZXJ0KCk7Ci0JCQkJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVPZkhh c2hEZWxldGUpOworCQkJCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBzaXplb2YoeGxfaGFzaF9k ZWxldGUpKTsKIAogCQkJCS8qCiAJCQkJICogYnVja2V0IGJ1ZmZlciB3YXMgbm90IGNoYW5nZWQs IGJ1dCBzdGlsbCBuZWVkcyB0byBiZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hh c2gvaGFzaGluc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCmlu ZGV4IDViYTYyMzM5M2E4Li4zN2Q2ZTNhODZlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaGluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hp bnNlcnQuYwpAQCAtMjIxLDcgKzIyMSw3IEBAIHJlc3RhcnRfaW5zZXJ0OgogCQl4bHJlYy5vZmZu dW0gPSBpdHVwX29mZjsKIAogCQlYTG9nQmVnaW5JbnNlcnQoKTsKLQkJWExvZ1JlZ2lzdGVyRGF0 YSgmeGxyZWMsIFNpemVPZkhhc2hJbnNlcnQpOworCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywg c2l6ZW9mKHhsX2hhc2hfaW5zZXJ0KSk7CiAKIAkJWExvZ1JlZ2lzdGVyQnVmZmVyKDEsIG1ldGFi dWYsIFJFR0JVRl9TVEFOREFSRCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o YXNoL2hhc2hvdmZsLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNob3ZmbC5jCmluZGV4 IDY5ZTkwZmZhYzViLi44OTkzNjA5NWVmZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hhc2gvaGFzaG92ZmwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNob3ZmbC5j CkBAIC0zODgsNyArMzg4LDcgQEAgZm91bmQ6CiAJCXhscmVjLmJtc2l6ZSA9IG1ldGFwLT5oYXNo bV9ibXNpemU7CiAKIAkJWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JCVhMb2dSZWdpc3RlckRhdGEoJnhs cmVjLCBTaXplT2ZIYXNoQWRkT3ZmbFBhZ2UpOworCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywg c2l6ZW9mKHhsX2hhc2hfYWRkX292ZmxfcGFnZSkpOwogCiAJCVhMb2dSZWdpc3RlckJ1ZmZlcigw LCBvdmZsYnVmLCBSRUdCVUZfV0lMTF9JTklUKTsKIAkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCAm cGFnZW9wYXF1ZS0+aGFzaG9fYnVja2V0LCBzaXplb2YoQnVja2V0KSk7CkBAIC02NTYsNyArNjU2 LDcgQEAgX2hhc2hfZnJlZW92ZmxwYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Y2tldGJ1Ziwg QnVmZmVyIG92ZmxidWYsCiAJCXhscmVjLmlzX3ByZXZfYnVja2V0X3NhbWVfd3J0ID0gKHdidWYg PT0gcHJldmJ1Zik7CiAKIAkJWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JCVhMb2dSZWdpc3RlckRhdGEo JnhscmVjLCBTaXplT2ZIYXNoU3F1ZWV6ZVBhZ2UpOworCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJl Yywgc2l6ZW9mKHhsX2hhc2hfc3F1ZWV6ZV9wYWdlKSk7CiAKIAkJLyoKIAkJICogYnVja2V0IGJ1 ZmZlciB3YXMgbm90IGNoYW5nZWQsIGJ1dCBzdGlsbCBuZWVkcyB0byBiZSByZWdpc3RlcmVkIHRv CkBAIC05OTMsNyArOTkzLDcgQEAgcmVhZHBhZ2U6CiAJCQkJCQl4bHJlYy5pc19wcmltX2J1Y2tl dF9zYW1lX3dydCA9ICh3YnVmID09IGJ1Y2tldF9idWYpOwogCiAJCQkJCQlYTG9nQmVnaW5JbnNl cnQoKTsKLQkJCQkJCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZIYXNoTW92ZVBhZ2VD b250ZW50cyk7CisJCQkJCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgc2l6ZW9mKHhsX2hhc2hf bW92ZV9wYWdlX2NvbnRlbnRzKSk7CiAKIAkJCQkJCS8qCiAJCQkJCQkgKiBidWNrZXQgYnVmZmVy IHdhcyBub3QgY2hhbmdlZCwgYnV0IHN0aWxsIG5lZWRzIHRvCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFz aHBhZ2UuYwppbmRleCA2MWEwYmFkYmZhYS4uNGU3NjZkMjU2ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hh c2gvaGFzaHBhZ2UuYwpAQCAtMzk0LDcgKzM5NCw3IEBAIF9oYXNoX2luaXQoUmVsYXRpb24gcmVs LCBkb3VibGUgbnVtX3R1cGxlcywgRm9ya051bWJlciBmb3JrTnVtKQogCQl4bHJlYy5mZmFjdG9y ID0gbWV0YXAtPmhhc2htX2ZmYWN0b3I7CiAKIAkJWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JCVhMb2dS ZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZIYXNoSW5pdE1ldGFQYWdlKTsKKwkJWExvZ1JlZ2lz dGVyRGF0YSgmeGxyZWMsIHNpemVvZih4bF9oYXNoX2luaXRfbWV0YV9wYWdlKSk7CiAJCVhMb2dS ZWdpc3RlckJ1ZmZlcigwLCBtZXRhYnVmLCBSRUdCVUZfV0lMTF9JTklUIHwgUkVHQlVGX1NUQU5E QVJEKTsKIAogCQlyZWNwdHIgPSBYTG9nSW5zZXJ0KFJNX0hBU0hfSUQsIFhMT0dfSEFTSF9JTklU X01FVEFfUEFHRSk7CkBAIC00NjgsNyArNDY4LDcgQEAgX2hhc2hfaW5pdChSZWxhdGlvbiByZWws IGRvdWJsZSBudW1fdHVwbGVzLCBGb3JrTnVtYmVyIGZvcmtOdW0pCiAJCXhscmVjLmJtc2l6ZSA9 IG1ldGFwLT5oYXNobV9ibXNpemU7CiAKIAkJWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JCVhMb2dSZWdp c3RlckRhdGEoJnhscmVjLCBTaXplT2ZIYXNoSW5pdEJpdG1hcFBhZ2UpOworCQlYTG9nUmVnaXN0 ZXJEYXRhKCZ4bHJlYywgc2l6ZW9mKHhsX2hhc2hfaW5pdF9iaXRtYXBfcGFnZSkpOwogCQlYTG9n UmVnaXN0ZXJCdWZmZXIoMCwgYml0bWFwYnVmLCBSRUdCVUZfV0lMTF9JTklUKTsKIAogCQkvKgpA QCAtOTMwLDcgKzkzMCw3IEBAIHJlc3RhcnRfZXhwYW5kOgogCQkJCQkJCQlzaXplb2YodWludDMy KSk7CiAJCX0KIAotCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9mSGFzaFNwbGl0QWxs b2NQYWdlKTsKKwkJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIHNpemVvZih4bF9oYXNoX3NwbGl0 X2FsbG9jYXRlX3BhZ2UpKTsKIAogCQlyZWNwdHIgPSBYTG9nSW5zZXJ0KFJNX0hBU0hfSUQsIFhM T0dfSEFTSF9TUExJVF9BTExPQ0FURV9QQUdFKTsKIApAQCAtMTMwNCw3ICsxMzA0LDcgQEAgX2hh c2hfc3BsaXRidWNrZXQoUmVsYXRpb24gcmVsLAogCiAJCVhMb2dCZWdpbkluc2VydCgpOwogCi0J CVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZIYXNoU3BsaXRDb21wbGV0ZSk7CisJCVhM b2dSZWdpc3RlckRhdGEoJnhscmVjLCBzaXplb2YoeGxfaGFzaF9zcGxpdF9jb21wbGV0ZSkpOwog CiAJCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCBidWNrZXRfb2J1ZiwgUkVHQlVGX1NUQU5EQVJEKTsK IAkJWExvZ1JlZ2lzdGVyQnVmZmVyKDEsIGJ1Y2tldF9uYnVmLCBSRUdCVUZfU1RBTkRBUkQpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBjOGIxZWY3ZDM3Mi4uNGQ0M2IzM2RhZWEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0yMjY4LDcgKzIyNjgsNyBAQCBoZWFwX2luc2Vy dChSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAkJfQog CiAJCVhMb2dCZWdpbkluc2VydCgpOwotCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9m SGVhcEluc2VydCk7CisJCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBzaXplb2YoeGxfaGVhcF9p bnNlcnQpKTsKIAogCQl4bGhkci50X2luZm9tYXNrMiA9IGhlYXB0dXAtPnRfZGF0YS0+dF9pbmZv bWFzazI7CiAJCXhsaGRyLnRfaW5mb21hc2sgPSBoZWFwdHVwLT50X2RhdGEtPnRfaW5mb21hc2s7 CkBAIC0yMjgwLDcgKzIyODAsNyBAQCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgSGVh cFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAkJICogeGxfaGVhcF9oZWFkZXIgaW4gdGhlIHhs b2cuCiAJCSAqLwogCQlYTG9nUmVnaXN0ZXJCdWZmZXIoMCwgYnVmZmVyLCBSRUdCVUZfU1RBTkRB UkQgfCBidWZmbGFncyk7Ci0JCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgJnhsaGRyLCBTaXplT2ZI ZWFwSGVhZGVyKTsKKwkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCAmeGxoZHIsIHNpemVvZih4bF9o ZWFwX2hlYWRlcikpOwogCQkvKiBQRzczRk9STUFUOiB3cml0ZSBiaXRtYXAgWysgcGFkZGluZ10g Wysgb2lkXSArIGRhdGEgKi8KIAkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLAogCQkJCQkJCShjaGFy ICopIGhlYXB0dXAtPnRfZGF0YSArIFNpemVvZkhlYXBUdXBsZUhlYWRlciwKQEAgLTI2NTUsNyAr MjY1NSw3IEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxl U2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJCQkJeGxyZWMtPm9mZnNldHNbaV0gPSBJdGVt UG9pbnRlckdldE9mZnNldE51bWJlcigmaGVhcHR1cC0+dF9zZWxmKTsKIAkJCQkvKiB4bF9tdWx0 aV9pbnNlcnRfdHVwbGUgbmVlZHMgdHdvLWJ5dGUgYWxpZ25tZW50LiAqLwogCQkJCXR1cGhkciA9 ICh4bF9tdWx0aV9pbnNlcnRfdHVwbGUgKikgU0hPUlRBTElHTihzY3JhdGNocHRyKTsKLQkJCQlz Y3JhdGNocHRyID0gKChjaGFyICopIHR1cGhkcikgKyBTaXplT2ZNdWx0aUluc2VydFR1cGxlOwor CQkJCXNjcmF0Y2hwdHIgPSAoKGNoYXIgKikgdHVwaGRyKSArIHNpemVvZih4bF9tdWx0aV9pbnNl cnRfdHVwbGUpOwogCiAJCQkJdHVwaGRyLT50X2luZm9tYXNrMiA9IGhlYXB0dXAtPnRfZGF0YS0+ dF9pbmZvbWFzazI7CiAJCQkJdHVwaGRyLT50X2luZm9tYXNrID0gaGVhcHR1cC0+dF9kYXRhLT50 X2luZm9tYXNrOwpAQCAtMzE3OSw3ICszMTc5LDcgQEAgbDE6CiAJCX0KIAogCQlYTG9nQmVnaW5J bnNlcnQoKTsKLQkJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVPZkhlYXBEZWxldGUpOwor CQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgc2l6ZW9mKHhsX2hlYXBfZGVsZXRlKSk7CiAKIAkJ WExvZ1JlZ2lzdGVyQnVmZmVyKDAsIGJ1ZmZlciwgUkVHQlVGX1NUQU5EQVJEKTsKIApAQCAtMzE5 Miw3ICszMTkyLDcgQEAgbDE6CiAJCQl4bGhkci50X2luZm9tYXNrID0gb2xkX2tleV90dXBsZS0+ dF9kYXRhLT50X2luZm9tYXNrOwogCQkJeGxoZHIudF9ob2ZmID0gb2xkX2tleV90dXBsZS0+dF9k YXRhLT50X2hvZmY7CiAKLQkJCVhMb2dSZWdpc3RlckRhdGEoJnhsaGRyLCBTaXplT2ZIZWFwSGVh ZGVyKTsKKwkJCVhMb2dSZWdpc3RlckRhdGEoJnhsaGRyLCBzaXplb2YoeGxfaGVhcF9oZWFkZXIp KTsKIAkJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgb2xkX2tleV90dXBsZS0+dF9kYXRhCiAJ CQkJCQkJICsgU2l6ZW9mSGVhcFR1cGxlSGVhZGVyLAogCQkJCQkJCSBvbGRfa2V5X3R1cGxlLT50 X2xlbgpAQCAtMzk2MCw3ICszOTYwLDcgQEAgbDI6CiAJCQkJCQkJCQkJCQkgIG9sZHR1cC50X2Rh dGEtPnRfaW5mb21hc2syKTsKIAkJCXhscmVjLmZsYWdzID0KIAkJCQljbGVhcmVkX2FsbF9mcm96 ZW4gPyBYTEhfTE9DS19BTExfRlJPWkVOX0NMRUFSRUQgOiAwOwotCQkJWExvZ1JlZ2lzdGVyRGF0 YSgmeGxyZWMsIFNpemVPZkhlYXBMb2NrKTsKKwkJCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBz aXplb2YoeGxfaGVhcF9sb2NrKSk7CiAJCQlyZWNwdHIgPSBYTG9nSW5zZXJ0KFJNX0hFQVBfSUQs IFhMT0dfSEVBUF9MT0NLKTsKIAkJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRyKTsKIAkJfQpAQCAt NTI5NCw3ICs1Mjk0LDcgQEAgZmFpbGVkOgogCQl4bHJlYy5pbmZvYml0c19zZXQgPSBjb21wdXRl X2luZm9iaXRzKG5ld19pbmZvbWFzaywKIAkJCQkJCQkJCQkJICB0dXBsZS0+dF9kYXRhLT50X2lu Zm9tYXNrMik7CiAJCXhscmVjLmZsYWdzID0gY2xlYXJlZF9hbGxfZnJvemVuID8gWExIX0xPQ0tf QUxMX0ZST1pFTl9DTEVBUkVEIDogMDsKLQkJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVP ZkhlYXBMb2NrKTsKKwkJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIHNpemVvZih4bF9oZWFwX2xv Y2spKTsKIAogCQkvKiB3ZSBkb24ndCBkZWNvZGUgcm93IGxvY2tzIGF0bSwgc28gbm8gbmVlZCB0 byBsb2cgdGhlIG9yaWdpbiAqLwogCkBAIC02MDQ3LDcgKzYwNDcsNyBAQCBsNDoKIAkJCXhscmVj LmZsYWdzID0KIAkJCQljbGVhcmVkX2FsbF9mcm96ZW4gPyBYTEhfTE9DS19BTExfRlJPWkVOX0NM RUFSRUQgOiAwOwogCi0JCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9mSGVhcExvY2tV cGRhdGVkKTsKKwkJCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBzaXplb2YoeGxfaGVhcF9sb2Nr X3VwZGF0ZWQpKTsKIAogCQkJcmVjcHRyID0gWExvZ0luc2VydChSTV9IRUFQMl9JRCwgWExPR19I RUFQMl9MT0NLX1VQREFURUQpOwogCkBAIC02MjExLDcgKzYyMTEsNyBAQCBoZWFwX2ZpbmlzaF9z cGVjdWxhdGl2ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQp CiAJCS8qIFdlIHdhbnQgdGhlIHNhbWUgZmlsdGVyaW5nIG9uIHRoaXMgYXMgb24gYSBwbGFpbiBp bnNlcnQgKi8KIAkJWExvZ1NldFJlY29yZEZsYWdzKFhMT0dfSU5DTFVERV9PUklHSU4pOwogCi0J CVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZIZWFwQ29uZmlybSk7CisJCVhMb2dSZWdp c3RlckRhdGEoJnhscmVjLCBzaXplb2YoeGxfaGVhcF9jb25maXJtKSk7CiAJCVhMb2dSZWdpc3Rl ckJ1ZmZlcigwLCBidWZmZXIsIFJFR0JVRl9TVEFOREFSRCk7CiAKIAkJcmVjcHRyID0gWExvZ0lu c2VydChSTV9IRUFQX0lELCBYTE9HX0hFQVBfQ09ORklSTSk7CkBAIC02MzU2LDcgKzYzNTYsNyBA QCBoZWFwX2Fib3J0X3NwZWN1bGF0aXZlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKnRpZCkKIAkJeGxyZWMueG1heCA9IHhpZDsKIAogCQlYTG9nQmVnaW5JbnNlcnQo KTsKLQkJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVPZkhlYXBEZWxldGUpOworCQlYTG9n UmVnaXN0ZXJEYXRhKCZ4bHJlYywgc2l6ZW9mKHhsX2hlYXBfZGVsZXRlKSk7CiAJCVhMb2dSZWdp c3RlckJ1ZmZlcigwLCBidWZmZXIsIFJFR0JVRl9TVEFOREFSRCk7CiAKIAkJLyogTm8gcmVwbGlj YSBpZGVudGl0eSAmIHJlcGxpY2F0aW9uIG9yaWdpbiBsb2dnZWQgKi8KQEAgLTg4OTYsNyArODg5 Niw3IEBAIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIs IEJ1ZmZlciB2bV9idWZmZXIsCiAJaWYgKFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVj b2RpbmcocmVsKSkKIAkJeGxyZWMuZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0df UkVMOwogCVhMb2dCZWdpbkluc2VydCgpOwotCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXpl T2ZIZWFwVmlzaWJsZSk7CisJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIHNpemVvZih4bF9oZWFw X3Zpc2libGUpKTsKIAogCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCB2bV9idWZmZXIsIDApOwogCkBA IC05MDQ3LDcgKzkwNDcsNyBAQCBsb2dfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsbiwgQnVmZmVy IG9sZGJ1ZiwKIAlpZiAob2xkYnVmICE9IG5ld2J1ZikKIAkJWExvZ1JlZ2lzdGVyQnVmZmVyKDEs IG9sZGJ1ZiwgUkVHQlVGX1NUQU5EQVJEKTsKIAotCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBT aXplT2ZIZWFwVXBkYXRlKTsKKwlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgc2l6ZW9mKHhsX2hl YXBfdXBkYXRlKSk7CiAKIAkvKgogCSAqIFByZXBhcmUgV0FMIGRhdGEgZm9yIHRoZSBuZXcgdHVw bGUuCkBAIC05MDgwLDcgKzkwODAsNyBAQCBsb2dfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsbiwg QnVmZmVyIG9sZGJ1ZiwKIAkgKgogCSAqIFRoZSAnZGF0YScgZG9lc24ndCBpbmNsdWRlIHRoZSBj b21tb24gcHJlZml4IG9yIHN1ZmZpeC4KIAkgKi8KLQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZ4 bGhkciwgU2l6ZU9mSGVhcEhlYWRlcik7CisJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCAmeGxoZHIs IHNpemVvZih4bF9oZWFwX2hlYWRlcikpOwogCWlmIChwcmVmaXhsZW4gPT0gMCkKIAl7CiAJCVhM b2dSZWdpc3RlckJ1ZkRhdGEoMCwKQEAgLTkxMTUsNyArOTExNSw3IEBAIGxvZ19oZWFwX3VwZGF0 ZShSZWxhdGlvbiByZWxuLCBCdWZmZXIgb2xkYnVmLAogCQl4bGhkcl9pZHgudF9pbmZvbWFzayA9 IG9sZF9rZXlfdHVwbGUtPnRfZGF0YS0+dF9pbmZvbWFzazsKIAkJeGxoZHJfaWR4LnRfaG9mZiA9 IG9sZF9rZXlfdHVwbGUtPnRfZGF0YS0+dF9ob2ZmOwogCi0JCVhMb2dSZWdpc3RlckRhdGEoJnhs aGRyX2lkeCwgU2l6ZU9mSGVhcEhlYWRlcik7CisJCVhMb2dSZWdpc3RlckRhdGEoJnhsaGRyX2lk eCwgc2l6ZW9mKHhsX2hlYXBfaGVhZGVyKSk7CiAKIAkJLyogUEc3M0ZPUk1BVDogd3JpdGUgYml0 bWFwIFsrIHBhZGRpbmddIFsrIG9pZF0gKyBkYXRhICovCiAJCVhMb2dSZWdpc3RlckRhdGEoKGNo YXIgKikgb2xkX2tleV90dXBsZS0+dF9kYXRhICsgU2l6ZW9mSGVhcFR1cGxlSGVhZGVyLApAQCAt OTE5NSw3ICs5MTk1LDcgQEAgbG9nX2hlYXBfbmV3X2NpZChSZWxhdGlvbiByZWxhdGlvbiwgSGVh cFR1cGxlIHR1cCkKIAkgKiBjYWxsZWQgdXMgY2VydGFpbmx5IGRpZCwgYnV0IHRoYXQncyBXQUwt bG9nZ2VkIHNlcGFyYXRlbHkuCiAJICovCiAJWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lz dGVyRGF0YSgmeGxyZWMsIFNpemVPZkhlYXBOZXdDaWQpOworCVhMb2dSZWdpc3RlckRhdGEoJnhs cmVjLCBzaXplb2YoeGxfaGVhcF9uZXdfY2lkKSk7CiAKIAkvKiB3aWxsIGJlIGxvb2tlZCBhdCBp cnJlc3BlY3RpdmUgb2Ygb3JpZ2luICovCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxv Zy5jCmluZGV4IDQ2ZmM2ODkzMDJkLi5lYzkwMTQ2MDE5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1feGxvZy5jCkBAIC00MCw4ICs0MCw4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUo WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJU2l6ZQkJZnJlZXNwYWNlID0gMDsKIAogCVhMb2dS ZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgJmJsa25vKTsKLQltZW1j cHkoJnhscmVjLCBtYWluZGF0YXB0ciwgU2l6ZU9mSGVhcFBydW5lKTsKLQltYWluZGF0YXB0ciAr PSBTaXplT2ZIZWFwUHJ1bmU7CisJbWVtY3B5KCZ4bHJlYywgbWFpbmRhdGFwdHIsIHNpemVvZih4 bF9oZWFwX3BydW5lKSk7CisJbWFpbmRhdGFwdHIgKz0gc2l6ZW9mKHhsX2hlYXBfcHJ1bmUpOwog CiAJLyoKIAkgKiBXZSB3aWxsIHRha2UgYW4gb3JkaW5hcnkgZXhjbHVzaXZlIGxvY2sgb3IgYSBj bGVhbnVwIGxvY2sgZGVwZW5kaW5nIG9uCkBAIC01NTksMTAgKzU1OSwxMCBAQCBoZWFwX3hsb2df aW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJCWRhdGEgPSBYTG9nUmVjR2V0Qmxv Y2tEYXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCi0JCW5ld2xlbiA9IGRhdGFsZW4gLSBTaXpl T2ZIZWFwSGVhZGVyOwotCQlBc3NlcnQoZGF0YWxlbiA+IFNpemVPZkhlYXBIZWFkZXIgJiYgbmV3 bGVuIDw9IE1heEhlYXBUdXBsZVNpemUpOwotCQltZW1jcHkoJnhsaGRyLCBkYXRhLCBTaXplT2ZI ZWFwSGVhZGVyKTsKLQkJZGF0YSArPSBTaXplT2ZIZWFwSGVhZGVyOworCQluZXdsZW4gPSBkYXRh bGVuIC0gc2l6ZW9mKHhsX2hlYXBfaGVhZGVyKTsKKwkJQXNzZXJ0KGRhdGFsZW4gPiBzaXplb2Yo eGxfaGVhcF9oZWFkZXIpICYmIG5ld2xlbiA8PSBNYXhIZWFwVHVwbGVTaXplKTsKKwkJbWVtY3B5 KCZ4bGhkciwgZGF0YSwgc2l6ZW9mKHhsX2hlYXBfaGVhZGVyKSk7CisJCWRhdGEgKz0gc2l6ZW9m KHhsX2hlYXBfaGVhZGVyKTsKIAogCQlodHVwID0gJnRidWYuaGRyOwogCQlNZW1TZXQoaHR1cCwg MCwgU2l6ZW9mSGVhcFR1cGxlSGVhZGVyKTsKQEAgLTY5Nyw3ICs2OTcsNyBAQCBoZWFwX3hsb2df bXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCWVsb2coUEFOSUMsICJp bnZhbGlkIG1heCBvZmZzZXQgbnVtYmVyIik7CiAKIAkJCXhsaGRyID0gKHhsX211bHRpX2luc2Vy dF90dXBsZSAqKSBTSE9SVEFMSUdOKHR1cGRhdGEpOwotCQkJdHVwZGF0YSA9ICgoY2hhciAqKSB4 bGhkcikgKyBTaXplT2ZNdWx0aUluc2VydFR1cGxlOworCQkJdHVwZGF0YSA9ICgoY2hhciAqKSB4 bGhkcikgKyBzaXplb2YoeGxfbXVsdGlfaW5zZXJ0X3R1cGxlKTsKIAogCQkJbmV3bGVuID0geGxo ZHItPmRhdGFsZW47CiAJCQlBc3NlcnQobmV3bGVuIDw9IE1heEhlYXBUdXBsZVNpemUpOwpAQCAt OTc4LDggKzk3OCw4IEBAIGhlYXBfeGxvZ191cGRhdGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQs IGJvb2wgaG90X3VwZGF0ZSkKIAkJCXJlY2RhdGEgKz0gc2l6ZW9mKHVpbnQxNik7CiAJCX0KIAot CQltZW1jcHkoJnhsaGRyLCByZWNkYXRhLCBTaXplT2ZIZWFwSGVhZGVyKTsKLQkJcmVjZGF0YSAr PSBTaXplT2ZIZWFwSGVhZGVyOworCQltZW1jcHkoJnhsaGRyLCByZWNkYXRhLCBzaXplb2YoeGxf aGVhcF9oZWFkZXIpKTsKKwkJcmVjZGF0YSArPSBzaXplb2YoeGxfaGVhcF9oZWFkZXIpOwogCiAJ CXR1cGxlbiA9IHJlY2RhdGFfZW5kIC0gcmVjZGF0YTsKIAkJQXNzZXJ0KHR1cGxlbiA8PSBNYXhI ZWFwVHVwbGVTaXplKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggZDYwOWI2 M2VmOTcuLjk2MmFiNzlmNjJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAt MjI5MSw3ICsyMjkxLDcgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJQXNzZXJ0KG5yZWRpcmVjdGVkID09IDAgJiYgbmRlYWQg PT0gMCk7CiAJCS8qIGFsc28sIGFueSBpdGVtcyBpbiAndW51c2VkJyBtdXN0J3ZlIGJlZW4gTFBf REVBRCBwcmV2aW91c2x5ICovCiAJfQotCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZI ZWFwUHJ1bmUpOworCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBzaXplb2YoeGxfaGVhcF9wcnVu ZSkpOwogCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChjb25mbGljdF94aWQpKQogCQlYTG9nUmVn aXN0ZXJEYXRhKCZjb25mbGljdF94aWQsIHNpemVvZihUcmFuc2FjdGlvbklkKSk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCBlMjA1OTBhNTU0Ny4uNmE1YjE1ZTZlZTIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKQEAgLTI1Miw3ICsyNTIsNyBAQCBf YnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIEluZGV4VHVwbGUgbmV3aXRl bSwgU2l6ZSBuZXdpdGVtc3osCiAKIAkJWExvZ0JlZ2luSW5zZXJ0KCk7CiAJCVhMb2dSZWdpc3Rl ckJ1ZmZlcigwLCBidWYsIFJFR0JVRl9TVEFOREFSRCk7Ci0JCVhMb2dSZWdpc3RlckRhdGEoJnhs cmVjX2RlZHVwLCBTaXplT2ZCdHJlZURlZHVwKTsKKwkJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWNf ZGVkdXAsIHNpemVvZih4bF9idHJlZV9kZWR1cCkpOwogCiAJCS8qCiAJCSAqIFRoZSBpbnRlcnZh bHMgYXJyYXkgaXMgbm90IGluIHRoZSBidWZmZXIsIGJ1dCBwcmV0ZW5kIHRoYXQgaXQgaXMuCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYwppbmRleCA3MWE2MmIwNjY5Mi4uZmQyYzM3 NGNkNmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYwpAQCAtMTMyOCw3ICsx MzI4LDcgQEAgX2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAogCQkJeGxyZWMub2ZmbnVtID0g bmV3aXRlbW9mZjsKIAogCQkJWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JCQlYTG9nUmVnaXN0ZXJEYXRh KCZ4bHJlYywgU2l6ZU9mQnRyZWVJbnNlcnQpOworCQkJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMs IHNpemVvZih4bF9idHJlZV9pbnNlcnQpKTsKIAogCQkJaWYgKGlzbGVhZiAmJiBwb3N0aW5nb2Zm ID09IDApCiAJCQl7CkBAIC0xOTk0LDcgKzE5OTQsNyBAQCBfYnRfc3BsaXQoUmVsYXRpb24gcmVs LCBSZWxhdGlvbiBoZWFwcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYsCiAJ CQl4bHJlYy5wb3N0aW5nb2ZmID0gcG9zdGluZ29mZjsKIAogCQlYTG9nQmVnaW5JbnNlcnQoKTsK LQkJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVPZkJ0cmVlU3BsaXQpOworCQlYTG9nUmVn aXN0ZXJEYXRhKCZ4bHJlYywgc2l6ZW9mKHhsX2J0cmVlX3NwbGl0KSk7CiAKIAkJWExvZ1JlZ2lz dGVyQnVmZmVyKDAsIGJ1ZiwgUkVHQlVGX1NUQU5EQVJEKTsKIAkJWExvZ1JlZ2lzdGVyQnVmZmVy KDEsIHJidWYsIFJFR0JVRl9XSUxMX0lOSVQpOwpAQCAtMjU3OCw3ICsyNTc4LDcgQEAgX2J0X25l d2xldmVsKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVmZmVyIGxidWYsIEJ1ZmZl ciByYnVmKQogCQl4bHJlYy5sZXZlbCA9IG1ldGFkLT5idG1fbGV2ZWw7CiAKIAkJWExvZ0JlZ2lu SW5zZXJ0KCk7Ci0JCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZCdHJlZU5ld3Jvb3Qp OworCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgc2l6ZW9mKHhsX2J0cmVlX25ld3Jvb3QpKTsK IAogCQlYTG9nUmVnaXN0ZXJCdWZmZXIoMCwgcm9vdGJ1ZiwgUkVHQlVGX1dJTExfSU5JVCk7CiAJ CVhMb2dSZWdpc3RlckJ1ZmZlcigxLCBsYnVmLCBSRUdCVUZfU1RBTkRBUkQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHBhZ2UuYwppbmRleCA4MGY5ZWMyYzg0Ni4uNDBkNTU4MzQ2MzMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCkBAIC00OTQsNyArNDk0LDcgQEAgX2J0X2dldHJv b3QoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBpbnQgYWNjZXNzKQogCQkJeGxyZWMu cm9vdGJsayA9IHJvb3RibGtubzsKIAkJCXhscmVjLmxldmVsID0gMDsKIAotCQkJWExvZ1JlZ2lz dGVyRGF0YSgmeGxyZWMsIFNpemVPZkJ0cmVlTmV3cm9vdCk7CisJCQlYTG9nUmVnaXN0ZXJEYXRh KCZ4bHJlYywgc2l6ZW9mKHhsX2J0cmVlX25ld3Jvb3QpKTsKIAogCQkJcmVjcHRyID0gWExvZ0lu c2VydChSTV9CVFJFRV9JRCwgWExPR19CVFJFRV9ORVdST09UKTsKIApAQCAtOTQ5LDcgKzk0OSw3 IEBAIF9idF9hbGxvY2J1ZihSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpCiAJCQkJCQlS ZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXByZWwpOwogCiAJCQkJCVhM b2dCZWdpbkluc2VydCgpOwotCQkJCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlY19yZXVzZSwgU2l6 ZU9mQnRyZWVSZXVzZVBhZ2UpOworCQkJCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlY19yZXVzZSwg c2l6ZW9mKHhsX2J0cmVlX3JldXNlX3BhZ2UpKTsKIAogCQkJCQlYTG9nSW5zZXJ0KFJNX0JUUkVF X0lELCBYTE9HX0JUUkVFX1JFVVNFX1BBR0UpOwogCQkJCX0KQEAgLTEyMzQsNyArMTIzNCw3IEBA IF9idF9kZWxpdGVtc192YWN1dW0oUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCiAJCVhMb2dC ZWdpbkluc2VydCgpOwogCQlYTG9nUmVnaXN0ZXJCdWZmZXIoMCwgYnVmLCBSRUdCVUZfU1RBTkRB UkQpOwotCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlY192YWN1dW0sIFNpemVPZkJ0cmVlVmFjdXVt KTsKKwkJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWNfdmFjdXVtLCBzaXplb2YoeGxfYnRyZWVfdmFj dXVtKSk7CiAKIAkJaWYgKG5kZWxldGFibGUgPiAwKQogCQkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgw LCBkZWxldGFibGUsCkBAIC0xMzUyLDcgKzEzNTIsNyBAQCBfYnRfZGVsaXRlbXNfZGVsZXRlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAogCQlYTG9nQmVnaW5JbnNlcnQoKTsKIAkJWExvZ1Jl Z2lzdGVyQnVmZmVyKDAsIGJ1ZiwgUkVHQlVGX1NUQU5EQVJEKTsKLQkJWExvZ1JlZ2lzdGVyRGF0 YSgmeGxyZWNfZGVsZXRlLCBTaXplT2ZCdHJlZURlbGV0ZSk7CisJCVhMb2dSZWdpc3RlckRhdGEo JnhscmVjX2RlbGV0ZSwgc2l6ZW9mKHhsX2J0cmVlX2RlbGV0ZSkpOwogCiAJCWlmIChuZGVsZXRh YmxlID4gMCkKIAkJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgZGVsZXRhYmxlLApAQCAtMTQyMCw3 ICsxNDIwLDcgQEAgX2J0X2RlbGl0ZW1zX3VwZGF0ZShCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJs ZSwgaW50IG51cGRhdGFibGUsCiAJCV9idF91cGRhdGVfcG9zdGluZyh2YWNwb3N0aW5nKTsKIAog CQkvKiBLZWVwIHRyYWNrIG9mIHNpemUgb2YgeGxfYnRyZWVfdXBkYXRlIGZvciB1cGRhdGVkYnVm IGluIHBhc3NpbmcgKi8KLQkJaXRlbXN6ID0gU2l6ZU9mQnRyZWVVcGRhdGUgKyB2YWNwb3N0aW5n LT5uZGVsZXRlZHRpZHMgKiBzaXplb2YodWludDE2KTsKKwkJaXRlbXN6ID0gc2l6ZW9mKHhsX2J0 cmVlX3VwZGF0ZSkgKyB2YWNwb3N0aW5nLT5uZGVsZXRlZHRpZHMgKiBzaXplb2YodWludDE2KTsK IAkJYnVmbGVuICs9IGl0ZW1zejsKIAogCQkvKiBCdWlsZCB1cGRhdGVkb2Zmc2V0cyBidWZmZXIg aW4gcGFzc2luZyAqLwpAQCAtMTQ0Myw4ICsxNDQzLDggQEAgX2J0X2RlbGl0ZW1zX3VwZGF0ZShC VFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCiAKIAkJCXVwZGF0ZS5u ZGVsZXRlZHRpZHMgPSB2YWNwb3N0aW5nLT5uZGVsZXRlZHRpZHM7CiAJCQltZW1jcHkodXBkYXRl ZGJ1ZiArIG9mZnNldCwgJnVwZGF0ZS5uZGVsZXRlZHRpZHMsCi0JCQkJICAgU2l6ZU9mQnRyZWVV cGRhdGUpOwotCQkJb2Zmc2V0ICs9IFNpemVPZkJ0cmVlVXBkYXRlOworCQkJCSAgIHNpemVvZih4 bF9idHJlZV91cGRhdGUpKTsKKwkJCW9mZnNldCArPSBzaXplb2YoeGxfYnRyZWVfdXBkYXRlKTsK IAogCQkJaXRlbXN6ID0gdXBkYXRlLm5kZWxldGVkdGlkcyAqIHNpemVvZih1aW50MTYpOwogCQkJ bWVtY3B5KHVwZGF0ZWRidWYgKyBvZmZzZXQsIHZhY3Bvc3RpbmctPmRlbGV0ZXRpZHMsIGl0ZW1z eik7CkBAIC0yMjcxLDcgKzIyNzEsNyBAQCBfYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0aW9u IHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVmZmVyIGxlYWZidWYsCiAJCXhscmVjLmxlZnRibGsg PSBvcGFxdWUtPmJ0cG9fcHJldjsKIAkJeGxyZWMucmlnaHRibGsgPSBvcGFxdWUtPmJ0cG9fbmV4 dDsKIAotCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9mQnRyZWVNYXJrUGFnZUhhbGZE ZWFkKTsKKwkJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIHNpemVvZih4bF9idHJlZV9tYXJrX3Bh Z2VfaGFsZmRlYWQpKTsKIAogCQlyZWNwdHIgPSBYTG9nSW5zZXJ0KFJNX0JUUkVFX0lELCBYTE9H X0JUUkVFX01BUktfUEFHRV9IQUxGREVBRCk7CiAKQEAgLTI2OTgsNyArMjY5OCw3IEBAIF9idF91 bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCbG9ja051 bWJlciBzY2FuYmxrbm8sCiAJCXhscmVjLmxlYWZyaWdodHNpYiA9IGxlYWZyaWdodHNpYjsKIAkJ eGxyZWMubGVhZnRvcHBhcmVudCA9IGxlYWZ0b3BwYXJlbnQ7CiAKLQkJWExvZ1JlZ2lzdGVyRGF0 YSgmeGxyZWMsIFNpemVPZkJ0cmVlVW5saW5rUGFnZSk7CisJCVhMb2dSZWdpc3RlckRhdGEoJnhs cmVjLCBzaXplb2YoeGxfYnRyZWVfdW5saW5rX3BhZ2UpKTsKIAogCQlpZiAoQnVmZmVySXNWYWxp ZChtZXRhYnVmKSkKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnR4bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYwppbmRleCBkZmY3 ZDI4NmZjOC4uNjIyMjFkNDI0YmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0eGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCkBA IC01NjIsNyArNTYyLDcgQEAgYnRyZWVfeGxvZ191cGRhdGVzKFBhZ2UgcGFnZSwgT2Zmc2V0TnVt YmVyICp1cGRhdGVkb2Zmc2V0cywKIAkJdmFjcG9zdGluZy0+aXR1cCA9IG9yaWd0dXBsZTsKIAkJ dmFjcG9zdGluZy0+bmRlbGV0ZWR0aWRzID0gdXBkYXRlcy0+bmRlbGV0ZWR0aWRzOwogCQltZW1j cHkodmFjcG9zdGluZy0+ZGVsZXRldGlkcywKLQkJCSAgIChjaGFyICopIHVwZGF0ZXMgKyBTaXpl T2ZCdHJlZVVwZGF0ZSwKKwkJCSAgIChjaGFyICopIHVwZGF0ZXMgKyBzaXplb2YoeGxfYnRyZWVf dXBkYXRlKSwKIAkJCSAgIHVwZGF0ZXMtPm5kZWxldGVkdGlkcyAqIHNpemVvZih1aW50MTYpKTsK IAogCQlfYnRfdXBkYXRlX3Bvc3RpbmcodmFjcG9zdGluZyk7CkBAIC01NzcsNyArNTc3LDcgQEAg YnRyZWVfeGxvZ191cGRhdGVzKFBhZ2UgcGFnZSwgT2Zmc2V0TnVtYmVyICp1cGRhdGVkb2Zmc2V0 cywKIAogCQkvKiBhZHZhbmNlIHRvIG5leHQgeGxfYnRyZWVfdXBkYXRlIGZyb20gYXJyYXkgKi8K IAkJdXBkYXRlcyA9ICh4bF9idHJlZV91cGRhdGUgKikKLQkJCSgoY2hhciAqKSB1cGRhdGVzICsg U2l6ZU9mQnRyZWVVcGRhdGUgKworCQkJKChjaGFyICopIHVwZGF0ZXMgKyBzaXplb2YoeGxfYnRy ZWVfdXBkYXRlKSArCiAJCQkgdXBkYXRlcy0+bmRlbGV0ZWR0aWRzICogc2l6ZW9mKHVpbnQxNikp OwogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVz Yy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggMDJhZTkx NjUzYzEuLmU4ZmJmNjA5ZDNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRl c2MvaGVhcGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2Mu YwpAQCAtMjc4LDcgKzI3OCw3IEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCQl7CiAJCQlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKIAot CQkJbWVtY3B5KCZjb25mbGljdF94aWQsIHJlYyArIFNpemVPZkhlYXBQcnVuZSwgc2l6ZW9mKFRy YW5zYWN0aW9uSWQpKTsKKwkJCW1lbWNweSgmY29uZmxpY3RfeGlkLCByZWMgKyBzaXplb2YoeGxf aGVhcF9wcnVuZSksIHNpemVvZihUcmFuc2FjdGlvbklkKSk7CiAKIAkJCWFwcGVuZFN0cmluZ0lu Zm8oYnVmLCAic25hcHNob3RDb25mbGljdEhvcml6b246ICV1IiwKIAkJCQkJCQkgY29uZmxpY3Rf eGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9uYnRkZXNjLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbmJ0ZGVzYy5jCmluZGV4IDFkMDhmOTk1N2Jk Li4wMDc5OWE1ZjQzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL25i dGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbmJ0ZGVzYy5jCkBAIC0y MzYsNyArMjM2LDcgQEAgZGVsdmFjdXVtX2Rlc2MoU3RyaW5nSW5mbyBidWYsIGNoYXIgKmJsb2Nr X2RhdGEsCiAJCXsKIAkJCXVpbnQxNgkgICAqcHRpZDsKIAotCQkJcHRpZCA9ICh1aW50MTYgKikg KChjaGFyICopIHVwZGF0ZXMgKyBTaXplT2ZCdHJlZVVwZGF0ZSkgKyBwOworCQkJcHRpZCA9ICh1 aW50MTYgKikgKChjaGFyICopIHVwZGF0ZXMgKyBzaXplb2YoeGxfYnRyZWVfdXBkYXRlKSkgKyBw OwogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIldSIsICpwdGlkKTsKIAogCQkJaWYgKHAgPCB1 cGRhdGVzLT5uZGVsZXRlZHRpZHMgLSAxKQpAQCAtMjQ3LDcgKzI0Nyw3IEBAIGRlbHZhY3V1bV9k ZXNjKFN0cmluZ0luZm8gYnVmLCBjaGFyICpibG9ja19kYXRhLAogCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZyhidWYsICIsICIpOwogCiAJCXVwZGF0ZXMgPSAoeGxfYnRyZWVfdXBkYXRlICopCi0J CQkoKGNoYXIgKikgdXBkYXRlcyArIFNpemVPZkJ0cmVlVXBkYXRlICsKKwkJCSgoY2hhciAqKSB1 cGRhdGVzICsgc2l6ZW9mKHhsX2J0cmVlX3VwZGF0ZSkgKwogCQkJIHVwZGF0ZXMtPm5kZWxldGVk dGlkcyAqIHNpemVvZih1aW50MTYpKTsKIAl9CiAJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAn XScpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL3hhY3RkZXNjLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MveGFjdGRlc2MuYwppbmRleCA1ZTliMDhiMWRh Yy4uMDY4MWU1NTcyNTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy94 YWN0ZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy94YWN0ZGVzYy5jCkBA IC0xNDAsNyArMTQwLDcgQEAgUGFyc2VDb21taXRSZWNvcmQodWludDggaW5mbywgeGxfeGFjdF9j b21taXQgKnhscmVjLCB4bF94YWN0X3BhcnNlZF9jb21taXQgKnBhcnMKIHZvaWQKIFBhcnNlQWJv cnRSZWNvcmQodWludDggaW5mbywgeGxfeGFjdF9hYm9ydCAqeGxyZWMsIHhsX3hhY3RfcGFyc2Vk X2Fib3J0ICpwYXJzZWQpCiB7Ci0JY2hhcgkgICAqZGF0YSA9ICgoY2hhciAqKSB4bHJlYykgKyBN aW5TaXplT2ZYYWN0QWJvcnQ7CisJY2hhcgkgICAqZGF0YSA9ICgoY2hhciAqKSB4bHJlYykgKyBz aXplb2YoeGxfeGFjdF9hYm9ydCk7CiAKIAltZW1zZXQocGFyc2VkLCAwLCBzaXplb2YoKnBhcnNl ZCkpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jCmluZGV4IDU1MzQ5MDQy ZWQ3Li5hYWVkNDYxYzlkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v Y29tbWl0X3RzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMK QEAgLTk3Miw3ICs5NzIsNyBAQCBXcml0ZVRydW5jYXRlWGxvZ1JlYyhpbnQ2NCBwYWdlbm8sIFRy YW5zYWN0aW9uSWQgb2xkZXN0WGlkKQogCXhscmVjLm9sZGVzdFhpZCA9IG9sZGVzdFhpZDsKIAog CVhMb2dCZWdpbkluc2VydCgpOwotCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZDb21t aXRUc1RydW5jYXRlKTsKKwlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgc2l6ZW9mKHhsX2NvbW1p dF90c190cnVuY2F0ZSkpOwogCSh2b2lkKSBYTG9nSW5zZXJ0KFJNX0NPTU1JVF9UU19JRCwgQ09N TUlUX1RTX1RSVU5DQVRFKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3Qu YwppbmRleCBhMDA1YmJlZDIwOS4uZjY1Nzc2NTAwNTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL211bHRpeGFjdC5jCkBAIC0yODAzLDcgKzI4MDMsNyBAQCBXcml0ZU1UcnVuY2F0ZVhsb2dS ZWMoT2lkIG9sZGVzdE11bHRpREIsCiAJeGxyZWMub2xkZXN0T2Zmc2V0ID0gb2xkZXN0T2Zmc2V0 OwogCiAJWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVP Zk11bHRpWGFjdFRydW5jYXRlKTsKKwlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgc2l6ZW9mKHhs X211bHRpeGFjdF90cnVuY2F0ZSkpOwogCXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fTVVMVElYQUNU X0lELCBYTE9HX01VTFRJWEFDVF9UUlVOQ0FURV9JRCk7CiAJWExvZ0ZsdXNoKHJlY3B0cik7CiB9 CkBAIC0yODY4LDcgKzI4NjgsNyBAQCBtdWx0aXhhY3RfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAkJaW50NjQJCXBhZ2VubzsKIAogCQltZW1jcHkoJnhscmVjLCBYTG9nUmVjR2V0RGF0 YShyZWNvcmQpLAotCQkJICAgU2l6ZU9mTXVsdGlYYWN0VHJ1bmNhdGUpOworCQkJICAgc2l6ZW9m KHhsX211bHRpeGFjdF90cnVuY2F0ZSkpOwogCiAJCWVsb2coREVCVUcxLCAicmVwbGF5aW5nIG11 bHRpeGFjdCB0cnVuY2F0aW9uOiAiCiAJCQkgIm9sZGVzdE11bHRpICV1IChvZmZzZXRzIHNlZ21l bnQgJSIgUFJJeDY0ICIpLCAiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggZGY3MmEy NTY2ZTYuLjk3NTAwYjgyZGRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC02MDk2 LDcgKzYwOTYsNyBAQCBYYWN0TG9nQWJvcnRSZWNvcmQoVGltZXN0YW1wVHogYWJvcnRfdGltZSwK IAogCVhMb2dCZWdpbkluc2VydCgpOwogCi0JWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIE1pblNp emVPZlhhY3RBYm9ydCk7CisJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIHNpemVvZih4bF94YWN0 X2Fib3J0KSk7CiAKIAlpZiAoeGxfeGluZm8ueGluZm8gIT0gMCkKIAkJWExvZ1JlZ2lzdGVyRGF0 YSgmeGxfeGluZm8sIHNpemVvZih4bF94aW5mbykpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ2luc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZ2luc2VydC5jCmluZGV4IGQxYjZmYmVhODFjLi4zYzg1N2IyNGJkOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2luc2VydC5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2dpbnNlcnQuYwpAQCAtODM4LDggKzgzOCw4IEBAIFhMb2dSZWNv cmRBc3NlbWJsZShSbWdySWQgcm1pZCwgdWludDggaW5mbywKIAkJcHJldl9yZWdidWYgPSByZWdi dWY7CiAKIAkJLyogT2ssIGNvcHkgdGhlIGhlYWRlciB0byB0aGUgc2NyYXRjaCBidWZmZXIgKi8K LQkJbWVtY3B5KHNjcmF0Y2gsICZia3BiLCBTaXplT2ZYTG9nUmVjb3JkQmxvY2tIZWFkZXIpOwot CQlzY3JhdGNoICs9IFNpemVPZlhMb2dSZWNvcmRCbG9ja0hlYWRlcjsKKwkJbWVtY3B5KHNjcmF0 Y2gsICZia3BiLCBzaXplb2YoWExvZ1JlY29yZEJsb2NrSGVhZGVyKSk7CisJCXNjcmF0Y2ggKz0g c2l6ZW9mKFhMb2dSZWNvcmRCbG9ja0hlYWRlcik7CiAJCWlmIChpbmNsdWRlX2ltYWdlKQogCQl7 CiAJCQltZW1jcHkoc2NyYXRjaCwgJmJpbWcsIFNpemVPZlhMb2dSZWNvcmRCbG9ja0ltYWdlSGVh ZGVyKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2Rl LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IDg2N2Nm OWQwMTU4Li5jMmE3YzE1OTRiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rl Y29kZS5jCkBAIC05MjMsNyArOTIzLDcgQEAgRGVjb2RlSW5zZXJ0KExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCW1lbWNweSgmY2hhbmdlLT5kYXRh LnRwLnJsb2NhdG9yLCAmdGFyZ2V0X2xvY2F0b3IsIHNpemVvZihSZWxGaWxlTG9jYXRvcikpOwog CiAJdHVwbGVkYXRhID0gWExvZ1JlY0dldEJsb2NrRGF0YShyLCAwLCAmZGF0YWxlbik7Ci0JdHVw bGVsZW4gPSBkYXRhbGVuIC0gU2l6ZU9mSGVhcEhlYWRlcjsKKwl0dXBsZWxlbiA9IGRhdGFsZW4g LSBzaXplb2YoeGxfaGVhcF9oZWFkZXIpOwogCiAJY2hhbmdlLT5kYXRhLnRwLm5ld3R1cGxlID0K IAkJUmVvcmRlckJ1ZmZlckFsbG9jVHVwbGVCdWYoY3R4LT5yZW9yZGVyLCB0dXBsZWxlbik7CkBA IC05NzUsNyArOTc1LDcgQEAgRGVjb2RlVXBkYXRlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCiAJCWRhdGEgPSBYTG9nUmVjR2V0QmxvY2tEYXRh KHIsIDAsICZkYXRhbGVuKTsKIAotCQl0dXBsZWxlbiA9IGRhdGFsZW4gLSBTaXplT2ZIZWFwSGVh ZGVyOworCQl0dXBsZWxlbiA9IGRhdGFsZW4gLSBzaXplb2YoeGxfaGVhcF9oZWFkZXIpOwogCiAJ CWNoYW5nZS0+ZGF0YS50cC5uZXd0dXBsZSA9CiAJCQlSZW9yZGVyQnVmZmVyQWxsb2NUdXBsZUJ1 ZihjdHgtPnJlb3JkZXIsIHR1cGxlbGVuKTsKQEAgLTk4OSw5ICs5ODksOSBAQCBEZWNvZGVVcGRh dGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpCiAJ CVNpemUJCXR1cGxlbGVuOwogCiAJCS8qIGNhdXRpb24sIHJlbWFpbmluZyBkYXRhIGluIHJlY29y ZCBpcyBub3QgYWxpZ25lZCAqLwotCQlkYXRhID0gWExvZ1JlY0dldERhdGEocikgKyBTaXplT2ZI ZWFwVXBkYXRlOwotCQlkYXRhbGVuID0gWExvZ1JlY0dldERhdGFMZW4ocikgLSBTaXplT2ZIZWFw VXBkYXRlOwotCQl0dXBsZWxlbiA9IGRhdGFsZW4gLSBTaXplT2ZIZWFwSGVhZGVyOworCQlkYXRh ID0gWExvZ1JlY0dldERhdGEocikgKyBzaXplb2YoeGxfaGVhcF91cGRhdGUpOworCQlkYXRhbGVu ID0gWExvZ1JlY0dldERhdGFMZW4ocikgLSBzaXplb2YoeGxfaGVhcF91cGRhdGUpOworCQl0dXBs ZWxlbiA9IGRhdGFsZW4gLSBzaXplb2YoeGxfaGVhcF9oZWFkZXIpOwogCiAJCWNoYW5nZS0+ZGF0 YS50cC5vbGR0dXBsZSA9CiAJCQlSZW9yZGVyQnVmZmVyQWxsb2NUdXBsZUJ1ZihjdHgtPnJlb3Jk ZXIsIHR1cGxlbGVuKTsKQEAgLTEwNDMsMTUgKzEwNDMsMTUgQEAgRGVjb2RlRGVsZXRlKExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCS8qIG9sZCBw cmltYXJ5IGtleSBzdG9yZWQgKi8KIAlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0RFTEVURV9DT05U QUlOU19PTEQpCiAJewotCQlTaXplCQlkYXRhbGVuID0gWExvZ1JlY0dldERhdGFMZW4ocikgLSBT aXplT2ZIZWFwRGVsZXRlOwotCQlTaXplCQl0dXBsZWxlbiA9IGRhdGFsZW4gLSBTaXplT2ZIZWFw SGVhZGVyOworCQlTaXplCQlkYXRhbGVuID0gWExvZ1JlY0dldERhdGFMZW4ocikgLSBzaXplb2Yo eGxfaGVhcF9kZWxldGUpOworCQlTaXplCQl0dXBsZWxlbiA9IGRhdGFsZW4gLSBzaXplb2YoeGxf aGVhcF9oZWFkZXIpOwogCi0JCUFzc2VydChYTG9nUmVjR2V0RGF0YUxlbihyKSA+IChTaXplT2ZI ZWFwRGVsZXRlICsgU2l6ZU9mSGVhcEhlYWRlcikpOworCQlBc3NlcnQoWExvZ1JlY0dldERhdGFM ZW4ocikgPiAoc2l6ZW9mKHhsX2hlYXBfZGVsZXRlKSArIHNpemVvZih4bF9oZWFwX2hlYWRlcikp KTsKIAogCQljaGFuZ2UtPmRhdGEudHAub2xkdHVwbGUgPQogCQkJUmVvcmRlckJ1ZmZlckFsbG9j VHVwbGVCdWYoY3R4LT5yZW9yZGVyLCB0dXBsZWxlbik7CiAKLQkJRGVjb2RlWExvZ1R1cGxlKChj aGFyICopIHhscmVjICsgU2l6ZU9mSGVhcERlbGV0ZSwKKwkJRGVjb2RlWExvZ1R1cGxlKChjaGFy ICopIHhscmVjICsgc2l6ZW9mKHhsX2hlYXBfZGVsZXRlKSwKIAkJCQkJCWRhdGFsZW4sIGNoYW5n ZS0+ZGF0YS50cC5vbGR0dXBsZSk7CiAJfQogCkBAIC0xMTU0LDcgKzExNTQsNyBAQCBEZWNvZGVN dWx0aUluc2VydChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIg KmJ1ZikKIAkJbWVtY3B5KCZjaGFuZ2UtPmRhdGEudHAucmxvY2F0b3IsICZybG9jYXRvciwgc2l6 ZW9mKFJlbEZpbGVMb2NhdG9yKSk7CiAKIAkJeGxoZHIgPSAoeGxfbXVsdGlfaW5zZXJ0X3R1cGxl ICopIFNIT1JUQUxJR04oZGF0YSk7Ci0JCWRhdGEgPSAoKGNoYXIgKikgeGxoZHIpICsgU2l6ZU9m TXVsdGlJbnNlcnRUdXBsZTsKKwkJZGF0YSA9ICgoY2hhciAqKSB4bGhkcikgKyBzaXplb2YoeGxf bXVsdGlfaW5zZXJ0X3R1cGxlKTsKIAkJZGF0YWxlbiA9IHhsaGRyLT5kYXRhbGVuOwogCiAJCWNo YW5nZS0+ZGF0YS50cC5uZXd0dXBsZSA9CkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCBzdGF0aWMgdm9p ZAogRGVjb2RlWExvZ1R1cGxlKGNoYXIgKmRhdGEsIFNpemUgbGVuLCBIZWFwVHVwbGUgdHVwbGUp CiB7CiAJeGxfaGVhcF9oZWFkZXIgeGxoZHIgPSB7MH07Ci0JaW50CQkJZGF0YWxlbiA9IGxlbiAt IFNpemVPZkhlYXBIZWFkZXI7CisJaW50CQkJZGF0YWxlbiA9IGxlbiAtIHNpemVvZih4bF9oZWFw X2hlYWRlcik7CiAJSGVhcFR1cGxlSGVhZGVyIGhlYWRlcjsKIAogCUFzc2VydChkYXRhbGVuID49 IDApOwpAQCAtMTI2MSwxMiArMTI2MSwxMiBAQCBEZWNvZGVYTG9nVHVwbGUoY2hhciAqZGF0YSwg U2l6ZSBsZW4sIEhlYXBUdXBsZSB0dXBsZSkKIAl0dXBsZS0+dF90YWJsZU9pZCA9IEludmFsaWRP aWQ7CiAKIAkvKiBkYXRhIGlzIG5vdCBzdG9yZWQgYWxpZ25lZCwgY29weSB0byBhbGlnbmVkIHN0 b3JhZ2UgKi8KLQltZW1jcHkoJnhsaGRyLCBkYXRhLCBTaXplT2ZIZWFwSGVhZGVyKTsKKwltZW1j cHkoJnhsaGRyLCBkYXRhLCBzaXplb2YoeGxfaGVhcF9oZWFkZXIpKTsKIAogCW1lbXNldChoZWFk ZXIsIDAsIFNpemVvZkhlYXBUdXBsZUhlYWRlcik7CiAKIAltZW1jcHkoKChjaGFyICopIHR1cGxl LT50X2RhdGEpICsgU2l6ZW9mSGVhcFR1cGxlSGVhZGVyLAotCQkgICBkYXRhICsgU2l6ZU9mSGVh cEhlYWRlciwKKwkJICAgZGF0YSArIHNpemVvZih4bF9oZWFwX2hlYWRlciksCiAJCSAgIGRhdGFs ZW4pOwogCiAJaGVhZGVyLT50X2luZm9tYXNrID0geGxoZHIudF9pbmZvbWFzazsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9i cmluX3hsb2cuaAppbmRleCBiMjIxMzc5NzBkMy4uNTZjMjJiZTgwMWEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9icmluX3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJp bl94bG9nLmgKQEAgLTUzLDcgKzUzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4 bF9icmluX2NyZWF0ZWlkeAogCXVpbnQxNgkJdmVyc2lvbjsKIAlwZ19wYWRkaW5nXzIocGdfcGFk KTsKIH0geGxfYnJpbl9jcmVhdGVpZHg7Ci0jZGVmaW5lIFNpemVPZkJyaW5DcmVhdGVJZHggKHNp emVvZih4bF9icmluX2NyZWF0ZWlkeCkpCiAKIC8qCiAgKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0 byBrbm93IGFib3V0IGEgQlJJTiB0dXBsZSBpbnNlcnQKQEAgLTczLDcgKzcyLDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9icmluX2luc2VydAogCXBnX3BhZGRpbmdfMihwZ19w YWQpOwogfSB4bF9icmluX2luc2VydDsKIAotI2RlZmluZSBTaXplT2ZCcmluSW5zZXJ0CShzaXpl b2YoeGxfYnJpbl9pbnNlcnQpKQogCiAvKgogICogQSBjcm9zcy1wYWdlIHVwZGF0ZSBpcyB0aGUg c2FtZSBhcyBhbiBpbnNlcnQsIGJ1dCBhbHNvIHN0b3JlcyBpbmZvcm1hdGlvbgpAQCAtOTUsNyAr OTMsNiBAQCB0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2JyaW5fdXBkYXRlCiAJeGxf YnJpbl9pbnNlcnQgaW5zZXJ0OwogfSB4bF9icmluX3VwZGF0ZTsKIAotI2RlZmluZSBTaXplT2ZC cmluVXBkYXRlCShzaXplb2YoeGxfYnJpbl91cGRhdGUpKQogCiAvKgogICogVGhpcyBpcyB3aGF0 IHdlIG5lZWQgdG8ga25vdyBhYm91dCBhIEJSSU4gdHVwbGUgc2FtZXBhZ2UgdXBkYXRlCkBAIC0x MDcsNyArMTA0LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9icmluX3NhbWVw YWdlX3VwZGF0ZQogCU9mZnNldE51bWJlciBvZmZudW07CiB9IHhsX2JyaW5fc2FtZXBhZ2VfdXBk YXRlOwogCi0jZGVmaW5lIFNpemVPZkJyaW5TYW1lcGFnZVVwZGF0ZQkoc2l6ZW9mKHhsX2JyaW5f c2FtZXBhZ2VfdXBkYXRlKSkKIAogLyoKICAqIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtub3cg YWJvdXQgYSByZXZtYXAgZXh0ZW5zaW9uCkBAIC0xMjQsNyArMTIwLDYgQEAgdHlwZWRlZiBzdHJ1 Y3QgUEdfTk9fUEFERElORyB4bF9icmluX3Jldm1hcF9leHRlbmQKIAlCbG9ja051bWJlciB0YXJn ZXRCbGs7CiB9IHhsX2JyaW5fcmV2bWFwX2V4dGVuZDsKIAotI2RlZmluZSBTaXplT2ZCcmluUmV2 bWFwRXh0ZW5kCShzaXplb2YoeGxfYnJpbl9yZXZtYXBfZXh0ZW5kKSkKIAogLyoKICAqIFRoaXMg aXMgd2hhdCB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgYSByYW5nZSBkZS1zdW1tYXJpemF0aW9uCkBA IC0xNDIsNyArMTM3LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9icmluX2Rl c3VtbWFyaXplCiAJcGdfcGFkZGluZ18yKHBnX3BhZCk7CiB9IHhsX2JyaW5fZGVzdW1tYXJpemU7 CiAKLSNkZWZpbmUgU2l6ZU9mQnJpbkRlc3VtbWFyaXplCShzaXplb2YoeGxfYnJpbl9kZXN1bW1h cml6ZSkpCiAKIAogZXh0ZXJuIHZvaWQgYnJpbl9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRfdHMuaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9jb21taXRfdHMuaAppbmRleCA5MmU1MGIwYzgwNi4uYmQ0MzU4ZjhhNWYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRfdHMuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvY29tbWl0X3RzLmgKQEAgLTUzLDcgKzUzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdf Tk9fUEFERElORyB4bF9jb21taXRfdHNfdHJ1bmNhdGUKIAlwZ19wYWRkaW5nXzQocGdfcGFkKTsK IH0geGxfY29tbWl0X3RzX3RydW5jYXRlOwogCi0jZGVmaW5lIFNpemVPZkNvbW1pdFRzVHJ1bmNh dGUJKHNpemVvZih4bF9jb21taXRfdHNfdHJ1bmNhdGUpKQogCiBleHRlcm4gdm9pZCBjb21taXRf dHNfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gdm9pZCBjb21taXRfdHNf ZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lz dHhsb2cuaAppbmRleCBmMTlkNGU4ZGZlNi4uODFhZjlkZmI2Y2IgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxv Zy5oCkBAIC05Nyw3ICs5Nyw2IEBAIHR5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgZ2lzdHhs b2dQYWdlRGVsZXRlCiAJcGdfcGFkZGluZ180KHBnX3BhZDIpOwogfSBnaXN0eGxvZ1BhZ2VEZWxl dGU7CiAKLSNkZWZpbmUgU2l6ZU9mR2lzdHhsb2dQYWdlRGVsZXRlCShzaXplb2YoZ2lzdHhsb2dQ YWdlRGVsZXRlKSkKIAogCiAvKgpAQCAtMTE1LDcgKzExNCw2IEBAIHR5cGVkZWYgc3RydWN0IFBH X05PX1BBRERJTkcgZ2lzdHhsb2dQYWdlUmV1c2UKIAlwZ19wYWRkaW5nXzQocGdfcGFkNCk7CiB9 IGdpc3R4bG9nUGFnZVJldXNlOwogCi0jZGVmaW5lIFNpemVPZkdpc3R4bG9nUGFnZVJldXNlCShz aXplb2YoZ2lzdHhsb2dQYWdlUmV1c2UpKQogCiBleHRlcm4gdm9pZCBnaXN0X3JlZG8oWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIHZvaWQgZ2lzdF9kZXNjKFN0cmluZ0luZm8gYnVm LCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvaGFzaF94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgKaW5kZXggYmI2 YjlkMGZlMTEuLjY2NWZiYmViODBhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFz aF94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCkBAIC02NCw3ICs2 NCw2IEBAIHR5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfaGFzaF9pbnNlcnQKIAlPZmZz ZXROdW1iZXIgb2ZmbnVtOwogfSB4bF9oYXNoX2luc2VydDsKIAotI2RlZmluZSBTaXplT2ZIYXNo SW5zZXJ0CShzaXplb2YoeGxfaGFzaF9pbnNlcnQpKQogCiAvKgogICogVGhpcyBpcyB3aGF0IHdl IG5lZWQgdG8ga25vdyBhYm91dCBhZGRpdGlvbiBvZiBvdmVyZmxvdyBwYWdlLgpAQCAtODQsNyAr ODMsNiBAQCB0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2hhc2hfYWRkX292ZmxfcGFn ZQogCXBnX3BhZGRpbmdfMShwZ19wYWQpOwogfSB4bF9oYXNoX2FkZF9vdmZsX3BhZ2U7CiAKLSNk ZWZpbmUgU2l6ZU9mSGFzaEFkZE92ZmxQYWdlCShzaXplb2YoeGxfaGFzaF9hZGRfb3ZmbF9wYWdl KSkKIAogLyoKICAqIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgYWxsb2NhdGlu ZyBhIHBhZ2UgZm9yIHNwbGl0LgpAQCAtMTA1LDcgKzEwMyw2IEBAIHR5cGVkZWYgc3RydWN0IFBH X05PX1BBRERJTkcgeGxfaGFzaF9zcGxpdF9hbGxvY2F0ZV9wYWdlCiAJcGdfcGFkZGluZ18yKHBn X3BhZDIpOwogfSB4bF9oYXNoX3NwbGl0X2FsbG9jYXRlX3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9m SGFzaFNwbGl0QWxsb2NQYWdlCShzaXplb2YoeGxfaGFzaF9zcGxpdF9hbGxvY2F0ZV9wYWdlKSkK IAogLyoKICAqIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgY29tcGxldGluZyB0 aGUgc3BsaXQgb3BlcmF0aW9uLgpAQCAtMTIxLDcgKzExOCw2IEBAIHR5cGVkZWYgc3RydWN0IFBH X05PX1BBRERJTkcgeGxfaGFzaF9zcGxpdF9jb21wbGV0ZQogCXVpbnQxNgkJbmV3X2J1Y2tldF9m bGFnOwogfSB4bF9oYXNoX3NwbGl0X2NvbXBsZXRlOwogCi0jZGVmaW5lIFNpemVPZkhhc2hTcGxp dENvbXBsZXRlCShzaXplb2YoeGxfaGFzaF9zcGxpdF9jb21wbGV0ZSkpCiAKIC8qCiAgKiBUaGlz IGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IG1vdmUgcGFnZSBjb250ZW50cyByZXF1aXJl ZCBkdXJpbmcKQEAgLTE0Miw3ICsxMzgsNiBAQCB0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5H IHhsX2hhc2hfbW92ZV9wYWdlX2NvbnRlbnRzCiAJcGdfcGFkZGluZ18xKHBnX3BhZCk7CiB9IHhs X2hhc2hfbW92ZV9wYWdlX2NvbnRlbnRzOwogCi0jZGVmaW5lIFNpemVPZkhhc2hNb3ZlUGFnZUNv bnRlbnRzCShzaXplb2YoeGxfaGFzaF9tb3ZlX3BhZ2VfY29udGVudHMpKQogCiAvKgogICogVGhp cyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgc3F1ZWV6ZSBwYWdlIG9wZXJhdGlv bi4KQEAgLTE3MSw3ICsxNjYsNiBAQCB0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2hh c2hfc3F1ZWV6ZV9wYWdlCiAJCQkJCQkJCQkJCSAqIHBhZ2UgKi8KIH0geGxfaGFzaF9zcXVlZXpl X3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9mSGFzaFNxdWVlemVQYWdlCShzaXplb2YoeGxfaGFzaF9z cXVlZXplX3BhZ2UpKQogCiAvKgogICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91 dCB0aGUgZGVsZXRpb24gb2YgaW5kZXggdHVwbGVzIGZyb20gYSBwYWdlLgpAQCAtMTg5LDcgKzE4 Myw2IEBAIHR5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfaGFzaF9kZWxldGUKIAkJCQkJ CQkJCQkgKiBwcmltYXJ5IGJ1Y2tldCBwYWdlICovCiB9IHhsX2hhc2hfZGVsZXRlOwogCi0jZGVm aW5lIFNpemVPZkhhc2hEZWxldGUJKHNpemVvZih4bF9oYXNoX2RlbGV0ZSkpCiAKIC8qCiAgKiBU aGlzIGlzIHdoYXQgd2UgbmVlZCBmb3IgbWV0YXBhZ2UgdXBkYXRlIG9wZXJhdGlvbi4KQEAgLTIw Myw3ICsxOTYsNiBAQCB0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2hhc2hfdXBkYXRl X21ldGFfcGFnZQogCWRvdWJsZQkJbnR1cGxlczsKIH0geGxfaGFzaF91cGRhdGVfbWV0YV9wYWdl OwogCi0jZGVmaW5lIFNpemVPZkhhc2hVcGRhdGVNZXRhUGFnZQkoc2l6ZW9mKHhsX2hhc2hfdXBk YXRlX21ldGFfcGFnZSkpCiAKIC8qCiAgKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBpbml0aWFs aXplIG1ldGFwYWdlLgpAQCAtMjIwLDcgKzIxMiw2IEBAIHR5cGVkZWYgc3RydWN0IFBHX05PX1BB RERJTkcgeGxfaGFzaF9pbml0X21ldGFfcGFnZQogCXBnX3BhZGRpbmdfMihwZ19wYWQpOwogfSB4 bF9oYXNoX2luaXRfbWV0YV9wYWdlOwogCi0jZGVmaW5lIFNpemVPZkhhc2hJbml0TWV0YVBhZ2UJ KHNpemVvZih4bF9oYXNoX2luaXRfbWV0YV9wYWdlKSkKIAogLyoKICAqIFRoaXMgaXMgd2hhdCB3 ZSBuZWVkIHRvIGluaXRpYWxpemUgYml0bWFwIHBhZ2UuCkBAIC0yMzUsNyArMjI2LDYgQEAgdHlw ZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9oYXNoX2luaXRfYml0bWFwX3BhZ2UKIAl1aW50 MTYJCWJtc2l6ZTsKIH0geGxfaGFzaF9pbml0X2JpdG1hcF9wYWdlOwogCi0jZGVmaW5lIFNpemVP Zkhhc2hJbml0Qml0bWFwUGFnZQkoc2l6ZW9mKHhsX2hhc2hfaW5pdF9iaXRtYXBfcGFnZSkpCiAK IC8qCiAgKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCBmb3IgaW5kZXggdHVwbGUgZGVsZXRpb24gYW5k IHRvCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IDc0YTM4MDNhZDE0Li5hZDgzMTZmZGEy YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTExOCw3ICsxMTgsNiBAQCB0eXBlZGVm IHN0cnVjdCBQR19OT19QQURESU5HIHhsX2hlYXBfZGVsZXRlCiAJdWludDgJCWZsYWdzOwogfSB4 bF9oZWFwX2RlbGV0ZTsKIAotI2RlZmluZSBTaXplT2ZIZWFwRGVsZXRlCXNpemVvZih4bF9oZWFw X2RlbGV0ZSkKIAogLyoKICAqIHhsX2hlYXBfdHJ1bmNhdGUgZmxhZyB2YWx1ZXMsIDggYml0cyBh cmUgYXZhaWxhYmxlLgpAQCAtMTU3LDcgKzE1Niw2IEBAIHR5cGVkZWYgc3RydWN0IFBHX05PX1BB RERJTkcgeGxfaGVhcF9oZWFkZXIKIAlwZ19wYWRkaW5nXzEocGdfcGFkKTsKIH0geGxfaGVhcF9o ZWFkZXI7CiAKLSNkZWZpbmUgU2l6ZU9mSGVhcEhlYWRlcglzaXplb2YoeGxfaGVhcF9oZWFkZXIp CiAKIC8qIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgaW5zZXJ0ICovCiB0eXBl ZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2hlYXBfaW5zZXJ0CkBAIC0xNjksNyArMTY3LDYg QEAgdHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9oZWFwX2luc2VydAogCS8qIHhsX2hl YXBfaGVhZGVyICYgVFVQTEUgREFUQSBpbiBiYWNrdXAgYmxvY2sgMCAqLwogfSB4bF9oZWFwX2lu c2VydDsKIAotI2RlZmluZSBTaXplT2ZIZWFwSW5zZXJ0CXNpemVvZih4bF9oZWFwX2luc2VydCkK IAogLyoKICAqIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgYSBtdWx0aS1pbnNl cnQuCkBAIC0yMDIsNyArMTk5LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9t dWx0aV9pbnNlcnRfdHVwbGUKIAkvKiBUVVBMRSBEQVRBIEZPTExPV1MgQVQgRU5EIE9GIFNUUlVD VCAqLwogfSB4bF9tdWx0aV9pbnNlcnRfdHVwbGU7CiAKLSNkZWZpbmUgU2l6ZU9mTXVsdGlJbnNl cnRUdXBsZQlzaXplb2YoeGxfbXVsdGlfaW5zZXJ0X3R1cGxlKQogCiAvKgogICogVGhpcyBpcyB3 aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCB1cGRhdGV8aG90X3VwZGF0ZQpAQCAtMjM3LDcgKzIz Myw2IEBAIHR5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfaGVhcF91cGRhdGUKIAkgKi8K IH0geGxfaGVhcF91cGRhdGU7CiAKLSNkZWZpbmUgU2l6ZU9mSGVhcFVwZGF0ZQlzaXplb2YoeGxf aGVhcF91cGRhdGUpCiAKIC8qCiAgKiBUaGVzZSBzdHJ1Y3R1cmVzIGFuZCBmbGFncyBlbmNvZGUg VkFDVVVNIHBydW5pbmcgYW5kIGZyZWV6aW5nIGFuZCBvbi1hY2Nlc3MKQEAgLTI5OSw3ICsyOTQs NiBAQCB0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2hlYXBfcHJ1bmUKIAkgKi8KIH0g eGxfaGVhcF9wcnVuZTsKIAotI2RlZmluZSBTaXplT2ZIZWFwUHJ1bmUgc2l6ZW9mKHhsX2hlYXBf cHJ1bmUpCiAKIC8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbCBk ZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAjZGVmaW5lCQlYTEhQX0lTX0NBVEFMT0dfUkVMCQkJKDEg PDwgMSkKQEAgLTQxOCw3ICs0MTIsNiBAQCB0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhs X2hlYXBfbG9jawogCXVpbnQ4CQlmbGFnczsJCQkvKiBYTEhfTE9DS18qIGZsYWcgYml0cyAqLwog fSB4bF9oZWFwX2xvY2s7CiAKLSNkZWZpbmUgU2l6ZU9mSGVhcExvY2sJc2l6ZW9mKHhsX2hlYXBf bG9jaykKIAogLyogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBsb2NraW5nIGFu IHVwZGF0ZWQgdmVyc2lvbiBvZiBhIHJvdyAqLwogdHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElO RyB4bF9oZWFwX2xvY2tfdXBkYXRlZApAQCAtNDI5LDcgKzQyMiw2IEBAIHR5cGVkZWYgc3RydWN0 IFBHX05PX1BBRERJTkcgeGxfaGVhcF9sb2NrX3VwZGF0ZWQKIAl1aW50OAkJZmxhZ3M7CiB9IHhs X2hlYXBfbG9ja191cGRhdGVkOwogCi0jZGVmaW5lIFNpemVPZkhlYXBMb2NrVXBkYXRlZAlzaXpl b2YoeGxfaGVhcF9sb2NrX3VwZGF0ZWQpCiAKIC8qIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtu b3cgYWJvdXQgY29uZmlybWF0aW9uIG9mIHNwZWN1bGF0aXZlIGluc2VydGlvbiAqLwogdHlwZWRl ZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9oZWFwX2NvbmZpcm0KQEAgLTQzNyw3ICs0MjksNiBA QCB0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2hlYXBfY29uZmlybQogCU9mZnNldE51 bWJlciBvZmZudW07CQkvKiBjb25maXJtZWQgdHVwbGUncyBvZmZzZXQgb24gcGFnZSAqLwogfSB4 bF9oZWFwX2NvbmZpcm07CiAKLSNkZWZpbmUgU2l6ZU9mSGVhcENvbmZpcm0Jc2l6ZW9mKHhsX2hl YXBfY29uZmlybSkKIAogLyogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBpbi1w bGFjZSB1cGRhdGUgKi8KIHR5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfaGVhcF9pbnBs YWNlCkBAIC00NjksNyArNDYwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9o ZWFwX3Zpc2libGUKIAlwZ19wYWRkaW5nXzIocGdfcGFkMik7CiB9IHhsX2hlYXBfdmlzaWJsZTsK IAotI2RlZmluZSBTaXplT2ZIZWFwVmlzaWJsZSBzaXplb2YoeGxfaGVhcF92aXNpYmxlKQogCiB0 eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2hlYXBfbmV3X2NpZAogewpAQCAtNDkwLDcg KzQ4MCw2IEBAIHR5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfaGVhcF9uZXdfY2lkCiAJ cGdfcGFkZGluZ18yKHBnX3BhZCk7CiB9IHhsX2hlYXBfbmV3X2NpZDsKIAotI2RlZmluZSBTaXpl T2ZIZWFwTmV3Q2lkIHNpemVvZih4bF9oZWFwX25ld19jaWQpCiAKIC8qIGxvZ2ljYWwgcmV3cml0 ZSB4bG9nIHJlY29yZCBoZWFkZXIgKi8KIHR5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxf aGVhcF9yZXdyaXRlX21hcHBpbmcKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0 aXhhY3QuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAppbmRleCAzZmU0NTAxZDI3 Zi4uMDZhYTQ2MzI3NjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3Qu aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKQEAgLTkyLDcgKzkyLDYgQEAg dHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9tdWx0aXhhY3RfdHJ1bmNhdGUKIAlNdWx0 aVhhY3RPZmZzZXQgb2xkZXN0T2Zmc2V0OwogfSB4bF9tdWx0aXhhY3RfdHJ1bmNhdGU7CiAKLSNk ZWZpbmUgU2l6ZU9mTXVsdGlYYWN0VHJ1bmNhdGUgKHNpemVvZih4bF9tdWx0aXhhY3RfdHJ1bmNh dGUpKQogCiAKIGV4dGVybiBNdWx0aVhhY3RJZCBNdWx0aVhhY3RJZENyZWF0ZShUcmFuc2FjdGlv bklkIHhpZDEsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaAppbmRleCA4OTE4ZDY3NWRjZS4uMWE2Y2ZkM2RmYmYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL25idHhsb2cuaApAQCAtODYsNyArODYsNiBAQCB0eXBlZGVmIHN0cnVjdCBQR19O T19QQURESU5HIHhsX2J0cmVlX2luc2VydAogCS8qIE5FVyBUVVBMRSBBTFdBWVMgRk9MTE9XUyBB VCBUSEUgRU5EICovCiB9IHhsX2J0cmVlX2luc2VydDsKIAotI2RlZmluZSBTaXplT2ZCdHJlZUlu c2VydAlzaXplb2YoeGxfYnRyZWVfaW5zZXJ0KQogCiAvKgogICogT24gaW5zZXJ0IHdpdGggc3Bs aXQsIHdlIHNhdmUgYWxsIHRoZSBpdGVtcyBnb2luZyBpbnRvIHRoZSByaWdodCBzaWJsaW5nCkBA IC0xNjEsNyArMTYwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9idHJlZV9z cGxpdAogCXBnX3BhZGRpbmdfMihwZ19wYWQpOwogfSB4bF9idHJlZV9zcGxpdDsKIAotI2RlZmlu ZSBTaXplT2ZCdHJlZVNwbGl0CXNpemVvZih4bF9idHJlZV9zcGxpdCkKIAogLyoKICAqIFdoZW4g cGFnZSBpcyBkZWR1cGxpY2F0ZWQsIGNvbnNlY3V0aXZlIGdyb3VwcyBvZiB0dXBsZXMgd2l0aCBl cXVhbCBrZXlzIGFyZQpAQCAtMTc3LDcgKzE3NSw2IEBAIHR5cGVkZWYgc3RydWN0IFBHX05PX1BB RERJTkcgeGxfYnRyZWVfZGVkdXAKIAkvKiBERURVUExJQ0FUSU9OIElOVEVSVkFMUyBGT0xMT1cg Ki8KIH0geGxfYnRyZWVfZGVkdXA7CiAKLSNkZWZpbmUgU2l6ZU9mQnRyZWVEZWR1cAlzaXplb2Yo eGxfYnRyZWVfZGVkdXApCiAKIC8qCiAgKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFi b3V0IHBhZ2UgcmV1c2Ugd2l0aGluIGJ0cmVlLiAgVGhpcyByZWNvcmQKQEAgLTE5OCw3ICsxOTUs NiBAQCB0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2J0cmVlX3JldXNlX3BhZ2UKIAlw Z19wYWRkaW5nXzQocGdfcGFkNCk7CiB9IHhsX2J0cmVlX3JldXNlX3BhZ2U7CiAKLSNkZWZpbmUg U2l6ZU9mQnRyZWVSZXVzZVBhZ2UJc2l6ZW9mKHhsX2J0cmVlX3JldXNlX3BhZ2UpCiAKIC8qCiAg KiB4bF9idHJlZV92YWN1dW0gYW5kIHhsX2J0cmVlX2RlbGV0ZSByZWNvcmRzIGRlc2NyaWJlIGRl bGV0aW9uIG9mIGluZGV4CkBAIC0yNDAsNyArMjM2LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdfTk9f UEFERElORyB4bF9idHJlZV92YWN1dW0KIAkgKi8KIH0geGxfYnRyZWVfdmFjdXVtOwogCi0jZGVm aW5lIFNpemVPZkJ0cmVlVmFjdXVtCXNpemVvZih4bF9idHJlZV92YWN1dW0pCiAKIHR5cGVkZWYg c3RydWN0IFBHX05PX1BBRERJTkcgeGxfYnRyZWVfZGVsZXRlCiB7CkBAIC0yNjEsNyArMjU2LDYg QEAgdHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9idHJlZV9kZWxldGUKIAkgKi8KIH0g eGxfYnRyZWVfZGVsZXRlOwogCi0jZGVmaW5lIFNpemVPZkJ0cmVlRGVsZXRlCXNpemVvZih4bF9i dHJlZV9kZWxldGUpCiAKIC8qCiAgKiBUaGUgb2Zmc2V0cyB0aGF0IGFwcGVhciBpbiB4bF9idHJl ZV91cGRhdGUgbWV0YWRhdGEgYXJlIG9mZnNldHMgaW50byB0aGUKQEAgLTI3Niw3ICsyNzAsNiBA QCB0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2J0cmVlX3VwZGF0ZQogCS8qIFBPU1RJ TkcgTElTVCB1aW50MTYgT0ZGU0VUUyBUTyBBIERFTEVURUQgVElEIEZPTExPVyAqLwogfSB4bF9i dHJlZV91cGRhdGU7CiAKLSNkZWZpbmUgU2l6ZU9mQnRyZWVVcGRhdGUJc2l6ZW9mKHhsX2J0cmVl X3VwZGF0ZSkKIAogLyoKICAqIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgbWFy a2luZyBhbiBlbXB0eSBzdWJ0cmVlIGZvciBkZWxldGlvbi4KQEAgLTMwMCw3ICsyOTMsNiBAQCB0 eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2J0cmVlX21hcmtfcGFnZV9oYWxmZGVhZAog CUJsb2NrTnVtYmVyIHRvcHBhcmVudDsJCS8qIHRvcG1vc3QgaW50ZXJuYWwgcGFnZSBpbiB0aGUg c3VidHJlZSAqLwogfSB4bF9idHJlZV9tYXJrX3BhZ2VfaGFsZmRlYWQ7CiAKLSNkZWZpbmUgU2l6 ZU9mQnRyZWVNYXJrUGFnZUhhbGZEZWFkIHNpemVvZih4bF9idHJlZV9tYXJrX3BhZ2VfaGFsZmRl YWQpCiAKIC8qCiAgKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IGRlbGV0aW9u IG9mIGEgYnRyZWUgcGFnZS4gIE5vdGUgdGhhdCB3ZQpAQCAtMzM5LDcgKzMzMSw2IEBAIHR5cGVk ZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfYnRyZWVfdW5saW5rX3BhZ2UKIAkvKiB4bF9idHJl ZV9tZXRhZGF0YSBGT0xMT1dTIElGIFhMT0dfQlRSRUVfVU5MSU5LX1BBR0VfTUVUQSAqLwogfSB4 bF9idHJlZV91bmxpbmtfcGFnZTsKIAotI2RlZmluZSBTaXplT2ZCdHJlZVVubGlua1BhZ2UJc2l6 ZW9mKHhsX2J0cmVlX3VubGlua19wYWdlKQogCiAvKgogICogTmV3IHJvb3QgbG9nIHJlY29yZC4g IFRoZXJlIGFyZSB6ZXJvIHR1cGxlcyBpZiB0aGlzIGlzIHRvIGVzdGFibGlzaCBhbgpAQCAtMzU4 LDcgKzM0OSw2IEBAIHR5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfYnRyZWVfbmV3cm9v dAogCXVpbnQzMgkJbGV2ZWw7CQkJLyogaXRzIHRyZWUgbGV2ZWwgKi8KIH0geGxfYnRyZWVfbmV3 cm9vdDsKIAotI2RlZmluZSBTaXplT2ZCdHJlZU5ld3Jvb3QJc2l6ZW9mKHhsX2J0cmVlX25ld3Jv b3QpCiAKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94YWN0LmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MveGFjdC5oCmluZGV4IGQ5NjE3YjIzNWJkLi4wODJlMzc2MGNmYyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hhY3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MveGFjdC5oCkBAIC0zNDgsNyArMzQ4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElO RyB4bF94YWN0X2Fib3J0CiAJLyogdHdvcGhhc2VfZ2lkIGZvbGxvd3MgaWYgWElORk9fSEFTX0dJ RC4gQXMgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLiAqLwogCS8qIHhsX3hhY3Rfb3JpZ2luIGZv bGxvd3MgaWYgWElORk9fSEFTX09SSUdJTiwgc3RvcmVkIHVuYWxpZ25lZCEgKi8KIH0geGxfeGFj dF9hYm9ydDsKLSNkZWZpbmUgTWluU2l6ZU9mWGFjdEFib3J0IHNpemVvZih4bF94YWN0X2Fib3J0 KQogCiB0eXBlZGVmIHN0cnVjdCB4bF94YWN0X3ByZXBhcmUKIHsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy94bG9ncmVjb3JkLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY29y ZC5oCmluZGV4IDhjNzQ5OTg2MDdkLi4zZGEwZTNhNDA3OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvYWNjZXNzL3hsb2dyZWNvcmQuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY29y ZC5oCkBAIC0xMTIsNyArMTEyLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyBYTG9n UmVjb3JkQmxvY2tIZWFkZXIKIAkvKiBCbG9ja051bWJlciBmb2xsb3dzICovCiB9IFhMb2dSZWNv cmRCbG9ja0hlYWRlcjsKIAotI2RlZmluZSBTaXplT2ZYTG9nUmVjb3JkQmxvY2tIZWFkZXIgKHNp emVvZihYTG9nUmVjb3JkQmxvY2tIZWFkZXIpKQogCiAvKgogICogQWRkaXRpb25hbCBoZWFkZXIg aW5mb3JtYXRpb24gd2hlbiBhIGZ1bGwtcGFnZSBpbWFnZSBpcyBpbmNsdWRlZApAQCAtMTg0LDcg KzE4Myw3IEBAIHR5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgWExvZ1JlY29yZEJsb2NrQ29t cHJlc3NIZWFkZXIKICAqIHRlbXBvcmFyeSBidWZmZXIgZm9yIGNvbnN0cnVjdGluZyB0aGUgaGVh ZGVyLgogICovCiAjZGVmaW5lIE1heFNpemVPZlhMb2dSZWNvcmRCbG9ja0hlYWRlciBcCi0JKFNp emVPZlhMb2dSZWNvcmRCbG9ja0hlYWRlciArIFwKKwkoc2l6ZW9mKFhMb2dSZWNvcmRCbG9ja0hl YWRlcikgKyBcCiAJIFNpemVPZlhMb2dSZWNvcmRCbG9ja0ltYWdlSGVhZGVyICsgXAogCSBTaXpl T2ZYTG9nUmVjb3JkQmxvY2tDb21wcmVzc0hlYWRlciArIFwKIAkgc2l6ZW9mKFJlbEZpbGVMb2Nh dG9yKSArIFwKLS0gCjIuNDMuMAoK --0000000000000f63ed064d3cbf06 Content-Type: application/octet-stream; name="0001-Integrate-pg-tidy-clang-tidy-plugin-into-the-Postgre.patch" Content-Disposition: attachment; filename="0001-Integrate-pg-tidy-clang-tidy-plugin-into-the-Postgre.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmuyfx230 RnJvbSA1MjRiMTkzZTllOTVmOTZjMjQyOTBmMzdkYjU5MGIzMzBjMDc3ZWVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEu Y29tPgpEYXRlOiBUdWUsIDE3IE1hciAyMDI2IDE2OjE5OjI0ICswMDAwClN1YmplY3Q6IFtQQVRD SCAxLzRdIEludGVncmF0ZSBwZy10aWR5IGNsYW5nLXRpZHkgcGx1Z2luIGludG8gdGhlIFBvc3Rn cmVTUUwKIG1lc29uIGJ1aWxkCgpBZGQgcGctdGlkeSwgYSBjbGFuZy10aWR5IHBsdWdpbiB3aXRo IFBvc3RncmVTUUwtc3BlY2lmaWMgY2hlY2tzLCB0byB0aGUKbWVzb24gYnVpbGQgc3lzdGVtIGFz IGFuIG9wdGlvbmFsIGNvbXBvbmVudCAob2ZmIGJ5IGRlZmF1bHQpLgoKVGhlIHBnX3RpZHkgb3B0 aW9uIHJlcXVpcmVzIExMVk0vY2xhbmcgZGV2ZWxvcG1lbnQgbGlicmFyaWVzIGFuZApjbGFuZy10 aWR5IHRvIGJlIGF2YWlsYWJsZS4gIFdoZW4gZW5hYmxlZCwgaXQgYnVpbGRzIHRoZSBwZ190aWR5 IHNoYXJlZAptb2R1bGUgYW5kIHJ1bnMgY2xhbmctdGlkeSB3aXRoIG9ubHkgcGctc3BlY2lmaWMg Y2hlY2tzIG9uIGFsbCBzb3VyY2UKZmlsZXMgYXMgcGFydCBvZiB0aGUgZGVmYXVsdCBidWlsZC4K ClRoZSBMTFZNIGRldGVjdGlvbiBpcyBleHRlbmRlZCBzbyB0aGF0IHBnX3RpZHk9ZW5hYmxlZCB0 cmlnZ2VycyBMTFZNCmRldGVjdGlvbiBldmVuIHdoZW4gbGx2bT1kaXNhYmxlZCAoZm9yIEpJVCku ICBBIG5ldyBsbHZtX2ppdF9lbmFibGVkCnZhcmlhYmxlIGdhdGVzIHRoZSBKSVQgbW9kdWxlIHNl cGFyYXRlbHkgZnJvbSB0aGUgTExWTSBkZXBlbmRlbmN5LgotLS0KIG1lc29uLmJ1aWxkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0NSArKysrKystCiBtZXNvbl9vcHRpb25z LnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvaml0 L2xsdm0vbWVzb24uYnVpbGQgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvbWVzb24uYnVpbGQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL3Rvb2xzL3BnLXRpZHkv aW5jbHVkZS9wZ190aWR5LmggICAgICAgICAgIHwgIDEyICsrCiBzcmMvdG9vbHMvcGctdGlkeS9t ZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgfCAgNjkgKysrKysrKysrKwogc3JjL3Rvb2xzL3Bn LXRpZHkvcnVuX3BnX3RpZHlfZmlsZS5weSAgICAgICAgIHwgIDM1ICsrKysrKwogc3JjL3Rvb2xz L3BnLXRpZHkvc3JjL1BnTm9QYWRkaW5nQ2hlY2suY3BwICAgIHwgMTA4ICsrKysrKysrKysrKysr KysKIHNyYy90b29scy9wZy10aWR5L3NyYy9QZ05vUGFkZGluZ0NoZWNrLmggICAgICB8ICAyMSAr KysrCiAuLi4vcGctdGlkeS9zcmMvUGdOb1BhZGRpbmdJbml0Q2hlY2suY3BwICAgICAgfCAgNDQg KysrKysrKwogc3JjL3Rvb2xzL3BnLXRpZHkvc3JjL1BnTm9QYWRkaW5nSW5pdENoZWNrLmggIHwg IDE4ICsrKwogLi4uL3BnLXRpZHkvc3JjL1BnUmVxdWlyZXNOb1BhZGRpbmdDaGVjay5jcHAgIHwg IDg5ICsrKysrKysrKysrKysKIC4uLi9wZy10aWR5L3NyYy9QZ1JlcXVpcmVzTm9QYWRkaW5nQ2hl Y2suaCAgICB8ICAxOCArKysKIHNyYy90b29scy9wZy10aWR5L3NyYy9QZ1RpZHlNb2R1bGUuY3Bw ICAgICAgICB8ICAyMiArKysrCiBzcmMvdG9vbHMvcGctdGlkeS90ZXN0L2xpdC5jZmcucHkgICAg ICAgICAgICAgfCAgIDAKIHNyYy90b29scy9wZy10aWR5L3Rlc3QvbGl0LnNpdGUuY2ZnLnB5Lmlu ICAgICB8ICAxNSArKysKIHNyYy90b29scy9wZy10aWR5L3Rlc3QvcGctbm8tcGFkZGluZy1pbml0 LmMgICB8ICAyOCArKysrKwogc3JjL3Rvb2xzL3BnLXRpZHkvdGVzdC9wZy1uby1wYWRkaW5nLmMg ICAgICAgIHwgMTE4ICsrKysrKysrKysrKysrKysrKwogLi4uL3BnLXRpZHkvdGVzdC9wZy1yZXF1 aXJlcy1uby1wYWRkaW5nLmMgICAgIHwgIDU0ICsrKysrKysrCiAxOSBmaWxlcyBjaGFuZ2VkLCA2 OTcgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dG9vbHMvcGctdGlkeS9pbmNsdWRlL3BnX3RpZHkuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 b29scy9wZy10aWR5L21lc29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rvb2xzL3Bn LXRpZHkvcnVuX3BnX3RpZHlfZmlsZS5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90b29scy9w Zy10aWR5L3NyYy9QZ05vUGFkZGluZ0NoZWNrLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 b29scy9wZy10aWR5L3NyYy9QZ05vUGFkZGluZ0NoZWNrLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdG9vbHMvcGctdGlkeS9zcmMvUGdOb1BhZGRpbmdJbml0Q2hlY2suY3BwCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rvb2xzL3BnLXRpZHkvc3JjL1BnTm9QYWRkaW5nSW5pdENoZWNrLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdG9vbHMvcGctdGlkeS9zcmMvUGdSZXF1aXJlc05vUGFkZGlu Z0NoZWNrLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90b29scy9wZy10aWR5L3NyYy9QZ1Jl cXVpcmVzTm9QYWRkaW5nQ2hlY2suaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90b29scy9wZy10 aWR5L3NyYy9QZ1RpZHlNb2R1bGUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rvb2xzL3Bn LXRpZHkvdGVzdC9saXQuY2ZnLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rvb2xzL3BnLXRp ZHkvdGVzdC9saXQuc2l0ZS5jZmcucHkuaW4KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdG9vbHMv cGctdGlkeS90ZXN0L3BnLW5vLXBhZGRpbmctaW5pdC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rvb2xzL3BnLXRpZHkvdGVzdC9wZy1uby1wYWRkaW5nLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdG9vbHMvcGctdGlkeS90ZXN0L3BnLXJlcXVpcmVzLW5vLXBhZGRpbmcuYwoKZGlmZiAtLWdp dCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKaW5kZXggNTEyMjcwNjQ3N2QuLmIwZDI0ZTk4 MGFmIDEwMDY0NAotLS0gYS9tZXNvbi5idWlsZAorKysgYi9tZXNvbi5idWlsZApAQCAtOTI2LDEz ICs5MjYsMjUgQEAgZW5kaWYKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBsbHZtb3B0ID0gZ2V0X29wdGlvbignbGx2bScp CitwZ190aWR5X29wdCA9IGdldF9vcHRpb24oJ3BnX3RpZHknKQogbGx2bSA9IG5vdF9mb3VuZF9k ZXAKK2xsdm1fYmlucGF0aCA9ICcnCitwZ190aWR5X2VuYWJsZWQgPSBmYWxzZQogaWYgaGF2ZV9j eHgKLSAgbGx2bSA9IGRlcGVuZGVuY3koJ2xsdm0nLCB2ZXJzaW9uOiAnPj0xNCcsIG1ldGhvZDog J2NvbmZpZy10b29sJywgcmVxdWlyZWQ6IGxsdm1vcHQpCisgICMgRGV0ZWN0IExMVk0gaWYgbmVl ZGVkIGZvciBKSVQgb3IgcGdfdGlkeQorICBsbHZtX3JlcXVpcmVkID0gbGx2bW9wdC5lbmFibGVk KCkgb3IgcGdfdGlkeV9vcHQuZW5hYmxlZCgpCisgIGxsdm1fbmVlZGVkID0gbm90IGxsdm1vcHQu ZGlzYWJsZWQoKSBvciBub3QgcGdfdGlkeV9vcHQuZGlzYWJsZWQoKQorICBpZiBsbHZtX25lZWRl ZAorICAgIGxsdm0gPSBkZXBlbmRlbmN5KCdsbHZtJywgdmVyc2lvbjogJz49MTQnLCBtZXRob2Q6 ICdjb25maWctdG9vbCcsCisgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGxsdm1fcmVx dWlyZWQpCisgIGVuZGlmCiAKICAgaWYgbGx2bS5mb3VuZCgpCiAKLSAgICBjZGF0YS5zZXQoJ1VT RV9MTFZNJywgMSkKKyAgICBsbHZtX2ppdF9lbmFibGVkID0gbm90IGxsdm1vcHQuZGlzYWJsZWQo KQorICAgIGlmIGxsdm1faml0X2VuYWJsZWQKKyAgICAgIGNkYXRhLnNldCgnVVNFX0xMVk0nLCAx KQorICAgIGVuZGlmCiAKICAgICBsbHZtX2JpbnBhdGggPSBsbHZtLmdldF92YXJpYWJsZShjb25m aWd0b29sOiAnYmluZGlyJykKIApAQCAtOTQxLDE3ICs5NTMsNDAgQEAgaWYgaGF2ZV9jeHgKICAg ICAjIFNvbWUgZGlzdHJvcyBwdXQgTExWTSBhbmQgY2xhbmcgaW4gZGlmZmVyZW50IHBhdGhzLCBz byBmYWxsYmFjayB0bwogICAgICMgZmluZCB2aWEgUEFUSCwgdG9vLgogICAgIGNsYW5nID0gZmlu ZF9wcm9ncmFtKGxsdm1fYmlucGF0aCAvICdjbGFuZycsICdjbGFuZycsIHJlcXVpcmVkOiB0cnVl KQorICBlbHNlCisgICAgbGx2bV9qaXRfZW5hYmxlZCA9IGZhbHNlCiAgIGVuZGlmCiBlbHNlCi0g IG1zZyA9ICdsbHZtIHJlcXVpcmVzIGEgQysrIGNvbXBpbGVyJwotICBpZiBsbHZtb3B0LmF1dG8o KQorICBsbHZtX2ppdF9lbmFibGVkID0gZmFsc2UKKyAgbXNnID0gJ2xsdm0vcGdfdGlkeSByZXF1 aXJlcyBhIEMrKyBjb21waWxlcicKKyAgaWYgbGx2bW9wdC5hdXRvKCkgYW5kIHBnX3RpZHlfb3B0 LmF1dG8oKQogICAgIG1lc3NhZ2UobXNnKQotICBlbGlmIGxsdm1vcHQuZW5hYmxlZCgpCisgIGVs aWYgbGx2bW9wdC5lbmFibGVkKCkgb3IgcGdfdGlkeV9vcHQuZW5hYmxlZCgpCiAgICAgZXJyb3Io bXNnKQogICBlbmRpZgogZW5kaWYKIAogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVG9vbDogcGctdGlkeSAoY2xhbmct dGlkeSBjaGVja3MgZm9yIFBvc3RncmVTUUwpCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhbmdfdGlkeV9wcm9nID0g ZGlzYWJsZXIoKQorY2xhbmdfY3BwX2RlcCA9IG5vdF9mb3VuZF9kZXAKK2lmIG5vdCBwZ190aWR5 X29wdC5kaXNhYmxlZCgpIGFuZCBsbHZtLmZvdW5kKCkgYW5kIGhhdmVfY3h4CisgIGNsYW5nX3Rp ZHlfcHJvZyA9IGZpbmRfcHJvZ3JhbShsbHZtX2JpbnBhdGggLyAnY2xhbmctdGlkeScsICdjbGFu Zy10aWR5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBwZ190 aWR5X29wdCkKKyAgaWYgY2xhbmdfdGlkeV9wcm9nLmZvdW5kKCkKKyAgICBjbGFuZ19jcHBfZGVw ID0gY3h4LmZpbmRfbGlicmFyeSgnY2xhbmctY3BwJywgcmVxdWlyZWQ6IHBnX3RpZHlfb3B0KQor ICAgIGlmIGNsYW5nX2NwcF9kZXAuZm91bmQoKQorICAgICAgcGdfdGlkeV9lbmFibGVkID0gdHJ1 ZQorICAgIGVuZGlmCisgIGVuZGlmCitlbGlmIHBnX3RpZHlfb3B0LmVuYWJsZWQoKQorICBlcnJv cigncGdfdGlkeSByZXF1aXJlcyBMTFZNIGFuZCBhIEMrKyBjb21waWxlcicpCitlbmRpZgorCisK IAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiAjIExpYnJhcnk6IGljdQpkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQg Yi9tZXNvbl9vcHRpb25zLnR4dAppbmRleCA2YTc5M2YzZTQ3OS4uZjhmOWI1ZjQ4MzUgMTAwNjQ0 Ci0tLSBhL21lc29uX29wdGlvbnMudHh0CisrKyBiL21lc29uX29wdGlvbnMudHh0CkBAIC0xMjEs NiArMTIxLDkgQEAgb3B0aW9uKCdsaWJ4c2x0JywgdHlwZTogJ2ZlYXR1cmUnLCB2YWx1ZTogJ2F1 dG8nLAogb3B0aW9uKCdsbHZtJywgdHlwZTogJ2ZlYXR1cmUnLCB2YWx1ZTogJ2Rpc2FibGVkJywK ICAgZGVzY3JpcHRpb246ICdMTFZNIHN1cHBvcnQnKQogCitvcHRpb24oJ3BnX3RpZHknLCB0eXBl OiAnZmVhdHVyZScsIHZhbHVlOiAnZGlzYWJsZWQnLAorICBkZXNjcmlwdGlvbjogJ3BnLXRpZHkg Y2xhbmctdGlkeSBjaGVja3MgZm9yIFBvc3RncmVTUUwnKQorCiBvcHRpb24oJ2x6NCcsIHR5cGU6 ICdmZWF0dXJlJywgdmFsdWU6ICdhdXRvJywKICAgZGVzY3JpcHRpb246ICdMWjQgc3VwcG9ydCcp CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL21lc29uLmJ1aWxkIGIvc3JjL2Jh Y2tlbmQvaml0L2xsdm0vbWVzb24uYnVpbGQKaW5kZXggN2RmODQ1M2FkNmYuLjFmNjAyNWM0ZDM3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9tZXNvbi5idWlsZAorKysgYi9zcmMv YmFja2VuZC9qaXQvbGx2bS9tZXNvbi5idWlsZApAQCAtMSw2ICsxLDYgQEAKICMgQ29weXJpZ2h0 IChjKSAyMDIyLTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAKLWlm IG5vdCBsbHZtLmZvdW5kKCkKK2lmIG5vdCBsbHZtX2ppdF9lbmFibGVkCiAgIHN1YmRpcl9kb25l KCkKIGVuZGlmCiAKZGlmZiAtLWdpdCBhL3NyYy9tZXNvbi5idWlsZCBiL3NyYy9tZXNvbi5idWls ZAppbmRleCBiNTdkNGE1YzI1OS4uNDdkNzJiMDI1MmMgMTAwNjQ0Ci0tLSBhL3NyYy9tZXNvbi5i dWlsZAorKysgYi9zcmMvbWVzb24uYnVpbGQKQEAgLTE1LDYgKzE1LDggQEAgc3ViZGlyKCdpbnRl cmZhY2VzJykKIAogc3ViZGlyKCd0b29scy9wZ19ic2RfaW5kZW50JykKIAorc3ViZGlyKCd0b29s cy9wZy10aWR5JykKKwogCiAjIyMgR2VuZXJhdGUgYSBNYWtlZmlsZS5nbG9iYWwgdGhhdCdzIGNv bXBsZXRlIGVub3VnaCBmb3IgUEdYUyB0byB3b3JrLgogIwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xz L3BnLXRpZHkvaW5jbHVkZS9wZ190aWR5LmggYi9zcmMvdG9vbHMvcGctdGlkeS9pbmNsdWRlL3Bn X3RpZHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODE1Nzc5NGJl Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdG9vbHMvcGctdGlkeS9pbmNsdWRlL3BnX3RpZHku aApAQCAtMCwwICsxLDEyIEBACisjaWZuZGVmIFBHX1RJRFlfSAorI2RlZmluZSBQR19USURZX0gK KworI2lmIGRlZmluZWQoX19jbGFuZ19fKSB8fCBkZWZpbmVkKF9fR05VQ19fKQorI2RlZmluZSBQ R19OT19QQURESU5HIF9fYXR0cmlidXRlX18oKGFubm90YXRlKCJwZ19ub19wYWRkaW5nIikpKQor I2RlZmluZSBQR19SRVFVSVJFX05PX1BBRERJTkcgX19hdHRyaWJ1dGVfXygoYW5ub3RhdGUoInBn X3JlcXVpcmVzX25vX3BhZGRpbmciKSkpCisjZWxzZQorI2RlZmluZSBQR19OT19QQURESU5HCisj ZGVmaW5lIFBHX1JFUVVJUkVfTk9fUEFERElORworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0 IGEvc3JjL3Rvb2xzL3BnLXRpZHkvbWVzb24uYnVpbGQgYi9zcmMvdG9vbHMvcGctdGlkeS9tZXNv bi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzMwN2E4ZWM0 OGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdG9vbHMvcGctdGlkeS9tZXNvbi5idWlsZApAQCAt MCwwICsxLDY5IEBACisjIHBnLXRpZHk6IGNsYW5nLXRpZHkgY2hlY2tzIGZvciBQb3N0Z3JlU1FM CisjCisjIFRoaXMgYnVpbGRzIGEgY2xhbmctdGlkeSBwbHVnaW4gd2l0aCBQb3N0Z3JlU1FMLXNw ZWNpZmljIGNoZWNrcy4KKyMgUmVxdWlyZXMgTExWTS9jbGFuZyBkZXZlbG9wbWVudCBsaWJyYXJp ZXMgYW5kIGNsYW5nLXRpZHkuCisKK2lmIG5vdCBwZ190aWR5X2VuYWJsZWQKKyAgc3ViZGlyX2Rv bmUoKQorZW5kaWYKKworcGdfdGlkeV9saWIgPSBzaGFyZWRfbW9kdWxlKCdwZ190aWR5JywKKyAg J3NyYy9QZ1RpZHlNb2R1bGUuY3BwJywKKyAgJ3NyYy9QZ05vUGFkZGluZ0NoZWNrLmNwcCcsCisg ICdzcmMvUGdOb1BhZGRpbmdJbml0Q2hlY2suY3BwJywKKyAgJ3NyYy9QZ1JlcXVpcmVzTm9QYWRk aW5nQ2hlY2suY3BwJywKKyAgZGVwZW5kZW5jaWVzOiBbbGx2bSwgY2xhbmdfY3BwX2RlcF0sCisg IGNwcF9hcmdzOiBbJy1mbm8tZXhjZXB0aW9ucyddLAorICBvdmVycmlkZV9vcHRpb25zOiBbJ2Nw cF9zdGQ9YysrMTcnXSwKKykKKworIyBSdW4gY2xhbmctdGlkeSB3aXRoIHBnLXNwZWNpZmljIGNo ZWNrcyBvbiBlYWNoIGJhY2tlbmQgc291cmNlIGZpbGUuCisjIEVhY2ggZmlsZSBnZXRzIGl0cyBv d24gY3VzdG9tX3RhcmdldCB3aXRoIGEgc3RhbXAgZmlsZSwgc28gbmluamEgY2FuCisjIHBhcmFs bGVsaXplIHRoZSBjaGVja3MgYW5kIG9ubHkgcmUtcnVuIHRoZW0gd2hlbiBzb3VyY2VzIGNoYW5n ZS4KK3B5dGhvbiA9IGZpbmRfcHJvZ3JhbSgncHl0aG9uMycpCitwZ190aWR5X3dyYXBwZXIgPSBt ZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSAvICdydW5fcGdfdGlkeV9maWxlLnB5JworCitmb3Jl YWNoIHNyY2ZpbGUgOiBiYWNrZW5kX3NvdXJjZXMKKyAgc3JjZmlsZW5hbWUgPSBmcy5wYXJlbnQo c3JjZmlsZSkgLyBmcy5uYW1lKHNyY2ZpbGUpCisgIHRhcmdldG5hbWUgPSAncGdfdGlkeV8nICsg c3JjZmlsZW5hbWUudW5kZXJzY29yaWZ5KCkKKworICBjdXN0b21fdGFyZ2V0KHRhcmdldG5hbWUs CisgICAgaW5wdXQ6IFtzcmNmaWxlXSwKKyAgICBvdXRwdXQ6IHRhcmdldG5hbWUgKyAnLnN0YW1w JywKKyAgICBjb21tYW5kOiBbCisgICAgICBweXRob24sIHBnX3RpZHlfd3JhcHBlciwKKyAgICAg IGNsYW5nX3RpZHlfcHJvZywKKyAgICAgIHBnX3RpZHlfbGliLAorICAgICAgbWVzb24ucHJvamVj dF9idWlsZF9yb290KCksCisgICAgICAnQElOUFVUQCcsCisgICAgICAnQE9VVFBVVEAnLAorICAg IF0sCisgICAgZGVwZW5kczogW3BnX3RpZHlfbGliLCBnZW5lcmF0ZWRfYmFja2VuZF9oZWFkZXJz X3N0YW1wXSwKKyAgICBidWlsZF9ieV9kZWZhdWx0OiB0cnVlLAorICApCitlbmRmb3JlYWNoCisK KyMgVGVzdHMgcmVxdWlyZSBsaXQgYW5kIEZpbGVDaGVjayBmcm9tIExMVk0KK2xpdCA9IGZpbmRf cHJvZ3JhbSgnbGl0JywgcmVxdWlyZWQ6IGZhbHNlKQorZmlsZWNoZWNrID0gZmluZF9wcm9ncmFt KCdGaWxlQ2hlY2snLCByZXF1aXJlZDogZmFsc2UpCisKK2lmIGxpdC5mb3VuZCgpIGFuZCBmaWxl Y2hlY2suZm91bmQoKQorICBsaXRfY2ZnX2RhdGEgPSBjb25maWd1cmF0aW9uX2RhdGEoKQorICBs aXRfY2ZnX2RhdGEuc2V0KCdDTEFOR19USURZJywgY2xhbmdfdGlkeV9wcm9nLmZ1bGxfcGF0aCgp KQorICBsaXRfY2ZnX2RhdGEuc2V0KCdGSUxFQ0hFQ0snLCBmaWxlY2hlY2suZnVsbF9wYXRoKCkp CisgIGxpdF9jZmdfZGF0YS5zZXQoJ1BHX1RJRFlfTElCJywKKyAgICBtZXNvbi5jdXJyZW50X2J1 aWxkX2RpcigpIC8gJ2xpYicgKyBwZ190aWR5X2xpYi5uYW1lKCkgKyAnLnNvJykKKyAgbGl0X2Nm Z19kYXRhLnNldCgnVEVTVF9TT1VSQ0VfRElSJywgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCkg LyAndGVzdCcpCisgIGxpdF9jZmdfZGF0YS5zZXQoJ0lOQ0xVREVfRElSJywgbWVzb24uY3VycmVu dF9zb3VyY2VfZGlyKCkgLyAnaW5jbHVkZScpCisKKyAgY29uZmlndXJlX2ZpbGUoCisgICAgaW5w dXQ6ICd0ZXN0L2xpdC5zaXRlLmNmZy5weS5pbicsCisgICAgb3V0cHV0OiAnbGl0LnNpdGUuY2Zn LnB5JywKKyAgICBjb25maWd1cmF0aW9uOiBsaXRfY2ZnX2RhdGEsCisgICkKKworICB0ZXN0KCdw Zy10aWR5LWxpdC10ZXN0cycsIGxpdCwKKyAgICBhcmdzOiBbbWVzb24uY3VycmVudF9idWlsZF9k aXIoKSwgJy12J10sCisgICAgZGVwZW5kczogW3BnX3RpZHlfbGliXSwKKyAgKQorZW5kaWYKZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZy10aWR5L3J1bl9wZ190aWR5X2ZpbGUucHkgYi9zcmMvdG9v bHMvcGctdGlkeS9ydW5fcGdfdGlkeV9maWxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5jODUzMzRiY2M4NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90b29scy9w Zy10aWR5L3J1bl9wZ190aWR5X2ZpbGUucHkKQEAgLTAsMCArMSwzNSBAQAorIyEvdXNyL2Jpbi9l bnYgcHl0aG9uMworIiIiUnVuIGNsYW5nLXRpZHkgd2l0aCBwZy10aWR5IGNoZWNrcyBvbiBhIHNp bmdsZSBzb3VyY2UgZmlsZS4iIiIKKworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKwor CitkZWYgbWFpbigpOgorICAgIGNsYW5nX3RpZHkgPSBzeXMuYXJndlsxXQorICAgIHBnX3RpZHlf bGliID0gc3lzLmFyZ3ZbMl0KKyAgICBidWlsZF9kaXIgPSBzeXMuYXJndlszXQorICAgIHNvdXJj ZV9maWxlID0gc3lzLmFyZ3ZbNF0KKyAgICBzdGFtcF9maWxlID0gc3lzLmFyZ3ZbNV0KKworICAg IHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKFsKKyAgICAgICAgY2xhbmdfdGlkeSwKKyAgICAgICAg Jy0tbG9hZD0nICsgcGdfdGlkeV9saWIsCisgICAgICAgICctY2hlY2tzPS0qLHBnLSonLAorICAg ICAgICAnLXdhcm5pbmdzLWFzLWVycm9ycz1wZy0qJywKKyAgICAgICAgJy1wJywgYnVpbGRfZGly LAorICAgICAgICBzb3VyY2VfZmlsZSwKKyAgICBdLCBjYXB0dXJlX291dHB1dD1UcnVlLCB0ZXh0 PVRydWUpCisKKyAgICBpZiByZXN1bHQucmV0dXJuY29kZSAhPSAwOgorICAgICAgICAjIFByaW50 IGNsYW5nLXRpZHkgb3V0cHV0IHNvIHRoZSB1c2VyIHNlZXMgdGhlIGFjdHVhbCBkaWFnbm9zdGlj cworICAgICAgICBpZiByZXN1bHQuc3Rkb3V0OgorICAgICAgICAgICAgcHJpbnQocmVzdWx0LnN0 ZG91dCwgZmlsZT1zeXMuc3RkZXJyLCBlbmQ9JycpCisgICAgICAgIHN5cy5leGl0KDEpCisKKyAg ICB3aXRoIG9wZW4oc3RhbXBfZmlsZSwgJ3cnKToKKyAgICAgICAgcGFzcworCisKK2lmIF9fbmFt ZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGct dGlkeS9zcmMvUGdOb1BhZGRpbmdDaGVjay5jcHAgYi9zcmMvdG9vbHMvcGctdGlkeS9zcmMvUGdO b1BhZGRpbmdDaGVjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmRhMDI2MDc1OTdmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rvb2xzL3BnLXRpZHkvc3JjL1Bn Tm9QYWRkaW5nQ2hlY2suY3BwCkBAIC0wLDAgKzEsMTA4IEBACisjaW5jbHVkZSAiUGdOb1BhZGRp bmdDaGVjay5oIgorI2luY2x1ZGUgPGNsYW5nL0FTVC9BU1RDb250ZXh0Lmg+CisjaW5jbHVkZSA8 Y2xhbmcvQVNUL0F0dHIuaD4KKyNpbmNsdWRlIDxjbGFuZy9BU1QvUmVjb3JkTGF5b3V0Lmg+Cisj aW5jbHVkZSA8Y2xhbmcvQVNUTWF0Y2hlcnMvQVNUTWF0Y2hGaW5kZXIuaD4KKwordXNpbmcgbmFt ZXNwYWNlIGNsYW5nOjphc3RfbWF0Y2hlcnM7CisKK25hbWVzcGFjZSBjbGFuZzo6dGlkeTo6cGcg eworCitzdGF0aWMgYm9vbCByZWNvcmRIYXNQYWRkaW5nKGNvbnN0IFJlY29yZERlY2wgKlJELCBj b25zdCBBU1RDb250ZXh0ICZDdHgpIHsKKyAgaWYgKFJELT5pc1VuaW9uKCkgfHwgUkQtPmlzSW52 YWxpZERlY2woKSB8fCAhUkQtPmlzQ29tcGxldGVEZWZpbml0aW9uKCkpCisgICAgcmV0dXJuIGZh bHNlOworCisgIGNvbnN0IEFTVFJlY29yZExheW91dCAmTGF5b3V0ID0gQ3R4LmdldEFTVFJlY29y ZExheW91dChSRCk7CisgIHVuc2lnbmVkIEZpZWxkSWR4ID0gMDsKKyAgdWludDY0X3QgUHJldkVu ZCA9IDA7CisKKyAgZm9yIChjb25zdCBhdXRvICpGaWVsZCA6IFJELT5maWVsZHMoKSkgeworICAg IHVpbnQ2NF90IEZpZWxkT2Zmc2V0ID0gTGF5b3V0LmdldEZpZWxkT2Zmc2V0KEZpZWxkSWR4KTsK KyAgICB1aW50NjRfdCBGaWVsZFNpemUgPSBDdHguZ2V0VHlwZVNpemUoRmllbGQtPmdldFR5cGUo KSk7CisKKyAgICBpZiAoRmllbGRPZmZzZXQgPiBQcmV2RW5kKQorICAgICAgcmV0dXJuIHRydWU7 CisKKyAgICBRdWFsVHlwZSBGaWVsZFR5cGUgPSBGaWVsZC0+Z2V0VHlwZSgpLmdldENhbm9uaWNh bFR5cGUoKTsKKyAgICBpZiAoY29uc3QgYXV0byAqRmllbGRSRCA9IEZpZWxkVHlwZS0+Z2V0QXNS ZWNvcmREZWNsKCkpIHsKKyAgICAgIGlmIChyZWNvcmRIYXNQYWRkaW5nKEZpZWxkUkQsIEN0eCkp CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIFByZXZFbmQgPSBGaWVsZE9mZnNl dCArIEZpZWxkU2l6ZTsKKyAgICArK0ZpZWxkSWR4OworICB9CisKKyAgdWludDY0X3QgUmVjb3Jk U2l6ZSA9IEN0eC5nZXRUeXBlU2l6ZSgKKyAgICAgIFJELT5nZXRUeXBlRm9yRGVjbCgpLT5nZXRD YW5vbmljYWxUeXBlSW50ZXJuYWwoKSk7CisgIHJldHVybiBQcmV2RW5kIDwgUmVjb3JkU2l6ZTsK K30KKworc3RhdGljIGJvb2wgaGFzTm9QYWRkaW5nQW5ub3RhdGlvbihjb25zdCBSZWNvcmREZWNs ICpSRCkgeworICBmb3IgKGNvbnN0IGF1dG8gKkF0dHIgOiBSRC0+c3BlY2lmaWNfYXR0cnM8QW5u b3RhdGVBdHRyPigpKSB7CisgICAgaWYgKEF0dHItPmdldEFubm90YXRpb24oKSA9PSAicGdfbm9f cGFkZGluZyIpCisgICAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICByZXR1cm4gZmFsc2U7Cit9CisK K3ZvaWQgUGdOb1BhZGRpbmdDaGVjazo6cmVnaXN0ZXJNYXRjaGVycyhNYXRjaEZpbmRlciAqRmlu ZGVyKSB7CisgIEZpbmRlci0+YWRkTWF0Y2hlcigKKyAgICAgIHJlY29yZERlY2woaXNEZWZpbml0 aW9uKCksIGhhc0F0dHIoYXR0cjo6QW5ub3RhdGUpKS5iaW5kKCJyZWNvcmQiKSwKKyAgICAgIHRo aXMpOworfQorCit2b2lkIFBnTm9QYWRkaW5nQ2hlY2s6OmNoZWNrKGNvbnN0IE1hdGNoRmluZGVy OjpNYXRjaFJlc3VsdCAmUmVzdWx0KSB7CisgIGNvbnN0IGF1dG8gKlJEID0gUmVzdWx0Lk5vZGVz LmdldE5vZGVBczxSZWNvcmREZWNsPigicmVjb3JkIik7CisgIGlmICghUkQgfHwgIWhhc05vUGFk ZGluZ0Fubm90YXRpb24oUkQpKQorICAgIHJldHVybjsKKworICBjb25zdCBBU1RDb250ZXh0ICZD dHggPSAqUmVzdWx0LkNvbnRleHQ7CisgIGNoZWNrUmVjb3JkRm9yUGFkZGluZyhSRCwgQ3R4KTsK K30KKwordm9pZCBQZ05vUGFkZGluZ0NoZWNrOjpjaGVja1JlY29yZEZvclBhZGRpbmcoY29uc3Qg UmVjb3JkRGVjbCAqUkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgQVNUQ29udGV4dCAmQ3R4KSB7CisgIGlmIChSRC0+aXNVbmlvbigpIHx8IFJE LT5pc0ludmFsaWREZWNsKCkgfHwgIVJELT5pc0NvbXBsZXRlRGVmaW5pdGlvbigpKQorICAgIHJl dHVybjsKKworICBjb25zdCBBU1RSZWNvcmRMYXlvdXQgJkxheW91dCA9IEN0eC5nZXRBU1RSZWNv cmRMYXlvdXQoUkQpOworICB1bnNpZ25lZCBGaWVsZElkeCA9IDA7CisgIHVpbnQ2NF90IFByZXZF bmQgPSAwOworCisgIGZvciAoY29uc3QgYXV0byAqRmllbGQgOiBSRC0+ZmllbGRzKCkpIHsKKyAg ICB1aW50NjRfdCBGaWVsZE9mZnNldCA9IExheW91dC5nZXRGaWVsZE9mZnNldChGaWVsZElkeCk7 CisgICAgdWludDY0X3QgRmllbGRTaXplID0gQ3R4LmdldFR5cGVTaXplKEZpZWxkLT5nZXRUeXBl KCkpOworCisgICAgaWYgKEZpZWxkT2Zmc2V0ID4gUHJldkVuZCkgeworICAgICAgdWludDY0X3Qg UGFkQnl0ZXMgPSAoRmllbGRPZmZzZXQgLSBQcmV2RW5kKSAvIEN0eC5nZXRDaGFyV2lkdGgoKTsK KyAgICAgIGRpYWcoRmllbGQtPmdldExvY2F0aW9uKCksCisgICAgICAgICAgICIlMCBieXRlcyBv ZiBwYWRkaW5nIGJlZm9yZSBmaWVsZCAlMSIpCisgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8dW5z aWduZWQ+KFBhZEJ5dGVzKSA8PCBGaWVsZDsKKyAgICB9CisKKyAgICBRdWFsVHlwZSBGaWVsZFR5 cGUgPSBGaWVsZC0+Z2V0VHlwZSgpLmdldENhbm9uaWNhbFR5cGUoKTsKKyAgICBpZiAoY29uc3Qg YXV0byAqRmllbGRSRCA9IEZpZWxkVHlwZS0+Z2V0QXNSZWNvcmREZWNsKCkpIHsKKyAgICAgIGlm IChGaWVsZFJELT5pc0NvbXBsZXRlRGVmaW5pdGlvbigpICYmICFGaWVsZFJELT5pc1VuaW9uKCkp IHsKKyAgICAgICAgaWYgKHJlY29yZEhhc1BhZGRpbmcoRmllbGRSRCwgQ3R4KSkgeworICAgICAg ICAgIGRpYWcoRmllbGQtPmdldExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAiZmllbGQgJTAg b2YgdHlwZSAlMSBjb250YWlucyBpbnRlcm5hbCBwYWRkaW5nIikKKyAgICAgICAgICAgICAgPDwg RmllbGQgPDwgRmllbGRUeXBlOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgUHJl dkVuZCA9IEZpZWxkT2Zmc2V0ICsgRmllbGRTaXplOworICAgICsrRmllbGRJZHg7CisgIH0KKwor ICB1aW50NjRfdCBSZWNvcmRTaXplID0gQ3R4LmdldFR5cGVTaXplKFJELT5nZXRUeXBlRm9yRGVj bCgpLT5nZXRDYW5vbmljYWxUeXBlSW50ZXJuYWwoKSk7CisgIGlmIChQcmV2RW5kIDwgUmVjb3Jk U2l6ZSkgeworICAgIHVpbnQ2NF90IFBhZEJ5dGVzID0gKFJlY29yZFNpemUgLSBQcmV2RW5kKSAv IEN0eC5nZXRDaGFyV2lkdGgoKTsKKyAgICBkaWFnKFJELT5nZXRCcmFjZVJhbmdlKCkuZ2V0RW5k KCksCisgICAgICAgICAiJTAgYnl0ZXMgb2YgdHJhaWxpbmcgcGFkZGluZyBpbiBzdHJ1Y3QgJTEi KQorICAgICAgICA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUGFkQnl0ZXMpIDw8IFJEOworICB9 Cit9CisKK30gLy8gbmFtZXNwYWNlIGNsYW5nOjp0aWR5OjpwZwpkaWZmIC0tZ2l0IGEvc3JjL3Rv b2xzL3BnLXRpZHkvc3JjL1BnTm9QYWRkaW5nQ2hlY2suaCBiL3NyYy90b29scy9wZy10aWR5L3Ny Yy9QZ05vUGFkZGluZ0NoZWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjJlODNjOWIzZmIyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rvb2xzL3BnLXRpZHkvc3Jj L1BnTm9QYWRkaW5nQ2hlY2suaApAQCAtMCwwICsxLDIxIEBACisjaWZuZGVmIFBHX05PX1BBRERJ TkdfQ0hFQ0tfSAorI2RlZmluZSBQR19OT19QQURESU5HX0NIRUNLX0gKKworI2luY2x1ZGUgPGNs YW5nLXRpZHkvQ2xhbmdUaWR5Q2hlY2suaD4KKworbmFtZXNwYWNlIGNsYW5nOjp0aWR5OjpwZyB7 CisKK2NsYXNzIFBnTm9QYWRkaW5nQ2hlY2sgOiBwdWJsaWMgQ2xhbmdUaWR5Q2hlY2sgeworcHVi bGljOgorICBQZ05vUGFkZGluZ0NoZWNrKFN0cmluZ1JlZiBOYW1lLCBDbGFuZ1RpZHlDb250ZXh0 ICpDb250ZXh0KQorICAgICAgOiBDbGFuZ1RpZHlDaGVjayhOYW1lLCBDb250ZXh0KSB7fQorICB2 b2lkIHJlZ2lzdGVyTWF0Y2hlcnMoYXN0X21hdGNoZXJzOjpNYXRjaEZpbmRlciAqRmluZGVyKSBv dmVycmlkZTsKKyAgdm9pZCBjaGVjayhjb25zdCBhc3RfbWF0Y2hlcnM6Ok1hdGNoRmluZGVyOjpN YXRjaFJlc3VsdCAmUmVzdWx0KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgdm9pZCBjaGVja1Jl Y29yZEZvclBhZGRpbmcoY29uc3QgUmVjb3JkRGVjbCAqUkQsIGNvbnN0IEFTVENvbnRleHQgJkN0 eCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBjbGFuZzo6dGlkeTo6cGcKKworI2VuZGlmCmRpZmYg LS1naXQgYS9zcmMvdG9vbHMvcGctdGlkeS9zcmMvUGdOb1BhZGRpbmdJbml0Q2hlY2suY3BwIGIv c3JjL3Rvb2xzL3BnLXRpZHkvc3JjL1BnTm9QYWRkaW5nSW5pdENoZWNrLmNwcApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGNiODc5M2I3ZTEKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdG9vbHMvcGctdGlkeS9zcmMvUGdOb1BhZGRpbmdJbml0Q2hlY2suY3BwCkBAIC0w LDAgKzEsNDQgQEAKKyNpbmNsdWRlICJQZ05vUGFkZGluZ0luaXRDaGVjay5oIgorI2luY2x1ZGUg PGNsYW5nL0FTVC9BU1RDb250ZXh0Lmg+CisjaW5jbHVkZSA8Y2xhbmcvQVNUL0F0dHIuaD4KKyNp bmNsdWRlIDxjbGFuZy9BU1RNYXRjaGVycy9BU1RNYXRjaEZpbmRlci5oPgorCit1c2luZyBuYW1l c3BhY2UgY2xhbmc6OmFzdF9tYXRjaGVyczsKKworbmFtZXNwYWNlIGNsYW5nOjp0aWR5OjpwZyB7 CisKK3N0YXRpYyBib29sIGhhc0Fubm90YXRpb24oY29uc3QgRGVjbCAqRCwgU3RyaW5nUmVmIEFu bm8pIHsKKyAgZm9yIChjb25zdCBhdXRvICpBdHRyIDogRC0+c3BlY2lmaWNfYXR0cnM8QW5ub3Rh dGVBdHRyPigpKSB7CisgICAgaWYgKEF0dHItPmdldEFubm90YXRpb24oKSA9PSBBbm5vKQorICAg ICAgcmV0dXJuIHRydWU7CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFBnTm9QYWRk aW5nSW5pdENoZWNrOjpyZWdpc3Rlck1hdGNoZXJzKE1hdGNoRmluZGVyICpGaW5kZXIpIHsKKyAg RmluZGVyLT5hZGRNYXRjaGVyKAorICAgICAgdmFyRGVjbChoYXNMb2NhbFN0b3JhZ2UoKSwgdW5s ZXNzKHBhcm1WYXJEZWNsKCkpKS5iaW5kKCJ2YXIiKSwgdGhpcyk7Cit9CisKK3ZvaWQgUGdOb1Bh ZGRpbmdJbml0Q2hlY2s6OmNoZWNrKGNvbnN0IE1hdGNoRmluZGVyOjpNYXRjaFJlc3VsdCAmUmVz dWx0KSB7CisgIGNvbnN0IGF1dG8gKlZEID0gUmVzdWx0Lk5vZGVzLmdldE5vZGVBczxWYXJEZWNs PigidmFyIik7CisgIGlmICghVkQpCisgICAgcmV0dXJuOworCisgIFF1YWxUeXBlIFQgPSBWRC0+ Z2V0VHlwZSgpLmdldENhbm9uaWNhbFR5cGUoKTsKKyAgY29uc3QgUmVjb3JkRGVjbCAqUkQgPSBU LT5nZXRBc1JlY29yZERlY2woKTsKKyAgaWYgKCFSRCkKKyAgICByZXR1cm47CisKKyAgaWYgKCFo YXNBbm5vdGF0aW9uKFJELCAicGdfbm9fcGFkZGluZyIpKQorICAgIHJldHVybjsKKworICBpZiAo VkQtPmhhc0luaXQoKSkKKyAgICByZXR1cm47CisKKyAgZGlhZyhWRC0+Z2V0TG9jYXRpb24oKSwK KyAgICAgICAidmFyaWFibGUgJTAgb2YgdHlwZSAlMSAobWFya2VkIHBnX25vX3BhZGRpbmcpIGlz IG5vdCB6ZXJvLWluaXRpYWxpemVkIikKKyAgICAgIDw8IFZEIDw8IFQ7Cit9CisKK30gLy8gbmFt ZXNwYWNlIGNsYW5nOjp0aWR5OjpwZwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnLXRpZHkvc3Jj L1BnTm9QYWRkaW5nSW5pdENoZWNrLmggYi9zcmMvdG9vbHMvcGctdGlkeS9zcmMvUGdOb1BhZGRp bmdJbml0Q2hlY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjc0 YmU5OGM5NWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdG9vbHMvcGctdGlkeS9zcmMvUGdOb1Bh ZGRpbmdJbml0Q2hlY2suaApAQCAtMCwwICsxLDE4IEBACisjaWZuZGVmIFBHX05PX1BBRERJTkdf SU5JVF9DSEVDS19ICisjZGVmaW5lIFBHX05PX1BBRERJTkdfSU5JVF9DSEVDS19ICisKKyNpbmNs dWRlIDxjbGFuZy10aWR5L0NsYW5nVGlkeUNoZWNrLmg+CisKK25hbWVzcGFjZSBjbGFuZzo6dGlk eTo6cGcgeworCitjbGFzcyBQZ05vUGFkZGluZ0luaXRDaGVjayA6IHB1YmxpYyBDbGFuZ1RpZHlD aGVjayB7CitwdWJsaWM6CisgIFBnTm9QYWRkaW5nSW5pdENoZWNrKFN0cmluZ1JlZiBOYW1lLCBD bGFuZ1RpZHlDb250ZXh0ICpDb250ZXh0KQorICAgICAgOiBDbGFuZ1RpZHlDaGVjayhOYW1lLCBD b250ZXh0KSB7fQorICB2b2lkIHJlZ2lzdGVyTWF0Y2hlcnMoYXN0X21hdGNoZXJzOjpNYXRjaEZp bmRlciAqRmluZGVyKSBvdmVycmlkZTsKKyAgdm9pZCBjaGVjayhjb25zdCBhc3RfbWF0Y2hlcnM6 Ok1hdGNoRmluZGVyOjpNYXRjaFJlc3VsdCAmUmVzdWx0KSBvdmVycmlkZTsKK307CisKK30gLy8g bmFtZXNwYWNlIGNsYW5nOjp0aWR5OjpwZworCisjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90b29s cy9wZy10aWR5L3NyYy9QZ1JlcXVpcmVzTm9QYWRkaW5nQ2hlY2suY3BwIGIvc3JjL3Rvb2xzL3Bn LXRpZHkvc3JjL1BnUmVxdWlyZXNOb1BhZGRpbmdDaGVjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI1MzE1NDAwZmI3Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rvb2xzL3BnLXRpZHkvc3JjL1BnUmVxdWlyZXNOb1BhZGRpbmdDaGVjay5jcHAKQEAgLTAsMCAr MSw4OSBAQAorI2luY2x1ZGUgIlBnUmVxdWlyZXNOb1BhZGRpbmdDaGVjay5oIgorI2luY2x1ZGUg PGNsYW5nL0FTVC9BU1RDb250ZXh0Lmg+CisjaW5jbHVkZSA8Y2xhbmcvQVNUL0F0dHIuaD4KKyNp bmNsdWRlIDxjbGFuZy9BU1QvRXhwci5oPgorI2luY2x1ZGUgPGNsYW5nL0FTVE1hdGNoZXJzL0FT VE1hdGNoRmluZGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBjbGFuZzo6YXN0X21hdGNoZXJzOwor CituYW1lc3BhY2UgY2xhbmc6OnRpZHk6OnBnIHsKKworc3RhdGljIGJvb2wgaGFzQW5ub3RhdGlv bihjb25zdCBEZWNsICpELCBTdHJpbmdSZWYgQW5ubykgeworICBmb3IgKGNvbnN0IGF1dG8gKkF0 dHIgOiBELT5zcGVjaWZpY19hdHRyczxBbm5vdGF0ZUF0dHI+KCkpIHsKKyAgICBpZiAoQXR0ci0+ Z2V0QW5ub3RhdGlvbigpID09IEFubm8pCisgICAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICByZXR1 cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBjb25zdCBRdWFsVHlwZSByZXNvbHZlQXJnVHlwZShjb25z dCBFeHByICpBcmcpIHsKKyAgQXJnID0gQXJnLT5JZ25vcmVQYXJlbkltcENhc3RzKCk7CisKKyAg aWYgKGNvbnN0IGF1dG8gKlVPID0gZHluX2Nhc3Q8VW5hcnlPcGVyYXRvcj4oQXJnKSkgeworICAg IGlmIChVTy0+Z2V0T3Bjb2RlKCkgPT0gVU9fQWRkck9mKSB7CisgICAgICByZXR1cm4gVU8tPmdl dFN1YkV4cHIoKS0+SWdub3JlUGFyZW5JbXBDYXN0cygpLT5nZXRUeXBlKCkuZ2V0Q2Fub25pY2Fs VHlwZSgpOworICAgIH0KKyAgfQorCisgIFF1YWxUeXBlIFQgPSBBcmctPmdldFR5cGUoKS5nZXRD YW5vbmljYWxUeXBlKCk7CisgIGlmIChULT5pc1BvaW50ZXJUeXBlKCkpCisgICAgcmV0dXJuIFQt PmdldFBvaW50ZWVUeXBlKCkuZ2V0Q2Fub25pY2FsVHlwZSgpOworICBpZiAoVC0+aXNBcnJheVR5 cGUoKSkKKyAgICByZXR1cm4gVC0+Z2V0QXNBcnJheVR5cGVVbnNhZmUoKS0+Z2V0RWxlbWVudFR5 cGUoKS5nZXRDYW5vbmljYWxUeXBlKCk7CisKKyAgcmV0dXJuIFF1YWxUeXBlKCk7Cit9CisKK3Zv aWQgUGdSZXF1aXJlc05vUGFkZGluZ0NoZWNrOjpyZWdpc3Rlck1hdGNoZXJzKE1hdGNoRmluZGVy ICpGaW5kZXIpIHsKKyAgRmluZGVyLT5hZGRNYXRjaGVyKGNhbGxFeHByKCkuYmluZCgiY2FsbCIp LCB0aGlzKTsKK30KKwordm9pZCBQZ1JlcXVpcmVzTm9QYWRkaW5nQ2hlY2s6OmNoZWNrKGNvbnN0 IE1hdGNoRmluZGVyOjpNYXRjaFJlc3VsdCAmUmVzdWx0KSB7CisgIGNvbnN0IGF1dG8gKkNhbGwg PSBSZXN1bHQuTm9kZXMuZ2V0Tm9kZUFzPENhbGxFeHByPigiY2FsbCIpOworICBpZiAoIUNhbGwp CisgICAgcmV0dXJuOworCisgIGNvbnN0IEZ1bmN0aW9uRGVjbCAqRkQgPSBDYWxsLT5nZXREaXJl Y3RDYWxsZWUoKTsKKyAgaWYgKCFGRCkKKyAgICByZXR1cm47CisKKyAgZm9yICh1bnNpZ25lZCBp ID0gMDsgaSA8IEZELT5nZXROdW1QYXJhbXMoKSAmJiBpIDwgQ2FsbC0+Z2V0TnVtQXJncygpOyAr K2kpIHsKKyAgICBjb25zdCBQYXJtVmFyRGVjbCAqUGFyYW0gPSBGRC0+Z2V0UGFyYW1EZWNsKGkp OworICAgIGlmICghaGFzQW5ub3RhdGlvbihQYXJhbSwgInBnX3JlcXVpcmVzX25vX3BhZGRpbmci KSkKKyAgICAgIGNvbnRpbnVlOworCisgICAgY29uc3QgRXhwciAqQXJnID0gQ2FsbC0+Z2V0QXJn KGkpOworICAgIFF1YWxUeXBlIEFyZ1R5cGUgPSByZXNvbHZlQXJnVHlwZShBcmcpOworCisgICAg aWYgKEFyZ1R5cGUuaXNOdWxsKCkpIHsKKyAgICAgIGRpYWcoQXJnLT5nZXRFeHByTG9jKCksCisg ICAgICAgICAgICJjYW5ub3QgdmVyaWZ5IG5vLXBhZGRpbmcgcmVxdWlyZW1lbnQgb24gdm9pZCog YXJndW1lbnQiKTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGlmIChBcmdUeXBlLT5p c1ZvaWRUeXBlKCkpIHsKKyAgICAgIGRpYWcoQXJnLT5nZXRFeHByTG9jKCksCisgICAgICAgICAg ICJjYW5ub3QgdmVyaWZ5IG5vLXBhZGRpbmcgcmVxdWlyZW1lbnQgb24gdm9pZCogYXJndW1lbnQi KTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGlmIChBcmdUeXBlLT5pc0J1aWx0aW5U eXBlKCkpCisgICAgICBjb250aW51ZTsKKworICAgIGNvbnN0IFJlY29yZERlY2wgKlJEID0gQXJn VHlwZS0+Z2V0QXNSZWNvcmREZWNsKCk7CisgICAgaWYgKCFSRCkgeworICAgICAgZGlhZyhBcmct PmdldEV4cHJMb2MoKSwKKyAgICAgICAgICAgImNhbm5vdCB2ZXJpZnkgbm8tcGFkZGluZyByZXF1 aXJlbWVudCBvbiB2b2lkKiBhcmd1bWVudCIpOworICAgICAgY29udGludWU7CisgICAgfQorCisg ICAgaWYgKCFoYXNBbm5vdGF0aW9uKFJELCAicGdfbm9fcGFkZGluZyIpKSB7CisgICAgICBkaWFn KEFyZy0+Z2V0RXhwckxvYygpLAorICAgICAgICAgICAiYXJndW1lbnQgdHlwZSAlMCBwYXNzZWQg dG8gbm8tcGFkZGluZyBwYXJhbWV0ZXIgbGFja3MgIgorICAgICAgICAgICAicGdfbm9fcGFkZGlu ZyBhbm5vdGF0aW9uIikKKyAgICAgICAgICA8PCBBcmdUeXBlOworICAgIH0KKyAgfQorfQorCit9 IC8vIG5hbWVzcGFjZSBjbGFuZzo6dGlkeTo6cGcKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZy10 aWR5L3NyYy9QZ1JlcXVpcmVzTm9QYWRkaW5nQ2hlY2suaCBiL3NyYy90b29scy9wZy10aWR5L3Ny Yy9QZ1JlcXVpcmVzTm9QYWRkaW5nQ2hlY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uNDk0YWY2NjM4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdG9vbHMvcGct dGlkeS9zcmMvUGdSZXF1aXJlc05vUGFkZGluZ0NoZWNrLmgKQEAgLTAsMCArMSwxOCBAQAorI2lm bmRlZiBQR19SRVFVSVJFU19OT19QQURESU5HX0NIRUNLX0gKKyNkZWZpbmUgUEdfUkVRVUlSRVNf Tk9fUEFERElOR19DSEVDS19ICisKKyNpbmNsdWRlIDxjbGFuZy10aWR5L0NsYW5nVGlkeUNoZWNr Lmg+CisKK25hbWVzcGFjZSBjbGFuZzo6dGlkeTo6cGcgeworCitjbGFzcyBQZ1JlcXVpcmVzTm9Q YWRkaW5nQ2hlY2sgOiBwdWJsaWMgQ2xhbmdUaWR5Q2hlY2sgeworcHVibGljOgorICBQZ1JlcXVp cmVzTm9QYWRkaW5nQ2hlY2soU3RyaW5nUmVmIE5hbWUsIENsYW5nVGlkeUNvbnRleHQgKkNvbnRl eHQpCisgICAgICA6IENsYW5nVGlkeUNoZWNrKE5hbWUsIENvbnRleHQpIHt9CisgIHZvaWQgcmVn aXN0ZXJNYXRjaGVycyhhc3RfbWF0Y2hlcnM6Ok1hdGNoRmluZGVyICpGaW5kZXIpIG92ZXJyaWRl OworICB2b2lkIGNoZWNrKGNvbnN0IGFzdF9tYXRjaGVyczo6TWF0Y2hGaW5kZXI6Ok1hdGNoUmVz dWx0ICZSZXN1bHQpIG92ZXJyaWRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgY2xhbmc6OnRpZHk6 OnBnCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnLXRpZHkvc3JjL1BnVGlkeU1v ZHVsZS5jcHAgYi9zcmMvdG9vbHMvcGctdGlkeS9zcmMvUGdUaWR5TW9kdWxlLmNwcApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2FiNDg2ZGQwODcKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdG9vbHMvcGctdGlkeS9zcmMvUGdUaWR5TW9kdWxlLmNwcApAQCAtMCwwICsx LDIyIEBACisjaW5jbHVkZSAiUGdOb1BhZGRpbmdDaGVjay5oIgorI2luY2x1ZGUgIlBnTm9QYWRk aW5nSW5pdENoZWNrLmgiCisjaW5jbHVkZSAiUGdSZXF1aXJlc05vUGFkZGluZ0NoZWNrLmgiCisj aW5jbHVkZSA8Y2xhbmctdGlkeS9DbGFuZ1RpZHlNb2R1bGUuaD4KKyNpbmNsdWRlIDxjbGFuZy10 aWR5L0NsYW5nVGlkeU1vZHVsZVJlZ2lzdHJ5Lmg+CisKK25hbWVzcGFjZSBjbGFuZzo6dGlkeTo6 cGcgeworCitjbGFzcyBQZ1RpZHlNb2R1bGUgOiBwdWJsaWMgQ2xhbmdUaWR5TW9kdWxlIHsKK3B1 YmxpYzoKKyAgdm9pZCBhZGRDaGVja0ZhY3RvcmllcyhDbGFuZ1RpZHlDaGVja0ZhY3RvcmllcyAm Q2hlY2tGYWN0b3JpZXMpIG92ZXJyaWRlIHsKKyAgICBDaGVja0ZhY3Rvcmllcy5yZWdpc3RlckNo ZWNrPFBnTm9QYWRkaW5nQ2hlY2s+KCJwZy1uby1wYWRkaW5nIik7CisgICAgQ2hlY2tGYWN0b3Jp ZXMucmVnaXN0ZXJDaGVjazxQZ05vUGFkZGluZ0luaXRDaGVjaz4oInBnLW5vLXBhZGRpbmctaW5p dCIpOworICAgIENoZWNrRmFjdG9yaWVzLnJlZ2lzdGVyQ2hlY2s8UGdSZXF1aXJlc05vUGFkZGlu Z0NoZWNrPigKKyAgICAgICAgInBnLXJlcXVpcmVzLW5vLXBhZGRpbmciKTsKKyAgfQorfTsKKwor c3RhdGljIENsYW5nVGlkeU1vZHVsZVJlZ2lzdHJ5OjpBZGQ8UGdUaWR5TW9kdWxlPgorICAgIFgo InBnLW1vZHVsZSIsICJDaGVja3Mgc3BlY2lmaWMgdG8gUG9zdGdyZVNRTC4iKTsKKworfSAvLyBu YW1lc3BhY2UgY2xhbmc6OnRpZHk6OnBnCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGctdGlkeS90 ZXN0L2xpdC5jZmcucHkgYi9zcmMvdG9vbHMvcGctdGlkeS90ZXN0L2xpdC5jZmcucHkKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkCmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvcGctdGlkeS90ZXN0L2xpdC5zaXRlLmNmZy5weS5pbiBiL3NyYy90b29scy9w Zy10aWR5L3Rlc3QvbGl0LnNpdGUuY2ZnLnB5LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5mMjA4OTY2YjQ4NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90b29scy9w Zy10aWR5L3Rlc3QvbGl0LnNpdGUuY2ZnLnB5LmluCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBv cworaW1wb3J0IGxpdC5mb3JtYXRzCisKK2NvbmZpZy5uYW1lID0gInBnLXRpZHkiCitjb25maWcu dGVzdF9mb3JtYXQgPSBsaXQuZm9ybWF0cy5TaFRlc3QoVHJ1ZSkKK2NvbmZpZy5zdWZmaXhlcyA9 IFsnLmMnXQorCitjb25maWcudGVzdF9zb3VyY2Vfcm9vdCA9ICdAVEVTVF9TT1VSQ0VfRElSQCcK KworY29uZmlnLnN1YnN0aXR1dGlvbnMuYXBwZW5kKCgnJWNsYW5nX3RpZHknLCAnQENMQU5HX1RJ RFlAJykpCitjb25maWcuc3Vic3RpdHV0aW9ucy5hcHBlbmQoKCclcGdfdGlkeV9saWInLCAnQFBH X1RJRFlfTElCQCcpKQorY29uZmlnLnN1YnN0aXR1dGlvbnMuYXBwZW5kKCgnJUZpbGVDaGVjaycs ICdARklMRUNIRUNLQCcpKQorY29uZmlnLnN1YnN0aXR1dGlvbnMuYXBwZW5kKCgnJWluY2x1ZGVf ZGlyJywgJ0BJTkNMVURFX0RJUkAnKSkKKworbGl0X2NvbmZpZy5sb2FkX2NvbmZpZyhjb25maWcs IG9zLnBhdGguam9pbihjb25maWcudGVzdF9zb3VyY2Vfcm9vdCwgJ2xpdC5jZmcucHknKSkKZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZy10aWR5L3Rlc3QvcGctbm8tcGFkZGluZy1pbml0LmMgYi9z cmMvdG9vbHMvcGctdGlkeS90ZXN0L3BnLW5vLXBhZGRpbmctaW5pdC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yOGU3ZGMyZTdkZgotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90b29scy9wZy10aWR5L3Rlc3QvcGctbm8tcGFkZGluZy1pbml0LmMKQEAgLTAsMCArMSwy OCBAQAorLy8gUlVOOiAlY2xhbmdfdGlkeSAtLWxvYWQ9JXBnX3RpZHlfbGliIC1jaGVja3M9LSos cGctbm8tcGFkZGluZy1pbml0ICVzIFwKKy8vIFJVTjogICAtLSAtSSVpbmNsdWRlX2RpciAyPiYx IHwgJUZpbGVDaGVjayAlcworLy8gQ0hFQ0s6IDEgd2FybmluZyBnZW5lcmF0ZWQuCisKKyNpbmNs dWRlICJwZ190aWR5LmgiCisKK3N0cnVjdCBQR19OT19QQURESU5HIEFubm90YXRlZFN0cnVjdCB7 CisgIGludCBhOworICBpbnQgYjsKK307CisKK3N0cnVjdCBQbGFpblN0cnVjdCB7CisgIGludCBh OworICBpbnQgYjsKK307CisKK3ZvaWQgdGVzdCh2b2lkKSB7CisgIC8vIENIRUNLOiA6W1tATElO RSsxXV06MjY6IHdhcm5pbmc6IHZhcmlhYmxlICdiYWQnIG9mIHR5cGUgJ3N0cnVjdCBBbm5vdGF0 ZWRTdHJ1Y3QnIChtYXJrZWQgcGdfbm9fcGFkZGluZykgaXMgbm90IHplcm8taW5pdGlhbGl6ZWQg W3BnLW5vLXBhZGRpbmctaW5pdF0KKyAgc3RydWN0IEFubm90YXRlZFN0cnVjdCBiYWQ7CisgIGJh ZC5hID0gMTsKKyAgYmFkLmIgPSAyOworCisgIHN0cnVjdCBBbm5vdGF0ZWRTdHJ1Y3QgZ29vZCA9 IHswfTsKKyAgZ29vZC5hID0gMTsKKworICBzdHJ1Y3QgUGxhaW5TdHJ1Y3Qgbm9fd2FybmluZzsK KyAgbm9fd2FybmluZy5hID0gMTsKK30KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZy10aWR5L3Rl c3QvcGctbm8tcGFkZGluZy5jIGIvc3JjL3Rvb2xzL3BnLXRpZHkvdGVzdC9wZy1uby1wYWRkaW5n LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVjYTNhODQzNDdhCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rvb2xzL3BnLXRpZHkvdGVzdC9wZy1uby1wYWRkaW5nLmMK QEAgLTAsMCArMSwxMTggQEAKKy8vIFJVTjogJWNsYW5nX3RpZHkgLS1sb2FkPSVwZ190aWR5X2xp YiAtY2hlY2tzPS0qLHBnLW5vLXBhZGRpbmcgJXMgXAorLy8gUlVOOiAgIC0tIC1JJWluY2x1ZGVf ZGlyIDI+JjEgfCAlRmlsZUNoZWNrICVzCisvLyBDSEVDSzogMTAgd2FybmluZ3MgZ2VuZXJhdGVk LgorCisjaW5jbHVkZSAicGdfdGlkeS5oIgorCisvLyAtLS0gTm9uLWFubm90YXRlZCBzdHJ1Y3Q6 IG5vIHdhcm5pbmdzIC0tLQorc3RydWN0IE5vdEFubm90YXRlZCB7CisgIGNoYXIgYTsKKyAgaW50 IGI7Cit9OworCisvLyAtLS0gQW5ub3RhdGVkIHN0cnVjdCB3aXRoIG5vIHBhZGRpbmc6IG5vIHdh cm5pbmdzIC0tLQorc3RydWN0IFBHX05PX1BBRERJTkcgTm9QYWRkaW5nIHsKKyAgaW50IGE7Cisg IGludCBiOworfTsKKworLy8gLS0tIEFubm90YXRlZCBzdHJ1Y3Qgd2l0aCBpbnRlci1maWVsZCBw YWRkaW5nIC0tLQorLy8gQ0hFQ0s6IDpbW0BMSU5FKzNdXTo3OiB3YXJuaW5nOiAzIGJ5dGVzIG9m IHBhZGRpbmcgYmVmb3JlIGZpZWxkICdiJyBbcGctbm8tcGFkZGluZ10KK3N0cnVjdCBQR19OT19Q QURESU5HIEludGVyRmllbGRQYWQgeworICBjaGFyIGE7CisgIGludCBiOworfTsKKworLy8gLS0t IEFubm90YXRlZCBzdHJ1Y3Qgd2l0aCB0cmFpbGluZyBwYWRkaW5nIC0tLQorLy8gQ0hFQ0s6IDpb W0BMSU5FKzRdXToxOiB3YXJuaW5nOiAzIGJ5dGVzIG9mIHRyYWlsaW5nIHBhZGRpbmcgaW4gc3Ry dWN0ICdUcmFpbGluZ1BhZCcgW3BnLW5vLXBhZGRpbmddCitzdHJ1Y3QgUEdfTk9fUEFERElORyBU cmFpbGluZ1BhZCB7CisgIGludCBhOworICBjaGFyIGI7Cit9OworCisvLyAtLS0gQW5ub3RhdGVk IHN0cnVjdCB3aXRoIGJvdGggaW50ZXItZmllbGQgYW5kIHRyYWlsaW5nIHBhZGRpbmcgLS0tCisv LyBDSEVDSzogOltbQExJTkUrNF1dOjc6IHdhcm5pbmc6IDMgYnl0ZXMgb2YgcGFkZGluZyBiZWZv cmUgZmllbGQgJ2InIFtwZy1uby1wYWRkaW5nXQorLy8gQ0hFQ0s6IDpbW0BMSU5FKzVdXToxOiB3 YXJuaW5nOiAzIGJ5dGVzIG9mIHRyYWlsaW5nIHBhZGRpbmcgaW4gc3RydWN0ICdCb3RoUGFkJyBb cGctbm8tcGFkZGluZ10KK3N0cnVjdCBQR19OT19QQURESU5HIEJvdGhQYWQgeworICBjaGFyIGE7 CisgIGludCBiOworICBjaGFyIGM7Cit9OworCisvLyAtLS0gTmVzdGVkIHN0cnVjdCB3aXRoIGlu dGVybmFsIHBhZGRpbmcgLS0tCitzdHJ1Y3QgSW5uZXJQYWRkZWQgeworICBjaGFyIHg7CisgIGlu dCB5OworfTsKKworLy8gQ0hFQ0s6IDpbW0BMSU5FKzNdXToyMjogd2FybmluZzogZmllbGQgJ2lu bmVyJyBvZiB0eXBlICdzdHJ1Y3QgSW5uZXJQYWRkZWQnIGNvbnRhaW5zIGludGVybmFsIHBhZGRp bmcgW3BnLW5vLXBhZGRpbmddCitzdHJ1Y3QgUEdfTk9fUEFERElORyBIYXNQYWRkZWRJbm5lciB7 CisgIGludCBhOworICBzdHJ1Y3QgSW5uZXJQYWRkZWQgaW5uZXI7Cit9OworCisvLyAtLS0gTmVz dGVkIHN0cnVjdCB3aXRob3V0IHBhZGRpbmc6IG5vIGV4dHJhIHdhcm5pbmdzIC0tLQorc3RydWN0 IElubmVyQ2xlYW4geworICBpbnQgeDsKKyAgaW50IHk7Cit9OworCitzdHJ1Y3QgUEdfTk9fUEFE RElORyBIYXNDbGVhbklubmVyIHsKKyAgaW50IGE7CisgIHN0cnVjdCBJbm5lckNsZWFuIGlubmVy OworfTsKKworLy8gLS0tIERlZXBseSBuZXN0ZWQgcGFkZGluZyAtLS0KK3N0cnVjdCBEZWVwSW5u ZXIgeworICBjaGFyIGE7CisgIGxvbmcgYjsKK307CisKK3N0cnVjdCBNaWRMZXZlbCB7CisgIHN0 cnVjdCBEZWVwSW5uZXIgZDsKK307CisKKy8vIENIRUNLOiA6W1tATElORSs0XV06MTk6IHdhcm5p bmc6IDQgYnl0ZXMgb2YgcGFkZGluZyBiZWZvcmUgZmllbGQgJ21pZCcgW3BnLW5vLXBhZGRpbmdd CisvLyBDSEVDSzogOltbQExJTkUrM11dOjE5OiB3YXJuaW5nOiBmaWVsZCAnbWlkJyBvZiB0eXBl ICdzdHJ1Y3QgTWlkTGV2ZWwnIGNvbnRhaW5zIGludGVybmFsIHBhZGRpbmcgW3BnLW5vLXBhZGRp bmddCitzdHJ1Y3QgUEdfTk9fUEFERElORyBEZWVwTmVzdCB7CisgIGludCBhOworICBzdHJ1Y3Qg TWlkTGV2ZWwgbWlkOworfTsKKworLy8gLS0tIEVtcHR5IGFubm90YXRlZCBzdHJ1Y3Q6IG5vIHdh cm5pbmdzIC0tLQorc3RydWN0IFBHX05PX1BBRERJTkcgQW5ub3RhdGVkRW1wdHkge307CisKKy8v IC0tLSBTaW5nbGUgZmllbGQsIG5vIHBhZGRpbmcgLS0tCitzdHJ1Y3QgUEdfTk9fUEFERElORyBT aW5nbGVGaWVsZCB7CisgIGludCB4OworfTsKKworLy8gLS0tIEFsbCBzYW1lLXNpemUgZmllbGRz LCBubyBwYWRkaW5nIC0tLQorc3RydWN0IFBHX05PX1BBRERJTkcgQWxsU2FtZVNpemUgeworICBp bnQgYTsKKyAgaW50IGI7CisgIGludCBjOworfTsKKworLy8gLS0tIE11bHRpcGxlIHBhZGRpbmcg c2l0ZXMgLS0tCisvLyBDSEVDSzogOltbQExJTkUrNV1dOjc6IHdhcm5pbmc6IDMgYnl0ZXMgb2Yg cGFkZGluZyBiZWZvcmUgZmllbGQgJ2InIFtwZy1uby1wYWRkaW5nXQorLy8gQ0hFQ0s6IDpbW0BM SU5FKzZdXTo3OiB3YXJuaW5nOiAzIGJ5dGVzIG9mIHBhZGRpbmcgYmVmb3JlIGZpZWxkICdjJyBb cGctbm8tcGFkZGluZ10KKy8vIENIRUNLOiA6W1tATElORSs3XV06MTogd2FybmluZzogMyBieXRl cyBvZiB0cmFpbGluZyBwYWRkaW5nIGluIHN0cnVjdCAnTXVsdGlQYWQnIFtwZy1uby1wYWRkaW5n XQorc3RydWN0IFBHX05PX1BBRERJTkcgTXVsdGlQYWQgeworICBjaGFyIGE7CisgIGludCBiOwor ICBjaGFyIHg7CisgIGludCBjOworICBjaGFyIHo7Cit9OworCisvLyAtLS0gQW5ub3RhdGVkIHN0 cnVjdCB0aGF0IGl0c2VsZiBpcyBuZXN0ZWQgaW4gYSBub24tYW5ub3RhdGVkIHN0cnVjdDogc2hv dWxkIHN0aWxsIGNoZWNrIC0tLQorc3RydWN0IFBHX05PX1BBRERJTkcgQW5ub3RhdGVkSW5uZXIg eworICBpbnQgYTsKKyAgaW50IGI7Cit9OworCitzdHJ1Y3QgT3V0ZXJOb3RBbm5vdGF0ZWQgewor ICBjaGFyIHg7CisgIHN0cnVjdCBBbm5vdGF0ZWRJbm5lciBpbm5lcjsKK307CmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvcGctdGlkeS90ZXN0L3BnLXJlcXVpcmVzLW5vLXBhZGRpbmcuYyBiL3NyYy90 b29scy9wZy10aWR5L3Rlc3QvcGctcmVxdWlyZXMtbm8tcGFkZGluZy5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44NDM2YmZlZDIwNwotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90b29scy9wZy10aWR5L3Rlc3QvcGctcmVxdWlyZXMtbm8tcGFkZGluZy5jCkBAIC0wLDAg KzEsNTQgQEAKKy8vIFJVTjogJWNsYW5nX3RpZHkgLS1sb2FkPSVwZ190aWR5X2xpYiAtY2hlY2tz PS0qLHBnLXJlcXVpcmVzLW5vLXBhZGRpbmcgJXMgXAorLy8gUlVOOiAgIC0tIC1JJWluY2x1ZGVf ZGlyIDI+JjEgfCAlRmlsZUNoZWNrICVzCisvLyBDSEVDSzogMyB3YXJuaW5ncyBnZW5lcmF0ZWQu CisKKyNpbmNsdWRlICJwZ190aWR5LmgiCisKK3R5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMjsK Kworc3RydWN0IFBHX05PX1BBRERJTkcgQW5ub3RhdGVkU3RydWN0IHsKKyAgaW50IGE7CisgIGlu dCBiOworfTsKKworc3RydWN0IE5vdEFubm90YXRlZFN0cnVjdCB7CisgIGludCBhOworICBpbnQg YjsKK307CisKK2V4dGVybiB2b2lkIFhMb2dSZWdpc3RlckRhdGEoY29uc3Qgdm9pZCAqZGF0YSBQ R19SRVFVSVJFX05PX1BBRERJTkcsIHVpbnQzMiBsZW4pOworCitleHRlcm4gdm9pZCBOb3JtYWxG dW5jKGNvbnN0IHZvaWQgKmRhdGEsIHVpbnQzMiBsZW4pOworCit2b2lkIHRlc3RfZnVuY3Rpb25z KHZvaWQpIHsKKyAgc3RydWN0IEFubm90YXRlZFN0cnVjdCBnb29kOworICBzdHJ1Y3QgTm90QW5u b3RhdGVkU3RydWN0IGJhZDsKKyAgaW50IHByaW1pdGl2ZTsKKyAgdm9pZCAqb3BhcXVlID0gJmdv b2Q7CisKKyAgWExvZ1JlZ2lzdGVyRGF0YSgmZ29vZCwgc2l6ZW9mKGdvb2QpKTsKKworICAvLyBD SEVDSzogOltbQExJTkUrMV1dOjIwOiB3YXJuaW5nOiBhcmd1bWVudCB0eXBlICdzdHJ1Y3QgTm90 QW5ub3RhdGVkU3RydWN0JyBwYXNzZWQgdG8gbm8tcGFkZGluZyBwYXJhbWV0ZXIgbGFja3MgcGdf bm9fcGFkZGluZyBhbm5vdGF0aW9uIFtwZy1yZXF1aXJlcy1uby1wYWRkaW5nXQorICBYTG9nUmVn aXN0ZXJEYXRhKCZiYWQsIHNpemVvZihiYWQpKTsKKworICBYTG9nUmVnaXN0ZXJEYXRhKCZwcmlt aXRpdmUsIHNpemVvZihwcmltaXRpdmUpKTsKKworICAvLyBDSEVDSzogOltbQExJTkUrMV1dOjIw OiB3YXJuaW5nOiBjYW5ub3QgdmVyaWZ5IG5vLXBhZGRpbmcgcmVxdWlyZW1lbnQgb24gdm9pZCog YXJndW1lbnQgW3BnLXJlcXVpcmVzLW5vLXBhZGRpbmddCisgIFhMb2dSZWdpc3RlckRhdGEob3Bh cXVlLCBzaXplb2YoZ29vZCkpOworCisgIE5vcm1hbEZ1bmMoJmJhZCwgc2l6ZW9mKGJhZCkpOwor ICBOb3JtYWxGdW5jKG9wYXF1ZSwgc2l6ZW9mKGdvb2QpKTsKK30KKwordm9pZCB0ZXN0X3BvaW50 ZXJfdmFyaWFibGUodm9pZCkgeworICBzdHJ1Y3QgQW5ub3RhdGVkU3RydWN0IGdvb2Q7CisgIHN0 cnVjdCBOb3RBbm5vdGF0ZWRTdHJ1Y3QgYmFkOworCisgIHN0cnVjdCBBbm5vdGF0ZWRTdHJ1Y3Qg Kmdvb2RfcHRyID0gJmdvb2Q7CisgIHN0cnVjdCBOb3RBbm5vdGF0ZWRTdHJ1Y3QgKmJhZF9wdHIg PSAmYmFkOworCisgIFhMb2dSZWdpc3RlckRhdGEoZ29vZF9wdHIsIHNpemVvZigqZ29vZF9wdHIp KTsKKworICAvLyBDSEVDSzogOltbQExJTkUrMV1dOjIwOiB3YXJuaW5nOiBhcmd1bWVudCB0eXBl ICdzdHJ1Y3QgTm90QW5ub3RhdGVkU3RydWN0JyBwYXNzZWQgdG8gbm8tcGFkZGluZyBwYXJhbWV0 ZXIgbGFja3MgcGdfbm9fcGFkZGluZyBhbm5vdGF0aW9uIFtwZy1yZXF1aXJlcy1uby1wYWRkaW5n XQorICBYTG9nUmVnaXN0ZXJEYXRhKGJhZF9wdHIsIHNpemVvZigqYmFkX3B0cikpOworfQotLSAK Mi40My4wCgo= --0000000000000f63ed064d3cbf06 Content-Type: application/octet-stream; name="0002-Add-PG_NO_PADDING-PG_REQUIRE_NO_PADDING-and-padding-.patch" Content-Disposition: attachment; filename="0002-Add-PG_NO_PADDING-PG_REQUIRE_NO_PADDING-and-padding-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmuyfx2c1 RnJvbSA2ZWVlYjdjM2QxNzc1NmU5OTE2YjRjMGFlYjJjOTkzZjljM2MwMTNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEu Y29tPgpEYXRlOiBUdWUsIDE3IE1hciAyMDI2IDE2OjE5OjM5ICswMDAwClN1YmplY3Q6IFtQQVRD SCAyLzRdIEFkZCBQR19OT19QQURESU5HLCBQR19SRVFVSVJFX05PX1BBRERJTkcsIGFuZCBwYWRk aW5nCiBoZWxwZXIgbWFjcm9zCgpJbnRyb2R1Y2UgY29tcGlsZXIgYW5ub3RhdGlvbiBtYWNyb3Mg aW4gYy5oIGZvciBlbmZvcmNpbmcgc3RydWN0IHBhZGRpbmcKY29uc3RyYWludHMgYXQgYnVpbGQg dGltZSB2aWEgdGhlIHBnLXRpZHkgY2xhbmctdGlkeSBwbHVnaW46CgotIFBHX05PX1BBRERJTkc6 IG1hcmtzIGEgc3RydWN0IGFzIHJlcXVpcmluZyBubyBpbXBsaWNpdCBwYWRkaW5nCi0gUEdfUkVR VUlSRV9OT19QQURESU5HOiBtYXJrcyBhIGZ1bmN0aW9uIHBhcmFtZXRlciBhcyByZXF1aXJpbmcg dGhhdAogIHRoZSBhcmd1bWVudCB0eXBlIGJlIGFubm90YXRlZCB3aXRoIFBHX05PX1BBRERJTkcK LSBwZ19wYWRkaW5nXzEvMi80OiBoZWxwZXIgbWFjcm9zIHRvIGRlY2xhcmUgZXhwbGljaXQgcGFk ZGluZyBmaWVsZHMKICB1c2luZyBhcHByb3ByaWF0ZWx5IHNpemVkIGludGVnZXIgdHlwZXMKCkFu bm90YXRlIHRoZSBkYXRhIHBhcmFtZXRlciBvZiBYTG9nUmVnaXN0ZXJEYXRhKCkgd2l0aApQR19S RVFVSVJFX05PX1BBRERJTkcgdG8gZW5mb3JjZSB0aGF0IGFsbCBkYXRhIHdyaXR0ZW4gdG8gV0FM IHJlY29yZHMKY29udGFpbnMgbm8gdW5pbml0aWFsaXplZCBwYWRkaW5nIGJ5dGVzLgotLS0KIHNy Yy9pbmNsdWRlL2FjY2Vzcy94bG9naW5zZXJ0LmggfCAgMiArLQogc3JjL2luY2x1ZGUvYy5oICAg ICAgICAgICAgICAgICB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVz IGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MveGxvZ2luc2VydC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dp bnNlcnQuaAppbmRleCAxNmViYzc2ZTc0My4uNTI3ZDQwYzc1MzEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2FjY2Vzcy94bG9naW5zZXJ0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dp bnNlcnQuaApAQCAtNDYsNyArNDYsNyBAQCBleHRlcm4gdm9pZCBYTG9nU2V0UmVjb3JkRmxhZ3Mo dWludDggZmxhZ3MpOwogZXh0ZXJuIFhMb2dSZWNQdHIgWExvZ0luc2VydChSbWdySWQgcm1pZCwg dWludDggaW5mbyk7CiBleHRlcm4gWExvZ1JlY1B0ciBYTG9nU2ltcGxlSW5zZXJ0SW50NjQoUm1n cklkIHJtaWQsIHVpbnQ4IGluZm8sIGludDY0IHZhbHVlKTsKIGV4dGVybiB2b2lkIFhMb2dFbnN1 cmVSZWNvcmRTcGFjZShpbnQgbWF4X2Jsb2NrX2lkLCBpbnQgbmRhdGFzKTsKLWV4dGVybiB2b2lk IFhMb2dSZWdpc3RlckRhdGEoY29uc3Qgdm9pZCAqZGF0YSwgdWludDMyIGxlbik7CitleHRlcm4g dm9pZCBYTG9nUmVnaXN0ZXJEYXRhKGNvbnN0IHZvaWQgKmRhdGEgUEdfUkVRVUlSRV9OT19QQURE SU5HLCB1aW50MzIgbGVuKTsKIGV4dGVybiB2b2lkIFhMb2dSZWdpc3RlckJ1ZmZlcih1aW50OCBi bG9ja19pZCwgQnVmZmVyIGJ1ZmZlciwgdWludDggZmxhZ3MpOwogZXh0ZXJuIHZvaWQgWExvZ1Jl Z2lzdGVyQmxvY2sodWludDggYmxvY2tfaWQsIFJlbEZpbGVMb2NhdG9yICpybG9jYXRvciwKIAkJ CQkJCQkgIEZvcmtOdW1iZXIgZm9ya251bSwgQmxvY2tOdW1iZXIgYmxrbnVtLCBjb25zdCBQYWdl RGF0YSAqcGFnZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2MuaCBiL3NyYy9pbmNsdWRlL2Mu aAppbmRleCBmYjBlYTFiYzY4MC4uOTYwMTQ1NWI3ZmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTI3NCw2ICsyNzQsMzUgQEAKICAqLwogI2Vu ZGlmCiAKKy8qCisgKiBQR19OT19QQURESU5HIG1hcmtzIGEgc3RydWN0IGRlZmluaXRpb24gYXMg cmVxdWlyaW5nIG5vIGltcGxpY2l0IHBhZGRpbmcuCisgKiBXaGVuIHBnLXRpZHkgY2xhbmctdGlk eSBjaGVja3MgYXJlIGVuYWJsZWQsIHN0cnVjdHMgd2l0aCB0aGlzIGFubm90YXRpb24KKyAqIHdp bGwgYmUgdmVyaWZpZWQgYXQgYnVpbGQgdGltZSB0byBjb250YWluIG5vIGNvbXBpbGVyLWluc2Vy dGVkIHBhZGRpbmcuCisgKgorICogUEdfUkVRVUlSRV9OT19QQURESU5HIG1hcmtzIGEgZnVuY3Rp b24gcGFyYW1ldGVyIGFzIHJlcXVpcmluZyB0aGF0IHRoZQorICogYXJndW1lbnQgdHlwZSBiZSBh bm5vdGF0ZWQgd2l0aCBQR19OT19QQURESU5HLgorICoKKyAqIFRoZXNlIHVzZSBjb21waWxlciBh bm5vdGF0aW9ucyB0aGF0IGFyZSBjaGVja2VkIGJ5IHRoZSBwZy10aWR5IGNsYW5nLXRpZHkKKyAq IHBsdWdpbi4gIE9uIGNvbXBpbGVycyB0aGF0IGRvbid0IHN1cHBvcnQgYW5ub3RhdGlvbnMsIHRo ZXkgZXhwYW5kIHRvCisgKiBub3RoaW5nLgorICovCisjaWZkZWYgX19jbGFuZ19fCisjZGVmaW5l IFBHX05PX1BBRERJTkcgX19hdHRyaWJ1dGVfXygoYW5ub3RhdGUoInBnX25vX3BhZGRpbmciKSkp CisjZGVmaW5lIFBHX1JFUVVJUkVfTk9fUEFERElORyBfX2F0dHJpYnV0ZV9fKChhbm5vdGF0ZSgi cGdfcmVxdWlyZXNfbm9fcGFkZGluZyIpKSkKKyNlbHNlCisjZGVmaW5lIFBHX05PX1BBRERJTkcK KyNkZWZpbmUgUEdfUkVRVUlSRV9OT19QQURESU5HCisjZW5kaWYKKworLyoKKyAqIE1hY3JvcyBm b3IgZXhwbGljaXQgc3RydWN0IHBhZGRpbmcuICBVc2UgdGhlc2UgdG8gcmVwbGFjZSBpbXBsaWNp dAorICogY29tcGlsZXItaW5zZXJ0ZWQgcGFkZGluZyBpbiBzdHJ1Y3RzIG1hcmtlZCBQR19OT19Q QURESU5HLiAgRWFjaCBtYWNybworICogZGVjbGFyZXMgYSBmaWVsZCBvZiB0aGUgYXBwcm9wcmlh dGVseSBzaXplZCBpbnRlZ2VyIHR5cGUuCisgKi8KKyNkZWZpbmUgcGdfcGFkZGluZ18xKG5hbWUp IHVpbnQ4IG5hbWUKKyNkZWZpbmUgcGdfcGFkZGluZ18yKG5hbWUpIHVpbnQxNiBuYW1lCisjZGVm aW5lIHBnX3BhZGRpbmdfNChuYW1lKSB1aW50MzIgbmFtZQorCiAvKgogICogVXNlICJwZ19hdHRy aWJ1dGVfYWx3YXlzX2lubGluZSIgaW4gcGxhY2Ugb2YgImlubGluZSIgZm9yIGZ1bmN0aW9ucyB0 aGF0CiAgKiB3ZSB3aXNoIHRvIGZvcmNlIGlubGluaW5nIG9mLCBldmVuIHdoZW4gdGhlIGNvbXBp bGVyJ3MgaGV1cmlzdGljcyB3b3VsZAotLSAKMi40My4wCgo= --0000000000000f63ed064d3cbf06 Content-Type: application/octet-stream; name="0003-Add-explicit-padding-to-WAL-record-structs-and-annot.patch" Content-Disposition: attachment; filename="0003-Add-explicit-padding-to-WAL-record-structs-and-annot.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmuyfx2g2 RnJvbSA0NjA2OTJkZTQ0Mjk2ZjMyYjlmNGI1YTI4NTBlNzVhZTQ3ZmE0NDhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEu Y29tPgpEYXRlOiBUdWUsIDE3IE1hciAyMDI2IDE2OjIwOjExICswMDAwClN1YmplY3Q6IFtQQVRD SCAzLzRdIEFkZCBleHBsaWNpdCBwYWRkaW5nIHRvIFdBTCByZWNvcmQgc3RydWN0cyBhbmQgYW5u b3RhdGUKIHdpdGggUEdfTk9fUEFERElORwoKQW5ub3RhdGUgYWxsIHN0cnVjdCB0eXBlcyBwYXNz ZWQgdG8gWExvZ1JlZ2lzdGVyRGF0YSgpIHdpdGggUEdfTk9fUEFERElORwphbmQgYWRkIGV4cGxp Y2l0IHBhZGRpbmcgZmllbGRzIHdoZXJlIHRoZSBjb21waWxlciB3b3VsZCBpbnNlcnQgaW1wbGlj aXQKcGFkZGluZy4gIFRoaXMgZW5zdXJlcyBubyB1bmluaXRpYWxpemVkIGJ5dGVzIGFyZSB3cml0 dGVuIHRvIFdBTCByZWNvcmRzLgoKRm9yIHN0cnVjdHMgdGhhdCBwcmV2aW91c2x5IHVzZWQgU2l6 ZU9mWFhYWCBtYWNyb3MgKHZpYSBvZmZzZXRvZiArIHNpemVvZgpvZiBsYXN0IGZpZWxkKSB0byBz a2lwIHRyYWlsaW5nIHBhZGRpbmcsIHRoZSBtYWNyb3MgYXJlIHJlcGxhY2VkIHdpdGgKc2l6ZW9m KCkgc2luY2UgdGhlIGV4cGxpY2l0IHBhZGRpbmcgbWFrZXMgdGhlIGZ1bGwgc3RydWN0IHNhZmUg dG8gd3JpdGUuClRoaXMgaXMgYSBXQUwgZm9ybWF0IGNoYW5nZTogcmVjb3JkcyBub3cgaW5jbHVk ZSB0aGUgcHJldmlvdXNseS1za2lwcGVkCnRyYWlsaW5nIHBhZGRpbmcgYnl0ZXMsIGV4cGxpY2l0 bHkgaW5pdGlhbGl6ZWQgdG8gemVyby4KClNpemVPZlhYWFggbWFjcm9zIGZvciBzdHJ1Y3RzIHdp dGggRkxFWElCTEVfQVJSQVlfTUVNQkVSIGFyZSBrZXB0LCBhcwp0aGV5IHVzZSBvZmZzZXRvZigp IHRvIGNvbXB1dGUgdGhlIGZpeGVkIHBvcnRpb24gc2l6ZS4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbl9wYWdlb3BzLmMgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW5fcmV2bWFwLmMgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lu L2dpbmJ0cmVlLmMgICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5kYXRhcGFnZS5jICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu ZmFzdC5jICAgICAgICAgICAgICB8ICA5ICstLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW51 dGlsLmMgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFj dXVtLmMgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxv Zy5jICAgICAgICAgICAgfCAxMCArLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyAg ICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0 LmMgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaG92ZmwuYyAg ICAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMgICAg ICAgICAgICB8ICA4ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAg ICAgICAgfCAzMiArKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cu YyAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAg ICAgICAgICB8IDEwICstLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYyAg ICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyAgICAg ICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jICAgICAg ICAgfCAxMCArLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jICAgICAgICAg ICB8IDIwICsrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvY2xvZ2Rlc2MuYyAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL3hhY3RkZXNjLmMgICAgICAg IHwgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy94bG9nZGVzYy5jICAgICAgICB8 ICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2RvaW5zZXJ0LmMgICAgICAgfCAx MCArLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgICAgICAgICB8ICA2 ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYyAgICAgICAgICAgfCAxNCAr Ky0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMgICAgICAgICAgICAgfCAgNCAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMgICAgICAgIHwgIDIgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jICAgICAgICB8ICA4ICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgICAgICAgICAgICAgfCA0NiArKysrKyst LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8IDI1 ICsrKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dpbnNlcnQuYyAgICAgICB8 ICA1ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVhZGVyLmMgICAgICAgfCAg MyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyAgICAgfCAgOCAr LQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMgICAgICAgICAgICAgICAgIHwgIDQgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYyAgICAgICAgICAgICB8IDEwICstLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyAgICAgICAgICAgICAgIHwgMTIgKy0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgMiArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVzcGFjZS5jICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jICAgICAgICB8ICA2ICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNzYWdlLmMgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgICAgICAgfCAxNCArKy0tCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9pbnZhbC5jICAgICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsbWFwcGVyLmMgICAgICAgICAgIHwgMTIgKy0tCiBzcmMvYmluL3BnX3Jlc2V0 d2FsL3BnX3Jlc2V0d2FsLmMgICAgICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv YnJpbl94bG9nLmggICAgICAgICAgICAgICAgfCAzMCArKysrLS0tLQogc3JjL2luY2x1ZGUvYWNj ZXNzL2Nsb2cuaCAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9jb21taXRfdHMuaCAgICAgICAgICAgICAgICB8ICA2ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv Z2luYmxvY2suaCAgICAgICAgICAgICAgICAgfCAgNiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dp bnhsb2cuaCAgICAgICAgICAgICAgICAgIHwgMTkgKysrLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9n aXN0eGxvZy5oICAgICAgICAgICAgICAgICB8IDI0ICsrKystLQogc3JjL2luY2x1ZGUvYWNjZXNz L2hhc2hfeGxvZy5oICAgICAgICAgICAgICAgIHwgNTYgKysrKysrKy0tLS0tLS0KIHNyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgICAgICAgICB8IDc1ICsrKysrKysrKysrKy0t LS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCAgICAgICAgICAgICAgICB8ICA2 ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oICAgICAgICAgICAgICAgICAgfCA1MyAr KysrKysrLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3BnaXN0X3ByaXZhdGUuaCAgICAgICAg ICAgfCAgNiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaCAgICAgICAgICAgICAgICAg IHwgMjkgKysrKy0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3hhY3QuaCAgICAgICAgICAgICAgICAg ICAgIHwgMjQgKysrLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ19pbnRlcm5hbC5oICAgICAg ICAgICAgfCAxNSArKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY29yZC5oICAgICAgICAg ICAgICAgfCAxOSArKy0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb250cm9sLmggICAgICAg ICAgICAgIHwgIDggKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvc3RvcmFnZV94bG9nLmggICAgICAg ICAgICB8ICA0ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9kYmNvbW1hbmRzX3hsb2cuaCAgICAg ICAgfCAgNiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2VfeGxvZy5oICAgICAgICAg IHwgIDIgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlc3BhY2UuaCAgICAgICAgICAgICB8 ICA0ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9tZXNzYWdlLmggICAgICAgICAgICAgfCAg NCArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggICAgICAgICAgICAgIHwgIDYg Ky0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvbG9ja2RlZnMuaCAgICAgICAgICAgICAgICB8ICAyICst CiBzcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbC5oICAgICAgICAgICAgICAgICAgfCAyOCArKysr Ky0tCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnlkZWZzLmggICAgICAgICAgICAgfCAxMCAr Ky0KIHNyYy9pbmNsdWRlL3V0aWxzL3JlbG1hcHBlci5oICAgICAgICAgICAgICAgICB8ICAyICst CiAuLi4vdGVzdF9jdXN0b21fcm1ncnMvdGVzdF9jdXN0b21fcm1ncnMuYyAgICAgfCAgMiArLQog c3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzlfZW5kX29mX3dhbC5wbCAgICAgICAgIHwgIDUgKy0KIDc1 IGZpbGVzIGNoYW5nZWQsIDQ1NyBpbnNlcnRpb25zKCspLCAzNjUgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jCmluZGV4IDY4ODdlNDIxNDQyLi44ZWY0NGEwMDc1YiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYwpAQCAtMTEzNSw3ICsxMTM1LDcgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhl YXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAogCWlmIChSZWxhdGlv bk5lZWRzV0FMKGluZGV4KSkKIAl7Ci0JCXhsX2JyaW5fY3JlYXRlaWR4IHhscmVjOworCQl4bF9i cmluX2NyZWF0ZWlkeCB4bHJlYyA9IHswfTsKIAkJWExvZ1JlY1B0cglyZWNwdHI7CiAJCVBhZ2UJ CXBhZ2U7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcGFnZW9w cy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9wYWdlb3BzLmMKaW5kZXggN2RhOTdi ZWM0M2IuLmExZThiZDBlMjI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluX3BhZ2VvcHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3BhZ2VvcHMu YwpAQCAtMTgzLDcgKzE4Myw3IEBAIGJyaW5fZG91cGRhdGUoUmVsYXRpb24gaWR4cmVsLCBCbG9j a051bWJlciBwYWdlc1BlclJhbmdlLAogCQkvKiBYTE9HIHN0dWZmICovCiAJCWlmIChSZWxhdGlv bk5lZWRzV0FMKGlkeHJlbCkpCiAJCXsKLQkJCXhsX2JyaW5fc2FtZXBhZ2VfdXBkYXRlIHhscmVj OworCQkJeGxfYnJpbl9zYW1lcGFnZV91cGRhdGUgeGxyZWMgPSB7MH07CiAJCQlYTG9nUmVjUHRy CXJlY3B0cjsKIAkJCXVpbnQ4CQlpbmZvID0gWExPR19CUklOX1NBTUVQQUdFX1VQREFURTsKIApA QCAtMjY3LDcgKzI2Nyw3IEBAIGJyaW5fZG91cGRhdGUoUmVsYXRpb24gaWR4cmVsLCBCbG9ja051 bWJlciBwYWdlc1BlclJhbmdlLAogCQkvKiBYTE9HIHN0dWZmICovCiAJCWlmIChSZWxhdGlvbk5l ZWRzV0FMKGlkeHJlbCkpCiAJCXsKLQkJCXhsX2JyaW5fdXBkYXRlIHhscmVjOworCQkJeGxfYnJp bl91cGRhdGUgeGxyZWMgPSB7MH07CiAJCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAkJCXVpbnQ4CQlp bmZvOwogCkBAIC00MjMsNyArNDIzLDcgQEAgYnJpbl9kb2luc2VydChSZWxhdGlvbiBpZHhyZWws IEJsb2NrTnVtYmVyIHBhZ2VzUGVyUmFuZ2UsCiAJLyogWExPRyBzdHVmZiAqLwogCWlmIChSZWxh dGlvbk5lZWRzV0FMKGlkeHJlbCkpCiAJewotCQl4bF9icmluX2luc2VydCB4bHJlYzsKKwkJeGxf YnJpbl9pbnNlcnQgeGxyZWMgPSB7MH07CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCQl1aW50OAkJ aW5mbzsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9yZXZtYXAu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcmV2bWFwLmMKaW5kZXggMjMzMzU1Y2Iy ZDUuLjU3YWMwNDQ0OTdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu X3Jldm1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcmV2bWFwLmMKQEAg LTQwOCw3ICs0MDgsNyBAQCBicmluUmV2bWFwRGVzdW1tYXJpemVSYW5nZShSZWxhdGlvbiBpZHhy ZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGspCiAKIAlpZiAoUmVsYXRpb25OZWVkc1dBTChpZHhyZWwp KQogCXsKLQkJeGxfYnJpbl9kZXN1bW1hcml6ZSB4bHJlYzsKKwkJeGxfYnJpbl9kZXN1bW1hcml6 ZSB4bHJlYyA9IHswfTsKIAkJWExvZ1JlY1B0cglyZWNwdHI7CiAKIAkJeGxyZWMucGFnZXNQZXJS YW5nZSA9IHJldm1hcC0+cm1fcGFnZXNQZXJSYW5nZTsKQEAgLTYyMSw3ICs2MjEsNyBAQCByZXZt YXBfcGh5c2ljYWxfZXh0ZW5kKEJyaW5SZXZtYXAgKnJldm1hcCkKIAogCWlmIChSZWxhdGlvbk5l ZWRzV0FMKHJldm1hcC0+cm1faXJlbCkpCiAJewotCQl4bF9icmluX3Jldm1hcF9leHRlbmQgeGxy ZWM7CisJCXhsX2JyaW5fcmV2bWFwX2V4dGVuZCB4bHJlYyA9IHswfTsKIAkJWExvZ1JlY1B0cgly ZWNwdHI7CiAKIAkJeGxyZWMudGFyZ2V0QmxrID0gbWFwQmxrOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpbi9naW5idHJlZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5i dHJlZS5jCmluZGV4IDNkM2E5ZGE1NmIxLi5kMjhmNzliOGRjZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpbi9naW5idHJlZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4v Z2luYnRyZWUuYwpAQCAtNDE4LDcgKzQxOCw3IEBAIGdpblBsYWNlVG9QYWdlKEdpbkJ0cmVlIGJ0 cmVlLCBHaW5CdHJlZVN0YWNrICpzdGFjaywKIAkJaWYgKFJlbGF0aW9uTmVlZHNXQUwoYnRyZWUt PmluZGV4KSAmJiAhYnRyZWUtPmlzQnVpbGQpCiAJCXsKIAkJCVhMb2dSZWNQdHIJcmVjcHRyOwot CQkJZ2lueGxvZ0luc2VydCB4bHJlYzsKKwkJCWdpbnhsb2dJbnNlcnQgeGxyZWMgPSB7MH07CiAJ CQlCbG9ja0lkRGF0YSBjaGlsZGJsa25vc1syXTsKIAogCQkJeGxyZWMuZmxhZ3MgPSB4bGZsYWdz OwpAQCAtNDMzLDcgKzQzMyw3IEBAIGdpblBsYWNlVG9QYWdlKEdpbkJ0cmVlIGJ0cmVlLCBHaW5C dHJlZVN0YWNrICpzdGFjaywKIAkJCXsKIAkJCQlCbG9ja0lkU2V0KCZjaGlsZGJsa25vc1swXSwg QnVmZmVyR2V0QmxvY2tOdW1iZXIoY2hpbGRidWYpKTsKIAkJCQlCbG9ja0lkU2V0KCZjaGlsZGJs a25vc1sxXSwgR2luUGFnZUdldE9wYXF1ZShjaGlsZHBhZ2UpLT5yaWdodGxpbmspOwotCQkJCVhM b2dSZWdpc3RlckRhdGEoY2hpbGRibGtub3MsCisJCQkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAq KSBjaGlsZGJsa25vcywKIAkJCQkJCQkJIHNpemVvZihCbG9ja0lkRGF0YSkgKiAyKTsKIAkJCX0K IApAQCAtNDU3LDcgKzQ1Nyw3IEBAIGdpblBsYWNlVG9QYWdlKEdpbkJ0cmVlIGJ0cmVlLCBHaW5C dHJlZVN0YWNrICpzdGFjaywKIAkJICovCiAJCUJ1ZmZlcgkJcmJ1ZmZlcjsKIAkJQmxvY2tOdW1i ZXIgc2F2ZWRSaWdodExpbms7Ci0JCWdpbnhsb2dTcGxpdCBkYXRhOworCQlnaW54bG9nU3BsaXQg ZGF0YSA9IHswfTsKIAkJQnVmZmVyCQlsYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAkJUGFnZQkJ bmV3cm9vdHBnID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5kYXRhcGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5kYXRhcGFnZS5jCmluZGV4 IGM1ZDdkYjI4MDc3Li43ZDlhNDY2ZjFlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5kYXRhcGFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZGF0YXBh Z2UuYwpAQCAtMTgzOSw3ICsxODM5LDcgQEAgY3JlYXRlUG9zdGluZ1RyZWUoUmVsYXRpb24gaW5k ZXgsIEl0ZW1Qb2ludGVyRGF0YSAqaXRlbXMsIHVpbnQzMiBuaXRlbXMsCiAJaWYgKFJlbGF0aW9u TmVlZHNXQUwoaW5kZXgpICYmICFpc19idWlsZCkKIAl7CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwot CQlnaW54bG9nQ3JlYXRlUG9zdGluZ1RyZWUgZGF0YTsKKwkJZ2lueGxvZ0NyZWF0ZVBvc3RpbmdU cmVlIGRhdGEgPSB7MH07CiAKIAkJZGF0YS5zaXplID0gcm9vdHNpemU7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZmFzdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dp bi9naW5mYXN0LmMKaW5kZXggZjUwODQ4ZWI2NWEuLjYzYTA3MmE1Njg4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL2dpbmZhc3QuYwpAQCAtMTE1LDcgKzExNSw3IEBAIHdyaXRlTGlzdFBhZ2UoUmVsYXRpb24g aW5kZXgsIEJ1ZmZlciBidWZmZXIsCiAKIAlpZiAoUmVsYXRpb25OZWVkc1dBTChpbmRleCkpCiAJ ewotCQlnaW54bG9nSW5zZXJ0TGlzdFBhZ2UgZGF0YTsKKwkJZ2lueGxvZ0luc2VydExpc3RQYWdl IGRhdGEgPSB7MH07CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCiAJCWRhdGEucmlnaHRsaW5rID0g cmlnaHRsaW5rOwpAQCAtMjI0LDcgKzIyNCw3IEBAIGdpbkhlYXBUdXBsZUZhc3RJbnNlcnQoR2lu U3RhdGUgKmdpbnN0YXRlLCBHaW5UdXBsZUNvbGxlY3RvciAqY29sbGVjdG9yKQogCUdpbk1ldGFQ YWdlRGF0YSAqbWV0YWRhdGEgPSBOVUxMOwogCUJ1ZmZlcgkJYnVmZmVyID0gSW52YWxpZEJ1ZmZl cjsKIAlQYWdlCQlwYWdlID0gTlVMTDsKLQlnaW54bG9nVXBkYXRlTWV0YSBkYXRhOworCWdpbnhs b2dVcGRhdGVNZXRhIGRhdGEgPSB7MH07CiAJYm9vbAkJc2VwYXJhdGVMaXN0ID0gZmFsc2U7CiAJ Ym9vbAkJbmVlZENsZWFudXAgPSBmYWxzZTsKIAlpbnQJCQljbGVhbnVwU2l6ZTsKQEAgLTI4MSw5 ICsyODEsOCBAQCBnaW5IZWFwVHVwbGVGYXN0SW5zZXJ0KEdpblN0YXRlICpnaW5zdGF0ZSwgR2lu VHVwbGVDb2xsZWN0b3IgKmNvbGxlY3RvcikKIAkJLyoKIAkJICogV2Ugc2hvdWxkIG1ha2Ugc3Vi bGlzdCBzZXBhcmF0ZWx5IGFuZCBhcHBlbmQgaXQgdG8gdGhlIHRhaWwKIAkJICovCi0JCUdpbk1l dGFQYWdlRGF0YSBzdWJsaXN0OworCQlHaW5NZXRhUGFnZURhdGEgc3VibGlzdCA9IHswfTsKIAot CQltZW1zZXQoJnN1Ymxpc3QsIDAsIHNpemVvZihHaW5NZXRhUGFnZURhdGEpKTsKIAkJbWFrZVN1 Ymxpc3QoaW5kZXgsIGNvbGxlY3Rvci0+dHVwbGVzLCBjb2xsZWN0b3ItPm50dXBsZXMsICZzdWJs aXN0KTsKIAogCQkvKgpAQCAtNTY3LDcgKzU2Niw3IEBAIHNoaWZ0TGlzdChSZWxhdGlvbiBpbmRl eCwgQnVmZmVyIG1ldGFidWZmZXIsIEJsb2NrTnVtYmVyIG5ld0hlYWQsCiAJCVBhZ2UJCXBhZ2U7 CiAJCWludAkJCWk7CiAJCWludDY0CQluRGVsZXRlZEhlYXBUdXBsZXMgPSAwOwotCQlnaW54bG9n RGVsZXRlTGlzdFBhZ2VzIGRhdGE7CisJCWdpbnhsb2dEZWxldGVMaXN0UGFnZXMgZGF0YSA9IHsw fTsKIAkJQnVmZmVyCQlidWZmZXJzW0dJTl9OREVMRVRFX0FUX09OQ0VdOwogCQlCbG9ja051bWJl ciBmcmVlc3BhY2VbR0lOX05ERUxFVEVfQVRfT05DRV07CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naW4vZ2ludXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW51dGls LmMKaW5kZXggZmY5MjcyNzljYzMuLjFiMjI4YzE3NTQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnV0 aWwuYwpAQCAtNjQ4LDcgKzY0OCw3IEBAIGdpblVwZGF0ZVN0YXRzKFJlbGF0aW9uIGluZGV4LCBj b25zdCBHaW5TdGF0c0RhdGEgKnN0YXRzLCBib29sIGlzX2J1aWxkKQogCWlmIChSZWxhdGlvbk5l ZWRzV0FMKGluZGV4KSAmJiAhaXNfYnVpbGQpCiAJewogCQlYTG9nUmVjUHRyCXJlY3B0cjsKLQkJ Z2lueGxvZ1VwZGF0ZU1ldGEgZGF0YTsKKwkJZ2lueGxvZ1VwZGF0ZU1ldGEgZGF0YSA9IHswfTsK IAogCQlkYXRhLmxvY2F0b3IgPSBpbmRleC0+cmRfbG9jYXRvcjsKIAkJZGF0YS5udHVwbGVzID0g MDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jCmluZGV4IGM5ZjE0M2Y2YzMxLi41YjQ4OGU4 OWE1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jCkBAIC0xOTcsNyArMTk3LDcgQEAg Z2luRGVsZXRlUGFnZShHaW5WYWN1dW1TdGF0ZSAqZ3ZzLCBCbG9ja051bWJlciBkZWxldGVCbGtu bywgQmxvY2tOdW1iZXIgbGVmdEJsa24KIAlpZiAoUmVsYXRpb25OZWVkc1dBTChndnMtPmluZGV4 KSkKIAl7CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwotCQlnaW54bG9nRGVsZXRlUGFnZSBkYXRhOwor CQlnaW54bG9nRGVsZXRlUGFnZSBkYXRhID0gezB9OwogCiAJCS8qCiAJCSAqIFdlIGNhbid0IHBh c3MgUkVHQlVGX1NUQU5EQVJEIGZvciB0aGUgZGVsZXRlZCBwYWdlLCBiZWNhdXNlIHdlCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwppbmRleCBjNzgzODM4NDk1Zi4uYjkzZTgzMWI4MjkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtNDk1LDcgKzQ5NSw3IEBAIGdpc3RYTG9n U3BsaXQoYm9vbCBwYWdlX2lzX2xlYWYsCiAJCQkgIEJsb2NrTnVtYmVyIG9yaWdybGluaywgR2lz dE5TTiBvcmlnbnNuLAogCQkJICBCdWZmZXIgbGVmdGNoaWxkYnVmLCBib29sIG1hcmtmb2xsb3dy aWdodCkKIHsKLQlnaXN0eGxvZ1BhZ2VTcGxpdCB4bHJlYzsKKwlnaXN0eGxvZ1BhZ2VTcGxpdCB4 bHJlYyA9IHswfTsKIAlTcGxpdFBhZ2VMYXlvdXQgKnB0cjsKIAlpbnQJCQlucGFnZSA9IDA7CiAJ WExvZ1JlY1B0cglyZWNwdHI7CkBAIC01NTAsNyArNTUwLDcgQEAgWExvZ1JlY1B0cgogZ2lzdFhM b2dQYWdlRGVsZXRlKEJ1ZmZlciBidWZmZXIsIEZ1bGxUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkg ICBCdWZmZXIgcGFyZW50QnVmZmVyLCBPZmZzZXROdW1iZXIgZG93bmxpbmtPZmZzZXQpCiB7Ci0J Z2lzdHhsb2dQYWdlRGVsZXRlIHhscmVjOworCWdpc3R4bG9nUGFnZURlbGV0ZSB4bHJlYyA9IHsw fTsKIAlYTG9nUmVjUHRyCXJlY3B0cjsKIAogCXhscmVjLmRlbGV0ZVhpZCA9IHhpZDsKQEAgLTU5 Miw3ICs1OTIsNyBAQCB2b2lkCiBnaXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiByZWwsIFJlbGF0 aW9uIGhlYXByZWwsCiAJCQkJICBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQg ZGVsZXRlWGlkKQogewotCWdpc3R4bG9nUGFnZVJldXNlIHhscmVjX3JldXNlOworCWdpc3R4bG9n UGFnZVJldXNlIHhscmVjX3JldXNlID0gezB9OwogCiAJLyoKIAkgKiBOb3RlIHRoYXQgd2UgZG9u J3QgcmVnaXN0ZXIgdGhlIGJ1ZmZlciB3aXRoIHRoZSByZWNvcmQsIGJlY2F1c2UgdGhpcwpAQCAt NjI5LDcgKzYyOSw3IEBAIGdpc3RYTG9nVXBkYXRlKEJ1ZmZlciBidWZmZXIsCiAJCQkgICBJbmRl eFR1cGxlICppdHVwLCBpbnQgaXR1cGxlbiwKIAkJCSAgIEJ1ZmZlciBsZWZ0Y2hpbGRidWYpCiB7 Ci0JZ2lzdHhsb2dQYWdlVXBkYXRlIHhscmVjOworCWdpc3R4bG9nUGFnZVVwZGF0ZSB4bHJlYyA9 IHswfTsKIAlpbnQJCQlpOwogCVhMb2dSZWNQdHIJcmVjcHRyOwogCkBAIC02NjgsNyArNjY4LDcg QEAgWExvZ1JlY1B0cgogZ2lzdFhMb2dEZWxldGUoQnVmZmVyIGJ1ZmZlciwgT2Zmc2V0TnVtYmVy ICp0b2RlbGV0ZSwgaW50IG50b2RlbGV0ZSwKIAkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RD b25mbGljdEhvcml6b24sIFJlbGF0aW9uIGhlYXByZWwpCiB7Ci0JZ2lzdHhsb2dEZWxldGUgeGxy ZWM7CisJZ2lzdHhsb2dEZWxldGUgeGxyZWMgPSB7MH07CiAJWExvZ1JlY1B0cglyZWNwdHI7CiAK IAl4bHJlYy5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nKGhlYXByZWwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCmluZGV4IGU4OGRkYjMyYTA1Li5mNTY1 Y2ZjNzdhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYwpAQCAtNjEzLDcgKzYxMyw3IEBAIGxvb3Bf dG9wOgogCS8qIFhMT0cgc3R1ZmYgKi8KIAlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWwpKQogCXsK LQkJeGxfaGFzaF91cGRhdGVfbWV0YV9wYWdlIHhscmVjOworCQl4bF9oYXNoX3VwZGF0ZV9tZXRh X3BhZ2UgeGxyZWMgPSB7MH07CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCiAJCXhscmVjLm50dXBs ZXMgPSBtZXRhcC0+aGFzaG1fbnR1cGxlczsKQEAgLTgxOSw3ICs4MTksNyBAQCBoYXNoYnVja2V0 Y2xlYW51cChSZWxhdGlvbiByZWwsIEJ1Y2tldCBjdXJfYnVja2V0LCBCdWZmZXIgYnVja2V0X2J1 ZiwKIAkJCS8qIFhMT0cgc3R1ZmYgKi8KIAkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCiAJ CQl7Ci0JCQkJeGxfaGFzaF9kZWxldGUgeGxyZWM7CisJCQkJeGxfaGFzaF9kZWxldGUgeGxyZWMg PSB7MH07CiAJCQkJWExvZ1JlY1B0cglyZWNwdHI7CiAKIAkJCQl4bHJlYy5jbGVhcl9kZWFkX21h cmtpbmcgPSBjbGVhcl9kZWFkX21hcmtpbmc7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0 LmMKaW5kZXggMGNlZmJhY2M5NmUuLjViYTYyMzM5M2E4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gv aGFzaGluc2VydC5jCkBAIC0yMTUsNyArMjE1LDcgQEAgcmVzdGFydF9pbnNlcnQ6CiAJLyogWExP RyBzdHVmZiAqLwogCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCiAJewotCQl4bF9oYXNoX2lu c2VydCB4bHJlYzsKKwkJeGxfaGFzaF9pbnNlcnQgeGxyZWMgPSB7MH07CiAJCVhMb2dSZWNQdHIJ cmVjcHRyOwogCiAJCXhscmVjLm9mZm51bSA9IGl0dXBfb2ZmOwpAQCAtNDIzLDcgKzQyMyw3IEBA IF9oYXNoX3ZhY3V1bV9vbmVfcGFnZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhyZWwsIEJ1ZmZl ciBtZXRhYnVmLCBCdWZmZXIgYnVmKQogCQkvKiBYTE9HIHN0dWZmICovCiAJCWlmIChSZWxhdGlv bk5lZWRzV0FMKHJlbCkpCiAJCXsKLQkJCXhsX2hhc2hfdmFjdXVtX29uZV9wYWdlIHhscmVjOwor CQkJeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UgeGxyZWMgPSB7MH07CiAJCQlYTG9nUmVjUHRyCXJl Y3B0cjsKIAogCQkJeGxyZWMuaXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxv Z2ljYWxEZWNvZGluZyhocmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNo L2hhc2hvdmZsLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNob3ZmbC5jCmluZGV4IDhj ZmI2Y2U3NWQ2Li42OWU5MGZmYWM1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hh c2gvaGFzaG92ZmwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNob3ZmbC5jCkBA IC0zODIsNyArMzgyLDcgQEAgZm91bmQ6CiAJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVsKSkKIAl7 CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwotCQl4bF9oYXNoX2FkZF9vdmZsX3BhZ2UgeGxyZWM7CisJ CXhsX2hhc2hfYWRkX292ZmxfcGFnZSB4bHJlYyA9IHswfTsKIAogCQl4bHJlYy5ibXBhZ2VfZm91 bmQgPSBwYWdlX2ZvdW5kOwogCQl4bHJlYy5ibXNpemUgPSBtZXRhcC0+aGFzaG1fYm1zaXplOwpA QCAtNjQ0LDcgKzY0NCw3IEBAIF9oYXNoX2ZyZWVvdmZscGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWNrZXRidWYsIEJ1ZmZlciBvdmZsYnVmLAogCS8qIFhMT0cgc3R1ZmYgKi8KIAlpZiAoUmVs YXRpb25OZWVkc1dBTChyZWwpKQogCXsKLQkJeGxfaGFzaF9zcXVlZXplX3BhZ2UgeGxyZWM7CisJ CXhsX2hhc2hfc3F1ZWV6ZV9wYWdlIHhscmVjID0gezB9OwogCQlYTG9nUmVjUHRyCXJlY3B0cjsK IAkJaW50CQkJaTsKIAkJYm9vbAkJbW9kX3didWYgPSBmYWxzZTsKQEAgLTk4Nyw3ICs5ODcsNyBA QCByZWFkcGFnZToKIAkJCQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVsKSkKIAkJCQkJewogCQkJ CQkJWExvZ1JlY1B0cglyZWNwdHI7Ci0JCQkJCQl4bF9oYXNoX21vdmVfcGFnZV9jb250ZW50cyB4 bHJlYzsKKwkJCQkJCXhsX2hhc2hfbW92ZV9wYWdlX2NvbnRlbnRzIHhscmVjID0gezB9OwogCiAJ CQkJCQl4bHJlYy5udHVwcyA9IG5pdHVwczsKIAkJCQkJCXhscmVjLmlzX3ByaW1fYnVja2V0X3Nh bWVfd3J0ID0gKHdidWYgPT0gYnVja2V0X2J1Zik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGFzaC9oYXNocGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHBhZ2Uu YwppbmRleCA4ZTIyMGEzYWUxNi4uNjFhMGJhZGJmYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFz aHBhZ2UuYwpAQCAtMzg2LDcgKzM4Niw3IEBAIF9oYXNoX2luaXQoUmVsYXRpb24gcmVsLCBkb3Vi bGUgbnVtX3R1cGxlcywgRm9ya051bWJlciBmb3JrTnVtKQogCS8qIFhMT0cgc3R1ZmYgKi8KIAlp ZiAodXNlX3dhbCkKIAl7Ci0JCXhsX2hhc2hfaW5pdF9tZXRhX3BhZ2UgeGxyZWM7CisJCXhsX2hh c2hfaW5pdF9tZXRhX3BhZ2UgeGxyZWMgPSB7MH07CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCiAJ CXhscmVjLm51bV90dXBsZXMgPSBudW1fdHVwbGVzOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIF9oYXNo X2luaXQoUmVsYXRpb24gcmVsLCBkb3VibGUgbnVtX3R1cGxlcywgRm9ya051bWJlciBmb3JrTnVt KQogCS8qIFhMT0cgc3R1ZmYgKi8KIAlpZiAodXNlX3dhbCkKIAl7Ci0JCXhsX2hhc2hfaW5pdF9i aXRtYXBfcGFnZSB4bHJlYzsKKwkJeGxfaGFzaF9pbml0X2JpdG1hcF9wYWdlIHhscmVjID0gezB9 OwogCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAogCQl4bHJlYy5ibXNpemUgPSBtZXRhcC0+aGFzaG1f Ym1zaXplOwpAQCAtODk5LDcgKzg5OSw3IEBAIHJlc3RhcnRfZXhwYW5kOgogCS8qIFhMT0cgc3R1 ZmYgKi8KIAlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWwpKQogCXsKLQkJeGxfaGFzaF9zcGxpdF9h bGxvY2F0ZV9wYWdlIHhscmVjOworCQl4bF9oYXNoX3NwbGl0X2FsbG9jYXRlX3BhZ2UgeGxyZWMg PSB7MH07CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCiAJCXhscmVjLm5ld19idWNrZXQgPSBtYXhi dWNrZXQ7CkBAIC0xMjk3LDcgKzEyOTcsNyBAQCBfaGFzaF9zcGxpdGJ1Y2tldChSZWxhdGlvbiBy ZWwsCiAJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVsKSkKIAl7CiAJCVhMb2dSZWNQdHIJcmVjcHRy OwotCQl4bF9oYXNoX3NwbGl0X2NvbXBsZXRlIHhscmVjOworCQl4bF9oYXNoX3NwbGl0X2NvbXBs ZXRlIHhscmVjID0gezB9OwogCiAJCXhscmVjLm9sZF9idWNrZXRfZmxhZyA9IG9vcGFxdWUtPmhh c2hvX2ZsYWc7CiAJCXhscmVjLm5ld19idWNrZXRfZmxhZyA9IG5vcGFxdWUtPmhhc2hvX2ZsYWc7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDk4ZDUzY2FlZWE4Li5jOGIxZWY3ZDM3MiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTIyMTgsOCArMjIxOCw4IEBAIGhlYXBfaW5z ZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCS8q IFhMT0cgc3R1ZmYgKi8KIAlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWxhdGlvbikpCiAJewotCQl4 bF9oZWFwX2luc2VydCB4bHJlYzsKLQkJeGxfaGVhcF9oZWFkZXIgeGxoZHI7CisJCXhsX2hlYXBf aW5zZXJ0IHhscmVjID0gezB9OworCQl4bF9oZWFwX2hlYWRlciB4bGhkciA9IHswfTsKIAkJWExv Z1JlY1B0cglyZWNwdHI7CiAJCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJ CXVpbnQ4CQlpbmZvID0gWExPR19IRUFQX0lOU0VSVDsKQEAgLTMxNDksOCArMzE0OSw4IEBAIGwx OgogCSAqLwogCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbGF0aW9uKSkKIAl7Ci0JCXhsX2hlYXBf ZGVsZXRlIHhscmVjOwotCQl4bF9oZWFwX2hlYWRlciB4bGhkcjsKKwkJeGxfaGVhcF9kZWxldGUg eGxyZWMgPSB7MH07CisJCXhsX2hlYXBfaGVhZGVyIHhsaGRyID0gezB9OwogCQlYTG9nUmVjUHRy CXJlY3B0cjsKIAogCQkvKgpAQCAtMzk0OCw3ICszOTQ4LDcgQEAgbDI6CiAKIAkJaWYgKFJlbGF0 aW9uTmVlZHNXQUwocmVsYXRpb24pKQogCQl7Ci0JCQl4bF9oZWFwX2xvY2sgeGxyZWM7CisJCQl4 bF9oZWFwX2xvY2sgeGxyZWMgPSB7MH07CiAJCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAogCQkJWExv Z0JlZ2luSW5zZXJ0KCk7CkBAIC01MjgzLDcgKzUyODMsNyBAQCBmYWlsZWQ6CiAJICovCiAJaWYg KFJlbGF0aW9uTmVlZHNXQUwocmVsYXRpb24pKQogCXsKLQkJeGxfaGVhcF9sb2NrIHhscmVjOwor CQl4bF9oZWFwX2xvY2sgeGxyZWMgPSB7MH07CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCiAJCVhM b2dCZWdpbkluc2VydCgpOwpAQCAtNjAzNCw3ICs2MDM0LDcgQEAgbDQ6CiAJCS8qIFhMT0cgc3R1 ZmYgKi8KIAkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVsKSkKIAkJewotCQkJeGxfaGVhcF9sb2Nr X3VwZGF0ZWQgeGxyZWM7CisJCQl4bF9oZWFwX2xvY2tfdXBkYXRlZCB4bHJlYyA9IHswfTsKIAkJ CVhMb2dSZWNQdHIJcmVjcHRyOwogCQkJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsK IApAQCAtNjIwMSw3ICs2MjAxLDcgQEAgaGVhcF9maW5pc2hfc3BlY3VsYXRpdmUoUmVsYXRpb24g cmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKQogCS8qIFhMT0cgc3R1ZmYgKi8K IAlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWxhdGlvbikpCiAJewotCQl4bF9oZWFwX2NvbmZpcm0g eGxyZWM7CisJCXhsX2hlYXBfY29uZmlybSB4bHJlYyA9IHswfTsKIAkJWExvZ1JlY1B0cglyZWNw dHI7CiAKIAkJeGxyZWMub2ZmbnVtID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIodGlkKTsK QEAgLTYzNDYsNyArNjM0Niw3IEBAIGhlYXBfYWJvcnRfc3BlY3VsYXRpdmUoUmVsYXRpb24gcmVs YXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKQogCSAqLwogCWlmIChSZWxhdGlvbk5l ZWRzV0FMKHJlbGF0aW9uKSkKIAl7Ci0JCXhsX2hlYXBfZGVsZXRlIHhscmVjOworCQl4bF9oZWFw X2RlbGV0ZSB4bHJlYyA9IHswfTsKIAkJWExvZ1JlY1B0cglyZWNwdHI7CiAKIAkJeGxyZWMuZmxh Z3MgPSBYTEhfREVMRVRFX0lTX1NVUEVSOwpAQCAtNjY0Niw3ICs2NjQ2LDcgQEAgaGVhcF9pbnBs YWNlX3VwZGF0ZV9hbmRfdW5sb2NrKFJlbGF0aW9uIHJlbGF0aW9uLAogCS8qIFhMT0cgc3R1ZmYg Ki8KIAlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWxhdGlvbikpCiAJewotCQl4bF9oZWFwX2lucGxh Y2UgeGxyZWM7CisJCXhsX2hlYXBfaW5wbGFjZSB4bHJlYyA9IHswfTsKIAkJUEdBbGlnbmVkQmxv Y2sgY29waWVkX2J1ZmZlcjsKIAkJY2hhcgkgICAqb3JpZ2RhdGEgPSAoY2hhciAqKSBCdWZmZXJH ZXRCbG9jayhidWZmZXIpOwogCQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwpA QCAtNjY2Nyw3ICs2NjY3LDcgQEAgaGVhcF9pbnBsYWNlX3VwZGF0ZV9hbmRfdW5sb2NrKFJlbGF0 aW9uIHJlbGF0aW9uLAogCQlYTG9nQmVnaW5JbnNlcnQoKTsKIAkJWExvZ1JlZ2lzdGVyRGF0YSgm eGxyZWMsIE1pblNpemVPZkhlYXBJbnBsYWNlKTsKIAkJaWYgKG5tc2dzICE9IDApCi0JCQlYTG9n UmVnaXN0ZXJEYXRhKGludmFsTWVzc2FnZXMsCisJCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICop IGludmFsTWVzc2FnZXMsCiAJCQkJCQkJIG5tc2dzICogc2l6ZW9mKFNoYXJlZEludmFsaWRhdGlv bk1lc3NhZ2UpKTsKIAogCQkvKiByZWdpc3RlciBibG9jayBtYXRjaGluZyB3aGF0IGJ1ZmZlciB3 aWxsIGxvb2sgbGlrZSBhZnRlciBjaGFuZ2VzICovCkBAIC04ODg0LDcgKzg4ODQsNyBAQCBYTG9n UmVjUHRyCiBsb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVy LCBCdWZmZXIgdm1fYnVmZmVyLAogCQkJCSBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RI b3Jpem9uLCB1aW50OCB2bWZsYWdzKQogewotCXhsX2hlYXBfdmlzaWJsZSB4bHJlYzsKKwl4bF9o ZWFwX3Zpc2libGUgeGxyZWMgPSB7MH07CiAJWExvZ1JlY1B0cglyZWNwdHI7CiAJdWludDgJCWZs YWdzOwogCkBAIC04OTIwLDkgKzg5MjAsOSBAQCBsb2dfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVs biwgQnVmZmVyIG9sZGJ1ZiwKIAkJCQlIZWFwVHVwbGUgb2xkX2tleV90dXBsZSwKIAkJCQlib29s IGFsbF92aXNpYmxlX2NsZWFyZWQsIGJvb2wgbmV3X2FsbF92aXNpYmxlX2NsZWFyZWQpCiB7Ci0J eGxfaGVhcF91cGRhdGUgeGxyZWM7Ci0JeGxfaGVhcF9oZWFkZXIgeGxoZHI7Ci0JeGxfaGVhcF9o ZWFkZXIgeGxoZHJfaWR4OworCXhsX2hlYXBfdXBkYXRlIHhscmVjID0gezB9OworCXhsX2hlYXBf aGVhZGVyIHhsaGRyID0gezB9OworCXhsX2hlYXBfaGVhZGVyIHhsaGRyX2lkeCA9IHswfTsKIAl1 aW50OAkJaW5mbzsKIAl1aW50MTYJCXByZWZpeF9zdWZmaXhbMl07CiAJdWludDE2CQlwcmVmaXhs ZW4gPSAwLApAQCAtOTEzOSw3ICs5MTM5LDcgQEAgbG9nX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJl bG4sIEJ1ZmZlciBvbGRidWYsCiBzdGF0aWMgWExvZ1JlY1B0cgogbG9nX2hlYXBfbmV3X2NpZChS ZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCkKIHsKLQl4bF9oZWFwX25ld19jaWQgeGxy ZWM7CisJeGxfaGVhcF9uZXdfY2lkIHhscmVjID0gezB9OwogCiAJWExvZ1JlY1B0cglyZWNwdHI7 CiAJSGVhcFR1cGxlSGVhZGVyIGhkciA9IHR1cC0+dF9kYXRhOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV94bG9nLmMKaW5kZXggZjc2NTM0NWU5ZTQuLjQ2ZmM2ODkzMDJkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKQEAgLTMxLDcgKzMxLDcgQEAgaGVhcF94bG9nX3By dW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIHsKIAlYTG9nUmVjUHRyCWxzbiA9 IHJlY29yZC0+RW5kUmVjUHRyOwogCWNoYXIJICAgKm1haW5kYXRhcHRyID0gWExvZ1JlY0dldERh dGEocmVjb3JkKTsKLQl4bF9oZWFwX3BydW5lIHhscmVjOworCXhsX2hlYXBfcHJ1bmUgeGxyZWMg PSB7MH07CiAJQnVmZmVyCQlidWZmZXI7CiAJUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3I7CiAJQmxv Y2tOdW1iZXIgYmxrbm87CkBAIC01MDQsNyArNTA0LDcgQEAgaGVhcF94bG9nX2luc2VydChYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJY2hhcgkJZGF0YVtNYXhIZWFwVHVwbGVTaXplXTsKIAl9 CQkJdGJ1ZjsKIAlIZWFwVHVwbGVIZWFkZXIgaHR1cDsKLQl4bF9oZWFwX2hlYWRlciB4bGhkcjsK Kwl4bF9oZWFwX2hlYWRlciB4bGhkciA9IHswfTsKIAl1aW50MzIJCW5ld2xlbjsKIAlTaXplCQlm cmVlc3BhY2UgPSAwOwogCVJlbEZpbGVMb2NhdG9yIHRhcmdldF9sb2NhdG9yOwpAQCAtODI4LDcg KzgyOCw3IEBAIGhlYXBfeGxvZ191cGRhdGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQsIGJvb2wg aG90X3VwZGF0ZSkKIAkJSGVhcFR1cGxlSGVhZGVyRGF0YSBoZHI7CiAJCWNoYXIJCWRhdGFbTWF4 SGVhcFR1cGxlU2l6ZV07CiAJfQkJCXRidWY7Ci0JeGxfaGVhcF9oZWFkZXIgeGxoZHI7CisJeGxf aGVhcF9oZWFkZXIgeGxoZHIgPSB7MH07CiAJdWludDMyCQluZXdsZW47CiAJU2l6ZQkJZnJlZXNw YWNlID0gMDsKIAlYTG9nUmVkb0FjdGlvbiBvbGRhY3Rpb247CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCmluZGV4IDYzMmMyNDI3OTUyLi5kNjA5YjYzZWY5NyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTIxNzQsMTcgKzIxNzQsMTcgQEAgbG9nX2hlYXBfcHJ1bmVf YW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCSAgT2Zm c2V0TnVtYmVyICpkZWFkLCBpbnQgbmRlYWQsCiAJCQkJCQkgIE9mZnNldE51bWJlciAqdW51c2Vk LCBpbnQgbnVudXNlZCkKIHsKLQl4bF9oZWFwX3BydW5lIHhscmVjOworCXhsX2hlYXBfcHJ1bmUg eGxyZWMgPSB7MH07CiAJWExvZ1JlY1B0cglyZWNwdHI7CiAJdWludDgJCWluZm87CiAJdWludDgJ CXJlZ2J1Zl9mbGFnc19oZWFwOwogCiAJLyogVGhlIGZvbGxvd2luZyBsb2NhbCB2YXJpYWJsZXMg aG9sZCBkYXRhIHJlZ2lzdGVyZWQgaW4gdGhlIFdBTCByZWNvcmQ6ICovCiAJeGxocF9mcmVlemVf cGxhbiBwbGFuc1tNYXhIZWFwVHVwbGVzUGVyUGFnZV07Ci0JeGxocF9mcmVlemVfcGxhbnMgZnJl ZXplX3BsYW5zOwotCXhsaHBfcHJ1bmVfaXRlbXMgcmVkaXJlY3RfaXRlbXM7Ci0JeGxocF9wcnVu ZV9pdGVtcyBkZWFkX2l0ZW1zOwotCXhsaHBfcHJ1bmVfaXRlbXMgdW51c2VkX2l0ZW1zOworCXhs aHBfZnJlZXplX3BsYW5zIGZyZWV6ZV9wbGFucyA9IHswfTsKKwl4bGhwX3BydW5lX2l0ZW1zIHJl ZGlyZWN0X2l0ZW1zID0gezB9OworCXhsaHBfcHJ1bmVfaXRlbXMgZGVhZF9pdGVtcyA9IHswfTsK Kwl4bGhwX3BydW5lX2l0ZW1zIHVudXNlZF9pdGVtcyA9IHswfTsKIAlPZmZzZXROdW1iZXIgZnJ6 X29mZnNldHNbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwogCWJvb2wJCWRvX3BydW5lID0gbnJlZGly ZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMDsKIAlib29sCQlkb19zZXRfdm0g PSB2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3Jld3JpdGVoZWFwLmMKaW5kZXggNzdmZDQ4ZWI1OWUuLjJmNDcyMjJhNWMwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKQEAgLTgyNiw3ICs4MjYsNyBAQCBsb2dpY2FsX2hl YXBfcmV3cml0ZV9mbHVzaF9tYXBwaW5ncyhSZXdyaXRlU3RhdGUgc3RhdGUpCiAJewogCQljaGFy CSAgICp3YWxkYXRhOwogCQljaGFyCSAgICp3YWxkYXRhX3N0YXJ0OwotCQl4bF9oZWFwX3Jld3Jp dGVfbWFwcGluZyB4bHJlYzsKKwkJeGxfaGVhcF9yZXdyaXRlX21hcHBpbmcgeGxyZWMgPSB7MH07 CiAJCU9pZAkJCWRib2lkOwogCQl1aW50MzIJCWxlbjsKIAkJaW50CQkJd3JpdHRlbjsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCA5NWJlMGIxNzkzOS4uZTIwNTkwYTU1NDcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKQEAgLTI0Niw3ICsyNDYsNyBAQCBf YnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIEluZGV4VHVwbGUgbmV3aXRl bSwgU2l6ZSBuZXdpdGVtc3osCiAJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVsKSkKIAl7CiAJCVhM b2dSZWNQdHIJcmVjcHRyOwotCQl4bF9idHJlZV9kZWR1cCB4bHJlY19kZWR1cDsKKwkJeGxfYnRy ZWVfZGVkdXAgeGxyZWNfZGVkdXAgPSB7MH07CiAKIAkJeGxyZWNfZGVkdXAubmludGVydmFscyA9 IHN0YXRlLT5uaW50ZXJ2YWxzOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idGluc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYwpp bmRleCBkMTdhYWE1YWEwZi4uNzFhNjJiMDY2OTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRpbnNlcnQuYwpAQCAtMTMxOSw4ICsxMzE5LDggQEAgX2J0X2luc2VydG9ucGcoUmVsYXRpb24g cmVsLAogCQkvKiBYTE9HIHN0dWZmICovCiAJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCiAJ CXsKLQkJCXhsX2J0cmVlX2luc2VydCB4bHJlYzsKLQkJCXhsX2J0cmVlX21ldGFkYXRhIHhsbWV0 YTsKKwkJCXhsX2J0cmVlX2luc2VydCB4bHJlYyA9IHswfTsKKwkJCXhsX2J0cmVlX21ldGFkYXRh IHhsbWV0YSA9IHswfTsKIAkJCXVpbnQ4CQl4bGluZm87CiAJCQlYTG9nUmVjUHRyCXJlY3B0cjsK IAkJCXVpbnQxNgkJdXBvc3RpbmdvZmY7CkBAIC0xOTgxLDcgKzE5ODEsNyBAQCBfYnRfc3BsaXQo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIEJ1 ZmZlciBidWYsCiAJLyogWExPRyBzdHVmZiAqLwogCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbCkp CiAJewotCQl4bF9idHJlZV9zcGxpdCB4bHJlYzsKKwkJeGxfYnRyZWVfc3BsaXQgeGxyZWMgPSB7 MH07CiAJCXVpbnQ4CQl4bGluZm87CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCkBAIC0yNTcwLDkg KzI1NzAsOSBAQCBfYnRfbmV3bGV2ZWwoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBC dWZmZXIgbGJ1ZiwgQnVmZmVyIHJidWYpCiAJLyogWExPRyBzdHVmZiAqLwogCWlmIChSZWxhdGlv bk5lZWRzV0FMKHJlbCkpCiAJewotCQl4bF9idHJlZV9uZXdyb290IHhscmVjOworCQl4bF9idHJl ZV9uZXdyb290IHhscmVjID0gezB9OwogCQlYTG9nUmVjUHRyCXJlY3B0cjsKLQkJeGxfYnRyZWVf bWV0YWRhdGEgbWQ7CisJCXhsX2J0cmVlX21ldGFkYXRhIG1kID0gezB9OwogCiAJCXhscmVjLnJv b3RibGsgPSByb290YmxrbnVtOwogCQl4bHJlYy5sZXZlbCA9IG1ldGFkLT5idG1fbGV2ZWw7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCmluZGV4IDQxMjVjMTg1ZThiLi44MGY5ZWMyYzg0 NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKQEAgLTI4NSw3ICsyODUsNyBAQCBf YnRfc2V0X2NsZWFudXBfaW5mbyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdl cykKIAkvKiB3cml0ZSB3YWwgcmVjb3JkIGlmIG5lZWRlZCAqLwogCWlmIChSZWxhdGlvbk5lZWRz V0FMKHJlbCkpCiAJewotCQl4bF9idHJlZV9tZXRhZGF0YSBtZDsKKwkJeGxfYnRyZWVfbWV0YWRh dGEgbWQgPSB7MH07CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCiAJCVhMb2dCZWdpbkluc2VydCgp OwpAQCAtNDcyLDkgKzQ3Miw5IEBAIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aGVhcHJlbCwgaW50IGFjY2VzcykKIAkJLyogWExPRyBzdHVmZiAqLwogCQlpZiAoUmVsYXRpb25O ZWVkc1dBTChyZWwpKQogCQl7Ci0JCQl4bF9idHJlZV9uZXdyb290IHhscmVjOworCQkJeGxfYnRy ZWVfbmV3cm9vdCB4bHJlYyA9IHswfTsKIAkJCVhMb2dSZWNQdHIJcmVjcHRyOwotCQkJeGxfYnRy ZWVfbWV0YWRhdGEgbWQ7CisJCQl4bF9idHJlZV9tZXRhZGF0YSBtZCA9IHswfTsKIAogCQkJWExv Z0JlZ2luSW5zZXJ0KCk7CiAJCQlYTG9nUmVnaXN0ZXJCdWZmZXIoMCwgcm9vdGJ1ZiwgUkVHQlVG X1dJTExfSU5JVCk7CkBAIC05MzMsNyArOTMzLDcgQEAgX2J0X2FsbG9jYnVmKFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gaGVhcHJlbCkKIAkJCQkgKi8KIAkJCQlpZiAoUmVsYXRpb25OZWVkc1dBTChy ZWwpICYmIFhMb2dTdGFuZGJ5SW5mb0FjdGl2ZSgpKQogCQkJCXsKLQkJCQkJeGxfYnRyZWVfcmV1 c2VfcGFnZSB4bHJlY19yZXVzZTsKKwkJCQkJeGxfYnRyZWVfcmV1c2VfcGFnZSB4bHJlY19yZXVz ZSA9IHswfTsKIAogCQkJCQkvKgogCQkJCQkgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgcmVnaXN0ZXIg dGhlIGJ1ZmZlciB3aXRoIHRoZSByZWNvcmQsCkBAIC0xMjI3LDcgKzEyMjcsNyBAQCBfYnRfZGVs aXRlbXNfdmFjdXVtKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAlpZiAobmVlZHN3YWwpCiAJ ewogCQlYTG9nUmVjUHRyCXJlY3B0cjsKLQkJeGxfYnRyZWVfdmFjdXVtIHhscmVjX3ZhY3V1bTsK KwkJeGxfYnRyZWVfdmFjdXVtIHhscmVjX3ZhY3V1bSA9IHswfTsKIAogCQl4bHJlY192YWN1dW0u bmRlbGV0ZWQgPSBuZGVsZXRhYmxlOwogCQl4bHJlY192YWN1dW0ubnVwZGF0ZWQgPSBudXBkYXRh YmxlOwpAQCAtMTM0Myw3ICsxMzQzLDcgQEAgX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsCiAJaWYgKG5lZWRzd2FsKQogCXsKIAkJWExvZ1JlY1B0cglyZWNwdHI7 Ci0JCXhsX2J0cmVlX2RlbGV0ZSB4bHJlY19kZWxldGU7CisJCXhsX2J0cmVlX2RlbGV0ZSB4bHJl Y19kZWxldGUgPSB7MH07CiAKIAkJeGxyZWNfZGVsZXRlLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9u ID0gc25hcHNob3RDb25mbGljdEhvcml6b247CiAJCXhscmVjX2RlbGV0ZS5uZGVsZXRlZCA9IG5k ZWxldGFibGU7CkBAIC0xNDM5LDcgKzE0MzksNyBAQCBfYnRfZGVsaXRlbXNfdXBkYXRlKEJUVmFj dXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJsZSwKIAkJewogCQkJQlRWYWN1dW1Q b3N0aW5nIHZhY3Bvc3RpbmcgPSB1cGRhdGFibGVbaV07CiAJCQlTaXplCQlpdGVtc3o7Ci0JCQl4 bF9idHJlZV91cGRhdGUgdXBkYXRlOworCQkJeGxfYnRyZWVfdXBkYXRlIHVwZGF0ZSA9IHswfTsK IAogCQkJdXBkYXRlLm5kZWxldGVkdGlkcyA9IHZhY3Bvc3RpbmctPm5kZWxldGVkdGlkczsKIAkJ CW1lbWNweSh1cGRhdGVkYnVmICsgb2Zmc2V0LCAmdXBkYXRlLm5kZWxldGVkdGlkcywKQEAgLTIy NTIsNyArMjI1Miw3IEBAIF9idF9tYXJrX3BhZ2VfaGFsZmRlYWQoUmVsYXRpb24gcmVsLCBSZWxh dGlvbiBoZWFwcmVsLCBCdWZmZXIgbGVhZmJ1ZiwKIAkvKiBYTE9HIHN0dWZmICovCiAJaWYgKFJl bGF0aW9uTmVlZHNXQUwocmVsKSkKIAl7Ci0JCXhsX2J0cmVlX21hcmtfcGFnZV9oYWxmZGVhZCB4 bHJlYzsKKwkJeGxfYnRyZWVfbWFya19wYWdlX2hhbGZkZWFkIHhscmVjID0gezB9OwogCQlYTG9n UmVjUHRyCXJlY3B0cjsKIAogCQl4bHJlYy5wb2Zmc2V0ID0gcG9mZnNldDsKQEAgLTI2NzMsOCAr MjY3Myw4IEBAIF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBs ZWFmYnVmLCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJLyogWExPRyBzdHVmZiAqLwogCWlmIChS ZWxhdGlvbk5lZWRzV0FMKHJlbCkpCiAJewotCQl4bF9idHJlZV91bmxpbmtfcGFnZSB4bHJlYzsK LQkJeGxfYnRyZWVfbWV0YWRhdGEgeGxtZXRhOworCQl4bF9idHJlZV91bmxpbmtfcGFnZSB4bHJl YyA9IHswfTsKKwkJeGxfYnRyZWVfbWV0YWRhdGEgeGxtZXRhID0gezB9OwogCQl1aW50OAkJeGxp bmZvOwogCQlYTG9nUmVjUHRyCXJlY3B0cjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL2Nsb2dkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvY2xv Z2Rlc2MuYwppbmRleCAwMjIzNzYwNDVkNy4uNTY2OWYwMzg3YzYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9jbG9nZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9ybWdyZGVzYy9jbG9nZGVzYy5jCkBAIC0zMiw3ICszMiw3IEBAIGNsb2dfZGVzYyhTdHJpbmdJ bmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJfQogCWVsc2UgaWYgKGluZm8gPT0g Q0xPR19UUlVOQ0FURSkKIAl7Ci0JCXhsX2Nsb2dfdHJ1bmNhdGUgeGxyZWM7CisJCXhsX2Nsb2df dHJ1bmNhdGUgeGxyZWMgPSB7MH07CiAKIAkJbWVtY3B5KCZ4bHJlYywgcmVjLCBzaXplb2YoeGxf Y2xvZ190cnVuY2F0ZSkpOwogCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInBhZ2UgJSIgUFJJZDY0 ICI7IG9sZGVzdFhhY3QgJXUiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3Jk ZXNjL3hhY3RkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MveGFjdGRlc2MuYwpp bmRleCA0ZjUzZDMwMzVjYy4uNWU5YjA4YjFkYWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy94YWN0ZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy94YWN0ZGVzYy5jCkBAIC0xMjUsNyArMTI1LDcgQEAgUGFyc2VDb21taXRSZWNvcmQodWludDgg aW5mbywgeGxfeGFjdF9jb21taXQgKnhscmVjLCB4bF94YWN0X3BhcnNlZF9jb21taXQgKnBhcnMK IAogCWlmIChwYXJzZWQtPnhpbmZvICYgWEFDVF9YSU5GT19IQVNfT1JJR0lOKQogCXsKLQkJeGxf eGFjdF9vcmlnaW4geGxfb3JpZ2luOworCQl4bF94YWN0X29yaWdpbiB4bF9vcmlnaW4gPSB7MH07 CiAKIAkJLyogbm8gYWxpZ25tZW50IGlzIGd1YXJhbnRlZWQsIHNvIGNvcHkgb250byBzdGFjayAq LwogCQltZW1jcHkoJnhsX29yaWdpbiwgZGF0YSwgc2l6ZW9mKHhsX29yaWdpbikpOwpAQCAtMjIw LDcgKzIyMCw3IEBAIFBhcnNlQWJvcnRSZWNvcmQodWludDggaW5mbywgeGxfeGFjdF9hYm9ydCAq eGxyZWMsIHhsX3hhY3RfcGFyc2VkX2Fib3J0ICpwYXJzZWQpCiAKIAlpZiAocGFyc2VkLT54aW5m byAmIFhBQ1RfWElORk9fSEFTX09SSUdJTikKIAl7Ci0JCXhsX3hhY3Rfb3JpZ2luIHhsX29yaWdp bjsKKwkJeGxfeGFjdF9vcmlnaW4geGxfb3JpZ2luID0gezB9OwogCiAJCS8qIG5vIGFsaWdubWVu dCBpcyBndWFyYW50ZWVkLCBzbyBjb3B5IG9udG8gc3RhY2sgKi8KIAkJbWVtY3B5KCZ4bF9vcmln aW4sIGRhdGEsIHNpemVvZih4bF9vcmlnaW4pKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy94bG9nZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL3hs b2dkZXNjLmMKaW5kZXggZmYwNzhmMjIyNjQuLjZiMzM0MWQ3NDZlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MveGxvZ2Rlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2MveGxvZ2Rlc2MuYwpAQCAtMTE2LDcgKzExNiw3IEBAIHhsb2dfZGVzYyhTdHJp bmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJfQogCWVsc2UgaWYgKGluZm8g PT0gWExPR19QQVJBTUVURVJfQ0hBTkdFKQogCXsKLQkJeGxfcGFyYW1ldGVyX2NoYW5nZSB4bHJl YzsKKwkJeGxfcGFyYW1ldGVyX2NoYW5nZSB4bHJlYyA9IHswfTsKIAkJY29uc3QgY2hhciAqd2Fs X2xldmVsX3N0cjsKIAogCQltZW1jcHkoJnhscmVjLCByZWMsIHNpemVvZih4bF9wYXJhbWV0ZXJf Y2hhbmdlKSk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgeGxvZ19kZXNjKFN0cmluZ0luZm8gYnVmLCBY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAl9CiAJZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0VORF9P Rl9SRUNPVkVSWSkKIAl7Ci0JCXhsX2VuZF9vZl9yZWNvdmVyeSB4bHJlYzsKKwkJeGxfZW5kX29m X3JlY292ZXJ5IHhscmVjID0gezB9OwogCiAJCW1lbWNweSgmeGxyZWMsIHJlYywgc2l6ZW9mKHhs X2VuZF9vZl9yZWNvdmVyeSkpOwogCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInRsaSAldTsgcHJl diB0bGkgJXU7IHRpbWUgJXM7IHdhbF9sZXZlbCAlcyIsCkBAIC0xNTQsNyArMTU0LDcgQEAgeGxv Z19kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAl9CiAJZWxz ZSBpZiAoaW5mbyA9PSBYTE9HX09WRVJXUklURV9DT05UUkVDT1JEKQogCXsKLQkJeGxfb3Zlcndy aXRlX2NvbnRyZWNvcmQgeGxyZWM7CisJCXhsX292ZXJ3cml0ZV9jb250cmVjb3JkIHhscmVjID0g ezB9OwogCiAJCW1lbWNweSgmeGxyZWMsIHJlYywgc2l6ZW9mKHhsX292ZXJ3cml0ZV9jb250cmVj b3JkKSk7CiAJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAibHNuICVYLyUwOFg7IHRpbWUgJXMiLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdkb2luc2VydC5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdkb2luc2VydC5jCmluZGV4IDdjNzM3MWM2OWU4Li40 NGUyOTgxNGIxMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdkb2lu c2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnZG9pbnNlcnQuYwpAQCAt MjAyLDcgKzIwMiw3IEBAIHN0YXRpYyB2b2lkCiBhZGRMZWFmVHVwbGUoUmVsYXRpb24gaW5kZXgs IFNwR2lzdFN0YXRlICpzdGF0ZSwgU3BHaXN0TGVhZlR1cGxlIGxlYWZUdXBsZSwKIAkJCSBTUFBh Z2VEZXNjICpjdXJyZW50LCBTUFBhZ2VEZXNjICpwYXJlbnQsIGJvb2wgaXNOdWxscywgYm9vbCBp c05ldykKIHsKLQlzcGd4bG9nQWRkTGVhZiB4bHJlYzsKKwlzcGd4bG9nQWRkTGVhZiB4bHJlYyA9 IHswfTsKIAogCXhscmVjLm5ld1BhZ2UgPSBpc05ldzsKIAl4bHJlYy5zdG9yZXNOdWxscyA9IGlz TnVsbHM7CkBAIC0zOTksNyArMzk5LDcgQEAgbW92ZUxlYWZzKFJlbGF0aW9uIGluZGV4LCBTcEdp c3RTdGF0ZSAqc3RhdGUsCiAJT2Zmc2V0TnVtYmVyICp0b0RlbGV0ZTsKIAlPZmZzZXROdW1iZXIg KnRvSW5zZXJ0OwogCUJsb2NrTnVtYmVyIG5ibGtubzsKLQlzcGd4bG9nTW92ZUxlYWZzIHhscmVj OworCXNwZ3hsb2dNb3ZlTGVhZnMgeGxyZWMgPSB7MH07CiAJY2hhcgkgICAqbGVhZmRhdGEsCiAJ CQkgICAqbGVhZnB0cjsKIApAQCAtNzAyLDcgKzcwMiw3IEBAIGRvUGlja1NwbGl0KFJlbGF0aW9u IGluZGV4LCBTcEdpc3RTdGF0ZSAqc3RhdGUsCiAJaW50CQkJY3VycmVudEZyZWVTcGFjZTsKIAlp bnQJCQl0b3RhbExlYWZTaXplczsKIAlib29sCQlhbGxUaGVTYW1lOwotCXNwZ3hsb2dQaWNrU3Bs aXQgeGxyZWM7CisJc3BneGxvZ1BpY2tTcGxpdCB4bHJlYyA9IHswfTsKIAljaGFyCSAgICpsZWFm ZGF0YSwKIAkJCSAgICpsZWFmcHRyOwogCVNQUGFnZURlc2MJc2F2ZUN1cnJlbnQ7CkBAIC0xNTEy LDcgKzE1MTIsNyBAQCBzcGdBZGROb2RlQWN0aW9uKFJlbGF0aW9uIGluZGV4LCBTcEdpc3RTdGF0 ZSAqc3RhdGUsCiAJCQkJIGludCBub2RlTiwgRGF0dW0gbm9kZUxhYmVsKQogewogCVNwR2lzdElu bmVyVHVwbGUgbmV3SW5uZXJUdXBsZTsKLQlzcGd4bG9nQWRkTm9kZSB4bHJlYzsKKwlzcGd4bG9n QWRkTm9kZSB4bHJlYyA9IHswfTsKIAogCS8qIFNob3VsZCBub3QgYmUgYXBwbGllZCB0byBudWxs cyAqLwogCUFzc2VydCghU3BHaXN0UGFnZVN0b3Jlc051bGxzKGN1cnJlbnQtPnBhZ2UpKTsKQEAg LTE3MTksNyArMTcxOSw3IEBAIHNwZ1NwbGl0Tm9kZUFjdGlvbihSZWxhdGlvbiBpbmRleCwgU3BH aXN0U3RhdGUgKnN0YXRlLAogCUJsb2NrTnVtYmVyIHBvc3RmaXhCbGtubzsKIAlPZmZzZXROdW1i ZXIgcG9zdGZpeE9mZnNldDsKIAlpbnQJCQlpOwotCXNwZ3hsb2dTcGxpdFR1cGxlIHhscmVjOwor CXNwZ3hsb2dTcGxpdFR1cGxlIHhscmVjID0gezB9OwogCUJ1ZmZlcgkJbmV3QnVmZmVyID0gSW52 YWxpZEJ1ZmZlcjsKIAogCS8qIFNob3VsZCBub3QgYmUgYXBwbGllZCB0byBudWxscyAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKaW5kZXggNmI3MTE3YjU2YjIuLjc3OTQ3NzIz ZDA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKQEAgLTEyNyw3ICsxMjcs NyBAQCB2YWN1dW1MZWFmUGFnZShzcGdCdWxrRGVsZXRlU3RhdGUgKmJkcywgUmVsYXRpb24gaW5k ZXgsIEJ1ZmZlciBidWZmZXIsCiAJCQkgICBib29sIGZvclBlbmRpbmcpCiB7CiAJUGFnZQkJcGFn ZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKLQlzcGd4bG9nVmFjdXVtTGVhZiB4bHJlYzsKKwlz cGd4bG9nVmFjdXVtTGVhZiB4bHJlYyA9IHswfTsKIAlPZmZzZXROdW1iZXIgdG9EZWFkW01heElu ZGV4VHVwbGVzUGVyUGFnZV07CiAJT2Zmc2V0TnVtYmVyIHRvUGxhY2Vob2xkZXJbTWF4SW5kZXhU dXBsZXNQZXJQYWdlXTsKIAlPZmZzZXROdW1iZXIgbW92ZVNyY1tNYXhJbmRleFR1cGxlc1BlclBh Z2VdOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHN0YXRpYyB2b2lkCiB2YWN1dW1MZWFmUm9vdChzcGdC dWxrRGVsZXRlU3RhdGUgKmJkcywgUmVsYXRpb24gaW5kZXgsIEJ1ZmZlciBidWZmZXIpCiB7CiAJ UGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKLQlzcGd4bG9nVmFjdXVtUm9vdCB4 bHJlYzsKKwlzcGd4bG9nVmFjdXVtUm9vdCB4bHJlYyA9IHswfTsKIAlPZmZzZXROdW1iZXIgdG9E ZWxldGVbTWF4SW5kZXhUdXBsZXNQZXJQYWdlXTsKIAlPZmZzZXROdW1iZXIgaSwKIAkJCQltYXgg PSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpOwpAQCAtNTAyLDcgKzUwMiw3IEBAIHZhY3V1 bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRpb24gaW5kZXgsIFJlbGF0aW9uIGhlYXByZWws IEJ1ZmZlciBidWZmZXIpCiAJYm9vbAkJaGFzVXBkYXRlID0gZmFsc2U7CiAJT2Zmc2V0TnVtYmVy IGl0ZW1Ub1BsYWNlaG9sZGVyW01heEluZGV4VHVwbGVzUGVyUGFnZV07CiAJT2Zmc2V0TnVtYmVy IGl0ZW1ub3NbTWF4SW5kZXhUdXBsZXNQZXJQYWdlXTsKLQlzcGd4bG9nVmFjdXVtUmVkaXJlY3Qg eGxyZWM7CisJc3BneGxvZ1ZhY3V1bVJlZGlyZWN0IHhscmVjID0gezB9OwogCUdsb2JhbFZpc1N0 YXRlICp2aXN0ZXN0OwogCiAJeGxyZWMuaXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2li bGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwcmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9zcGdpc3Qvc3BneGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9n LmMKaW5kZXggNTVlODA2NmE3N2IuLmIyZDI1OGY2YzI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0 L3NwZ3hsb2cuYwpAQCAtNzcsNyArNzcsNyBAQCBzcGdSZWRvQWRkTGVhZihYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAljaGFyCSAgICpwdHIgPSBYTG9nUmVjR2V0RGF0YShyZWNvcmQpOwogCXNw Z3hsb2dBZGRMZWFmICp4bGRhdGEgPSAoc3BneGxvZ0FkZExlYWYgKikgcHRyOwogCWNoYXIJICAg KmxlYWZUdXBsZTsKLQlTcEdpc3RMZWFmVHVwbGVEYXRhIGxlYWZUdXBsZUhkcjsKKwlTcEdpc3RM ZWFmVHVwbGVEYXRhIGxlYWZUdXBsZUhkciA9IHswfTsKIAlCdWZmZXIJCWJ1ZmZlcjsKIAlQYWdl CQlwYWdlOwogCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKQEAgLTIyMSw3ICsyMjEsNyBAQCBzcGdS ZWRvTW92ZUxlYWZzKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlmb3IgKGkgPSAwOyBpIDwg bkluc2VydDsgaSsrKQogCQl7CiAJCQljaGFyCSAgICpsZWFmVHVwbGU7Ci0JCQlTcEdpc3RMZWFm VHVwbGVEYXRhIGxlYWZUdXBsZUhkcjsKKwkJCVNwR2lzdExlYWZUdXBsZURhdGEgbGVhZlR1cGxl SGRyID0gezB9OwogCiAJCQkvKgogCQkJICogdGhlIHR1cGxlcyBhcmUgbm90IGFsaWduZWQsIHNv IG11c3QgY29weSB0byBhY2Nlc3MgdGhlIHNpemUKQEAgLTI4NSw3ICsyODUsNyBAQCBzcGdSZWRv QWRkTm9kZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAljaGFyCSAgICpwdHIgPSBYTG9nUmVj R2V0RGF0YShyZWNvcmQpOwogCXNwZ3hsb2dBZGROb2RlICp4bGRhdGEgPSAoc3BneGxvZ0FkZE5v ZGUgKikgcHRyOwogCWNoYXIJICAgKmlubmVyVHVwbGU7Ci0JU3BHaXN0SW5uZXJUdXBsZURhdGEg aW5uZXJUdXBsZUhkcjsKKwlTcEdpc3RJbm5lclR1cGxlRGF0YSBpbm5lclR1cGxlSGRyID0gezB9 OwogCVNwR2lzdFN0YXRlIHN0YXRlOwogCUJ1ZmZlcgkJYnVmZmVyOwogCVBhZ2UJCXBhZ2U7CkBA IC00NTEsOSArNDUxLDkgQEAgc3BnUmVkb1NwbGl0VHVwbGUoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJY2hhcgkgICAqcHRyID0gWExvZ1JlY0dldERhdGEocmVjb3JkKTsKIAlzcGd4bG9nU3Bs aXRUdXBsZSAqeGxkYXRhID0gKHNwZ3hsb2dTcGxpdFR1cGxlICopIHB0cjsKIAljaGFyCSAgICpw cmVmaXhUdXBsZTsKLQlTcEdpc3RJbm5lclR1cGxlRGF0YSBwcmVmaXhUdXBsZUhkcjsKKwlTcEdp c3RJbm5lclR1cGxlRGF0YSBwcmVmaXhUdXBsZUhkciA9IHswfTsKIAljaGFyCSAgICpwb3N0Zml4 VHVwbGU7Ci0JU3BHaXN0SW5uZXJUdXBsZURhdGEgcG9zdGZpeFR1cGxlSGRyOworCVNwR2lzdElu bmVyVHVwbGVEYXRhIHBvc3RmaXhUdXBsZUhkciA9IHswfTsKIAlCdWZmZXIJCWJ1ZmZlcjsKIAlQ YWdlCQlwYWdlOwogCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKQEAgLTUyNiw3ICs1MjYsNyBAQCBz cGdSZWRvUGlja1NwbGl0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCWNoYXIJICAgKnB0ciA9 IFhMb2dSZWNHZXREYXRhKHJlY29yZCk7CiAJc3BneGxvZ1BpY2tTcGxpdCAqeGxkYXRhID0gKHNw Z3hsb2dQaWNrU3BsaXQgKikgcHRyOwogCWNoYXIJICAgKmlubmVyVHVwbGU7Ci0JU3BHaXN0SW5u ZXJUdXBsZURhdGEgaW5uZXJUdXBsZUhkcjsKKwlTcEdpc3RJbm5lclR1cGxlRGF0YSBpbm5lclR1 cGxlSGRyID0gezB9OwogCVNwR2lzdFN0YXRlIHN0YXRlOwogCU9mZnNldE51bWJlciAqdG9EZWxl dGU7CiAJT2Zmc2V0TnVtYmVyICp0b0luc2VydDsKQEAgLTY0NSw3ICs2NDUsNyBAQCBzcGdSZWRv UGlja1NwbGl0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCWZvciAoaSA9IDA7IGkgPCB4bGRh dGEtPm5JbnNlcnQ7IGkrKykKIAl7CiAJCWNoYXIJICAgKmxlYWZUdXBsZTsKLQkJU3BHaXN0TGVh ZlR1cGxlRGF0YSBsZWFmVHVwbGVIZHI7CisJCVNwR2lzdExlYWZUdXBsZURhdGEgbGVhZlR1cGxl SGRyID0gezB9OwogCiAJCS8qIHRoZSB0dXBsZXMgYXJlIG5vdCBhbGlnbmVkLCBzbyBtdXN0IGNv cHkgdG8gYWNjZXNzIHRoZSBzaXplIGZpZWxkLiAqLwogCQlsZWFmVHVwbGUgPSBwdHI7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9jbG9nLmMKaW5kZXggYjVjMzhiYmIxNjIuLmQ2MmQyMmVmNDQ0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCkBAIC0xMDQ0LDcgKzEwNDQsNyBAQCBzdGF0aWMgdm9p ZAogV3JpdGVUcnVuY2F0ZVhsb2dSZWMoaW50NjQgcGFnZW5vLCBUcmFuc2FjdGlvbklkIG9sZGVz dFhhY3QsIE9pZCBvbGRlc3RYYWN0RGIpCiB7CiAJWExvZ1JlY1B0cglyZWNwdHI7Ci0JeGxfY2xv Z190cnVuY2F0ZSB4bHJlYzsKKwl4bF9jbG9nX3RydW5jYXRlIHhscmVjID0gezB9OwogCiAJeGxy ZWMucGFnZW5vID0gcGFnZW5vOwogCXhscmVjLm9sZGVzdFhhY3QgPSBvbGRlc3RYYWN0OwpAQCAt MTA3Niw3ICsxMDc2LDcgQEAgY2xvZ19yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCX0K IAllbHNlIGlmIChpbmZvID09IENMT0dfVFJVTkNBVEUpCiAJewotCQl4bF9jbG9nX3RydW5jYXRl IHhscmVjOworCQl4bF9jbG9nX3RydW5jYXRlIHhscmVjID0gezB9OwogCiAJCW1lbWNweSgmeGxy ZWMsIFhMb2dSZWNHZXREYXRhKHJlY29yZCksIHNpemVvZih4bF9jbG9nX3RydW5jYXRlKSk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMKaW5kZXggNmZhMjE3OGYxZGQuLjU1 MzQ5MDQyZWQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRf dHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYwpAQCAtOTY2 LDcgKzk2Niw3IEBAIENvbW1pdFRzUGFnZVByZWNlZGVzKGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdl MikKIHN0YXRpYyB2b2lkCiBXcml0ZVRydW5jYXRlWGxvZ1JlYyhpbnQ2NCBwYWdlbm8sIFRyYW5z YWN0aW9uSWQgb2xkZXN0WGlkKQogewotCXhsX2NvbW1pdF90c190cnVuY2F0ZSB4bHJlYzsKKwl4 bF9jb21taXRfdHNfdHJ1bmNhdGUgeGxyZWMgPSB7MH07CiAKIAl4bHJlYy5wYWdlbm8gPSBwYWdl bm87CiAJeGxyZWMub2xkZXN0WGlkID0gb2xkZXN0WGlkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9tdWx0aXhhY3QuYwppbmRleCA5MGVjODdkOWRkNi4uYTAwNWJiZWQyMDkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC02NTcsNyArNjU3LDcgQEAgTXVsdGlYYWN0 SWRDcmVhdGVGcm9tTWVtYmVycyhpbnQgbm1lbWJlcnMsIE11bHRpWGFjdE1lbWJlciAqbWVtYmVy cykKIHsKIAlNdWx0aVhhY3RJZCBtdWx0aTsKIAlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0OwotCXhs X211bHRpeGFjdF9jcmVhdGUgeGxyZWM7CisJeGxfbXVsdGl4YWN0X2NyZWF0ZSB4bHJlYyA9IHsw fTsKIAogCWRlYnVnX2Vsb2czKERFQlVHMiwgIkNyZWF0ZTogJXMiLAogCQkJCW14aWRfdG9fc3Ry aW5nKEludmFsaWRNdWx0aVhhY3RJZCwgbm1lbWJlcnMsIG1lbWJlcnMpKTsKQEAgLTcyOCw3ICs3 MjgsNyBAQCBNdWx0aVhhY3RJZENyZWF0ZUZyb21NZW1iZXJzKGludCBubWVtYmVycywgTXVsdGlY YWN0TWVtYmVyICptZW1iZXJzKQogCSAqLwogCVhMb2dCZWdpbkluc2VydCgpOwogCVhMb2dSZWdp c3RlckRhdGEoJnhscmVjLCBTaXplT2ZNdWx0aVhhY3RDcmVhdGUpOwotCVhMb2dSZWdpc3RlckRh dGEobWVtYmVycywgbm1lbWJlcnMgKiBzaXplb2YoTXVsdGlYYWN0TWVtYmVyKSk7CisJWExvZ1Jl Z2lzdGVyRGF0YSgoY2hhciAqKSBtZW1iZXJzLCBubWVtYmVycyAqIHNpemVvZihNdWx0aVhhY3RN ZW1iZXIpKTsKIAogCSh2b2lkKSBYTG9nSW5zZXJ0KFJNX01VTFRJWEFDVF9JRCwgWExPR19NVUxU SVhBQ1RfQ1JFQVRFX0lEKTsKIApAQCAtMjc5Niw3ICsyNzk2LDcgQEAgV3JpdGVNVHJ1bmNhdGVY bG9nUmVjKE9pZCBvbGRlc3RNdWx0aURCLAogCQkJCQkgIE11bHRpWGFjdE9mZnNldCBvbGRlc3RP ZmZzZXQpCiB7CiAJWExvZ1JlY1B0cglyZWNwdHI7Ci0JeGxfbXVsdGl4YWN0X3RydW5jYXRlIHhs cmVjOworCXhsX211bHRpeGFjdF90cnVuY2F0ZSB4bHJlYyA9IHswfTsKIAogCXhscmVjLm9sZGVz dE11bHRpREIgPSBvbGRlc3RNdWx0aURCOwogCXhscmVjLm9sZGVzdE11bHRpID0gb2xkZXN0TXVs dGk7CkBAIC0yODY0LDcgKzI4NjQsNyBAQCBtdWx0aXhhY3RfcmVkbyhYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKIAl9CiAJZWxzZSBpZiAoaW5mbyA9PSBYTE9HX01VTFRJWEFDVF9UUlVOQ0FURV9J RCkKIAl7Ci0JCXhsX211bHRpeGFjdF90cnVuY2F0ZSB4bHJlYzsKKwkJeGxfbXVsdGl4YWN0X3Ry dW5jYXRlIHhscmVjID0gezB9OwogCQlpbnQ2NAkJcGFnZW5vOwogCiAJCW1lbWNweSgmeGxyZWMs IFhMb2dSZWNHZXREYXRhKHJlY29yZCksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXgg ZWJhNGYwNjMxNjguLmRmNzJhMjU2NmU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBA IC03NjEsNyArNzYxLDcgQEAgQXNzaWduVHJhbnNhY3Rpb25JZChUcmFuc2FjdGlvblN0YXRlIHMp CiAJCWlmIChuVW5yZXBvcnRlZFhpZHMgPj0gUEdQUk9DX01BWF9DQUNIRURfU1VCWElEUyB8fAog CQkJbG9nX3Vua25vd25fdG9wKQogCQl7Ci0JCQl4bF94YWN0X2Fzc2lnbm1lbnQgeGxyZWM7CisJ CQl4bF94YWN0X2Fzc2lnbm1lbnQgeGxyZWMgPSB7MH07CiAKIAkJCS8qCiAJCQkgKiB4dG9wIGlz IGFsd2F5cyBzZXQgYnkgbm93IGJlY2F1c2Ugd2UgcmVjdXJzZSB1cCB0cmFuc2FjdGlvbgpAQCAt NTg0MiwxNSArNTg0MiwxNSBAQCBYYWN0TG9nQ29tbWl0UmVjb3JkKFRpbWVzdGFtcFR6IGNvbW1p dF90aW1lLAogCQkJCQlpbnQgeGFjdGZsYWdzLCBUcmFuc2FjdGlvbklkIHR3b3BoYXNlX3hpZCwK IAkJCQkJY29uc3QgY2hhciAqdHdvcGhhc2VfZ2lkKQogewotCXhsX3hhY3RfY29tbWl0IHhscmVj OwotCXhsX3hhY3RfeGluZm8geGxfeGluZm87Ci0JeGxfeGFjdF9kYmluZm8geGxfZGJpbmZvOwot CXhsX3hhY3Rfc3VieGFjdHMgeGxfc3VieGFjdHM7Ci0JeGxfeGFjdF9yZWxmaWxlbG9jYXRvcnMg eGxfcmVsZmlsZWxvY2F0b3JzOwotCXhsX3hhY3Rfc3RhdHNfaXRlbXMgeGxfZHJvcHBlZF9zdGF0 czsKLQl4bF94YWN0X2ludmFscyB4bF9pbnZhbHM7Ci0JeGxfeGFjdF90d29waGFzZSB4bF90d29w aGFzZTsKLQl4bF94YWN0X29yaWdpbiB4bF9vcmlnaW47CisJeGxfeGFjdF9jb21taXQgeGxyZWMg PSB7MH07CisJeGxfeGFjdF94aW5mbyB4bF94aW5mbyA9IHswfTsKKwl4bF94YWN0X2RiaW5mbyB4 bF9kYmluZm8gPSB7MH07CisJeGxfeGFjdF9zdWJ4YWN0cyB4bF9zdWJ4YWN0cyA9IHswfTsKKwl4 bF94YWN0X3JlbGZpbGVsb2NhdG9ycyB4bF9yZWxmaWxlbG9jYXRvcnMgPSB7MH07CisJeGxfeGFj dF9zdGF0c19pdGVtcyB4bF9kcm9wcGVkX3N0YXRzID0gezB9OworCXhsX3hhY3RfaW52YWxzIHhs X2ludmFscyA9IHswfTsKKwl4bF94YWN0X3R3b3BoYXNlIHhsX3R3b3BoYXNlID0gezB9OworCXhs X3hhY3Rfb3JpZ2luIHhsX29yaWdpbiA9IHswfTsKIAl1aW50OAkJaW5mbzsKIAogCUFzc2VydChD cml0U2VjdGlvbkNvdW50ID4gMCk7CkBAIC01OTYzLDcgKzU5NjMsNyBAQCBYYWN0TG9nQ29tbWl0 UmVjb3JkKFRpbWVzdGFtcFR6IGNvbW1pdF90aW1lLAogCXsKIAkJWExvZ1JlZ2lzdGVyRGF0YSgm eGxfcmVsZmlsZWxvY2F0b3JzLAogCQkJCQkJIE1pblNpemVPZlhhY3RSZWxmaWxlTG9jYXRvcnMp OwotCQlYTG9nUmVnaXN0ZXJEYXRhKHJlbHMsCisJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikg cmVscywKIAkJCQkJCSBucmVscyAqIHNpemVvZihSZWxGaWxlTG9jYXRvcikpOwogCX0KIApAQCAt NTk3MSwxNCArNTk3MSwxNCBAQCBYYWN0TG9nQ29tbWl0UmVjb3JkKFRpbWVzdGFtcFR6IGNvbW1p dF90aW1lLAogCXsKIAkJWExvZ1JlZ2lzdGVyRGF0YSgmeGxfZHJvcHBlZF9zdGF0cywKIAkJCQkJ CSBNaW5TaXplT2ZYYWN0U3RhdHNJdGVtcyk7Ci0JCVhMb2dSZWdpc3RlckRhdGEoZHJvcHBlZHN0 YXRzLAorCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopIGRyb3BwZWRzdGF0cywKIAkJCQkJCSBu ZHJvcHBlZHN0YXRzICogc2l6ZW9mKHhsX3hhY3Rfc3RhdHNfaXRlbSkpOwogCX0KIAogCWlmICh4 bF94aW5mby54aW5mbyAmIFhBQ1RfWElORk9fSEFTX0lOVkFMUykKIAl7CiAJCVhMb2dSZWdpc3Rl ckRhdGEoJnhsX2ludmFscywgTWluU2l6ZU9mWGFjdEludmFscyk7Ci0JCVhMb2dSZWdpc3RlckRh dGEobXNncywKKwkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSBtc2dzLAogCQkJCQkJIG5tc2dz ICogc2l6ZW9mKFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UpKTsKIAl9CiAKQEAgLTYwMTIsMTQg KzYwMTIsMTQgQEAgWGFjdExvZ0Fib3J0UmVjb3JkKFRpbWVzdGFtcFR6IGFib3J0X3RpbWUsCiAJ CQkJICAgaW50IHhhY3RmbGFncywgVHJhbnNhY3Rpb25JZCB0d29waGFzZV94aWQsCiAJCQkJICAg Y29uc3QgY2hhciAqdHdvcGhhc2VfZ2lkKQogewotCXhsX3hhY3RfYWJvcnQgeGxyZWM7Ci0JeGxf eGFjdF94aW5mbyB4bF94aW5mbzsKLQl4bF94YWN0X3N1YnhhY3RzIHhsX3N1YnhhY3RzOwotCXhs X3hhY3RfcmVsZmlsZWxvY2F0b3JzIHhsX3JlbGZpbGVsb2NhdG9yczsKLQl4bF94YWN0X3N0YXRz X2l0ZW1zIHhsX2Ryb3BwZWRfc3RhdHM7Ci0JeGxfeGFjdF90d29waGFzZSB4bF90d29waGFzZTsK LQl4bF94YWN0X2RiaW5mbyB4bF9kYmluZm87Ci0JeGxfeGFjdF9vcmlnaW4geGxfb3JpZ2luOwor CXhsX3hhY3RfYWJvcnQgeGxyZWMgPSB7MH07CisJeGxfeGFjdF94aW5mbyB4bF94aW5mbyA9IHsw fTsKKwl4bF94YWN0X3N1YnhhY3RzIHhsX3N1YnhhY3RzID0gezB9OworCXhsX3hhY3RfcmVsZmls ZWxvY2F0b3JzIHhsX3JlbGZpbGVsb2NhdG9ycyA9IHswfTsKKwl4bF94YWN0X3N0YXRzX2l0ZW1z IHhsX2Ryb3BwZWRfc3RhdHMgPSB7MH07CisJeGxfeGFjdF90d29waGFzZSB4bF90d29waGFzZSA9 IHswfTsKKwl4bF94YWN0X2RiaW5mbyB4bF9kYmluZm8gPSB7MH07CisJeGxfeGFjdF9vcmlnaW4g eGxfb3JpZ2luID0gezB9OwogCiAJdWludDgJCWluZm87CiAKQEAgLTYxMTYsNyArNjExNiw3IEBA IFhhY3RMb2dBYm9ydFJlY29yZChUaW1lc3RhbXBUeiBhYm9ydF90aW1lLAogCXsKIAkJWExvZ1Jl Z2lzdGVyRGF0YSgmeGxfcmVsZmlsZWxvY2F0b3JzLAogCQkJCQkJIE1pblNpemVPZlhhY3RSZWxm aWxlTG9jYXRvcnMpOwotCQlYTG9nUmVnaXN0ZXJEYXRhKHJlbHMsCisJCVhMb2dSZWdpc3RlckRh dGEoKGNoYXIgKikgcmVscywKIAkJCQkJCSBucmVscyAqIHNpemVvZihSZWxGaWxlTG9jYXRvcikp OwogCX0KIApAQCAtNjEyNCw3ICs2MTI0LDcgQEAgWGFjdExvZ0Fib3J0UmVjb3JkKFRpbWVzdGFt cFR6IGFib3J0X3RpbWUsCiAJewogCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bF9kcm9wcGVkX3N0YXRz LAogCQkJCQkJIE1pblNpemVPZlhhY3RTdGF0c0l0ZW1zKTsKLQkJWExvZ1JlZ2lzdGVyRGF0YShk cm9wcGVkc3RhdHMsCisJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgZHJvcHBlZHN0YXRzLAog CQkJCQkJIG5kcm9wcGVkc3RhdHMgKiBzaXplb2YoeGxfeGFjdF9zdGF0c19pdGVtKSk7CiAJfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggMTNjY2U5YjQ5ZjEuLjQ1ODMyYTU5ZTFk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC01MTI1LDcgKzUxMjUsNyBAQCBYTE9H U2htZW1Jbml0KHZvaWQpCiB2b2lkCiBCb290U3RyYXBYTE9HKHVpbnQzMiBkYXRhX2NoZWNrc3Vt X3ZlcnNpb24pCiB7Ci0JQ2hlY2tQb2ludAljaGVja1BvaW50OworCUNoZWNrUG9pbnQJY2hlY2tQ b2ludCA9IHswfTsKIAlQR0FsaWduZWRYTG9nQmxvY2sgYnVmZmVyOwogCVhMb2dQYWdlSGVhZGVy IHBhZ2U7CiAJWExvZ0xvbmdQYWdlSGVhZGVyIGxvbmdwYWdlOwpAQCAtNTIwNyw2ICs1MjA3LDcg QEAgQm9vdFN0cmFwWExPRyh1aW50MzIgZGF0YV9jaGVja3N1bV92ZXJzaW9uKQogCS8qIEluc2Vy dCB0aGUgaW5pdGlhbCBjaGVja3BvaW50IHJlY29yZCAqLwogCXJlY3B0ciA9ICgoY2hhciAqKSBw YWdlICsgU2l6ZU9mWExvZ0xvbmdQSEQpOwogCXJlY29yZCA9IChYTG9nUmVjb3JkICopIHJlY3B0 cjsKKwltZW1zZXQocmVjb3JkLCAwLCBTaXplT2ZYTG9nUmVjb3JkKTsKIAlyZWNvcmQtPnhsX3By ZXYgPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlyZWNvcmQtPnhsX3hpZCA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCXJlY29yZC0+eGxfdG90X2xlbiA9IFNpemVPZlhMb2dSZWNvcmQgKyBTaXplT2ZY TG9nUmVjb3JkRGF0YUhlYWRlclNob3J0ICsgc2l6ZW9mKGNoZWNrUG9pbnQpOwpAQCAtNTUxNyw3 ICs1NTE4LDcgQEAgdm9pZAogU3RhcnR1cFhMT0codm9pZCkKIHsKIAlYTG9nQ3RsSW5zZXJ0ICpJ bnNlcnQ7Ci0JQ2hlY2tQb2ludAljaGVja1BvaW50OworCUNoZWNrUG9pbnQJY2hlY2tQb2ludCA9 IHswfTsKIAlib29sCQl3YXNTaHV0ZG93bjsKIAlib29sCQlkaWRDcmFzaDsKIAlib29sCQloYXZl VGJsc3BjTWFwOwpAQCAtNzAyNSw3ICs3MDI2LDcgQEAgYm9vbAogQ3JlYXRlQ2hlY2tQb2ludChp bnQgZmxhZ3MpCiB7CiAJYm9vbAkJc2h1dGRvd247Ci0JQ2hlY2tQb2ludAljaGVja1BvaW50Owor CUNoZWNrUG9pbnQJY2hlY2tQb2ludCA9IHswfTsKIAlYTG9nUmVjUHRyCXJlY3B0cjsKIAlYTG9n U2VnTm8JX2xvZ1NlZ05vOwogCVhMb2dDdGxJbnNlcnQgKkluc2VydCA9ICZYTG9nQ3RsLT5JbnNl cnQ7CkBAIC03NTE1LDcgKzc1MTYsNyBAQCBDcmVhdGVDaGVja1BvaW50KGludCBmbGFncykKIHN0 YXRpYyB2b2lkCiBDcmVhdGVFbmRPZlJlY292ZXJ5UmVjb3JkKHZvaWQpCiB7Ci0JeGxfZW5kX29m X3JlY292ZXJ5IHhscmVjOworCXhsX2VuZF9vZl9yZWNvdmVyeSB4bHJlYyA9IHswfTsKIAlYTG9n UmVjUHRyCXJlY3B0cjsKIAogCS8qIHNhbml0eSBjaGVjayAqLwpAQCAtNzU4MSw3ICs3NTgyLDcg QEAgc3RhdGljIFhMb2dSZWNQdHIKIENyZWF0ZU92ZXJ3cml0ZUNvbnRyZWNvcmRSZWNvcmQoWExv Z1JlY1B0ciBhYm9ydGVkX2xzbiwgWExvZ1JlY1B0ciBwYWdlUHRyLAogCQkJCQkJCQlUaW1lTGlu ZUlEIG5ld1RMSSkKIHsKLQl4bF9vdmVyd3JpdGVfY29udHJlY29yZCB4bHJlYzsKKwl4bF9vdmVy d3JpdGVfY29udHJlY29yZCB4bHJlYyA9IHswfTsKIAlYTG9nUmVjUHRyCXJlY3B0cjsKIAlYTG9n UGFnZUhlYWRlciBwYWdlaGRyOwogCVhMb2dSZWNQdHIJc3RhcnRQb3M7CkBAIC03NzMyLDcgKzc3 MzMsNyBAQCBDcmVhdGVSZXN0YXJ0UG9pbnQoaW50IGZsYWdzKQogewogCVhMb2dSZWNQdHIJbGFz dENoZWNrUG9pbnRSZWNQdHI7CiAJWExvZ1JlY1B0cglsYXN0Q2hlY2tQb2ludEVuZFB0cjsKLQlD aGVja1BvaW50CWxhc3RDaGVja1BvaW50OworCUNoZWNrUG9pbnQJbGFzdENoZWNrUG9pbnQgPSB7 MH07CiAJWExvZ1JlY1B0cglQcmlvclJlZG9QdHI7CiAJWExvZ1JlY1B0cglyZWNlaXZlUHRyOwog CVhMb2dSZWNQdHIJcmVwbGF5UHRyOwpAQCAtODIyMyw3ICs4MjI0LDcgQEAgWExvZ1JlY1B0cgog WExvZ1Jlc3RvcmVQb2ludChjb25zdCBjaGFyICpycE5hbWUpCiB7CiAJWExvZ1JlY1B0cglSZWNQ dHI7Ci0JeGxfcmVzdG9yZV9wb2ludCB4bHJlYzsKKwl4bF9yZXN0b3JlX3BvaW50IHhscmVjID0g ezB9OwogCiAJeGxyZWMucnBfdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAlzdHJsY3B5 KHhscmVjLnJwX25hbWUsIHJwTmFtZSwgTUFYRk5BTUVMRU4pOwpAQCAtODI2NSw3ICs4MjY2LDcg QEAgWExvZ1JlcG9ydFBhcmFtZXRlcnModm9pZCkKIAkJICovCiAJCWlmICh3YWxfbGV2ZWwgIT0g Q29udHJvbEZpbGUtPndhbF9sZXZlbCB8fCBYTG9nSXNOZWVkZWQoKSkKIAkJewotCQkJeGxfcGFy YW1ldGVyX2NoYW5nZSB4bHJlYzsKKwkJCXhsX3BhcmFtZXRlcl9jaGFuZ2UgeGxyZWMgPSB7MH07 CiAJCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAogCQkJeGxyZWMuTWF4Q29ubmVjdGlvbnMgPSBNYXhD b25uZWN0aW9uczsKQEAgLTg0MDgsNyArODQwOSw3IEBAIHhsb2dfcmVkbyhYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAl9CiAJZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0NIRUNLUE9JTlRfU0hVVERP V04pCiAJewotCQlDaGVja1BvaW50CWNoZWNrUG9pbnQ7CisJCUNoZWNrUG9pbnQJY2hlY2tQb2lu dCA9IHswfTsKIAkJVGltZUxpbmVJRAlyZXBsYXlUTEk7CiAKIAkJbWVtY3B5KCZjaGVja1BvaW50 LCBYTG9nUmVjR2V0RGF0YShyZWNvcmQpLCBzaXplb2YoQ2hlY2tQb2ludCkpOwpAQCAtODUwOSw3 ICs4NTEwLDcgQEAgeGxvZ19yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCX0KIAllbHNl IGlmIChpbmZvID09IFhMT0dfQ0hFQ0tQT0lOVF9PTkxJTkUpCiAJewotCQlDaGVja1BvaW50CWNo ZWNrUG9pbnQ7CisJCUNoZWNrUG9pbnQJY2hlY2tQb2ludCA9IHswfTsKIAkJVGltZUxpbmVJRAly ZXBsYXlUTEk7CiAKIAkJbWVtY3B5KCZjaGVja1BvaW50LCBYTG9nUmVjR2V0RGF0YShyZWNvcmQp LCBzaXplb2YoQ2hlY2tQb2ludCkpOwpAQCAtODU3NCw3ICs4NTc1LDcgQEAgeGxvZ19yZWRvKFhM b2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCX0KIAllbHNlIGlmIChpbmZvID09IFhMT0dfRU5EX09G X1JFQ09WRVJZKQogCXsKLQkJeGxfZW5kX29mX3JlY292ZXJ5IHhscmVjOworCQl4bF9lbmRfb2Zf cmVjb3ZlcnkgeGxyZWMgPSB7MH07CiAJCVRpbWVMaW5lSUQJcmVwbGF5VExJOwogCiAJCW1lbWNw eSgmeGxyZWMsIFhMb2dSZWNHZXREYXRhKHJlY29yZCksIHNpemVvZih4bF9lbmRfb2ZfcmVjb3Zl cnkpKTsKQEAgLTg2NDcsNyArODY0OCw3IEBAIHhsb2dfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAl9CiAJZWxzZSBpZiAoaW5mbyA9PSBYTE9HX1BBUkFNRVRFUl9DSEFOR0UpCiAJewot CQl4bF9wYXJhbWV0ZXJfY2hhbmdlIHhscmVjOworCQl4bF9wYXJhbWV0ZXJfY2hhbmdlIHhscmVj ID0gezB9OwogCiAJCS8qIFVwZGF0ZSBvdXIgY29weSBvZiB0aGUgcGFyYW1ldGVycyBpbiBwZ19j b250cm9sICovCiAJCW1lbWNweSgmeGxyZWMsIFhMb2dSZWNHZXREYXRhKHJlY29yZCksIHNpemVv Zih4bF9wYXJhbWV0ZXJfY2hhbmdlKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9naW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9naW5z ZXJ0LmMKaW5kZXggYTlhMTY3OGFjYzkuLmQxYjZmYmVhODFjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9naW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ2luc2VydC5jCkBAIC01ODQsNiArNTg0LDcgQEAgWExvZ1JlY29yZEFzc2Vt YmxlKFJtZ3JJZCBybWlkLCB1aW50OCBpbmZvLAogCiAJLyogVGhlIHJlY29yZCBiZWdpbnMgd2l0 aCB0aGUgZml4ZWQtc2l6ZSBoZWFkZXIgKi8KIAlyZWNoZHIgPSAoWExvZ1JlY29yZCAqKSBzY3Jh dGNoOworCW1lbXNldChyZWNoZHIsIDAsIFNpemVPZlhMb2dSZWNvcmQpOwogCXNjcmF0Y2ggKz0g U2l6ZU9mWExvZ1JlY29yZDsKIAogCWhkcl9yZHQubmV4dCA9IE5VTEw7CkBAIC02MTAsOCArNjEx LDggQEAgWExvZ1JlY29yZEFzc2VtYmxlKFJtZ3JJZCBybWlkLCB1aW50OCBpbmZvLAogCQlyZWdp c3RlcmVkX2J1ZmZlciAqcmVnYnVmID0gJnJlZ2lzdGVyZWRfYnVmZmVyc1tibG9ja19pZF07CiAJ CWJvb2wJCW5lZWRzX2JhY2t1cDsKIAkJYm9vbAkJbmVlZHNfZGF0YTsKLQkJWExvZ1JlY29yZEJs b2NrSGVhZGVyIGJrcGI7Ci0JCVhMb2dSZWNvcmRCbG9ja0ltYWdlSGVhZGVyIGJpbWc7CisJCVhM b2dSZWNvcmRCbG9ja0hlYWRlciBia3BiID0gezB9OworCQlYTG9nUmVjb3JkQmxvY2tJbWFnZUhl YWRlciBiaW1nID0gezB9OwogCQlYTG9nUmVjb3JkQmxvY2tDb21wcmVzc0hlYWRlciBjYmltZyA9 IHswfTsKIAkJYm9vbAkJc2FtZXJlbDsKIAkJYm9vbAkJaXNfY29tcHJlc3NlZCA9IGZhbHNlOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlYWRlci5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlYWRlci5jCmluZGV4IDAzYWRhOGFhMGM1Li42 Yzc0M2Y4Yzk4ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3Jl YWRlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWFkZXIuYwpAQCAt MTgwNiw5ICsxODA2LDEyIEBAIERlY29kZVhMb2dSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpzdGF0 ZSwKIAogCQkJaWYgKGJsay0+aGFzX2ltYWdlKQogCQkJeworCQkJCXVpbnQ4CQliaW1nX3BhZDsK KwogCQkJCUNPUFlfSEVBREVSX0ZJRUxEKCZibGstPmJpbWdfbGVuLCBzaXplb2YodWludDE2KSk7 CiAJCQkJQ09QWV9IRUFERVJfRklFTEQoJmJsay0+aG9sZV9vZmZzZXQsIHNpemVvZih1aW50MTYp KTsKIAkJCQlDT1BZX0hFQURFUl9GSUVMRCgmYmxrLT5iaW1nX2luZm8sIHNpemVvZih1aW50OCkp OworCQkJCUNPUFlfSEVBREVSX0ZJRUxEKCZiaW1nX3BhZCwgc2l6ZW9mKHVpbnQ4KSk7CiAKIAkJ CQlibGstPmFwcGx5X2ltYWdlID0gKChibGstPmJpbWdfaW5mbyAmIEJLUElNQUdFX0FQUExZKSAh PSAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292 ZXJ5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCBl Y2Q2NmZkODZhNC4uNzViZDUwZWMyNzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2dyZWNvdmVyeS5jCkBAIC01MjYsNyArNTI2LDcgQEAgSW5pdFdhbFJlY292ZXJ5KENvbnRyb2xG aWxlRGF0YSAqQ29udHJvbEZpbGUsIGJvb2wgKndhc1NodXRkb3duX3B0ciwKIAlEQlN0YXRlCQlk YnN0YXRlX2F0X3N0YXJ0dXA7CiAJYm9vbAkJaGF2ZVRibHNwY01hcCA9IGZhbHNlOwogCWJvb2wJ CWhhdmVCYWNrdXBMYWJlbCA9IGZhbHNlOwotCUNoZWNrUG9pbnQJY2hlY2tQb2ludDsKKwlDaGVj a1BvaW50CWNoZWNrUG9pbnQgPSB7MH07CiAJYm9vbAkJYmFja3VwRnJvbVN0YW5kYnkgPSBmYWxz ZTsKIAogCWRic3RhdGVfYXRfc3RhcnR1cCA9IENvbnRyb2xGaWxlLT5zdGF0ZTsKQEAgLTE5NzEs NyArMTk3MSw3IEBAIEFwcGx5V2FsUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqeGxvZ3JlYWRlciwg WExvZ1JlY29yZCAqcmVjb3JkLCBUaW1lTGluZUlEICpyZXBsCiAKIAkJaWYgKGluZm8gPT0gWExP R19DSEVDS1BPSU5UX1NIVVRET1dOKQogCQl7Ci0JCQlDaGVja1BvaW50CWNoZWNrUG9pbnQ7CisJ CQlDaGVja1BvaW50CWNoZWNrUG9pbnQgPSB7MH07CiAKIAkJCW1lbWNweSgmY2hlY2tQb2ludCwg WExvZ1JlY0dldERhdGEoeGxvZ3JlYWRlciksIHNpemVvZihDaGVja1BvaW50KSk7CiAJCQluZXdS ZXBsYXlUTEkgPSBjaGVja1BvaW50LlRoaXNUaW1lTGluZUlEOwpAQCAtMTk3OSw3ICsxOTc5LDcg QEAgQXBwbHlXYWxSZWNvcmQoWExvZ1JlYWRlclN0YXRlICp4bG9ncmVhZGVyLCBYTG9nUmVjb3Jk ICpyZWNvcmQsIFRpbWVMaW5lSUQgKnJlcGwKIAkJfQogCQllbHNlIGlmIChpbmZvID09IFhMT0df RU5EX09GX1JFQ09WRVJZKQogCQl7Ci0JCQl4bF9lbmRfb2ZfcmVjb3ZlcnkgeGxyZWM7CisJCQl4 bF9lbmRfb2ZfcmVjb3ZlcnkgeGxyZWMgPSB7MH07CiAKIAkJCW1lbWNweSgmeGxyZWMsIFhMb2dS ZWNHZXREYXRhKHhsb2dyZWFkZXIpLCBzaXplb2YoeGxfZW5kX29mX3JlY292ZXJ5KSk7CiAJCQlu ZXdSZXBsYXlUTEkgPSB4bHJlYy5UaGlzVGltZUxpbmVJRDsKQEAgLTIxMTMsNyArMjExMyw3IEBA IHhsb2dyZWNvdmVyeV9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkLCBUaW1lTGluZUlEIHJl cGxheVRMSSkKIAlpZiAoaW5mbyA9PSBYTE9HX09WRVJXUklURV9DT05UUkVDT1JEKQogCXsKIAkJ LyogVmVyaWZ5IHRoZSBwYXlsb2FkIG9mIGEgWExPR19PVkVSV1JJVEVfQ09OVFJFQ09SRCByZWNv cmQuICovCi0JCXhsX292ZXJ3cml0ZV9jb250cmVjb3JkIHhscmVjOworCQl4bF9vdmVyd3JpdGVf Y29udHJlY29yZCB4bHJlYyA9IHswfTsKIAogCQltZW1jcHkoJnhscmVjLCBYTG9nUmVjR2V0RGF0 YShyZWNvcmQpLCBzaXplb2YoeGxfb3ZlcndyaXRlX2NvbnRyZWNvcmQpKTsKIAkJaWYgKHhscmVj Lm92ZXJ3cml0dGVuX2xzbiAhPSByZWNvcmQtPm92ZXJ3cml0dGVuUmVjUHRyKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N0 b3JhZ2UuYwppbmRleCBlNDQzYTQ5OTNjNS4uZjgyZmNlMWY5MjkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFn ZS5jCkBAIC0xODYsNyArMTg2LDcgQEAgUmVsYXRpb25DcmVhdGVTdG9yYWdlKFJlbEZpbGVMb2Nh dG9yIHJsb2NhdG9yLCBjaGFyIHJlbHBlcnNpc3RlbmNlLAogdm9pZAogbG9nX3NtZ3JjcmVhdGUo Y29uc3QgUmVsRmlsZUxvY2F0b3IgKnJsb2NhdG9yLCBGb3JrTnVtYmVyIGZvcmtOdW0pCiB7Ci0J eGxfc21ncl9jcmVhdGUgeGxyZWM7CisJeGxfc21ncl9jcmVhdGUgeGxyZWMgPSB7MH07CiAKIAkv KgogCSAqIE1ha2UgYW4gWExPRyBlbnRyeSByZXBvcnRpbmcgdGhlIGZpbGUgY3JlYXRpb24uCkBA IC0zOTEsNyArMzkxLDcgQEAgUmVsYXRpb25UcnVuY2F0ZShSZWxhdGlvbiByZWwsIEJsb2NrTnVt YmVyIG5ibG9ja3MpCiAJCSAqIE1ha2UgYW4gWExPRyBlbnRyeSByZXBvcnRpbmcgdGhlIGZpbGUg dHJ1bmNhdGlvbi4KIAkJICovCiAJCVhMb2dSZWNQdHIJbHNuOwotCQl4bF9zbWdyX3RydW5jYXRl IHhscmVjOworCQl4bF9zbWdyX3RydW5jYXRlIHhscmVjID0gezB9OwogCiAJCXhscmVjLmJsa25v ID0gbmJsb2NrczsKIAkJeGxyZWMucmxvY2F0b3IgPSByZWwtPnJkX2xvY2F0b3I7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9kYmNvbW1hbmRzLmMKaW5kZXggNzQwYzUyNmU5MmQuLjQyZjNmZDFjOTMxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZGJjb21tYW5kcy5jCkBAIC01MjQsNyArNTI0LDcgQEAgQ3JlYXRlRGlyQW5kVmVy c2lvbkZpbGUoY2hhciAqZGJwYXRoLCBPaWQgZGJpZCwgT2lkIHRzaWQsIGJvb2wgaXNSZWRvKQog CS8qIElmIHdlIGFyZSBub3QgaW4gV0FMIHJlcGxheSB0aGVuIHdyaXRlIHRoZSBXQUwuICovCiAJ aWYgKCFpc1JlZG8pCiAJewotCQl4bF9kYmFzZV9jcmVhdGVfd2FsX2xvZ19yZWMgeGxyZWM7CisJ CXhsX2RiYXNlX2NyZWF0ZV93YWxfbG9nX3JlYyB4bHJlYyA9IHswfTsKIAogCQlTVEFSVF9DUklU X1NFQ1RJT04oKTsKIApAQCAtNjIwLDcgKzYyMCw3IEBAIENyZWF0ZURhdGFiYXNlVXNpbmdGaWxl Q29weShPaWQgc3JjX2Rib2lkLCBPaWQgZHN0X2Rib2lkLCBPaWQgc3JjX3RzaWQsCiAKIAkJLyog UmVjb3JkIHRoZSBmaWxlc3lzdGVtIGNoYW5nZSBpbiBYTE9HICovCiAJCXsKLQkJCXhsX2RiYXNl X2NyZWF0ZV9maWxlX2NvcHlfcmVjIHhscmVjOworCQkJeGxfZGJhc2VfY3JlYXRlX2ZpbGVfY29w eV9yZWMgeGxyZWMgPSB7MH07CiAKIAkJCXhscmVjLmRiX2lkID0gZHN0X2Rib2lkOwogCQkJeGxy ZWMudGFibGVzcGFjZV9pZCA9IGRzdHRhYmxlc3BhY2U7CkBAIC0yMjE1LDcgKzIyMTUsNyBAQCBt b3ZlZGIoY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICp0YmxzcGNuYW1lKQogCQkgKiBS ZWNvcmQgdGhlIGZpbGVzeXN0ZW0gY2hhbmdlIGluIFhMT0cKIAkJICovCiAJCXsKLQkJCXhsX2Ri YXNlX2NyZWF0ZV9maWxlX2NvcHlfcmVjIHhscmVjOworCQkJeGxfZGJhc2VfY3JlYXRlX2ZpbGVf Y29weV9yZWMgeGxyZWMgPSB7MH07CiAKIAkJCXhscmVjLmRiX2lkID0gZGJfaWQ7CiAJCQl4bHJl Yy50YWJsZXNwYWNlX2lkID0gZHN0X3RibHNwY29pZDsKQEAgLTIzMTMsNyArMjMxMyw3IEBAIG1v dmVkYihjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKnRibHNwY25hbWUpCiAJICogUmVj b3JkIHRoZSBmaWxlc3lzdGVtIGNoYW5nZSBpbiBYTE9HCiAJICovCiAJewotCQl4bF9kYmFzZV9k cm9wX3JlYyB4bHJlYzsKKwkJeGxfZGJhc2VfZHJvcF9yZWMgeGxyZWMgPSB7MH07CiAKIAkJeGxy ZWMuZGJfaWQgPSBkYl9pZDsKIAkJeGxyZWMubnRhYmxlc3BhY2VzID0gMTsKQEAgLTMwNzIsNyAr MzA3Miw3IEBAIHJlbW92ZV9kYnRhYmxlc3BhY2VzKE9pZCBkYl9pZCkKIAogCS8qIFJlY29yZCB0 aGUgZmlsZXN5c3RlbSBjaGFuZ2UgaW4gWExPRyAqLwogCXsKLQkJeGxfZGJhc2VfZHJvcF9yZWMg eGxyZWM7CisJCXhsX2RiYXNlX2Ryb3BfcmVjIHhscmVjID0gezB9OwogCiAJCXhscmVjLmRiX2lk ID0gZGJfaWQ7CiAJCXhscmVjLm50YWJsZXNwYWNlcyA9IG50YmxzcGM7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vx dWVuY2UuYwppbmRleCBlMWI4MDhiYmI2MC4uZjU5YmU3NjYyMzggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vx dWVuY2UuYwpAQCAtMzk5LDcgKzM5OSw3IEBAIGZpbGxfc2VxX2Zvcmtfd2l0aF9kYXRhKFJlbGF0 aW9uIHJlbCwgSGVhcFR1cGxlIHR1cGxlLCBGb3JrTnVtYmVyIGZvcmtOdW0pCiAJLyogWExPRyBz dHVmZiAqLwogCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbCkgfHwgZm9ya051bSA9PSBJTklUX0ZP UktOVU0pCiAJewotCQl4bF9zZXFfcmVjCXhscmVjOworCQl4bF9zZXFfcmVjCXhscmVjID0gezB9 OwogCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAogCQlYTG9nQmVnaW5JbnNlcnQoKTsKQEAgLTQwOCw3 ICs0MDgsNyBAQCBmaWxsX3NlcV9mb3JrX3dpdGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBs ZSB0dXBsZSwgRm9ya051bWJlciBmb3JrTnVtKQogCQl4bHJlYy5sb2NhdG9yID0gcmVsLT5yZF9s b2NhdG9yOwogCiAJCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBzaXplb2YoeGxfc2VxX3JlYykp OwotCQlYTG9nUmVnaXN0ZXJEYXRhKHR1cGxlLT50X2RhdGEsIHR1cGxlLT50X2xlbik7CisJCVhM b2dSZWdpc3RlckRhdGEoKGNoYXIgKikgdHVwbGUtPnRfZGF0YSwgdHVwbGUtPnRfbGVuKTsKIAog CQlyZWNwdHIgPSBYTG9nSW5zZXJ0KFJNX1NFUV9JRCwgWExPR19TRVFfTE9HKTsKIApAQCAtODIy LDcgKzgyMiw3IEBAIG5leHR2YWxfaW50ZXJuYWwoT2lkIHJlbGlkLCBib29sIGNoZWNrX3Blcm1p c3Npb25zKQogCS8qIFhMT0cgc3R1ZmYgKi8KIAlpZiAobG9naXQgJiYgUmVsYXRpb25OZWVkc1dB TChzZXFyZWwpKQogCXsKLQkJeGxfc2VxX3JlYwl4bHJlYzsKKwkJeGxfc2VxX3JlYwl4bHJlYyA9 IHswfTsKIAkJWExvZ1JlY1B0cglyZWNwdHI7CiAKIAkJLyoKQEAgLTg0Miw3ICs4NDIsNyBAQCBu ZXh0dmFsX2ludGVybmFsKE9pZCByZWxpZCwgYm9vbCBjaGVja19wZXJtaXNzaW9ucykKIAkJeGxy ZWMubG9jYXRvciA9IHNlcXJlbC0+cmRfbG9jYXRvcjsKIAogCQlYTG9nUmVnaXN0ZXJEYXRhKCZ4 bHJlYywgc2l6ZW9mKHhsX3NlcV9yZWMpKTsKLQkJWExvZ1JlZ2lzdGVyRGF0YShzZXFkYXRhdHVw bGUudF9kYXRhLCBzZXFkYXRhdHVwbGUudF9sZW4pOworCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFy ICopIHNlcWRhdGF0dXBsZS50X2RhdGEsIHNlcWRhdGF0dXBsZS50X2xlbik7CiAKIAkJcmVjcHRy ID0gWExvZ0luc2VydChSTV9TRVFfSUQsIFhMT0dfU0VRX0xPRyk7CiAKQEAgLTEwMTksNyArMTAx OSw3IEBAIFNldFNlcXVlbmNlKE9pZCByZWxpZCwgaW50NjQgbmV4dCwgYm9vbCBpc2NhbGxlZCkK IAkvKiBYTE9HIHN0dWZmICovCiAJaWYgKFJlbGF0aW9uTmVlZHNXQUwoc2VxcmVsKSkKIAl7Ci0J CXhsX3NlcV9yZWMJeGxyZWM7CisJCXhsX3NlcV9yZWMJeGxyZWMgPSB7MH07CiAJCVhMb2dSZWNQ dHIJcmVjcHRyOwogCQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCkBAIC0xMDI4 LDcgKzEwMjgsNyBAQCBTZXRTZXF1ZW5jZShPaWQgcmVsaWQsIGludDY0IG5leHQsIGJvb2wgaXNj YWxsZWQpCiAKIAkJeGxyZWMubG9jYXRvciA9IHNlcXJlbC0+cmRfbG9jYXRvcjsKIAkJWExvZ1Jl Z2lzdGVyRGF0YSgmeGxyZWMsIHNpemVvZih4bF9zZXFfcmVjKSk7Ci0JCVhMb2dSZWdpc3RlckRh dGEoc2VxZGF0YXR1cGxlLnRfZGF0YSwgc2VxZGF0YXR1cGxlLnRfbGVuKTsKKwkJWExvZ1JlZ2lz dGVyRGF0YSgoY2hhciAqKSBzZXFkYXRhdHVwbGUudF9kYXRhLCBzZXFkYXRhdHVwbGUudF9sZW4p OwogCiAJCXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fU0VRX0lELCBYTE9HX1NFUV9MT0cpOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGIwNGIwZGJkMmEwLi5mMDRkNjQ3MTg2YyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTIzMDcsNyArMjMwNyw3IEBAIEV4ZWN1dGVUcnVu Y2F0ZUd1dHMoTGlzdCAqZXhwbGljaXRfcmVscywKIAkgKi8KIAlpZiAocmVsaWRzX2xvZ2dlZCAh PSBOSUwpCiAJewotCQl4bF9oZWFwX3RydW5jYXRlIHhscmVjOworCQl4bF9oZWFwX3RydW5jYXRl IHhscmVjID0gezB9OwogCQlpbnQJCQlpID0gMDsKIAogCQkvKiBzaG91bGQgb25seSBnZXQgaGVy ZSBpZiBlZmZlY3RpdmVfd2FsX2xldmVsIGlzICdsb2dpY2FsJyAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVzcGFjZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVzcGFjZS5jCmluZGV4IGVkMmE5M2EwOWRiLi5mY2E0NWM1MTM3YSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVzcGFjZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlc3BhY2UuYwpAQCAtMzY1LDcgKzM2NSw3IEBAIENyZWF0ZVRhYmxlU3BhY2UoQ3JlYXRl VGFibGVTcGFjZVN0bXQgKnN0bXQpCiAKIAkvKiBSZWNvcmQgdGhlIGZpbGVzeXN0ZW0gY2hhbmdl IGluIFhMT0cgKi8KIAl7Ci0JCXhsX3RibHNwY19jcmVhdGVfcmVjIHhscmVjOworCQl4bF90Ymxz cGNfY3JlYXRlX3JlYyB4bHJlYyA9IHswfTsKIAogCQl4bHJlYy50c19pZCA9IHRhYmxlc3BhY2Vv aWQ7CiAKQEAgLTUzNSw3ICs1MzUsNyBAQCBEcm9wVGFibGVTcGFjZShEcm9wVGFibGVTcGFjZVN0 bXQgKnN0bXQpCiAKIAkvKiBSZWNvcmQgdGhlIGZpbGVzeXN0ZW0gY2hhbmdlIGluIFhMT0cgKi8K IAl7Ci0JCXhsX3RibHNwY19kcm9wX3JlYyB4bHJlYzsKKwkJeGxfdGJsc3BjX2Ryb3BfcmVjIHhs cmVjID0gezB9OwogCiAJCXhscmVjLnRzX2lkID0gdGFibGVzcGFjZW9pZDsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgYi9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwppbmRleCA3NDIxMzdlZGFkNi4uZTBlYjJiZWEwZjEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCisrKyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCkBAIC0xNDMxLDcgKzE0MzEs NyBAQCBTdW1tYXJpemVYbG9nUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqeGxvZ3JlYWRlciwgYm9v bCAqbmV3X2Zhc3RfZm9yd2FyZCkKIAl9CiAJZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0NIRUNLUE9J TlRfU0hVVERPV04pCiAJewotCQlDaGVja1BvaW50CXJlY19ja3B0OworCQlDaGVja1BvaW50CXJl Y19ja3B0ID0gezB9OwogCiAJCS8qIEV4dHJhY3Qgd2FsX2xldmVsIGF0IHRpbWUgcmVjb3JkIHdh cyB3cml0dGVuIGZyb20gcGF5bG9hZC4gKi8KIAkJbWVtY3B5KCZyZWNfY2twdCwgWExvZ1JlY0dl dERhdGEoeGxvZ3JlYWRlciksIHNpemVvZihDaGVja1BvaW50KSk7CkBAIC0xNDM5LDcgKzE0Mzks NyBAQCBTdW1tYXJpemVYbG9nUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqeGxvZ3JlYWRlciwgYm9v bCAqbmV3X2Zhc3RfZm9yd2FyZCkKIAl9CiAJZWxzZSBpZiAoaW5mbyA9PSBYTE9HX1BBUkFNRVRF Ul9DSEFOR0UpCiAJewotCQl4bF9wYXJhbWV0ZXJfY2hhbmdlIHhscmVjOworCQl4bF9wYXJhbWV0 ZXJfY2hhbmdlIHhscmVjID0gezB9OwogCiAJCS8qIEV4dHJhY3Qgd2FsX2xldmVsIGF0IHRpbWUg cmVjb3JkIHdhcyB3cml0dGVuIGZyb20gcGF5bG9hZC4gKi8KIAkJbWVtY3B5KCZ4bHJlYywgWExv Z1JlY0dldERhdGEoeGxvZ3JlYWRlciksCkBAIC0xNDQ4LDcgKzE0NDgsNyBAQCBTdW1tYXJpemVY bG9nUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqeGxvZ3JlYWRlciwgYm9vbCAqbmV3X2Zhc3RfZm9y d2FyZCkKIAl9CiAJZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0VORF9PRl9SRUNPVkVSWSkKIAl7Ci0J CXhsX2VuZF9vZl9yZWNvdmVyeSB4bHJlYzsKKwkJeGxfZW5kX29mX3JlY292ZXJ5IHhscmVjID0g ezB9OwogCiAJCS8qIEV4dHJhY3Qgd2FsX2xldmVsIGF0IHRpbWUgcmVjb3JkIHdhcyB3cml0dGVu IGZyb20gcGF5bG9hZC4gKi8KIAkJbWVtY3B5KCZ4bHJlYywgWExvZ1JlY0dldERhdGEoeGxvZ3Jl YWRlciksIHNpemVvZih4bF9lbmRfb2ZfcmVjb3ZlcnkpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IDIxZjAzODY0YTY2Li44NjdjZjlkMDE1OCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC0xMjQ1LDcgKzEyNDUsNyBA QCBEZWNvZGVTcGVjQ29uZmlybShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNv cmRCdWZmZXIgKmJ1ZikKIHN0YXRpYyB2b2lkCiBEZWNvZGVYTG9nVHVwbGUoY2hhciAqZGF0YSwg U2l6ZSBsZW4sIEhlYXBUdXBsZSB0dXBsZSkKIHsKLQl4bF9oZWFwX2hlYWRlciB4bGhkcjsKKwl4 bF9oZWFwX2hlYWRlciB4bGhkciA9IHswfTsKIAlpbnQJCQlkYXRhbGVuID0gbGVuIC0gU2l6ZU9m SGVhcEhlYWRlcjsKIAlIZWFwVHVwbGVIZWFkZXIgaGVhZGVyOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc3NhZ2UuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbWVzc2FnZS5jCmluZGV4IDA2ODI1ZDY2ZTdmLi41YTE2NWM1OTFjYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNzYWdlLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNzYWdlLmMKQEAgLTQzLDcgKzQz LDcgQEAgWExvZ1JlY1B0cgogTG9nTG9naWNhbE1lc3NhZ2UoY29uc3QgY2hhciAqcHJlZml4LCBj b25zdCBjaGFyICptZXNzYWdlLCBzaXplX3Qgc2l6ZSwKIAkJCQkgIGJvb2wgdHJhbnNhY3Rpb25h bCwgYm9vbCBmbHVzaCkKIHsKLQl4bF9sb2dpY2FsX21lc3NhZ2UgeGxyZWM7CisJeGxfbG9naWNh bF9tZXNzYWdlIHhscmVjID0gezB9OwogCVhMb2dSZWNQdHIJbHNuOwogCiAJLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCmluZGV4IGMzMjcxYTZmZDBlLi4zYTNkZWU0 YzQxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4u YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCkBAIC00MTks NyArNDE5LDcgQEAgcmVzdGFydDoKIAogCQkJLyogZmlyc3QgbWFrZSBhIFdBTCBsb2cgZW50cnkg Ki8KIAkJCXsKLQkJCQl4bF9yZXBsb3JpZ2luX2Ryb3AgeGxyZWM7CisJCQkJeGxfcmVwbG9yaWdp bl9kcm9wIHhscmVjID0gezB9OwogCiAJCQkJeGxyZWMubm9kZV9pZCA9IHJvaWRlbnQ7CiAJCQkJ WExvZ0JlZ2luSW5zZXJ0KCk7CkBAIC0xMDA4LDcgKzEwMDgsNyBAQCByZXBsb3JpZ2luX2FkdmFu Y2UoUmVwbE9yaWdpbklkIG5vZGUsCiAJICovCiAJaWYgKHdhbF9sb2cpCiAJewotCQl4bF9yZXBs b3JpZ2luX3NldCB4bHJlYzsKKwkJeGxfcmVwbG9yaWdpbl9zZXQgeGxyZWMgPSB7MH07CiAKIAkJ eGxyZWMucmVtb3RlX2xzbiA9IHJlbW90ZV9jb21taXQ7CiAJCXhscmVjLm5vZGVfaWQgPSBub2Rl OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IGQ4M2FmYmZiOWQ2Li42Yjk1MGZiYWI4 NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtOTg3LDcgKzk4Nyw3IEBAIFN0YW5k YnlBY3F1aXJlQWNjZXNzRXhjbHVzaXZlTG9jayhUcmFuc2FjdGlvbklkIHhpZCwgT2lkIGRiT2lk LCBPaWQgcmVsT2lkKQogewogCVJlY292ZXJ5TG9ja1hpZEVudHJ5ICp4aWRlbnRyeTsKIAlSZWNv dmVyeUxvY2tFbnRyeSAqbG9ja2VudHJ5OwotCXhsX3N0YW5kYnlfbG9jayBrZXk7CisJeGxfc3Rh bmRieV9sb2NrIGtleSA9IHswfTsKIAlMT0NLVEFHCQlsb2NrdGFnOwogCWJvb2wJCWZvdW5kOwog CkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBMb2dTdGFuZGJ5U25hcHNob3Qodm9pZCkKIHN0YXRpYyBY TG9nUmVjUHRyCiBMb2dDdXJyZW50UnVubmluZ1hhY3RzKFJ1bm5pbmdUcmFuc2FjdGlvbnMgQ3Vy clJ1bm5pbmdYYWN0cykKIHsKLQl4bF9ydW5uaW5nX3hhY3RzIHhscmVjOworCXhsX3J1bm5pbmdf eGFjdHMgeGxyZWMgPSB7MH07CiAJWExvZ1JlY1B0cglyZWNwdHI7CiAKIAl4bHJlYy54Y250ID0g Q3VyclJ1bm5pbmdYYWN0cy0+eGNudDsKQEAgLTE0MTMsNyArMTQxMyw3IEBAIExvZ0N1cnJlbnRS dW5uaW5nWGFjdHMoUnVubmluZ1RyYW5zYWN0aW9ucyBDdXJyUnVubmluZ1hhY3RzKQogc3RhdGlj IHZvaWQKIExvZ0FjY2Vzc0V4Y2x1c2l2ZUxvY2tzKGludCBubG9ja3MsIHhsX3N0YW5kYnlfbG9j ayAqbG9ja3MpCiB7Ci0JeGxfc3RhbmRieV9sb2NrcyB4bHJlYzsKKwl4bF9zdGFuZGJ5X2xvY2tz IHhscmVjID0gezB9OwogCiAJeGxyZWMubmxvY2tzID0gbmxvY2tzOwogCkBAIC0xNDMxLDcgKzE0 MzEsNyBAQCBMb2dBY2Nlc3NFeGNsdXNpdmVMb2NrcyhpbnQgbmxvY2tzLCB4bF9zdGFuZGJ5X2xv Y2sgKmxvY2tzKQogdm9pZAogTG9nQWNjZXNzRXhjbHVzaXZlTG9jayhPaWQgZGJPaWQsIE9pZCBy ZWxPaWQpCiB7Ci0JeGxfc3RhbmRieV9sb2NrIHhscmVjOworCXhsX3N0YW5kYnlfbG9jayB4bHJl YyA9IHswfTsKIAogCXhscmVjLnhpZCA9IEdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7CiAKQEAg LTE0NzEsMTAgKzE0NzEsOCBAQCB2b2lkCiBMb2dTdGFuZGJ5SW52YWxpZGF0aW9ucyhpbnQgbm1z Z3MsIFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKm1zZ3MsCiAJCQkJCQlib29sIHJlbGNhY2hl SW5pdEZpbGVJbnZhbCkKIHsKLQl4bF9pbnZhbGlkYXRpb25zIHhscmVjOworCXhsX2ludmFsaWRh dGlvbnMgeGxyZWMgPSB7MH07CiAKLQkvKiBwcmVwYXJlIHJlY29yZCAqLwotCW1lbXNldCgmeGxy ZWMsIDAsIHNpemVvZih4bHJlYykpOwogCXhscmVjLmRiSWQgPSBNeURhdGFiYXNlSWQ7CiAJeGxy ZWMudHNJZCA9IE15RGF0YWJhc2VUYWJsZVNwYWNlOwogCXhscmVjLnJlbGNhY2hlSW5pdEZpbGVJ bnZhbCA9IHJlbGNhY2hlSW5pdEZpbGVJbnZhbDsKQEAgLTE0ODMsNyArMTQ4MSw3IEBAIExvZ1N0 YW5kYnlJbnZhbGlkYXRpb25zKGludCBubXNncywgU2hhcmVkSW52YWxpZGF0aW9uTWVzc2FnZSAq bXNncywKIAkvKiBwZXJmb3JtIGluc2VydGlvbiAqLwogCVhMb2dCZWdpbkluc2VydCgpOwogCVhM b2dSZWdpc3RlckRhdGEoJnhscmVjLCBNaW5TaXplT2ZJbnZhbGlkYXRpb25zKTsKLQlYTG9nUmVn aXN0ZXJEYXRhKG1zZ3MsCisJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSBtc2dzLAogCQkJCQkg bm1zZ3MgKiBzaXplb2YoU2hhcmVkSW52YWxpZGF0aW9uTWVzc2FnZSkpOwogCVhMb2dJbnNlcnQo Uk1fU1RBTkRCWV9JRCwgWExPR19JTlZBTElEQVRJT05TKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9pbnZh bC5jCmluZGV4IGQ1OTIxNmIyOGYxLi4zODliNDkzZTIxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvaW52YWwuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9pbnZh bC5jCkBAIC0xOTM4LDcgKzE5MzgsNyBAQCBDYWxsUmVsU3luY0NhbGxiYWNrcyhPaWQgcmVsaWQp CiB2b2lkCiBMb2dMb2dpY2FsSW52YWxpZGF0aW9ucyh2b2lkKQogewotCXhsX3hhY3RfaW52YWxz IHhscmVjOworCXhsX3hhY3RfaW52YWxzIHhscmVjID0gezB9OwogCUludmFsaWRhdGlvbk1zZ3NH cm91cCAqZ3JvdXA7CiAJaW50CQkJbm1zZ3M7CiAKQEAgLTE5NTksMTAgKzE5NTksMTAgQEAgTG9n TG9naWNhbEludmFsaWRhdGlvbnModm9pZCkKIAkJWExvZ0JlZ2luSW5zZXJ0KCk7CiAJCVhMb2dS ZWdpc3RlckRhdGEoJnhscmVjLCBNaW5TaXplT2ZYYWN0SW52YWxzKTsKIAkJUHJvY2Vzc01lc3Nh Z2VTdWJHcm91cE11bHRpKGdyb3VwLCBDYXRDYWNoZU1zZ3MsCi0JCQkJCQkJCQlYTG9nUmVnaXN0 ZXJEYXRhKG1zZ3MsCisJCQkJCQkJCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopIG1zZ3MsCiAJ CQkJCQkJCQkJCQkJIG4gKiBzaXplb2YoU2hhcmVkSW52YWxpZGF0aW9uTWVzc2FnZSkpKTsKIAkJ UHJvY2Vzc01lc3NhZ2VTdWJHcm91cE11bHRpKGdyb3VwLCBSZWxDYWNoZU1zZ3MsCi0JCQkJCQkJ CQlYTG9nUmVnaXN0ZXJEYXRhKG1zZ3MsCisJCQkJCQkJCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFy ICopIG1zZ3MsCiAJCQkJCQkJCQkJCQkJIG4gKiBzaXplb2YoU2hhcmVkSW52YWxpZGF0aW9uTWVz c2FnZSkpKTsKIAkJWExvZ0luc2VydChSTV9YQUNUX0lELCBYTE9HX1hBQ1RfSU5WQUxJREFUSU9O Uyk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsbWFwcGVyLmMg Yi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxtYXBwZXIuYwppbmRleCA3NzhiMTRhMjMxOC4u ODk2YzE1M2JmODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbG1hcHBl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbG1hcHBlci5jCkBAIC04Niw3ICs4 Niw3IEBAIHR5cGVkZWYgc3RydWN0IFJlbE1hcHBpbmcKIAlSZWxGaWxlTnVtYmVyIG1hcGZpbGVu dW1iZXI7CS8qIGl0cyByZWwgZmlsZSBudW1iZXIgKi8KIH0gUmVsTWFwcGluZzsKIAotdHlwZWRl ZiBzdHJ1Y3QgUmVsTWFwRmlsZQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyBSZWxNYXBG aWxlCiB7CiAJaW50MzIJCW1hZ2ljOwkJCS8qIGFsd2F5cyBSRUxNQVBQRVJfRklMRU1BR0lDICov CiAJaW50MzIJCW51bV9tYXBwaW5nczsJLyogbnVtYmVyIG9mIHZhbGlkIFJlbE1hcHBpbmcgZW50 cmllcyAqLwpAQCAtMjY0LDcgKzI2NCw3IEBAIFJlbGF0aW9uTWFwRmlsZW51bWJlclRvT2lkKFJl bEZpbGVOdW1iZXIgZmlsZW51bWJlciwgYm9vbCBzaGFyZWQpCiBSZWxGaWxlTnVtYmVyCiBSZWxh dGlvbk1hcE9pZFRvRmlsZW51bWJlckZvckRhdGFiYXNlKGNoYXIgKmRicGF0aCwgT2lkIHJlbGF0 aW9uSWQpCiB7Ci0JUmVsTWFwRmlsZQltYXA7CisJUmVsTWFwRmlsZQltYXAgPSB7MH07CiAJaW50 CQkJaTsKIAogCS8qIFJlYWQgdGhlIHJlbG1hcCBmaWxlIGZyb20gdGhlIHNvdXJjZSBkYXRhYmFz ZS4gKi8KQEAgLTI5MSw3ICsyOTEsNyBAQCBSZWxhdGlvbk1hcE9pZFRvRmlsZW51bWJlckZvckRh dGFiYXNlKGNoYXIgKmRicGF0aCwgT2lkIHJlbGF0aW9uSWQpCiB2b2lkCiBSZWxhdGlvbk1hcENv cHkoT2lkIGRiaWQsIE9pZCB0c2lkLCBjaGFyICpzcmNkYnBhdGgsIGNoYXIgKmRzdGRicGF0aCkK IHsKLQlSZWxNYXBGaWxlCW1hcDsKKwlSZWxNYXBGaWxlCW1hcCA9IHswfTsKIAogCS8qCiAJICog UmVhZCB0aGUgcmVsbWFwIGZpbGUgZnJvbSB0aGUgc291cmNlIGRhdGFiYXNlLgpAQCAtOTU4LDcg Kzk1OCw3IEBAIHdyaXRlX3JlbG1hcF9maWxlKFJlbE1hcEZpbGUgKm5ld21hcCwgYm9vbCB3cml0 ZV93YWwsIGJvb2wgc2VuZF9zaW52YWwsCiAKIAlpZiAod3JpdGVfd2FsKQogCXsKLQkJeGxfcmVs bWFwX3VwZGF0ZSB4bHJlYzsKKwkJeGxfcmVsbWFwX3VwZGF0ZSB4bHJlYyA9IHswfTsKIAkJWExv Z1JlY1B0cglsc247CiAKIAkJLyogbm93IGVycm9ycyBhcmUgZmF0YWwgLi4uICovCkBAIC0xMDM4 LDcgKzEwMzgsNyBAQCB3cml0ZV9yZWxtYXBfZmlsZShSZWxNYXBGaWxlICpuZXdtYXAsIGJvb2wg d3JpdGVfd2FsLCBib29sIHNlbmRfc2ludmFsLAogc3RhdGljIHZvaWQKIHBlcmZvcm1fcmVsbWFw X3VwZGF0ZShib29sIHNoYXJlZCwgY29uc3QgUmVsTWFwRmlsZSAqdXBkYXRlcykKIHsKLQlSZWxN YXBGaWxlCW5ld21hcDsKKwlSZWxNYXBGaWxlCW5ld21hcCA9IHswfTsKIAogCS8qCiAJICogQW55 b25lIHVwZGF0aW5nIGEgcmVsYXRpb24ncyBtYXBwaW5nIGluZm8gc2hvdWxkIHRha2UgZXhjbHVz aXZlIGxvY2sgb24KQEAgLTExMDMsNyArMTEwMyw3IEBAIHJlbG1hcF9yZWRvKFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKQogCWlmIChpbmZvID09IFhMT0dfUkVMTUFQX1VQREFURSkKIAl7CiAJCXhs X3JlbG1hcF91cGRhdGUgKnhscmVjID0gKHhsX3JlbG1hcF91cGRhdGUgKikgWExvZ1JlY0dldERh dGEocmVjb3JkKTsKLQkJUmVsTWFwRmlsZQluZXdtYXA7CisJCVJlbE1hcEZpbGUJbmV3bWFwID0g ezB9OwogCQljaGFyCSAgICpkYnBhdGg7CiAKIAkJaWYgKHhscmVjLT5uYnl0ZXMgIT0gc2l6ZW9m KFJlbE1hcEZpbGUpKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdh bC5jIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCmluZGV4IGFiNzY2YzM0ZDRi Li4wNGE3MTY4MjQwYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdh bC5jCisrKyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYwpAQCAtMTE1Miw2ICsx MTUyLDcgQEAgV3JpdGVFbXB0eVhMT0codm9pZCkKIAkvKiBJbnNlcnQgdGhlIGluaXRpYWwgY2hl Y2twb2ludCByZWNvcmQgKi8KIAlyZWNwdHIgPSAoY2hhciAqKSBwYWdlICsgU2l6ZU9mWExvZ0xv bmdQSEQ7CiAJcmVjb3JkID0gKFhMb2dSZWNvcmQgKikgcmVjcHRyOworCW1lbXNldChyZWNvcmQs IDAsIFNpemVPZlhMb2dSZWNvcmQpOwogCXJlY29yZC0+eGxfcHJldiA9IEludmFsaWRYTG9nUmVj UHRyOwogCXJlY29yZC0+eGxfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJcmVjb3JkLT54 bF90b3RfbGVuID0gU2l6ZU9mWExvZ1JlY29yZCArIFNpemVPZlhMb2dSZWNvcmREYXRhSGVhZGVy U2hvcnQgKyBzaXplb2YoQ2hlY2tQb2ludCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvYnJpbl94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl94bG9nLmgKaW5kZXggMWM2 MGRjOGFkYjkuLmIyMjEzNzk3MGQzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJp bl94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5feGxvZy5oCkBAIC00NywxMiAr NDcsMTMgQEAKICAqCiAgKiBCYWNrdXAgYmxvY2sgMDogbWV0YXBhZ2UKICAqLwotdHlwZWRlZiBz dHJ1Y3QgeGxfYnJpbl9jcmVhdGVpZHgKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxf YnJpbl9jcmVhdGVpZHgKIHsKIAlCbG9ja051bWJlciBwYWdlc1BlclJhbmdlOwogCXVpbnQxNgkJ dmVyc2lvbjsKKwlwZ19wYWRkaW5nXzIocGdfcGFkKTsKIH0geGxfYnJpbl9jcmVhdGVpZHg7Ci0j ZGVmaW5lIFNpemVPZkJyaW5DcmVhdGVJZHggKG9mZnNldG9mKHhsX2JyaW5fY3JlYXRlaWR4LCB2 ZXJzaW9uKSArIHNpemVvZih1aW50MTYpKQorI2RlZmluZSBTaXplT2ZCcmluQ3JlYXRlSWR4IChz aXplb2YoeGxfYnJpbl9jcmVhdGVpZHgpKQogCiAvKgogICogVGhpcyBpcyB3aGF0IHdlIG5lZWQg dG8ga25vdyBhYm91dCBhIEJSSU4gdHVwbGUgaW5zZXJ0CkBAIC02MCw3ICs2MSw3IEBAIHR5cGVk ZWYgc3RydWN0IHhsX2JyaW5fY3JlYXRlaWR4CiAgKiBCYWNrdXAgYmxvY2sgMDogbWFpbiBwYWdl LCBibG9jayBkYXRhIGlzIHRoZSBuZXcgQnJpblR1cGxlLgogICogQmFja3VwIGJsb2NrIDE6IHJl dm1hcCBwYWdlCiAgKi8KLXR5cGVkZWYgc3RydWN0IHhsX2JyaW5faW5zZXJ0Cit0eXBlZGVmIHN0 cnVjdCBQR19OT19QQURESU5HIHhsX2JyaW5faW5zZXJ0CiB7CiAJQmxvY2tOdW1iZXIgaGVhcEJs azsKIApAQCAtNjksOSArNzAsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnJpbl9pbnNlcnQKIAog CS8qIG9mZnNldCBudW1iZXIgaW4gdGhlIG1haW4gcGFnZSB0byBpbnNlcnQgdGhlIHR1cGxlIHRv LiAqLwogCU9mZnNldE51bWJlciBvZmZudW07CisJcGdfcGFkZGluZ18yKHBnX3BhZCk7CiB9IHhs X2JyaW5faW5zZXJ0OwogCi0jZGVmaW5lIFNpemVPZkJyaW5JbnNlcnQJKG9mZnNldG9mKHhsX2Jy aW5faW5zZXJ0LCBvZmZudW0pICsgc2l6ZW9mKE9mZnNldE51bWJlcikpCisjZGVmaW5lIFNpemVP ZkJyaW5JbnNlcnQJKHNpemVvZih4bF9icmluX2luc2VydCkpCiAKIC8qCiAgKiBBIGNyb3NzLXBh Z2UgdXBkYXRlIGlzIHRoZSBzYW1lIGFzIGFuIGluc2VydCwgYnV0IGFsc28gc3RvcmVzIGluZm9y bWF0aW9uCkBAIC04NCwyNyArODYsMjggQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnJpbl9pbnNlcnQK ICAqIEFuZCBpbiBhZGRpdGlvbjoKICAqIEJhY2t1cCBibG9jayAyOiBvbGQgcGFnZQogICovCi10 eXBlZGVmIHN0cnVjdCB4bF9icmluX3VwZGF0ZQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElO RyB4bF9icmluX3VwZGF0ZQogewogCS8qIG9mZnNldCBudW1iZXIgb2Ygb2xkIHR1cGxlIG9uIG9s ZCBwYWdlICovCiAJT2Zmc2V0TnVtYmVyIG9sZE9mZm51bTsKKwlwZ19wYWRkaW5nXzIocGdfcGFk KTsKIAogCXhsX2JyaW5faW5zZXJ0IGluc2VydDsKIH0geGxfYnJpbl91cGRhdGU7CiAKLSNkZWZp bmUgU2l6ZU9mQnJpblVwZGF0ZQkob2Zmc2V0b2YoeGxfYnJpbl91cGRhdGUsIGluc2VydCkgKyBT aXplT2ZCcmluSW5zZXJ0KQorI2RlZmluZSBTaXplT2ZCcmluVXBkYXRlCShzaXplb2YoeGxfYnJp bl91cGRhdGUpKQogCiAvKgogICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBh IEJSSU4gdHVwbGUgc2FtZXBhZ2UgdXBkYXRlCiAgKgogICogQmFja3VwIGJsb2NrIDA6IHVwZGF0 ZWQgcGFnZSwgd2l0aCBuZXcgQnJpblR1cGxlIGFzIGJsb2NrIGRhdGEKICAqLwotdHlwZWRlZiBz dHJ1Y3QgeGxfYnJpbl9zYW1lcGFnZV91cGRhdGUKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJ TkcgeGxfYnJpbl9zYW1lcGFnZV91cGRhdGUKIHsKIAlPZmZzZXROdW1iZXIgb2ZmbnVtOwogfSB4 bF9icmluX3NhbWVwYWdlX3VwZGF0ZTsKIAotI2RlZmluZSBTaXplT2ZCcmluU2FtZXBhZ2VVcGRh dGUJCShzaXplb2YoT2Zmc2V0TnVtYmVyKSkKKyNkZWZpbmUgU2l6ZU9mQnJpblNhbWVwYWdlVXBk YXRlCShzaXplb2YoeGxfYnJpbl9zYW1lcGFnZV91cGRhdGUpKQogCiAvKgogICogVGhpcyBpcyB3 aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBhIHJldm1hcCBleHRlbnNpb24KQEAgLTExMiw3ICsx MTUsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9icmluX3NhbWVwYWdlX3VwZGF0ZQogICogQmFja3Vw IGJsb2NrIDA6IG1ldGFwYWdlCiAgKiBCYWNrdXAgYmxvY2sgMTogbmV3IHJldm1hcCBwYWdlCiAg Ki8KLXR5cGVkZWYgc3RydWN0IHhsX2JyaW5fcmV2bWFwX2V4dGVuZAordHlwZWRlZiBzdHJ1Y3Qg UEdfTk9fUEFERElORyB4bF9icmluX3Jldm1hcF9leHRlbmQKIHsKIAkvKgogCSAqIFhYWDogVGhp cyBpcyBhY3R1YWxseSByZWR1bmRhbnQgLSB0aGUgYmxvY2sgbnVtYmVyIGlzIHN0b3JlZCBhcyBw YXJ0IG9mCkBAIC0xMjEsOCArMTI0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnJpbl9yZXZtYXBf ZXh0ZW5kCiAJQmxvY2tOdW1iZXIgdGFyZ2V0QmxrOwogfSB4bF9icmluX3Jldm1hcF9leHRlbmQ7 CiAKLSNkZWZpbmUgU2l6ZU9mQnJpblJldm1hcEV4dGVuZAkob2Zmc2V0b2YoeGxfYnJpbl9yZXZt YXBfZXh0ZW5kLCB0YXJnZXRCbGspICsgXAotCQkJCQkJCQkgc2l6ZW9mKEJsb2NrTnVtYmVyKSkK KyNkZWZpbmUgU2l6ZU9mQnJpblJldm1hcEV4dGVuZAkoc2l6ZW9mKHhsX2JyaW5fcmV2bWFwX2V4 dGVuZCkpCiAKIC8qCiAgKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IGEgcmFu Z2UgZGUtc3VtbWFyaXphdGlvbgpAQCAtMTMwLDE3ICsxMzIsMTcgQEAgdHlwZWRlZiBzdHJ1Y3Qg eGxfYnJpbl9yZXZtYXBfZXh0ZW5kCiAgKiBCYWNrdXAgYmxvY2sgMDogcmV2bWFwIHBhZ2UKICAq IEJhY2t1cCBibG9jayAxOiByZWd1bGFyIHBhZ2UKICAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxfYnJp bl9kZXN1bW1hcml6ZQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9icmluX2Rlc3Vt bWFyaXplCiB7CiAJQmxvY2tOdW1iZXIgcGFnZXNQZXJSYW5nZTsKIAkvKiBwYWdlIG51bWJlciBs b2NhdGlvbiB0byBzZXQgdG8gaW52YWxpZCAqLwogCUJsb2NrTnVtYmVyIGhlYXBCbGs7CiAJLyog b2Zmc2V0IG9mIGl0ZW0gdG8gZGVsZXRlIGluIHJlZ3VsYXIgaW5kZXggcGFnZSAqLwogCU9mZnNl dE51bWJlciByZWdPZmZzZXQ7CisJcGdfcGFkZGluZ18yKHBnX3BhZCk7CiB9IHhsX2JyaW5fZGVz dW1tYXJpemU7CiAKLSNkZWZpbmUgU2l6ZU9mQnJpbkRlc3VtbWFyaXplCShvZmZzZXRvZih4bF9i cmluX2Rlc3VtbWFyaXplLCByZWdPZmZzZXQpICsgXAotCQkJCQkJCQkgc2l6ZW9mKE9mZnNldE51 bWJlcikpCisjZGVmaW5lIFNpemVPZkJyaW5EZXN1bW1hcml6ZQkoc2l6ZW9mKHhsX2JyaW5fZGVz dW1tYXJpemUpKQogCiAKIGV4dGVybiB2b2lkIGJyaW5fcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvY2xvZy5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2Nsb2cuaAppbmRleCBhMWNmZWQ1ZjQzYy4uZWU5NDljYTEwOGMgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9jbG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2Ns b2cuaApAQCAtMjksNyArMjksNyBAQCB0eXBlZGVmIGludCBYaWRTdGF0dXM7CiAjZGVmaW5lIFRS QU5TQUNUSU9OX1NUQVRVU19BQk9SVEVECQkJMHgwMgogI2RlZmluZSBUUkFOU0FDVElPTl9TVEFU VVNfU1VCX0NPTU1JVFRFRAkweDAzCiAKLXR5cGVkZWYgc3RydWN0IHhsX2Nsb2dfdHJ1bmNhdGUK K3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfY2xvZ190cnVuY2F0ZQogewogCWludDY0 CQlwYWdlbm87CiAJVHJhbnNhY3Rpb25JZCBvbGRlc3RYYWN0OwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2NvbW1pdF90cy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2NvbW1pdF90cy5o CmluZGV4IDQ5ZWUyMWNkNWQyLi45MmU1MGIwYzgwNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv YWNjZXNzL2NvbW1pdF90cy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRfdHMuaApA QCAtNDYsMTQgKzQ2LDE0IEBAIGV4dGVybiBpbnQJY29tbWl0dHNzeW5jZmlsZXRhZyhjb25zdCBG aWxlVGFnICpmdGFnLCBjaGFyICpwYXRoKTsKICNkZWZpbmUgQ09NTUlUX1RTX1pFUk9QQUdFCQkw eDAwCiAjZGVmaW5lIENPTU1JVF9UU19UUlVOQ0FURQkJMHgxMAogCi10eXBlZGVmIHN0cnVjdCB4 bF9jb21taXRfdHNfdHJ1bmNhdGUKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfY29t bWl0X3RzX3RydW5jYXRlCiB7CiAJaW50NjQJCXBhZ2VubzsKIAlUcmFuc2FjdGlvbklkIG9sZGVz dFhpZDsKKwlwZ19wYWRkaW5nXzQocGdfcGFkKTsKIH0geGxfY29tbWl0X3RzX3RydW5jYXRlOwog Ci0jZGVmaW5lIFNpemVPZkNvbW1pdFRzVHJ1bmNhdGUJKG9mZnNldG9mKHhsX2NvbW1pdF90c190 cnVuY2F0ZSwgb2xkZXN0WGlkKSArIFwKLQkJCQkJCQkJIHNpemVvZihUcmFuc2FjdGlvbklkKSkK KyNkZWZpbmUgU2l6ZU9mQ29tbWl0VHNUcnVuY2F0ZQkoc2l6ZW9mKHhsX2NvbW1pdF90c190cnVu Y2F0ZSkpCiAKIGV4dGVybiB2b2lkIGNvbW1pdF90c19yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVj b3JkKTsKIGV4dGVybiB2b2lkIGNvbW1pdF90c19kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2luYmxv Y2suaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naW5ibG9jay5oCmluZGV4IDJkNzUwMjMxNzlhLi45 MDNjNTE4ZGYzOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpbmJsb2NrLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpbmJsb2NrLmgKQEAgLTUyLDcgKzUyLDcgQEAgdHlwZWRl ZiBHaW5QYWdlT3BhcXVlRGF0YSAqR2luUGFnZU9wYXF1ZTsKICNkZWZpbmUgR0lOX01FVEFQQUdF X0JMS05PCSgwKQogI2RlZmluZSBHSU5fUk9PVF9CTEtOTwkJKDEpCiAKLXR5cGVkZWYgc3RydWN0 IEdpbk1ldGFQYWdlRGF0YQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyBHaW5NZXRhUGFn ZURhdGEKIHsKIAkvKgogCSAqIFBvaW50ZXJzIHRvIGhlYWQgYW5kIHRhaWwgb2YgcGVuZGluZyBs aXN0LCB3aGljaCBjb25zaXN0cyBvZiBHSU5fTElTVApAQCAtODAsNiArODAsNyBAQCB0eXBlZGVm IHN0cnVjdCBHaW5NZXRhUGFnZURhdGEKIAlCbG9ja051bWJlciBuVG90YWxQYWdlczsKIAlCbG9j a051bWJlciBuRW50cnlQYWdlczsKIAlCbG9ja051bWJlciBuRGF0YVBhZ2VzOworCXBnX3BhZGRp bmdfNChwZ19wYWQxKTsKIAlpbnQ2NAkJbkVudHJpZXM7CiAKIAkvKgpAQCAtOTgsNiArOTksNyBA QCB0eXBlZGVmIHN0cnVjdCBHaW5NZXRhUGFnZURhdGEKIAkgKiBSZWplY3QgZnVsbC1pbmRleC1z Y2FuIGF0dGVtcHRzIG9uIHN1Y2ggaW5kZXhlcy4KIAkgKi8KIAlpbnQzMgkJZ2luVmVyc2lvbjsK KwlwZ19wYWRkaW5nXzQocGdfcGFkMik7CiB9IEdpbk1ldGFQYWdlRGF0YTsKIAogI2RlZmluZSBH SU5fQ1VSUkVOVF9WRVJTSU9OCQkyCkBAIC0zMzMsNyArMzM1LDcgQEAgdHlwZWRlZiBzaWduZWQg Y2hhciBHaW5OdWxsQ2F0ZWdvcnk7CiAgKgogICogTm90ZTogVGhpcyByZXF1aXJlcyAyLWJ5dGUg YWxpZ25tZW50LgogICovCi10eXBlZGVmIHN0cnVjdAordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFE RElORwogewogCUl0ZW1Qb2ludGVyRGF0YSBmaXJzdDsJCS8qIGZpcnN0IGl0ZW0gaW4gdGhpcyBw b3N0aW5nIGxpc3QgKHVucGFja2VkKSAqLwogCXVpbnQxNgkJbmJ5dGVzOwkJCS8qIG51bWJlciBv ZiBieXRlcyB0aGF0IGZvbGxvdyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dp bnhsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naW54bG9nLmgKaW5kZXggNzRmZGY5YjNkN2Uu LjdkZjNiMzg3MzdjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lueGxvZy5oCisr KyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naW54bG9nLmgKQEAgLTE4LDcgKzE4LDcgQEAKIAogI2Rl ZmluZSBYTE9HX0dJTl9DUkVBVEVfUFRSRUUgIDB4MTAKIAotdHlwZWRlZiBzdHJ1Y3QgZ2lueGxv Z0NyZWF0ZVBvc3RpbmdUcmVlCit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIGdpbnhsb2dD cmVhdGVQb3N0aW5nVHJlZQogewogCXVpbnQzMgkJc2l6ZTsKIAkvKiBBIGNvbXByZXNzZWQgcG9z dGluZyBsaXN0IGZvbGxvd3MgKi8KQEAgLTM0LDcgKzM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2lu eGxvZ0NyZWF0ZVBvc3RpbmdUcmVlCiAKICNkZWZpbmUgWExPR19HSU5fSU5TRVJUICAweDIwCiAK LXR5cGVkZWYgc3RydWN0Cit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HCiB7CiAJdWludDE2 CQlmbGFnczsJCQkvKiBHSU5fSU5TRVJUX0lTTEVBRiBhbmQvb3IgR0lOX0lOU0VSVF9JU0RBVEEg Ki8KIApAQCAtMTA4LDcgKzEwOCw3IEBAIHR5cGVkZWYgc3RydWN0CiAgKi8KICNkZWZpbmUgWExP R19HSU5fU1BMSVQJMHgzMAogCi10eXBlZGVmIHN0cnVjdCBnaW54bG9nU3BsaXQKK3R5cGVkZWYg c3RydWN0IFBHX05PX1BBRERJTkcgZ2lueGxvZ1NwbGl0CiB7CiAJUmVsRmlsZUxvY2F0b3IgbG9j YXRvcjsKIAlCbG9ja051bWJlciBycmxpbms7CQkJLyogcmlnaHQgbGluaywgb3Igcm9vdCdzIGJs b2NrbnVtYmVyIGlmIHJvb3QKQEAgLTExNiw2ICsxMTYsNyBAQCB0eXBlZGVmIHN0cnVjdCBnaW54 bG9nU3BsaXQKIAlCbG9ja051bWJlciBsZWZ0Q2hpbGRCbGtubzsgLyogdmFsaWQgb24gYSBub24t bGVhZiBzcGxpdCAqLwogCUJsb2NrTnVtYmVyIHJpZ2h0Q2hpbGRCbGtubzsKIAl1aW50MTYJCWZs YWdzOwkJCS8qIHNlZSBiZWxvdyAqLworCXBnX3BhZGRpbmdfMihwZ19wYWQpOwogfSBnaW54bG9n U3BsaXQ7CiAKIC8qCkBAIC0xNTIsOSArMTUzLDEwIEBAIHR5cGVkZWYgc3RydWN0IGdpbnhsb2dW YWN1dW1EYXRhTGVhZlBhZ2UKICAqLwogI2RlZmluZSBYTE9HX0dJTl9ERUxFVEVfUEFHRQkweDUw CiAKLXR5cGVkZWYgc3RydWN0IGdpbnhsb2dEZWxldGVQYWdlCit0eXBlZGVmIHN0cnVjdCBQR19O T19QQURESU5HIGdpbnhsb2dEZWxldGVQYWdlCiB7CiAJT2Zmc2V0TnVtYmVyIHBhcmVudE9mZnNl dDsKKwlwZ19wYWRkaW5nXzIocGdfcGFkKTsKIAlCbG9ja051bWJlciByaWdodExpbms7CiAJVHJh bnNhY3Rpb25JZCBkZWxldGVYaWQ7CS8qIGxhc3QgWGlkIHdoaWNoIGNvdWxkIHNlZSB0aGlzIHBh Z2UgaW4gc2NhbiAqLwogfSBnaW54bG9nRGVsZXRlUGFnZTsKQEAgLTE2NSwxNSArMTY3LDE3IEBA IHR5cGVkZWYgc3RydWN0IGdpbnhsb2dEZWxldGVQYWdlCiAgKiBCYWNrdXAgQmxrIDA6IG1ldGFw YWdlCiAgKiBCYWNrdXAgQmxrIDE6IHRhaWwgcGFnZQogICovCi10eXBlZGVmIHN0cnVjdCBnaW54 bG9nVXBkYXRlTWV0YQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyBnaW54bG9nVXBkYXRl TWV0YQogewogCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3I7CisJcGdfcGFkZGluZ180KHBnX3BhZDEp OwogCUdpbk1ldGFQYWdlRGF0YSBtZXRhZGF0YTsKIAlCbG9ja051bWJlciBwcmV2VGFpbDsKIAlC bG9ja051bWJlciBuZXdSaWdodGxpbms7CiAJaW50MzIJCW50dXBsZXM7CQkvKiBpZiBudHVwbGVz ID4gMCB0aGVuIG1ldGFkYXRhLnRhaWwgd2FzCiAJCQkJCQkJCSAqIHVwZGF0ZWQgd2l0aCB0aGF0 IG1hbnkgdHVwbGVzOyBlbHNlIG5ldyBzdWIKIAkJCQkJCQkJICogbGlzdCB3YXMgaW5zZXJ0ZWQg Ki8KKwlwZ19wYWRkaW5nXzQocGdfcGFkMik7CiAJLyogYXJyYXkgb2YgaW5zZXJ0ZWQgdHVwbGVz IGZvbGxvd3MgKi8KIH0gZ2lueGxvZ1VwZGF0ZU1ldGE7CiAKQEAgLTE4Miw3ICsxODYsNyBAQCB0 eXBlZGVmIHN0cnVjdCBnaW54bG9nVXBkYXRlTWV0YQogLyoKICAqIEJhY2t1cCBCbGsgMDogbGlz dCBwYWdlIHdpdGggaW5zZXJ0ZWQgdHVwbGVzCiAgKi8KLXR5cGVkZWYgc3RydWN0IGdpbnhsb2dJ bnNlcnRMaXN0UGFnZQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyBnaW54bG9nSW5zZXJ0 TGlzdFBhZ2UKIHsKIAlCbG9ja051bWJlciByaWdodGxpbms7CiAJaW50MzIJCW50dXBsZXM7CkBA IC0yMDMsMTAgKzIwNywxMSBAQCB0eXBlZGVmIHN0cnVjdCBnaW54bG9nSW5zZXJ0TGlzdFBhZ2UK ICAqIG1ldGFwYWdlLikKICAqLwogI2RlZmluZSBHSU5fTkRFTEVURV9BVF9PTkNFIE1pbigxNiwg WExSX01BWF9CTE9DS19JRCAtIDEpCi10eXBlZGVmIHN0cnVjdCBnaW54bG9nRGVsZXRlTGlzdFBh Z2VzCit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIGdpbnhsb2dEZWxldGVMaXN0UGFnZXMK IHsKIAlHaW5NZXRhUGFnZURhdGEgbWV0YWRhdGE7CiAJaW50MzIJCW5kZWxldGVkOworCXBnX3Bh ZGRpbmdfNChwZ19wYWQpOwogfSBnaW54bG9nRGVsZXRlTGlzdFBhZ2VzOwogCiBleHRlcm4gdm9p ZCBnaW5fcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCmlu ZGV4IGQzZDFjNjU0OWJlLi5mMTlkNGU4ZGZlNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2dpc3R4bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgKQEAgLTMz LDcgKzMzLDcgQEAKICAqIEJhY2t1cCBCbGsgMTogSWYgdGhpcyBvcGVyYXRpb24gY29tcGxldGVz IGEgcGFnZSBzcGxpdCwgYnkgaW5zZXJ0aW5nIGEKICAqCQkJCSBkb3dubGluayBmb3IgdGhlIHNw bGl0IHBhZ2UsIHRoZSBsZWZ0IGhhbGYgb2YgdGhlIHNwbGl0CiAgKi8KLXR5cGVkZWYgc3RydWN0 IGdpc3R4bG9nUGFnZVVwZGF0ZQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyBnaXN0eGxv Z1BhZ2VVcGRhdGUKIHsKIAkvKiBudW1iZXIgb2YgZGVsZXRlZCBvZmZzZXRzICovCiAJdWludDE2 CQludG9kZWxldGU7CkBAIC00NywxMiArNDcsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dQ YWdlVXBkYXRlCiAvKgogICogQmFja3VwIEJsayAwOiBMZWFmIHBhZ2UsIHdob3NlIGluZGV4IHR1 cGxlcyBhcmUgZGVsZXRlZC4KICAqLwotdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dEZWxldGUKK3R5 cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgZ2lzdHhsb2dEZWxldGUKIHsKIAlUcmFuc2FjdGlv bklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCXVpbnQxNgkJbnRvZGVsZXRlOwkJLyogbnVt YmVyIG9mIGRlbGV0ZWQgb2Zmc2V0cyAqLwogCWJvb2wJCWlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFu ZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsCiAJCQkJCQkJCSAqIGRlY29kaW5n IG9uIHN0YW5kYnkgKi8KKwlwZ19wYWRkaW5nXzEocGdfcGFkKTsKIAogCS8qIFRPREVMRVRFIE9G RlNFVCBOVU1CRVJTICovCiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbRkxFWElCTEVfQVJSQVlfTUVN QkVSXTsKQEAgLTY1LDE0ICs2NiwxOCBAQCB0eXBlZGVmIHN0cnVjdCBnaXN0eGxvZ0RlbGV0ZQog ICoJCQkJIGRvd25saW5rIGZvciB0aGUgc3BsaXQgcGFnZSwgdGhlIGxlZnQgaGFsZiBvZiB0aGUg c3BsaXQKICAqIEJhY2t1cCBCbGsgMSAtIG5wYWdlOiBzcGxpdCBwYWdlcyAoMSBpcyB0aGUgb3Jp Z2luYWwgcGFnZSkKICAqLwotdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dQYWdlU3BsaXQKK3R5cGVk ZWYgc3RydWN0IFBHX05PX1BBRERJTkcgZ2lzdHhsb2dQYWdlU3BsaXQKIHsKIAlCbG9ja051bWJl ciBvcmlncmxpbms7CQkvKiByaWdodGxpbmsgb2YgdGhlIHBhZ2UgYmVmb3JlIHNwbGl0ICovCisJ cGdfcGFkZGluZ180KHBnX3BhZDEpOwogCUdpc3ROU04JCW9yaWduc247CQkvKiBOU04gb2YgdGhl IHBhZ2UgYmVmb3JlIHNwbGl0ICovCiAJYm9vbAkJb3JpZ2xlYWY7CQkvKiB3YXMgc3BsaXQgcGFn ZSBhIGxlYWYgcGFnZT8gKi8KKwlwZ19wYWRkaW5nXzEocGdfcGFkMik7CiAKIAl1aW50MTYJCW5w YWdlOwkJCS8qICMgb2YgcGFnZXMgaW4gdGhlIHNwbGl0ICovCiAJYm9vbAkJbWFya2ZvbGxvd3Jp Z2h0OwkvKiBzZXQgRl9GT0xMT1dfUklHSFQgZmxhZ3MgKi8KKwlwZ19wYWRkaW5nXzEocGdfcGFk Myk7CisJcGdfcGFkZGluZ18yKHBnX3BhZDQpOwogCiAJLyoKIAkgKiBmb2xsb3c6IDEuIGdpc3R4 bG9nUGFnZSBhbmQgYXJyYXkgb2YgSW5kZXhUdXBsZURhdGEgcGVyIHBhZ2UKQEAgLTgzLDI5ICs4 OCwzNCBAQCB0eXBlZGVmIHN0cnVjdCBnaXN0eGxvZ1BhZ2VTcGxpdAogICogQmFja3VwIEJsayAw OiBwYWdlIHRoYXQgd2FzIGRlbGV0ZWQuCiAgKiBCYWNrdXAgQmxrIDE6IHBhcmVudCBwYWdlLCBj b250YWluaW5nIHRoZSBkb3dubGluayB0byB0aGUgZGVsZXRlZCBwYWdlLgogICovCi10eXBlZGVm IHN0cnVjdCBnaXN0eGxvZ1BhZ2VEZWxldGUKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcg Z2lzdHhsb2dQYWdlRGVsZXRlCiB7CiAJRnVsbFRyYW5zYWN0aW9uSWQgZGVsZXRlWGlkOwkvKiBs YXN0IFhpZCB3aGljaCBjb3VsZCBzZWUgcGFnZSBpbiBzY2FuICovCiAJT2Zmc2V0TnVtYmVyIGRv d25saW5rT2Zmc2V0OwkvKiBPZmZzZXQgb2YgZG93bmxpbmsgcmVmZXJlbmNpbmcgdGhpcwogCQkJ CQkJCQkJICogcGFnZSAqLworCXBnX3BhZGRpbmdfMihwZ19wYWQxKTsKKwlwZ19wYWRkaW5nXzQo cGdfcGFkMik7CiB9IGdpc3R4bG9nUGFnZURlbGV0ZTsKIAotI2RlZmluZSBTaXplT2ZHaXN0eGxv Z1BhZ2VEZWxldGUJKG9mZnNldG9mKGdpc3R4bG9nUGFnZURlbGV0ZSwgZG93bmxpbmtPZmZzZXQp ICsgc2l6ZW9mKE9mZnNldE51bWJlcikpCisjZGVmaW5lIFNpemVPZkdpc3R4bG9nUGFnZURlbGV0 ZQkoc2l6ZW9mKGdpc3R4bG9nUGFnZURlbGV0ZSkpCiAKIAogLyoKICAqIFRoaXMgaXMgd2hhdCB3 ZSBuZWVkIHRvIGtub3cgYWJvdXQgcGFnZSByZXVzZSwgZm9yIGhvdCBzdGFuZGJ5LgogICovCi10 eXBlZGVmIHN0cnVjdCBnaXN0eGxvZ1BhZ2VSZXVzZQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFE RElORyBnaXN0eGxvZ1BhZ2VSZXVzZQogewogCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3I7CiAJQmxv Y2tOdW1iZXIgYmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6 b247CiAJYm9vbAkJaXNDYXRhbG9nUmVsOwkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3Qg ZHVyaW5nIGxvZ2ljYWwKIAkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLworCXBnX3Bh ZGRpbmdfMShwZ19wYWQxKTsKKwlwZ19wYWRkaW5nXzIocGdfcGFkMik7CisJcGdfcGFkZGluZ180 KHBnX3BhZDQpOwogfSBnaXN0eGxvZ1BhZ2VSZXVzZTsKIAotI2RlZmluZSBTaXplT2ZHaXN0eGxv Z1BhZ2VSZXVzZQkob2Zmc2V0b2YoZ2lzdHhsb2dQYWdlUmV1c2UsIGlzQ2F0YWxvZ1JlbCkgKyBz aXplb2YoYm9vbCkpCisjZGVmaW5lIFNpemVPZkdpc3R4bG9nUGFnZVJldXNlCShzaXplb2YoZ2lz dHhsb2dQYWdlUmV1c2UpKQogCiBleHRlcm4gdm9pZCBnaXN0X3JlZG8oWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpOwogZXh0ZXJuIHZvaWQgZ2lzdF9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94 bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgKaW5kZXggMTQ5YWVkNjlkYzUu LmJiNmI5ZDBmZTExIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCkBAIC01OSwxMiArNTksMTIgQEAK ICAqIEJhY2t1cCBCbGsgMDogb3JpZ2luYWwgcGFnZSAoZGF0YSBjb250YWlucyB0aGUgaW5zZXJ0 ZWQgdHVwbGUpCiAgKiBCYWNrdXAgQmxrIDE6IG1ldGFwYWdlIChIYXNoTWV0YVBhZ2VEYXRhKQog ICovCi10eXBlZGVmIHN0cnVjdCB4bF9oYXNoX2luc2VydAordHlwZWRlZiBzdHJ1Y3QgUEdfTk9f UEFERElORyB4bF9oYXNoX2luc2VydAogewogCU9mZnNldE51bWJlciBvZmZudW07CiB9IHhsX2hh c2hfaW5zZXJ0OwogCi0jZGVmaW5lIFNpemVPZkhhc2hJbnNlcnQJKG9mZnNldG9mKHhsX2hhc2hf aW5zZXJ0LCBvZmZudW0pICsgc2l6ZW9mKE9mZnNldE51bWJlcikpCisjZGVmaW5lIFNpemVPZkhh c2hJbnNlcnQJKHNpemVvZih4bF9oYXNoX2luc2VydCkpCiAKIC8qCiAgKiBUaGlzIGlzIHdoYXQg d2UgbmVlZCB0byBrbm93IGFib3V0IGFkZGl0aW9uIG9mIG92ZXJmbG93IHBhZ2UuCkBAIC03Nywx NCArNzcsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGFzaF9pbnNlcnQKICAqIEJhY2t1cCBCbGsg MzogbmV3IGJpdG1hcCBwYWdlCiAgKiBCYWNrdXAgQmxrIDQ6IG1ldGFwYWdlCiAgKi8KLXR5cGVk ZWYgc3RydWN0IHhsX2hhc2hfYWRkX292ZmxfcGFnZQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFE RElORyB4bF9oYXNoX2FkZF9vdmZsX3BhZ2UKIHsKIAl1aW50MTYJCWJtc2l6ZTsKIAlib29sCQli bXBhZ2VfZm91bmQ7CisJcGdfcGFkZGluZ18xKHBnX3BhZCk7CiB9IHhsX2hhc2hfYWRkX292Zmxf cGFnZTsKIAotI2RlZmluZSBTaXplT2ZIYXNoQWRkT3ZmbFBhZ2UJXAotCShvZmZzZXRvZih4bF9o YXNoX2FkZF9vdmZsX3BhZ2UsIGJtcGFnZV9mb3VuZCkgKyBzaXplb2YoYm9vbCkpCisjZGVmaW5l IFNpemVPZkhhc2hBZGRPdmZsUGFnZQkoc2l6ZW9mKHhsX2hhc2hfYWRkX292ZmxfcGFnZSkpCiAK IC8qCiAgKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IGFsbG9jYXRpbmcgYSBw YWdlIGZvciBzcGxpdC4KQEAgLTk1LDE2ICs5NSwxNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oYXNo X2FkZF9vdmZsX3BhZ2UKICAqIEJhY2t1cCBCbGsgMTogcGFnZSBmb3IgbmV3IGJ1Y2tldAogICog QmFja3VwIEJsayAyOiBtZXRhcGFnZQogICovCi10eXBlZGVmIHN0cnVjdCB4bF9oYXNoX3NwbGl0 X2FsbG9jYXRlX3BhZ2UKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfaGFzaF9zcGxp dF9hbGxvY2F0ZV9wYWdlCiB7CiAJdWludDMyCQluZXdfYnVja2V0OwogCXVpbnQxNgkJb2xkX2J1 Y2tldF9mbGFnOwogCXVpbnQxNgkJbmV3X2J1Y2tldF9mbGFnOwogCXVpbnQ4CQlmbGFnczsKKwlw Z19wYWRkaW5nXzEocGdfcGFkMSk7CisJcGdfcGFkZGluZ18yKHBnX3BhZDIpOwogfSB4bF9oYXNo X3NwbGl0X2FsbG9jYXRlX3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9mSGFzaFNwbGl0QWxsb2NQYWdl CVwKLQkob2Zmc2V0b2YoeGxfaGFzaF9zcGxpdF9hbGxvY2F0ZV9wYWdlLCBmbGFncykgKyBzaXpl b2YodWludDgpKQorI2RlZmluZSBTaXplT2ZIYXNoU3BsaXRBbGxvY1BhZ2UJKHNpemVvZih4bF9o YXNoX3NwbGl0X2FsbG9jYXRlX3BhZ2UpKQogCiAvKgogICogVGhpcyBpcyB3aGF0IHdlIG5lZWQg dG8ga25vdyBhYm91dCBjb21wbGV0aW5nIHRoZSBzcGxpdCBvcGVyYXRpb24uCkBAIC0xMTQsMTQg KzExNSwxMyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oYXNoX3NwbGl0X2FsbG9jYXRlX3BhZ2UKICAq IEJhY2t1cCBCbGsgMDogcGFnZSBmb3Igb2xkIGJ1Y2tldAogICogQmFja3VwIEJsayAxOiBwYWdl IGZvciBuZXcgYnVja2V0CiAgKi8KLXR5cGVkZWYgc3RydWN0IHhsX2hhc2hfc3BsaXRfY29tcGxl dGUKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfaGFzaF9zcGxpdF9jb21wbGV0ZQog ewogCXVpbnQxNgkJb2xkX2J1Y2tldF9mbGFnOwogCXVpbnQxNgkJbmV3X2J1Y2tldF9mbGFnOwog fSB4bF9oYXNoX3NwbGl0X2NvbXBsZXRlOwogCi0jZGVmaW5lIFNpemVPZkhhc2hTcGxpdENvbXBs ZXRlIFwKLQkob2Zmc2V0b2YoeGxfaGFzaF9zcGxpdF9jb21wbGV0ZSwgbmV3X2J1Y2tldF9mbGFn KSArIHNpemVvZih1aW50MTYpKQorI2RlZmluZSBTaXplT2ZIYXNoU3BsaXRDb21wbGV0ZQkoc2l6 ZW9mKHhsX2hhc2hfc3BsaXRfY29tcGxldGUpKQogCiAvKgogICogVGhpcyBpcyB3aGF0IHdlIG5l ZWQgdG8ga25vdyBhYm91dCBtb3ZlIHBhZ2UgY29udGVudHMgcmVxdWlyZWQgZHVyaW5nCkBAIC0x MzMsMTYgKzEzMywxNiBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oYXNoX3NwbGl0X2NvbXBsZXRlCiAg KiBCYWNrdXAgQmxrIDE6IHBhZ2UgY29udGFpbmluZyBtb3ZlZCB0dXBsZXMKICAqIEJhY2t1cCBC bGsgMjogcGFnZSBmcm9tIHdoaWNoIHR1cGxlcyB3aWxsIGJlIHJlbW92ZWQKICAqLwotdHlwZWRl ZiBzdHJ1Y3QgeGxfaGFzaF9tb3ZlX3BhZ2VfY29udGVudHMKK3R5cGVkZWYgc3RydWN0IFBHX05P X1BBRERJTkcgeGxfaGFzaF9tb3ZlX3BhZ2VfY29udGVudHMKIHsKIAl1aW50MTYJCW50dXBzOwog CWJvb2wJCWlzX3ByaW1fYnVja2V0X3NhbWVfd3J0OwkvKiB0cnVlIGlmIHRoZSBwYWdlIHRvIHdo aWNoCiAJCQkJCQkJCQkJCSAqIHR1cGxlcyBhcmUgbW92ZWQgaXMgc2FtZSBhcwogCQkJCQkJCQkJ CQkgKiBwcmltYXJ5IGJ1Y2tldCBwYWdlICovCisJcGdfcGFkZGluZ18xKHBnX3BhZCk7CiB9IHhs X2hhc2hfbW92ZV9wYWdlX2NvbnRlbnRzOwogCi0jZGVmaW5lIFNpemVPZkhhc2hNb3ZlUGFnZUNv bnRlbnRzCVwKLQkob2Zmc2V0b2YoeGxfaGFzaF9tb3ZlX3BhZ2VfY29udGVudHMsIGlzX3ByaW1f YnVja2V0X3NhbWVfd3J0KSArIHNpemVvZihib29sKSkKKyNkZWZpbmUgU2l6ZU9mSGFzaE1vdmVQ YWdlQ29udGVudHMJKHNpemVvZih4bF9oYXNoX21vdmVfcGFnZV9jb250ZW50cykpCiAKIC8qCiAg KiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IHRoZSBzcXVlZXplIHBhZ2Ugb3Bl cmF0aW9uLgpAQCAtMTU3LDcgKzE1Nyw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hhc2hfbW92ZV9w YWdlX2NvbnRlbnRzCiAgKiBCYWNrdXAgQmxrIDU6IGJpdG1hcCBwYWdlIGNvbnRhaW5pbmcgaW5m byBvZiBmcmVlZCBvdmVyZmxvdyBwYWdlCiAgKiBCYWNrdXAgQmxrIDY6IG1ldGEgcGFnZQogICov Ci10eXBlZGVmIHN0cnVjdCB4bF9oYXNoX3NxdWVlemVfcGFnZQordHlwZWRlZiBzdHJ1Y3QgUEdf Tk9fUEFERElORyB4bF9oYXNoX3NxdWVlemVfcGFnZQogewogCUJsb2NrTnVtYmVyIHByZXZibGtu bzsKIAlCbG9ja051bWJlciBuZXh0Ymxrbm87CkBAIC0xNzEsOCArMTcxLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgeGxfaGFzaF9zcXVlZXplX3BhZ2UKIAkJCQkJCQkJCQkJICogcGFnZSAqLwogfSB4bF9o YXNoX3NxdWVlemVfcGFnZTsKIAotI2RlZmluZSBTaXplT2ZIYXNoU3F1ZWV6ZVBhZ2UJXAotCShv ZmZzZXRvZih4bF9oYXNoX3NxdWVlemVfcGFnZSwgaXNfcHJldl9idWNrZXRfc2FtZV93cnQpICsg c2l6ZW9mKGJvb2wpKQorI2RlZmluZSBTaXplT2ZIYXNoU3F1ZWV6ZVBhZ2UJKHNpemVvZih4bF9o YXNoX3NxdWVlemVfcGFnZSkpCiAKIC8qCiAgKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93 IGFib3V0IHRoZSBkZWxldGlvbiBvZiBpbmRleCB0dXBsZXMgZnJvbSBhIHBhZ2UuCkBAIC0xODIs NyArMTgxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGFzaF9zcXVlZXplX3BhZ2UKICAqIEJhY2t1 cCBCbGsgMDogcHJpbWFyeSBidWNrZXQgcGFnZQogICogQmFja3VwIEJsayAxOiBwYWdlIGZyb20g d2hpY2ggdHVwbGVzIGFyZSBkZWxldGVkCiAgKi8KLXR5cGVkZWYgc3RydWN0IHhsX2hhc2hfZGVs ZXRlCit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2hhc2hfZGVsZXRlCiB7CiAJYm9v bAkJY2xlYXJfZGVhZF9tYXJraW5nOyAvKiB0cnVlIGlmIHRoaXMgb3BlcmF0aW9uIGNsZWFycwog CQkJCQkJCQkJICogTEhfUEFHRV9IQVNfREVBRF9UVVBMRVMgZmxhZyAqLwpAQCAtMTkwLDcgKzE4 OSw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hhc2hfZGVsZXRlCiAJCQkJCQkJCQkJICogcHJpbWFy eSBidWNrZXQgcGFnZSAqLwogfSB4bF9oYXNoX2RlbGV0ZTsKIAotI2RlZmluZSBTaXplT2ZIYXNo RGVsZXRlCShvZmZzZXRvZih4bF9oYXNoX2RlbGV0ZSwgaXNfcHJpbWFyeV9idWNrZXRfcGFnZSkg KyBzaXplb2YoYm9vbCkpCisjZGVmaW5lIFNpemVPZkhhc2hEZWxldGUJKHNpemVvZih4bF9oYXNo X2RlbGV0ZSkpCiAKIC8qCiAgKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCBmb3IgbWV0YXBhZ2UgdXBk YXRlIG9wZXJhdGlvbi4KQEAgLTE5OSwxMyArMTk4LDEyIEBAIHR5cGVkZWYgc3RydWN0IHhsX2hh c2hfZGVsZXRlCiAgKgogICogQmFja3VwIEJsayAwOiBtZXRhIHBhZ2UKICAqLwotdHlwZWRlZiBz dHJ1Y3QgeGxfaGFzaF91cGRhdGVfbWV0YV9wYWdlCit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURE SU5HIHhsX2hhc2hfdXBkYXRlX21ldGFfcGFnZQogewogCWRvdWJsZQkJbnR1cGxlczsKIH0geGxf aGFzaF91cGRhdGVfbWV0YV9wYWdlOwogCi0jZGVmaW5lIFNpemVPZkhhc2hVcGRhdGVNZXRhUGFn ZQlcCi0JKG9mZnNldG9mKHhsX2hhc2hfdXBkYXRlX21ldGFfcGFnZSwgbnR1cGxlcykgKyBzaXpl b2YoZG91YmxlKSkKKyNkZWZpbmUgU2l6ZU9mSGFzaFVwZGF0ZU1ldGFQYWdlCShzaXplb2YoeGxf aGFzaF91cGRhdGVfbWV0YV9wYWdlKSkKIAogLyoKICAqIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRv IGluaXRpYWxpemUgbWV0YXBhZ2UuCkBAIC0yMTQsMTUgKzIxMiwxNSBAQCB0eXBlZGVmIHN0cnVj dCB4bF9oYXNoX3VwZGF0ZV9tZXRhX3BhZ2UKICAqCiAgKiBCYWNrdXAgQmxrIDA6IG1ldGEgcGFn ZQogICovCi10eXBlZGVmIHN0cnVjdCB4bF9oYXNoX2luaXRfbWV0YV9wYWdlCit0eXBlZGVmIHN0 cnVjdCBQR19OT19QQURESU5HIHhsX2hhc2hfaW5pdF9tZXRhX3BhZ2UKIHsKIAlkb3VibGUJCW51 bV90dXBsZXM7CiAJUmVnUHJvY2VkdXJlIHByb2NpZDsKIAl1aW50MTYJCWZmYWN0b3I7CisJcGdf cGFkZGluZ18yKHBnX3BhZCk7CiB9IHhsX2hhc2hfaW5pdF9tZXRhX3BhZ2U7CiAKLSNkZWZpbmUg U2l6ZU9mSGFzaEluaXRNZXRhUGFnZQkJXAotCShvZmZzZXRvZih4bF9oYXNoX2luaXRfbWV0YV9w YWdlLCBmZmFjdG9yKSArIHNpemVvZih1aW50MTYpKQorI2RlZmluZSBTaXplT2ZIYXNoSW5pdE1l dGFQYWdlCShzaXplb2YoeGxfaGFzaF9pbml0X21ldGFfcGFnZSkpCiAKIC8qCiAgKiBUaGlzIGlz IHdoYXQgd2UgbmVlZCB0byBpbml0aWFsaXplIGJpdG1hcCBwYWdlLgpAQCAtMjMyLDEzICsyMzAs MTIgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGFzaF9pbml0X21ldGFfcGFnZQogICogQmFja3VwIEJs ayAwOiBiaXRtYXAgcGFnZQogICogQmFja3VwIEJsayAxOiBtZXRhIHBhZ2UKICAqLwotdHlwZWRl ZiBzdHJ1Y3QgeGxfaGFzaF9pbml0X2JpdG1hcF9wYWdlCit0eXBlZGVmIHN0cnVjdCBQR19OT19Q QURESU5HIHhsX2hhc2hfaW5pdF9iaXRtYXBfcGFnZQogewogCXVpbnQxNgkJYm1zaXplOwogfSB4 bF9oYXNoX2luaXRfYml0bWFwX3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9mSGFzaEluaXRCaXRtYXBQ YWdlCVwKLQkob2Zmc2V0b2YoeGxfaGFzaF9pbml0X2JpdG1hcF9wYWdlLCBibXNpemUpICsgc2l6 ZW9mKHVpbnQxNikpCisjZGVmaW5lIFNpemVPZkhhc2hJbml0Qml0bWFwUGFnZQkoc2l6ZW9mKHhs X2hhc2hfaW5pdF9iaXRtYXBfcGFnZSkpCiAKIC8qCiAgKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCBm b3IgaW5kZXggdHVwbGUgZGVsZXRpb24gYW5kIHRvCkBAIC0yNDksMTIgKzI0NiwxMyBAQCB0eXBl ZGVmIHN0cnVjdCB4bF9oYXNoX2luaXRfYml0bWFwX3BhZ2UKICAqIEJhY2t1cCBCbGsgMDogcHJp bWFyeSBidWNrZXQgcGFnZQogICogQmFja3VwIEJsayAxOiBtZXRhIHBhZ2UKICAqLwotdHlwZWRl ZiBzdHJ1Y3QgeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BB RERJTkcgeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UKIHsKIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uOwogCXVpbnQxNgkJbnR1cGxlczsKIAlib29sCQlpc0NhdGFsb2dSZWw7 CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbAogCQkJCQkJCQkg KiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCisJcGdfcGFkZGluZ18xKHBnX3BhZCk7CiAKIAkvKiBU QVJHRVQgT0ZGU0VUIE5VTUJFUlMgKi8KIAlPZmZzZXROdW1iZXIgb2Zmc2V0c1tGTEVYSUJMRV9B UlJBWV9NRU1CRVJdOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9n LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAppbmRleCBjZTM1NjZiYTk0OS4u NzRhMzgwM2FkMTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCkBAIC0xMTAsNyArMTEwLDcg QEAKIAkoWExIX0RFTEVURV9DT05UQUlOU19PTERfVFVQTEUgfCBYTEhfREVMRVRFX0NPTlRBSU5T X09MRF9LRVkpCiAKIC8qIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgZGVsZXRl ICovCi10eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2RlbGV0ZQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9f UEFERElORyB4bF9oZWFwX2RlbGV0ZQogewogCVRyYW5zYWN0aW9uSWQgeG1heDsJCQkvKiB4bWF4 IG9mIHRoZSBkZWxldGVkIHR1cGxlICovCiAJT2Zmc2V0TnVtYmVyIG9mZm51bTsJCS8qIGRlbGV0 ZWQgdHVwbGUncyBvZmZzZXQgKi8KQEAgLTExOCw3ICsxMTgsNyBAQCB0eXBlZGVmIHN0cnVjdCB4 bF9oZWFwX2RlbGV0ZQogCXVpbnQ4CQlmbGFnczsKIH0geGxfaGVhcF9kZWxldGU7CiAKLSNkZWZp bmUgU2l6ZU9mSGVhcERlbGV0ZQkob2Zmc2V0b2YoeGxfaGVhcF9kZWxldGUsIGZsYWdzKSArIHNp emVvZih1aW50OCkpCisjZGVmaW5lIFNpemVPZkhlYXBEZWxldGUJc2l6ZW9mKHhsX2hlYXBfZGVs ZXRlKQogCiAvKgogICogeGxfaGVhcF90cnVuY2F0ZSBmbGFnIHZhbHVlcywgOCBiaXRzIGFyZSBh dmFpbGFibGUuCkBAIC0xMzEsMTEgKzEzMSwxMyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2Rl bGV0ZQogICogc2VxdWVuY2UgcmVsaWRzIHRoYXQgbmVlZCB0byBiZSByZXN0YXJ0ZWQsIGlmIGFu eS4KICAqIEFsbCByZWxzIGFyZSBhbHdheXMgd2l0aGluIHRoZSBzYW1lIGRhdGFiYXNlLCBzbyB3 ZSBqdXN0IGxpc3QgZGJpZCBvbmNlLgogICovCi10eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3RydW5j YXRlCit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2hlYXBfdHJ1bmNhdGUKIHsKIAlP aWQJCQlkYklkOwogCXVpbnQzMgkJbnJlbGlkczsKIAl1aW50OAkJZmxhZ3M7CisJcGdfcGFkZGlu Z18xKHBnX3BhZDEpOworCXBnX3BhZGRpbmdfMihwZ19wYWQyKTsKIAlPaWQJCQlyZWxpZHNbRkxF WElCTEVfQVJSQVlfTUVNQkVSXTsKIH0geGxfaGVhcF90cnVuY2F0ZTsKIApAQCAtMTQ3LDI1ICsx NDksMjcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF90cnVuY2F0ZQogICogZmllbGRzIHRoYXQg YXJlIGF2YWlsYWJsZSBlbHNld2hlcmUgaW4gdGhlIFdBTCByZWNvcmQsIG9yIHBlcmhhcHMganVz dAogICogcGxhaW4gbmVlZG4ndCBiZSByZWNvbnN0cnVjdGVkLiAgVGhlc2UgYXJlIHRoZSBmaWVs ZHMgd2UgbXVzdCBzdG9yZS4KICAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9oZWFkZXIKK3R5 cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfaGVhcF9oZWFkZXIKIHsKIAl1aW50MTYJCXRf aW5mb21hc2syOwogCXVpbnQxNgkJdF9pbmZvbWFzazsKIAl1aW50OAkJdF9ob2ZmOworCXBnX3Bh ZGRpbmdfMShwZ19wYWQpOwogfSB4bF9oZWFwX2hlYWRlcjsKIAotI2RlZmluZSBTaXplT2ZIZWFw SGVhZGVyCShvZmZzZXRvZih4bF9oZWFwX2hlYWRlciwgdF9ob2ZmKSArIHNpemVvZih1aW50OCkp CisjZGVmaW5lIFNpemVPZkhlYXBIZWFkZXIJc2l6ZW9mKHhsX2hlYXBfaGVhZGVyKQogCiAvKiBU aGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IGluc2VydCAqLwotdHlwZWRlZiBzdHJ1 Y3QgeGxfaGVhcF9pbnNlcnQKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfaGVhcF9p bnNlcnQKIHsKIAlPZmZzZXROdW1iZXIgb2ZmbnVtOwkJLyogaW5zZXJ0ZWQgdHVwbGUncyBvZmZz ZXQgKi8KIAl1aW50OAkJZmxhZ3M7CisJcGdfcGFkZGluZ18xKHBnX3BhZCk7CiAKIAkvKiB4bF9o ZWFwX2hlYWRlciAmIFRVUExFIERBVEEgaW4gYmFja3VwIGJsb2NrIDAgKi8KIH0geGxfaGVhcF9p bnNlcnQ7CiAKLSNkZWZpbmUgU2l6ZU9mSGVhcEluc2VydAkob2Zmc2V0b2YoeGxfaGVhcF9pbnNl cnQsIGZsYWdzKSArIHNpemVvZih1aW50OCkpCisjZGVmaW5lIFNpemVPZkhlYXBJbnNlcnQJc2l6 ZW9mKHhsX2hlYXBfaW5zZXJ0KQogCiAvKgogICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25v dyBhYm91dCBhIG11bHRpLWluc2VydC4KQEAgLTE3OCwyNSArMTgyLDI3IEBAIHR5cGVkZWYgc3Ry dWN0IHhsX2hlYXBfaW5zZXJ0CiAgKiBmb2xsb3dlZCBieSB0aGUgdHVwbGUgZGF0YSBmb3IgZWFj aCB0dXBsZS4gVGhlcmUgaXMgcGFkZGluZyB0byBhbGlnbgogICogZWFjaCB4bF9tdWx0aV9pbnNl cnRfdHVwbGUgc3RydWN0LgogICovCi10eXBlZGVmIHN0cnVjdCB4bF9oZWFwX211bHRpX2luc2Vy dAordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9oZWFwX211bHRpX2luc2VydAogewog CXVpbnQ4CQlmbGFnczsKKwlwZ19wYWRkaW5nXzEocGdfcGFkKTsKIAl1aW50MTYJCW50dXBsZXM7 CiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0geGxfaGVh cF9tdWx0aV9pbnNlcnQ7CiAKICNkZWZpbmUgU2l6ZU9mSGVhcE11bHRpSW5zZXJ0CW9mZnNldG9m KHhsX2hlYXBfbXVsdGlfaW5zZXJ0LCBvZmZzZXRzKQogCi10eXBlZGVmIHN0cnVjdCB4bF9tdWx0 aV9pbnNlcnRfdHVwbGUKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfbXVsdGlfaW5z ZXJ0X3R1cGxlCiB7CiAJdWludDE2CQlkYXRhbGVuOwkJLyogc2l6ZSBvZiB0dXBsZSBkYXRhIHRo YXQgZm9sbG93cyAqLwogCXVpbnQxNgkJdF9pbmZvbWFzazI7CiAJdWludDE2CQl0X2luZm9tYXNr OwogCXVpbnQ4CQl0X2hvZmY7CisJcGdfcGFkZGluZ18xKHBnX3BhZCk7CiAJLyogVFVQTEUgREFU QSBGT0xMT1dTIEFUIEVORCBPRiBTVFJVQ1QgKi8KIH0geGxfbXVsdGlfaW5zZXJ0X3R1cGxlOwog Ci0jZGVmaW5lIFNpemVPZk11bHRpSW5zZXJ0VHVwbGUJKG9mZnNldG9mKHhsX211bHRpX2luc2Vy dF90dXBsZSwgdF9ob2ZmKSArIHNpemVvZih1aW50OCkpCisjZGVmaW5lIFNpemVPZk11bHRpSW5z ZXJ0VHVwbGUJc2l6ZW9mKHhsX211bHRpX2luc2VydF90dXBsZSkKIAogLyoKICAqIFRoaXMgaXMg d2hhdCB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgdXBkYXRlfGhvdF91cGRhdGUKQEAgLTIxNSw3ICsy MjEsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9tdWx0aV9pbnNlcnRfdHVwbGUKICAqCiAgKiBCYWNr dXAgYmxrIDE6IG9sZCBwYWdlLCBpZiBkaWZmZXJlbnQuIChubyBkYXRhLCBqdXN0IGEgcmVmZXJl bmNlIHRvIHRoZSBibGspCiAgKi8KLXR5cGVkZWYgc3RydWN0IHhsX2hlYXBfdXBkYXRlCit0eXBl ZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2hlYXBfdXBkYXRlCiB7CiAJVHJhbnNhY3Rpb25J ZCBvbGRfeG1heDsJCS8qIHhtYXggb2YgdGhlIG9sZCB0dXBsZSAqLwogCU9mZnNldE51bWJlciBv bGRfb2ZmbnVtOwkvKiBvbGQgdHVwbGUncyBvZmZzZXQgKi8KQEAgLTIyMyw2ICsyMjksNyBAQCB0 eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3VwZGF0ZQogCXVpbnQ4CQlmbGFnczsKIAlUcmFuc2FjdGlv bklkIG5ld194bWF4OwkJLyogeG1heCBvZiB0aGUgbmV3IHR1cGxlICovCiAJT2Zmc2V0TnVtYmVy IG5ld19vZmZudW07CS8qIG5ldyB0dXBsZSdzIG9mZnNldCAqLworCXBnX3BhZGRpbmdfMihwZ19w YWQpOwogCiAJLyoKIAkgKiBJZiBYTEhfVVBEQVRFX0NPTlRBSU5TX09MRF9UVVBMRSBvciBYTEhf VVBEQVRFX0NPTlRBSU5TX09MRF9LRVkgZmxhZ3MKQEAgLTIzMCw3ICsyMzcsNyBAQCB0eXBlZGVm IHN0cnVjdCB4bF9oZWFwX3VwZGF0ZQogCSAqLwogfSB4bF9oZWFwX3VwZGF0ZTsKIAotI2RlZmlu ZSBTaXplT2ZIZWFwVXBkYXRlCShvZmZzZXRvZih4bF9oZWFwX3VwZGF0ZSwgbmV3X29mZm51bSkg KyBzaXplb2YoT2Zmc2V0TnVtYmVyKSkKKyNkZWZpbmUgU2l6ZU9mSGVhcFVwZGF0ZQlzaXplb2Yo eGxfaGVhcF91cGRhdGUpCiAKIC8qCiAgKiBUaGVzZSBzdHJ1Y3R1cmVzIGFuZCBmbGFncyBlbmNv ZGUgVkFDVVVNIHBydW5pbmcgYW5kIGZyZWV6aW5nIGFuZCBvbi1hY2Nlc3MKQEAgLTI4Miw3ICsy ODksNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3VwZGF0ZQogICogb3RoZXIgZmllbGRzIHJl cXVpcmUgb25seSAyLWJ5dGUgYWxpZ25tZW50LiAgVGhpcyBpcyBhbHNvIHRoZSByZWFzb24gdGhh dAogICogJ2Zyel9vZmZzZXRzJyBpcyBzdG9yZWQgc2VwYXJhdGVseSBmcm9tIHRoZSB4bGhwX2Zy ZWV6ZV9wbGFuIHN0cnVjdHMuCiAgKi8KLXR5cGVkZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKK3R5 cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfaGVhcF9wcnVuZQogewogCXVpbnQxNgkJZmxh Z3M7CiAKQEAgLTI5Miw3ICsyOTksNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiAJ ICovCiB9IHhsX2hlYXBfcHJ1bmU7CiAKLSNkZWZpbmUgU2l6ZU9mSGVhcFBydW5lIChvZmZzZXRv Zih4bF9oZWFwX3BydW5lLCBmbGFncykgKyBzaXplb2YodWludDE2KSkKKyNkZWZpbmUgU2l6ZU9m SGVhcFBydW5lIHNpemVvZih4bF9oZWFwX3BydW5lKQogCiAvKiB0byBoYW5kbGUgcmVjb3Zlcnkg Y29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogI2RlZmluZQkJ WExIUF9JU19DQVRBTE9HX1JFTAkJCSgxIDw8IDEpCkBAIC0zNDcsMTIgKzM1NCwxMyBAQCB0eXBl ZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiAjZGVmaW5lCQlYTEhfRlJFRVpFX1hWQUMJCTB4MDIK ICNkZWZpbmUJCVhMSF9JTlZBTElEX1hWQUMJMHgwNAogCi10eXBlZGVmIHN0cnVjdCB4bGhwX2Zy ZWV6ZV9wbGFuCit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsaHBfZnJlZXplX3BsYW4K IHsKIAlUcmFuc2FjdGlvbklkIHhtYXg7CiAJdWludDE2CQl0X2luZm9tYXNrMjsKIAl1aW50MTYJ CXRfaW5mb21hc2s7CiAJdWludDgJCWZyemZsYWdzOworCXBnX3BhZGRpbmdfMShwZ19wYWQpOwog CiAJLyogTGVuZ3RoIG9mIGluZGl2aWR1YWwgcGFnZSBvZmZzZXQgbnVtYmVycyBhcnJheSBmb3Ig dGhpcyBwbGFuICovCiAJdWludDE2CQludHVwbGVzOwpAQCAtMzcwLDkgKzM3OCwxMCBAQCB0eXBl ZGVmIHN0cnVjdCB4bGhwX2ZyZWV6ZV9wbGFuCiAgKiAoQXMgb2YgUG9zdGdyZVNRTCAxNywgWExP R19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmRzIHJlcGxhY2UgdGhlCiAgKiBzZXBhcmF0 ZSBYTE9HX0hFQVAyX0ZSRUVaRV9QQUdFIHJlY29yZHMuKQogICovCi10eXBlZGVmIHN0cnVjdCB4 bGhwX2ZyZWV6ZV9wbGFucwordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bGhwX2ZyZWV6 ZV9wbGFucwogewogCXVpbnQxNgkJbnBsYW5zOworCXBnX3BhZGRpbmdfMihwZ19wYWQpOwogCXhs aHBfZnJlZXplX3BsYW4gcGxhbnNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0geGxocF9mcmVl emVfcGxhbnM7CiAKQEAgLTM4Myw3ICszOTIsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bGhwX2ZyZWV6 ZV9wbGFucwogICogc2V0LiAgTm90ZSB0aGF0IGluIHRoZSBYTEhQX0hBU19SRURJUkVDVElPTlMg dmFyaWFudCwgdGhlcmUgYXJlIGFjdHVhbGx5IDIKICAqICogbGVuZ3RoIG51bWJlciBvZiBPZmZz ZXROdW1iZXJzIGluIHRoZSBkYXRhLgogICovCi10eXBlZGVmIHN0cnVjdCB4bGhwX3BydW5lX2l0 ZW1zCit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsaHBfcHJ1bmVfaXRlbXMKIHsKIAl1 aW50MTYJCW50YXJnZXRzOwogCU9mZnNldE51bWJlciBkYXRhW0ZMRVhJQkxFX0FSUkFZX01FTUJF Ul07CkBAIC00MDEsNyArNDEwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxocF9wcnVuZV9pdGVtcwog I2RlZmluZSBYTEhfTE9DS19BTExfRlJPWkVOX0NMRUFSRUQJCTB4MDEKIAogLyogVGhpcyBpcyB3 aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBsb2NrICovCi10eXBlZGVmIHN0cnVjdCB4bF9oZWFw X2xvY2sKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfaGVhcF9sb2NrCiB7CiAJVHJh bnNhY3Rpb25JZCB4bWF4OwkJCS8qIG1pZ2h0IGJlIGEgTXVsdGlYYWN0SWQgKi8KIAlPZmZzZXRO dW1iZXIgb2ZmbnVtOwkJLyogbG9ja2VkIHR1cGxlJ3Mgb2Zmc2V0IG9uIHBhZ2UgKi8KQEAgLTQw OSwxMCArNDE4LDEwIEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfbG9jawogCXVpbnQ4CQlmbGFn czsJCQkvKiBYTEhfTE9DS18qIGZsYWcgYml0cyAqLwogfSB4bF9oZWFwX2xvY2s7CiAKLSNkZWZp bmUgU2l6ZU9mSGVhcExvY2sJKG9mZnNldG9mKHhsX2hlYXBfbG9jaywgZmxhZ3MpICsgc2l6ZW9m KHVpbnQ4KSkKKyNkZWZpbmUgU2l6ZU9mSGVhcExvY2sJc2l6ZW9mKHhsX2hlYXBfbG9jaykKIAog LyogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBsb2NraW5nIGFuIHVwZGF0ZWQg dmVyc2lvbiBvZiBhIHJvdyAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9sb2NrX3VwZGF0ZWQK K3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfaGVhcF9sb2NrX3VwZGF0ZWQKIHsKIAlU cmFuc2FjdGlvbklkIHhtYXg7CiAJT2Zmc2V0TnVtYmVyIG9mZm51bTsKQEAgLTQyMCwyMyArNDI5 LDI2IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfbG9ja191cGRhdGVkCiAJdWludDgJCWZsYWdz OwogfSB4bF9oZWFwX2xvY2tfdXBkYXRlZDsKIAotI2RlZmluZSBTaXplT2ZIZWFwTG9ja1VwZGF0 ZWQJKG9mZnNldG9mKHhsX2hlYXBfbG9ja191cGRhdGVkLCBmbGFncykgKyBzaXplb2YodWludDgp KQorI2RlZmluZSBTaXplT2ZIZWFwTG9ja1VwZGF0ZWQJc2l6ZW9mKHhsX2hlYXBfbG9ja191cGRh dGVkKQogCiAvKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IGNvbmZpcm1hdGlv biBvZiBzcGVjdWxhdGl2ZSBpbnNlcnRpb24gKi8KLXR5cGVkZWYgc3RydWN0IHhsX2hlYXBfY29u ZmlybQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9oZWFwX2NvbmZpcm0KIHsKIAlP ZmZzZXROdW1iZXIgb2ZmbnVtOwkJLyogY29uZmlybWVkIHR1cGxlJ3Mgb2Zmc2V0IG9uIHBhZ2Ug Ki8KIH0geGxfaGVhcF9jb25maXJtOwogCi0jZGVmaW5lIFNpemVPZkhlYXBDb25maXJtCShvZmZz ZXRvZih4bF9oZWFwX2NvbmZpcm0sIG9mZm51bSkgKyBzaXplb2YoT2Zmc2V0TnVtYmVyKSkKKyNk ZWZpbmUgU2l6ZU9mSGVhcENvbmZpcm0Jc2l6ZW9mKHhsX2hlYXBfY29uZmlybSkKIAogLyogVGhp cyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBpbi1wbGFjZSB1cGRhdGUgKi8KLXR5cGVk ZWYgc3RydWN0IHhsX2hlYXBfaW5wbGFjZQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4 bF9oZWFwX2lucGxhY2UKIHsKIAlPZmZzZXROdW1iZXIgb2ZmbnVtOwkJLyogdXBkYXRlZCB0dXBs ZSdzIG9mZnNldCBvbiBwYWdlICovCisJcGdfcGFkZGluZ18yKHBnX3BhZDEpOwogCU9pZAkJCWRi SWQ7CQkJLyogTXlEYXRhYmFzZUlkICovCiAJT2lkCQkJdHNJZDsJCQkvKiBNeURhdGFiYXNlVGFi bGVTcGFjZSAqLwogCWJvb2wJCXJlbGNhY2hlSW5pdEZpbGVJbnZhbDsJLyogaW52YWxpZGF0ZSBy ZWxjYWNoZSBpbml0IGZpbGVzICovCisJcGdfcGFkZGluZ18xKHBnX3BhZDIpOworCXBnX3BhZGRp bmdfMihwZ19wYWQzKTsKIAlpbnQJCQlubXNnczsJCQkvKiBudW1iZXIgb2Ygc2hhcmVkIGludmFs IG1zZ3MgKi8KIAlTaGFyZWRJbnZhbGlkYXRpb25NZXNzYWdlIG1zZ3NbRkxFWElCTEVfQVJSQVlf TUVNQkVSXTsKIH0geGxfaGVhcF9pbnBsYWNlOwpAQCAtNDQ5LDE1ICs0NjEsMTcgQEAgdHlwZWRl ZiBzdHJ1Y3QgeGxfaGVhcF9pbnBsYWNlCiAgKiBCYWNrdXAgYmxrIDA6IHZpc2liaWxpdHkgbWFw IGJ1ZmZlcgogICogQmFja3VwIGJsayAxOiBoZWFwIGJ1ZmZlcgogICovCi10eXBlZGVmIHN0cnVj dCB4bF9oZWFwX3Zpc2libGUKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfaGVhcF92 aXNpYmxlCiB7CiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50 OAkJZmxhZ3M7CisJcGdfcGFkZGluZ18xKHBnX3BhZDEpOworCXBnX3BhZGRpbmdfMihwZ19wYWQy KTsKIH0geGxfaGVhcF92aXNpYmxlOwogCi0jZGVmaW5lIFNpemVPZkhlYXBWaXNpYmxlIChvZmZz ZXRvZih4bF9oZWFwX3Zpc2libGUsIGZsYWdzKSArIHNpemVvZih1aW50OCkpCisjZGVmaW5lIFNp emVPZkhlYXBWaXNpYmxlIHNpemVvZih4bF9oZWFwX3Zpc2libGUpCiAKLXR5cGVkZWYgc3RydWN0 IHhsX2hlYXBfbmV3X2NpZAordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9oZWFwX25l d19jaWQKIHsKIAkvKgogCSAqIHN0b3JlIHRvcGxldmVsIHhpZCBzbyB3ZSBkb24ndCBoYXZlIHRv IG1lcmdlIGNpZHMgZnJvbSBkaWZmZXJlbnQKQEAgLTQ3MywxOCArNDg3LDIxIEBAIHR5cGVkZWYg c3RydWN0IHhsX2hlYXBfbmV3X2NpZAogCSAqLwogCVJlbEZpbGVMb2NhdG9yIHRhcmdldF9sb2Nh dG9yOwogCUl0ZW1Qb2ludGVyRGF0YSB0YXJnZXRfdGlkOworCXBnX3BhZGRpbmdfMihwZ19wYWQp OwogfSB4bF9oZWFwX25ld19jaWQ7CiAKLSNkZWZpbmUgU2l6ZU9mSGVhcE5ld0NpZCAob2Zmc2V0 b2YoeGxfaGVhcF9uZXdfY2lkLCB0YXJnZXRfdGlkKSArIHNpemVvZihJdGVtUG9pbnRlckRhdGEp KQorI2RlZmluZSBTaXplT2ZIZWFwTmV3Q2lkIHNpemVvZih4bF9oZWFwX25ld19jaWQpCiAKIC8q IGxvZ2ljYWwgcmV3cml0ZSB4bG9nIHJlY29yZCBoZWFkZXIgKi8KLXR5cGVkZWYgc3RydWN0IHhs X2hlYXBfcmV3cml0ZV9tYXBwaW5nCit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2hl YXBfcmV3cml0ZV9tYXBwaW5nCiB7CiAJVHJhbnNhY3Rpb25JZCBtYXBwZWRfeGlkOwkvKiB4aWQg dGhhdCBtaWdodCBuZWVkIHRvIHNlZSB0aGUgcm93ICovCiAJT2lkCQkJbWFwcGVkX2RiOwkJLyog RGJPaWQgb3IgSW52YWxpZE9pZCBmb3Igc2hhcmVkIHJlbHMgKi8KIAlPaWQJCQltYXBwZWRfcmVs OwkJLyogT2lkIG9mIHRoZSBtYXBwZWQgcmVsYXRpb24gKi8KKwlwZ19wYWRkaW5nXzQocGdfcGFk MSk7CiAJb2ZmX3QJCW9mZnNldDsJCQkvKiBIb3cgZmFyIGhhdmUgd2Ugd3JpdHRlbiBzbyBmYXIg Ki8KIAl1aW50MzIJCW51bV9tYXBwaW5nczsJLyogTnVtYmVyIG9mIGluLW1lbW9yeSBtYXBwaW5n cyAqLworCXBnX3BhZGRpbmdfNChwZ19wYWQyKTsKIAlYTG9nUmVjUHRyCXN0YXJ0X2xzbjsJCS8q IEluc2VydCBMU04gYXQgYmVnaW4gb2YgcmV3cml0ZSAqLwogfSB4bF9oZWFwX3Jld3JpdGVfbWFw cGluZzsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oCmluZGV4IDJhZThiNTcxZGNjLi4zZmU0NTAxZDI3 ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaApAQCAtNjksMTcgKzY5LDE5IEBAIHR5cGVkZWYgc3Ry dWN0IE11bHRpWGFjdE1lbWJlcgogI2RlZmluZSBYTE9HX01VTFRJWEFDVF9DUkVBVEVfSUQJCTB4 MjAKICNkZWZpbmUgWExPR19NVUxUSVhBQ1RfVFJVTkNBVEVfSUQJCTB4MzAKIAotdHlwZWRlZiBz dHJ1Y3QgeGxfbXVsdGl4YWN0X2NyZWF0ZQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4 bF9tdWx0aXhhY3RfY3JlYXRlCiB7CiAJTXVsdGlYYWN0SWQgbWlkOwkJCS8qIG5ldyBNdWx0aVhh Y3QncyBJRCAqLworCXBnX3BhZGRpbmdfNChwZ19wYWQxKTsKIAlNdWx0aVhhY3RPZmZzZXQgbW9m ZjsJCS8qIGl0cyBzdGFydGluZyBvZmZzZXQgaW4gbWVtYmVycyBmaWxlICovCiAJaW50MzIJCW5t ZW1iZXJzOwkJLyogbnVtYmVyIG9mIG1lbWJlciBYSURzICovCisJcGdfcGFkZGluZ180KHBnX3Bh ZDIpOwogCU11bHRpWGFjdE1lbWJlciBtZW1iZXJzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9 IHhsX211bHRpeGFjdF9jcmVhdGU7CiAKICNkZWZpbmUgU2l6ZU9mTXVsdGlYYWN0Q3JlYXRlIChv ZmZzZXRvZih4bF9tdWx0aXhhY3RfY3JlYXRlLCBtZW1iZXJzKSkKIAotdHlwZWRlZiBzdHJ1Y3Qg eGxfbXVsdGl4YWN0X3RydW5jYXRlCit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX211 bHRpeGFjdF90cnVuY2F0ZQogewogCU9pZAkJCW9sZGVzdE11bHRpREI7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxv Zy5oCmluZGV4IDNhNzhlYzI3ZmU4Li44OTE4ZDY3NWRjZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvYWNjZXNzL25idHhsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCkBA IC00Niw3ICs0Niw3IEBACiAvKgogICogQWxsIHRoYXQgd2UgbmVlZCB0byByZWdlbmVyYXRlIHRo ZSBtZXRhLWRhdGEgcGFnZQogICovCi10eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9tZXRhZGF0YQor dHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9idHJlZV9tZXRhZGF0YQogewogCXVpbnQz MgkJdmVyc2lvbjsKIAlCbG9ja051bWJlciByb290OwpAQCAtNTUsNiArNTUsOCBAQCB0eXBlZGVm IHN0cnVjdCB4bF9idHJlZV9tZXRhZGF0YQogCXVpbnQzMgkJZmFzdGxldmVsOwogCXVpbnQzMgkJ bGFzdF9jbGVhbnVwX251bV9kZWxwYWdlczsKIAlib29sCQlhbGxlcXVhbGltYWdlOworCXBnX3Bh ZGRpbmdfMShwZ19wYWQxKTsKKwlwZ19wYWRkaW5nXzIocGdfcGFkMik7CiB9IHhsX2J0cmVlX21l dGFkYXRhOwogCiAvKgpAQCAtNzYsNyArNzgsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9t ZXRhZGF0YQogICogdGhhdCB3YXMgc3BsaXQgYXMgYW4gZXh0cmEgc3RlcC4gIEFsc28sIHJlY292 ZXJ5IGdlbmVyYXRlcyBhICJmaW5hbCIKICAqIG5ld2l0ZW0uICBTZWUgX2J0X3N3YXBfcG9zdGlu ZygpIGZvciBkZXRhaWxzIG9uIHBvc3RpbmcgbGlzdCBzcGxpdHMuCiAgKi8KLXR5cGVkZWYgc3Ry dWN0IHhsX2J0cmVlX2luc2VydAordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9idHJl ZV9pbnNlcnQKIHsKIAlPZmZzZXROdW1iZXIgb2ZmbnVtOwogCkBAIC04NCw3ICs4Niw3IEBAIHR5 cGVkZWYgc3RydWN0IHhsX2J0cmVlX2luc2VydAogCS8qIE5FVyBUVVBMRSBBTFdBWVMgRk9MTE9X UyBBVCBUSEUgRU5EICovCiB9IHhsX2J0cmVlX2luc2VydDsKIAotI2RlZmluZSBTaXplT2ZCdHJl ZUluc2VydAkob2Zmc2V0b2YoeGxfYnRyZWVfaW5zZXJ0LCBvZmZudW0pICsgc2l6ZW9mKE9mZnNl dE51bWJlcikpCisjZGVmaW5lIFNpemVPZkJ0cmVlSW5zZXJ0CXNpemVvZih4bF9idHJlZV9pbnNl cnQpCiAKIC8qCiAgKiBPbiBpbnNlcnQgd2l0aCBzcGxpdCwgd2Ugc2F2ZSBhbGwgdGhlIGl0ZW1z IGdvaW5nIGludG8gdGhlIHJpZ2h0IHNpYmxpbmcKQEAgLTE1MCwxNSArMTUyLDE2IEBAIHR5cGVk ZWYgc3RydWN0IHhsX2J0cmVlX2luc2VydAogICogQmFja3VwIEJsayAyOiBuZXh0IGJsb2NrIChv cmlnIHBhZ2UncyByaWdodGxpbmspLCBpZiBhbnkKICAqIEJhY2t1cCBCbGsgMzogY2hpbGQncyBs ZWZ0IHNpYmxpbmcsIGlmIG5vbi1sZWFmIHNwbGl0CiAgKi8KLXR5cGVkZWYgc3RydWN0IHhsX2J0 cmVlX3NwbGl0Cit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2J0cmVlX3NwbGl0CiB7 CiAJdWludDMyCQlsZXZlbDsJCQkvKiB0cmVlIGxldmVsIG9mIHBhZ2UgYmVpbmcgc3BsaXQgKi8K IAlPZmZzZXROdW1iZXIgZmlyc3RyaWdodG9mZjsgLyogZmlyc3Qgb3JpZ3BhZ2UgaXRlbSBvbiBy aWdodHBhZ2UgKi8KIAlPZmZzZXROdW1iZXIgbmV3aXRlbW9mZjsJLyogbmV3IGl0ZW0ncyBvZmZz ZXQgKi8KIAl1aW50MTYJCXBvc3RpbmdvZmY7CQkvKiBvZmZzZXQgaW5zaWRlIG9yaWcgcG9zdGlu ZyB0dXBsZSAqLworCXBnX3BhZGRpbmdfMihwZ19wYWQpOwogfSB4bF9idHJlZV9zcGxpdDsKIAot I2RlZmluZSBTaXplT2ZCdHJlZVNwbGl0CShvZmZzZXRvZih4bF9idHJlZV9zcGxpdCwgcG9zdGlu Z29mZikgKyBzaXplb2YodWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mQnRyZWVTcGxpdAlzaXplb2Yo eGxfYnRyZWVfc3BsaXQpCiAKIC8qCiAgKiBXaGVuIHBhZ2UgaXMgZGVkdXBsaWNhdGVkLCBjb25z ZWN1dGl2ZSBncm91cHMgb2YgdHVwbGVzIHdpdGggZXF1YWwga2V5cyBhcmUKQEAgLTE2NywxNCAr MTcwLDE0IEBAIHR5cGVkZWYgc3RydWN0IHhsX2J0cmVlX3NwbGl0CiAgKiBUaGUgV0FMIHJlY29y ZCByZXByZXNlbnRzIGEgZGVkdXBsaWNhdGlvbiBwYXNzIGZvciBhIGxlYWYgcGFnZS4gIEFuIGFy cmF5CiAgKiBvZiBCVERlZHVwSW50ZXJ2YWwgc3RydWN0cyBmb2xsb3dzLgogICovCi10eXBlZGVm IHN0cnVjdCB4bF9idHJlZV9kZWR1cAordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9i dHJlZV9kZWR1cAogewogCXVpbnQxNgkJbmludGVydmFsczsKIAogCS8qIERFRFVQTElDQVRJT04g SU5URVJWQUxTIEZPTExPVyAqLwogfSB4bF9idHJlZV9kZWR1cDsKIAotI2RlZmluZSBTaXplT2ZC dHJlZURlZHVwIAkob2Zmc2V0b2YoeGxfYnRyZWVfZGVkdXAsIG5pbnRlcnZhbHMpICsgc2l6ZW9m KHVpbnQxNikpCisjZGVmaW5lIFNpemVPZkJ0cmVlRGVkdXAJc2l6ZW9mKHhsX2J0cmVlX2RlZHVw KQogCiAvKgogICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBwYWdlIHJldXNl IHdpdGhpbiBidHJlZS4gIFRoaXMgcmVjb3JkCkBAIC0xODMsMTYgKzE4NiwxOSBAQCB0eXBlZGVm IHN0cnVjdCB4bF9idHJlZV9kZWR1cAogICogTm90ZSB0aGF0IHdlIG11c3QgaW5jbHVkZSBhIFJl bEZpbGVMb2NhdG9yIGluIHRoZSByZWNvcmQgYmVjYXVzZSB3ZSBkb24ndAogICogYWN0dWFsbHkg cmVnaXN0ZXIgdGhlIGJ1ZmZlciB3aXRoIHRoZSByZWNvcmQuCiAgKi8KLXR5cGVkZWYgc3RydWN0 IHhsX2J0cmVlX3JldXNlX3BhZ2UKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfYnRy ZWVfcmV1c2VfcGFnZQogewogCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3I7CiAJQmxvY2tOdW1iZXIg YmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CiAJYm9v bAkJaXNDYXRhbG9nUmVsOwkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxv Z2ljYWwKIAkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLworCXBnX3BhZGRpbmdfMShw Z19wYWQxKTsKKwlwZ19wYWRkaW5nXzIocGdfcGFkMik7CisJcGdfcGFkZGluZ180KHBnX3BhZDQp OwogfSB4bF9idHJlZV9yZXVzZV9wYWdlOwogCi0jZGVmaW5lIFNpemVPZkJ0cmVlUmV1c2VQYWdl CShvZmZzZXRvZih4bF9idHJlZV9yZXVzZV9wYWdlLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJv b2wpKQorI2RlZmluZSBTaXplT2ZCdHJlZVJldXNlUGFnZQlzaXplb2YoeGxfYnRyZWVfcmV1c2Vf cGFnZSkKIAogLyoKICAqIHhsX2J0cmVlX3ZhY3V1bSBhbmQgeGxfYnRyZWVfZGVsZXRlIHJlY29y ZHMgZGVzY3JpYmUgZGVsZXRpb24gb2YgaW5kZXgKQEAgLTIyMCw3ICsyMjYsNyBAQCB0eXBlZGVm IHN0cnVjdCB4bF9idHJlZV9yZXVzZV9wYWdlCiAgKiBVcGRhdGVzIGFyZSBvbmx5IHVzZWQgd2hl biB0aGVyZSB3aWxsIGJlIHNvbWUgcmVtYWluaW5nIFRJRHMgbGVmdCBieSB0aGUKICAqIFJFRE8g cm91dGluZS4gIE90aGVyd2lzZSB0aGUgcG9zdGluZyBsaXN0IHR1cGxlIGp1c3QgZ2V0cyBkZWxl dGVkIG91dHJpZ2h0LgogICovCi10eXBlZGVmIHN0cnVjdCB4bF9idHJlZV92YWN1dW0KK3R5cGVk ZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfYnRyZWVfdmFjdXVtCiB7CiAJdWludDE2CQluZGVs ZXRlZDsKIAl1aW50MTYJCW51cGRhdGVkOwpAQCAtMjM0LDE1ICsyNDAsMTcgQEAgdHlwZWRlZiBz dHJ1Y3QgeGxfYnRyZWVfdmFjdXVtCiAJICovCiB9IHhsX2J0cmVlX3ZhY3V1bTsKIAotI2RlZmlu ZSBTaXplT2ZCdHJlZVZhY3V1bQkob2Zmc2V0b2YoeGxfYnRyZWVfdmFjdXVtLCBudXBkYXRlZCkg KyBzaXplb2YodWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mQnRyZWVWYWN1dW0Jc2l6ZW9mKHhsX2J0 cmVlX3ZhY3V1bSkKIAotdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfZGVsZXRlCit0eXBlZGVmIHN0 cnVjdCBQR19OT19QQURESU5HIHhsX2J0cmVlX2RlbGV0ZQogewogCVRyYW5zYWN0aW9uSWQgc25h cHNob3RDb25mbGljdEhvcml6b247CiAJdWludDE2CQluZGVsZXRlZDsKIAl1aW50MTYJCW51cGRh dGVkOwogCWJvb2wJCWlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0 IGR1cmluZyBsb2dpY2FsCiAJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KKwlwZ19w YWRkaW5nXzEocGdfcGFkMSk7CisJcGdfcGFkZGluZ18yKHBnX3BhZDIpOwogCiAJLyotLS0tCiAJ ICogSW4gcGF5bG9hZCBvZiBibGsgMCA6CkBAIC0yNTMsNyArMjYxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgeGxfYnRyZWVfZGVsZXRlCiAJICovCiB9IHhsX2J0cmVlX2RlbGV0ZTsKIAotI2RlZmluZSBT aXplT2ZCdHJlZURlbGV0ZQkob2Zmc2V0b2YoeGxfYnRyZWVfZGVsZXRlLCBpc0NhdGFsb2dSZWwp ICsgc2l6ZW9mKGJvb2wpKQorI2RlZmluZSBTaXplT2ZCdHJlZURlbGV0ZQlzaXplb2YoeGxfYnRy ZWVfZGVsZXRlKQogCiAvKgogICogVGhlIG9mZnNldHMgdGhhdCBhcHBlYXIgaW4geGxfYnRyZWVf dXBkYXRlIG1ldGFkYXRhIGFyZSBvZmZzZXRzIGludG8gdGhlCkBAIC0yNjEsMTQgKzI2OSwxNCBA QCB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9kZWxldGUKICAqIDAtYmFzZWQuICBUaGUgcGFnZSBv ZmZzZXQgbnVtYmVyIGZvciB0aGUgb3JpZ2luYWwgcG9zdGluZyBsaXN0IHR1cGxlIGNvbWVzCiAg KiBmcm9tIHRoZSBtYWluIHhsX2J0cmVlX3ZhY3V1bS94bF9idHJlZV9kZWxldGUgcmVjb3JkLgog ICovCi10eXBlZGVmIHN0cnVjdCB4bF9idHJlZV91cGRhdGUKK3R5cGVkZWYgc3RydWN0IFBHX05P X1BBRERJTkcgeGxfYnRyZWVfdXBkYXRlCiB7CiAJdWludDE2CQluZGVsZXRlZHRpZHM7CiAKIAkv KiBQT1NUSU5HIExJU1QgdWludDE2IE9GRlNFVFMgVE8gQSBERUxFVEVEIFRJRCBGT0xMT1cgKi8K IH0geGxfYnRyZWVfdXBkYXRlOwogCi0jZGVmaW5lIFNpemVPZkJ0cmVlVXBkYXRlCShvZmZzZXRv Zih4bF9idHJlZV91cGRhdGUsIG5kZWxldGVkdGlkcykgKyBzaXplb2YodWludDE2KSkKKyNkZWZp bmUgU2l6ZU9mQnRyZWVVcGRhdGUJc2l6ZW9mKHhsX2J0cmVlX3VwZGF0ZSkKIAogLyoKICAqIFRo aXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgbWFya2luZyBhbiBlbXB0eSBzdWJ0cmVl IGZvciBkZWxldGlvbi4KQEAgLTI4MCw5ICsyODgsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnRy ZWVfdXBkYXRlCiAgKiBCYWNrdXAgQmxrIDA6IGxlYWYgYmxvY2sKICAqIEJhY2t1cCBCbGsgMTog dG9wIHBhcmVudAogICovCi10eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9tYXJrX3BhZ2VfaGFsZmRl YWQKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfYnRyZWVfbWFya19wYWdlX2hhbGZk ZWFkCiB7CiAJT2Zmc2V0TnVtYmVyIHBvZmZzZXQ7CQkvKiBkZWxldGVkIHR1cGxlIGlkIGluIHBh cmVudCBwYWdlICovCisJcGdfcGFkZGluZ18yKHBnX3BhZCk7CiAKIAkvKiBpbmZvcm1hdGlvbiBu ZWVkZWQgdG8gcmVjcmVhdGUgdGhlIGxlYWYgcGFnZTogKi8KIAlCbG9ja051bWJlciBsZWFmYmxr OwkJLyogbGVhZiBibG9jayB1bHRpbWF0ZWx5IGJlaW5nIGRlbGV0ZWQgKi8KQEAgLTI5MSw3ICsz MDAsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9tYXJrX3BhZ2VfaGFsZmRlYWQKIAlCbG9j a051bWJlciB0b3BwYXJlbnQ7CQkvKiB0b3Btb3N0IGludGVybmFsIHBhZ2UgaW4gdGhlIHN1YnRy ZWUgKi8KIH0geGxfYnRyZWVfbWFya19wYWdlX2hhbGZkZWFkOwogCi0jZGVmaW5lIFNpemVPZkJ0 cmVlTWFya1BhZ2VIYWxmRGVhZCAob2Zmc2V0b2YoeGxfYnRyZWVfbWFya19wYWdlX2hhbGZkZWFk LCB0b3BwYXJlbnQpICsgc2l6ZW9mKEJsb2NrTnVtYmVyKSkKKyNkZWZpbmUgU2l6ZU9mQnRyZWVN YXJrUGFnZUhhbGZEZWFkIHNpemVvZih4bF9idHJlZV9tYXJrX3BhZ2VfaGFsZmRlYWQpCiAKIC8q CiAgKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IGRlbGV0aW9uIG9mIGEgYnRy ZWUgcGFnZS4gIE5vdGUgdGhhdCB3ZQpAQCAtMzA3LDExICszMTYsMTIgQEAgdHlwZWRlZiBzdHJ1 Y3QgeGxfYnRyZWVfbWFya19wYWdlX2hhbGZkZWFkCiAgKiBCYWNrdXAgQmxrIDM6IGxlYWYgYmxv Y2sgKGlmIGRpZmZlcmVudCBmcm9tIHRhcmdldCkKICAqIEJhY2t1cCBCbGsgNDogbWV0YXBhZ2Ug KGlmIHJpZ2h0c2liIGJlY29tZXMgbmV3IGZhc3Qgcm9vdCkKICAqLwotdHlwZWRlZiBzdHJ1Y3Qg eGxfYnRyZWVfdW5saW5rX3BhZ2UKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfYnRy ZWVfdW5saW5rX3BhZ2UKIHsKIAlCbG9ja051bWJlciBsZWZ0c2liOwkJLyogdGFyZ2V0IGJsb2Nr J3MgbGVmdCBzaWJsaW5nLCBpZiBhbnkgKi8KIAlCbG9ja051bWJlciByaWdodHNpYjsJCS8qIHRh cmdldCBibG9jaydzIHJpZ2h0IHNpYmxpbmcgKi8KIAl1aW50MzIJCWxldmVsOwkJCS8qIHRhcmdl dCBibG9jaydzIGxldmVsICovCisJcGdfcGFkZGluZ180KHBnX3BhZDEpOwogCUZ1bGxUcmFuc2Fj dGlvbklkIHNhZmV4aWQ7CS8qIHRhcmdldCBibG9jaydzIEJUUGFnZVNldERlbGV0ZWQoKSBYSUQg Ki8KIAogCS8qCkBAIC0zMjQsMTEgKzMzNCwxMiBAQCB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV91 bmxpbmtfcGFnZQogCUJsb2NrTnVtYmVyIGxlYWZsZWZ0c2liOwogCUJsb2NrTnVtYmVyIGxlYWZy aWdodHNpYjsKIAlCbG9ja051bWJlciBsZWFmdG9wcGFyZW50OwkvKiBuZXh0IGNoaWxkIGRvd24g aW4gdGhlIHN1YnRyZWUgKi8KKwlwZ19wYWRkaW5nXzQocGdfcGFkMik7CiAKIAkvKiB4bF9idHJl ZV9tZXRhZGF0YSBGT0xMT1dTIElGIFhMT0dfQlRSRUVfVU5MSU5LX1BBR0VfTUVUQSAqLwogfSB4 bF9idHJlZV91bmxpbmtfcGFnZTsKIAotI2RlZmluZSBTaXplT2ZCdHJlZVVubGlua1BhZ2UJKG9m ZnNldG9mKHhsX2J0cmVlX3VubGlua19wYWdlLCBsZWFmdG9wcGFyZW50KSArIHNpemVvZihCbG9j a051bWJlcikpCisjZGVmaW5lIFNpemVPZkJ0cmVlVW5saW5rUGFnZQlzaXplb2YoeGxfYnRyZWVf dW5saW5rX3BhZ2UpCiAKIC8qCiAgKiBOZXcgcm9vdCBsb2cgcmVjb3JkLiAgVGhlcmUgYXJlIHpl cm8gdHVwbGVzIGlmIHRoaXMgaXMgdG8gZXN0YWJsaXNoIGFuCkBAIC0zNDEsMTMgKzM1MiwxMyBA QCB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV91bmxpbmtfcGFnZQogICogQmFja3VwIEJsayAxOiBs ZWZ0IGNoaWxkIChpZiBzcGxpdHRpbmcgYW4gb2xkIHJvb3QpCiAgKiBCYWNrdXAgQmxrIDI6IG1l dGFwYWdlCiAgKi8KLXR5cGVkZWYgc3RydWN0IHhsX2J0cmVlX25ld3Jvb3QKK3R5cGVkZWYgc3Ry dWN0IFBHX05PX1BBRERJTkcgeGxfYnRyZWVfbmV3cm9vdAogewogCUJsb2NrTnVtYmVyIHJvb3Ri bGs7CQkvKiBsb2NhdGlvbiBvZiBuZXcgcm9vdCAocmVkdW5kYW50IHdpdGggYmxrIDApICovCiAJ dWludDMyCQlsZXZlbDsJCQkvKiBpdHMgdHJlZSBsZXZlbCAqLwogfSB4bF9idHJlZV9uZXdyb290 OwogCi0jZGVmaW5lIFNpemVPZkJ0cmVlTmV3cm9vdAkob2Zmc2V0b2YoeGxfYnRyZWVfbmV3cm9v dCwgbGV2ZWwpICsgc2l6ZW9mKHVpbnQzMikpCisjZGVmaW5lIFNpemVPZkJ0cmVlTmV3cm9vdAlz aXplb2YoeGxfYnRyZWVfbmV3cm9vdCkKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL3NwZ2lzdF9wcml2YXRlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BnaXN0X3ByaXZh dGUuaAppbmRleCBlYzZkNmY1Zjc0ZC4uYzA1NjkzODQ2ZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9zcGdpc3RfcHJpdmF0ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGdp c3RfcHJpdmF0ZS5oCkBAIC0yOTIsMTQgKzI5MiwxNCBAQCB0eXBlZGVmIHN0cnVjdCBTcEdpc3RD YWNoZQogICogb3BjbGFzc2VzLiAgR29pbmcgZm9yd2FyZCwgd2Ugd2lsbCBiZSB1c2luZyBhIGZp eGVkIHNpemUgb2YgRGF0dW0gc28gdGhhdAogICogdGhlcmUncyBubyBsb25nZXIgYW55IHByZXNz aW5nIHJlYXNvbiB0byBjaGFuZ2UgdGhpcy4KICAqLwotdHlwZWRlZiBzdHJ1Y3QgU3BHaXN0SW5u ZXJUdXBsZURhdGEKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgU3BHaXN0SW5uZXJUdXBs ZURhdGEKIHsKIAl1bnNpZ25lZCBpbnQgdHVwc3RhdGU6MiwJLyogTElWRS9SRURJUkVDVC9ERUFE L1BMQUNFSE9MREVSICovCiAJCQkJYWxsVGhlU2FtZToxLAkvKiBhbGwgbm9kZXMgaW4gdHVwbGUg YXJlIGVxdWl2YWxlbnQgKi8KIAkJCQluTm9kZXM6MTMsCQkvKiBudW1iZXIgb2Ygbm9kZXMgd2l0 aGluIGlubmVyIHR1cGxlICovCiAJCQkJcHJlZml4U2l6ZToxNjsJLyogc2l6ZSBvZiBwcmVmaXgs IG9yIDAgaWYgbm9uZSAqLwogCXVpbnQxNgkJc2l6ZTsJCQkvKiB0b3RhbCBzaXplIG9mIGlubmVy IHR1cGxlICovCi0JLyogT24gbW9zdCBtYWNoaW5lcyB0aGVyZSB3aWxsIGJlIGEgY291cGxlIG9m IHdhc3RlZCBieXRlcyBoZXJlICovCisJcGdfcGFkZGluZ18yKHBnX3BhZCk7CiAJLyogcHJlZml4 IGRhdHVtIGZvbGxvd3MsIHRoZW4gbm9kZXMgKi8KIH0gU3BHaXN0SW5uZXJUdXBsZURhdGE7CiAK QEAgLTM4Miw3ICszODIsNyBAQCB0eXBlZGVmIFNwR2lzdE5vZGVUdXBsZURhdGEgKlNwR2lzdE5v ZGVUdXBsZTsKICAqIHJlc3RyaWN0aW9uIG9ubHkgYWRkcyBieXRlcyBmb3IgYSBOVUxMIGxlYWYg ZGF0dW07IG90aGVyd2lzZSBhbGlnbm1lbnQKICAqIHJlc3RyaWN0aW9ucyBmb3JjZSBpdCBhbnl3 YXkuKQogICovCi10eXBlZGVmIHN0cnVjdCBTcEdpc3RMZWFmVHVwbGVEYXRhCit0eXBlZGVmIHN0 cnVjdCBQR19OT19QQURESU5HIFNwR2lzdExlYWZUdXBsZURhdGEKIHsKIAl1bnNpZ25lZCBpbnQg dHVwc3RhdGU6MiwJLyogTElWRS9SRURJUkVDVC9ERUFEL1BMQUNFSE9MREVSICovCiAJCQkJc2l6 ZTozMDsJCS8qIGxhcmdlIGVub3VnaCBmb3IgYW55IHBhbGxvYydhYmxlIHZhbHVlICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3NwZ3hsb2cuaAppbmRleCBjMjU3NDA4YmU2Ni4uZmMxNDMxNDA3ZmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hs b2cuaApAQCAtMzMsMTcgKzMzLDE5IEBACiAgKiBuZWVkIHRvIGJlIHZhbGlkLiAgc3BneGxvZ1N0 YXRlIGNhcnJpZXMgdGhlIHJlcXVpcmVkIGluZm8gaW4geGxvZyByZWNvcmRzLgogICogKFNlZSBm aWxsRmFrZVN0YXRlIGluIHNwZ3hsb2cuYyBmb3IgbW9yZSBjb21tZW50cy4pCiAgKi8KLXR5cGVk ZWYgc3RydWN0IHNwZ3hsb2dTdGF0ZQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyBzcGd4 bG9nU3RhdGUKIHsKIAlUcmFuc2FjdGlvbklkIHJlZGlyZWN0WGlkOwogCWJvb2wJCWlzQnVpbGQ7 CisJcGdfcGFkZGluZ18xKHBnX3BhZDEpOworCXBnX3BhZGRpbmdfMihwZ19wYWQyKTsKIH0gc3Bn eGxvZ1N0YXRlOwogCiAvKgogICogQmFja3VwIEJsayAwOiBkZXN0aW5hdGlvbiBwYWdlIGZvciBs ZWFmIHR1cGxlCiAgKiBCYWNrdXAgQmxrIDE6IHBhcmVudCBwYWdlIChpZiBhbnkpCiAgKi8KLXR5 cGVkZWYgc3RydWN0IHNwZ3hsb2dBZGRMZWFmCit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5H IHNwZ3hsb2dBZGRMZWFmCiB7CiAJYm9vbAkJbmV3UGFnZTsJCS8qIGluaXQgZGVzdCBwYWdlPyAq LwogCWJvb2wJCXN0b3Jlc051bGxzOwkvKiBwYWdlIGlzIGluIHRoZSBudWxscyB0cmVlPyAqLwpA QCAtNjEsMTcgKzYzLDE5IEBAIHR5cGVkZWYgc3RydWN0IHNwZ3hsb2dBZGRMZWFmCiAgKiBCYWNr dXAgQmxrIDE6IGRlc3RpbmF0aW9uIGxlYWYgcGFnZQogICogQmFja3VwIEJsayAyOiBwYXJlbnQg cGFnZQogICovCi10eXBlZGVmIHN0cnVjdCBzcGd4bG9nTW92ZUxlYWZzCit0eXBlZGVmIHN0cnVj dCBQR19OT19QQURESU5HIHNwZ3hsb2dNb3ZlTGVhZnMKIHsKIAl1aW50MTYJCW5Nb3ZlczsJCQkv KiBudW1iZXIgb2YgdHVwbGVzIG1vdmVkIGZyb20gc291cmNlIHBhZ2UgKi8KIAlib29sCQluZXdQ YWdlOwkJLyogaW5pdCBkZXN0IHBhZ2U/ICovCiAJYm9vbAkJcmVwbGFjZURlYWQ7CS8qIGFyZSB3 ZSByZXBsYWNpbmcgYSBERUFEIHNvdXJjZSB0dXBsZT8gKi8KIAlib29sCQlzdG9yZXNOdWxsczsJ LyogcGFnZXMgYXJlIGluIHRoZSBudWxscyB0cmVlPyAqLworCXBnX3BhZGRpbmdfMShwZ19wYWQx KTsKIAogCS8qIHdoZXJlIHRoZSBwYXJlbnQgZG93bmxpbmsgaXMgKi8KIAlPZmZzZXROdW1iZXIg b2ZmbnVtUGFyZW50OwogCXVpbnQxNgkJbm9kZUk7CiAKKwlwZ19wYWRkaW5nXzIocGdfcGFkMik7 CiAJc3BneGxvZ1N0YXRlIHN0YXRlU3JjOwogCiAJLyotLS0tLS0tLS0tCkBAIC05Niw3ICsxMDAs NyBAQCB0eXBlZGVmIHN0cnVjdCBzcGd4bG9nTW92ZUxlYWZzCiAgKiBCYWNrdXAgQmxrIDI6IHdo ZXJlIHBhcmVudCBkb3dubGluayBpcywgaWYgdXBkYXRlZCBhbmQgZGlmZmVyZW50IGZyb20KICAq CQkJCSB0aGUgb2xkIGFuZCBuZXcKICAqLwotdHlwZWRlZiBzdHJ1Y3Qgc3BneGxvZ0FkZE5vZGUK K3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgc3BneGxvZ0FkZE5vZGUKIHsKIAkvKgogCSAq IE9mZnNldCBvZiB0aGUgb3JpZ2luYWwgaW5uZXIgdHVwbGUsIGluIHRoZSBvcmlnaW5hbCBwYWdl IChvbiBiYWNrdXAKQEAgLTEyNyw2ICsxMzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBzcGd4bG9nQWRk Tm9kZQogCiAJdWludDE2CQlub2RlSTsKIAorCXBnX3BhZGRpbmdfMihwZ19wYWQpOwogCXNwZ3hs b2dTdGF0ZSBzdGF0ZVNyYzsKIAogCS8qCkBAIC0xMzgsNyArMTQzLDcgQEAgdHlwZWRlZiBzdHJ1 Y3Qgc3BneGxvZ0FkZE5vZGUKICAqIEJhY2t1cCBCbGsgMDogd2hlcmUgdGhlIHByZWZpeCB0dXBs ZSBnb2VzCiAgKiBCYWNrdXAgQmxrIDE6IHdoZXJlIHRoZSBwb3N0Zml4IHR1cGxlIGdvZXMgKGlm IGRpZmZlcmVudCBwYWdlKQogICovCi10eXBlZGVmIHN0cnVjdCBzcGd4bG9nU3BsaXRUdXBsZQor dHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyBzcGd4bG9nU3BsaXRUdXBsZQogewogCS8qIHdo ZXJlIHRoZSBwcmVmaXggdHVwbGUgZ29lcyAqLwogCU9mZnNldE51bWJlciBvZmZudW1QcmVmaXg7 CkBAIC0xNjIsOSArMTY3LDEwIEBAIHR5cGVkZWYgc3RydWN0IHNwZ3hsb2dTcGxpdFR1cGxlCiAg KiBCYWNrdXAgQmxrIDI6IElubmVyIHBhZ2UKICAqIEJhY2t1cCBCbGsgMzogUGFyZW50IHBhZ2Ug KGlmIGFueSwgYW5kIGRpZmZlcmVudCBmcm9tIElubmVyKQogICovCi10eXBlZGVmIHN0cnVjdCBz cGd4bG9nUGlja1NwbGl0Cit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHNwZ3hsb2dQaWNr U3BsaXQKIHsKIAlib29sCQlpc1Jvb3RTcGxpdDsKKwlwZ19wYWRkaW5nXzEocGdfcGFkMSk7CiAK IAl1aW50MTYJCW5EZWxldGU7CQkvKiBuIHRvIGRlbGV0ZSBmcm9tIFNyYyAqLwogCXVpbnQxNgkJ bkluc2VydDsJCS8qIG4gdG8gaW5zZXJ0IG9uIFNyYyBhbmQvb3IgRGVzdCAqLwpAQCAtMTc5LDkg KzE4NSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBzcGd4bG9nUGlja1NwbGl0CiAKIAkvKiB3aGVyZSB0 aGUgcGFyZW50IGRvd25saW5rIGlzLCBpZiBhbnkgKi8KIAlib29sCQlpbm5lcklzUGFyZW50Owkv KiBpcyBwYXJlbnQgdGhlIHNhbWUgYXMgaW5uZXIgcGFnZT8gKi8KKwlwZ19wYWRkaW5nXzEocGdf cGFkMik7CiAJT2Zmc2V0TnVtYmVyIG9mZm51bVBhcmVudDsKIAl1aW50MTYJCW5vZGVJOwogCisJ cGdfcGFkZGluZ18yKHBnX3BhZDMpOwogCXNwZ3hsb2dTdGF0ZSBzdGF0ZVNyYzsKIAogCS8qLS0t LS0tLS0tLQpAQCAtMTk4LDcgKzIwNiw3IEBAIHR5cGVkZWYgc3RydWN0IHNwZ3hsb2dQaWNrU3Bs aXQKIAogI2RlZmluZSBTaXplT2ZTcGd4bG9nUGlja1NwbGl0IG9mZnNldG9mKHNwZ3hsb2dQaWNr U3BsaXQsIG9mZnNldHMpCiAKLXR5cGVkZWYgc3RydWN0IHNwZ3hsb2dWYWN1dW1MZWFmCit0eXBl ZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHNwZ3hsb2dWYWN1dW1MZWFmCiB7CiAJdWludDE2CQlu RGVhZDsJCQkvKiBudW1iZXIgb2YgdHVwbGVzIHRvIGJlY29tZSBERUFEICovCiAJdWludDE2CQlu UGxhY2Vob2xkZXI7CS8qIG51bWJlciBvZiB0dXBsZXMgdG8gYmVjb21lIFBMQUNFSE9MREVSICov CkBAIC0yMjIsMTAgKzIzMCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBzcGd4bG9nVmFjdXVtTGVhZgog CiAjZGVmaW5lIFNpemVPZlNwZ3hsb2dWYWN1dW1MZWFmIG9mZnNldG9mKHNwZ3hsb2dWYWN1dW1M ZWFmLCBvZmZzZXRzKQogCi10eXBlZGVmIHN0cnVjdCBzcGd4bG9nVmFjdXVtUm9vdAordHlwZWRl ZiBzdHJ1Y3QgUEdfTk9fUEFERElORyBzcGd4bG9nVmFjdXVtUm9vdAogewogCS8qIHZhY3V1bSBh IHJvb3QgcGFnZSB3aGVuIGl0IGlzIGFsc28gYSBsZWFmICovCiAJdWludDE2CQluRGVsZXRlOwkJ LyogbnVtYmVyIG9mIHR1cGxlcyB0byBkZWxldGUgKi8KKwlwZ19wYWRkaW5nXzIocGdfcGFkKTsK IAogCXNwZ3hsb2dTdGF0ZSBzdGF0ZVNyYzsKIApAQCAtMjM1LDEzICsyNDQsMTUgQEAgdHlwZWRl ZiBzdHJ1Y3Qgc3BneGxvZ1ZhY3V1bVJvb3QKIAogI2RlZmluZSBTaXplT2ZTcGd4bG9nVmFjdXVt Um9vdCBvZmZzZXRvZihzcGd4bG9nVmFjdXVtUm9vdCwgb2Zmc2V0cykKIAotdHlwZWRlZiBzdHJ1 Y3Qgc3BneGxvZ1ZhY3V1bVJlZGlyZWN0Cit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHNw Z3hsb2dWYWN1dW1SZWRpcmVjdAogewogCXVpbnQxNgkJblRvUGxhY2Vob2xkZXI7IC8qIG51bWJl ciBvZiByZWRpcmVjdHMgdG8gbWFrZSBwbGFjZWhvbGRlcnMgKi8KIAlPZmZzZXROdW1iZXIgZmly c3RQbGFjZWhvbGRlcjsJLyogZmlyc3QgcGxhY2Vob2xkZXIgdHVwbGUgdG8gcmVtb3ZlICovCiAJ VHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsJLyogbmV3ZXN0IFhJRCBvZiBy ZW1vdmVkIHJlZGlyZWN0cyAqLwogCWJvb2wJCWlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFuZGxlIHJl Y292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsCiAJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0 YW5kYnkgKi8KKwlwZ19wYWRkaW5nXzEocGdfcGFkMSk7CisJcGdfcGFkZGluZ18yKHBnX3BhZDIp OwogCiAJLyogb2Zmc2V0cyBvZiByZWRpcmVjdCB0dXBsZXMgdG8gbWFrZSBwbGFjZWhvbGRlcnMg Zm9sbG93ICovCiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94YWN0LmggYi9zcmMvaW5jbHVkZS9hY2Nl c3MveGFjdC5oCmluZGV4IGYwYjRkNzk1MDcxLi5kOTYxN2IyMzViZCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3hhY3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGFjdC5oCkBA IC0yMTYsNyArMjE2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU2F2ZWRUcmFuc2FjdGlvbkNoYXJhY3Rl cmlzdGljcwogI2RlZmluZSBYYWN0Q29tcGxldGlvbkZvcmNlU3luY0NvbW1pdCh4aW5mbykgXAog CSgoeGluZm8gJiBYQUNUX0NPTVBMRVRJT05fRk9SQ0VfU1lOQ19DT01NSVQpICE9IDApCiAKLXR5 cGVkZWYgc3RydWN0IHhsX3hhY3RfYXNzaWdubWVudAordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFE RElORyB4bF94YWN0X2Fzc2lnbm1lbnQKIHsKIAlUcmFuc2FjdGlvbklkIHh0b3A7CQkJLyogYXNz aWduZWQgWElEJ3MgdG9wLWxldmVsIFhJRCAqLwogCWludAkJCW5zdWJ4YWN0czsJCS8qIG51bWJl ciBvZiBzdWJ0cmFuc2FjdGlvbiBYSURzICovCkBAIC0yNDIsNyArMjQyLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgeGxfeGFjdF9hc3NpZ25tZW50CiAKIC8qIHN1Yi1yZWNvcmRzIGZvciBjb21taXQvYWJv cnQgKi8KIAotdHlwZWRlZiBzdHJ1Y3QgeGxfeGFjdF94aW5mbwordHlwZWRlZiBzdHJ1Y3QgUEdf Tk9fUEFERElORyB4bF94YWN0X3hpbmZvCiB7CiAJLyoKIAkgKiBFdmVuIHRob3VnaCB3ZSByaWdo dCBub3cgb25seSByZXF1aXJlIHR3byBieXRlcyBvZiBzcGFjZSBpbiB4aW5mbyB3ZQpAQCAtMjUz LDIwICsyNTMsMjAgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfeGFjdF94aW5mbwogCXVpbnQzMgkJeGlu Zm87CiB9IHhsX3hhY3RfeGluZm87CiAKLXR5cGVkZWYgc3RydWN0IHhsX3hhY3RfZGJpbmZvCit0 eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX3hhY3RfZGJpbmZvCiB7CiAJT2lkCQkJZGJJ ZDsJCQkvKiBNeURhdGFiYXNlSWQgKi8KIAlPaWQJCQl0c0lkOwkJCS8qIE15RGF0YWJhc2VUYWJs ZVNwYWNlICovCiB9IHhsX3hhY3RfZGJpbmZvOwogCi10eXBlZGVmIHN0cnVjdCB4bF94YWN0X3N1 YnhhY3RzCit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX3hhY3Rfc3VieGFjdHMKIHsK IAlpbnQJCQluc3VieGFjdHM7CQkvKiBudW1iZXIgb2Ygc3VidHJhbnNhY3Rpb24gWElEcyAqLwog CVRyYW5zYWN0aW9uSWQgc3VieGFjdHNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0geGxfeGFj dF9zdWJ4YWN0czsKICNkZWZpbmUgTWluU2l6ZU9mWGFjdFN1YnhhY3RzIG9mZnNldG9mKHhsX3hh Y3Rfc3VieGFjdHMsIHN1YnhhY3RzKQogCi10eXBlZGVmIHN0cnVjdCB4bF94YWN0X3JlbGZpbGVs b2NhdG9ycwordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF94YWN0X3JlbGZpbGVsb2Nh dG9ycwogewogCWludAkJCW5yZWxzOwkJCS8qIG51bWJlciBvZiByZWxhdGlvbnMgKi8KIAlSZWxG aWxlTG9jYXRvciB4bG9jYXRvcnNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKQEAgLTI4MCw3ICsy ODAsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF94YWN0X3JlbGZpbGVsb2NhdG9ycwogICogZnJvbnRl bmQgY29kZSwgYnV0IHRoZSBXQUwgZm9ybWF0IG5lZWRzIHRvIGJlIHJlYWRhYmxlIGJ5IGZyb250 ZW5kCiAgKiBwcm9ncmFtcy4KICAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxfeGFjdF9zdGF0c19pdGVt Cit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX3hhY3Rfc3RhdHNfaXRlbQogewogCWlu dAkJCWtpbmQ7CiAJT2lkCQkJZGJvaWQ7CkBAIC0yOTMsMzIgKzI5MywzMiBAQCB0eXBlZGVmIHN0 cnVjdCB4bF94YWN0X3N0YXRzX2l0ZW0KIAl1aW50MzIJCW9iamlkX2hpOwogfSB4bF94YWN0X3N0 YXRzX2l0ZW07CiAKLXR5cGVkZWYgc3RydWN0IHhsX3hhY3Rfc3RhdHNfaXRlbXMKK3R5cGVkZWYg c3RydWN0IFBHX05PX1BBRERJTkcgeGxfeGFjdF9zdGF0c19pdGVtcwogewogCWludAkJCW5pdGVt czsKIAl4bF94YWN0X3N0YXRzX2l0ZW0gaXRlbXNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0g eGxfeGFjdF9zdGF0c19pdGVtczsKICNkZWZpbmUgTWluU2l6ZU9mWGFjdFN0YXRzSXRlbXMgb2Zm c2V0b2YoeGxfeGFjdF9zdGF0c19pdGVtcywgaXRlbXMpCiAKLXR5cGVkZWYgc3RydWN0IHhsX3hh Y3RfaW52YWxzCit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX3hhY3RfaW52YWxzCiB7 CiAJaW50CQkJbm1zZ3M7CQkJLyogbnVtYmVyIG9mIHNoYXJlZCBpbnZhbCBtc2dzICovCiAJU2hh cmVkSW52YWxpZGF0aW9uTWVzc2FnZSBtc2dzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9IHhs X3hhY3RfaW52YWxzOwogI2RlZmluZSBNaW5TaXplT2ZYYWN0SW52YWxzIG9mZnNldG9mKHhsX3hh Y3RfaW52YWxzLCBtc2dzKQogCi10eXBlZGVmIHN0cnVjdCB4bF94YWN0X3R3b3BoYXNlCit0eXBl ZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX3hhY3RfdHdvcGhhc2UKIHsKIAlUcmFuc2FjdGlv bklkIHhpZDsKIH0geGxfeGFjdF90d29waGFzZTsKIAotdHlwZWRlZiBzdHJ1Y3QgeGxfeGFjdF9v cmlnaW4KK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfeGFjdF9vcmlnaW4KIHsKIAlY TG9nUmVjUHRyCW9yaWdpbl9sc247CiAJVGltZXN0YW1wVHogb3JpZ2luX3RpbWVzdGFtcDsKIH0g eGxfeGFjdF9vcmlnaW47CiAKLXR5cGVkZWYgc3RydWN0IHhsX3hhY3RfY29tbWl0Cit0eXBlZGVm IHN0cnVjdCBQR19OT19QQURESU5HIHhsX3hhY3RfY29tbWl0CiB7CiAJVGltZXN0YW1wVHogeGFj dF90aW1lOwkJLyogdGltZSBvZiBjb21taXQgKi8KIApAQCAtMzM0LDcgKzMzNCw3IEBAIHR5cGVk ZWYgc3RydWN0IHhsX3hhY3RfY29tbWl0CiB9IHhsX3hhY3RfY29tbWl0OwogI2RlZmluZSBNaW5T aXplT2ZYYWN0Q29tbWl0IChvZmZzZXRvZih4bF94YWN0X2NvbW1pdCwgeGFjdF90aW1lKSArIHNp emVvZihUaW1lc3RhbXBUeikpCiAKLXR5cGVkZWYgc3RydWN0IHhsX3hhY3RfYWJvcnQKK3R5cGVk ZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfeGFjdF9hYm9ydAogewogCVRpbWVzdGFtcFR6IHhh Y3RfdGltZTsJCS8qIHRpbWUgb2YgYWJvcnQgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL3hsb2dfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2ludGVybmFs LmgKaW5kZXggZmJjNWQ3N2FiMzkuLmE4YzA3YjIwZmU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MveGxvZ19pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2lu dGVybmFsLmgKQEAgLTMzLDcgKzMzLDcgQEAKICAqLwogI2RlZmluZSBYTE9HX1BBR0VfTUFHSUMg MHhEMTFCCS8qIGNhbiBiZSB1c2VkIGFzIFdBTCB2ZXJzaW9uIGluZGljYXRvciAqLwogCi10eXBl ZGVmIHN0cnVjdCBYTG9nUGFnZUhlYWRlckRhdGEKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJ TkcgWExvZ1BhZ2VIZWFkZXJEYXRhCiB7CiAJdWludDE2CQl4bHBfbWFnaWM7CQkvKiBtYWdpYyB2 YWx1ZSBmb3IgY29ycmVjdG5lc3MgY2hlY2tzICovCiAJdWludDE2CQl4bHBfaW5mbzsJCS8qIGZs YWcgYml0cywgc2VlIGJlbG93ICovCkBAIC00Nyw2ICs0Nyw3IEBAIHR5cGVkZWYgc3RydWN0IFhM b2dQYWdlSGVhZGVyRGF0YQogCSAqIGhlYWRlci4gIE5vdGUgdGhhdCB0aGUgY29udGludWF0aW9u IGRhdGEgaXNuJ3QgbmVjZXNzYXJpbHkgYWxpZ25lZC4KIAkgKi8KIAl1aW50MzIJCXhscF9yZW1f bGVuOwkvKiB0b3RhbCBsZW4gb2YgcmVtYWluaW5nIGRhdGEgZm9yIHJlY29yZCAqLworCXBnX3Bh ZGRpbmdfNChwZ19wYWQpOwogfSBYTG9nUGFnZUhlYWRlckRhdGE7CiAKICNkZWZpbmUgU2l6ZU9m WExvZ1Nob3J0UEhECU1BWEFMSUdOKHNpemVvZihYTG9nUGFnZUhlYWRlckRhdGEpKQpAQCAtNTgs NyArNTksNyBAQCB0eXBlZGVmIFhMb2dQYWdlSGVhZGVyRGF0YSAqWExvZ1BhZ2VIZWFkZXI7CiAg KiBwYWdlIGhlYWRlci4gIChUaGlzIGlzIG9yZGluYXJpbHkgZG9uZSBqdXN0IGluIHRoZSBmaXJz dCBwYWdlIG9mIGFuCiAgKiBYTE9HIGZpbGUuKQlUaGUgYWRkaXRpb25hbCBmaWVsZHMgc2VydmUg dG8gaWRlbnRpZnkgdGhlIGZpbGUgYWNjdXJhdGVseS4KICAqLwotdHlwZWRlZiBzdHJ1Y3QgWExv Z0xvbmdQYWdlSGVhZGVyRGF0YQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyBYTG9nTG9u Z1BhZ2VIZWFkZXJEYXRhCiB7CiAJWExvZ1BhZ2VIZWFkZXJEYXRhIHN0ZDsJCS8qIHN0YW5kYXJk IGhlYWRlciBmaWVsZHMgKi8KIAl1aW50NjQJCXhscF9zeXNpZDsJCS8qIHN5c3RlbSBpZGVudGlm aWVyIGZyb20gcGdfY29udHJvbCAqLwpAQCAtMjcwLDcgKzI3MSw3IEBAIEJhY2t1cEhpc3RvcnlG aWxlUGF0aChjaGFyICpwYXRoLCBUaW1lTGluZUlEIHRsaSwgWExvZ1NlZ05vIGxvZ1NlZ05vLCBY TG9nUmVjUHRyCiAgKiBJbmZvcm1hdGlvbiBsb2dnZWQgd2hlbiB3ZSBkZXRlY3QgYSBjaGFuZ2Ug aW4gb25lIG9mIHRoZSBwYXJhbWV0ZXJzCiAgKiBpbXBvcnRhbnQgZm9yIEhvdCBTdGFuZGJ5Lgog ICovCi10eXBlZGVmIHN0cnVjdCB4bF9wYXJhbWV0ZXJfY2hhbmdlCit0eXBlZGVmIHN0cnVjdCBQ R19OT19QQURESU5HIHhsX3BhcmFtZXRlcl9jaGFuZ2UKIHsKIAlpbnQJCQlNYXhDb25uZWN0aW9u czsKIAlpbnQJCQltYXhfd29ya2VyX3Byb2Nlc3NlczsKQEAgLTI4MCwyOSArMjgxLDMxIEBAIHR5 cGVkZWYgc3RydWN0IHhsX3BhcmFtZXRlcl9jaGFuZ2UKIAlpbnQJCQl3YWxfbGV2ZWw7CiAJYm9v bAkJd2FsX2xvZ19oaW50czsKIAlib29sCQl0cmFja19jb21taXRfdGltZXN0YW1wOworCXBnX3Bh ZGRpbmdfMihwZ19wYWQpOwogfSB4bF9wYXJhbWV0ZXJfY2hhbmdlOwogCiAvKiBsb2dzIHJlc3Rv cmUgcG9pbnQgKi8KLXR5cGVkZWYgc3RydWN0IHhsX3Jlc3RvcmVfcG9pbnQKK3R5cGVkZWYgc3Ry dWN0IFBHX05PX1BBRERJTkcgeGxfcmVzdG9yZV9wb2ludAogewogCVRpbWVzdGFtcFR6IHJwX3Rp bWU7CiAJY2hhcgkJcnBfbmFtZVtNQVhGTkFNRUxFTl07CiB9IHhsX3Jlc3RvcmVfcG9pbnQ7CiAK IC8qIE92ZXJ3cml0ZSBvZiBwcmlvciBjb250cmVjb3JkICovCi10eXBlZGVmIHN0cnVjdCB4bF9v dmVyd3JpdGVfY29udHJlY29yZAordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9vdmVy d3JpdGVfY29udHJlY29yZAogewogCVhMb2dSZWNQdHIJb3ZlcndyaXR0ZW5fbHNuOwogCVRpbWVz dGFtcFR6IG92ZXJ3cml0ZV90aW1lOwogfSB4bF9vdmVyd3JpdGVfY29udHJlY29yZDsKIAogLyog RW5kIG9mIHJlY292ZXJ5IG1hcmssIHdoZW4gd2UgZG9uJ3QgZG8gYW4gRU5EX09GX1JFQ09WRVJZ IGNoZWNrcG9pbnQgKi8KLXR5cGVkZWYgc3RydWN0IHhsX2VuZF9vZl9yZWNvdmVyeQordHlwZWRl ZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9lbmRfb2ZfcmVjb3ZlcnkKIHsKIAlUaW1lc3RhbXBU eiBlbmRfdGltZTsKIAlUaW1lTGluZUlECVRoaXNUaW1lTGluZUlEOyAvKiBuZXcgVExJICovCiAJ VGltZUxpbmVJRAlQcmV2VGltZUxpbmVJRDsgLyogcHJldmlvdXMgVExJIHdlIGZvcmtlZCBvZmYg ZnJvbSAqLwogCWludAkJCXdhbF9sZXZlbDsKKwlwZ19wYWRkaW5nXzQocGdfcGFkKTsKIH0geGxf ZW5kX29mX3JlY292ZXJ5OwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hs b2dyZWNvcmQuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3JkLmgKaW5kZXggZTg5OTlk M2ZlOTEuLjhjNzQ5OTg2MDdkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3Jl Y29yZC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3JkLmgKQEAgLTM4LDE0ICsz OCwxNCBAQAogICogWExvZ1JlY29yZERhdGFIZWFkZXJMb25nIHN0cnVjdHMgYWxsIGJlZ2luIHdp dGggYSBzaW5nbGUgJ2lkJyBieXRlLiBJdCdzCiAgKiB1c2VkIHRvIGRpc3Rpbmd1aXNoIGJldHdl ZW4gYmxvY2sgcmVmZXJlbmNlcywgYW5kIHRoZSBtYWluIGRhdGEgc3RydWN0cy4KICAqLwotdHlw ZWRlZiBzdHJ1Y3QgWExvZ1JlY29yZAordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyBYTG9n UmVjb3JkCiB7CiAJdWludDMyCQl4bF90b3RfbGVuOwkJLyogdG90YWwgbGVuIG9mIGVudGlyZSBy ZWNvcmQgKi8KIAlUcmFuc2FjdGlvbklkIHhsX3hpZDsJCS8qIHhhY3QgaWQgKi8KIAlYTG9nUmVj UHRyCXhsX3ByZXY7CQkvKiBwdHIgdG8gcHJldmlvdXMgcmVjb3JkIGluIGxvZyAqLwogCXVpbnQ4 CQl4bF9pbmZvOwkJLyogZmxhZyBiaXRzLCBzZWUgYmVsb3cgKi8KIAlSbWdySWQJCXhsX3JtaWQ7 CQkvKiByZXNvdXJjZSBtYW5hZ2VyIGZvciB0aGlzIHJlY29yZCAqLwotCS8qIDIgYnl0ZXMgb2Yg cGFkZGluZyBoZXJlLCBpbml0aWFsaXplIHRvIHplcm8gKi8KKwlwZ19wYWRkaW5nXzIocGdfcGFk KTsKIAlwZ19jcmMzMmMJeGxfY3JjOwkJCS8qIENSQyBmb3IgdGhpcyByZWNvcmQgKi8KIAogCS8q IFhMb2dSZWNvcmRCbG9ja0hlYWRlcnMgYW5kIFhMb2dSZWNvcmREYXRhSGVhZGVyIGZvbGxvdywg bm8gcGFkZGluZyAqLwpAQCAtMTAwLDcgKzEwMCw3IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dSZWNv cmQKICAqIE5vdGUgdGhhdCB3ZSBkb24ndCBhdHRlbXB0IHRvIGFsaWduIHRoZSBYTG9nUmVjb3Jk QmxvY2tIZWFkZXIgc3RydWN0IQogICogU28sIHRoZSBzdHJ1Y3QgbXVzdCBiZSBjb3BpZWQgdG8g YWxpZ25lZCBsb2NhbCBzdG9yYWdlIGJlZm9yZSB1c2UuCiAgKi8KLXR5cGVkZWYgc3RydWN0IFhM b2dSZWNvcmRCbG9ja0hlYWRlcgordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyBYTG9nUmVj b3JkQmxvY2tIZWFkZXIKIHsKIAl1aW50OAkJaWQ7CQkJCS8qIGJsb2NrIHJlZmVyZW5jZSBJRCAq LwogCXVpbnQ4CQlmb3JrX2ZsYWdzOwkJLyogZm9yayB3aXRoaW4gdGhlIHJlbGF0aW9uLCBhbmQg ZmxhZ3MgKi8KQEAgLTExMiw3ICsxMTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nUmVjb3JkQmxv Y2tIZWFkZXIKIAkvKiBCbG9ja051bWJlciBmb2xsb3dzICovCiB9IFhMb2dSZWNvcmRCbG9ja0hl YWRlcjsKIAotI2RlZmluZSBTaXplT2ZYTG9nUmVjb3JkQmxvY2tIZWFkZXIgKG9mZnNldG9mKFhM b2dSZWNvcmRCbG9ja0hlYWRlciwgZGF0YV9sZW5ndGgpICsgc2l6ZW9mKHVpbnQxNikpCisjZGVm aW5lIFNpemVPZlhMb2dSZWNvcmRCbG9ja0hlYWRlciAoc2l6ZW9mKFhMb2dSZWNvcmRCbG9ja0hl YWRlcikpCiAKIC8qCiAgKiBBZGRpdGlvbmFsIGhlYWRlciBpbmZvcm1hdGlvbiB3aGVuIGEgZnVs bC1wYWdlIGltYWdlIGlzIGluY2x1ZGVkCkBAIC0xMzgsMTEgKzEzOCwxMiBAQCB0eXBlZGVmIHN0 cnVjdCBYTG9nUmVjb3JkQmxvY2tIZWFkZXIKICAqIGNvbXByZXNzZWQsIHRoZSBhbW91bnQgb2Yg YmxvY2sgZGF0YSBhY3R1YWxseSBwcmVzZW50IGlzIGxlc3MgdGhhbgogICogQkxDS1NaIC0gdGhl IGxlbmd0aCBvZiAiaG9sZSIgYnl0ZXMgLSB0aGUgbGVuZ3RoIG9mIGV4dHJhIGluZm9ybWF0aW9u LgogICovCi10eXBlZGVmIHN0cnVjdCBYTG9nUmVjb3JkQmxvY2tJbWFnZUhlYWRlcgordHlwZWRl ZiBzdHJ1Y3QgUEdfTk9fUEFERElORyBYTG9nUmVjb3JkQmxvY2tJbWFnZUhlYWRlcgogewogCXVp bnQxNgkJbGVuZ3RoOwkJCS8qIG51bWJlciBvZiBwYWdlIGltYWdlIGJ5dGVzICovCiAJdWludDE2 CQlob2xlX29mZnNldDsJLyogbnVtYmVyIG9mIGJ5dGVzIGJlZm9yZSAiaG9sZSIgKi8KIAl1aW50 OAkJYmltZ19pbmZvOwkJLyogZmxhZyBiaXRzLCBzZWUgYmVsb3cgKi8KKwlwZ19wYWRkaW5nXzEo cGdfcGFkKTsKIAogCS8qCiAJICogSWYgQktQSU1BR0VfSEFTX0hPTEUgYW5kIEJLUElNQUdFX0NP TVBSRVNTRUQoKSwgYW4KQEAgLTE1MSw3ICsxNTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nUmVj b3JkQmxvY2tJbWFnZUhlYWRlcgogfSBYTG9nUmVjb3JkQmxvY2tJbWFnZUhlYWRlcjsKIAogI2Rl ZmluZSBTaXplT2ZYTG9nUmVjb3JkQmxvY2tJbWFnZUhlYWRlcglcCi0JKG9mZnNldG9mKFhMb2dS ZWNvcmRCbG9ja0ltYWdlSGVhZGVyLCBiaW1nX2luZm8pICsgc2l6ZW9mKHVpbnQ4KSkKKwkoc2l6 ZW9mKFhMb2dSZWNvcmRCbG9ja0ltYWdlSGVhZGVyKSkKIAogLyogSW5mb3JtYXRpb24gc3RvcmVk IGluIGJpbWdfaW5mbyAqLwogI2RlZmluZSBCS1BJTUFHRV9IQVNfSE9MRQkJMHgwMQkvKiBwYWdl IGltYWdlIGhhcyAiaG9sZSIgKi8KQEAgLTE3MCw3ICsxNzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBY TG9nUmVjb3JkQmxvY2tJbWFnZUhlYWRlcgogICogRXh0cmEgaGVhZGVyIGluZm9ybWF0aW9uIHVz ZWQgd2hlbiBwYWdlIGltYWdlIGhhcyAiaG9sZSIgYW5kCiAgKiBpcyBjb21wcmVzc2VkLgogICov Ci10eXBlZGVmIHN0cnVjdCBYTG9nUmVjb3JkQmxvY2tDb21wcmVzc0hlYWRlcgordHlwZWRlZiBz dHJ1Y3QgUEdfTk9fUEFERElORyBYTG9nUmVjb3JkQmxvY2tDb21wcmVzc0hlYWRlcgogewogCXVp bnQxNgkJaG9sZV9sZW5ndGg7CS8qIG51bWJlciBvZiBieXRlcyBpbiAiaG9sZSIgKi8KIH0gWExv Z1JlY29yZEJsb2NrQ29tcHJlc3NIZWFkZXI7CkBAIC0yMTAsNyArMjExLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgWExvZ1JlY29yZEJsb2NrQ29tcHJlc3NIZWFkZXIKICAqIChUaGVzZSBzdHJ1Y3RzIGFy ZSBjdXJyZW50bHkgbm90IHVzZWQgaW4gdGhlIGNvZGUsIHRoZXkgYXJlIGhlcmUganVzdCBmb3IK ICAqIGRvY3VtZW50YXRpb24gcHVycG9zZXMpLgogICovCi10eXBlZGVmIHN0cnVjdCBYTG9nUmVj b3JkRGF0YUhlYWRlclNob3J0Cit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIFhMb2dSZWNv cmREYXRhSGVhZGVyU2hvcnQKIHsKIAl1aW50OAkJaWQ7CQkJCS8qIFhMUl9CTE9DS19JRF9EQVRB X1NIT1JUICovCiAJdWludDgJCWRhdGFfbGVuZ3RoOwkvKiBudW1iZXIgb2YgcGF5bG9hZCBieXRl cyAqLwpAQCAtMjE4LDcgKzIxOSw3IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dSZWNvcmREYXRhSGVh ZGVyU2hvcnQKIAogI2RlZmluZSBTaXplT2ZYTG9nUmVjb3JkRGF0YUhlYWRlclNob3J0IChzaXpl b2YodWludDgpICogMikKIAotdHlwZWRlZiBzdHJ1Y3QgWExvZ1JlY29yZERhdGFIZWFkZXJMb25n Cit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIFhMb2dSZWNvcmREYXRhSGVhZGVyTG9uZwog ewogCXVpbnQ4CQlpZDsJCQkJLyogWExSX0JMT0NLX0lEX0RBVEFfTE9ORyAqLwogCS8qIGZvbGxv d2VkIGJ5IHVpbnQzMiBkYXRhX2xlbmd0aCwgdW5hbGlnbmVkICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2NvbnRyb2wuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29u dHJvbC5oCmluZGV4IDc1MDNkYjFhZjUxLi45ZTc0NWIxNDE3NyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19jb250cm9sLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19j b250cm9sLmgKQEAgLTMyLDcgKzMyLDcgQEAKICAqIGEgY29weSBvZiB0aGUgbGF0ZXN0IG9uZSBp biBwZ19jb250cm9sIGZvciBwb3NzaWJsZSBkaXNhc3RlciByZWNvdmVyeS4KICAqIENoYW5naW5n IHRoaXMgc3RydWN0IHJlcXVpcmVzIGEgUEdfQ09OVFJPTF9WRVJTSU9OIGJ1bXAuCiAgKi8KLXR5 cGVkZWYgc3RydWN0IENoZWNrUG9pbnQKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgQ2hl Y2tQb2ludAogewogCVhMb2dSZWNQdHIJcmVkbzsJCQkvKiBuZXh0IFJlY1B0ciBhdmFpbGFibGUg d2hlbiB3ZSBiZWdhbiB0bwogCQkJCQkJCQkgKiBjcmVhdGUgQ2hlY2tQb2ludCAoaS5lLiBSRURP IHN0YXJ0IHBvaW50KSAqLwpAQCAtNDAsOCArNDAsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ2hlY2tQ b2ludAogCVRpbWVMaW5lSUQJUHJldlRpbWVMaW5lSUQ7IC8qIHByZXZpb3VzIFRMSSwgaWYgdGhp cyByZWNvcmQgYmVnaW5zIGEgbmV3CiAJCQkJCQkJCSAqIHRpbWVsaW5lIChlcXVhbHMgVGhpc1Rp bWVMaW5lSUQgb3RoZXJ3aXNlKSAqLwogCWJvb2wJCWZ1bGxQYWdlV3JpdGVzOyAvKiBjdXJyZW50 IGZ1bGxfcGFnZV93cml0ZXMgKi8KKwlwZ19wYWRkaW5nXzEocGdfcGFkMSk7CisJcGdfcGFkZGlu Z18yKHBnX3BhZDIpOwogCWludAkJCXdhbF9sZXZlbDsJCS8qIGN1cnJlbnQgd2FsX2xldmVsICov CiAJYm9vbAkJbG9naWNhbERlY29kaW5nRW5hYmxlZDsgLyogY3VycmVudCBsb2dpY2FsIGRlY29k aW5nIHN0YXR1cyAqLworCXBnX3BhZGRpbmdfMShwZ19wYWQzKTsKKwlwZ19wYWRkaW5nXzIocGdf cGFkNCk7CisJcGdfcGFkZGluZ180KHBnX3BhZDUpOwogCUZ1bGxUcmFuc2FjdGlvbklkIG5leHRY aWQ7CS8qIG5leHQgZnJlZSB0cmFuc2FjdGlvbiBJRCAqLwogCU9pZAkJCW5leHRPaWQ7CQkvKiBu ZXh0IGZyZWUgT0lEICovCiAJTXVsdGlYYWN0SWQgbmV4dE11bHRpOwkJLyogbmV4dCBmcmVlIE11 bHRpWGFjdElkICovCkBAIC02Myw2ICs2OCw3IEBAIHR5cGVkZWYgc3RydWN0IENoZWNrUG9pbnQK IAkgKiBzZXQgdG8gSW52YWxpZFRyYW5zYWN0aW9uSWQuCiAJICovCiAJVHJhbnNhY3Rpb25JZCBv bGRlc3RBY3RpdmVYaWQ7CisJcGdfcGFkZGluZ180KHBnX3BhZDYpOwogfSBDaGVja1BvaW50Owog CiAvKiBYTE9HIGluZm8gdmFsdWVzIGZvciBYTE9HIHJtZ3IgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvc3RvcmFnZV94bG9nLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3N0b3Jh Z2VfeGxvZy5oCmluZGV4IGMxYjJmNzM2NjY5Li44OWIxYmZlZWY2ZSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9zdG9yYWdlX3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3N0b3JhZ2VfeGxvZy5oCkBAIC0zMCw3ICszMCw3IEBACiAjZGVmaW5lIFhMT0dfU01HUl9DUkVB VEUJMHgxMAogI2RlZmluZSBYTE9HX1NNR1JfVFJVTkNBVEUJMHgyMAogCi10eXBlZGVmIHN0cnVj dCB4bF9zbWdyX2NyZWF0ZQordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9zbWdyX2Ny ZWF0ZQogewogCVJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yOwogCUZvcmtOdW1iZXIJZm9ya051bTsK QEAgLTQzLDcgKzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfc21ncl9jcmVhdGUKICNkZWZpbmUg U01HUl9UUlVOQ0FURV9BTEwJCVwKIAkoU01HUl9UUlVOQ0FURV9IRUFQfFNNR1JfVFJVTkNBVEVf Vk18U01HUl9UUlVOQ0FURV9GU00pCiAKLXR5cGVkZWYgc3RydWN0IHhsX3NtZ3JfdHJ1bmNhdGUK K3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfc21ncl90cnVuY2F0ZQogewogCUJsb2Nr TnVtYmVyIGJsa25vOwogCVJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvZGJjb21tYW5kc194bG9nLmggYi9zcmMvaW5jbHVkZS9jb21tYW5k cy9kYmNvbW1hbmRzX3hsb2cuaAppbmRleCA0ZmYzZDBjODJjOS4uMDRjNGYzNWMxNjAgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RiY29tbWFuZHNfeGxvZy5oCisrKyBiL3NyYy9p bmNsdWRlL2NvbW1hbmRzL2RiY29tbWFuZHNfeGxvZy5oCkBAIC0yNiw3ICsyNiw3IEBACiAgKiBT aW5nbGUgV0FMIHJlY29yZCBmb3IgYW4gZW50aXJlIENSRUFURSBEQVRBQkFTRSBvcGVyYXRpb24u IFRoaXMgaXMgdXNlZAogICogYnkgdGhlIEZJTEVfQ09QWSBzdHJhdGVneS4KICAqLwotdHlwZWRl ZiBzdHJ1Y3QgeGxfZGJhc2VfY3JlYXRlX2ZpbGVfY29weV9yZWMKK3R5cGVkZWYgc3RydWN0IFBH X05PX1BBRERJTkcgeGxfZGJhc2VfY3JlYXRlX2ZpbGVfY29weV9yZWMKIHsKIAlPaWQJCQlkYl9p ZDsKIAlPaWQJCQl0YWJsZXNwYWNlX2lkOwpAQCAtMzksMTMgKzM5LDEzIEBAIHR5cGVkZWYgc3Ry dWN0IHhsX2RiYXNlX2NyZWF0ZV9maWxlX2NvcHlfcmVjCiAgKiBXQUxfTE9HIHN0cmF0ZWd5IGlz IHVzZWQuIEVhY2ggaW5kaXZpZHVhbCBibG9jayB3aWxsIGJlIGxvZ2dlZCBzZXBhcmF0ZWx5CiAg KiBhZnRlcndhcmQuCiAgKi8KLXR5cGVkZWYgc3RydWN0IHhsX2RiYXNlX2NyZWF0ZV93YWxfbG9n X3JlYwordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9kYmFzZV9jcmVhdGVfd2FsX2xv Z19yZWMKIHsKIAlPaWQJCQlkYl9pZDsKIAlPaWQJCQl0YWJsZXNwYWNlX2lkOwogfSB4bF9kYmFz ZV9jcmVhdGVfd2FsX2xvZ19yZWM7CiAKLXR5cGVkZWYgc3RydWN0IHhsX2RiYXNlX2Ryb3BfcmVj Cit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2RiYXNlX2Ryb3BfcmVjCiB7CiAJT2lk CQkJZGJfaWQ7CiAJaW50CQkJbnRhYmxlc3BhY2VzOwkvKiBudW1iZXIgb2YgdGFibGVzcGFjZSBJ RHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlX3hsb2cuaCBi L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlX3hsb2cuaAppbmRleCBiMDQ5NWY0MWI0My4u ODE2ODVmNmJmMDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlX3hs b2cuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZV94bG9nLmgKQEAgLTMxLDcg KzMxLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgc2VxdWVuY2VfbWFnaWMKIH0gc2VxdWVuY2VfbWFnaWM7 CiAKIC8qIFNlcXVlbmNlIFdBTCByZWNvcmQgKi8KLXR5cGVkZWYgc3RydWN0IHhsX3NlcV9yZWMK K3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcgeGxfc2VxX3JlYwogewogCVJlbEZpbGVMb2Nh dG9yIGxvY2F0b3I7CiAJLyogU0VRVUVOQ0UgVFVQTEUgREFUQSBGT0xMT1dTIEFUIFRIRSBFTkQg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlc3BhY2UuaCBiL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3RhYmxlc3BhY2UuaAppbmRleCA0ZmE4NWMyOTA2Yi4uZjRlMGJlNDI1 YmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlc3BhY2UuaAorKysgYi9z cmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZXNwYWNlLmgKQEAgLTI3LDEzICsyNywxMyBAQCBleHRl cm4gUEdETExJTVBPUlQgYm9vbCBhbGxvd19pbl9wbGFjZV90YWJsZXNwYWNlczsKICNkZWZpbmUg WExPR19UQkxTUENfQ1JFQVRFCQkweDAwCiAjZGVmaW5lIFhMT0dfVEJMU1BDX0RST1AJCTB4MTAK IAotdHlwZWRlZiBzdHJ1Y3QgeGxfdGJsc3BjX2NyZWF0ZV9yZWMKK3R5cGVkZWYgc3RydWN0IFBH X05PX1BBRERJTkcgeGxfdGJsc3BjX2NyZWF0ZV9yZWMKIHsKIAlPaWQJCQl0c19pZDsKIAljaGFy CQl0c19wYXRoW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07IC8qIG51bGwtdGVybWluYXRlZCBzdHJp bmcgKi8KIH0geGxfdGJsc3BjX2NyZWF0ZV9yZWM7CiAKLXR5cGVkZWYgc3RydWN0IHhsX3RibHNw Y19kcm9wX3JlYwordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF90YmxzcGNfZHJvcF9y ZWMKIHsKIAlPaWQJCQl0c19pZDsKIH0geGxfdGJsc3BjX2Ryb3BfcmVjOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbWVzc2FnZS5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbWVzc2FnZS5oCmluZGV4IGQxYzcyNzU1MDg0Li41NzRhZTQwNzQwNiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbWVzc2FnZS5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL21lc3NhZ2UuaApAQCAtMTcsMTAgKzE3LDEyIEBACiAvKgogICogR2VuZXJpYyBsb2dp Y2FsIGRlY29kaW5nIG1lc3NhZ2Ugd2FsIHJlY29yZC4KICAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxf bG9naWNhbF9tZXNzYWdlCit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX2xvZ2ljYWxf bWVzc2FnZQogewogCU9pZAkJCWRiSWQ7CQkJLyogZGF0YWJhc2UgT2lkIGVtaXR0ZWQgZnJvbSAq LwogCWJvb2wJCXRyYW5zYWN0aW9uYWw7CS8qIGlzIG1lc3NhZ2UgdHJhbnNhY3Rpb25hbD8gKi8K KwlwZ19wYWRkaW5nXzEocGdfcGFkMSk7CisJcGdfcGFkZGluZ18yKHBnX3BhZDIpOwogCVNpemUJ CXByZWZpeF9zaXplOwkvKiBsZW5ndGggb2YgcHJlZml4ICovCiAJU2l6ZQkJbWVzc2FnZV9zaXpl OwkvKiBzaXplIG9mIHRoZSBtZXNzYWdlICovCiAJLyogcGF5bG9hZCwgaW5jbHVkaW5nIG51bGwt dGVybWluYXRlZCBwcmVmaXggb2YgbGVuZ3RoIHByZWZpeF9zaXplICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L29yaWdpbi5oCmluZGV4IGViNDZiNDFiNGI3Li5mN2M3ZWU1OGJkOSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vb3JpZ2luLmgKQEAgLTE1LDE0ICsxNSwxNiBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVh ZGVyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19yZXBsaWNhdGlvbl9vcmlnaW4uaCIKIAotdHlw ZWRlZiBzdHJ1Y3QgeGxfcmVwbG9yaWdpbl9zZXQKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJ TkcgeGxfcmVwbG9yaWdpbl9zZXQKIHsKIAlYTG9nUmVjUHRyCXJlbW90ZV9sc247CiAJUmVwbE9y aWdpbklkIG5vZGVfaWQ7CiAJYm9vbAkJZm9yY2U7CisJcGdfcGFkZGluZ18xKHBnX3BhZDEpOwor CXBnX3BhZGRpbmdfNChwZ19wYWQyKTsKIH0geGxfcmVwbG9yaWdpbl9zZXQ7CiAKLXR5cGVkZWYg c3RydWN0IHhsX3JlcGxvcmlnaW5fZHJvcAordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4 bF9yZXBsb3JpZ2luX2Ryb3AKIHsKIAlSZXBsT3JpZ2luSWQgbm9kZV9pZDsKIH0geGxfcmVwbG9y aWdpbl9kcm9wOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrZGVmcy5oIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrZGVmcy5oCmluZGV4IGI3M2JiNTYxOGU2Li5lYTk1OTgz ZjFlMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrZGVmcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvbG9ja2RlZnMuaApAQCAtNTEsNyArNTEsNyBAQCB0eXBlZGVmIGlu dCBMT0NLTU9ERTsKICNkZWZpbmUgSW5wbGFjZVVwZGF0ZVR1cGxlTG9jayBFeGNsdXNpdmVMb2Nr CiAKIC8qIFdBTCByZXByZXNlbnRhdGlvbiBvZiBhbiBBY2Nlc3NFeGNsdXNpdmVMb2NrIG9uIGEg dGFibGUgKi8KLXR5cGVkZWYgc3RydWN0IHhsX3N0YW5kYnlfbG9jawordHlwZWRlZiBzdHJ1Y3Qg UEdfTk9fUEFERElORyB4bF9zdGFuZGJ5X2xvY2sKIHsKIAlUcmFuc2FjdGlvbklkIHhpZDsJCQkv KiB4aWQgb2YgaG9sZGVyIG9mIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgKi8KIAlPaWQJCQlkYk9pZDsJ CQkvKiBEQiBjb250YWluaW5nIHRhYmxlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3NpbnZhbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWwuaAppbmRleCA0ZDMzZmRj YWJlMS4uZDY2YTA5NWYwZWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFs LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWwuaApAQCAtNTgsMzQgKzU4LDQwIEBA CiAgKiBzZW50IGltbWVkaWF0ZWx5IHdoZW4gdGhlIHVuZGVybHlpbmcgZmlsZSBjaGFuZ2UgaXMg bWFkZS4KICAqLwogCi10eXBlZGVmIHN0cnVjdAordHlwZWRlZiBzdHJ1Y3QgU2hhcmVkSW52YWxD YXRjYWNoZU1zZwogewogCWludDgJCWlkOwkJCQkvKiBjYWNoZSBJRCAtLS0gbXVzdCBiZSBmaXJz dCAqLworCXBnX3BhZGRpbmdfMShwZ19wYWQxKTsKKwlwZ19wYWRkaW5nXzIocGdfcGFkMik7CiAJ T2lkCQkJZGJJZDsJCQkvKiBkYXRhYmFzZSBJRCwgb3IgMCBpZiBhIHNoYXJlZCByZWxhdGlvbiAq LwogCXVpbnQzMgkJaGFzaFZhbHVlOwkJLyogaGFzaCB2YWx1ZSBvZiBrZXkgZm9yIHRoaXMgY2F0 Y2FjaGUgKi8KIH0gU2hhcmVkSW52YWxDYXRjYWNoZU1zZzsKIAogI2RlZmluZSBTSEFSRURJTlZB TENBVEFMT0dfSUQJKC0xKQogCi10eXBlZGVmIHN0cnVjdAordHlwZWRlZiBzdHJ1Y3QgU2hhcmVk SW52YWxDYXRhbG9nTXNnCiB7CiAJaW50OAkJaWQ7CQkJCS8qIHR5cGUgZmllbGQgLS0tIG11c3Qg YmUgZmlyc3QgKi8KKwlwZ19wYWRkaW5nXzEocGdfcGFkMSk7CisJcGdfcGFkZGluZ18yKHBnX3Bh ZDIpOwogCU9pZAkJCWRiSWQ7CQkJLyogZGF0YWJhc2UgSUQsIG9yIDAgaWYgYSBzaGFyZWQgY2F0 YWxvZyAqLwogCU9pZAkJCWNhdElkOwkJCS8qIElEIG9mIGNhdGFsb2cgd2hvc2UgY29udGVudHMg YXJlIGludmFsaWQgKi8KIH0gU2hhcmVkSW52YWxDYXRhbG9nTXNnOwogCiAjZGVmaW5lIFNIQVJF RElOVkFMUkVMQ0FDSEVfSUQJKC0yKQogCi10eXBlZGVmIHN0cnVjdAordHlwZWRlZiBzdHJ1Y3Qg U2hhcmVkSW52YWxSZWxjYWNoZU1zZwogewogCWludDgJCWlkOwkJCQkvKiB0eXBlIGZpZWxkIC0t LSBtdXN0IGJlIGZpcnN0ICovCisJcGdfcGFkZGluZ18xKHBnX3BhZDEpOworCXBnX3BhZGRpbmdf MihwZ19wYWQyKTsKIAlPaWQJCQlkYklkOwkJCS8qIGRhdGFiYXNlIElELCBvciAwIGlmIGEgc2hh cmVkIHJlbGF0aW9uICovCiAJT2lkCQkJcmVsSWQ7CQkJLyogcmVsYXRpb24gSUQsIG9yIDAgaWYg d2hvbGUgcmVsY2FjaGUgKi8KIH0gU2hhcmVkSW52YWxSZWxjYWNoZU1zZzsKIAogI2RlZmluZSBT SEFSRURJTlZBTFNNR1JfSUQJCSgtMykKIAotdHlwZWRlZiBzdHJ1Y3QKK3R5cGVkZWYgc3RydWN0 IFNoYXJlZEludmFsU21nck1zZwogewogCS8qIG5vdGU6IGZpZWxkIGxheW91dCBjaG9zZW4gdG8g cGFjayBpbnRvIDE2IGJ5dGVzICovCiAJaW50OAkJaWQ7CQkJCS8qIHR5cGUgZmllbGQgLS0tIG11 c3QgYmUgZmlyc3QgKi8KQEAgLTk2LDMyICsxMDIsMzggQEAgdHlwZWRlZiBzdHJ1Y3QKIAogI2Rl ZmluZSBTSEFSRURJTlZBTFJFTE1BUF9JRAkoLTQpCiAKLXR5cGVkZWYgc3RydWN0Cit0eXBlZGVm IHN0cnVjdCBTaGFyZWRJbnZhbFJlbG1hcE1zZwogewogCWludDgJCWlkOwkJCQkvKiB0eXBlIGZp ZWxkIC0tLSBtdXN0IGJlIGZpcnN0ICovCisJcGdfcGFkZGluZ18xKHBnX3BhZDEpOworCXBnX3Bh ZGRpbmdfMihwZ19wYWQyKTsKIAlPaWQJCQlkYklkOwkJCS8qIGRhdGFiYXNlIElELCBvciAwIGZv ciBzaGFyZWQgY2F0YWxvZ3MgKi8KIH0gU2hhcmVkSW52YWxSZWxtYXBNc2c7CiAKICNkZWZpbmUg U0hBUkVESU5WQUxTTkFQU0hPVF9JRAkoLTUpCiAKLXR5cGVkZWYgc3RydWN0Cit0eXBlZGVmIHN0 cnVjdCBTaGFyZWRJbnZhbFNuYXBzaG90TXNnCiB7CiAJaW50OAkJaWQ7CQkJCS8qIHR5cGUgZmll bGQgLS0tIG11c3QgYmUgZmlyc3QgKi8KKwlwZ19wYWRkaW5nXzEocGdfcGFkMSk7CisJcGdfcGFk ZGluZ18yKHBnX3BhZDIpOwogCU9pZAkJCWRiSWQ7CQkJLyogZGF0YWJhc2UgSUQsIG9yIDAgaWYg YSBzaGFyZWQgcmVsYXRpb24gKi8KIAlPaWQJCQlyZWxJZDsJCQkvKiByZWxhdGlvbiBJRCAqLwog fSBTaGFyZWRJbnZhbFNuYXBzaG90TXNnOwogCiAjZGVmaW5lIFNIQVJFRElOVkFMUkVMU1lOQ19J RAkoLTYpCiAKLXR5cGVkZWYgc3RydWN0Cit0eXBlZGVmIHN0cnVjdCBTaGFyZWRJbnZhbFJlbFN5 bmNNc2cKIHsKIAlpbnQ4CQlpZDsJCQkJLyogdHlwZSBmaWVsZCAtLS0gbXVzdCBiZSBmaXJzdCAq LworCXBnX3BhZGRpbmdfMShwZ19wYWQxKTsKKwlwZ19wYWRkaW5nXzIocGdfcGFkMik7CiAJT2lk CQkJZGJJZDsJCQkvKiBkYXRhYmFzZSBJRCAqLwogCU9pZAkJCXJlbGlkOwkJCS8qIHJlbGF0aW9u IElELCBvciAwIGlmIHdob2xlCiAJCQkJCQkJCSAqIFJlbGF0aW9uU3luY0NhY2hlICovCiB9IFNo YXJlZEludmFsUmVsU3luY01zZzsKIAotdHlwZWRlZiB1bmlvbgordHlwZWRlZiB1bmlvbiBTaGFy ZWRJbnZhbGlkYXRpb25NZXNzYWdlCiB7CiAJaW50OAkJaWQ7CQkJCS8qIHR5cGUgZmllbGQgLS0t IG11c3QgYmUgZmlyc3QgKi8KIAlTaGFyZWRJbnZhbENhdGNhY2hlTXNnIGNjOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5ZGVmcy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9zdGFuZGJ5ZGVmcy5oCmluZGV4IDIzMWQyNTFmZDUxLi5jMTA1M2NiZGYyMiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5ZGVmcy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2Uvc3RhbmRieWRlZnMuaApAQCAtMzUsNyArMzUsNyBAQCBleHRlcm4gdm9pZCBzdGFuZGJ5 X2Rlc2NfaW52YWxpZGF0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwKICNkZWZpbmUgWExPR19SVU5OSU5H X1hBQ1RTCQkJMHgxMAogI2RlZmluZSBYTE9HX0lOVkFMSURBVElPTlMJCQkweDIwCiAKLXR5cGVk ZWYgc3RydWN0IHhsX3N0YW5kYnlfbG9ja3MKK3R5cGVkZWYgc3RydWN0IFBHX05PX1BBRERJTkcg eGxfc3RhbmRieV9sb2NrcwogewogCWludAkJCW5sb2NrczsJCQkvKiBudW1iZXIgb2YgZW50cmll cyBpbiBsb2NrcyBhcnJheSAqLwogCXhsX3N0YW5kYnlfbG9jayBsb2Nrc1tGTEVYSUJMRV9BUlJB WV9NRU1CRVJdOwpAQCAtNDQsMTEgKzQ0LDEzIEBAIHR5cGVkZWYgc3RydWN0IHhsX3N0YW5kYnlf bG9ja3MKIC8qCiAgKiBXaGVuIHdlIHdyaXRlIHJ1bm5pbmcgeGFjdCBkYXRhIHRvIFdBTCwgd2Ug dXNlIHRoaXMgc3RydWN0dXJlLgogICovCi10eXBlZGVmIHN0cnVjdCB4bF9ydW5uaW5nX3hhY3Rz Cit0eXBlZGVmIHN0cnVjdCBQR19OT19QQURESU5HIHhsX3J1bm5pbmdfeGFjdHMKIHsKIAlpbnQJ CQl4Y250OwkJCS8qICMgb2YgeGFjdCBpZHMgaW4geGlkc1tdICovCiAJaW50CQkJc3VieGNudDsJ CS8qICMgb2Ygc3VieGFjdCBpZHMgaW4geGlkc1tdICovCiAJYm9vbAkJc3VieGlkX292ZXJmbG93 OwkvKiBzbmFwc2hvdCBvdmVyZmxvd2VkLCBzdWJ4aWRzIG1pc3NpbmcgKi8KKwlwZ19wYWRkaW5n XzEocGdfcGFkMSk7CisJcGdfcGFkZGluZ18yKHBnX3BhZDIpOwogCVRyYW5zYWN0aW9uSWQgbmV4 dFhpZDsJCS8qIHhpZCBmcm9tIFRyYW5zYW1WYXJpYWJsZXMtPm5leHRYaWQgKi8KIAlUcmFuc2Fj dGlvbklkIG9sZGVzdFJ1bm5pbmdYaWQ7IC8qICpub3QqIG9sZGVzdFhtaW4gKi8KIAlUcmFuc2Fj dGlvbklkIGxhdGVzdENvbXBsZXRlZFhpZDsJLyogc28gd2UgY2FuIHNldCB4bWF4ICovCkBAIC02 MCwxMSArNjIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfcnVubmluZ194YWN0cwogICogSW52YWxp ZGF0aW9ucyBmb3Igc3RhbmRieSwgY3VycmVudGx5IG9ubHkgd2hlbiB0cmFuc2FjdGlvbnMgd2l0 aG91dCBhbgogICogYXNzaWduZWQgeGlkIGNvbW1pdC4KICAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxf aW52YWxpZGF0aW9ucwordHlwZWRlZiBzdHJ1Y3QgUEdfTk9fUEFERElORyB4bF9pbnZhbGlkYXRp b25zCiB7CiAJT2lkCQkJZGJJZDsJCQkvKiBNeURhdGFiYXNlSWQgKi8KIAlPaWQJCQl0c0lkOwkJ CS8qIE15RGF0YWJhc2VUYWJsZVNwYWNlICovCiAJYm9vbAkJcmVsY2FjaGVJbml0RmlsZUludmFs OwkvKiBpbnZhbGlkYXRlIHJlbGNhY2hlIGluaXQgZmlsZXMgKi8KKwlwZ19wYWRkaW5nXzEocGdf cGFkMSk7CisJcGdfcGFkZGluZ18yKHBnX3BhZDIpOwogCWludAkJCW5tc2dzOwkJCS8qIG51bWJl ciBvZiBzaGFyZWQgaW52YWwgbXNncyAqLwogCVNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgbXNn c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwogfSB4bF9pbnZhbGlkYXRpb25zOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsbWFwcGVyLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWxt YXBwZXIuaAppbmRleCBhYTkyMjZlZGFjMy4uZTYwZjQ5NWQ1ZDQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3V0aWxzL3JlbG1hcHBlci5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbG1hcHBl ci5oCkBAIC0yNCw3ICsyNCw3IEBACiAKICNkZWZpbmUgWExPR19SRUxNQVBfVVBEQVRFCQkweDAw CiAKLXR5cGVkZWYgc3RydWN0IHhsX3JlbG1hcF91cGRhdGUKK3R5cGVkZWYgc3RydWN0IFBHX05P X1BBRERJTkcgeGxfcmVsbWFwX3VwZGF0ZQogewogCU9pZAkJCWRiaWQ7CQkJLyogZGF0YWJhc2Ug SUQsIG9yIDAgZm9yIHNoYXJlZCBtYXAgKi8KIAlPaWQJCQl0c2lkOwkJCS8qIGRhdGFiYXNlJ3Mg dGFibGVzcGFjZSwgb3IgcGdfZ2xvYmFsICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfY3VzdG9tX3JtZ3JzL3Rlc3RfY3VzdG9tX3JtZ3JzLmMgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfY3VzdG9tX3JtZ3JzL3Rlc3RfY3VzdG9tX3JtZ3JzLmMKaW5kZXggNjMzMzY2MWU0Mzcu LjJjZDJlZTBkZTE0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY3VzdG9tX3Jt Z3JzL3Rlc3RfY3VzdG9tX3JtZ3JzLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2N1c3Rv bV9ybWdycy90ZXN0X2N1c3RvbV9ybWdycy5jCkBAIC0yOSw3ICsyOSw3IEBAIFBHX01PRFVMRV9N QUdJQzsKIC8qCiAgKiB0ZXN0X2N1c3RvbV9ybWdycyBXQUwgcmVjb3JkIG1lc3NhZ2UuCiAgKi8K LXR5cGVkZWYgc3RydWN0IHhsX3Rlc3RjdXN0b21ybWdyc19tZXNzYWdlCit0eXBlZGVmIHN0cnVj dCBQR19OT19QQURESU5HIHhsX3Rlc3RjdXN0b21ybWdyc19tZXNzYWdlCiB7CiAJU2l6ZQkJbWVz c2FnZV9zaXplOwkvKiBzaXplIG9mIHRoZSBtZXNzYWdlICovCiAJY2hhcgkJbWVzc2FnZVtGTEVY SUJMRV9BUlJBWV9NRU1CRVJdOyAvKiBwYXlsb2FkICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWNvdmVyeS90LzAzOV9lbmRfb2Zfd2FsLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzlfZW5k X29mX3dhbC5wbAppbmRleCBmNDZkMDg5YTBmYi4uNzY2ZTY2MDk4OGUgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDM5X2VuZF9vZl93YWwucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wMzlfZW5kX29mX3dhbC5wbApAQCAtMTAwLDEwICsxMDAsMTEgQEAgc3ViIGJ1aWxkX3Bh Z2VfaGVhZGVyCiAJIyBJIGZvciB4bHBfdGxpCiAJIyBJSSBmb3IgeGxwX3BhZ2VhZGRyCiAJIyBJ IGZvciB4bHBfcmVtX2xlbgotCXJldHVybiBwYWNrKCJTU0lJSUkiLAorCSMgSSBmb3IgcGdfcGFk CisJcmV0dXJuIHBhY2soIlNTSUlJSUkiLAogCQkkeGxwX21hZ2ljLCAkeGxwX2luZm8sICR4bHBf dGxpLAogCQkkQklHX0VORElBTiA/IDAgICAgICAgICAgICAgOiAkeGxwX3BhZ2VhZGRyLAotCQkk QklHX0VORElBTiA/ICR4bHBfcGFnZWFkZHIgOiAwLCAkeGxwX3JlbV9sZW4pOworCQkkQklHX0VO RElBTiA/ICR4bHBfcGFnZWFkZHIgOiAwLCAkeGxwX3JlbV9sZW4sIDApOwogfQogCiAjIFNldHVw IGEgbmV3IG5vZGUuICBUaGUgY29uZmlndXJhdGlvbiBjaG9zZW4gaGVyZSBtaW5pbWl6ZXMgdGhl IG51bWJlcgotLSAKMi40My4wCgo= --0000000000000f63ed064d3cbf06--