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.94.2) (envelope-from ) id 1tJAZy-001I4J-SR for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Dec 2024 12:03:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tJAZv-0065uF-I4 for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Dec 2024 12:03:32 +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.94.2) (envelope-from ) id 1tJAZu-0065u7-VV for pgsql-hackers@lists.postgresql.org; Thu, 05 Dec 2024 12:03:32 +0000 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tJAZs-001B9h-2R for pgsql-hackers@postgresql.org; Thu, 05 Dec 2024 12:03:31 +0000 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-7fcf59a41ddso519135a12.3 for ; Thu, 05 Dec 2024 04:03:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733400206; x=1734005006; 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=t++wq9vTJr5l5t6fuvZecYoVpPF/BuOMYy2aFqLt3MY=; b=ivXSHExjMJsNh/CqbV9VLthUlbtiSE0DczdxKH5jX35DY0c6eT6/W0ggbVJpWrSW2P UgZ4CWdUrolG4GdjSG7eExdbOsn9uv1tMgdZmhEHbgm/CLFNFD0Jx6sUR5Rgg9IAUfrb /ea81xeUcMvcD7ysIAIJhydFTKdqqvAzkf8BxCg3yCSGt+NK57KMN1qErSKEUtCXeHzf CjKj5W3DCwr31ID888UBscQyVTRdmJ7D8zJEcUH5xHcrmaJvtAXdv74HWJHDcxkQYy4K xouo33DUOTslTMDspubBSpwNx6f6WmsuxRlJpUw5Yr+DZdKG1iA912uphcRCjhGUO+t/ 0QGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733400206; x=1734005006; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=t++wq9vTJr5l5t6fuvZecYoVpPF/BuOMYy2aFqLt3MY=; b=B5CF6Q0XxTTdku38Lky+TGr1yuROZPGU36nxEdlarbkJH5gnEFMk4IY3AHl00XNtJh UxPyZchz1dDsP6afOFEItQomkhWlJHgls23+NVZFPuElaVoFZw8kGucl1KWi+ZdfjdLp qppJwYNuKHdUqCy3eEoHk3u38MXbVsy79sdAq5xB0ZlqDHDXIEOcbwRNxts3rAW+pFoY kiu8Ulr7AJSrw9X/JOPKGxlRqBOigHAQ22ey+f0kTDg8m3I2nvDDQTteLxPFXZ8weqAJ G8kWLEZnI81/KIBHTpRWo2X+sbbq8iBzgtGpfS7z2gCnU48CSp57gsvgWv0dKpC3wrVq cQlw== X-Forwarded-Encrypted: i=1; AJvYcCVo6CLo26uUyeCmTj2gIWRqoGvX+7LAsb4UBV23VUgT3QE0RMVWMqEqK3APp0i7K2nR6dSBXIdsrPsXjdAD@postgresql.org X-Gm-Message-State: AOJu0YzuNQdGUZVAbfsPuGlzNBO1bzuQvnjyH5HQKduyIHliGG56LU+8 isJeOvHpg713uXpiJWCAnDgFiD5YZG0Z2Dh5ns5tnrOuMbAuHbusVBYoSJw3tPQIfPmRkguW71u tuZkefgk9jmwpbZ5pQJC6P6+h650= X-Gm-Gg: ASbGnct9ed9xw10TX3qvQ+6mv7wPPZKE6N2GQ/n5OugySOuE2EwSRn4bDO1fmo/sasB q4ucg0UjyJRyq9Tos/wp9BF5TsIHExbjp X-Google-Smtp-Source: AGHT+IGg2WnNug/2pczn4sm8UWr8PmLwEATznCcQvXO6wGw75bSFP5vzYsBPSRy457tqPP5oQXmHNeT1buMVbveCavU= X-Received: by 2002:a17:90b:1e4f:b0:2ee:c9b6:4c42 with SMTP id 98e67ed59e1d1-2ef011fe81cmr16395433a91.16.1733400206077; Thu, 05 Dec 2024 04:03:26 -0800 (PST) MIME-Version: 1.0 References: <54c35fb9-da3a-4754-ab8c-46ed0b612465@vondra.me> In-Reply-To: From: Amit Langote Date: Thu, 5 Dec 2024 21:03:09 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Tomas Vondra Cc: Robert Haas , Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="00000000000089c291062884af28" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000089c291062884af28 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Dec 4, 2024 at 10:34=E2=80=AFPM Amit Langote wrote: > I'll post the updated patches tomorrow. Here is an updated set. I said that Assert suffices in ExecInitPartitionPruning() but on further thought and after finding the following in ExecInitExprRec() that an elog() won't hurt. /* planner messed up */ elog(ERROR, "Aggref found in non-Agg plan node"); Like this: + /* Obtain the pruneinfo we need. */ + pruneinfo =3D list_nth_node(PartitionPruneInfo, estate->es_part_prune_= infos, + part_prune_index); + + /* Its relids better match the plan node's or the planner messed up. *= / + if (!bms_equal(relids, pruneinfo->relids)) + elog(ERROR, "wrong pruneinfo with relids=3D%s found at part_prune_index=3D%d contained in plan node with relids=3D%s", + bmsToString(pruneinfo->relids), part_prune_index, + bmsToString(relids)); I've merged what were 0004 and 0005 in v57 together because they would be eventually committed together and I wanted to write a unified commit message. One notable change is that I've renamed ExecutorStartExt() to ExecutorStartCachedPlan() and changed its callers to only call it if a CachedPlan is available, calling ExecutorStart() otherwise. I'm still looking at Tomas's perf numbers and haven't confirmed some of the findings myself. -- Thanks, Amit Langote --00000000000089c291062884af28 Content-Type: application/octet-stream; name="v58-0001-Move-PartitionPruneInfo-out-of-plan-nodes-into-P.patch" Content-Disposition: attachment; filename="v58-0001-Move-PartitionPruneInfo-out-of-plan-nodes-into-P.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4b9ol2b0 RnJvbSAwYzg2NzE4MDM4NTM0MjdkYzQzYzFlMmY1ODI0MGE2YTkyNWZhYzRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNCBEZWMgMjAyNCAxNjoxNjoyOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjU4 IDEvNF0gTW92ZSBQYXJ0aXRpb25QcnVuZUluZm8gb3V0IG9mIHBsYW4gbm9kZXMgaW50bwogUGxh bm5lZFN0bXQKClRoaXMgY2hhbmdlIG1vdmVzIFBhcnRpdGlvblBydW5lSW5mbyBmcm9tIGluZGl2 aWR1YWwgcGxhbiBub2RlcyB0bwpQbGFubmVkU3RtdCwgZW5hYmxpbmcgcnVudGltZSBpbml0aWFs IHBydW5pbmcgdG8gYmUgcGVyZm9ybWVkIGFjcm9zcwp0aGUgZW50aXJlIHBsYW4gdHJlZSB3aXRo b3V0IHRyYXZlcnNpbmcgaXQgdG8gZmluZCBub2RlcyBjb250YWluaW5nClBhcnRpdGlvblBydW5l SW5mb3MuCgpUaGUgUGFydGl0aW9uUHJ1bmVJbmZvIHBvaW50ZXIgZmllbGRzIGluIEFwcGVuZCBh bmQgTWVyZ2VBcHBlbmQgbm9kZXMKaGF2ZSBiZWVuIHJlcGxhY2VkIHdpdGggYW4gaW50ZWdlciBp bmRleCB0aGF0IHBvaW50cyB0byBhIGxpc3Qgb2YKUGFydGl0aW9uUHJ1bmVJbmZvcyB3aXRoaW4g UGxhbm5lZFN0bXQsIHdoaWNoIG5vdyBob2xkcyB0aGUKUGFydGl0aW9uUHJ1bmVJbmZvcyBmb3Ig YWxsIHN1YnF1ZXJpZXMuCgpBIGJpdG1hcHNldCBmaWVsZCBoYXMgYmVlbiBhZGRlZCB0byBQYXJ0 aXRpb25QcnVuZUluZm8gdG8gc3RvcmUgdGhlIFJUCmluZGV4ZXMgdGhhdCBjb3JyZXNwb25kIHRv IHRoZSBhcHByZWxpZHMgZmllbGQgaW4gQXBwZW5kIG9yCk1lcmdlQXBwZW5kLiBUaGlzIGVuc3Vy ZXMgdGhhdCB0aGUgZXhlY3V0aW9uIHBydW5pbmcgbG9naWMKY3Jvc3MtY2hlY2tzIHRoYXQgaXQg b3BlcmF0ZXMgb24gdGhlIGNvcnJlY3QgcGxhbiBub2RlLgoKRHVwbGljYXRlZCBjb2RlIGluIHNl dF9hcHBlbmRfcmVmZXJlbmNlcygpIGFuZApzZXRfbWVyZ2VhcHBlbmRfcmVmZXJlbmNlcygpIGhh cyBiZWVuIG1vdmVkIHRvIGEgbmV3IGZ1bmN0aW9uLApyZWdpc3Rlcl9wcnVuZWluZm8oKSwgd2hp Y2ggYm90aCB1cGRhdGVzIHRoZSBSVCBpbmRleGVzIGJ5IGFkZGluZwpydG9mZnNldCBhbmQgYWRk cyB0aGUgUGFydGl0aW9uUHJ1bmVJbmZvIHRvIHRoZSBnbG9iYWwgbGlzdCBpbgpQbGFubmVyR2xv YmFsLgoKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJhClJldmlld2VkLWJ5OiBSb2JlcnQgSGFh cwpSZXZpZXdlZC1ieTogVG9tYXMgVm9uZHJhCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3b29pdEVFcGJLQjBPX21nQG1h aWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAg IHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgIHwgIDEgKwog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgIHwgMTcgKysrKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICB8ICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTWVyZ2VBcHBlbmQuYyAgfCAgNSArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3Jl YXRlcGxhbi5jIHwgMjMgKysrLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgIHwg ODUgKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRwcnVuZS5jICAgIHwgMTkgKysrKy0tCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0 aW9uLmggICAgfCAgMyArLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAg IHwgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggICAgICAgICAgIHwgIDYgKysK IHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICB8IDE2ICsrKy0tCiBzcmMv aW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggICAgfCAgOCArLS0KIDE1IGZpbGVzIGNo YW5nZWQsIDEzMSBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYwppbmRleCA1Y2E4NTZmZDI3Li5iNDBmZTM4MTc4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKQEAgLTg1Niw2ICs4NTYsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywg aW50IGVmbGFncykKIAlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFu bmVkc3RtdC0+cGVybUluZm9zKTsKIAogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwbGFubmVk c3RtdDsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBwbGFubmVkc3RtdC0+cGFydFBy dW5lSW5mb3M7CiAKIAkvKgogCSAqIE5leHQsIGJ1aWxkIHRoZSBFeGVjUm93TWFyayBhcnJheSBm cm9tIHRoZSBQbGFuUm93TWFyayhzKSwgaWYgYW55LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxs ZWwuYwppbmRleCBiZmIzNDE5ZWZiLi5iMDFhMmZkZmRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UGFyYWxsZWwuYwpAQCAtMTgxLDYgKzE4MSw3IEBAIEV4ZWNTZXJpYWxpemVQbGFuKFBsYW4gKnBs YW4sIEVTdGF0ZSAqZXN0YXRlKQogCXBzdG10LT5kZXBlbmRzT25Sb2xlID0gZmFsc2U7CiAJcHN0 bXQtPnBhcmFsbGVsTW9kZU5lZWRlZCA9IGZhbHNlOwogCXBzdG10LT5wbGFuVHJlZSA9IHBsYW47 CisJcHN0bXQtPnBhcnRQcnVuZUluZm9zID0gZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zOwog CXBzdG10LT5ydGFibGUgPSBlc3RhdGUtPmVzX3JhbmdlX3RhYmxlOwogCXBzdG10LT5wZXJtSW5m b3MgPSBlc3RhdGUtPmVzX3J0ZXBlcm1pbmZvczsKIAlwc3RtdC0+cmVzdWx0UmVsYXRpb25zID0g TklMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDc2NTE4ODYyMjkuLjk1 MGZhMzI4OWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTE3ODYsNiAr MTc4Niw5IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3Ms IEF0dHJNYXAgKmF0dHJNYXApCiAgKgkJSW5pdGlhbGl6ZSBkYXRhIHN0cnVjdHVyZSBuZWVkZWQg Zm9yIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGFuZAogICoJCWRvIGluaXRpYWwgcHJ1bmlu ZyBpZiBuZWVkZWQKICAqCisgKiAncmVsaWRzJyBpZGVudGlmaWVzIHRoZSByZWxhdGlvbiB0byB3 aGljaCBib3RoIHRoZSBwYXJlbnQgcGxhbiBhbmQgdGhlCisgKiBQYXJ0aXRpb25QcnVuZUluZm8g Z2l2ZW4gYnkgJ3BhcnRfcHJ1bmVfaW5kZXgnIGJlbG9uZy4KKyAqCiAgKiBPbiByZXR1cm4sICpp bml0aWFsbHlfdmFsaWRfc3VicGxhbnMgaXMgYXNzaWduZWQgdGhlIHNldCBvZiBpbmRleGVzIG9m CiAgKiBjaGlsZCBzdWJwbGFucyB0aGF0IG11c3QgYmUgaW5pdGlhbGl6ZWQgYWxvbmcgd2l0aCB0 aGUgcGFyZW50IHBsYW4gbm9kZS4KICAqIEluaXRpYWwgcHJ1bmluZyBpcyBwZXJmb3JtZWQgaGVy ZSBpZiBuZWVkZWQgYW5kIGluIHRoYXQgY2FzZSBvbmx5IHRoZQpAQCAtMTc5OCwxMSArMTgwMSwy MyBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRy TWFwICphdHRyTWFwKQogUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCiBFeGVjSW5pdFBhcnRpdGlvblBy dW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMs Ci0JCQkJCQkgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkgaW50IHBhcnRf cHJ1bmVfaW5kZXgsCisJCQkJCQkgQml0bWFwc2V0ICpyZWxpZHMsCiAJCQkJCQkgQml0bWFwc2V0 ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKQogewogCVBhcnRpdGlvblBydW5lU3RhdGUgKnBy dW5lc3RhdGU7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBwbGFuc3RhdGUtPnN0YXRlOworCVBhcnRp dGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvOworCisJLyogT2J0YWluIHRoZSBwcnVuZWluZm8gd2Ug bmVlZC4gKi8KKwlwcnVuZWluZm8gPSBsaXN0X250aF9ub2RlKFBhcnRpdGlvblBydW5lSW5mbywg ZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zLAorCQkJCQkJCSAgcGFydF9wcnVuZV9pbmRleCk7 CisKKwkvKiBJdHMgcmVsaWRzIGJldHRlciBtYXRjaCB0aGUgcGxhbiBub2RlJ3Mgb3IgdGhlIHBs YW5uZXIgbWVzc2VkIHVwLiAqLworCWlmICghYm1zX2VxdWFsKHJlbGlkcywgcHJ1bmVpbmZvLT5y ZWxpZHMpKQorCQllbG9nKEVSUk9SLCAid3JvbmcgcHJ1bmVpbmZvIHdpdGggcmVsaWRzPSVzIGZv dW5kIGF0IHBhcnRfcHJ1bmVfaW5kZXg9JWQgY29udGFpbmVkIGluIHBsYW4gbm9kZSB3aXRoIHJl bGlkcz0lcyIsCisJCQkgYm1zVG9TdHJpbmcocHJ1bmVpbmZvLT5yZWxpZHMpLCBwYXJ0X3BydW5l X2luZGV4LAorCQkJIGJtc1RvU3RyaW5nKHJlbGlkcykpOwogCiAJLyogV2UgbWF5IG5lZWQgYW4g ZXhwcmVzc2lvbiBjb250ZXh0IHRvIGV2YWx1YXRlIHBhcnRpdGlvbiBleHBycyAqLwogCUV4ZWNB c3NpZ25FeHByQ29udGV4dChlc3RhdGUsIHBsYW5zdGF0ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCmluZGV4IDc0MGU4ZmIxNDguLmJjOTA1YTBjZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCkBAIC0xMTgsNiArMTE4LDcgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lkKQogCWVzdGF0 ZS0+ZXNfcm93bWFya3MgPSBOVUxMOwogCWVzdGF0ZS0+ZXNfcnRlcGVybWluZm9zID0gTklMOwog CWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBOVUxMOworCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9p bmZvcyA9IE5JTDsKIAogCWVzdGF0ZS0+ZXNfanVua0ZpbHRlciA9IE5VTEw7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVBcHBlbmQuYwppbmRleCBjYTBmNTRkNjc2Li5kZTdlYmFiNWMyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xMzQsNyArMTM0LDcgQEAgRXhlY0luaXRBcHBlbmQoQXBw ZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhcHBlbmRzdGF0ZS0+YXNf YmVndW4gPSBmYWxzZTsKIAogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVu YWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0JaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5m byAhPSBOVUxMKQorCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCiAJewogCQlQYXJ0 aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCkBAIC0xNDUsNyArMTQ1LDggQEAgRXhlY0lu aXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICov CiAJCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJmFwcGVuZHN0YXRlLT5w cywKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyksCi0JCQkJCQkJ CQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAorCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1 bmVfaW5kZXgsCisJCQkJCQkJCQkJCSAgbm9kZS0+YXBwcmVsaWRzLAogCQkJCQkJCQkJCQkgICZ2 YWxpZHN1YnBsYW5zKTsKIAkJYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0 ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCBlMWI5Yjk4NGE3Li4zZWQ5MTgwOGRkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtODIsNyArODIsNyBAQCBF eGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAltZXJnZXN0YXRlLT5wcy5FeGVjUHJvY05vZGUgPSBFeGVjTWVyZ2VBcHBlbmQ7 CiAKIAkvKiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0aGVuIHNl dCB0aGF0IHVwIG5vdyAqLwotCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZm8gIT0gTlVMTCkKKwlp ZiAobm9kZS0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQogCXsKIAkJUGFydGl0aW9uUHJ1bmVTdGF0 ZSAqcHJ1bmVzdGF0ZTsKIApAQCAtOTMsNyArOTMsOCBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1l cmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICovCiAJCXBy dW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJm1lcmdlc3RhdGUtPnBzLAogCQkJ CQkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5vZGUtPm1lcmdlcGxhbnMpLAotCQkJCQkJCQkJCQkgIG5v ZGUtPnBhcnRfcHJ1bmVfaW5mbywKKwkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZGV4 LAorCQkJCQkJCQkJCQkgIG5vZGUtPmFwcHJlbGlkcywKIAkJCQkJCQkJCQkJICAmdmFsaWRzdWJw bGFucyk7CiAJCW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBs YW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IDE3OGM1NzJiMDIuLjhmMjA5YzJkMmYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTEyMjcsNyArMTIyNyw2IEBAIGNy ZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRo LCBpbnQgZmxhZ3MpCiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJaW50CQkJbmFzeW5jcGxhbnMg PSAwOwogCVJlbE9wdEluZm8gKnJlbCA9IGJlc3RfcGF0aC0+cGF0aC5wYXJlbnQ7Ci0JUGFydGl0 aW9uUHJ1bmVJbmZvICpwYXJ0cHJ1bmVpbmZvID0gTlVMTDsKIAlpbnQJCQlub2RlbnVtc29ydGtl eXMgPSAwOwogCUF0dHJOdW1iZXIgKm5vZGVTb3J0Q29sSWR4ID0gTlVMTDsKIAlPaWQJCSAgICpu b2RlU29ydE9wZXJhdG9ycyA9IE5VTEw7CkBAIC0xMzc4LDYgKzEzNzcsOSBAQCBjcmVhdGVfYXBw ZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZs YWdzKQogCQlzdWJwbGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCS8q IFNldCBiZWxvdyBpZiB3ZSBmaW5kIHF1YWxzIHRoYXQgd2UgY2FuIHVzZSB0byBydW4tdGltZSBw cnVuZSAqLworCXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPSAtMTsKKwogCS8qCiAJICogSWYgYW55 IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1c2VmdWwgdG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRp dGlvbgogCSAqIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZvcm1hdGlvbiBu ZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvCkBAIC0xNDAxLDE2ICsxNDAzLDE0IEBAIGNyZWF0ZV9h cHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQg ZmxhZ3MpCiAJCX0KIAogCQlpZiAocHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBhcnRwcnVuZWluZm8g PQotCQkJCW1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCi0JCQkJCQkJCQkJIGJl c3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJIHBydW5lcXVhbCk7CisJCQlwbGFuLT5wYXJ0 X3BydW5lX2luZGV4ID0gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwKKwkJCQkJ CQkJCQkJCQkJCSAgYmVzdF9wYXRoLT5zdWJwYXRocywKKwkJCQkJCQkJCQkJCQkJCSAgcHJ1bmVx dWFsKTsKIAl9CiAKIAlwbGFuLT5hcHBlbmRwbGFucyA9IHN1YnBsYW5zOwogCXBsYW4tPm5hc3lu Y3BsYW5zID0gbmFzeW5jcGxhbnM7CiAJcGxhbi0+Zmlyc3RfcGFydGlhbF9wbGFuID0gYmVzdF9w YXRoLT5maXJzdF9wYXJ0aWFsX3BhdGg7Ci0JcGxhbi0+cGFydF9wcnVuZV9pbmZvID0gcGFydHBy dW5laW5mbzsKIAogCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJnBsYW4tPnBsYW4sIChQYXRoICop IGJlc3RfcGF0aCk7CiAKQEAgLTE0NDksNyArMTQ0OSw2IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRf cGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJTGlz dAkgICAqc3VicGxhbnMgPSBOSUw7CiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJUmVsT3B0SW5m byAqcmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsKLQlQYXJ0aXRpb25QcnVuZUluZm8gKnBh cnRwcnVuZWluZm8gPSBOVUxMOwogCiAJLyoKIAkgKiBXZSBkb24ndCBoYXZlIHRoZSBhY3R1YWwg Y3JlYXRpb24gb2YgdGhlIE1lcmdlQXBwZW5kIG5vZGUgc3BsaXQgb3V0CkBAIC0xNTQyLDYgKzE1 NDEsOSBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdl QXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQlzdWJwbGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1 YnBsYW4pOwogCX0KIAorCS8qIFNldCBiZWxvdyBpZiB3ZSBmaW5kIHF1YWxzIHRoYXQgd2UgY2Fu IHVzZSB0byBydW4tdGltZSBwcnVuZSAqLworCW5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPSAtMTsK KwogCS8qCiAJICogSWYgYW55IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1c2VmdWwgdG8gcGVy Zm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgogCSAqIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdh dGhlciBpbmZvcm1hdGlvbiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvCkBAIC0xNTU3LDEzICsx NTU5LDEyIEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVy Z2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJCUFzc2VydChiZXN0X3BhdGgtPnBhdGgucGFyYW1f aW5mbyA9PSBOVUxMKTsKIAogCQlpZiAocHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBhcnRwcnVuZWlu Zm8gPSBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwgcmVsLAotCQkJCQkJCQkJCQkJCSBi ZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwpOworCQkJbm9kZS0+ cGFydF9wcnVuZV9pbmRleCA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCisJ CQkJCQkJCQkJCQkJCQkgIGJlc3RfcGF0aC0+c3VicGF0aHMsCisJCQkJCQkJCQkJCQkJCQkgIHBy dW5lcXVhbCk7CiAJfQogCiAJbm9kZS0+bWVyZ2VwbGFucyA9IHN1YnBsYW5zOwotCW5vZGUtPnBh cnRfcHJ1bmVfaW5mbyA9IHBhcnRwcnVuZWluZm87CiAKIAkvKgogCSAqIElmIHByZXBhcmVfc29y dF9mcm9tX3BhdGhrZXlzIGFkZGVkIHNvcnQgY29sdW1ucywgYnV0IHdlIHdlcmUgdG9sZCB0bwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IGI2NjVhNzc2MmUuLjljMjUzZTg2 NGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTU1Nyw2ICs1NTcsNyBA QCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5n LCBpbnQgY3Vyc29yT3B0aW9ucywKIAlyZXN1bHQtPmRlcGVuZHNPblJvbGUgPSBnbG9iLT5kZXBl bmRzT25Sb2xlOwogCXJlc3VsdC0+cGFyYWxsZWxNb2RlTmVlZGVkID0gZ2xvYi0+cGFyYWxsZWxN b2RlTmVlZGVkOwogCXJlc3VsdC0+cGxhblRyZWUgPSB0b3BfcGxhbjsKKwlyZXN1bHQtPnBhcnRQ cnVuZUluZm9zID0gZ2xvYi0+cGFydFBydW5lSW5mb3M7CiAJcmVzdWx0LT5ydGFibGUgPSBnbG9i LT5maW5hbHJ0YWJsZTsKIAlyZXN1bHQtPnBlcm1JbmZvcyA9IGdsb2ItPmZpbmFscnRlcGVybWlu Zm9zOwogCXJlc3VsdC0+cmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cmVzdWx0UmVsYXRpb25zOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDZkMjNkZjEwOGQuLjlmMTMyNDNk NTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTE3MzEsNiArMTczMSw0 NyBAQCBzZXRfY3VzdG9tc2Nhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCWNzY2Fu LT5jdXN0b21fcmVsaWRzID0gb2Zmc2V0X3JlbGlkX3NldChjc2Nhbi0+Y3VzdG9tX3JlbGlkcywg cnRvZmZzZXQpOwogfQogCisvKgorICogcmVnaXN0ZXJfcGFydHBydW5laW5mbworICoJCVN1YnJv dXRpbmUgZm9yIHNldF9hcHBlbmRfcmVmZXJlbmNlcyBhbmQgc2V0X21lcmdlYXBwZW5kX3JlZmVy ZW5jZXMKKyAqCisgKiBBZGQgdGhlIFBhcnRpdGlvblBydW5lSW5mbyBmcm9tIHJvb3QtPnBhcnRQ cnVuZUluZm9zIGF0IHRoZSBnaXZlbiBpbmRleAorICogaW50byBQbGFubmVyR2xvYmFsLT5wYXJ0 UHJ1bmVJbmZvcyBhbmQgcmV0dXJuIGl0cyBpbmRleCB0aGVyZS4KKyAqCisgKiBBbHNvIHVwZGF0 ZSB0aGUgUlQgaW5kZXhlcyBwcmVzZW50IGluIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvcyB0byBh ZGQgdGhlCisgKiBvZmZzZXQuCisgKi8KK3N0YXRpYyBpbnQKK3JlZ2lzdGVyX3BhcnRwcnVuZWlu Zm8oUGxhbm5lckluZm8gKnJvb3QsIGludCBwYXJ0X3BydW5lX2luZGV4LCBpbnQgcnRvZmZzZXQp Cit7CisJUGxhbm5lckdsb2JhbCAqZ2xvYiA9IHJvb3QtPmdsb2I7CisJUGFydGl0aW9uUHJ1bmVJ bmZvICpwaW5mbzsKKwlMaXN0Q2VsbCAgICpsOworCisJQXNzZXJ0KHBhcnRfcHJ1bmVfaW5kZXgg Pj0gMCAmJgorCQkgICBwYXJ0X3BydW5lX2luZGV4IDwgbGlzdF9sZW5ndGgocm9vdC0+cGFydFBy dW5lSW5mb3MpKTsKKwlwaW5mbyA9IGxpc3RfbnRoX25vZGUoUGFydGl0aW9uUHJ1bmVJbmZvLCBy b290LT5wYXJ0UHJ1bmVJbmZvcywKKwkJCQkJCSAgcGFydF9wcnVuZV9pbmRleCk7CisKKwlwaW5m by0+cmVsaWRzID0gb2Zmc2V0X3JlbGlkX3NldChwaW5mby0+cmVsaWRzLCBydG9mZnNldCk7CisJ Zm9yZWFjaChsLCBwaW5mby0+cHJ1bmVfaW5mb3MpCisJeworCQlMaXN0CSAgICpwcnVuZV9pbmZv cyA9IGxmaXJzdChsKTsKKwkJTGlzdENlbGwgICAqbDI7CisKKwkJZm9yZWFjaChsMiwgcHJ1bmVf aW5mb3MpCisJCXsKKwkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwcmVsaW5mbyA9IGxmaXJz dChsMik7CisKKwkJCXByZWxpbmZvLT5ydGluZGV4ICs9IHJ0b2Zmc2V0OworCQl9CisJfQorCisJ Z2xvYi0+cGFydFBydW5lSW5mb3MgPSBsYXBwZW5kKGdsb2ItPnBhcnRQcnVuZUluZm9zLCBwaW5m byk7CisKKwlyZXR1cm4gbGlzdF9sZW5ndGgoZ2xvYi0+cGFydFBydW5lSW5mb3MpIC0gMTsKK30K KwogLyoKICAqIHNldF9hcHBlbmRfcmVmZXJlbmNlcwogICoJCURvIHNldF9wbGFuX3JlZmVyZW5j ZXMgcHJvY2Vzc2luZyBvbiBhbiBBcHBlbmQKQEAgLTE3ODMsMjEgKzE4MjQsMTMgQEAgc2V0X2Fw cGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCiAJYXBsYW4tPmFwcHJlbGlkcyA9 IG9mZnNldF9yZWxpZF9zZXQoYXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOwogCi0JaWYgKGFw bGFuLT5wYXJ0X3BydW5lX2luZm8pCi0JewotCQlmb3JlYWNoKGwsIGFwbGFuLT5wYXJ0X3BydW5l X2luZm8tPnBydW5lX2luZm9zKQotCQl7Ci0JCQlMaXN0CSAgICpwcnVuZV9pbmZvcyA9IGxmaXJz dChsKTsKLQkJCUxpc3RDZWxsICAgKmwyOwotCi0JCQlmb3JlYWNoKGwyLCBwcnVuZV9pbmZvcykK LQkJCXsKLQkJCQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGluZm8gPSBsZmlyc3QobDIpOwot Ci0JCQkJcGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7Ci0JCQl9Ci0JCX0KLQl9CisJLyoKKwkg KiBBZGQgUGFydGl0aW9uUHJ1bmVJbmZvLCBpZiBhbnksIHRvIFBsYW5uZXJHbG9iYWwgYW5kIHVw ZGF0ZSB0aGUgaW5kZXguCisJICogQWxzbyB1cGRhdGUgdGhlIFJUIGluZGV4ZXMgcHJlc2VudCBp biBpdCB0byBhZGQgdGhlIG9mZnNldC4KKwkgKi8KKwlpZiAoYXBsYW4tPnBhcnRfcHJ1bmVfaW5k ZXggPj0gMCkKKwkJYXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPQorCQkJcmVnaXN0ZXJfcGFydHBy dW5laW5mbyhyb290LCBhcGxhbi0+cGFydF9wcnVuZV9pbmRleCwgcnRvZmZzZXQpOwogCiAJLyog V2UgZG9uJ3QgbmVlZCB0byByZWN1cnNlIHRvIGxlZnR0cmVlIG9yIHJpZ2h0dHJlZSAuLi4gKi8K IAlBc3NlcnQoYXBsYW4tPnBsYW4ubGVmdHRyZWUgPT0gTlVMTCk7CkBAIC0xODU5LDIxICsxODky LDEzIEBAIHNldF9tZXJnZWFwcGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCiAJ bXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9yZWxpZF9zZXQobXBsYW4tPmFwcHJlbGlkcywgcnRv ZmZzZXQpOwogCi0JaWYgKG1wbGFuLT5wYXJ0X3BydW5lX2luZm8pCi0JewotCQlmb3JlYWNoKGws IG1wbGFuLT5wYXJ0X3BydW5lX2luZm8tPnBydW5lX2luZm9zKQotCQl7Ci0JCQlMaXN0CSAgICpw cnVuZV9pbmZvcyA9IGxmaXJzdChsKTsKLQkJCUxpc3RDZWxsICAgKmwyOwotCi0JCQlmb3JlYWNo KGwyLCBwcnVuZV9pbmZvcykKLQkJCXsKLQkJCQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGlu Zm8gPSBsZmlyc3QobDIpOwotCi0JCQkJcGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7Ci0JCQl9 Ci0JCX0KLQl9CisJLyoKKwkgKiBBZGQgUGFydGl0aW9uUHJ1bmVJbmZvLCBpZiBhbnksIHRvIFBs YW5uZXJHbG9iYWwgYW5kIHVwZGF0ZSB0aGUgaW5kZXguCisJICogQWxzbyB1cGRhdGUgdGhlIFJU IGluZGV4ZXMgcHJlc2VudCBpbiBpdCB0byBhZGQgdGhlIG9mZnNldC4KKwkgKi8KKwlpZiAobXBs YW4tPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKKwkJbXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPQor CQkJcmVnaXN0ZXJfcGFydHBydW5laW5mbyhyb290LCBtcGxhbi0+cGFydF9wcnVuZV9pbmRleCwg cnRvZmZzZXQpOwogCiAJLyogV2UgZG9uJ3QgbmVlZCB0byByZWN1cnNlIHRvIGxlZnR0cmVlIG9y IHJpZ2h0dHJlZSAuLi4gKi8KIAlBc3NlcnQobXBsYW4tPnBsYW4ubGVmdHRyZWUgPT0gTlVMTCk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMv YmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKaW5kZXggNGUxMmFlNWQxZS4uY2E1NDY3 MTA0ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisr KyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwpAQCAtMjA3LDE2ICsyMDcs MjAgQEAgc3RhdGljIHZvaWQgcGFydGtleV9kYXR1bV9mcm9tX2V4cHIoUGFydGl0aW9uUHJ1bmVD b250ZXh0ICpjb250ZXh0LAogCiAvKgogICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvCi0gKgkJ QnVpbGRzIGEgUGFydGl0aW9uUHJ1bmVJbmZvIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBleGVj dXRvciB0byBhbGxvdwotICoJCWFkZGl0aW9uYWwgcGFydGl0aW9uIHBydW5pbmcgdG8gdGFrZSBw bGFjZS4gIFJldHVybnMgTlVMTCB3aGVuCi0gKgkJcGFydGl0aW9uIHBydW5pbmcgd291bGQgYmUg dXNlbGVzcy4KKyAqCQlDaGVja3MgaWYgdGhlIGdpdmVuIHNldCBvZiBxdWFscyBjYW4gYmUgdXNl ZCB0byBidWlsZCBwcnVuaW5nIHN0ZXBzCisgKgkJdGhhdCB0aGUgZXhlY3V0b3IgY2FuIHVzZSB0 byBwcnVuZSBhd2F5IHVubmVlZGVkIHBhcnRpdGlvbnMuICBJZgorICoJCXN1aXRhYmxlIHF1YWxz IGFyZSBmb3VuZCB0aGVuIGEgUGFydGl0aW9uUHJ1bmVJbmZvIGlzIGJ1aWx0IGFuZCB0YWdnZWQK KyAqCQlvbnRvIHRoZSBQbGFubmVySW5mbydzIHBhcnRQcnVuZUluZm9zIGxpc3QuCisgKgorICog VGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgMC1iYXNlZCBpbmRleCBvZiB0aGUgaXRlbSBhZGRlZCB0 byB0aGUKKyAqIHBhcnRQcnVuZUluZm9zIGxpc3Qgb3IgLTEgaWYgbm90aGluZyB3YXMgYWRkZWQu CiAgKgogICogJ3BhcmVudHJlbCcgaXMgdGhlIFJlbE9wdEluZm8gZm9yIGFuIGFwcGVuZHJlbCwg YW5kICdzdWJwYXRocycgaXMgdGhlIGxpc3QKICAqIG9mIHNjYW4gcGF0aHMgZm9yIGl0cyBjaGls ZCByZWxzLgogICogJ3BydW5lcXVhbCcgaXMgYSBsaXN0IG9mIHBvdGVudGlhbCBwcnVuaW5nIHF1 YWxzIChpLmUuLCByZXN0cmljdGlvbgogICogY2xhdXNlcyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRv IHRoZSBhcHBlbmRyZWwpLgogICovCi1QYXJ0aXRpb25QcnVuZUluZm8gKgoraW50CiBtYWtlX3Bh cnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJl bCwKIAkJCQkJCSBMaXN0ICpzdWJwYXRocywKIAkJCQkJCSBMaXN0ICpwcnVuZXF1YWwpCkBAIC0z MzAsMTAgKzMzNCwxMSBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkgKiBxdWFscywgdGhlbiB3ZSBjYW4ganVzdCBu b3QgYm90aGVyIHdpdGggcnVuLXRpbWUgcHJ1bmluZy4KIAkgKi8KIAlpZiAocHJ1bmVyZWxpbmZv cyA9PSBOSUwpCi0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gLTE7CiAKIAkvKiBFbHNlIGJ1aWxk IHRoZSByZXN1bHQgZGF0YSBzdHJ1Y3R1cmUgKi8KIAlwcnVuZWluZm8gPSBtYWtlTm9kZShQYXJ0 aXRpb25QcnVuZUluZm8pOworCXBydW5laW5mby0+cmVsaWRzID0gYm1zX2NvcHkocGFyZW50cmVs LT5yZWxpZHMpOwogCXBydW5laW5mby0+cHJ1bmVfaW5mb3MgPSBwcnVuZXJlbGluZm9zOwogCiAJ LyoKQEAgLTM1Niw3ICszNjEsOSBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAllbHNlCiAJCXBydW5laW5mby0+b3Ro ZXJfc3VicGxhbnMgPSBOVUxMOwogCi0JcmV0dXJuIHBydW5laW5mbzsKKwlyb290LT5wYXJ0UHJ1 bmVJbmZvcyA9IGxhcHBlbmQocm9vdC0+cGFydFBydW5lSW5mb3MsIHBydW5laW5mbyk7CisKKwly ZXR1cm4gbGlzdF9sZW5ndGgocm9vdC0+cGFydFBydW5lSW5mb3MpIC0gMTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAppbmRleCBjMDliYzgzYjJhLi4zM2Q5MjJmZThk IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKKysrIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCkBAIC0xMjMsNyArMTIzLDggQEAg dHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVTdGF0ZQogCiBleHRlcm4gUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAog CQkJCQkJCQkJCQkJCSBpbnQgbl90b3RhbF9zdWJwbGFucywKLQkJCQkJCQkJCQkJCQkgUGFydGl0 aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkJCQkJCQkJIGludCBwYXJ0X3BydW5lX2lu ZGV4LAorCQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQgKnJlbGlkcywKIAkJCQkJCQkJCQkJCQkgQml0 bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKTsKIGV4dGVybiBCaXRtYXBzZXQgKkV4 ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAog CQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4 IDE4MmE2OTU2YmIuLmIxNDcxZTY4ZmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MzksNiAr NjM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJCQkJICogRXhlY1Jvd01hcmtz LCBvciBOVUxMIGlmIG5vbmUgKi8KIAlMaXN0CSAgICplc19ydGVwZXJtaW5mb3M7CS8qIExpc3Qg b2YgUlRFUGVybWlzc2lvbkluZm8gKi8KIAlQbGFubmVkU3RtdCAqZXNfcGxhbm5lZHN0bXQ7CS8q IGxpbmsgdG8gdG9wIG9mIHBsYW4gdHJlZSAqLworCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfaW5m b3M7CS8qIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvICovCiAJY29uc3QgY2hhciAqZXNfc291 cmNlVGV4dDsJLyogU291cmNlIHRleHQgZnJvbSBRdWVyeURlc2MgKi8KIAogCUp1bmtGaWx0ZXIg KmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZpbHRlciwgaWYgYW55ICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3BhdGhub2Rlcy5oCmluZGV4IGFkZDBmOWU0NWYuLmY4YTRjZDQyYzYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oCkBAIC0xMjgsNiArMTI4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAog CS8qICJmbGF0IiBsaXN0IG9mIEFwcGVuZFJlbEluZm9zICovCiAJTGlzdAkgICAqYXBwZW5kUmVs YXRpb25zOwogCisJLyogImZsYXQiIGxpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvcyAqLworCUxp c3QJICAgKnBhcnRQcnVuZUluZm9zOworCiAJLyogT0lEcyBvZiByZWxhdGlvbnMgdGhlIHBsYW4g ZGVwZW5kcyBvbiAqLwogCUxpc3QJICAgKnJlbGF0aW9uT2lkczsKIApAQCAtNTU5LDYgKzU2Miw5 IEBAIHN0cnVjdCBQbGFubmVySW5mbwogCiAJLyogRG9lcyB0aGlzIHF1ZXJ5IG1vZGlmeSBhbnkg cGFydGl0aW9uIGtleSBjb2x1bW5zPyAqLwogCWJvb2wJCXBhcnRDb2xzVXBkYXRlZDsKKworCS8q IFBhcnRpdGlvblBydW5lSW5mb3MgYWRkZWQgaW4gdGhpcyBxdWVyeSdzIHBsYW4uICovCisJTGlz dAkgICAqcGFydFBydW5lSW5mb3M7CiB9OwogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggNTJm MjliY2RiNi4uZWY4OTkyNzQ3MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTY5LDYgKzY5LDkg QEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAogCXN0cnVjdCBQbGFuICpwbGFuVHJlZTsJ CS8qIHRyZWUgb2YgUGxhbiBub2RlcyAqLwogCisJTGlzdAkgICAqcGFydFBydW5lSW5mb3M7IC8q IExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbiB0aGUKKwkJCQkJCQkJICog cGxhbiAqLworCiAJTGlzdAkgICAqcnRhYmxlOwkJCS8qIGxpc3Qgb2YgUmFuZ2VUYmxFbnRyeSBu b2RlcyAqLwogCiAJTGlzdAkgICAqcGVybUluZm9zOwkJLyogbGlzdCBvZiBSVEVQZXJtaXNzaW9u SW5mbyBub2RlcyBmb3IgcnRhYmxlCkBAIC0yNzYsOCArMjc5LDggQEAgdHlwZWRlZiBzdHJ1Y3Qg QXBwZW5kCiAJICovCiAJaW50CQkJZmlyc3RfcGFydGlhbF9wbGFuOwogCi0JLyogSW5mbyBmb3Ig cnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICov Ci0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4 IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5p bmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBBcHBlbmQ7CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0KQEAgLTMxMSw4ICszMTQsOCBAQCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZAog CS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0aW9ucyAqLwogCWJvb2wJICAgKm51bGxzRmlyc3Qg cGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOwogCi0JLyogSW5mbyBmb3IgcnVuLXRp bWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICovCi0Jc3Ry dWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4IHRvIFBs YW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5pbmcgKi8K KwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBNZXJnZUFwcGVuZDsKIAogLyogLS0tLS0tLS0t LS0tLS0tLQpAQCAtMTQxNCw2ICsxNDE3LDEwIEBAIHR5cGVkZWYgc3RydWN0IFBsYW5Sb3dNYXJr CiAgKiBUaGVuLCBzaW5jZSBhbiBBcHBlbmQtdHlwZSBub2RlIGNvdWxkIGhhdmUgbXVsdGlwbGUg cGFydGl0aW9uaW5nCiAgKiBoaWVyYXJjaGllcyBhbW9uZyBpdHMgY2hpbGRyZW4sIHdlIGhhdmUg YW4gdW5vcmRlcmVkIExpc3Qgb2YgdGhvc2UgTGlzdHMuCiAgKgorICogcmVsaWRzCQkJCVJlbE9w dEluZm8ucmVsaWRzIG9mIHRoZSBwYXJlbnQgcGxhbiBub2RlIChlLmcuIEFwcGVuZAorICoJCQkJ CQlvciBNZXJnZUFwcGVuZCkgdG8gd2hpY2ggdGhpcyBQYXJ0aXRpb25QcnVuZUluZm8gbm9kZQor ICoJCQkJCQliZWxvbmdzLiAgVGhlIHBydW5pbmcgbG9naWMgZW5zdXJlcyB0aGF0IHRoaXMgbWF0 Y2hlcworICoJCQkJCQl0aGUgcGFyZW50IHBsYW4gbm9kZSdzIGFwcHJlbGlkcy4KICAqIHBydW5l X2luZm9zCQkJTGlzdCBvZiBMaXN0cyBjb250YWluaW5nIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZv IG5vZGVzLAogICoJCQkJCQlvbmUgc3VibGlzdCBwZXIgcnVuLXRpbWUtcHJ1bmFibGUgcGFydGl0 aW9uIGhpZXJhcmNoeQogICoJCQkJCQlhcHBlYXJpbmcgaW4gdGhlIHBhcmVudCBwbGFuIG5vZGUn cyBzdWJwbGFucy4KQEAgLTE0MjYsNiArMTQzMyw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlv blBydW5lSW5mbwogCXBnX25vZGVfYXR0cihub19lcXVhbCwgbm9fcXVlcnlfanVtYmxlKQogCiAJ Tm9kZVRhZwkJdHlwZTsKKwlCaXRtYXBzZXQgICpyZWxpZHM7CiAJTGlzdAkgICAqcHJ1bmVfaW5m b3M7CiAJQml0bWFwc2V0ICAqb3RoZXJfc3VicGxhbnM7CiB9IFBhcnRpdGlvblBydW5lSW5mbzsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCBiL3NyYy9p bmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaAppbmRleCBiZDQ5MGQxNTRmLi42OTIyZTA0 NDMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKKysr IGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCkBAIC03MCwxMCArNzAsMTAg QEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVDb250ZXh0CiAjZGVmaW5lIFBydW5lQ3h0 U3RhdGVJZHgocGFydG5hdHRzLCBzdGVwX2lkLCBrZXlubykgXAogCSgocGFydG5hdHRzKSAqIChz dGVwX2lkKSArIChrZXlubykpCiAKLWV4dGVybiBQYXJ0aXRpb25QcnVuZUluZm8gKm1ha2VfcGFy dGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3QsCi0JCQkJCQkJCQkJCQkJ c3RydWN0IFJlbE9wdEluZm8gKnBhcmVudHJlbCwKLQkJCQkJCQkJCQkJCQlMaXN0ICpzdWJwYXRo cywKLQkJCQkJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworZXh0ZXJuIGludAltYWtlX3BhcnRp dGlvbl9wcnVuZWluZm8oc3RydWN0IFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJIHN0cnVj dCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCisJCQkJCQkJCQkgTGlzdCAqc3VicGF0aHMsCisJCQkJ CQkJCQkgTGlzdCAqcHJ1bmVxdWFsKTsKIGV4dGVybiBCaXRtYXBzZXQgKnBydW5lX2FwcGVuZF9y ZWxfcGFydGl0aW9ucyhzdHJ1Y3QgUmVsT3B0SW5mbyAqcmVsKTsKIGV4dGVybiBCaXRtYXBzZXQg KmdldF9tYXRjaGluZ19wYXJ0aXRpb25zKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwK IAkJCQkJCQkJCQkgIExpc3QgKnBydW5pbmdfc3RlcHMpOwotLSAKMi40My4wCgo= --00000000000089c291062884af28 Content-Type: application/octet-stream; name="v58-0002-Initialize-PartitionPruneContexts-lazily.patch" Content-Disposition: attachment; filename="v58-0002-Initialize-PartitionPruneContexts-lazily.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4b9ol2f1 RnJvbSA1NDAwNzkwODZhMjViYzE4NTM4YTc4Yzg5OTA0NjRhYjRjNzc2NTllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNCBEZWMgMjAyNCAxNjoxNjo0MSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjU4 IDIvNF0gSW5pdGlhbGl6ZSBQYXJ0aXRpb25QcnVuZUNvbnRleHRzIGxhemlseQoKVGhpcyBjb21t aXQgbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIFBhcnRpdGlvblBydW5lQ29udGV4dHMgZm9y CmJvdGggaW5pdGlhbCBhbmQgZXhlYyBwcnVuaW5nIHN0ZXBzIGZyb20gQ3JlYXRlUGFydGl0aW9u UHJ1bmVTdGF0ZSgpCnRvIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZSgpLCB3aGVyZSB0 aGV5IGFyZSBhY3R1YWxseSBuZWVkZWQuClRvIHRyYWNrIHdoZXRoZXIgdGhlIGNvbnRleHQgaGFz IGJlZW4gaW5pdGlhbGl6ZWQgYW5kIGlzIHJlYWR5IGZvcgp1c2UsIGEgYm9vbGVhbiBmaWVsZCBp c192YWxpZCBoYXMgYmVlbiBhZGRlZCB0byBQYXJ0aXRpb25QcnVuZUNvbnRleHQuCgpUaGUgcHJp bWFyeSBtb3RpdmF0aW9uIGlzIHRvIGFsbG93IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoKSB0 byBiZQpjYWxsZWQgYmVmb3JlIEV4ZWNJbml0Tm9kZSgpLiBSaWdodCBub3csIGl0J3MgY291cGxl ZCB3aXRoCkV4ZWNJbml0Tm9kZSgpIGJlY2F1c2Ugc2V0dGluZyB1cCB0aGUgZXhlYyBwcnVuaW5n IGNvbnRleHQgcmVxdWlyZXMKYWNjZXNzIHRvIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3MgUGxhblN0 YXRlLiAgQnkgZGVmZXJyaW5nIGNvbnRleHQKY3JlYXRpb24gdG8gd2hlcmUgaXQncyBhY3R1YWxs eSBuZWVkZWQsIHdlIGJyZWFrIHRoaXMgZGVwZW5kZW5jeS4KClRoZSBFeHByQ29udGV4dCB1c2Vk IGZvciBib3RoIHBydW5pbmcgcGhhc2VzIGlzIG5vdyBhIHN0YW5kYWxvbmUKY29udGV4dCwgaW5k ZXBlbmRlbnQgb2YgdGhlIHBhcmVudCBQbGFuU3RhdGUuCgpUaGlzIGNoYW5nZSB3aWxsIGJlIHVz ZWZ1bCBpbiBhIGZ1dHVyZSBjb21taXQsIHdoaWNoIHdpbGwgbW92ZSBpbml0aWFsCnBydW5pbmcg dG8gb2NjdXIgb3V0c2lkZSBFeGVjSW5pdE5vZGUoKSwgc3BlY2lmaWNhbGx5IGJlZm9yZSBpdCBp cwpjYWxsZWQgYnkgSW5pdFBsYW4oKS4KClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcwpSZXZpZXdl ZC1ieTogVG9tIExhbmUKUmV2aWV3ZWQtYnk6IFRvbWFzIFZvbmRyYQpEaXNjdXNzaW9uOiBodHRw czovL3Bvc3Rnci5lcy9tL0NBK0hpd3FGR2tNU2dlNlRnQzlLUXpkZTBvaHBBeWNMUXVWN29vaXRF RXBiS0IwT19tZ0BtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uYyB8IDE1MSArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyB8ICAgNyArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY1BhcnRpdGlvbi5oIHwgIDEyICsrKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRw cnVuZS5oIHwgICAyICsKIDQgZmlsZXMgY2hhbmdlZCwgMTIzIGluc2VydGlvbnMoKyksIDQ5IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCA5NTBmYTMy ODljLi5mNGQ0MjVjZDQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy dGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0x ODEsMTggKzE4MSwxNyBAQCBzdGF0aWMgY2hhciAqRXhlY0J1aWxkU2xvdFBhcnRpdGlvbktleURl c2NyaXB0aW9uKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJCSAgaW50IG1heGZpZWxkbGVuKTsK IHN0YXRpYyBMaXN0ICphZGp1c3RfcGFydGl0aW9uX2NvbG5vcyhMaXN0ICpjb2xub3MsIFJlc3Vs dFJlbEluZm8gKmxlYWZfcGFydF9ycmkpOwogc3RhdGljIExpc3QgKmFkanVzdF9wYXJ0aXRpb25f Y29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApOwotc3RhdGlj IFBhcnRpdGlvblBydW5lU3RhdGUgKkNyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRl ICpwbGFuc3RhdGUsCitzdGF0aWMgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqQ3JlYXRlUGFydGl0aW9u UHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5l SW5mbyAqcHJ1bmVpbmZvKTsKLXN0YXRpYyB2b2lkIEluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQo UGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAorc3RhdGljIHZvaWQgSW5pdFBhcnRpdGlv blBydW5lQ29udGV4dChQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUsCisJCQkJCQkJ CQkgIFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCSAgTGlzdCAqcHJ1 bmluZ19zdGVwcywKLQkJCQkJCQkJCSAgUGFydGl0aW9uRGVzYyBwYXJ0ZGVzYywKLQkJCQkJCQkJ CSAgUGFydGl0aW9uS2V5IHBhcnRrZXksCi0JCQkJCQkJCQkgIFBsYW5TdGF0ZSAqcGxhbnN0YXRl LAotCQkJCQkJCQkJICBFeHByQ29udGV4dCAqZWNvbnRleHQpOworCQkJCQkJCQkJICBQbGFuU3Rh dGUgKnBsYW5zdGF0ZSk7CiBzdGF0aWMgdm9pZCBQYXJ0aXRpb25QcnVuZUZpeFN1YlBsYW5NYXAo UGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJCQkJCQkJCQlCaXRtYXBzZXQgKmlu aXRpYWxseV92YWxpZF9zdWJwbGFucywKIAkJCQkJCQkJCQlpbnQgbl90b3RhbF9zdWJwbGFucyk7 Ci1zdGF0aWMgdm9pZCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1 bmluZ0RhdGEgKnBydW5lZGF0YSwKK3N0YXRpYyB2b2lkIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNf cmVjdXJzZShQbGFuU3RhdGUgKnBhcmVudF9wbGFuLAorCQkJCQkJCQkJCSAgIFBhcnRpdGlvblBy dW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJCQkJICAgUGFydGl0aW9uZWRSZWxQcnVuaW5n RGF0YSAqcHBydW5lLAogCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKIAkJCQkJCQkJ CQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zKTsKQEAgLTE4MjMsNyArMTgyMiwxNCBAQCBF eGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJRXhlY0Fzc2ln bkV4cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRlKTsKIAogCS8qIENyZWF0ZSB0aGUgd29ya2lu ZyBkYXRhIHN0cnVjdHVyZSBmb3IgcHJ1bmluZyAqLwotCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0 aXRpb25QcnVuZVN0YXRlKHBsYW5zdGF0ZSwgcHJ1bmVpbmZvKTsKKwlwcnVuZXN0YXRlID0gQ3Jl YXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShlc3RhdGUsIHBydW5laW5mbyk7CisKKwkvKgorCSAqIFN0 b3JlIFBsYW5TdGF0ZSBmb3IgdXNpbmcgaXQgdG8gaW5pdGlhbGl6ZSBleGVjIHBydW5pbmcgY29u dGV4dHMgbGF0ZXIKKwkgKiBpbiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoKSB3aGVy ZSB0aGV5IGFyZSBuZWVkZWQuCisJICovCisJaWYgKHBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUp CisJCXBydW5lc3RhdGUtPnBhcmVudF9wbGFuID0gcGxhbnN0YXRlOwogCiAJLyoKIAkgKiBQZXJm b3JtIGFuIGluaXRpYWwgcGFydGl0aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVkLgpAQCAtMTg2 Myw4ICsxODY5LDYgQEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0 YXRlLAogICogQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZQogICoJCUJ1aWxkIHRoZSBkYXRhIHN0 cnVjdHVyZSByZXF1aXJlZCBmb3IgY2FsbGluZyBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMKICAq Ci0gKiAncGxhbnN0YXRlJyBpcyB0aGUgcGFyZW50IHBsYW4gbm9kZSdzIGV4ZWN1dGlvbiBzdGF0 ZS4KLSAqCiAgKiAncHJ1bmVpbmZvJyBpcyBhIFBhcnRpdGlvblBydW5lSW5mbyBhcyBnZW5lcmF0 ZWQgYnkKICAqIG1ha2VfcGFydGl0aW9uX3BydW5laW5mby4gIEhlcmUgd2UgYnVpbGQgYSBQYXJ0 aXRpb25QcnVuZVN0YXRlIGNvbnRhaW5pbmcgYQogICogUGFydGl0aW9uUHJ1bmluZ0RhdGEgZm9y IGVhY2ggcGFydGl0aW9uaW5nIGhpZXJhcmNoeSAoaS5lLiwgZWFjaCBzdWJsaXN0IG9mCkBAIC0x ODc1LDE2ICsxODc5LDI0IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBs YW5zdGF0ZSwKICAqIHN0b3JlZCBpbiBlYWNoIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgY2Fu IGJlIHJlLXVzZWQgZWFjaCB0aW1lIHdlCiAgKiByZS1ldmFsdWF0ZSB3aGljaCBwYXJ0aXRpb25z IG1hdGNoIHRoZSBwcnVuaW5nIHN0ZXBzIHByb3ZpZGVkIGluIGVhY2gKICAqIFBhcnRpdGlvbmVk UmVsUHJ1bmVJbmZvLgorICoKKyAqIE5vdGUgdGhhdCB0aGUgUGFydGl0aW9uUHJ1bmVDb250ZXh0 cyBmb3IgYm90aCBpbml0aWFsIGFuZCBleGVjIHBydW5pbmcKKyAqICh3aGljaCBhcmUgc3RvcmVk IGluIGVhY2ggUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSkgYXJlIGluaXRpYWxpemVkIGxhemls eQorICogaW4gZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKCkgd2hlbiB1c2VkIGZvciB0 aGUgZmlyc3QgdGltZS4KICAqLwogc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKgotQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJ bmZvICpwcnVuZWluZm8pCitDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRl LCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIHsKLQlFU3RhdGUJICAgKmVzdGF0ZSA9 IHBsYW5zdGF0ZS0+c3RhdGU7CiAJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIAlp bnQJCQluX3BhcnRfaGllcmFyY2hpZXM7CiAJTGlzdENlbGwgICAqbGM7CiAJaW50CQkJaTsKLQlF eHByQ29udGV4dCAqZWNvbnRleHQgPSBwbGFuc3RhdGUtPnBzX0V4cHJDb250ZXh0OworCisJLyoK KwkgKiBFeHByZXNzaW9uIGNvbnRleHQgdGhhdCB3aWxsIGJlIHVzZWQgYnkgcGFydGtleV9kYXR1 bV9mcm9tX2V4cHIoKSB0bworCSAqIGV2YWx1YXRlIGV4cHJlc3Npb25zIGZvciBjb21wYXJpc29u IGFnYWluc3QgcGFydGl0aW9uIGJvdW5kcy4KKwkgKi8KKwlFeHByQ29udGV4dCAqZWNvbnRleHQg PSBDcmVhdGVFeHByQ29udGV4dChlc3RhdGUpOwogCiAJLyogRm9yIGRhdGEgcmVhZGluZywgZXhl Y3V0b3IgYWx3YXlzIGluY2x1ZGVzIGRldGFjaGVkIHBhcnRpdGlvbnMgKi8KIAlpZiAoZXN0YXRl LT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID09IE5VTEwpCkBAIC0xOTA2LDYgKzE5MTgsNyBAQCBD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25Q cnVuZUluZm8gKnBydW5laW5mbykKIAlwcnVuZXN0YXRlLT5vdGhlcl9zdWJwbGFucyA9IGJtc19j b3B5KHBydW5laW5mby0+b3RoZXJfc3VicGxhbnMpOwogCXBydW5lc3RhdGUtPmRvX2luaXRpYWxf cHJ1bmUgPSBmYWxzZTsJLyogbWF5IGJlIHNldCBiZWxvdyAqLwogCXBydW5lc3RhdGUtPmRvX2V4 ZWNfcHJ1bmUgPSBmYWxzZTsJLyogbWF5IGJlIHNldCBiZWxvdyAqLworCXBydW5lc3RhdGUtPnBh cmVudF9wbGFuID0gTlVMTDsKIAlwcnVuZXN0YXRlLT5udW1fcGFydHBydW5lZGF0YSA9IG5fcGFy dF9oaWVyYXJjaGllczsKIAogCS8qCkBAIC0xOTQxLDE2ICsxOTU0LDI1IEBAIENyZWF0ZVBhcnRp dGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAq cHJ1bmVpbmZvKQogCQkJUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSAqcHBydW5lID0gJnBydW5l ZGF0YS0+cGFydHJlbHBydW5lZGF0YVtqXTsKIAkJCVJlbGF0aW9uCXBhcnRyZWw7CiAJCQlQYXJ0 aXRpb25EZXNjIHBhcnRkZXNjOwotCQkJUGFydGl0aW9uS2V5IHBhcnRrZXk7CiAKIAkJCS8qCi0J CQkgKiBXZSBjYW4gcmVseSBvbiB0aGUgY29waWVzIG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSdz IHBhcnRpdGlvbgotCQkJICoga2V5IGFuZCBwYXJ0aXRpb24gZGVzY3JpcHRvciBhcHBlYXJpbmcg aW4gaXRzIHJlbGNhY2hlIGVudHJ5LAotCQkJICogYmVjYXVzZSB0aGF0IGVudHJ5IHdpbGwgYmUg aGVsZCBvcGVuIGFuZCBsb2NrZWQgZm9yIHRoZQotCQkJICogZHVyYXRpb24gb2YgdGhpcyBleGVj dXRvciBydW4uCisJCQkgKiBVc2VkIGZvciBpbml0aWFsaXppbmcgdGhlIGV4cHJlc3Npb25zIGlu IGluaXRpYWwgcHJ1bmluZyBzdGVwcy4KKwkJCSAqIEZvciBleGVjIHBydW5pbmcgc3RlcHMsIHRo ZSBwYXJlbnQgcGxhbiBub2RlJ3MgUGxhblN0YXRlJ3MKKwkJCSAqIHBzX0V4cHJDb250ZXh0IHdp bGwgYmUgdXNlZC4KIAkJCSAqLworCQkJcHBydW5lLT5lc3RhdGUgPSBlc3RhdGU7CisJCQlwcHJ1 bmUtPmVjb250ZXh0ID0gZWNvbnRleHQ7CisKKwkJCS8qIFJlbWVtYmVyIFJlbGF0aW9uIGZvciB1 c2UgaW4gSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dC4gKi8KIAkJCXBhcnRyZWwgPSBFeGVjR2V0 UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcGluZm8tPnJ0aW5kZXgpOwotCQkJcGFydGtleSA9 IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRyZWwpOworCQkJcHBydW5lLT5wYXJ0cmVsID0g cGFydHJlbDsKKworCQkJLyoKKwkJCSAqIFdlIGNhbiByZWx5IG9uIHRoZSBjb3B5IG9mIHBhcnRp dGlvbmVkIHRhYmxlJ3MgcGFydGl0aW9uCisJCQkgKiBkZXNjcmlwdG9yIGFwcGVhcmluZyBpbiBp dHMgcmVsY2FjaGUgZW50cnksIGJlY2F1c2UgdGhhdCBlbnRyeQorCQkJICogd2lsbCBiZSBoZWxk IG9wZW4gYW5kIGxvY2tlZCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoaXMgZXhlY3V0b3IKKwkJCSAq IHJ1bi4KKwkJCSAqLwogCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoZXN0 YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5LAogCQkJCQkJCQkJCQkJcGFydHJlbCk7CiAKQEAg LTIwNjEsMzIgKzIwODMsMjYgQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUg KnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQlwcHJ1bmUtPnBy ZXNlbnRfcGFydHMgPSBibXNfY29weShwaW5mby0+cHJlc2VudF9wYXJ0cyk7CiAKIAkJCS8qCi0J CQkgKiBJbml0aWFsaXplIHBydW5pbmcgY29udGV4dHMgYXMgbmVlZGVkLiAgTm90ZSB0aGF0IHdl IG11c3Qgc2tpcAotCQkJICogZXhlY3V0aW9uLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaW4gRVhQ TEFJTiAoR0VORVJJQ19QTEFOKSwKLQkJCSAqIHNpbmNlIHBhcmFtZXRlciB2YWx1ZXMgbWF5IGJl IG1pc3NpbmcuCisJCQkgKiBQcnVuaW5nIGNvbnRleHRzIChpbml0aWFsX2NvbnRleHQgYW5kIGV4 ZWNfY29udGV4dCkgYXJlCisJCQkgKiBpbml0aWFsaXplZCBsYXppbHkgaW4gZmluZF9tYXRjaGlu Z19zdWJwbGFuc19yZWN1cnNlKCkgd2hlbgorCQkJICogdXNlZCBmb3IgdGhlIGZpcnN0IHRpbWUu CisJCQkgKgorCQkJICogTm90ZSB0aGF0IHdlIG11c3Qgc2tpcCBleGVjdXRpb24tdGltZSBwYXJ0 aXRpb24gcHJ1bmluZyBpbgorCQkJICogRVhQTEFJTiAoR0VORVJJQ19QTEFOKSwgc2luY2UgcGFy YW1ldGVyIHZhbHVlcyBtYXkgYmUgbWlzc2luZy4KIAkJCSAqLwogCQkJcHBydW5lLT5pbml0aWFs X3BydW5pbmdfc3RlcHMgPSBwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzOworCQkJcHBydW5l LT5pbml0aWFsX2NvbnRleHQuaW5pdGlhbGl6ZWQgPSBmYWxzZTsKIAkJCWlmIChwaW5mby0+aW5p dGlhbF9wcnVuaW5nX3N0ZXBzICYmCiAJCQkJIShlY29udGV4dC0+ZWN4dF9lc3RhdGUtPmVzX3Rv cF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDKSkKLQkJCXsKLQkJCQlJbml0UGFy dGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1bmUtPmluaXRpYWxfY29udGV4dCwKLQkJCQkJCQkJCQkg IHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMsCi0JCQkJCQkJCQkJICBwYXJ0ZGVzYywgcGFy dGtleSwgcGxhbnN0YXRlLAotCQkJCQkJCQkJCSAgZWNvbnRleHQpOwogCQkJCS8qIFJlY29yZCB3 aGV0aGVyIGluaXRpYWwgcHJ1bmluZyBpcyBuZWVkZWQgYXQgYW55IGxldmVsICovCiAJCQkJcHJ1 bmVzdGF0ZS0+ZG9faW5pdGlhbF9wcnVuZSA9IHRydWU7Ci0JCQl9CisKIAkJCXBwcnVuZS0+ZXhl Y19wcnVuaW5nX3N0ZXBzID0gcGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwczsKKwkJCXBwcnVuZS0+ ZXhlY19jb250ZXh0LmluaXRpYWxpemVkID0gZmFsc2U7CiAJCQlpZiAocGluZm8tPmV4ZWNfcHJ1 bmluZ19zdGVwcyAmJgogCQkJCSEoZWNvbnRleHQtPmVjeHRfZXN0YXRlLT5lc190b3BfZWZsYWdz ICYgRVhFQ19GTEFHX0VYUExBSU5fR0VORVJJQykpCi0JCQl7Ci0JCQkJSW5pdFBhcnRpdGlvblBy dW5lQ29udGV4dCgmcHBydW5lLT5leGVjX2NvbnRleHQsCi0JCQkJCQkJCQkJICBwaW5mby0+ZXhl Y19wcnVuaW5nX3N0ZXBzLAotCQkJCQkJCQkJCSAgcGFydGRlc2MsIHBhcnRrZXksIHBsYW5zdGF0 ZSwKLQkJCQkJCQkJCQkgIGVjb250ZXh0KTsKIAkJCQkvKiBSZWNvcmQgd2hldGhlciBleGVjIHBy dW5pbmcgaXMgbmVlZGVkIGF0IGFueSBsZXZlbCAqLwogCQkJCXBydW5lc3RhdGUtPmRvX2V4ZWNf cHJ1bmUgPSB0cnVlOwotCQkJfQogCiAJCQkvKgogCQkJICogQWNjdW11bGF0ZSB0aGUgSURzIG9m IGFsbCBQQVJBTV9FWEVDIFBhcmFtcyBhZmZlY3RpbmcgdGhlCkBAIC0yMTA3LDE3ICsyMTIzLDQx IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRp dGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogICogSW5pdGlhbGl6ZSBhIFBhcnRpdGlvblBydW5l Q29udGV4dCBmb3IgdGhlIGdpdmVuIGxpc3Qgb2YgcHJ1bmluZyBzdGVwcy4KICAqLwogc3RhdGlj IHZvaWQKLUluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpj b250ZXh0LAorSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0aXRpb25lZFJlbFBydW5pbmdE YXRhICpwcHJ1bmUsCisJCQkJCQkgIFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJ CQkJCSAgTGlzdCAqcHJ1bmluZ19zdGVwcywKLQkJCQkJCSAgUGFydGl0aW9uRGVzYyBwYXJ0ZGVz YywKLQkJCQkJCSAgUGFydGl0aW9uS2V5IHBhcnRrZXksCi0JCQkJCQkgIFBsYW5TdGF0ZSAqcGxh bnN0YXRlLAotCQkJCQkJICBFeHByQ29udGV4dCAqZWNvbnRleHQpCisJCQkJCQkgIFBsYW5TdGF0 ZSAqcGxhbnN0YXRlKQogewogCWludAkJCW5fc3RlcHM7CiAJaW50CQkJcGFydG5hdHRzOwogCUxp c3RDZWxsICAgKmxjOwogCisJLyoKKwkgKiBVc2UgdGhlIEV4cHJDb250ZXh0IHRoYXQgQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZSgpIHNob3VsZCBoYXZlCisJICogY3JlYXRlZC4KKwkgKi8KKwlF eHByQ29udGV4dCAqZWNvbnRleHQgPSBwcHJ1bmUtPmVjb250ZXh0OworCUVTdGF0ZQkgICAqZXN0 YXRlID0gcHBydW5lLT5lc3RhdGU7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisJUmVsYXRpb24J cGFydHJlbCA9IHBwcnVuZS0+cGFydHJlbDsKKwlQYXJ0aXRpb25LZXkgcGFydGtleTsKKwlQYXJ0 aXRpb25EZXNjIHBhcnRkZXNjOworCisJQXNzZXJ0KGVjb250ZXh0ICE9IE5VTEwpOworCisJLyog TXVzdCBhbGxvY2F0ZSB0aGUgbmVlZGVkIHN0dWZmIGluIHRoZSBxdWVyeSBsaWZldGltZSBjb250 ZXh0LiAqLworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5 X2N4dCk7CisKKwkvKgorCSAqIFdlIGNhbiByZWx5IG9uIHRoZSBjb3BpZXMgb2YgdGhlIHBhcnRp dGlvbmVkIHRhYmxlJ3MgcGFydGl0aW9uIGtleSBhbmQKKwkgKiBwYXJ0aXRpb24gZGVzY3JpcHRv ciBhcHBlYXJpbmcgaW4gaXRzIHJlbGNhY2hlIGVudHJ5LCBiZWNhdXNlIHRoYXQKKwkgKiBlbnRy eSB3aWxsIGJlIGhlbGQgb3BlbiBhbmQgbG9ja2VkIGZvciB0aGUgZHVyYXRpb24gb2YgdGhpcyBl eGVjdXRvcgorCSAqIHJ1bi4KKwkgKi8KKwlwYXJ0a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25L ZXkocGFydHJlbCk7CisJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoZXN0YXRl LT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5LAorCQkJCQkJCQkJCXBhcnRyZWwpOworCiAJbl9zdGVw cyA9IGxpc3RfbGVuZ3RoKHBydW5pbmdfc3RlcHMpOwogCiAJY29udGV4dC0+c3RyYXRlZ3kgPSBw YXJ0a2V5LT5zdHJhdGVneTsKQEAgLTIxODUsNiArMjIyNSw5IEBAIEluaXRQYXJ0aXRpb25QcnVu ZUNvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJfQogCQl9CiAJfQor CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisJY29udGV4dC0+aW5pdGlhbGl6ZWQg PSB0cnVlOwogfQogCiAvKgpAQCAtMjM0OCwxMiArMjM5MSwxNiBAQCBFeGVjRmluZE1hdGNoaW5n U3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJICogcmVjdXJzaW5n IHRvIG90aGVyIChsb3dlci1sZXZlbCkgcGFyZW50cyBhcyBuZWVkZWQuCiAJCSAqLwogCQlwcHJ1 bmUgPSAmcHJ1bmVkYXRhLT5wYXJ0cmVscHJ1bmVkYXRhWzBdOwotCQlmaW5kX21hdGNoaW5nX3N1 YnBsYW5zX3JlY3Vyc2UocHJ1bmVkYXRhLCBwcHJ1bmUsIGluaXRpYWxfcHJ1bmUsCisJCWZpbmRf bWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShwcnVuZXN0YXRlLT5wYXJlbnRfcGxhbiwKKwkJCQkJ CQkJCSAgIHBydW5lZGF0YSwgcHBydW5lLCBpbml0aWFsX3BydW5lLAogCQkJCQkJCQkJICAgJnJl c3VsdCk7CiAKIAkJLyogRXhwcmVzc2lvbiBldmFsIG1heSBoYXZlIHVzZWQgc3BhY2UgaW4gRXhw ckNvbnRleHQgdG9vICovCi0JCWlmIChwcHJ1bmUtPmV4ZWNfcHJ1bmluZ19zdGVwcykKKwkJaWYg KHBwcnVuZS0+ZXhlY19jb250ZXh0LmluaXRpYWxpemVkKQorCQl7CisJCQlBc3NlcnQocHBydW5l LT5leGVjX3BydW5pbmdfc3RlcHMgIT0gTklMKTsKIAkJCVJlc2V0RXhwckNvbnRleHQocHBydW5l LT5leGVjX2NvbnRleHQuZXhwcmNvbnRleHQpOworCQl9CiAJfQogCiAJLyogQWRkIGluIGFueSBz dWJwbGFucyB0aGF0IHBhcnRpdGlvbiBwcnVuaW5nIGRpZG4ndCBhY2NvdW50IGZvciAqLwpAQCAt MjM3Niw3ICsyNDIzLDggQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5l U3RhdGUgKnBydW5lc3RhdGUsCiAgKiBBZGRzIHZhbGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4g SURzIHRvICp2YWxpZHN1YnBsYW5zCiAgKi8KIHN0YXRpYyB2b2lkCi1maW5kX21hdGNoaW5nX3N1 YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwKK2ZpbmRfbWF0 Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQbGFuU3RhdGUgKnBhcmVudF9wbGFuLAorCQkJCQkJCSAg IFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJICAgUGFydGl0aW9uZWRS ZWxQcnVuaW5nRGF0YSAqcHBydW5lLAogCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKIAkJ CQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zKQpAQCAtMjM5MywxMSArMjQ0MSwyNyBA QCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBy dW5lZGF0YSwKIAkgKiBsZXZlbC4KIAkgKi8KIAlpZiAoaW5pdGlhbF9wcnVuZSAmJiBwcHJ1bmUt PmluaXRpYWxfcHJ1bmluZ19zdGVwcykKKwl7CisJCS8qIEluaXRpYWxpemUgaW5pdGlhbF9jb250 ZXh0IGlmIG5vdCBhbHJlYWR5IGRvbmUuICovCisJCWlmICh1bmxpa2VseSghcHBydW5lLT5pbml0 aWFsX2NvbnRleHQuaW5pdGlhbGl6ZWQpKQorCQkJSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChw cHJ1bmUsCisJCQkJCQkJCQkgICZwcHJ1bmUtPmluaXRpYWxfY29udGV4dCwKKwkJCQkJCQkJCSAg cHBydW5lLT5pbml0aWFsX3BydW5pbmdfc3RlcHMsCisJCQkJCQkJCQkgIHBhcmVudF9wbGFuKTsK IAkJcGFydHNldCA9IGdldF9tYXRjaGluZ19wYXJ0aXRpb25zKCZwcHJ1bmUtPmluaXRpYWxfY29u dGV4dCwKIAkJCQkJCQkJCQkgIHBwcnVuZS0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzKTsKKwl9CiAJ ZWxzZSBpZiAoIWluaXRpYWxfcHJ1bmUgJiYgcHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMpCisJ eworCQkvKiBJbml0aWFsaXplIGV4ZWNfY29udGV4dCBpZiBub3QgYWxyZWFkeSBkb25lLiAqLwor CQlpZiAodW5saWtlbHkoIXBwcnVuZS0+ZXhlY19jb250ZXh0LmluaXRpYWxpemVkKSkKKwkJCUlu aXRQYXJ0aXRpb25QcnVuZUNvbnRleHQocHBydW5lLAorCQkJCQkJCQkJICAmcHBydW5lLT5leGVj X2NvbnRleHQsCisJCQkJCQkJCQkgIHBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzLAorCQkJCQkJ CQkJICBwYXJlbnRfcGxhbik7CiAJCXBhcnRzZXQgPSBnZXRfbWF0Y2hpbmdfcGFydGl0aW9ucygm cHBydW5lLT5leGVjX2NvbnRleHQsCiAJCQkJCQkJCQkJICBwcHJ1bmUtPmV4ZWNfcHJ1bmluZ19z dGVwcyk7CisJfQogCWVsc2UKIAkJcGFydHNldCA9IHBwcnVuZS0+cHJlc2VudF9wYXJ0czsKIApA QCAtMjQxMyw3ICsyNDc3LDggQEAgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBhcnRp dGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQlpbnQJCQlwYXJ0aWR4ID0gcHBydW5lLT5z dWJwYXJ0X21hcFtpXTsKIAogCQkJaWYgKHBhcnRpZHggPj0gMCkKLQkJCQlmaW5kX21hdGNoaW5n X3N1YnBsYW5zX3JlY3Vyc2UocHJ1bmVkYXRhLAorCQkJCWZpbmRfbWF0Y2hpbmdfc3VicGxhbnNf cmVjdXJzZShwYXJlbnRfcGxhbiwKKwkJCQkJCQkJCQkJICAgcHJ1bmVkYXRhLAogCQkJCQkJCQkJ CQkgICAmcHJ1bmVkYXRhLT5wYXJ0cmVscHJ1bmVkYXRhW3BhcnRpZHhdLAogCQkJCQkJCQkJCQkg ICBpbml0aWFsX3BydW5lLCB2YWxpZHN1YnBsYW5zKTsKIAkJCWVsc2UKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlv bmluZy9wYXJ0cHJ1bmUuYwppbmRleCBjYTU0NjcxMDRkLi5hZTFkNjlmOTZjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBAIC0zNzgzLDEzICszNzgzLDggQEAgcGFydGtleV9k YXR1bV9mcm9tX2V4cHIoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkvKgogCQkg KiBXZSBzaG91bGQgbmV2ZXIgc2VlIGEgbm9uLUNvbnN0IGluIGEgc3RlcCB1bmxlc3MgdGhlIGNh bGxlciBoYXMKIAkJICogcGFzc2VkIGEgdmFsaWQgRXhwckNvbnRleHQuCi0JCSAqCi0JCSAqIFdo ZW4gY29udGV4dC0+cGxhbnN0YXRlIGlzIHZhbGlkLCBjb250ZXh0LT5leHByY29udGV4dCBpcyBz YW1lIGFzCi0JCSAqIGNvbnRleHQtPnBsYW5zdGF0ZS0+cHNfRXhwckNvbnRleHQuCiAJCSAqLwot CQlBc3NlcnQoY29udGV4dC0+cGxhbnN0YXRlICE9IE5VTEwgfHwgY29udGV4dC0+ZXhwcmNvbnRl eHQgIT0gTlVMTCk7Ci0JCUFzc2VydChjb250ZXh0LT5wbGFuc3RhdGUgPT0gTlVMTCB8fAotCQkJ ICAgKGNvbnRleHQtPmV4cHJjb250ZXh0ID09IGNvbnRleHQtPnBsYW5zdGF0ZS0+cHNfRXhwckNv bnRleHQpKTsKKwkJQXNzZXJ0KGNvbnRleHQtPmV4cHJjb250ZXh0ICE9IE5VTEwpOwogCiAJCWV4 cHJzdGF0ZSA9IGNvbnRleHQtPmV4cHJzdGF0ZXNbc3RhdGVpZHhdOwogCQllY3R4ID0gY29udGV4 dC0+ZXhwcmNvbnRleHQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFy dGl0aW9uLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggMzNk OTIyZmU4ZC4uN2U0NzBjODJmNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y1BhcnRpdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaApA QCAtNDIsNiArNDIsMTAgQEAgZXh0ZXJuIHZvaWQgRXhlY0NsZWFudXBUdXBsZVJvdXRpbmcoTW9k aWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKICAqIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIChzZWUg cGxhbm5vZGVzLmgpOyB0aG91Z2ggbm90ZSB0aGF0IGhlcmUsCiAgKiBzdWJwYXJ0X21hcCBjb250 YWlucyBpbmRleGVzIGludG8gUGFydGl0aW9uUHJ1bmluZ0RhdGEucGFydHJlbHBydW5lZGF0YVtd LgogICoKKyAqIGVzdGF0ZQkJCQkJCVRoZSBFU3RhdGUgZm9yIHRoZSBxdWVyeSBkb2luZyBydW4t dGltZSBwcnVuaW5nCisgKiBwYXJ0cmVsCQkJCQkJUGFydGl0aW9uZWQgdGFibGUgUmVsYXRpb247 IG9idGFpbmVkIGJ5CisgKiAJCQkJCQkJCUV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRl LCBydGkpLCB3aGVyZQorICoJCQkJCQkJCXJ0aSBpcyBQYXJ0aXRpb25lZFJlbFBydW5lSW5mby5y dGluZGV4LgogICogbnBhcnRzCQkJCQkJTGVuZ3RoIG9mIHN1YnBsYW5fbWFwW10gYW5kIHN1YnBh cnRfbWFwW10uCiAgKiBzdWJwbGFuX21hcAkJCQkJU3VicGxhbiBpbmRleCBieSBwYXJ0aXRpb24g aW5kZXgsIG9yIC0xLgogICogc3VicGFydF9tYXAJCQkJCVN1YnBhcnQgaW5kZXggYnkgcGFydGl0 aW9uIGluZGV4LCBvciAtMS4KQEAgLTUxLDYgKzU1LDggQEAgZXh0ZXJuIHZvaWQgRXhlY0NsZWFu dXBUdXBsZVJvdXRpbmcoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKICAqCQkJCQkJCQlwZXJm b3JtIGV4ZWN1dG9yIHN0YXJ0dXAgcHJ1bmluZy4KICAqIGV4ZWNfcHJ1bmluZ19zdGVwcwkJCUxp c3Qgb2YgUGFydGl0aW9uUHJ1bmVTdGVwcyB1c2VkIHRvCiAgKgkJCQkJCQkJcGVyZm9ybSBwZXIt c2NhbiBwcnVuaW5nLgorICogZWNvbnRleHQJCQkJCQlFeHByQ29udGV4dCB0byB1c2UgZm9yIGV2 YWx1YXRpbmcgcGFydGl0aW9uCisgKgkJCQkJCQkJa2V5CiAgKiBpbml0aWFsX2NvbnRleHQJCQkJ SWYgaW5pdGlhbF9wcnVuaW5nX3N0ZXBzIGlzbid0IE5JTCwgY29udGFpbnMKICAqCQkJCQkJCQl0 aGUgZGV0YWlscyBuZWVkZWQgdG8gZXhlY3V0ZSB0aG9zZSBzdGVwcy4KICAqIGV4ZWNfY29udGV4 dAkJCQkJSWYgZXhlY19wcnVuaW5nX3N0ZXBzIGlzbid0IE5JTCwgY29udGFpbnMKQEAgLTU4LDEy ICs2NCwxNSBAQCBleHRlcm4gdm9pZCBFeGVjQ2xlYW51cFR1cGxlUm91dGluZyhNb2RpZnlUYWJs ZVN0YXRlICptdHN0YXRlLAogICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5p bmdEYXRhCiB7CisJRVN0YXRlCSAgICplc3RhdGU7CisJUmVsYXRpb24JcGFydHJlbDsKIAlpbnQJ CQlucGFydHM7CiAJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJaW50CQkgICAqc3VicGFydF9tYXA7 CiAJQml0bWFwc2V0ICAqcHJlc2VudF9wYXJ0czsKIAlMaXN0CSAgICppbml0aWFsX3BydW5pbmdf c3RlcHM7CiAJTGlzdAkgICAqZXhlY19wcnVuaW5nX3N0ZXBzOworCUV4cHJDb250ZXh0ICplY29u dGV4dDsKIAlQYXJ0aXRpb25QcnVuZUNvbnRleHQgaW5pdGlhbF9jb250ZXh0OwogCVBhcnRpdGlv blBydW5lQ29udGV4dCBleGVjX2NvbnRleHQ7CiB9IFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGE7 CkBAIC0xMDUsNiArMTE0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmluZ0RhdGEK ICAqCQkJCQkJc3RhcnR1cCAoYXQgYW55IGhpZXJhcmNoeSBsZXZlbCkuCiAgKiBkb19leGVjX3By dW5lCQl0cnVlIGlmIHBydW5pbmcgc2hvdWxkIGJlIHBlcmZvcm1lZCBkdXJpbmcKICAqCQkJCQkJ ZXhlY3V0b3IgcnVuIChhdCBhbnkgaGllcmFyY2h5IGxldmVsKS4KKyAqIHBhcmVudF9wbGFuCQkJ UGFyZW50IHBsYW4gbm9kZSdzIFBsYW5TdGF0ZSB1c2VkIHRvIGluaXRpYWxpemUKKyAqCQkJCQkJ ZXhwcmVzc2lvbiBjb250YWluZWQgaW4gImV4ZWMiIHBydW5pbmcgc3RlcHMuCiAgKiBudW1fcGFy dHBydW5lZGF0YQlOdW1iZXIgb2YgaXRlbXMgaW4gInBhcnRwcnVuZWRhdGEiIGFycmF5LgogICog cGFydHBydW5lZGF0YQkJQXJyYXkgb2YgUGFydGl0aW9uUHJ1bmluZ0RhdGEgcG9pbnRlcnMgZm9y IHRoZSBwbGFuJ3MKICAqCQkJCQkJcGFydGl0aW9uZWQgcmVsYXRpb24ocyksIG9uZSBmb3IgZWFj aCBwYXJ0aXRpb25pbmcKQEAgLTExNyw2ICsxMjgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25QcnVuZVN0YXRlCiAJTWVtb3J5Q29udGV4dCBwcnVuZV9jb250ZXh0OwogCWJvb2wJCWRvX2lu aXRpYWxfcHJ1bmU7CiAJYm9vbAkJZG9fZXhlY19wcnVuZTsKKwlQbGFuU3RhdGUgICpwYXJlbnRf cGxhbjsKIAlpbnQJCQludW1fcGFydHBydW5lZGF0YTsKIAlQYXJ0aXRpb25QcnVuaW5nRGF0YSAq cGFydHBydW5lZGF0YVtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwogfSBQYXJ0aXRpb25QcnVuZVN0 YXRlOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oIGIv c3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCmluZGV4IDY5MjJlMDQ0MzAuLjBj YmNiNGZiNGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUu aAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKQEAgLTI2LDYgKzI2 LDcgQEAgc3RydWN0IFJlbE9wdEluZm87CiAgKgkJU3RvcmVzIGluZm9ybWF0aW9uIG5lZWRlZCBh dCBydW50aW1lIGZvciBwcnVuaW5nIGNvbXB1dGF0aW9ucwogICoJCXJlbGF0ZWQgdG8gYSBzaW5n bGUgcGFydGl0aW9uZWQgdGFibGUuCiAgKgorICogaW5pdGlhbGl6ZWQJCUhhcyB0aGUgaW5mb3Jt YXRpb24gaW4gdGhpcyBzdHJ1Y3QgYmVlbiBpbml0aWFsaXplZD8KICAqIHN0cmF0ZWd5CQkJUGFy dGl0aW9uIHN0cmF0ZWd5LCBlLmcuIExJU1QsIFJBTkdFLCBIQVNILgogICogcGFydG5hdHRzCQlO dW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgcGFydGl0aW9uIGtleS4KICAqIG5wYXJ0cwkJCU51bWJl ciBvZiBwYXJ0aXRpb25zIGluIHRoaXMgcGFydGl0aW9uZWQgdGFibGUuCkBAIC00OCw2ICs0OSw3 IEBAIHN0cnVjdCBSZWxPcHRJbmZvOwogICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVu ZUNvbnRleHQKIHsKKwlib29sCQlpbml0aWFsaXplZDsKIAljaGFyCQlzdHJhdGVneTsKIAlpbnQJ CQlwYXJ0bmF0dHM7CiAJaW50CQkJbnBhcnRzOwotLSAKMi40My4wCgo= --00000000000089c291062884af28 Content-Type: application/octet-stream; name="v58-0003-Perform-runtime-initial-pruning-outside-ExecInit.patch" Content-Disposition: attachment; filename="v58-0003-Perform-runtime-initial-pruning-outside-ExecInit.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4b9ol2h2 RnJvbSA5OWQyZmQzMzI0OWU2ODQ2Mjc3YmQwMmU2Y2RlODYwNmE5Y2UxMTdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNCBEZWMgMjAyNCAxNjoxNjo0OSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjU4 IDMvNF0gUGVyZm9ybSBydW50aW1lIGluaXRpYWwgcHJ1bmluZyBvdXRzaWRlCiBFeGVjSW5pdE5v ZGUoKQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9 VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKVGhpcyBjb21taXQgZm9sbG93 cyB1cCBvbiB0aGUgcHJldmlvdXMgY2hhbmdlIHRoYXQgbW92ZWQKUGFydGl0aW9uUHJ1bmVJbmZv cyBvdXQgb2YgaW5kaXZpZHVhbCBwbGFuIG5vZGVzIGludG8gYSBsaXN0IGluClBsYW5uZWRTdG10 LiBJdCBtb3ZlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgUGFydGl0aW9uUHJ1bmVTdGF0ZXMKYW5k IHJ1bnRpbWUgaW5pdGlhbCBwcnVuaW5nIG91dCBvZiBFeGVjSW5pdE5vZGUoKSBhbmQgaW50byBh IG5ldwpyb3V0aW5lLCBFeGVjRG9Jbml0aWFsUHJ1bmluZygpLCB3aGljaCBpcyBjYWxsZWQgYnkg SW5pdFBsYW4oKQpiZWZvcmUgRXhlY0luaXROb2RlKCkgaXMgaW52b2tlZCBvbiB0aGUgbWFpbiBw bGFuIHRyZWUgYW5kIHN1YnBsYW5zLgoKRXhlY0RvSW5pdGlhbFBydW5pbmcoKSBwZXJmb3JtcyB0 aGUgaW5pdGlhbCBwcnVuaW5nIGFuZCBzYXZlcyB0aGUKcmVzdWx04oCUYSBiaXRtYXBzZXQgb2Yg aW5kZXhlcyBmb3IgdGhlIHN1cnZpdmluZyBjaGlsZCBzdWJub2Rlc+KAlGluCmVzX3BhcnRfcHJ1 bmVfcmVzdWx0cywgYSBsaXN0IGluIEVTdGF0ZS4gVGhlIFBhcnRpdGlvblBydW5lU3RhdGVzCmNy ZWF0ZWQgZm9yIGluaXRpYWwgcHJ1bmluZyBhcmUgYWxzbyBzYXZlZCBpbiBlc19wYXJ0X3BydW5l X3N0YXRlcywKYW5vdGhlciBsaXN0IGluIEVTdGF0ZSwgZm9yIGxhdGVyIHVzZSBkdXJpbmcgZXhl YyBwcnVuaW5nLiBCb3RoIGxpc3RzCmFyZSBwYXJhbGxlbCB0byBlc19wYXJ0X3BydW5lX2luZm9z ICh3aGljaCBob2xkcyB0aGUKUGFydGl0aW9uUHJ1bmVJbmZvcyBmcm9tIFBsYW5uZWRTdG10KSwg YWxsb3dpbmcgdGhlbSB0byBzaGFyZSB0aGUKc2FtZSBpbmRleC4KClJldmlld2VkLWJ5OiBSb2Jl cnQgSGFhcwpSZXZpZXdlZC1ieTogVG9tYXMgVm9uZHJhCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3b29pdEVFcGJLQjBP X21nQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAg ICAgICAgfCAgMTIgKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICB8 IDEzMCArKysrKysrKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl QXBwZW5kLmMgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBw ZW5kLmMgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCAgIHwg IDExICsrLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgfCAgIDIgKwog NiBmaWxlcyBjaGFuZ2VkLCAxMjUgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYjQwZmUzODE3OC4uNWRjNDZmMmU5NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvbWF0 dmlldy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRv ci9leGVjdXRvci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNs dWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZvcmVpZ24vZmR3YXBpLmgi CiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKQEAgLTg1OCw2ICs4NTksMTcgQEAgSW5pdFBsYW4o UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJZXN0YXRlLT5lc19wbGFubmVkc3Rt dCA9IHBsYW5uZWRzdG10OwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBsYW5uZWRz dG10LT5wYXJ0UHJ1bmVJbmZvczsKIAorCS8qCisJICogUGVyZm9ybSBydW50aW1lICJpbml0aWFs IiBwcnVuaW5nIHRvIGlkZW50aWZ5IHdoaWNoIGNoaWxkIHN1YnBsYW5zLAorCSAqIGNvcnJlc3Bv bmRpbmcgdG8gdGhlIGNoaWxkcmVuIG9mIHBsYW4gbm9kZXMgdGhhdCBjb250YWluCisJICogUGFy dGl0aW9uUHJ1bmVJbmZvIHN1Y2ggYXMgQXBwZW5kLCB3aWxsIG5vdCBiZSBleGVjdXRlZC4gVGhl IHJlc3VsdHMsCisJICogd2hpY2ggYXJlIGJpdG1hcHNldHMgb2YgaW5kZXhlcyBvZiB0aGUgY2hp bGQgc3VicGxhbnMgdGhhdCB3aWxsIGJlCisJICogZXhlY3V0ZWQsIGFyZSBzYXZlZCBpbiBlc19w YXJ0X3BydW5lX3Jlc3VsdHMuICBUaGVzZSByZXN1bHRzIGNvcnJlc3BvbmQKKwkgKiB0byBlYWNo IFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSwgYW5kIHRoZSBlc19wYXJ0X3BydW5lX3Jlc3VsdHMg bGlzdCBpcworCSAqIHBhcmFsbGVsIHRvIGVzX3BhcnRfcHJ1bmVfaW5mb3MuCisJICovCisJRXhl Y0RvSW5pdGlhbFBydW5pbmcoZXN0YXRlKTsKKwogCS8qCiAJICogTmV4dCwgYnVpbGQgdGhlIEV4 ZWNSb3dNYXJrIGFycmF5IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMpLCBpZiBhbnkuCiAJICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggZjRkNDI1Y2Q0NS4uNDZkZDFjNzdh MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTc2MSw0OCArMTc2MSwx MDUgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0 ck1hcCAqYXR0ck1hcCkKICAqCiAgKiBGdW5jdGlvbnM6CiAgKgotICogRXhlY0luaXRQYXJ0aXRp b25QcnVuaW5nOgotICoJCUNyZWF0ZXMgdGhlIFBhcnRpdGlvblBydW5lU3RhdGUgcmVxdWlyZWQg YnkgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zLgotICoJCURldGFpbHMgc3RvcmVkIGluY2x1ZGUg aG93IHRvIG1hcCB0aGUgcGFydGl0aW9uIGluZGV4IHJldHVybmVkIGJ5IHRoZQotICoJCXBhcnRp dGlvbiBwcnVuaW5nIGNvZGUgaW50byBzdWJwbGFuIGluZGV4ZXMuICBBbHNvIGRldGVybWluZXMg dGhlIHNldAotICoJCW9mIHN1YnBsYW5zIHRvIGluaXRpYWxpemUgY29uc2lkZXJpbmcgdGhlIHJl c3VsdCBvZiBwZXJmb3JtaW5nIGluaXRpYWwKLSAqCQlwcnVuaW5nIHN0ZXBzIGlmIGFueS4gIE1h cHMgaW4gUGFydGl0aW9uUHJ1bmVTdGF0ZSBhcmUgdXBkYXRlZCB0bworICogRXhlY0RvSW5pdGlh bFBydW5pbmc6CisgKgkJUGVyZm9ybSBydW50aW1lICJpbml0aWFsIiBwcnVuaW5nLCBpZiBuZWNl c3NhcnksIHRvIGRldGVybWluZSB0aGUgc2V0CisgKgkJb2YgY2hpbGQgc3Vibm9kZXMgdGhhdCBu ZWVkIHRvIGJlIGluaXRpYWxpemVkIGR1cmluZyBFeGVjSW5pdE5vZGUoKSBmb3IKKyAqCQlhbGwg cGxhbiBub2RlcyB0aGF0IGNvbnRhaW4gYSBQYXJ0aXRpb25QcnVuZUluZm8uCisgKgorICogRXhl Y0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZzoKKyAqCQlVcGRhdGVzIHRoZSBQYXJ0aXRpb25QcnVu ZVN0YXRlIGZvdW5kIGF0IGdpdmVuIHBhcnRfcHJ1bmVfaW5kZXggaW4KKyAqCQlFU3RhdGUuZXNf cGFydF9wcnVuZV9zdGF0ZXMgZm9yIHVzZSBkdXJpbmcgImV4ZWMiIHBydW5pbmcgaWYgcmVxdWly ZWQuCisgKgkJQWxzbyByZXR1cm5zIHRoZSBzZXQgb2Ygc3VicGxhbnMgdG8gaW5pdGlhbGl6ZSB0 aGF0IHdvdWxkIGJlIHN0b3JlZCBhdAorICoJCXBhcnRfcHJ1bmVfaW5kZXggaW4gRVN0YXRlLmVz X3BhcnRfcHJ1bmVfcmVzdWx0IGJ5CisgKgkJRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4gIE1hcHMg aW4gUGFydGl0aW9uUHJ1bmVTdGF0ZSBhcmUgdXBkYXRlZCB0bwogICoJCWFjY291bnQgZm9yIGlu aXRpYWwgcHJ1bmluZyBwb3NzaWJseSBoYXZpbmcgZWxpbWluYXRlZCBzb21lIG9mIHRoZQogICoJ CXN1YnBsYW5zLgogICoKICAqIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFuczoKICAqCQlSZXR1cm5z IGluZGV4ZXMgb2YgbWF0Y2hpbmcgc3VicGxhbnMgYWZ0ZXIgZXZhbHVhdGluZyB0aGUgZXhwcmVz c2lvbnMKICAqCQl0aGF0IGFyZSBzYWZlIHRvIGV2YWx1YXRlIGF0IGEgZ2l2ZW4gcG9pbnQuICBU aGlzIGZ1bmN0aW9uIGlzIGZpcnN0Ci0gKgkJY2FsbGVkIGR1cmluZyBFeGVjSW5pdFBhcnRpdGlv blBydW5pbmcoKSB0byBmaW5kIHRoZSBpbml0aWFsbHkKLSAqCQltYXRjaGluZyBzdWJwbGFucyBi YXNlZCBvbiBwZXJmb3JtaW5nIHRoZSBpbml0aWFsIHBydW5pbmcgc3RlcHMgYW5kCi0gKgkJdGhl biBtdXN0IGJlIGNhbGxlZCBhZ2FpbiBlYWNoIHRpbWUgdGhlIHZhbHVlIG9mIGEgUGFyYW0gbGlz dGVkIGluCisgKgkJY2FsbGVkIGR1cmluZyBFeGVjRG9Jbml0aWFsUHJ1bmluZygpIHRvIGZpbmQg dGhlIGluaXRpYWxseSBtYXRjaGluZworICoJCXN1YnBsYW5zIGJhc2VkIG9uIHBlcmZvcm1pbmcg dGhlIGluaXRpYWwgcHJ1bmluZyBzdGVwcyBhbmQgdGhlbiBtdXN0IGJlCisgKgkJY2FsbGVkIGFn YWluIGVhY2ggdGltZSB0aGUgdmFsdWUgb2YgYSBQYXJhbSBsaXN0ZWQgaW4KICAqCQlQYXJ0aXRp b25QcnVuZVN0YXRlJ3MgJ2V4ZWNwYXJhbWlkcycgY2hhbmdlcy4KICAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICovCiAKIC8qCi0gKiBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcKLSAqCQlJbml0aWFsaXpl IGRhdGEgc3RydWN0dXJlIG5lZWRlZCBmb3IgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgYW5k Ci0gKgkJZG8gaW5pdGlhbCBwcnVuaW5nIGlmIG5lZWRlZAorICogRXhlY0RvSW5pdGlhbFBydW5p bmcKKyAqCQlQZXJmb3JtIHJ1bnRpbWUgImluaXRpYWwiIHBydW5pbmcsIGlmIG5lY2Vzc2FyeSwg dG8gZGV0ZXJtaW5lIHRoZSBzZXQKKyAqCQlvZiBjaGlsZCBzdWJub2RlcyB0aGF0IG5lZWQgdG8g YmUgaW5pdGlhbGl6ZWQgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIGZvcgorICoJCXBsYW4gbm9kZXMg dGhhdCBzdXBwb3J0IHBhcnRpdGlvbiBwcnVuaW5nLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXRl cmF0ZXMgb3ZlciBlYWNoIFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSBpbgorICogZXN0YXRlLT5l c19wYXJ0X3BydW5lX2luZm9zLiBGb3IgZWFjaCBlbnRyeSwgaXQgY3JlYXRlcyBhIFBhcnRpdGlv blBydW5lU3RhdGUKKyAqIGFuZCBhZGRzIGl0IHRvIGVzX3BhcnRfcHJ1bmVfc3RhdGVzLCB3aGVy ZSBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKCkgY2FuCisgKiBhY2Nlc3MgaXQgZm9yIHVz ZSBkdXJpbmcgImV4ZWMiIHBydW5pbmcuCisgKgorICogSWYgaW5pdGlhbCBwcnVuaW5nIHN0ZXBz IGV4aXN0IGZvciBhIFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSwgdGhpcyBmdW5jdGlvbgorICog ZXhlY3V0ZXMgdGhvc2UgcHJ1bmluZyBzdGVwcyBhbmQgc3RvcmVzIHRoZSByZXN1bHQgYXMgYSBi aXRtYXBzZXQgb2YgdmFsaWQKKyAqIGNoaWxkIHN1YnBsYW5zLCBpZGVudGlmeWluZyB3aGljaCBz dWJwbGFucyBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgZm9yCisgKiBleGVjdXRpb24uICBUaGUgcmVz dWx0cyBhcmUgc2F2ZWQgaW4gZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMuCisgKgorICog SWYgbm8gaW5pdGlhbCBwcnVuaW5nIGlzIHBlcmZvcm1lZCBmb3IgYSBnaXZlbiBQYXJ0aXRpb25Q cnVuZUluZm8sIGEgTlVMTAorICogZW50cnkgIGlzIHN0aWxsIGFkZGVkIHRvIGVzX3BhcnRfcHJ1 bmVfcmVzdWx0cyB0byBtYWludGFpbiBhbGlnbm1lbnQgd2l0aAorICogZXNfcGFydF9wcnVuZV9p bmZvcy4gVGhpcyBlbnN1cmVzIHRoYXQgRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygpIGNh bgorICogdXNlIHRoZSBzYW1lIGluZGV4IHRvIHJldHJpZXZlIHRoZSBwcnVuaW5nIHJlc3VsdHMu CisgKi8KK3ZvaWQKK0V4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQoreworCUxp c3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9z KQorCXsKKwkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8gPSBsZmlyc3Rfbm9kZShQYXJ0 aXRpb25QcnVuZUluZm8sIGxjKTsKKwkJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsK KwkJQml0bWFwc2V0ICAqdmFsaWRzdWJwbGFucyA9IE5VTEw7CisKKwkJLyogQ3JlYXRlIGFuZCBz YXZlIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlLiAqLworCQlwcnVuZXN0YXRlID0gQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShlc3RhdGUsIHBydW5laW5mbyk7CisJCWVzdGF0ZS0+ZXNfcGFydF9w cnVuZV9zdGF0ZXMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMsCisJCQkJ CQkJCQkJCSAgIHBydW5lc3RhdGUpOworCisJCS8qCisJCSAqIFBlcmZvcm0gaW5pdGlhbCBwcnVu aW5nIHN0ZXBzLCBpZiBhbnksIGFuZCBzYXZlIHRoZSByZXN1bHQKKwkJICogYml0bWFwc2V0IG9y IE5VTEwgYXMgZGVzY3JpYmVkIGluIHRoZSBoZWFkZXIgY29tbWVudC4KKwkJICovCisJCWlmIChw cnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lKQorCQkJdmFsaWRzdWJwbGFucyA9IEV4ZWNGaW5k TWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlKTsKKwkJZXN0YXRlLT5lc19wYXJ0X3By dW5lX3Jlc3VsdHMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzLAorCQkJ CQkJCQkJCQkJdmFsaWRzdWJwbGFucyk7CisJfQorfQorCisvKgorICogRXhlY0luaXRQYXJ0aXRp b25FeGVjUHJ1bmluZworICoJCUluaXRpYWxpemUgdGhlIGRhdGEgc3RydWN0dXJlcyBuZWVkZWQg Zm9yIHJ1bnRpbWUgImV4ZWMiIHBhcnRpdGlvbgorICoJCXBydW5pbmcgYW5kIHJldHVybiB0aGUg cmVzdWx0IG9mIGluaXRpYWwgcHJ1bmluZywgaWYgYXZhaWxhYmxlLgogICoKICAqICdyZWxpZHMn IGlkZW50aWZpZXMgdGhlIHJlbGF0aW9uIHRvIHdoaWNoIGJvdGggdGhlIHBhcmVudCBwbGFuIGFu ZCB0aGUKICAqIFBhcnRpdGlvblBydW5lSW5mbyBnaXZlbiBieSAncGFydF9wcnVuZV9pbmRleCcg YmVsb25nLgogICoKLSAqIE9uIHJldHVybiwgKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyBpcyBh c3NpZ25lZCB0aGUgc2V0IG9mIGluZGV4ZXMgb2YKLSAqIGNoaWxkIHN1YnBsYW5zIHRoYXQgbXVz dCBiZSBpbml0aWFsaXplZCBhbG9uZyB3aXRoIHRoZSBwYXJlbnQgcGxhbiBub2RlLgotICogSW5p dGlhbCBwcnVuaW5nIGlzIHBlcmZvcm1lZCBoZXJlIGlmIG5lZWRlZCBhbmQgaW4gdGhhdCBjYXNl IG9ubHkgdGhlCi0gKiBzdXJ2aXZpbmcgc3VicGxhbnMnIGluZGV4ZXMgYXJlIGFkZGVkLgorICog VGhlIFBhcnRpdGlvblBydW5lU3RhdGUgd291bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgRXhlY0Rv SW5pdGlhbFBydW5pbmcoKQorICogYW5kIHN0b3JlZCBhcyB0aGUgcGFydF9wcnVuZV9pbmRleCd0 aCBlbGVtZW50IG9mIEVTdGF0ZS5lc19wYXJ0X3BydW5lX3N0YXRlcy4KICAqCi0gKiBJZiBzdWJw bGFucyBhcmUgaW5kZWVkIHBydW5lZCwgc3VicGxhbl9tYXAgYXJyYXlzIGNvbnRhaW5lZCBpbiB0 aGUgcmV0dXJuZWQKLSAqIFBhcnRpdGlvblBydW5lU3RhdGUgYXJlIHJlLXNlcXVlbmNlZCB0byBu b3QgY291bnQgdGhvc2UsIHRob3VnaCBvbmx5IGlmIHRoZQotICogbWFwcyB3aWxsIGJlIG5lZWRl ZCBmb3Igc3Vic2VxdWVudCBleGVjdXRpb24gcHJ1bmluZyBwYXNzZXMuCisgKiBPbiByZXR1cm4s ICppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgaXMgYXNzaWduZWQgdGhlIHNldCBvZiBpbmRleGVz IG9mIGNoaWxkCisgKiBzdWJwbGFucyB0aGF0IG11c3QgYmUgaW5pdGlhbGl6ZWQuIEluaXRpYWwg cHJ1bmluZyB3b3VsZCBoYXZlIGJlZW4gcGVyZm9ybWVkCisgKiBieSBFeGVjRG9Jbml0aWFsUHJ1 bmluZygpIGlmIG5lY2Vzc2FyeSwgYW5kIHRoZSBiaXRtYXBzZXQgb2Ygc3Vydml2aW5nCisgKiBz dWJwbGFucycgaW5kZXhlcyB3b3VsZCBoYXZlIGJlZW4gc3RvcmVkIGFzIHRoZSBwYXJ0X3BydW5l X2luZGV4J3RoIGVsZW1lbnQKKyAqIG9mIEVTdGF0ZS5lc19wYXJ0X3BydW5lX3Jlc3VsdHMuCisg KgorICogSWYgc3VicGxhbnMgd2VyZSBwcnVuZWQgZHVyaW5nIGluaXRpYWwgcHJ1bmluZywgdGhl IHN1YnBsYW5fbWFwIGFycmF5cyBpbgorICogdGhlIHJldHVybmVkIFBhcnRpdGlvblBydW5lU3Rh dGUgYXJlIHJlLXNlcXVlbmNlZCB0byBleGNsdWRlIHRob3NlIHN1YnBsYW5zLAorICogYnV0IG9u bHkgaWYgdGhlIG1hcHMgd2lsbCBiZSBuZWVkZWQgZm9yIHN1YnNlcXVlbnQgZXhlY3V0aW9uIHBy dW5pbmcgcGFzc2VzLgogICovCiBQYXJ0aXRpb25QcnVuZVN0YXRlICoKLUV4ZWNJbml0UGFydGl0 aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKLQkJCQkJCSBpbnQgbl90b3RhbF9zdWJw bGFucywKLQkJCQkJCSBpbnQgcGFydF9wcnVuZV9pbmRleCwKLQkJCQkJCSBCaXRtYXBzZXQgKnJl bGlkcywKLQkJCQkJCSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpCitFeGVj SW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAorCQkJCQkJCSBp bnQgbl90b3RhbF9zdWJwbGFucywKKwkJCQkJCQkgaW50IHBhcnRfcHJ1bmVfaW5kZXgsCisJCQkJ CQkJIEJpdG1hcHNldCAqcmVsaWRzLAorCQkJCQkJCSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFs aWRfc3VicGxhbnMpCiB7CiAJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIAlFU3Rh dGUJICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7CkBAIC0xODE4LDExICsxODc1LDEyIEBA IEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJCSBibXNU b1N0cmluZyhwcnVuZWluZm8tPnJlbGlkcyksIHBhcnRfcHJ1bmVfaW5kZXgsCiAJCQkgYm1zVG9T dHJpbmcocmVsaWRzKSk7CiAKLQkvKiBXZSBtYXkgbmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQg dG8gZXZhbHVhdGUgcGFydGl0aW9uIGV4cHJzICovCi0JRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVz dGF0ZSwgcGxhbnN0YXRlKTsKLQotCS8qIENyZWF0ZSB0aGUgd29ya2luZyBkYXRhIHN0cnVjdHVy ZSBmb3IgcHJ1bmluZyAqLwotCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRl KGVzdGF0ZSwgcHJ1bmVpbmZvKTsKKwkvKgorCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgbXVz dCBoYXZlIGluaXRpYWxpemVkIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlIHRvCisJICogcGVyZm9y bSB0aGUgaW5pdGlhbCBwcnVuaW5nLgorCSAqLworCXBydW5lc3RhdGUgPSBsaXN0X250aChlc3Rh dGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzLCBwYXJ0X3BydW5lX2luZGV4KTsKKwlBc3NlcnQocHJ1 bmVzdGF0ZSAhPSBOVUxMKTsKIAogCS8qCiAJICogU3RvcmUgUGxhblN0YXRlIGZvciB1c2luZyBp dCB0byBpbml0aWFsaXplIGV4ZWMgcHJ1bmluZyBjb250ZXh0cyBsYXRlcgpAQCAtMTgzMSwxMSAr MTg4OSwxMSBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUs CiAJaWYgKHBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUpCiAJCXBydW5lc3RhdGUtPnBhcmVudF9w bGFuID0gcGxhbnN0YXRlOwogCi0JLyoKLQkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9u IHBydW5lIHBhc3MsIGlmIHJlcXVpcmVkLgotCSAqLworCS8qIFVzZSB0aGUgcmVzdWx0IG9mIGlu aXRpYWwgcHJ1bmluZyBkb25lIGJ5IEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkuICovCiAJaWYgKHBy dW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUpCi0JCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMg PSBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSk7CisJCSppbml0aWFs bHlfdmFsaWRfc3VicGxhbnMgPSBsaXN0X250aF9ub2RlKEJpdG1hcHNldCwKKwkJCQkJCQkJCQkJ CSAgZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMsCisJCQkJCQkJCQkJCQkgIHBhcnRfcHJ1 bmVfaW5kZXgpOwogCWVsc2UKIAl7CiAJCS8qIE5vIHBydW5pbmcsIHNvIHdlJ2xsIG5lZWQgdG8g aW5pdGlhbGl6ZSBhbGwgc3VicGxhbnMgKi8KQEAgLTE4NDYsOCArMTkwNCw4IEBAIEV4ZWNJbml0 UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAogCS8qCiAJICogUmUtc2Vx dWVuY2Ugc3VicGxhbiBpbmRleGVzIGNvbnRhaW5lZCBpbiBwcnVuZXN0YXRlIHRvIGFjY291bnQg Zm9yIGFueQotCSAqIHRoYXQgd2VyZSByZW1vdmVkIGFib3ZlIGR1ZSB0byBpbml0aWFsIHBydW5p bmcuICBObyBuZWVkIHRvIGRvIHRoaXMgaWYKLQkgKiBubyBzdGVwcyB3ZXJlIHJlbW92ZWQuCisJ ICogdGhhdCB3ZXJlIHJlbW92ZWQgZHVlIHRvIGluaXRpYWwgcHJ1bmluZy4gIE5vIG5lZWQgdG8g ZG8gdGhpcyBpZiBubworCSAqIHBhcnRpdGlvbnMgd2VyZSByZW1vdmVkLgogCSAqLwogCWlmIChi bXNfbnVtX21lbWJlcnMoKmluaXRpYWxseV92YWxpZF9zdWJwbGFucykgPCBuX3RvdGFsX3N1YnBs YW5zKQogCXsKQEAgLTE4NjgsNiArMTkyNiw4IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQ bGFuU3RhdGUgKnBsYW5zdGF0ZSwKIC8qCiAgKiBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlCiAg KgkJQnVpbGQgdGhlIGRhdGEgc3RydWN0dXJlIHJlcXVpcmVkIGZvciBjYWxsaW5nIEV4ZWNGaW5k TWF0Y2hpbmdTdWJQbGFucworICogCQlEZXRhaWxzIHN0b3JlZCBpbmNsdWRlIGhvdyB0byBtYXAg dGhlIHBhcnRpdGlvbiBpbmRleCByZXR1cm5lZCBieSB0aGUKKyAqCQlwYXJ0aXRpb24gcHJ1bmlu ZyBjb2RlIGludG8gc3VicGxhbiBpbmRleGVzLgogICoKICAqICdwcnVuZWluZm8nIGlzIGEgUGFy dGl0aW9uUHJ1bmVJbmZvIGFzIGdlbmVyYXRlZCBieQogICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVp bmZvLiAgSGVyZSB3ZSBidWlsZCBhIFBhcnRpdGlvblBydW5lU3RhdGUgY29udGFpbmluZyBhCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggZGU3ZWJhYjVjMi4uYjc3ZmY4NDg0MCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtMTQzLDExICsxNDMsMTEgQEAgRXhlY0luaXRB cHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogc3Vi cGxhbnMgdG8gaW5pdGlhbGl6ZSAodmFsaWRzdWJwbGFucykgYnkgdGFraW5nIGludG8gYWNjb3Vu dCB0aGUKIAkJICogcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5pdGlhbCBwcnVuaW5nIGlmIGFueS4K IAkJICovCi0JCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJmFwcGVuZHN0 YXRlLT5wcywKLQkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyksCi0J CQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmRleCwKLQkJCQkJCQkJCQkJICBub2RlLT5h cHByZWxpZHMsCi0JCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOworCQlwcnVuZXN0YXRlID0g RXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygmYXBwZW5kc3RhdGUtPnBzLAorCQkJCQkJCQkJ CQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyksCisJCQkJCQkJCQkJCQkgIG5vZGUt PnBhcnRfcHJ1bmVfaW5kZXgsCisJCQkJCQkJCQkJCQkgIG5vZGUtPmFwcHJlbGlkcywKKwkJCQkJ CQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOwogCQlhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUg PSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggM2VkOTE4MDhkZC4u ZTIwMzJhZmNiNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBw ZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKQEAgLTkx LDExICs5MSwxMSBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogc3VicGxhbnMgdG8gaW5pdGlhbGl6ZSAodmFs aWRzdWJwbGFucykgYnkgdGFraW5nIGludG8gYWNjb3VudCB0aGUKIAkJICogcmVzdWx0IG9mIHBl cmZvcm1pbmcgaW5pdGlhbCBwcnVuaW5nIGlmIGFueS4KIAkJICovCi0JCXBydW5lc3RhdGUgPSBF eGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJm1lcmdlc3RhdGUtPnBzLAotCQkJCQkJCQkJCQkgIGxp c3RfbGVuZ3RoKG5vZGUtPm1lcmdlcGxhbnMpLAotCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1 bmVfaW5kZXgsCi0JCQkJCQkJCQkJCSAgbm9kZS0+YXBwcmVsaWRzLAotCQkJCQkJCQkJCQkgICZ2 YWxpZHN1YnBsYW5zKTsKKwkJcHJ1bmVzdGF0ZSA9IEV4ZWNJbml0UGFydGl0aW9uRXhlY1BydW5p bmcoJm1lcmdlc3RhdGUtPnBzLAorCQkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5tZXJn ZXBsYW5zKSwKKwkJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmRleCwKKwkJCQkJCQkJ CQkJCSAgbm9kZS0+YXBwcmVsaWRzLAorCQkJCQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7CiAJ CW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1z X251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjUGFydGl0aW9uLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0 aW9uLmgKaW5kZXggN2U0NzBjODJmNi4uMGIzNDc4NDkyMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uaApAQCAtMTMzLDExICsxMzMsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0 aW9uUHJ1bmVTdGF0ZQogCVBhcnRpdGlvblBydW5pbmdEYXRhICpwYXJ0cHJ1bmVkYXRhW0ZMRVhJ QkxFX0FSUkFZX01FTUJFUl07CiB9IFBhcnRpdGlvblBydW5lU3RhdGU7CiAKLWV4dGVybiBQYXJ0 aXRpb25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFu c3RhdGUsCi0JCQkJCQkJCQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAotCQkJCQkJCQkJCQkJ CSBpbnQgcGFydF9wcnVuZV9pbmRleCwKLQkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICpyZWxpZHMs Ci0JCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyk7Cit2 b2lkIEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKTsKK2V4dGVybiBQYXJ0aXRp b25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLAorCQkJCQkJCQkJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCisJCQkJCQkJCQkJ CQkJCSBpbnQgcGFydF9wcnVuZV9pbmRleCwKKwkJCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqcmVs aWRzLAorCQkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5z KTsKIGV4dGVybiBCaXRtYXBzZXQgKkV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25Q cnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggYjE0NzFlNjhmZS4uZjkzMDYxYzdiZiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKQEAgLTY0MCw2ICs2NDAsOCBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUK IAlMaXN0CSAgICplc19ydGVwZXJtaW5mb3M7CS8qIExpc3Qgb2YgUlRFUGVybWlzc2lvbkluZm8g Ki8KIAlQbGFubmVkU3RtdCAqZXNfcGxhbm5lZHN0bXQ7CS8qIGxpbmsgdG8gdG9wIG9mIHBsYW4g dHJlZSAqLwogCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfaW5mb3M7CS8qIExpc3Qgb2YgUGFydGl0 aW9uUHJ1bmVJbmZvICovCisJTGlzdAkgICAqZXNfcGFydF9wcnVuZV9zdGF0ZXM7CS8qIExpc3Qg b2YgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqLworCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfcmVzdWx0 czsJLyogTGlzdCBvZiBCaXRtYXBzZXQgKi8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0Owkv KiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAqLwogCiAJSnVua0ZpbHRlciAqZXNfanVua0Zp bHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8KLS0gCjIuNDMuMAoK --00000000000089c291062884af28 Content-Type: application/octet-stream; name="v58-0004-Defer-locking-of-runtime-prunable-relations-in-c.patch" Content-Disposition: attachment; filename="v58-0004-Defer-locking-of-runtime-prunable-relations-in-c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4b9ol2i3 RnJvbSBiZjkwMWRiZTc2MWY1YTNmYjJiMTBjNDgwYTY2NzgwZjU5YWYxOTEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNCBEZWMgMjAyNCAxNjoxNjo1NiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjU4 IDQvNF0gRGVmZXIgbG9ja2luZyBvZiBydW50aW1lLXBydW5hYmxlIHJlbGF0aW9ucyBpbiBjYWNo ZWQKIHBsYW5zCgpBY3F1aXJlRXhlY3V0b3JMb2NrcygpIGluIHBsYW5jYWNoZS5jIGxvY2tzIGFs bCByZWxhdGlvbnMgaW4gYQpwbGFuJ3MgcmFuZ2UgdGFibGUgdG8gZW5zdXJlIHRoZSBwbGFuIGlz IHNhZmUgZm9yIGV4ZWN1dGlvbi4gSG93ZXZlciwKdGhpcyBhcHByb2FjaCBhbHNvIGxvY2tzIHJ1 bnRpbWUtcHJ1bmFibGUgcmVsYXRpb25zIHRoYXQgd2lsbCBsYXRlcgpiZSBwcnVuZWQgZHVyaW5n ICJpbml0aWFsIiBydW50aW1lIHBydW5pbmcsIGludHJvZHVjaW5nIHVubmVjZXNzYXJ5Cm92ZXJo ZWFkLiBUaGlzIGNvbW1pdCBkZWZlcnMgbG9ja2luZyBmb3Igc3VjaCByZWxhdGlvbnMgYW5kIGVu c3VyZXMKdGhhdCBhbnkgaW52YWxpZGF0aW9uIGNhdXNlZCBieSB0aGlzIGRlZmVycmFsIGlzIGhh bmRsZWQgYnkKcmVwbGFubmluZyB3aGVuIG5lY2Vzc2FyeS4KCiogTG9ja2luZyBjaGFuZ2VzOgoK VGhlIHBsYW5uZXIgbm93IHRyYWNrcyAidW5wcnVuYWJsZSIgcmVsYXRpb25zIHVzaW5nIHRoZSBu ZXcKUGxhbm5lZFN0bXQudW5wcnVuYWJsZVJlbGlkcyBmaWVsZCwgd2hpY2ggaXMgY29tcHV0ZWQg ZHVyaW5nCnNldF9wbGFuX3JlZnMoKSBieSBzdWJ0cmFjdGluZyBydW50aW1lLXBydW5hYmxlIHJl bGF0aW9uIFJUIGluZGV4ZXMKKGlkZW50aWZpZWQgZnJvbSBQYXJ0aXRpb25QcnVuZUluZm9zKSBm cm9tIGFsbCBSVCBpbmRleGVzLgpBY3F1aXJlRXhlY3V0b3JMb2NrcygpIGxvY2tzIG9ubHkgdGhl c2UgdW5wcnVuYWJsZSByZWxhdGlvbnMuCgpEdXJpbmcgZXhlY3V0b3Igc3RhcnR1cCwgRXhlY0Rv SW5pdGlhbFBydW5pbmcoKSBpZGVudGlmaWVzIHVucHJ1bmVkCnBhcnRpdGlvbnMgYW5kIGFjcXVp cmVzIGxvY2tzIG9uIHRoZW0uIEEgbmV3IGVzX3VucHJ1bmVkX3JlbGlkcyBmaWVsZAppcyBhZGRl ZCB0byBFU3RhdGUgdG8gZW5zdXJlIHRoYXQgc3Vic2VxdWVudCBpbml0aWFsaXphdGlvbiBzdGVw cwpwcm9jZXNzIG9ubHkgbG9ja2VkIHJlbGF0aW9ucy4gSXQgaXMgaW5pdGlhbGx5IHBvcHVsYXRl ZCB3aXRoClBsYW5uZWRTdG10LnVucHJ1bmFibGVSZWxpZHMgYW5kIHVwZGF0ZWQgYnkgRXhlY0Rv SW5pdGlhbFBydW5pbmcoKQp3aXRoIHRoZSBSVCBpbmRleGVzIG9mIHRoZSB1bnBydW5lZCBwYXJ0 aXRpb25zLiBUbyBwb3B1bGF0ZQplc191bnBydW5lZF9yZWxpZHMsIFBhcnRpdGlvbmVkUmVsUHJ1 bmVJbmZvIGFuZApQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhIG5vdyBpbmNsdWRlIGEgbGVhZnBh cnRfcnRpX21hcFtdIHRvIG1hcApwYXJ0aXRpb24gaW5kZXhlcyAoYXMgZGV0ZXJtaW5lZCBieSBn ZXRfbWF0Y2hpbmdfcGFydGl0aW9ucygpKSB0bwp0aGVpciBjb3JyZXNwb25kaW5nIFJUIGluZGV4 ZXMuCgpFeGVjdXRvciBjb2RlIHRoYXQgd29ya3Mgd2l0aCBjaGlsZCByZXN1bHQgcmVsYXRpb25z IGFuZCBjaGlsZApSb3dNYXJrcyByZXF1aXJlIGFkanVzdG1lbnRzIGJlY2F1c2UgcHJ1bmVkIHJl bGF0aW9ucyBhcmUgbm8gbG9uZ2VyCmxvY2tlZCwgYmVjYXVzZSB3aXRob3V0IHN1Y2ggYWRqdXN0 bWVudHMsIHRoZSBleGVjdXRvciBjb3VsZCBhdHRlbXB0CnRvIHByb2Nlc3MgcmVzdWx0IHJlbGF0 aW9ucyBvciBSb3dNYXJrcyBmb3IgcHJ1bmVkIHBhcnRpdGlvbnMuClNwZWNpZmljYWxseSwgRXhl Y0luaXRNb2RpZnlUYWJsZSgpIHRyaW1zIHJlc3VsdCByZWxhdGlvbi1yZWxhdGVkCmxpc3RzIHJl c3VsdFJlbGF0aW9ucywgd2l0aENoZWNrT3B0aW9uTGlzdHMsIHJldHVybmluZ0xpc3RzLCBhbmQK dXBkYXRlQ29sbm9zTGlzdHMgdG8gaW5jbHVkZSBvbmx5IHVucHJ1bmVkIHBhcnRpdGlvbnMgYnkg Y2hlY2tpbmcKZXNfcHJ1bmVkX3JlbGlkcy4gSXQgYWxzbyBjcmVhdGVzIFJlc3VsdFJlbEluZm8g c3RydWN0cyBvbmx5IGZvcgp0aGVzZSB1bnBydW5lZCBwYXJ0aXRpb25zLiBTaW1pbGFybHksIGNo aWxkIFJvd01hcmtzIHdob3NlIG93bmluZwpyZWxhdGlvbnMgYXJlIHBydW5lZCBhcmUgbm93IGln bm9yZWQsIGFnYWluIGJ5IGNoZWNraW5nCmVzX3VucHJ1bmVkX3JlbGlkcywgZW5zdXJpbmcgb25s eSB0aG9zZSBhc3NvY2lhdGVkIHdpdGggdW5wcnVuZWQKcmVsYXRpb25zIGFyZSBwcm9jZXNzZWQu CgpGaW5hbGx5LCBFeGVjQ2hlY2tQZXJtaXNzaW9ucygpIG5vdyBpbmNsdWRlcyBhbiBBc3NlcnQg dG8gdmVyaWZ5IHRoYXQKYWxsIHJlbGF0aW9ucyB1bmRlcmdvaW5nIHBlcm1pc3Npb24gY2hlY2tz IGhhdmUgYmVlbiBwcm9wZXJseSBsb2NrZWQuClRoaXMgc2FmZWd1YXJkIGhlbHBzIGNhdGNoIGFu eSBjYXNlcyB3aGVyZSByZWxhdGlvbnMgdGhhdCBzaG91bGQgaGF2ZQpiZWVuIGFkZGVkIHRvIHRo ZSB1bnBydW5hYmxlUmVsaWRzIHNldCB3ZXJlIG1pc3NlZCBkdXJpbmcgcGxhbm5pbmcuCgoqIENo YW5nZWQgcmVsYXRlZCB0byBoYW5kbGluZyBwbGFuIGludmFsaWRhdGlvbjoKCkRlZmVycmluZyBs b2NrcyBpbnRyb2R1Y2VzIGEgd2luZG93IHdoZXJlIHBydW5hYmxlIHJlbGF0aW9ucyBtYXkgYmUK YWx0ZXJlZCBieSBjb25jdXJyZW50IERETCwgaW52YWxpZGF0aW5nIHRoZSBwbGFuLiBUbyBlbnN1 cmUKY29ycmVjdG5lc3MsIGEgbmV3IEV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKCkgZnVuY3Rpb24g dGhhdCB3cmFwcwpFeGVjdXRvclN0YXJ0KCkgaXMgYWRkZWQgdG8gZGV0ZWN0IGFuZCBoYW5kbGUg aW52YWxpZCBwbGFucyBjYXVzZWQgYnkKZGVmZXJyZWQgbG9ja2luZy4gV2hlbiBpbnZhbGlkYXRp b24gb2NjdXJzLCBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpCnVwZGF0ZXMgYWxsIHBsYW5zIGlu IHRoZSBDYWNoZWRQbGFuIHVzaW5nIHRoZSBuZXcgVXBkYXRlQ2FjaGVkUGxhbigpCmZ1bmN0aW9u IGFuZCByZXRyaWVzIGV4ZWN1dGlvbiB3aXRoIHRoZSByZWZyZXNoZWQgcGxhbi4KClVwZGF0ZUNh Y2hlZFBsYW4oKSByZXBsYWNlcyBzdGFsZSBwbGFucyBpbiBDYWNoZWRQbGFuLnN0bXRfbGlzdC4g VG8KZW5hYmxlIHRoaXMsIGEgbmV3IENhY2hlZFBsYW4uc3RtdF9jb250ZXh0IGlzIGludHJvZHVj ZWQgYXMgYSBjaGlsZApjb250ZXh0IG9mIENhY2hlZFBsYW4uY29udGV4dC4gVGhpcyBzZXBhcmF0 ZXMgUGxhbm5lZFN0bXRzIGZyb20gdGhlCnBhcmVudCBjb250ZXh0LCBhbGxvd2luZyBVcGRhdGVD YWNoZWRQbGFuKCkgdG8gZnJlZSBvbGQgUGxhbm5lZFN0bXRzCndoZW4gcmVwbGFjaW5nIHRoZW0g d2l0aCBuZXcgcGxhbnMsIHdoaWxlIHByZXNlcnZpbmcgdGhlIENhY2hlZFBsYW4Kc3RydWN0dXJl LCBpbmNsdWRpbmcgdGhlIExpc3QgY29udGFpbmluZyB0aGUgc3RhdGVtZW50cy4KCiogVGVzdGlu ZwoKVGVzdHMgdXNpbmcgdGhlIGRlbGF5X2V4ZWN1dGlvbiBtb2R1bGUgdmVyaWZ5IHNjZW5hcmlv cyB3aGVyZSBhIGNhY2hlZApwbGFuIGJlY29tZXMgaW52YWxpZCBkdWUgdG8gY2hhbmdlcyBpbiBw cnVuYWJsZSByZWxhdGlvbnMgYWZ0ZXIKZGVmZXJyZWQgbG9ja3MgYXJlIHRha2VuLgoKKiBOb3Rl IHRvIGV4dGVuc2lvbiBhdXRob3JzOgoKRXhlY3V0b3JTdGFydF9ob29rIGltcGxlbWVudGF0aW9u cyBzaG91bGQgdmVyaWZ5IHBsYW4gdmFsaWRpdHkgYWZ0ZXIKY2FsbGluZyBzdGFuZGFyZF9FeGVj dXRvclN0YXJ0KCkgdG8gZW5zdXJlIHRoZXkgYXJlIG5vdCB3b3JraW5nIHdpdGgKYW4gaW52YWxp ZCBwbGFuLiBUaGUgZm9sbG93aW5nIGNoZWNrIGNhbiBiZSB1c2VkOgoKICAgIC8qIFRoZSBwbGFu IG1heSBoYXZlIGJlY29tZSBpbnZhbGlkIGR1cmluZyBFeGVjdXRvclN0YXJ0KCkgKi8KICAgIGlm ICghRXhlY1BsYW5TdGlsbFZhbGlkKHF1ZXJ5RGVzYy0+ZXN0YXRlKSkKICAgICAgICByZXR1cm47 CgpBZGRpdGlvbmFsbHksIGFueSBSVCBpbmRleCBpbnNwZWN0ZWQgYnkgYW4gZXh0ZW5zaW9uIHNo b3VsZCBiZQpjaGVja2VkIGFnYWluc3QgRVN0YXRlLmVzX3VucHJ1bmVkX3JlbGlkcyBiZWZvcmUg cHJvY2Vzc2luZyB0aGUKcmVsYXRpb24sIHBhcnRpY3VsYXJseSBpZiB0aGUgcmVsYXRpb24gY291 bGQgYmUgYSBjaGlsZCByZWxhdGlvbgpzdWJqZWN0IHRvIGluaXRpYWwgcGFydGl0aW9uIHBydW5p bmcuICBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlCmV4dGVuc2lvbnMgY2FuIG5vIGxvbmdlciBh c3N1bWUgdGhhdCBhbGwgcmFuZ2UgdGFibGUgcmVsYXRpb25zIGFyZQpsb2NrZWQ7IG9ubHkgdGhv c2UgaW4gZXNfdW5wcnVuZWRfcmVsaWRzIGFyZS4gIEZvciByZWZlcmVuY2UsIHNlZQpob3cgSW5p dFBsYW4oKSBwcm9jZXNzZXMgZW50cmllcyBmcm9tIFBsYW5uZWRTdG10LnJvd01hcmtzLgoKUmV2 aWV3ZWQtYnk6IFJvYmVydCBIYWFzClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEKRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1 Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb20KLS0tCiBjb250cmliL2F1dG9fZXhwbGFp bi9hdXRvX2V4cGxhaW4uYyAgICAgICAgICAgfCAgIDQgKwogLi4uL3BnX3N0YXRfc3RhdGVtZW50 cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHl0by5jICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY3Jl YXRlYXMuYyAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMgICAgICAgICAgICAgICAgfCAgMTYgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVu c2lvbi5jICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3 LmMgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNt ZHMuYyAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMg ICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyAg ICAgICAgICAgICAgICB8ICAxNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgICAgICAg ICAgICAgICAgICAgfCAgMzUgKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAg ICAgICAgICAgICAgfCAxMjQgKysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJh bGxlbC5jICAgICAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5jICAgICAgICAgIHwgIDg4ICsrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9u cy5jICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5k LmMgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93 cy5jICAgICAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBw ZW5kLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYyAgICAgICAgfCAgNzAgKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAg ICAgICAgICAgICAgICB8ICAyMyArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMu YyAgICAgICAgICB8ICAyOSArLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5j ICAgICAgICAgIHwgIDIyICsrCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAg ICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAgICAg ICAgICAgICB8ICAzOSArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAg ICAgICAgICB8IDIwNCArKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRh bG1lbS5jICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4u aCAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5o ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uaCAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAg ICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAg ICAgICAgICAgICB8ICAyOCArKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAg ICAgICAgICAgIHwgIDEzICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAg ICAgICAgICB8ICAgOCArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICAg ICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAg ICAgIHwgIDUwICsrKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgICAgICAg ICAgICB8ICAgNCArLQogc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUg ICAgIHwgICAzICstCiAuLi4vbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9u LmMgfCAgNjMgKysrLQogLi4uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91dCAgICAgICAg ICAgIHwgMjgyICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVj dXRpb24vbWVzb24uYnVpbGQgIHwgICAxICsKIC4uLi9zcGVjcy9jYWNoZWQtcGxhbi1pbnZhbC5z cGVjICAgICAgICAgICAgICB8ICA4MCArKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w YXJ0aXRpb25fcHJ1bmUub3V0IHwgIDQ0ICsrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX3BydW5lLnNxbCAgICAgIHwgIDE4ICsrCiA0NSBmaWxlcyBjaGFuZ2VkLCAxMjM3IGluc2Vy dGlvbnMoKyksIDEwOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9t b2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9j YWNoZWQtcGxhbi1pbnZhbC5zcGVjCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hdXRvX2V4cGxhaW4v YXV0b19leHBsYWluLmMgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwppbmRl eCA2MjNhNjc0Zjk5Li44YjVlYWYzZWYzIDEwMDY0NAotLS0gYS9jb250cmliL2F1dG9fZXhwbGFp bi9hdXRvX2V4cGxhaW4uYworKysgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4u YwpAQCAtMjk4LDYgKzI5OCwxMCBAQCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpx dWVyeURlc2MsIGludCBlZmxhZ3MpCiAJZWxzZQogCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1 ZXJ5RGVzYywgZWZsYWdzKTsKIAorCS8qIFRoZSBwbGFuIG1heSBoYXZlIGJlY29tZSBpbnZhbGlk IGR1cmluZyBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KCkgKi8KKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChxdWVyeURlc2MtPmVzdGF0ZSkpCisJCXJldHVybjsKKwogCWlmIChhdXRvX2V4cGxhaW5f ZW5hYmxlZCgpKQogCXsKIAkJLyoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdf c3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggNDljNjU3YjNlMC4uYjExNjkxYWUyNiAxMDA2NDQKLS0t IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIv Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTk5NCw2 ICs5OTQsMTAgQEAgcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKQogCWVsc2UKIAkJc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFn cyk7CiAKKwkvKiBUaGUgcGxhbiBtYXkgaGF2ZSBiZWNvbWUgaW52YWxpZCBkdXJpbmcgc3RhbmRh cmRfRXhlY3V0b3JTdGFydCgpICovCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQocXVlcnlEZXNj LT5lc3RhdGUpKQorCQlyZXR1cm47CisKIAkvKgogCSAqIElmIHF1ZXJ5IGhhcyBxdWVyeUlkIHpl cm8sIGRvbid0IHRyYWNrIGl0LiAgVGhpcyBwcmV2ZW50cyBkb3VibGUKIAkgKiBjb3VudGluZyBv ZiBvcHRpbWl6YWJsZSBzdGF0ZW1lbnRzIHRoYXQgYXJlIGRpcmVjdGx5IGNvbnRhaW5lZCBpbgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYwppbmRleCBmNTVlNmQ5Njc1Li4yN2I2ZjZmMDY5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5dG8uYwpAQCAtNTU2LDcgKzU1Niw3IEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJKChEUl9jb3B5ICopIGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7CiAKIAkJLyogQ3Jl YXRlIGEgUXVlcnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNzdGF0ZS0+cXVlcnlE ZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQljc3Rh dGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291 cmNldGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52 YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9jcmVhdGVhcy5jCmluZGV4IDVjOTJlNDhhNTYuLjBjYzc0ZGQ0NWEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y3JlYXRlYXMuYwpAQCAtMzMyLDcgKzMzMiw3IEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCVVwZGF0ZUFjdGl2ZVNuYXBz aG90Q29tbWFuZElkKCk7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBv dXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCi0JCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJcXVlcnlEZXNjID0gQ3JlYXRlUXVl cnlEZXNjKHBsYW4sIE5VTEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJR2V0QWN0 aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBx dWVyeUVudiwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBhM2YxZDUzZDdhLi5iNWM3 MzRlNzVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC01MTIsNyArNTEyLDggQEAgc3RhbmRh cmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJfQog CiAJLyogcnVuIGl0IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwotCUV4cGxhaW5P bmVQbGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwlF eHBsYWluT25lUGxhbihwbGFuLCBOVUxMLCBOVUxMLCAtMSwgaW50bywgZXMsIHF1ZXJ5U3RyaW5n LCBwYXJhbXMsCisJCQkJICAgcXVlcnlFbnYsCiAJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5i dWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291 bnRlcnMgOiBOVUxMKTsKIH0KQEAgLTYzNCw3ICs2MzUsOSBAQCBFeHBsYWluT25lVXRpbGl0eShO b2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAq IHRvIGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFu bmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQ bGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkgICBD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgsCisJCQkgICBJbnRv Q2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJICAgY29uc3QgY2hhciAqcXVlcnlT dHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCSAgIGNvbnN0IEJ1ZmZl clVzYWdlICpidWZ1c2FnZSwKQEAgLTY5MCw3ICs2OTMsNyBAQCBFeHBsYWluT25lUGxhbihQbGFu bmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMs CiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0 aGUgcXVlcnkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbm5lZHN0bXQsIHF1 ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVkc3RtdCwgY3Bs YW4sIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25h cHNob3QsCiAJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIGluc3RydW1lbnRfb3B0aW9u KTsKIApAQCAtNzA0LDggKzcwNywxMSBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxh bm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJaWYgKGludG8p CiAJCWVmbGFncyB8PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOwogCi0JLyogY2FsbCBFeGVjdXRv clN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCS8qIFByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlv bi4gKi8KKwlpZiAocXVlcnlEZXNjLT5jcGxhbikKKwkJRXhlY3V0b3JTdGFydENhY2hlZFBsYW4o cXVlcnlEZXNjLCBlZmxhZ3MsIHBsYW5zb3VyY2UsIHF1ZXJ5X2luZGV4KTsKKwllbHNlCisJCUV4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCiAJLyogRXhlY3V0ZSB0aGUgcGxhbiBm b3Igc3RhdGlzdGljcyBpZiBhc2tlZCBmb3IgKi8KIAlpZiAoZXMtPmFuYWx5emUpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4dGVuc2lvbi5jCmluZGV4IGFmNmJkOGZmNDIuLjdkNGEzYzViOGQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4dGVuc2lvbi5jCkBAIC05MDcsNiArOTA3LDcgQEAgZXhlY3V0ZV9zcWxfc3RyaW5nKGNv bnN0IGNoYXIgKnNxbCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiAJCQkJUXVlcnlEZXNjICAqcWRl c2M7CiAKIAkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCQkJCQkJCU5VTEws CiAJCQkJCQkJCQkJc3FsLAogCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIE5VTEwsCiAJ CQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXgg MDEwMDk3ODczZC4uNjliZTc0YjRiZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWF0dmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDM4LDcg KzQzOCw3IEBAIHJlZnJlc2hfbWF0dmlld19kYXRhZmlsbChEZXN0UmVjZWl2ZXIgKmRlc3QsIFF1 ZXJ5ICpxdWVyeSwKIAlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCiAJLyogQ3Jl YXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVy ICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHF1ZXJ5U3RyaW5nLAorCXF1 ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBxdWVyeVN0cmluZywKIAkJCQkJ CQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBO VUxMLCBOVUxMLCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFs Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCmluZGV4IGFjNTJjYTI1 ZTkuLjQ4Y2YwYjg0ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKQEAgLTExNyw2ICsx MTcsNyBAQCBQZXJmb3JtQ3Vyc29yT3BlbihQYXJzZVN0YXRlICpwc3RhdGUsIERlY2xhcmVDdXJz b3JTdG10ICpjc3RtdCwgUGFyYW1MaXN0SW5mbyBwYQogCQkJCQkgIHF1ZXJ5U3RyaW5nLAogCQkJ CQkgIENNRFRBR19TRUxFQ1QsCS8qIGN1cnNvcidzIHF1ZXJ5IGlzIGFsd2F5cyBhIFNFTEVDVCAq LwogCQkJCQkgIGxpc3RfbWFrZTEocGxhbiksCisJCQkJCSAgTlVMTCwKIAkJCQkJICBOVUxMKTsK IAogCS8qLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFy ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IGE5M2Y5NzBhMjkuLjQ1 ZmQ2M2QyYjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTIwMiw3ICsyMDIsOCBAQCBFeGVj dXRlUXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJ ICBlbnRyeS0+cGxhbnNvdXJjZS0+Y29tbWFuZFRhZywKIAkJCQkJICBwbGFuX2xpc3QsCi0JCQkJ CSAgY3BsYW4pOworCQkJCQkgIGNwbGFuLAorCQkJCQkgIGVudHJ5LT5wbGFuc291cmNlKTsKIAog CS8qCiAJICogRm9yIENSRUFURSBUQUJMRSAuLi4gQVMgRVhFQ1VURSwgd2UgbXVzdCB2ZXJpZnkg dGhhdCB0aGUgcHJlcGFyZWQKQEAgLTU4Miw2ICs1ODMsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5 KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICpl cywKIAlNZW1vcnlDb250ZXh0Q291bnRlcnMgbWVtX2NvdW50ZXJzOwogCU1lbW9yeUNvbnRleHQg cGxhbm5lcl9jdHggPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgc2F2ZWRfY3R4ID0gTlVMTDsKKwlp bnQJCQlxdWVyeV9pbmRleCA9IDA7CiAKIAlpZiAoZXMtPm1lbW9yeSkKIAl7CkBAIC02NTQsNyAr NjU2LDggQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9D bGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxm aXJzdF9ub2RlKFBsYW5uZWRTdG10LCBwKTsKIAogCQlpZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9 IENNRF9VVElMSVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGludG8sIGVzLCBxdWVyeV9z dHJpbmcsIHBhcmFtTEksIHBzdGF0ZS0+cF9xdWVyeUVudiwKKwkJCUV4cGxhaW5PbmVQbGFuKHBz dG10LCBjcGxhbiwgZW50cnktPnBsYW5zb3VyY2UsIHF1ZXJ5X2luZGV4LAorCQkJCQkJICAgaW50 bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwgcHN0YXRlLT5wX3F1ZXJ5RW52LAogCQkJCQkJ ICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJ CQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogCQllbHNlCkBAIC02NjUs NiArNjY4LDggQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIElu dG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCS8qIFNlcGFyYXRlIHBsYW5zIHdp dGggYW4gYXBwcm9wcmlhdGUgc2VwYXJhdG9yICovCiAJCWlmIChsbmV4dChwbGFuX2xpc3QsIHAp ICE9IE5VTEwpCiAJCQlFeHBsYWluU2VwYXJhdGVQbGFucyhlcyk7CisKKwkJcXVlcnlfaW5kZXgr KzsKIAl9CiAKIAlpZiAoZXN0YXRlKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IDA5MzU2ZTQ2 ZDEuLjc5NTcyZWM4ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTUxMjMsNiArNTEyMywy MCBAQCBBZnRlclRyaWdnZXJFbmRRdWVyeShFU3RhdGUgKmVzdGF0ZSkKIAlhZnRlclRyaWdnZXJz LnF1ZXJ5X2RlcHRoLS07CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAqIEFmdGVyVHJpZ2dlckFib3J0 UXVlcnkoKQorICoKKyAqIENhbGxlZCBieSBFeGVjdXRvckVuZCgpIGlmIHRoZSBxdWVyeSBleGVj dXRpb24gd2FzIGFib3J0ZWQgZHVlIHRvIHRoZQorICogcGxhbiBiZWNvbWluZyBpbnZhbGlkIGR1 cmluZyBpbml0aWFsaXphdGlvbi4KKyAqIC0tLS0tLS0tLS0KKyAqLwordm9pZAorQWZ0ZXJUcmln Z2VyQWJvcnRRdWVyeSh2b2lkKQoreworCS8qIFJldmVydCB0aGUgYWN0aW9ucyBvZiBBZnRlclRy aWdnZXJCZWdpblF1ZXJ5KCkuICovCisJYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9kZXB0aC0tOworfQor CiAKIC8qCiAgKiBBZnRlclRyaWdnZXJGcmVlUXVlcnkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL1JFQURNRSBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQppbmRleCA2NDJk NjNiZTYxLi40NDljNjA2OGFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFE TUUKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCkBAIC0yODAsNiArMjgwLDI4IEBA IGFyZSB0eXBpY2FsbHkgcmVzZXQgdG8gZW1wdHkgb25jZSBwZXIgdHVwbGUuICBQZXItdHVwbGUg Y29udGV4dHMgYXJlIHVzdWFsbHkKIGFzc29jaWF0ZWQgd2l0aCBFeHByQ29udGV4dHMsIGFuZCBj b21tb25seSBlYWNoIFBsYW5TdGF0ZSBub2RlIGhhcyBpdHMgb3duCiBFeHByQ29udGV4dCB0byBl dmFsdWF0ZSBpdHMgcXVhbCBhbmQgdGFyZ2V0bGlzdCBleHByZXNzaW9ucyBpbi4KIAorUmVsYXRp b24gTG9ja2luZworLS0tLS0tLS0tLS0tLS0tLQorCitUeXBpY2FsbHksIHdoZW4gdGhlIGV4ZWN1 dG9yIGluaXRpYWxpemVzIGEgcGxhbiB0cmVlIGZvciBleGVjdXRpb24sIGl0IGRvZXNuJ3QKK2xv Y2sgbm9uLWluZGV4IHJlbGF0aW9ucyBpZiB0aGUgcGxhbiB0cmVlIGlzIGZyZXNobHkgZ2VuZXJh dGVkIGFuZCBub3QgZGVyaXZlZAorZnJvbSBhIENhY2hlZFBsYW4uIFRoaXMgaXMgYmVjYXVzZSBz dWNoIGxvY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGVzdGFibGlzaGVkCitkdXJpbmcgdGhlIHF1ZXJ5 J3MgcGFyc2luZywgcmV3cml0aW5nLCBhbmQgcGxhbm5pbmcgcGhhc2VzLiBIb3dldmVyLCB3aXRo IGEKK2NhY2hlZCBwbGFuIHRyZWUsIHNvbWUgcmVsYXRpb25zIG1heSByZW1haW4gdW5sb2NrZWQu IFRoZSBmdW5jdGlvbgorQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBvbmx5IGxvY2tzIHVucHJ1bmFi bGUgcmVsYXRpb25zIGluIHRoZSBwbGFuLCBkZWZlcnJpbmcKK3RoZSBsb2NraW5nIG9mIHBydW5h YmxlIG9uZXMgdG8gZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24uIFRoaXMgYXZvaWRzCit1bm5lY2Vz c2FyeSBsb2NraW5nIG9mIHJlbGF0aW9ucyB0aGF0IHdpbGwgYmUgcHJ1bmVkIGR1cmluZyAiaW5p dGlhbCIgcnVudGltZQorcHJ1bmluZyBpbiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpLgorCitUaGlz IGFwcHJvYWNoIGNyZWF0ZXMgYSB3aW5kb3cgd2hlcmUgYSBjYWNoZWQgcGxhbiB0cmVlIHdpdGgg Y2hpbGQgdGFibGVzCitjb3VsZCBiZWNvbWUgb3V0ZGF0ZWQgaWYgYW5vdGhlciBiYWNrZW5kIG1v ZGlmaWVzIHRoZXNlIHRhYmxlcyBiZWZvcmUKK0V4ZWNEb0luaXRpYWxQcnVuaW5nKCkgbG9ja3Mg dGhlbS4gQXMgYSByZXN1bHQsIHRoZSBleGVjdXRvciBoYXMgdGhlIGFkZGVkIGR1dHkKK3RvIHZl cmlmeSB0aGUgcGxhbiB0cmVlJ3MgdmFsaWRpdHkgd2hlbmV2ZXIgaXQgbG9ja3MgYSBjaGlsZCB0 YWJsZSBhZnRlcgorZG9pbmcgaW5pdGlhbCBwcnVuaW5nLiBUaGlzIHZhbGlkYXRpb24gaXMgZG9u ZSBieSBjaGVja2luZyB0aGUgQ2FjaGVkUGxhbi5pc192YWxpZAorZmxhZy4gSWYgdGhlIHBsYW4g dHJlZSBpcyBvdXRkYXRlZCAoaXNfdmFsaWQgPSBmYWxzZSksIHRoZSBleGVjdXRvciBzdG9wcwor ZnVydGhlciBpbml0aWFsaXphdGlvbiwgY2xlYW5zIHVwIGFueXRoaW5nIGluIEVTdGF0ZSB0aGF0 IHdvdWxkIGhhdmUgYmVlbgorYWxsb2NhdGVkIHVwIHRvIHRoYXQgcG9pbnQsIGFuZCByZXRyaWVz IGV4ZWN1dGlvbiBhZnRlciByZWNyZWF0aW5nIHRoZQoraW52YWxpZCBwbGFuIGluIHRoZSBDYWNo ZWRQbGFuLgogCiBRdWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxvdwogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KQEAgLTI4OCwxMSArMzEwLDEzIEBAIFRoaXMgaXMgYSBza2V0Y2ggb2Yg Y29udHJvbCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAKIAlDcmVhdGVRdWVyeURl c2MKIAotCUV4ZWN1dG9yU3RhcnQKKwlFeGVjdXRvclN0YXJ0IG9yIEV4ZWN1dG9yU3RhcnRDYWNo ZWRQbGFuCiAJCUNyZWF0ZUV4ZWN1dG9yU3RhdGUKIAkJCWNyZWF0ZXMgcGVyLXF1ZXJ5IGNvbnRl eHQKLQkJc3dpdGNoIHRvIHBlci1xdWVyeSBjb250ZXh0IHRvIHJ1biBFeGVjSW5pdE5vZGUKKwkJ c3dpdGNoIHRvIHBlci1xdWVyeSBjb250ZXh0IHRvIHJ1biBFeGVjRG9Jbml0aWFsUHJ1bmluZyBh bmQgRXhlY0luaXROb2RlCiAJCUFmdGVyVHJpZ2dlckJlZ2luUXVlcnkKKwkJRXhlY0RvSW5pdGlh bFBydW5pbmcKKwkJCWRvZXMgaW5pdGlhbCBwcnVuaW5nIGFuZCBsb2NrcyBzdXJ2aXZpbmcgcGFy dGl0aW9ucyBpZiBuZWVkZWQKIAkJRXhlY0luaXROb2RlIC0tLSByZWN1cnNpdmVseSBzY2FucyBw bGFuIHRyZWUKIAkJCUV4ZWNJbml0Tm9kZQogCQkJCXJlY3Vyc2UgaW50byBzdWJzaWRpYXJ5IG5v ZGVzCkBAIC0zMTYsNyArMzQwLDEyIEBAIFRoaXMgaXMgYSBza2V0Y2ggb2YgY29udHJvbCBmbG93 IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAKIAlGcmVlUXVlcnlEZXNjCiAKLVBlciBhYm92 ZSBjb21tZW50cywgaXQncyBub3QgcmVhbGx5IGNyaXRpY2FsIGZvciBFeGVjRW5kTm9kZSB0byBm cmVlIGFueQorQXMgbWVudGlvbmVkIGluIHRoZSAiUmVsYXRpb24gTG9ja2luZyIgc2VjdGlvbiwg aWYgdGhlIHBsYW4gdHJlZSBpcyBmb3VuZCB0bworYmUgc3RhbGUgYWZ0ZXIgbG9ja2luZyBwYXJ0 aXRpb25zIGluIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCksIHRoZSBjb250cm9sIGlzCitpbW1lZGlh dGVseSByZXR1cm5lZCB0byBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpLCB3aGljaCB3aWxsIGNy ZWF0ZSBhIG5ldyBwbGFuCit0cmVlIGFuZCBwZXJmb3JtIHRoZSBzdGVwcyBzdGFydGluZyBmcm9t IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKSBhZ2Fpbi4KKworUGVyIGFib3ZlIGNvbW1lbnRzLCBpdCdz IG5vdCByZWFsbHkgY3JpdGljYWwgZm9yIEV4ZWNFbmRQbGFuIHRvIGZyZWUgYW55CiBtZW1vcnk7 IGl0J2xsIGFsbCBnbyBhd2F5IGluIEZyZWVFeGVjdXRvclN0YXRlIGFueXdheS4gIEhvd2V2ZXIs IHdlIGRvIG5lZWQgdG8KIGJlIGNhcmVmdWwgdG8gY2xvc2UgcmVsYXRpb25zLCBkcm9wIGJ1ZmZl ciBwaW5zLCBldGMsIHNvIHdlIGRvIG5lZWQgdG8gc2NhbgogdGhlIHBsYW4gc3RhdGUgdHJlZSB0 byBmaW5kIHRoZXNlIHNvcnRzIG9mIHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmlu ZGV4IDVkYzQ2ZjJlOTUuLjk1NDNkOTQ5MGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAt NTUsMTEgKzU1LDEzIEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5j bHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInRjb3AvdXRpbGl0eS5oIgogI2luY2x1 ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCiAjaW5j bHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcGFydGNhY2hlLmgiCisj aW5jbHVkZSAidXRpbHMvcGxhbmNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgiCiAjaW5j bHVkZSAidXRpbHMvc25hcG1nci5oIgogCkBAIC0xMzcsNiArMTM5LDYyIEBAIEV4ZWN1dG9yU3Rh cnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCXN0YW5kYXJkX0V4ZWN1dG9y U3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogfQogCisvKgorICogRXhlY3V0b3JTdGFydENhY2hl ZFBsYW4KKyAqCQlTdGFydCBleGVjdXRpb24gZm9yIGEgZ2l2ZW4gcXVlcnkgaW4gdGhlIENhY2hl ZFBsYW5Tb3VyY2UsIHJlcGxhbm5pbmcKKyAqCQlpZiB0aGUgcGxhbiBpcyBpbnZhbGlkYXRlZCBk dWUgdG8gZGVmZXJyZWQgbG9ja3MgdGFrZW4gZHVyaW5nIHRoZQorICoJCXBsYW4ncyBpbml0aWFs aXphdGlvbgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBjYXNlcyB3aGVyZSB0aGUgQ2Fj aGVkUGxhbiBnaXZlbiBpbiBxdWVyeURlc2MtPmNwbGFuCisgKiBtaWdodCBiZWNvbWUgaW52YWxp ZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwbGFuIGdpdmVuIGluCisgKiBxdWVy eURlc2MtPnBsYW5uZWRzdG10LCBwYXJ0aWN1bGFybHkgd2hlbiBwcnVuYWJsZSByZWxhdGlvbnMg aW4gaXQgYXJlCisgKiBsb2NrZWQgYWZ0ZXIgcGVyZm9ybWluZyBpbml0aWFsIHBydW5pbmcuIElm IHRoZSBsb2NrcyBpbnZhbGlkYXRlIHRoZSBwbGFuLAorICogdGhlIGZ1bmN0aW9uIGNhbGxzIFVw ZGF0ZUNhY2hlZFBsYW4oKSB0byByZXBsYW4gYWxsIHF1ZXJpZXMgaW4gdGhlCisgKiBDYWNoZWRQ bGFuLCBhbmQgdGhlbiByZXRyaWVzIGluaXRpYWxpemF0aW9uLgorICoKKyAqIFRoZSBmdW5jdGlv biByZXBlYXRzIHRoZSBwcm9jZXNzIHVudGlsIEV4ZWN1dG9yU3RhcnQoKSBzdWNjZXNzZnVsbHkK KyAqIGluaXRpYWxpemVzIHRoZSBwbGFuLCB0aGF0IGlzIHdpdGhvdXQgdGhlIENhY2hlZFBsYW4g YmVjb21pbmcgaW52YWxpZC4KKyAqLwordm9pZAorRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MsCisJCQkJCQlDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlLAorCQkJCQkJaW50IHF1ZXJ5X2luZGV4KQoreworCWlmICh1bmxpa2VseShxdWVy eURlc2MtPmNwbGFuID09IE5VTEwpKQorCQllbG9nKEVSUk9SLCAiRXhlY3V0b3JTdGFydENhY2hl ZFBsYW4oKTogbWlzc2luZyBDYWNoZWRQbGFuIik7CisJaWYgKHVubGlrZWx5KHBsYW5zb3VyY2Ug PT0gTlVMTCkpCisJCWVsb2coRVJST1IsICJFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpOiBtaXNz aW5nIENhY2hlZFBsYW5Tb3VyY2UiKTsKKworCS8qCisJICogTG9vcCBhbmQgcmV0cnkgd2l0aCBh biB1cGRhdGVkIHBsYW4gdW50aWwgbm8gZnVydGhlciBpbnZhbGlkYXRpb24KKwkgKiBvY2N1cnMu CisJICovCisJd2hpbGUgKDEpCisJeworCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdz KTsKKwkJaWYgKCFDYWNoZWRQbGFuVmFsaWQocXVlcnlEZXNjLT5jcGxhbikpCisJCXsKKwkJCS8q CisJCQkgKiBDbGVhbiB1cCB0aGUgY3VycmVudCBleGVjdXRpb24gc3RhdGUgYmVmb3JlIGNyZWF0 aW5nIHRoZSBuZXcKKwkJCSAqIHBsYW4gdG8gcmV0cnkgRXhlY3V0b3JTdGFydCgpLiAgTWFyayBl eGVjdXRpb24gYXMgYWJvcnRlZCB0bworCQkJICogZW5zdXJlIHRoYXQgQUZURVIgdHJpZ2dlciBz dGF0ZSBpcyBwcm9wZXJseSByZXNldC4KKwkJCSAqLworCQkJcXVlcnlEZXNjLT5lc3RhdGUtPmVz X2Fib3J0ZWQgPSB0cnVlOworCQkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKworCQkJLyogUmV0 cnkgRXhlY3V0b3JTdGFydCgpIHdpdGggYW4gdXBkYXRlZCBwbGFuIHRyZWUuICovCisJCQlxdWVy eURlc2MtPnBsYW5uZWRzdG10ID0gVXBkYXRlQ2FjaGVkUGxhbihwbGFuc291cmNlLCBxdWVyeV9p bmRleCwKKwkJCQkJCQkJCQkJCQkgIHF1ZXJ5RGVzYy0+cXVlcnlFbnYpOworCQl9CisJCWVsc2UK KwkJCS8qCisJCQkgKiBFeGl0IHRoZSBsb29wIGlmIHRoZSBwbGFuIGlzIGluaXRpYWxpemVkIHN1 Y2Nlc3NmdWxseSBhbmQgbm8KKwkJCSAqIHNpbnZhbCBtZXNzYWdlcyB3ZXJlIHJlY2VpdmVkIHRo YXQgaW52YWxpZGF0ZWQgdGhlIENhY2hlZFBsYW4uCisJCQkgKi8KKwkJCWJyZWFrOworCX0KK30K Kwogdm9pZAogc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50 IGVmbGFncykKIHsKQEAgLTMyMCw2ICszNzgsNyBAQCBzdGFuZGFyZF9FeGVjdXRvclJ1bihRdWVy eURlc2MgKnF1ZXJ5RGVzYywKIAllc3RhdGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsKIAogCUFzc2Vy dChlc3RhdGUgIT0gTlVMTCk7CisJQXNzZXJ0KCFlc3RhdGUtPmVzX2Fib3J0ZWQpOwogCUFzc2Vy dCghKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19FWFBMQUlOX09OTFkpKTsKIAog CS8qIGNhbGxlciBtdXN0IGVuc3VyZSB0aGUgcXVlcnkncyBzbmFwc2hvdCBpcyBhY3RpdmUgKi8K QEAgLTQyNiw4ICs0ODUsMTEgQEAgc3RhbmRhcmRfRXhlY3V0b3JGaW5pc2goUXVlcnlEZXNjICpx dWVyeURlc2MpCiAJQXNzZXJ0KGVzdGF0ZSAhPSBOVUxMKTsKIAlBc3NlcnQoIShlc3RhdGUtPmVz X3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSk7CiAKLQkvKiBUaGlzIHNob3Vs ZCBiZSBydW4gb25jZSBhbmQgb25seSBvbmNlIHBlciBFeGVjdXRvciBpbnN0YW5jZSAqLwotCUFz c2VydCghZXN0YXRlLT5lc19maW5pc2hlZCk7CisJLyoKKwkgKiBUaGlzIHNob3VsZCBiZSBydW4g b25jZSBhbmQgb25seSBvbmNlIHBlciBFeGVjdXRvciBpbnN0YW5jZSBhbmQgbmV2ZXIKKwkgKiBp ZiB0aGUgZXhlY3V0aW9uIHdhcyBhYm9ydGVkLgorCSAqLworCUFzc2VydCghZXN0YXRlLT5lc19m aW5pc2hlZCAmJiAhZXN0YXRlLT5lc19hYm9ydGVkKTsKIAogCS8qIFN3aXRjaCBpbnRvIHBlci1x dWVyeSBtZW1vcnkgY29udGV4dCAqLwogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOwpAQCAtNDkwLDExICs1NTIsMTAgQEAgc3RhbmRhcmRf RXhlY3V0b3JFbmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJCQkJCQkJCQkJCSAoUGdTdGF0X0Nv dW50ZXIpIGVzdGF0ZS0+ZXNfcGFyYWxsZWxfd29ya2Vyc19sYXVuY2hlZCk7CiAKIAkvKgotCSAq IENoZWNrIHRoYXQgRXhlY3V0b3JGaW5pc2ggd2FzIGNhbGxlZCwgdW5sZXNzIGluIEVYUExBSU4t b25seSBtb2RlLiBUaGlzCi0JICogQXNzZXJ0IGlzIG5lZWRlZCBiZWNhdXNlIEV4ZWN1dG9yRmlu aXNoIGlzIG5ldyBhcyBvZiA5LjEsIGFuZCBjYWxsZXJzCi0JICogbWlnaHQgZm9yZ2V0IHRvIGNh bGwgaXQuCisJICogQ2hlY2sgdGhhdCBFeGVjdXRvckZpbmlzaCB3YXMgY2FsbGVkLCB1bmxlc3Mg aW4gRVhQTEFJTi1vbmx5IG1vZGUgb3IgaWYKKwkgKiBleGVjdXRpb24gd2FzIGFib3J0ZWQuCiAJ ICovCi0JQXNzZXJ0KGVzdGF0ZS0+ZXNfZmluaXNoZWQgfHwKKwlBc3NlcnQoZXN0YXRlLT5lc19m aW5pc2hlZCB8fCBlc3RhdGUtPmVzX2Fib3J0ZWQgfHwKIAkJICAgKGVzdGF0ZS0+ZXNfdG9wX2Vm bGFncyAmIEVYRUNfRkxBR19FWFBMQUlOX09OTFkpKTsKIAogCS8qCkBAIC01MDgsNiArNTY5LDE0 IEBAIHN0YW5kYXJkX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCVVucmVnaXN0 ZXJTbmFwc2hvdChlc3RhdGUtPmVzX3NuYXBzaG90KTsKIAlVbnJlZ2lzdGVyU25hcHNob3QoZXN0 YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90KTsKIAorCS8qCisJICogUmVzZXQgQUZURVIgdHJp Z2dlciBtb2R1bGUgaWYgdGhlIHF1ZXJ5IGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4KKwkgKi8KKwlp ZiAoZXN0YXRlLT5lc19hYm9ydGVkICYmCisJCSEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYKKwkJ ICAoRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlMgfCBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSkpCisJ CUFmdGVyVHJpZ2dlckFib3J0UXVlcnkoKTsKKwogCS8qCiAJICogTXVzdCBzd2l0Y2ggb3V0IG9m IGNvbnRleHQgYmVmb3JlIGRlc3Ryb3lpbmcgaXQKIAkgKi8KQEAgLTYwNiw2ICs2NzUsMjEgQEAg RXhlY0NoZWNrUGVybWlzc2lvbnMoTGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcnRlcGVybWluZm9z LAogCQkJCSAgIChydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmCiAJCQkJCXJ0ZS0+cmVs a2luZCA9PSBSRUxLSU5EX1ZJRVcpKTsKIAorCQkJLyoKKwkJCSAqIEVuc3VyZSB0aGF0IHdlIGhh dmUgYXQgbGVhc3QgYW4gQWNjZXNzU2hhcmVMb2NrIG9uIHJlbGF0aW9ucworCQkJICogd2hvc2Ug cGVybWlzc2lvbnMgbmVlZCB0byBiZSBjaGVja2VkLgorCQkJICoKKwkJCSAqIFNraXAgdGhpcyBj aGVjayBpbiBhIHBhcmFsbGVsIHdvcmtlciBiZWNhdXNlIGxvY2tzIHdvbid0IGJlCisJCQkgKiB0 YWtlbiB1bnRpbCBFeGVjSW5pdE5vZGUoKSBwZXJmb3JtcyBwbGFuIGluaXRpYWxpemF0aW9uLgor CQkJICoKKwkJCSAqIFhYWDogRXhlY0NoZWNrUGVybWlzc2lvbnMoKSBpbiBhIHBhcmFsbGVsIHdv cmtlciBtYXkgYmUKKwkJCSAqIHJlZHVuZGFudCB3aXRoIHRoZSBjaGVja3MgZG9uZSBpbiB0aGUg bGVhZGVyIHByb2Nlc3MsIHNvIHRoaXMKKwkJCSAqIHNob3VsZCBiZSByZXZpZXdlZCB0byBlbnN1 cmUgaXTigJlzIG5lY2Vzc2FyeS4KKwkJCSAqLworCQkJQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIo KSB8fAorCQkJCSAgIENoZWNrUmVsYXRpb25PaWRMb2NrZWRCeU1lKHJ0ZS0+cmVsaWQsIEFjY2Vz c1NoYXJlTG9jaywKKwkJCQkJCQkJCQkJICB0cnVlKSk7CisKIAkJCSh2b2lkKSBnZXRSVEVQZXJt aXNzaW9uSW5mbyhydGVwZXJtaW5mb3MsIHJ0ZSk7CiAJCQkvKiBNYW55LXRvLW9uZSBtYXBwaW5n IG5vdCBhbGxvd2VkICovCiAJCQlBc3NlcnQoIWJtc19pc19tZW1iZXIocnRlLT5wZXJtaW5mb2lu ZGV4LCBpbmRleHNldCkpOwpAQCAtODM4LDYgKzkyMiw3IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogewogCUNtZFR5cGUJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVz Yy0+b3BlcmF0aW9uOwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IHF1ZXJ5RGVzYy0+cGxh bm5lZHN0bXQ7CisJQ2FjaGVkUGxhbiAqY2FjaGVkcGxhbiA9IHF1ZXJ5RGVzYy0+Y3BsYW47CiAJ UGxhbgkgICAqcGxhbiA9IHBsYW5uZWRzdG10LT5wbGFuVHJlZTsKIAlMaXN0CSAgICpyYW5nZVRh YmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJsZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHF1ZXJ5RGVz Yy0+ZXN0YXRlOwpAQCAtODU3LDcgKzk0Miw5IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBpbnQgZWZsYWdzKQogCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIHJhbmdlVGFibGUs IHBsYW5uZWRzdG10LT5wZXJtSW5mb3MpOwogCiAJZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IHBs YW5uZWRzdG10OworCWVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiA9IGNhY2hlZHBsYW47CiAJZXN0YXRl LT5lc19wYXJ0X3BydW5lX2luZm9zID0gcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOworCWVz dGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzID0gYm1zX2NvcHkocGxhbm5lZHN0bXQtPnVucHJ1bmFi bGVSZWxpZHMpOwogCiAJLyoKIAkgKiBQZXJmb3JtIHJ1bnRpbWUgImluaXRpYWwiIHBydW5pbmcg dG8gaWRlbnRpZnkgd2hpY2ggY2hpbGQgc3VicGxhbnMsCkBAIC04NjcsOSArOTU0LDE1IEBAIElu aXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCSAqIGV4ZWN1dGVkLCBh cmUgc2F2ZWQgaW4gZXNfcGFydF9wcnVuZV9yZXN1bHRzLiAgVGhlc2UgcmVzdWx0cyBjb3JyZXNw b25kCiAJICogdG8gZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gZW50cnksIGFuZCB0aGUgZXNfcGFy dF9wcnVuZV9yZXN1bHRzIGxpc3QgaXMKIAkgKiBwYXJhbGxlbCB0byBlc19wYXJ0X3BydW5lX2lu Zm9zLgorCSAqCisJICogVGhpcyB3aWxsIGFsc28gYWRkIHRoZSBSVCBpbmRleGVzIG9mIHN1cnZp dmluZyBsZWFmIHBhcnRpdGlvbnMgdG8KKwkgKiBlc191bnBydW5lZF9yZWxpZHMuCiAJICovCiAJ RXhlY0RvSW5pdGlhbFBydW5pbmcoZXN0YXRlKTsKIAorCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCXJldHVybjsKKwogCS8qCiAJICogTmV4dCwgYnVpbGQgdGhlIEV4ZWNSb3dN YXJrIGFycmF5IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMpLCBpZiBhbnkuCiAJICovCkBAIC04ODQs OCArOTc3LDEzIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog CQkJUmVsYXRpb24JcmVsYXRpb247CiAJCQlFeGVjUm93TWFyayAqZXJtOwogCi0JCQkvKiBpZ25v cmUgInBhcmVudCIgcm93bWFya3M7IHRoZXkgYXJlIGlycmVsZXZhbnQgYXQgcnVudGltZSAqLwot CQkJaWYgKHJjLT5pc1BhcmVudCkKKwkJCS8qCisJCQkgKiBJZ25vcmUgInBhcmVudCIgcm93bWFy a3MsIGJlY2F1c2UgdGhleSBhcmUgaXJyZWxldmFudCBhdAorCQkJICogcnVudGltZS4gIEFsc28g aWdub3JlIHRoZSByb3dtYXJrcyBiZWxvbmdpbmcgdG8gY2hpbGQgdGFibGVzCisJCQkgKiB0aGF0 IGhhdmUgYmVlbiBwcnVuZWQgaW4gRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4KKwkJCSAqLworCQkJ aWYgKHJjLT5pc1BhcmVudCB8fAorCQkJCSFibXNfaXNfbWVtYmVyKHJjLT5ydGksIGVzdGF0ZS0+ ZXNfdW5wcnVuZWRfcmVsaWRzKSkKIAkJCQljb250aW51ZTsKIAogCQkJLyogZ2V0IHJlbGF0aW9u J3MgT0lEICh3aWxsIHByb2R1Y2UgSW52YWxpZE9pZCBpZiBzdWJxdWVyeSkgKi8KQEAgLTI4NTcs NiArMjk1NSw5IEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAq cGxhblRyZWUpCiAJICogdGhlIHNuYXBzaG90LCByYW5nZXRhYmxlLCBhbmQgZXh0ZXJuYWwgUGFy YW0gaW5mby4gIFRoZXkgbmVlZCB0aGVpciBvd24KIAkgKiBjb3BpZXMgb2YgbG9jYWwgc3RhdGUs IGluY2x1ZGluZyBhIHR1cGxlIHRhYmxlLCBlc19wYXJhbV9leGVjX3ZhbHMsCiAJICogcmVzdWx0 LXJlbCBpbmZvLCBldGMuCisJICoKKwkgKiBlc19jYWNoZWRwbGFuIGlzIG5vdCBjb3BpZWQgYmVj YXVzZSBFUFEgcGxhbiBleGVjdXRpb24gZG9lcyBub3QgYWNxdWlyZQorCSAqIGFueSBuZXcgbG9j a3MgdGhhdCBjb3VsZCBpbnZhbGlkYXRlIHRoZSBDYWNoZWRQbGFuLgogCSAqLwogCXJjZXN0YXRl LT5lc19kaXJlY3Rpb24gPSBGb3J3YXJkU2NhbkRpcmVjdGlvbjsKIAlyY2VzdGF0ZS0+ZXNfc25h cHNob3QgPSBwYXJlbnRlc3RhdGUtPmVzX3NuYXBzaG90OwpAQCAtMjkyOCw2ICszMDI5LDEzIEBA IEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJ CX0KIAl9CiAKKwkvKgorCSAqIENvcHkgZXNfdW5wcnVuZWRfcmVsaWRzIHNvIHRoYXQgUm93TWFy a3Mgb2YgcHJ1bmVkIHJlbGF0aW9ucyBhcmUKKwkgKiBpZ25vcmVkIGluIEV4ZWNJbml0TG9ja1Jv d3MoKSBhbmQgRXhlY0luaXRNb2RpZnlUYWJsZSgpIHdoZW4KKwkgKiBpbml0aWFsaXppbmcgdGhl IHBsYW4gdHJlZXMgYmVsb3cuCisJICovCisJcmNlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcyA9 IHBhcmVudGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzOworCiAJLyoKIAkgKiBJbml0aWFsaXpl IHByaXZhdGUgc3RhdGUgaW5mb3JtYXRpb24gZm9yIGVhY2ggU3ViUGxhbi4gIFdlIG11c3QgZG8g dGhpcwogCSAqIGJlZm9yZSBydW5uaW5nIEV4ZWNJbml0Tm9kZSBvbiB0aGUgbWFpbiBxdWVyeSB0 cmVlLCBzaW5jZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVs LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBiMDFhMmZkZmRk Li4wYzJkYTI1ZmFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxs ZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTI1Nyw4 ICsxMjU3LDE1IEBAIEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RS ZWNlaXZlciAqcmVjZWl2ZXIsCiAJcGFyYW1zcGFjZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFS QUxMRUxfS0VZX1BBUkFNTElTVElORk8sIGZhbHNlKTsKIAlwYXJhbUxJID0gUmVzdG9yZVBhcmFt TGlzdCgmcGFyYW1zcGFjZSk7CiAKLQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVy eS4gKi8KKwkvKgorCSAqIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAgV2UgcGFz cyBOVUxMIGZvciBjYWNoZWRwbGFuLCBiZWNhdXNlCisJICogd2UgZG9uJ3QgaGF2ZSBhIHBvaW50 ZXIgdG8gdGhlIENhY2hlZFBsYW4gaW4gdGhlIGxlYWRlcidzIHByb2Nlc3MuIEl0J3MKKwkgKiBm aW5lIGJlY2F1c2UgdGhlIG9ubHkgcmVhc29uIHRoZSBleGVjdXRvciBuZWVkcyB0byBzZWUgaXQg aXMgdG8gZGVjaWRlCisJICogaWYgaXQgc2hvdWxkIHRha2UgbG9ja3Mgb24gY2VydGFpbiByZWxh dGlvbnMsIGJ1dCBwYXJhbGxlbCB3b3JrZXJzCisJICogYWx3YXlzIHRha2UgbG9ja3MgYW55d2F5 LgorCSAqLwogCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQsCisJCQkJCQkgICBOVUxMLAog CQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZh bGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZlciwgcGFyYW1MSSwgTlVMTCwgaW5zdHJ1bWVu dF9vcHRpb25zKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCA0NmRkMWM3 N2EzLi45M2NkYWU2Zjg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy dGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0y Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRkZXNjLmgiCiAjaW5jbHVk ZSAicGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1h bmlwLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgi CiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcGFydGNhY2hl LmgiCkBAIC0xOTQsNyArMTk1LDggQEAgc3RhdGljIHZvaWQgZmluZF9tYXRjaGluZ19zdWJwbGFu c19yZWN1cnNlKFBsYW5TdGF0ZSAqcGFyZW50X3BsYW4sCiAJCQkJCQkJCQkJICAgUGFydGl0aW9u UHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwKIAkJCQkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5p bmdEYXRhICpwcHJ1bmUsCiAJCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAotCQkJCQkJ CQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbnMpOworCQkJCQkJCQkJCSAgIEJpdG1hcHNl dCAqKnZhbGlkc3VicGxhbnMsCisJCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFu X3J0aXMpOwogCiAKIC8qCkBAIC0xNzY0LDcgKzE3NjYsOCBAQCBhZGp1c3RfcGFydGl0aW9uX2Nv bG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICogRXhlY0Rv SW5pdGlhbFBydW5pbmc6CiAgKgkJUGVyZm9ybSBydW50aW1lICJpbml0aWFsIiBwcnVuaW5nLCBp ZiBuZWNlc3NhcnksIHRvIGRldGVybWluZSB0aGUgc2V0CiAgKgkJb2YgY2hpbGQgc3Vibm9kZXMg dGhhdCBuZWVkIHRvIGJlIGluaXRpYWxpemVkIGR1cmluZyBFeGVjSW5pdE5vZGUoKSBmb3IKLSAq CQlhbGwgcGxhbiBub2RlcyB0aGF0IGNvbnRhaW4gYSBQYXJ0aXRpb25QcnVuZUluZm8uCisgKgkJ YWxsIHBsYW4gbm9kZXMgdGhhdCBjb250YWluIGEgUGFydGl0aW9uUHJ1bmVJbmZvLiAgVGhpcyBh bHNvIGxvY2tzIHRoZQorICoJCWxlYWYgcGFydGl0aW9ucyB3aG9zZSBzdWJub2RlcyB3aWxsIGJl IGluaXRpYWxpemVkIGlmIG5lZWRlZC4KICAqCiAgKiBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVu aW5nOgogICoJCVVwZGF0ZXMgdGhlIFBhcnRpdGlvblBydW5lU3RhdGUgZm91bmQgYXQgZ2l2ZW4g cGFydF9wcnVuZV9pbmRleCBpbgpAQCAtMTc4NSwxMSArMTc4OCwxMyBAQCBhZGp1c3RfcGFydGl0 aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKi8KIAorCiAvKgogICogRXhlY0RvSW5pdGlhbFBydW5pbmcKICAq CQlQZXJmb3JtIHJ1bnRpbWUgImluaXRpYWwiIHBydW5pbmcsIGlmIG5lY2Vzc2FyeSwgdG8gZGV0 ZXJtaW5lIHRoZSBzZXQKICAqCQlvZiBjaGlsZCBzdWJub2RlcyB0aGF0IG5lZWQgdG8gYmUgaW5p dGlhbGl6ZWQgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIGZvcgotICoJCXBsYW4gbm9kZXMgdGhhdCBz dXBwb3J0IHBhcnRpdGlvbiBwcnVuaW5nLgorICoJCXBsYW4gbm9kZXMgdGhhdCBzdXBwb3J0IHBh cnRpdGlvbiBwcnVuaW5nLiAgVGhpcyBhbHNvIGxvY2tzIHRoZSBsZWFmCisgKgkJcGFydGl0aW9u cyB3aG9zZSBzdWJub2RlcyB3aWxsIGJlIGluaXRpYWxpemVkIGlmIG5lZWRlZC4KICAqCiAgKiBU aGlzIGZ1bmN0aW9uIGl0ZXJhdGVzIG92ZXIgZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gZW50cnkg aW4KICAqIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcy4gRm9yIGVhY2ggZW50cnksIGl0IGNy ZWF0ZXMgYSBQYXJ0aXRpb25QcnVuZVN0YXRlCkBAIC0xODEwLDYgKzE4MTUsNyBAQCB2b2lkCiBF eGVjRG9Jbml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIHsKIAlMaXN0Q2VsbCAgICpsYzsK KwlMaXN0CSAgICpsb2NrZWRfcmVsaWRzID0gTklMOwogCiAJZm9yZWFjaChsYywgZXN0YXRlLT5l c19wYXJ0X3BydW5lX2luZm9zKQogCXsKQEAgLTE4MjcsMTAgKzE4MzMsNDggQEAgRXhlY0RvSW5p dGlhbFBydW5pbmcoRVN0YXRlICplc3RhdGUpCiAJCSAqIGJpdG1hcHNldCBvciBOVUxMIGFzIGRl c2NyaWJlZCBpbiB0aGUgaGVhZGVyIGNvbW1lbnQuCiAJCSAqLwogCQlpZiAocHJ1bmVzdGF0ZS0+ ZG9faW5pdGlhbF9wcnVuZSkKLQkJCXZhbGlkc3VicGxhbnMgPSBFeGVjRmluZE1hdGNoaW5nU3Vi UGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSk7CisJCXsKKwkJCUJpdG1hcHNldCAqdmFsaWRzdWJwbGFu X3J0aXMgPSBOVUxMOworCisJCQl2YWxpZHN1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBs YW5zKHBydW5lc3RhdGUsIHRydWUsCisJCQkJCQkJCQkJCQkJICZ2YWxpZHN1YnBsYW5fcnRpcyk7 CisJCQlpZiAoRXhlY1Nob3VsZExvY2tSZWxhdGlvbnMoZXN0YXRlKSkKKwkJCXsKKwkJCQlpbnQJ CXJ0aW5kZXggPSAtMTsKKworCQkJCXJ0aW5kZXggPSAtMTsKKwkJCQl3aGlsZSAoKHJ0aW5kZXgg PSBibXNfbmV4dF9tZW1iZXIodmFsaWRzdWJwbGFuX3J0aXMsCisJCQkJCQkJCQkJCQkgIHJ0aW5k ZXgpKSA+PSAwKQorCQkJCXsKKwkJCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gZXhlY19ydF9mZXRj aChydGluZGV4LCBlc3RhdGUpOworCisJCQkJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JF TEFUSU9OICYmCisJCQkJCQkgICBydGUtPnJlbGxvY2ttb2RlICE9IE5vTG9jayk7CisJCQkJCUxv Y2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJCQkJbG9ja2Vk X3JlbGlkcyA9IGxhcHBlbmRfaW50KGxvY2tlZF9yZWxpZHMsIHJ0aW5kZXgpOworCQkJCX0KKwkJ CX0KKwkJCWVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGVzdGF0 ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCQkgdmFsaWRzdWJwbGFuX3J0aXMp OworCQl9CisKIAkJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMgPSBsYXBwZW5kKGVzdGF0 ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzLAogCQkJCQkJCQkJCQkJdmFsaWRzdWJwbGFucyk7CiAJ fQorCisJLyoKKwkgKiBSZWxlYXNlIHRoZSB1c2VsZXNzIGxvY2tzIGlmIHRoZSBwbGFuIHdvbid0 IGJlIGV4ZWN1dGVkLiAgVGhpcyBpcyB0aGUKKwkgKiBzYW1lIGFzIHdoYXQgQ2hlY2tDYWNoZWRQ bGFuKCkgaW4gcGxhbmNhY2hlLmMgZG9lcy4KKwkgKi8KKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKQorCXsKKwkJZm9yZWFjaChsYywgbG9ja2VkX3JlbGlkcykKKwkJeworCQkJUmFu Z2VUYmxFbnRyeSAqcnRlID0gZXhlY19ydF9mZXRjaChsZmlyc3RfaW50KGxjKSwgZXN0YXRlKTsK KworCQkJVW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJ CX0KKwl9CiB9CiAKIC8qCkBAIC0yMDQyLDggKzIwODYsOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJ CSAqIFRoZSBzZXQgb2YgcGFydGl0aW9ucyB0aGF0IGV4aXN0IG5vdyBtaWdodCBub3QgYmUgdGhl IHNhbWUgdGhhdAogCQkJICogZXhpc3RlZCB3aGVuIHRoZSBwbGFuIHdhcyBtYWRlLiAgVGhlIG5v cm1hbCBjYXNlIGlzIHRoYXQgaXQgaXM7CiAJCQkgKiBvcHRpbWl6ZSBmb3IgdGhhdCBjYXNlIHdp dGggYSBxdWljayBjb21wYXJpc29uLCBhbmQganVzdCBjb3B5Ci0JCQkgKiB0aGUgc3VicGxhbl9t YXAgYW5kIG1ha2Ugc3VicGFydF9tYXAgcG9pbnQgdG8gdGhlIG9uZSBpbgotCQkJICogUHJ1bmVJ bmZvLgorCQkJICogdGhlIHN1YnBsYW5fbWFwIGFuZCBtYWtlIHN1YnBhcnRfbWFwLCBsZWFmcGFy dF9ydGlfbWFwIHBvaW50IHRvCisJCQkgKiB0aGUgb25lcyBpbiBQcnVuZUluZm8uCiAJCQkgKgog CQkJICogRm9yIHRoZSBjYXNlIHdoZXJlIHRoZXkgYXJlbid0IGlkZW50aWNhbCwgd2UgY291bGQg aGF2ZSBtb3JlCiAJCQkgKiBwYXJ0aXRpb25zIG9uIGVpdGhlciBzaWRlOyBvciBldmVuIGV4YWN0 bHkgdGhlIHNhbWUgbnVtYmVyIG9mCkBAIC0yMDYyLDYgKzIxMDYsNyBAQCBDcmVhdGVQYXJ0aXRp b25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bykKIAkJCQkJICAgc2l6ZW9mKGludCkgKiBwYXJ0ZGVzYy0+bnBhcnRzKSA9PSAwKQogCQkJewog CQkJCXBwcnVuZS0+c3VicGFydF9tYXAgPSBwaW5mby0+c3VicGFydF9tYXA7CisJCQkJcHBydW5l LT5sZWFmcGFydF9ydGlfbWFwID0gcGluZm8tPmxlYWZwYXJ0X3J0aV9tYXA7CiAJCQkJbWVtY3B5 KHBwcnVuZS0+c3VicGxhbl9tYXAsIHBpbmZvLT5zdWJwbGFuX21hcCwKIAkJCQkJICAgc2l6ZW9m KGludCkgKiBwaW5mby0+bnBhcnRzKTsKIAkJCX0KQEAgLTIwODIsNiArMjEyNyw3IEBAIENyZWF0 ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAq cHJ1bmVpbmZvKQogCQkJCSAqIG1pc21hdGNoZXMuCiAJCQkJICovCiAJCQkJcHBydW5lLT5zdWJw YXJ0X21hcCA9IHBhbGxvYyhzaXplb2YoaW50KSAqIHBhcnRkZXNjLT5ucGFydHMpOworCQkJCXBw cnVuZS0+bGVhZnBhcnRfcnRpX21hcCA9IHBhbGxvYyhzaXplb2YoaW50KSAqIHBhcnRkZXNjLT5u cGFydHMpOwogCiAJCQkJZm9yIChwcF9pZHggPSAwOyBwcF9pZHggPCBwYXJ0ZGVzYy0+bnBhcnRz OyBwcF9pZHgrKykKIAkJCQl7CkBAIC0yMDk5LDYgKzIxNDUsOCBAQCBDcmVhdGVQYXJ0aXRpb25Q cnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykK IAkJCQkJCQlwaW5mby0+c3VicGxhbl9tYXBbcGRfaWR4XTsKIAkJCQkJCXBwcnVuZS0+c3VicGFy dF9tYXBbcHBfaWR4XSA9CiAJCQkJCQkJcGluZm8tPnN1YnBhcnRfbWFwW3BkX2lkeF07CisJCQkJ CQlwcHJ1bmUtPmxlYWZwYXJ0X3J0aV9tYXBbcHBfaWR4XSA9CisJCQkJCQkJcGluZm8tPmxlYWZw YXJ0X3J0aV9tYXBbcGRfaWR4XTsKIAkJCQkJCXBkX2lkeCsrOwogCQkJCQkJY29udGludWU7CiAJ CQkJCX0KQEAgLTIxMzYsNiArMjE4NCw3IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0 YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCiAJCQkJCXBwcnVu ZS0+c3VicGFydF9tYXBbcHBfaWR4XSA9IC0xOwogCQkJCQlwcHJ1bmUtPnN1YnBsYW5fbWFwW3Bw X2lkeF0gPSAtMTsKKwkJCQkJcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwW3BwX2lkeF0gPSAwOwog CQkJCX0KIAkJCX0KIApAQCAtMjQxNCwxMCArMjQ2MywxNSBAQCBQYXJ0aXRpb25QcnVuZUZpeFN1 YlBsYW5NYXAoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKICAqIFBhc3MgaW5pdGlh bF9wcnVuZSBpZiBQQVJBTV9FWEVDIFBhcmFtcyBjYW5ub3QgeWV0IGJlIGV2YWx1YXRlZC4gIFRo aXMKICAqIGRpZmZlcmVudGlhdGVzIHRoZSBpbml0aWFsIGV4ZWN1dG9yLXRpbWUgcHJ1bmluZyBz dGVwIGZyb20gbGF0ZXIKICAqIHJ1bnRpbWUgcHJ1bmluZy4KKyAqCisgKiBUaGUgY2FsbGVyIG11 c3QgcGFzcyBhIG5vbi1OVUxMIHZhbGlkc3VicGxhbl9ydGlzIGR1cmluZyBpbml0aWFsIHBydW5p bmcKKyAqIHRvIGNvbGxlY3QgdGhlIFJUIGluZGV4ZXMgb2YgbGVhZiBwYXJ0aXRpb25zIHdob3Nl IHN1Ym5vZGVzIHdpbGwgYmUKKyAqIGV4ZWN1dGVkLiAgVGhlc2UgUlQgaW5kZXhlcyBhcmUgbGF0 ZXIgYWRkZWQgdG8gRVN0YXRlLmVzX3VucHJ1bmVkX3JlbGlkcy4KICAqLwogQml0bWFwc2V0ICoK IEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRl LAotCQkJCQkJIGJvb2wgaW5pdGlhbF9wcnVuZSkKKwkJCQkJCSBib29sIGluaXRpYWxfcHJ1bmUs CisJCQkJCQkgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFuX3J0aXMpCiB7CiAJQml0bWFwc2V0ICAq cmVzdWx0ID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CkBAIC0yNDI5LDYgKzI0 ODMsNyBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1 bmVzdGF0ZSwKIAkgKiBldmFsdWF0ZWQgKmFuZCogdGhlcmUgYXJlIHN0ZXBzIGluIHdoaWNoIHRv IGRvIHNvLgogCSAqLwogCUFzc2VydChpbml0aWFsX3BydW5lIHx8IHBydW5lc3RhdGUtPmRvX2V4 ZWNfcHJ1bmUpOworCUFzc2VydCh2YWxpZHN1YnBsYW5fcnRpcyAhPSBOVUxMIHx8ICFpbml0aWFs X3BydW5lKTsKIAogCS8qCiAJICogU3dpdGNoIHRvIGEgdGVtcCBjb250ZXh0IHRvIGF2b2lkIGxl YWtpbmcgbWVtb3J5IGluIHRoZSBleGVjdXRvcidzCkBAIC0yNDUzLDcgKzI1MDgsNyBAQCBFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJ cHBydW5lID0gJnBydW5lZGF0YS0+cGFydHJlbHBydW5lZGF0YVswXTsKIAkJZmluZF9tYXRjaGlu Z19zdWJwbGFuc19yZWN1cnNlKHBydW5lc3RhdGUtPnBhcmVudF9wbGFuLAogCQkJCQkJCQkJICAg cHJ1bmVkYXRhLCBwcHJ1bmUsIGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJCQkgICAmcmVzdWx0KTsK KwkJCQkJCQkJCSAgICZyZXN1bHQsIHZhbGlkc3VicGxhbl9ydGlzKTsKIAogCQkvKiBFeHByZXNz aW9uIGV2YWwgbWF5IGhhdmUgdXNlZCBzcGFjZSBpbiBFeHByQ29udGV4dCB0b28gKi8KIAkJaWYg KHBwcnVuZS0+ZXhlY19jb250ZXh0LmluaXRpYWxpemVkKQpAQCAtMjQ3MCw2ICsyNTI1LDggQEAg RXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUs CiAKIAkvKiBDb3B5IHJlc3VsdCBvdXQgb2YgdGhlIHRlbXAgY29udGV4dCBiZWZvcmUgd2UgcmVz ZXQgaXQgKi8KIAlyZXN1bHQgPSBibXNfY29weShyZXN1bHQpOworCWlmICh2YWxpZHN1YnBsYW5f cnRpcykKKwkJKnZhbGlkc3VicGxhbl9ydGlzID0gYm1zX2NvcHkoKnZhbGlkc3VicGxhbl9ydGlz KTsKIAogCU1lbW9yeUNvbnRleHRSZXNldChwcnVuZXN0YXRlLT5wcnVuZV9jb250ZXh0KTsKIApA QCAtMjQ4MCwxNCArMjUzNywxNyBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9u UHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKICAqIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJz ZQogICoJCVJlY3Vyc2l2ZSB3b3JrZXIgZnVuY3Rpb24gZm9yIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQ bGFucwogICoKLSAqIEFkZHMgdmFsaWQgKG5vbi1wcnVuYWJsZSkgc3VicGxhbiBJRHMgdG8gKnZh bGlkc3VicGxhbnMKKyAqIEFkZHMgdmFsaWQgKG5vbi1wcnVuYWJsZSkgc3VicGxhbiBJRHMgdG8g KnZhbGlkc3VicGxhbnMgYW5kIHRoZSBSVCBpbmRleGVzCisgKiBvZiB0aGVpciBjb3JyZXNwb25k aW5nIGxlYWYgcGFydGl0aW9ucyB0byAqdmFsaWRzdWJwbGFuX3J0aXMgaWYKKyAqIGl0J3Mgbm9u LU5VTEwuCiAgKi8KIHN0YXRpYyB2b2lkCiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2Uo UGxhblN0YXRlICpwYXJlbnRfcGxhbiwKIAkJCQkJCQkgICBQYXJ0aXRpb25QcnVuaW5nRGF0YSAq cHJ1bmVkYXRhLAogCQkJCQkJCSAgIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwK IAkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJICAgQml0bWFwc2V0ICoqdmFs aWRzdWJwbGFucykKKwkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zLAorCQkJCQkJ CSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbl9ydGlzKQogewogCUJpdG1hcHNldCAgKnBhcnRz ZXQ7CiAJaW50CQkJaTsKQEAgLTI1MzAsOCArMjU5MCwxMyBAQCBmaW5kX21hdGNoaW5nX3N1YnBs YW5zX3JlY3Vyc2UoUGxhblN0YXRlICpwYXJlbnRfcGxhbiwKIAl3aGlsZSAoKGkgPSBibXNfbmV4 dF9tZW1iZXIocGFydHNldCwgaSkpID49IDApCiAJewogCQlpZiAocHBydW5lLT5zdWJwbGFuX21h cFtpXSA+PSAwKQorCQl7CiAJCQkqdmFsaWRzdWJwbGFucyA9IGJtc19hZGRfbWVtYmVyKCp2YWxp ZHN1YnBsYW5zLAogCQkJCQkJCQkJCQlwcHJ1bmUtPnN1YnBsYW5fbWFwW2ldKTsKKwkJCWlmICh2 YWxpZHN1YnBsYW5fcnRpcykKKwkJCQkqdmFsaWRzdWJwbGFuX3J0aXMgPSBibXNfYWRkX21lbWJl cigqdmFsaWRzdWJwbGFuX3J0aXMsCisJCQkJCQkJCQkJCQkJcHBydW5lLT5sZWFmcGFydF9ydGlf bWFwW2ldKTsKKwkJfQogCQllbHNlCiAJCXsKIAkJCWludAkJCXBhcnRpZHggPSBwcHJ1bmUtPnN1 YnBhcnRfbWFwW2ldOwpAQCAtMjU0MCw3ICsyNjA1LDggQEAgZmluZF9tYXRjaGluZ19zdWJwbGFu c19yZWN1cnNlKFBsYW5TdGF0ZSAqcGFyZW50X3BsYW4sCiAJCQkJZmluZF9tYXRjaGluZ19zdWJw bGFuc19yZWN1cnNlKHBhcmVudF9wbGFuLAogCQkJCQkJCQkJCQkgICBwcnVuZWRhdGEsCiAJCQkJ CQkJCQkJCSAgICZwcnVuZWRhdGEtPnBhcnRyZWxwcnVuZWRhdGFbcGFydGlkeF0sCi0JCQkJCQkJ CQkJCSAgIGluaXRpYWxfcHJ1bmUsIHZhbGlkc3VicGxhbnMpOworCQkJCQkJCQkJCQkgICBpbml0 aWFsX3BydW5lLCB2YWxpZHN1YnBsYW5zLAorCQkJCQkJCQkJCQkgICB2YWxpZHN1YnBsYW5fcnRp cyk7CiAJCQllbHNlCiAJCQl7CiAJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXgg YmM5MDVhMGNkYy4uYjdjOTE0ZDY2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTE0 Nyw2ICsxNDcsNyBAQCBDcmVhdGVFeGVjdXRvclN0YXRlKHZvaWQpCiAJZXN0YXRlLT5lc190b3Bf ZWZsYWdzID0gMDsKIAllc3RhdGUtPmVzX2luc3RydW1lbnQgPSAwOwogCWVzdGF0ZS0+ZXNfZmlu aXNoZWQgPSBmYWxzZTsKKwllc3RhdGUtPmVzX2Fib3J0ZWQgPSBmYWxzZTsKIAogCWVzdGF0ZS0+ ZXNfZXhwcmNvbnRleHRzID0gTklMOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9mdW5jdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IDhk MWZkYTJkZGMuLjA1OGMxMGI0ZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1 bmN0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC04NDAs NiArODQwLDcgQEAgcG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rp b25DYWNoZVB0ciBmY2FjaGUpCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCiAJZXMtPnFkID0g Q3JlYXRlUXVlcnlEZXNjKGVzLT5zdG10LAorCQkJCQkJCSBOVUxMLAogCQkJCQkJCSBmY2FjaGUt PnNyYywKIAkJCQkJCQkgR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkgSW52YWxpZFNuYXBz aG90LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IGI3N2ZmODQ4NDAuLjg5ZTA1YjE5 ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTU4MSw3ICs1ODEsNyBAQCBjaG9v c2VfbmV4dF9zdWJwbGFuX2xvY2FsbHkoQXBwZW5kU3RhdGUgKm5vZGUpCiAJCWVsc2UgaWYgKCFu b2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQogCQl7CiAJCQlub2RlLT5hc192YWxp ZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5l X3N0YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3By dW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAJCQlub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVu dGlmaWVkID0gdHJ1ZTsKIAkJfQogCkBAIC02NDgsNyArNjQ4LDcgQEAgY2hvb3NlX25leHRfc3Vi cGxhbl9mb3JfbGVhZGVyKEFwcGVuZFN0YXRlICpub2RlKQogCQlpZiAoIW5vZGUtPmFzX3ZhbGlk X3N1YnBsYW5zX2lkZW50aWZpZWQpCiAJCXsKIAkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0K LQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNl KTsKKwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZh bHNlLCBOVUxMKTsKIAkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVl OwogCiAJCQkvKgpAQCAtNzI0LDcgKzcyNCw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX3dv cmtlcihBcHBlbmRTdGF0ZSAqbm9kZSkKIAllbHNlIGlmICghbm9kZS0+YXNfdmFsaWRfc3VicGxh bnNfaWRlbnRpZmllZCkKIAl7CiAJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCUV4ZWNG aW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJRXhl Y0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7 CiAJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwogCiAJCW1hcmtf aW52YWxpZF9zdWJwbGFuc19hc19maW5pc2hlZChub2RlKTsKQEAgLTg3Nyw3ICs4NzcsNyBAQCBF eGVjQXBwZW5kQXN5bmNCZWdpbihBcHBlbmRTdGF0ZSAqbm9kZSkKIAlpZiAoIW5vZGUtPmFzX3Zh bGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpCiAJewogCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9 Ci0JCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNl KTsKKwkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFs c2UsIE5VTEwpOwogCQlub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsK IAogCQljbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFucyhub2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUxvY2tSb3dzLmMKaW5kZXggNDE3NTRkZGZlYS4uY2ZlYWQ3ZGVkMiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUxvY2tSb3dzLmMKQEAgLTM0Nyw4ICszNDcsMTMgQEAgRXhlY0luaXRMb2NrUm93cyhM b2NrUm93cyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4ZWNSb3dNYXJr ICplcm07CiAJCUV4ZWNBdXhSb3dNYXJrICphZXJtOwogCi0JCS8qIGlnbm9yZSAicGFyZW50IiBy b3dtYXJrczsgdGhleSBhcmUgaXJyZWxldmFudCBhdCBydW50aW1lICovCi0JCWlmIChyYy0+aXNQ YXJlbnQpCisJCS8qCisJCSAqIElnbm9yZSAicGFyZW50IiByb3dtYXJrcywgYmVjYXVzZSB0aGV5 IGFyZSBpcnJlbGV2YW50IGF0CisJCSAqIHJ1bnRpbWUuICBBbHNvIGlnbm9yZSB0aGUgcm93bWFy a3MgYmVsb25naW5nIHRvIGNoaWxkIHRhYmxlcworCQkgKiB0aGF0IGhhdmUgYmVlbiBwcnVuZWQg aW4gRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4KKwkJICovCisJCWlmIChyYy0+aXNQYXJlbnQgfHwK KwkJCSFibXNfaXNfbWVtYmVyKHJjLT5ydGksIGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzKSkK IAkJCWNvbnRpbnVlOwogCiAJCS8qIGZpbmQgRXhlY1Jvd01hcmsgYW5kIGJ1aWxkIEV4ZWNBdXhS b3dNYXJrICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBl bmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IGUyMDMy YWZjYjcuLjA2OTZkZmU3ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN ZXJnZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5j CkBAIC0yMTksNyArMjE5LDcgQEAgRXhlY01lcmdlQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQog CQkgKi8KIAkJaWYgKG5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJCQlub2RlLT5t c192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPm1z X3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUt Pm1zX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAKIAkJLyoKIAkJICogRmlyc3QgdGltZSB0 aHJvdWdoOiBwdWxsIHRoZSBmaXJzdCB0dXBsZSBmcm9tIGVhY2ggdmFsaWQgc3VicGxhbiwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggMTE2MTUyMGY3Ni4uNzQxM2Ey OWVkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTYzNiw3ICs2 MzYsNyBAQCBFeGVjSW5pdFVwZGF0ZVByb2plY3Rpb24oTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0 ZSwKIAkJQXNzZXJ0KHdoaWNocmVsID49IDAgJiYgd2hpY2hyZWwgPCBtdHN0YXRlLT5tdF9ucmVs cyk7CiAJfQogCi0JdXBkYXRlQ29sbm9zID0gKExpc3QgKikgbGlzdF9udGgobm9kZS0+dXBkYXRl Q29sbm9zTGlzdHMsIHdoaWNocmVsKTsKKwl1cGRhdGVDb2xub3MgPSAoTGlzdCAqKSBsaXN0X250 aChtdHN0YXRlLT5tdF91cGRhdGVDb2xub3NMaXN0cywgd2hpY2hyZWwpOwogCiAJLyoKIAkgKiBG b3IgVVBEQVRFLCB3ZSB1c2UgdGhlIG9sZCB0dXBsZSB0byBmaWxsIHVwIG1pc3NpbmcgdmFsdWVz IGluIHRoZSB0dXBsZQpAQCAtNDI4Miw3ICs0MjgyLDExIEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUo TW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCU1vZGlmeVRh YmxlU3RhdGUgKm10c3RhdGU7CiAJUGxhbgkgICAqc3VicGxhbiA9IG91dGVyUGxhbihub2RlKTsK IAlDbWRUeXBlCQlvcGVyYXRpb24gPSBub2RlLT5vcGVyYXRpb247Ci0JaW50CQkJbnJlbHMgPSBs aXN0X2xlbmd0aChub2RlLT5yZXN1bHRSZWxhdGlvbnMpOworCWludAkJCW5yZWxzOworCUxpc3QJ ICAgKnJlc3VsdFJlbGF0aW9ucyA9IE5JTDsKKwlMaXN0CSAgICp3aXRoQ2hlY2tPcHRpb25MaXN0 cyA9IE5JTDsKKwlMaXN0CSAgICpyZXR1cm5pbmdMaXN0cyA9IE5JTDsKKwlMaXN0CSAgICp1cGRh dGVDb2xub3NMaXN0cyA9IE5JTDsKIAlSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvOwogCUxp c3QJICAgKmFyb3dtYXJrczsKIAlMaXN0Q2VsbCAgICpsOwpAQCAtNDI5Miw2ICs0Mjk2LDQ1IEBA IEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCS8qIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBmbGFncyAqLwogCUFzc2VydCgh KGVmbGFncyAmIChFWEVDX0ZMQUdfQkFDS1dBUkQgfCBFWEVDX0ZMQUdfTUFSSykpKTsKIAorCS8q CisJICogT25seSBjb25zaWRlciB1bnBydW5lZCByZWxhdGlvbnMgZm9yIGluaXRpYWxpemluZyB0 aGVpciBSZXN1bHRSZWxJbmZvCisJICogc3RydWN0IGFuZCBvdGhlciBmaWVsZHMgc3VjaCBhcyB3 aXRoQ2hlY2tPcHRpb25zLCBldGMuCisJICovCisJaSA9IDA7CisJZm9yZWFjaChsLCBub2RlLT5y ZXN1bHRSZWxhdGlvbnMpCisJeworCQlJbmRleAlydGkgPSBsZmlyc3RfaW50KGwpOworCisJCWlm IChibXNfaXNfbWVtYmVyKHJ0aSwgZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMpKQorCQl7CisJ CQlyZXN1bHRSZWxhdGlvbnMgPSBsYXBwZW5kX2ludChyZXN1bHRSZWxhdGlvbnMsIHJ0aSk7CisJ CQlpZiAobm9kZS0+d2l0aENoZWNrT3B0aW9uTGlzdHMpCisJCQl7CisJCQkJTGlzdCAqd2l0aENo ZWNrT3B0aW9ucyA9IGxpc3RfbnRoX25vZGUoTGlzdCwKKwkJCQkJCQkJCQkJCQkgICBub2RlLT53 aXRoQ2hlY2tPcHRpb25MaXN0cywKKwkJCQkJCQkJCQkJCQkgICBpKTsKKworCQkJCXdpdGhDaGVj a09wdGlvbkxpc3RzID0gbGFwcGVuZCh3aXRoQ2hlY2tPcHRpb25MaXN0cywgd2l0aENoZWNrT3B0 aW9ucyk7CisJCQl9CisJCQlpZiAobm9kZS0+cmV0dXJuaW5nTGlzdHMpCisJCQl7CisJCQkJTGlz dCAqcmV0dXJuaW5nTGlzdCA9IGxpc3RfbnRoX25vZGUoTGlzdCwKKwkJCQkJCQkJCQkJCQlub2Rl LT5yZXR1cm5pbmdMaXN0cywKKwkJCQkJCQkJCQkJCQlpKTsKKworCQkJCXJldHVybmluZ0xpc3Rz ID0gbGFwcGVuZChyZXR1cm5pbmdMaXN0cywgcmV0dXJuaW5nTGlzdCk7CisJCQl9CisJCQlpZiAo bm9kZS0+dXBkYXRlQ29sbm9zTGlzdHMpCisJCQl7CisJCQkJTGlzdCAqdXBkYXRlQ29sbm9zTGlz dCA9IGxpc3RfbnRoKG5vZGUtPnVwZGF0ZUNvbG5vc0xpc3RzLCBpKTsKKworCQkJCXVwZGF0ZUNv bG5vc0xpc3RzID0gbGFwcGVuZCh1cGRhdGVDb2xub3NMaXN0cywgdXBkYXRlQ29sbm9zTGlzdCk7 CisJCQl9CisJCX0KKwkJaSsrOworCX0KKwlucmVscyA9IGxpc3RfbGVuZ3RoKHJlc3VsdFJlbGF0 aW9ucyk7CisKIAkvKgogCSAqIGNyZWF0ZSBzdGF0ZSBzdHJ1Y3R1cmUKIAkgKi8KQEAgLTQzMTIs NiArNDM1NSw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCW10c3RhdGUtPm10X21lcmdlX2luc2VydGVkID0gMDsK IAltdHN0YXRlLT5tdF9tZXJnZV91cGRhdGVkID0gMDsKIAltdHN0YXRlLT5tdF9tZXJnZV9kZWxl dGVkID0gMDsKKwltdHN0YXRlLT5tdF91cGRhdGVDb2xub3NMaXN0cyA9IHVwZGF0ZUNvbG5vc0xp c3RzOwogCiAJLyotLS0tLS0tLS0tCiAJICogUmVzb2x2ZSB0aGUgdGFyZ2V0IHJlbGF0aW9uLiBU aGlzIGlzIHRoZSBzYW1lIGFzOgpAQCAtNDMyOSw2ICs0MzczLDcgQEAgRXhlY0luaXRNb2RpZnlU YWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICov CiAJaWYgKG5vZGUtPnJvb3RSZWxhdGlvbiA+IDApCiAJeworCQlBc3NlcnQoYm1zX2lzX21lbWJl cihub2RlLT5yb290UmVsYXRpb24sIGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzKSk7CiAJCW10 c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvID0gbWFrZU5vZGUoUmVzdWx0UmVsSW5mbyk7CiAJCUV4 ZWNJbml0UmVzdWx0UmVsYXRpb24oZXN0YXRlLCBtdHN0YXRlLT5yb290UmVzdWx0UmVsSW5mbywK IAkJCQkJCQkgICBub2RlLT5yb290UmVsYXRpb24pOwpAQCAtNDM0Myw3ICs0Mzg4LDcgQEAgRXhl Y0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAKIAkvKiBzZXQgdXAgZXBxc3RhdGUgd2l0aCBkdW1teSBzdWJwbGFuIGRhdGEgZm9y IHRoZSBtb21lbnQgKi8KIAlFdmFsUGxhblF1YWxJbml0KCZtdHN0YXRlLT5tdF9lcHFzdGF0ZSwg ZXN0YXRlLCBOVUxMLCBOSUwsCi0JCQkJCSBub2RlLT5lcHFQYXJhbSwgbm9kZS0+cmVzdWx0UmVs YXRpb25zKTsKKwkJCQkJIG5vZGUtPmVwcVBhcmFtLCByZXN1bHRSZWxhdGlvbnMpOwogCW10c3Rh dGUtPmZpcmVCU1RyaWdnZXJzID0gdHJ1ZTsKIAogCS8qCkBAIC00MzYxLDcgKzQ0MDYsNyBAQCBF eGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAkgKi8KIAlyZXN1bHRSZWxJbmZvID0gbXRzdGF0ZS0+cmVzdWx0UmVsSW5mbzsK IAlpID0gMDsKLQlmb3JlYWNoKGwsIG5vZGUtPnJlc3VsdFJlbGF0aW9ucykKKwlmb3JlYWNoKGws IHJlc3VsdFJlbGF0aW9ucykKIAl7CiAJCUluZGV4CQlyZXN1bHRSZWxhdGlvbiA9IGxmaXJzdF9p bnQobCk7CiAJCUxpc3QJICAgKm1lcmdlQWN0aW9ucyA9IE5JTDsKQEAgLTQ1MDUsNyArNDU1MCw3 IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCSAqIEluaXRpYWxpemUgYW55IFdJVEggQ0hFQ0sgT1BUSU9OIGNvbnN0 cmFpbnRzIGlmIG5lZWRlZC4KIAkgKi8KIAlyZXN1bHRSZWxJbmZvID0gbXRzdGF0ZS0+cmVzdWx0 UmVsSW5mbzsKLQlmb3JlYWNoKGwsIG5vZGUtPndpdGhDaGVja09wdGlvbkxpc3RzKQorCWZvcmVh Y2gobCwgd2l0aENoZWNrT3B0aW9uTGlzdHMpCiAJewogCQlMaXN0CSAgICp3Y29MaXN0ID0gKExp c3QgKikgbGZpcnN0KGwpOwogCQlMaXN0CSAgICp3Y29FeHBycyA9IE5JTDsKQEAgLTQ1MjgsNyAr NDU3Myw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCS8qCiAJICogSW5pdGlhbGl6ZSBSRVRVUk5JTkcgcHJvamVj dGlvbnMgaWYgbmVlZGVkLgogCSAqLwotCWlmIChub2RlLT5yZXR1cm5pbmdMaXN0cykKKwlpZiAo cmV0dXJuaW5nTGlzdHMpCiAJewogCQlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKIAkJRXhwckNvbnRl eHQgKmVjb250ZXh0OwpAQCAtNDUzNyw3ICs0NTgyLDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShN b2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCSAqIEluaXRp YWxpemUgcmVzdWx0IHR1cGxlIHNsb3QgYW5kIGFzc2lnbiBpdHMgcm93dHlwZSB1c2luZyB0aGUg Zmlyc3QKIAkJICogUkVUVVJOSU5HIGxpc3QuICBXZSBhc3N1bWUgdGhlIHJlc3Qgd2lsbCBsb29r IHRoZSBzYW1lLgogCQkgKi8KLQkJbXRzdGF0ZS0+cHMucGxhbi0+dGFyZ2V0bGlzdCA9IChMaXN0 ICopIGxpbml0aWFsKG5vZGUtPnJldHVybmluZ0xpc3RzKTsKKwkJbXRzdGF0ZS0+cHMucGxhbi0+ dGFyZ2V0bGlzdCA9IChMaXN0ICopIGxpbml0aWFsKHJldHVybmluZ0xpc3RzKTsKIAogCQkvKiBT ZXQgdXAgYSBzbG90IGZvciB0aGUgb3V0cHV0IG9mIHRoZSBSRVRVUk5JTkcgcHJvamVjdGlvbihz KSAqLwogCQlFeGVjSW5pdFJlc3VsdFR1cGxlU2xvdFRMKCZtdHN0YXRlLT5wcywgJlRUU09wc1Zp cnR1YWwpOwpAQCAtNDU1Miw3ICs0NTk3LDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlU YWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCSAqIEJ1aWxkIGEgcHJv amVjdGlvbiBmb3IgZWFjaCByZXN1bHQgcmVsLgogCQkgKi8KIAkJcmVzdWx0UmVsSW5mbyA9IG10 c3RhdGUtPnJlc3VsdFJlbEluZm87Ci0JCWZvcmVhY2gobCwgbm9kZS0+cmV0dXJuaW5nTGlzdHMp CisJCWZvcmVhY2gobCwgcmV0dXJuaW5nTGlzdHMpCiAJCXsKIAkJCUxpc3QJICAgKnJsaXN0ID0g KExpc3QgKikgbGZpcnN0KGwpOwogCkBAIC00NjUzLDggKzQ2OTgsMTMgQEAgRXhlY0luaXRNb2Rp ZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ CUV4ZWNSb3dNYXJrICplcm07CiAJCUV4ZWNBdXhSb3dNYXJrICphZXJtOwogCi0JCS8qIGlnbm9y ZSAicGFyZW50IiByb3dtYXJrczsgdGhleSBhcmUgaXJyZWxldmFudCBhdCBydW50aW1lICovCi0J CWlmIChyYy0+aXNQYXJlbnQpCisJCS8qCisJCSAqIElnbm9yZSAicGFyZW50IiByb3dtYXJrcywg YmVjYXVzZSB0aGV5IGFyZSBpcnJlbGV2YW50IGF0CisJCSAqIHJ1bnRpbWUuICBBbHNvIGlnbm9y ZSB0aGUgcm93bWFya3MgYmVsb25naW5nIHRvIGNoaWxkIHRhYmxlcworCQkgKiB0aGF0IGhhdmUg YmVlbiBwcnVuZWQgaW4gRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4KKwkJICovCisJCWlmIChyYy0+ aXNQYXJlbnQgfHwKKwkJCSFibXNfaXNfbWVtYmVyKHJjLT5ydGksIGVzdGF0ZS0+ZXNfdW5wcnVu ZWRfcmVsaWRzKSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIEZpbmQgRXhlY1Jvd01hcmsgYW5kIGJ1 aWxkIEV4ZWNBdXhSb3dNYXJrICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9z cGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmluZGV4IDJmYjJlNzM2MDQuLmE3Zjk4 MjRlNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC03MCw3ICs3MCw4IEBAIHN0YXRpYyBpbnQJX1NQSV9l eGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0 aW9ucywKIHN0YXRpYyBQYXJhbUxpc3RJbmZvIF9TUElfY29udmVydF9wYXJhbXMoaW50IG5hcmdz LCBPaWQgKmFyZ3R5cGVzLAogCQkJCQkJCQkJCSBEYXR1bSAqVmFsdWVzLCBjb25zdCBjaGFyICpO dWxscyk7CiAKLXN0YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJv b2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCk7CitzdGF0aWMgaW50CV9TUElfcHF1ZXJ5 KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQs CisJCQkJCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgpOwog CiBzdGF0aWMgdm9pZCBfU1BJX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiAKQEAgLTE2ODUs NyArMTY4Niw4IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBT UElQbGFuUHRyIHBsYW4sCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIHBsYW5zb3VyY2Ut PmNvbW1hbmRUYWcsCiAJCQkJCSAgc3RtdF9saXN0LAotCQkJCQkgIGNwbGFuKTsKKwkJCQkJICBj cGxhbiwKKwkJCQkJICBwbGFuc291cmNlKTsKIAogCS8qCiAJICogU2V0IHVwIG9wdGlvbnMgZm9y IHBvcnRhbC4gIERlZmF1bHQgU0NST0xMIHR5cGUgaXMgY2hvc2VuIHRoZSBzYW1lIHdheQpAQCAt MjUwMCw2ICsyNTAyLDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25z dCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSA9IChDYWNoZWRQbGFuU291cmNlICopIGxmaXJzdChsYzEpOwogCQlMaXN0CSAgICpzdG10 X2xpc3Q7CiAJCUxpc3RDZWxsICAgKmxjMjsKKwkJaW50CQkJcXVlcnlfaW5kZXggPSAwOwogCiAJ CXNwaWNhbGxiYWNrYXJnLnF1ZXJ5ID0gcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nOwogCkBAIC0y NjkwLDE0ICsyNjkzLDE2IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29u c3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJCXNuYXAgPSBJbnZhbGlkU25hcHNo b3Q7CiAKIAkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCQkJCQkJCWNwbGFu LAogCQkJCQkJCQkJCXBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkJCQlzbmFwLCBj cm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJCQkJCWRlc3QsCiAJCQkJCQkJCQkJb3B0aW9ucy0+ cGFyYW1zLAogCQkJCQkJCQkJCV9TUElfY3VycmVudC0+cXVlcnlFbnYsCiAJCQkJCQkJCQkJMCk7 Ci0JCQkJcmVzID0gX1NQSV9wcXVlcnkocWRlc2MsIGZpcmVfdHJpZ2dlcnMsCi0JCQkJCQkJCSAg Y2FuU2V0VGFnID8gb3B0aW9ucy0+dGNvdW50IDogMCk7CisKKwkJCQlyZXMgPSBfU1BJX3BxdWVy eShxZGVzYywgZmlyZV90cmlnZ2VycywgY2FuU2V0VGFnID8gb3B0aW9ucy0+dGNvdW50IDogMCwK KwkJCQkJCQkJICBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CiAJCQkJRnJlZVF1ZXJ5RGVzYyhx ZGVzYyk7CiAJCQl9CiAJCQllbHNlCkBAIC0yNzk0LDYgKzI3OTksOCBAQCBfU1BJX2V4ZWN1dGVf cGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAog CQkJCW15X3JlcyA9IHJlczsKIAkJCQlnb3RvIGZhaWw7CiAJCQl9CisKKwkJCXF1ZXJ5X2luZGV4 Kys7CiAJCX0KIAogCQkvKiBEb25lIHdpdGggdGhpcyBwbGFuLCBzbyByZWxlYXNlIHJlZmNvdW50 ICovCkBAIC0yODcxLDcgKzI4NzgsOCBAQCBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywg T2lkICphcmd0eXBlcywKIH0KIAogc3RhdGljIGludAotX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpx dWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCkKK19TUElfcHF1ZXJ5 KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQs CisJCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgpCiB7CiAJ aW50CQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247CiAJaW50CQkJZWZsYWdzOwpA QCAtMjkyNyw3ICsyOTM1LDEwIEBAIF9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBi b29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpCiAJZWxzZQogCQllZmxhZ3MgPSBFWEVD X0ZMQUdfU0tJUF9UUklHR0VSUzsKIAotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3Mp OworCWlmIChxdWVyeURlc2MtPmNwbGFuKQorCQlFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbihxdWVy eURlc2MsIGVmbGFncywgcGxhbnNvdXJjZSwgcXVlcnlfaW5kZXgpOworCWVsc2UKKwkJRXhlY3V0 b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAKIAlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZv cndhcmRTY2FuRGlyZWN0aW9uLCB0Y291bnQsIHRydWUpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9wbGFubmVyLmMKaW5kZXggOWMyNTNlODY0YS4uNWZlMmVlYjY1YyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTU5LDYgKzU1OSw4IEBAIHN0YW5kYXJkX3BsYW5uZXIo UXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25z LAogCXJlc3VsdC0+cGxhblRyZWUgPSB0b3BfcGxhbjsKIAlyZXN1bHQtPnBhcnRQcnVuZUluZm9z ID0gZ2xvYi0+cGFydFBydW5lSW5mb3M7CiAJcmVzdWx0LT5ydGFibGUgPSBnbG9iLT5maW5hbHJ0 YWJsZTsKKwlyZXN1bHQtPnVucHJ1bmFibGVSZWxpZHMgPSBibXNfZGlmZmVyZW5jZShnbG9iLT5h bGxSZWxpZHMsCisJCQkJCQkJCQkJCSAgZ2xvYi0+cHJ1bmFibGVSZWxpZHMpOwogCXJlc3VsdC0+ cGVybUluZm9zID0gZ2xvYi0+ZmluYWxydGVwZXJtaW5mb3M7CiAJcmVzdWx0LT5yZXN1bHRSZWxh dGlvbnMgPSBnbG9iLT5yZXN1bHRSZWxhdGlvbnM7CiAJcmVzdWx0LT5hcHBlbmRSZWxhdGlvbnMg PSBnbG9iLT5hcHBlbmRSZWxhdGlvbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMK aW5kZXggOWYxMzI0M2Q1NC4uMDUzZDI2ODdmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Nl dHJlZnMuYwpAQCAtNTY0LDcgKzU2NCw4IEBAIGFkZF9ydGVfdG9fZmxhdF9ydGFibGUoUGxhbm5l ckdsb2JhbCAqZ2xvYiwgTGlzdCAqcnRlcGVybWluZm9zLAogCiAJLyoKIAkgKiBJZiBpdCdzIGEg cGxhaW4gcmVsYXRpb24gUlRFIChvciBhIHN1YnF1ZXJ5IHRoYXQgd2FzIG9uY2UgYSB2aWV3Ci0J ICogcmVmZXJlbmNlKSwgYWRkIHRoZSByZWxhdGlvbiBPSUQgdG8gcmVsYXRpb25PaWRzLgorCSAq IHJlZmVyZW5jZSksIGFkZCB0aGUgcmVsYXRpb24gT0lEIHRvIHJlbGF0aW9uT2lkcy4gIEFsc28g YWRkIGl0cyBuZXcgUlQKKwkgKiBpbmRleCB0byB0aGUgc2V0IG9mIHJlbGF0aW9ucyB0aGF0IG5l ZWQgdG8gYmUgbG9ja2VkIGZvciBleGVjdXRpb24uCiAJICoKIAkgKiBXZSBkbyB0aGlzIGV2ZW4g dGhvdWdoIHRoZSBSVEUgbWlnaHQgYmUgdW5yZWZlcmVuY2VkIGluIHRoZSBwbGFuIHRyZWU7CiAJ ICogdGhpcyB3b3VsZCBjb3JyZXNwb25kIHRvIGNhc2VzIHN1Y2ggYXMgdmlld3MgdGhhdCB3ZXJl IGV4cGFuZGVkLCBjaGlsZApAQCAtNTc2LDcgKzU3NywxMSBAQCBhZGRfcnRlX3RvX2ZsYXRfcnRh YmxlKFBsYW5uZXJHbG9iYWwgKmdsb2IsIExpc3QgKnJ0ZXBlcm1pbmZvcywKIAkgKi8KIAlpZiAo bmV3cnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAogCQkobmV3cnRlLT5ydGVraW5kID09 IFJURV9TVUJRVUVSWSAmJiBPaWRJc1ZhbGlkKG5ld3J0ZS0+cmVsaWQpKSkKKwl7CiAJCWdsb2It PnJlbGF0aW9uT2lkcyA9IGxhcHBlbmRfb2lkKGdsb2ItPnJlbGF0aW9uT2lkcywgbmV3cnRlLT5y ZWxpZCk7CisJCWdsb2ItPmFsbFJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGdsb2ItPmFsbFJlbGlk cywKKwkJCQkJCQkJCQkgbGlzdF9sZW5ndGgoZ2xvYi0+ZmluYWxydGFibGUpKTsKKwl9CiAKIAkv KgogCSAqIEFkZCBhIGNvcHkgb2YgdGhlIFJURVBlcm1pc3Npb25JbmZvLCBpZiBhbnksIGNvcnJl c3BvbmRpbmcgdG8gdGhpcyBSVEUKQEAgLTE3NDAsNiArMTc0NSwxMSBAQCBzZXRfY3VzdG9tc2Nh bl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogICoKICAqIEFsc28gdXBkYXRlIHRoZSBS VCBpbmRleGVzIHByZXNlbnQgaW4gUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zIHRvIGFkZCB0aGUK ICAqIG9mZnNldC4KKyAqCisgKiBGaW5hbGx5LCBpZiB0aGVyZSBhcmUgaW5pdGlhbCBwcnVuaW5n IHN0ZXBzLCBhZGQgdGhlIFJUIGluZGV4ZXMgb2YgdGhlCisgKiBsZWFmIHBhcnRpdGlvbnMgdG8g dGhlIHNldCBvZiByZWxhdGlvbnMgdGhhdCBhcmUgcHJ1bmFibGUgYXQgZXhlY3V0aW9uCisgKiBz dGFydHVwIHRpbWUuICBUaGlzIHNldCBpbmRpY2F0ZXMgd2hpY2ggcmVsYXRpb25zIHNob3VsZCBu b3QgYmUgbG9ja2VkCisgKiBiZWZvcmUgZXhlY3V0b3Igc3RhcnR1cCwgYXMgdGhleSBtYXkgYmUg cHJ1bmVkIGR1cmluZyBpbml0aWFsIHBydW5pbmcuCiAgKi8KIHN0YXRpYyBpbnQKIHJlZ2lzdGVy X3BhcnRwcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIGludCBwYXJ0X3BydW5lX2luZGV4LCBp bnQgcnRvZmZzZXQpCkBAIC0xNzYyLDggKzE3NzIsMjUgQEAgcmVnaXN0ZXJfcGFydHBydW5laW5m byhQbGFubmVySW5mbyAqcm9vdCwgaW50IHBhcnRfcHJ1bmVfaW5kZXgsIGludCBydG9mZnNldCkK IAkJZm9yZWFjaChsMiwgcHJ1bmVfaW5mb3MpCiAJCXsKIAkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJ bmZvICpwcmVsaW5mbyA9IGxmaXJzdChsMik7CisJCQlpbnQJCWk7CiAKIAkJCXByZWxpbmZvLT5y dGluZGV4ICs9IHJ0b2Zmc2V0OworCisJCQlmb3IgKGkgPSAwOyBpIDwgcHJlbGluZm8tPm5wYXJ0 czsgaSsrKQorCQkJeworCQkJCS8qCisJCQkJICogTm9uLWxlYWYgcGFydGl0aW9ucyBhbmQgcGFy dGl0aW9ucyB0aGF0IGRvIG5vdCBoYXZlIGEKKwkJCQkgKiBzdWJwbGFuIGFyZSBub3QgaW5jbHVk ZWQgaW4gdGhpcyBtYXAgYXMgbWVudGlvbmVkIGluCisJCQkJICogbWFrZV9wYXJ0aXRpb25lZHJl bF9wcnVuZWluZm8oKS4KKwkJCQkgKi8KKwkJCQlpZiAocHJlbGluZm8tPmxlYWZwYXJ0X3J0aV9t YXBbaV0pCisJCQkJeworCQkJCQlwcmVsaW5mby0+bGVhZnBhcnRfcnRpX21hcFtpXSArPSBydG9m ZnNldDsKKwkJCQkJaWYgKHByZWxpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMpCisJCQkJCQln bG9iLT5wcnVuYWJsZVJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGdsb2ItPnBydW5hYmxlUmVsaWRz LAorCQkJCQkJCQkJCQkJCQkJICBwcmVsaW5mby0+bGVhZnBhcnRfcnRpX21hcFtpXSk7CisJCQkJ fQorCQkJfQogCQl9CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcv cGFydHBydW5lLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKaW5kZXgg YWUxZDY5Zjk2Yy4uMDNlNTk2YzQwNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9u aW5nL3BhcnRwcnVuZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUu YwpAQCAtNjQ1LDYgKzY0NSw3IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5u ZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCWludAkJICAgKnN1YnBsYW5f bWFwOwogCQlpbnQJCSAgICpzdWJwYXJ0X21hcDsKIAkJT2lkCQkgICAqcmVsaWRfbWFwOworCQlp bnQJCSAgICpsZWFmcGFydF9ydGlfbWFwOwogCiAJCS8qCiAJCSAqIENvbnN0cnVjdCB0aGUgc3Vi cGxhbiBhbmQgc3VicGFydCBtYXBzIGZvciB0aGlzIHBhcnRpdGlvbmluZyBsZXZlbC4KQEAgLTY1 Nyw2ICs2NTgsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlzdWJwYXJ0X21hcCA9IChpbnQgKikgcGFs bG9jKG5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAkJbWVtc2V0KHN1YnBhcnRfbWFwLCAtMSwgbnBh cnRzICogc2l6ZW9mKGludCkpOwogCQlyZWxpZF9tYXAgPSAoT2lkICopIHBhbGxvYzAobnBhcnRz ICogc2l6ZW9mKE9pZCkpOworCQlsZWFmcGFydF9ydGlfbWFwID0gKGludCAqKSBwYWxsb2MwKG5w YXJ0cyAqIHNpemVvZihpbnQpKTsKIAkJcHJlc2VudF9wYXJ0cyA9IE5VTEw7CiAKIAkJaSA9IC0x OwpAQCAtNjcxLDkgKzY3MywyOCBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJc3VicGxhbl9tYXBbaV0g PSBzdWJwbGFuaWR4ID0gcmVsaWRfc3VicGxhbl9tYXBbcGFydHJlbC0+cmVsaWRdIC0gMTsKIAkJ CXN1YnBhcnRfbWFwW2ldID0gc3VicGFydGlkeCA9IHJlbGlkX3N1YnBhcnRfbWFwW3BhcnRyZWwt PnJlbGlkXSAtIDE7CiAJCQlyZWxpZF9tYXBbaV0gPSBwbGFubmVyX3J0X2ZldGNoKHBhcnRyZWwt PnJlbGlkLCByb290KS0+cmVsaWQ7CisKKwkJCS8qCisJCQkgKiBUcmFjayB0aGUgUlQgaW5kZXhl cyBvZiAibGVhZiIgcGFydGl0aW9ucyBzbyB0aGV5IGNhbiBiZQorCQkJICogaW5jbHVkZWQgaW4g dGhlIFBsYW5uZXJHbG9iYWwucHJ1bmFibGVSZWxpZHMgc2V0LCBpbmRpY2F0aW5nCisJCQkgKiBy ZWxhdGlvbnMgd2hvc2UgbG9ja2luZyBpcyBkZWZlcnJlZCB1bnRpbCBleGVjdXRvciBzdGFydHVw LgorCQkJICoKKwkJCSAqIFdlIGRvbuKAmXQgZGVmZXIgbG9ja2luZyBvZiBzdWItcGFydGl0aW9u ZWQgcGFydGl0aW9ucyBiZWNhdXNlCisJCQkgKiBzZXR0aW5nIHVwIFBhcnRpdGlvbmVkUmVsUHJ1 bmluZ0RhdGEgY3VycmVudGx5IG9jY3VycyBiZWZvcmUKKwkJCSAqIGluaXRpYWwgcHJ1bmluZywg c28gdGhlIHJlbGF0aW9uIG11c3QgYmUgbG9ja2VkIGF0IHRoYXQgc3RhZ2UsCisJCQkgKiBldmVu IGlmIGl0IG1heSBiZSBwcnVuZWQuCisJCQkgKgorCQkJICogT25seSBsZWFmIHBhcnRpdGlvbnMg d2l0aCBhIHZhbGlkIHN1YnBsYW4gdGhhdCBhcmUgcHJ1bmFibGUKKwkJCSAqIHVzaW5nIGluaXRp YWwgcHJ1bmluZyBhcmUgYWRkZWQgdG8gcHJ1bmFibGVSZWxpZHMuIFNvCisJCQkgKiBwYXJ0aXRp b25zIHdpdGhvdXQgYSBzdWJwbGFuIGR1ZSB0byBjb25zdHJhaW50IGV4Y2x1c2lvbiB3aWxsCisJ CQkgKiByZW1haW4gaW4gUGxhbm5lZFN0bXQudW5wcnVuYWJsZVJlbGlkcyBhbmQgdGh1cyB0aGVp ciBsb2NraW5nCisJCQkgKiB3aWxsIG5vdCBiZSBkZWZlcnJlZCBldmVuIGlmIHRoZXkgbWF5IHVs dGltYXRlbHkgYmUgcHJ1bmVkIGR1ZQorCQkJICogdG8gaW5pdGlhbCBwcnVuaW5nLgorCQkJICov CiAJCQlpZiAoc3VicGxhbmlkeCA+PSAwKQogCQkJewogCQkJCXByZXNlbnRfcGFydHMgPSBibXNf YWRkX21lbWJlcihwcmVzZW50X3BhcnRzLCBpKTsKKwkJCQlsZWFmcGFydF9ydGlfbWFwW2ldID0g KGludCkgcGFydHJlbC0+cmVsaWQ7CiAKIAkJCQkvKiBSZWNvcmQgZmluZGluZyB0aGlzIHN1YnBs YW4gICovCiAJCQkJc3VicGxhbnNmb3VuZCA9IGJtc19hZGRfbWVtYmVyKHN1YnBsYW5zZm91bmQs IHN1YnBsYW5pZHgpOwpAQCAtNjk1LDYgKzcxNiw3IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1 bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCXBpbmZv LT5zdWJwbGFuX21hcCA9IHN1YnBsYW5fbWFwOwogCQlwaW5mby0+c3VicGFydF9tYXAgPSBzdWJw YXJ0X21hcDsKIAkJcGluZm8tPnJlbGlkX21hcCA9IHJlbGlkX21hcDsKKwkJcGluZm8tPmxlYWZw YXJ0X3J0aV9tYXAgPSBsZWFmcGFydF9ydGlfbWFwOwogCX0KIAogCXBmcmVlKHJlbGlkX3N1YnBh cnRfbWFwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCA0Yjk4NWJkMDU2Li40OGIwNjc1MDcwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jCkBAIC0xMjM2LDYgKzEyMzYsNyBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25z dCBjaGFyICpxdWVyeV9zdHJpbmcpCiAJCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJCSAgY29t bWFuZFRhZywKIAkJCQkJCSAgcGxhbnRyZWVfbGlzdCwKKwkJCQkJCSAgTlVMTCwKIAkJCQkJCSAg TlVMTCk7CiAKIAkJLyoKQEAgLTIwMzgsNyArMjAzOSw4IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0 cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAgcHNy Yy0+Y29tbWFuZFRhZywKIAkJCQkJICBjcGxhbi0+c3RtdF9saXN0LAotCQkJCQkgIGNwbGFuKTsK KwkJCQkJICBjcGxhbiwKKwkJCQkJICBwc3JjKTsKIAogCS8qIERvbmUgd2l0aCB0aGUgc25hcHNo b3QgdXNlZCBmb3IgcGFyYW1ldGVyIEkvTyBhbmQgcGFyc2luZy9wbGFubmluZyAqLwogCWlmIChz bmFwc2hvdF9zZXQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3Jj L2JhY2tlbmQvdGNvcC9wcXVlcnkuYwppbmRleCAwYzQ1ZmNmMzE4Li5mZTUyZGIxMzY5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3Av cHF1ZXJ5LmMKQEAgLTE5LDYgKzE5LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvcHJlcGFyZS5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNj LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvdHN0b3JlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKICNpbmNsdWRlICJwZ190cmFjZS5oIgpAQCAtMzYsNiArMzcsOSBAQCBQb3J0YWwJ CUFjdGl2ZVBvcnRhbCA9IE5VTEw7CiAKIAogc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5u ZWRTdG10ICpwbGFuLAorCQkJCQkJIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCQkJIENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UsCisJCQkJCQkgaW50IHF1ZXJ5X2luZGV4LAogCQkJCQkJIGNv bnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJ CQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCkBAIC02NSw2ICs2OSw3IEBAIHN0YXRpYyB2 b2lkIERvUG9ydGFsUmV3aW5kKFBvcnRhbCBwb3J0YWwpOwogICovCiBRdWVyeURlc2MgKgogQ3Jl YXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQlDYWNoZWRQbGFuICpj cGxhbiwKIAkJCQljb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCVNuYXBzaG90IHNuYXBzaG90 LAogCQkJCVNuYXBzaG90IGNyb3NzY2hlY2tfc25hcHNob3QsCkBAIC03Nyw2ICs4Miw3IEBAIENy ZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCiAKIAlxZC0+b3BlcmF0aW9u ID0gcGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlOwkvKiBvcGVyYXRpb24gKi8KIAlxZC0+cGxhbm5l ZHN0bXQgPSBwbGFubmVkc3RtdDsJLyogcGxhbiAqLworCXFkLT5jcGxhbiA9IGNwbGFuOwkJCS8q IENhY2hlZFBsYW4gc3VwcGx5aW5nIHRoZSBwbGFubmVkc3RtdCAqLwogCXFkLT5zb3VyY2VUZXh0 ID0gc291cmNlVGV4dDsJLyogcXVlcnkgdGV4dCAqLwogCXFkLT5zbmFwc2hvdCA9IFJlZ2lzdGVy U25hcHNob3Qoc25hcHNob3QpOwkvKiBzbmFwc2hvdCAqLwogCS8qIFJJIGNoZWNrIHNuYXBzaG90 ICovCkBAIC0xMjIsNiArMTI4LDkgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQog ICoJCVBPUlRBTF9PTkVfUkVUVVJOSU5HLCBvciBQT1JUQUxfT05FX01PRF9XSVRIIHBvcnRhbAog ICoKICAqCXBsYW46IHRoZSBwbGFuIHRyZWUgZm9yIHRoZSBxdWVyeQorICoJY3BsYW46IENhY2hl ZFBsYW4gc3VwcGx5aW5nIHRoZSBwbGFuCisgKglwbGFuc291cmNlOiBDYWNoZWRQbGFuU291cmNl IHN1cHBseWluZyB0aGUgY3BsYW4KKyAqCXF1ZXJ5X2luZGV4OiBpbmRleCBvZiB0aGUgcXVlcnkg aW4gcGxhbnNvdXJjZS0+cXVlcnlfbGlzdAogICoJc291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0 IG9mIHRoZSBxdWVyeQogICoJcGFyYW1zOiBhbnkgcGFyYW1ldGVycyBuZWVkZWQKICAqCWRlc3Q6 IHdoZXJlIHRvIHNlbmQgcmVzdWx0cwpAQCAtMTM0LDYgKzE0Myw5IEBAIEZyZWVRdWVyeURlc2Mo UXVlcnlEZXNjICpxZGVzYykKICAqLwogc3RhdGljIHZvaWQKIFByb2Nlc3NRdWVyeShQbGFubmVk U3RtdCAqcGxhbiwKKwkJCSBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCSBDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLAorCQkJIGludCBxdWVyeV9pbmRleCwKIAkJCSBjb25zdCBjaGFyICpzb3Vy Y2VUZXh0LAogCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52LApAQCAtMTQ1LDE0ICsxNTcsMTcgQEAgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10 ICpwbGFuLAogCS8qCiAJICogQ3JlYXRlIHRoZSBRdWVyeURlc2Mgb2JqZWN0CiAJICovCi0JcXVl cnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHNvdXJjZVRleHQsCisJcXVlcnlEZXNjID0g Q3JlYXRlUXVlcnlEZXNjKHBsYW4sIGNwbGFuLCBzb3VyY2VUZXh0LAogCQkJCQkJCQlHZXRBY3Rp dmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVl cnlFbnYsIDApOwogCiAJLyoKLQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUg cGxhbiBmb3IgZXhlY3V0aW9uCisJICogUHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCiAJ ICovCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApOworCWlmIChxdWVyeURlc2MtPmNwbGFu KQorCQlFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbihxdWVyeURlc2MsIDAsIHBsYW5zb3VyY2UsIHF1 ZXJ5X2luZGV4KTsKKwllbHNlCisJCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKIAogCS8q CiAJICogUnVuIHRoZSBwbGFuIHRvIGNvbXBsZXRpb24uCkBAIC00OTMsNiArNTA4LDcgQEAgUG9y dGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJICogdGhl IGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgogCQkJCSAqLwogCQkJCXF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhsaW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LCBwb3J0YWwtPnN0bXRzKSwKKwkJ CQkJCQkJCQkJcG9ydGFsLT5jcGxhbiwKIAkJCQkJCQkJCQkJcG9ydGFsLT5zb3VyY2VUZXh0LAog CQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNo b3QsCkBAIC01MTIsOSArNTI4LDEzIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFt TGlzdEluZm8gcGFyYW1zLAogCQkJCQlteWVmbGFncyA9IGVmbGFnczsKIAogCQkJCS8qCi0JCQkJ ICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgor CQkJCSAqIFByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4KIAkJCQkgKi8KLQkJCQlFeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3MpOworCQkJCWlmIChwb3J0YWwtPmNwbGFuKQor CQkJCQlFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbihxdWVyeURlc2MsIG15ZWZsYWdzLAorCQkJCQkJ CQkJCQlwb3J0YWwtPnBsYW5zb3VyY2UsIDApOworCQkJCWVsc2UKKwkJCQkJRXhlY3V0b3JTdGFy dChxdWVyeURlc2MsIG15ZWZsYWdzKTsKIAogCQkJCS8qCiAJCQkJICogVGhpcyB0ZWxscyBQb3J0 YWxDbGVhbnVwIHRvIHNodXQgZG93biB0aGUgZXhlY3V0b3IKQEAgLTExOTQsNiArMTIxNCw3IEBA IFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiB7CiAJYm9vbAkJYWN0aXZlX3NuYXBzaG90 X3NldCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKnN0bXRsaXN0X2l0ZW07CisJaW50CQkJcXVlcnlf aW5kZXggPSAwOwogCiAJLyoKIAkgKiBJZiB0aGUgZGVzdGluYXRpb24gaXMgRGVzdFJlbW90ZUV4 ZWN1dGUsIGNoYW5nZSB0byBEZXN0Tm9uZS4gIFRoZQpAQCAtMTI3NSw2ICsxMjk2LDkgQEAgUG9y dGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCXsKIAkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNl dCB0YWcgc3RyaW5nICovCiAJCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAorCQkJCQkJCSBwb3J0YWwt PmNwbGFuLAorCQkJCQkJCSBwb3J0YWwtPnBsYW5zb3VyY2UsCisJCQkJCQkJIHF1ZXJ5X2luZGV4 LAogCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFy YW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApAQCAtMTI4NCw2ICsxMzA4LDkgQEAgUG9y dGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCXsKIAkJCQkvKiBzdG10IGFkZGVkIGJ5IHJl d3JpdGUgY2Fubm90IHNldCB0YWcgKi8KIAkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCisJCQkJCQkJ IHBvcnRhbC0+Y3BsYW4sCisJCQkJCQkJIHBvcnRhbC0+cGxhbnNvdXJjZSwKKwkJCQkJCQkgcXVl cnlfaW5kZXgsCiAJCQkJCQkJIHBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkgcG9ydGFsLT5w b3J0YWxQYXJhbXMsCiAJCQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYsCkBAIC0xMzQ4LDYgKzEzNzUs OCBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkgKi8KIAkJaWYgKGxuZXh0KHBv cnRhbC0+c3RtdHMsIHN0bXRsaXN0X2l0ZW0pICE9IE5VTEwpCiAJCQlDb21tYW5kQ291bnRlcklu Y3JlbWVudCgpOworCisJCXF1ZXJ5X2luZGV4Kys7CiAJfQogCiAJLyogUG9wIHRoZSBzbmFwc2hv dCBpZiB3ZSBwdXNoZWQgb25lLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRl eCBjNjZhMDg4ZjQwLi44OTA4YTBjZGMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9wbGFuY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUu YwpAQCAtMTAxLDcgKzEwMSw4IEBAIHN0YXRpYyBkbGlzdF9oZWFkIGNhY2hlZF9leHByZXNzaW9u X2xpc3QgPSBETElTVF9TVEFUSUNfSU5JVChjYWNoZWRfZXhwcmVzc2lvbl9sCiAKIHN0YXRpYyB2 b2lkIFJlbGVhc2VHZW5lcmljUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKIHN0 YXRpYyBMaXN0ICpSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSwKLQkJCQkJCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworCQkJCQkJCQkg ICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCQkJCQkJICAgYm9vbCByZWxlYXNlX2dl bmVyaWMpOwogc3RhdGljIGJvb2wgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UpOwogc3RhdGljIENhY2hlZFBsYW4gKkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAkJCQkJCQkJICAgUGFyYW1MaXN0SW5m byBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwpAQCAtNTc4LDEwICs1 NzksMTcgQEAgUmVsZWFzZUdlbmVyaWNQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Up CiAgKiBUaGUgcmVzdWx0IHZhbHVlIGlzIHRoZSB0cmFuc2llbnQgYW5hbHl6ZWQtYW5kLXJld3Jp dHRlbiBxdWVyeSB0cmVlIGlmIHdlCiAgKiBoYWQgdG8gZG8gcmUtYW5hbHlzaXMsIGFuZCBOSUwg b3RoZXJ3aXNlLiAgKFRoaXMgaXMgcmV0dXJuZWQganVzdCB0byBzYXZlCiAgKiBhIHRyZWUgY29w eWluZyBzdGVwIGluIGEgc3Vic2VxdWVudCBCdWlsZENhY2hlZFBsYW4gY2FsbC4pCisgKgorICog VGhpcyBhbHNvIHJlbGVhc2VzIGFuZCBkcm9wcyB0aGUgZ2VuZXJpYyBwbGFuIChwbGFuc291cmNl LT5ncGxhbiksIGlmIGFueSwKKyAqIGFzIG1vc3QgY2FsbGVycyB3aWxsIHR5cGljYWxseSBidWls ZCBhIG5ldyBDYWNoZWRQbGFuIGZvciB0aGUgcGxhbnNvdXJjZQorICogcmlnaHQgYWZ0ZXIgdGhp cy4gSG93ZXZlciwgd2hlbiBjYWxsZWQgZnJvbSBVcGRhdGVDYWNoZWRQbGFuKCksIHRoZQorICog ZnVuY3Rpb24gZG9lcyBub3QgcmVsZWFzZSB0aGUgZ2VuZXJpYyBwbGFuLCBhcyBVcGRhdGVDYWNo ZWRQbGFuKCkgdXBkYXRlcworICogYW4gZXhpc3RpbmcgQ2FjaGVkUGxhbiBpbiBwbGFjZS4KICAq Lwogc3RhdGljIExpc3QgKgogUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UsCi0JCQkJCSAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCisJCQkJCSAg UXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkJCSAgYm9vbCByZWxlYXNlX2dlbmVyaWMp CiB7CiAJYm9vbAkJc25hcHNob3Rfc2V0OwogCVJhd1N0bXQgICAgKnJhd3RyZWU7CkBAIC02Nzgs OCArNjg2LDkgQEAgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsCiAJCU1lbW9yeUNvbnRleHREZWxldGUocWN4dCk7CiAJfQogCi0JLyogRHJvcCB0aGUg Z2VuZXJpYyBwbGFuIHJlZmVyZW5jZSBpZiBhbnkgKi8KLQlSZWxlYXNlR2VuZXJpY1BsYW4ocGxh bnNvdXJjZSk7CisJLyogRHJvcCB0aGUgZ2VuZXJpYyBwbGFuIHJlZmVyZW5jZSwgaWYgYW55LCBh bmQgaWYgcmVxdWVzdGVkICovCisJaWYgKHJlbGVhc2VfZ2VuZXJpYykKKwkJUmVsZWFzZUdlbmVy aWNQbGFuKHBsYW5zb3VyY2UpOwogCiAJLyoKIAkgKiBOb3cgcmUtZG8gcGFyc2UgYW5hbHlzaXMg YW5kIHJld3JpdGUuICBUaGlzIG5vdCBpbmNpZGVudGFsbHkgYWNxdWlyZXMKQEAgLTgxNSw4ICs4 MjQsMTEgQEAgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3Vy Y2UsCiAgKiBDYWxsZXIgbXVzdCBoYXZlIGFscmVhZHkgY2FsbGVkIFJldmFsaWRhdGVDYWNoZWRR dWVyeSB0byB2ZXJpZnkgdGhhdCB0aGUKICAqIHF1ZXJ5dHJlZSBpcyB1cCB0byBkYXRlLgogICoK LSAqIE9uIGEgInRydWUiIHJldHVybiwgd2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVk IHRvIHJ1biB0aGUgcGxhbi4KLSAqIChXZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVz dWx0IHRvIGJlIHJhY2UtY29uZGl0aW9uLWZyZWUuKQorICogT24gYSAidHJ1ZSIgcmV0dXJuLCB3 ZSBoYXZlIGFjcXVpcmVkIGxvY2tzIG9uIHRoZSAidW5wcnVuYWJsZVJlbGlkcyIgc2V0CisgKiBm b3IgYWxsIHBsYW5zIGluIHBsYW5zb3VyY2UtPnN0bXRfbGlzdC4gSG93ZXZlciwgdGhlIHBsYW5z IGFyZSBub3QgZnVsbHkKKyAqIHJhY2UtY29uZGl0aW9uLWZyZWUgdW50aWwgdGhlIGV4ZWN1dG9y IGFjcXVpcmVzIGxvY2tzIG9uIHRoZSBwcnVuYWJsZQorICogcmVsYXRpb25zIHRoYXQgc3Vydml2 ZSBpbml0aWFsIHJ1bnRpbWUgcHJ1bmluZyBkdXJpbmcgZXhlY3V0b3IKKyAqIGluaXRpYWxpemF0 aW9uLgogICovCiBzdGF0aWMgYm9vbAogQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UpCkBAIC04NzAsNyArODgyLDExIEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlKQogCQkgKi8KIAkJaWYgKHBsYW4tPmlzX3ZhbGlkKQogCQl7 Ci0JCQkvKiBTdWNjZXNzZnVsbHkgcmV2YWxpZGF0ZWQgYW5kIGxvY2tlZCB0aGUgcXVlcnkuICov CisJCQkvKgorCQkJICogU3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVkIGFuZCBsb2NrZWQgdGhlIHF1 ZXJ5LiAgU2V0IGlzX3JldXNlZAorCQkJICogdG8gdHJ1ZSBzbyB0aGF0IENhY2hlZFBsYW5SZXF1 aXJlc0xvY2tpbmcoKSByZXR1cm5zIHRydWUuCisJCQkgKi8KKwkJCXBsYW4tPmlzX3JldXNlZCA9 IHRydWU7CiAJCQlyZXR1cm4gdHJ1ZTsKIAkJfQogCkBAIC04OTUsMTIgKzkxMSwxNCBAQCBDaGVj a0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKICAqIFRvIGJ1aWxkIGEg Z2VuZXJpYywgcGFyYW1ldGVyLXZhbHVlLWluZGVwZW5kZW50IHBsYW4sIHBhc3MgTlVMTCBmb3IK ICAqIGJvdW5kUGFyYW1zLiAgVG8gYnVpbGQgYSBjdXN0b20gcGxhbiwgcGFzcyB0aGUgYWN0dWFs IHBhcmFtZXRlciB2YWx1ZXMgdmlhCiAgKiBib3VuZFBhcmFtcy4gIEZvciBiZXN0IGVmZmVjdCwg dGhlIFBBUkFNX0ZMQUdfQ09OU1QgZmxhZyBzaG91bGQgYmUgc2V0IG9uCi0gKiBlYWNoIHBhcmFt ZXRlciB2YWx1ZTsgb3RoZXJ3aXNlIHRoZSBwbGFubmVyIHdpbGwgdHJlYXQgdGhlIHZhbHVlIGFz IGEKLSAqIGhpbnQgcmF0aGVyIHRoYW4gYSBoYXJkIGNvbnN0YW50LgorICogZWFjaCBwYXJhbWV0 ZXIgdmFsdWU7IG90aGVyd2lzZSB0aGUgcGxhbm5lciB3aWxsIHRyZWF0IHRoZSB2YWx1ZSBhcyBh IGhpbnQKKyAqIHJhdGhlciB0aGFuIGEgaGFyZCBjb25zdGFudC4KICAqCiAgKiBQbGFubmluZyB3 b3JrIGlzIGRvbmUgaW4gdGhlIGNhbGxlcidzIG1lbW9yeSBjb250ZXh0LiAgVGhlIGZpbmlzaGVk IHBsYW4KICAqIGlzIGluIGEgY2hpbGQgbWVtb3J5IGNvbnRleHQsIHdoaWNoIHR5cGljYWxseSBz aG91bGQgZ2V0IHJlcGFyZW50ZWQKICAqICh1bmxlc3MgdGhpcyBpcyBhIG9uZS1zaG90IHBsYW4s IGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3QgY29weSB0aGUgcGxhbikuCisgKgorICogTm90ZTogV2hl biBjaGFuZ2luZyB0aGlzLCB5b3Ugc2hvdWxkIGFsc28gbG9vayBhdCBVcGRhdGVDYWNoZWRQbGFu KCkuCiAgKi8KIHN0YXRpYyBDYWNoZWRQbGFuICoKIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKQEAgLTkxMSw2ICs5MjksNyBAQCBCdWls ZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJ Ym9vbAkJc25hcHNob3Rfc2V0OwogCWJvb2wJCWlzX3RyYW5zaWVudDsKIAlNZW1vcnlDb250ZXh0 IHBsYW5fY29udGV4dDsKKwlNZW1vcnlDb250ZXh0IHN0bXRfY29udGV4dCA9IE5VTEw7CiAJTWVt b3J5Q29udGV4dCBvbGRjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKIAlMaXN0Q2VsbCAgICps YzsKIApAQCAtOTI4LDcgKzk0Nyw3IEBAIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAkgKiBsZXQncyB0cmVhdCBpdCBhcyByZWFsIGFu ZCByZWRvIHRoZSBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkgY2FsbC4KIAkgKi8KIAlpZiAoIXBsYW5z b3VyY2UtPmlzX3ZhbGlkKQotCQlxbGlzdCA9IFJldmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291 cmNlLCBxdWVyeUVudik7CisJCXFsaXN0ID0gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KHBsYW5zb3Vy Y2UsIHF1ZXJ5RW52LCB0cnVlKTsKIAogCS8qCiAJICogSWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZl IGEgY29weSBvZiB0aGUgcXVlcnl0cmVlIGxpc3QgdGhhdCBjYW4gYmUKQEAgLTk2NywxMCArOTg2 LDE5IEBAIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0 ICpxbGlzdCwKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAogCS8qCi0JICogTm9ybWFsbHkgd2Ug bWFrZSBhIGRlZGljYXRlZCBtZW1vcnkgY29udGV4dCBmb3IgdGhlIENhY2hlZFBsYW4gYW5kIGl0 cwotCSAqIHN1YnNpZGlhcnkgZGF0YS4gIChJdCdzIHByb2JhYmx5IG5vdCBnb2luZyB0byBiZSBs YXJnZSwgYnV0IGp1c3QgaW4KLQkgKiBjYXNlLCBhbGxvdyBpdCB0byBncm93IGxhcmdlLiAgSXQn cyB0cmFuc2llbnQgZm9yIHRoZSBtb21lbnQuKSAgQnV0IGZvcgotCSAqIGEgb25lLXNob3QgcGxh biwgd2UganVzdCBsZWF2ZSBpdCBpbiB0aGUgY2FsbGVyJ3MgbWVtb3J5IGNvbnRleHQuCisJICog Tm9ybWFsbHksIHdlIGNyZWF0ZSBhIGRlZGljYXRlZCBtZW1vcnkgY29udGV4dCBmb3IgdGhlIENh Y2hlZFBsYW4gYW5kCisJICogaXRzIHN1YnNpZGlhcnkgZGF0YS4gQWx0aG91Z2ggaXQncyB1c3Vh bGx5IG5vdCB2ZXJ5IGxhcmdlLCB0aGUgY29udGV4dAorCSAqIGlzIGRlc2lnbmVkIHRvIGFsbG93 IGdyb3d0aCBpZiBuZWNlc3NhcnkuCisJICoKKwkgKiBUaGUgUGxhbm5lZFN0bXRzIGFyZSBzdG9y ZWQgaW4gYSBzZXBhcmF0ZSBjaGlsZCBjb250ZXh0IChzdG10X2NvbnRleHQpCisJICogb2YgdGhl IENhY2hlZFBsYW4ncyBtZW1vcnkgY29udGV4dC4gVGhpcyBzZXBhcmF0aW9uIGFsbG93cworCSAq IFVwZGF0ZUNhY2hlZFBsYW4oKSB0byBmcmVlIGFuZCByZXBsYWNlIHRoZSBQbGFubmVkU3RtdHMg d2l0aG91dAorCSAqIGFmZmVjdGluZyB0aGUgQ2FjaGVkUGxhbiBzdHJ1Y3R1cmUgb3IgaXRzIHN0 bXRfbGlzdCBMaXN0LgorCSAqCisJICogRm9yIG9uZS1zaG90IHBsYW5zLCB3ZSBpbnN0ZWFkIHVz ZSB0aGUgY2FsbGVyJ3MgbWVtb3J5IGNvbnRleHQsIGFzIHRoZQorCSAqIENhY2hlZFBsYW4gd2ls bCBub3QgcGVyc2lzdC4gIHN0bXRfY29udGV4dCB3aWxsIGJlIHNldCB0byBOVUxMIGluIHRoaXMK KwkgKiBjYXNlLCBiZWNhdXNlIFVwZGF0ZUNhY2hlZFBsYW4oKSBzaG91bGQgbmV2ZXIgZ2V0IGNh bGxlZCBvbiBhIG9uZS1zaG90CisJICogcGxhbi4KIAkgKi8KIAlpZiAoIXBsYW5zb3VyY2UtPmlz X29uZXNob3QpCiAJewpAQCAtOTc5LDEyICsxMDA3LDE3IEBAIEJ1aWxkQ2FjaGVkUGxhbihDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAkJCQkJCQkJCQkJIEFMTE9D U0VUX1NUQVJUX1NNQUxMX1NJWkVTKTsKIAkJTWVtb3J5Q29udGV4dENvcHlBbmRTZXRJZGVudGlm aWVyKHBsYW5fY29udGV4dCwgcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nKTsKIAotCQkvKgotCQkg KiBDb3B5IHBsYW4gaW50byB0aGUgbmV3IGNvbnRleHQuCi0JCSAqLwotCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ocGxhbl9jb250ZXh0KTsKKwkJc3RtdF9jb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0 Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkgIkNhY2hlZFBsYW4gUGxh bm5lZFN0bXRzIiwKKwkJCQkJCQkJCQkJIEFMTE9DU0VUX1NUQVJUX1NNQUxMX1NJWkVTKTsKKwkJ TWVtb3J5Q29udGV4dENvcHlBbmRTZXRJZGVudGlmaWVyKHN0bXRfY29udGV4dCwgcGxhbnNvdXJj ZS0+cXVlcnlfc3RyaW5nKTsKKwkJTWVtb3J5Q29udGV4dFNldFBhcmVudChzdG10X2NvbnRleHQs IHBsYW5fY29udGV4dCk7CiAKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKHN0bXRfY29udGV4dCk7 CiAJCXBsaXN0ID0gY29weU9iamVjdChwbGlzdCk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KHBsYW5fY29udGV4dCk7CisJCXBsaXN0ID0gbGlzdF9jb3B5KHBsaXN0KTsKIAl9CiAJZWxzZQog CQlwbGFuX2NvbnRleHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKQEAgLTEwMjUsOCArMTA1OCwx MCBAQCBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAq cWxpc3QsCiAJCXBsYW4tPnNhdmVkX3htaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlwbGFu LT5yZWZjb3VudCA9IDA7CiAJcGxhbi0+Y29udGV4dCA9IHBsYW5fY29udGV4dDsKKwlwbGFuLT5z dG10X2NvbnRleHQgPSBzdG10X2NvbnRleHQ7CiAJcGxhbi0+aXNfb25lc2hvdCA9IHBsYW5zb3Vy Y2UtPmlzX29uZXNob3Q7CiAJcGxhbi0+aXNfc2F2ZWQgPSBmYWxzZTsKKwlwbGFuLT5pc19yZXVz ZWQgPSBmYWxzZTsKIAlwbGFuLT5pc192YWxpZCA9IHRydWU7CiAKIAkvKiBhc3NpZ24gZ2VuZXJh dGlvbiBudW1iZXIgdG8gbmV3IHBsYW4gKi8KQEAgLTExNTMsOCArMTE4OCwxMSBAQCBjYWNoZWRf cGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKQogICogcGxh biBvciBhIGN1c3RvbSBwbGFuIGZvciB0aGUgZ2l2ZW4gcGFyYW1ldGVyczogdGhlIGNhbGxlciBk b2VzIG5vdCBrbm93CiAgKiB3aGljaCBpdCB3aWxsIGdldC4KICAqCi0gKiBPbiByZXR1cm4sIHRo ZSBwbGFuIGlzIHZhbGlkIGFuZCB3ZSBoYXZlIHN1ZmZpY2llbnQgbG9ja3MgdG8gYmVnaW4KLSAq IGV4ZWN1dGlvbi4KKyAqIE9uIHJldHVybiwgdGhlIHBsYW4gaXMgdmFsaWQsIGJ1dCBub3QgYWxs IGxvY2tzIGFyZSBhY3F1aXJlZCBpZiB0aGUKKyAqIHJldHVybmVkIHBsYW4gaXMgYSByZXVzZWQg Z2VuZXJpYyBwbGFuLiAgSW4gc3VjaCBjYXNlcywgbG9ja3Mgb24gcmVsYXRpb25zCisgKiBzdWJq ZWN0IHRvIGluaXRpYWwgcnVudGltZSBwcnVuaW5nIGFyZSBub3QgdGFrZW4gYnkgQ2hlY2tDYWNo ZWRQbGFuKCkgYnV0CisgKiBkZWZlcnJlZCB1bnRpbCB0aGUgZXhlY3V0aW9uIHN0YXJ0dXAgcGhh c2UsIHNwZWNpZmljYWxseSB3aGVuCisgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpIHBlcmZvcm1z IGluaXRpYWwgcHJ1bmluZy4KICAqCiAgKiBPbiByZXR1cm4sIHRoZSByZWZjb3VudCBvZiB0aGUg cGxhbiBoYXMgYmVlbiBpbmNyZW1lbnRlZDsgYSBsYXRlcgogICogUmVsZWFzZUNhY2hlZFBsYW4o KSBjYWxsIGlzIGV4cGVjdGVkLiAgSWYgIm93bmVyIiBpcyBub3QgTlVMTCB0aGVuCkBAIC0xMTgw LDcgKzEyMTgsNyBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Us IFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCWVsb2coRVJST1IsICJjYW5ub3QgYXBwbHkg UmVzb3VyY2VPd25lciB0byBub24tc2F2ZWQgY2FjaGVkIHBsYW4iKTsKIAogCS8qIE1ha2Ugc3Vy ZSB0aGUgcXVlcnl0cmVlIGxpc3QgaXMgdmFsaWQgYW5kIHdlIGhhdmUgcGFyc2UtdGltZSBsb2Nr cyAqLwotCXFsaXN0ID0gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KHBsYW5zb3VyY2UsIHF1ZXJ5RW52 KTsKKwlxbGlzdCA9IFJldmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudiwg dHJ1ZSk7CiAKIAkvKiBEZWNpZGUgd2hldGhlciB0byB1c2UgYSBjdXN0b20gcGxhbiAqLwogCWN1 c3RvbXBsYW4gPSBjaG9vc2VfY3VzdG9tX3BsYW4ocGxhbnNvdXJjZSwgYm91bmRQYXJhbXMpOwpA QCAtMTI3Niw2ICsxMzE0LDExMyBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJcmV0dXJuIHBsYW47CiB9CiAK Ky8qCisgKiBVcGRhdGVDYWNoZWRQbGFuCisgKgkJQ3JlYXRlIGZyZXNoIHBsYW5zIGZvciBhbGwg cXVlcmllcyBpbiB0aGUgQ2FjaGVkUGxhblNvdXJjZSwgcmVwbGFjaW5nCisgKgkJdGhvc2UgaW4g dGhlIGdlbmVyaWMgcGxhbidzIHN0bXRfbGlzdCwgYW5kIHJldHVybiB0aGUgcGxhbiBmb3IgdGhl CisgKgkJcXVlcnlfaW5kZXgndGggcXVlcnkuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBwcmlt YXJpbHkgdXNlZCBieSBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpIHRvIGhhbmRsZQorICogY2Fz ZXMgd2hlcmUgdGhlIG9yaWdpbmFsIGdlbmVyaWMgQ2FjaGVkUGxhbiBiZWNvbWVzIGludmFsaWQu IFN1Y2gKKyAqIGludmFsaWRhdGlvbiBtYXkgb2NjdXIgd2hlbiBwcnVuYWJsZSByZWxhdGlvbnMg aW4gdGhlIG9sZCBwbGFuIGZvciB0aGUKKyAqIHF1ZXJ5X2luZGV4J3RoIHF1ZXJ5IGFyZSBsb2Nr ZWQgaW4gcHJlcGFyYXRpb24gZm9yIGV4ZWN1dGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgaW52YWxp ZGF0aW9ucyByZWNlaXZlZCBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgcXVlcnlfaW5kZXgn dGgKKyAqIHF1ZXJ5IGNhbiBhZmZlY3QgYm90aCB0aGUgcXVlcmllcyB0aGF0IGhhdmUgYWxyZWFk eSBmaW5pc2hlZCBleGVjdXRpb24KKyAqIChlLmcuLCBkdWUgdG8gY29uY3VycmVudCBtb2RpZmlj YXRpb25zIG9uIHBydW5hYmxlIHJlbGF0aW9ucyB0aGF0IHdlcmUgbm90CisgKiBsb2NrZWQgZHVy aW5nIHRoZWlyIGV4ZWN1dGlvbikgYW5kIGFsc28gdGhlIHF1ZXJpZXMgdGhhdCBoYXZlIG5vdCB5 ZXQgYmVlbgorICogZXhlY3V0ZWQuICBBcyBhIHJlc3VsdCwgdGhpcyBmdW5jdGlvbiB1cGRhdGVz IGFsbCBwbGFucyB0byBlbnN1cmUKKyAqIENhY2hlZFBsYW4uaXNfdmFsaWQgaXMgc2FmZWx5IHNl dCB0byB0cnVlLgorICoKKyAqIFRoZSBvbGQgUGxhbm5lZFN0bXRzIGluIHBsYW5zb3VyY2UtPmdw bGFuLT5zdG10X2xpc3QgYXJlIGZyZWVkIGhlcmUsIHNvCisgKiB0aGUgY2FsbGVyIGFuZCBhbnkg b2YgaXRzIGNhbGxlcnMgbXVzdCBub3QgcmVseSBvbiB0aGVtIHJlbWFpbmluZyBhY2Nlc3NpYmxl CisgKiBhZnRlciB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4KKyAqLworUGxhbm5lZFN0bXQgKgor VXBkYXRlQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlf aW5kZXgsCisJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQoreworCUxpc3QJICAgKnF1 ZXJ5X2xpc3QgPSBwbGFuc291cmNlLT5xdWVyeV9saXN0LAorCQkJICAgKnBsYW5fbGlzdDsKKwlM aXN0Q2VsbCAgICpsMSwKKwkJCSAgICpsMjsKKwlDYWNoZWRQbGFuICpwbGFuID0gcGxhbnNvdXJj ZS0+Z3BsYW47CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisKKwlBc3NlcnQoQWN0aXZlU25hcHNo b3RTZXQoKSk7CisKKwkvKiBTYW5pdHkgY2hlY2tzICovCisJaWYgKHBsYW4gPT0gTlVMTCkKKwkJ ZWxvZyhFUlJPUiwgIlVwZGF0ZUNhY2hlZFBsYW4oKSBjYWxsZWQgaW4gdGhlIHdyb25nIGNvbnRl eHQ6IHBsYW5zb3VyY2UtPmdwbGFuIGlzIE5VTEwiKTsKKwllbHNlIGlmIChwbGFuLT5pc192YWxp ZCkKKwkJZWxvZyhFUlJPUiwgIlVwZGF0ZUNhY2hlZFBsYW4oKSBjYWxsZWQgaW4gdGhlIHdyb25n IGNvbnRleHQ6IHBsYW5zb3VyY2UtPmdwbGFuLT5pc192YWxpZCBpcyB0cnVlIik7CisJZWxzZSBp ZiAocGxhbi0+aXNfb25lc2hvdCkKKwkJZWxvZyhFUlJPUiwgIlVwZGF0ZUNhY2hlZFBsYW4oKSBj YWxsZWQgaW4gdGhlIHdyb25nIGNvbnRleHQ6IHBsYW5zb3VyY2UtPmdwbGFuLT5pc19vbmVzaG90 IGlzIHRydWUiKTsKKworCS8qCisJICogVGhlIHBsYW5zb3VyY2UgbWlnaHQgaGF2ZSBiZWNvbWUg aW52YWxpZCBzaW5jZSBHZXRDYWNoZWRQbGFuKCkgcmV0dXJuZWQKKwkgKiB0aGUgQ2FjaGVkUGxh bi4gU2VlIHRoZSBjb21tZW50IGluIEJ1aWxkQ2FjaGVkUGxhbigpIGZvciBkZXRhaWxzIG9uIHdo eQorCSAqIHRoaXMgbWlnaHQgaGFwcGVuLiAgQWx0aG91Z2ggaW52YWxpZGF0aW9uIGlzIGxpa2Vs eSBhIGZhbHNlIHBvc2l0aXZlIGFzCisJICogc3RhdGVkIHRoZXJlLCB3ZSBtYWtlIHRoZSBwbGFu IHZhbGlkIHRvIGVuc3VyZSB0aGUgcXVlcnkgbGlzdCB1c2VkIGZvcgorCSAqIHBsYW5uaW5nIGlz IHVwIHRvIGRhdGUuCisJICoKKwkgKiBUaGUgcmlzayBvZiBjYXRjaGluZyBhbiBpbnZhbGlkYXRp b24gaXMgaGlnaGVyIGhlcmUgdGhhbiB3aGVuCisJICogQnVpbGRDYWNoZWRQbGFuKCkgaXMgY2Fs bGVkIGZyb20gR2V0Q2FjaGVkUGxhbigpLCBiZWNhdXNlIHRoaXMgZnVuY3Rpb24KKwkgKiBpcyBu b3JtYWxseSBjYWxsZWQgbG9uZyBhZnRlciBHZXRDYWNoZWRQbGFuKCkgcmV0dXJucyB0aGUgQ2Fj aGVkUGxhbiwgc28KKwkgKiBtdWNoIG1vcmUgcHJvY2Vzc2luZyBjb3VsZCBoYXZlIG9jY3VycmVk IGluY2x1ZGluZyB0aGluZ3MgdGhhdCBtYXJrCisJICogdGhlIENhY2hlZFBsYW5Tb3VyY2UgaW52 YWxpZC4KKwkgKgorCSAqIE5vdGU6IERvIG5vdCByZWxlYXNlIHBsYW5zb3VyY2UtPmdwbGFuLCBi ZWNhdXNlIHRoZSB1cHN0cmVhbSBjYWxsZXJzCisJICogKHN1Y2ggYXMgdGhlIGNhbGxlcnMgb2Yg RXhlY3V0b3JTdGFydENhY2hlZFBsYW4oKSkgd291bGQgc3RpbGwgYmUKKwkgKiByZWZlcmVuY2lu ZyBpdC4KKwkgKi8KKwlpZiAoIXBsYW5zb3VyY2UtPmlzX3ZhbGlkKQorCQlxdWVyeV9saXN0ID0g UmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KHBsYW5zb3VyY2UsIHF1ZXJ5RW52LCBmYWxzZSk7CisJQXNz ZXJ0KHF1ZXJ5X2xpc3QgIT0gTklMKTsKKworCS8qCisJICogQnVpbGQgYSBuZXcgZ2VuZXJpYyBw bGFuIGZvciBhbGwgdGhlIHF1ZXJpZXMgYWZ0ZXIgbWFraW5nIGEgY29weSB0byBiZQorCSAqIHNj cmliYmxlZCBvbiBieSB0aGUgcGxhbm5lci4KKwkgKi8KKwlxdWVyeV9saXN0ID0gY29weU9iamVj dChxdWVyeV9saXN0KTsKKworCS8qCisJICogUGxhbm5pbmcgd29yayBpcyBkb25lIGluIHRoZSBj YWxsZXIncyBtZW1vcnkgY29udGV4dC4gIFRoZSByZXN1bHRpbmcKKwkgKiBQbGFubmVkU3RtdCBp cyB0aGVuIGNvcGllZCBpbnRvIHBsYW4tPnN0bXRfY29udGV4dCBhZnRlciB0aHJvd2luZworCSAq IGF3YXkgdGhlIG9sZCBvbmVzLgorCSAqLworCXBsYW5fbGlzdCA9IHBnX3BsYW5fcXVlcmllcyhx dWVyeV9saXN0LCBwbGFuc291cmNlLT5xdWVyeV9zdHJpbmcsCisJCQkJCQkJCXBsYW5zb3VyY2Ut PmN1cnNvcl9vcHRpb25zLCBOVUxMKTsKKwlBc3NlcnQobGlzdF9sZW5ndGgocGxhbl9saXN0KSA9 PSBsaXN0X2xlbmd0aChwbGFuLT5zdG10X2xpc3QpKTsKKworCU1lbW9yeUNvbnRleHRSZXNldChw bGFuLT5zdG10X2NvbnRleHQpOworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwbGFu LT5zdG10X2NvbnRleHQpOworCWZvcmJvdGggKGwxLCBwbGFuX2xpc3QsIGwyLCBwbGFuLT5zdG10 X2xpc3QpCisJeworCQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3QobDEpOworCisJ CWxmaXJzdChsMikgPSBjb3B5T2JqZWN0KHBsYW5uZWRzdG10KTsKKwl9CisJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN4dCk7CisKKwkvKgorCSAqIFhYWCBTaG91bGQgdGhpcyBhbHNvIChyZSlz ZXQgdGhlIHByb3BlcnRpZXMgb2YgdGhlIENhY2hlZFBsYW4gdGhhdCBhcmUKKwkgKiBzZXQgaW4g QnVpbGRDYWNoZWRQbGFuKCkgYWZ0ZXIgY3JlYXRpbmcgdGhlIGZyZXNoIHBsYW5zIHN1Y2ggYXMK KwkgKiBwbGFuUm9sZUlkLCBkZXBlbmRzT25Sb2xlLCBhbmQgc2F2ZV94bWluPworCSAqLworCisJ LyoKKwkgKiBXZSd2ZSB1cGRhdGVkIGFsbCB0aGUgcGxhbnMgdGhhdCBtaWdodCBoYXZlIGJlZW4g aW52YWxpZGF0ZWQsIHNvIG1hcmsKKwkgKiB0aGUgQ2FjaGVkUGxhbiBhcyB2YWxpZC4KKwkgKi8K KwlwbGFuLT5pc192YWxpZCA9IHRydWU7CisKKwkvKiBBbHNvIHVwZGF0ZSBnZW5lcmljX2Nvc3Qg YmVjYXVzZSB3ZSBqdXN0IGNyZWF0ZWQgYSBuZXcgZ2VuZXJpYyBwbGFuLiAqLworCXBsYW5zb3Vy Y2UtPmdlbmVyaWNfY29zdCA9IGNhY2hlZF9wbGFuX2Nvc3QocGxhbiwgZmFsc2UpOworCisJcmV0 dXJuIGxpc3RfbnRoX25vZGUoUGxhbm5lZFN0bXQsIHBsYW4tPnN0bXRfbGlzdCwgcXVlcnlfaW5k ZXgpOworfQorCiAvKgogICogUmVsZWFzZUNhY2hlZFBsYW46IHJlbGVhc2UgYWN0aXZlIHVzZSBv ZiBhIGNhY2hlZCBwbGFuLgogICoKQEAgLTE2NTQsNyArMTc5OSw3IEBAIENhY2hlZFBsYW5HZXRU YXJnZXRMaXN0KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCXJldHVybiBOSUw7CiAK IAkvKiBNYWtlIHN1cmUgdGhlIHF1ZXJ5dHJlZSBsaXN0IGlzIHZhbGlkIGFuZCB3ZSBoYXZlIHBh cnNlLXRpbWUgbG9ja3MgKi8KLQlSZXZhbGlkYXRlQ2FjaGVkUXVlcnkocGxhbnNvdXJjZSwgcXVl cnlFbnYpOworCVJldmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudiwgdHJ1 ZSk7CiAKIAkvKiBHZXQgdGhlIHByaW1hcnkgc3RhdGVtZW50IGFuZCBmaW5kIG91dCB3aGF0IGl0 IHJldHVybnMgKi8KIAlwc3RtdCA9IFF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KHBsYW5zb3VyY2Ut PnF1ZXJ5X2xpc3QpOwpAQCAtMTc3Niw3ICsxOTIxLDcgQEAgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo TGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAJZm9yZWFjaChsYzEsIHN0bXRfbGlzdCkK IAl7CiAJCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10 LCBsYzEpOwotCQlMaXN0Q2VsbCAgICpsYzI7CisJCWludAkJCXJ0aW5kZXg7CiAKIAkJaWYgKHBs YW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKIAkJewpAQCAtMTc5NCwxMyAr MTkzOSwxNiBAQCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNx dWlyZSkKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJZm9yZWFjaChsYzIsIHBsYW5uZWRzdG10LT5y dGFibGUpCisJCXJ0aW5kZXggPSAtMTsKKwkJd2hpbGUgKChydGluZGV4ID0gYm1zX25leHRfbWVt YmVyKHBsYW5uZWRzdG10LT51bnBydW5hYmxlUmVsaWRzLAorCQkJCQkJCQkJCSAgcnRpbmRleCkp ID49IDApCiAJCXsKLQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IChSYW5nZVRibEVudHJ5ICopIGxm aXJzdChsYzIpOworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gbGlzdF9udGhfbm9kZShSYW5nZVRi bEVudHJ5LAorCQkJCQkJCQkJCQkgICBwbGFubmVkc3RtdC0+cnRhYmxlLAorCQkJCQkJCQkJCQkg ICBydGluZGV4IC0gMSk7CiAKLQkJCWlmICghKHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04g fHwKLQkJCQkgIChydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElzVmFsaWQocnRl LT5yZWxpZCkpKSkKLQkJCQljb250aW51ZTsKKwkJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRF X1JFTEFUSU9OIHx8CisJCQkJICAgKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYgT2lk SXNWYWxpZChydGUtPnJlbGlkKSkpOwogCiAJCQkvKgogCQkJICogQWNxdWlyZSB0aGUgYXBwcm9w cmlhdGUgdHlwZSBvZiBsb2NrIG9uIGVhY2ggcmVsYXRpb24gT0lELiBOb3RlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv bW1nci9wb3J0YWxtZW0uYwppbmRleCA5MzEzNzgyMGFjLi5lZjQ3OTFiZjY1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21tZ3IvcG9ydGFsbWVtLmMKQEAgLTI4NCw3ICsyODQsOCBAQCBQb3J0YWxEZWZpbmVRdWVy eShQb3J0YWwgcG9ydGFsLAogCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkgIENv bW1hbmRUYWcgY29tbWFuZFRhZywKIAkJCQkgIExpc3QgKnN0bXRzLAotCQkJCSAgQ2FjaGVkUGxh biAqY3BsYW4pCisJCQkJICBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCQkgIENhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UpCiB7CiAJQXNzZXJ0KFBvcnRhbElzVmFsaWQocG9ydGFsKSk7CiAJQXNz ZXJ0KHBvcnRhbC0+c3RhdHVzID09IFBPUlRBTF9ORVcpOwpAQCAtMjk5LDYgKzMwMCw3IEBAIFBv cnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJcG9ydGFsLT5jb21tYW5kVGFnID0gY29t bWFuZFRhZzsKIAlwb3J0YWwtPnN0bXRzID0gc3RtdHM7CiAJcG9ydGFsLT5jcGxhbiA9IGNwbGFu OworCXBvcnRhbC0+cGxhbnNvdXJjZSA9IHBsYW5zb3VyY2U7CiAJcG9ydGFsLT5zdGF0dXMgPSBQ T1JUQUxfREVGSU5FRDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhw bGFpbi5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IGFhNTg3MmJjMTUu LjA5YzFiMTM2N2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAor KysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTEwMyw4ICsxMDMsMTAgQEAg ZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1 c2UgKmludG8sCiAJCQkJCQkJICBFeHBsYWluU3RhdGUgKmVzLCBQYXJzZVN0YXRlICpwc3RhdGUs CiAJCQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcyk7CiAKLWV4dGVybiB2b2lkIEV4cGxhaW5P bmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywKLQkJCQkJ CSAgIEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAorZXh0ZXJuIHZv aWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBDYWNoZWRQbGFuICpj cGxhbiwKKwkJCQkJCSAgIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIGludCBwbGFuX2lu ZGV4LAorCQkJCQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKKwkJCQkJ CSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBwYXJh bXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAogCQkJCQkJICAgY29uc3QgaW5zdHJfdGlt ZSAqcGxhbmR1cmF0aW9uLAogCQkJCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdHJpZ2dlci5oCmluZGV4IDhhNWE5ZmU2NDIuLmRiMjE1NjFjOGMgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAorKysgYi9zcmMvaW5jbHVkZS9jb21t YW5kcy90cmlnZ2VyLmgKQEAgLTI1OCw2ICsyNTgsNyBAQCBleHRlcm4gdm9pZCBFeGVjQVNUcnVu Y2F0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLAogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQmVn aW5YYWN0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeSh2b2lkKTsK IGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckVuZFF1ZXJ5KEVTdGF0ZSAqZXN0YXRlKTsKK2V4dGVy biB2b2lkIEFmdGVyVHJpZ2dlckFib3J0UXVlcnkodm9pZCk7CiBleHRlcm4gdm9pZCBBZnRlclRy aWdnZXJGaXJlRGVmZXJyZWQodm9pZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJFbmRYYWN0 KGJvb2wgaXNDb21taXQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5TdWJYYWN0KHZv aWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCmluZGV4IDBiMzQ3ODQ5MjIuLmEw ODQzNDgxZjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u aAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKQEAgLTQ5LDYgKzQ5 LDggQEAgZXh0ZXJuIHZvaWQgRXhlY0NsZWFudXBUdXBsZVJvdXRpbmcoTW9kaWZ5VGFibGVTdGF0 ZSAqbXRzdGF0ZSwKICAqIG5wYXJ0cwkJCQkJCUxlbmd0aCBvZiBzdWJwbGFuX21hcFtdIGFuZCBz dWJwYXJ0X21hcFtdLgogICogc3VicGxhbl9tYXAJCQkJCVN1YnBsYW4gaW5kZXggYnkgcGFydGl0 aW9uIGluZGV4LCBvciAtMS4KICAqIHN1YnBhcnRfbWFwCQkJCQlTdWJwYXJ0IGluZGV4IGJ5IHBh cnRpdGlvbiBpbmRleCwgb3IgLTEuCisgKiBsZWFmcGFydF9ydGlfbWFwCQkJCVJUIGluZGV4IGJ5 IHBhcnRpdGlvbiBpbmRleCwgb3IgMCBpZiBub3QgYSBsZWFmCisgKiAJCQkJCQkJCXBhcnRpdGlv bi4KICAqIHByZXNlbnRfcGFydHMJCQkJQSBCaXRtYXBzZXQgb2YgdGhlIHBhcnRpdGlvbiBpbmRl eGVzIHRoYXQgd2UKICAqCQkJCQkJCQloYXZlIHN1YnBsYW5zIG9yIHN1YnBhcnRzIGZvci4KICAq IGluaXRpYWxfcHJ1bmluZ19zdGVwcwkJTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVN0ZXBzIHVzZWQg dG8KQEAgLTY5LDYgKzcxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uZWRSZWxQcnVuaW5n RGF0YQogCWludAkJCW5wYXJ0czsKIAlpbnQJCSAgICpzdWJwbGFuX21hcDsKIAlpbnQJCSAgICpz dWJwYXJ0X21hcDsKKwlpbnQJCSAgICpsZWFmcGFydF9ydGlfbWFwOwogCUJpdG1hcHNldCAgKnBy ZXNlbnRfcGFydHM7CiAJTGlzdAkgICAqaW5pdGlhbF9wcnVuaW5nX3N0ZXBzOwogCUxpc3QJICAg KmV4ZWNfcHJ1bmluZ19zdGVwczsKQEAgLTE0MCw2ICsxNDMsNyBAQCBleHRlcm4gUGFydGl0aW9u UHJ1bmVTdGF0ZSAqRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5z dGF0ZSwKIAkJCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqcmVsaWRzLAogCQkJCQkJCQkJCQkJCQkg Qml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKTsKIGV4dGVybiBCaXRtYXBzZXQg KkV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRl LAotCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSk7CisJCQkJCQkJCQkJICAgYm9vbCBp bml0aWFsX3BydW5lLAorCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbl9ydGlz KTsKIAogI2VuZGlmCQkJCQkJCS8qIEVYRUNQQVJUSVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNk ZXNjLmgKaW5kZXggMGE3Mjc0ZTI2Yy4uMGU3MjQ1NDM1ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVz Yy5oCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCS8qIFRoZXNl IGZpZWxkcyBhcmUgcHJvdmlkZWQgYnkgQ3JlYXRlUXVlcnlEZXNjICovCiAJQ21kVHlwZQkJb3Bl cmF0aW9uOwkJLyogQ01EX1NFTEVDVCwgQ01EX1VQREFURSwgZXRjLiAqLwogCVBsYW5uZWRTdG10 ICpwbGFubmVkc3RtdDsJLyogcGxhbm5lcidzIG91dHB1dCAoY291bGQgYmUgdXRpbGl0eSwgdG9v KSAqLworCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8qIENhY2hlZFBsYW4gdGhhdCBzdXBwbGllcyB0 aGUgcGxhbm5lZHN0bXQgKi8KIAljb25zdCBjaGFyICpzb3VyY2VUZXh0OwkJLyogc291cmNlIHRl eHQgb2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNob3QJc25hcHNob3Q7CQkvKiBzbmFwc2hvdCB0byB1 c2UgZm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJY3Jvc3NjaGVja19zbmFwc2hvdDsJLyogY3Jvc3Nj aGVjayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAqLwpAQCAtNTcsNiArNTgsNyBAQCB0eXBlZGVmIHN0 cnVjdCBRdWVyeURlc2MKIAogLyogaW4gcHF1ZXJ5LmMgKi8KIGV4dGVybiBRdWVyeURlc2MgKkNy ZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCSAgQ2FjaGVk UGxhbiAqY3BsYW4sCiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJ ICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBz aG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggNjljM2ViZmYwMC4uNmQ3MmY3ZDlkNiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAibm9k ZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9wbGFuY2FjaGUuaCIKIAogCiAv KgpAQCAtMTk4LDYgKzE5OSw5IEBAIEV4ZWNHZXRKdW5rQXR0cmlidXRlKFR1cGxlVGFibGVTbG90 ICpzbG90LCBBdHRyTnVtYmVyIGF0dG5vLCBib29sICppc051bGwpCiAgKiBwcm90b3R5cGVzIGZy b20gZnVuY3Rpb25zIGluIGV4ZWNNYWluLmMKICAqLwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFy dChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CitleHRlcm4gdm9pZCBFeGVjdXRv clN0YXJ0Q2FjaGVkUGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncywKKwkJCQkJ CQkJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCisJCQkJCQkJCQlpbnQgcXVlcnlfaW5k ZXgpOwogZXh0ZXJuIHZvaWQgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1 ZXJ5RGVzYywKIAkJCQkJCVNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLCB1aW50NjQgY291bnQsIGJv b2wgZXhlY3V0ZV9vbmNlKTsKQEAgLTI2MSw2ICsyNjUsMzAgQEAgZXh0ZXJuIHZvaWQgRXhlY0Vu ZE5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTaHV0ZG93bk5vZGUoUGxh blN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxl c19uZWVkZWQsIFBsYW5TdGF0ZSAqY2hpbGRfbm9kZSk7CiAKKy8qCisgKiBJcyB0aGUgQ2FjaGVk UGxhbiBpbiBlc19jYWNoZWRwbGFuIHN0aWxsIHZhbGlkPworICoKKyAqIENhbGxlZCBmcm9tIElu aXRQbGFuKCkgYmVjYXVzZSBpbnZhbGlkYXRpb24gbWVzc2FnZXMgdGhhdCBhZmZlY3QgdGhlIHBs YW4KKyAqIG1pZ2h0IGJlIHJlY2VpdmVkIGFmdGVyIGxvY2tzIGhhdmUgYmVlbiB0YWtlbiBvbiBy dW50aW1lLXBydW5hYmxlIHJlbGF0aW9ucy4KKyAqIFRoZSBjYWxsZXIgc2hvdWxkIHRha2UgYXBw cm9wcmlhdGUgYWN0aW9uIGlmIHRoZSBwbGFuIGhhcyBiZWNvbWUgaW52YWxpZC4KKyAqLworc3Rh dGljIGlubGluZSBib29sCitFeGVjUGxhblN0aWxsVmFsaWQoRVN0YXRlICplc3RhdGUpCit7CisJ cmV0dXJuIGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiA9PSBOVUxMID8gdHJ1ZSA6CisJCUNhY2hlZFBs YW5WYWxpZChlc3RhdGUtPmVzX2NhY2hlZHBsYW4pOworfQorCisvKgorICogTG9ja3MgYXJlIG5l ZWRlZCBvbmx5IGlmIHJ1bm5pbmcgYSBjYWNoZWQgcGxhbiB0aGF0IG1pZ2h0IGNvbnRhaW4gdW5s b2NrZWQKKyAqIHJlbGF0aW9ucywgc3VjaCBhcyBhIHJldXNlZCBnZW5lcmljIHBsYW4uCisgKi8K K3N0YXRpYyBpbmxpbmUgYm9vbAorRXhlY1Nob3VsZExvY2tSZWxhdGlvbnMoRVN0YXRlICplc3Rh dGUpCit7CisJcmV0dXJuIGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiA9PSBOVUxMID8gZmFsc2UgOgor CQlDYWNoZWRQbGFuUmVxdWlyZXNMb2NraW5nKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbik7Cit9CiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqCQlFeGVjUHJvY05vZGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggZjkz MDYxYzdiZi4uOTY0M2E5ZDYyNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTQyLDYgKzQyLDcg QEAKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgInV0 aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9xdWVyeWVudmlyb25tZW50LmgiCisjaW5j bHVkZSAidXRpbHMvcGxhbmNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsdHJpZ2dlci5oIgog I2luY2x1ZGUgInV0aWxzL3NoYXJlZHR1cGxlc3RvcmUuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFw c2hvdC5oIgpAQCAtNjM5LDkgKzY0MCwxNCBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJ CQkJCQkgKiBFeGVjUm93TWFya3MsIG9yIE5VTEwgaWYgbm9uZSAqLwogCUxpc3QJICAgKmVzX3J0 ZXBlcm1pbmZvczsJLyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwogCVBsYW5uZWRTdG10 ICplc19wbGFubmVkc3RtdDsJLyogbGluayB0byB0b3Agb2YgcGxhbiB0cmVlICovCisJQ2FjaGVk UGxhbiAqZXNfY2FjaGVkcGxhbjsJCS8qIENhY2hlZFBsYW4gcHJvdmlkaW5nIHRoZSBwbGFuIHRy ZWUgKi8KIAlMaXN0CSAgICplc19wYXJ0X3BydW5lX2luZm9zOwkvKiBMaXN0IG9mIFBhcnRpdGlv blBydW5lSW5mbyAqLwogCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfc3RhdGVzOwkvKiBMaXN0IG9m IFBhcnRpdGlvblBydW5lU3RhdGUgKi8KIAlMaXN0CSAgICplc19wYXJ0X3BydW5lX3Jlc3VsdHM7 CS8qIExpc3Qgb2YgQml0bWFwc2V0ICovCisJQml0bWFwc2V0ICAqZXNfdW5wcnVuZWRfcmVsaWRz OwkvKiBQbGFubmVkU3RtdC51bnBydW5hYmxlUmVsaWRzICsgUlQKKwkJCQkJCQkJCSAqIGluZGV4 ZXMgb2YgbGVhZiBwYXJ0aXRpb25zIHRoYXQKKwkJCQkJCQkJCSAqIHN1cnZpdmUgaW5pdGlhbCBw cnVuaW5nOyBzZWUKKwkJCQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgKi8KIAljb25z dCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAqLwog CiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBp ZiBhbnkgKi8KQEAgLTY4Nyw2ICs2OTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAlpbnQJ CQllc190b3BfZWZsYWdzOwkvKiBlZmxhZ3MgcGFzc2VkIHRvIEV4ZWN1dG9yU3RhcnQgKi8KIAlp bnQJCQllc19pbnN0cnVtZW50OwkvKiBPUiBvZiBJbnN0cnVtZW50T3B0aW9uIGZsYWdzICovCiAJ Ym9vbAkJZXNfZmluaXNoZWQ7CS8qIHRydWUgd2hlbiBFeGVjdXRvckZpbmlzaCBpcyBkb25lICov CisJYm9vbAkJZXNfYWJvcnRlZDsJCS8qIHRydWUgd2hlbiBleGVjdXRpb24gd2FzIGFib3J0ZWQg Ki8KIAogCUxpc3QJICAgKmVzX2V4cHJjb250ZXh0czsJLyogTGlzdCBvZiBFeHByQ29udGV4dHMg d2l0aGluIEVTdGF0ZSAqLwogCkBAIC0xNDI2LDYgKzE0MzMsMTIgQEAgdHlwZWRlZiBzdHJ1Y3Qg TW9kaWZ5VGFibGVTdGF0ZQogCWRvdWJsZQkJbXRfbWVyZ2VfaW5zZXJ0ZWQ7CiAJZG91YmxlCQlt dF9tZXJnZV91cGRhdGVkOwogCWRvdWJsZQkJbXRfbWVyZ2VfZGVsZXRlZDsKKworCS8qCisJICog TGlzdCBvZiB2YWxpZCB1cGRhdGVDb2xub3NMaXN0cy4gIENvbnRhaW5zIG9ubHkgdGhvc2UgYmVs b25naW5nIHRvCisJICogdW5wcnVuZWQgcmVsYXRpb25zIGZyb20gTW9kaWZ5VGFibGUudXBkYXRl Q29sbm9zTGlzdHMuCisJICovCisJTGlzdAkgICAqbXRfdXBkYXRlQ29sbm9zTGlzdHM7CiB9IE1v ZGlmeVRhYmxlU3RhdGU7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgK aW5kZXggZjhhNGNkNDJjNi4uZWY2MTU2ZjMwYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTEx Niw2ICsxMTYsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCS8qICJmbGF0IiBy YW5nZXRhYmxlIGZvciBleGVjdXRvciAqLwogCUxpc3QJICAgKmZpbmFscnRhYmxlOwogCisJLyoK KwkgKiBSVCBpbmRleGVzIG9mIGFsbCByZWxhdGlvbiBSVEVzIGluIGZpbmFscnRhYmxlIChSVEVf UkVMQVRJT04gYW5kCisJICogUlRFX1NVQlFVRVJZIFJURXMgb2Ygdmlld3MpIGFuZCBvZiB0aG9z ZSB0aGF0IGFyZSBzdWJqZWN0IHRvIHJ1bnRpbWUKKwkgKiBwcnVuaW5nIGF0IHBsYW4gaW5pdGlh bGl6YXRpb24gdGltZSAoImluaXRpYWwiIHBydW5pbmcpLgorCSAqLworCUJpdG1hcHNldCAgKmFs bFJlbGlkczsKKwlCaXRtYXBzZXQgICpwcnVuYWJsZVJlbGlkczsKKwogCS8qICJmbGF0IiBsaXN0 IG9mIFJURVBlcm1pc3Npb25JbmZvcyAqLwogCUxpc3QJICAgKmZpbmFscnRlcGVybWluZm9zOwog CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IGVmODk5Mjc0NzEuLjU5Njk5YTFmODYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCkBAIC03NCw2ICs3NCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVkU3Rt dAogCiAJTGlzdAkgICAqcnRhYmxlOwkJCS8qIGxpc3Qgb2YgUmFuZ2VUYmxFbnRyeSBub2RlcyAq LwogCisJQml0bWFwc2V0ICAqdW5wcnVuYWJsZVJlbGlkczsJLyogUlQgaW5kZXhlcyBvZiByZWxh dGlvbnMgdGhhdCBhcmUgbm90CisJCQkJCQkJCQkgKiBzdWJqZWN0IHRvIHJ1bnRpbWUgcHJ1bmlu Zzsgc2V0IGZvcgorCQkJCQkJCQkJICogQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKS4gKi8KKwogCUxp c3QJICAgKnBlcm1JbmZvczsJCS8qIGxpc3Qgb2YgUlRFUGVybWlzc2lvbkluZm8gbm9kZXMgZm9y IHJ0YWJsZQogCQkJCQkJCQkgKiBlbnRyaWVzIG5lZWRpbmcgb25lICovCiAKQEAgLTE0NzYsNiAr MTQ4MCw5IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvCiAJLyogc3Vi cGFydCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xICovCiAJaW50CQkgICAqc3VicGFy dF9tYXAgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnBhcnRzKSk7CiAKKwkvKiBSVCBpbmRleCBi eSBwYXJ0aXRpb24gaW5kZXgsIG9yIDAgaWYgbm90IGEgbGVhZiBwYXJ0aXRpb24gKi8KKwlpbnQJ CSAgICpsZWFmcGFydF9ydGlfbWFwIHBnX25vZGVfYXR0cihhcnJheV9zaXplKG5wYXJ0cykpOwor CiAJLyogcmVsYXRpb24gT0lEIGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgMCAqLwogCU9pZAkJICAg KnJlbGlkX21hcCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShucGFydHMpKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wbGFu Y2FjaGUuaAppbmRleCBhOTBkZmRmOTA2Li43Mjg2MmY1ZTg1IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS91dGlscy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUu aApAQCAtMTgsNiArMTgsOCBAQAogI2luY2x1ZGUgImFjY2Vzcy90dXBkZXNjLmgiCiAjaW5jbHVk ZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyYW1zLmgiCisjaW5jbHVkZSAibm9k ZXMvcGFyc2Vub2Rlcy5oIgorI2luY2x1ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgogI2luY2x1ZGUg InRjb3AvY21kdGFnLmgiCiAjaW5jbHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5oIgogI2lu Y2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCkBAIC0xMzksMTAgKzE0MSwxMSBAQCB0eXBlZGVmIHN0 cnVjdCBDYWNoZWRQbGFuU291cmNlCiAgKiBUaGUgcmVmZXJlbmNlIGNvdW50IGluY2x1ZGVzIGJv dGggdGhlIGxpbmsgZnJvbSB0aGUgcGFyZW50IENhY2hlZFBsYW5Tb3VyY2UKICAqIChpZiBhbnkp LCBhbmQgYW55IGFjdGl2ZSBwbGFuIGV4ZWN1dGlvbnMsIHNvIHRoZSBwbGFuIGNhbiBiZSBkaXNj YXJkZWQKICAqIGV4YWN0bHkgd2hlbiByZWZjb3VudCBnb2VzIHRvIHplcm8uICBCb3RoIHRoZSBz dHJ1Y3QgaXRzZWxmIGFuZCB0aGUKLSAqIHN1YnNpZGlhcnkgZGF0YSBsaXZlIGluIHRoZSBjb250 ZXh0IGRlbm90ZWQgYnkgdGhlIGNvbnRleHQgZmllbGQuCi0gKiBUaGlzIG1ha2VzIGl0IGVhc3kg dG8gZnJlZSBhIG5vLWxvbmdlci1uZWVkZWQgY2FjaGVkIHBsYW4uICAoSG93ZXZlciwKLSAqIGlm IGlzX29uZXNob3QgaXMgdHJ1ZSwgdGhlIGNvbnRleHQgZG9lcyBub3QgYmVsb25nIHNvbGVseSB0 byB0aGUgQ2FjaGVkUGxhbgotICogc28gbm8gZnJlZWluZyBpcyBwb3NzaWJsZS4pCisgKiBzdWJz aWRpYXJ5IGRhdGEsIGV4Y2VwdCB0aGUgUGxhbm5lZFN0bXRzIGluIHN0bXRfbGlzdCBsaXZlIGlu IHRoZSBjb250ZXh0CisgKiBkZW5vdGVkIGJ5IHRoZSBjb250ZXh0IGZpZWxkOyB0aGUgUGxhbm5l ZFN0bXRzIGxpdmUgaW4gdGhlIGNvbnRleHQgZGVub3RlZAorICogYnkgc3RtdF9jb250ZXh0LiAg U2VwYXJhdGUgY29udGV4dHMgbWFrZXMgaXQgZWFzeSB0byBmcmVlIGEgbm8tbG9uZ2VyLW5lZWRl ZAorICogY2FjaGVkIHBsYW4uIChIb3dldmVyLCBpZiBpc19vbmVzaG90IGlzIHRydWUsIHRoZSBj b250ZXh0IGRvZXMgbm90IGJlbG9uZworICogc29sZWx5IHRvIHRoZSBDYWNoZWRQbGFuIHNvIG5v IGZyZWVpbmcgaXMgcG9zc2libGUuKQogICovCiB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuCiB7 CkBAIC0xNTAsNiArMTUzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ2FjaGVkUGxhbgogCUxpc3QJICAg KnN0bXRfbGlzdDsJCS8qIGxpc3Qgb2YgUGxhbm5lZFN0bXRzICovCiAJYm9vbAkJaXNfb25lc2hv dDsJCS8qIGlzIGl0IGEgIm9uZXNob3QiIHBsYW4/ICovCiAJYm9vbAkJaXNfc2F2ZWQ7CQkvKiBp cyBDYWNoZWRQbGFuIGluIGEgbG9uZy1saXZlZCBjb250ZXh0PyAqLworCWJvb2wJCWlzX3JldXNl ZDsJCS8qIGlzIGl0IGEgcmV1c2VkIGdlbmVyaWMgcGxhbj8gKi8KIAlib29sCQlpc192YWxpZDsJ CS8qIGlzIHRoZSBzdG10X2xpc3QgY3VycmVudGx5IHZhbGlkPyAqLwogCU9pZAkJCXBsYW5Sb2xl SWQ7CQkvKiBSb2xlIElEIHRoZSBwbGFuIHdhcyBjcmVhdGVkIGZvciAqLwogCWJvb2wJCWRlcGVu ZHNPblJvbGU7CS8qIGlzIHBsYW4gc3BlY2lmaWMgdG8gdGhhdCByb2xlPyAqLwpAQCAtMTU4LDYg KzE2MiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuCiAJaW50CQkJZ2VuZXJhdGlvbjsJ CS8qIHBhcmVudCdzIGdlbmVyYXRpb24gbnVtYmVyIGZvciB0aGlzIHBsYW4gKi8KIAlpbnQJCQly ZWZjb3VudDsJCS8qIGNvdW50IG9mIGxpdmUgcmVmZXJlbmNlcyB0byB0aGlzIHN0cnVjdCAqLwog CU1lbW9yeUNvbnRleHQgY29udGV4dDsJCS8qIGNvbnRleHQgY29udGFpbmluZyB0aGlzIENhY2hl ZFBsYW4gKi8KKwlNZW1vcnlDb250ZXh0IHN0bXRfY29udGV4dDsJLyogY29udGV4dCBjb250YWlu aW5nIHRoZSBQbGFubmVkU3RtdHMgaW4KKwkJCQkJCQkJICogc3RtdF9saXN0LCBidXQgbm90IHRo ZSBMaXN0IGl0c2VsZiB3aGljaAorCQkJCQkJCQkgKiBpcyBpbiB0aGUgYWJvdmUgY29udGV4dDsg TlVMTCBpZiBpc19vbmVzaG90CisJCQkJCQkJCSAqIGlzIHRydWUuICovCiB9IENhY2hlZFBsYW47 CiAKIC8qCkBAIC0yMjMsNiArMjMxLDEwIEBAIGV4dGVybiBDYWNoZWRQbGFuICpHZXRDYWNoZWRQ bGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZv IGJvdW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25lciBvd25lciwKIAkJCQkJCQkJIFF1 ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKK2V4dGVybiBQbGFubmVkU3RtdCAqVXBkYXRlQ2Fj aGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAorCQkJCQkJCQkJIGludCBxdWVy eV9pbmRleCwKKwkJCQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisKIGV4dGVy biB2b2lkIFJlbGVhc2VDYWNoZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIg b3duZXIpOwogCiBleHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVj ayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLApAQCAtMjM1LDQgKzI0NywzNCBAQCBleHRl cm4gYm9vbCBDYWNoZWRQbGFuSXNTaW1wbHlWYWxpZChDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLAogZXh0ZXJuIENhY2hlZEV4cHJlc3Npb24gKkdldENhY2hlZEV4cHJlc3Npb24oTm9kZSAq ZXhwcik7CiBleHRlcm4gdm9pZCBGcmVlQ2FjaGVkRXhwcmVzc2lvbihDYWNoZWRFeHByZXNzaW9u ICpjZXhwcik7CiAKKy8qCisgKiBDYWNoZWRQbGFuUmVxdWlyZXNMb2NraW5nOiBzaG91bGQgdGhl IGV4ZWN1dG9yIGFjcXVpcmUgYWRkaXRpb25hbCBsb2Nrcz8KKyAqCisgKiBJZiB0aGUgcGxhbiBp cyBhIHNhdmVkIGdlbmVyaWMgcGxhbiwgdGhlIGV4ZWN1dG9yIG11c3QgYWNxdWlyZSBsb2NrcyBm b3IKKyAqIHJlbGF0aW9ucyB0aGF0IGFyZSBub3QgY292ZXJlZCBieSBBY3F1aXJlRXhlY3V0b3JM b2NrcygpLCBzdWNoIGFzIHBhcnRpdGlvbnMKKyAqIHRoYXQgYXJlIHN1YmplY3QgdG8gaW5pdGlh bCBydW50aW1lIHBydW5pbmcuCisgKgorICogTm90ZTogVGhlc2UgbG9ja3MgYXJlIHVubmVjZXNz YXJ5IGlmIHRoZSBwbGFuIGlzIGV4ZWN1dGVkIGltbWVkaWF0ZWx5IGFmdGVyCisgKiBpdHMgY3Jl YXRpb24sIHNpbmNlIHRoZSBwbGFubmVyIHdvdWxkIGhhdmUgYWxyZWFkeSBhY3F1aXJlZCB0aGVt LiBIb3dldmVyLAorICogd2UgZG8gbm90IG9wdGltaXplIGZvciB0aGF0IGNhc2UuCisgKi8KK3N0 YXRpYyBpbmxpbmUgYm9vbAorQ2FjaGVkUGxhblJlcXVpcmVzTG9ja2luZyhDYWNoZWRQbGFuICpj cGxhbikKK3sKKwlyZXR1cm4gIWNwbGFuLT5pc19vbmVzaG90ICYmIGNwbGFuLT5pc19yZXVzZWQ7 Cit9CisKKy8qCisgKiBDYWNoZWRQbGFuVmFsaWQKKyAqICAgICAgUmV0dXJucyB3aGV0aGVyIGEg Y2FjaGVkIGdlbmVyaWMgcGxhbiBpcyBzdGlsbCB2YWxpZC4KKyAqCisgKiBJbnZva2VkIGJ5IHRo ZSBleGVjdXRvciB0byBjaGVjayBpZiB0aGUgcGxhbiBoYXMgbm90IGJlZW4gaW52YWxpZGF0ZWQg YWZ0ZXIKKyAqIHRha2luZyBsb2NrcyBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBw bGFuLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0NhY2hlZFBsYW5WYWxpZChDYWNoZWRQbGFu ICpjcGxhbikKK3sKKwlyZXR1cm4gY3BsYW4tPmlzX3ZhbGlkOworfQorCiAjZW5kaWYJCQkJCQkJ LyogUExBTkNBQ0hFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggMjlmNDk4MjlmMi4uNThjMzgyOGQy YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcG9ydGFsLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQb3J0 YWxEYXRhCiAJUXVlcnlDb21wbGV0aW9uIHFjOwkJCS8qIGNvbW1hbmQgY29tcGxldGlvbiBkYXRh IGZvciBleGVjdXRlZCBxdWVyeSAqLwogCUxpc3QJICAgKnN0bXRzOwkJCS8qIGxpc3Qgb2YgUGxh bm5lZFN0bXRzICovCiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVkUGxhbiwgaWYgc3Rt dHMgYXJlIGZyb20gb25lICovCisJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZTsJLyogQ2Fj aGVkUGxhblNvdXJjZSwgZm9yIGNwbGFuICovCiAKIAlQYXJhbUxpc3RJbmZvIHBvcnRhbFBhcmFt czsgLyogcGFyYW1zIHRvIHBhc3MgdG8gcXVlcnkgKi8KIAlRdWVyeUVudmlyb25tZW50ICpxdWVy eUVudjsgLyogZW52aXJvbm1lbnQgZm9yIHF1ZXJ5ICovCkBAIC0yNDEsNyArMjQyLDggQEAgZXh0 ZXJuIHZvaWQgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAkJCQkJCQkgIGNvbnN0 IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRUYWcsCiAJCQkJ CQkJICBMaXN0ICpzdG10cywKLQkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuKTsKKwkJCQkJCQkg IENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCQkJCSAgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZSk7CiBleHRlcm4gUGxhbm5lZFN0bXQgKlBvcnRhbEdldFByaW1hcnlTdG10KFBvcnRhbCBwb3J0 YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFsQ3JlYXRlSG9sZFN0b3JlKFBvcnRhbCBwb3J0YWwpOwog ZXh0ZXJuIHZvaWQgUG9ydGFsSGFzaFRhYmxlRGVsZXRlQWxsKHZvaWQpOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1 bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQppbmRleCA3MGYyNGU4NDZkLi4zZWViMDk3ZmRl IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQor KysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQpAQCAtOCw3ICs4 LDggQEAgT0JKUyA9IFwKIAlkZWxheV9leGVjdXRpb24ubwogCiBJU09MQVRJT04gPSBwYXJ0aXRp b24tYWRkaXRpb24gXAotCSAgICBwYXJ0aXRpb24tcmVtb3ZhbC0xCisJICAgIHBhcnRpdGlvbi1y ZW1vdmFsLTEgXAorCQljYWNoZWQtcGxhbi1pbnZhbAogCiBpZmRlZiBVU0VfUEdYUwogUEdfQ09O RklHID0gcGdfY29uZmlnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1 dGlvbi9kZWxheV9leGVjdXRpb24uYyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9u L2RlbGF5X2V4ZWN1dGlvbi5jCmluZGV4IGZhNDY5M2EzZjUuLjQ0YWE4MjhmZGYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCkBA IC0xLDE0ICsxLDE4IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBkZWxheV9leGVjdXRp b24uYwotICoJCVRlc3QgbW9kdWxlIHRvIGFsbG93IGRlbGF5IGJldHdlZW4gcGFyc2luZyBhbmQg ZXhlY3V0aW9uIG9mIGEgcXVlcnkuCisgKgkJVGVzdCBtb2R1bGUgdG8gaW50cm9kdWNlIGRlbGF5 IGF0IHZhcmlvdXMgcG9pbnRzIGR1cmluZyBleGVjdXRpb24gb2YgYQorICoJCXF1ZXJ5IHRvIHRl c3QgdGhhdCBleGVjdXRpb24gcHJvY2VlZHMgc2FmZWx5IGluIGxpZ2h0IG9mIGNvbmN1cnJlbnQK KyAqCQljaGFuZ2VzLgogICoKICAqIFRoZSBkZWxheSBpcyBpbXBsZW1lbnRlZCBieSB0YWtpbmcg YW5kIGltbWVkaWF0ZWx5IHJlbGVhc2luZyBhIHNwZWNpZmllZAogICogYWR2aXNvcnkgbG9jay4g IElmIGFub3RoZXIgcHJvY2VzcyBoYXMgcHJldmlvdXNseSB0YWtlbiB0aGF0IGxvY2ssIHRoZQog ICogY3VycmVudCBwcm9jZXNzIHdpbGwgYmUgYmxvY2tlZCB1bnRpbCB0aGUgbG9jayBpcyByZWxl YXNlZDsgb3RoZXJ3aXNlLAogICogdGhlcmUncyBubyBlZmZlY3QuICBUaGlzIGFsbG93cyBhbiBp c29sYXRpb250ZXN0ZXIgc2NyaXB0IHRvIHJlbGlhYmx5Ci0gKiB0ZXN0IGJlaGF2aW9ycyB3aGVy ZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90aGVyIGJhY2tlbmQKLSAqIGJl dHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBkZXNpcmVkIHF1ZXJ5LgorICogdGVz dCBiZWhhdmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0aW9uIGhhcHBlbnMgaW4gYW5vdGhl ciBiYWNrZW5kIGluCisgKiBhIGNvdXBsZSBvZiBjYXNlczogMSkgYmV0d2VlbiBwYXJzaW5nIGFu ZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkKKyAqIHdoZW4gdXNpbmcgdGhlIHBsYW5u ZXJfaG9vaywgMikgYmV0d2VlbiBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoKSBhbmQKKyAqIEV4ZWN1 dG9yU3RhcnQoKSB3aGVuIHVzaW5nIHRoZSBFeGVjdXRvclN0YXJ0X2hvb2suCiAgKgogICogQ29w eXJpZ2h0IChjKSAyMDIwLTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CiAgKgpAQCAtMjIsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRl ICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgiCiAj aW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAt MzIsOSArMzcsMTEgQEAgUEdfTU9EVUxFX01BR0lDOwogCiAvKiBHVUM6IGFkdmlzb3J5IGxvY2sg SUQgdG8gdXNlLiAgWmVybyBkaXNhYmxlcyB0aGUgZmVhdHVyZS4gKi8KIHN0YXRpYyBpbnQJcG9z dF9wbGFubmluZ19sb2NrX2lkID0gMDsKK3N0YXRpYyBpbnQJZXhlY3V0b3Jfc3RhcnRfbG9ja19p ZCA9IDA7CiAKLS8qIFNhdmUgcHJldmlvdXMgcGxhbm5lciBob29rIHVzZXIgdG8gYmUgYSBnb29k IGNpdGl6ZW4gKi8KKy8qIFNhdmUgcHJldmlvdXMgaG9vayB1c2VycyB0byBiZSBhIGdvb2QgY2l0 aXplbiAqLwogc3RhdGljIHBsYW5uZXJfaG9va190eXBlIHByZXZfcGxhbm5lcl9ob29rID0gTlVM TDsKK3N0YXRpYyBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9v ayA9IE5VTEw7CiAKIAogLyogcGxhbm5lcl9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRl c2lyZWQgZGVsYXkgKi8KQEAgLTcwLDExICs3Nyw0MSBAQCBkZWxheV9leGVjdXRpb25fcGxhbm5l cihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAlyZXR1cm4gcmVzdWx0 OwogfQogCisvKiBFeGVjdXRvclN0YXJ0X2hvb2sgZnVuY3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVz aXJlZCBkZWxheSAqLworc3RhdGljIHZvaWQKK2RlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0 KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQoreworCS8qIElmIGVuYWJsZWQsIGRl bGF5IGJ5IHRha2luZyBhbmQgcmVsZWFzaW5nIHRoZSBzcGVjaWZpZWQgbG9jayAqLworCWlmIChl eGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJeworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBn X2Fkdmlzb3J5X2xvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0 b3Jfc3RhcnRfbG9ja19pZCkpOworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X3Vu bG9ja19pbnQ4LAorCQkJCQkJCUludDY0R2V0RGF0dW0oKGludDY0KSBleGVjdXRvcl9zdGFydF9s b2NrX2lkKSk7CisKKwkJLyoKKwkJICogRW5zdXJlIHRoYXQgd2Ugbm90aWNlIGFueSBwZW5kaW5n IGludmFsaWRhdGlvbnMsIHNpbmNlIHRoZSBhZHZpc29yeQorCQkgKiBsb2NrIGZ1bmN0aW9ucyBk b24ndCBkbyB0aGlzLgorCQkgKi8KKwkJQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwl9 CisKKwkvKiBOb3cgc3RhcnQgdGhlIGV4ZWN1dG9yLCBwb3NzaWJseSB2aWEgYSBwcmV2aW91cyBo b29rIHVzZXIgKi8KKwlpZiAocHJldl9FeGVjdXRvclN0YXJ0X2hvb2spCisJCXByZXZfRXhlY3V0 b3JTdGFydF9ob29rKHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwllbHNlCisJCXN0YW5kYXJkX0V4ZWN1 dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJaWYgKGV4ZWN1dG9yX3N0YXJ0X2xvY2tf aWQgIT0gMCkKKwkJZWxvZyhOT1RJQ0UsICJGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hl ZFBsYW4gaXMgJXMiLAorCQkJIENhY2hlZFBsYW5WYWxpZChxdWVyeURlc2MtPmNwbGFuKSA/ICJ2 YWxpZCIgOiAibm90IHZhbGlkIik7Cit9CisKIC8qIE1vZHVsZSBsb2FkIGZ1bmN0aW9uICovCiB2 b2lkCiBfUEdfaW5pdCh2b2lkKQogewotCS8qIFNldCB1cCB0aGUgR1VDIHRvIGNvbnRyb2wgd2hp Y2ggbG9jayBpcyB1c2VkICovCisJLyogU2V0IHVwIEdVQ3MgdG8gY29udHJvbCB3aGljaCBsb2Nr IGlzIHVzZWQgKi8KIAlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgiZGVsYXlfZXhlY3V0aW9uLnBv c3RfcGxhbm5pbmdfbG9ja19pZCIsCiAJCQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQg dG8gYmUgbG9ja2VkL3VubG9ja2VkIGFmdGVyIHBsYW5uaW5nLiIsCiAJCQkJCQkJIlplcm8gZGlz YWJsZXMgdGhlIGRlbGF5LiIsCkBAIC04NiwxMCArMTIzLDIyIEBAIF9QR19pbml0KHZvaWQpCiAJ CQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMLAogCQkJCQkJCU5VTEwpOwotCisJRGVmaW5lQ3VzdG9t SW50VmFyaWFibGUoImRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkIiwKKwkJ CQkJCQkiU2V0cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5sb2NrZWQgYmVm b3JlIHN0YXJ0aW5nIGV4ZWN1dGlvbi4iLAorCQkJCQkJCSJaZXJvIGRpc2FibGVzIHRoZSBkZWxh eS4iLAorCQkJCQkJCSZleGVjdXRvcl9zdGFydF9sb2NrX2lkLAorCQkJCQkJCTAsCisJCQkJCQkJ MCwgSU5UX01BWCwKKwkJCQkJCQlQR0NfVVNFUlNFVCwKKwkJCQkJCQkwLAorCQkJCQkJCU5VTEws CisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMKTsKIAlNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoImRl bGF5X2V4ZWN1dGlvbiIpOwogCi0JLyogSW5zdGFsbCBvdXIgaG9vayAqLworCS8qIEluc3RhbGwg b3VyIGhvb2tzLiAqLwogCXByZXZfcGxhbm5lcl9ob29rID0gcGxhbm5lcl9ob29rOwogCXBsYW5u ZXJfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9wbGFubmVyOworCXByZXZfRXhlY3V0b3JTdGFydF9o b29rID0gRXhlY3V0b3JTdGFydF9ob29rOworCUV4ZWN1dG9yU3RhcnRfaG9vayA9IGRlbGF5X2V4 ZWN1dGlvbl9FeGVjdXRvclN0YXJ0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0IGIvc3JjL3Rlc3Qv bW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjViZmIyYjMzYjMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNo ZWQtcGxhbi1pbnZhbC5vdXQKQEAgLTAsMCArMSwyODIgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0 aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAgczJsb2NrIHMxZXhl YyBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZv cmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJPTSBmb292IFdI RVJFIGEgPSAkMSBGT1IgVVBEQVRFOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBx ICgxKTsKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMb2NrUm93 cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEFwcGVuZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1v dmVkOiAyICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2Fu IG9uIGZvbzEyXzEgZm9vXzEgICAKKyAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9ICQx KSAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9v MTJfMV9hCisgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gJDEpICAgICAgICAK Kyg3IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7 CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCiso MSByb3cpCisKK3N0ZXAgczFleGVjOiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBk ZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExB SU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3Bp OiBEUk9QIElOREVYIGZvbzEyXzFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29y eV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0K K3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzogPC4uLiBjb21wbGV0 ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlz IG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVk UGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTG9ja1Jvd3MgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAgIAorICAgICAgICAtPiAgU2VxIFNj YW4gb24gZm9vMTJfMSBmb29fMQorICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gJDEpICAgICAg IAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwMiBzMmxvY2sgczFl eGVjMiBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDI6IFNFVCBwbGFuX2NhY2hlX21vZGUg PSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxMiBBUyBTRUxFQ1QgKiBGUk9NIGZv b3YgV0hFUkUgYSA9IG9uZSgpIG9yIGEgPSB0d28oKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYp IEVYRUNVVEUgcTI7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNo ZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAKKyAgICAgICAg UmVjaGVjayBDb25kOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisgICAgICAgIC0+ICBC aXRtYXBPciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAKKyAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGEgPSBvbmUoKSkgICAgICAgCisgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiBmb28xMl8xX2EgIAorICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo YSA9IHR3bygpKSAgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzIgZm9vXzIgICAgICAg ICAgICAgICAgICAgCisgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkp KSAgICAgIAorKDExIHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9j aygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsK KwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsK KwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czJkcm9waTogRFJPUCBJTkRFWCBmb28xMl8xX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdf YWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0t LS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMyOiA8Li4u IGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hl ZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgp OiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFN1YnBsYW5z IFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgU2VxIFNjYW4gb24gZm9v MTJfMSBmb29fMSAgICAgICAgICAgICAKKyAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1Ig KGEgPSB0d28oKSkpCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAg IAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkKKyg2IHJvd3Mp CisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDMgczJsb2NrIHMxZXhlYzMgczJkcm9w aSBzMnVubG9jaworc3RlcCBzMXByZXAzOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2Vu ZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTMgQVMgVVBEQVRFIGZvb3YgU0VUIGEgPSBhIFdIRVJF IGEgPSBvbmUoKSBvciBhID0gdHdvKCk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRF IHEzOworczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBp cyB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxh biBpcyB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVk UGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOZXN0ZWQgTG9vcCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxh bnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg IC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGZvbzEyXzEgZm9vXzEgICAgICAgICAgICAgICAgIAor ICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkg ICAgICAKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBmb28xMl8xX2EgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAoYSA9IG9uZSgpKSAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6IChhID0gdHdvKCkpICAgICAgICAgICAgIAorICAgICAgICAtPiAgU2Vx IFNjYW4gb24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg ICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAgICAgICAgCisg IC0+ICBNYXRlcmlhbGl6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9u IGJhcjEgYmFyXzEgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBSZWNoZWNrIENv bmQ6IChhID0gb25lKCkpICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIGJhcjFfYV9pZHggICAgICAgCisgICAgICAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gb25lKCkpICAgICAgICAgICAgIAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1Vw ZGF0ZSBvbiBiYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgIFVwZGF0ZSBvbiBiYXIxIGJhcl8xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorICAtPiAgTmVzdGVkIExvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6 IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFw IEhlYXAgU2NhbiBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg ICAgUmVjaGVjayBDb25kOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisgICAgICAgICAg ICAgICAgICAgIC0+ICBCaXRtYXBPciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9h ICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBvbmUo KSkgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2Nh biBvbiBmb28xMl8xX2EgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBD b25kOiAoYSA9IHR3bygpKSAgICAgICAKKyAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZv bzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIEZpbHRl cjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgIAorICAgICAgICAtPiAgTWF0ZXJp YWxpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg ICAgICAgICAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBiYXIxIGJhcl8x ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9IG9u ZSgpKSAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiBiYXIxX2FfaWR4IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitVcGRhdGUgb24gZm9vICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24g Zm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgVXBk YXRlIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisgIC0+ICBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTJfMSBm b29fMSAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKChhID0g b25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwT3Ig ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgICAgICAgCisgICAgICAgICAgICAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gb25lKCkpICAgICAgICAgICAgIAorICAgICAg ICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAgICAgICAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSB0d28oKSkgICAgICAg ICAgICAgCisgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9 IHR3bygpKSkgICAgICAgICAgICAKKyg1NiByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBn X2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzM6IExPQUQgJ2RlbGF5 X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2Nr X2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOyA8d2FpdGlu ZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTJfMV9hOworc3RlcCBzMnVubG9j azogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sK Ky0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAg czFleGVjMzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JT dGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4 ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVk IEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6IE5PVElDRTogIEZpbmlz aGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmVz dGVkIExvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAg ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBP UiAoYSA9IHR3bygpKSkgICAgICAgICAgIAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJf MiBmb29fMiAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgo YSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAgICAgIAorICAtPiAgTWF0ZXJpYWxpemUg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAg QXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBiYXIxIGJhcl8xICAgICAgICAg ICAgIAorICAgICAgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gb25lKCkpICAgICAg ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g YmFyMV9hX2lkeCAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo YSA9IG9uZSgpKSAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorVXBkYXRlIG9uIGJhciAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gYmFyMSBiYXJf MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgTmVzdGVkIExv b3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAt PiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAg ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9 IHR3bygpKSkgICAgIAorICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBmb29f MiAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9u ZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgIAorICAgICAgICAtPiAgTWF0ZXJpYWxpemUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQXBwZW5k ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg ICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBiYXIxIGJhcl8xICAgICAgIAorICAgICAg ICAgICAgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gb25lKCkpICAgICAgICAgIAor ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYmFyMV9h X2lkeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IG9u ZSgpKSAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorVXBkYXRlIG9uIGZvbyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gZm9vMTJfMSBmb29fMSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gZm9vMTJfMiBmb29fMiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFu cyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAt PiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAgICAg IAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygp KSkgICAgICAgICAgIAorKDQxIHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJl cDQgczJsb2NrIHMxZXhlYzQgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXA0OiBTRVQgcGxh bl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFNFVCBlbmFibGVfc2Vxc2Nh biBUTyBvZmY7CisJCSAgUFJFUEFSRSBxNCBBUyBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAxKSBXSEVSRSBFWElTVFMgKFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gJDEgRk9S IFVQREFURSk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHE0ICgxKTsKK3MxOiBO T1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKyAgT25lLVRpbWUgRmlsdGVyOiAoSW5pdFBsYW4gMSkuY29s MSAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBJbml0UGxhbiAxICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgLT4gIExvY2tSb3dzICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAt PiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgZm9vMTJfMV9hIG9uIGZv bzEyXzEgZm9vXzEKKyAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9ICQxKSAg ICAgICAgICAgICAgICAgICAgIAorICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJp ZXMgICAgICAgICAgICAgICAgICAgICAgICAgCisoOSByb3dzKQorCitzdGVwIHMybG9jazogU0VM RUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzQ6IExPQUQg J2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFy dF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHE0ICgx KTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzEyXzFfYTsKK3N0 ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNv cnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93 KQorCitzdGVwIHMxZXhlYzQ6IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVk IEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBG aW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKyAgT25lLVRpbWUgRmlsdGVyOiAoSW5pdFBsYW4gMSkuY29sMSAgICAg ICAgIAorICBJbml0UGxhbiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg LT4gIExvY2tSb3dzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAtPiAg QXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFN1YnBsYW5z IFJlbW92ZWQ6IDIgICAgICAgICAgCisgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZv bzEyXzEgZm9vXzEKKyAgICAgICAgICAgICAgICAgICAgICBEaXNhYmxlZDogdHJ1ZSAgICAgICAg IAorICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKGEgPSAkMSkgICAgICAgCisgIC0+ICBG dW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyAgICAgICAKKygxMCByb3dzKQorCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9tZXNvbi5idWlsZCBiL3Ny Yy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1aWxkCmluZGV4IDQxZjNhYzBi ODkuLjVhNzBiMTgzZDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0 aW9uL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21l c29uLmJ1aWxkCkBAIC0yNCw2ICsyNCw3IEBAIHRlc3RzICs9IHsKICAgICAnc3BlY3MnOiBbCiAg ICAgICAncGFydGl0aW9uLWFkZGl0aW9uJywKICAgICAgICdwYXJ0aXRpb24tcmVtb3ZhbC0xJywK KyAgICAgICdjYWNoZWQtcGxhbi1pbnZhbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLWludmFs LnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxh bi1pbnZhbC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmYyN2U4 ZmI1MjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlv bi9zcGVjcy9jYWNoZWQtcGxhbi1pbnZhbC5zcGVjCkBAIC0wLDAgKzEsODAgQEAKKyMgVGVzdCB0 byBjaGVjayB0aGF0IGludmFsaWRhdGlvbiBvZiBjYWNoZWQgZ2VuZXJpYyBwbGFucyBkdXJpbmcg RXhlY3V0b3JTdGFydAorIyBjb3JyZWN0bHkgdHJpZ2dlcnMgcmVwbGFubmluZyBhbmQgcmUtZXhl Y3V0aW9uLgorCitzZXR1cAoreworICBDUkVBVEUgVEFCTEUgZm9vIChhIGludCwgYiB0ZXh0KSBQ QVJUSVRJT04gQlkgTElTVChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzEyIFBBUlRJVElPTiBPRiBm b28gRk9SIFZBTFVFUyBJTiAoMSwgMikgUEFSVElUSU9OIEJZIExJU1QgKGEpOworICBDUkVBVEUg VEFCTEUgZm9vMTJfMSBQQVJUSVRJT04gT0YgZm9vMTIgRk9SIFZBTFVFUyBJTiAoMSk7CisgIENS RUFURSBUQUJMRSBmb28xMl8yIFBBUlRJVElPTiBPRiBmb28xMiBGT1IgVkFMVUVTIElOICgyKTsK KyAgQ1JFQVRFIElOREVYIGZvbzEyXzFfYSBPTiBmb28xMl8xIChhKTsKKyAgQ1JFQVRFIFRBQkxF IGZvbzMgUEFSVElUSU9OIE9GIGZvbyBGT1IgVkFMVUVTIElOICgzKTsKKyAgQ1JFQVRFIFZJRVcg Zm9vdiBBUyBTRUxFQ1QgKiBGUk9NIGZvbzsKKyAgQ1JFQVRFIEZVTkNUSU9OIG9uZSAoKSBSRVRV Uk5TIGludCBBUyAkJCBCRUdJTiBSRVRVUk4gMTsgRU5EOyAkJCBMQU5HVUFHRSBQTFBHU1FMIFNU QUJMRTsKKyAgQ1JFQVRFIEZVTkNUSU9OIHR3byAoKSBSRVRVUk5TIGludCBBUyAkJCBCRUdJTiBS RVRVUk4gMjsgRU5EOyAkJCBMQU5HVUFHRSBQTFBHU1FMIFNUQUJMRTsKKyAgQ1JFQVRFIFRBQkxF IGJhciAoYSBpbnQsIGIgdGV4dCkgUEFSVElUSU9OIEJZIExJU1QoYSk7CisgIENSRUFURSBUQUJM RSBiYXIxIFBBUlRJVElPTiBPRiBiYXIgRk9SIFZBTFVFUyBJTiAoMSk7CisgIENSRUFURSBJTkRF WCBPTiBiYXIxKGEpOworICBDUkVBVEUgVEFCTEUgYmFyMiBQQVJUSVRJT04gT0YgYmFyIEZPUiBW QUxVRVMgSU4gKDIpOworICBDUkVBVEUgUlVMRSB1cGRhdGVfZm9vIEFTIE9OIFVQREFURSBUTyBm b28gRE8gQUxTTyBVUERBVEUgYmFyIFNFVCBhID0gYSBXSEVSRSBhID0gb25lKCk7CisgIENSRUFU RSBSVUxFIHVwZGF0ZV9iYXIgQVMgT04gVVBEQVRFIFRPIGJhciBETyBBTFNPIFNFTEVDVCAxOwor fQorCit0ZWFyZG93bgoreworICBEUk9QIFZJRVcgZm9vdjsKKyAgRFJPUCBSVUxFIHVwZGF0ZV9m b28gT04gZm9vOworICBEUk9QIFRBQkxFIGZvbywgYmFyOworICBEUk9QIEZVTkNUSU9OIG9uZSgp LCB0d28oKTsKK30KKworc2Vzc2lvbiAiczEiCisjIEFwcGVuZCB3aXRoIHJ1bi10aW1lIHBydW5p bmcKK3N0ZXAgInMxcHJlcCIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmlj X3BsYW47CisJCSAgUFJFUEFSRSBxIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gJDEg Rk9SIFVQREFURTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IH0KKwor IyBBbm90aGVyIGNhc2Ugd2l0aCBBcHBlbmQgd2l0aCBydW4tdGltZSBwcnVuaW5nCitzdGVwICJz MXByZXAyIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJ ICBQUkVQQVJFIHEyIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gb25lKCkgb3IgYSA9 IHR3bygpOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsgfQorCisjIENhc2Ug d2l0aCBhIHJ1bGUgYWRkaW5nIGFub3RoZXIgcXVlcnkKK3N0ZXAgInMxcHJlcDMiICAgeyBTRVQg cGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTMgQVMg VVBEQVRFIGZvb3YgU0VUIGEgPSBhIFdIRVJFIGEgPSBvbmUoKSBvciBhID0gdHdvKCk7CisJCSAg RVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOyB9CisKKyMgQW5vdGhlciBjYXNlIHdpdGgg QXBwZW5kIHdpdGggcnVuLXRpbWUgcHJ1bmluZyBpbiBhIHN1YnF1ZXJ5CitzdGVwICJzMXByZXA0 IiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBTRVQg ZW5hYmxlX3NlcXNjYW4gVE8gb2ZmOworCQkgIFBSRVBBUkUgcTQgQVMgU0VMRUNUICogRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMSkgV0hFUkUgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIGZvb3YgV0hF UkUgYSA9ICQxIEZPUiBVUERBVEUpOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBx NCAoMSk7IH0KKworIyBFeGVjdXRlcyBhIGdlbmVyaWMgcGxhbgorc3RlcCAiczFleGVjIgl7IExP QUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9z dGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEg KDEpOyB9CitzdGVwICJzMWV4ZWMyIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VU IGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQ TEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyB9CitzdGVwICJzMWV4ZWMzIgl7IExPQUQgJ2Rl bGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9s b2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOyB9Citz dGVwICJzMWV4ZWM0Igl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4 ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09T VFMgT0ZGKSBFWEVDVVRFIHE0ICgxKTsgfQorCitzZXNzaW9uICJzMiIKK3N0ZXAgInMybG9jayIJ eyBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7IH0KK3N0ZXAgInMydW5sb2NrIgl7IFNF TEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOyB9CitzdGVwICJzMmRyb3BpIgl7IERST1Ag SU5ERVggZm9vMTJfMV9hOyB9CisKKyMgV2hpbGUgInMxZXhlYyIsIGV0Yy4gd2FpdCB0byBhY3F1 aXJlIHRoZSBhZHZpc29yeSBsb2NrLCAiczJkcm9wIiBpcyBhYmxlIHRvCisjIGRyb3AgdGhlIGlu ZGV4IGJlaW5nIHVzZWQgaW4gdGhlIGNhY2hlZCBwbGFuLiAgV2hlbiAiczFleGVjIiBpcyB0aGVu CisjIHVuYmxvY2tlZCBhbmQgaW5pdGlhbGl6ZXMgdGhlIGNhY2hlZCBwbGFuIGZvciBleGVjdXRp b24sIGl0IGRldGVjdHMgdGhlCisjIGNvbmN1cnJlbnQgaW5kZXggZHJvcCBhbmQgY2F1c2VzIHRo ZSBjYWNoZWQgcGxhbiB0byBiZSBkaXNjYXJkZWQgYW5kCisjIHJlY3JlYXRlZCB3aXRob3V0IHRo ZSBpbmRleC4KK3Blcm11dGF0aW9uICJzMXByZXAiICJzMmxvY2siICJzMWV4ZWMiICJzMmRyb3Bp IiAiczJ1bmxvY2siCitwZXJtdXRhdGlvbiAiczFwcmVwMiIgInMybG9jayIgInMxZXhlYzIiICJz MmRyb3BpIiAiczJ1bmxvY2siCitwZXJtdXRhdGlvbiAiczFwcmVwMyIgInMybG9jayIgInMxZXhl YzMiICJzMmRyb3BpIiAiczJ1bmxvY2siCitwZXJtdXRhdGlvbiAiczFwcmVwNCIgInMybG9jayIg InMxZXhlYzQiICJzMmRyb3BpIiAiczJ1bmxvY2siCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKaW5kZXggN2EwM2I0ZTM2MC4uNzA1Y2Q5MjJmYyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dApAQCAtNDQ0 MCwzICs0NDQwLDQ3IEBAIGRyb3AgdGFibGUgaHBfY29udHJhZGljdF90ZXN0OwogZHJvcCBvcGVy YXRvciBjbGFzcyBwYXJ0X3Rlc3RfaW50NF9vcHMyIHVzaW5nIGhhc2g7CiBkcm9wIG9wZXJhdG9y ID09PShpbnQ0LCBpbnQ0KTsKIGRyb3AgZnVuY3Rpb24gZXhwbGFpbl9hbmFseXplKHRleHQpOwor LS0gUnVudGltZSBwcnVuaW5nIG9uIFVQREFURSB1c2luZyBXSVRIIENIRUNLIE9QVElPTlMgYW5k IFJFVFVSTklORworY3JlYXRlIHRhYmxlIHBhcnRfYWJjIChhIGludCwgYiB0ZXh0LCBjIGJvb2wp IHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0X2FiY18xIChiIHRleHQs IGEgaW50LCBjIGJvb2wpOworY3JlYXRlIHRhYmxlIHBhcnRfYWJjXzIgKGEgaW50LCBjIGJvb2ws IGIgdGV4dCk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFydGl0aW9uIHBhcnRfYWJj XzEgZm9yIHZhbHVlcyBpbiAoMSk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFydGl0 aW9uIHBhcnRfYWJjXzIgZm9yIHZhbHVlcyBpbiAoMik7CitpbnNlcnQgaW50byBwYXJ0X2FiYyB2 YWx1ZXMgKDEsICdiJywgdHJ1ZSk7CitpbnNlcnQgaW50byBwYXJ0X2FiYyB2YWx1ZXMgKDIsICdj JywgdHJ1ZSk7CitjcmVhdGUgdmlldyBwYXJ0X2FiY192aWV3IGFzIHNlbGVjdCAqIGZyb20gcGFy dF9hYmMgd2hlcmUgYiA8PiAnYScgd2l0aCBjaGVjayBvcHRpb247CitwcmVwYXJlIHVwZGF0ZV9w YXJ0X2FiY192aWV3IGFzIHVwZGF0ZSBwYXJ0X2FiY192aWV3IHNldCBiID0gJDIgd2hlcmUgYSA9 ICQxIHJldHVybmluZyAqOworZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHVwZGF0ZV9wYXJ0 X2FiY192aWV3ICgxLCAnZCcpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwYXJ0X2FiYworICAgVXBkYXRlIG9uIHBh cnRfYWJjXzEKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEKKyAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYXJ0X2FiY18xCisgICAgICAgICAgICAgICBGaWx0ZXI6 ICgoYiA8PiAnYSc6OnRleHQpIEFORCAoYSA9ICQxKSkKKyg2IHJvd3MpCisKK2V4ZWN1dGUgdXBk YXRlX3BhcnRfYWJjX3ZpZXcgKDEsICdkJyk7CisgYSB8IGIgfCBjIAorLS0tKy0tLSstLS0KKyAx IHwgZCB8IHQKKygxIHJvdykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHVwZGF0ZV9w YXJ0X2FiY192aWV3ICgyLCAnYScpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwYXJ0X2FiYworICAgVXBkYXRlIG9u IHBhcnRfYWJjXzIgcGFydF9hYmNfMQorICAgLT4gIEFwcGVuZAorICAgICAgICAgU3VicGxhbnMg UmVtb3ZlZDogMQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhcnRfYWJjXzIgcGFydF9hYmNf MQorICAgICAgICAgICAgICAgRmlsdGVyOiAoKGIgPD4gJ2EnOjp0ZXh0KSBBTkQgKGEgPSAkMSkp CisoNiByb3dzKQorCitleGVjdXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3ICgyLCAnYScpOworRVJS T1I6ICBuZXcgcm93IHZpb2xhdGVzIGNoZWNrIG9wdGlvbiBmb3IgdmlldyAicGFydF9hYmNfdmll dyIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgyLCBhLCB0KS4KK2RlYWxsb2NhdGUg dXBkYXRlX3BhcnRfYWJjX3ZpZXc7Citkcm9wIHZpZXcgcGFydF9hYmNfdmlldzsKK2Ryb3AgdGFi bGUgcGFydF9hYmM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25f cHJ1bmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbAppbmRl eCA0NDI0MjhkOTM3Li5hZjI2YWQyZmIyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wYXJ0aXRpb25fcHJ1bmUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlv bl9wcnVuZS5zcWwKQEAgLTEzMzksMyArMTMzOSwyMSBAQCBkcm9wIG9wZXJhdG9yIGNsYXNzIHBh cnRfdGVzdF9pbnQ0X29wczIgdXNpbmcgaGFzaDsKIGRyb3Agb3BlcmF0b3IgPT09KGludDQsIGlu dDQpOwogCiBkcm9wIGZ1bmN0aW9uIGV4cGxhaW5fYW5hbHl6ZSh0ZXh0KTsKKworLS0gUnVudGlt ZSBwcnVuaW5nIG9uIFVQREFURSB1c2luZyBXSVRIIENIRUNLIE9QVElPTlMgYW5kIFJFVFVSTklO RworY3JlYXRlIHRhYmxlIHBhcnRfYWJjIChhIGludCwgYiB0ZXh0LCBjIGJvb2wpIHBhcnRpdGlv biBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0X2FiY18xIChiIHRleHQsIGEgaW50LCBj IGJvb2wpOworY3JlYXRlIHRhYmxlIHBhcnRfYWJjXzIgKGEgaW50LCBjIGJvb2wsIGIgdGV4dCk7 CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFydGl0aW9uIHBhcnRfYWJjXzEgZm9yIHZh bHVlcyBpbiAoMSk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFydGl0aW9uIHBhcnRf YWJjXzIgZm9yIHZhbHVlcyBpbiAoMik7CitpbnNlcnQgaW50byBwYXJ0X2FiYyB2YWx1ZXMgKDEs ICdiJywgdHJ1ZSk7CitpbnNlcnQgaW50byBwYXJ0X2FiYyB2YWx1ZXMgKDIsICdjJywgdHJ1ZSk7 CitjcmVhdGUgdmlldyBwYXJ0X2FiY192aWV3IGFzIHNlbGVjdCAqIGZyb20gcGFydF9hYmMgd2hl cmUgYiA8PiAnYScgd2l0aCBjaGVjayBvcHRpb247CitwcmVwYXJlIHVwZGF0ZV9wYXJ0X2FiY192 aWV3IGFzIHVwZGF0ZSBwYXJ0X2FiY192aWV3IHNldCBiID0gJDIgd2hlcmUgYSA9ICQxIHJldHVy bmluZyAqOworZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3 ICgxLCAnZCcpOworZXhlY3V0ZSB1cGRhdGVfcGFydF9hYmNfdmlldyAoMSwgJ2QnKTsKK2V4cGxh aW4gKGNvc3RzIG9mZikgZXhlY3V0ZSB1cGRhdGVfcGFydF9hYmNfdmlldyAoMiwgJ2EnKTsKK2V4 ZWN1dGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXcgKDIsICdhJyk7CitkZWFsbG9jYXRlIHVwZGF0ZV9w YXJ0X2FiY192aWV3OworZHJvcCB2aWV3IHBhcnRfYWJjX3ZpZXc7Citkcm9wIHRhYmxlIHBhcnRf YWJjOwotLSAKMi40My4wCgo= --00000000000089c291062884af28--