Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vfwWh-006ImM-2T for pgsql-hackers@arkaria.postgresql.org; Wed, 14 Jan 2026 08:46:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vfwWg-008ypY-38 for pgsql-hackers@arkaria.postgresql.org; Wed, 14 Jan 2026 08:46:51 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vfwWg-008ypJ-1B for pgsql-hackers@lists.postgresql.org; Wed, 14 Jan 2026 08:46:50 +0000 Received: from mail-ed1-x533.google.com ([2a00:1450:4864:20::533]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vfwWa-000OKI-2q for pgsql-hackers@lists.postgresql.org; Wed, 14 Jan 2026 08:46:48 +0000 Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-6505d3b84bcso13026165a12.3 for ; Wed, 14 Jan 2026 00:46:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1768380403; x=1768985203; darn=lists.postgresql.org; h=in-reply-to:references:mime-version:from:to:subject:cc:message-id :date:from:to:cc:subject:date:message-id:reply-to; bh=YYhn70cDuSamrhx7Chho4iYu1OXoAZvYq9EXBTqTTlY=; b=RR+3R/ViERL9/GnhTAEER+woWWT3ImOmVWZNn3ibjt74nHZu7GFEBElDvIsngIS3zb yWg0Q142YpxqPdaQf7Rl6cdb6cmpqIppdxSr2EGrlmcbhxw+JQporBikuqUqkzupENdt /jfvjv1u/jbJR4vC6t24rMzd3VGiw8+sY1vAy+ekzlrkJdwTI2UhgH6t7jtef5Y9riks JALtv6N77pkqavyuZyHreVuWW3wThIzH+okzUTyZWd4mC0DJ6W2INqJQvNsKfcP/IIxD 5reaW8CJI1COphu/z2MExUyBm368hj6Aff3O9SENYIgIZ3y/6JU9GGxp4GQn+TsTlqjz 7e4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768380403; x=1768985203; h=in-reply-to:references:mime-version:from:to:subject:cc:message-id :date:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=YYhn70cDuSamrhx7Chho4iYu1OXoAZvYq9EXBTqTTlY=; b=wlFmciWezRdYMpcufVmaUr7/+09exefPRyGH9cWn8d4KibrD0Gt/aEeQyUdYLjzr9Z lFaHL8yDsat2fl1Q4PHemFl8fY45RgCivZGaBCaFOENDTVCjcERFXHOa6ZlHG1gGCdZH SFtCFdNbKAchECaq9PGSo+cx5ZaganIAAoQNMbVq+coV9fLv7NBFkBb6ntS1s4iaIyyt 3/Z/BKJwCdG36XZTv5hnkG2PgJrmH05KCTrFv2z/BYLWJYafo+bEDJAJJ9h0DaAUIJCY 09r7DhIgSyLBr6ex/9Af1iyxq3hEHLjq3UOFgRKodc57IzKIy9uZtpyZDIHf/P0IG5G7 fROg== X-Forwarded-Encrypted: i=1; AJvYcCVq1JUd2QjdAcNf49REiFJd92EbaS2y8QTWFfLkmco5ClM6l/mZz6/1xJx1srQyLd3zc+rtpPKnRP3N2/Br@lists.postgresql.org X-Gm-Message-State: AOJu0Yx/KUiHl3C9ad/Vea+BA6gSfZ9PddAMSOMnJiX8E+uXtH9CS0TL btTH8p40RcPPShhDldzNfKwuRRAyvemp5NNKGbktyWZxSqGjDsne+fcZ+K9VY7Cl5hU= X-Gm-Gg: AY/fxX6f7DpAQgh5B/g6ByQAkhqm+0zc686AxvOAowP3TJh+0V0M+U0weJM9KdUMtp8 ucIdpsZ4RY2Uy7HgO/TM9aJYpHS7InhwyKzf81XySnDijpjHIf376+EApWQ/RjGh8ELh1vRx0DP Zw1DLmGAEKhHe4+6z7rdEoJLt9al1nc3A/kjG8s1bbPkxWexsUew+znvPB6/LJVCTrOGpKMrW/f B4nhLSDlVvdsH58sAlGvHBpsBp7e6kujaE4HGOahzp6YCzTfVx/qBLyRypPF18XQMtTCEWVys9l Zmr/CehwieANxf2DULa4hCYx0MHnzvIFSwPsbJ9SSe4vZ9bTnitxFFZeBf1ko7Ie3Iou3GARAiI IrA05Qkh6F6QN5e05gIyFfgETEVFDaqygr6MKUwb4N2XJ0s9u579J5Pay48jQSqhZD+ta3Cyeox mZp90iBqLOaDHN7EEhcbBJ3xaNaU5fQCySUgA= X-Received: by 2002:a17:907:9495:b0:b73:6f8c:6127 with SMTP id a640c23a62f3a-b876770a44fmr107456366b.12.1768380402732; Wed, 14 Jan 2026 00:46:42 -0800 (PST) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6507bf6d5absm22234304a12.33.2026.01.14.00.46.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 14 Jan 2026 00:46:41 -0800 (PST) Content-Type: multipart/mixed; boundary=d56ff9939aba4b3c25f60e99a71ae3e368c16671eeb350a214b2e014d44b Date: Wed, 14 Jan 2026 09:46:41 +0100 Message-Id: Cc: "Thomas Munro" , Subject: Re: Safer hash table initialization macro To: "Bertrand Drouvot" From: "Jelte Fennema-Nio" MIME-Version: 1.0 References: In-Reply-To: X-TUID: ipfrnRPqQ6zV List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --d56ff9939aba4b3c25f60e99a71ae3e368c16671eeb350a214b2e014d44b Content-Type: multipart/alternative; boundary=4a785a1f58ba1ad8c6e78cacdba3c342c9833c5f84e466dbeb03ee2f14be --4a785a1f58ba1ad8c6e78cacdba3c342c9833c5f84e466dbeb03ee2f14be Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Wed, 14 Jan 2026 at 08:57, Bertrand Drouvot wrote: > + * WARNING: If you use char[N] to store binary data that is not null-ter= minated, > + * the automatic detection will incorrectly treat it as a string and use= string > + * comparison. In such cases, use hash_make_ext() with .force_blobs =3D = true to > + * override the automatic detection > > maybe s/is not null-terminated/may contain null bytes/? Changed wording and changed to NOTE. > > Especially, because to make this macro nice to > > use in the two cases that it would apply to we'd have to make it treat = 0 > > as a special value. > > Not necessary, we could also just add a foreach_hash_with_hash_value() to= make > things more consistent? It would be more consistent, but the calling code would actually be more verbose in the two places where we use seq_init_hash_with_hash_value. Because in both places the code calls it conditionally like this: if (hashvalue =3D=3D 0) hash_seq_init(&status, TypeCacheHash); else hash_seq_init_with_hash_value(&status, TypeCacheHash, hashvalue); while ((typentry =3D (TypeCacheEntry *) hash_seq_search(&status)) !=3D = NULL) { So if we don't have the foreach_hash_with_hash_value macro treat 0 special, then we'd need to replace this single while with two for foreach loops. A foreach_hash for the 0 case and a foreach_hash_with_hash_value for the non-zero one. > -static void > -cfunc_hashtable_init(void) > -{ > - /* don't allow double-initialization */ > - Assert(cfunc_hashtable =3D=3D NULL); > > Most of the hash_make_fn_cxt() callers check that the destination is alre= ady > NULL so that removing the Assert() is not that worrying for them. There a= re 2 > places where it's not the case: InitializeAttoptCache() and build_guc_var= iables() > , should we add an Assert (or an if check) in them? I think that an Asser= t is > more appropriate for those 2. I'm a bit confused about this comment. I didn't change anything for those two places about their checks for NULL. Did you mean this as a separate but related improvement to existing code? (To be clear, the removed Assert that you quoted doesn't matter when inlining, because it's the only item in an if (!cfunc_hashtable) block) > =3D=3D=3D 2 > > " At the very least we should choose a few places where we use the new > macros to make sure they have coverage." > > I do agree that the refactoring is quite large. I do think there is no ru= sh > to do all the changes at once. We could update a subset of files at a tim= e per > month so that, that would: > > - keep changes consistent within each file > - ease the review(s) > - avoid "large" rebases for patches waiting in the commitfest > > Thoughts? As long as the new macro definitions get in, any way a committer thinks that's sensible is fine by me. e.g. The List foreach macros also haven't been replaced in bulk, but I'm still very happy that I can use them for new code. --4a785a1f58ba1ad8c6e78cacdba3c342c9833c5f84e466dbeb03ee2f14be-- --d56ff9939aba4b3c25f60e99a71ae3e368c16671eeb350a214b2e014d44b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v6-0001-Add-hash_make-macros.patch Content-Type: text/x-patch; charset=utf-8; name=v6-0001-Add-hash_make-macros.patch RnJvbSBlYjIzZGRmOGU3OThjYWI1M2RiYWE3OTM5Njg0MmUyMGMxN2E1NDBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzU6MDggKzAxMDAKU3ViamVjdDogW1BBVENIIHY2 IDEvNV0gQWRkIGhhc2hfbWFrZSBtYWNyb3MKClRoaXMgYWRkcyBhIGJ1bmNoIG9mIGhhc2hfbWFr ZSogYW5kIHNobWVtX2hhc2hfbWFrZSogbWFjcm9zIHRvIG1ha2UgaXQKZWFzaWVyIGFuZCBsZXNz IGVycm9yIHByb25lIHRvIGNyZWF0ZSBIVEFCcy4gVGhlc2UgbWFjcm9zIGFyZQppbXBsZW1lbnRl ZCBhcyB3cmFwcGVycyBhcm91bmQgdGhlIGFscmVhZHkgZXhpc3RpbmcgaGFzaF9jcmVhdGUKZnVu Y3Rpb24uIFVzaW5nIHRoZSBuZXcgbWFjcm9zIGlzIHByZWZlcnJlZCwgZHVlIHRvIHRoZSBhZGRp dGlvbmFsCmNvbXBpbGUgdGltZSBjaGVja3MgdGhhdCB0aGV5IGJyaW5nLgoKQ28tQXV0aG9yZWQt Qnk6IEJlcnRyYW5kIERyb3V2b3QgPGJlcnRyYW5kZHJvdXZvdC5wZ0BnbWFpbC5jb20+Ci0tLQog c3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jIHwgMTA5ICsrKysrKysrKysrKysrKysr KysrCiBzcmMvaW5jbHVkZS9jLmggICAgICAgICAgICAgICAgICAgfCAgMzIgKysrKysrCiBzcmMv aW5jbHVkZS9zdG9yYWdlL3NobWVtLmggICAgICAgfCAgMzIgKysrKysrCiBzcmMvaW5jbHVkZS91 dGlscy9oc2VhcmNoLmggICAgICAgfCAxNjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst CiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgfCAgIDEgKwogNSBmaWxlcyBjaGFu Z2VkLCAzMzUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMgYi9zcmMvYmFja2VuZC91dGlscy9oYXNoL2R5 bmFoYXNoLmMKaW5kZXggMTFmNTc3OGViYTEuLmMwZmFhYWY2MWRhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFz aC9keW5haGFzaC5jCkBAIC02MzEsNiArNjMxLDExNSBAQCBoYXNoX2NyZWF0ZShjb25zdCBjaGFy ICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQog CXJldHVybiBoYXNocDsKIH0KIAorLyoKKyAqIGhhc2hfb3B0c19pbml0IC0tIGluaXRpYWxpemUg SEFTSENUTCBhbmQgZmxhZ3MgZnJvbSBIQVNIT1BUUworICoKKyAqIFRoaXMgcHJvY2Vzc2VzIEhB U0hPUFRTIGZpZWxkcyBpbnRvIEhBU0hDVEwgYW5kIGZsYWdzLiBJdCdzIHVzZWQgYnkgY29kZQor ICogdGhhdCBuZWVkcyB0byBjYWxsIHRoZSBsb3ctbGV2ZWwgaGFzaF9jcmVhdGUgZnVuY3Rpb24u CisgKi8KK3ZvaWQKK2hhc2hfb3B0c19pbml0KEhBU0hDVEwgKmN0bCwgaW50ICpmbGFncywKKwkJ CSAgIFNpemUga2V5c2l6ZSwgU2l6ZSBlbnRyeXNpemUsIGJvb2wgc3RyaW5nX2tleSwKKwkJCSAg IGNvbnN0IEhBU0hPUFRTICpvcHRzKQoreworCU1lbVNldChjdGwsIDAsIHNpemVvZigqY3RsKSk7 CisJY3RsLT5rZXlzaXplID0ga2V5c2l6ZTsKKwljdGwtPmVudHJ5c2l6ZSA9IGVudHJ5c2l6ZTsK KworCSpmbGFncyA9IEhBU0hfRUxFTTsKKworCWlmIChvcHRzICE9IE5VTEwgJiYgb3B0cy0+aGFz aCAhPSBOVUxMKQorCXsKKwkJLyogZm9yY2VfYmxvYnMgb25seSBhZmZlY3RzIGRlZmF1bHQgaGFz aCBzZWxlY3Rpb24sIG5vdCBjdXN0b20gaGFzaCAqLworCQlBc3NlcnQoIW9wdHMtPmZvcmNlX2Js b2JzKTsKKwkJY3RsLT5oYXNoID0gb3B0cy0+aGFzaDsKKwkJKmZsYWdzIHw9IEhBU0hfRlVOQ1RJ T047CisJfQorCWVsc2UgaWYgKG9wdHMgIT0gTlVMTCAmJiBvcHRzLT5mb3JjZV9ibG9icykKKwl7 CisJCSpmbGFncyB8PSBIQVNIX0JMT0JTOworCX0KKwllbHNlCisJeworCQkqZmxhZ3MgfD0gc3Ry aW5nX2tleSA/IEhBU0hfU1RSSU5HUyA6IEhBU0hfQkxPQlM7CisJfQorCisJaWYgKG9wdHMgIT0g TlVMTCAmJiBvcHRzLT5tYXRjaCAhPSBOVUxMKQorCXsKKwkJY3RsLT5tYXRjaCA9IG9wdHMtPm1h dGNoOworCQkqZmxhZ3MgfD0gSEFTSF9DT01QQVJFOworCX0KKworCWlmIChvcHRzICE9IE5VTEwg JiYgb3B0cy0+a2V5Y29weSAhPSBOVUxMKQorCXsKKwkJY3RsLT5rZXljb3B5ID0gb3B0cy0+a2V5 Y29weTsKKwkJKmZsYWdzIHw9IEhBU0hfS0VZQ09QWTsKKwl9CisKKwlpZiAob3B0cyAhPSBOVUxM ICYmIG9wdHMtPmFsbG9jICE9IE5VTEwpCisJeworCQljdGwtPmFsbG9jID0gb3B0cy0+YWxsb2M7 CisJCSpmbGFncyB8PSBIQVNIX0FMTE9DOworCX0KKworCWlmIChvcHRzICE9IE5VTEwgJiYgb3B0 cy0+bnVtX3BhcnRpdGlvbnMgPiAwKQorCXsKKwkJY3RsLT5udW1fcGFydGl0aW9ucyA9IG9wdHMt Pm51bV9wYXJ0aXRpb25zOworCQkqZmxhZ3MgfD0gSEFTSF9QQVJUSVRJT047CisJfQorCisJaWYg KG9wdHMgIT0gTlVMTCAmJiBvcHRzLT5maXhlZF9zaXplKQorCQkqZmxhZ3MgfD0gSEFTSF9GSVhF RF9TSVpFOworfQorCisvKgorICogaGFzaF9tYWtlX2ltcGwgLS0gc2ltcGxpZmllZCBoYXNoIHRh YmxlIGNyZWF0aW9uCisgKgorICogVGhpcyBpcyB0aGUgaW1wbGVtZW50YXRpb24gZnVuY3Rpb24g Zm9yIHRoZSBoYXNoX21ha2UoKSBhbmQgaGFzaF9tYWtlX2V4dCgpCisgKiBtYWNyb3MuIEl0IGNy ZWF0ZXMgYSBoYXNoIHRhYmxlIHdpdGggc2Vuc2libGUgZGVmYXVsdHMuCisgKgorICogSWYgc3Ry aW5nX2tleSBpcyB0cnVlLCB0aGUga2V5IGlzIHRyZWF0ZWQgYXMgYSBudWxsLXRlcm1pbmF0ZWQg c3RyaW5nCisgKiAodXNlcyBIQVNIX1NUUklOR1MpLiBPdGhlcndpc2UsIHRoZSBrZXkgaXMgdHJl YXRlZCBhcyBhIGJpbmFyeSBibG9iCisgKiAodXNlcyBIQVNIX0JMT0JTKS4KKyAqCisgKiBQYXNz IE5VTEwgZm9yIG9wdHMgdG8gdXNlIGFsbCBkZWZhdWx0cy4KKyAqLworSFRBQiAqCitoYXNoX21h a2VfaW1wbChjb25zdCBjaGFyICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwKKwkJCSAgIFNpemUga2V5 c2l6ZSwgU2l6ZSBlbnRyeXNpemUsCisJCQkgICBib29sIHN0cmluZ19rZXksCisJCQkgICBjb25z dCBIQVNIT1BUUyAqb3B0cywKKwkJCSAgIE1lbW9yeUNvbnRleHQgbWN4dCkKK3sKKwlIQVNIQ1RM CQljdGw7CisJaW50CQkJZmxhZ3M7CisKKwloYXNoX29wdHNfaW5pdCgmY3RsLCAmZmxhZ3MsIGtl eXNpemUsIGVudHJ5c2l6ZSwgc3RyaW5nX2tleSwgb3B0cyk7CisKKwljdGwuaGN4dCA9IG1jeHQ7 CisJZmxhZ3MgfD0gSEFTSF9DT05URVhUOworCisJcmV0dXJuIGhhc2hfY3JlYXRlKHRhYm5hbWUs IG5lbGVtLCAmY3RsLCBmbGFncyk7Cit9CisKKy8qCisgKiBoYXNoX21ha2VfZm5faW1wbCAtLSBj cmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggY3VzdG9tIGZ1bmN0aW9ucworICovCitIVEFCICoKK2hh c2hfbWFrZV9mbl9pbXBsKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLAorCQkJCSAg U2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5LAorCQkJCSAgSGFz aFZhbHVlRnVuYyBoYXNoZm4sIEhhc2hDb21wYXJlRnVuYyBtYXRjaGZuLAorCQkJCSAgTWVtb3J5 Q29udGV4dCBtY3h0KQoreworCUhBU0hPUFRTCW9wdHMgPSB7CisJCS5oYXNoID0gaGFzaGZuLAor CQkubWF0Y2ggPSBtYXRjaGZuCisJfTsKKworCXJldHVybiBoYXNoX21ha2VfaW1wbCh0YWJuYW1l LCBuZWxlbSwga2V5c2l6ZSwgZW50cnlzaXplLAorCQkJCQkJICBzdHJpbmdfa2V5LCAmb3B0cywg bWN4dCk7Cit9CisKIC8qCiAgKiBTZXQgZGVmYXVsdCBIQVNISERSIHBhcmFtZXRlcnMuCiAgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2MuaCBiL3NyYy9pbmNsdWRlL2MuaAppbmRleCAzMzVh ZjMzNTJkMS4uYzY1MGE3Nzk1YjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9z cmMvaW5jbHVkZS9jLmgKQEAgLTgyLDYgKzgyLDEyIEBACiAjZW5kaWYKICNpZmRlZiBFTkFCTEVf TkxTCiAjaW5jbHVkZSA8bGliaW50bC5oPgorI2VuZGlmCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4 dGVybiAiQysrIgoreworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorfQogI2VuZGlmCiAKICAvKiBQ dWxsIGluIGZ1bmRhbWVudGFsIHN5bWJvbHMgdGhhdCB3ZSBhbHNvIGV4cG9zZSB0byBhcHBsaWNh dGlvbnMgKi8KQEAgLTM3Myw2ICszNzksMzIgQEAKICNkZWZpbmUgSEFWRV9QR19JTlRFR0VSX0NP TlNUQU5UX1AKICNlbmRpZgogCisvKgorICogcGdfZXhwcl9oYXNfdHlwZV9wKGV4cHIsIHR5cGUp IC0gQ2hlY2sgaWYgYW4gZXhwcmVzc2lvbiBoYXMgYSBzcGVjaWZpYyB0eXBlLgorICoKKyAqIFNp bWlsYXIgdG8gcGdfaXNfc2FtZSwgYnV0IHRha2VzIGFuIGV4cHJlc3Npb24gaW5zdGVhZCBvZiBh IHR5cGUgYXMgdGhlCisgKiBmaXJzdCBhcmd1bWVudC4gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ug aGF2ZSBhbiBleHByZXNzaW9uIGFuZCB3YW50IHRvCisgKiBjaGVjayBpdHMgdHlwZSB3aXRob3V0 IG5lZWRpbmcgdHlwZW9mL2RlY2x0eXBlLgorICovCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykK KyNkZWZpbmUgcGdfZXhwcl9oYXNfdHlwZV9wKGV4cHIsIHR5cGUpIChzdGQ6OmlzX3NhbWU8ZGVj bHR5cGUoZXhwciksIHR5cGU+Ojp2YWx1ZSkKKyNlbHNlCisjZGVmaW5lIHBnX2V4cHJfaGFzX3R5 cGVfcChleHByLCB0eXBlKSBcCisJX0dlbmVyaWMoKGV4cHIpLCB0eXBlOiAxLCBkZWZhdWx0OiAw KQorI2VuZGlmCisKKy8qCisgKiBwZ19udWxscHRyX29mKHR5cGUpIC0gQ3JlYXRlIGEgbnVsbCBw b2ludGVyIG9mIHRoZSBnaXZlbiB0eXBlLgorICoKKyAqIEluIEMsICh0eXBlICopIE5VTEwgd29y a3MgZm9yIGFsbCB0eXBlcy4gSW4gQysrLCB0aGlzIHN5bnRheCBmYWlscyBmb3IgdHlwZXMKKyAq IGNvbnRhaW5pbmcgYnJhY2tldHMgKGxpa2UgY2hhcls2NF0pLCBzbyB3ZSB1c2Ugc3RkOjphZGRf cG9pbnRlcl90IGluc3RlYWQuCisgKi8KKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorI2RlZmlu ZSBwZ19udWxscHRyX29mKHR5cGUpIChzdGF0aWNfY2FzdDxzdGQ6OmFkZF9wb2ludGVyX3Q8dHlw ZT4+KG51bGxwdHIpKQorI2Vsc2UKKyNkZWZpbmUgcGdfbnVsbHB0cl9vZih0eXBlKSAoKHR5cGUg KikgTlVMTCkKKyNlbmRpZgorCiAvKgogICogcGdfYXNzdW1lKGV4cHIpIHN0YXRlcyB0aGF0IHdl IGFzc3VtZSBgZXhwcmAgdG8gZXZhbHVhdGUgdG8gdHJ1ZS4gSW4gYXNzZXJ0CiAgKiBlbmFibGVk IGJ1aWxkcyBwZ19hc3N1bWUoKSBpcyB0dXJuZWQgaW50byBhbiBhc3NlcnRpb24sIGluIG9wdGlt aXplZCBidWlsZHMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAppbmRleCBlNzFhNTFkZmU4NC4uMmEyZDI0Y2NmNjAg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysgYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL3NobWVtLmgKQEAgLTQzLDYgKzQzLDM4IEBAIGV4dGVybiBTaXplIG11bF9zaXpl KFNpemUgczEsIFNpemUgczIpOwogCiBleHRlcm4gUEdETExJTVBPUlQgU2l6ZSBwZ19nZXRfc2ht ZW1fcGFnZXNpemUodm9pZCk7CiAKKy8qCisgKiBTaW1wbGlmaWVkIHNoYXJlZCBtZW1vcnkgaGFz aCB0YWJsZSBjcmVhdGlvbiBBUEkKKyAqCisgKiBUaGVzZSBtYWNyb3MgcHJvdmlkZSBhIHNpbXBs ZXIgd2F5IHRvIGNyZWF0ZSBzaGFyZWQgbWVtb3J5IGhhc2ggdGFibGVzIGJ5OgorICogLSBBdXRv bWF0aWNhbGx5IGRldGVybWluaW5nIGtleXNpemUgYW5kIGVudHJ5c2l6ZSBmcm9tIHR5cGUgaW5m b3JtYXRpb24KKyAqIC0gQXV0b21hdGljYWxseSBjaG9vc2luZyBIQVNIX1NUUklOR1MgdnMgSEFT SF9CTE9CUyBiYXNlZCBvbiBrZXkgdHlwZQorICogLSBFbGltaW5hdGluZyB0aGUgbmVlZCBmb3Ig ZXhwbGljaXQgSEFTSENUTCBhbmQgZmxhZ3MgaW4gY29tbW9uIGNhc2VzCisgKgorICogVXNhZ2U6 CisgKiAgIEhUQUIgKmhhc2ggPSBzaG1lbV9oYXNoX21ha2UoTXlFbnRyeSwga2V5ZmllbGQsICJN eSBoYXNoIiwgNjQsIDEyOCk7CisgKgorICogRm9yIG1vcmUgb3B0aW9ucyAocGFydGl0aW9uaW5n LCBmaXhlZCBzaXplLCBjdXN0b20gaGFzaCk6CisgKiAgIEhBU0hPUFRTIG9wdHMgPSB7Lm51bV9w YXJ0aXRpb25zID0gMTYsIC5maXhlZF9zaXplID0gdHJ1ZX07CisgKiAgIEhUQUIgKmhhc2ggPSBz aG1lbV9oYXNoX21ha2VfZXh0KE15RW50cnksIGtleWZpZWxkLCAiTXkgaGFzaCIsIDY0LCAxMjgs ICZvcHRzKTsKKyAqLworI2RlZmluZSBzaG1lbV9oYXNoX21ha2UoZW50cnl0eXBlLCBrZXltZW1i ZXIsIHRhYm5hbWUsIGluaXRfc2l6ZSwgbWF4X3NpemUpIFwKKwlzaG1lbV9oYXNoX21ha2VfZXh0 KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBpbml0X3NpemUsIG1heF9zaXplLCBOVUxM KQorCisjZGVmaW5lIHNobWVtX2hhc2hfbWFrZV9leHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRh Ym5hbWUsIGluaXRfc2l6ZSwgbWF4X3NpemUsIG9wdHMpIFwKKwkoU3RhdGljQXNzZXJ0RXhwcihv ZmZzZXRvZihlbnRyeXR5cGUsIGtleW1lbWJlcikgPT0gMCwgXAorCQkJCQkJICNrZXltZW1iZXIg IiBtdXN0IGJlIGZpcnN0IG1lbWJlciBpbiAiICNlbnRyeXR5cGUpLCBcCisJc2htZW1faGFzaF9t YWtlX2ltcGwoIFwKKwkJKHRhYm5hbWUpLCAoaW5pdF9zaXplKSwgKG1heF9zaXplKSwgXAorCQlz aXplb2YoKChlbnRyeXR5cGUgKikwKS0+a2V5bWVtYmVyKSwgXAorCQlzaXplb2YoZW50cnl0eXBl KSwgXAorCQlIQVNIX0tFWV9BU19TVFJJTkcoZW50cnl0eXBlLCBrZXltZW1iZXIpLCBcCisJCShv cHRzKSkpCisKK2V4dGVybiBIVEFCICpzaG1lbV9oYXNoX21ha2VfaW1wbChjb25zdCBjaGFyICpu YW1lLCBpbnQ2NCBpbml0X3NpemUsIGludDY0IG1heF9zaXplLAorCQkJCQkJCQkgIFNpemUga2V5 c2l6ZSwgU2l6ZSBlbnRyeXNpemUsIGJvb2wgc3RyaW5nX2tleSwKKwkJCQkJCQkJICBjb25zdCBI QVNIT1BUUyAqb3B0cyk7CisKIC8qIGlwY2kuYyAqLwogZXh0ZXJuIHZvaWQgUmVxdWVzdEFkZGlu U2htZW1TcGFjZShTaXplIHNpemUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9o c2VhcmNoLmggYi9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKaW5kZXggY2RjNTMwZmI3MzIu LjcxYzk3ODAxMzJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oCkBAIC0xNSw2ICsxNSw5IEBACiAjZGVmaW5l IEhTRUFSQ0hfSAogCiAKKy8qIEhhc2ggdGFibGUgY29udHJvbCBzdHJ1Y3QgaXMgYW4gb3BhcXVl IHR5cGUga25vd24gb25seSB3aXRoaW4gZHluYWhhc2guYyAqLwordHlwZWRlZiBzdHJ1Y3QgSFRB QiBIVEFCOworCiAvKgogICogSGFzaCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoaXMgc2lnbmF0dXJl LgogICovCkBAIC00Myw2ICs0NiwxNTYgQEAgdHlwZWRlZiB2b2lkICooKkhhc2hDb3B5RnVuYykg KHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgU2l6ZSBrZXlzaXplKTsKICAqLwogdHlwZWRl ZiB2b2lkICooKkhhc2hBbGxvY0Z1bmMpIChTaXplIHJlcXVlc3QpOwogCisvKgorICogSGFzaCBv cHRpb25zIGZvciBoYXNoX21ha2VfZXh0IGFuZCBzaG1lbV9oYXNoX21ha2VfZXh0IG1hY3Jvcy4K KyAqIENvbnRhaW5zIGxlc3MgY29tbW9ubHkgbmVlZGVkIG9wdGlvbnMgdGhhdCBhcmVuJ3QgY292 ZXJlZCBieSB0aGUgYmFzaWMgbWFjcm9zLgorICogQWxsIGZpZWxkcyBkZWZhdWx0IHRvIE5VTEwv MC9mYWxzZSB3aGVuIHplcm8taW5pdGlhbGl6ZWQuCisgKi8KK3R5cGVkZWYgc3RydWN0IEhBU0hP UFRTCit7CisJSGFzaFZhbHVlRnVuYyBoYXNoOwkJCS8qIGN1c3RvbSBoYXNoIGZ1bmN0aW9uIChO VUxMIGZvciBkZWZhdWx0KSAqLworCUhhc2hDb21wYXJlRnVuYyBtYXRjaDsJCS8qIGN1c3RvbSBj b21wYXJpc29uIGZ1bmN0aW9uIChOVUxMIGZvcgorCQkJCQkJCQkgKiBkZWZhdWx0KSAqLworCUhh c2hDb3B5RnVuYyBrZXljb3B5OwkJLyogY3VzdG9tIGtleSBjb3B5IGZ1bmN0aW9uIChOVUxMIGZv ciBkZWZhdWx0KSAqLworCUhhc2hBbGxvY0Z1bmMgYWxsb2M7CQkvKiBjdXN0b20gYWxsb2NhdG9y IChOVUxMIGZvciBkZWZhdWx0KSAqLworCWludDY0CQludW1fcGFydGl0aW9uczsgLyogcGFydGl0 aW9uIGNvdW50ICgwIGZvciBub25lKSAqLworCWJvb2wJCWZpeGVkX3NpemU7CQkvKiBpZiB0cnVl LCBoYXNoIHRhYmxlIGNhbm5vdCBncm93ICovCisJYm9vbAkJZm9yY2VfYmxvYnM7CS8qIGlmIHRy dWUsIHVzZSBIQVNIX0JMT0JTIGV2ZW4gZm9yIHN0cmluZworCQkJCQkJCQkgKiB0eXBlcyAqLwor fSBIQVNIT1BUUzsKKworLyoKKyAqIEhlbHBlcnMgdG8gZGV0ZWN0IGlmIGEgdHlwZSBzaG91bGQg YmUgaGFzaGVkIGFzIGEgc3RyaW5nLgorICoKKyAqIFN0cmluZyB0eXBlcyBpbmNsdWRlOiBjaGFy IGFycmF5cyBhbmQgTmFtZURhdGEuCisgKiBFdmVyeXRoaW5nIGVsc2UgaXMgdHJlYXRlZCBhcyBh IGJpbmFyeSBibG9iIChIQVNIX0JMT0JTKS4KKyAqLworI2RlZmluZSBIQVNIX1BUUl9BU19TVFJJ TkcocHRyLCBzaXplKSBcCisJKHBnX2V4cHJfaGFzX3R5cGVfcCgocHRyKSwgY2hhcigqKVtzaXpl XSkgfHwgcGdfZXhwcl9oYXNfdHlwZV9wKChwdHIpLCBOYW1lRGF0YSAqKSkKKyNkZWZpbmUgSEFT SF9LRVlfQVNfU1RSSU5HKGVudHJ5dHlwZSwga2V5bWVtYmVyKSBcCisJSEFTSF9QVFJfQVNfU1RS SU5HKCYoKGVudHJ5dHlwZSAqKTApLT5rZXltZW1iZXIsIFwKKwkJCQkJICAgc2l6ZW9mKCgoZW50 cnl0eXBlICopMCktPmtleW1lbWJlcikpCisjZGVmaW5lIEhBU0hfVFlQRV9BU19TVFJJTkcodHlw ZSkgXAorCUhBU0hfUFRSX0FTX1NUUklORyhwZ19udWxscHRyX29mKHR5cGUpLCBzaXplb2YodHlw ZSkpCisKKy8qCisgKiBDcmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggbWluaW1hbCBib2lsZXJwbGF0 ZS4KKyAqCisgKiBUaGlzIGlzIHRoZSBzaW1wbGVzdCB3YXkgdG8gY3JlYXRlIGEgaGFzaCB0YWJs ZS4gSXQ6CisgKiAtIERlcml2ZXMga2V5c2l6ZSBmcm9tIHRoZSBrZXltZW1iZXIncyBhY3R1YWwg dHlwZQorICogLSBEZXJpdmVzIGVudHJ5c2l6ZSBmcm9tIHRoZSBlbnRyeXR5cGUKKyAqIC0gQXV0 b21hdGljYWxseSBjaG9vc2VzIEhBU0hfU1RSSU5HUyBvciBIQVNIX0JMT0JTIGJhc2VkIG9uIGtl eSB0eXBlIChjaGFyIGFycmF5cyBhbmQgTmFtZURhdGEgYXJlIHRyZWF0ZWQgYXMgc3RyaW5ncykK KyAqIC0gVXNlcyBDdXJyZW50TWVtb3J5Q29udGV4dCAobm90IFRvcE1lbW9yeUNvbnRleHQpCisg KiAtIFZhbGlkYXRlcyB0aGF0IGtleW1lbWJlciBpcyBhdCBvZmZzZXQgMAorICoKKyAqIE5PVEU6 IElmIHlvdSB1c2UgY2hhcltOXSB0byBzdG9yZSBiaW5hcnkgZGF0YSB0aGF0IG1pZ2h0IGNvbnRh aW4gbnVsbCBieXRlcworICogYW5kL29yIGlzIG5vdCBudWxsIHRlcm1pbmF0ZWQsIHRoZSBhdXRv bWF0aWMgZGV0ZWN0aW9uIHdpbGwgaW5jb3JyZWN0bHkKKyAqIHRyZWF0IGl0IGFzIGEgc3RyaW5n IGFuZCB1c2Ugc3RyaW5nIGNvbXBhcmlzb24uIEluIHN1Y2ggY2FzZXMsIHVzZQorICogaGFzaF9t YWtlX2V4dCgpIHdpdGggLmZvcmNlX2Jsb2JzID0gdHJ1ZSB0byBvdmVycmlkZSB0aGUgYXV0b21h dGljCisgKiBkZXRlY3Rpb24uCisgKgorICogVXNhZ2U6CisgKiAgIHR5cGVkZWYgc3RydWN0IHsg T2lkIG9pZDsgY2hhciAqZGF0YTsgfSBNeUVudHJ5OworICogICBIVEFCICpoID0gaGFzaF9tYWtl KE15RW50cnksIG9pZCwgIm15IHRhYmxlIiwgNjQpOworICovCisjZGVmaW5lIGhhc2hfbWFrZShl bnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0pIFwKKwloYXNoX21ha2VfY3h0KGVu dHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwgQ3VycmVudE1lbW9yeUNvbnRleHQp CisKKy8qCisgKiBMaWtlIGhhc2hfbWFrZSwgYnV0IGFsbG93cyBzcGVjaWZ5aW5nIGEgbWVtb3J5 IGNvbnRleHQuCisgKi8KKyNkZWZpbmUgaGFzaF9tYWtlX2N4dChlbnRyeXR5cGUsIGtleW1lbWJl ciwgdGFibmFtZSwgbmVsZW0sIG1jeHQpIFwKKwloYXNoX21ha2VfZXh0X2N4dChlbnRyeXR5cGUs IGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0sIE5VTEwsIG1jeHQpCisKKy8qCisgKiBIYXNoIHRh YmxlIHdpdGggY3VzdG9tIGhhc2ggYW5kL29yIG1hdGNoIGZ1bmN0aW9ucy4KKyAqCisgKiBMaWtl IGhhc2hfbWFrZSwgYnV0IGFjY2VwdHMgY3VzdG9tIGhhc2ggYW5kIG1hdGNoIGZ1bmN0aW9uIHBv aW50ZXJzLgorICogUGFzcyBOVUxMIGZvciBoYXNoZm4gdG8gdXNlIHRoZSBkZWZhdWx0IGhhc2gg KGJhc2VkIG9uIGtleSB0eXBlKSwKKyAqIG9yIE5VTEwgZm9yIG1hdGNoZm4gdG8gdXNlIHRoZSBk ZWZhdWx0IG1lbWNtcC1iYXNlZCBjb21wYXJpc29uLgorICovCisjZGVmaW5lIGhhc2hfbWFrZV9m bihlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0sIGhhc2hmbiwgbWF0Y2hmbikg XAorCWhhc2hfbWFrZV9mbl9jeHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVt LCBoYXNoZm4sIG1hdGNoZm4sIFwKKwkJCQkJIEN1cnJlbnRNZW1vcnlDb250ZXh0KQorI2RlZmlu ZSBoYXNoX21ha2VfZm5fY3h0KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwg aGFzaGZuLCBtYXRjaGZuLCBtY3h0KSBcCisJKFN0YXRpY0Fzc2VydEV4cHIob2Zmc2V0b2YoZW50 cnl0eXBlLCBrZXltZW1iZXIpID09IDAsIFwKKwkJCQkJICAja2V5bWVtYmVyICIgbXVzdCBiZSBm aXJzdCBtZW1iZXIgaW4gIiAjZW50cnl0eXBlKSwgXAorCSBoYXNoX21ha2VfZm5faW1wbCgodGFi bmFtZSksIChuZWxlbSksIFwKKwkJCQkJICAgc2l6ZW9mKCgoZW50cnl0eXBlICopMCktPmtleW1l bWJlciksIFwKKwkJCQkJICAgc2l6ZW9mKGVudHJ5dHlwZSksIFwKKwkJCQkJICAgSEFTSF9LRVlf QVNfU1RSSU5HKGVudHJ5dHlwZSwga2V5bWVtYmVyKSwgXAorCQkJCQkgICAoaGFzaGZuKSwgKG1h dGNoZm4pLCAobWN4dCkpKQorCisvKgorICogSGFzaCB0YWJsZSB3aXRoIGV4dGVuZGVkIG9wdGlv bnMgdmlhIEhBU0hPUFRTIHN0cnVjdC4KKyAqCisgKiBMaWtlIGhhc2hfbWFrZSwgYnV0IGFjY2Vw dHMgYWRkaXRpb25hbCBvcHRpb25zIHZpYSBIQVNIT1BUUyBzdHJ1Y3QgcG9pbnRlci4KKyAqIFBh c3MgTlVMTCBmb3Igb3B0cyB0byB1c2UgYWxsIGRlZmF1bHRzLgorICoKKyAqIEV4YW1wbGUgdXNh Z2U6CisgKiAgIEhBU0hPUFRTIG9wdHMgPSB7MH07CisgKiAgIG9wdHMuaGFzaCA9IG15X2hhc2hf ZnVuYzsKKyAqICAgb3B0cy5udW1fcGFydGl0aW9ucyA9IDE2OworICogICBIVEFCICpoID0gaGFz aF9tYWtlX2V4dChNeUVudHJ5LCBrZXksICJteSB0YWJsZSIsIDY0LCAmb3B0cyk7CisgKi8KKyNk ZWZpbmUgaGFzaF9tYWtlX2V4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0s IG9wdHMpIFwKKwloYXNoX21ha2VfZXh0X2N4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFt ZSwgbmVsZW0sIG9wdHMsIEN1cnJlbnRNZW1vcnlDb250ZXh0KQorCisjZGVmaW5lIGhhc2hfbWFr ZV9leHRfY3h0KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwgb3B0cywgbWN4 dCkgXAorCShTdGF0aWNBc3NlcnRFeHByKG9mZnNldG9mKGVudHJ5dHlwZSwga2V5bWVtYmVyKSA9 PSAwLCBcCisJCQkJCQkgI2tleW1lbWJlciAiIG11c3QgYmUgZmlyc3QgbWVtYmVyIGluICIgI2Vu dHJ5dHlwZSksIFwKKwloYXNoX21ha2VfaW1wbCggXAorCQkodGFibmFtZSksIChuZWxlbSksIFwK KwkJc2l6ZW9mKCgoZW50cnl0eXBlICopMCktPmtleW1lbWJlciksIFwKKwkJc2l6ZW9mKGVudHJ5 dHlwZSksIFwKKwkJSEFTSF9LRVlfQVNfU1RSSU5HKGVudHJ5dHlwZSwga2V5bWVtYmVyKSwgXAor CQkob3B0cyksIFwKKwkJKG1jeHQpKSkKKworCisvKgorICogQ3JlYXRlIGEgaGFzaCBzZXQgd2hl cmUgdGhlIGVudGlyZSBlbnRyeSBpcyB0aGUga2V5LiBUaGlzIGlzCisgKiBsaWtlIGhhc2hfbWFr ZSwgYnV0IHdoZXJlIHRoZSBrZXkgaXMgYWxzbyB0aGUgZW50cnkuCisgKi8KKyNkZWZpbmUgaGFz aHNldF9tYWtlKGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0pIFwKKwloYXNoc2V0X21ha2VfY3h0 KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIEN1cnJlbnRNZW1vcnlDb250ZXh0KQorI2RlZmlu ZSBoYXNoc2V0X21ha2VfY3h0KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIG1jeHQpIFwKKwlo YXNoc2V0X21ha2VfZXh0X2N4dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBOVUxMLCBtY3h0 KQorI2RlZmluZSBoYXNoc2V0X21ha2VfZm4oZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwgaGFz aGZuLCBtYXRjaGZuKSBcCisJaGFzaHNldF9tYWtlX2ZuX2N4dChlbnRyeXR5cGUsIHRhYm5hbWUs IG5lbGVtLCBoYXNoZm4sIG1hdGNoZm4sIFwKKwkJCQkJCQlDdXJyZW50TWVtb3J5Q29udGV4dCkK KyNkZWZpbmUgaGFzaHNldF9tYWtlX2ZuX2N4dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBo YXNoZm4sIG1hdGNoZm4sIG1jeHQpIFwKKwloYXNoX21ha2VfZm5faW1wbCgodGFibmFtZSksIChu ZWxlbSksIHNpemVvZihlbnRyeXR5cGUpLCBzaXplb2YoZW50cnl0eXBlKSwgXAorCQkJCQkJIEhB U0hfVFlQRV9BU19TVFJJTkcoZW50cnl0eXBlKSwgKGhhc2hmbiksIChtYXRjaGZuKSwgXAorCQkJ CQkJIG1jeHQpCisjZGVmaW5lIGhhc2hzZXRfbWFrZV9leHQoZW50cnl0eXBlLCB0YWJuYW1lLCBu ZWxlbSwgb3B0cykgXAorCWhhc2hzZXRfbWFrZV9leHRfY3h0KGVudHJ5dHlwZSwgdGFibmFtZSwg bmVsZW0sIG9wdHMsIFwKKwkJCQkJCQlDdXJyZW50TWVtb3J5Q29udGV4dCkKKyNkZWZpbmUgaGFz aHNldF9tYWtlX2V4dF9jeHQoZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwgb3B0cywgbWN4dCkg XAorCWhhc2hfbWFrZV9pbXBsKCh0YWJuYW1lKSwgKG5lbGVtKSwgc2l6ZW9mKGVudHJ5dHlwZSks IHNpemVvZihlbnRyeXR5cGUpLCBcCisJCQkJICAgSEFTSF9UWVBFX0FTX1NUUklORyhlbnRyeXR5 cGUpLCBvcHRzLCAobWN4dCkpCisKKy8qCisgKiBJbXBsZW1lbnRhdGlvbiBmdW5jdGlvbiBmb3Ig aGFzaF9tYWtlIG1hY3Jvcy4gTm90IG1lYW50IHRvIGJlIGNhbGxlZAorICogZGlyZWN0bHkuCisg KgorICogSWYgc3RyaW5nX2tleSBpcyB0cnVlLCB0aGUga2V5IGlzIHRyZWF0ZWQgYXMgYSBudWxs LXRlcm1pbmF0ZWQgc3RyaW5nLgorICogUGFzcyBOVUxMIGZvciBvcHRzIHRvIHVzZSBhbGwgZGVm YXVsdHMuCisgKi8KK2V4dGVybiBIVEFCICpoYXNoX21ha2VfaW1wbChjb25zdCBjaGFyICp0YWJu YW1lLCBpbnQ2NCBuZWxlbSwKKwkJCQkJCQlTaXplIGtleXNpemUsIFNpemUgZW50cnlzaXplLAor CQkJCQkJCWJvb2wgc3RyaW5nX2tleSwKKwkJCQkJCQljb25zdCBIQVNIT1BUUyAqb3B0cywKKwkJ CQkJCQlNZW1vcnlDb250ZXh0IG1jeHQpOworCisvKgorICogSW1wbGVtZW50YXRpb24gZnVuY3Rp b24gZm9yIGhhc2hfbWFrZV9mbiBtYWNyb3MuCisgKi8KK2V4dGVybiBIVEFCICpoYXNoX21ha2Vf Zm5faW1wbChjb25zdCBjaGFyICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwKKwkJCQkJCQkgICBTaXpl IGtleXNpemUsIFNpemUgZW50cnlzaXplLCBib29sIHN0cmluZ19rZXksCisJCQkJCQkJICAgSGFz aFZhbHVlRnVuYyBoYXNoZm4sIEhhc2hDb21wYXJlRnVuYyBtYXRjaGZuLAorCQkJCQkJCSAgIE1l bW9yeUNvbnRleHQgbWN4dCk7CisKIC8qCiAgKiBIQVNIRUxFTUVOVCBpcyB0aGUgcHJpdmF0ZSBw YXJ0IG9mIGEgaGFzaHRhYmxlIGVudHJ5LiAgVGhlIGNhbGxlcidzIGRhdGEKICAqIGZvbGxvd3Mg dGhlIEhBU0hFTEVNRU5UIHN0cnVjdHVyZSAob24gYSBNQVhBTElHTidkIGJvdW5kYXJ5KS4gIFRo ZSBoYXNoIGtleQpAQCAtNTcsMTEgKzIxMCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBIQVNIRUxFTUVO VAogLyogSGFzaCB0YWJsZSBoZWFkZXIgc3RydWN0IGlzIGFuIG9wYXF1ZSB0eXBlIGtub3duIG9u bHkgd2l0aGluIGR5bmFoYXNoLmMgKi8KIHR5cGVkZWYgc3RydWN0IEhBU0hIRFIgSEFTSEhEUjsK IAotLyogSGFzaCB0YWJsZSBjb250cm9sIHN0cnVjdCBpcyBhbiBvcGFxdWUgdHlwZSBrbm93biBv bmx5IHdpdGhpbiBkeW5haGFzaC5jICovCi10eXBlZGVmIHN0cnVjdCBIVEFCIEhUQUI7Ci0KLS8q IFBhcmFtZXRlciBkYXRhIHN0cnVjdHVyZSBmb3IgaGFzaF9jcmVhdGUgKi8KLS8qIE9ubHkgdGhv c2UgZmllbGRzIGluZGljYXRlZCBieSBoYXNoX2ZsYWdzIG5lZWQgYmUgc2V0ICovCisvKgorICog UGFyYW1ldGVyIGRhdGEgc3RydWN0dXJlIGZvciBoYXNoX2NyZWF0ZSAod2hpY2ggaXMgdGhlIGxv dy1sZXZlbCBtZXRob2Qgb2YKKyAqIGluaXRpYWxpemluZyBoYXNoIHRhYmxlcywgaGFzaF9tYWtl IG1hY3JvcyBhcmUgcHJlZmVycmVkKQorICogT25seSB0aG9zZSBmaWVsZHMgaW5kaWNhdGVkIGJ5 IGhhc2hfZmxhZ3MgbmVlZCBiZSBzZXQKKyAqLwogdHlwZWRlZiBzdHJ1Y3QgSEFTSENUTAogewog CS8qIFVzZWQgaWYgSEFTSF9QQVJUSVRJT04gZmxhZyBpcyBzZXQ6ICovCkBAIC0xMzEsNiArMjg0 LDkgQEAgdHlwZWRlZiBzdHJ1Y3QKICAqLwogZXh0ZXJuIEhUQUIgKmhhc2hfY3JlYXRlKGNvbnN0 IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLAogCQkJCQkJIGNvbnN0IEhBU0hDVEwgKmluZm8s IGludCBmbGFncyk7CitleHRlcm4gdm9pZCBoYXNoX29wdHNfaW5pdChIQVNIQ1RMICpjdGwsIGlu dCAqZmxhZ3MsCisJCQkJCQkgICBTaXplIGtleXNpemUsIFNpemUgZW50cnlzaXplLCBib29sIHN0 cmluZ19rZXksCisJCQkJCQkgICBjb25zdCBIQVNIT1BUUyAqb3B0cyk7CiBleHRlcm4gdm9pZCBo YXNoX2Rlc3Ryb3koSFRBQiAqaGFzaHApOwogZXh0ZXJuIHZvaWQgaGFzaF9zdGF0cyhjb25zdCBj aGFyICpjYWxsZXIsIEhUQUIgKmhhc2hwKTsKIGV4dGVybiB2b2lkICpoYXNoX3NlYXJjaChIVEFC ICpoYXNocCwgY29uc3Qgdm9pZCAqa2V5UHRyLCBIQVNIQUNUSU9OIGFjdGlvbiwKZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggMDllN2YxZDQyMGUuLmY3ZmI4NGUxODUzIDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtMTE1NSw2ICsxMTU1LDcgQEAgSEFTSEJVQ0tFVAogSEFTSENU TAogSEFTSEVMRU1FTlQKIEhBU0hIRFIKK0hBU0hPUFRTCiBIQVNIU0VHTUVOVAogSEFTSF9TRVFf U1RBVFVTCiBIRQoKYmFzZS1jb21taXQ6IGU1YTVlMGE5MDc1MGQ2NjVjYWI0MTczMjJiOWY4NWM4 MDY0MzBkODUKLS0gCjIuNTIuMAoK --d56ff9939aba4b3c25f60e99a71ae3e368c16671eeb350a214b2e014d44b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v6-0002-Add-foreach_hash-macro.patch Content-Type: text/x-patch; charset=utf-8; name=v6-0002-Add-foreach_hash-macro.patch RnJvbSAxNWFmNjE2ODJhM2E1ZDZmODJmYzlmYmI4NjQyMjZkOTNjNGJkZDc3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDAgKzAxMDAKU3ViamVjdDogW1BBVENIIHY2 IDIvNV0gQWRkIGZvcmVhY2hfaGFzaCBtYWNybwoKRm9yIGxpc3RzIHdlJ3ZlIGhhZCBhIG5ldyBm b3JlYWNoIHN0eWxlIG1hY3JvcyBzaW5jZSAxNGRkMGYyN2Q3LiBUaGlzCmFkZHMgYSBzaW1pbGFy IG1hY3JvIGZvciBoYXNoIHRhYmxlcy4gVGhpcyBuZXcgZm9yZWFjaF9oYXNoIG1hY3JvIG1ha2Vz Cml0ZXJhdGluZyBvdmVyIHRoZSBpdGVtcyBpbiBhbiBIVEFCIGFzIHNpbXBsZSBhcyBpdGVyYXRp bmcgb3ZlciB0aGUKaXRlbXMgaW4gYSBMaXN0LiBUaGUgb25seSBhZGRpdGlvbmFsIHRoaW5nIHRv IGtlZXAgaW4gbWluZCBpcyB0aGF0IHdoZW4KZXhpdGluZyB0aGUgbG9vcCBlYXJseSB5b3UgbmVl ZCB0byBjYWxsIGZvcmVhY2hfaGFzaF90ZXJtLgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2hhc2gv ZHluYWhhc2guYyB8IDE1ICsrKysrKysrLQogc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oICAg ICAgIHwgNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2Vk LCA3MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvaGFzaC9keW5haGFzaC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFz aC5jCmluZGV4IGMwZmFhYWY2MWRhLi4yOWZjOGY0NjBiYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvaGFzaC9keW5haGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHlu YWhhc2guYwpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgaGFzaF9nZXRfbnVtX2VudHJpZXMoSFRBQiAq aGFzaHApCiB9CiAKIC8qCi0gKiBoYXNoX3NlcV9pbml0L19zZWFyY2gvX3Rlcm0KKyAqIGhhc2hf c2VxX2luaXQvX25ldy9fc2VhcmNoL190ZXJtCiAgKgkJCVNlcXVlbnRpYWxseSBzZWFyY2ggdGhy b3VnaCBoYXNoIHRhYmxlIGFuZCByZXR1cm4KICAqCQkJYWxsIHRoZSBlbGVtZW50cyBvbmUgYnkg b25lLCByZXR1cm4gTlVMTCB3aGVuIG5vIG1vcmUuCiAgKgpAQCAtMTQ5Niw2ICsxNDk2LDE5IEBA IGhhc2hfc2VxX2luaXQoSEFTSF9TRVFfU1RBVFVTICpzdGF0dXMsIEhUQUIgKmhhc2hwKQogCQly ZWdpc3Rlcl9zZXFfc2NhbihoYXNocCk7CiB9CiAKKy8qCisgKiBTYW1lIGFzIGhhc2hfc2VxX2lu aXQoKSwgYnV0IHJldHVybnMgdGhlIHN0YXR1cyBzdHJ1Y3QgaW5zdGVhZCBvZiB0YWtpbmcgYQor ICogcG9pbnRlci4KKyAqLworSEFTSF9TRVFfU1RBVFVTCitoYXNoX3NlcV9uZXcoSFRBQiAqaGFz aHApCit7CisJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKKworCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgaGFzaHApOworCXJldHVybiBzdGF0dXM7Cit9CisKIC8qCiAgKiBTYW1lIGFzIGFib3ZlIGJ1 dCBzY2FuIGJ5IHRoZSBnaXZlbiBoYXNoIHZhbHVlLgogICogU2VlIGFsc28gaGFzaF9zZXFfc2Vh cmNoKCkuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmggYi9zcmMvaW5j bHVkZS91dGlscy9oc2VhcmNoLmgKaW5kZXggNzFjOTc4MDEzMmYuLjMzZTIyOGUzMmU1IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvaHNlYXJjaC5oCkBAIC0yNzksNiArMjc5LDYxIEBAIHR5cGVkZWYgc3RydWN0CiAJdWludDMy CQloYXNodmFsdWU7CQkvKiBoYXNodmFsdWUgdG8gc3RhcnQgc2Vxc2NhbiBvdmVyIGhhc2ggKi8K IH0gSEFTSF9TRVFfU1RBVFVTOwogCisvKgorICogZm9yZWFjaF9oYXNoIC0gaXRlcmF0ZSBvdmVy IGFsbCBlbnRyaWVzIGluIGEgaGFzaCB0YWJsZQorICoKKyAqIFRoaXMgbWFjcm8gc2ltcGxpZmll cyBoYXNoIHRhYmxlIGl0ZXJhdGlvbiBieSBjb21iaW5pbmcgaGFzaF9zZXFfaW5pdAorICogYW5k IGhhc2hfc2VxX3NlYXJjaCBpbnRvIGEgc2luZ2xlIGZvci1sb29wIGNvbnN0cnVjdC4KKyAqCisg KiBVc2FnZToKKyAqICAgZm9yZWFjaF9oYXNoKE15RW50cnksIGVudHJ5LCBteV9oYXNodGFibGUp CisgKiAgIHsKKyAqICAgICAgIC8vIHVzZSBlbnRyeQorICogICB9CisgKgorICogVGhpcyByZXBs YWNlcyB0aGUgbW9yZSB2ZXJib3NlIHBhdHRlcm46CisgKiAgIEhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7CisgKiAgIE15RW50cnkgKmVudHJ5OworICogICBoYXNoX3NlcV9pbml0KCZzdGF0dXMsIG15 X2hhc2h0YWJsZSk7CisgKiAgIHdoaWxlICgoZW50cnkgPSAoTXlFbnRyeSAqKSBoYXNoX3NlcV9z ZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisgKiAgIHsKKyAqICAgICAgIC8vIHVzZSBlbnRyeQor ICogICB9CisgKgorICogRm9yIGVhcmx5IHRlcm1pbmF0aW9uLCB1c2UgZm9yZWFjaF9oYXNoX3Rl cm0oKSBiZWZvcmUgYnJlYWs6CisgKiAgIGZvcmVhY2hfaGFzaChNeUVudHJ5LCBlbnRyeSwgbXlf aGFzaHRhYmxlKQorICogICB7CisgKiAgICAgICBpZiAoZm91bmRfaXQpCisgKiAgICAgICB7Cisg KiAgICAgICAgICAgZm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOworICogICAgICAgICAgIGJyZWFr OworICogICAgICAgfQorICogICB9CisgKi8KKyNkZWZpbmUgZm9yZWFjaF9oYXNoKHR5cGUsIHZh ciwgaHRhYikgXAorCWZvciAodHlwZSAqdmFyID0gTlVMTCwgKnZhciMjX19vdXRlcmxvb3AgPSAo dHlwZSAqKSAxOyBcCisJCSB2YXIjI19fb3V0ZXJsb29wOyBcCisJCSB2YXIjI19fb3V0ZXJsb29w ID0gMCkgXAorCQlmb3IgKEhBU0hfU0VRX1NUQVRVUyB2YXIjI19fc3RhdHVzID0gaGFzaF9zZXFf bmV3KGh0YWIpOyBcCisJCQkgKHZhciA9ICh0eXBlICopIGhhc2hfc2VxX3NlYXJjaCgmdmFyIyNf X3N0YXR1cykpICE9IE5VTEw7ICkKKworLyoKKyAqIGZvcmVhY2hfaGFzaF90ZXJtIC0gdGVybWlu YXRlIGEgZm9yZWFjaF9oYXNoIGxvb3AgZWFybHkKKyAqCisgKiBDYWxsIHRoaXMgYmVmb3JlICdi cmVhaycgdG8gcHJvcGVybHkgY2xlYW4gdXAgdGhlIGhhc2ggc2Nhbi4KKyAqLworI2RlZmluZSBm b3JlYWNoX2hhc2hfdGVybSh2YXIpIGhhc2hfc2VxX3Rlcm0oJnZhciMjX19zdGF0dXMpCisKKy8q CisgKiBmb3JlYWNoX2hhc2hfcmVzdGFydCAtIHJlc3RhcnQgaXRlcmF0aW9uIGZyb20gdGhlIGJl Z2lubmluZworICoKKyAqIFVzZSB3aGVuIG1vZGlmaWNhdGlvbnMgZHVyaW5nIGl0ZXJhdGlvbiBt YXkgaGF2ZSBpbnZhbGlkYXRlZCB0aGUgc2Nhbi4KKyAqIFRoZSBuZXh0IGl0ZXJhdGlvbiB3aWxs IHN0YXJ0IGZyb20gdGhlIGZpcnN0IGVudHJ5IGFnYWluLgorICovCisjZGVmaW5lIGZvcmVhY2hf aGFzaF9yZXN0YXJ0KHZhciwgaHRhYikgXAorCShoYXNoX3NlcV90ZXJtKCZ2YXIjI19fc3RhdHVz KSwgXAorCSBoYXNoX3NlcV9pbml0KCZ2YXIjI19fc3RhdHVzLCBodGFiKSkKKwogLyoKICAqIHBy b3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBkeW5haGFzaC5jCiAgKi8KQEAgLTI5OSw2ICszNTQs NyBAQCBleHRlcm4gYm9vbCBoYXNoX3VwZGF0ZV9oYXNoX2tleShIVEFCICpoYXNocCwgdm9pZCAq ZXhpc3RpbmdFbnRyeSwKIAkJCQkJCQkJIGNvbnN0IHZvaWQgKm5ld0tleVB0cik7CiBleHRlcm4g aW50NjQgaGFzaF9nZXRfbnVtX2VudHJpZXMoSFRBQiAqaGFzaHApOwogZXh0ZXJuIHZvaWQgaGFz aF9zZXFfaW5pdChIQVNIX1NFUV9TVEFUVVMgKnN0YXR1cywgSFRBQiAqaGFzaHApOworZXh0ZXJu IEhBU0hfU0VRX1NUQVRVUyBoYXNoX3NlcV9uZXcoSFRBQiAqaGFzaHApOwogZXh0ZXJuIHZvaWQg aGFzaF9zZXFfaW5pdF93aXRoX2hhc2hfdmFsdWUoSEFTSF9TRVFfU1RBVFVTICpzdGF0dXMsCiAJ CQkJCQkJCQkJICBIVEFCICpoYXNocCwKIAkJCQkJCQkJCQkgIHVpbnQzMiBoYXNodmFsdWUpOwot LSAKMi41Mi4wCgo= --d56ff9939aba4b3c25f60e99a71ae3e368c16671eeb350a214b2e014d44b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v6-0003-Use-hash_make-macros-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v6-0003-Use-hash_make-macros-throughout-the-codebase.patch RnJvbSA5ZTE3OGZmMjI0NTEwZTYwNDZmNjUyMDBlYjQ1NDczYTI0ZDU3ZjZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzY6MTkgKzAxMDAKU3ViamVjdDogW1BBVENIIHY2 IDMvNV0gVXNlIGhhc2hfbWFrZSBtYWNyb3MgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UKClRoaXMg c2hvd3MgaG93IG91ciBjb2RlIGJhc2UgbG9va3Mgd2hlbiB1c2luZyB0aGUgbmV3IEFQSXMuIFRo aXMgaGFzCnNvbWUgdHlwZXNhZmV0eSwgcmVhZGFiaWxpdHkgYW5kIG1haW50YW5hYmlsaXR5IGJl bmVmaXRzLCBidXQgaXQgYWxzbwppbnRyb2R1Y2VzIHNvbWUgYmFja3BhdGNoaW5nIHByb2JsZW1z LiBUaGVzZSBiYWNrcGF0Y2hpbmcgcHJvYmxlbXMKY2Fubm90IGJlIHJlc29sdmVkIGJ5IGJhY2tw b3J0aW5nIHRoZSBuZXcgaGFzaF9tYWtlIG1hY3JvcywgYmVjYXVzZSBzb21lCm9mIHRoZW0gcmVx dWlyZSBDMTEgKHdoaWNoIHdlIG9ubHkgcmVxdWlyZSBvbiBtYXN0ZXIgZm9yIG5vdykuIEkgdGhp bmsKaXQncyB1bmxpa2VseSB0aGF0IHdlJ2xsIG5lZWQgdG8gYmFja3BhdGNoIHRoaW5ncyBpbiBj b2RlIHRoYXQgY3JlYXRlcwpoYXNodGFibGVzIHRob3VnaCwgc28gaXQgY291bGQgc3RpbGwgYmUg d29ydGggaXQgdG8gZG8gdGhpcyBjb21wbGV0ZQpyZWZhY3Rvci4KCkF0IHRoZSB2ZXJ5IGxlYXN0 IHdlIHNob3VsZCBjaG9vc2UgYSBmZXcgcGxhY2VzIHdoZXJlIHdlIHVzZSB0aGUgbmV3Cm1hY3Jv cyB0byBtYWtlIHN1cmUgdGhleSBoYXZlIGNvdmVyYWdlLgotLS0KIGNvbnRyaWIvZGJsaW5rL2Ri bGluay5jICAgICAgICAgICAgICAgICAgICAgICB8IDEwICstLQogLi4uL3BnX3N0YXRfc3RhdGVt ZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgMTAgKy0tCiBjb250cmliL3BnX3RyZ20vdHJn bV9yZWdleHAuYyAgICAgICAgICAgICAgICAgfCAgOSArLS0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3 L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8IDEwICstLQogY29udHJpYi9wb3N0Z3Jlc19mZHcv c2hpcHBhYmxlLmMgICAgICAgICAgICAgIHwgMTAgKystCiBjb250cmliL3RhYmxlZnVuYy90YWJs ZWZ1bmMuYyAgICAgICAgICAgICAgICAgfCAxNyArKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2Nv bW1vbi9oZWFwdHVwbGUuYyAgICAgICAgIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkLmMgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkYnVmZmVycy5jICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFz aC9oYXNocGFnZS5jICAgICAgICAgICAgfCAxMyArLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9yZXdyaXRlaGVhcC5jICAgICAgICAgfCAzOSArKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYyAgIHwgIDggKy0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9ndXRpbHMuYyAgICAgICAgfCAxMyArKy0tCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX2VudW0uYyAgICAgICAgICAgICAgICAgfCAyNCArKy0tLS0tCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX2luaGVyaXRzLmMgICAgICAgICAgICAgfCAxMSArLS0tCiBzcmMvYmFja2VuZC9j YXRhbG9nL3N0b3JhZ2UuYyAgICAgICAgICAgICAgICAgfCAyMSArKy0tLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2FzeW5jLmMgICAgICAgICAgICAgICAgICB8IDE0ICsrLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8IDEyICstLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgICAgICAgICAgICB8IDEwICstLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgMTYgKy0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDEwICstLQogc3JjL2JhY2tlbmQv bm9kZXMvZXh0ZW5zaWJsZS5jICAgICAgICAgICAgICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgICAgICAgICAgfCAxNyArKy0tLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYyAgICAgICAgIHwgIDkgKy0tCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgICAgICAgICAgfCAxMyArLS0tCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2Vfb3Blci5jICAgICAgICAgICAgICAgfCAxMCArKy0KIHNyYy9iYWNrZW5kL3Bh cnRpdGlvbmluZy9wYXJ0ZGVzYy5jICAgICAgICAgICB8ICA5ICstLQogc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgMjIgKystLS0tLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAgICAgICAgIHwgMTIgKy0tLQogLi4uL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jICAgIHwgMjIgKystLS0tLQogLi4uL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgICAgIHwgMjkgKystLS0tLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8IDEwICsrLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgMTEgKy0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3RhYmxlLmMgICAgICAgIHwgMTUgKystLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICAgICAgICAgICB8IDExICsrLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMgICAgICAgICB8IDExICstLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQuYyAgICAgICAgICAgICB8ICA4ICstLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyAgICAgICAgICAgICAgIHwgMzMgKysrKysrKy0tLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgMjAgKystLS0t CiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jICAgICAgICAgICAgICAgfCA1NSArKysr Ky0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMgICAgICAgICAg ICAgfCAgOCArLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAgICAgICAg ICB8IDY2ICsrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdy LmMgICAgICAgICAgICAgICB8IDEwICsrLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMu YyAgICAgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFs eXplLmMgICAgICAgICAgIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jICAgICAgIHwgMjMgKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5 X3R5cGFuYWx5emUuYyAgICAgIHwgMjMgKystLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b24uYyAgICAgICAgICAgICAgICAgIHwgMTUgKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uZnVuY3MuYyAgICAgICAgICAgICB8IDIwICsrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L21jeHRmdW5jcy5jICAgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JpX3RyaWdnZXJzLmMgICAgICAgICAgIHwgMjkgKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8IDIzICsrLS0tLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2F0dG9wdGNhY2hlLmMgICAgICAgICB8IDE2ICsrLS0tCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9ldnRjYWNoZS5jICAgICAgICAgICAgfCAgOSArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2Z1bmNjYWNoZS5jICAgICAgICAgICB8IDE0ICsrLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8IDE5ICsrLS0tLQogc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jICAgIHwgIDkgKy0tCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9zcGNjYWNoZS5jICAgICAgICAgICAgfCAgOSArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3RzX2NhY2hlLmMgICAgICAgICAgICB8IDI3ICsrKy0tLS0tCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS90eXBjYWNoZS5jICAgICAgICAgICAgfCAzMyArKysrLS0tLS0tCiBzcmMv YmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMgICAgICAgICAgICAgICAgfCAxMiArKy0tCiBzcmMv YmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYyAgICAgICAgICAgICAgICAgfCAxMSArLS0tCiBzcmMv YmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAxNCArKy0tCiBzcmMv YmFja2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2ludC5jICAgICAgfCAxNCArKy0tCiBzcmMv YmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jICAgICAgICAgICAgfCAxMCArLS0KIHNyYy9i YWNrZW5kL3V0aWxzL3RpbWUvY29tYm9jaWQuYyAgICAgICAgICAgICB8IDEzICstLS0KIHNyYy9w bC9wbHBlcmwvcGxwZXJsLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDMyICsrKy0tLS0tLQog c3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyAgICAgICAgICAgICAgICAgIHwgMzIgKysrKy0t LS0tCiBzcmMvcGwvcGxweXRob24vcGxweV9wbHB5bW9kdWxlLmMgICAgICAgICAgICAgfCAgOSAr Ky0KIHNyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jICAgICAgICAgICAgICB8ICA5ICst LQogc3JjL3BsL3RjbC9wbHRjbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTkgKyst LS0tCiBzcmMvdGltZXpvbmUvcGd0ei5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMiAr LS0tCiA3MyBmaWxlcyBjaGFuZ2VkLCAzNzEgaW5zZXJ0aW9ucygrKSwgODM1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZGJsaW5rL2RibGluay5jIGIvY29udHJpYi9kYmxpbmsv ZGJsaW5rLmMKaW5kZXggOGNiMzE2NjQ5NWMuLjE5MjQxOGRmNGFmIDEwMDY0NAotLS0gYS9jb250 cmliL2RibGluay9kYmxpbmsuYworKysgYi9jb250cmliL2RibGluay9kYmxpbmsuYwpAQCAtMjU0 MCwxMyArMjU0MCw5IEBAIGdldENvbm5lY3Rpb25CeU5hbWUoY29uc3QgY2hhciAqbmFtZSkKIHN0 YXRpYyBIVEFCICoKIGNyZWF0ZUNvbm5IYXNoKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCi0J Y3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKHJlbW90 ZUNvbm5IYXNoRW50KTsKLQotCXJldHVybiBoYXNoX2NyZWF0ZSgiUmVtb3RlIENvbiBoYXNoIiwg TlVNQ09OTiwgJmN0bCwKLQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwlyZXR1 cm4gaGFzaF9tYWtlX2N4dChyZW1vdGVDb25uSGFzaEVudCwgbmFtZSwKKwkJCQkJCSAiUmVtb3Rl IENvbiBoYXNoIiwgTlVNQ09OTiwKKwkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogc3Rh dGljIHJlbW90ZUNvbm4gKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv cGdfc3RhdF9zdGF0ZW1lbnRzLmMgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0 X3N0YXRlbWVudHMuYwppbmRleCBhZGM0OTNlOTg1MC4uNDcyMjdmODU3MjEgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC01MTcsNyAr NTE3LDYgQEAgc3RhdGljIHZvaWQKIHBnc3Nfc2htZW1fc3RhcnR1cCh2b2lkKQogewogCWJvb2wJ CWZvdW5kOwotCUhBU0hDVEwJCWluZm87CiAJRklMRQkgICAqZmlsZSA9IE5VTEw7CiAJRklMRQkg ICAqcWZpbGUgPSBOVUxMOwogCXVpbnQzMgkJaGVhZGVyOwpAQCAtNTU3LDEyICs1NTYsOSBAQCBw Z3NzX3NobWVtX3N0YXJ0dXAodm9pZCkKIAkJcGdzcy0+c3RhdHMuc3RhdHNfcmVzZXQgPSBHZXRD dXJyZW50VGltZXN0YW1wKCk7CiAJfQogCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKHBnc3NIYXNo S2V5KTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihwZ3NzRW50cnkpOwotCXBnc3NfaGFzaCA9 IFNobWVtSW5pdEhhc2goInBnX3N0YXRfc3RhdGVtZW50cyBoYXNoIiwKLQkJCQkJCQkgIHBnc3Nf bWF4LCBwZ3NzX21heCwKLQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFT SF9CTE9CUyk7CisJcGdzc19oYXNoID0gc2htZW1faGFzaF9tYWtlKHBnc3NFbnRyeSwga2V5LAor CQkJCQkJCQkicGdfc3RhdF9zdGF0ZW1lbnRzIGhhc2giLAorCQkJCQkJCQlwZ3NzX21heCwgcGdz c19tYXgpOwogCiAJTFdMb2NrUmVsZWFzZShBZGRpblNobWVtSW5pdExvY2spOwogCmRpZmYgLS1n aXQgYS9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYyBiL2NvbnRyaWIvcGdfdHJnbS90cmdt X3JlZ2V4cC5jCmluZGV4IDFkMWI1ZmUzMDRkLi5lY2Q0ZDY3Nzk0OCAxMDA2NDQKLS0tIGEvY29u dHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fcmVn ZXhwLmMKQEAgLTg5Myw3ICs4OTMsNiBAQCBjb252ZXJ0UGdXY2hhcihwZ193Y2hhciBjLCB0cmdt X21iX2NoYXIgKnJlc3VsdCkKIHN0YXRpYyB2b2lkCiB0cmFuc2Zvcm1HcmFwaChUcmdtTkZBICp0 cmdtTkZBKQogewotCUhBU0hDVEwJCWhhc2hDdGw7CiAJVHJnbVN0YXRlS2V5IGluaXRrZXk7CiAJ VHJnbVN0YXRlICAqaW5pdHN0YXRlOwogCUxpc3RDZWxsICAgKmxjOwpAQCAtOTA1LDEzICs5MDQs NyBAQCB0cmFuc2Zvcm1HcmFwaChUcmdtTkZBICp0cmdtTkZBKQogCXRyZ21ORkEtPm92ZXJmbG93 ZWQgPSBmYWxzZTsKIAogCS8qIENyZWF0ZSBoYXNodGFibGUgZm9yIHN0YXRlcyAqLwotCWhhc2hD dGwua2V5c2l6ZSA9IHNpemVvZihUcmdtU3RhdGVLZXkpOwotCWhhc2hDdGwuZW50cnlzaXplID0g c2l6ZW9mKFRyZ21TdGF0ZSk7Ci0JaGFzaEN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7 Ci0JdHJnbU5GQS0+c3RhdGVzID0gaGFzaF9jcmVhdGUoIlRyaWdyYW0gTkZBIiwKLQkJCQkJCQkJ ICAxMDI0LAotCQkJCQkJCQkgICZoYXNoQ3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hf QkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXRyZ21ORkEtPnN0YXRlcyA9IGhhc2hfbWFrZShUcmdt U3RhdGUsIHN0YXRlS2V5LCAiVHJpZ3JhbSBORkEiLCAxMDI0KTsKIAl0cmdtTkZBLT5uc3RhdGVz ID0gMDsKIAogCS8qIENyZWF0ZSBpbml0aWFsIHN0YXRlOiBhbWJpZ3VvdXMgcHJlZml4LCBORkEn cyBpbml0aWFsIHN0YXRlICovCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25u ZWN0aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKaW5kZXggNDg3YTFh MjMxNzAuLjVjNzdjOWVjZGU1IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25u ZWN0aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCkBAIC0yMTQs MTcgKzIxNCwxMyBAQCBHZXRDb25uZWN0aW9uKFVzZXJNYXBwaW5nICp1c2VyLCBib29sIHdpbGxf cHJlcF9zdG10LCBQZ0Zkd0Nvbm5TdGF0ZSAqKnN0YXRlKQogCS8qIEZpcnN0IHRpbWUgdGhyb3Vn aCwgaW5pdGlhbGl6ZSBjb25uZWN0aW9uIGNhY2hlIGhhc2h0YWJsZSAqLwogCWlmIChDb25uZWN0 aW9uSGFzaCA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJY3RsOwotCiAJCWlmIChwZ2Zkd193ZV9n ZXRfcmVzdWx0ID09IDApCiAJCQlwZ2Zkd193ZV9nZXRfcmVzdWx0ID0KIAkJCQlXYWl0RXZlbnRF eHRlbnNpb25OZXcoIlBvc3RncmVzRmR3R2V0UmVzdWx0Iik7CiAKLQkJY3RsLmtleXNpemUgPSBz aXplb2YoQ29ubkNhY2hlS2V5KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihDb25uQ2FjaGVF bnRyeSk7Ci0JCUNvbm5lY3Rpb25IYXNoID0gaGFzaF9jcmVhdGUoInBvc3RncmVzX2ZkdyBjb25u ZWN0aW9ucyIsIDgsCi0JCQkJCQkJCQkgJmN0bCwKLQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTKTsKKwkJQ29ubmVjdGlvbkhhc2ggPSBoYXNoX21ha2VfY3h0KENvbm5DYWNoZUVudHJ5 LCBrZXksCisJCQkJCQkJCQkgICAicG9zdGdyZXNfZmR3IGNvbm5lY3Rpb25zIiwgOCwKKwkJCQkJ CQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJCS8qCiAJCSAqIFJlZ2lzdGVyIHNvbWUgY2Fs bGJhY2sgZnVuY3Rpb25zIHRoYXQgbWFuYWdlIGNvbm5lY3Rpb24gY2xlYW51cC4KZGlmZiAtLWdp dCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvc2hpcHBhYmxlLmMKaW5kZXggZDMyZDNkMGU0NjEuLmVjMTg1MjQ5MGUwIDEwMDY0NAotLS0g YS9jb250cmliL3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYworKysgYi9jb250cmliL3Bvc3RncmVz X2Zkdy9zaGlwcGFibGUuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzX2Zk dy5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5o IgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUu aCIKIAogLyogSGFzaCB0YWJsZSBmb3IgY2FjaGluZyB0aGUgcmVzdWx0cyBvZiBzaGlwcGFiaWxp dHkgbG9va3VwcyAqLwpAQCAtOTAsMTMgKzkxLDEwIEBAIEludmFsaWRhdGVTaGlwcGFibGVDYWNo ZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiBzdGF0 aWMgdm9pZAogSW5pdGlhbGl6ZVNoaXBwYWJsZUNhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3Rs OwotCiAJLyogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9m KFNoaXBwYWJsZUNhY2hlS2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNoaXBwYWJsZUNh Y2hlRW50cnkpOwotCVNoaXBwYWJsZUNhY2hlSGFzaCA9Ci0JCWhhc2hfY3JlYXRlKCJTaGlwcGFi aWxpdHkgY2FjaGUiLCAyNTYsICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCVNoaXBw YWJsZUNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoU2hpcHBhYmxlQ2FjaGVFbnRyeSwga2V5LAor CQkJCQkJCQkJICAgIlNoaXBwYWJpbGl0eSBjYWNoZSIsIDI1NiwKKwkJCQkJCQkJCSAgIFRvcE1l bW9yeUNvbnRleHQpOwogCiAJLyogU2V0IHVwIGludmFsaWRhdGlvbiBjYWxsYmFjayBvbiBwZ19m b3JlaWduX3NlcnZlci4gKi8KIAlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhGT1JFSUdO U0VSVkVST0lELApkaWZmIC0tZ2l0IGEvY29udHJpYi90YWJsZWZ1bmMvdGFibGVmdW5jLmMgYi9j b250cmliL3RhYmxlZnVuYy90YWJsZWZ1bmMuYwppbmRleCBjYTI0MzRjNmUxOS4uNDI2ZjRiMjM2 YTIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jCisrKyBiL2NvbnRy aWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jCkBAIC03MDUsMjQgKzcwNSwxNyBAQCBzdGF0aWMgSFRB QiAqCiBsb2FkX2NhdGVnb3JpZXNfaGFzaChjaGFyICpjYXRzX3NxbCwgTWVtb3J5Q29udGV4dCBw ZXJfcXVlcnlfY3R4KQogewogCUhUQUIJICAgKmNyb3NzdGFiX2hhc2g7Ci0JSEFTSENUTAkJY3Rs OwogCWludAkJCXJldDsKIAl1aW50NjQJCXByb2M7CiAJTWVtb3J5Q29udGV4dCBTUEljb250ZXh0 OwogCi0JLyogaW5pdGlhbGl6ZSB0aGUgY2F0ZWdvcnkgaGFzaCB0YWJsZSAqLwotCWN0bC5rZXlz aXplID0gTUFYX0NBVE5BTUVfTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoY3Jvc3N0YWJf SGFzaEVudCk7Ci0JY3RsLmhjeHQgPSBwZXJfcXVlcnlfY3R4OwotCiAJLyoKLQkgKiB1c2UgSU5J VF9DQVRTLCBkZWZpbmVkIGFib3ZlIGFzIGEgZ3Vlc3Mgb2YgaG93IG1hbnkgaGFzaCB0YWJsZSBl bnRyaWVzCi0JICogdG8gY3JlYXRlLCBpbml0aWFsbHkKKwkgKiBJbml0aWFsaXplIHRoZSBjYXRl Z29yeSBoYXNoIHRhYmxlLiBVc2UgSU5JVF9DQVRTLCBkZWZpbmVkIGFib3ZlIGFzIGEKKwkgKiBn dWVzcyBvZiBob3cgbWFueSBoYXNoIHRhYmxlIGVudHJpZXMgdG8gY3JlYXRlLCBpbml0aWFsbHku CiAJICovCi0JY3Jvc3N0YWJfaGFzaCA9IGhhc2hfY3JlYXRlKCJjcm9zc3RhYiBoYXNoIiwKLQkJ CQkJCQkJSU5JVF9DQVRTLAotCQkJCQkJCQkmY3RsLAotCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNI X1NUUklOR1MgfCBIQVNIX0NPTlRFWFQpOworCWNyb3NzdGFiX2hhc2ggPSBoYXNoX21ha2VfY3h0 KGNyb3NzdGFiX0hhc2hFbnQsIGludGVybmFsX2NhdG5hbWUsCisJCQkJCQkJCSAgImNyb3NzdGFi IGhhc2giLCBJTklUX0NBVFMsCisJCQkJCQkJCSAgcGVyX3F1ZXJ5X2N0eCk7CiAKIAkvKiBDb25u ZWN0IHRvIFNQSSBtYW5hZ2VyICovCiAJU1BJX2Nvbm5lY3QoKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9jb21tb24vaGVhcHR1cGxlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL2hlYXB0dXBsZS5jCmluZGV4IDYxMzY3YjMyMzVhLi40OTc4NzdkNjY3ZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jCkBAIC0xMjUsMTggKzEyNSw5IEBAIG1pc3Npbmdf bWF0Y2goY29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5MiwgU2l6ZSBrZXlzaXplKQog c3RhdGljIHZvaWQKIGluaXRfbWlzc2luZ19jYWNoZSh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hf Y3RsOwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihtaXNzaW5nX2NhY2hlX2tleSk7Ci0J aGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKG1pc3NpbmdfY2FjaGVfa2V5KTsKLQloYXNoX2N0 bC5oY3h0ID0gVG9wTWVtb3J5Q29udGV4dDsKLQloYXNoX2N0bC5oYXNoID0gbWlzc2luZ19oYXNo OwotCWhhc2hfY3RsLm1hdGNoID0gbWlzc2luZ19tYXRjaDsKIAltaXNzaW5nX2NhY2hlID0KLQkJ aGFzaF9jcmVhdGUoIk1pc3NpbmcgVmFsdWVzIENhY2hlIiwKLQkJCQkJMzIsCi0JCQkJCSZoYXNo X2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9DT05URVhUIHwgSEFTSF9GVU5DVElPTiB8IEhB U0hfQ09NUEFSRSk7CisJCWhhc2hzZXRfbWFrZV9mbl9jeHQobWlzc2luZ19jYWNoZV9rZXksICJN aXNzaW5nIFZhbHVlcyBDYWNoZSIsIDMyLAorCQkJCQkJCW1pc3NpbmdfaGFzaCwgbWlzc2luZ19t YXRjaCwgVG9wTWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkLmMKaW5kZXggN2Y1N2M3ODdmNGMuLjA5ZjExYzQ1OWQ3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwpAQCAtMTUxNSwxNSArMTUxNSw4IEBAIHR5cGVkZWYgc3Ry dWN0CiBzdGF0aWMgdm9pZAogZ2lzdEluaXRQYXJlbnRNYXAoR0lTVEJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUpCiB7Ci0JSEFTSENUTAkJaGFzaEN0bDsKLQotCWhhc2hDdGwua2V5c2l6ZSA9IHNpemVv ZihCbG9ja051bWJlcik7Ci0JaGFzaEN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFyZW50TWFwRW50 cnkpOwotCWhhc2hDdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWJ1aWxkc3RhdGUt PnBhcmVudE1hcCA9IGhhc2hfY3JlYXRlKCJnaXN0YnVpbGQgcGFyZW50IG1hcCIsCi0JCQkJCQkJ CQkJMTAyNCwKLQkJCQkJCQkJCQkmaGFzaEN0bCwKLQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNI X0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlidWlsZHN0YXRlLT5wYXJlbnRNYXAgPSBoYXNoX21h a2UoUGFyZW50TWFwRW50cnksIGNoaWxkYmxrbm8sCisJCQkJCQkJCQkgICJnaXN0YnVpbGQgcGFy ZW50IG1hcCIsIDEwMjQpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkYnVmZmVycy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkYnVmZmVycy5jCmluZGV4IDMyMTNjZjQ1YWE2Li4wMjlhZjg1NDJmOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkYnVmZmVycy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZGJ1ZmZlcnMuYwpAQCAtNDQsNyArNDQs NiBAQCBHSVNUQnVpbGRCdWZmZXJzICoKIGdpc3RJbml0QnVpbGRCdWZmZXJzKGludCBwYWdlc1Bl ckJ1ZmZlciwgaW50IGxldmVsU3RlcCwgaW50IG1heExldmVsKQogewogCUdJU1RCdWlsZEJ1ZmZl cnMgKmdmYmI7Ci0JSEFTSENUTAkJaGFzaEN0bDsKIAogCWdmYmIgPSBwYWxsb2Nfb2JqZWN0KEdJ U1RCdWlsZEJ1ZmZlcnMpOwogCWdmYmItPnBhZ2VzUGVyQnVmZmVyID0gcGFnZXNQZXJCdWZmZXI7 CkBAIC03MiwxMyArNzEsOCBAQCBnaXN0SW5pdEJ1aWxkQnVmZmVycyhpbnQgcGFnZXNQZXJCdWZm ZXIsIGludCBsZXZlbFN0ZXAsIGludCBtYXhMZXZlbCkKIAkgKiBub2RlQnVmZmVyc1RhYiBoYXNo IGlzIGFzc29jaWF0aW9uIGJldHdlZW4gaW5kZXggYmxvY2tzIGFuZCBpdCdzCiAJICogYnVmZmVy cy4KIAkgKi8KLQloYXNoQ3RsLmtleXNpemUgPSBzaXplb2YoQmxvY2tOdW1iZXIpOwotCWhhc2hD dGwuZW50cnlzaXplID0gc2l6ZW9mKEdJU1ROb2RlQnVmZmVyKTsKLQloYXNoQ3RsLmhjeHQgPSBD dXJyZW50TWVtb3J5Q29udGV4dDsKLQlnZmJiLT5ub2RlQnVmZmVyc1RhYiA9IGhhc2hfY3JlYXRl KCJnaXN0YnVpbGRidWZmZXJzIiwKLQkJCQkJCQkJCSAgIDEwMjQsCi0JCQkJCQkJCQkgICAmaGFz aEN0bCwKLQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQp OworCWdmYmItPm5vZGVCdWZmZXJzVGFiID0gaGFzaF9tYWtlKEdJU1ROb2RlQnVmZmVyLCBub2Rl QmxvY2tudW0sCisJCQkJCQkJCQkgImdpc3RidWlsZGJ1ZmZlcnMiLCAxMDI0KTsKIAogCWdmYmIt PmJ1ZmZlckVtcHR5aW5nUXVldWUgPSBOSUw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oYXNoL2hhc2hwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5j CmluZGV4IDhlMjIwYTNhZTE2Li45OWViMjkxZTgzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaHBhZ2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNo cGFnZS5jCkBAIC0xMzU2LDcgKzEzNTYsNiBAQCB2b2lkCiBfaGFzaF9maW5pc2hfc3BsaXQoUmVs YXRpb24gcmVsLCBCdWZmZXIgbWV0YWJ1ZiwgQnVmZmVyIG9idWYsIEJ1Y2tldCBvYnVja2V0LAog CQkJCSAgIHVpbnQzMiBtYXhidWNrZXQsIHVpbnQzMiBoaWdobWFzaywgdWludDMyIGxvd21hc2sp CiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJSFRBQgkgICAqdGlkaHRhYjsKIAlCdWZmZXIJCWJ1 Y2tldF9uYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAlCdWZmZXIJCW5idWY7CkBAIC0xMzY3LDE2ICsx MzY2LDggQEAgX2hhc2hfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIG1ldGFidWYs IEJ1ZmZlciBvYnVmLCBCdWNrZXQgb2J1Y2tldCwKIAlCdWNrZXQJCW5idWNrZXQ7CiAJYm9vbAkJ Zm91bmQ7CiAKLQkvKiBJbml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgVElEcyAq LwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoSXRlbVBvaW50ZXJEYXRhKTsKLQloYXNoX2N0 bC5lbnRyeXNpemUgPSBzaXplb2YoSXRlbVBvaW50ZXJEYXRhKTsKLQloYXNoX2N0bC5oY3h0ID0g Q3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQl0aWRodGFiID0KLQkJaGFzaF9jcmVhdGUoImJ1Y2tl dCBjdGlkcyIsCi0JCQkJCTI1NiwJCS8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUgKi8KLQkJCQkJ Jmhhc2hfY3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsK KwkvKiBJbml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgVElEcyAod2l0aCBhcmJp dHJhcnkgaW5pdGlhbCBzaXplKSAqLworCXRpZGh0YWIgPSBoYXNoc2V0X21ha2UoSXRlbVBvaW50 ZXJEYXRhLCAiYnVja2V0IGN0aWRzIiwgMjU2KTsKIAogCWJ1Y2tldF9uYmxrbm8gPSBuYmxrbm8g PSBfaGFzaF9nZXRfbmV3YmxvY2tfZnJvbV9vbGRidWNrZXQocmVsLCBvYnVja2V0KTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKaW5kZXggYmFlM2EyZGE3N2EuLjM2ODc3NGI1 MjcwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKQEAgLTIzNyw3ICsyMzcs NiBAQCBiZWdpbl9oZWFwX3Jld3JpdGUoUmVsYXRpb24gb2xkX2hlYXAsIFJlbGF0aW9uIG5ld19o ZWFwLCBUcmFuc2FjdGlvbklkIG9sZGVzdF94bQogCVJld3JpdGVTdGF0ZSBzdGF0ZTsKIAlNZW1v cnlDb250ZXh0IHJ3X2N4dDsKIAlNZW1vcnlDb250ZXh0IG9sZF9jeHQ7Ci0JSEFTSENUTAkJaGFz aF9jdGw7CiAKIAkvKgogCSAqIFRvIGVhc2UgY2xlYW51cCwgbWFrZSBhIHNlcGFyYXRlIGNvbnRl eHQgdGhhdCB3aWxsIGNvbnRhaW4gdGhlCkBAIC0yNjIsMjQgKzI2MSwxOSBAQCBiZWdpbl9oZWFw X3Jld3JpdGUoUmVsYXRpb24gb2xkX2hlYXAsIFJlbGF0aW9uIG5ld19oZWFwLCBUcmFuc2FjdGlv bklkIG9sZGVzdF94bQogCXN0YXRlLT5yc19jeHQgPSByd19jeHQ7CiAJc3RhdGUtPnJzX2J1bGtz dGF0ZSA9IHNtZ3JfYnVsa19zdGFydF9yZWwobmV3X2hlYXAsIE1BSU5fRk9SS05VTSk7CiAKLQkv KiBJbml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgdXBkYXRlIGNoYWlucyAqLwot CWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoVGlkSGFzaEtleSk7Ci0JaGFzaF9jdGwuZW50cnlz aXplID0gc2l6ZW9mKFVucmVzb2x2ZWRUdXBEYXRhKTsKLQloYXNoX2N0bC5oY3h0ID0gc3RhdGUt PnJzX2N4dDsKLQorCS8qCisJICogSW5pdGlhbGl6ZSBoYXNoIHRhYmxlcyB1c2VkIHRvIHRyYWNr IHVwZGF0ZSBjaGFpbnMgKHdpdGggYXJiaXRyYXJ5CisJICogaW5pdGlhbCBzaXplcykKKwkgKi8K IAlzdGF0ZS0+cnNfdW5yZXNvbHZlZF90dXBzID0KLQkJaGFzaF9jcmVhdGUoIlJld3JpdGUgLyBV bnJlc29sdmVkIGN0aWRzIiwKLQkJCQkJMTI4LAkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAq LwotCQkJCQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NP TlRFWFQpOwotCi0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE9sZFRvTmV3TWFwcGluZ0Rh dGEpOworCQloYXNoX21ha2VfY3h0KFVucmVzb2x2ZWRUdXBEYXRhLCBrZXksCisJCQkJCSAgIlJl d3JpdGUgLyBVbnJlc29sdmVkIGN0aWRzIiwgMTI4LAorCQkJCQkgIHN0YXRlLT5yc19jeHQpOwog CiAJc3RhdGUtPnJzX29sZF9uZXdfdGlkX21hcCA9Ci0JCWhhc2hfY3JlYXRlKCJSZXdyaXRlIC8g T2xkIHRvIG5ldyB0aWQgbWFwIiwKLQkJCQkJMTI4LAkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6 ZSAqLwotCQkJCQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNI X0NPTlRFWFQpOworCQloYXNoX21ha2VfY3h0KE9sZFRvTmV3TWFwcGluZ0RhdGEsIGtleSwKKwkJ CQkJICAiUmV3cml0ZSAvIE9sZCB0byBuZXcgdGlkIG1hcCIsIDEyOCwKKwkJCQkJICBzdGF0ZS0+ cnNfY3h0KTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRfY3h0KTsKIApAQCAtNzU3LDcg Kzc1MSw2IEBAIHJhd19oZWFwX2luc2VydChSZXdyaXRlU3RhdGUgc3RhdGUsIEhlYXBUdXBsZSB0 dXApCiBzdGF0aWMgdm9pZAogbG9naWNhbF9iZWdpbl9oZWFwX3Jld3JpdGUoUmV3cml0ZVN0YXRl IHN0YXRlKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwogCVRyYW5zYWN0aW9uSWQgbG9naWNhbF94 bWluOwogCiAJLyoKQEAgLTc4OCwxNSArNzgxLDExIEBAIGxvZ2ljYWxfYmVnaW5faGVhcF9yZXdy aXRlKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIAlzdGF0ZS0+cnNfYmVnaW5fbHNuID0gR2V0WExvZ0lu c2VydFJlY1B0cigpOwogCXN0YXRlLT5yc19udW1fcmV3cml0ZV9tYXBwaW5ncyA9IDA7CiAKLQlo YXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwotCWhhc2hfY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihSZXdyaXRlTWFwcGluZ0ZpbGUpOwotCWhhc2hfY3RsLmhjeHQgPSBzdGF0 ZS0+cnNfY3h0OwotCiAJc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MgPQotCQloYXNoX2NyZWF0 ZSgiTG9naWNhbCByZXdyaXRlIG1hcHBpbmciLAotCQkJCQkxMjgsCQkvKiBhcmJpdHJhcnkgaW5p dGlhbCBzaXplICovCi0JCQkJCSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9C UyB8IEhBU0hfQ09OVEVYVCk7CisJCWhhc2hfbWFrZV9jeHQoUmV3cml0ZU1hcHBpbmdGaWxlLCB4 aWQsCisJCQkJCSAgIkxvZ2ljYWwgcmV3cml0ZSBtYXBwaW5nIiwKKwkJCQkJICAxMjgsCQkvKiBh cmJpdHJhcnkgaW5pdGlhbCBzaXplICovCisJCQkJCSAgc3RhdGUtPnJzX2N4dCk7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYwppbmRleCAzYzNm MDY3YWFmYi4uMDJlNDE3ODBkZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2dwcmVmZXRjaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Z3ByZWZldGNoZXIuYwpAQCAtMzYyLDE1ICszNjIsMTMgQEAgWExvZ1ByZWZldGNoZXIgKgogWExv Z1ByZWZldGNoZXJBbGxvY2F0ZShYTG9nUmVhZGVyU3RhdGUgKnJlYWRlcikKIHsKIAlYTG9nUHJl ZmV0Y2hlciAqcHJlZmV0Y2hlcjsKLQlIQVNIQ1RMCQljdGw7CiAKIAlwcmVmZXRjaGVyID0gcGFs bG9jMF9vYmplY3QoWExvZ1ByZWZldGNoZXIpOwogCXByZWZldGNoZXItPnJlYWRlciA9IHJlYWRl cjsKIAotCWN0bC5rZXlzaXplID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKTsKLQljdGwuZW50cnlz aXplID0gc2l6ZW9mKFhMb2dQcmVmZXRjaGVyRmlsdGVyKTsKLQlwcmVmZXRjaGVyLT5maWx0ZXJf dGFibGUgPSBoYXNoX2NyZWF0ZSgiWExvZ1ByZWZldGNoZXJGaWx0ZXJUYWJsZSIsIDEwMjQsCi0J CQkJCQkJCQkJICAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJcHJlZmV0Y2hlci0+ ZmlsdGVyX3RhYmxlID0gaGFzaF9tYWtlX2N4dChYTG9nUHJlZmV0Y2hlckZpbHRlciwgcmxvY2F0 b3IsCisJCQkJCQkJCQkJCSAiWExvZ1ByZWZldGNoZXJGaWx0ZXJUYWJsZSIsIDEwMjQsCisJCQkJ CQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAlkbGlzdF9pbml0KCZwcmVmZXRjaGVyLT5maWx0 ZXJfcXVldWUpOwogCiAJU2hhcmVkU3RhdHMtPndhbF9kaXN0YW5jZSA9IDA7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCmluZGV4IDVmYmUzOTEzM2I4Li5kMTFlNDJjOTQ5MCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKQEAgLTI3LDYgKzI3LDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5j bHVkZSAidXRpbHMvaHNlYXJjaC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsLmgiCiAKIApAQCAtMTMxLDE1ICsxMzIsOSBAQCBsb2dfaW52YWxpZF9w YWdlKFJlbEZpbGVMb2NhdG9yIGxvY2F0b3IsIEZvcmtOdW1iZXIgZm9ya25vLCBCbG9ja051bWJl ciBibGtubywKIAlpZiAoaW52YWxpZF9wYWdlX3RhYiA9PSBOVUxMKQogCXsKIAkJLyogY3JlYXRl IGhhc2ggdGFibGUgd2hlbiBmaXJzdCBuZWVkZWQgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0 bC5rZXlzaXplID0gc2l6ZW9mKHhsX2ludmFsaWRfcGFnZV9rZXkpOwotCQljdGwuZW50cnlzaXpl ID0gc2l6ZW9mKHhsX2ludmFsaWRfcGFnZSk7Ci0KLQkJaW52YWxpZF9wYWdlX3RhYiA9IGhhc2hf Y3JlYXRlKCJYTE9HIGludmFsaWQtcGFnZSB0YWJsZSIsCi0JCQkJCQkJCQkgICAxMDAsCi0JCQkJ CQkJCQkgICAmY3RsLAotCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCWlu dmFsaWRfcGFnZV90YWIgPSBoYXNoX21ha2VfY3h0KHhsX2ludmFsaWRfcGFnZSwga2V5LAorCQkJ CQkJCQkJCSAiWExPRyBpbnZhbGlkLXBhZ2UgdGFibGUiLCAxMDAsCisJCQkJCQkJCQkJIFRvcE1l bW9yeUNvbnRleHQpOwogCX0KIAogCS8qIHdlIGN1cnJlbnRseSBhc3N1bWUgeGxfaW52YWxpZF9w YWdlX2tleSBjb250YWlucyBubyBwYWRkaW5nICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX2VudW0uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZW51bS5jCmluZGV4IDMz YTQ2MTQ4NGQ0Li44NmM4YmFkYTU1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19lbnVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMKQEAgLTI2NywxNSAr MjY3LDkgQEAgRW51bVZhbHVlc0RlbGV0ZShPaWQgZW51bVR5cGVPaWQpCiBzdGF0aWMgdm9pZAog aW5pdF91bmNvbW1pdHRlZF9lbnVtX3R5cGVzKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7 Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXpl ID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuaGN4dCA9IFRvcFRyYW5zYWN0aW9uQ29udGV4dDsK LQl1bmNvbW1pdHRlZF9lbnVtX3R5cGVzID0gaGFzaF9jcmVhdGUoIlVuY29tbWl0dGVkIGVudW0g dHlwZXMiLAotCQkJCQkJCQkJCSAzMiwKLQkJCQkJCQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCQkJ CSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl1bmNvbW1pdHRlZF9l bnVtX3R5cGVzID0gaGFzaHNldF9tYWtlX2N4dChPaWQsCisJCQkJCQkJCQkJCSAgIlVuY29tbWl0 dGVkIGVudW0gdHlwZXMiLCAzMiwKKwkJCQkJCQkJCQkJICBUb3BUcmFuc2FjdGlvbkNvbnRleHQp OwogfQogCiAvKgpAQCAtMjg0LDE1ICsyNzgsOSBAQCBpbml0X3VuY29tbWl0dGVkX2VudW1fdHlw ZXModm9pZCkKIHN0YXRpYyB2b2lkCiBpbml0X3VuY29tbWl0dGVkX2VudW1fdmFsdWVzKHZvaWQp CiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9p ZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuaGN4dCA9 IFRvcFRyYW5zYWN0aW9uQ29udGV4dDsKLQl1bmNvbW1pdHRlZF9lbnVtX3ZhbHVlcyA9IGhhc2hf Y3JlYXRlKCJVbmNvbW1pdHRlZCBlbnVtIHZhbHVlcyIsCi0JCQkJCQkJCQkJICAzMiwKLQkJCQkJ CQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBI QVNIX0NPTlRFWFQpOworCXVuY29tbWl0dGVkX2VudW1fdmFsdWVzID0gaGFzaHNldF9tYWtlX2N4 dChPaWQsCisJCQkJCQkJCQkJCSAgICJVbmNvbW1pdHRlZCBlbnVtIHZhbHVlcyIsIDMyLAorCQkJ CQkJCQkJCQkgICBUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19pbmhlcml0cy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19pbmhlcml0cy5jCmluZGV4IGNlZjgwNjMzMTU3Li41Mzc3NjliMzlhZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19pbmhlcml0cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfaW5oZXJpdHMuYwpAQCAtMjU2LDE5ICsyNTYsMTIgQEAgZmluZF9hbGxfaW5oZXJpdG9y cyhPaWQgcGFyZW50cmVsSWQsIExPQ0tNT0RFIGxvY2ttb2RlLCBMaXN0ICoqbnVtcGFyZW50cykK IHsKIAkvKiBoYXNoIHRhYmxlIGZvciBPKDEpIHJlbF9vaWQgLT4gcmVsX251bXBhcmVudHMgY2Vs bCBsb29rdXAgKi8KIAlIVEFCCSAgICpzZWVuX3JlbHM7Ci0JSEFTSENUTAkJY3RsOwogCUxpc3QJ ICAgKnJlbHNfbGlzdCwKIAkJCSAgICpyZWxfbnVtcGFyZW50czsKIAlMaXN0Q2VsbCAgICpsOwog Ci0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNl ZW5SZWxzRW50cnkpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQlzZWVu X3JlbHMgPSBoYXNoX2NyZWF0ZSgiZmluZF9hbGxfaW5oZXJpdG9ycyB0ZW1wb3JhcnkgdGFibGUi LAotCQkJCQkJCTMyLCAvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCi0JCQkJCQkJJmN0bCwK LQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlzZWVuX3Jl bHMgPSBoYXNoX21ha2UoU2VlblJlbHNFbnRyeSwgcmVsX2lkLAorCQkJCQkJICAiZmluZF9hbGxf aW5oZXJpdG9ycyB0ZW1wb3JhcnkgdGFibGUiLCAzMik7CiAKIAkvKgogCSAqIFdlIGJ1aWxkIGEg bGlzdCBzdGFydGluZyB3aXRoIHRoZSBnaXZlbiByZWwgYW5kIGFkZGluZyBhbGwgZGlyZWN0IGFu ZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N0b3JhZ2UuYwppbmRleCBlNDQzYTQ5OTNjNS4uZGIzZTA4MzE5YjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3RvcmFnZS5jCkBAIC05MCwxNSArOTAsOSBAQCBBZGRQZW5kaW5nU3luYyhjb25zdCBS ZWxGaWxlTG9jYXRvciAqcmxvY2F0b3IpCiAKIAkvKiBjcmVhdGUgdGhlIGhhc2ggaWYgbm90IHll dCAqLwogCWlmICghcGVuZGluZ1N5bmNIYXNoKQotCXsKLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0 bC5rZXlzaXplID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihQZW5kaW5nUmVsU3luYyk7Ci0JCWN0bC5oY3h0ID0gVG9wVHJhbnNhY3Rpb25Db250ZXh0 OwotCQlwZW5kaW5nU3luY0hhc2ggPSBoYXNoX2NyZWF0ZSgicGVuZGluZyBzeW5jIGhhc2giLCAx NiwgJmN0bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVY VCk7Ci0JfQorCQlwZW5kaW5nU3luY0hhc2ggPSBoYXNoX21ha2VfY3h0KFBlbmRpbmdSZWxTeW5j LCBybG9jYXRvciwKKwkJCQkJCQkJCQkicGVuZGluZyBzeW5jIGhhc2giLCAxNiwKKwkJCQkJCQkJ CQlUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwogCiAJcGVuZGluZyA9IGhhc2hfc2VhcmNoKHBlbmRp bmdTeW5jSGFzaCwgcmxvY2F0b3IsIEhBU0hfRU5URVIsICZmb3VuZCk7CiAJQXNzZXJ0KCFmb3Vu ZCk7CkBAIC02MDAsNyArNTk0LDYgQEAgdm9pZAogU2VyaWFsaXplUGVuZGluZ1N5bmNzKFNpemUg bWF4U2l6ZSwgY2hhciAqc3RhcnRBZGRyZXNzKQogewogCUhUQUIJICAgKnRtcGhhc2g7Ci0JSEFT SENUTAkJY3RsOwogCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwogCVBlbmRpbmdSZWxTeW5jICpzeW5j OwogCVBlbmRpbmdSZWxEZWxldGUgKmRlbGV0ZTsKQEAgLTYxMSwxMiArNjA0LDggQEAgU2VyaWFs aXplUGVuZGluZ1N5bmNzKFNpemUgbWF4U2l6ZSwgY2hhciAqc3RhcnRBZGRyZXNzKQogCQlnb3Rv IHRlcm1pbmF0ZTsKIAogCS8qIENyZWF0ZSB0ZW1wb3JhcnkgaGFzaCB0byBjb2xsZWN0IGFjdGl2 ZSByZWxmaWxlbG9jYXRvcnMgKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRv cik7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRvcik7Ci0JY3RsLmhjeHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQl0bXBoYXNoID0gaGFzaF9jcmVhdGUoInRtcCByZWxm aWxlbG9jYXRvcnMiLAotCQkJCQkJICBoYXNoX2dldF9udW1fZW50cmllcyhwZW5kaW5nU3luY0hh c2gpLCAmY3RsLAotCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhU KTsKKwl0bXBoYXNoID0gaGFzaHNldF9tYWtlKFJlbEZpbGVMb2NhdG9yLCAidG1wIHJlbGZpbGVs b2NhdG9ycyIsCisJCQkJCQkgICBoYXNoX2dldF9udW1fZW50cmllcyhwZW5kaW5nU3luY0hhc2gp KTsKIAogCS8qIGNvbGxlY3QgYWxsIHJsb2NhdG9yIGZyb20gcGVuZGluZyBzeW5jcyAqLwogCWhh c2hfc2VxX2luaXQoJnNjYW4sIHBlbmRpbmdTeW5jSGFzaCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9hc3luYy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwppbmRl eCA0MGM0MmY1NzJlZC4uODE5YzMxMDdiYTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2FzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwpAQCAtMjQxNCwy MCArMjQxNCwxNCBAQCBBZGRFdmVudFRvUGVuZGluZ05vdGlmaWVzKE5vdGlmaWNhdGlvbiAqbikK IAlpZiAobGlzdF9sZW5ndGgocGVuZGluZ05vdGlmaWVzLT5ldmVudHMpID49IE1JTl9IQVNIQUJM RV9OT1RJRklFUyAmJgogCQlwZW5kaW5nTm90aWZpZXMtPmhhc2h0YWIgPT0gTlVMTCkKIAl7Ci0J CUhBU0hDVEwJCWhhc2hfY3RsOwogCQlMaXN0Q2VsbCAgICpsOwogCiAJCS8qIENyZWF0ZSB0aGUg aGFzaCB0YWJsZSAqLwotCQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE5vdGlmaWNhdGlvbiAq KTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHN0cnVjdCBOb3RpZmljYXRpb25IYXNo KTsKLQkJaGFzaF9jdGwuaGFzaCA9IG5vdGlmaWNhdGlvbl9oYXNoOwotCQloYXNoX2N0bC5tYXRj aCA9IG5vdGlmaWNhdGlvbl9tYXRjaDsKLQkJaGFzaF9jdGwuaGN4dCA9IEN1clRyYW5zYWN0aW9u Q29udGV4dDsKIAkJcGVuZGluZ05vdGlmaWVzLT5oYXNodGFiID0KLQkJCWhhc2hfY3JlYXRlKCJQ ZW5kaW5nIE5vdGlmaWVzIiwKLQkJCQkJCTI1NkwsCi0JCQkJCQkmaGFzaF9jdGwsCi0JCQkJCQlI QVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsK KwkJCWhhc2hfbWFrZV9mbl9jeHQoc3RydWN0IE5vdGlmaWNhdGlvbkhhc2gsIGV2ZW50LAorCQkJ CQkJCSAiUGVuZGluZyBOb3RpZmllcyIsIDI1NiwKKwkJCQkJCQkgbm90aWZpY2F0aW9uX2hhc2gs IG5vdGlmaWNhdGlvbl9tYXRjaCwKKwkJCQkJCQkgQ3VyVHJhbnNhY3Rpb25Db250ZXh0KTsKIAog CQkvKiBJbnNlcnQgYWxsIHRoZSBhbHJlYWR5LWV4aXN0aW5nIGV2ZW50cyAqLwogCQlmb3JlYWNo KGwsIHBlbmRpbmdOb3RpZmllcy0+ZXZlbnRzKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDVi ODZhNzI3NTg3Li5lYjFhN2VjZmViYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMzcxLDE1 ICszNzEsOSBAQCBFdmFsdWF0ZVBhcmFtcyhQYXJzZVN0YXRlICpwc3RhdGUsIFByZXBhcmVkU3Rh dGVtZW50ICpwc3RtdCwgTGlzdCAqcGFyYW1zLAogc3RhdGljIHZvaWQKIEluaXRRdWVyeUhhc2hU YWJsZSh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9 IE5BTUVEQVRBTEVOOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQcmVwYXJlZFN0YXRl bWVudCk7Ci0KLQlwcmVwYXJlZF9xdWVyaWVzID0gaGFzaF9jcmVhdGUoIlByZXBhcmVkIFF1ZXJp ZXMiLAotCQkJCQkJCQkgICAzMiwKLQkJCQkJCQkJICAgJmhhc2hfY3RsLAotCQkJCQkJCQkgICBI QVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCXByZXBhcmVkX3F1ZXJpZXMgPSBoYXNoX21ha2Vf Y3h0KFByZXBhcmVkU3RhdGVtZW50LCBzdG10X25hbWUsCisJCQkJCQkJCQkgIlByZXBhcmVkIFF1 ZXJpZXMiLCAzMiwKKwkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zZXF1ZW5jZS5jCmluZGV4IGUxYjgwOGJiYjYwLi41YTI2ODNjMDczNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zZXF1ZW5jZS5jCkBAIC0xMTEzLDEzICsxMTEzLDkgQEAgbG9ja19hbmRfb3Blbl9zZXF1 ZW5jZShTZXFUYWJsZSBzZXEpCiBzdGF0aWMgdm9pZAogY3JlYXRlX3NlcV9oYXNodGFibGUodm9p ZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KLQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWN0 bC5lbnRyeXNpemUgPSBzaXplb2YoU2VxVGFibGVEYXRhKTsKLQotCXNlcWhhc2h0YWIgPSBoYXNo X2NyZWF0ZSgiU2VxdWVuY2UgdmFsdWVzIiwgMTYsICZjdGwsCi0JCQkJCQkJIEhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMpOworCXNlcWhhc2h0YWIgPSBoYXNoX21ha2VfY3h0KFNlcVRhYmxlRGF0YSwg cmVsaWQsCisJCQkJCQkJICAgIlNlcXVlbmNlIHZhbHVlcyIsIDE2LAorCQkJCQkJCSAgIFRvcE1l bW9yeUNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBmOTc2 YzBlNWM3ZS4uNDBhMzk5ODllYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0yMTYw LDE5ICsyMTYwLDkgQEAgRXhlY3V0ZVRydW5jYXRlR3V0cyhMaXN0ICpleHBsaWNpdF9yZWxzLAog CiAJCQkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxpemUgaGFzaHRhYmxlIGZvciBmb3Jl aWduIHRhYmxlcyAqLwogCQkJaWYgKCFmdF9odGFiKQotCQkJewotCQkJCUhBU0hDVEwJCWhjdGw7 Ci0KLQkJCQltZW1zZXQoJmhjdGwsIDAsIHNpemVvZihIQVNIQ1RMKSk7Ci0JCQkJaGN0bC5rZXlz aXplID0gc2l6ZW9mKE9pZCk7Ci0JCQkJaGN0bC5lbnRyeXNpemUgPSBzaXplb2YoRm9yZWlnblRy dW5jYXRlSW5mbyk7Ci0JCQkJaGN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQkJ CQlmdF9odGFiID0gaGFzaF9jcmVhdGUoIlRSVU5DQVRFIGZvciBGb3JlaWduIFRhYmxlcyIsCi0J CQkJCQkJCQkgIDMyLAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCi0JCQkJCQkJCQkgICZo Y3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsK LQkJCX0KKwkJCQlmdF9odGFiID0gaGFzaF9tYWtlKEZvcmVpZ25UcnVuY2F0ZUluZm8sIHNlcnZl cmlkLAorCQkJCQkJCQkJIlRSVU5DQVRFIGZvciBGb3JlaWduIFRhYmxlcyIsCisJCQkJCQkJCQkz Mik7CS8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KIAogCQkJLyogRmluZCBvciBjcmVhdGUg Y2FjaGVkIGVudHJ5IGZvciB0aGUgZm9yZWlnbiB0YWJsZSAqLwogCQkJZnRfaW5mbyA9IGhhc2hf c2VhcmNoKGZ0X2h0YWIsICZzZXJ2ZXJpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggNDZmZjZkYTgyODkuLjYzMzZhOTJiMjQ4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNTEzMSwxNSArNTEz MSw5IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogI2VuZGlmCiAJaWYgKG5yZWxzID49IE1UX05SRUxTX0hBU0gpCiAJ ewotCQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9p ZCk7Ci0JCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihNVFRhcmdldFJlbExvb2t1cCk7Ci0J CWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKIAkJbXRzdGF0ZS0+bXRfcmVz dWx0T2lkSGFzaCA9Ci0JCQloYXNoX2NyZWF0ZSgiTW9kaWZ5VGFibGUgdGFyZ2V0IGhhc2giLAot CQkJCQkJbnJlbHMsICZoYXNoX2N0bCwKLQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBI QVNIX0NPTlRFWFQpOworCQkJaGFzaF9tYWtlKE1UVGFyZ2V0UmVsTG9va3VwLCByZWxhdGlvbk9p ZCwKKwkJCQkJICAiTW9kaWZ5VGFibGUgdGFyZ2V0IGhhc2giLCBucmVscyk7CiAJCWZvciAoaSA9 IDA7IGkgPCBucmVsczsgaSsrKQogCQl7CiAJCQlPaWQJCQloYXNoa2V5OwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvZXh0ZW5zaWJsZS5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXh0ZW5z aWJsZS5jCmluZGV4IDBkNDNkNjZjMWNkLi5iZjBiOTRkM2M3MiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbm9kZXMvZXh0ZW5zaWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2V4dGVuc2li bGUuYwpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAibm9kZXMvZXh0ZW5zaWJsZS5oIgog I2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog CiBzdGF0aWMgSFRBQiAqZXh0ZW5zaWJsZV9ub2RlX21ldGhvZHMgPSBOVUxMOwogc3RhdGljIEhU QUIgKmN1c3RvbV9zY2FuX21ldGhvZHMgPSBOVUxMOwpAQCAtNDUsMTMgKzQ2LDggQEAgUmVnaXN0 ZXJFeHRlbnNpYmxlTm9kZUVudHJ5KEhUQUIgKipwX2h0YWJsZSwgY29uc3QgY2hhciAqaHRhYmxl X2xhYmVsLAogCiAJaWYgKCpwX2h0YWJsZSA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJY3RsOwot Ci0JCWN0bC5rZXlzaXplID0gRVhUTk9ERU5BTUVfTUFYX0xFTjsKLQkJY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihFeHRlbnNpYmxlTm9kZUVudHJ5KTsKLQotCQkqcF9odGFibGUgPSBoYXNoX2NyZWF0 ZShodGFibGVfbGFiZWwsIDEwMCwgJmN0bCwKLQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9TVFJJ TkdTKTsKKwkJKnBfaHRhYmxlID0gaGFzaF9tYWtlX2N4dChFeHRlbnNpYmxlTm9kZUVudHJ5LCBl eHRub2RlbmFtZSwKKwkJCQkJCQkJICBodGFibGVfbGFiZWwsIDEwMCwgVG9wTWVtb3J5Q29udGV4 dCk7CiAJfQogCiAJaWYgKHN0cmxlbihleHRub2RlbmFtZSkgPj0gRVhUTk9ERU5BTUVfTUFYX0xF TikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCBhOTBlMWM5ZWU2Yi4uZmZh ODljYjMzNjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAgLTcxMywxOSAr NzEzLDEwIEBAIGdldF9yZWxhdGlvbl9ub3RudWxsYXR0cyhQbGFubmVySW5mbyAqcm9vdCwgUmVs YXRpb24gcmVsYXRpb24pCiAJLyogY3JlYXRlIHRoZSBoYXNoIHRhYmxlIGlmIGl0IGhhc24ndCBi ZWVuIGNyZWF0ZWQgeWV0ICovCiAJaWYgKHJvb3QtPmdsb2ItPnJlbF9ub3RudWxsYXR0c19oYXNo ID09IE5VTEwpCiAJewotCQlIVEFCCSAgICpoYXNodGFiOwotCQlIQVNIQ1RMCQloYXNoX2N0bDsK LQotCQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWhhc2hfY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihOb3RudWxsSGFzaEVudHJ5KTsKLQkJaGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRN ZW1vcnlDb250ZXh0OwotCi0JCWhhc2h0YWIgPSBoYXNoX2NyZWF0ZSgiUmVsYXRpb24gTk9UIE5V TEwgYXR0bnVtcyIsCi0JCQkJCQkJICA2NEwsCS8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUgKi8K LQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBI QVNIX0NPTlRFWFQpOwotCi0JCXJvb3QtPmdsb2ItPnJlbF9ub3RudWxsYXR0c19oYXNoID0gaGFz aHRhYjsKKwkJcm9vdC0+Z2xvYi0+cmVsX25vdG51bGxhdHRzX2hhc2ggPQorCQkJaGFzaF9tYWtl KE5vdG51bGxIYXNoRW50cnksIHJlbGlkLAorCQkJCQkgICJSZWxhdGlvbiBOT1QgTlVMTCBhdHRu dW1zIiwKKwkJCQkJICA2NEwpOwkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAqLwogCX0KIAog CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYwppbmRleCAyNjg1OGQxZDJiMC4u M2JmNWU3YWM4YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0 ZXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYwpAQCAtMjEx NywxMiArMjExNyw5IEBAIGxvb2t1cF9wcm9vZl9jYWNoZShPaWQgcHJlZF9vcCwgT2lkIGNsYXVz ZV9vcCwgYm9vbCByZWZ1dGVfaXQpCiAJaWYgKE9wclByb29mQ2FjaGVIYXNoID09IE5VTEwpCiAJ ewogCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGluaXRpYWxpemUgdGhlIGhhc2ggdGFibGUgKi8K LQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9wclByb29mQ2FjaGVL ZXkpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKE9wclByb29mQ2FjaGVFbnRyeSk7Ci0JCU9w clByb29mQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIkJ0cmVlIHByb29mIGxvb2t1cCBjYWNoZSIs IDI1NiwKLQkJCQkJCQkJCQkmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJT3ByUHJv b2ZDYWNoZUhhc2ggPSBoYXNoX21ha2VfY3h0KE9wclByb29mQ2FjaGVFbnRyeSwga2V5LAorCQkJ CQkJCQkJCSAgIkJ0cmVlIHByb29mIGxvb2t1cCBjYWNoZSIsIDI1NiwKKwkJCQkJCQkJCQkgIFRv cE1lbW9yeUNvbnRleHQpOwogCiAJCS8qIEFycmFuZ2UgdG8gZmx1c2ggY2FjaGUgb24gcGdfYW1v cCBjaGFuZ2VzICovCiAJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKEFNT1BPUElELApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCmluZGV4IGY1NzYzMWU4NzZmLi5hOTA3ZjFk MDI4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwpAQCAtNjAxLDE5ICs2MDEs MTIgQEAgc3RhdGljIHZvaWQKIGJ1aWxkX2pvaW5fcmVsX2hhc2goUGxhbm5lckluZm8gKnJvb3Qp CiB7CiAJSFRBQgkgICAqaGFzaHRhYjsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAlMaXN0Q2VsbCAg ICpsOwogCiAJLyogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlICovCi0JaGFzaF9jdGwua2V5c2l6ZSA9 IHNpemVvZihSZWxpZHMpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihKb2luSGFzaEVu dHJ5KTsKLQloYXNoX2N0bC5oYXNoID0gYml0bWFwX2hhc2g7Ci0JaGFzaF9jdGwubWF0Y2ggPSBi aXRtYXBfbWF0Y2g7Ci0JaGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWhh c2h0YWIgPSBoYXNoX2NyZWF0ZSgiSm9pblJlbEhhc2hUYWJsZSIsCi0JCQkJCQkgIDI1NkwsCi0J CQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhB U0hfQ09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJaGFzaHRhYiA9IGhhc2hfbWFrZV9mbihKb2lu SGFzaEVudHJ5LCBqb2luX3JlbGlkcywKKwkJCQkJCSAgICJKb2luUmVsSGFzaFRhYmxlIiwgMjU2 LAorCQkJCQkJICAgYml0bWFwX2hhc2gsIGJpdG1hcF9tYXRjaCk7CiAKIAkvKiBJbnNlcnQgYWxs IHRoZSBhbHJlYWR5LWV4aXN0aW5nIGpvaW5yZWxzICovCiAJZm9yZWFjaChsLCByb290LT5qb2lu X3JlbF9saXN0KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKaW5kZXggNzY4ZTRjZmY5YzUuLmQzNmU3 YWQzMDMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNs dWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKQEAg LTEwMjgsMTIgKzEwMjksOSBAQCBmaW5kX29wZXJfY2FjaGVfZW50cnkoT3ByQ2FjaGVLZXkgKmtl eSkKIAlpZiAoT3ByQ2FjaGVIYXNoID09IE5VTEwpCiAJewogCQkvKiBGaXJzdCB0aW1lIHRocm91 Z2g6IGluaXRpYWxpemUgdGhlIGhhc2ggdGFibGUgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0 bC5rZXlzaXplID0gc2l6ZW9mKE9wckNhY2hlS2V5KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVv ZihPcHJDYWNoZUVudHJ5KTsKLQkJT3ByQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIk9wZXJhdG9y IGxvb2t1cCBjYWNoZSIsIDI1NiwKLQkJCQkJCQkJICAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9C TE9CUyk7CisJCU9wckNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoT3ByQ2FjaGVFbnRyeSwga2V5 LAorCQkJCQkJCQkJICJPcGVyYXRvciBsb29rdXAgY2FjaGUiLCAyNTYsCisJCQkJCQkJCQkgVG9w TWVtb3J5Q29udGV4dCk7CiAKIAkJLyogQXJyYW5nZSB0byBmbHVzaCBjYWNoZSBvbiBwZ19vcGVy YXRvciBhbmQgcGdfY2FzdCBjaGFuZ2VzICovCiAJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxi YWNrKE9QRVJOQU1FTlNQLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRkZXNjLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYwppbmRleCBjM2Qy NzVmODcyNi4uZGIyNmU0YTgyYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0ZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5jCkBA IC00MjQsMTcgKzQyNCwxMiBAQCBDcmVhdGVQYXJ0aXRpb25EaXJlY3RvcnkoTWVtb3J5Q29udGV4 dCBtY3h0LCBib29sIG9taXRfZGV0YWNoZWQpCiB7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKG1jeHQpOwogCVBhcnRpdGlvbkRpcmVjdG9yeSBwZGly OwotCUhBU0hDVEwJCWN0bDsKIAogCXBkaXIgPSBwYWxsb2Nfb2JqZWN0KFBhcnRpdGlvbkRpcmVj dG9yeURhdGEpOwogCXBkaXItPnBkaXJfbWN4dCA9IG1jeHQ7CiAKLQljdGwua2V5c2l6ZSA9IHNp emVvZihPaWQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFydGl0aW9uRGlyZWN0b3J5RW50 cnkpOwotCWN0bC5oY3h0ID0gbWN4dDsKLQotCXBkaXItPnBkaXJfaGFzaCA9IGhhc2hfY3JlYXRl KCJwYXJ0aXRpb24gZGlyZWN0b3J5IiwgMjU2LCAmY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXBkaXItPnBkaXJfaGFzaCA9IGhhc2hfbWFr ZV9jeHQoUGFydGl0aW9uRGlyZWN0b3J5RW50cnksIHJlbG9pZCwKKwkJCQkJCQkJCSJwYXJ0aXRp b24gZGlyZWN0b3J5IiwgMjU2LCBtY3h0KTsKIAlwZGlyLT5vbWl0X2RldGFjaGVkID0gb21pdF9k ZXRhY2hlZDsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggM2U1MDdkMjNjYzkuLmY4Zjg1OTUxNzQxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtOTA3LDcgKzkwNyw2IEBAIHJlYnVpbGRf ZGF0YWJhc2VfbGlzdChPaWQgbmV3ZGIpCiAJTWVtb3J5Q29udGV4dCBuZXdjeHQ7CiAJTWVtb3J5 Q29udGV4dCBvbGRjeHQ7CiAJTWVtb3J5Q29udGV4dCB0bXBjeHQ7Ci0JSEFTSENUTAkJaGN0bDsK IAlpbnQJCQlzY29yZTsKIAlpbnQJCQluZWxlbXM7CiAJSFRBQgkgICAqZGJoYXNoOwpAQCAtOTM3 LDEyICs5MzYsMTAgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAkgKiBzY29y ZSwgYW5kIGZpbmFsbHkgcHV0IHRoZSBhcnJheSBlbGVtZW50cyBpbnRvIHRoZSBuZXcgZG91Ymx5 IGxpbmtlZAogCSAqIGxpc3QuCiAJICovCi0JaGN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0J aGN0bC5lbnRyeXNpemUgPSBzaXplb2YoYXZsX2RiYXNlKTsKLQloY3RsLmhjeHQgPSB0bXBjeHQ7 Ci0JZGJoYXNoID0gaGFzaF9jcmVhdGUoImF1dG92YWN1dW0gZGIgaGFzaCIsIDIwLCAmaGN0bCwJ LyogbWFnaWMgbnVtYmVyIGhlcmUKLQkJCQkJCQkJCQkJCQkJCSAqIEZJWE1FICovCi0JCQkJCQkg SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJZGJoYXNoID0gaGFzaF9t YWtlX2N4dChhdmxfZGJhc2UsIGFkbF9kYXRpZCwKKwkJCQkJCSAgICJhdXRvdmFjdXVtIGRiIGhh c2giLAorCQkJCQkJICAgMjAsCS8qIG1hZ2ljIG51bWJlciBoZXJlIEZJWE1FICovCisJCQkJCQkg ICB0bXBjeHQpOwogCiAJLyogc3RhcnQgYnkgaW5zZXJ0aW5nIHRoZSBuZXcgZGF0YWJhc2UgKi8K IAlzY29yZSA9IDA7CkBAIC0xOTA0LDcgKzE5MDEsNiBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJ Rm9ybV9wZ19kYXRhYmFzZSBkYkZvcm07CiAJTGlzdAkgICAqdGFibGVfb2lkcyA9IE5JTDsKIAlM aXN0CSAgICpvcnBoYW5fb2lkcyA9IE5JTDsKLQlIQVNIQ1RMCQljdGw7CiAJSFRBQgkgICAqdGFi bGVfdG9hc3RfbWFwOwogCUxpc3RDZWxsICAgKnZvbGF0aWxlIGNlbGw7CiAJQnVmZmVyQWNjZXNz U3RyYXRlZ3kgYnN0cmF0ZWd5OwpAQCAtMTk3NywxMyArMTk3Myw5IEBAIGRvX2F1dG92YWN1dW0o dm9pZCkKIAlwZ19jbGFzc19kZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weShSZWxhdGlvbkdldERl c2NyKGNsYXNzUmVsKSk7CiAKIAkvKiBjcmVhdGUgaGFzaCB0YWJsZSBmb3IgdG9hc3QgPC0+IG1h aW4gcmVsaWQgbWFwcGluZyAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihhdl9yZWxhdGlvbik7Ci0KLQl0YWJsZV90b2FzdF9tYXAgPSBoYXNo X2NyZWF0ZSgiVE9BU1QgdG8gbWFpbiByZWxpZCBtYXAiLAotCQkJCQkJCQkgIDEwMCwKLQkJCQkJ CQkJICAmY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXRhYmxlX3Rv YXN0X21hcCA9IGhhc2hfbWFrZV9jeHQoYXZfcmVsYXRpb24sIGFyX3RvYXN0cmVsaWQsCisJCQkJ CQkJCQkiVE9BU1QgdG8gbWFpbiByZWxpZCBtYXAiLCAxMDAsCisJCQkJCQkJCQlUb3BNZW1vcnlD b250ZXh0KTsKIAogCS8qCiAJICogU2NhbiBwZ19jbGFzcyB0byBkZXRlcm1pbmUgd2hpY2ggdGFi bGVzIHRvIHZhY3V1bS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2tw b2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCmluZGV4IDY0 ODJjMjFiOGY5Li4yNDI1OWVkNWU0MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9jaGVja3BvaW50ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRl ci5jCkBAIC0xMzA5LDcgKzEzMDksNiBAQCBDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1ZXVl KHZvaWQpCiAJaW50CQkJbnVtX3JlcXVlc3RzOwogCWludAkJCXJlYWRfaWR4LAogCQkJCXdyaXRl X2lkeDsKLQlIQVNIQ1RMCQljdGw7CiAJSFRBQgkgICAqaHRhYjsKIAlib29sCSAgICpza2lwX3Ns b3Q7CiAKQEAgLTEzMjksMTQgKzEzMjgsOSBAQCBDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1 ZXVlKHZvaWQpCiAJaGVhZCA9IENoZWNrcG9pbnRlclNobWVtLT5oZWFkOwogCiAJLyogSW5pdGlh bGl6ZSB0ZW1wb3JhcnkgaGFzaCB0YWJsZSAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKENoZWNr cG9pbnRlclJlcXVlc3QpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2Yoc3RydWN0IENoZWNrcG9p bnRlclNsb3RNYXBwaW5nKTsKLQljdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCi0J aHRhYiA9IGhhc2hfY3JlYXRlKCJDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1ZXVlIiwKLQkJ CQkJICAgQ2hlY2twb2ludGVyU2htZW0tPm51bV9yZXF1ZXN0cywKLQkJCQkJICAgJmN0bCwKLQkJ CQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJaHRhYiA9IGhh c2hfbWFrZShzdHJ1Y3QgQ2hlY2twb2ludGVyU2xvdE1hcHBpbmcsIHJlcXVlc3QsCisJCQkJCSAi Q29tcGFjdENoZWNrcG9pbnRlclJlcXVlc3RRdWV1ZSIsCisJCQkJCSBDaGVja3BvaW50ZXJTaG1l bS0+bnVtX3JlcXVlc3RzKTsKIAogCS8qCiAJICogVGhlIGJhc2ljIGlkZWEgaGVyZSBpcyB0aGF0 IGEgcmVxdWVzdCBjYW4gYmUgc2tpcHBlZCBpZiBpdCdzIGZvbGxvd2VkCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4 IDVlYmQyMzUzZmVkLi5lN2U5OWE2ZWNlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTQ4NCwxNiArNDg0LDkg QEAgcGFfYWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQogCS8qIEZpcnN0IHRpbWUg dGhyb3VnaCwgaW5pdGlhbGl6ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3RhdGUgaGFzaHRhYmxl LiAqLwogCWlmICghUGFyYWxsZWxBcHBseVR4bkhhc2gpCiAJewotCQlIQVNIQ1RMCQljdGw7Ci0K LQkJTWVtU2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKLQkJY3RsLmtleXNpemUgPSBzaXplb2Yo VHJhbnNhY3Rpb25JZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFyYWxsZWxBcHBseVdv cmtlckVudHJ5KTsKLQkJY3RsLmhjeHQgPSBBcHBseUNvbnRleHQ7Ci0KLQkJUGFyYWxsZWxBcHBs eVR4bkhhc2ggPSBoYXNoX2NyZWF0ZSgibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBs eSB3b3JrZXJzIGhhc2giLAotCQkJCQkJCQkJCSAgIDE2LCAmY3RsLAotCQkJCQkJCQkJCSAgIEhB U0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQlQYXJhbGxlbEFwcGx5VHhu SGFzaCA9IGhhc2hfbWFrZV9jeHQoUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5LCB4aWQsCisJCQkJ CQkJCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGhhc2gi LAorCQkJCQkJCQkJCQkgMTYsIEFwcGx5Q29udGV4dCk7CiAJfQogCiAJLyogQ3JlYXRlIGFuIGVu dHJ5IGZvciB0aGUgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IDJkZjkxMDM3OGRjLi4wOTk1MDFhZDU5MyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwpAQCAtMTA0LDgg KzEwNCw2IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQg cmVsb2lkKQogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfcmVsbWFwX2luaXQodm9pZCkKIHsKLQlI QVNIQ1RMCQljdGw7Ci0KIAlpZiAoIUxvZ2ljYWxSZXBSZWxNYXBDb250ZXh0KQogCQlMb2dpY2Fs UmVwUmVsTWFwQ29udGV4dCA9CiAJCQlBbGxvY1NldENvbnRleHRDcmVhdGUoQ2FjaGVNZW1vcnlD b250ZXh0LApAQCAtMTEzLDEyICsxMTEsOSBAQCBsb2dpY2FscmVwX3JlbG1hcF9pbml0KHZvaWQp CiAJCQkJCQkJCSAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CiAKIAkvKiBJbml0aWFsaXplIHRo ZSByZWxhdGlvbiBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKExvZ2ljYWxS ZXBSZWxJZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihMb2dpY2FsUmVwUmVsTWFwRW50cnkp OwotCWN0bC5oY3h0ID0gTG9naWNhbFJlcFJlbE1hcENvbnRleHQ7Ci0KLQlMb2dpY2FsUmVwUmVs TWFwID0gaGFzaF9jcmVhdGUoImxvZ2ljYWxyZXAgcmVsYXRpb24gbWFwIGNhY2hlIiwgMTI4LCAm Y3RsLAotCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsK KwlMb2dpY2FsUmVwUmVsTWFwID0gaGFzaF9tYWtlX2N4dChMb2dpY2FsUmVwUmVsTWFwRW50cnks IHJlbW90ZXJlbC5yZW1vdGVpZCwKKwkJCQkJCQkJCSAibG9naWNhbHJlcCByZWxhdGlvbiBtYXAg Y2FjaGUiLCAxMjgsCisJCQkJCQkJCQkgTG9naWNhbFJlcFJlbE1hcENvbnRleHQpOwogCiAJLyog V2F0Y2ggZm9yIGludmFsaWRhdGlvbiBldmVudHMuICovCiAJQ2FjaGVSZWdpc3RlclJlbGNhY2hl Q2FsbGJhY2sobG9naWNhbHJlcF9yZWxtYXBfaW52YWxpZGF0ZV9jYiwKQEAgLTYxMCw4ICs2MDUs NiBAQCBsb2dpY2FscmVwX3BhcnRtYXBfcmVzZXRfcmVsbWFwKExvZ2ljYWxSZXBSZWxhdGlvbiAq cmVtb3RlcmVsKQogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfcGFydG1hcF9pbml0KHZvaWQpCiB7 Ci0JSEFTSENUTAkJY3RsOwotCiAJaWYgKCFMb2dpY2FsUmVwUGFydE1hcENvbnRleHQpCiAJCUxv Z2ljYWxSZXBQYXJ0TWFwQ29udGV4dCA9CiAJCQlBbGxvY1NldENvbnRleHRDcmVhdGUoQ2FjaGVN ZW1vcnlDb250ZXh0LApAQCAtNjE5LDEyICs2MTIsOSBAQCBsb2dpY2FscmVwX3BhcnRtYXBfaW5p dCh2b2lkKQogCQkJCQkJCQkgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwogCiAJLyogSW5pdGlh bGl6ZSB0aGUgcmVsYXRpb24gaGFzaCB0YWJsZS4gKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihP aWQpOwkvKiBwYXJ0aXRpb24gT0lEICovCi0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihMb2dpY2Fs UmVwUGFydE1hcEVudHJ5KTsKLQljdGwuaGN4dCA9IExvZ2ljYWxSZXBQYXJ0TWFwQ29udGV4dDsK LQotCUxvZ2ljYWxSZXBQYXJ0TWFwID0gaGFzaF9jcmVhdGUoImxvZ2ljYWxyZXAgcGFydGl0aW9u IG1hcCBjYWNoZSIsIDY0LCAmY3RsLAotCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8 IEhBU0hfQ09OVEVYVCk7CisJTG9naWNhbFJlcFBhcnRNYXAgPSBoYXNoX21ha2VfY3h0KExvZ2lj YWxSZXBQYXJ0TWFwRW50cnksIHBhcnRvaWQsCisJCQkJCQkJCQkgICJsb2dpY2FscmVwIHBhcnRp dGlvbiBtYXAgY2FjaGUiLCA2NCwKKwkJCQkJCQkJCSAgTG9naWNhbFJlcFBhcnRNYXBDb250ZXh0 KTsKIAogCS8qIFdhdGNoIGZvciBpbnZhbGlkYXRpb24gZXZlbnRzLiAqLwogCUNhY2hlUmVnaXN0 ZXJSZWxjYWNoZUNhbGxiYWNrKGxvZ2ljYWxyZXBfcGFydG1hcF9pbnZhbGlkYXRlX2NiLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCBh MDI5M2Y2ZWM3Yy4uZmE5M2ExYmJkZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0zMjQsNyArMzI0LDYgQEAgUmVvcmRlckJ1ZmZl ciAqCiBSZW9yZGVyQnVmZmVyQWxsb2NhdGUodm9pZCkKIHsKIAlSZW9yZGVyQnVmZmVyICpidWZm ZXI7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJTWVtb3J5Q29udGV4dCBuZXdfY3R4OwogCiAJQXNz ZXJ0KE15UmVwbGljYXRpb25TbG90ICE9IE5VTEwpOwpAQCAtMzM3LDggKzMzNiw2IEBAIFJlb3Jk ZXJCdWZmZXJBbGxvY2F0ZSh2b2lkKQogCWJ1ZmZlciA9CiAJCShSZW9yZGVyQnVmZmVyICopIE1l bW9yeUNvbnRleHRBbGxvYyhuZXdfY3R4LCBzaXplb2YoUmVvcmRlckJ1ZmZlcikpOwogCi0JbWVt c2V0KCZoYXNoX2N0bCwgMCwgc2l6ZW9mKGhhc2hfY3RsKSk7Ci0KIAlidWZmZXItPmNvbnRleHQg PSBuZXdfY3R4OwogCiAJYnVmZmVyLT5jaGFuZ2VfY29udGV4dCA9IFNsYWJDb250ZXh0Q3JlYXRl KG5ld19jdHgsCkBAIC0zNjcsMTIgKzM2NCw4IEBAIFJlb3JkZXJCdWZmZXJBbGxvY2F0ZSh2b2lk KQogCQkJCQkJCQkJCQkJICBTTEFCX0RFRkFVTFRfQkxPQ0tfU0laRSwKIAkJCQkJCQkJCQkJCSAg U0xBQl9ERUZBVUxUX0JMT0NLX1NJWkUpOwogCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihU cmFuc2FjdGlvbklkKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVvcmRlckJ1ZmZl clRYTkJ5SWRFbnQpOwotCWhhc2hfY3RsLmhjeHQgPSBidWZmZXItPmNvbnRleHQ7Ci0KLQlidWZm ZXItPmJ5X3R4biA9IGhhc2hfY3JlYXRlKCJSZW9yZGVyQnVmZmVyQnlYaWQiLCAxMDAwLCAmaGFz aF9jdGwsCi0JCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsK KwlidWZmZXItPmJ5X3R4biA9IGhhc2hfbWFrZV9jeHQoUmVvcmRlckJ1ZmZlclRYTkJ5SWRFbnQs IHhpZCwKKwkJCQkJCQkJICAgIlJlb3JkZXJCdWZmZXJCeVhpZCIsIDEwMDAsIGJ1ZmZlci0+Y29u dGV4dCk7CiAKIAlidWZmZXItPmJ5X3R4bl9sYXN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklk OwogCWJ1ZmZlci0+YnlfdHhuX2xhc3RfdHhuID0gTlVMTDsKQEAgLTE4MzYsMjIgKzE4MjksMTcg QEAgc3RhdGljIHZvaWQKIFJlb3JkZXJCdWZmZXJCdWlsZFR1cGxlQ2lkSGFzaChSZW9yZGVyQnVm ZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKQogewogCWRsaXN0X2l0ZXIJaXRlcjsKLQlI QVNIQ1RMCQloYXNoX2N0bDsKIAogCWlmICghcmJ0eG5faGFzX2NhdGFsb2dfY2hhbmdlcyh0eG4p IHx8IGRsaXN0X2lzX2VtcHR5KCZ0eG4tPnR1cGxlY2lkcykpCiAJCXJldHVybjsKIAotCWhhc2hf Y3RsLmtleXNpemUgPSBzaXplb2YoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkS2V5KTsKLQloYXNoX2N0 bC5lbnRyeXNpemUgPSBzaXplb2YoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkRW50KTsKLQloYXNoX2N0 bC5oY3h0ID0gcmItPmNvbnRleHQ7Ci0KIAkvKgogCSAqIGNyZWF0ZSB0aGUgaGFzaCB3aXRoIHRo ZSBleGFjdCBudW1iZXIgb2YgdG8tYmUtc3RvcmVkIHR1cGxlY2lkcyBmcm9tCiAJICogdGhlIHN0 YXJ0CiAJICovCiAJdHhuLT50dXBsZWNpZF9oYXNoID0KLQkJaGFzaF9jcmVhdGUoIlJlb3JkZXJC dWZmZXJUdXBsZUNpZCIsIHR4bi0+bnR1cGxlY2lkcywgJmhhc2hfY3RsLAotCQkJCQlIQVNIX0VM RU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwkJaGFzaF9tYWtlX2N4dChSZW9yZGVy QnVmZmVyVHVwbGVDaWRFbnQsIGtleSwKKwkJCQkJICAiUmVvcmRlckJ1ZmZlclR1cGxlQ2lkIiwg dHhuLT5udHVwbGVjaWRzLCByYi0+Y29udGV4dCk7CiAKIAlkbGlzdF9mb3JlYWNoKGl0ZXIsICZ0 eG4tPnR1cGxlY2lkcykKIAl7CkBAIC00OTc0LDE1ICs0OTYyLDEwIEBAIFN0YXJ0dXBSZW9yZGVy QnVmZmVyKHZvaWQpCiBzdGF0aWMgdm9pZAogUmVvcmRlckJ1ZmZlclRvYXN0SW5pdEhhc2goUmVv cmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKIHsKLQlIQVNIQ1RMCQloYXNo X2N0bDsKLQogCUFzc2VydCh0eG4tPnRvYXN0X2hhc2ggPT0gTlVMTCk7CiAKLQloYXNoX2N0bC5r ZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlb3Jk ZXJCdWZmZXJUb2FzdEVudCk7Ci0JaGFzaF9jdGwuaGN4dCA9IHJiLT5jb250ZXh0OwotCXR4bi0+ dG9hc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJSZW9yZGVyQnVmZmVyVG9hc3RIYXNoIiwgNSwgJmhh c2hfY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQp OworCXR4bi0+dG9hc3RfaGFzaCA9IGhhc2hfbWFrZV9jeHQoUmVvcmRlckJ1ZmZlclRvYXN0RW50 LCBjaHVua19pZCwKKwkJCQkJCQkJCSJSZW9yZGVyQnVmZmVyVG9hc3RIYXNoIiwgNSwgcmItPmNv bnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVz eW5jLmMKaW5kZXggNjdlNTc1MjAzODYuLjMxMjczYWQ5ZjU4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTExNyw2ICsxMTcsNyBAQAogI2luY2x1 ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1 ZGUgInV0aWxzL3Jscy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgpAQCAtMzkwLDEyICszOTEsOSBAQCBQcm9jZXNzU3luY2luZ1RhYmxl c0ZvckFwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJICovCiAJaWYgKHRhYmxlX3N0YXRl c19ub3RfcmVhZHkgIT0gTklMICYmICFsYXN0X3N0YXJ0X3RpbWVzKQogCXsKLQkJSEFTSENUTAkJ Y3RsOwotCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBz aXplb2Yoc3RydWN0IHRhYmxlc3luY19zdGFydF90aW1lX21hcHBpbmcpOwotCQlsYXN0X3N0YXJ0 X3RpbWVzID0gaGFzaF9jcmVhdGUoIkxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luYyB3b3Jr ZXIgc3RhcnQgdGltZXMiLAotCQkJCQkJCQkJICAgMjU2LCAmY3RsLCBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTKTsKKwkJbGFzdF9zdGFydF90aW1lcyA9IGhhc2hfbWFrZV9jeHQoc3RydWN0IHRhYmxl c3luY19zdGFydF90aW1lX21hcHBpbmcsIHJlbGlkLAorCQkJCQkJCQkJCSAiTG9naWNhbCByZXBs aWNhdGlvbiB0YWJsZSBzeW5jIHdvcmtlciBzdGFydCB0aW1lcyIsCisJCQkJCQkJCQkJIDI1Niwg VG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9w Z291dHB1dC9wZ291dHB1dC5jCmluZGV4IDllZTg5NDllMDQwLi4wZGNmYmZkZDYwOSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0xOTczLDcgKzE5 NzMsNiBAQCBwZ291dHB1dF9zdHJlYW1fcHJlcGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LAogc3RhdGljIHZvaWQKIGluaXRfcmVsX3N5bmNfY2FjaGUoTWVtb3J5Q29udGV4dCBj YWNoZWN0eCkKIHsKLQlIQVNIQ1RMCQljdGw7CiAJc3RhdGljIGJvb2wgcmVsYXRpb25fY2FsbGJh Y2tzX3JlZ2lzdGVyZWQgPSBmYWxzZTsKIAogCS8qIE5vdGhpbmcgdG8gZG8gaWYgaGFzaCB0YWJs ZSBhbHJlYWR5IGV4aXN0cyAqLwpAQCAtMTk4MSwxMyArMTk4MCw5IEBAIGluaXRfcmVsX3N5bmNf Y2FjaGUoTWVtb3J5Q29udGV4dCBjYWNoZWN0eCkKIAkJcmV0dXJuOwogCiAJLyogTWFrZSBhIG5l dyBoYXNoIHRhYmxlIGZvciB0aGUgY2FjaGUgKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQp OwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVsYXRpb25TeW5jRW50cnkpOwotCWN0bC5oY3h0 ID0gY2FjaGVjdHg7Ci0KLQlSZWxhdGlvblN5bmNDYWNoZSA9IGhhc2hfY3JlYXRlKCJsb2dpY2Fs IHJlcGxpY2F0aW9uIG91dHB1dCByZWxhdGlvbiBjYWNoZSIsCi0JCQkJCQkJCQkxMjgsICZjdGws Ci0JCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0NPTlRFWFQgfCBIQVNIX0JMT0JTKTsKKwlSZWxh dGlvblN5bmNDYWNoZSA9IGhhc2hfbWFrZV9jeHQoUmVsYXRpb25TeW5jRW50cnksIHJlbGlkLAor CQkJCQkJCQkJICAibG9naWNhbCByZXBsaWNhdGlvbiBvdXRwdXQgcmVsYXRpb24gY2FjaGUiLAor CQkJCQkJCQkJICAxMjgsIGNhY2hlY3R4KTsKIAogCUFzc2VydChSZWxhdGlvblN5bmNDYWNoZSAh PSBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3Rh YmxlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUuYwppbmRleCAyM2Q4 NWZkMzJlMi4uOTU2NTM5NDRhOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2J1Zl90YWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl90YWJs ZS5jCkBAIC01MCwxOSArNTAsMTYgQEAgQnVmVGFibGVTaG1lbVNpemUoaW50IHNpemUpCiB2b2lk CiBJbml0QnVmVGFibGUoaW50IHNpemUpCiB7Ci0JSEFTSENUTAkJaW5mbzsKKwlIQVNIT1BUUwlv cHRzID0gezB9OwogCiAJLyogYXNzdW1lIG5vIGxvY2tpbmcgaXMgbmVlZGVkIHlldCAqLwogCiAJ LyogQnVmZmVyVGFnIG1hcHMgdG8gQnVmZmVyICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKEJ1 ZmZlclRhZyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoQnVmZmVyTG9va3VwRW50KTsKLQlp bmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX0JVRkZFUl9QQVJUSVRJT05TOwotCi0JU2hhcmVkQnVm SGFzaCA9IFNobWVtSW5pdEhhc2goIlNoYXJlZCBCdWZmZXIgTG9va3VwIFRhYmxlIiwKLQkJCQkJ CQkJICBzaXplLCBzaXplLAotCQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMgfCBIQVNIX1BBUlRJVElPTiB8IEhBU0hfRklYRURfU0laRSk7CisJb3B0cy5u dW1fcGFydGl0aW9ucyA9IE5VTV9CVUZGRVJfUEFSVElUSU9OUzsKKwlvcHRzLmZpeGVkX3NpemUg PSB0cnVlOworCVNoYXJlZEJ1Zkhhc2ggPSBzaG1lbV9oYXNoX21ha2VfZXh0KEJ1ZmZlckxvb2t1 cEVudCwga2V5LAorCQkJCQkJCQkJCSJTaGFyZWQgQnVmZmVyIExvb2t1cCBUYWJsZSIsCisJCQkJ CQkJCQkJc2l6ZSwgc2l6ZSwgJm9wdHMpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9i dWZtZ3IuYwppbmRleCBhMDM2YzJhYTI3NS4uYTk0Y2M4OTY1NGUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2J1Zm1nci5jCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zbWdy LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtZGVi dWcuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3BzX3N0 YXR1cy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3Jlc293bmVy LmgiCkBAIC00MTAwLDggKzQxMDEsNiBAQCBBdEVPWGFjdF9CdWZmZXJzKGJvb2wgaXNDb21taXQp CiB2b2lkCiBJbml0QnVmZmVyTWFuYWdlckFjY2Vzcyh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hf Y3RsOwotCiAJLyoKIAkgKiBBbiBhZHZpc29yeSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHBpbnMg ZWFjaCBiYWNrZW5kIHNob3VsZCBob2xkLCBiYXNlZAogCSAqIG9uIHNoYXJlZF9idWZmZXJzIGFu ZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgcG9zc2libGUuCkBAIC00MTE0LDEx ICs0MTEzLDkgQEAgSW5pdEJ1ZmZlck1hbmFnZXJBY2Nlc3Modm9pZCkKIAltZW1zZXQoJlByaXZh dGVSZWZDb3VudEFycmF5LCAwLCBzaXplb2YoUHJpdmF0ZVJlZkNvdW50QXJyYXkpKTsKIAltZW1z ZXQoJlByaXZhdGVSZWZDb3VudEFycmF5S2V5cywgMCwgc2l6ZW9mKFByaXZhdGVSZWZDb3VudEFy cmF5S2V5cykpOwogCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihCdWZmZXIpOwotCWhhc2hf Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQcml2YXRlUmVmQ291bnRFbnRyeSk7Ci0KLQlQcml2YXRl UmVmQ291bnRIYXNoID0gaGFzaF9jcmVhdGUoIlByaXZhdGVSZWZDb3VudCIsIDEwMCwgJmhhc2hf Y3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlQcml2YXRlUmVmQ291 bnRIYXNoID0gaGFzaF9tYWtlX2N4dChQcml2YXRlUmVmQ291bnRFbnRyeSwgYnVmZmVyLAorCQkJ CQkJCQkJCSJQcml2YXRlUmVmQ291bnQiLCAxMDAsCisJCQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4 dCk7CiAKIAkvKgogCSAqIEF0UHJvY0V4aXRfQnVmZmVycyBuZWVkcyBMV0xvY2sgYWNjZXNzLCBh bmQgdGhlcmVieSBoYXMgdG8gYmUgY2FsbGVkIGF0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9j YWxidWYuYwppbmRleCBmNmUyYjFhYTI4OC4uNTFmNjU4ZGZjZjYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvbG9jYWxidWYuYwpAQCAtNzI4LDcgKzcyOCw2IEBAIHN0YXRpYyB2b2lkCiBJbml0 TG9jYWxCdWZmZXJzKHZvaWQpCiB7CiAJaW50CQkJbmJ1ZnMgPSBudW1fdGVtcF9idWZmZXJzOwot CUhBU0hDVEwJCWluZm87CiAJaW50CQkJaTsKIAogCS8qCkBAIC03NzksMTMgKzc3OCw5IEBAIElu aXRMb2NhbEJ1ZmZlcnModm9pZCkKIAl9CiAKIAkvKiBDcmVhdGUgdGhlIGxvb2t1cCBoYXNoIHRh YmxlICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKEJ1ZmZlclRhZyk7Ci0JaW5mby5lbnRyeXNp emUgPSBzaXplb2YoTG9jYWxCdWZmZXJMb29rdXBFbnQpOwotCi0JTG9jYWxCdWZIYXNoID0gaGFz aF9jcmVhdGUoIkxvY2FsIEJ1ZmZlciBMb29rdXAgVGFibGUiLAotCQkJCQkJCSAgIG5idWZzLAot CQkJCQkJCSAgICZpbmZvLAotCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCUxv Y2FsQnVmSGFzaCA9IGhhc2hfbWFrZV9jeHQoTG9jYWxCdWZmZXJMb29rdXBFbnQsIGtleSwKKwkJ CQkJCQkJICJMb2NhbCBCdWZmZXIgTG9va3VwIFRhYmxlIiwgbmJ1ZnMsCisJCQkJCQkJCSBUb3BN ZW1vcnlDb250ZXh0KTsKIAogCWlmICghTG9jYWxCdWZIYXNoKQogCQllbG9nKEVSUk9SLCAiY291 bGQgbm90IGluaXRpYWxpemUgbG9jYWwgYnVmZmVyIGhhc2ggdGFibGUiKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv ZmlsZS9yZWluaXQuYwppbmRleCAyNWZhMjE1MTMwOS4uMjZlODEwZTZiNTAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2ZpbGUvcmVpbml0LmMKQEAgLTE3NSw3ICsxNzUsNiBAQCBSZXNldFVubG9nZ2VkUmVsYXRp b25zSW5EYnNwYWNlRGlyKGNvbnN0IGNoYXIgKmRic3BhY2VkaXJuYW1lLCBpbnQgb3ApCiAJaWYg KChvcCAmIFVOTE9HR0VEX1JFTEFUSU9OX0NMRUFOVVApICE9IDApCiAJewogCQlIVEFCCSAgICpo YXNoOwotCQlIQVNIQ1RMCQljdGw7CiAKIAkJLyoKIAkJICogSXQncyBwb3NzaWJsZSB0aGF0IHNv bWVvbmUgY291bGQgY3JlYXRlIGEgdG9uIG9mIHVubG9nZ2VkIHJlbGF0aW9ucwpAQCAtMTg0LDEx ICsxODMsOCBAQCBSZXNldFVubG9nZ2VkUmVsYXRpb25zSW5EYnNwYWNlRGlyKGNvbnN0IGNoYXIg KmRic3BhY2VkaXJuYW1lLCBpbnQgb3ApCiAJCSAqIG5lZWQgdG8gYmUgcmVzZXQuICBPdGhlcndp c2UsIHRoaXMgY2xlYW51cCBvcGVyYXRpb24gd291bGQgYmUKIAkJICogTyhuXjIpLgogCQkgKi8K LQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZih1 bmxvZ2dlZF9yZWxhdGlvbl9lbnRyeSk7Ci0JCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRl eHQ7Ci0JCWhhc2ggPSBoYXNoX2NyZWF0ZSgidW5sb2dnZWQgcmVsYXRpb24gT0lEcyIsIDMyLCAm Y3RsLAotCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJ CWhhc2ggPSBoYXNoX21ha2UodW5sb2dnZWRfcmVsYXRpb25fZW50cnksIHJlbG51bWJlciwKKwkJ CQkJCSAidW5sb2dnZWQgcmVsYXRpb24gT0lEcyIsIDMyKTsKIAogCQkvKiBTY2FuIHRoZSBkaXJl Y3RvcnkuICovCiAJCWRic3BhY2VfZGlyID0gQWxsb2NhdGVEaXIoZGJzcGFjZWRpcm5hbWUpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggZDJmNDcxMGYxNDEuLmI2YThkMWVjNzc2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTI4NCw4ICsyODQsNiBAQCBTaG1lbUFkZHJJc1ZhbGlk KGNvbnN0IHZvaWQgKmFkZHIpCiB2b2lkCiBJbml0U2htZW1JbmRleCh2b2lkKQogewotCUhBU0hD VEwJCWluZm87Ci0KIAkvKgogCSAqIENyZWF0ZSB0aGUgc2hhcmVkIG1lbW9yeSBzaG1lbSBpbmRl eC4KIAkgKgpAQCAtMjk0LDEzICsyOTIsOCBAQCBJbml0U2htZW1JbmRleCh2b2lkKQogCSAqIGlu aXRpYWxpemluZyB0aGUgU2htZW1JbmRleCBpdHNlbGYuICBUaGUgc3BlY2lhbCAiU2htZW1JbmRl eCIgaGFzaAogCSAqIHRhYmxlIG5hbWUgd2lsbCB0ZWxsIFNobWVtSW5pdFN0cnVjdCB0byBmYWtl IGl0LgogCSAqLwotCWluZm8ua2V5c2l6ZSA9IFNITUVNX0lOREVYX0tFWVNJWkU7Ci0JaW5mby5l bnRyeXNpemUgPSBzaXplb2YoU2htZW1JbmRleEVudCk7Ci0KLQlTaG1lbUluZGV4ID0gU2htZW1J bml0SGFzaCgiU2htZW1JbmRleCIsCi0JCQkJCQkJICAgU0hNRU1fSU5ERVhfU0laRSwgU0hNRU1f SU5ERVhfU0laRSwKLQkJCQkJCQkgICAmaW5mbywKLQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNI X1NUUklOR1MpOworCVNobWVtSW5kZXggPSBzaG1lbV9oYXNoX21ha2UoU2htZW1JbmRleEVudCwg a2V5LCAiU2htZW1JbmRleCIsCisJCQkJCQkJCSBTSE1FTV9JTkRFWF9TSVpFLCBTSE1FTV9JTkRF WF9TSVpFKTsKIH0KIAogLyoKQEAgLTM2OSw2ICszNjIsMjggQEAgU2htZW1Jbml0SGFzaChjb25z dCBjaGFyICpuYW1lLAkJLyogdGFibGUgc3RyaW5nIG5hbWUgZm9yIHNobWVtIGluZGV4ICovCiAJ cmV0dXJuIGhhc2hfY3JlYXRlKG5hbWUsIGluaXRfc2l6ZSwgaW5mb1AsIGhhc2hfZmxhZ3MpOwog fQogCisvKgorICogSW1wbGVtZW50YXRpb24gZnVuY3Rpb24gZm9yIHNobWVtX2hhc2hfbWFrZSBt YWNyb3MuCisgKgorICogQ3JlYXRlcyBhIHNoYXJlZCBtZW1vcnkgaGFzaCB0YWJsZSB3aXRoIHNp bXBsaWZpZWQgcGFyYW1ldGVycy4KKyAqIFBhc3MgTlVMTCBmb3Igb3B0cyB0byB1c2UgYWxsIGRl ZmF1bHRzLgorICovCitIVEFCICoKK3NobWVtX2hhc2hfbWFrZV9pbXBsKGNvbnN0IGNoYXIgKm5h bWUsIGludDY0IGluaXRfc2l6ZSwgaW50NjQgbWF4X3NpemUsCisJCQkJCSBTaXplIGtleXNpemUs IFNpemUgZW50cnlzaXplLCBib29sIHN0cmluZ19rZXksCisJCQkJCSBjb25zdCBIQVNIT1BUUyAq b3B0cykKK3sKKwlIQVNIQ1RMCQljdGw7CisJaW50CQkJZmxhZ3M7CisKKwkvKiBTaGFyZWQgbWVt b3J5IGhhc2ggdGFibGVzIHVzZSBTaG1lbUFsbG9jTm9FcnJvciwgbm90IGEgY3VzdG9tIGFsbG9j YXRvciAqLworCUFzc2VydChvcHRzID09IE5VTEwgfHwgb3B0cy0+YWxsb2MgPT0gTlVMTCk7CisK KwloYXNoX29wdHNfaW5pdCgmY3RsLCAmZmxhZ3MsIGtleXNpemUsIGVudHJ5c2l6ZSwgc3RyaW5n X2tleSwgb3B0cyk7CisKKwlyZXR1cm4gU2htZW1Jbml0SGFzaChuYW1lLCBpbml0X3NpemUsIG1h eF9zaXplLCAmY3RsLCBmbGFncyk7Cit9CisKIC8qCiAgKiBTaG1lbUluaXRTdHJ1Y3QgLS0gQ3Jl YXRlL2F0dGFjaCB0byBhIHN0cnVjdHVyZSBpbiBzaGFyZWQgbWVtb3J5LgogICoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYwppbmRleCBhZmZmYWI3NzEwNi4uN2E5NmUzZTIwMzkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdl L3N0YW5kYnkuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMv aW5qZWN0aW9uX3BvaW50LmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRl ICJ1dGlscy9wc19zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAjaW5jbHVk ZSAidXRpbHMvdGltZXN0YW1wLmgiCkBAIC05NSw3ICs5Niw2IEBAIHZvaWQKIEluaXRSZWNvdmVy eVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCkKIHsKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2 eGlkOwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJQXNzZXJ0KFJlY292ZXJ5TG9ja0hhc2ggPT0g TlVMTCk7CS8qIGRvbid0IHJ1biB0aGlzIHR3aWNlICovCiAKQEAgLTEwMywxOCArMTAzLDEyIEBA IEluaXRSZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCkKIAkgKiBJbml0aWFsaXpl IHRoZSBoYXNoIHRhYmxlcyBmb3IgdHJhY2tpbmcgdGhlIGxvY2tzIGhlbGQgYnkgZWFjaAogCSAq IHRyYW5zYWN0aW9uLgogCSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoeGxfc3RhbmRi eV9sb2NrKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVjb3ZlcnlMb2NrRW50cnkp OwotCVJlY292ZXJ5TG9ja0hhc2ggPSBoYXNoX2NyZWF0ZSgiUmVjb3ZlcnlMb2NrSGFzaCIsCi0J CQkJCQkJCSAgIDY0LAotCQkJCQkJCQkgICAmaGFzaF9jdGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxF TSB8IEhBU0hfQkxPQlMpOwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25J ZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlY292ZXJ5TG9ja1hpZEVudHJ5KTsK LQlSZWNvdmVyeUxvY2tYaWRIYXNoID0gaGFzaF9jcmVhdGUoIlJlY292ZXJ5TG9ja1hpZEhhc2gi LAotCQkJCQkJCQkJICA2NCwKLQkJCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCQkJICBIQVNI X0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlSZWNvdmVyeUxvY2tIYXNoID0gaGFzaF9tYWtlX2N4dChS ZWNvdmVyeUxvY2tFbnRyeSwga2V5LAorCQkJCQkJCQkJICJSZWNvdmVyeUxvY2tIYXNoIiwgNjQs CisJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CisJUmVjb3ZlcnlMb2NrWGlkSGFzaCA9IGhh c2hfbWFrZV9jeHQoUmVjb3ZlcnlMb2NrWGlkRW50cnksIHhpZCwKKwkJCQkJCQkJCQkiUmVjb3Zl cnlMb2NrWGlkSGFzaCIsIDY0LAorCQkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyoK IAkgKiBJbml0aWFsaXplIHNoYXJlZCBpbnZhbGlkYXRpb24gbWFuYWdlbWVudCBmb3IgU3RhcnR1 cCBwcm9jZXNzLCBiZWluZwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xv Y2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggN2YwY2Q3ODRmNzku LjNmMjBjODU4ODFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTQ0Myw3ICs0NDMsNyBA QCBzdGF0aWMgdm9pZCBHZXRTaW5nbGVQcm9jQmxvY2tlclN0YXR1c0RhdGEoUEdQUk9DICpibG9j a2VkX3Byb2MsCiB2b2lkCiBMb2NrTWFuYWdlclNobWVtSW5pdCh2b2lkKQogewotCUhBU0hDVEwJ CWluZm87CisJSEFTSE9QVFMJb3B0czsKIAlpbnQ2NAkJaW5pdF90YWJsZV9zaXplLAogCQkJCW1h eF90YWJsZV9zaXplOwogCWJvb2wJCWZvdW5kOwpAQCAtNDU5LDE1ICs0NTksMTEgQEAgTG9ja01h bmFnZXJTaG1lbUluaXQodm9pZCkKIAkgKiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBMT0NLIHN0 cnVjdHMuICBUaGlzIHN0b3JlcyBwZXItbG9ja2VkLW9iamVjdAogCSAqIGluZm9ybWF0aW9uLgog CSAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9 IHNpemVvZihMT0NLKTsKLQlpbmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9O UzsKLQotCUxvY2tNZXRob2RMb2NrSGFzaCA9IFNobWVtSW5pdEhhc2goIkxPQ0sgaGFzaCIsCi0J CQkJCQkJCQkgICBpbml0X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkgICBtYXhfdGFibGVfc2l6ZSwK LQkJCQkJCQkJCSAgICZpbmZvLAotCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8 IEhBU0hfUEFSVElUSU9OKTsKKwlNZW1TZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0 cy5udW1fcGFydGl0aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElPTlM7CisJTG9ja01ldGhvZExvY2tI YXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChMT0NLLCB0YWcsICJMT0NLIGhhc2giLAorCQkJCQkJ CQkJCQkgaW5pdF90YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJCQkJCQkJICZvcHRz KTsKIAogCS8qIEFzc3VtZSBhbiBhdmVyYWdlIG9mIDIgaG9sZGVycyBwZXIgbG9jayAqLwogCW1h eF90YWJsZV9zaXplICo9IDI7CkBAIC00NzcsMTYgKzQ3MywxMiBAQCBMb2NrTWFuYWdlclNobWVt SW5pdCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIFBST0NMT0NLIHN0cnVjdHMu ICBUaGlzIHN0b3JlcwogCSAqIHBlci1sb2NrLXBlci1ob2xkZXIgaW5mb3JtYXRpb24uCiAJICov Ci0JaW5mby5rZXlzaXplID0gc2l6ZW9mKFBST0NMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9 IHNpemVvZihQUk9DTE9DSyk7Ci0JaW5mby5oYXNoID0gcHJvY2xvY2tfaGFzaDsKLQlpbmZvLm51 bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9OUzsKLQotCUxvY2tNZXRob2RQcm9jTG9j a0hhc2ggPSBTaG1lbUluaXRIYXNoKCJQUk9DTE9DSyBoYXNoIiwKLQkJCQkJCQkJCQkgICBpbml0 X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJICAgbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJICAg JmluZm8sCi0JCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfUEFS VElUSU9OKTsKKwlNZW1TZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0cy5oYXNoID0g cHJvY2xvY2tfaGFzaDsKKwlvcHRzLm51bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9O UzsKKwlMb2NrTWV0aG9kUHJvY0xvY2tIYXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChQUk9DTE9D SywgdGFnLCAiUFJPQ0xPQ0sgaGFzaCIsCisJCQkJCQkJCQkJCQkgaW5pdF90YWJsZV9zaXplLCBt YXhfdGFibGVfc2l6ZSwKKwkJCQkJCQkJCQkJCSAmb3B0cyk7CiAKIAkvKgogCSAqIEFsbG9jYXRl IGZhc3QtcGF0aCBzdHJ1Y3R1cmVzLgpAQCAtNTA4LDE1ICs1MDAsOSBAQCBJbml0TG9ja01hbmFn ZXJBY2Nlc3Modm9pZCkKIAkgKiBBbGxvY2F0ZSBub24tc2hhcmVkIGhhc2ggdGFibGUgZm9yIExP Q0FMTE9DSyBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgbG9jawogCSAqIGNvdW50cyBhbmQgcmVzb3Vy Y2Ugb3duZXIgaW5mb3JtYXRpb24uCiAJICovCi0JSEFTSENUTAkJaW5mbzsKLQotCWluZm8ua2V5 c2l6ZSA9IHNpemVvZihMT0NBTExPQ0tUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKExP Q0FMTE9DSyk7Ci0KLQlMb2NrTWV0aG9kTG9jYWxIYXNoID0gaGFzaF9jcmVhdGUoIkxPQ0FMTE9D SyBoYXNoIiwKLQkJCQkJCQkJCSAgMTYsCi0JCQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCQkJICBI QVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlMb2NrTWV0aG9kTG9jYWxIYXNoID0gaGFzaF9tYWtl X2N4dChMT0NBTExPQ0ssIHRhZywKKwkJCQkJCQkJCQkiTE9DQUxMT0NLIGhhc2giLCAxNiwKKwkJ CQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogCkBAIC0zMzk0LDIwICszMzgwLDEzIEBA IENoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2Nrcyh2b2lkKQogCQlib29sCQl4YWN0TG9jazsJLyog aXMgYW55IGxvY2ttb2RlIGhlbGQgYXQgeGFjdCBsZXZlbD8gKi8KIAl9IFBlckxvY2tUYWdFbnRy eTsKIAotCUhBU0hDVEwJCWhhc2hfY3RsOwogCUhUQUIJICAgKmxvY2todGFiOwogCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7CiAJTE9DQUxMT0NLICAqbG9jYWxsb2NrOwogCiAJLyogQ3JlYXRlIGEg bG9jYWwgaGFzaCB0YWJsZSBrZXllZCBieSBMT0NLVEFHIG9ubHkgKi8KLQloYXNoX2N0bC5rZXlz aXplID0gc2l6ZW9mKExPQ0tUQUcpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQZXJM b2NrVGFnRW50cnkpOwotCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQot CWxvY2todGFiID0gaGFzaF9jcmVhdGUoIkNoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2NrcyB0YWJs ZSIsCi0JCQkJCQkgICAyNTYsIC8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUgKi8KLQkJCQkJCSAg ICZoYXNoX2N0bCwKLQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRF WFQpOworCWxvY2todGFiID0gaGFzaF9tYWtlKFBlckxvY2tUYWdFbnRyeSwgbG9jaywKKwkJCQkJ CSAiQ2hlY2tGb3JTZXNzaW9uQW5kWGFjdExvY2tzIHRhYmxlIiwgMjU2KTsKIAogCS8qIFNjYW4g bG9jYWwgbG9jayB0YWJsZSB0byBmaW5kIGVudHJpZXMgZm9yIGVhY2ggTE9DS1RBRyAqLwogCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhvZExvY2FsSGFzaCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbHdsb2NrLmMKaW5kZXggNmE5Zjg2ZDUwMjUuLjBhZmM3Y2FlZWVlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2x3bG9jay5jCkBAIC0yODUsNyArMjg1LDYgQEAgc3RhdGljIGx3bG9ja19zdGF0cyAq IGdldF9sd2xvY2tfc3RhdHNfZW50cnkoTFdMb2NrICpsb2NrKTsKIHN0YXRpYyB2b2lkCiBpbml0 X2x3bG9ja19zdGF0cyh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKIAlzdGF0aWMgTWVtb3J5Q29u dGV4dCBsd2xvY2tfc3RhdHNfY3h0ID0gTlVMTDsKIAlzdGF0aWMgYm9vbCBleGl0X3JlZ2lzdGVy ZWQgPSBmYWxzZTsKIApAQCAtMzA1LDExICszMDQsOCBAQCBpbml0X2x3bG9ja19zdGF0cyh2b2lk KQogCQkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CiAJTWVtb3J5Q29udGV4dEFs bG93SW5Dcml0aWNhbFNlY3Rpb24obHdsb2NrX3N0YXRzX2N4dCwgdHJ1ZSk7CiAKLQljdGwua2V5 c2l6ZSA9IHNpemVvZihsd2xvY2tfc3RhdHNfa2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9m KGx3bG9ja19zdGF0cyk7Ci0JY3RsLmhjeHQgPSBsd2xvY2tfc3RhdHNfY3h0OwotCWx3bG9ja19z dGF0c19odGFiID0gaGFzaF9jcmVhdGUoImx3bG9jayBzdGF0cyIsIDE2Mzg0LCAmY3RsLAotCQkJ CQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJbHdsb2NrX3N0 YXRzX2h0YWIgPSBoYXNoX21ha2VfY3h0KGx3bG9ja19zdGF0cywga2V5LAorCQkJCQkJCQkJICAi bHdsb2NrIHN0YXRzIiwgMTYzODQsIGx3bG9ja19zdGF0c19jeHQpOwogCWlmICghZXhpdF9yZWdp c3RlcmVkKQogCXsKIAkJb25fc2htZW1fZXhpdChwcmludF9sd2xvY2tfc3RhdHMsIDApOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IGZlNzVlYWQzNTAxLi45ZjM3NzliOWFl YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAtMjEyLDYgKzIxMiw3IEBA CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXku aCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIK IApAQCAtMTE0NCw3ICsxMTQ1LDcgQEAgQ2hlY2tQb2ludFByZWRpY2F0ZSh2b2lkKQogdm9pZAog UHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogewotCUhBU0hDVEwJCWluZm87CisJSEFTSE9Q VFMJb3B0czsKIAlpbnQ2NAkJbWF4X3RhYmxlX3NpemU7CiAJU2l6ZQkJcmVxdWVzdFNpemU7CiAJ Ym9vbAkJZm91bmQ7CkBAIC0xMTYzLDE2ICsxMTY0LDEzIEBAIFByZWRpY2F0ZUxvY2tTaG1lbUlu aXQodm9pZCkKIAkgKiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBQUkVESUNBVEVMT0NLVEFSR0VU IHN0cnVjdHMuICBUaGlzIHN0b3JlcwogCSAqIHBlci1wcmVkaWNhdGUtbG9jay10YXJnZXQgaW5m b3JtYXRpb24uCiAJICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJH RVRUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJHRVQpOwot CWluZm8ubnVtX3BhcnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOwotCi0J UHJlZGljYXRlTG9ja1RhcmdldEhhc2ggPSBTaG1lbUluaXRIYXNoKCJQUkVESUNBVEVMT0NLVEFS R0VUIGhhc2giLAotCQkJCQkJCQkJCQltYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCQkJbWF4X3Rh YmxlX3NpemUsCi0JCQkJCQkJCQkJCSZpbmZvLAotCQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNI X0JMT0JTIHwKLQkJCQkJCQkJCQkJSEFTSF9QQVJUSVRJT04gfCBIQVNIX0ZJWEVEX1NJWkUpOwor CU1lbVNldCgmb3B0cywgMCwgc2l6ZW9mKG9wdHMpKTsKKwlvcHRzLm51bV9wYXJ0aXRpb25zID0g TlVNX1BSRURJQ0FURUxPQ0tfUEFSVElUSU9OUzsKKwlvcHRzLmZpeGVkX3NpemUgPSB0cnVlOwor CVByZWRpY2F0ZUxvY2tUYXJnZXRIYXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChQUkVESUNBVEVM T0NLVEFSR0VULCB0YWcsCisJCQkJCQkJCQkJCQkgICJQUkVESUNBVEVMT0NLVEFSR0VUIGhhc2gi LAorCQkJCQkJCQkJCQkJICBtYXhfdGFibGVfc2l6ZSwgbWF4X3RhYmxlX3NpemUsCisJCQkJCQkJ CQkJCQkgICZvcHRzKTsKIAogCS8qCiAJICogUmVzZXJ2ZSBhIGR1bW15IGVudHJ5IGluIHRoZSBo YXNoIHRhYmxlOyB3ZSB1c2UgaXQgdG8gbWFrZSBzdXJlIHRoZXJlJ3MKQEAgLTExOTUsMjAgKzEx OTMsMTcgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2gg dGFibGUgZm9yIFBSRURJQ0FURUxPQ0sgc3RydWN0cy4gIFRoaXMgc3RvcmVzIHBlcgogCSAqIHhh Y3QtbG9jay1vZi1hLXRhcmdldCBpbmZvcm1hdGlvbi4KIAkgKi8KLQlpbmZvLmtleXNpemUgPSBz aXplb2YoUFJFRElDQVRFTE9DS1RBRyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoUFJFRElD QVRFTE9DSyk7Ci0JaW5mby5oYXNoID0gcHJlZGljYXRlbG9ja19oYXNoOwotCWluZm8ubnVtX3Bh cnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOwotCiAJLyogQXNzdW1lIGFu IGF2ZXJhZ2Ugb2YgMiB4YWN0cyBwZXIgdGFyZ2V0ICovCiAJbWF4X3RhYmxlX3NpemUgKj0gMjsK IAotCVByZWRpY2F0ZUxvY2tIYXNoID0gU2htZW1Jbml0SGFzaCgiUFJFRElDQVRFTE9DSyBoYXNo IiwKLQkJCQkJCQkJCSAgbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkgIG1heF90YWJsZV9zaXpl LAotCQkJCQkJCQkJICAmaW5mbywKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElP TiB8Ci0JCQkJCQkJCQkgIEhBU0hfUEFSVElUSU9OIHwgSEFTSF9GSVhFRF9TSVpFKTsKKwlNZW1T ZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0cy5oYXNoID0gcHJlZGljYXRlbG9ja19o YXNoOworCW9wdHMubnVtX3BhcnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05T OworCW9wdHMuZml4ZWRfc2l6ZSA9IHRydWU7CisJUHJlZGljYXRlTG9ja0hhc2ggPSBzaG1lbV9o YXNoX21ha2VfZXh0KFBSRURJQ0FURUxPQ0ssIHRhZywKKwkJCQkJCQkJCQkJIlBSRURJQ0FURUxP Q0sgaGFzaCIsCisJCQkJCQkJCQkJCW1heF90YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6ZSwKKwkJ CQkJCQkJCQkJJm9wdHMpOwogCiAJLyoKIAkgKiBDb21wdXRlIHNpemUgZm9yIHNlcmlhbGl6YWJs ZSB0cmFuc2FjdGlvbiBoYXNodGFibGUuIE5vdGUgdGhlc2UKQEAgLTEyODIsMTUgKzEyNzcsMTIg QEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUg Zm9yIFNFUklBTElaQUJMRVhJRCBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgcGVyLXhpZAogCSAqIGlu Zm9ybWF0aW9uIGZvciBzZXJpYWxpemFibGUgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUgYWNjZXNz ZWQgZGF0YS4KIAkgKi8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoU0VSSUFMSVpBQkxFWElEVEFH KTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihTRVJJQUxJWkFCTEVYSUQpOwotCi0JU2VyaWFs aXphYmxlWGlkSGFzaCA9IFNobWVtSW5pdEhhc2goIlNFUklBTElaQUJMRVhJRCBoYXNoIiwKLQkJ CQkJCQkJCQltYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCQltYXhfdGFibGVfc2l6ZSwKLQkJCQkJ CQkJCQkmaW5mbywKLQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwKLQkJCQkJCQkJ CQlIQVNIX0ZJWEVEX1NJWkUpOworCU1lbVNldCgmb3B0cywgMCwgc2l6ZW9mKG9wdHMpKTsKKwlv cHRzLmZpeGVkX3NpemUgPSB0cnVlOworCVNlcmlhbGl6YWJsZVhpZEhhc2ggPSBzaG1lbV9oYXNo X21ha2VfZXh0KFNFUklBTElaQUJMRVhJRCwgdGFnLAorCQkJCQkJCQkJCQkgICJTRVJJQUxJWkFC TEVYSUQgaGFzaCIsCisJCQkJCQkJCQkJCSAgbWF4X3RhYmxlX3NpemUsIG1heF90YWJsZV9zaXpl LAorCQkJCQkJCQkJCQkgICZvcHRzKTsKIAogCS8qCiAJICogQWxsb2NhdGUgc3BhY2UgZm9yIHRy YWNraW5nIHJ3LWNvbmZsaWN0cyBpbiBsaXN0cyBhdHRhY2hlZCB0byB0aGUKQEAgLTE5MzcsMTYg KzE5MjksMTIgQEAgR2V0U2VyaWFsaXphYmxlVHJhbnNhY3Rpb25TbmFwc2hvdEludChTbmFwc2hv dCBzbmFwc2hvdCwKIHN0YXRpYyB2b2lkCiBDcmVhdGVMb2NhbFByZWRpY2F0ZUxvY2tIYXNoKHZv aWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KIAkvKiBJbml0aWFsaXplIHRoZSBiYWNrZW5k LWxvY2FsIGhhc2ggdGFibGUgb2YgcGFyZW50IGxvY2tzICovCiAJQXNzZXJ0KExvY2FsUHJlZGlj YXRlTG9ja0hhc2ggPT0gTlVMTCk7Ci0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihQUkVESUNB VEVMT0NLVEFSR0VUVEFHKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoTE9DQUxQUkVE SUNBVEVMT0NLKTsKLQlMb2NhbFByZWRpY2F0ZUxvY2tIYXNoID0gaGFzaF9jcmVhdGUoIkxvY2Fs IHByZWRpY2F0ZSBsb2NrIiwKLQkJCQkJCQkJCQkgbWF4X3ByZWRpY2F0ZV9sb2Nrc19wZXJfeGFj dCwKLQkJCQkJCQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JM T0JTKTsKKwlMb2NhbFByZWRpY2F0ZUxvY2tIYXNoID0gaGFzaF9tYWtlX2N4dChMT0NBTFBSRURJ Q0FURUxPQ0ssIHRhZywKKwkJCQkJCQkJCQkgICAiTG9jYWwgcHJlZGljYXRlIGxvY2siLAorCQkJ CQkJCQkJCSAgIG1heF9wcmVkaWNhdGVfbG9ja3NfcGVyX3hhY3QsCisJCQkJCQkJCQkJICAgVG9w TWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L3NtZ3Ivc21nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwppbmRleCA4OTQz NTI4ZmUxYy4uNjgwZGE1MDQ4ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21n ci9zbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwpAQCAtNzMsNiAr NzMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFy Y2guaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCiAKIAogLyoKQEAgLTI1MCwxMiArMjUxLDkgQEAgc21ncm9wZW4oUmVsRmlsZUxvY2F0b3Ig cmxvY2F0b3IsIFByb2NOdW1iZXIgYmFja2VuZCkKIAlpZiAoU01nclJlbGF0aW9uSGFzaCA9PSBO VUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBoYXNoIHRh YmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwua2V5c2l6ZSA9IHNpemVvZihSZWxGaWxl TG9jYXRvckJhY2tlbmQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNNZ3JSZWxhdGlvbkRh dGEpOwotCQlTTWdyUmVsYXRpb25IYXNoID0gaGFzaF9jcmVhdGUoInNtZ3IgcmVsYXRpb24gdGFi bGUiLCA0MDAsCi0JCQkJCQkJCQkgICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJ U01nclJlbGF0aW9uSGFzaCA9IGhhc2hfbWFrZV9jeHQoU01nclJlbGF0aW9uRGF0YSwgc21ncl9y bG9jYXRvciwKKwkJCQkJCQkJCQkgInNtZ3IgcmVsYXRpb24gdGFibGUiLCA0MDAsCisJCQkJCQkJ CQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCQlkbGlzdF9pbml0KCZ1bnBpbm5lZF9yZWxucyk7CiAJ fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwppbmRleCBiMWFjY2M2OGI5NS4uMDFhY2IzMGYxYmIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwpAQCAtMTMwLDggKzEzMCw2IEBAIEluaXRTeW5jKHZv aWQpCiAJICovCiAJaWYgKCFJc1VuZGVyUG9zdG1hc3RlciB8fCBBbUNoZWNrcG9pbnRlclByb2Nl c3MoKSkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCiAJCS8qCiAJCSAqIFhYWDogVGhlIGNo ZWNrcG9pbnRlciBuZWVkcyB0byBhZGQgZW50cmllcyB0byB0aGUgcGVuZGluZyBvcHMgdGFibGUK IAkJICogd2hlbiBhYnNvcmJpbmcgZnN5bmMgcmVxdWVzdHMuICBUaGF0IGlzIGRvbmUgd2l0aGlu IGEgY3JpdGljYWwKQEAgLTE0NiwxMyArMTQ0LDggQEAgSW5pdFN5bmModm9pZCkKIAkJCQkJCQkJ CQkJICBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAkJTWVtb3J5Q29udGV4dEFsbG93SW5Dcml0 aWNhbFNlY3Rpb24ocGVuZGluZ09wc0N4dCwgdHJ1ZSk7CiAKLQkJaGFzaF9jdGwua2V5c2l6ZSA9 IHNpemVvZihGaWxlVGFnKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFBlbmRpbmdG c3luY0VudHJ5KTsKLQkJaGFzaF9jdGwuaGN4dCA9IHBlbmRpbmdPcHNDeHQ7Ci0JCXBlbmRpbmdP cHMgPSBoYXNoX2NyZWF0ZSgiUGVuZGluZyBPcHMgVGFibGUiLAotCQkJCQkJCQkgMTAwTCwKLQkJ CQkJCQkJICZoYXNoX2N0bCwKLQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNI X0NPTlRFWFQpOworCQlwZW5kaW5nT3BzID0gaGFzaF9tYWtlX2N4dChQZW5kaW5nRnN5bmNFbnRy eSwgdGFnLAorCQkJCQkJCQkgICAiUGVuZGluZyBPcHMgVGFibGUiLCAxMDBMLCBwZW5kaW5nT3Bz Q3h0KTsKIAkJcGVuZGluZ1VubGlua3MgPSBOSUw7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5 cGFuYWx5emUuYwppbmRleCAwYzUxM2Q2OTRlNy4uYzJmM2I2MzI2NWQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3RzZWFy Y2gvdHNfdHlwYW5hbHl6ZS5jCkBAIC0xNDksNyArMTQ5LDYgQEAgY29tcHV0ZV90c3ZlY3Rvcl9z dGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLAogCiAJLyogVGhpcyBpcyBEIGZyb20gdGhlIExDIGFs Z29yaXRobS4gKi8KIAlIVEFCCSAgICpsZXhlbWVzX3RhYjsKLQlIQVNIQ1RMCQloYXNoX2N0bDsK IAlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7CiAKIAkvKiBUaGlzIGlzIHRoZSBjdXJyZW50 IGJ1Y2tldCBudW1iZXIgZnJvbSB0aGUgTEMgYWxnb3JpdGhtICovCkBAIC0xODAsMTUgKzE3OSw5 IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywKIAkgKiB3b3Jy eSBhYm91dCBvdmVyZmxvd2luZyB0aGUgaW5pdGlhbCBzaXplLiBBbHNvIHdlIGRvbid0IG5lZWQg dG8gcGF5IGFueQogCSAqIGF0dGVudGlvbiB0byBsb2NraW5nIGFuZCBtZW1vcnkgbWFuYWdlbWVu dC4KIAkgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKExleGVtZUhhc2hLZXkpOwotCWhh c2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihUcmFja0l0ZW0pOwotCWhhc2hfY3RsLmhhc2ggPSBs ZXhlbWVfaGFzaDsKLQloYXNoX2N0bC5tYXRjaCA9IGxleGVtZV9tYXRjaDsKLQloYXNoX2N0bC5o Y3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JbGV4ZW1lc190YWIgPSBoYXNoX2NyZWF0ZSgi QW5hbHl6ZWQgbGV4ZW1lcyB0YWJsZSIsCi0JCQkJCQkJICBudW1fbWNlbGVtLAotCQkJCQkJCSAg Jmhhc2hfY3RsLAotCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09N UEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJbGV4ZW1lc190YWIgPSBoYXNoX21ha2VfZm4oVHJhY2tJ dGVtLCBrZXksCisJCQkJCQkJICAgIkFuYWx5emVkIGxleGVtZXMgdGFibGUiLCBudW1fbWNlbGVt LAorCQkJCQkJCSAgIGxleGVtZV9oYXNoLCBsZXhlbWVfbWF0Y2gpOwogCiAJLyogSW5pdGlhbGl6 ZSBjb3VudGVycy4gKi8KIAliX2N1cnJlbnQgPSAxOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv d2FpdF9ldmVudC5jCmluZGV4IGU0ZjJjNDQwMjU3Li5lNWFjOTU2ZGFmMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMTE5LDcgKzExOSw2IEBAIHZvaWQKIFdh aXRFdmVudEN1c3RvbVNobWVtSW5pdCh2b2lkKQogewogCWJvb2wJCWZvdW5kOwotCUhBU0hDVEwJ CWluZm87CiAKIAlXYWl0RXZlbnRDdXN0b21Db3VudGVyID0gKFdhaXRFdmVudEN1c3RvbUNvdW50 ZXJEYXRhICopCiAJCVNobWVtSW5pdFN0cnVjdCgiV2FpdEV2ZW50Q3VzdG9tQ291bnRlckRhdGEi LApAQCAtMTMzLDI0ICsxMzIsMTggQEAgV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQpCiAJ fQogCiAJLyogaW5pdGlhbGl6ZSBvciBhdHRhY2ggdGhlIGhhc2ggdGFibGVzIHRvIHN0b3JlIGN1 c3RvbSB3YWl0IGV2ZW50cyAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZih1aW50MzIpOwotCWlu Zm8uZW50cnlzaXplID0gc2l6ZW9mKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlJbmZvKTsKIAlXYWl0 RXZlbnRDdXN0b21IYXNoQnlJbmZvID0KLQkJU2htZW1Jbml0SGFzaCgiV2FpdEV2ZW50Q3VzdG9t IGhhc2ggYnkgd2FpdCBldmVudCBpbmZvcm1hdGlvbiIsCi0JCQkJCSAgV0FJVF9FVkVOVF9DVVNU T01fSEFTSF9JTklUX1NJWkUsCi0JCQkJCSAgV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9NQVhfU0la RSwKLQkJCQkJICAmaW5mbywKLQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJc2ht ZW1faGFzaF9tYWtlKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlJbmZvLCB3YWl0X2V2ZW50X2luZm8s CisJCQkJCQkiV2FpdEV2ZW50Q3VzdG9tIGhhc2ggYnkgd2FpdCBldmVudCBpbmZvcm1hdGlvbiIs CisJCQkJCQlXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX0lOSVRfU0laRSwKKwkJCQkJCVdBSVRfRVZF TlRfQ1VTVE9NX0hBU0hfTUFYX1NJWkUpOwogCiAJLyoga2V5IGlzIGEgTlVMTC10ZXJtaW5hdGVk IHN0cmluZyAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihjaGFyW05BTUVEQVRBTEVOXSk7Ci0J aW5mby5lbnRyeXNpemUgPSBzaXplb2YoV2FpdEV2ZW50Q3VzdG9tRW50cnlCeU5hbWUpOwogCVdh aXRFdmVudEN1c3RvbUhhc2hCeU5hbWUgPQotCQlTaG1lbUluaXRIYXNoKCJXYWl0RXZlbnRDdXN0 b20gaGFzaCBieSBuYW1lIiwKLQkJCQkJICBXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX0lOSVRfU0la RSwKLQkJCQkJICBXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX01BWF9TSVpFLAotCQkJCQkgICZpbmZv LAotCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJCXNobWVtX2hhc2hfbWFrZShX YWl0RXZlbnRDdXN0b21FbnRyeUJ5TmFtZSwgd2FpdF9ldmVudF9uYW1lLAorCQkJCQkJIldhaXRF dmVudEN1c3RvbSBoYXNoIGJ5IG5hbWUiLAorCQkJCQkJV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9J TklUX1NJWkUsCisJCQkJCQlXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX01BWF9TSVpFKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jCmluZGV4IDdiYjAwMGRk YmQzLi5iZGM3ZTIyMzdmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5 X3R5cGFuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6 ZS5jCkBAIC0yMjMsNyArMjIzLDYgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMg KnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAKIAkvKiBUaGlzIGlzIEQg ZnJvbSB0aGUgTEMgYWxnb3JpdGhtLiAqLwogCUhUQUIJICAgKmVsZW1lbnRzX3RhYjsKLQlIQVNI Q1RMCQllbGVtX2hhc2hfY3RsOwogCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKIAogCS8q IFRoaXMgaXMgdGhlIGN1cnJlbnQgYnVja2V0IG51bWJlciBmcm9tIHRoZSBMQyBhbGdvcml0aG0g Ki8KQEAgLTIzNiw3ICsyMzUsNiBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAq c3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIAlUcmFja0l0ZW0gICppdGVt OwogCWludAkJCXNsb3RfaWR4OwogCUhUQUIJICAgKmNvdW50X3RhYjsKLQlIQVNIQ1RMCQljb3Vu dF9oYXNoX2N0bDsKIAlERUNvdW50SXRlbSAqY291bnRfaXRlbTsKIAogCWV4dHJhX2RhdGEgPSAo QXJyYXlBbmFseXplRXh0cmFEYXRhICopIHN0YXRzLT5leHRyYV9kYXRhOwpAQCAtMjc2LDI0ICsy NzQsMTMgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXpl QXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJICogd29ycnkgYWJvdXQgb3ZlcmZsb3dpbmcgdGhl IGluaXRpYWwgc2l6ZS4gQWxzbyB3ZSBkb24ndCBuZWVkIHRvIHBheSBhbnkKIAkgKiBhdHRlbnRp b24gdG8gbG9ja2luZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuCiAJICovCi0JZWxlbV9oYXNoX2N0 bC5rZXlzaXplID0gc2l6ZW9mKERhdHVtKTsKLQllbGVtX2hhc2hfY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihUcmFja0l0ZW0pOwotCWVsZW1faGFzaF9jdGwuaGFzaCA9IGVsZW1lbnRfaGFzaDsKLQll bGVtX2hhc2hfY3RsLm1hdGNoID0gZWxlbWVudF9tYXRjaDsKLQllbGVtX2hhc2hfY3RsLmhjeHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQllbGVtZW50c190YWIgPSBoYXNoX2NyZWF0ZSgiQW5h bHl6ZWQgZWxlbWVudHMgdGFibGUiLAotCQkJCQkJCSAgIG51bV9tY2VsZW0sCi0JCQkJCQkJICAg JmVsZW1faGFzaF9jdGwsCi0JCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhB U0hfQ09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJZWxlbWVudHNfdGFiID0gaGFzaF9tYWtlX2Zu KFRyYWNrSXRlbSwga2V5LAorCQkJCQkJCQkiQW5hbHl6ZWQgZWxlbWVudHMgdGFibGUiLCBudW1f bWNlbGVtLAorCQkJCQkJCQllbGVtZW50X2hhc2gsIGVsZW1lbnRfbWF0Y2gpOwogCiAJLyogaGFz aHRhYmxlIGZvciBhcnJheSBkaXN0aW5jdCBlbGVtZW50cyBjb3VudHMgKi8KLQljb3VudF9oYXNo X2N0bC5rZXlzaXplID0gc2l6ZW9mKGludCk7Ci0JY291bnRfaGFzaF9jdGwuZW50cnlzaXplID0g c2l6ZW9mKERFQ291bnRJdGVtKTsKLQljb3VudF9oYXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9y eUNvbnRleHQ7Ci0JY291bnRfdGFiID0gaGFzaF9jcmVhdGUoIkFycmF5IGRpc3RpbmN0IGVsZW1l bnQgY291bnQgdGFibGUiLAotCQkJCQkJCTY0LAotCQkJCQkJCSZjb3VudF9oYXNoX2N0bCwKLQkJ CQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwljb3VudF90YWIg PSBoYXNoX21ha2UoREVDb3VudEl0ZW0sIGNvdW50LAorCQkJCQkJICAiQXJyYXkgZGlzdGluY3Qg ZWxlbWVudCBjb3VudCB0YWJsZSIsIDY0KTsKIAogCS8qIEluaXRpYWxpemUgY291bnRlcnMuICov CiAJYl9jdXJyZW50ID0gMTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCmluZGV4IDc4ZTg0NzI3ZmRjLi4wOGIw MmNjMGY1MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCkBAIC05MzMsMTkgKzkzMyw4IEBAIGpzb25fdW5p cXVlX2hhc2hfbWF0Y2goY29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5MiwgU2l6ZSBr ZXlzaXplKQogc3RhdGljIHZvaWQKIGpzb25fdW5pcXVlX2NoZWNrX2luaXQoSnNvblVuaXF1ZUNo ZWNrU3RhdGUgKmN4dCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KLQltZW1zZXQoJmN0bCwgMCwgc2l6 ZW9mKGN0bCkpOwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKEpzb25VbmlxdWVIYXNoRW50cnkpOwot CWN0bC5lbnRyeXNpemUgPSBzaXplb2YoSnNvblVuaXF1ZUhhc2hFbnRyeSk7Ci0JY3RsLmhjeHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQljdGwuaGFzaCA9IGpzb25fdW5pcXVlX2hhc2g7Ci0J Y3RsLm1hdGNoID0ganNvbl91bmlxdWVfaGFzaF9tYXRjaDsKLQotCSpjeHQgPSBoYXNoX2NyZWF0 ZSgianNvbiBvYmplY3QgaGFzaHRhYmxlIiwKLQkJCQkJICAgMzIsCi0JCQkJCSAgICZjdGwsCi0J CQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQ09OVEVYVCB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NP TVBBUkUpOworCSpjeHQgPSBoYXNoc2V0X21ha2VfZm4oSnNvblVuaXF1ZUhhc2hFbnRyeSwgImpz b24gb2JqZWN0IGhhc2h0YWJsZSIsIDMyLAorCQkJCQkJICAganNvbl91bmlxdWVfaGFzaCwganNv bl91bmlxdWVfaGFzaF9tYXRjaCk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmZ1bmNzLmMKaW5kZXggZjJmMWY1OTAxM2EuLjdkM2YxYTBmMTU5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25mdW5jcy5jCkBAIC0zODA4LDE4ICszODA4LDEyIEBAIHN0YXRpYyBIVEFCICoKIGdldF9q c29uX29iamVjdF9hc19oYXNoKGNvbnN0IGNoYXIgKmpzb24sIGludCBsZW4sIGNvbnN0IGNoYXIg KmZ1bmNuYW1lLAogCQkJCQkJTm9kZSAqZXNjb250ZXh0KQogewotCUhBU0hDVEwJCWN0bDsKIAlI VEFCCSAgICp0YWI7CiAJSkhhc2hTdGF0ZSAqc3RhdGU7CiAJSnNvblNlbUFjdGlvbiAqc2VtOwog Ci0JY3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEpz b25IYXNoRW50cnkpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JdGFiID0g aGFzaF9jcmVhdGUoImpzb24gb2JqZWN0IGhhc2h0YWJsZSIsCi0JCQkJCSAgMTAwLAotCQkJCQkg ICZjdGwsCi0JCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTIHwgSEFTSF9DT05URVhUKTsK Kwl0YWIgPSBoYXNoX21ha2UoSnNvbkhhc2hFbnRyeSwgZm5hbWUsCisJCQkJCSJqc29uIG9iamVj dCBoYXNodGFibGUiLCAxMDApOwogCiAJc3RhdGUgPSBwYWxsb2MwX29iamVjdChKSGFzaFN0YXRl KTsKIAlzZW0gPSBwYWxsb2MwX29iamVjdChKc29uU2VtQWN0aW9uKTsKQEAgLTQyMTMsNyArNDIw Nyw2IEBAIHBvcHVsYXRlX3JlY29yZHNldF9vYmplY3Rfc3RhcnQodm9pZCAqc3RhdGUpCiB7CiAJ UG9wdWxhdGVSZWNvcmRzZXRTdGF0ZSAqX3N0YXRlID0gKFBvcHVsYXRlUmVjb3Jkc2V0U3RhdGUg Kikgc3RhdGU7CiAJaW50CQkJbGV4X2xldmVsID0gX3N0YXRlLT5sZXgtPmxleF9sZXZlbDsKLQlI QVNIQ1RMCQljdGw7CiAKIAkvKiBSZWplY3Qgb2JqZWN0IGF0IHRvcCBsZXZlbDogd2UgbXVzdCBo YXZlIGFuIGFycmF5IGF0IGxldmVsIDAgKi8KIAlpZiAobGV4X2xldmVsID09IDApCkBAIC00MjI3 LDEzICs0MjIwLDggQEAgcG9wdWxhdGVfcmVjb3Jkc2V0X29iamVjdF9zdGFydCh2b2lkICpzdGF0 ZSkKIAkJcmV0dXJuIEpTT05fU1VDQ0VTUzsKIAogCS8qIE9iamVjdCBhdCBsZXZlbCAxOiBzZXQg dXAgYSBuZXcgaGFzaCB0YWJsZSBmb3IgdGhpcyBvYmplY3QgKi8KLQljdGwua2V5c2l6ZSA9IE5B TUVEQVRBTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoSnNvbkhhc2hFbnRyeSk7Ci0JY3Rs LmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQlfc3RhdGUtPmpzb25faGFzaCA9IGhhc2hf Y3JlYXRlKCJqc29uIG9iamVjdCBoYXNodGFibGUiLAotCQkJCQkJCQkJMTAwLAotCQkJCQkJCQkJ JmN0bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7 CisJX3N0YXRlLT5qc29uX2hhc2ggPSBoYXNoX21ha2UoSnNvbkhhc2hFbnRyeSwgZm5hbWUsCisJ CQkJCQkJCSAgImpzb24gb2JqZWN0IGhhc2h0YWJsZSIsIDEwMCk7CiAKIAlyZXR1cm4gSlNPTl9T VUNDRVNTOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCmluZGV4IDEyYjhkNGNlZmFmLi42 OTQyNTJjZmVkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwpAQCAtMTg1LDE3ICsxODUs MTAgQEAgcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ UmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRp bmZvOwogCWludAkJCWNvbnRleHRfaWQ7CiAJTGlzdAkgICAqY29udGV4dHM7Ci0JSEFTSENUTAkJ Y3RsOwogCUhUQUIJICAgKmNvbnRleHRfaWRfbG9va3VwOwogCi0JY3RsLmtleXNpemUgPSBzaXpl b2YoTWVtb3J5Q29udGV4dCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihNZW1vcnlDb250ZXh0 SWQpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQljb250ZXh0X2lkX2xv b2t1cCA9IGhhc2hfY3JlYXRlKCJwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMiLAotCQkJ CQkJCQkJMjU2LAotCQkJCQkJCQkJJmN0bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxP QlMgfCBIQVNIX0NPTlRFWFQpOworCWNvbnRleHRfaWRfbG9va3VwID0gaGFzaF9tYWtlKE1lbW9y eUNvbnRleHRJZCwgY29udGV4dCwKKwkJCQkJCQkJICAicGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2Nv bnRleHRzIiwgMjU2KTsKIAogCUluaXRNYXRlcmlhbGl6ZWRTUkYoZmNpbmZvLCAwKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCBiYmFkZWNlZjVmOS4uNTMzNGM5ZGQ3NTMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0yODU5LDMwICsyODU5LDI1IEBA IHJpX051bGxDaGVjayhUdXBsZURlc2MgdHVwRGVzYywKIHN0YXRpYyB2b2lkCiByaV9Jbml0SGFz aFRhYmxlcyh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQotCWN0bC5rZXlzaXplID0gc2l6ZW9m KE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSSV9Db25zdHJhaW50SW5mbyk7Ci0Jcmlf Y29uc3RyYWludF9jYWNoZSA9IGhhc2hfY3JlYXRlKCJSSSBjb25zdHJhaW50IGNhY2hlIiwKLQkJ CQkJCQkJCSAgUklfSU5JVF9DT05TVFJBSU5USEFTSFNJWkUsCi0JCQkJCQkJCQkgICZjdGwsIEhB U0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXJpX2NvbnN0cmFpbnRfY2FjaGUgPSBoYXNoX21ha2Vf Y3h0KFJJX0NvbnN0cmFpbnRJbmZvLCBjb25zdHJhaW50X2lkLAorCQkJCQkJCQkJCSJSSSBjb25z dHJhaW50IGNhY2hlIiwKKwkJCQkJCQkJCQlSSV9JTklUX0NPTlNUUkFJTlRIQVNIU0laRSwKKwkJ CQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qIEFycmFuZ2UgdG8gZmx1c2ggY2FjaGUg b24gcGdfY29uc3RyYWludCBjaGFuZ2VzICovCiAJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJh Y2soQ09OU1RST0lELAogCQkJCQkJCQkgIEludmFsaWRhdGVDb25zdHJhaW50Q2FjaGVDYWxsQmFj aywKIAkJCQkJCQkJICAoRGF0dW0pIDApOwogCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUklfUXVl cnlLZXkpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUklfUXVlcnlIYXNoRW50cnkpOwotCXJp X3F1ZXJ5X2NhY2hlID0gaGFzaF9jcmVhdGUoIlJJIHF1ZXJ5IGNhY2hlIiwKLQkJCQkJCQkJIFJJ X0lOSVRfUVVFUllIQVNIU0laRSwKLQkJCQkJCQkJICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOwotCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUklfQ29tcGFyZUtleSk7Ci0JY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihSSV9Db21wYXJlSGFzaEVudHJ5KTsKLQlyaV9jb21wYXJlX2NhY2hlID0g aGFzaF9jcmVhdGUoIlJJIGNvbXBhcmUgY2FjaGUiLAorCXJpX3F1ZXJ5X2NhY2hlID0gaGFzaF9t YWtlX2N4dChSSV9RdWVyeUhhc2hFbnRyeSwga2V5LAorCQkJCQkJCQkgICAiUkkgcXVlcnkgY2Fj aGUiLAogCQkJCQkJCQkgICBSSV9JTklUX1FVRVJZSEFTSFNJWkUsCi0JCQkJCQkJCSAgICZjdGws IEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsK KworCXJpX2NvbXBhcmVfY2FjaGUgPSBoYXNoX21ha2VfY3h0KFJJX0NvbXBhcmVIYXNoRW50cnks IGtleSwKKwkJCQkJCQkJCSAiUkkgY29tcGFyZSBjYWNoZSIsCisJCQkJCQkJCQkgUklfSU5JVF9R VUVSWUhBU0hTSVpFLAorCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCAwMzNiNjI1ZjNmYy4uMGNmMTAyMGI0ZGEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTM4ODcsNyArMzg4Nyw2IEBAIHN0YXRpYyB2b2lk CiBzZXRfcnRhYmxlX25hbWVzKGRlcGFyc2VfbmFtZXNwYWNlICpkcG5zLCBMaXN0ICpwYXJlbnRf bmFtZXNwYWNlcywKIAkJCQkgQml0bWFwc2V0ICpyZWxzX3VzZWQpCiB7Ci0JSEFTSENUTAkJaGFz aF9jdGw7CiAJSFRBQgkgICAqbmFtZXNfaGFzaDsKIAlOYW1lSGFzaEVudHJ5ICpoZW50cnk7CiAJ Ym9vbAkJZm91bmQ7CkBAIC0zOTAzLDEzICszOTAyLDkgQEAgc2V0X3J0YWJsZV9uYW1lcyhkZXBh cnNlX25hbWVzcGFjZSAqZHBucywgTGlzdCAqcGFyZW50X25hbWVzcGFjZXMsCiAJICogV2UgdXNl IGEgaGFzaCB0YWJsZSB0byBob2xkIGtub3duIG5hbWVzLCBzbyB0aGF0IHRoaXMgcHJvY2VzcyBp cyBPKE4pCiAJICogbm90IE8oTl4yKSBmb3IgTiBuYW1lcy4KIAkgKi8KLQloYXNoX2N0bC5rZXlz aXplID0gTkFNRURBVEFMRU47Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE5hbWVIYXNo RW50cnkpOwotCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQluYW1lc19o YXNoID0gaGFzaF9jcmVhdGUoInNldF9ydGFibGVfbmFtZXMgbmFtZXMiLAotCQkJCQkJCSBsaXN0 X2xlbmd0aChkcG5zLT5ydGFibGUpLAotCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJCQkJIEhBU0hf RUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJbmFtZXNfaGFzaCA9IGhhc2hf bWFrZShOYW1lSGFzaEVudHJ5LCBuYW1lLAorCQkJCQkJICAgInNldF9ydGFibGVfbmFtZXMgbmFt ZXMiLAorCQkJCQkJICAgbGlzdF9sZW5ndGgoZHBucy0+cnRhYmxlKSk7CiAKIAkvKiBQcmVsb2Fk IHRoZSBoYXNoIHRhYmxlIHdpdGggbmFtZXMgYXBwZWFyaW5nIGluIHBhcmVudF9uYW1lc3BhY2Vz ICovCiAJZm9yZWFjaChsYywgcGFyZW50X25hbWVzcGFjZXMpCkBAIC00OTgwLDcgKzQ5NzUsNiBA QCBleHBhbmRfY29sbmFtZXNfYXJyYXlfdG8oZGVwYXJzZV9jb2x1bW5zICpjb2xpbmZvLCBpbnQg bikKIHN0YXRpYyB2b2lkCiBidWlsZF9jb2xpbmZvX25hbWVzX2hhc2goZGVwYXJzZV9jb2x1bW5z ICpjb2xpbmZvKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwogCWludAkJCWk7CiAJTGlzdENlbGwg ICAqbGM7CiAKQEAgLTQ5OTYsMTMgKzQ5OTAsMTAgQEAgYnVpbGRfY29saW5mb19uYW1lc19oYXNo KGRlcGFyc2VfY29sdW1ucyAqY29saW5mbykKIAkgKiBTZXQgdXAgdGhlIGhhc2ggdGFibGUuICBU aGUgZW50cmllcyBhcmUganVzdCBzdHJpbmdzIHdpdGggbm8gb3RoZXIKIAkgKiBwYXlsb2FkLgog CSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQloYXNoX2N0bC5lbnRyeXNp emUgPSBOQU1FREFUQUxFTjsKLQloYXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7 Ci0JY29saW5mby0+bmFtZXNfaGFzaCA9IGhhc2hfY3JlYXRlKCJkZXBhcnNlX2NvbHVtbnMgbmFt ZXMiLAotCQkJCQkJCQkJICBjb2xpbmZvLT5udW1fY29scyArIGNvbGluZm8tPm51bV9uZXdfY29s cywKLQkJCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX1NU UklOR1MgfCBIQVNIX0NPTlRFWFQpOworCWNvbGluZm8tPm5hbWVzX2hhc2ggPQorCQloYXNoc2V0 X21ha2VfY3h0KE5hbWVEYXRhLCAiZGVwYXJzZV9jb2x1bW5zIG5hbWVzIiwKKwkJCQkJCSBjb2xp bmZvLT5udW1fY29scyArIGNvbGluZm8tPm51bV9uZXdfY29scywKKwkJCQkJCSBDdXJyZW50TWVt b3J5Q29udGV4dCk7CiAKIAkvKgogCSAqIFByZWxvYWQgdGhlIGhhc2ggdGFibGUgd2l0aCBhbnkg bmFtZXMgYWxyZWFkeSBwcmVzZW50ICh0aGVzZSB3b3VsZCBoYXZlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9hdHRvcHRjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvYXR0b3B0Y2FjaGUuYwppbmRleCA3MmVkYzhmNjY1Yi4uNzcxYmY3N2ZhNzUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2F0dG9wdGNhY2hlLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvYXR0b3B0Y2FjaGUuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUg InV0aWxzL2NhdGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUg InV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInZhcmF0dC5oIgogCkBAIC05NiwyMiArOTcsMTUg QEAgcmVsYXR0X2NhY2hlX3N5c2hhc2goY29uc3Qgdm9pZCAqa2V5LCBTaXplIGtleXNpemUpCiBz dGF0aWMgdm9pZAogSW5pdGlhbGl6ZUF0dG9wdENhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3Rs OwotCi0JLyogSW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZS4gKi8KLQljdGwua2V5c2l6ZSA9IHNp emVvZihBdHRvcHRDYWNoZUtleSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihBdHRvcHRDYWNo ZUVudHJ5KTsKLQogCS8qCiAJICogQXR0b3B0Q2FjaGVFbnRyeSB0YWtlcyBoYXNoIHZhbHVlIGZy b20gdGhlIHN5c3RlbSBjYWNoZS4gRm9yCiAJICogQXR0b3B0Q2FjaGVIYXNoIHdlIHVzZSB0aGUg c2FtZSBoYXNoIGluIG9yZGVyIHRvIHNwZWVkdXAgc2VhcmNoIGJ5IGhhc2gKIAkgKiB2YWx1ZS4g VGhpcyBpcyB1c2VkIGJ5IGhhc2hfc2VxX2luaXRfd2l0aF9oYXNoX3ZhbHVlKCkuCiAJICovCi0J Y3RsLmhhc2ggPSByZWxhdHRfY2FjaGVfc3lzaGFzaDsKLQotCUF0dG9wdENhY2hlSGFzaCA9Ci0J CWhhc2hfY3JlYXRlKCJBdHRvcHQgY2FjaGUiLCAyNTYsICZjdGwsCi0JCQkJCUhBU0hfRUxFTSB8 IEhBU0hfRlVOQ1RJT04pOworCUF0dG9wdENhY2hlSGFzaCA9IGhhc2hfbWFrZV9mbl9jeHQoQXR0 b3B0Q2FjaGVFbnRyeSwga2V5LAorCQkJCQkJCQkJICAgIkF0dG9wdCBjYWNoZSIsIDI1NiwKKwkJ CQkJCQkJCSAgIHJlbGF0dF9jYWNoZV9zeXNoYXNoLCBOVUxMLAorCQkJCQkJCQkJICAgVG9wTWVt b3J5Q29udGV4dCk7CiAKIAkvKiBNYWtlIHN1cmUgd2UndmUgaW5pdGlhbGl6ZWQgQ2FjaGVNZW1v cnlDb250ZXh0LiAqLwogCWlmICghQ2FjaGVNZW1vcnlDb250ZXh0KQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2V2dGNhY2hlLmMKaW5kZXggMmI0NDUzZTU0YTcuLjY1MmY2ZjI1YmUzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL2V2dGNhY2hlLmMKQEAgLTc2LDcgKzc2LDYgQEAgRXZlbnRDYWNoZUxvb2t1cChFdmVu dFRyaWdnZXJFdmVudCBldmVudCkKIHN0YXRpYyB2b2lkCiBCdWlsZEV2ZW50VHJpZ2dlckNhY2hl KHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwogCUhUQUIJICAgKmNhY2hlOwogCVJlbGF0aW9uCXJl bDsKIAlSZWxhdGlvbglpcmVsOwpAQCAtMTEzLDExICsxMTIsOSBAQCBCdWlsZEV2ZW50VHJpZ2dl ckNhY2hlKHZvaWQpCiAJRXZlbnRUcmlnZ2VyQ2FjaGVTdGF0ZSA9IEVUQ1NfUkVCVUlMRF9TVEFS VEVEOwogCiAJLyogQ3JlYXRlIG5ldyBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6 ZW9mKEV2ZW50VHJpZ2dlckV2ZW50KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEV2ZW50VHJp Z2dlckNhY2hlRW50cnkpOwotCWN0bC5oY3h0ID0gRXZlbnRUcmlnZ2VyQ2FjaGVDb250ZXh0Owot CWNhY2hlID0gaGFzaF9jcmVhdGUoIkV2ZW50VHJpZ2dlckNhY2hlSGFzaCIsIDMyLCAmY3RsLAot CQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJY2FjaGUgPSBo YXNoX21ha2VfY3h0KEV2ZW50VHJpZ2dlckNhY2hlRW50cnksIGV2ZW50LAorCQkJCQkJICAiRXZl bnRUcmlnZ2VyQ2FjaGVIYXNoIiwgMzIsCisJCQkJCQkgIEV2ZW50VHJpZ2dlckNhY2hlQ29udGV4 dCk7CiAKIAkvKgogCSAqIFByZXBhcmUgdG8gc2NhbiBwZ19ldmVudF90cmlnZ2VyIGluIG5hbWUg b3JkZXIuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCmluZGV4IDcwMWMyOTRiODhkLi5i ZWY5MzhjMzdjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hl LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMKQEAgLTU4LDE5ICs1 OCwxMyBAQCBzdGF0aWMgaW50CWNmdW5jX21hdGNoKGNvbnN0IHZvaWQgKmtleTEsIGNvbnN0IHZv aWQgKmtleTIsIFNpemUga2V5c2l6ZSk7CiBzdGF0aWMgdm9pZAogY2Z1bmNfaGFzaHRhYmxlX2lu aXQodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KIAkvKiBkb24ndCBhbGxvdyBkb3VibGUtaW5p dGlhbGl6YXRpb24gKi8KIAlBc3NlcnQoY2Z1bmNfaGFzaHRhYmxlID09IE5VTEwpOwogCi0JY3Rs LmtleXNpemUgPSBzaXplb2YoQ2FjaGVkRnVuY3Rpb25IYXNoS2V5KTsKLQljdGwuZW50cnlzaXpl ID0gc2l6ZW9mKENhY2hlZEZ1bmN0aW9uSGFzaEVudHJ5KTsKLQljdGwuaGFzaCA9IGNmdW5jX2hh c2g7Ci0JY3RsLm1hdGNoID0gY2Z1bmNfbWF0Y2g7Ci0JY2Z1bmNfaGFzaHRhYmxlID0gaGFzaF9j cmVhdGUoIkNhY2hlZCBmdW5jdGlvbiBoYXNoIiwKLQkJCQkJCQkJICBGVU5DU19QRVJfVVNFUiwK LQkJCQkJCQkJICAmY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBI QVNIX0NPTVBBUkUpOworCWNmdW5jX2hhc2h0YWJsZSA9IGhhc2hfbWFrZV9mbl9jeHQoQ2FjaGVk RnVuY3Rpb25IYXNoRW50cnksIGtleSwKKwkJCQkJCQkJCSAgICJDYWNoZWQgZnVuY3Rpb24gaGFz aCIsIEZVTkNTX1BFUl9VU0VSLAorCQkJCQkJCQkJICAgY2Z1bmNfaGFzaCwgY2Z1bmNfbWF0Y2gs CisJCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCmluZGV4IDZiNjM0YzlmZmYxLi5jMTViMTI3YmRiZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jCkBAIC0xNjcyLDE3ICsxNjcyLDE0IEBAIExvb2t1cE9wY2xhc3NJ bmZvKE9pZCBvcGVyYXRvckNsYXNzT2lkLAogCiAJaWYgKE9wQ2xhc3NDYWNoZSA9PSBOVUxMKQog CXsKLQkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBvcGNsYXNzIGNhY2hl ICovCi0JCUhBU0hDVEwJCWN0bDsKLQogCQkvKiBBbHNvIG1ha2Ugc3VyZSBDYWNoZU1lbW9yeUNv bnRleHQgZXhpc3RzICovCiAJCWlmICghQ2FjaGVNZW1vcnlDb250ZXh0KQogCQkJQ3JlYXRlQ2Fj aGVNZW1vcnlDb250ZXh0KCk7CiAKLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3Rs LmVudHJ5c2l6ZSA9IHNpemVvZihPcENsYXNzQ2FjaGVFbnQpOwotCQlPcENsYXNzQ2FjaGUgPSBo YXNoX2NyZWF0ZSgiT3BlcmF0b3IgY2xhc3MgY2FjaGUiLCA2NCwKLQkJCQkJCQkJICAgJmN0bCwg SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlh bGl6ZSB0aGUgb3BjbGFzcyBjYWNoZSAqLworCQlPcENsYXNzQ2FjaGUgPSBoYXNoX21ha2VfY3h0 KE9wQ2xhc3NDYWNoZUVudCwgb3BjbGFzc29pZCwKKwkJCQkJCQkJCSAiT3BlcmF0b3IgY2xhc3Mg Y2FjaGUiLCA2NCwKKwkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAl9CiAKIAlvcGNlbnRy eSA9IChPcENsYXNzQ2FjaGVFbnQgKikgaGFzaF9zZWFyY2goT3BDbGFzc0NhY2hlLApAQCAtMzk5 Niw3ICszOTkzLDYgQEAgUmVsYXRpb25Bc3N1bWVOZXdSZWxmaWxlbG9jYXRvcihSZWxhdGlvbiBy ZWxhdGlvbikKIHZvaWQKIFJlbGF0aW9uQ2FjaGVJbml0aWFsaXplKHZvaWQpCiB7Ci0JSEFTSENU TAkJY3RsOwogCWludAkJCWFsbG9jc2l6ZTsKIAogCS8qCkBAIC00MDA4LDEwICs0MDA0LDkgQEAg UmVsYXRpb25DYWNoZUluaXRpYWxpemUodm9pZCkKIAkvKgogCSAqIGNyZWF0ZSBoYXNodGFibGUg dGhhdCBpbmRleGVzIHRoZSByZWxjYWNoZQogCSAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9p ZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxJZENhY2hlRW50KTsKLQlSZWxhdGlvbklk Q2FjaGUgPSBoYXNoX2NyZWF0ZSgiUmVsY2FjaGUgYnkgT0lEIiwgSU5JVFJFTENBQ0hFU0laRSwK LQkJCQkJCQkJICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlSZWxhdGlvbklkQ2Fj aGUgPSBoYXNoX21ha2VfY3h0KFJlbElkQ2FjaGVFbnQsIHJlbG9pZCwKKwkJCQkJCQkJCSJSZWxj YWNoZSBieSBPSUQiLCBJTklUUkVMQ0FDSEVTSVpFLAorCQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4 dCk7CiAKIAkvKgogCSAqIHJlc2VydmUgZW5vdWdoIGluX3Byb2dyZXNzX2xpc3Qgc2xvdHMgZm9y IG1hbnkgY2FzZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVu dW1iZXJtYXAuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYwpp bmRleCA2Zjk3MGZhZmEwNS4uMDliMDVkZWM5ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxmaWxlbnVtYmVybWFwLmMKQEAgLTg1LDcgKzg1LDYgQEAgUmVsZmlsZW51bWJlck1hcElu dmFsaWRhdGVDYWxsYmFjayhEYXR1bSBhcmcsIE9pZCByZWxpZCkKIHN0YXRpYyB2b2lkCiBJbml0 aWFsaXplUmVsZmlsZW51bWJlck1hcCh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKIAlpbnQJCQlp OwogCiAJLyogTWFrZSBzdXJlIHdlJ3ZlIGluaXRpYWxpemVkIENhY2hlTWVtb3J5Q29udGV4dC4g Ki8KQEAgLTExMywxMyArMTEyLDkgQEAgSW5pdGlhbGl6ZVJlbGZpbGVudW1iZXJNYXAodm9pZCkK IAkgKiBpbml0aWFsaXplZCB3aGVuIGZtZ3JfaW5mb19jeHQoKSBhYm92ZSBFUlJPUnMgb3V0IHdp dGggYW4gb3V0IG9mIG1lbW9yeQogCSAqIGVycm9yLgogCSAqLwotCWN0bC5rZXlzaXplID0gc2l6 ZW9mKFJlbGZpbGVudW1iZXJNYXBLZXkpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVsZmls ZW51bWJlck1hcEVudHJ5KTsKLQljdGwuaGN4dCA9IENhY2hlTWVtb3J5Q29udGV4dDsKLQogCVJl bGZpbGVudW1iZXJNYXBIYXNoID0KLQkJaGFzaF9jcmVhdGUoIlJlbGZpbGVudW1iZXJNYXAgY2Fj aGUiLCA2NCwgJmN0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVY VCk7CisJCWhhc2hfbWFrZV9jeHQoUmVsZmlsZW51bWJlck1hcEVudHJ5LCBrZXksCisJCQkJCSAg IlJlbGZpbGVudW1iZXJNYXAgY2FjaGUiLCA2NCwgQ2FjaGVNZW1vcnlDb250ZXh0KTsKIAogCS8q IFdhdGNoIGZvciBpbnZhbGlkYXRpb24gZXZlbnRzLiAqLwogCUNhY2hlUmVnaXN0ZXJSZWxjYWNo ZUNhbGxiYWNrKFJlbGZpbGVudW1iZXJNYXBJbnZhbGlkYXRlQ2FsbGJhY2ssCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvc3BjY2FjaGUuYwppbmRleCA4ZjFhNWU2OTU5NS4uYmYwMDdkNjlhZDQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvc3BjY2FjaGUuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgInV0aWxz L2NhdGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxz L2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9z cGNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidmFyYXR0 LmgiCkBAIC03NywxNCArNzgsMTAgQEAgSW52YWxpZGF0ZVRhYmxlU3BhY2VDYWNoZUNhbGxiYWNr KERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiBzdGF0aWMgdm9pZAog SW5pdGlhbGl6ZVRhYmxlU3BhY2VDYWNoZSh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQogCS8q IEluaXRpYWxpemUgdGhlIGhhc2ggdGFibGUuICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lk KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFRhYmxlU3BhY2VDYWNoZUVudHJ5KTsKIAlUYWJs ZVNwYWNlQ2FjaGVIYXNoID0KLQkJaGFzaF9jcmVhdGUoIlRhYmxlU3BhY2UgY2FjaGUiLCAxNiwg JmN0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCWhhc2hfbWFrZV9jeHQoVGFi bGVTcGFjZUNhY2hlRW50cnksIG9pZCwKKwkJCQkJICAiVGFibGVTcGFjZSBjYWNoZSIsIDE2LCBU b3BNZW1vcnlDb250ZXh0KTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSd2ZSBpbml0aWFsaXplZCBDYWNo ZU1lbW9yeUNvbnRleHQuICovCiAJaWYgKCFDYWNoZU1lbW9yeUNvbnRleHQpCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90c19jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvdHNfY2FjaGUuYwppbmRleCA3MWU0OWIyYjkxOS4uZTlhZTRhNWYwOTMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvdHNfY2FjaGUuYwpAQCAtMTE3LDEyICsxMTcsOSBAQCBsb29rdXBfdHNfcGFy c2VyX2NhY2hlKE9pZCBwcnNJZCkKIAlpZiAoVFNQYXJzZXJDYWNoZUhhc2ggPT0gTlVMTCkKIAl7 CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwot CQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihUU1BhcnNlckNhY2hlRW50cnkpOwotCQlUU1BhcnNlckNhY2hlSGFz aCA9IGhhc2hfY3JlYXRlKCJUc2VhcmNoIHBhcnNlciBjYWNoZSIsIDQsCi0JCQkJCQkJCQkJJmN0 bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCVRTUGFyc2VyQ2FjaGVIYXNoID0gaGFzaF9t YWtlX2N4dChUU1BhcnNlckNhY2hlRW50cnksIHByc0lkLAorCQkJCQkJCQkJCSAgIlRzZWFyY2gg cGFyc2VyIGNhY2hlIiwgNCwKKwkJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwogCQkvKiBG bHVzaCBjYWNoZSBvbiBwZ190c19wYXJzZXIgY2hhbmdlcyAqLwogCQlDYWNoZVJlZ2lzdGVyU3lz Y2FjaGVDYWxsYmFjayhUU1BBUlNFUk9JRCwgSW52YWxpZGF0ZVRTQ2FjaGVDYWxsQmFjaywKIAkJ CQkJCQkJCSAgUG9pbnRlckdldERhdHVtKFRTUGFyc2VyQ2FjaGVIYXNoKSk7CkBAIC0yMTIsMTIg KzIwOSw5IEBAIGxvb2t1cF90c19kaWN0aW9uYXJ5X2NhY2hlKE9pZCBkaWN0SWQpCiAJaWYgKFRT RGljdGlvbmFyeUNhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdo OiBpbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwu a2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFRTRGljdGlv bmFyeUNhY2hlRW50cnkpOwotCQlUU0RpY3Rpb25hcnlDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgi VHNlYXJjaCBkaWN0aW9uYXJ5IGNhY2hlIiwgOCwKLQkJCQkJCQkJCQkJJmN0bCwgSEFTSF9FTEVN IHwgSEFTSF9CTE9CUyk7CisJCVRTRGljdGlvbmFyeUNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQo VFNEaWN0aW9uYXJ5Q2FjaGVFbnRyeSwgZGljdElkLAorCQkJCQkJCQkJCQkgICJUc2VhcmNoIGRp Y3Rpb25hcnkgY2FjaGUiLCA4LAorCQkJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwogCQkv KiBGbHVzaCBjYWNoZSBvbiBwZ190c19kaWN0IGFuZCBwZ190c190ZW1wbGF0ZSBjaGFuZ2VzICov CiAJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFRTRElDVE9JRCwgSW52YWxpZGF0ZVRT Q2FjaGVDYWxsQmFjaywKIAkJCQkJCQkJCSAgUG9pbnRlckdldERhdHVtKFRTRGljdGlvbmFyeUNh Y2hlSGFzaCkpOwpAQCAtMzYzLDEyICszNTcsOSBAQCBsb29rdXBfdHNfZGljdGlvbmFyeV9jYWNo ZShPaWQgZGljdElkKQogc3RhdGljIHZvaWQKIGluaXRfdHNfY29uZmlnX2NhY2hlKHZvaWQpCiB7 Ci0JSEFTSENUTAkJY3RsOwotCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50 cnlzaXplID0gc2l6ZW9mKFRTQ29uZmlnQ2FjaGVFbnRyeSk7Ci0JVFNDb25maWdDYWNoZUhhc2gg PSBoYXNoX2NyZWF0ZSgiVHNlYXJjaCBjb25maWd1cmF0aW9uIGNhY2hlIiwgMTYsCi0JCQkJCQkJ CQkmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlUU0NvbmZpZ0NhY2hlSGFzaCA9IGhh c2hfbWFrZV9jeHQoVFNDb25maWdDYWNoZUVudHJ5LCBjZmdJZCwKKwkJCQkJCQkJCSAgIlRzZWFy Y2ggY29uZmlndXJhdGlvbiBjYWNoZSIsIDE2LAorCQkJCQkJCQkJICBUb3BNZW1vcnlDb250ZXh0 KTsKIAkvKiBGbHVzaCBjYWNoZSBvbiBwZ190c19jb25maWcgYW5kIHBnX3RzX2NvbmZpZ19tYXAg Y2hhbmdlcyAqLwogCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFRTQ09ORklHT0lELCBJ bnZhbGlkYXRlVFNDYWNoZUNhbGxCYWNrLAogCQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bShUU0Nv bmZpZ0NhY2hlSGFzaCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlw Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggOTZiYmQ2 NGRlMmMuLjU1ZmY5NjllMDlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90 eXBjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKQEAgLTM5 MiwyOCArMzkyLDIzIEBAIGxvb2t1cF90eXBlX2NhY2hlKE9pZCB0eXBlX2lkLCBpbnQgZmxhZ3Mp CiAJaWYgKFR5cGVDYWNoZUhhc2ggPT0gTlVMTCkKIAl7CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3Vn aDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwotCQlIQVNIQ1RMCQljdGw7CiAJCWludAkJ CWFsbG9jc2l6ZTsKIAotCQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlz aXplID0gc2l6ZW9mKFR5cGVDYWNoZUVudHJ5KTsKLQogCQkvKgogCQkgKiBUeXBlQ2FjaGVFbnRy eSB0YWtlcyBoYXNoIHZhbHVlIGZyb20gdGhlIHN5c3RlbSBjYWNoZS4gRm9yCiAJCSAqIFR5cGVD YWNoZUhhc2ggd2UgdXNlIHRoZSBzYW1lIGhhc2ggaW4gb3JkZXIgdG8gc3BlZWR1cCBzZWFyY2gg YnkKIAkJICogaGFzaCB2YWx1ZS4gVGhpcyBpcyB1c2VkIGJ5IGhhc2hfc2VxX2luaXRfd2l0aF9o YXNoX3ZhbHVlKCkuCiAJCSAqLwotCQljdGwuaGFzaCA9IHR5cGVfY2FjaGVfc3lzaGFzaDsKLQot CQlUeXBlQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIlR5cGUgaW5mb3JtYXRpb24gY2FjaGUiLCA2 NCwKLQkJCQkJCQkJCSZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04pOworCQlUeXBlQ2Fj aGVIYXNoID0gaGFzaF9tYWtlX2ZuX2N4dChUeXBlQ2FjaGVFbnRyeSwgdHlwZV9pZCwKKwkJCQkJ CQkJCQkgIlR5cGUgaW5mb3JtYXRpb24gY2FjaGUiLCA2NCwKKwkJCQkJCQkJCQkgdHlwZV9jYWNo ZV9zeXNoYXNoLCBOVUxMLAorCQkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAogCQlBc3Nl cnQoUmVsSWRUb1R5cGVJZENhY2hlSGFzaCA9PSBOVUxMKTsKIAotCQljdGwua2V5c2l6ZSA9IHNp emVvZihPaWQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlbElkVG9UeXBlSWRDYWNoZUVu dHJ5KTsKLQkJUmVsSWRUb1R5cGVJZENhY2hlSGFzaCA9IGhhc2hfY3JlYXRlKCJNYXAgZnJvbSBy ZWxpZCB0byBPSUQgb2YgY2FjaGVkIGNvbXBvc2l0ZSB0eXBlIiwgNjQsCi0JCQkJCQkJCQkJCSAm Y3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJUmVsSWRUb1R5cGVJZENhY2hlSGFzaCA9 IGhhc2hfbWFrZV9jeHQoUmVsSWRUb1R5cGVJZENhY2hlRW50cnksIHJlbGlkLAorCQkJCQkJCQkJ CQkgICAiTWFwIGZyb20gcmVsaWQgdG8gT0lEIG9mIGNhY2hlZCBjb21wb3NpdGUgdHlwZSIsCisJ CQkJCQkJCQkJCSAgIDY0LCBUb3BNZW1vcnlDb250ZXh0KTsKIAogCQkvKiBBbHNvIHNldCB1cCBj YWxsYmFja3MgZm9yIFNJIGludmFsaWRhdGlvbnMgKi8KIAkJQ2FjaGVSZWdpc3RlclJlbGNhY2hl Q2FsbGJhY2soVHlwZUNhY2hlUmVsQ2FsbGJhY2ssIChEYXR1bSkgMCk7CkBAIC0yMDUwLDE1ICsy MDQ1LDExIEBAIGFzc2lnbl9yZWNvcmRfdHlwZV90eXBtb2QoVHVwbGVEZXNjIHR1cERlc2MpCiAJ aWYgKFJlY29yZENhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdo OiBpbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwu a2V5c2l6ZSA9IHNpemVvZihUdXBsZURlc2MpOwkvKiBqdXN0IHRoZSBwb2ludGVyICovCi0JCWN0 bC5lbnRyeXNpemUgPSBzaXplb2YoUmVjb3JkQ2FjaGVFbnRyeSk7Ci0JCWN0bC5oYXNoID0gcmVj b3JkX3R5cGVfdHlwbW9kX2hhc2g7Ci0JCWN0bC5tYXRjaCA9IHJlY29yZF90eXBlX3R5cG1vZF9j b21wYXJlOwotCQlSZWNvcmRDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgiUmVjb3JkIGluZm9ybWF0 aW9uIGNhY2hlIiwgNjQsCi0JCQkJCQkJCQkgICZjdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8 IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUpOworCQlSZWNvcmRDYWNoZUhhc2ggPSBoYXNo X21ha2VfZm5fY3h0KFJlY29yZENhY2hlRW50cnksIHR1cGRlc2MsCisJCQkJCQkJCQkJICAgIlJl Y29yZCBpbmZvcm1hdGlvbiBjYWNoZSIsIDY0LAorCQkJCQkJCQkJCSAgIHJlY29yZF90eXBlX3R5 cG1vZF9oYXNoLAorCQkJCQkJCQkJCSAgIHJlY29yZF90eXBlX3R5cG1vZF9jb21wYXJlLAorCQkJ CQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJCS8qIEFsc28gbWFrZSBzdXJlIENhY2hl TWVtb3J5Q29udGV4dCBleGlzdHMgKi8KIAkJaWYgKCFDYWNoZU1lbW9yeUNvbnRleHQpCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMgYi9zcmMvYmFja2VuZC91dGls cy9mbWdyL2RmbWdyLmMKaW5kZXggZTYzNmNjODFjZjguLjVkOTk0NjdlMmJkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv Zm1nci9kZm1nci5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgog I2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCisj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAogCiAvKiBzaWduYXR1cmUgZm9yIFBvc3RncmVT UUwtc3BlY2lmaWMgbGlicmFyeSBpbml0IGZ1bmN0aW9uICovCkBAIC02NzEsMTQgKzY3Miw5IEBA IGZpbmRfcmVuZGV6dm91c192YXJpYWJsZShjb25zdCBjaGFyICp2YXJOYW1lKQogCS8qIENyZWF0 ZSBhIGhhc2h0YWJsZSBpZiB3ZSBoYXZlbid0IGFscmVhZHkgZG9uZSBzbyBpbiB0aGlzIHByb2Nl c3MgKi8KIAlpZiAocmVuZGV6dm91c0hhc2ggPT0gTlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWN0bDsK LQotCQljdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9m KHJlbmRlenZvdXNIYXNoRW50cnkpOwotCQlyZW5kZXp2b3VzSGFzaCA9IGhhc2hfY3JlYXRlKCJS ZW5kZXp2b3VzIHZhcmlhYmxlIGhhc2giLAotCQkJCQkJCQkJIDE2LAotCQkJCQkJCQkJICZjdGws Ci0JCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwkJcmVuZGV6dm91c0hhc2gg PSBoYXNoX21ha2VfY3h0KHJlbmRlenZvdXNIYXNoRW50cnksIHZhck5hbWUsCisJCQkJCQkJCQkg ICAiUmVuZGV6dm91cyB2YXJpYWJsZSBoYXNoIiwgMTYsCisJCQkJCQkJCQkgICBUb3BNZW1vcnlD b250ZXh0KTsKIAl9CiAKIAkvKiBGaW5kIG9yIGNyZWF0ZSB0aGUgaGFzaHRhYmxlIGVudHJ5IGZv ciB0aGlzIHZhck5hbWUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1n ci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMKaW5kZXggMDU5ODRlN2VmMjYuLmRl Yjg1NTExYWQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1 ZGUgInV0aWxzL2ZtZ3J0YWIuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUg InV0aWxzL3N5c2NhY2hlLmgiCiAKIC8qCkBAIC01NDcsMTQgKzU0OCw4IEBAIHJlY29yZF9DX2Z1 bmMoSGVhcFR1cGxlIHByb2NlZHVyZVR1cGxlLAogCS8qIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSBp ZiBpdCBkb2Vzbid0IGV4aXN0IHlldCAqLwogCWlmIChDRnVuY0hhc2ggPT0gTlVMTCkKIAl7Ci0J CUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsK LQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKENGdW5jSGFzaFRhYkVudHJ5KTsKLQkJQ0Z1 bmNIYXNoID0gaGFzaF9jcmVhdGUoIkNGdW5jSGFzaCIsCi0JCQkJCQkJCTEwMCwKLQkJCQkJCQkJ Jmhhc2hfY3RsLAotCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJQ0Z1bmNIYXNo ID0gaGFzaF9tYWtlX2N4dChDRnVuY0hhc2hUYWJFbnRyeSwgZm5fb2lkLAorCQkJCQkJCQkgICJD RnVuY0hhc2giLCAxMDAsIFRvcE1lbW9yeUNvbnRleHQpOwogCX0KIAogCWVudHJ5ID0gKENGdW5j SGFzaFRhYkVudHJ5ICopCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCBhZTlkNWYzZmI3MC4uNjE4ZDAx MDBkMzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtODcxLDcgKzg3MSw2IEBAIGJ1aWxkX2d1Y192 YXJpYWJsZXModm9pZCkKIHsKIAlpbnQJCQlzaXplX3ZhcnM7CiAJaW50CQkJbnVtX3ZhcnMgPSAw OwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCUdVQ0hhc2hFbnRyeSAqaGVudHJ5OwogCWJvb2wJCWZv dW5kOwogCkBAIC04OTQsMTUgKzg5MywxMCBAQCBidWlsZF9ndWNfdmFyaWFibGVzKHZvaWQpCiAJ ICovCiAJc2l6ZV92YXJzID0gbnVtX3ZhcnMgKyBudW1fdmFycyAvIDQ7CiAKLQloYXNoX2N0bC5r ZXlzaXplID0gc2l6ZW9mKGNoYXIgKik7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKEdV Q0hhc2hFbnRyeSk7Ci0JaGFzaF9jdGwuaGFzaCA9IGd1Y19uYW1lX2hhc2g7Ci0JaGFzaF9jdGwu bWF0Y2ggPSBndWNfbmFtZV9tYXRjaDsKLQloYXNoX2N0bC5oY3h0ID0gR1VDTWVtb3J5Q29udGV4 dDsKLQlndWNfaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJHVUMgaGFzaCB0YWJsZSIsCi0JCQkJCQkJ ICBzaXplX3ZhcnMsCi0JCQkJCQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJICBIQVNIX0VMRU0gfCBI QVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsKKwlndWNfaGFzaHRh YiA9IGhhc2hfbWFrZV9mbl9jeHQoR1VDSGFzaEVudHJ5LCBndWNuYW1lLAorCQkJCQkJCQkgICAi R1VDIGhhc2ggdGFibGUiLCBzaXplX3ZhcnMsCisJCQkJCQkJCSAgIGd1Y19uYW1lX2hhc2gsIGd1 Y19uYW1lX21hdGNoLAorCQkJCQkJCQkgICBHVUNNZW1vcnlDb250ZXh0KTsKIAogCWZvciAoaW50 IGkgPSAwOyBDb25maWd1cmVOYW1lc1tpXS5uYW1lOyBpKyspCiAJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvaW5qZWN0aW9uX3BvaW50LmMKaW5kZXggYzA2YjBlOWI4MDAuLmE2Y2I0NjQwMmFhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2ludC5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvaW5qZWN0aW9uX3BvaW50LmMKQEAgLTEyNywxNiArMTI3 LDEwIEBAIGluamVjdGlvbl9wb2ludF9jYWNoZV9hZGQoY29uc3QgY2hhciAqbmFtZSwKIAkvKiBJ ZiBmaXJzdCB0aW1lLCBpbml0aWFsaXplICovCiAJaWYgKEluamVjdGlvblBvaW50Q2FjaGUgPT0g TlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBz aXplb2YoY2hhcltJTkpfTkFNRV9NQVhMRU5dKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6 ZW9mKEluamVjdGlvblBvaW50Q2FjaGVFbnRyeSk7Ci0JCWhhc2hfY3RsLmhjeHQgPSBUb3BNZW1v cnlDb250ZXh0OwotCi0JCUluamVjdGlvblBvaW50Q2FjaGUgPSBoYXNoX2NyZWF0ZSgiSW5qZWN0 aW9uUG9pbnQgY2FjaGUgaGFzaCIsCi0JCQkJCQkJCQkJICBNQVhfSU5KRUNUSU9OX1BPSU5UUywK LQkJCQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RS SU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJCUluamVjdGlvblBvaW50Q2FjaGUgPSBoYXNoX21ha2Vf Y3h0KEluamVjdGlvblBvaW50Q2FjaGVFbnRyeSwgbmFtZSwKKwkJCQkJCQkJCQkJIkluamVjdGlv blBvaW50IGNhY2hlIGhhc2giLAorCQkJCQkJCQkJCQlNQVhfSU5KRUNUSU9OX1BPSU5UUywKKwkJ CQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJZW50cnkgPSAoSW5qZWN0aW9uUG9p bnRDYWNoZUVudHJ5ICopCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRh bG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCA0ZmE0ZDQz MjAyMS4uMGExMDgyZjQ4NDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9y dGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAtMTAz LDIzICsxMDMsMTkgQEAgc3RhdGljIE1lbW9yeUNvbnRleHQgVG9wUG9ydGFsQ29udGV4dCA9IE5V TEw7CiB2b2lkCiBFbmFibGVQb3J0YWxNYW5hZ2VyKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwot CiAJQXNzZXJ0KFRvcFBvcnRhbENvbnRleHQgPT0gTlVMTCk7CiAKIAlUb3BQb3J0YWxDb250ZXh0 ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCiAJCQkJCQkJCQkJCSAi VG9wUG9ydGFsQ29udGV4dCIsCiAJCQkJCQkJCQkJCSBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsK IAotCWN0bC5rZXlzaXplID0gTUFYX1BPUlRBTE5BTUVfTEVOOwotCWN0bC5lbnRyeXNpemUgPSBz aXplb2YoUG9ydGFsSGFzaEVudCk7Ci0KIAkvKgogCSAqIHVzZSBQT1JUQUxTX1BFUl9VU0VSIGFz IGEgZ3Vlc3Mgb2YgaG93IG1hbnkgaGFzaCB0YWJsZSBlbnRyaWVzIHRvCiAJICogY3JlYXRlLCBp bml0aWFsbHkKIAkgKi8KLQlQb3J0YWxIYXNoVGFibGUgPSBoYXNoX2NyZWF0ZSgiUG9ydGFsIGhh c2giLCBQT1JUQUxTX1BFUl9VU0VSLAotCQkJCQkJCQkgICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hf U1RSSU5HUyk7CisJUG9ydGFsSGFzaFRhYmxlID0gaGFzaF9tYWtlX2N4dChQb3J0YWxIYXNoRW50 LCBwb3J0YWxuYW1lLAorCQkJCQkJCQkJIlBvcnRhbCBoYXNoIiwgUE9SVEFMU19QRVJfVVNFUiwK KwkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvdGltZS9jb21ib2NpZC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9jb21i b2NpZC5jCmluZGV4IDYxNGI3YzEwMDZiLi40YzMxNjc1NTM1YSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvdGltZS9jb21ib2NpZC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUv Y29tYm9jaWQuYwpAQCAtMjE0LDggKzIxNCw2IEBAIEdldENvbWJvQ29tbWFuZElkKENvbW1hbmRJ ZCBjbWluLCBDb21tYW5kSWQgY21heCkKIAkgKi8KIAlpZiAoY29tYm9IYXNoID09IE5VTEwpCiAJ ewotCQlIQVNIQ1RMCQloYXNoX2N0bDsKLQogCQkvKiBNYWtlIGFycmF5IGZpcnN0OyBleGlzdGVu Y2Ugb2YgaGFzaCB0YWJsZSBhc3NlcnRzIGFycmF5IGV4aXN0cyAqLwogCQljb21ib0NpZHMgPSAo Q29tYm9DaWRLZXlEYXRhICopCiAJCQlNZW1vcnlDb250ZXh0QWxsb2MoVG9wVHJhbnNhY3Rpb25D b250ZXh0LApAQCAtMjIzLDE0ICsyMjEsOSBAQCBHZXRDb21ib0NvbW1hbmRJZChDb21tYW5kSWQg Y21pbiwgQ29tbWFuZElkIGNtYXgpCiAJCXNpemVDb21ib0NpZHMgPSBDQ0lEX0FSUkFZX1NJWkU7 CiAJCXVzZWRDb21ib0NpZHMgPSAwOwogCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoQ29t Ym9DaWRLZXlEYXRhKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKENvbWJvQ2lkRW50 cnlEYXRhKTsKLQkJaGFzaF9jdGwuaGN4dCA9IFRvcFRyYW5zYWN0aW9uQ29udGV4dDsKLQotCQlj b21ib0hhc2ggPSBoYXNoX2NyZWF0ZSgiQ29tYm8gQ0lEcyIsCi0JCQkJCQkJCUNDSURfSEFTSF9T SVpFLAotCQkJCQkJCQkmaGFzaF9jdGwsCi0JCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMg fCBIQVNIX0NPTlRFWFQpOworCQljb21ib0hhc2ggPSBoYXNoX21ha2VfY3h0KENvbWJvQ2lkRW50 cnlEYXRhLCBrZXksCisJCQkJCQkJCSAgIkNvbWJvIENJRHMiLCBDQ0lEX0hBU0hfU0laRSwKKwkJ CQkJCQkJICBUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9z cmMvcGwvcGxwZXJsL3BscGVybC5jIGIvc3JjL3BsL3BscGVybC9wbHBlcmwuYwppbmRleCAwMmVj ZWQzYjJjNS4uNDkwNDRiYzgwOGIgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMK KysrIGIvc3JjL3BsL3BscGVybC9wbHBlcmwuYwpAQCAtMzkwLDcgKzM5MCw2IEBAIF9QR19pbml0 KHZvaWQpCiAJICogInBscGVybC51c2Vfc3RyaWN0IgogCSAqLwogCXN0YXRpYyBib29sIGluaXRl ZCA9IGZhbHNlOwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJaWYgKGluaXRlZCkKIAkJcmV0dXJu OwpAQCAtNDYwLDE5ICs0NTksMTMgQEAgX1BHX2luaXQodm9pZCkKIAkvKgogCSAqIENyZWF0ZSBo YXNoIHRhYmxlcy4KIAkgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFz aF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHBscGVybF9pbnRlcnBfZGVzYyk7Ci0JcGxwZXJsX2lu dGVycF9oYXNoID0gaGFzaF9jcmVhdGUoIlBML1BlcmwgaW50ZXJwcmV0ZXJzIiwKLQkJCQkJCQkJ CSA4LAotCQkJCQkJCQkJICZoYXNoX2N0bCwKLQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JM T0JTKTsKLQotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YocGxwZXJsX3Byb2Nfa2V5KTsKLQlo YXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YocGxwZXJsX3Byb2NfcHRyKTsKLQlwbHBlcmxfcHJv Y19oYXNoID0gaGFzaF9jcmVhdGUoIlBML1BlcmwgcHJvY2VkdXJlcyIsCi0JCQkJCQkJCSAgIDMy LAotCQkJCQkJCQkgICAmaGFzaF9jdGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOworCXBscGVybF9pbnRlcnBfaGFzaCA9IGhhc2hfbWFrZV9jeHQocGxwZXJsX2ludGVycF9k ZXNjLCB1c2VyX2lkLAorCQkJCQkJCQkJICAgIlBML1BlcmwgaW50ZXJwcmV0ZXJzIiwgOCwKKwkJ CQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOworCisJcGxwZXJsX3Byb2NfaGFzaCA9IGhhc2hf bWFrZV9jeHQocGxwZXJsX3Byb2NfcHRyLCBwcm9jX2tleSwKKwkJCQkJCQkJCSAiUEwvUGVybCBw cm9jZWR1cmVzIiwgMzIsCisJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKgogCSAq IFNhdmUgdGhlIGRlZmF1bHQgb3BtYXNrLgpAQCAtNTc4LDE0ICs1NzEsOSBAQCBzZWxlY3RfcGVy bF9jb250ZXh0KGJvb2wgdHJ1c3RlZCkKIAkvKiBNYWtlIHN1cmUgd2UgaGF2ZSBhIHF1ZXJ5X2hh c2ggZm9yIHRoaXMgaW50ZXJwcmV0ZXIgKi8KIAlpZiAoaW50ZXJwX2Rlc2MtPnF1ZXJ5X2hhc2gg PT0gTlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUg PSBOQU1FREFUQUxFTjsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHBscGVybF9xdWVy eV9lbnRyeSk7Ci0JCWludGVycF9kZXNjLT5xdWVyeV9oYXNoID0gaGFzaF9jcmVhdGUoIlBML1Bl cmwgcXVlcmllcyIsCi0JCQkJCQkJCQkJCSAgMzIsCi0JCQkJCQkJCQkJCSAgJmhhc2hfY3RsLAot CQkJCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJCWludGVycF9kZXNjLT5x dWVyeV9oYXNoID0gaGFzaF9tYWtlX2N4dChwbHBlcmxfcXVlcnlfZW50cnksIHF1ZXJ5X25hbWUs CisJCQkJCQkJCQkJCQkiUEwvUGVybCBxdWVyaWVzIiwgMzIsCisJCQkJCQkJCQkJCQlUb3BNZW1v cnlDb250ZXh0KTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGdzcWwvc3JjL3Bs X2V4ZWMuYyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKaW5kZXggNzUzMjUxMTdlYzku LmZiYjg4YWZmYTE1IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCisr KyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKQEAgLTM5OTUsOCArMzk5NSw2IEBAIHBs cGdzcWxfZXN0YXRlX3NldHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCQkJCSBFU3Rh dGUgKnNpbXBsZV9ldmFsX2VzdGF0ZSwKIAkJCQkJIFJlc291cmNlT3duZXIgc2ltcGxlX2V2YWxf cmVzb3duZXIpCiB7Ci0JSEFTSENUTAkJY3RsOwotCiAJLyogdGhpcyBsaW5rIHdpbGwgYmUgcmVz dG9yZWQgYXQgZXhpdCBmcm9tIHBscGdzcWxfY2FsbF9oYW5kbGVyICovCiAJZnVuYy0+Y3VyX2Vz dGF0ZSA9IGVzdGF0ZTsKIApAQCAtNDA1MSwxMiArNDA0OSwxMCBAQCBwbHBnc3FsX2VzdGF0ZV9z ZXR1cChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCS8qIENyZWF0ZSB0aGUgc2Vzc2lvbi13 aWRlIGNhc3QtZXhwcmVzc2lvbiBoYXNoIGlmIHdlIGRpZG4ndCBhbHJlYWR5ICovCiAJaWYgKGNh c3RfZXhwcl9oYXNoID09IE5VTEwpCiAJewotCQljdGwua2V5c2l6ZSA9IHNpemVvZihwbHBnc3Fs X0Nhc3RIYXNoS2V5KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RFeHBy SGFzaEVudHJ5KTsKLQkJY2FzdF9leHByX2hhc2ggPSBoYXNoX2NyZWF0ZSgiUExwZ1NRTCBjYXN0 IGV4cHJlc3Npb25zIiwKLQkJCQkJCQkJCSAxNiwJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAq LwotCQkJCQkJCQkJICZjdGwsCi0JCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJ CWNhc3RfZXhwcl9oYXNoID0gaGFzaF9tYWtlX2N4dChwbHBnc3FsX0Nhc3RFeHBySGFzaEVudHJ5 LCBrZXksCisJCQkJCQkJCQkgICAiUExwZ1NRTCBjYXN0IGV4cHJlc3Npb25zIiwKKwkJCQkJCQkJ CSAgIDE2LAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCisJCQkJCQkJCQkgICBUb3BNZW1v cnlDb250ZXh0KTsKIAl9CiAKIAkvKiBzZXQgdXAgZm9yIHVzZSBvZiBhcHByb3ByaWF0ZSBzaW1w bGUtZXhwcmVzc2lvbiBFU3RhdGUgYW5kIGNhc3QgaGFzaCAqLwpAQCAtNDA2NCwxMyArNDA2MCw5 IEBAIHBscGdzcWxfZXN0YXRlX3NldHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJewog CQllc3RhdGUtPnNpbXBsZV9ldmFsX2VzdGF0ZSA9IHNpbXBsZV9ldmFsX2VzdGF0ZTsKIAkJLyog UHJpdmF0ZSBjYXN0IGhhc2gganVzdCBsaXZlcyBpbiBmdW5jdGlvbidzIG1haW4gY29udGV4dCAq LwotCQljdGwua2V5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RIYXNoS2V5KTsKLQkJY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RIYXNoRW50cnkpOwotCQljdGwuaGN4dCA9IEN1 cnJlbnRNZW1vcnlDb250ZXh0OwotCQllc3RhdGUtPmNhc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJQ THBnU1FMIHByaXZhdGUgY2FzdCBjYWNoZSIsCi0JCQkJCQkJCQkJMTYsIC8qIHN0YXJ0IHNtYWxs IGFuZCBleHRlbmQgKi8KLQkJCQkJCQkJCQkmY3RsLAotCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhB U0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQllc3RhdGUtPmNhc3RfaGFzaCA9IGhhc2hfbWFr ZShwbHBnc3FsX0Nhc3RIYXNoRW50cnksIGtleSwKKwkJCQkJCQkJCSAgIlBMcGdTUUwgcHJpdmF0 ZSBjYXN0IGNhY2hlIiwKKwkJCQkJCQkJCSAgMTYpOwkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5k ICovCiAJfQogCWVsc2UKIAl7CkBAIC00MDc4LDEyICs0MDcwLDEwIEBAIHBscGdzcWxfZXN0YXRl X3NldHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCS8qIENyZWF0ZSB0aGUgc2Vzc2lv bi13aWRlIGNhc3QtaW5mbyBoYXNoIHRhYmxlIGlmIHdlIGRpZG4ndCBhbHJlYWR5ICovCiAJCWlm IChzaGFyZWRfY2FzdF9oYXNoID09IE5VTEwpCiAJCXsKLQkJCWN0bC5rZXlzaXplID0gc2l6ZW9m KHBscGdzcWxfQ2FzdEhhc2hLZXkpOwotCQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHBnc3Fs X0Nhc3RIYXNoRW50cnkpOwotCQkJc2hhcmVkX2Nhc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJQTHBn U1FMIGNhc3QgY2FjaGUiLAotCQkJCQkJCQkJCSAgIDE2LAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0 ZW5kICovCi0JCQkJCQkJCQkJICAgJmN0bCwKLQkJCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTKTsKKwkJCXNoYXJlZF9jYXN0X2hhc2ggPSBoYXNoX21ha2VfY3h0KHBscGdzcWxfQ2Fz dEhhc2hFbnRyeSwga2V5LAorCQkJCQkJCQkJCQkgIlBMcGdTUUwgY2FzdCBjYWNoZSIsCisJCQkJ CQkJCQkJCSAxNiwJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLworCQkJCQkJCQkJCQkgVG9w TWVtb3J5Q29udGV4dCk7CiAJCX0KIAkJZXN0YXRlLT5jYXN0X2hhc2ggPSBzaGFyZWRfY2FzdF9o YXNoOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYyBi L3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYwppbmRleCA4OTkzMTYxMmM1Yi4uYjI2 OGIzODBjZDUgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYwor KysgYi9zcmMvcGwvcGxweXRob24vcGxweV9wbHB5bW9kdWxlLmMKQEAgLTE2LDYgKzE2LDcgQEAK ICNpbmNsdWRlICJwbHB5X3N1YnhhY3RvYmplY3QuaCIKICNpbmNsdWRlICJwbHB5X3V0aWwuaCIK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAKIEhUQUIJICAgKlBMeV9zcGlfZXhjZXB0aW9ucyA9IE5VTEw7CiAKQEAgLTE3Miw3ICsxNzMs NiBAQCBzdGF0aWMgdm9pZAogUEx5X2FkZF9leGNlcHRpb25zKFB5T2JqZWN0ICpwbHB5KQogewog CVB5T2JqZWN0ICAgKmV4Y21vZDsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAogCWV4Y21vZCA9IFB5 TW9kdWxlX0NyZWF0ZSgmUEx5X2V4Y19tb2R1bGUpOwogCWlmIChleGNtb2QgPT0gTlVMTCkKQEAg LTE5MywxMCArMTkzLDkgQEAgUEx5X2FkZF9leGNlcHRpb25zKFB5T2JqZWN0ICpwbHB5KQogCVBM eV9leGNfc3BpX2Vycm9yID0gUEx5X2NyZWF0ZV9leGNlcHRpb24oInBscHkuU1BJRXJyb3IiLCBO VUxMLCBOVUxMLAogCQkJCQkJCQkJCQkgIlNQSUVycm9yIiwgcGxweSk7CiAKLQloYXNoX2N0bC5r ZXlzaXplID0gc2l6ZW9mKGludCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFBMeUV4 Y2VwdGlvbkVudHJ5KTsKLQlQTHlfc3BpX2V4Y2VwdGlvbnMgPSBoYXNoX2NyZWF0ZSgiUEwvUHl0 aG9uIFNQSSBleGNlcHRpb25zIiwgMjU2LAotCQkJCQkJCQkJICZoYXNoX2N0bCwgSEFTSF9FTEVN IHwgSEFTSF9CTE9CUyk7CisJUEx5X3NwaV9leGNlcHRpb25zID0gaGFzaF9tYWtlX2N4dChQTHlF eGNlcHRpb25FbnRyeSwgc3Fsc3RhdGUsCisJCQkJCQkJCQkgICAiUEwvUHl0aG9uIFNQSSBleGNl cHRpb25zIiwgMjU2LAorCQkJCQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAlQTHlfZ2Vu ZXJhdGVfc3BpX2V4Y2VwdGlvbnMoZXhjbW9kLCBQTHlfZXhjX3NwaV9lcnJvcik7CiB9CmRpZmYg LS1naXQgYS9zcmMvcGwvcGxweXRob24vcGxweV9wcm9jZWR1cmUuYyBiL3NyYy9wbC9wbHB5dGhv bi9wbHB5X3Byb2NlZHVyZS5jCmluZGV4IDc1MGJhNTg2ZTBjLi5mYzcyOGY3YWI4YSAxMDA2NDQK LS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHlfcHJvY2VkdXJlLmMKKysrIGIvc3JjL3BsL3BscHl0 aG9uL3BscHlfcHJvY2VkdXJlLmMKQEAgLTI5LDEyICsyOSw5IEBAIHN0YXRpYyBjaGFyICpQTHlf cHJvY2VkdXJlX211bmdlX3NvdXJjZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzcmMp Owogdm9pZAogaW5pdF9wcm9jZWR1cmVfY2FjaGVzKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9j dGw7Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFBMeVByb2NlZHVyZUtleSk7Ci0JaGFz aF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFBMeVByb2NlZHVyZUVudHJ5KTsKLQlQTHlfcHJvY2Vk dXJlX2NhY2hlID0gaGFzaF9jcmVhdGUoIlBML1B5dGhvbiBwcm9jZWR1cmVzIiwgMzIsICZoYXNo X2N0bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJUEx5X3Byb2NlZHVy ZV9jYWNoZSA9IGhhc2hfbWFrZV9jeHQoUEx5UHJvY2VkdXJlRW50cnksIGtleSwKKwkJCQkJCQkJ CQkiUEwvUHl0aG9uIHByb2NlZHVyZXMiLCAzMiwKKwkJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0 KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9wbC90Y2wvcGx0Y2wuYyBiL3NyYy9wbC90Y2wv cGx0Y2wuYwppbmRleCAxODc2OThjY2RkMi4uNzA3MDA1MTQ2M2QgMTAwNjQ0Ci0tLSBhL3NyYy9w bC90Y2wvcGx0Y2wuYworKysgYi9zcmMvcGwvdGNsL3BsdGNsLmMKQEAgLTQwOCw3ICs0MDgsNiBA QCB2b2lkCiBfUEdfaW5pdCh2b2lkKQogewogCVRjbF9Ob3RpZmllclByb2NzIG5vdGlmaWVyOwot CUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJLyogQmUgc3VyZSB3ZSBkbyBpbml0aWFsaXphdGlvbiBv bmx5IG9uY2UgKHNob3VsZCBiZSByZWR1bmRhbnQgbm93KSAqLwogCWlmIChwbHRjbF9wbV9pbml0 X2RvbmUpCkBAIC00NDYsMjIgKzQ0NSwxNiBAQCBfUEdfaW5pdCh2b2lkKQogCS8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAkgKiBD cmVhdGUgdGhlIGhhc2ggdGFibGUgZm9yIHdvcmtpbmcgaW50ZXJwcmV0ZXJzCiAJICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQlo YXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6 ZW9mKHBsdGNsX2ludGVycF9kZXNjKTsKLQlwbHRjbF9pbnRlcnBfaHRhYiA9IGhhc2hfY3JlYXRl KCJQTC9UY2wgaW50ZXJwcmV0ZXJzIiwKLQkJCQkJCQkJCTgsCi0JCQkJCQkJCQkmaGFzaF9jdGws Ci0JCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlwbHRjbF9pbnRlcnBfaHRhYiA9 IGhhc2hfbWFrZV9jeHQocGx0Y2xfaW50ZXJwX2Rlc2MsIHVzZXJfaWQsCisJCQkJCQkJCQkgICJQ TC9UY2wgaW50ZXJwcmV0ZXJzIiwgOCwKKwkJCQkJCQkJCSAgVG9wTWVtb3J5Q29udGV4dCk7CiAK IAkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCiAJICogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlIGZvciBmdW5jdGlvbiBsb29rdXAKIAkg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YocGx0Y2xfcHJvY19rZXkpOwotCWhhc2hf Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHRjbF9wcm9jX3B0cik7Ci0JcGx0Y2xfcHJvY19odGFi ID0gaGFzaF9jcmVhdGUoIlBML1RjbCBmdW5jdGlvbnMiLAotCQkJCQkJCQkgIDEwMCwKLQkJCQkJ CQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJcGx0 Y2xfcHJvY19odGFiID0gaGFzaF9tYWtlX2N4dChwbHRjbF9wcm9jX3B0ciwgcHJvY19rZXksCisJ CQkJCQkJCQkiUEwvVGNsIGZ1bmN0aW9ucyIsIDEwMCwKKwkJCQkJCQkJCVRvcE1lbW9yeUNvbnRl eHQpOwogCiAJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgogCSAqIERlZmluZSBQTC9UY2wncyBjdXN0b20gR1VDcwpkaWZmIC0tZ2l0 IGEvc3JjL3RpbWV6b25lL3BndHouYyBiL3NyYy90aW1lem9uZS9wZ3R6LmMKaW5kZXggZWFjOTg4 YzIxZTcuLmM2OGRlOTNiNTM1IDEwMDY0NAotLS0gYS9zcmMvdGltZXpvbmUvcGd0ei5jCisrKyBi L3NyYy90aW1lem9uZS9wZ3R6LmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJwZ3R6Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNp bmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCiAKIC8qIEN1cnJlbnQgc2Vzc2lvbiB0aW1lem9u ZSAoY29udHJvbGxlZCBieSBUaW1lWm9uZSBHVUMpICovCkBAIC0yMDEsMTUgKzIwMiw4IEBAIHN0 YXRpYyBIVEFCICp0aW1lem9uZV9jYWNoZSA9IE5VTEw7CiBzdGF0aWMgYm9vbAogaW5pdF90aW1l em9uZV9oYXNodGFibGUodm9pZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCWhhc2hfY3Rs LmtleXNpemUgPSBUWl9TVFJMRU5fTUFYICsgMTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXpl b2YocGdfdHpfY2FjaGUpOwotCi0JdGltZXpvbmVfY2FjaGUgPSBoYXNoX2NyZWF0ZSgiVGltZXpv bmVzIiwKLQkJCQkJCQkJIDQsCi0JCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJCQkJCSBIQVNIX0VM RU0gfCBIQVNIX1NUUklOR1MpOworCXRpbWV6b25lX2NhY2hlID0gaGFzaF9tYWtlX2N4dChwZ190 el9jYWNoZSwgdHpuYW1ldXBwZXIsCisJCQkJCQkJCSAgICJUaW1lem9uZXMiLCA0LCBUb3BNZW1v cnlDb250ZXh0KTsKIAlpZiAoIXRpbWV6b25lX2NhY2hlKQogCQlyZXR1cm4gZmFsc2U7CiAKLS0g CjIuNTIuMAoK --d56ff9939aba4b3c25f60e99a71ae3e368c16671eeb350a214b2e014d44b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v6-0004-Use-foreach_hash-macro-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v6-0004-Use-foreach_hash-macro-throughout-the-codebase.patch RnJvbSAzMmRhYjJhNjAxMDViZWI5NmE1ZDkxYTUwY2ZiYzE2MGIxOTI0NGU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDkgKzAxMDAKU3ViamVjdDogW1BBVENIIHY2 IDQvNV0gVXNlIGZvcmVhY2hfaGFzaCBtYWNybyB0aHJvdWdob3V0IHRoZSBjb2RlYmFzZQoKVGhp cyBzdGFydHMgdXNpbmcgdGhlIG5ldyBmb3JlYWNoX2hhc2ggbWFjcm8gdGhyb3VnaG91dCB0aGUg Y29kZWJhc2UuClRoaXMgbWFrZXMgY29kZSBlYXNpZXIgdG8gcmVhZCwgYnV0IG9idmlvdXNseSBk b2VzIGludHJvZHVjZQpiYWNrcGF0Y2hpbmcgcHJvYmxlbXMuIFdlIGNhbiBjaG9vc2Ugbm90IHRv IGRvIHRoaXMgcmVmYWN0b3IgdG8gYXZvaWQKdGhhdC4gT3Igd2UgY291bGQgaW5zdGVhZCBjaG9v c2UgdG8gZG8gdGhlIHJlZmFjdG9yIGFuZCB0aGVuIGJhY2twYXRjaAp0aGVzZSBuZXcgbWFjcm9z IHNvIHRoZXkgY2FuIGJlIHVzZWQgaW4gYmFja3BhdGNoZWQgY29kZS4KCkF0IHRoZSB2ZXJ5IGxl YXN0IHdlIHNob3VsZCBjaG9vc2UgYSBmZXcgcGxhY2VzIHdoZXJlIHdlIHVzZSB0aGUgbmV3Cm1h Y3JvcyB0byBtYWtlIHN1cmUgdGhleSBoYXZlIGNvdmVyYWdlLgotLS0KIGNvbnRyaWIvZGJsaW5r L2RibGluay5jICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICstCiAuLi4vcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jICAgfCAzOSArKystLS0tLS0KIGNvbnRyaWIvcGdf dHJnbS90cmdtX3JlZ2V4cC5jICAgICAgICAgICAgICAgICB8IDE4ICstLS0KIGNvbnRyaWIvcG9z dGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8IDI2ICsrLS0tLQogY29udHJpYi9w b3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMgICAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMgICAgICAgICB8IDE4ICstLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jICAgICAgICB8IDIwICstLS0tCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX2VudW0uYyAgICAgICAgICAgICAgICAgfCAxNiArKy0tCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL3N0b3JhZ2UuYyAgICAgICAgICAgICAgICAgfCAxOCArKy0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAxMiArLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA3ICstCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX29wZXIuYyAgICAgICAgICAgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5kL3BhcnRp dGlvbmluZy9wYXJ0ZGVzYy5jICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZWxhdGlvbi5jICAgIHwgMzcgKystLS0tLS0KIC4uLi9yZXBsaWNhdGlvbi9s b2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgMjQgKystLS0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9idWZtZ3IuYyAgICAgICAgICAgfCAxMCArLS0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3NobWVtLmMgICAgICAgICAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgMTIgKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvbG9jay5jICAgICAgICAgICAgICAgfCA2NyArKystLS0tLS0tLS0tLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYyAgICAgICAgICAgICB8ICA3ICstCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgICAgICAgICAgfCAxOCArLS0tCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL3NtZ3Ivc21nci5jICAgICAgICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9zeW5jL3N5bmMuYyAgICAgICAgICAgICAgIHwgMTMgKy0tCiBzcmMvYmFja2VuZC90 c2VhcmNoL3RzX3R5cGFuYWx5emUuYyAgICAgICAgICAgfCAxMSArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC91dGls cy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jICAgICAgfCAxNyArKy0tCiBzcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCA1MyArKysrLS0tLS0tLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYyAgICB8ICA2ICstCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvdHNfY2FjaGUuYyAgICAgICAgICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3R5cGNhY2hlLmMgICAgICAgICAgICB8IDExICstLQogc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgMzAgKystLS0tLQogc3JjL2JhY2tlbmQv dXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgICAgICAgICAgIHwgODUgKysrLS0tLS0tLS0tLS0tLS0t LQogc3JjL3BsL3BscGVybC9wbHBlcmwuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKy0K IDM3IGZpbGVzIGNoYW5nZWQsIDE0MSBpbnNlcnRpb25zKCspLCA1MjYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMgYi9jb250cmliL2RibGluay9kYmxp bmsuYwppbmRleCAxOTI0MThkZjRhZi4uNDNkNjFjOWNmNjUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv ZGJsaW5rL2RibGluay5jCisrKyBiL2NvbnRyaWIvZGJsaW5rL2RibGluay5jCkBAIC0xMjc1LDE0 ICsxMjc1LDExIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZGJsaW5rX2dldF9jb25uZWN0aW9ucyk7 CiBEYXR1bQogZGJsaW5rX2dldF9jb25uZWN0aW9ucyhQR19GVU5DVElPTl9BUkdTKQogewotCUhB U0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JcmVtb3RlQ29ubkhhc2hFbnQgKmhlbnRyeTsKIAlBcnJh eUJ1aWxkU3RhdGUgKmFzdGF0ZSA9IE5VTEw7CiAKIAlpZiAocmVtb3RlQ29ubkhhc2gpCiAJewot CQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHJlbW90ZUNvbm5IYXNoKTsKLQkJd2hpbGUgKChoZW50 cnkgPSAocmVtb3RlQ29ubkhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBO VUxMKQorCQlmb3JlYWNoX2hhc2gocmVtb3RlQ29ubkhhc2hFbnQsIGhlbnRyeSwgcmVtb3RlQ29u bkhhc2gpCiAJCXsKIAkJCS8qIGlnbm9yZSBpdCBpZiBpdCdzIG5vdCBhbiBvcGVuIGNvbm5lY3Rp b24gKi8KIAkJCWlmIChoZW50cnktPnJjb25uLmNvbm4gPT0gTlVMTCkKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggNDcyMjdmODU3MjEu LjQwMjhhMjI5NTNlIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19z dGF0X3N0YXRlbWVudHMuYworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0 X3N0YXRlbWVudHMuYwpAQCAtNzQxLDkgKzc0MSw3IEBAIHBnc3Nfc2htZW1fc2h1dGRvd24oaW50 IGNvZGUsIERhdHVtIGFyZykKIAlGSUxFCSAgICpmaWxlOwogCWNoYXIJICAgKnFidWZmZXIgPSBO VUxMOwogCVNpemUJCXFidWZmZXJfc2l6ZSA9IDA7Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2Vx OwogCWludDMyCQludW1fZW50cmllczsKLQlwZ3NzRW50cnkgICplbnRyeTsKIAogCS8qIERvbid0 IHRyeSB0byBkdW1wIGR1cmluZyBhIGNyYXNoLiAqLwogCWlmIChjb2RlKQpAQCAtNzc3LDggKzc3 NSw3IEBAIHBnc3Nfc2htZW1fc2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKIAkgKiBXaGVu IHNlcmlhbGl6aW5nIHRvIGRpc2ssIHdlIHN0b3JlIHF1ZXJ5IHRleHRzIGltbWVkaWF0ZWx5IGFm dGVyIHRoZWlyCiAJICogZW50cnkgZGF0YS4gIEFueSBvcnBoYW5lZCBxdWVyeSB0ZXh0cyBhcmUg dGhlcmVieSBleGNsdWRlZC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19o YXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5V TEwpCisJZm9yZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBnc3NfaGFzaCkKIAl7CiAJCWlu dAkJCWxlbiA9IGVudHJ5LT5xdWVyeV9sZW47CiAJCWNoYXIJICAgKnFzdHIgPSBxdGV4dF9mZXRj aChlbnRyeS0+cXVlcnlfb2Zmc2V0LCBsZW4sCkBAIC03OTAsOCArNzg3LDggQEAgcGdzc19zaG1l bV9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQogCQlpZiAoZndyaXRlKGVudHJ5LCBzaXpl b2YocGdzc0VudHJ5KSwgMSwgZmlsZSkgIT0gMSB8fAogCQkJZndyaXRlKHFzdHIsIDEsIGxlbiAr IDEsIGZpbGUpICE9IGxlbiArIDEpCiAJCXsKLQkJCS8qIG5vdGU6IHdlIGFzc3VtZSBoYXNoX3Nl cV90ZXJtIHdvbid0IGNoYW5nZSBlcnJubyAqLwotCQkJaGFzaF9zZXFfdGVybSgmaGFzaF9zZXEp OworCQkJLyogbm90ZTogd2UgYXNzdW1lIGZvcmVhY2hfaGFzaF90ZXJtIHdvbid0IGNoYW5nZSBl cnJubyAqLworCQkJZm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOwogCQkJZ290byBlcnJvcjsKIAkJ fQogCX0KQEAgLTE2OTUsOCArMTY5Miw2IEBAIHBnX3N0YXRfc3RhdGVtZW50c19pbnRlcm5hbChG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAlTaXplCQlxYnVmZmVyX3NpemUgPSAwOwogCVNpemUJ CWV4dGVudCA9IDA7CiAJaW50CQkJZ2NfY291bnQgPSAwOwotCUhBU0hfU0VRX1NUQVRVUyBoYXNo X3NlcTsKLQlwZ3NzRW50cnkgICplbnRyeTsKIAogCS8qCiAJICogU3VwZXJ1c2VycyBvciByb2xl cyB3aXRoIHRoZSBwcml2aWxlZ2VzIG9mIHBnX3JlYWRfYWxsX3N0YXRzIG1lbWJlcnMKQEAgLTE4 MjUsOCArMTgyMCw3IEBAIHBnX3N0YXRfc3RhdGVtZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJ bmZvIGZjaW5mbywKIAkJfQogCX0KIAotCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hh c2gpOwotCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVM TCkKKwlmb3JlYWNoX2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdzc19oYXNoKQogCXsKIAkJRGF0 dW0JCXZhbHVlc1tQR19TVEFUX1NUQVRFTUVOVFNfQ09MU107CiAJCWJvb2wJCW51bGxzW1BHX1NU QVRfU1RBVEVNRU5UU19DT0xTXTsKQEAgLTIxNzAsOSArMjE2NCw3IEBAIGVudHJ5X2NtcChjb25z dCB2b2lkICpsaHMsIGNvbnN0IHZvaWQgKnJocykKIHN0YXRpYyB2b2lkCiBlbnRyeV9kZWFsbG9j KHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwogCXBnc3NFbnRyeSAqKmVudHJp ZXM7Ci0JcGdzc0VudHJ5ICAqZW50cnk7CiAJaW50CQkJbnZpY3RpbXM7CiAJaW50CQkJaTsKIAlT aXplCQl0b3R0ZXh0bGVuOwpAQCAtMjE5Niw4ICsyMTg4LDcgQEAgZW50cnlfZGVhbGxvYyh2b2lk KQogCXRvdHRleHRsZW4gPSAwOwogCW52YWxpZHRleHRzID0gMDsKIAotCWhhc2hfc2VxX2luaXQo Jmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2go Jmhhc2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdz c19oYXNoKQogCXsKIAkJZW50cmllc1tpKytdID0gZW50cnk7CiAJCS8qICJTdGlja3kiIGVudHJp ZXMgZ2V0IGEgZGlmZmVyZW50IHVzYWdlIGRlY2F5IHJhdGUuICovCkBAIC0yNTA5LDggKzI1MDAs NiBAQCBnY19xdGV4dHModm9pZCkKIAljaGFyCSAgICpxYnVmZmVyOwogCVNpemUJCXFidWZmZXJf c2l6ZTsKIAlGSUxFCSAgICpxZmlsZSA9IE5VTEw7Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2Vx OwotCXBnc3NFbnRyeSAgKmVudHJ5OwogCVNpemUJCWV4dGVudDsKIAlpbnQJCQluZW50cmllczsK IApAQCAtMjU1Miw4ICsyNTQxLDcgQEAgZ2NfcXRleHRzKHZvaWQpCiAJZXh0ZW50ID0gMDsKIAlu ZW50cmllcyA9IDA7CiAKLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQl3 aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9y ZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBnc3NfaGFzaCkKIAl7CiAJCWludAkJCXF1ZXJ5 X2xlbiA9IGVudHJ5LT5xdWVyeV9sZW47CiAJCWNoYXIJICAgKnFyeSA9IHF0ZXh0X2ZldGNoKGVu dHJ5LT5xdWVyeV9vZmZzZXQsCkBAIC0yNTc2LDcgKzI1NjQsNyBAQCBnY19xdGV4dHModm9pZCkK IAkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCiAJCQkJCSBlcnJtc2coImNvdWxkIG5v dCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLAogCQkJCQkJCVBHU1NfVEVYVF9GSUxFKSkpOwotCQkJ aGFzaF9zZXFfdGVybSgmaGFzaF9zZXEpOworCQkJZm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOwog CQkJZ290byBnY19mYWlsOwogCQl9CiAKQEAgLTI2NDMsOCArMjYzMSw3IEBAIGdjX2ZhaWw6CiAJ ICogU2luY2UgdGhlIGNvbnRlbnRzIG9mIHRoZSBleHRlcm5hbCBmaWxlIGFyZSBub3cgdW5jZXJ0 YWluLCBtYXJrIGFsbAogCSAqIGhhc2h0YWJsZSBlbnRyaWVzIGFzIGhhdmluZyBpbnZhbGlkIHRl eHRzLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCXdoaWxl ICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNo X2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdzc19oYXNoKQogCXsKIAkJZW50cnktPnF1ZXJ5X29m ZnNldCA9IDA7CiAJCWVudHJ5LT5xdWVyeV9sZW4gPSAtMTsKQEAgLTI3MDgsOCArMjY5NSw2IEBA IGlmIChlKSB7IFwKIHN0YXRpYyBUaW1lc3RhbXBUegogZW50cnlfcmVzZXQoT2lkIHVzZXJpZCwg T2lkIGRiaWQsIGludDY0IHF1ZXJ5aWQsIGJvb2wgbWlubWF4X29ubHkpCiB7Ci0JSEFTSF9TRVFf U1RBVFVTIGhhc2hfc2VxOwotCXBnc3NFbnRyeSAgKmVudHJ5OwogCUZJTEUJICAgKnFmaWxlOwog CWludDY0CQludW1fZW50cmllczsKIAlpbnQ2NAkJbnVtX3JlbW92ZSA9IDA7CkBAIC0yNzI5LDYg KzI3MTQsOCBAQCBlbnRyeV9yZXNldChPaWQgdXNlcmlkLCBPaWQgZGJpZCwgaW50NjQgcXVlcnlp ZCwgYm9vbCBtaW5tYXhfb25seSkKIAlpZiAodXNlcmlkICE9IDAgJiYgZGJpZCAhPSAwICYmIHF1 ZXJ5aWQgIT0gSU5UNjRDT05TVCgwKSkKIAl7CiAJCS8qIElmIGFsbCB0aGUgcGFyYW1ldGVycyBh cmUgYXZhaWxhYmxlLCB1c2UgdGhlIGZhc3QgcGF0aC4gKi8KKwkJcGdzc0VudHJ5ICAqZW50cnk7 CisKIAkJbWVtc2V0KCZrZXksIDAsIHNpemVvZihwZ3NzSGFzaEtleSkpOwogCQlrZXkudXNlcmlk ID0gdXNlcmlkOwogCQlrZXkuZGJpZCA9IGRiaWQ7CkBAIC0yNzUyLDggKzI3MzksNyBAQCBlbnRy eV9yZXNldChPaWQgdXNlcmlkLCBPaWQgZGJpZCwgaW50NjQgcXVlcnlpZCwgYm9vbCBtaW5tYXhf b25seSkKIAllbHNlIGlmICh1c2VyaWQgIT0gMCB8fCBkYmlkICE9IDAgfHwgcXVlcnlpZCAhPSBJ TlQ2NENPTlNUKDApKQogCXsKIAkJLyogUmVzZXQgZW50cmllcyBjb3JyZXNwb25kaW5nIHRvIHZh bGlkIHBhcmFtZXRlcnMuICovCi0JCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gp OwotCQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwp CisJCWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVudHJ5LCBwZ3NzX2hhc2gpCiAJCXsKIAkJCWlm ICgoIXVzZXJpZCB8fCBlbnRyeS0+a2V5LnVzZXJpZCA9PSB1c2VyaWQpICYmCiAJCQkJKCFkYmlk IHx8IGVudHJ5LT5rZXkuZGJpZCA9PSBkYmlkKSAmJgpAQCAtMjc2Niw4ICsyNzUyLDcgQEAgZW50 cnlfcmVzZXQoT2lkIHVzZXJpZCwgT2lkIGRiaWQsIGludDY0IHF1ZXJ5aWQsIGJvb2wgbWlubWF4 X29ubHkpCiAJZWxzZQogCXsKIAkJLyogUmVzZXQgYWxsIGVudHJpZXMuICovCi0JCWhhc2hfc2Vx X2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFf c2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVu dHJ5LCBwZ3NzX2hhc2gpCiAJCXsKIAkJCVNJTkdMRV9FTlRSWV9SRVNFVChlbnRyeSk7CiAJCX0K ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jIGIvY29udHJpYi9wZ190 cmdtL3RyZ21fcmVnZXhwLmMKaW5kZXggZWNkNGQ2Nzc5NDguLjY3ZTg2OTgxNDc2IDEwMDY0NAot LS0gYS9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYworKysgYi9jb250cmliL3BnX3RyZ20v dHJnbV9yZWdleHAuYwpAQCAtMTQ0OSwxMCArMTQ0OSw4IEBAIHByZWZpeENvbnRhaW5zKFRyZ21Q cmVmaXggKnByZWZpeDEsIFRyZ21QcmVmaXggKnByZWZpeDIpCiBzdGF0aWMgYm9vbAogc2VsZWN0 Q29sb3JUcmlncmFtcyhUcmdtTkZBICp0cmdtTkZBKQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2Fu X3N0YXR1czsKIAlpbnQJCQlhcmNzQ291bnQgPSB0cmdtTkZBLT5hcmNzQ291bnQsCiAJCQkJaTsK LQlUcmdtU3RhdGUgICpzdGF0ZTsKIAlDb2xvclRyZ21JbmZvICpjb2xvclRyZ21zOwogCWludDY0 CQl0b3RhbFRyZ21Db3VudDsKIAlmbG9hdDQJCXRvdGFsVHJnbVBlbmFsdHk7CkBAIC0xNDYzLDgg KzE0NjEsNyBAQCBzZWxlY3RDb2xvclRyaWdyYW1zKFRyZ21ORkEgKnRyZ21ORkEpCiAJdHJnbU5G QS0+Y29sb3JUcmdtcyA9IGNvbG9yVHJnbXM7CiAKIAlpID0gMDsKLQloYXNoX3NlcV9pbml0KCZz Y2FuX3N0YXR1cywgdHJnbU5GQS0+c3RhdGVzKTsKLQl3aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0 ZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hh c2goVHJnbVN0YXRlLCBzdGF0ZSwgdHJnbU5GQS0+c3RhdGVzKQogCXsKIAkJTGlzdENlbGwgICAq Y2VsbDsKIApAQCAtMTkyNiw4ICsxOTIzLDYgQEAgcGFja0dyYXBoKFRyZ21ORkEgKnRyZ21ORkEs IE1lbW9yeUNvbnRleHQgcmNvbnRleHQpCiAJaW50CQkJc251bWJlciA9IDIsCiAJCQkJYXJjSW5k ZXgsCiAJCQkJYXJjc0NvdW50OwotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKLQlUcmdt U3RhdGUgICpzdGF0ZTsKIAlUcmdtUGFja0FyY0luZm8gKmFyY3M7CiAJVHJnbVBhY2tlZEFyYyAq cGFja2VkQXJjczsKIAlUcmdtUGFja2VkR3JhcGggKnJlc3VsdDsKQEAgLTE5MzUsOCArMTkzMCw3 IEBAIHBhY2tHcmFwaChUcmdtTkZBICp0cmdtTkZBLCBNZW1vcnlDb250ZXh0IHJjb250ZXh0KQog CQkJCWo7CiAKIAkvKiBFbnVtZXJhdGUgc3Vydml2aW5nIHN0YXRlcywgZ2l2aW5nIGluaXQgYW5k IGZpbiByZXNlcnZlZCBudW1iZXJzICovCi0JaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHRy Z21ORkEtPnN0YXRlcyk7Ci0Jd2hpbGUgKChzdGF0ZSA9IChUcmdtU3RhdGUgKikgaGFzaF9zZXFf c2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFRyZ21TdGF0ZSwg c3RhdGUsIHRyZ21ORkEtPnN0YXRlcykKIAl7CiAJCXdoaWxlIChzdGF0ZS0+cGFyZW50KQogCQkJ c3RhdGUgPSBzdGF0ZS0+cGFyZW50OwpAQCAtMTk1OCw4ICsxOTUyLDcgQEAgcGFja0dyYXBoKFRy Z21ORkEgKnRyZ21ORkEsIE1lbW9yeUNvbnRleHQgcmNvbnRleHQpCiAJLyogQ29sbGVjdCBhcnJh eSBvZiBhbGwgYXJjcyAqLwogCWFyY3MgPSBwYWxsb2NfYXJyYXkoVHJnbVBhY2tBcmNJbmZvLCB0 cmdtTkZBLT5hcmNzQ291bnQpOwogCWFyY0luZGV4ID0gMDsKLQloYXNoX3NlcV9pbml0KCZzY2Fu X3N0YXR1cywgdHJnbU5GQS0+c3RhdGVzKTsKLQl3aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0ZSAq KSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2go VHJnbVN0YXRlLCBzdGF0ZSwgdHJnbU5GQS0+c3RhdGVzKQogCXsKIAkJVHJnbVN0YXRlICAqc291 cmNlID0gc3RhdGU7CiAJCUxpc3RDZWxsICAgKmNlbGw7CkBAIC0yMjAyLDE2ICsyMTk1LDEzIEBA IHN0YXRpYyB2b2lkCiBwcmludFRyZ21ORkEoVHJnbU5GQSAqdHJnbU5GQSkKIHsKIAlTdHJpbmdJ bmZvRGF0YSBidWY7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOwotCVRyZ21TdGF0ZSAg KnN0YXRlOwogCVRyZ21TdGF0ZSAgKmluaXRzdGF0ZSA9IE5VTEw7CiAKIAlpbml0U3RyaW5nSW5m bygmYnVmKTsKIAogCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIlxuZGlncmFwaCB0cmFu c2Zvcm1lZE5GQSB7XG4iKTsKIAotCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCB0cmdtTkZB LT5zdGF0ZXMpOwotCXdoaWxlICgoc3RhdGUgPSAoVHJnbVN0YXRlICopIGhhc2hfc2VxX3NlYXJj aCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChUcmdtU3RhdGUsIHN0YXRl LCB0cmdtTkZBLT5zdGF0ZXMpCiAJewogCQlMaXN0Q2VsbCAgICpjZWxsOwogCmRpZmYgLS1naXQg YS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zk dy9jb25uZWN0aW9uLmMKaW5kZXggNWM3N2M5ZWNkZTUuLjk5MDI1NjdmMWZiIDEwMDY0NAotLS0g YS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jl c19mZHcvY29ubmVjdGlvbi5jCkBAIC0xMDQ0LDggKzEwNDQsNiBAQCBwZ2Zkd19yZXBvcnRfaW50 ZXJuYWwoaW50IGVsZXZlbCwgUEdyZXN1bHQgKnJlcywgUEdjb25uICpjb25uLAogc3RhdGljIHZv aWQKIHBnZmR3X3hhY3RfY2FsbGJhY2soWGFjdEV2ZW50IGV2ZW50LCB2b2lkICphcmcpCiB7Ci0J SEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hlRW50cnkgKmVudHJ5OwogCUxpc3QJICAg KnBlbmRpbmdfZW50cmllcyA9IE5JTDsKIAlMaXN0CSAgICpjYW5jZWxfcmVxdWVzdGVkID0gTklM OwogCkBAIC0xMDU3LDggKzEwNTUsNyBAQCBwZ2Zkd194YWN0X2NhbGxiYWNrKFhhY3RFdmVudCBl dmVudCwgdm9pZCAqYXJnKQogCSAqIFNjYW4gYWxsIGNvbm5lY3Rpb24gY2FjaGUgZW50cmllcyB0 byBmaW5kIG9wZW4gcmVtb3RlIHRyYW5zYWN0aW9ucywgYW5kCiAJICogY2xvc2UgdGhlbS4KIAkg Ki8KLQloYXNoX3NlcV9pbml0KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRy eSA9IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNo X2hhc2goQ29ubkNhY2hlRW50cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCVBHcmVz dWx0ICAgKnJlczsKIApAQCAtMTE5NSw4ICsxMTkyLDYgQEAgc3RhdGljIHZvaWQKIHBnZmR3X3N1 YnhhY3RfY2FsbGJhY2soU3ViWGFjdEV2ZW50IGV2ZW50LCBTdWJUcmFuc2FjdGlvbklkIG15U3Vi aWQsCiAJCQkJCSAgIFN1YlRyYW5zYWN0aW9uSWQgcGFyZW50U3ViaWQsIHZvaWQgKmFyZykKIHsK LQlIQVNIX1NFUV9TVEFUVVMgc2NhbjsKLQlDb25uQ2FjaGVFbnRyeSAqZW50cnk7CiAJaW50CQkJ Y3VybGV2ZWw7CiAJTGlzdAkgICAqcGVuZGluZ19lbnRyaWVzID0gTklMOwogCUxpc3QJICAgKmNh bmNlbF9yZXF1ZXN0ZWQgPSBOSUw7CkBAIC0xMjE1LDggKzEyMTAsNyBAQCBwZ2Zkd19zdWJ4YWN0 X2NhbGxiYWNrKFN1YlhhY3RFdmVudCBldmVudCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAog CSAqIG9mIHRoZSBjdXJyZW50IGxldmVsLCBhbmQgY2xvc2UgdGhlbS4KIAkgKi8KIAljdXJsZXZl bCA9IEdldEN1cnJlbnRUcmFuc2FjdGlvbk5lc3RMZXZlbCgpOwotCWhhc2hfc2VxX2luaXQoJnNj YW4sIENvbm5lY3Rpb25IYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKENvbm5DYWNoZUVudHJ5ICop IGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hfaGFzaChDb25uQ2FjaGVFbnRyeSwg ZW50cnksIENvbm5lY3Rpb25IYXNoKQogCXsKIAkJY2hhcgkJc3FsWzEwMF07CiAKQEAgLTEzMDcs MTQgKzEzMDEsMTAgQEAgcGdmZHdfc3VieGFjdF9jYWxsYmFjayhTdWJYYWN0RXZlbnQgZXZlbnQs IFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIHN0YXRpYyB2b2lkCiBwZ2Zkd19pbnZhbF9jYWxs YmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hf U0VRX1NUQVRVUyBzY2FuOwotCUNvbm5DYWNoZUVudHJ5ICplbnRyeTsKLQogCUFzc2VydChjYWNo ZWlkID09IEZPUkVJR05TRVJWRVJPSUQgfHwgY2FjaGVpZCA9PSBVU0VSTUFQUElOR09JRCk7CiAK IAkvKiBDb25uZWN0aW9uSGFzaCBtdXN0IGV4aXN0IGFscmVhZHksIGlmIHdlJ3JlIHJlZ2lzdGVy ZWQgKi8KLQloYXNoX3NlcV9pbml0KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChl bnRyeSA9IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3Jl YWNoX2hhc2goQ29ubkNhY2hlRW50cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCS8q IElnbm9yZSBpbnZhbGlkIGVudHJpZXMgKi8KIAkJaWYgKGVudHJ5LT5jb25uID09IE5VTEwpCkBA IC0yMTY1LDggKzIxNTUsNiBAQCBwb3N0Z3Jlc19mZHdfZ2V0X2Nvbm5lY3Rpb25zX2ludGVybmFs KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJCQkJCQkJICBlbnVtIHBnZmR3VmVyc2lvbiBh cGlfdmVyc2lvbikKIHsKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAq KSBmY2luZm8tPnJlc3VsdGluZm87Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hl RW50cnkgKmVudHJ5OwogCiAJSW5pdE1hdGVyaWFsaXplZFNSRihmY2luZm8sIDApOwogCkBAIC0y MTg5LDggKzIxNzcsNyBAQCBwb3N0Z3Jlc19mZHdfZ2V0X2Nvbm5lY3Rpb25zX2ludGVybmFsKEZ1 bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJZWxvZyhFUlJPUiwgImluY29ycmVjdCBudW1iZXIg b2Ygb3V0cHV0IGFyZ3VtZW50cyIpOwogCX0KIAotCWhhc2hfc2VxX2luaXQoJnNjYW4sIENvbm5l Y3Rpb25IYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKENvbm5DYWNoZUVudHJ5ICopIGhhc2hfc2Vx X3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hfaGFzaChDb25uQ2FjaGVFbnRyeSwgZW50cnksIENv bm5lY3Rpb25IYXNoKQogCXsKIAkJRm9yZWlnblNlcnZlciAqc2VydmVyOwogCQlEYXR1bQkJdmFs dWVzW1BPU1RHUkVTX0ZEV19HRVRfQ09OTkVDVElPTlNfQ09MU10gPSB7MH07CkBAIC0yMzkyLDgg KzIzNzksNiBAQCBwb3N0Z3Jlc19mZHdfZGlzY29ubmVjdF9hbGwoUEdfRlVOQ1RJT05fQVJHUykK IHN0YXRpYyBib29sCiBkaXNjb25uZWN0X2NhY2hlZF9jb25uZWN0aW9ucyhPaWQgc2VydmVyaWQp CiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hlRW50cnkgKmVudHJ5OwogCWJv b2wJCWFsbCA9ICFPaWRJc1ZhbGlkKHNlcnZlcmlkKTsKIAlib29sCQlyZXN1bHQgPSBmYWxzZTsK IApAQCAtMjQwNCw4ICsyMzg5LDcgQEAgZGlzY29ubmVjdF9jYWNoZWRfY29ubmVjdGlvbnMoT2lk IHNlcnZlcmlkKQogCWlmICghQ29ubmVjdGlvbkhhc2gpCiAJCXJldHVybiBmYWxzZTsKIAotCWhh c2hfc2VxX2luaXQoJnNjYW4sIENvbm5lY3Rpb25IYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKENv bm5DYWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hfaGFzaChD b25uQ2FjaGVFbnRyeSwgZW50cnksIENvbm5lY3Rpb25IYXNoKQogCXsKIAkJLyogSWdub3JlIGNh Y2hlIGVudHJ5IGlmIG5vIG9wZW4gY29ubmVjdGlvbiByaWdodCBub3cuICovCiAJCWlmICghZW50 cnktPmNvbm4pCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYyBi L2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jCmluZGV4IGVjMTg1MjQ5MGUwLi5jMWQ2 MGU1ODJhNiAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMKKysr IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMKQEAgLTY1LDE3ICs2NSwxMyBAQCB0 eXBlZGVmIHN0cnVjdAogc3RhdGljIHZvaWQKIEludmFsaWRhdGVTaGlwcGFibGVDYWNoZUNhbGxi YWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7Ci0JSEFTSF9T RVFfU1RBVFVTIHN0YXR1czsKLQlTaGlwcGFibGVDYWNoZUVudHJ5ICplbnRyeTsKLQogCS8qCiAJ ICogSW4gcHJpbmNpcGxlIHdlIGNvdWxkIGZsdXNoIG9ubHkgY2FjaGUgZW50cmllcyByZWxhdGlu ZyB0byB0aGUKIAkgKiBwZ19mb3JlaWduX3NlcnZlciBlbnRyeSBiZWluZyBvdXRkYXRlZDsgYnV0 IHRoYXQgd291bGQgYmUgbW9yZQogCSAqIGNvbXBsaWNhdGVkLCBhbmQgaXQncyBwcm9iYWJseSBu b3Qgd29ydGggdGhlIHRyb3VibGUuICBTbyBmb3Igbm93LCBqdXN0CiAJICogZmx1c2ggYWxsIGVu dHJpZXMuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBTaGlwcGFibGVDYWNoZUhhc2gp OwotCXdoaWxlICgoZW50cnkgPSAoU2hpcHBhYmxlQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFy Y2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFNoaXBwYWJsZUNhY2hlRW50cnks IGVudHJ5LCBTaGlwcGFibGVDYWNoZUhhc2gpCiAJewogCQlpZiAoaGFzaF9zZWFyY2goU2hpcHBh YmxlQ2FjaGVIYXNoLAogCQkJCQkJJmVudHJ5LT5rZXksCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3 cml0ZWhlYXAuYwppbmRleCAzNjg3NzRiNTI3MC4uMDc5YWZmODhlMjkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwpAQCAtMjkwLDE2ICsyOTAsMTEgQEAgYmVnaW5faGVhcF9y ZXdyaXRlKFJlbGF0aW9uIG9sZF9oZWFwLCBSZWxhdGlvbiBuZXdfaGVhcCwgVHJhbnNhY3Rpb25J ZCBvbGRlc3RfeG0KIHZvaWQKIGVuZF9oZWFwX3Jld3JpdGUoUmV3cml0ZVN0YXRlIHN0YXRlKQog ewotCUhBU0hfU0VRX1NUQVRVUyBzZXFfc3RhdHVzOwotCVVucmVzb2x2ZWRUdXAgdW5yZXNvbHZl ZDsKLQogCS8qCiAJICogV3JpdGUgYW55IHJlbWFpbmluZyB0dXBsZXMgaW4gdGhlIFVucmVzb2x2 ZWRUdXBzIHRhYmxlLiBJZiB3ZSBoYXZlIGFueQogCSAqIGxlZnQsIHRoZXkgc2hvdWxkIGluIGZh Y3QgYmUgZGVhZCwgYnV0IGxldCdzIGVyciBvbiB0aGUgc2FmZSBzaWRlLgogCSAqLwotCWhhc2hf c2VxX2luaXQoJnNlcV9zdGF0dXMsIHN0YXRlLT5yc191bnJlc29sdmVkX3R1cHMpOwotCi0Jd2hp bGUgKCh1bnJlc29sdmVkID0gaGFzaF9zZXFfc2VhcmNoKCZzZXFfc3RhdHVzKSkgIT0gTlVMTCkK Kwlmb3JlYWNoX2hhc2goVW5yZXNvbHZlZFR1cERhdGEsIHVucmVzb2x2ZWQsIHN0YXRlLT5yc191 bnJlc29sdmVkX3R1cHMpCiAJewogCQlJdGVtUG9pbnRlclNldEludmFsaWQoJnVucmVzb2x2ZWQt PnR1cGxlLT50X2RhdGEtPnRfY3RpZCk7CiAJCXJhd19oZWFwX2luc2VydChzdGF0ZSwgdW5yZXNv bHZlZC0+dHVwbGUpOwpAQCAtNzk0LDggKzc4OSw2IEBAIGxvZ2ljYWxfYmVnaW5faGVhcF9yZXdy aXRlKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIHN0YXRpYyB2b2lkCiBsb2dpY2FsX2hlYXBfcmV3cml0 ZV9mbHVzaF9tYXBwaW5ncyhSZXdyaXRlU3RhdGUgc3RhdGUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVT IHNlcV9zdGF0dXM7Ci0JUmV3cml0ZU1hcHBpbmdGaWxlICpzcmM7CiAJZGxpc3RfbXV0YWJsZV9p dGVyIGl0ZXI7CiAKIAlBc3NlcnQoc3RhdGUtPnJzX2xvZ2ljYWxfcmV3cml0ZSk7CkBAIC04MDcs OCArODAwLDcgQEAgbG9naWNhbF9oZWFwX3Jld3JpdGVfZmx1c2hfbWFwcGluZ3MoUmV3cml0ZVN0 YXRlIHN0YXRlKQogCWVsb2coREVCVUcxLCAiZmx1c2hpbmcgJXUgbG9naWNhbCByZXdyaXRlIG1h cHBpbmcgZW50cmllcyIsCiAJCSBzdGF0ZS0+cnNfbnVtX3Jld3JpdGVfbWFwcGluZ3MpOwogCi0J aGFzaF9zZXFfaW5pdCgmc2VxX3N0YXR1cywgc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MpOwot CXdoaWxlICgoc3JjID0gKFJld3JpdGVNYXBwaW5nRmlsZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNl cV9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZXdyaXRlTWFwcGluZ0ZpbGUsIHNy Yywgc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MpCiAJewogCQljaGFyCSAgICp3YWxkYXRhOwog CQljaGFyCSAgICp3YWxkYXRhX3N0YXJ0OwpAQCAtODkyLDkgKzg4NCw2IEBAIGxvZ2ljYWxfaGVh cF9yZXdyaXRlX2ZsdXNoX21hcHBpbmdzKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIHN0YXRpYyB2b2lk CiBsb2dpY2FsX2VuZF9oZWFwX3Jld3JpdGUoUmV3cml0ZVN0YXRlIHN0YXRlKQogewotCUhBU0hf U0VRX1NUQVRVUyBzZXFfc3RhdHVzOwotCVJld3JpdGVNYXBwaW5nRmlsZSAqc3JjOwotCiAJLyog ZG9uZSwgbm8gbG9naWNhbCByZXdyaXRlIGluIHByb2dyZXNzICovCiAJaWYgKCFzdGF0ZS0+cnNf bG9naWNhbF9yZXdyaXRlKQogCQlyZXR1cm47CkBAIC05MDQsOCArODkzLDcgQEAgbG9naWNhbF9l bmRfaGVhcF9yZXdyaXRlKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIAkJbG9naWNhbF9oZWFwX3Jld3Jp dGVfZmx1c2hfbWFwcGluZ3Moc3RhdGUpOwogCiAJLyogSXRlcmF0ZSBvdmVyIGFsbCBtYXBwaW5n cyB3ZSBoYXZlIHdyaXR0ZW4gYW5kIGZzeW5jIHRoZSBmaWxlcy4gKi8KLQloYXNoX3NlcV9pbml0 KCZzZXFfc3RhdHVzLCBzdGF0ZS0+cnNfbG9naWNhbF9tYXBwaW5ncyk7Ci0Jd2hpbGUgKChzcmMg PSAoUmV3cml0ZU1hcHBpbmdGaWxlICopIGhhc2hfc2VxX3NlYXJjaCgmc2VxX3N0YXR1cykpICE9 IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJld3JpdGVNYXBwaW5nRmlsZSwgc3JjLCBzdGF0ZS0+cnNf bG9naWNhbF9tYXBwaW5ncykKIAl7CiAJCWlmIChGaWxlU3luYyhzcmMtPnZmZCwgV0FJVF9FVkVO VF9MT0dJQ0FMX1JFV1JJVEVfU1lOQykgIT0gMCkKIAkJCWVyZXBvcnQoZGF0YV9zeW5jX2VsZXZl bChFUlJPUiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRp bHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCmluZGV4IGQxMWU0 MmM5NDkwLi4zYzdmYzY1YjhkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZ3V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxz LmMKQEAgLTE2MCwxNSArMTYwLDEwIEBAIHN0YXRpYyB2b2lkCiBmb3JnZXRfaW52YWxpZF9wYWdl cyhSZWxGaWxlTG9jYXRvciBsb2NhdG9yLCBGb3JrTnVtYmVyIGZvcmtubywKIAkJCQkJIEJsb2Nr TnVtYmVyIG1pbmJsa25vKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JeGxfaW52YWxp ZF9wYWdlICpoZW50cnk7Ci0KIAlpZiAoaW52YWxpZF9wYWdlX3RhYiA9PSBOVUxMKQogCQlyZXR1 cm47CQkJCQkvKiBub3RoaW5nIHRvIGRvICovCiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGlu dmFsaWRfcGFnZV90YWIpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoeGxfaW52YWxpZF9wYWdlICop IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goeGxfaW52 YWxpZF9wYWdlLCBoZW50cnksIGludmFsaWRfcGFnZV90YWIpCiAJewogCQlpZiAoUmVsRmlsZUxv Y2F0b3JFcXVhbHMoaGVudHJ5LT5rZXkubG9jYXRvciwgbG9jYXRvcikgJiYKIAkJCWhlbnRyeS0+ a2V5LmZvcmtubyA9PSBmb3Jrbm8gJiYKQEAgLTE5MCwxNSArMTg1LDEwIEBAIGZvcmdldF9pbnZh bGlkX3BhZ2VzKFJlbEZpbGVMb2NhdG9yIGxvY2F0b3IsIEZvcmtOdW1iZXIgZm9ya25vLAogc3Rh dGljIHZvaWQKIGZvcmdldF9pbnZhbGlkX3BhZ2VzX2RiKE9pZCBkYmlkKQogewotCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7Ci0JeGxfaW52YWxpZF9wYWdlICpoZW50cnk7Ci0KIAlpZiAoaW52YWxp ZF9wYWdlX3RhYiA9PSBOVUxMKQogCQlyZXR1cm47CQkJCQkvKiBub3RoaW5nIHRvIGRvICovCiAK LQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGludmFsaWRfcGFnZV90YWIpOwotCi0Jd2hpbGUgKCho ZW50cnkgPSAoeGxfaW52YWxpZF9wYWdlICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0g TlVMTCkKKwlmb3JlYWNoX2hhc2goeGxfaW52YWxpZF9wYWdlLCBoZW50cnksIGludmFsaWRfcGFn ZV90YWIpCiAJewogCQlpZiAoaGVudHJ5LT5rZXkubG9jYXRvci5kYk9pZCA9PSBkYmlkKQogCQl7 CkBAIC0yMjgsMjAgKzIxOCwxNiBAQCBYTG9nSGF2ZUludmFsaWRQYWdlcyh2b2lkKQogdm9pZAog WExvZ0NoZWNrSW52YWxpZFBhZ2VzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsK LQl4bF9pbnZhbGlkX3BhZ2UgKmhlbnRyeTsKIAlib29sCQlmb3VuZG9uZSA9IGZhbHNlOwogCiAJ aWYgKGludmFsaWRfcGFnZV90YWIgPT0gTlVMTCkKIAkJcmV0dXJuOwkJCQkJLyogbm90aGluZyB0 byBkbyAqLwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBpbnZhbGlkX3BhZ2VfdGFiKTsKLQog CS8qCiAJICogT3VyIHN0cmF0ZWd5IGlzIHRvIGVtaXQgV0FSTklORyBtZXNzYWdlcyBmb3IgYWxs IHJlbWFpbmluZyBlbnRyaWVzIGFuZAogCSAqIG9ubHkgUEFOSUMgYWZ0ZXIgd2UndmUgZHVtcGVk IGFsbCB0aGUgYXZhaWxhYmxlIGluZm8uCiAJICovCi0Jd2hpbGUgKChoZW50cnkgPSAoeGxfaW52 YWxpZF9wYWdlICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNo X2hhc2goeGxfaW52YWxpZF9wYWdlLCBoZW50cnksIGludmFsaWRfcGFnZV90YWIpCiAJewogCQly ZXBvcnRfaW52YWxpZF9wYWdlKFdBUk5JTkcsIGhlbnRyeS0+a2V5LmxvY2F0b3IsIGhlbnRyeS0+ a2V5LmZvcmtubywKIAkJCQkJCQloZW50cnktPmtleS5ibGtubywgaGVudHJ5LT5wcmVzZW50KTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZW51bS5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19lbnVtLmMKaW5kZXggODZjOGJhZGE1NTcuLmJlNGE4ZWNkOWU2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2VudW0uYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2VudW0uYwpAQCAtODM4LDEyICs4MzgsMTAgQEAgU2VyaWFsaXplVW5jb21taXR0ZWRF bnVtcyh2b2lkICpzcGFjZSwgU2l6ZSBzaXplKQogCS8qIFdyaXRlIG91dCBhbGwgdGhlIE9JRHMg ZnJvbSB0aGUgdHlwZXMgaGFzaCB0YWJsZSwgaWYgdGhlcmUgaXMgb25lLiAqLwogCWlmICh1bmNv bW1pdHRlZF9lbnVtX3R5cGVzKQogCXsKLQkJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQkJT2lk CQkgICAqdmFsdWU7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCB1bmNvbW1pdHRlZF9lbnVt X3R5cGVzKTsKLQkJd2hpbGUgKCh2YWx1ZSA9IChPaWQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0 dXMpKSkKKwkJZm9yZWFjaF9oYXNoKE9pZCwgdmFsdWUsIHVuY29tbWl0dGVkX2VudW1fdHlwZXMp CisJCXsKIAkJCSpzZXJpYWxpemVkKysgPSAqdmFsdWU7CisJCX0KIAl9CiAKIAkvKiBXcml0ZSBv dXQgdGhlIHRlcm1pbmF0b3IuICovCkBAIC04NTIsMTIgKzg1MCwxMCBAQCBTZXJpYWxpemVVbmNv bW1pdHRlZEVudW1zKHZvaWQgKnNwYWNlLCBTaXplIHNpemUpCiAJLyogV3JpdGUgb3V0IGFsbCB0 aGUgT0lEcyBmcm9tIHRoZSB2YWx1ZXMgaGFzaCB0YWJsZSwgaWYgdGhlcmUgaXMgb25lLiAqLwog CWlmICh1bmNvbW1pdHRlZF9lbnVtX3ZhbHVlcykKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7Ci0JCU9pZAkJICAgKnZhbHVlOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgdW5jb21t aXR0ZWRfZW51bV92YWx1ZXMpOwotCQl3aGlsZSAoKHZhbHVlID0gKE9pZCAqKSBoYXNoX3NlcV9z ZWFyY2goJnN0YXR1cykpKQorCQlmb3JlYWNoX2hhc2goT2lkLCB2YWx1ZSwgdW5jb21taXR0ZWRf ZW51bV92YWx1ZXMpCisJCXsKIAkJCSpzZXJpYWxpemVkKysgPSAqdmFsdWU7CisJCX0KIAl9CiAK IAkvKiBXcml0ZSBvdXQgdGhlIHRlcm1pbmF0b3IuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N0b3JhZ2UuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCmluZGV4 IGRiM2UwODMxOWI1Li4yN2QyMWI1NTZiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zdG9yYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMKQEAgLTU5NCwx MCArNTk0LDcgQEAgdm9pZAogU2VyaWFsaXplUGVuZGluZ1N5bmNzKFNpemUgbWF4U2l6ZSwgY2hh ciAqc3RhcnRBZGRyZXNzKQogewogCUhUQUIJICAgKnRtcGhhc2g7Ci0JSEFTSF9TRVFfU1RBVFVT IHNjYW47Ci0JUGVuZGluZ1JlbFN5bmMgKnN5bmM7CiAJUGVuZGluZ1JlbERlbGV0ZSAqZGVsZXRl OwotCVJlbEZpbGVMb2NhdG9yICpzcmM7CiAJUmVsRmlsZUxvY2F0b3IgKmRlc3QgPSAoUmVsRmls ZUxvY2F0b3IgKikgc3RhcnRBZGRyZXNzOwogCiAJaWYgKCFwZW5kaW5nU3luY0hhc2gpCkBAIC02 MDgsOSArNjA1LDEwIEBAIFNlcmlhbGl6ZVBlbmRpbmdTeW5jcyhTaXplIG1heFNpemUsIGNoYXIg KnN0YXJ0QWRkcmVzcykKIAkJCQkJCSAgIGhhc2hfZ2V0X251bV9lbnRyaWVzKHBlbmRpbmdTeW5j SGFzaCkpOwogCiAJLyogY29sbGVjdCBhbGwgcmxvY2F0b3IgZnJvbSBwZW5kaW5nIHN5bmNzICov Ci0JaGFzaF9zZXFfaW5pdCgmc2NhbiwgcGVuZGluZ1N5bmNIYXNoKTsKLQl3aGlsZSAoKHN5bmMg PSAoUGVuZGluZ1JlbFN5bmMgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkpCisJZm9yZWFjaF9o YXNoKFBlbmRpbmdSZWxTeW5jLCBzeW5jLCBwZW5kaW5nU3luY0hhc2gpCisJewogCQkodm9pZCkg aGFzaF9zZWFyY2godG1waGFzaCwgJnN5bmMtPnJsb2NhdG9yLCBIQVNIX0VOVEVSLCBOVUxMKTsK Kwl9CiAKIAkvKiByZW1vdmUgZGVsZXRlZCBybm9kZXMgKi8KIAlmb3IgKGRlbGV0ZSA9IHBlbmRp bmdEZWxldGVzOyBkZWxldGUgIT0gTlVMTDsgZGVsZXRlID0gZGVsZXRlLT5uZXh0KQpAQCAtNjE4 LDkgKzYxNiwxMCBAQCBTZXJpYWxpemVQZW5kaW5nU3luY3MoU2l6ZSBtYXhTaXplLCBjaGFyICpz dGFydEFkZHJlc3MpCiAJCQkodm9pZCkgaGFzaF9zZWFyY2godG1waGFzaCwgJmRlbGV0ZS0+cmxv Y2F0b3IsCiAJCQkJCQkJICAgSEFTSF9SRU1PVkUsIE5VTEwpOwogCi0JaGFzaF9zZXFfaW5pdCgm c2NhbiwgdG1waGFzaCk7Ci0Jd2hpbGUgKChzcmMgPSAoUmVsRmlsZUxvY2F0b3IgKikgaGFzaF9z ZXFfc2VhcmNoKCZzY2FuKSkpCisJZm9yZWFjaF9oYXNoKFJlbEZpbGVMb2NhdG9yLCBzcmMsIHRt cGhhc2gpCisJewogCQkqZGVzdCsrID0gKnNyYzsKKwl9CiAKIAloYXNoX2Rlc3Ryb3kodG1waGFz aCk7CiAKQEAgLTczMyw4ICs3MzIsNiBAQCBzbWdyRG9QZW5kaW5nU3luY3MoYm9vbCBpc0NvbW1p dCwgYm9vbCBpc1BhcmFsbGVsV29ya2VyKQogCWludAkJCW5yZWxzID0gMCwKIAkJCQltYXhyZWxz ID0gMDsKIAlTTWdyUmVsYXRpb24gKnNyZWxzID0gTlVMTDsKLQlIQVNIX1NFUV9TVEFUVVMgc2Nh bjsKLQlQZW5kaW5nUmVsU3luYyAqcGVuZGluZ3N5bmM7CiAKIAlBc3NlcnQoR2V0Q3VycmVudFRy YW5zYWN0aW9uTmVzdExldmVsKCkgPT0gMSk7CiAKQEAgLTc2Myw4ICs3NjAsNyBAQCBzbWdyRG9Q ZW5kaW5nU3luY3MoYm9vbCBpc0NvbW1pdCwgYm9vbCBpc1BhcmFsbGVsV29ya2VyKQogCQkJKHZv aWQpIGhhc2hfc2VhcmNoKHBlbmRpbmdTeW5jSGFzaCwgJnBlbmRpbmctPnJsb2NhdG9yLAogCQkJ CQkJCSAgIEhBU0hfUkVNT1ZFLCBOVUxMKTsKIAotCWhhc2hfc2VxX2luaXQoJnNjYW4sIHBlbmRp bmdTeW5jSGFzaCk7Ci0Jd2hpbGUgKChwZW5kaW5nc3luYyA9IChQZW5kaW5nUmVsU3luYyAqKSBo YXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goUGVuZGluZ1JlbFN5bmMsIHBl bmRpbmdzeW5jLCBwZW5kaW5nU3luY0hhc2gpCiAJewogCQlGb3JrTnVtYmVyCWZvcms7CiAJCUJs b2NrTnVtYmVyIG5ibG9ja3NbTUFYX0ZPUktOVU0gKyAxXTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpp bmRleCBlYjFhN2VjZmViYy4uNGFkOWMxMGE3ZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAg LTUzMywxNiArNTMzLDEyIEBAIERyb3BQcmVwYXJlZFN0YXRlbWVudChjb25zdCBjaGFyICpzdG10 X25hbWUsIGJvb2wgc2hvd0Vycm9yKQogdm9pZAogRHJvcEFsbFByZXBhcmVkU3RhdGVtZW50cyh2 b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzZXE7Ci0JUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5 OwotCiAJLyogbm90aGluZyBjYWNoZWQgKi8KIAlpZiAoIXByZXBhcmVkX3F1ZXJpZXMpCiAJCXJl dHVybjsKIAogCS8qIHdhbGsgb3ZlciBjYWNoZSAqLwotCWhhc2hfc2VxX2luaXQoJnNlcSwgcHJl cGFyZWRfcXVlcmllcyk7Ci0Jd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmc2VxKSkg IT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUHJlcGFyZWRTdGF0ZW1lbnQsIGVudHJ5LCBwcmVwYXJl ZF9xdWVyaWVzKQogCXsKIAkJLyogUmVsZWFzZSB0aGUgcGxhbmNhY2hlIGVudHJ5ICovCiAJCURy b3BDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlKTsKQEAgLTY4OSwxMSArNjg1LDcgQEAgcGdf cHJlcGFyZWRfc3RhdGVtZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJLyogaGFzaCB0YWJsZSBtaWdo dCBiZSB1bmluaXRpYWxpemVkICovCiAJaWYgKHByZXBhcmVkX3F1ZXJpZXMpCiAJewotCQlIQVNI X1NFUV9TVEFUVVMgaGFzaF9zZXE7Ci0JCVByZXBhcmVkU3RhdGVtZW50ICpwcmVwX3N0bXQ7Ci0K LQkJaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIHByZXBhcmVkX3F1ZXJpZXMpOwotCQl3aGlsZSAo KHByZXBfc3RtdCA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCQlmb3Jl YWNoX2hhc2goUHJlcGFyZWRTdGF0ZW1lbnQsIHByZXBfc3RtdCwgcHJlcGFyZWRfcXVlcmllcykK IAkJewogCQkJVHVwbGVEZXNjCXJlc3VsdF9kZXNjOwogCQkJRGF0dW0JCXZhbHVlc1s4XTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggNDBhMzk5ODllYWEuLjc3MjI1MDdjODM4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMjI0MiwxNCArMjI0Miw5IEBAIEV4ZWN1dGVUcnVu Y2F0ZUd1dHMoTGlzdCAqZXhwbGljaXRfcmVscywKIAkvKiBOb3cgZ28gdGhyb3VnaCB0aGUgaGFz aCB0YWJsZSwgYW5kIHRydW5jYXRlIGZvcmVpZ24gdGFibGVzICovCiAJaWYgKGZ0X2h0YWIpCiAJ ewotCQlGb3JlaWduVHJ1bmNhdGVJbmZvICpmdF9pbmZvOwotCQlIQVNIX1NFUV9TVEFUVVMgc2Vx OwotCi0JCWhhc2hfc2VxX2luaXQoJnNlcSwgZnRfaHRhYik7Ci0KIAkJUEdfVFJZKCk7CiAJCXsK LQkJCXdoaWxlICgoZnRfaW5mbyA9IGhhc2hfc2VxX3NlYXJjaCgmc2VxKSkgIT0gTlVMTCkKKwkJ CWZvcmVhY2hfaGFzaChGb3JlaWduVHJ1bmNhdGVJbmZvLCBmdF9pbmZvLCBmdF9odGFiKQogCQkJ ewogCQkJCUZkd1JvdXRpbmUgKnJvdXRpbmUgPSBHZXRGZHdSb3V0aW5lQnlTZXJ2ZXJJZChmdF9p bmZvLT5zZXJ2ZXJpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3ByZWR0ZXN0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCmluZGV4 IDNiZjVlN2FjOGJiLi40YWUxNDU0ODk0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcHJlZHRlc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVk dGVzdC5jCkBAIC0yMzQyLDE1ICsyMzQyLDEwIEBAIGdldF9idHJlZV90ZXN0X29wKE9pZCBwcmVk X29wLCBPaWQgY2xhdXNlX29wLCBib29sIHJlZnV0ZV9pdCkKIHN0YXRpYyB2b2lkCiBJbnZhbGlk YXRlT3ByUHJvb2ZDYWNoZUNhbGxCYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBo YXNodmFsdWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlPcHJQcm9vZkNhY2hlRW50 cnkgKmhlbnRyeTsKLQogCUFzc2VydChPcHJQcm9vZkNhY2hlSGFzaCAhPSBOVUxMKTsKIAogCS8q IEN1cnJlbnRseSB3ZSBqdXN0IHJlc2V0IGFsbCBlbnRyaWVzOyBoYXJkIHRvIGJlIHNtYXJ0ZXIg Li4uICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBPcHJQcm9vZkNhY2hlSGFzaCk7Ci0KLQl3 aGlsZSAoKGhlbnRyeSA9IChPcHJQcm9vZkNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZz dGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChPcHJQcm9vZkNhY2hlRW50cnksIGhlbnRy eSwgT3ByUHJvb2ZDYWNoZUhhc2gpCiAJewogCQloZW50cnktPmhhdmVfaW1wbGljID0gZmFsc2U7 CiAJCWhlbnRyeS0+aGF2ZV9yZWZ1dGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9vcGVyLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCmlu ZGV4IGQzNmU3YWQzMDMwLi5iMjVhYjBlNmI3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX29wZXIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCkBA IC0xMDc2LDE1ICsxMDc2LDEwIEBAIG1ha2Vfb3Blcl9jYWNoZV9lbnRyeShPcHJDYWNoZUtleSAq a2V5LCBPaWQgb3ByX29pZCkKIHN0YXRpYyB2b2lkCiBJbnZhbGlkYXRlT3ByQ2FjaGVDYWxsQmFj ayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7Ci0JT3ByQ2FjaGVFbnRyeSAqaGVudHJ5OwotCiAJQXNzZXJ0KE9wckNh Y2hlSGFzaCAhPSBOVUxMKTsKIAogCS8qIEN1cnJlbnRseSB3ZSBqdXN0IGZsdXNoIGFsbCBlbnRy aWVzOyBoYXJkIHRvIGJlIHNtYXJ0ZXIgLi4uICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBP cHJDYWNoZUhhc2gpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoT3ByQ2FjaGVFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKE9wckNhY2hlRW50 cnksIGhlbnRyeSwgT3ByQ2FjaGVIYXNoKQogCXsKIAkJaWYgKGhhc2hfc2VhcmNoKE9wckNhY2hl SGFzaCwKIAkJCQkJCSZoZW50cnktPmtleSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRp dGlvbmluZy9wYXJ0ZGVzYy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMK aW5kZXggZGIyNmU0YTgyYjYuLjNlY2M5Mzg3MjNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJ0aXRpb25pbmcvcGFydGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFy dGRlc2MuYwpAQCAtNDc4LDExICs0NzgsNyBAQCBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoUGFy dGl0aW9uRGlyZWN0b3J5IHBkaXIsIFJlbGF0aW9uIHJlbCkKIHZvaWQKIERlc3Ryb3lQYXJ0aXRp b25EaXJlY3RvcnkoUGFydGl0aW9uRGlyZWN0b3J5IHBkaXIpCiB7Ci0JSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKLQlQYXJ0aXRpb25EaXJlY3RvcnlFbnRyeSAqcGRlOwotCi0JaGFzaF9zZXFfaW5p dCgmc3RhdHVzLCBwZGlyLT5wZGlyX2hhc2gpOwotCXdoaWxlICgocGRlID0gaGFzaF9zZXFfc2Vh cmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQYXJ0aXRpb25EaXJlY3RvcnlF bnRyeSwgcGRlLCBwZGlyLT5wZGlyX2hhc2gpCiAJCVJlbGF0aW9uRGVjcmVtZW50UmVmZXJlbmNl Q291bnQocGRlLT5yZWwpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4 IGY4Zjg1OTUxNzQxLi42ODYwMzFlZGYyYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMKQEAgLTEwMjEsOCArMTAyMSw2IEBAIHJlYnVpbGRfZGF0YWJhc2VfbGlzdChPaWQgbmV3ZGIp CiAJCVRpbWVzdGFtcFR6IGN1cnJlbnRfdGltZTsKIAkJaW50CQkJbWlsbGlzX2luY3JlbWVudDsK IAkJYXZsX2RiYXNlICAqZGJhcnk7Ci0JCWF2bF9kYmFzZSAgKmRiOwotCQlIQVNIX1NFUV9TVEFU VVMgc2VxOwogCQlpbnQJCQlpOwogCiAJCS8qIHB1dCBhbGwgdGhlIGhhc2ggZWxlbWVudHMgaW50 byBhbiBhcnJheSAqLwpAQCAtMTAzMyw4ICsxMDMxLDcgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0 KE9pZCBuZXdkYikKICNlbmRpZgogCiAJCWkgPSAwOwotCQloYXNoX3NlcV9pbml0KCZzZXEsIGRi aGFzaCk7Ci0JCXdoaWxlICgoZGIgPSBoYXNoX3NlcV9zZWFyY2goJnNlcSkpICE9IE5VTEwpCisJ CWZvcmVhY2hfaGFzaChhdmxfZGJhc2UsIGRiLCBkYmhhc2gpCiAJCQltZW1jcHkoJihkYmFyeVtp KytdKSwgZGIsIHNpemVvZihhdmxfZGJhc2UpKTsKIAogCQkvKiBzb3J0IHRoZSBhcnJheSAqLwpA QCAtMTA1OSw3ICsxMDU2LDcgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAkJ ICovCiAJCWZvciAoaSA9IDA7IGkgPCBuZWxlbXM7IGkrKykKIAkJewotCQkJZGIgPSAmKGRiYXJ5 W2ldKTsKKwkJCWF2bF9kYmFzZSAgKmRiID0gJihkYmFyeVtpXSk7CiAKIAkJCWN1cnJlbnRfdGlt ZSA9IFRpbWVzdGFtcFR6UGx1c01pbGxpc2Vjb25kcyhjdXJyZW50X3RpbWUsCiAJCQkJCQkJCQkJ CQkJICAgbWlsbGlzX2luY3JlbWVudCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3JlbGF0aW9uLmMKaW5kZXggMDk5NTAxYWQ1OTMuLjQ3NzNkYjljNzlmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCkBAIC02MywyNSArNjMsMTkgQEAgc3Rh dGljIE9pZAlGaW5kTG9naWNhbFJlcExvY2FsSW5kZXgoUmVsYXRpb24gbG9jYWxyZWwsIExvZ2lj YWxSZXBSZWxhdGlvbiAqcmVtb3QKIHN0YXRpYyB2b2lkCiBsb2dpY2FscmVwX3JlbG1hcF9pbnZh bGlkYXRlX2NiKERhdHVtIGFyZywgT2lkIHJlbG9pZCkKIHsKLQlMb2dpY2FsUmVwUmVsTWFwRW50 cnkgKmVudHJ5OwotCiAJLyogSnVzdCB0byBiZSBzdXJlLiAqLwogCWlmIChMb2dpY2FsUmVwUmVs TWFwID09IE5VTEwpCiAJCXJldHVybjsKIAogCWlmIChyZWxvaWQgIT0gSW52YWxpZE9pZCkKIAl7 Ci0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBM b2dpY2FsUmVwUmVsTWFwKTsKLQogCQkvKiBUT0RPLCB1c2UgaW52ZXJzZSBsb29rdXAgaGFzaHRh YmxlPyAqLwotCQl3aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVw UmVsTWFwRW50cnksIGVudHJ5LCBMb2dpY2FsUmVwUmVsTWFwKQogCQl7CiAJCQlpZiAoZW50cnkt PmxvY2FscmVsb2lkID09IHJlbG9pZCkKIAkJCXsKIAkJCQllbnRyeS0+bG9jYWxyZWx2YWxpZCA9 IGZhbHNlOwotCQkJCWhhc2hfc2VxX3Rlcm0oJnN0YXR1cyk7CisJCQkJZm9yZWFjaF9oYXNoX3Rl cm0oZW50cnkpOwogCQkJCWJyZWFrOwogCQkJfQogCQl9CkBAIC04OSwxMSArODMsNyBAQCBsb2dp Y2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiKERhdHVtIGFyZywgT2lkIHJlbG9pZCkKIAllbHNl CiAJewogCQkvKiBpbnZhbGlkYXRlIGFsbCBjYWNoZSBlbnRyaWVzICovCi0JCUhBU0hfU0VRX1NU QVRVUyBzdGF0dXM7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2dpY2FsUmVwUmVsTWFw KTsKLQotCQl3aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqKSBoYXNoX3Nl cV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVwUmVs TWFwRW50cnksIGVudHJ5LCBMb2dpY2FsUmVwUmVsTWFwKQogCQkJZW50cnktPmxvY2FscmVsdmFs aWQgPSBmYWxzZTsKIAl9CiB9CkBAIC01MzAsMjUgKzUyMCwxOSBAQCBsb2dpY2FscmVwX3JlbF9j bG9zZShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCwgTE9DS01PREUgbG9ja21vZGUpCiBzdGF0 aWMgdm9pZAogbG9naWNhbHJlcF9wYXJ0bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQg cmVsb2lkKQogewotCUxvZ2ljYWxSZXBQYXJ0TWFwRW50cnkgKmVudHJ5OwotCiAJLyogSnVzdCB0 byBiZSBzdXJlLiAqLwogCWlmIChMb2dpY2FsUmVwUGFydE1hcCA9PSBOVUxMKQogCQlyZXR1cm47 CiAKIAlpZiAocmVsb2lkICE9IEludmFsaWRPaWQpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3Rh dHVzOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9naWNhbFJlcFBhcnRNYXApOwotCiAJ CS8qIFRPRE8sIHVzZSBpbnZlcnNlIGxvb2t1cCBoYXNodGFibGU/ICovCi0JCXdoaWxlICgoZW50 cnkgPSAoTG9naWNhbFJlcFBhcnRNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVwUGFydE1hcEVudHJ5LCBlbnRyeSwg TG9naWNhbFJlcFBhcnRNYXApCiAJCXsKIAkJCWlmIChlbnRyeS0+cmVsbWFwZW50cnkubG9jYWxy ZWxvaWQgPT0gcmVsb2lkKQogCQkJewogCQkJCWVudHJ5LT5yZWxtYXBlbnRyeS5sb2NhbHJlbHZh bGlkID0gZmFsc2U7Ci0JCQkJaGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKKwkJCQlmb3JlYWNoX2hh c2hfdGVybShlbnRyeSk7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTU1NiwxMSArNTQwLDcg QEAgbG9naWNhbHJlcF9wYXJ0bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lk KQogCWVsc2UKIAl7CiAJCS8qIGludmFsaWRhdGUgYWxsIGNhY2hlIGVudHJpZXMgKi8KLQkJSEFT SF9TRVFfU1RBVFVTIHN0YXR1czsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvZ2ljYWxS ZXBQYXJ0TWFwKTsKLQotCQl3aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBQYXJ0TWFwRW50cnkg KikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTG9n aWNhbFJlcFBhcnRNYXBFbnRyeSwgZW50cnksIExvZ2ljYWxSZXBQYXJ0TWFwKQogCQkJZW50cnkt PnJlbG1hcGVudHJ5LmxvY2FscmVsdmFsaWQgPSBmYWxzZTsKIAl9CiB9CkBAIC01NzgsMTUgKzU1 OCwxMiBAQCBsb2dpY2FscmVwX3BhcnRtYXBfaW52YWxpZGF0ZV9jYihEYXR1bSBhcmcsIE9pZCBy ZWxvaWQpCiB2b2lkCiBsb2dpY2FscmVwX3BhcnRtYXBfcmVzZXRfcmVsbWFwKExvZ2ljYWxSZXBS ZWxhdGlvbiAqcmVtb3RlcmVsKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JTG9naWNh bFJlcFBhcnRNYXBFbnRyeSAqcGFydF9lbnRyeTsKIAlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVu dHJ5OwogCiAJaWYgKExvZ2ljYWxSZXBQYXJ0TWFwID09IE5VTEwpCiAJCXJldHVybjsKIAotCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgTG9naWNhbFJlcFBhcnRNYXApOwotCXdoaWxlICgocGFydF9l bnRyeSA9IChMb2dpY2FsUmVwUGFydE1hcEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVz KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTG9naWNhbFJlcFBhcnRNYXBFbnRyeSwgcGFydF9l bnRyeSwgTG9naWNhbFJlcFBhcnRNYXApCiAJewogCQllbnRyeSA9ICZwYXJ0X2VudHJ5LT5yZWxt YXBlbnRyeTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9y ZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYwppbmRleCBmYTkzYTFiYmRlMS4uYWRkMzE1MTQ0NDQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC01MjQ3LDE1ICs1MjQ3 LDExIEBAIFJlb3JkZXJCdWZmZXJUb2FzdFJlcGxhY2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwKIHN0YXRpYyB2b2lkCiBSZW9yZGVyQnVmZmVyVG9hc3RSZXNldChS ZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKQogewotCUhBU0hfU0VRX1NU QVRVUyBoc3RhdDsKLQlSZW9yZGVyQnVmZmVyVG9hc3RFbnQgKmVudDsKLQogCWlmICh0eG4tPnRv YXN0X2hhc2ggPT0gTlVMTCkKIAkJcmV0dXJuOwogCiAJLyogc2VxdWVudGlhbGx5IHdhbGsgb3Zl ciB0aGUgaGFzaCBhbmQgZnJlZSBldmVyeXRoaW5nICovCi0JaGFzaF9zZXFfaW5pdCgmaHN0YXQs IHR4bi0+dG9hc3RfaGFzaCk7Ci0Jd2hpbGUgKChlbnQgPSAoUmVvcmRlckJ1ZmZlclRvYXN0RW50 ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZW9y ZGVyQnVmZmVyVG9hc3RFbnQsIGVudCwgdHhuLT50b2FzdF9oYXNoKQogCXsKIAkJZGxpc3RfbXV0 YWJsZV9pdGVyIGl0OwogCkBAIC01MzE4LDExICs1MzE0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmV3 cml0ZU1hcHBpbmdGaWxlCiBzdGF0aWMgdm9pZAogRGlzcGxheU1hcHBpbmcoSFRBQiAqdHVwbGVj aWRfZGF0YSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JUmVvcmRlckJ1ZmZlclR1cGxl Q2lkRW50ICplbnQ7Ci0KLQloYXNoX3NlcV9pbml0KCZoc3RhdCwgdHVwbGVjaWRfZGF0YSk7Ci0J d2hpbGUgKChlbnQgPSAoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkRW50ICopIGhhc2hfc2VxX3NlYXJj aCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZW9yZGVyQnVmZmVyVHVwbGVDaWRF bnQsIGVudCwgdHVwbGVjaWRfZGF0YSkKIAl7CiAJCWVsb2coREVCVUczLCAibWFwcGluZzogbm9k ZTogJXUvJXUvJXUgdGlkOiAldS8ldSBjbWluOiAldSwgY21heDogJXUiLAogCQkJIGVudC0+a2V5 LnJsb2NhdG9yLmRiT2lkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0 cHV0LmMKaW5kZXggMGRjZmJmZGQ2MDkuLjUwN2E4NzNjYTFiIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTIzNDMsMTMgKzIzNDMsOSBAQCBnZXRf cmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIHN0 YXRpYyB2b2lkCiBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlKFRyYW5zYWN0aW9uSWQgeGlkLCBib29s IGlzX2NvbW1pdCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgaGFzaF9zZXE7Ci0JUmVsYXRpb25TeW5j RW50cnkgKmVudHJ5OwotCiAJQXNzZXJ0KFJlbGF0aW9uU3luY0NhY2hlICE9IE5VTEwpOwogCi0J aGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIFJlbGF0aW9uU3luY0NhY2hlKTsKLQl3aGlsZSAoKGVu dHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNo KFJlbGF0aW9uU3luY0VudHJ5LCBlbnRyeSwgUmVsYXRpb25TeW5jQ2FjaGUpCiAJewogCQkvKgog CQkgKiBXZSBjYW4gc2V0IHRoZSBzY2hlbWFfc2VudCBmbGFnIGZvciBhbiBlbnRyeSB0aGF0IGhh cyBjb21taXR0ZWQgeGlkCkBAIC0yMzc4LDggKzIzNzQsNiBAQCBjbGVhbnVwX3JlbF9zeW5jX2Nh Y2hlKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGlzX2NvbW1pdCkKIHN0YXRpYyB2b2lkCiByZWxf c3luY19jYWNoZV9yZWxhdGlvbl9jYihEYXR1bSBhcmcsIE9pZCByZWxpZCkKIHsKLQlSZWxhdGlv blN5bmNFbnRyeSAqZW50cnk7Ci0KIAkvKgogCSAqIFdlIGNhbiBnZXQgaGVyZSBpZiB0aGUgcGx1 Z2luIHdhcyB1c2VkIGluIFNRTCBpbnRlcmZhY2UgYXMgdGhlCiAJICogUmVsYXRpb25TeW5jQ2Fj aGUgaXMgZGVzdHJveWVkIHdoZW4gdGhlIGRlY29kaW5nIGZpbmlzaGVzLCBidXQgdGhlcmUgaXMK QEAgLTI0MDIsMTggKzIzOTYsMTYgQEAgcmVsX3N5bmNfY2FjaGVfcmVsYXRpb25fY2IoRGF0dW0g YXJnLCBPaWQgcmVsaWQpCiAJCSAqIEdldHRpbmcgaW52YWxpZGF0aW9ucyBmb3IgcmVsYXRpb25z IHRoYXQgYXJlbid0IGluIHRoZSB0YWJsZSBpcwogCQkgKiBlbnRpcmVseSBub3JtYWwuICBTbyB3 ZSBkb24ndCBjYXJlIGlmIGl0J3MgZm91bmQgb3Igbm90LgogCQkgKi8KLQkJZW50cnkgPSAoUmVs YXRpb25TeW5jRW50cnkgKikgaGFzaF9zZWFyY2goUmVsYXRpb25TeW5jQ2FjaGUsICZyZWxpZCwK LQkJCQkJCQkJCQkJCSAgSEFTSF9GSU5ELCBOVUxMKTsKKwkJUmVsYXRpb25TeW5jRW50cnkgKmVu dHJ5ID0gaGFzaF9zZWFyY2goUmVsYXRpb25TeW5jQ2FjaGUsICZyZWxpZCwKKwkJCQkJCQkJCQkJ ICAgSEFTSF9GSU5ELCBOVUxMKTsKKwogCQlpZiAoZW50cnkgIT0gTlVMTCkKIAkJCWVudHJ5LT5y ZXBsaWNhdGVfdmFsaWQgPSBmYWxzZTsKIAl9CiAJZWxzZQogCXsKIAkJLyogV2hvbGUgY2FjaGUg bXVzdCBiZSBmbHVzaGVkLiAqLwotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCi0JCWhhc2hf c2VxX2luaXQoJnN0YXR1cywgUmVsYXRpb25TeW5jQ2FjaGUpOwotCQl3aGlsZSAoKGVudHJ5ID0g KFJlbGF0aW9uU3luY0VudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkK KwkJZm9yZWFjaF9oYXNoKFJlbGF0aW9uU3luY0VudHJ5LCBlbnRyeSwgUmVsYXRpb25TeW5jQ2Fj aGUpCiAJCXsKIAkJCWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQgPSBmYWxzZTsKIAkJfQpAQCAtMjQy OCw5ICsyNDIwLDYgQEAgcmVsX3N5bmNfY2FjaGVfcmVsYXRpb25fY2IoRGF0dW0gYXJnLCBPaWQg cmVsaWQpCiBzdGF0aWMgdm9pZAogcmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2IoRGF0dW0g YXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMg c3RhdHVzOwotCVJlbGF0aW9uU3luY0VudHJ5ICplbnRyeTsKLQogCS8qCiAJICogV2UgY2FuIGdl dCBoZXJlIGlmIHRoZSBwbHVnaW4gd2FzIHVzZWQgaW4gU1FMIGludGVyZmFjZSBhcyB0aGUKIAkg KiBSZWxhdGlvblN5bmNDYWNoZSBpcyBkZXN0cm95ZWQgd2hlbiB0aGUgZGVjb2RpbmcgZmluaXNo ZXMsIGJ1dCB0aGVyZSBpcwpAQCAtMjQ0Myw4ICsyNDMyLDcgQEAgcmVsX3N5bmNfY2FjaGVfcHVi bGljYXRpb25fY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIAkg KiBXZSBoYXZlIG5vIGVhc3kgd2F5IHRvIGlkZW50aWZ5IHdoaWNoIGNhY2hlIGVudHJpZXMgdGhp cyBpbnZhbGlkYXRpb24KIAkgKiBldmVudCBtaWdodCBoYXZlIGFmZmVjdGVkLCBzbyBqdXN0IG1h cmsgdGhlbSBhbGwgaW52YWxpZC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0 aW9uU3luY0NhY2hlKTsKLQl3aGlsZSAoKGVudHJ5ID0gKFJlbGF0aW9uU3luY0VudHJ5ICopIGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVsYXRpb25T eW5jRW50cnksIGVudHJ5LCBSZWxhdGlvblN5bmNDYWNoZSkKIAl7CiAJCWVudHJ5LT5yZXBsaWNh dGVfdmFsaWQgPSBmYWxzZTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4 IGE5NGNjODk2NTRlLi5lZjkxODY3NmEyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvYnVmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdy LmMKQEAgLTQxNTIsNyArNDE1Miw2IEBAIENoZWNrRm9yQnVmZmVyTGVha3Modm9pZCkKIHsKICNp ZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCiAJaW50CQkJUmVmQ291bnRFcnJvcnMgPSAwOwotCVBy aXZhdGVSZWZDb3VudEVudHJ5ICpyZXM7CiAJaW50CQkJaTsKIAljaGFyCSAgICpzOwogCkBAIC00 MTYxLDcgKzQxNjAsNyBAQCBDaGVja0ZvckJ1ZmZlckxlYWtzKHZvaWQpCiAJewogCQlpZiAoUHJp dmF0ZVJlZkNvdW50QXJyYXlLZXlzW2ldICE9IEludmFsaWRCdWZmZXIpCiAJCXsKLQkJCXJlcyA9 ICZQcml2YXRlUmVmQ291bnRBcnJheVtpXTsKKwkJCVByaXZhdGVSZWZDb3VudEVudHJ5ICpyZXMg PSAmUHJpdmF0ZVJlZkNvdW50QXJyYXlbaV07CiAKIAkJCXMgPSBEZWJ1Z1ByaW50QnVmZmVyUmVm Y291bnQocmVzLT5idWZmZXIpOwogCQkJZWxvZyhXQVJOSU5HLCAiYnVmZmVyIHJlZmNvdW50IGxl YWs6ICVzIiwgcyk7CkBAIC00MTc0LDEyICs0MTczLDkgQEAgQ2hlY2tGb3JCdWZmZXJMZWFrcyh2 b2lkKQogCS8qIGlmIG5lY2Vzc2FyeSBzZWFyY2ggdGhlIGhhc2ggKi8KIAlpZiAoUHJpdmF0ZVJl ZkNvdW50T3ZlcmZsb3dlZCkKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBoc3RhdDsKLQotCQloYXNo X3NlcV9pbml0KCZoc3RhdCwgUHJpdmF0ZVJlZkNvdW50SGFzaCk7Ci0JCXdoaWxlICgocmVzID0g KFByaXZhdGVSZWZDb3VudEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxM KQorCQlmb3JlYWNoX2hhc2goUHJpdmF0ZVJlZkNvdW50RW50cnksIGVudCwgUHJpdmF0ZVJlZkNv dW50SGFzaCkKIAkJewotCQkJcyA9IERlYnVnUHJpbnRCdWZmZXJSZWZjb3VudChyZXMtPmJ1ZmZl cik7CisJCQlzID0gRGVidWdQcmludEJ1ZmZlclJlZmNvdW50KGVudC0+YnVmZmVyKTsKIAkJCWVs b2coV0FSTklORywgImJ1ZmZlciByZWZjb3VudCBsZWFrOiAlcyIsIHMpOwogCQkJcGZyZWUocyk7 CiAJCQlSZWZDb3VudEVycm9ycysrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggYjZhOGQx ZWM3NzYuLjVmZDFlMzFmMzQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTUzOSw4ICs1 MzksNiBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIHsKICNk ZWZpbmUgUEdfR0VUX1NITUVNX1NJWkVTX0NPTFMgNAogCVJldHVyblNldEluZm8gKnJzaW5mbyA9 IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKLQlIQVNIX1NFUV9TVEFUVVMg aHN0YXQ7Ci0JU2htZW1JbmRleEVudCAqZW50OwogCVNpemUJCW5hbWVkX2FsbG9jYXRlZCA9IDA7 CiAJRGF0dW0JCXZhbHVlc1tQR19HRVRfU0hNRU1fU0laRVNfQ09MU107CiAJYm9vbAkJbnVsbHNb UEdfR0VUX1NITUVNX1NJWkVTX0NPTFNdOwpAQCAtNTQ5LDExICs1NDcsOSBAQCBwZ19nZXRfc2ht ZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAogCUxXTG9ja0FjcXVpcmUoU2htZW1J bmRleExvY2ssIExXX1NIQVJFRCk7CiAKLQloYXNoX3NlcV9pbml0KCZoc3RhdCwgU2htZW1JbmRl eCk7Ci0KIAkvKiBvdXRwdXQgYWxsIGFsbG9jYXRlZCBlbnRyaWVzICovCiAJbWVtc2V0KG51bGxz LCAwLCBzaXplb2YobnVsbHMpKTsKLQl3aGlsZSAoKGVudCA9IChTaG1lbUluZGV4RW50ICopIGhh c2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChTaG1lbUluZGV4 RW50LCBlbnQsIFNobWVtSW5kZXgpCiAJewogCQl2YWx1ZXNbMF0gPSBDU3RyaW5nR2V0VGV4dERh dHVtKGVudC0+a2V5KTsKIAkJdmFsdWVzWzFdID0gSW50NjRHZXREYXR1bSgoY2hhciAqKSBlbnQt PmxvY2F0aW9uIC0gKGNoYXIgKikgU2htZW1TZWdIZHIpOwpAQCAtNTk2LDggKzU5Miw2IEBAIHBn X2dldF9zaG1lbV9hbGxvY2F0aW9uc19udW1hKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAjZGVmaW5l IFBHX0dFVF9TSE1FTV9OVU1BX1NJWkVTX0NPTFMgMwogCVJldHVyblNldEluZm8gKnJzaW5mbyA9 IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKLQlIQVNIX1NFUV9TVEFUVVMg aHN0YXQ7Ci0JU2htZW1JbmRleEVudCAqZW50OwogCURhdHVtCQl2YWx1ZXNbUEdfR0VUX1NITUVN X05VTUFfU0laRVNfQ09MU107CiAJYm9vbAkJbnVsbHNbUEdfR0VUX1NITUVNX05VTUFfU0laRVNf Q09MU107CiAJU2l6ZQkJb3NfcGFnZV9zaXplOwpAQCAtNjQ3LDExICs2NDEsOSBAQCBwZ19nZXRf c2htZW1fYWxsb2NhdGlvbnNfbnVtYShQR19GVU5DVElPTl9BUkdTKQogCiAJTFdMb2NrQWNxdWly ZShTaG1lbUluZGV4TG9jaywgTFdfU0hBUkVEKTsKIAotCWhhc2hfc2VxX2luaXQoJmhzdGF0LCBT aG1lbUluZGV4KTsKLQogCS8qIG91dHB1dCBhbGwgYWxsb2NhdGVkIGVudHJpZXMgKi8KIAltZW1z ZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOwotCXdoaWxlICgoZW50ID0gKFNobWVtSW5kZXhF bnQgKikgaGFzaF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFNo bWVtSW5kZXhFbnQsIGVudCwgU2htZW1JbmRleCkKIAl7CiAJCWludAkJCWk7CiAJCWNoYXIJICAg KnN0YXJ0cHRyLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDdhOTZlM2UyMDM5Li44 ZjAwYThlMWYwMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtMTA5OSwxMyArMTA5 OSw5IEBAIFN0YW5kYnlSZWxlYXNlTG9ja1RyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBuc3Vi eGlkcywgVHJhbnNhY3Rpb25JZCAqc3VieGlkcykKIHZvaWQKIFN0YW5kYnlSZWxlYXNlQWxsTG9j a3Modm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlY292ZXJ5TG9ja1hpZEVu dHJ5ICplbnRyeTsKLQogCWVsb2coREVCVUcyLCAicmVsZWFzZSBhbGwgc3RhbmRieSBsb2NrcyIp OwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWNvdmVyeUxvY2tYaWRIYXNoKTsKLQl3aGls ZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSkKKwlmb3JlYWNoX2hhc2goUmVj b3ZlcnlMb2NrWGlkRW50cnksIGVudHJ5LCBSZWNvdmVyeUxvY2tYaWRIYXNoKQogCXsKIAkJU3Rh bmRieVJlbGVhc2VYaWRFbnRyeUxvY2tzKGVudHJ5KTsKIAkJaGFzaF9zZWFyY2goUmVjb3ZlcnlM b2NrWGlkSGFzaCwgZW50cnksIEhBU0hfUkVNT1ZFLCBOVUxMKTsKQEAgLTExMjMsMTEgKzExMTks NyBAQCBTdGFuZGJ5UmVsZWFzZUFsbExvY2tzKHZvaWQpCiB2b2lkCiBTdGFuZGJ5UmVsZWFzZU9s ZExvY2tzKFRyYW5zYWN0aW9uSWQgb2xkeGlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0JUmVjb3ZlcnlMb2NrWGlkRW50cnkgKmVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVz LCBSZWNvdmVyeUxvY2tYaWRIYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNo KCZzdGF0dXMpKSkKKwlmb3JlYWNoX2hhc2goUmVjb3ZlcnlMb2NrWGlkRW50cnksIGVudHJ5LCBS ZWNvdmVyeUxvY2tYaWRIYXNoKQogCXsKIAkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGVu dHJ5LT54aWQpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2su YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggM2YyMGM4NTg4MWEuLmVi ZmI3NmNjNDc2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTIyOTIsMTEgKzIyOTIsOSBA QCBMb2NrUmVsZWFzZShjb25zdCBMT0NLVEFHICpsb2NrdGFnLCBMT0NLTU9ERSBsb2NrbW9kZSwg Ym9vbCBzZXNzaW9uTG9jaykKIHZvaWQKIExvY2tSZWxlYXNlQWxsKExPQ0tNRVRIT0RJRCBsb2Nr bWV0aG9kaWQsIGJvb2wgYWxsTG9ja3MpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKIAlM b2NrTWV0aG9kCWxvY2tNZXRob2RUYWJsZTsKIAlpbnQJCQlpLAogCQkJCW51bUxvY2tNb2RlczsK LQlMT0NBTExPQ0sgICpsb2NhbGxvY2s7CiAJTE9DSwkgICAqbG9jazsKIAlpbnQJCQlwYXJ0aXRp b247CiAJYm9vbAkJaGF2ZV9mYXN0X3BhdGhfbHdsb2NrID0gZmFsc2U7CkBAIC0yMzI5LDkgKzIz MjcsNyBAQCBMb2NrUmVsZWFzZUFsbChMT0NLTUVUSE9ESUQgbG9ja21ldGhvZGlkLCBib29sIGFs bExvY2tzKQogCSAqIHBvaW50ZXJzLiAgRmFzdC1wYXRoIGxvY2tzIGFyZSBjbGVhbmVkIHVwIGR1 cmluZyB0aGUgbG9jYWxsb2NrIHRhYmxlCiAJICogc2NhbiwgdGhvdWdoLgogCSAqLwotCWhhc2hf c2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhvZExvY2FsSGFzaCk7Ci0KLQl3aGlsZSAoKGxvY2Fs bG9jayA9IChMT0NBTExPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQor CWZvcmVhY2hfaGFzaChMT0NBTExPQ0ssIGxvY2FsbG9jaywgTG9ja01ldGhvZExvY2FsSGFzaCkK IAl7CiAJCS8qCiAJCSAqIElmIHRoZSBMT0NBTExPQ0sgZW50cnkgaXMgdW51c2VkLCBzb21ldGhp bmcgbXVzdCd2ZSBnb25lIHdyb25nCkBAIC0yNTY2LDE1ICsyNTYyLDEwIEBAIExvY2tSZWxlYXNl QWxsKExPQ0tNRVRIT0RJRCBsb2NrbWV0aG9kaWQsIGJvb2wgYWxsTG9ja3MpCiB2b2lkCiBMb2Nr UmVsZWFzZVNlc3Npb24oTE9DS01FVEhPRElEIGxvY2ttZXRob2RpZCkKIHsKLQlIQVNIX1NFUV9T VEFUVVMgc3RhdHVzOwotCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKLQogCWlmIChsb2NrbWV0aG9k aWQgPD0gMCB8fCBsb2NrbWV0aG9kaWQgPj0gbGVuZ3Rob2YoTG9ja01ldGhvZHMpKQogCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIGxvY2sgbWV0aG9kOiAlZCIsIGxvY2ttZXRob2RpZCk7CiAK LQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUg KChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0g TlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2Nh bEhhc2gpCiAJewogCQkvKiBJZ25vcmUgaXRlbXMgdGhhdCBhcmUgbm90IG9mIHRoZSBzcGVjaWZp ZWQgbG9jayBtZXRob2QgKi8KIAkJaWYgKExPQ0FMTE9DS19MT0NLTUVUSE9EKCpsb2NhbGxvY2sp ICE9IGxvY2ttZXRob2RpZCkKQEAgLTI1OTgsMTIgKzI1ODksNyBAQCBMb2NrUmVsZWFzZUN1cnJl bnRPd25lcihMT0NBTExPQ0sgKipsb2NhbGxvY2tzLCBpbnQgbmxvY2tzKQogewogCWlmIChsb2Nh bGxvY2tzID09IE5VTEwpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCQlMT0NBTExP Q0sgICpsb2NhbGxvY2s7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9j YWxIYXNoKTsKLQotCQl3aGlsZSAoKGxvY2FsbG9jayA9IChMT0NBTExPQ0sgKikgaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2Nh bGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gpCiAJCQlSZWxlYXNlTG9ja0lmSGVsZChsb2NhbGxv Y2ssIGZhbHNlKTsKIAl9CiAJZWxzZQpAQCAtMjY5NywxMiArMjY4Myw3IEBAIExvY2tSZWFzc2ln bkN1cnJlbnRPd25lcihMT0NBTExPQ0sgKipsb2NhbGxvY2tzLCBpbnQgbmxvY2tzKQogCiAJaWYg KGxvY2FsbG9ja3MgPT0gTlVMTCkKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JCUxP Q0FMTE9DSyAgKmxvY2FsbG9jazsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRo b2RMb2NhbEhhc2gpOwotCi0JCXdoaWxlICgobG9jYWxsb2NrID0gKExPQ0FMTE9DSyAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMT0NBTExPQ0ss IGxvY2FsbG9jaywgTG9ja01ldGhvZExvY2FsSGFzaCkKIAkJCUxvY2tSZWFzc2lnbk93bmVyKGxv Y2FsbG9jaywgcGFyZW50KTsKIAl9CiAJZWxzZQpAQCAtMzM4MSwxNyArMzM2MiwxMyBAQCBDaGVj a0ZvclNlc3Npb25BbmRYYWN0TG9ja3Modm9pZCkKIAl9IFBlckxvY2tUYWdFbnRyeTsKIAogCUhU QUIJICAgKmxvY2todGFiOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JTE9DQUxMT0NLICAq bG9jYWxsb2NrOwogCiAJLyogQ3JlYXRlIGEgbG9jYWwgaGFzaCB0YWJsZSBrZXllZCBieSBMT0NL VEFHIG9ubHkgKi8KIAlsb2NraHRhYiA9IGhhc2hfbWFrZShQZXJMb2NrVGFnRW50cnksIGxvY2ss CiAJCQkJCQkgIkNoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2NrcyB0YWJsZSIsIDI1Nik7CiAKIAkv KiBTY2FuIGxvY2FsIGxvY2sgdGFibGUgdG8gZmluZCBlbnRyaWVzIGZvciBlYWNoIExPQ0tUQUcg Ki8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hp bGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkg IT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RM b2NhbEhhc2gpCiAJewogCQlMT0NBTExPQ0tPV05FUiAqbG9ja093bmVycyA9IGxvY2FsbG9jay0+ bG9ja093bmVyczsKIAkJUGVyTG9ja1RhZ0VudHJ5ICpoZW50cnk7CkBAIC0zNDU0LDE2ICszNDMx LDExIEBAIENoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2Nrcyh2b2lkKQogdm9pZAogQXRQcmVwYXJl X0xvY2tzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlMT0NBTExPQ0sgICps b2NhbGxvY2s7Ci0KIAkvKiBGaXJzdCwgdmVyaWZ5IHRoZXJlIGFyZW4ndCBsb2NrcyBvZiBib3Ro IHhhY3QgYW5kIHNlc3Npb24gbGV2ZWwgKi8KIAlDaGVja0ZvclNlc3Npb25BbmRYYWN0TG9ja3Mo KTsKIAogCS8qIE5vdyBkbyB0aGUgcGVyLWxvY2FsbG9jayBjbGVhbnVwIHdvcmsgKi8KLQloYXNo X3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUgKChsb2Nh bGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkK Kwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gp CiAJewogCQlUd29QaGFzZUxvY2tSZWNvcmQgcmVjb3JkOwogCQlMT0NBTExPQ0tPV05FUiAqbG9j a093bmVycyA9IGxvY2FsbG9jay0+bG9ja093bmVyczsKQEAgLTM1NTEsOCArMzUyMyw2IEBAIHZv aWQKIFBvc3RQcmVwYXJlX0xvY2tzKEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiB7CiAJUEdQUk9D CSAgICpuZXdwcm9jID0gVHdvUGhhc2VHZXREdW1teVByb2MoZnhpZCwgZmFsc2UpOwotCUhBU0hf U0VRX1NUQVRVUyBzdGF0dXM7Ci0JTE9DQUxMT0NLICAqbG9jYWxsb2NrOwogCUxPQ0sJICAgKmxv Y2s7CiAJUFJPQ0xPQ0sgICAqcHJvY2xvY2s7CiAJUFJPQ0xPQ0tUQUcgcHJvY2xvY2t0YWc7CkBA IC0zNTc0LDkgKzM1NDQsNyBAQCBQb3N0UHJlcGFyZV9Mb2NrcyhGdWxsVHJhbnNhY3Rpb25JZCBm eGlkKQogCSAqIHBvaW50aW5nIHRvIHRoZSBzYW1lIHByb2Nsb2NrLCBhbmQgd2UgZGFyZW4ndCBl bmQgdXAgd2l0aCBhbnkgZGFuZ2xpbmcKIAkgKiBwb2ludGVycy4KIAkgKi8KLQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUgKChsb2NhbGxvY2sg PSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3Jl YWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gpCiAJewog CQlMT0NBTExPQ0tPV05FUiAqbG9ja093bmVycyA9IGxvY2FsbG9jay0+bG9ja093bmVyczsKIAkJ Ym9vbAkJaGF2ZVNlc3Npb25Mb2NrOwpAQCAtMzc3Miw4ICszNzQwLDYgQEAgTG9ja0RhdGEgKgog R2V0TG9ja1N0YXR1c0RhdGEodm9pZCkKIHsKIAlMb2NrRGF0YSAgICpkYXRhOwotCVBST0NMT0NL ICAgKnByb2Nsb2NrOwotCUhBU0hfU0VRX1NUQVRVUyBzZXFzdGF0OwogCWludAkJCWVsczsKIAlp bnQJCQllbDsKIAlpbnQJCQlpOwpAQCAtMzkwOSw5ICszODc1LDcgQEAgR2V0TG9ja1N0YXR1c0Rh dGEodm9pZCkKIAl9CiAKIAkvKiBOb3cgc2NhbiB0aGUgdGFibGVzIHRvIGNvcHkgdGhlIGRhdGEg Ki8KLQloYXNoX3NlcV9pbml0KCZzZXFzdGF0LCBMb2NrTWV0aG9kUHJvY0xvY2tIYXNoKTsKLQot CXdoaWxlICgocHJvY2xvY2sgPSAoUFJPQ0xPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFzdGF0 KSkpCisJZm9yZWFjaF9oYXNoKFBST0NMT0NLLCBwcm9jbG9jaywgTG9ja01ldGhvZFByb2NMb2Nr SGFzaCkKIAl7CiAJCVBHUFJPQwkgICAqcHJvYyA9IHByb2Nsb2NrLT50YWcubXlQcm9jOwogCQlM T0NLCSAgICpsb2NrID0gcHJvY2xvY2stPnRhZy5teUxvY2s7CkBAIC00MTUwLDggKzQxMTQsNiBA QCB4bF9zdGFuZGJ5X2xvY2sgKgogR2V0UnVubmluZ1RyYW5zYWN0aW9uTG9ja3MoaW50ICpubG9j a3MpCiB7CiAJeGxfc3RhbmRieV9sb2NrICphY2Nlc3NFeGNsdXNpdmVMb2NrczsKLQlQUk9DTE9D SyAgICpwcm9jbG9jazsKLQlIQVNIX1NFUV9TVEFUVVMgc2Vxc3RhdDsKIAlpbnQJCQlpOwogCWlu dAkJCWluZGV4OwogCWludAkJCWVsczsKQEAgLTQxNzMsMTAgKzQxMzUsOSBAQCBHZXRSdW5uaW5n VHJhbnNhY3Rpb25Mb2NrcyhpbnQgKm5sb2NrcykKIAkgKi8KIAlhY2Nlc3NFeGNsdXNpdmVMb2Nr cyA9IHBhbGxvYyhlbHMgKiBzaXplb2YoeGxfc3RhbmRieV9sb2NrKSk7CiAKLQkvKiBOb3cgc2Nh biB0aGUgdGFibGVzIHRvIGNvcHkgdGhlIGRhdGEgKi8KLQloYXNoX3NlcV9pbml0KCZzZXFzdGF0 LCBMb2NrTWV0aG9kUHJvY0xvY2tIYXNoKTsKLQogCS8qCisJICogTm93IHNjYW4gdGhlIHRhYmxl cyB0byBjb3B5IHRoZSBkYXRhLgorCSAqCiAJICogSWYgbG9jayBpcyBhIGN1cnJlbnRseSBncmFu dGVkIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgdGhlbiBpdCB3aWxsIGhhdmUKIAkgKiBqdXN0IG9uZSBw cm9jbG9jayBob2xkZXIsIHNvIGxvY2tzIGFyZSBuZXZlciBhY2Nlc3NlZCB0d2ljZSBpbiB0aGlz CiAJICogcGFydGljdWxhciBjYXNlLiBEb24ndCBjb3B5IHRoaXMgY29kZSBmb3IgdXNlIGVsc2V3 aGVyZSBiZWNhdXNlIGluIHRoZQpAQCAtNDE4NCw3ICs0MTQ1LDcgQEAgR2V0UnVubmluZ1RyYW5z YWN0aW9uTG9ja3MoaW50ICpubG9ja3MpCiAJICogbm9uLWV4Y2x1c2l2ZSBsb2NrIHR5cGVzLgog CSAqLwogCWluZGV4ID0gMDsKLQl3aGlsZSAoKHByb2Nsb2NrID0gKFBST0NMT0NLICopIGhhc2hf c2VxX3NlYXJjaCgmc2Vxc3RhdCkpKQorCWZvcmVhY2hfaGFzaChQUk9DTE9DSywgcHJvY2xvY2ss IExvY2tNZXRob2RQcm9jTG9ja0hhc2gpCiAJewogCQkvKiBtYWtlIHN1cmUgdGhpcyBkZWZpbml0 aW9uIG1hdGNoZXMgdGhlIG9uZSB1c2VkIGluIExvY2tBY3F1aXJlICovCiAJCWlmICgocHJvY2xv Y2stPmhvbGRNYXNrICYgTE9DS0JJVF9PTihBY2Nlc3NFeGNsdXNpdmVMb2NrKSkgJiYKQEAgLTQy NzksMTggKzQyNDAsMTQgQEAgdm9pZAogRHVtcEFsbExvY2tzKHZvaWQpCiB7CiAJUEdQUk9DCSAg ICpwcm9jOwotCVBST0NMT0NLICAgKnByb2Nsb2NrOwogCUxPQ0sJICAgKmxvY2s7Ci0JSEFTSF9T RVFfU1RBVFVTIHN0YXR1czsKIAogCXByb2MgPSBNeVByb2M7CiAKIAlpZiAocHJvYyAmJiBwcm9j LT53YWl0TG9jaykKIAkJTE9DS19QUklOVCgiRHVtcEFsbExvY2tzOiB3YWl0aW5nIG9uIiwgcHJv Yy0+d2FpdExvY2ssIDApOwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kUHJv Y0xvY2tIYXNoKTsKLQotCXdoaWxlICgocHJvY2xvY2sgPSAoUFJPQ0xPQ0sgKikgaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQUk9DTE9DSywgcHJvY2xv Y2ssIExvY2tNZXRob2RQcm9jTG9ja0hhc2gpCiAJewogCQlQUk9DTE9DS19QUklOVCgiRHVtcEFs bExvY2tzIiwgcHJvY2xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbHdsb2NrLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKaW5kZXggMGFm YzdjYWVlZWUuLjEyOTc5NjI5ZTUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbHdsb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCkBAIC0z MTYsMTUgKzMxNiwxMCBAQCBpbml0X2x3bG9ja19zdGF0cyh2b2lkKQogc3RhdGljIHZvaWQKIHBy aW50X2x3bG9ja19zdGF0cyhpbnQgY29kZSwgRGF0dW0gYXJnKQogewotCUhBU0hfU0VRX1NUQVRV UyBzY2FuOwotCWx3bG9ja19zdGF0cyAqbHdzdGF0czsKLQotCWhhc2hfc2VxX2luaXQoJnNjYW4s IGx3bG9ja19zdGF0c19odGFiKTsKLQogCS8qIEdyYWIgYW4gTFdMb2NrIHRvIGtlZXAgZGlmZmVy ZW50IGJhY2tlbmRzIGZyb20gbWl4aW5nIHJlcG9ydHMgKi8KIAlMV0xvY2tBY3F1aXJlKCZNYWlu TFdMb2NrQXJyYXlbMF0ubG9jaywgTFdfRVhDTFVTSVZFKTsKIAotCXdoaWxlICgobHdzdGF0cyA9 IChsd2xvY2tfc3RhdHMgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkgIT0gTlVMTCkKKwlmb3Jl YWNoX2hhc2gobHdsb2NrX3N0YXRzLCBsd3N0YXRzLCBsd2xvY2tfc3RhdHNfaHRhYikKIAl7CiAJ CWZwcmludGYoc3RkZXJyLAogCQkJCSJQSUQgJWQgbHdsb2NrICVzICVwOiBzaGFjcSAldSBleGFj cSAldSBibGsgJXUgc3BpbmRlbGF5ICV1IGRlcXVldWUgc2VsZiAldVxuIiwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9wcmVkaWNhdGUuYwppbmRleCA5ZjM3NzliOWFlYS4uNjNlMjYwZGU0ZWIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTE0NDAsOCArMTQ0MCw2IEBAIEdldFBy ZWRpY2F0ZUxvY2tTdGF0dXNEYXRhKHZvaWQpCiAJaW50CQkJaTsKIAlpbnQJCQllbHMsCiAJCQkJ ZWw7Ci0JSEFTSF9TRVFfU1RBVFVTIHNlcXN0YXQ7Ci0JUFJFRElDQVRFTE9DSyAqcHJlZGxvY2s7 CiAKIAlkYXRhID0gcGFsbG9jX29iamVjdChQcmVkaWNhdGVMb2NrRGF0YSk7CiAKQEAgLTE0NjEs MTEgKzE0NTksOSBAQCBHZXRQcmVkaWNhdGVMb2NrU3RhdHVzRGF0YSh2b2lkKQogCiAKIAkvKiBT Y2FuIHRocm91Z2ggUHJlZGljYXRlTG9ja0hhc2ggYW5kIGNvcHkgY29udGVudHMgKi8KLQloYXNo X3NlcV9pbml0KCZzZXFzdGF0LCBQcmVkaWNhdGVMb2NrSGFzaCk7Ci0KIAllbCA9IDA7CiAKLQl3 aGlsZSAoKHByZWRsb2NrID0gKFBSRURJQ0FURUxPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFz dGF0KSkpCisJZm9yZWFjaF9oYXNoKFBSRURJQ0FURUxPQ0ssIHByZWRsb2NrLCBQcmVkaWNhdGVM b2NrSGFzaCkKIAl7CiAJCWRhdGEtPmxvY2t0YWdzW2VsXSA9IHByZWRsb2NrLT50YWcubXlUYXJn ZXQtPnRhZzsKIAkJZGF0YS0+eGFjdHNbZWxdID0gKnByZWRsb2NrLT50YWcubXlYYWN0OwpAQCAt MjkyMiw4ICsyOTE4LDYgQEAgZXhpdDoKIHN0YXRpYyB2b2lkCiBEcm9wQWxsUHJlZGljYXRlTG9j a3NGcm9tVGFibGUoUmVsYXRpb24gcmVsYXRpb24sIGJvb2wgdHJhbnNmZXIpCiB7Ci0JSEFTSF9T RVFfU1RBVFVTIHNlcXN0YXQ7Ci0JUFJFRElDQVRFTE9DS1RBUkdFVCAqb2xkdGFyZ2V0OwogCVBS RURJQ0FURUxPQ0tUQVJHRVQgKmhlYXB0YXJnZXQ7CiAJT2lkCQkJZGJJZDsKIAlPaWQJCQlyZWxJ ZDsKQEAgLTI5NzksOSArMjk3Myw3IEBAIERyb3BBbGxQcmVkaWNhdGVMb2Nrc0Zyb21UYWJsZShS ZWxhdGlvbiByZWxhdGlvbiwgYm9vbCB0cmFuc2ZlcikKIAkJUmVtb3ZlU2NyYXRjaFRhcmdldCh0 cnVlKTsKIAogCS8qIFNjYW4gdGhyb3VnaCB0YXJnZXQgbWFwICovCi0JaGFzaF9zZXFfaW5pdCgm c2Vxc3RhdCwgUHJlZGljYXRlTG9ja1RhcmdldEhhc2gpOwotCi0Jd2hpbGUgKChvbGR0YXJnZXQg PSAoUFJFRElDQVRFTE9DS1RBUkdFVCAqKSBoYXNoX3NlcV9zZWFyY2goJnNlcXN0YXQpKSkKKwlm b3JlYWNoX2hhc2goUFJFRElDQVRFTE9DS1RBUkdFVCwgb2xkdGFyZ2V0LCBQcmVkaWNhdGVMb2Nr VGFyZ2V0SGFzaCkKIAl7CiAJCWRsaXN0X211dGFibGVfaXRlciBpdGVyOwogCkBAIC00NDA0LDgg KzQzOTYsNiBAQCBDaGVja0ZvclNlcmlhbGl6YWJsZUNvbmZsaWN0SW4oUmVsYXRpb24gcmVsYXRp b24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLCBCbAogdm9pZAogQ2hlY2tUYWJsZUZvclNl cmlhbGl6YWJsZUNvbmZsaWN0SW4oUmVsYXRpb24gcmVsYXRpb24pCiB7Ci0JSEFTSF9TRVFfU1RB VFVTIHNlcXN0YXQ7Ci0JUFJFRElDQVRFTE9DS1RBUkdFVCAqdGFyZ2V0OwogCU9pZAkJCWRiSWQ7 CiAJT2lkCQkJaGVhcElkOwogCWludAkJCWk7CkBAIC00NDM5LDkgKzQ0MjksNyBAQCBDaGVja1Rh YmxlRm9yU2VyaWFsaXphYmxlQ29uZmxpY3RJbihSZWxhdGlvbiByZWxhdGlvbikKIAlMV0xvY2tB Y3F1aXJlKFNlcmlhbGl6YWJsZVhhY3RIYXNoTG9jaywgTFdfRVhDTFVTSVZFKTsKIAogCS8qIFNj YW4gdGhyb3VnaCB0YXJnZXQgbGlzdCAqLwotCWhhc2hfc2VxX2luaXQoJnNlcXN0YXQsIFByZWRp Y2F0ZUxvY2tUYXJnZXRIYXNoKTsKLQotCXdoaWxlICgodGFyZ2V0ID0gKFBSRURJQ0FURUxPQ0tU QVJHRVQgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFzdGF0KSkpCisJZm9yZWFjaF9oYXNoKFBSRURJ Q0FURUxPQ0tUQVJHRVQsIHRhcmdldCwgUHJlZGljYXRlTG9ja1RhcmdldEhhc2gpCiAJewogCQlk bGlzdF9tdXRhYmxlX2l0ZXIgaXRlcjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9zbWdyL3NtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKaW5kZXggNjgw ZGE1MDQ4ZmQuLmNhYzYyNDlmOWFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL3Nt Z3Ivc21nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKQEAgLTQwOSw5 ICs0MDksNiBAQCBzbWdyZGVzdHJveWFsbCh2b2lkKQogdm9pZAogc21ncnJlbGVhc2VhbGwodm9p ZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVNNZ3JSZWxhdGlvbiByZWxuOwotCiAJ LyogTm90aGluZyB0byBkbyBpZiBoYXNodGFibGUgbm90IHNldCB1cCAqLwogCWlmIChTTWdyUmVs YXRpb25IYXNoID09IE5VTEwpCiAJCXJldHVybjsKQEAgLTQxOSw5ICs0MTYsNyBAQCBzbWdycmVs ZWFzZWFsbCh2b2lkKQogCS8qIHNlZW1zIHVuc2FmZSB0byBhY2NlcHQgaW50ZXJydXB0cyB3aGls ZSBpdGVyYXRpbmcgKi8KIAlIT0xEX0lOVEVSUlVQVFMoKTsKIAotCWhhc2hfc2VxX2luaXQoJnN0 YXR1cywgU01nclJlbGF0aW9uSGFzaCk7Ci0KLQl3aGlsZSAoKHJlbG4gPSAoU01nclJlbGF0aW9u KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFNNZ3JS ZWxhdGlvbkRhdGEsIHJlbG4sIFNNZ3JSZWxhdGlvbkhhc2gpCiAJewogCQlzbWdycmVsZWFzZShy ZWxuKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwppbmRleCAwMWFjYjMwZjFiYi4uYjJkNWM3 NmVmNzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwpAQCAtMjgwLDggKzI4MCw2IEBAIFByb2Nl c3NTeW5jUmVxdWVzdHModm9pZCkKIHsKIAlzdGF0aWMgYm9vbCBzeW5jX2luX3Byb2dyZXNzID0g ZmFsc2U7CiAKLQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JUGVuZGluZ0ZzeW5jRW50cnkgKmVu dHJ5OwogCWludAkJCWFic29yYl9jb3VudGVyOwogCiAJLyogU3RhdGlzdGljcyBvbiBzeW5jIHRp bWVzICovCkBAIC0zMzgsOCArMzM2LDcgQEAgUHJvY2Vzc1N5bmNSZXF1ZXN0cyh2b2lkKQogCWlm IChzeW5jX2luX3Byb2dyZXNzKQogCXsKIAkJLyogcHJpb3IgdHJ5IGZhaWxlZCwgc28gdXBkYXRl IGFueSBzdGFsZSBjeWNsZV9jdHIgdmFsdWVzICovCi0JCWhhc2hfc2VxX2luaXQoJmhzdGF0LCBw ZW5kaW5nT3BzKTsKLQkJd2hpbGUgKChlbnRyeSA9IChQZW5kaW5nRnN5bmNFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJmhzdGF0KSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFBlbmRpbmdGc3lu Y0VudHJ5LCBlbnRyeSwgcGVuZGluZ09wcykKIAkJewogCQkJZW50cnktPmN5Y2xlX2N0ciA9IHN5 bmNfY3ljbGVfY3RyOwogCQl9CkBAIC0zNTMsOCArMzUwLDcgQEAgUHJvY2Vzc1N5bmNSZXF1ZXN0 cyh2b2lkKQogCiAJLyogTm93IHNjYW4gdGhlIGhhc2h0YWJsZSBmb3IgZnN5bmMgcmVxdWVzdHMg dG8gcHJvY2VzcyAqLwogCWFic29yYl9jb3VudGVyID0gRlNZTkNTX1BFUl9BQlNPUkI7Ci0JaGFz aF9zZXFfaW5pdCgmaHN0YXQsIHBlbmRpbmdPcHMpOwotCXdoaWxlICgoZW50cnkgPSAoUGVuZGlu Z0ZzeW5jRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFBlbmRpbmdGc3luY0VudHJ5LCBlbnRyeSwgcGVuZGluZ09wcykKIAl7CiAJCWludAkJ CWZhaWx1cmVzOwogCkBAIC00OTUsMTMgKzQ5MSwxMCBAQCBSZW1lbWJlclN5bmNSZXF1ZXN0KGNv bnN0IEZpbGVUYWcgKmZ0YWcsIFN5bmNSZXF1ZXN0VHlwZSB0eXBlKQogCX0KIAllbHNlIGlmICh0 eXBlID09IFNZTkNfRklMVEVSX1JFUVVFU1QpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7 Ci0JCVBlbmRpbmdGc3luY0VudHJ5ICpwZmU7CiAJCUxpc3RDZWxsICAgKmNlbGw7CiAKIAkJLyog Q2FuY2VsIG1hdGNoaW5nIGZzeW5jIHJlcXVlc3RzICovCi0JCWhhc2hfc2VxX2luaXQoJmhzdGF0 LCBwZW5kaW5nT3BzKTsKLQkJd2hpbGUgKChwZmUgPSAoUGVuZGluZ0ZzeW5jRW50cnkgKikgaGFz aF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChQZW5kaW5nRnN5 bmNFbnRyeSwgcGZlLCBwZW5kaW5nT3BzKQogCQl7CiAJCQlpZiAocGZlLT50YWcuaGFuZGxlciA9 PSBmdGFnLT5oYW5kbGVyICYmCiAJCQkJc3luY3N3W2Z0YWctPmhhbmRsZXJdLnN5bmNfZmlsZXRh Z21hdGNoZXMoZnRhZywgJnBmZS0+dGFnKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFy Y2gvdHNfdHlwYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMK aW5kZXggYzJmM2I2MzI2NWQuLjFhNGIzMjhjNGNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90 c2VhcmNoL3RzX3R5cGFuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFu YWx5emUuYwpAQCAtMTQ5LDcgKzE0OSw2IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0 clN0YXRzICpzdGF0cywKIAogCS8qIFRoaXMgaXMgRCBmcm9tIHRoZSBMQyBhbGdvcml0aG0uICov CiAJSFRBQgkgICAqbGV4ZW1lc190YWI7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOwog CiAJLyogVGhpcyBpcyB0aGUgY3VycmVudCBidWNrZXQgbnVtYmVyIGZyb20gdGhlIExDIGFsZ29y aXRobSAqLwogCWludAkJCWJfY3VycmVudDsKQEAgLTI4OCw3ICsyODcsNiBAQCBjb21wdXRlX3Rz dmVjdG9yX3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAJCWludAkJCW5vbm51bGxfY250ID0g c2FtcGxlcm93cyAtIG51bGxfY250OwogCQlpbnQJCQlpOwogCQlUcmFja0l0ZW0gKipzb3J0X3Rh YmxlOwotCQlUcmFja0l0ZW0gICppdGVtOwogCQlpbnQJCQl0cmFja19sZW47CiAJCWludAkJCWN1 dG9mZl9mcmVxOwogCQlpbnQJCQltaW5mcmVxLApAQCAtMzE1LDEwICszMTMsOSBAQCBjb21wdXRl X3RzdmVjdG9yX3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAJCWkgPSBoYXNoX2dldF9udW1f ZW50cmllcyhsZXhlbWVzX3RhYik7CS8qIHN1cmVseSBlbm91Z2ggc3BhY2UgKi8KIAkJc29ydF90 YWJsZSA9IHBhbGxvY19hcnJheShUcmFja0l0ZW0gKiwgaSk7CiAKLQkJaGFzaF9zZXFfaW5pdCgm c2Nhbl9zdGF0dXMsIGxleGVtZXNfdGFiKTsKIAkJdHJhY2tfbGVuID0gMDsKIAkJbWF4ZnJlcSA9 IDA7Ci0JCXdoaWxlICgoaXRlbSA9IChUcmFja0l0ZW0gKikgaGFzaF9zZXFfc2VhcmNoKCZzY2Fu X3N0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChUcmFja0l0ZW0sIGl0ZW0sIGxleGVt ZXNfdGFiKQogCQl7CiAJCQlpZiAoaXRlbS0+ZnJlcXVlbmN5ID4gY3V0b2ZmX2ZyZXEpCiAJCQl7 CkBAIC00NjIsMTEgKzQ1OSw3IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRz ICpzdGF0cywKIHN0YXRpYyB2b2lkCiBwcnVuZV9sZXhlbWVzX2hhc2h0YWJsZShIVEFCICpsZXhl bWVzX3RhYiwgaW50IGJfY3VycmVudCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7 Ci0JVHJhY2tJdGVtICAqaXRlbTsKLQotCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCBsZXhl bWVzX3RhYik7Ci0Jd2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3NlcV9zZWFyY2go JnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJhY2tJdGVtLCBpdGVtLCBs ZXhlbWVzX3RhYikKIAl7CiAJCWlmIChpdGVtLT5mcmVxdWVuY3kgKyBpdGVtLT5kZWx0YSA8PSBi X2N1cnJlbnQpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRl eCBlNWFjOTU2ZGFmMC4uZTdiODM0YjI0MDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93 YWl0X2V2ZW50LmMKQEAgLTI5OSw4ICsyOTksNiBAQCBjaGFyCSAgKioKIEdldFdhaXRFdmVudEN1 c3RvbU5hbWVzKHVpbnQzMiBjbGFzc0lkLCBpbnQgKm53YWl0ZXZlbnRzKQogewogCWNoYXIJICAq KndhaXRldmVudG5hbWVzOwotCVdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lICpoZW50cnk7Ci0J SEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwogCWludAkJCWluZGV4OwogCWludAkJCWVsczsKIApA QCAtMzEzLDEwICszMTEsOCBAQCBHZXRXYWl0RXZlbnRDdXN0b21OYW1lcyh1aW50MzIgY2xhc3NJ ZCwgaW50ICpud2FpdGV2ZW50cykKIAl3YWl0ZXZlbnRuYW1lcyA9IHBhbGxvY19hcnJheShjaGFy ICosIGVscyk7CiAKIAkvKiBOb3cgc2NhbiB0aGUgaGFzaCB0YWJsZSB0byBjb3B5IHRoZSBkYXRh ICovCi0JaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIFdhaXRFdmVudEN1c3RvbUhhc2hCeU5hbWUp OwotCiAJaW5kZXggPSAwOwotCXdoaWxlICgoaGVudHJ5ID0gKFdhaXRFdmVudEN1c3RvbUVudHJ5 QnlOYW1lICopIGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCWZvcmVhY2hf aGFzaChXYWl0RXZlbnRDdXN0b21FbnRyeUJ5TmFtZSwgaGVudHJ5LCBXYWl0RXZlbnRDdXN0b21I YXNoQnlOYW1lKQogCXsKIAkJaWYgKChoZW50cnktPndhaXRfZXZlbnRfaW5mbyAmIFdBSVRfRVZF TlRfQ0xBU1NfTUFTSykgIT0gY2xhc3NJZCkKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9hcnJheV90eXBhbmFseXplLmMKaW5kZXggYmRjN2UyMjM3ZjYuLjI4MWY2ODAwMzEwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMKQEAgLTIyMyw3ICsyMjMs NiBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRy RmV0Y2hGdW5jIGZldGNoZnVuYywKIAogCS8qIFRoaXMgaXMgRCBmcm9tIHRoZSBMQyBhbGdvcml0 aG0uICovCiAJSFRBQgkgICAqZWxlbWVudHNfdGFiOwotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0 YXR1czsKIAogCS8qIFRoaXMgaXMgdGhlIGN1cnJlbnQgYnVja2V0IG51bWJlciBmcm9tIHRoZSBM QyBhbGdvcml0aG0gKi8KIAlpbnQJCQliX2N1cnJlbnQ7CkBAIC0yMzIsMTAgKzIzMSw4IEBAIGNv bXB1dGVfYXJyYXlfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywgQW5hbHl6ZUF0dHJGZXRjaEZ1 bmMgZmV0Y2hmdW5jLAogCWludAkJCWJ1Y2tldF93aWR0aDsKIAlpbnQJCQlhcnJheV9ubzsKIAlp bnQ2NAkJZWxlbWVudF9ubzsKLQlUcmFja0l0ZW0gICppdGVtOwogCWludAkJCXNsb3RfaWR4Owog CUhUQUIJICAgKmNvdW50X3RhYjsKLQlERUNvdW50SXRlbSAqY291bnRfaXRlbTsKIAogCWV4dHJh X2RhdGEgPSAoQXJyYXlBbmFseXplRXh0cmFEYXRhICopIHN0YXRzLT5leHRyYV9kYXRhOwogCkBA IC0zMDAsNiArMjk3LDcgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRz LCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCWludDY0CQlwcmV2X2VsZW1lbnRf bm8gPSBlbGVtZW50X25vOwogCQlpbnQJCQlkaXN0aW5jdF9jb3VudDsKIAkJYm9vbAkJY291bnRf aXRlbV9mb3VuZDsKKwkJREVDb3VudEl0ZW0gKmNvdW50X2l0ZW07CiAKIAkJdmFjdXVtX2RlbGF5 X3BvaW50KHRydWUpOwogCkBAIC0zMzgsNiArMzM2LDcgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhW YWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCXsK IAkJCURhdHVtCQllbGVtX3ZhbHVlOwogCQkJYm9vbAkJZm91bmQ7CisJCQlUcmFja0l0ZW0gICpp dGVtOwogCiAJCQkvKiBObyBudWxsIGVsZW1lbnQgcHJvY2Vzc2luZyBvdGhlciB0aGFuIGZsYWcg c2V0dGluZyBoZXJlICovCiAJCQlpZiAoZWxlbV9udWxsc1tqXSkKQEAgLTQ1OCwxMCArNDU3LDkg QEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZl dGNoRnVuYyBmZXRjaGZ1bmMsCiAJCWkgPSBoYXNoX2dldF9udW1fZW50cmllcyhlbGVtZW50c190 YWIpOyAvKiBzdXJlbHkgZW5vdWdoIHNwYWNlICovCiAJCXNvcnRfdGFibGUgPSBwYWxsb2NfYXJy YXkoVHJhY2tJdGVtICosIGkpOwogCi0JCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCBlbGVt ZW50c190YWIpOwogCQl0cmFja19sZW4gPSAwOwogCQltYXhmcmVxID0gMDsKLQkJd2hpbGUgKChp dGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVM TCkKKwkJZm9yZWFjaF9oYXNoKFRyYWNrSXRlbSwgaXRlbSwgZWxlbWVudHNfdGFiKQogCQl7CiAJ CQlpZiAoaXRlbS0+ZnJlcXVlbmN5ID4gY3V0b2ZmX2ZyZXEpCiAJCQl7CkBAIC01OTQsOSArNTky LDggQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0 ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCQkgKiBpbmNyZWFzaW5nIGNvdW50IG9yZGVyLgogCQkJ ICovCiAJCQlzb3J0ZWRfY291bnRfaXRlbXMgPSBwYWxsb2NfYXJyYXkoREVDb3VudEl0ZW0gKiwg Y291bnRfaXRlbXNfY291bnQpOwotCQkJaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIGNvdW50 X3RhYik7CiAJCQlqID0gMDsKLQkJCXdoaWxlICgoY291bnRfaXRlbSA9IChERUNvdW50SXRlbSAq KSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwkJCWZvcmVhY2hfaGFz aChERUNvdW50SXRlbSwgY291bnRfaXRlbSwgY291bnRfdGFiKQogCQkJewogCQkJCXNvcnRlZF9j b3VudF9pdGVtc1tqKytdID0gY291bnRfaXRlbTsKIAkJCX0KQEAgLTY4MywxMSArNjgwLDcgQEAg Y29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNo RnVuYyBmZXRjaGZ1bmMsCiBzdGF0aWMgdm9pZAogcHJ1bmVfZWxlbWVudF9oYXNodGFibGUoSFRB QiAqZWxlbWVudHNfdGFiLCBpbnQgYl9jdXJyZW50KQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2Fu X3N0YXR1czsKLQlUcmFja0l0ZW0gICppdGVtOwotCi0JaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0 dXMsIGVsZW1lbnRzX3RhYik7Ci0Jd2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3Nl cV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJhY2tJdGVt LCBpdGVtLCBlbGVtZW50c190YWIpCiAJewogCQlpZiAoaXRlbS0+ZnJlcXVlbmN5ICsgaXRlbS0+ ZGVsdGEgPD0gYl9jdXJyZW50KQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRl eCBjMTViMTI3YmRiZi4uZjc3M2VhZmZhNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUu YwpAQCAtMjk4NSw4ICsyOTg1LDYgQEAgUmVsYXRpb25DYWNoZUludmFsaWRhdGVFbnRyeShPaWQg cmVsYXRpb25JZCkKIHZvaWQKIFJlbGF0aW9uQ2FjaGVJbnZhbGlkYXRlKGJvb2wgZGVidWdfZGlz Y2FyZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVFbnQgKmlkaGVu dHJ5OwogCVJlbGF0aW9uCXJlbGF0aW9uOwogCUxpc3QJICAgKnJlYnVpbGRGaXJzdExpc3QgPSBO SUw7CiAJTGlzdAkgICAqcmVidWlsZExpc3QgPSBOSUw7CkBAIC0yOTk5LDkgKzI5OTcsNyBAQCBS ZWxhdGlvbkNhY2hlSW52YWxpZGF0ZShib29sIGRlYnVnX2Rpc2NhcmQpCiAJUmVsYXRpb25NYXBJ bnZhbGlkYXRlQWxsKCk7CiAKIAkvKiBQaGFzZSAxICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVz LCBSZWxhdGlvbklkQ2FjaGUpOwotCi0Jd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50 ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVs SWRDYWNoZUVudCwgaWRoZW50cnksIFJlbGF0aW9uSWRDYWNoZSkKIAl7CiAJCXJlbGF0aW9uID0g aWRoZW50cnktPnJlbGRlc2M7CiAKQEAgLTMxNDYsMTIgKzMxNDIsOSBAQCBBc3NlcnRQZW5kaW5n U3luY0NvbnNpc3RlbmN5KFJlbGF0aW9uIHJlbGF0aW9uKQogdm9pZAogQXNzZXJ0UGVuZGluZ1N5 bmNzX1JlbGF0aW9uQ2FjaGUodm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUxP Q0FMTE9DSyAgKmxvY2FsbG9jazsKIAlSZWxhdGlvbiAgICpyZWxzOwogCWludAkJCW1heHJlbHM7 CiAJaW50CQkJbnJlbHM7Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJaW50CQkJaTsKIAog CS8qCkBAIC0zMTY1LDggKzMxNTgsNyBAQCBBc3NlcnRQZW5kaW5nU3luY3NfUmVsYXRpb25DYWNo ZSh2b2lkKQogCW1heHJlbHMgPSAxOwogCXJlbHMgPSBwYWxsb2MobWF4cmVscyAqIHNpemVvZigq cmVscykpOwogCW5yZWxzID0gMDsKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIEdldExvY2tNZXRo b2RMb2NhbEhhc2goKSk7Ci0Jd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hf c2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBs b2NhbGxvY2ssIEdldExvY2tNZXRob2RMb2NhbEhhc2goKSkKIAl7CiAJCU9pZAkJCXJlbGlkOwog CQlSZWxhdGlvbglyOwpAQCAtMzE4OCw4ICszMTgwLDcgQEAgQXNzZXJ0UGVuZGluZ1N5bmNzX1Jl bGF0aW9uQ2FjaGUodm9pZCkKIAkJcmVsc1tucmVscysrXSA9IHI7CiAJfQogCi0JaGFzaF9zZXFf aW5pdCgmc3RhdHVzLCBSZWxhdGlvbklkQ2FjaGUpOwotCXdoaWxlICgoaWRoZW50cnkgPSAoUmVs SWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFJlbElkQ2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJCUFzc2Vy dFBlbmRpbmdTeW5jQ29uc2lzdGVuY3koaWRoZW50cnktPnJlbGRlc2MpOwogCiAJZm9yIChpID0g MDsgaSA8IG5yZWxzOyBpKyspCkBAIC0zMjE3LDggKzMyMDgsNiBAQCBBc3NlcnRQZW5kaW5nU3lu Y3NfUmVsYXRpb25DYWNoZSh2b2lkKQogdm9pZAogQXRFT1hhY3RfUmVsYXRpb25DYWNoZShib29s IGlzQ29tbWl0KQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsSWRDYWNoZUVudCAq aWRoZW50cnk7CiAJaW50CQkJaTsKIAogCS8qCkBAIC0zMjQxLDggKzMyMzAsNyBAQCBBdEVPWGFj dF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQpCiAJICovCiAJaWYgKGVveGFjdF9saXN0X292 ZXJmbG93ZWQpCiAJewotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0aW9uSWRDYWNoZSk7 Ci0JCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChSZWxJZENhY2hlRW50LCBpZGhlbnRy eSwgUmVsYXRpb25JZENhY2hlKQogCQl7CiAJCQlBdEVPWGFjdF9jbGVhbnVwKGlkaGVudHJ5LT5y ZWxkZXNjLCBpc0NvbW1pdCk7CiAJCX0KQEAgLTMyNTEsMTAgKzMyMzksMTEgQEAgQXRFT1hhY3Rf UmVsYXRpb25DYWNoZShib29sIGlzQ29tbWl0KQogCXsKIAkJZm9yIChpID0gMDsgaSA8IGVveGFj dF9saXN0X2xlbjsgaSsrKQogCQl7Ci0JCQlpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhh c2hfc2VhcmNoKFJlbGF0aW9uSWRDYWNoZSwKLQkJCQkJCQkJCQkJCQkgJmVveGFjdF9saXN0W2ld LAotCQkJCQkJCQkJCQkJCSBIQVNIX0ZJTkQsCi0JCQkJCQkJCQkJCQkJIE5VTEwpOworCQkJUmVs SWRDYWNoZUVudCAqaWRoZW50cnkgPSBoYXNoX3NlYXJjaChSZWxhdGlvbklkQ2FjaGUsCisJCQkJ CQkJCQkJCQkgICZlb3hhY3RfbGlzdFtpXSwKKwkJCQkJCQkJCQkJCSAgSEFTSF9GSU5ELAorCQkJ CQkJCQkJCQkJICBOVUxMKTsKKwogCQkJaWYgKGlkaGVudHJ5ICE9IE5VTEwpCiAJCQkJQXRFT1hh Y3RfY2xlYW51cChpZGhlbnRyeS0+cmVsZGVzYywgaXNDb21taXQpOwogCQl9CkBAIC0zMzcwLDgg KzMzNTksNiBAQCB2b2lkCiBBdEVPU3ViWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQs IFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIAkJCQkJCSAgU3ViVHJhbnNhY3Rpb25JZCBwYXJl bnRTdWJpZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVFbnQgKmlk aGVudHJ5OwogCWludAkJCWk7CiAKIAkvKgpAQCAtMzM4OSw4ICszMzc2LDcgQEAgQXRFT1N1Ylhh Y3RfUmVsYXRpb25DYWNoZShib29sIGlzQ29tbWl0LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQs CiAJICovCiAJaWYgKGVveGFjdF9saXN0X292ZXJmbG93ZWQpCiAJewotCQloYXNoX3NlcV9pbml0 KCZzdGF0dXMsIFJlbGF0aW9uSWRDYWNoZSk7Ci0JCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRD YWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hf aGFzaChSZWxJZENhY2hlRW50LCBpZGhlbnRyeSwgUmVsYXRpb25JZENhY2hlKQogCQl7CiAJCQlB dEVPU3ViWGFjdF9jbGVhbnVwKGlkaGVudHJ5LT5yZWxkZXNjLCBpc0NvbW1pdCwKIAkJCQkJCQkJ bXlTdWJpZCwgcGFyZW50U3ViaWQpOwpAQCAtMzQwMCw2ICszMzg2LDggQEAgQXRFT1N1YlhhY3Rf UmVsYXRpb25DYWNoZShib29sIGlzQ29tbWl0LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJ ewogCQlmb3IgKGkgPSAwOyBpIDwgZW94YWN0X2xpc3RfbGVuOyBpKyspCiAJCXsKKwkJCVJlbElk Q2FjaGVFbnQgKmlkaGVudHJ5OworCiAJCQlpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhh c2hfc2VhcmNoKFJlbGF0aW9uSWRDYWNoZSwKIAkJCQkJCQkJCQkJCQkgJmVveGFjdF9saXN0W2ld LAogCQkJCQkJCQkJCQkJCSBIQVNIX0ZJTkQsCkBAIC00MDk2LDggKzQwODQsNiBAQCBSZWxhdGlv bkNhY2hlSW5pdGlhbGl6ZVBoYXNlMih2b2lkKQogdm9pZAogUmVsYXRpb25DYWNoZUluaXRpYWxp emVQaGFzZTModm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVF bnQgKmlkaGVudHJ5OwogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCWJvb2wJCW5lZWROZXdDYWNo ZUZpbGUgPSAhY3JpdGljYWxTaGFyZWRSZWxjYWNoZXNCdWlsdDsKIApAQCAtNDIzNCw5ICs0MjIw LDcgQEAgUmVsYXRpb25DYWNoZUluaXRpYWxpemVQaGFzZTModm9pZCkKIAkgKiBUaGlzIGlzIHRo ZW9yZXRpY2FsbHkgTyhOXjIpLCBidXQgdGhlIG51bWJlciBvZiBlbnRyaWVzIHRoYXQgYWN0dWFs bHkKIAkgKiBuZWVkIHRvIGJlIGZpeGVkIGlzIHNtYWxsIGVub3VnaCB0aGF0IGl0IGRvZXNuJ3Qg bWF0dGVyLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUmVsYXRpb25JZENhY2hlKTsK LQotCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlbElkQ2FjaGVFbnQsIGlkaGVudHJ5 LCBSZWxhdGlvbklkQ2FjaGUpCiAJewogCQlSZWxhdGlvbglyZWxhdGlvbiA9IGlkaGVudHJ5LT5y ZWxkZXNjOwogCQlib29sCQlyZXN0YXJ0ID0gZmFsc2U7CkBAIC00MzQ2LDEwICs0MzMwLDcgQEAg UmVsYXRpb25DYWNoZUluaXRpYWxpemVQaGFzZTModm9pZCkKIAogCQkvKiBOb3csIHJlc3RhcnQg dGhlIGhhc2h0YWJsZSBzY2FuIGlmIG5lZWRlZCAqLwogCQlpZiAocmVzdGFydCkKLQkJewotCQkJ aGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKLQkJCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUmVsYXRp b25JZENhY2hlKTsKLQkJfQorCQkJZm9yZWFjaF9oYXNoX3Jlc3RhcnQoaWRoZW50cnksIFJlbGF0 aW9uSWRDYWNoZSk7CiAJfQogCiAJLyoKQEAgLTY1NzgsOCArNjU1OSw2IEBAIHdyaXRlX3JlbGNh Y2hlX2luaXRfZmlsZShib29sIHNoYXJlZCkKIAljaGFyCQl0ZW1wZmlsZW5hbWVbTUFYUEdQQVRI XTsKIAljaGFyCQlmaW5hbGZpbGVuYW1lW01BWFBHUEFUSF07CiAJaW50CQkJbWFnaWM7Ci0JSEFT SF9TRVFfU1RBVFVTIHN0YXR1czsKLQlSZWxJZENhY2hlRW50ICppZGhlbnRyeTsKIAlpbnQJCQlp OwogCiAJLyoKQEAgLTY2MzksOSArNjYxOCw3IEBAIHdyaXRlX3JlbGNhY2hlX2luaXRfZmlsZShi b29sIHNoYXJlZCkKIAkvKgogCSAqIFdyaXRlIGFsbCB0aGUgYXBwcm9wcmlhdGUgcmVsZGVzY3Mg KGluIG5vIHBhcnRpY3VsYXIgb3JkZXIpLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywg UmVsYXRpb25JZENhY2hlKTsKLQotCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRDYWNoZUVudCAq KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlbElk Q2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJewogCQlSZWxhdGlvbglyZWwg PSBpZGhlbnRyeS0+cmVsZGVzYzsKIAkJRm9ybV9wZ19jbGFzcyByZWxmb3JtID0gcmVsLT5yZF9y ZWw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFw LmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFwLmMKaW5kZXggMDli MDVkZWM5ZDAuLjAwZGY3ZGI0ODExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxmaWxlbnVtYmVybWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmls ZW51bWJlcm1hcC5jCkBAIC01MSwxNCArNTEsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QKIHN0YXRpYyB2 b2lkCiBSZWxmaWxlbnVtYmVyTWFwSW52YWxpZGF0ZUNhbGxiYWNrKERhdHVtIGFyZywgT2lkIHJl bGlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsZmlsZW51bWJlck1hcEVudHJ5 ICplbnRyeTsKLQogCS8qIGNhbGxiYWNrIG9ubHkgZ2V0cyByZWdpc3RlcmVkIGFmdGVyIGNyZWF0 aW5nIHRoZSBoYXNoICovCiAJQXNzZXJ0KFJlbGZpbGVudW1iZXJNYXBIYXNoICE9IE5VTEwpOwog Ci0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxmaWxlbnVtYmVyTWFwSGFzaCk7Ci0Jd2hpbGUg KChlbnRyeSA9IChSZWxmaWxlbnVtYmVyTWFwRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0 dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZWxmaWxlbnVtYmVyTWFwRW50cnksIGVudHJ5 LCBSZWxmaWxlbnVtYmVyTWFwSGFzaCkKIAl7CiAJCS8qCiAJCSAqIElmIHJlbGlkIGlzIEludmFs aWRPaWQsIHNpZ25hbGluZyBhIGNvbXBsZXRlIHJlc2V0LCB3ZSBtdXN0IHJlbW92ZQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3NwY2NhY2hlLmMKaW5kZXggYmYwMDdkNjlhZDQuLjQ0ZTE5NDc2YzE2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMKQEAgLTU1LDExICs1NSw3IEBAIHR5cGVkZWYgc3Ry dWN0CiBzdGF0aWMgdm9pZAogSW52YWxpZGF0ZVRhYmxlU3BhY2VDYWNoZUNhbGxiYWNrKERhdHVt IGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKLQlUYWJsZVNwYWNlQ2FjaGVFbnRyeSAqc3BjOwotCi0JaGFzaF9zZXFfaW5pdCgm c3RhdHVzLCBUYWJsZVNwYWNlQ2FjaGVIYXNoKTsKLQl3aGlsZSAoKHNwYyA9IChUYWJsZVNwYWNl Q2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFRhYmxlU3BhY2VDYWNoZUVudHJ5LCBzcGMsIFRhYmxlU3BhY2VDYWNoZUhhc2gpCiAJ ewogCQlpZiAoc3BjLT5vcHRzKQogCQkJcGZyZWUoc3BjLT5vcHRzKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS90c19jYWNoZS5jCmluZGV4IGU5YWU0YTVmMDkzLi4wMTAxYWFhNjQxMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHNfY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS90c19jYWNoZS5jCkBAIC05NCwxMSArOTQsOCBAQCBzdGF0aWMgdm9pZAogSW52YWxp ZGF0ZVRTQ2FjaGVDYWxsQmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZh bHVlKQogewogCUhUQUIJICAgKmhhc2ggPSAoSFRBQiAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKTsK LQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVRTQW55Q2FjaGVFbnRyeSAqZW50cnk7CiAKLQlo YXNoX3NlcV9pbml0KCZzdGF0dXMsIGhhc2gpOwotCXdoaWxlICgoZW50cnkgPSAoVFNBbnlDYWNo ZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hh c2goVFNBbnlDYWNoZUVudHJ5LCBlbnRyeSwgaGFzaCkKIAkJZW50cnktPmlzdmFsaWQgPSBmYWxz ZTsKIAogCS8qIEFsc28gaW52YWxpZGF0ZSB0aGUgY3VycmVudC1jb25maWcgY2FjaGUgaWYgaXQn cyBwZ190c19jb25maWcgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5 cGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCmluZGV4IDU1ZmY5 NjllMDlmLi5hYTUyOTlhOGExYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv dHlwY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC0y NDY0LDE1ICsyNDY0LDEyIEBAIFR5cGVDYWNoZVJlbENhbGxiYWNrKERhdHVtIGFyZywgT2lkIHJl bGlkKQogCX0KIAllbHNlCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCiAJCS8qCiAJ CSAqIFJlbGlkIGlzIGludmFsaWQuIEJ5IGNvbnZlbnRpb24sIHdlIG5lZWQgdG8gcmVzZXQgYWxs IGNvbXBvc2l0ZQogCQkgKiB0eXBlcyBpbiBjYWNoZS4gQWxzbywgd2Ugc2hvdWxkIHJlc2V0IGZs YWdzIGZvciBkb21haW4gdHlwZXMsIGFuZAogCQkgKiB3ZSBsb29wIG92ZXIgYWxsIGVudHJpZXMg aW4gaGFzaCwgc28sIGRvIGl0IGluIGEgc2luZ2xlIHNjYW4uCiAJCSAqLwotCQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIFR5cGVDYWNoZUhhc2gpOwotCQl3aGlsZSAoKHR5cGVudHJ5ID0gKFR5cGVD YWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFj aF9oYXNoKFR5cGVDYWNoZUVudHJ5LCB0eXBlbnRyeSwgVHlwZUNhY2hlSGFzaCkKIAkJewogCQkJ aWYgKHR5cGVudHJ5LT50eXB0eXBlID09IFRZUFRZUEVfQ09NUE9TSVRFKQogCQkJewpAQCAtMjU2 MiwxMiArMjU1OSw4IEBAIFR5cGVDYWNoZVR5cENhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hl aWQsIHVpbnQzMiBoYXNodmFsdWUpCiBzdGF0aWMgdm9pZAogVHlwZUNhY2hlT3BjQ2FsbGJhY2so RGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKLQlIQVNIX1NFUV9T VEFUVVMgc3RhdHVzOwotCVR5cGVDYWNoZUVudHJ5ICp0eXBlbnRyeTsKLQogCS8qIFR5cGVDYWNo ZUhhc2ggbXVzdCBleGlzdCwgZWxzZSB0aGlzIGNhbGxiYWNrIHdvdWxkbid0IGJlIHJlZ2lzdGVy ZWQgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFR5cGVDYWNoZUhhc2gpOwotCXdoaWxlICgo dHlwZW50cnkgPSAoVHlwZUNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAh PSBOVUxMKQorCWZvcmVhY2hfaGFzaChUeXBlQ2FjaGVFbnRyeSwgdHlwZW50cnksIFR5cGVDYWNo ZUhhc2gpCiAJewogCQlib29sCQloYWRPcGNsYXNzID0gKHR5cGVudHJ5LT5mbGFncyAmIFRDRkxB R1NfT1BFUkFUT1JfRkxBR1MpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCA2MThkMDEwMGQzOC4u NjZlMzEzZDUzMWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtMjg4LDggKzI4OCw2IEBAIFByb2Nl c3NDb25maWdGaWxlSW50ZXJuYWwoR3VjQ29udGV4dCBjb250ZXh0LCBib29sIGFwcGx5U2V0dGlu Z3MsIGludCBlbGV2ZWwpCiAJY29uc3QgY2hhciAqQ29uZkZpbGVXaXRoRXJyb3I7CiAJQ29uZmln VmFyaWFibGUgKmhlYWQsCiAJCQkgICAqdGFpbDsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwot CUdVQ0hhc2hFbnRyeSAqaGVudHJ5OwogCiAJLyogUGFyc2UgdGhlIG1haW4gY29uZmlnIGZpbGUg aW50byBhIGxpc3Qgb2Ygb3B0aW9uIG5hbWVzIGFuZCB2YWx1ZXMgKi8KIAlDb25mRmlsZVdpdGhF cnJvciA9IENvbmZpZ0ZpbGVOYW1lOwpAQCAtMzY0LDggKzM2Miw3IEBAIFByb2Nlc3NDb25maWdG aWxlSW50ZXJuYWwoR3VjQ29udGV4dCBjb250ZXh0LCBib29sIGFwcGx5U2V0dGluZ3MsIGludCBl bGV2ZWwpCiAJICogbmVlZCB0aGlzIHNvIHRoYXQgd2UgY2FuIHRlbGwgYmVsb3cgd2hpY2ggb25l cyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tCiAJICogdGhlIGZpbGUgc2luY2Ugd2UgbGFzdCBwcm9j ZXNzZWQgaXQuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndWNfaGFzaHRhYik7Ci0J d2hpbGUgKChoZW50cnkgPSAoR1VDSGFzaEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVz KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goR1VDSGFzaEVudHJ5LCBoZW50cnksIGd1Y19oYXNo dGFiKQogCXsKIAkJc3RydWN0IGNvbmZpZ19nZW5lcmljICpnY29uZiA9IGhlbnRyeS0+Z3VjdmFy OwogCkBAIC00NDksOCArNDQ2LDcgQEAgUHJvY2Vzc0NvbmZpZ0ZpbGVJbnRlcm5hbChHdWNDb250 ZXh0IGNvbnRleHQsIGJvb2wgYXBwbHlTZXR0aW5ncywgaW50IGVsZXZlbCkKIAkgKiBib290LXRp bWUgZGVmYXVsdHMuICBJZiBzdWNoIGEgdmFyaWFibGUgY2FuJ3QgYmUgY2hhbmdlZCBhZnRlciBz dGFydHVwLAogCSAqIHJlcG9ydCB0aGF0IGFuZCBjb250aW51ZS4KIAkgKi8KLQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50 cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChH VUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewogCQlzdHJ1Y3QgY29uZmlnX2dl bmVyaWMgKmdjb25mID0gaGVudHJ5LT5ndWN2YXI7CiAKQEAgLTgzOSw4ICs4MzUsNiBAQCBzdHJ1 Y3QgY29uZmlnX2dlbmVyaWMgKioKIGdldF9ndWNfdmFyaWFibGVzKGludCAqbnVtX3ZhcnMpCiB7 CiAJc3RydWN0IGNvbmZpZ19nZW5lcmljICoqcmVzdWx0OwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7Ci0JR1VDSGFzaEVudHJ5ICpoZW50cnk7CiAJaW50CQkJaTsKIAogCSpudW1fdmFycyA9IGhh c2hfZ2V0X251bV9lbnRyaWVzKGd1Y19oYXNodGFiKTsKQEAgLTg0OCw4ICs4NDIsNyBAQCBnZXRf Z3VjX3ZhcmlhYmxlcyhpbnQgKm51bV92YXJzKQogCiAJLyogRXh0cmFjdCBwb2ludGVycyBmcm9t IHRoZSBoYXNoIHRhYmxlICovCiAJaSA9IDA7Ci0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndWNf aGFzaHRhYik7Ci0Jd2hpbGUgKChoZW50cnkgPSAoR1VDSGFzaEVudHJ5ICopIGhhc2hfc2VxX3Nl YXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goR1VDSGFzaEVudHJ5LCBoZW50 cnksIGd1Y19oYXNodGFiKQogCQlyZXN1bHRbaSsrXSA9IGhlbnRyeS0+Z3VjdmFyOwogCUFzc2Vy dChpID09ICpudW1fdmFycyk7CiAKQEAgLTE0MDAsOSArMTM5Myw2IEBAIGNoZWNrX0dVQ19pbml0 KGNvbnN0IHN0cnVjdCBjb25maWdfZ2VuZXJpYyAqZ2NvbmYpCiB2b2lkCiBJbml0aWFsaXplR1VD T3B0aW9ucyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JR1VDSGFzaEVudHJ5 ICpoZW50cnk7Ci0KIAkvKgogCSAqIEJlZm9yZSBsb2dfbGluZV9wcmVmaXggY291bGQgcG9zc2li bHkgcmVjZWl2ZSBhIG5vbmVtcHR5IHNldHRpbmcsIG1ha2UKIAkgKiBzdXJlIHRoYXQgdGltZXpv bmUgcHJvY2Vzc2luZyBpcyBtaW5pbWFsbHkgYWxpdmUgKHNlZSBlbG9nLmMpLgpAQCAtMTQxOCw4 ICsxNDA4LDcgQEAgSW5pdGlhbGl6ZUdVQ09wdGlvbnModm9pZCkKIAkgKiBMb2FkIGFsbCB2YXJp YWJsZXMgd2l0aCB0aGVpciBjb21waWxlZC1pbiBkZWZhdWx0cywgYW5kIGluaXRpYWxpemUKIAkg KiBzdGF0dXMgZmllbGRzIGFzIG5lZWRlZC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMs IGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50cnkgKikgaGFzaF9z ZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChHVUNIYXNoRW50cnks IGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewogCQkvKiBDaGVjayBtYXBwaW5nIGJldHdlZW4gaW5p dGlhbCBhbmQgZGVmYXVsdCB2YWx1ZSAqLwogCQlBc3NlcnQoY2hlY2tfR1VDX2luaXQoaGVudHJ5 LT5ndWN2YXIpKTsKQEAgLTI0MTQsOSArMjQwMyw2IEBAIEF0RU9YYWN0X0dVQyhib29sIGlzQ29t bWl0LCBpbnQgbmVzdExldmVsKQogdm9pZAogQmVnaW5SZXBvcnRpbmdHVUNPcHRpb25zKHZvaWQp CiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlHVUNIYXNoRW50cnkgKmhlbnRyeTsKLQog CS8qCiAJICogRG9uJ3QgZG8gYW55dGhpbmcgdW5sZXNzIHRhbGtpbmcgdG8gYW4gaW50ZXJhY3Rp dmUgZnJvbnRlbmQuCiAJICovCkBAIC0yNDM4LDggKzI0MjQsNyBAQCBCZWdpblJlcG9ydGluZ0dV Q09wdGlvbnModm9pZCkKIAkJCQkJCVBHQ19JTlRFUk5BTCwgUEdDX1NfT1ZFUlJJREUpOwogCiAJ LyogVHJhbnNtaXQgaW5pdGlhbCB2YWx1ZXMgb2YgaW50ZXJlc3RpbmcgdmFyaWFibGVzICovCi0J aGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndWNfaGFzaHRhYik7Ci0Jd2hpbGUgKChoZW50cnkgPSAo R1VDSGFzaEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3Jl YWNoX2hhc2goR1VDSGFzaEVudHJ5LCBoZW50cnksIGd1Y19oYXNodGFiKQogCXsKIAkJc3RydWN0 IGNvbmZpZ19nZW5lcmljICpjb25mID0gaGVudHJ5LT5ndWN2YXI7CiAKQEAgLTUxNDIsMTYgKzUx MjcsMTMgQEAgdm9pZAogTWFya0dVQ1ByZWZpeFJlc2VydmVkKGNvbnN0IGNoYXIgKmNsYXNzTmFt ZSkKIHsKIAlpbnQJCQljbGFzc0xlbiA9IHN0cmxlbihjbGFzc05hbWUpOwotCUhBU0hfU0VRX1NU QVRVUyBzdGF0dXM7Ci0JR1VDSGFzaEVudHJ5ICpoZW50cnk7CiAJTWVtb3J5Q29udGV4dCBvbGRj b250ZXh0OwogCiAJLyoKIAkgKiBDaGVjayBmb3IgZXhpc3RpbmcgcGxhY2Vob2xkZXJzLiAgV2Ug bXVzdCBhY3R1YWxseSByZW1vdmUgaW52YWxpZAogCSAqIHBsYWNlaG9sZGVycywgZWxzZSBmdXR1 cmUgcGFyYWxsZWwgd29ya2VyIHN0YXJ0dXBzIHdpbGwgZmFpbC4KIAkgKi8KLQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50 cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChH VUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewogCQlzdHJ1Y3QgY29uZmlnX2dl bmVyaWMgKnZhciA9IGhlbnRyeS0+Z3VjdmFyOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0u YwppbmRleCAwYTEwODJmNDg0NS4uYTMxZjVlMGU2Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0 YWxtZW0uYwpAQCAtNjAyLDE0ICs2MDIsMTAgQEAgUG9ydGFsRHJvcChQb3J0YWwgcG9ydGFsLCBi b29sIGlzVG9wQ29tbWl0KQogdm9pZAogUG9ydGFsSGFzaFRhYmxlRGVsZXRlQWxsKHZvaWQpCiB7 Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KIAlp ZiAoUG9ydGFsSGFzaFRhYmxlID09IE5VTEwpCiAJCXJldHVybjsKIAotCWhhc2hfc2VxX2luaXQo JnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQl3aGlsZSAoKGhlbnRyeSA9IGhhc2hfc2VxX3Nl YXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVudCwgaGVu dHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRyeS0+cG9y dGFsOwogCkBAIC02MjAsOCArNjE2LDcgQEAgUG9ydGFsSGFzaFRhYmxlRGVsZXRlQWxsKHZvaWQp CiAJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CiAKIAkJLyogUmVzdGFydCB0aGUgaXRlcmF0 aW9uIGluIGNhc2UgdGhhdCBsZWQgdG8gb3RoZXIgZHJvcHMgKi8KLQkJaGFzaF9zZXFfdGVybSgm c3RhdHVzKTsKLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOworCQlm b3JlYWNoX2hhc2hfcmVzdGFydChoZW50cnksIFBvcnRhbEhhc2hUYWJsZSk7CiAJfQogfQogCkBA IC02NzMsMTIgKzY2OCw4IEBAIGJvb2wKIFByZUNvbW1pdF9Qb3J0YWxzKGJvb2wgaXNQcmVwYXJl KQogewogCWJvb2wJCXJlc3VsdCA9IGZhbHNlOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0J UG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxI YXNoVGFibGUpOwogCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3Nl cV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQs IGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnkt PnBvcnRhbDsKIApAQCAtNzYwLDggKzc1MSw3IEBAIFByZUNvbW1pdF9Qb3J0YWxzKGJvb2wgaXNQ cmVwYXJlKQogCQkgKiBpdGVyYXRpb24sIGJlY2F1c2Ugd2UgY291bGQgaGF2ZSBpbnZva2VkIHVz ZXItZGVmaW5lZCBjb2RlIHRoYXQKIAkJICogY2F1c2VkIGEgZHJvcCBvZiB0aGUgbmV4dCBwb3J0 YWwgaW4gdGhlIGhhc2ggY2hhaW4uCiAJCSAqLwotCQloYXNoX3NlcV90ZXJtKCZzdGF0dXMpOwot CQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJsZSk7CisJCWZvcmVhY2hfaGFz aF9yZXN0YXJ0KGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKTsKIAl9CiAKIAlyZXR1cm4gcmVzdWx0 OwpAQCAtNzc2LDEyICs3NjYsNyBAQCBQcmVDb21taXRfUG9ydGFscyhib29sIGlzUHJlcGFyZSkK IHZvaWQKIEF0QWJvcnRfUG9ydGFscyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0 YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hF bnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50 cnktPnBvcnRhbDsKIApAQCAtODU0LDEyICs4MzksNyBAQCBBdEFib3J0X1BvcnRhbHModm9pZCkK IHZvaWQKIEF0Q2xlYW51cF9Qb3J0YWxzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1 czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBv cnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFz aEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhl bnRyeS0+cG9ydGFsOwogCkBAIC05MTMsMTIgKzg5Myw3IEBAIEF0Q2xlYW51cF9Qb3J0YWxzKHZv aWQpCiB2b2lkCiBQb3J0YWxFcnJvckNsZWFudXAodm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMg c3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQg KikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0 YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFs ID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTk0MiwxMiArOTE3LDcgQEAgQXRTdWJDb21taXRfUG9y dGFscyhTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJCQkJCWludCBwYXJlbnRMZXZlbCwKIAkJ CQkJUmVzb3VyY2VPd25lciBwYXJlbnRYYWN0T3duZXIpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0 YXR1czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMs IFBvcnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICop IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFs SGFzaEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9 IGhlbnRyeS0+cG9ydGFsOwogCkBAIC05NzgsMTIgKzk0OCw3IEBAIEF0U3ViQWJvcnRfUG9ydGFs cyhTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJCQkJICAgUmVzb3VyY2VPd25lciBteVhhY3RP d25lciwKIAkJCQkgICBSZXNvdXJjZU93bmVyIHBhcmVudFhhY3RPd25lcikKIHsKLQlIQVNIX1NF UV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2lu aXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRh bEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hf aGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRh bAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTEwODgsMTIgKzEwNTMsNyBAQCBBdFN1 YkFib3J0X1BvcnRhbHMoU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogdm9pZAogQXRTdWJDbGVh bnVwX1BvcnRhbHMoU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkKQogewotCUhBU0hfU0VRX1NUQVRV UyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3Rh dHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVu dCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBv cnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0 YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtMTEyOCw4ICsxMDg4LDYgQEAgRGF0dW0KIHBnX2N1 cnNvcihQR19GVU5DVElPTl9BUkdTKQogewogCVJldHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1 cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKLQlIQVNIX1NFUV9TVEFUVVMgaGFzaF9z ZXE7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwogCiAJLyoKIAkgKiBXZSBwdXQgYWxsIHRoZSB0 dXBsZXMgaW50byBhIHR1cGxlc3RvcmUgaW4gb25lIHNjYW4gb2YgdGhlIGhhc2h0YWJsZS4KQEAg LTExMzcsOCArMTA5NSw3IEBAIHBnX2N1cnNvcihQR19GVU5DVElPTl9BUkdTKQogCSAqLwogCUlu aXRNYXRlcmlhbGl6ZWRTUkYoZmNpbmZvLCAwKTsKIAotCWhhc2hfc2VxX2luaXQoJmhhc2hfc2Vx LCBQb3J0YWxIYXNoVGFibGUpOwotCXdoaWxlICgoaGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZo YXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwg UG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsK IAkJRGF0dW0JCXZhbHVlc1s2XTsKQEAgLTExNjcsMTIgKzExMjQsNyBAQCBwZ19jdXJzb3IoUEdf RlVOQ1RJT05fQVJHUykKIGJvb2wKIFRoZXJlQXJlTm9SZWFkeVBvcnRhbHModm9pZCkKIHsKLQlI QVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hf c2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0g KFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZv cmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJ CVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTEyMDMsMTIgKzExNTUsNyBA QCBUaGVyZUFyZU5vUmVhZHlQb3J0YWxzKHZvaWQpCiB2b2lkCiBIb2xkUGlubmVkUG9ydGFscyh2 b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5 OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUg KChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9 IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRh YmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtMTI1Miwx NSArMTE5OSwxMSBAQCBIb2xkUGlubmVkUG9ydGFscyh2b2lkKQogdm9pZAogRm9yZ2V0UG9ydGFs U25hcHNob3RzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQb3J0YWxIYXNo RW50ICpoZW50cnk7CiAJaW50CQkJbnVtUG9ydGFsU25hcHMgPSAwOwogCWludAkJCW51bUFjdGl2 ZVNuYXBzID0gMDsKIAogCS8qIEZpcnN0LCBzY2FuIFBvcnRhbEhhc2hUYWJsZSBhbmQgY2xlYXIg cG9ydGFsU25hcHNob3QgZmllbGRzICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxI YXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3Nl cV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQs IGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnkt PnBvcnRhbDsKIApkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGVybC9wbHBlcmwuYyBiL3NyYy9wbC9w bHBlcmwvcGxwZXJsLmMKaW5kZXggNDkwNDRiYzgwOGIuLjJjZmRmMjM5ZWU0IDEwMDY0NAotLS0g YS9zcmMvcGwvcGxwZXJsL3BscGVybC5jCisrKyBiL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMKQEAg LTUwMyw5ICs1MDMsNiBAQCBzZXRfaW50ZXJwX3JlcXVpcmUoYm9vbCB0cnVzdGVkKQogc3RhdGlj IHZvaWQKIHBscGVybF9maW5pKGludCBjb2RlLCBEYXR1bSBhcmcpCiB7Ci0JSEFTSF9TRVFfU1RB VFVTIGhhc2hfc2VxOwotCXBscGVybF9pbnRlcnBfZGVzYyAqaW50ZXJwX2Rlc2M7Ci0KIAllbG9n KERFQlVHMywgInBscGVybF9maW5pIik7CiAKIAkvKgpAQCAtNTI3LDggKzUyNCw3IEBAIHBscGVy bF9maW5pKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJcGxwZXJsX2Rlc3Ryb3lfaW50ZXJwKCZwbHBl cmxfaGVsZF9pbnRlcnApOwogCiAJLyogWmFwIGFueSBmdWxseS1pbml0aWFsaXplZCBpbnRlcnBy ZXRlcnMgKi8KLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGxwZXJsX2ludGVycF9oYXNoKTsK LQl3aGlsZSAoKGludGVycF9kZXNjID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5V TEwpCisJZm9yZWFjaF9oYXNoKHBscGVybF9pbnRlcnBfZGVzYywgaW50ZXJwX2Rlc2MsIHBscGVy bF9pbnRlcnBfaGFzaCkKIAl7CiAJCWlmIChpbnRlcnBfZGVzYy0+aW50ZXJwKQogCQl7Ci0tIAoy LjUyLjAKCg== --d56ff9939aba4b3c25f60e99a71ae3e368c16671eeb350a214b2e014d44b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v6-0005-Inline-functions-that-have-now-become-trivial.patch Content-Type: text/x-patch; charset=utf-8; name=v6-0005-Inline-functions-that-have-now-become-trivial.patch RnJvbSA5M2FiODgyYmZhMTMyM2VhOTVlZmRhYTg5NjA2NDMyM2UyODgzMzg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMjM6MzM6MTggKzAxMDAKU3ViamVjdDogW1BBVENIIHY2 IDUvNV0gSW5saW5lIGZ1bmN0aW9ucyB0aGF0IGhhdmUgbm93IGJlY29tZSB0cml2aWFsCgotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgIHwgMTcgKysrLS0tLS0tLS0tLS0t LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgIHwgMTYgKysrLS0tLS0tLS0t LS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMgfCAyMiArKysrLS0tLS0t LS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDQ1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCA0YWQ5YzEwYTdmOC4uYWQyZjJhYjEz ZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTQ2LDcgKzQ2LDYgQEAKICAqLwogc3RhdGlj IEhUQUIgKnByZXBhcmVkX3F1ZXJpZXMgPSBOVUxMOwogCi1zdGF0aWMgdm9pZCBJbml0UXVlcnlI YXNoVGFibGUodm9pZCk7CiBzdGF0aWMgUGFyYW1MaXN0SW5mbyBFdmFsdWF0ZVBhcmFtcyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQlQcmVwYXJlZFN0YXRlbWVudCAqcHN0bXQsIExpc3Qg KnBhcmFtcywKIAkJCQkJCQkJCUVTdGF0ZSAqZXN0YXRlKTsKQEAgLTM2NCwxOCArMzYzLDYgQEAg RXZhbHVhdGVQYXJhbXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQcmVwYXJlZFN0YXRlbWVudCAqcHN0 bXQsIExpc3QgKnBhcmFtcywKIAlyZXR1cm4gcGFyYW1MSTsKIH0KIAotCi0vKgotICogSW5pdGlh bGl6ZSBxdWVyeSBoYXNoIHRhYmxlIHVwb24gZmlyc3QgdXNlLgotICovCi1zdGF0aWMgdm9pZAot SW5pdFF1ZXJ5SGFzaFRhYmxlKHZvaWQpCi17Ci0JcHJlcGFyZWRfcXVlcmllcyA9IGhhc2hfbWFr ZV9jeHQoUHJlcGFyZWRTdGF0ZW1lbnQsIHN0bXRfbmFtZSwKLQkJCQkJCQkJCSAiUHJlcGFyZWQg UXVlcmllcyIsIDMyLAotCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwotfQotCiAvKgogICog U3RvcmUgYWxsIHRoZSBkYXRhIHBlcnRhaW5pbmcgdG8gYSBxdWVyeSBpbiB0aGUgaGFzaCB0YWJs ZSB1c2luZwogICogdGhlIHNwZWNpZmllZCBrZXkuICBUaGUgcGFzc2VkIENhY2hlZFBsYW5Tb3Vy Y2Ugc2hvdWxkIGJlICJ1bnNhdmVkIgpAQCAtMzkzLDcgKzM4MCw5IEBAIFN0b3JlUHJlcGFyZWRT dGF0ZW1lbnQoY29uc3QgY2hhciAqc3RtdF9uYW1lLAogCiAJLyogSW5pdGlhbGl6ZSB0aGUgaGFz aCB0YWJsZSwgaWYgbmVjZXNzYXJ5ICovCiAJaWYgKCFwcmVwYXJlZF9xdWVyaWVzKQotCQlJbml0 UXVlcnlIYXNoVGFibGUoKTsKKwkJcHJlcGFyZWRfcXVlcmllcyA9IGhhc2hfbWFrZV9jeHQoUHJl cGFyZWRTdGF0ZW1lbnQsIHN0bXRfbmFtZSwKKwkJCQkJCQkJCQkgIlByZXBhcmVkIFF1ZXJpZXMi LCAzMiwKKwkJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKiBBZGQgZW50cnkgdG8g aGFzaCB0YWJsZSAqLwogCWVudHJ5ID0gKFByZXBhcmVkU3RhdGVtZW50ICopIGhhc2hfc2VhcmNo KHByZXBhcmVkX3F1ZXJpZXMsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1 ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwppbmRleCA1YTI2ODNjMDcz NS4uNzRmNWFhNDlkNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNl LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpAQCAtODksNyArODksNiBA QCBzdGF0aWMgU2VxVGFibGVEYXRhICpsYXN0X3VzZWRfc2VxID0gTlVMTDsKIHN0YXRpYyB2b2lk IGZpbGxfc2VxX3dpdGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXBsZSk7CiBzdGF0 aWMgdm9pZCBmaWxsX3NlcV9mb3JrX3dpdGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0 dXBsZSwgRm9ya051bWJlciBmb3JrTnVtKTsKIHN0YXRpYyBSZWxhdGlvbiBsb2NrX2FuZF9vcGVu X3NlcXVlbmNlKFNlcVRhYmxlIHNlcSk7Ci1zdGF0aWMgdm9pZCBjcmVhdGVfc2VxX2hhc2h0YWJs ZSh2b2lkKTsKIHN0YXRpYyB2b2lkIGluaXRfc2VxdWVuY2UoT2lkIHJlbGlkLCBTZXFUYWJsZSAq cF9lbG0sIFJlbGF0aW9uICpwX3JlbCk7CiBzdGF0aWMgRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHJl YWRfc2VxX3R1cGxlKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJQnVmZmVyICpidWYsIEhlYXBU dXBsZSBzZXFkYXRhdHVwbGUpOwpAQCAtMTEwNywxNyArMTEwNiw2IEBAIGxvY2tfYW5kX29wZW5f c2VxdWVuY2UoU2VxVGFibGUgc2VxKQogCXJldHVybiBzZXF1ZW5jZV9vcGVuKHNlcS0+cmVsaWQs IE5vTG9jayk7CiB9CiAKLS8qCi0gKiBDcmVhdGVzIHRoZSBoYXNoIHRhYmxlIGZvciBzdG9yaW5n IHNlcXVlbmNlIGRhdGEKLSAqLwotc3RhdGljIHZvaWQKLWNyZWF0ZV9zZXFfaGFzaHRhYmxlKHZv aWQpCi17Ci0Jc2VxaGFzaHRhYiA9IGhhc2hfbWFrZV9jeHQoU2VxVGFibGVEYXRhLCByZWxpZCwK LQkJCQkJCQkgICAiU2VxdWVuY2UgdmFsdWVzIiwgMTYsCi0JCQkJCQkJICAgVG9wTWVtb3J5Q29u dGV4dCk7Ci19Ci0KIC8qCiAgKiBHaXZlbiBhIHJlbGF0aW9uIE9JRCwgb3BlbiBhbmQgbG9jayB0 aGUgc2VxdWVuY2UuICBwX2VsbSBhbmQgcF9yZWwgYXJlCiAgKiBvdXRwdXQgcGFyYW1ldGVycy4K QEAgLTExMzEsNyArMTExOSw5IEBAIGluaXRfc2VxdWVuY2UoT2lkIHJlbGlkLCBTZXFUYWJsZSAq cF9lbG0sIFJlbGF0aW9uICpwX3JlbCkKIAogCS8qIEZpbmQgb3IgY3JlYXRlIGEgaGFzaCB0YWJs ZSBlbnRyeSBmb3IgdGhpcyBzZXF1ZW5jZSAqLwogCWlmIChzZXFoYXNodGFiID09IE5VTEwpCi0J CWNyZWF0ZV9zZXFfaGFzaHRhYmxlKCk7CisJCXNlcWhhc2h0YWIgPSBoYXNoX21ha2VfY3h0KFNl cVRhYmxlRGF0YSwgcmVsaWQsCisJCQkJCQkJCSAgICJTZXF1ZW5jZSB2YWx1ZXMiLCAxNiwKKwkJ CQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAllbG0gPSAoU2VxVGFibGUpIGhhc2hfc2Vh cmNoKHNlcWhhc2h0YWIsICZyZWxpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9mdW5jY2FjaGUuYwppbmRleCBiZWY5MzhjMzdjMC4uMGU1YmZhMmE1NmEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCkBAIC01MCwyMyArNTAsNiBAQCBzdGF0aWMgdWlu dDMyIGNmdW5jX2hhc2goY29uc3Qgdm9pZCAqa2V5LCBTaXplIGtleXNpemUpOwogc3RhdGljIGlu dAljZnVuY19tYXRjaChjb25zdCB2b2lkICprZXkxLCBjb25zdCB2b2lkICprZXkyLCBTaXplIGtl eXNpemUpOwogCiAKLS8qCi0gKiBJbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlIG9uIGZpcnN0IHVz ZS4KLSAqCi0gKiBUaGUgaGFzaCB0YWJsZSB3aWxsIGJlIGluIFRvcE1lbW9yeUNvbnRleHQgcmVn YXJkbGVzcyBvZiBjYWxsZXIncyBjb250ZXh0LgotICovCi1zdGF0aWMgdm9pZAotY2Z1bmNfaGFz aHRhYmxlX2luaXQodm9pZCkKLXsKLQkvKiBkb24ndCBhbGxvdyBkb3VibGUtaW5pdGlhbGl6YXRp b24gKi8KLQlBc3NlcnQoY2Z1bmNfaGFzaHRhYmxlID09IE5VTEwpOwotCi0JY2Z1bmNfaGFzaHRh YmxlID0gaGFzaF9tYWtlX2ZuX2N4dChDYWNoZWRGdW5jdGlvbkhhc2hFbnRyeSwga2V5LAotCQkJ CQkJCQkJICAgIkNhY2hlZCBmdW5jdGlvbiBoYXNoIiwgRlVOQ1NfUEVSX1VTRVIsCi0JCQkJCQkJ CQkgICBjZnVuY19oYXNoLCBjZnVuY19tYXRjaCwKLQkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRl eHQpOwotfQotCiAvKgogICogY2Z1bmNfaGFzaDogaGFzaCBmdW5jdGlvbiBmb3IgY2Z1bmMgaGFz aCB0YWJsZQogICoKQEAgLTE2NSw3ICsxNDgsMTAgQEAgY2Z1bmNfaGFzaHRhYmxlX2luc2VydChD YWNoZWRGdW5jdGlvbiAqZnVuY3Rpb24sCiAJYm9vbAkJZm91bmQ7CiAKIAlpZiAoY2Z1bmNfaGFz aHRhYmxlID09IE5VTEwpCi0JCWNmdW5jX2hhc2h0YWJsZV9pbml0KCk7CisJCWNmdW5jX2hhc2h0 YWJsZSA9IGhhc2hfbWFrZV9mbl9jeHQoQ2FjaGVkRnVuY3Rpb25IYXNoRW50cnksIGtleSwKKwkJ CQkJCQkJCQkgICAiQ2FjaGVkIGZ1bmN0aW9uIGhhc2giLCBGVU5DU19QRVJfVVNFUiwKKwkJCQkJ CQkJCQkgICBjZnVuY19oYXNoLCBjZnVuY19tYXRjaCwKKwkJCQkJCQkJCQkgICBUb3BNZW1vcnlD b250ZXh0KTsKIAogCWhlbnRyeSA9IChDYWNoZWRGdW5jdGlvbkhhc2hFbnRyeSAqKSBoYXNoX3Nl YXJjaChjZnVuY19oYXNodGFibGUsCiAJCQkJCQkJCQkJCQkJIGZ1bmNfa2V5LAotLSAKMi41Mi4w Cgo= --d56ff9939aba4b3c25f60e99a71ae3e368c16671eeb350a214b2e014d44b--