From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?C=C3=A9dric=20Bosdonnat?= Subject: [PATCH v2 02/35] libxl.c: switch to LOG*D use Date: Thu, 17 Nov 2016 18:35:44 +0100 Message-ID: <20161117173617.6697-3-cbosdonnat@suse.com> References: <20161117173617.6697-1-cbosdonnat@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161117173617.6697-1-cbosdonnat@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Wei Liu , Ian Jackson , Cedric Bosdonnat List-Id: xen-devel@lists.xenproject.org RnJvbTogQ2VkcmljIEJvc2Rvbm5hdCA8Y2Jvc2Rvbm5hdEBzdXNlLmNvbT4KClVzZSBMT0cqRCBm dW5jdGlvbnMgdG8gb3V0cHV0IHRoZSBkb21haW4gSUQgaW4gbG9ncyBhcyBtdWNoIGFzCnBvc3Np YmxlLiBUaGlzIHdpbGwgaGVscCBjb25zdW1lciBjb2RlIHNvcnRpbmcgdGhlIGxvZ3MgYnkKZG9t YWluLgoKbGlieGwuYyBjaGFuZ2VzIGhhdmUgYmVlbiBzcGxpdCBpbnRvIDMgY29tbWl0cyB0byBo ZWxwIHJldmlldwp0aGVtIGFuZCBpc29sYXRlIG1vcmUgaW5zdGFuY2VzIHRoYXQgY291bGQgYmUg cHJvYmxlbWF0aWMuCgpUaGlzIGNvbW1pdCwgb25seSBjaGFuZ2VzIExPRyooKSBpbnRvIExPRypE KCkgYW5kIGFkZHMgYSBkb21pZApwYXJhbWV0ZXIuCgpTaWduZWQtb2ZmLWJ5OiBDw6lkcmljIEJv c2Rvbm5hdCA8Y2Jvc2Rvbm5hdEBzdXNlLmNvbT4KLS0tCiB0b29scy9saWJ4bC9saWJ4bC5jIHwg MzAyICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IDEgZmlsZSBjaGFuZ2VkLCAxNTMgaW5zZXJ0aW9ucygrKSwgMTQ5IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsLmMgYi90b29scy9saWJ4bC9saWJ4bC5jCmluZGV4 IDMzYzVlNGMuLmI1ZmYzMDkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsLmMKKysrIGIv dG9vbHMvbGlieGwvbGlieGwuYwpAQCAtMzk0LDEzICszOTQsMTMgQEAgaW50IGxpYnhsX19kb21h aW5fcmVuYW1lKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAgIGlmICghdHJhbnMp IHsKICAgICAgICAgdHJhbnMgPSBvdXJfdHJhbnMgPSB4c190cmFuc2FjdGlvbl9zdGFydChjdHgt PnhzaCk7CiAgICAgICAgIGlmICghb3VyX3RyYW5zKSB7Ci0gICAgICAgICAgICBMT0dFVihFUlJP UiwgZXJybm8sICJjcmVhdGUgeHMgdHJhbnNhY3Rpb24gZm9yIGRvbWFpbiAocmUpbmFtZSIpOwor ICAgICAgICAgICAgTE9HRVZEKEVSUk9SLCBlcnJubywgZG9taWQsICJDcmVhdGUgeHMgdHJhbnNh Y3Rpb24gZm9yIGRvbWFpbiAocmUpbmFtZSIpOwogICAgICAgICAgICAgZ290byB4X2ZhaWw7CiAg ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIW5ld19uYW1lKSB7Ci0gICAgICAgIExPRyhFUlJP UiwgIm5ldyBkb21haW4gbmFtZSBub3Qgc3BlY2lmaWVkIik7CisgICAgICAgIExPR0QoRVJST1Is IGRvbWlkLCAiTmV3IGRvbWFpbiBuYW1lIG5vdCBzcGVjaWZpZWQiKTsKICAgICAgICAgcmMgPSBF UlJPUl9JTlZBTDsKICAgICAgICAgZ290byB4X3JjOwogICAgIH0KQEAgLTQxMiwxNCArNDEyLDE0 IEBAIGludCBsaWJ4bF9fZG9tYWluX3JlbmFtZShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21p ZCwKICAgICAgICAgaWYgKHJjID09IEVSUk9SX0lOVkFMKSB7CiAgICAgICAgICAgICAvKiBubyBz dWNoIGRvbWFpbiwgZ29vZCAqLwogICAgICAgICB9IGVsc2UgaWYgKHJjICE9IDApIHsKLSAgICAg ICAgICAgIExPRyhFUlJPUiwgInVuZXhwZWN0ZWQgZXJyb3IgY2hlY2tpbmcgZm9yIGV4aXN0aW5n IGRvbWFpbiIpOworICAgICAgICAgICAgTE9HRChFUlJPUiwgZG9taWQsICJVbmV4cGVjdGVkIGVy cm9yIGNoZWNraW5nIGZvciBleGlzdGluZyBkb21haW4iKTsKICAgICAgICAgICAgIGdvdG8geF9y YzsKICAgICAgICAgfSBlbHNlIGlmIChkb21pZF9lID09IGRvbWlkKSB7CiAgICAgICAgICAgICAv KiBkb21haW4gYWxyZWFkeSBoYXMgdGhpcyBuYW1lLCBvayAoYnV0IHdlIGRvIHN0aWxsCiAgICAg ICAgICAgICAgKiBuZWVkIHRoZSByZXN0IG9mIHRoZSBjb2RlIGFzIHdlIG1heSBuZWVkIHRvIGNo ZWNrCiAgICAgICAgICAgICAgKiBvbGRfbmFtZSwgZm9yIGV4YW1wbGUpLiAqLwogICAgICAgICB9 IGVsc2UgewotICAgICAgICAgICAgTE9HKEVSUk9SLCAiZG9tYWluIHdpdGggbmFtZSBcIiVzXCIg YWxyZWFkeSBleGlzdHMuIiwgbmV3X25hbWUpOworICAgICAgICAgICAgTE9HRChFUlJPUiwgZG9t aWQsICJEb21haW4gd2l0aCBuYW1lIFwiJXNcIiBhbHJlYWR5IGV4aXN0cy4iLCBuZXdfbmFtZSk7 CiAgICAgICAgICAgICByYyA9IEVSUk9SX0lOVkFMOwogICAgICAgICAgICAgZ290byB4X3JjOwog ICAgICAgICB9CkBAIC00NzMsNyArNDczLDcgQEAgaW50IGxpYnhsX19kb21haW5fcmVuYW1lKGxp YnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0dWJfZG1fbmV3X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdHJhbnMpOwogICAgICAgICBpZiAocmMpIHsKLSAgICAgICAgICAgIExPR0UoRVJST1IsICJ1 bmFibGUgdG8gcmVuYW1lIHN0dWItZG9tYWluIik7CisgICAgICAgICAgICBMT0dFRChFUlJPUiwg ZG9taWQsICJVbmFibGUgdG8gcmVuYW1lIHN0dWItZG9tYWluIik7CiAgICAgICAgICAgICBnb3Rv IHhfcmM7CiAgICAgICAgIH0KICAgICB9CkBAIC02NzgsNyArNjc4LDcgQEAgaW50IGxpYnhsX2Rv bWFpbl9pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9kb21pbmZvICppbmZvX3IsCiAKICAgICBy ZXQgPSB4Y19kb21haW5fZ2V0aW5mb2xpc3QoY3R4LT54Y2gsIGRvbWlkLCAxLCAmeGNpbmZvKTsK ICAgICBpZiAocmV0PDApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgImdldHRpbmcgZG9tYWluIGlu Zm8gbGlzdCIpOworICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJHZXR0aW5nIGRvbWFpbiBp bmZvIGxpc3QiKTsKICAgICAgICAgR0NfRlJFRTsKICAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7 CiAgICAgfQpAQCAtODQyLDcgKzg0Miw3IEBAIGludCBsaWJ4bF9kb21haW5fcmVtdXNfc3RhcnQo bGlieGxfY3R4ICpjdHgsIGxpYnhsX2RvbWFpbl9yZW11c19pbmZvICppbmZvLAogCiAgICAgLyog VGhlIGNhbGxlciBtdXN0IHNldCB0aGlzIGRlZmJvb2wgKi8KICAgICBpZiAobGlieGxfZGVmYm9v bF9pc19kZWZhdWx0KGluZm8tPmNvbG8pKSB7Ci0gICAgICAgIExPRyhFUlJPUiwgImNvbG8gbW9k ZSBtdXN0IGJlIGVuYWJsZWQvZGlzYWJsZWQiKTsKKyAgICAgICAgTE9HRChFUlJPUiwgZG9taWQs ICJDb2xvIG1vZGUgbXVzdCBiZSBlbmFibGVkL2Rpc2FibGVkIik7CiAgICAgICAgIHJjID0gRVJS T1JfRkFJTDsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQpAQCAtODU2LDcgKzg1Niw4IEBAIGlu dCBsaWJ4bF9kb21haW5fcmVtdXNfc3RhcnQobGlieGxfY3R4ICpjdHgsIGxpYnhsX2RvbWFpbl9y ZW11c19pbmZvICppbmZvLAogCiAgICAgaWYgKGxpYnhsX2RlZmJvb2xfdmFsKGluZm8tPmNvbG8p ICYmCiAgICAgICAgIGxpYnhsX2RlZmJvb2xfdmFsKGluZm8tPmNvbXByZXNzaW9uKSkgewotICAg ICAgICAgICAgTE9HKEVSUk9SLCAiY2Fubm90IHVzZSBtZW1vcnkgY2hlY2twb2ludCBjb21wcmVz c2lvbiBpbiBDT0xPIG1vZGUiKTsKKyAgICAgICAgICAgIExPR0QoRVJST1IsIGRvbWlkLCAiQ2Fu bm90IHVzZSBtZW1vcnkgY2hlY2twb2ludCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiY29t cHJlc3Npb24gaW4gQ09MTyBtb2RlIik7CiAgICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAg ICAgICAgICAgICBnb3RvIG91dDsKICAgICB9CkBAIC04NjUsOCArODY2LDggQEAgaW50IGxpYnhs X2RvbWFpbl9yZW11c19zdGFydChsaWJ4bF9jdHggKmN0eCwgbGlieGxfZG9tYWluX3JlbXVzX2lu Zm8gKmluZm8sCiAgICAgICAgIChsaWJ4bF9kZWZib29sX3ZhbChpbmZvLT5ibGFja2hvbGUpIHx8 CiAgICAgICAgICAhbGlieGxfZGVmYm9vbF92YWwoaW5mby0+bmV0YnVmKSB8fAogICAgICAgICAg IWxpYnhsX2RlZmJvb2xfdmFsKGluZm8tPmRpc2tidWYpKSkgewotICAgICAgICBMT0coRVJST1Is ICJVbnNhZmUgbW9kZSBtdXN0IGJlIGVuYWJsZWQgdG8gcmVwbGljYXRlIHRvIC9kZXYvbnVsbCwi Ci0gICAgICAgICAgICAgICAgICAgImRpc2FibGUgbmV0d29yayBidWZmZXJpbmcgYW5kIGRpc2sg cmVwbGljYXRpb24iKTsKKyAgICAgICAgTE9HRChFUlJPUiwgZG9taWQsICJVbnNhZmUgbW9kZSBt dXN0IGJlIGVuYWJsZWQgdG8gcmVwbGljYXRlIHRvIC9kZXYvbnVsbCwiCisgICAgICAgICAgICAg ICAgICAgICJkaXNhYmxlIG5ldHdvcmsgYnVmZmVyaW5nIGFuZCBkaXNrIHJlcGxpY2F0aW9uIik7 CiAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQpAQCAt OTY5LDcgKzk3MCw3IEBAIGludCBsaWJ4bF9kb21haW5fcGF1c2UobGlieGxfY3R4ICpjdHgsIHVp bnQzMl90IGRvbWlkKQogICAgIEdDX0lOSVQoY3R4KTsKICAgICByZXQgPSB4Y19kb21haW5fcGF1 c2UoY3R4LT54Y2gsIGRvbWlkKTsKICAgICBpZiAocmV0PDApIHsKLSAgICAgICAgTE9HRShFUlJP UiwgInBhdXNpbmcgZG9tYWluICVkIiwgZG9taWQpOworICAgICAgICBMT0dFRChFUlJPUiwgZG9t aWQsICJQYXVzaW5nIGRvbWFpbiIpOwogICAgICAgICBHQ19GUkVFOwogICAgICAgICByZXR1cm4g RVJST1JfRkFJTDsKICAgICB9CkBAIC0xMDQ3LDcgKzEwNDgsNyBAQCBpbnQgbGlieGxfX2RvbWFp bl9wdmNvbnRyb2xfYXZhaWxhYmxlKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkKQogCiAg ICAgcmV0ID0geGNfaHZtX3BhcmFtX2dldChjdHgtPnhjaCwgZG9taWQsIEhWTV9QQVJBTV9DQUxM QkFDS19JUlEsICZwdmRyaXZlcik7CiAgICAgaWYgKHJldDwwKSB7Ci0gICAgICAgIExPR0UoRVJS T1IsICJnZXR0aW5nIEhWTSBjYWxsYmFjayBJUlEiKTsKKyAgICAgICAgTE9HRUQoRVJST1IsIGRv bWlkLCAiR2V0dGluZyBIVk0gY2FsbGJhY2sgSVJRIik7CiAgICAgICAgIHJldHVybiBFUlJPUl9G QUlMOwogICAgIH0KICAgICByZXR1cm4gISFwdmRyaXZlcjsKQEAgLTE2NDksMTAgKzE2NTAsMTAg QEAgc3RhdGljIHZvaWQgZGV2aWNlc19kZXN0cm95X2NiKGxpYnhsX19lZ2MgKmVnYywKICAgICB2 bV9wYXRoID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLCBHQ1NQUklOVEYoIiVzL3ZtIiwg ZG9tX3BhdGgpKTsKICAgICBpZiAodm1fcGF0aCkKICAgICAgICAgaWYgKCF4c19ybShjdHgtPnhz aCwgWEJUX05VTEwsIHZtX3BhdGgpKQotICAgICAgICAgICAgTE9HRShFUlJPUiwgInhzX3JtIGZh aWxlZCBmb3IgJXMiLCB2bV9wYXRoKTsKKyAgICAgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwg InhzX3JtIGZhaWxlZCBmb3IgJXMiLCB2bV9wYXRoKTsKIAogICAgIGlmICgheHNfcm0oY3R4LT54 c2gsIFhCVF9OVUxMLCBkb21fcGF0aCkpCi0gICAgICAgIExPR0UoRVJST1IsICJ4c19ybSBmYWls ZWQgZm9yICVzIiwgZG9tX3BhdGgpOworICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJ4c19y bSBmYWlsZWQgZm9yICVzIiwgZG9tX3BhdGgpOwogCiAgICAgeHNfcm0oY3R4LT54c2gsIFhCVF9O VUxMLCBsaWJ4bF9feHNfbGlieGxfcGF0aChnYywgZG9taWQpKTsKICAgICB4c19ybShjdHgtPnhz aCwgWEJUX05VTEwsIEdDU1BSSU5URiggIi9sb2NhbC9kb21haW4vJWQvaHZtbG9hZGVyIiwgZG9t aWQpKTsKQEAgLTE4MjgsNyArMTgyOSw4IEBAIGludCBsaWJ4bF9jb25zb2xlX2dldF90dHkobGli eGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBpbnQgY29uc19udW0sCiAKICAgICB0dHkgPSBs aWJ4bF9feHNfcmVhZChnYywgWEJUX05VTEwsIHR0eV9wYXRoKTsKICAgICBpZiAoIXR0eSB8fCB0 dHlbMF0gPT0gJ1wwJykgewotICAgICAgIExPR0UoRVJST1IsInVuYWJsZSB0byByZWFkIGNvbnNv bGUgdHR5IHBhdGggYCVzJyIsdHR5X3BhdGgpOworICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwg IlVuYWJsZSB0byByZWFkIGNvbnNvbGUgdHR5IHBhdGggYCVzJyIsCisgICAgICAgICAgICAgdHR5 X3BhdGgpOwogICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICBnb3RvIG91dDsKICAgICB9 CkBAIC0xOTQ2LDEzICsxOTQ4LDEzIEBAIGludCBsaWJ4bF92bmN2aWV3ZXJfZXhlYyhsaWJ4bF9j dHggKmN0eCwgdWludDMyX3QgZG9taWQsIGludCBhdXRvcGFzcykKICAgICAgICAgY2hhciB0bXBu YW1lW10gPSAiL3RtcC92bmNhdXRvcGFzcy5YWFhYWFgiOwogICAgICAgICBhdXRvcGFzc19mZCA9 IG1rc3RlbXAodG1wbmFtZSk7CiAgICAgICAgIGlmICggYXV0b3Bhc3NfZmQgPCAwICkgewotICAg ICAgICAgICAgTE9HRShFUlJPUiwgIm1rc3RlbXAgJXMgZmFpbGVkIiwgdG1wbmFtZSk7CisgICAg ICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJta3N0ZW1wICVzIGZhaWxlZCIsIHRtcG5hbWUp OwogICAgICAgICAgICAgZ290byB4X2ZhaWw7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIHVu bGluayh0bXBuYW1lKSApIHsKICAgICAgICAgICAgIC8qIHNob3VsZCBuZXZlciBoYXBwZW4gKi8K LSAgICAgICAgICAgIExPR0UoRVJST1IsICJ1bmxpbmsgJXMgZmFpbGVkIiwgdG1wbmFtZSk7Cisg ICAgICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJ1bmxpbmsgJXMgZmFpbGVkIiwgdG1wbmFt ZSk7CiAgICAgICAgICAgICBnb3RvIHhfZmFpbDsKICAgICAgICAgfQogCkBAIC0xOTYxLDcgKzE5 NjMsNyBAQCBpbnQgbGlieGxfdm5jdmlld2VyX2V4ZWMobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90 IGRvbWlkLCBpbnQgYXV0b3Bhc3MpCiAgICAgICAgICAgICBnb3RvIHhfZmFpbDsKIAogICAgICAg ICBpZiAoIGxzZWVrKGF1dG9wYXNzX2ZkLCBTRUVLX1NFVCwgMCkgKSB7Ci0gICAgICAgICAgICBM T0dFKEVSUk9SLCAicmV3aW5kICVzIChhdXRvcGFzcykgZmFpbGVkIiwgdG1wbmFtZSk7CisgICAg ICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJyZXdpbmQgJXMgKGF1dG9wYXNzKSBmYWlsZWQi LCB0bXBuYW1lKTsKICAgICAgICAgICAgIGdvdG8geF9mYWlsOwogICAgICAgICB9CiAKQEAgLTIw NjgsNyArMjA3MCw3IEBAIGludCBsaWJ4bF9fZGV2aWNlX2Rpc2tfc2V0ZGVmYXVsdChsaWJ4bF9f Z2MgKmdjLCBsaWJ4bF9kZXZpY2VfZGlzayAqZGlzaywKICAgICAgICAgTElCWExfREVWSUNFX01P REVMX1ZFUlNJT05fTk9ORSkgewogICAgICAgICBpZiAoIShkaXNrLT5iYWNrZW5kID09IExJQlhM X0RJU0tfQkFDS0VORF9RRElTSyB8fAogICAgICAgICAgICAgICBkaXNrLT5iYWNrZW5kID09IExJ QlhMX0RJU0tfQkFDS0VORF9VTktOT1dOKSkgewotICAgICAgICAgICAgTE9HKEVSUk9SLCAiQmFj a2VuZCBmb3IgQ0QgZGV2aWNlcyBvbiBIVk0gZ3Vlc3RzIG11c3QgYmUgUWRpc2siKTsKKyAgICAg ICAgICAgIExPR0QoRVJST1IsIGRvbWlkLCAiQmFja2VuZCBmb3IgQ0QgZGV2aWNlcyBvbiBIVk0g Z3Vlc3RzIG11c3QgYmUgUWRpc2siKTsKICAgICAgICAgICAgIHJldHVybiBFUlJPUl9GQUlMOwog ICAgICAgICB9CiAgICAgICAgIGRpc2stPmJhY2tlbmQgPSBMSUJYTF9ESVNLX0JBQ0tFTkRfUURJ U0s7CkBAIC0yMDg2LDggKzIwODgsOCBAQCBpbnQgbGlieGxfX2RldmljZV9mcm9tX2Rpc2sobGli eGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAKICAgICBkZXZpZCA9IGxpYnhsX19kZXZpY2Vf ZGlza19kZXZfbnVtYmVyKGRpc2stPnZkZXYsIE5VTEwsIE5VTEwpOwogICAgIGlmIChkZXZpZD09 LTEpIHsKLSAgICAgICAgTE9HKEVSUk9SLCAiSW52YWxpZCBvciB1bnN1cHBvcnRlZCIiIHZpcnR1 YWwgZGlzayBpZGVudGlmaWVyICVzIiwKLSAgICAgICAgICAgIGRpc2stPnZkZXYpOworICAgICAg ICBMT0dEKEVSUk9SLCBkb21pZCwgIkludmFsaWQgb3IgdW5zdXBwb3J0ZWQiIiB2aXJ0dWFsIGRp c2sgaWRlbnRpZmllciAlcyIsCisgICAgICAgICAgICAgZGlzay0+dmRldik7CiAgICAgICAgIHJl dHVybiBFUlJPUl9JTlZBTDsKICAgICB9CiAKQEAgLTIxMDUsNyArMjEwNyw4IEBAIGludCBsaWJ4 bF9fZGV2aWNlX2Zyb21fZGlzayhsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICAg ICAgICAgIGRldmljZS0+YmFja2VuZF9raW5kID0gTElCWExfX0RFVklDRV9LSU5EX1FESVNLOwog ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBMT0coRVJS T1IsICJ1bnJlY29nbml6ZWQgZGlzayBiYWNrZW5kIHR5cGU6ICVkIiwgZGlzay0+YmFja2VuZCk7 CisgICAgICAgICAgICBMT0dEKEVSUk9SLCBkb21pZCwgIlVucmVjb2duaXplZCBkaXNrIGJhY2tl bmQgdHlwZTogJWQiLAorICAgICAgICAgICAgICAgICBkaXNrLT5iYWNrZW5kKTsKICAgICAgICAg ICAgIHJldHVybiBFUlJPUl9JTlZBTDsKICAgICB9CiAKQEAgLTIyMDEsMTUgKzIyMDQsMTUgQEAg c3RhdGljIHZvaWQgZGV2aWNlX2Rpc2tfYWRkKGxpYnhsX19lZ2MgKmVnYywgdWludDMyX3QgZG9t aWQsCiAgICAgICAgIEdDTkVXKGRldmljZSk7CiAgICAgICAgIHJjID0gbGlieGxfX2RldmljZV9m cm9tX2Rpc2soZ2MsIGRvbWlkLCBkaXNrLCBkZXZpY2UpOwogICAgICAgICBpZiAocmMgIT0gMCkg ewotICAgICAgICAgICAgTE9HKEVSUk9SLCAiSW52YWxpZCBvciB1bnN1cHBvcnRlZCIiIHZpcnR1 YWwgZGlzayBpZGVudGlmaWVyICVzIiwKLSAgICAgICAgICAgICAgICBkaXNrLT52ZGV2KTsKKyAg ICAgICAgICAgIExPR0QoRVJST1IsIGRvbWlkLCAiSW52YWxpZCBvciB1bnN1cHBvcnRlZCIiIHZp cnR1YWwgZGlzayBpZGVudGlmaWVyICVzIiwKKyAgICAgICAgICAgICAgICAgZGlzay0+dmRldik7 CiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgfQogCiAgICAgICAgIHJjID0gbGlieGxf X2RldmljZV9leGlzdHMoZ2MsIHQsIGRldmljZSk7CiAgICAgICAgIGlmIChyYyA8IDApIGdvdG8g b3V0OwogICAgICAgICBpZiAocmMgPT0gMSkgeyAgICAgICAgICAgICAgLyogYWxyZWFkeSBleGlz dHMgaW4geGVuc3RvcmUgKi8KLSAgICAgICAgICAgIExPRyhFUlJPUiwgImRldmljZSBhbHJlYWR5 IGV4aXN0cyBpbiB4ZW5zdG9yZSIpOworICAgICAgICAgICAgTE9HRChFUlJPUiwgZG9taWQsICJk ZXZpY2UgYWxyZWFkeSBleGlzdHMgaW4geGVuc3RvcmUiKTsKICAgICAgICAgICAgIGFvZGV2LT5h Y3Rpb24gPSBMSUJYTF9fREVWSUNFX0FDVElPTl9BREQ7IC8qIGZvciBlcnJvciBtZXNzYWdlICov CiAgICAgICAgICAgICByYyA9IEVSUk9SX0RFVklDRV9FWElTVFM7CiAgICAgICAgICAgICBnb3Rv IG91dDsKQEAgLTIyMzUsOCArMjIzOCw4IEBAIHN0YXRpYyB2b2lkIGRldmljZV9kaXNrX2FkZChs aWJ4bF9fZWdjICplZ2MsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICBkZXYg PSBsaWJ4bF9fYmxrdGFwX2RldnBhdGgoZ2MsIGRpc2stPnBkZXZfcGF0aCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2stPmZvcm1hdCk7CiAgICAg ICAgICAgICAgICAgICAgIGlmICghZGV2KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMT0co RVJST1IsICJmYWlsZWQgdG8gZ2V0IGJsa3RhcCBkZXZwYXRoIGZvciAlcCIsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGlzay0+cGRldl9wYXRoKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIExPR0QoRVJST1IsIGRvbWlkLCAiRmFpbGVkIHRvIGdldCBibGt0YXAgZGV2cGF0aCBmb3Ig JXAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNrLT5wZGV2X3BhdGgpOwogICAg ICAgICAgICAgICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICAgICAgICAgICAg ICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTIyNzEsOCArMjI3NCw4 IEBAIHN0YXRpYyB2b2lkIGRldmljZV9kaXNrX2FkZChsaWJ4bF9fZWdjICplZ2MsIHVpbnQzMl90 IGRvbWlkLAogICAgICAgICAgICAgICAgIGFzc2VydChkZXZpY2UtPmJhY2tlbmRfa2luZCA9PSBM SUJYTF9fREVWSUNFX0tJTkRfUURJU0spOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBMT0coRVJST1IsICJ1bnJlY29nbml6ZWQg ZGlzayBiYWNrZW5kIHR5cGU6ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgZGlzay0+YmFja2Vu ZCk7CisgICAgICAgICAgICAgICAgTE9HRChFUlJPUiwgZG9taWQsICJVbnJlY29nbml6ZWQgZGlz ayBiYWNrZW5kIHR5cGU6ICVkIiwKKyAgICAgICAgICAgICAgICAgICAgIGRpc2stPmJhY2tlbmQp OwogICAgICAgICAgICAgICAgIHJjID0gRVJST1JfSU5WQUw7CiAgICAgICAgICAgICAgICAgZ290 byBvdXQ7CiAgICAgICAgIH0KQEAgLTI2NTUsMjYgKzI2NTgsMjYgQEAgaW50IGxpYnhsX2Nkcm9t X2luc2VydChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIGxpYnhsX2RldmljZV9kaXNr ICpkaXNrLAogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAgICAgaWYgKHR5cGUgIT0gTElCWExf RE9NQUlOX1RZUEVfSFZNKSB7Ci0gICAgICAgIExPRyhFUlJPUiwgImNkcm9tLWluc2VydCByZXF1 aXJlcyBhbiBIVk0gZG9tYWluIik7CisgICAgICAgIExPR0QoRVJST1IsIGRvbWlkLCAiY2Ryb20t aW5zZXJ0IHJlcXVpcmVzIGFuIEhWTSBkb21haW4iKTsKICAgICAgICAgcmMgPSBFUlJPUl9JTlZB TDsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCiAgICAgaWYgKGxpYnhsX2dldF9zdHViZG9t X2lkKGN0eCwgZG9taWQpICE9IDApIHsKLSAgICAgICAgTE9HKEVSUk9SLCAiY2Ryb20taW5zZXJ0 IGRvZXNuJ3Qgd29yayBmb3Igc3R1YiBkb21haW5zIik7CisgICAgICAgIExPR0QoRVJST1IsIGRv bWlkLCAiY2Ryb20taW5zZXJ0IGRvZXNuJ3Qgd29yayBmb3Igc3R1YiBkb21haW5zIik7CiAgICAg ICAgIHJjID0gRVJST1JfSU5WQUw7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAogICAgIGRt X3ZlciA9IGxpYnhsX19kZXZpY2VfbW9kZWxfdmVyc2lvbl9ydW5uaW5nKGdjLCBkb21pZCk7CiAg ICAgaWYgKGRtX3ZlciA9PSAtMSkgewotICAgICAgICBMT0coRVJST1IsICJjYW5ub3QgZGV0ZXJt aW5lIGRldmljZSBtb2RlbCB2ZXJzaW9uIik7CisgICAgICAgIExPR0QoRVJST1IsIGRvbWlkLCAi Q2Fubm90IGRldGVybWluZSBkZXZpY2UgbW9kZWwgdmVyc2lvbiIpOwogICAgICAgICByYyA9IEVS Uk9SX0ZBSUw7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAogICAgIGlmIChkbV92ZXIgPT0g TElCWExfREVWSUNFX01PREVMX1ZFUlNJT05fTk9ORSkgewotICAgICAgICBMT0coRVJST1IsICJH dWVzdHMgd2l0aG91dCBhIGRldmljZSBtb2RlbCBjYW5ub3QgdXNlIGNkLWluc2VydCIpOworICAg ICAgICBMT0dEKEVSUk9SLCBkb21pZCwgIkd1ZXN0cyB3aXRob3V0IGEgZGV2aWNlIG1vZGVsIGNh bm5vdCB1c2UgY2QtaW5zZXJ0Iik7CiAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAg Z290byBvdXQ7CiAgICAgfQpAQCAtMjY4OSw3ICsyNjkyLDcgQEAgaW50IGxpYnhsX2Nkcm9tX2lu c2VydChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIGxpYnhsX2RldmljZV9kaXNrICpk aXNrLAogICAgICAgICB9CiAgICAgfQogICAgIGlmIChpID09IG51bSkgewotICAgICAgICBMT0co RVJST1IsICJWaXJ0dWFsIGRldmljZSBub3QgZm91bmQiKTsKKyAgICAgICAgTE9HRChFUlJPUiwg ZG9taWQsICJWaXJ0dWFsIGRldmljZSBub3QgZm91bmQiKTsKICAgICAgICAgcmMgPSBFUlJPUl9G QUlMOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CkBAIC0yNzQ5LDggKzI3NTIsOCBAQCBpbnQg bGlieGxfY2Ryb21faW5zZXJ0KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwgbGlieGxf ZGV2aWNlX2Rpc2sgKmRpc2ssCiAgICAgICAgIHRtcCA9IGxpYnhsX194c19yZWFkKGdjLCB0LCBH Q1NQUklOVEYoIiVzL2Zyb250ZW5kIiwgbGlieGxfcGF0aCkpOwogICAgICAgICBpZiAoIXRtcCkK ICAgICAgICAgewotICAgICAgICAgICAgTE9HKEVSUk9SLCAiSW50ZXJuYWwgZXJyb3I6ICVzIGRv ZXMgbm90IGV4aXN0IiwKLSAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVzL2Zyb250ZW5kIiwg bGlieGxfcGF0aCkpOworICAgICAgICAgICAgTE9HRChFUlJPUiwgZG9taWQsICJJbnRlcm5hbCBl cnJvcjogJXMgZG9lcyBub3QgZXhpc3QiLAorICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVz L2Zyb250ZW5kIiwgbGlieGxfcGF0aCkpOwogICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwog ICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgIH0KQEAgLTI3ODgsOCArMjc5MSw4IEBAIGlu dCBsaWJ4bF9jZHJvbV9pbnNlcnQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBsaWJ4 bF9kZXZpY2VfZGlzayAqZGlzaywKICAgICAgICAgdG1wID0gbGlieGxfX3hzX3JlYWQoZ2MsIHQs IEdDU1BSSU5URigiJXMvZnJvbnRlbmQiLCBsaWJ4bF9wYXRoKSk7CiAgICAgICAgIGlmICghdG1w KQogICAgICAgICB7Ci0gICAgICAgICAgICBMT0coRVJST1IsICJJbnRlcm5hbCBlcnJvcjogJXMg ZG9lcyBub3QgZXhpc3QiLAotICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXMvZnJvbnRlbmQi LCBsaWJ4bF9wYXRoKSk7CisgICAgICAgICAgICBMT0dEKEVSUk9SLCBkb21pZCwgIkludGVybmFs IGVycm9yOiAlcyBkb2VzIG5vdCBleGlzdCIsCisgICAgICAgICAgICAgICAgIEdDU1BSSU5URigi JXMvZnJvbnRlbmQiLCBsaWJ4bF9wYXRoKSk7CiAgICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7 CiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgfQpAQCAtMzEwMCw3ICszMTAzLDcgQEAg aW50IGxpYnhsX19kZXZpY2VfY29uc29sZV9hZGQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9t aWQsCiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KICAgICBpZiAoIWNvbnNvbGUtPmRldmlkICYm IChjb25zb2xlLT5uYW1lIHx8IGNvbnNvbGUtPnBhdGgpKSB7Ci0gICAgICAgIExPRyhFUlJPUiwg IlByaW1hcnkgY29uc29sZSBoYXMgaW52YWxpZCBjb25maWd1cmF0aW9uIik7CisgICAgICAgIExP R0QoRVJST1IsIGRvbWlkLCAiUHJpbWFyeSBjb25zb2xlIGhhcyBpbnZhbGlkIGNvbmZpZ3VyYXRp b24iKTsKICAgICAgICAgcmMgPSBFUlJPUl9JTlZBTDsKICAgICAgICAgZ290byBvdXQ7CiAgICAg fQpAQCAtMzMzOCw3ICszMzQxLDcgQEAgbGlieGxfZGV2aWNlX2NoYW5uZWwgKmxpYnhsX2Rldmlj ZV9jaGFubmVsX2xpc3QobGlieGxfY3R4ICpjdHgsCiAgICAgcmV0dXJuIGNoYW5uZWxzOwogCiBv dXRfZXJyOgotICAgIExPRyhFUlJPUiwgIlVuYWJsZSB0byBsaXN0IGNoYW5uZWxzIik7CisgICAg TE9HRChFUlJPUiwgZG9taWQsICJVbmFibGUgdG8gbGlzdCBjaGFubmVscyIpOwogICAgIHdoaWxl ICgqbnVtKSB7CiAgICAgICAgICgqbnVtKS0tOwogICAgICAgICBsaWJ4bF9kZXZpY2VfY2hhbm5l bF9kaXNwb3NlKCZjaGFubmVsc1sqbnVtXSk7CkBAIC0zNDUwLDcgKzM0NTMsNyBAQCBpbnQgbGli eGxfZGV2aWNlX3ZrYl9hZGQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9k ZXZpY2VfdmtiICp2a2IsCiAKICAgICByYyA9IGxpYnhsX19kZXZpY2VfdmtiX2FkZChnYywgZG9t aWQsIHZrYik7CiAgICAgaWYgKHJjKSB7Ci0gICAgICAgIExPRyhFUlJPUiwgInVuYWJsZSB0byBh ZGQgdmtiIGRldmljZSIpOworICAgICAgICBMT0dEKEVSUk9SLCBkb21pZCwgIlVuYWJsZSB0byBh ZGQgdmtiIGRldmljZSIpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKQEAgLTM1NTAsNyAr MzU1Myw3IEBAIGludCBsaWJ4bF9kZXZpY2VfdmZiX2FkZChsaWJ4bF9jdHggKmN0eCwgdWludDMy X3QgZG9taWQsIGxpYnhsX2RldmljZV92ZmIgKnZmYiwKIAogICAgIHJjID0gbGlieGxfX2Rldmlj ZV92ZmJfYWRkKGdjLCBkb21pZCwgdmZiKTsKICAgICBpZiAocmMpIHsKLSAgICAgICAgTE9HKEVS Uk9SLCAidW5hYmxlIHRvIGFkZCB2ZmIgZGV2aWNlIik7CisgICAgICAgIExPR0QoRVJST1IsIGRv bWlkLCAiVW5hYmxlIHRvIGFkZCB2ZmIgZGV2aWNlIik7CiAgICAgICAgIGdvdG8gb3V0OwogICAg IH0KIApAQCAtNDA0MSwxOCArNDA0NCwyMCBAQCBpbnQgbGlieGxfZG9tYWluX3NldG1heG1lbShs aWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIHVpbnQ2NF90IG1heF9tZW1rYikKIAogICAg IG1lbSA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwgR0NTUFJJTlRGKCIlcy9tZW1vcnkv dGFyZ2V0IiwgZG9tcGF0aCkpOwogICAgIGlmICghbWVtKSB7Ci0gICAgICAgIExPR0UoRVJST1Is ICJjYW5ub3QgZ2V0IG1lbW9yeSBpbmZvIGZyb20gJXMvbWVtb3J5L3RhcmdldCIsIGRvbXBhdGgp OworICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJDYW5ub3QgZ2V0IG1lbW9yeSBpbmZvIGZy b20gJXMvbWVtb3J5L3RhcmdldCIsCisgICAgICAgICAgICAgIGRvbXBhdGgpOwogICAgICAgICBn b3RvIG91dDsKICAgICB9CiAgICAgbWVtb3J5a2IgPSBzdHJ0b3VsbChtZW0sICZlbmRwdHIsIDEw KTsKICAgICBpZiAoKmVuZHB0ciAhPSAnXDAnKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJpbnZh bGlkIG1lbW9yeSAlcyBmcm9tICVzL21lbW9yeS90YXJnZXRcbiIsIG1lbSwgZG9tcGF0aCk7Cisg ICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIkludmFsaWQgbWVtb3J5ICVzIGZyb20gJXMvbWVt b3J5L3RhcmdldFxuIiwKKyAgICAgICAgICAgICAgbWVtLCBkb21wYXRoKTsKICAgICAgICAgZ290 byBvdXQ7CiAgICAgfQogCiAgICAgaWYgKG1heF9tZW1rYiA8IG1lbW9yeWtiKSB7Ci0gICAgICAg IExPR0UoRVJST1IsCi0gICAgICAgICAgICAgIm1lbW9yeV9zdGF0aWNfbWF4IG11c3QgYmUgZ3Jl YXRlciB0aGFuIG9yIG9yIGVxdWFsIHRvIG1lbW9yeV9keW5hbWljX21heCIpOworICAgICAgICBM T0dFRChFUlJPUiwgZG9taWQsCisgICAgICAgICAgICAgICJtZW1vcnlfc3RhdGljX21heCBtdXN0 IGJlIGdyZWF0ZXIgdGhhbiBvciBvciBlcXVhbCB0byBtZW1vcnlfZHluYW1pY19tYXgiKTsKICAg ICAgICAgZ290byBvdXQ7CiAgICAgfQogCkBAIC00MDcwLDkgKzQwNzUsOSBAQCBpbnQgbGlieGxf ZG9tYWluX3NldG1heG1lbShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIHVpbnQ2NF90 IG1heF9tZW1rYikKIAogICAgIHJjID0geGNfZG9tYWluX3NldG1heG1lbShjdHgtPnhjaCwgZG9t aWQsIG1heF9tZW1rYiArIHNpemUpOwogICAgIGlmIChyYyAhPSAwKSB7Ci0gICAgICAgIExPR0Uo RVJST1IsCi0gICAgICAgICAgICAgInhjX2RvbWFpbl9zZXRtYXhtZW0gZG9taWQ9JWQgbWVta2I9 JSJQUkl1NjQiIGZhaWxlZCAiInJjPSVkXG4iLAotICAgICAgICAgICAgIGRvbWlkLCBtYXhfbWVt a2IgKyBzaXplLCByYyk7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwKKyAgICAgICAgICAg ICAgInhjX2RvbWFpbl9zZXRtYXhtZW0gZG9taWQ9JWQgbWVta2I9JSJQUkl1NjQiIGZhaWxlZCAi InJjPSVkXG4iLAorICAgICAgICAgICAgICBkb21pZCwgbWF4X21lbWtiICsgc2l6ZSwgcmMpOwog ICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKQEAgLTQyMTYsMTYgKzQyMjEsMTYgQEAgcmV0cnlf dHJhbnNhY3Rpb246CiAgICAgICAgIGlmIChscmMgPCAwKSB7IHJjID0gRVJST1JfRkFJTDsgZ290 byBvdXRfbm9fdHJhbnNhY3Rpb247IH0KICAgICAgICAgZ290byByZXRyeV90cmFuc2FjdGlvbjsK ICAgICB9IGVsc2UgaWYgKCF0YXJnZXQpIHsKLSAgICAgICAgTE9HRShFUlJPUiwgImNhbm5vdCBn ZXQgdGFyZ2V0IG1lbW9yeSBpbmZvIGZyb20gJXMvbWVtb3J5L3RhcmdldCIsCi0gICAgICAgICAg ICAgZG9tcGF0aCk7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIkNhbm5vdCBnZXQgdGFy Z2V0IG1lbW9yeSBpbmZvIGZyb20gJXMvbWVtb3J5L3RhcmdldCIsCisgICAgICAgICAgICAgIGRv bXBhdGgpOwogICAgICAgICBhYm9ydF90cmFuc2FjdGlvbiA9IDE7CiAgICAgICAgIHJjID0gRVJS T1JfRkFJTDsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgY3VycmVu dF90YXJnZXRfbWVta2IgPSBzdHJ0b3VsbCh0YXJnZXQsICZlbmRwdHIsIDEwKTsKICAgICAgICAg aWYgKCplbmRwdHIgIT0gJ1wwJykgewotICAgICAgICAgICAgTE9HRShFUlJPUiwgImludmFsaWQg bWVtb3J5IHRhcmdldCAlcyBmcm9tICVzL21lbW9yeS90YXJnZXRcbiIsCi0gICAgICAgICAgICAg ICAgIHRhcmdldCwgZG9tcGF0aCk7CisgICAgICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJJ bnZhbGlkIG1lbW9yeSB0YXJnZXQgJXMgZnJvbSAlcy9tZW1vcnkvdGFyZ2V0XG4iLAorICAgICAg ICAgICAgICAgICAgdGFyZ2V0LCBkb21wYXRoKTsKICAgICAgICAgICAgIGFib3J0X3RyYW5zYWN0 aW9uID0gMTsKICAgICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgICAgIGdvdG8g b3V0OwpAQCAtNDIzMywxNSArNDIzOCwxNSBAQCByZXRyeV90cmFuc2FjdGlvbjoKICAgICB9CiAg ICAgbWVtbWF4ID0gbGlieGxfX3hzX3JlYWQoZ2MsIHQsIEdDU1BSSU5URigiJXMvbWVtb3J5L3N0 YXRpYy1tYXgiLCBkb21wYXRoKSk7CiAgICAgaWYgKCFtZW1tYXgpIHsKLSAgICAgICAgTE9HRShF UlJPUiwgImNhbm5vdCBnZXQgbWVtb3J5IGluZm8gZnJvbSAlcy9tZW1vcnkvc3RhdGljLW1heCIs Ci0gICAgICAgICAgICAgZG9tcGF0aCk7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIkNh bm5vdCBnZXQgbWVtb3J5IGluZm8gZnJvbSAlcy9tZW1vcnkvc3RhdGljLW1heCIsCisgICAgICAg ICAgICAgIGRvbXBhdGgpOwogICAgICAgICBhYm9ydF90cmFuc2FjdGlvbiA9IDE7CiAgICAgICAg IHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogICAgIG1lbW9yeWti ID0gc3RydG91bGwobWVtbWF4LCAmZW5kcHRyLCAxMCk7CiAgICAgaWYgKCplbmRwdHIgIT0gJ1ww JykgewotICAgICAgICBMT0dFKEVSUk9SLCAiaW52YWxpZCBtYXggbWVtb3J5ICVzIGZyb20gJXMv bWVtb3J5L3N0YXRpYy1tYXhcbiIsCisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIkludmFs aWQgbWF4IG1lbW9yeSAlcyBmcm9tICVzL21lbW9yeS9zdGF0aWMtbWF4XG4iLAogICAgICAgICAg ICAgIG1lbW1heCwgZG9tcGF0aCk7CiAgICAgICAgIGFib3J0X3RyYW5zYWN0aW9uID0gMTsKICAg ICAgICAgcmMgPSBFUlJPUl9GQUlMOwpAQCAtNDI2MCwxOCArNDI2NSwxOCBAQCByZXRyeV90cmFu c2FjdGlvbjoKICAgICB9IGVsc2UKICAgICAgICAgbmV3X3RhcmdldF9tZW1rYiA9IHRhcmdldF9t ZW1rYiAtIHZpZGVvcmFtOwogICAgIGlmIChuZXdfdGFyZ2V0X21lbWtiID4gbWVtb3J5a2IpIHsK LSAgICAgICAgTE9HKEVSUk9SLAotICAgICAgICAgICAgIm1lbW9yeV9keW5hbWljX21heCBtdXN0 IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byIKLSAgICAgICAgICAgICIgbWVtb3J5X3N0YXRpY19t YXhcbiIpOworICAgICAgICBMT0dEKEVSUk9SLCBkb21pZCwKKyAgICAgICAgICAgICAibWVtb3J5 X2R5bmFtaWNfbWF4IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIgorICAgICAgICAgICAg ICIgbWVtb3J5X3N0YXRpY19tYXhcbiIpOwogICAgICAgICBhYm9ydF90cmFuc2FjdGlvbiA9IDE7 CiAgICAgICAgIHJjID0gRVJST1JfSU5WQUw7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAog ICAgIGlmICghZG9taWQgJiYgbmV3X3RhcmdldF9tZW1rYiA8IExJQlhMX01JTl9ET00wX01FTSkg ewotICAgICAgICBMT0coRVJST1IsCi0gICAgICAgICAgICAibmV3IHRhcmdldCAlIlBSSXU2NCIg Zm9yIGRvbTAgaXMgYmVsb3cgdGhlIG1pbmltdW0gdGhyZXNob2xkIiwKLSAgICAgICAgICAgIG5l d190YXJnZXRfbWVta2IpOworICAgICAgICBMT0dEKEVSUk9SLCBkb21pZCwKKyAgICAgICAgICAg ICAiTmV3IHRhcmdldCAlIlBSSXU2NCIgZm9yIGRvbTAgaXMgYmVsb3cgdGhlIG1pbmltdW0gdGhy ZXNob2xkIiwKKyAgICAgICAgICAgICBuZXdfdGFyZ2V0X21lbWtiKTsKICAgICAgICAgYWJvcnRf dHJhbnNhY3Rpb24gPSAxOwogICAgICAgICByYyA9IEVSUk9SX0lOVkFMOwogICAgICAgICBnb3Rv IG91dDsKQEAgLTQzNTIsMjcgKzQzNTcsMjcgQEAgc3RhdGljIGludCBsaWJ4bF9fZ2V0X21lbW9y eV90YXJnZXQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgICAgIGlmIChyYyA8 IDApCiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICB9IGVsc2UgaWYgKCF0YXJnZXQpIHsKLSAg ICAgICAgTE9HRShFUlJPUiwgImNhbm5vdCBnZXQgdGFyZ2V0IG1lbW9yeSBpbmZvIGZyb20gJXMv bWVtb3J5L3RhcmdldCIsCi0gICAgICAgICAgICAgZG9tcGF0aCk7CisgICAgICAgIExPR0VEKEVS Uk9SLCBkb21pZCwgIkNhbm5vdCBnZXQgdGFyZ2V0IG1lbW9yeSBpbmZvIGZyb20gJXMvbWVtb3J5 L3RhcmdldCIsCisgICAgICAgICAgICAgIGRvbXBhdGgpOwogICAgICAgICBnb3RvIG91dDsKICAg ICB9IGVsc2UgaWYgKCFzdGF0aWNfbWF4KSB7Ci0gICAgICAgIExPR0UoRVJST1IsCi0gICAgICAg ICAgICAgImNhbm5vdCBnZXQgdGFyZ2V0IG1lbW9yeSBpbmZvIGZyb20gJXMvbWVtb3J5L3N0YXRp Yy1tYXgiLAotICAgICAgICAgICAgIGRvbXBhdGgpOworICAgICAgICBMT0dFRChFUlJPUiwgZG9t aWQsCisgICAgICAgICAgICAgICJDYW5ub3QgZ2V0IHRhcmdldCBtZW1vcnkgaW5mbyBmcm9tICVz L21lbW9yeS9zdGF0aWMtbWF4IiwKKyAgICAgICAgICAgICAgIGRvbXBhdGgpOwogICAgICAgICBn b3RvIG91dDsKICAgICB9IGVsc2UgewogICAgICAgICB0YXJnZXRfbWVta2IgPSBzdHJ0b3VsbCh0 YXJnZXQsICZlbmRwdHIsIDEwKTsKICAgICAgICAgaWYgKCplbmRwdHIgIT0gJ1wwJykgewotICAg ICAgICAgICAgTE9HRShFUlJPUiwgImludmFsaWQgbWVtb3J5IHRhcmdldCAlcyBmcm9tICVzL21l bW9yeS90YXJnZXRcbiIsCi0gICAgICAgICAgICAgICAgIHRhcmdldCwgZG9tcGF0aCk7CisgICAg ICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJJbnZhbGlkIG1lbW9yeSB0YXJnZXQgJXMgZnJv bSAlcy9tZW1vcnkvdGFyZ2V0XG4iLAorICAgICAgICAgICAgICAgICAgdGFyZ2V0LCBkb21wYXRo KTsKICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICB9CiAgICAgICAgIG1heF9tZW1rYiA9 IHN0cnRvdWxsKHN0YXRpY19tYXgsICZlbmRwdHIsIDEwKTsKICAgICAgICAgaWYgKCplbmRwdHIg IT0gJ1wwJykgewotICAgICAgICAgICAgTE9HRShFUlJPUiwKLSAgICAgICAgICAgICAgICAgImlu dmFsaWQgbWVtb3J5IHRhcmdldCAlcyBmcm9tICVzL21lbW9yeS9zdGF0aWMtbWF4XG4iLAotICAg ICAgICAgICAgICAgICBzdGF0aWNfbWF4LAotICAgICAgICAgICAgICAgICBkb21wYXRoKTsKKyAg ICAgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICJJbnZhbGlk IG1lbW9yeSB0YXJnZXQgJXMgZnJvbSAlcy9tZW1vcnkvc3RhdGljLW1heFxuIiwKKyAgICAgICAg ICAgICAgICAgIHN0YXRpY19tYXgsCisgICAgICAgICAgICAgICAgICBkb21wYXRoKTsKICAgICAg ICAgICAgIGdvdG8gb3V0OwogICAgICAgICB9CiAKQEAgLTQ4NjQsNyArNDg2OSw3IEBAIGxpYnhs X3ZjcHVpbmZvICpsaWJ4bF9saXN0X3ZjcHUobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlk LAogICAgIHhjX3ZjcHVpbmZvX3QgdmNwdWluZm87CiAKICAgICBpZiAoeGNfZG9tYWluX2dldGlu Zm9saXN0KGN0eC0+eGNoLCBkb21pZCwgMSwgJmRvbWFpbmluZm8pICE9IDEpIHsKLSAgICAgICAg TE9HRShFUlJPUiwgImdldHRpbmcgaW5mb2xpc3QiKTsKKyAgICAgICAgTE9HRUQoRVJST1IsIGRv bWlkLCAiR2V0dGluZyBpbmZvbGlzdCIpOwogICAgICAgICBHQ19GUkVFOwogICAgICAgICByZXR1 cm4gTlVMTDsKICAgICB9CkBAIC00ODg4LDE0ICs0ODkzLDE0IEBAIGxpYnhsX3ZjcHVpbmZvICps aWJ4bF9saXN0X3ZjcHUobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICBp ZiAobGlieGxfY3B1X2JpdG1hcF9hbGxvYyhjdHgsICZwdHItPmNwdW1hcF9zb2Z0LCAwKSkKICAg ICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICBpZiAoeGNfdmNwdV9nZXRpbmZvKGN0eC0+eGNo LCBkb21pZCwgKm5yX3ZjcHVzX291dCwgJnZjcHVpbmZvKSA9PSAtMSkgewotICAgICAgICAgICAg TE9HRShFUlJPUiwgImdldHRpbmcgdmNwdSBpbmZvIik7CisgICAgICAgICAgICBMT0dFRChFUlJP UiwgZG9taWQsICJHZXR0aW5nIHZjcHUgaW5mbyIpOwogICAgICAgICAgICAgZ290byBlcnI7CiAg ICAgICAgIH0KIAogICAgICAgICBpZiAoeGNfdmNwdV9nZXRhZmZpbml0eShjdHgtPnhjaCwgZG9t aWQsICpucl92Y3B1c19vdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0ci0+ Y3B1bWFwLm1hcCwgcHRyLT5jcHVtYXBfc29mdC5tYXAsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFhFTl9WQ1BVQUZGSU5JVFlfU09GVHxYRU5fVkNQVUFGRklOSVRZX0hBUkQpID09 IC0xKSB7Ci0gICAgICAgICAgICBMT0dFKEVSUk9SLCAiZ2V0dGluZyB2Y3B1IGFmZmluaXR5Iik7 CisgICAgICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJHZXR0aW5nIHZjcHUgYWZmaW5pdHki KTsKICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICB9CiAgICAgICAgIHB0ci0+dmNwdWlk ID0gKm5yX3ZjcHVzX291dDsKQEAgLTQ5NTksNyArNDk2NCw3IEBAIHN0YXRpYyBpbnQgbGlieGxf X3NldF92Y3B1YWZmaW5pdHkobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNwdW1hcF9oYXJkID8gaGFyZC5tYXAgOiBOVUxMLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNwdW1hcF9zb2Z0ID8gc29mdC5tYXAgOiBOVUxMLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSkgewotICAgICAgICBMT0dFKEVSUk9S LCAic2V0dGluZyB2Y3B1IGFmZmluaXR5Iik7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwg IlNldHRpbmcgdmNwdSBhZmZpbml0eSIpOwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAg ICAgIGdvdG8gb3V0OwogICAgIH0KQEAgLTQ5NzEsMjAgKzQ5NzYsMTkgQEAgc3RhdGljIGludCBs aWJ4bF9fc2V0X3ZjcHVhZmZpbml0eShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAg ICAgICovCiAgICAgaWYgKGNwdW1hcF9oYXJkICYmCiAgICAgICAgICFsaWJ4bF9iaXRtYXBfZXF1 YWwoY3B1bWFwX2hhcmQsICZoYXJkLCAwKSkKLSAgICAgICAgTE9HKERFQlVHLCAiTmV3IGhhcmQg YWZmaW5pdHkgZm9yIHZjcHUgJWQgaGFzIHVucmVhY2hhYmxlIGNwdXMiLAotICAgICAgICB2Y3B1 aWQpOworICAgICAgICBMT0dEKERFQlVHLCBkb21pZCwgIk5ldyBoYXJkIGFmZmluaXR5IGZvciB2 Y3B1ICVkIGhhcyB1bnJlYWNoYWJsZSBjcHVzIiwgdmNwdWlkKTsKICAgICAvKgogICAgICAqIFNv ZnQgYWZmaW5pdHkgY2FuIGJvdGggYmUgZGlmZmVyZW50IGZyb20gd2hhdCBhc2tlZCBhbmQgZW1w dHkuIENoZWNrCiAgICAgICogZm9yIChhbmQgcmVwb3J0KSBib3RoLgogICAgICAqLwogICAgIGlm IChjcHVtYXBfc29mdCkgewogICAgICAgICBpZiAoIWxpYnhsX2JpdG1hcF9lcXVhbChjcHVtYXBf c29mdCwgJnNvZnQsIDApKQotICAgICAgICAgICAgTE9HKERFQlVHLCAiTmV3IHNvZnQgYWZmaW5p dHkgZm9yIHZjcHUgJWQgaGFzIHVucmVhY2hhYmxlIGNwdXMiLAotICAgICAgICAgICAgICAgIHZj cHVpZCk7CisgICAgICAgICAgICBMT0dEKERFQlVHLCBkb21pZCwgIk5ldyBzb2Z0IGFmZmluaXR5 IGZvciB2Y3B1ICVkIGhhcyB1bnJlYWNoYWJsZSBjcHVzIiwKKyAgICAgICAgICAgICAgICAgdmNw dWlkKTsKICAgICAgICAgaWYgKGxpYnhsX2JpdG1hcF9pc19lbXB0eSgmc29mdCkpCi0gICAgICAg ICAgICBMT0coV0FSTiwgImFsbCBjcHVzIGluIHNvZnQgYWZmaW5pdHkgb2YgdmNwdSAlZCBhcmUg dW5yZWFjaGFibGUuIgotICAgICAgICAgICAgICAgICIgT25seSBoYXJkIGFmZmluaXR5IHdpbGwg YmUgY29uc2lkZXJlZCBmb3Igc2NoZWR1bGluZyIsCi0gICAgICAgICAgICAgICAgdmNwdWlkKTsK KyAgICAgICAgICAgIExPR0QoV0FSTiwgZG9taWQsICJBbGwgY3B1cyBpbiBzb2Z0IGFmZmluaXR5 IG9mIHZjcHUgJWQgYXJlIHVucmVhY2hhYmxlLiIKKyAgICAgICAgICAgICAgICAgIiBPbmx5IGhh cmQgYWZmaW5pdHkgd2lsbCBiZSBjb25zaWRlcmVkIGZvciBzY2hlZHVsaW5nIiwKKyAgICAgICAg ICAgICAgICAgdmNwdWlkKTsKICAgICB9CiAKICAgICByYyA9IDA7CkBAIC01MDIyLDcgKzUwMjYs NyBAQCBpbnQgbGlieGxfc2V0X3ZjcHVhZmZpbml0eV9hbGwobGlieGxfY3R4ICpjdHgsIHVpbnQz Ml90IGRvbWlkLAogCiAgICAgZm9yIChpID0gMDsgaSA8IG1heF92Y3B1czsgaSsrKSB7CiAgICAg ICAgIGlmIChsaWJ4bF9zZXRfdmNwdWFmZmluaXR5KGN0eCwgZG9taWQsIGksIGNwdW1hcF9oYXJk LCBjcHVtYXBfc29mdCkpIHsKLSAgICAgICAgICAgIExPRyhXQVJOLCAiZmFpbGVkIHRvIHNldCBh ZmZpbml0eSBmb3IgJWQiLCBpKTsKKyAgICAgICAgICAgIExPR0QoV0FSTiwgZG9taWQsICJGYWls ZWQgdG8gc2V0IGFmZmluaXR5IGZvciAlZCIsIGkpOwogICAgICAgICAgICAgcmMgPSBFUlJPUl9G QUlMOwogICAgICAgICB9CiAgICAgfQpAQCAtNTAzNiw3ICs1MDQwLDcgQEAgaW50IGxpYnhsX2Rv bWFpbl9zZXRfbm9kZWFmZmluaXR5KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKIHsK ICAgICBHQ19JTklUKGN0eCk7CiAgICAgaWYgKHhjX2RvbWFpbl9ub2RlX3NldGFmZmluaXR5KGN0 eC0+eGNoLCBkb21pZCwgbm9kZW1hcC0+bWFwKSkgewotICAgICAgICBMT0dFKEVSUk9SLCAic2V0 dGluZyBub2RlIGFmZmluaXR5Iik7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIlNldHRp bmcgbm9kZSBhZmZpbml0eSIpOwogICAgICAgICBHQ19GUkVFOwogICAgICAgICByZXR1cm4gRVJS T1JfRkFJTDsKICAgICB9CkBAIC01MDQ5LDcgKzUwNTMsNyBAQCBpbnQgbGlieGxfZG9tYWluX2dl dF9ub2RlYWZmaW5pdHkobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogewogICAgIEdD X0lOSVQoY3R4KTsKICAgICBpZiAoeGNfZG9tYWluX25vZGVfZ2V0YWZmaW5pdHkoY3R4LT54Y2gs IGRvbWlkLCBub2RlbWFwLT5tYXApKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJnZXR0aW5nIG5v ZGUgYWZmaW5pdHkiKTsKKyAgICAgICAgTE9HRUQoRVJST1IsIGRvbWlkLCAiR2V0dGluZyBub2Rl IGFmZmluaXR5Iik7CiAgICAgICAgIEdDX0ZSRUU7CiAgICAgICAgIHJldHVybiBFUlJPUl9GQUlM OwogICAgIH0KQEAgLTUwOTcsNyArNTEwMSw3IEBAIHN0YXRpYyBpbnQgbGlieGxfX3NldF92Y3B1 b25saW5lX3FtcChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICBsaWJ4bF9iaXRt YXBfc2V0X25vbmUoJmN1cnJlbnRfbWFwKTsKICAgICByYyA9IGxpYnhsX19xbXBfcXVlcnlfY3B1 cyhnYywgZG9taWQsICZjdXJyZW50X21hcCk7CiAgICAgaWYgKHJjKSB7Ci0gICAgICAgIExPRyhF UlJPUiwgImZhaWxlZCB0byBxdWVyeSBjcHVzIGZvciBkb21haW4gJWQiLCBkb21pZCk7CisgICAg ICAgIExPR0QoRVJST1IsIGRvbWlkLCAiRmFpbGVkIHRvIHF1ZXJ5IGNwdXMiKTsKICAgICAgICAg Z290byBvdXQ7CiAgICAgfQogCkBAIC01MTMxLDE1ICs1MTM1LDE1IEBAIGludCBsaWJ4bF9zZXRf dmNwdW9ubGluZShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIGxpYnhsX2JpdG1hcCAq Y3B1bWFwKQogCiAgICAgcmMgPSBsaWJ4bF9kb21haW5faW5mbyhDVFgsICZpbmZvLCBkb21pZCk7 CiAgICAgaWYgKHJjIDwgMCkgewotICAgICAgICBMT0dFKEVSUk9SLCAiZ2V0dGluZyBkb21haW4g aW5mbyBsaXN0Iik7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIkdldHRpbmcgZG9tYWlu IGluZm8gbGlzdCIpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKICAgICBtYXhjcHVzID0g bGlieGxfYml0bWFwX2NvdW50X3NldChjcHVtYXApOwogICAgIGlmIChtYXhjcHVzID4gaW5mby52 Y3B1X21heF9pZCArIDEpCiAgICAgewotICAgICAgICBMT0dFKEVSUk9SLCAiUmVxdWVzdGVkICVk IFZDUFVzLCBob3dldmVyIG1heGNwdXMgaXMgJWQhIiwKLSAgICAgICAgICAgICBtYXhjcHVzLCBp bmZvLnZjcHVfbWF4X2lkICsgMSk7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIlJlcXVl c3RlZCAlZCBWQ1BVcywgaG93ZXZlciBtYXhjcHVzIGlzICVkISIsCisgICAgICAgICAgICAgIG1h eGNwdXMsIGluZm8udmNwdV9tYXhfaWQgKyAxKTsKICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwog ICAgICAgICBnb3RvIG91dDsKICAgICB9CkBAIC01MjAwLDcgKzUyMDQsNyBAQCBzdGF0aWMgaW50 IHNjaGVkX2NyZWRpdF9kb21haW5fZ2V0KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAog CiAgICAgcmMgPSB4Y19zY2hlZF9jcmVkaXRfZG9tYWluX2dldChDVFgtPnhjaCwgZG9taWQsICZz ZG9tKTsKICAgICBpZiAocmMgIT0gMCkgewotICAgICAgICBMT0dFKEVSUk9SLCAiZ2V0dGluZyBk b21haW4gc2NoZWQgY3JlZGl0Iik7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIkdldHRp bmcgZG9tYWluIHNjaGVkIGNyZWRpdCIpOwogICAgICAgICByZXR1cm4gRVJST1JfRkFJTDsKICAg ICB9CiAKQEAgLTUyMjEsNyArNTIyNSw3IEBAIHN0YXRpYyBpbnQgc2NoZWRfY3JlZGl0X2RvbWFp bl9zZXQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAKICAgICByYyA9IHhjX2RvbWFp bl9nZXRpbmZvbGlzdChDVFgtPnhjaCwgZG9taWQsIDEsICZkb21haW5pbmZvKTsKICAgICBpZiAo cmMgPCAwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJnZXR0aW5nIGRvbWFpbiBpbmZvIGxpc3Qi KTsKKyAgICAgICAgTE9HRUQoRVJST1IsIGRvbWlkLCAiR2V0dGluZyBkb21haW4gaW5mbyBsaXN0 Iik7CiAgICAgICAgIHJldHVybiBFUlJPUl9GQUlMOwogICAgIH0KICAgICBpZiAocmMgIT0gMSB8 fCBkb21haW5pbmZvLmRvbWFpbiAhPSBkb21pZCkKQEAgLTUyMjksMTQgKzUyMzMsMTQgQEAgc3Rh dGljIGludCBzY2hlZF9jcmVkaXRfZG9tYWluX3NldChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBk b21pZCwKIAogICAgIHJjID0geGNfc2NoZWRfY3JlZGl0X2RvbWFpbl9nZXQoQ1RYLT54Y2gsIGRv bWlkLCAmc2RvbSk7CiAgICAgaWYgKHJjICE9IDApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgImdl dHRpbmcgZG9tYWluIHNjaGVkIGNyZWRpdCIpOworICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQs ICJHZXR0aW5nIGRvbWFpbiBzY2hlZCBjcmVkaXQiKTsKICAgICAgICAgcmV0dXJuIEVSUk9SX0ZB SUw7CiAgICAgfQogCiAgICAgaWYgKHNjaW5mby0+d2VpZ2h0ICE9IExJQlhMX0RPTUFJTl9TQ0hF RF9QQVJBTV9XRUlHSFRfREVGQVVMVCkgewogICAgICAgICBpZiAoc2NpbmZvLT53ZWlnaHQgPCAx IHx8IHNjaW5mby0+d2VpZ2h0ID4gNjU1MzUpIHsKLSAgICAgICAgICAgIExPRyhFUlJPUiwgIkNw dSB3ZWlnaHQgb3V0IG9mIHJhbmdlLCAiCi0gICAgICAgICAgICAgICAgInZhbGlkIHZhbHVlcyBh cmUgd2l0aGluIHJhbmdlIGZyb20gMSB0byA2NTUzNSIpOworICAgICAgICAgICAgTE9HRChFUlJP UiwgZG9taWQsICJDcHUgd2VpZ2h0IG91dCBvZiByYW5nZSwgIgorICAgICAgICAgICAgICAgICAi dmFsaWQgdmFsdWVzIGFyZSB3aXRoaW4gcmFuZ2UgZnJvbSAxIHRvIDY1NTM1Iik7CiAgICAgICAg ICAgICByZXR1cm4gRVJST1JfSU5WQUw7CiAgICAgICAgIH0KICAgICAgICAgc2RvbS53ZWlnaHQg PSBzY2luZm8tPndlaWdodDsKQEAgLTUyNDUsOSArNTI0OSw5IEBAIHN0YXRpYyBpbnQgc2NoZWRf Y3JlZGl0X2RvbWFpbl9zZXQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgaWYg KHNjaW5mby0+Y2FwICE9IExJQlhMX0RPTUFJTl9TQ0hFRF9QQVJBTV9DQVBfREVGQVVMVCkgewog ICAgICAgICBpZiAoc2NpbmZvLT5jYXAgPCAwCiAgICAgICAgICAgICB8fCBzY2luZm8tPmNhcCA+ IChkb21haW5pbmZvLm1heF92Y3B1X2lkICsgMSkgKiAxMDApIHsKLSAgICAgICAgICAgIExPRyhF UlJPUiwgIkNwdSBjYXAgb3V0IG9mIHJhbmdlLCAiCi0gICAgICAgICAgICAgICAgInZhbGlkIHJh bmdlIGlzIGZyb20gMCB0byAlZCBmb3Igc3BlY2lmaWVkIG51bWJlciBvZiB2Y3B1cyIsCi0gICAg ICAgICAgICAgICAgKChkb21haW5pbmZvLm1heF92Y3B1X2lkICsgMSkgKiAxMDApKTsKKyAgICAg ICAgICAgIExPR0QoRVJST1IsIGRvbWlkLCAiQ3B1IGNhcCBvdXQgb2YgcmFuZ2UsICIKKyAgICAg ICAgICAgICAgICAgInZhbGlkIHJhbmdlIGlzIGZyb20gMCB0byAlZCBmb3Igc3BlY2lmaWVkIG51 bWJlciBvZiB2Y3B1cyIsCisgICAgICAgICAgICAgICAgICgoZG9tYWluaW5mby5tYXhfdmNwdV9p ZCArIDEpICogMTAwKSk7CiAgICAgICAgICAgICByZXR1cm4gRVJST1JfSU5WQUw7CiAgICAgICAg IH0KICAgICAgICAgc2RvbS5jYXAgPSBzY2luZm8tPmNhcDsKQEAgLTUyNTUsNyArNTI1OSw3IEBA IHN0YXRpYyBpbnQgc2NoZWRfY3JlZGl0X2RvbWFpbl9zZXQobGlieGxfX2djICpnYywgdWludDMy X3QgZG9taWQsCiAKICAgICByYyA9IHhjX3NjaGVkX2NyZWRpdF9kb21haW5fc2V0KENUWC0+eGNo LCBkb21pZCwgJnNkb20pOwogICAgIGlmICggcmMgPCAwICkgewotICAgICAgICBMT0dFKEVSUk9S LCAic2V0dGluZyBkb21haW4gc2NoZWQgY3JlZGl0Iik7CisgICAgICAgIExPR0VEKEVSUk9SLCBk b21pZCwgIlNldHRpbmcgZG9tYWluIHNjaGVkIGNyZWRpdCIpOwogICAgICAgICByZXR1cm4gRVJS T1JfRkFJTDsKICAgICB9CiAKQEAgLTUzOTksNyArNTQwMyw3IEBAIHN0YXRpYyBpbnQgc2NoZWRf Y3JlZGl0Ml9kb21haW5fZ2V0KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogCiAgICAg cmMgPSB4Y19zY2hlZF9jcmVkaXQyX2RvbWFpbl9nZXQoQ1RYLT54Y2gsIGRvbWlkLCAmc2RvbSk7 CiAgICAgaWYgKHJjICE9IDApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgImdldHRpbmcgZG9tYWlu IHNjaGVkIGNyZWRpdDIiKTsKKyAgICAgICAgTE9HRUQoRVJST1IsIGRvbWlkLCAiR2V0dGluZyBk b21haW4gc2NoZWQgY3JlZGl0MiIpOwogICAgICAgICByZXR1cm4gRVJST1JfRkFJTDsKICAgICB9 CiAKQEAgLTU0MTgsMTQgKzU0MjIsMTQgQEAgc3RhdGljIGludCBzY2hlZF9jcmVkaXQyX2RvbWFp bl9zZXQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAKICAgICByYyA9IHhjX3NjaGVk X2NyZWRpdDJfZG9tYWluX2dldChDVFgtPnhjaCwgZG9taWQsICZzZG9tKTsKICAgICBpZiAocmMg IT0gMCkgewotICAgICAgICBMT0dFKEVSUk9SLCAiZ2V0dGluZyBkb21haW4gc2NoZWQgY3JlZGl0 MiIpOworICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJHZXR0aW5nIGRvbWFpbiBzY2hlZCBj cmVkaXQyIik7CiAgICAgICAgIHJldHVybiBFUlJPUl9GQUlMOwogICAgIH0KIAogICAgIGlmIChz Y2luZm8tPndlaWdodCAhPSBMSUJYTF9ET01BSU5fU0NIRURfUEFSQU1fV0VJR0hUX0RFRkFVTFQp IHsKICAgICAgICAgaWYgKHNjaW5mby0+d2VpZ2h0IDwgMSB8fCBzY2luZm8tPndlaWdodCA+IDY1 NTM1KSB7Ci0gICAgICAgICAgICBMT0coRVJST1IsICJDcHUgd2VpZ2h0IG91dCBvZiByYW5nZSwg IgotICAgICAgICAgICAgICAgICAgICAgICAidmFsaWQgdmFsdWVzIGFyZSB3aXRoaW4gcmFuZ2Ug ZnJvbSAxIHRvIDY1NTM1Iik7CisgICAgICAgICAgICBMT0dEKEVSUk9SLCBkb21pZCwgIkNwdSB3 ZWlnaHQgb3V0IG9mIHJhbmdlLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAidmFsaWQgdmFs dWVzIGFyZSB3aXRoaW4gcmFuZ2UgZnJvbSAxIHRvIDY1NTM1Iik7CiAgICAgICAgICAgICByZXR1 cm4gRVJST1JfSU5WQUw7CiAgICAgICAgIH0KICAgICAgICAgc2RvbS53ZWlnaHQgPSBzY2luZm8t PndlaWdodDsKQEAgLTU0MzMsNyArNTQzNyw3IEBAIHN0YXRpYyBpbnQgc2NoZWRfY3JlZGl0Ml9k b21haW5fc2V0KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogCiAgICAgcmMgPSB4Y19z Y2hlZF9jcmVkaXQyX2RvbWFpbl9zZXQoQ1RYLT54Y2gsIGRvbWlkLCAmc2RvbSk7CiAgICAgaWYg KCByYyA8IDAgKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJzZXR0aW5nIGRvbWFpbiBzY2hlZCBj cmVkaXQyIik7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIlNldHRpbmcgZG9tYWluIHNj aGVkIGNyZWRpdDIiKTsKICAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7CiAgICAgfQogCkBAIC01 NDc4LDcgKzU0ODIsNyBAQCBzdGF0aWMgaW50IHNjaGVkX3J0ZHNfdmNwdV9nZXQobGlieGxfX2dj ICpnYywgdWludDMyX3QgZG9taWQsCiAKICAgICByID0geGNfZG9tYWluX2dldGluZm8oQ1RYLT54 Y2gsIGRvbWlkLCAxLCAmaW5mbyk7CiAgICAgaWYgKHIgPCAwKSB7Ci0gICAgICAgIExPR0UoRVJS T1IsICJnZXR0aW5nIGRvbWFpbiBpbmZvIik7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwg IkdldHRpbmcgZG9tYWluIGluZm8iKTsKICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAg ICBnb3RvIG91dDsKICAgICB9CkBAIC01NDkyLDkgKzU0OTYsOSBAQCBzdGF0aWMgaW50IHNjaGVk X3J0ZHNfdmNwdV9nZXQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgICAgIGZv ciAoaSA9IDA7IGkgPCBudW1fdmNwdXM7IGkrKykgewogICAgICAgICAgICAgaWYgKHNjaW5mby0+ dmNwdXNbaV0udmNwdWlkIDwgMCB8fAogICAgICAgICAgICAgICAgIHNjaW5mby0+dmNwdXNbaV0u dmNwdWlkID4gaW5mby5tYXhfdmNwdV9pZCkgewotICAgICAgICAgICAgICAgIExPRyhFUlJPUiwg IlZDUFUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAidmFsaWQgdmFsdWVzIGFyZSB3aXRoaW4gcmFuZ2UgZnJvbSAwIHRvICVkIiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluZm8ubWF4X3ZjcHVfaWQpOworICAgICAgICAgICAgICAgIExP R0QoRVJST1IsIGRvbWlkLCAiVkNQVSBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsICIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAidmFsaWQgdmFsdWVzIGFyZSB3aXRoaW4gcmFuZ2UgZnJvbSAw IHRvICVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLm1heF92Y3B1X2lkKTsK ICAgICAgICAgICAgICAgICByYyA9IEVSUk9SX0lOVkFMOwogICAgICAgICAgICAgICAgIGdvdG8g b3V0OwogICAgICAgICAgICAgfQpAQCAtNTUwNCw3ICs1NTA4LDcgQEAgc3RhdGljIGludCBzY2hl ZF9ydGRzX3ZjcHVfZ2V0KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogCiAgICAgciA9 IHhjX3NjaGVkX3J0ZHNfdmNwdV9nZXQoQ1RYLT54Y2gsIGRvbWlkLCB2Y3B1cywgbnVtX3ZjcHVz KTsKICAgICBpZiAociAhPSAwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJnZXR0aW5nIHZjcHUg c2NoZWQgcnRkcyIpOworICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJHZXR0aW5nIHZjcHUg c2NoZWQgcnRkcyIpOwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdvdG8gb3V0 OwogICAgIH0KQEAgLTU1MzAsNyArNTUzNCw3IEBAIHN0YXRpYyBpbnQgc2NoZWRfcnRkc192Y3B1 X2dldF9hbGwobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAKICAgICByID0geGNfZG9t YWluX2dldGluZm8oQ1RYLT54Y2gsIGRvbWlkLCAxLCAmaW5mbyk7CiAgICAgaWYgKHIgPCAwKSB7 Ci0gICAgICAgIExPR0UoRVJST1IsICJnZXR0aW5nIGRvbWFpbiBpbmZvIik7CisgICAgICAgIExP R0VEKEVSUk9SLCBkb21pZCwgIkdldHRpbmcgZG9tYWluIGluZm8iKTsKICAgICAgICAgcmMgPSBF UlJPUl9GQUlMOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CkBAIC01NTQ3LDcgKzU1NTEsNyBA QCBzdGF0aWMgaW50IHNjaGVkX3J0ZHNfdmNwdV9nZXRfYWxsKGxpYnhsX19nYyAqZ2MsIHVpbnQz Ml90IGRvbWlkLAogCiAgICAgciA9IHhjX3NjaGVkX3J0ZHNfdmNwdV9nZXQoQ1RYLT54Y2gsIGRv bWlkLCB2Y3B1cywgbnVtX3ZjcHVzKTsKICAgICBpZiAociAhPSAwKSB7Ci0gICAgICAgIExPR0Uo RVJST1IsICJnZXR0aW5nIHZjcHUgc2NoZWQgcnRkcyIpOworICAgICAgICBMT0dFRChFUlJPUiwg ZG9taWQsICJHZXR0aW5nIHZjcHUgc2NoZWQgcnRkcyIpOwogICAgICAgICByYyA9IEVSUk9SX0ZB SUw7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KQEAgLTU1NzgsNyArNTU4Miw3IEBAIHN0YXRp YyBpbnQgc2NoZWRfcnRkc192Y3B1X3NldChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwK IAogICAgIHIgPSB4Y19kb21haW5fZ2V0aW5mbyhDVFgtPnhjaCwgZG9taWQsIDEsICZpbmZvKTsK ICAgICBpZiAociA8IDApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgImdldHRpbmcgZG9tYWluIGlu Zm8iKTsKKyAgICAgICAgTE9HRUQoRVJST1IsIGRvbWlkLCAiR2V0dGluZyBkb21haW4gaW5mbyIp OwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KQEAg LTU1OTEsOCArNTU5NSw4IEBAIHN0YXRpYyBpbnQgc2NoZWRfcnRkc192Y3B1X3NldChsaWJ4bF9f Z2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICBmb3IgKGkgPSAwOyBpIDwgc2NpbmZvLT5udW1f dmNwdXM7IGkrKykgewogICAgICAgICBpZiAoc2NpbmZvLT52Y3B1c1tpXS52Y3B1aWQgPCAwIHx8 CiAgICAgICAgICAgICBzY2luZm8tPnZjcHVzW2ldLnZjcHVpZCA+IG1heF92Y3B1aWQpIHsKLSAg ICAgICAgICAgIExPRyhFUlJPUiwgIkludmFsaWQgVkNQVSAlZDogdmFsaWQgcmFuZ2UgaXMgWzAs ICVkXSIsCi0gICAgICAgICAgICAgICAgICAgICAgIHNjaW5mby0+dmNwdXNbaV0udmNwdWlkLCBt YXhfdmNwdWlkKTsKKyAgICAgICAgICAgIExPR0QoRVJST1IsIGRvbWlkLCAiSW52YWxpZCBWQ1BV ICVkOiB2YWxpZCByYW5nZSBpcyBbMCwgJWRdIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNj aW5mby0+dmNwdXNbaV0udmNwdWlkLCBtYXhfdmNwdWlkKTsKICAgICAgICAgICAgIHJjID0gRVJS T1JfSU5WQUw7CiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgfQpAQCAtNTYxMyw3ICs1 NjE3LDcgQEAgc3RhdGljIGludCBzY2hlZF9ydGRzX3ZjcHVfc2V0KGxpYnhsX19nYyAqZ2MsIHVp bnQzMl90IGRvbWlkLAogICAgIHIgPSB4Y19zY2hlZF9ydGRzX3ZjcHVfc2V0KENUWC0+eGNoLCBk b21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Y3B1cywgc2NpbmZvLT5udW1f dmNwdXMpOwogICAgIGlmIChyICE9IDApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgInNldHRpbmcg dmNwdSBzY2hlZCBydGRzIik7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIlNldHRpbmcg dmNwdSBzY2hlZCBydGRzIik7CiAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgZ290 byBvdXQ7CiAgICAgfQpAQCAtNTYzNSw3ICs1NjM5LDcgQEAgc3RhdGljIGludCBzY2hlZF9ydGRz X3ZjcHVfc2V0X2FsbChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKIAogICAgIHIgPSB4 Y19kb21haW5fZ2V0aW5mbyhDVFgtPnhjaCwgZG9taWQsIDEsICZpbmZvKTsKICAgICBpZiAociA8 IDApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgImdldHRpbmcgZG9tYWluIGluZm8iKTsKKyAgICAg ICAgTE9HRUQoRVJST1IsIGRvbWlkLCAiR2V0dGluZyBkb21haW4gaW5mbyIpOwogICAgICAgICBy YyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KQEAgLTU2NjEsNyArNTY2 NSw3IEBAIHN0YXRpYyBpbnQgc2NoZWRfcnRkc192Y3B1X3NldF9hbGwobGlieGxfX2djICpnYywg dWludDMyX3QgZG9taWQsCiAgICAgciA9IHhjX3NjaGVkX3J0ZHNfdmNwdV9zZXQoQ1RYLT54Y2gs IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZjcHVzLCBudW1fdmNwdXMp OwogICAgIGlmIChyICE9IDApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgInNldHRpbmcgdmNwdSBz Y2hlZCBydGRzIik7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIlNldHRpbmcgdmNwdSBz Y2hlZCBydGRzIik7CiAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgZ290byBvdXQ7 CiAgICAgfQpAQCAtNTY3OCw3ICs1NjgyLDcgQEAgc3RhdGljIGludCBzY2hlZF9ydGRzX2RvbWFp bl9nZXQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAKICAgICByYyA9IHhjX3NjaGVk X3J0ZHNfZG9tYWluX2dldChDVFgtPnhjaCwgZG9taWQsICZzZG9tKTsKICAgICBpZiAocmMgIT0g MCkgewotICAgICAgICBMT0dFKEVSUk9SLCAiZ2V0dGluZyBkb21haW4gc2NoZWQgcnRkcyIpOwor ICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJHZXR0aW5nIGRvbWFpbiBzY2hlZCBydGRzIik7 CiAgICAgICAgIHJldHVybiBFUlJPUl9GQUlMOwogICAgIH0KIApAQCAtNTY5OSw3ICs1NzAzLDcg QEAgc3RhdGljIGludCBzY2hlZF9ydGRzX2RvbWFpbl9zZXQobGlieGxfX2djICpnYywgdWludDMy X3QgZG9taWQsCiAKICAgICByYyA9IHhjX3NjaGVkX3J0ZHNfZG9tYWluX2dldChDVFgtPnhjaCwg ZG9taWQsICZzZG9tKTsKICAgICBpZiAocmMgIT0gMCkgewotICAgICAgICBMT0dFKEVSUk9SLCAi Z2V0dGluZyBkb21haW4gc2NoZWQgcnRkcyIpOworICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQs ICJHZXR0aW5nIGRvbWFpbiBzY2hlZCBydGRzIik7CiAgICAgICAgIHJldHVybiBFUlJPUl9GQUlM OwogICAgIH0KICAgICBpZiAoc2NpbmZvLT5wZXJpb2QgIT0gTElCWExfRE9NQUlOX1NDSEVEX1BB UkFNX1BFUklPRF9ERUZBVUxUKQpAQCAtNTcxMSw3ICs1NzE1LDcgQEAgc3RhdGljIGludCBzY2hl ZF9ydGRzX2RvbWFpbl9zZXQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAKICAgICBy YyA9IHhjX3NjaGVkX3J0ZHNfZG9tYWluX3NldChDVFgtPnhjaCwgZG9taWQsICZzZG9tKTsKICAg ICBpZiAocmMgPCAwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJzZXR0aW5nIGRvbWFpbiBzY2hl ZCBydGRzIik7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIlNldHRpbmcgZG9tYWluIHNj aGVkIHJ0ZHMiKTsKICAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7CiAgICAgfQogCkBAIC01NzMw LDcgKzU3MzQsNyBAQCBpbnQgbGlieGxfZG9tYWluX3NjaGVkX3BhcmFtc19zZXQobGlieGxfY3R4 ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogCiAgICAgc3dpdGNoIChzY2hlZCkgewogICAgIGNhc2Ug TElCWExfU0NIRURVTEVSX1NFREY6Ci0gICAgICAgIExPRyhFUlJPUiwgIlNFREYgc2NoZWR1bGVy IG5vIGxvbmdlciBhdmFpbGFibGUiKTsKKyAgICAgICAgTE9HRChFUlJPUiwgZG9taWQsICJTRURG IHNjaGVkdWxlciBubyBsb25nZXIgYXZhaWxhYmxlIik7CiAgICAgICAgIHJldD1FUlJPUl9GRUFU VVJFX1JFTU9WRUQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTElCWExfU0NIRURVTEVSX0NS RURJVDoKQEAgLTU3NDYsNyArNTc1MCw3IEBAIGludCBsaWJ4bF9kb21haW5fc2NoZWRfcGFyYW1z X3NldChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgIHJldD1zY2hlZF9y dGRzX2RvbWFpbl9zZXQoZ2MsIGRvbWlkLCBzY2luZm8pOwogICAgICAgICBicmVhazsKICAgICBk ZWZhdWx0OgotICAgICAgICBMT0coRVJST1IsICJVbmtub3duIHNjaGVkdWxlciIpOworICAgICAg ICBMT0dEKEVSUk9SLCBkb21pZCwgIlVua25vd24gc2NoZWR1bGVyIik7CiAgICAgICAgIHJldD1F UlJPUl9JTlZBTDsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTc2NywyMCArNTc3MSwyMCBA QCBpbnQgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfc2V0KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJf dCBkb21pZCwKIAogICAgIHN3aXRjaCAoc2NoZWQpIHsKICAgICBjYXNlIExJQlhMX1NDSEVEVUxF Ul9TRURGOgotICAgICAgICBMT0coRVJST1IsICJTRURGIHNjaGVkdWxlciBubyBsb25nZXIgYXZh aWxhYmxlIik7CisgICAgICAgIExPR0QoRVJST1IsIGRvbWlkLCAiU0VERiBzY2hlZHVsZXIgbm8g bG9uZ2VyIGF2YWlsYWJsZSIpOwogICAgICAgICByYyA9IEVSUk9SX0ZFQVRVUkVfUkVNT1ZFRDsK ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMSUJYTF9TQ0hFRFVMRVJfQ1JFRElUOgogICAgIGNh c2UgTElCWExfU0NIRURVTEVSX0NSRURJVDI6CiAgICAgY2FzZSBMSUJYTF9TQ0hFRFVMRVJfQVJJ TkM2NTM6Ci0gICAgICAgIExPRyhFUlJPUiwgInBlci1WQ1BVIHBhcmFtZXRlciBzZXR0aW5nIG5v dCBzdXBwb3J0ZWQgZm9yIHRoaXMgc2NoZWR1bGVyIik7CisgICAgICAgIExPR0QoRVJST1IsIGRv bWlkLCAicGVyLVZDUFUgcGFyYW1ldGVyIHNldHRpbmcgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBz Y2hlZHVsZXIiKTsKICAgICAgICAgcmMgPSBFUlJPUl9JTlZBTDsKICAgICAgICAgYnJlYWs7CiAg ICAgY2FzZSBMSUJYTF9TQ0hFRFVMRVJfUlREUzoKICAgICAgICAgcmMgPSBzY2hlZF9ydGRzX3Zj cHVfc2V0KGdjLCBkb21pZCwgc2NpbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK LSAgICAgICAgTE9HKEVSUk9SLCAiVW5rbm93biBzY2hlZHVsZXIiKTsKKyAgICAgICAgTE9HRChF UlJPUiwgZG9taWQsICJVbmtub3duIHNjaGVkdWxlciIpOwogICAgICAgICByYyA9IEVSUk9SX0lO VkFMOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC01ODAxLDIwICs1ODA1LDIwIEBAIGludCBs aWJ4bF92Y3B1X3NjaGVkX3BhcmFtc19zZXRfYWxsKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBk b21pZCwKIAogICAgIHN3aXRjaCAoc2NoZWQpIHsKICAgICBjYXNlIExJQlhMX1NDSEVEVUxFUl9T RURGOgotICAgICAgICBMT0coRVJST1IsICJTRURGIHNjaGVkdWxlciBubyBsb25nZXIgYXZhaWxh YmxlIik7CisgICAgICAgIExPR0QoRVJST1IsIGRvbWlkLCAiU0VERiBzY2hlZHVsZXIgbm8gbG9u Z2VyIGF2YWlsYWJsZSIpOwogICAgICAgICByYyA9IEVSUk9SX0ZFQVRVUkVfUkVNT1ZFRDsKICAg ICAgICAgYnJlYWs7CiAgICAgY2FzZSBMSUJYTF9TQ0hFRFVMRVJfQ1JFRElUOgogICAgIGNhc2Ug TElCWExfU0NIRURVTEVSX0NSRURJVDI6CiAgICAgY2FzZSBMSUJYTF9TQ0hFRFVMRVJfQVJJTkM2 NTM6Ci0gICAgICAgIExPRyhFUlJPUiwgInBlci1WQ1BVIHBhcmFtZXRlciBzZXR0aW5nIG5vdCBz dXBwb3J0ZWQgZm9yIHRoaXMgc2NoZWR1bGVyIik7CisgICAgICAgIExPR0QoRVJST1IsIGRvbWlk LCAicGVyLVZDUFUgcGFyYW1ldGVyIHNldHRpbmcgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBzY2hl ZHVsZXIiKTsKICAgICAgICAgcmMgPSBFUlJPUl9JTlZBTDsKICAgICAgICAgYnJlYWs7CiAgICAg Y2FzZSBMSUJYTF9TQ0hFRFVMRVJfUlREUzoKICAgICAgICAgcmMgPSBzY2hlZF9ydGRzX3ZjcHVf c2V0X2FsbChnYywgZG9taWQsIHNjaW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6 Ci0gICAgICAgIExPRyhFUlJPUiwgIlVua25vd24gc2NoZWR1bGVyIik7CisgICAgICAgIExPR0Qo RVJST1IsIGRvbWlkLCAiVW5rbm93biBzY2hlZHVsZXIiKTsKICAgICAgICAgcmMgPSBFUlJPUl9J TlZBTDsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTgzNSw3ICs1ODM5LDcgQEAgaW50IGxp YnhsX2RvbWFpbl9zY2hlZF9wYXJhbXNfZ2V0KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21p ZCwKIAogICAgIHN3aXRjaCAoc2NpbmZvLT5zY2hlZCkgewogICAgIGNhc2UgTElCWExfU0NIRURV TEVSX1NFREY6Ci0gICAgICAgIExPRyhFUlJPUiwgIlNFREYgc2NoZWR1bGVyIG5vIGxvbmdlciBh dmFpbGFibGUiKTsKKyAgICAgICAgTE9HRChFUlJPUiwgZG9taWQsICJTRURGIHNjaGVkdWxlciBu byBsb25nZXIgYXZhaWxhYmxlIik7CiAgICAgICAgIHJldD1FUlJPUl9GRUFUVVJFX1JFTU9WRUQ7 CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTElCWExfU0NIRURVTEVSX0NSRURJVDoKQEAgLTU4 NDgsNyArNTg1Miw3IEBAIGludCBsaWJ4bF9kb21haW5fc2NoZWRfcGFyYW1zX2dldChsaWJ4bF9j dHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgIHJldD1zY2hlZF9ydGRzX2RvbWFpbl9n ZXQoZ2MsIGRvbWlkLCBzY2luZm8pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAg ICAgICBMT0coRVJST1IsICJVbmtub3duIHNjaGVkdWxlciIpOworICAgICAgICBMT0dEKEVSUk9S LCBkb21pZCwgIlVua25vd24gc2NoZWR1bGVyIik7CiAgICAgICAgIHJldD1FUlJPUl9JTlZBTDsK ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTg2NywyMCArNTg3MSwyMCBAQCBpbnQgbGlieGxf dmNwdV9zY2hlZF9wYXJhbXNfZ2V0KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKIAog ICAgIHN3aXRjaCAoc2NpbmZvLT5zY2hlZCkgewogICAgIGNhc2UgTElCWExfU0NIRURVTEVSX1NF REY6Ci0gICAgICAgIExPRyhFUlJPUiwgIlNFREYgc2NoZWR1bGVyIGlzIG5vIGxvbmdlciBhdmFp bGFibGUiKTsKKyAgICAgICAgTE9HRChFUlJPUiwgZG9taWQsICJTRURGIHNjaGVkdWxlciBpcyBu byBsb25nZXIgYXZhaWxhYmxlIik7CiAgICAgICAgIHJjID0gRVJST1JfRkVBVFVSRV9SRU1PVkVE OwogICAgICAgICBicmVhazsKICAgICBjYXNlIExJQlhMX1NDSEVEVUxFUl9DUkVESVQ6CiAgICAg Y2FzZSBMSUJYTF9TQ0hFRFVMRVJfQ1JFRElUMjoKICAgICBjYXNlIExJQlhMX1NDSEVEVUxFUl9B UklOQzY1MzoKLSAgICAgICAgTE9HKEVSUk9SLCAicGVyLVZDUFUgcGFyYW1ldGVyIGdldHRpbmcg bm90IHN1cHBvcnRlZCBmb3IgdGhpcyBzY2hlZHVsZXIiKTsKKyAgICAgICAgTE9HRChFUlJPUiwg ZG9taWQsICJwZXItVkNQVSBwYXJhbWV0ZXIgZ2V0dGluZyBub3Qgc3VwcG9ydGVkIGZvciB0aGlz IHNjaGVkdWxlciIpOwogICAgICAgICByYyA9IEVSUk9SX0lOVkFMOwogICAgICAgICBicmVhazsK ICAgICBjYXNlIExJQlhMX1NDSEVEVUxFUl9SVERTOgogICAgICAgICByYyA9IHNjaGVkX3J0ZHNf dmNwdV9nZXQoZ2MsIGRvbWlkLCBzY2luZm8pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0 OgotICAgICAgICBMT0coRVJST1IsICJVbmtub3duIHNjaGVkdWxlciIpOworICAgICAgICBMT0dE KEVSUk9SLCBkb21pZCwgIlVua25vd24gc2NoZWR1bGVyIik7CiAgICAgICAgIHJjID0gRVJST1Jf SU5WQUw7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTU4OTksMjAgKzU5MDMsMjAgQEAgaW50 IGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2dldF9hbGwobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90 IGRvbWlkLAogCiAgICAgc3dpdGNoIChzY2luZm8tPnNjaGVkKSB7CiAgICAgY2FzZSBMSUJYTF9T Q0hFRFVMRVJfU0VERjoKLSAgICAgICAgTE9HKEVSUk9SLCAiU0VERiBzY2hlZHVsZXIgaXMgbm8g bG9uZ2VyIGF2YWlsYWJsZSIpOworICAgICAgICBMT0dEKEVSUk9SLCBkb21pZCwgIlNFREYgc2No ZWR1bGVyIGlzIG5vIGxvbmdlciBhdmFpbGFibGUiKTsKICAgICAgICAgcmMgPSBFUlJPUl9GRUFU VVJFX1JFTU9WRUQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTElCWExfU0NIRURVTEVSX0NS RURJVDoKICAgICBjYXNlIExJQlhMX1NDSEVEVUxFUl9DUkVESVQyOgogICAgIGNhc2UgTElCWExf U0NIRURVTEVSX0FSSU5DNjUzOgotICAgICAgICBMT0coRVJST1IsICJwZXItVkNQVSBwYXJhbWV0 ZXIgZ2V0dGluZyBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIHNjaGVkdWxlciIpOworICAgICAgICBM T0dEKEVSUk9SLCBkb21pZCwgInBlci1WQ1BVIHBhcmFtZXRlciBnZXR0aW5nIG5vdCBzdXBwb3J0 ZWQgZm9yIHRoaXMgc2NoZWR1bGVyIik7CiAgICAgICAgIHJjID0gRVJST1JfSU5WQUw7CiAgICAg ICAgIGJyZWFrOwogICAgIGNhc2UgTElCWExfU0NIRURVTEVSX1JURFM6CiAgICAgICAgIHJjID0g c2NoZWRfcnRkc192Y3B1X2dldF9hbGwoZ2MsIGRvbWlkLCBzY2luZm8pOwogICAgICAgICBicmVh azsKICAgICBkZWZhdWx0OgotICAgICAgICBMT0coRVJST1IsICJVbmtub3duIHNjaGVkdWxlciIp OworICAgICAgICBMT0dEKEVSUk9SLCBkb21pZCwgIlVua25vd24gc2NoZWR1bGVyIik7CiAgICAg ICAgIHJjID0gRVJST1JfSU5WQUw7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTU5ODQsOCAr NTk4OCw4IEBAIGludCBsaWJ4bF9zZW5kX3RyaWdnZXIobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90 IGRvbWlkLAogICAgIH0KIAogICAgIGlmIChyYyAhPSAwKSB7Ci0gICAgICAgIExPR0UoRVJST1Is ICJTZW5kIHRyaWdnZXIgJyVzJyBmYWlsZWQiLAotICAgICAgICAgICAgIGxpYnhsX3RyaWdnZXJf dG9fc3RyaW5nKHRyaWdnZXIpKTsKKyAgICAgICAgTE9HRUQoRVJST1IsIGRvbWlkLCAiU2VuZCB0 cmlnZ2VyICclcycgZmFpbGVkIiwKKyAgICAgICAgICAgICAgbGlieGxfdHJpZ2dlcl90b19zdHJp bmcodHJpZ2dlcikpOwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgfQogCkBAIC02MTEx LDcgKzYxMTUsNyBAQCBjaGFyICpsaWJ4bF90bWVtX2xpc3QobGlieGxfY3R4ICpjdHgsIHVpbnQz Ml90IGRvbWlkLCBpbnQgdXNlX2xvbmcpCiAgICAgciA9IHhjX3RtZW1fY29udHJvbChjdHgtPnhj aCwgLTEsIFhFTl9TWVNDVExfVE1FTV9PUF9MSVNULCBkb21pZCwgMzI3NjgsCiAgICAgICAgICAg ICAgICAgICAgICAgICB1c2VfbG9uZywgX2J1Zik7CiAgICAgaWYgKHIgPCAwKSB7Ci0gICAgICAg IExPR0UoRVJST1IsICJDYW4gbm90IGdldCB0bWVtIGxpc3QiKTsKKyAgICAgICAgTE9HRUQoRVJS T1IsIGRvbWlkLCAiQ2FuIG5vdCBnZXQgdG1lbSBsaXN0Iik7CiAgICAgICAgIEdDX0ZSRUU7CiAg ICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTYxMjgsNyArNjEzMiw3IEBAIGludCBsaWJ4 bF90bWVtX2ZyZWV6ZShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQpCiAgICAgciA9IHhj X3RtZW1fY29udHJvbChjdHgtPnhjaCwgLTEsIFhFTl9TWVNDVExfVE1FTV9PUF9GUkVFWkUsIGRv bWlkLCAwLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgaWYgKHIgPCAw KSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJDYW4gbm90IGZyZWV6ZSB0bWVtIHBvb2xzIik7Cisg ICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIkNhbiBub3QgZnJlZXplIHRtZW0gcG9vbHMiKTsK ICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CkBAIC02 MTQ3LDcgKzYxNTEsNyBAQCBpbnQgbGlieGxfdG1lbV90aGF3KGxpYnhsX2N0eCAqY3R4LCB1aW50 MzJfdCBkb21pZCkKICAgICByID0geGNfdG1lbV9jb250cm9sKGN0eC0+eGNoLCAtMSwgWEVOX1NZ U0NUTF9UTUVNX09QX1RIQVcsIGRvbWlkLCAwLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAg TlVMTCk7CiAgICAgaWYgKHIgPCAwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJDYW4gbm90IHRo YXcgdG1lbSBwb29scyIpOworICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJDYW4gbm90IHRo YXcgdG1lbSBwb29scyIpOwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdvdG8g b3V0OwogICAgIH0KQEAgLTYxODEsMTMgKzYxODUsMTMgQEAgaW50IGxpYnhsX3RtZW1fc2V0KGxp YnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwgY2hhciogbmFtZSwgdWludDMyX3Qgc2V0KQog ICAgICAgICAgICAgICAgICAgICAgICAgWEVOX1NZU0NUTF9UTUVNX09QX0dFVF9DTElFTlRfSU5G TywKICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWlkLCBzaXplb2YoaW5mbyksIDAgLyogYXJn ICovLCAmaW5mbyk7CiAgICAgaWYgKHIgPCAwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJDYW4g bm90IGdldCB0bWVtIGRhdGEhIik7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIkNhbiBu b3QgZ2V0IHRtZW0gZGF0YSEiKTsKICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICBn b3RvIG91dDsKICAgICB9CiAgICAgcmMgPSB0bWVtX3NldG9wX2Zyb21fc3RyaW5nKG5hbWUsIHNl dCwgJmluZm8pOwogICAgIGlmIChyYyA9PSAtMSkgewotICAgICAgICBMT0dFVihFUlJPUiwgLTEs ICJJbnZhbGlkIHNldCwgdmFsaWQgc2V0cyBhcmUgPHdlaWdodHxjb21wcmVzcz4iKTsKKyAgICAg ICAgTE9HRVZEKEVSUk9SLCAtMSwgZG9taWQsICJJbnZhbGlkIHNldCwgdmFsaWQgc2V0cyBhcmUg PHdlaWdodHxjb21wcmVzcz4iKTsKICAgICAgICAgcmMgPSBFUlJPUl9JTlZBTDsKICAgICAgICAg Z290byBvdXQ7CiAgICAgfQpAQCAtNjE5NSw3ICs2MTk5LDcgQEAgaW50IGxpYnhsX3RtZW1fc2V0 KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwgY2hhciogbmFtZSwgdWludDMyX3Qgc2V0 KQogICAgICAgICAgICAgICAgICAgICAgICAgWEVOX1NZU0NUTF9UTUVNX09QX1NFVF9DTElFTlRf SU5GTywKICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWlkLCBzaXplb2YoaW5mbyksIDAgLyog YXJnICovLCAmaW5mbyk7CiAgICAgaWYgKHIgPCAwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJD YW4gbm90IHNldCB0bWVtICVzIiwgbmFtZSk7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwg IkNhbiBub3Qgc2V0IHRtZW0gJXMiLCBuYW1lKTsKICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwog ICAgICAgICBnb3RvIG91dDsKICAgICB9CkBAIC02MjE0LDcgKzYyMTgsNyBAQCBpbnQgbGlieGxf dG1lbV9zaGFyZWRfYXV0aChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAKICAgICBy ID0geGNfdG1lbV9hdXRoKGN0eC0+eGNoLCBkb21pZCwgdXVpZCwgYXV0aCk7CiAgICAgaWYgKHIg PCAwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJDYW4gbm90IHNldCB0bWVtIHNoYXJlZCBhdXRo Iik7CisgICAgICAgIExPR0VEKEVSUk9SLCBkb21pZCwgIkNhbiBub3Qgc2V0IHRtZW0gc2hhcmVk IGF1dGgiKTsKICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICBnb3RvIG91dDsKICAg ICB9CkBAIC02NTU5LDcgKzY1NjMsNyBAQCBpbnQgbGlieGxfY3B1cG9vbF9tb3ZlZG9tYWluKGxp YnhsX2N0eCAqY3R4LCB1aW50MzJfdCBwb29saWQsIHVpbnQzMl90IGRvbWlkKQogCiAgICAgcmMg PSB4Y19jcHVwb29sX21vdmVkb21haW4oY3R4LT54Y2gsIHBvb2xpZCwgZG9taWQpOwogICAgIGlm IChyYykgewotICAgICAgICBMT0dFVihFUlJPUiwgcmMsICJFcnJvciBtb3ZpbmcgZG9tYWluIHRv IGNwdXBvb2wiKTsKKyAgICAgICAgTE9HRVZEKEVSUk9SLCByYywgZG9taWQsICJFcnJvciBtb3Zp bmcgZG9tYWluIHRvIGNwdXBvb2wiKTsKICAgICAgICAgR0NfRlJFRTsKICAgICAgICAgcmV0dXJu IEVSUk9SX0ZBSUw7CiAgICAgfQpAQCAtNjkwMSw4ICs2OTA1LDggQEAgaW50IGxpYnhsX3JldHJp ZXZlX2RvbWFpbl9jb25maWd1cmF0aW9uKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwK ICAgICAgICAgICAgICAgICAgICAgaWYgKGR0LT5tZXJnZSkKICAgICAgICAgICAgICAgICAgICAg ICAgIGR0LT5tZXJnZShjdHgsIHAgKyBkdC0+ZGV2X2VsZW1fc2l6ZSAqIGosIHEpOwogICAgICAg ICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgIC8qIG5vdCBmb3VuZCBpbiB4ZW5zdG9y ZSAqLwotICAgICAgICAgICAgICAgICAgICBMT0coV0FSTiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICJEZXZpY2UgcHJlc2VudCBpbiBKU09OIGJ1dCBub3QgaW4geGVuc3RvcmUsIGlnbm9yZWQi KTsKKyAgICAgICAgICAgICAgICAgICAgTE9HRChXQVJOLCBkb21pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAiRGV2aWNlIHByZXNlbnQgaW4gSlNPTiBidXQgbm90IGluIHhlbnN0b3JlLCBp Z25vcmVkIik7CiAKICAgICAgICAgICAgICAgICAgICAgZHQtPmRpc3Bvc2UocSk7CiAKLS0gCjIu MTAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=