From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v4 2/8] dm_op: convert HVMOP_*ioreq_server* Date: Tue, 17 Jan 2017 17:29:50 +0000 Message-ID: <1484674196-19951-3-git-send-email-paul.durrant@citrix.com> References: <1484674196-19951-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cTXa6-0000Tg-Dc for xen-devel@lists.xenproject.org; Tue, 17 Jan 2017 17:30:02 +0000 In-Reply-To: <1484674196-19951-1-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Daniel De Graaf , Paul Durrant , Ian Jackson List-Id: xen-devel@lists.xenproject.org VGhlIGRlZmluaXRpb25zIG9mIEhWTV9JT1JFUVNSVl9CVUZJT1JFUV8qIGhhdmUgdG8gcGVyc2lz dCBhcyB0aGV5IGFyZQphbHJlYWR5IGluIHVzZSBieSBjYWxsZXJzIG9mIHRoZSBsaWJ4YyBpbnRl cmZhY2UuCgpTdWdnZXN0ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KU2ln bmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KLS0KUmV2 aWV3ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IElhbiBKYWNrc29u IDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpBY2tlZC1ieTogV2VpIExpdSA8d2VpLmxpdTJA Y2l0cml4LmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+ CkNjOiBEYW5pZWwgRGUgR3JhYWYgPGRnZGVncmFAdHljaG8ubnNhLmdvdj4KCnY0OgotICNkZWZp bmUgdWludDY0X2FsaWduZWRfdCBpZiBuZWNlc3NhcnkgdG8gaGFuZGxlIGNvbXBhdCBjb2RlIGdl bmVyYXRpb24uCgp2MzoKLSBGaXggcGFkIGNoZWNrLgoKdjI6Ci0gQWRkcmVzc2VkIHNldmVyYWwg Y29tbWVudHMgZnJvbSBKYW4uCi0tLQogdG9vbHMvbGlieGMveGNfZG9tYWluLmMgICAgICAgICAg fCAyMTIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2 L2h2bS9kbS5jICAgICAgICAgICAgfCAgODkgKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2 L2h2bS9odm0uYyAgICAgICAgICAgfCAyMTkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgICAgICAgICB8ICAzNiArKystLS0t CiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaCB8ICAgMyArLQogeGVuL2luY2x1ZGUv cHVibGljL2h2bS9kbV9vcC5oICAgfCAxNTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog eGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaCAgfCAxMzIgKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIHhlbi9pbmNsdWRlL3hzbS9kdW1teS5oICAgICAgICAgIHwgICA2IC0tCiB4ZW4vaW5j bHVkZS94c20veHNtLmggICAgICAgICAgICB8ICAgNiAtLQogeGVuL3hzbS9kdW1teS5jICAgICAg ICAgICAgICAgICAgfCAgIDEgLQogeGVuL3hzbS9mbGFzay9ob29rcy5jICAgICAgICAgICAgfCAg IDYgLS0KIDExIGZpbGVzIGNoYW5nZWQsIDM2MCBpbnNlcnRpb25zKCspLCA1MDcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfZG9tYWluLmMgYi90b29scy9saWJ4Yy94 Y19kb21haW4uYwppbmRleCAyOTZiODUyLi40MTlhODk3IDEwMDY0NAotLS0gYS90b29scy9saWJ4 Yy94Y19kb21haW4uYworKysgYi90b29scy9saWJ4Yy94Y19kb21haW4uYwpAQCAtMTQxNywyNCAr MTQxNywyNCBAQCBpbnQgeGNfaHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIoeGNfaW50ZXJmYWNlICp4 Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhhbmRsZV9idWZpb3JlcSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3NlcnZpZF90ICppZCkKIHsKLSAgICBE RUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVIoeGVuX2h2bV9jcmVhdGVfaW9yZXFfc2VydmVyX3QsIGFy Zyk7CisgICAgc3RydWN0IHhlbl9kbV9vcCBvcDsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wX2NyZWF0 ZV9pb3JlcV9zZXJ2ZXIgKmRhdGE7CiAgICAgaW50IHJjOwogCi0gICAgYXJnID0geGNfaHlwZXJj YWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGFyZywgc2l6ZW9mKCphcmcpKTsKLSAgICBpZiAoIGFyZyA9 PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIG1lbXNldCgmb3AsIDAsIHNpemVvZihv cCkpOwogCi0gICAgYXJnLT5kb21pZCA9IGRvbWlkOwotICAgIGFyZy0+aGFuZGxlX2J1ZmlvcmVx ID0gaGFuZGxlX2J1ZmlvcmVxOworICAgIG9wLm9wID0gWEVOX0RNT1BfY3JlYXRlX2lvcmVxX3Nl cnZlcjsKKyAgICBkYXRhID0gJm9wLnUuY3JlYXRlX2lvcmVxX3NlcnZlcjsKIAotICAgIHJjID0g eGVuY2FsbDIoeGNoLT54Y2FsbCwgX19IWVBFUlZJU09SX2h2bV9vcCwKLSAgICAgICAgICAgICAg ICAgIEhWTU9QX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICBIWVBFUkNB TExfQlVGRkVSX0FTX0FSRyhhcmcpKTsKKyAgICBkYXRhLT5oYW5kbGVfYnVmaW9yZXEgPSBoYW5k bGVfYnVmaW9yZXE7CisKKyAgICByYyA9IGRvX2RtX29wKHhjaCwgZG9taWQsIDEsICZvcCwgc2l6 ZW9mKG9wKSk7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKIAotICAgICppZCA9 IGFyZy0+aWQ7CisgICAgKmlkID0gZGF0YS0+aWQ7CiAKLSAgICB4Y19oeXBlcmNhbGxfYnVmZmVy X2ZyZWUoeGNoLCBhcmcpOwotICAgIHJldHVybiByYzsKKyAgICByZXR1cm4gMDsKIH0KIAogaW50 IHhjX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsCkBAIC0xNDQ0 LDg0ICsxNDQ0LDcxIEBAIGludCB4Y19odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKHhjX2ludGVy ZmFjZSAqeGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuX3Bmbl90ICpi dWZpb3JlcV9wZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnRjaG5fcG9y dF90ICpidWZpb3JlcV9wb3J0KQogewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih4ZW5f aHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mb190LCBhcmcpOworICAgIHN0cnVjdCB4ZW5fZG1fb3Ag b3A7CisgICAgc3RydWN0IHhlbl9kbV9vcF9nZXRfaW9yZXFfc2VydmVyX2luZm8gKmRhdGE7CiAg ICAgaW50IHJjOwogCi0gICAgYXJnID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGFy Zywgc2l6ZW9mKCphcmcpKTsKLSAgICBpZiAoIGFyZyA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJu IC0xOworICAgIG1lbXNldCgmb3AsIDAsIHNpemVvZihvcCkpOwogCi0gICAgYXJnLT5kb21pZCA9 IGRvbWlkOwotICAgIGFyZy0+aWQgPSBpZDsKKyAgICBvcC5vcCA9IFhFTl9ETU9QX2dldF9pb3Jl cV9zZXJ2ZXJfaW5mbzsKKyAgICBkYXRhID0gJm9wLnUuZ2V0X2lvcmVxX3NlcnZlcl9pbmZvOwog Ci0gICAgcmMgPSB4ZW5jYWxsMih4Y2gtPnhjYWxsLCBfX0hZUEVSVklTT1JfaHZtX29wLAotICAg ICAgICAgICAgICAgICAgSFZNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvLAotICAgICAgICAgICAg ICAgICAgSFlQRVJDQUxMX0JVRkZFUl9BU19BUkcoYXJnKSk7Ci0gICAgaWYgKCByYyAhPSAwICkK LSAgICAgICAgZ290byBkb25lOworICAgIGRhdGEtPmlkID0gaWQ7CisKKyAgICByYyA9IGRvX2Rt X29wKHhjaCwgZG9taWQsIDEsICZvcCwgc2l6ZW9mKG9wKSk7CisgICAgaWYgKCByYyApCisgICAg ICAgIHJldHVybiByYzsKIAogICAgIGlmICggaW9yZXFfcGZuICkKLSAgICAgICAgKmlvcmVxX3Bm biA9IGFyZy0+aW9yZXFfcGZuOworICAgICAgICAqaW9yZXFfcGZuID0gZGF0YS0+aW9yZXFfcGZu OwogCiAgICAgaWYgKCBidWZpb3JlcV9wZm4gKQotICAgICAgICAqYnVmaW9yZXFfcGZuID0gYXJn LT5idWZpb3JlcV9wZm47CisgICAgICAgICpidWZpb3JlcV9wZm4gPSBkYXRhLT5idWZpb3JlcV9w Zm47CiAKICAgICBpZiAoIGJ1ZmlvcmVxX3BvcnQgKQotICAgICAgICAqYnVmaW9yZXFfcG9ydCA9 IGFyZy0+YnVmaW9yZXFfcG9ydDsKKyAgICAgICAgKmJ1ZmlvcmVxX3BvcnQgPSBkYXRhLT5idWZp b3JlcV9wb3J0OwogCi1kb25lOgotICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gsIGFy Zyk7Ci0gICAgcmV0dXJuIHJjOworICAgIHJldHVybiAwOwogfQogCiBpbnQgeGNfaHZtX21hcF9p b19yYW5nZV90b19pb3JlcV9zZXJ2ZXIoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9zZXJ2aWRfdCBpZCwg aW50IGlzX21taW8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGVuZCkKIHsKLSAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZG RVIoeGVuX2h2bV9pb19yYW5nZV90LCBhcmcpOwotICAgIGludCByYzsKKyAgICBzdHJ1Y3QgeGVu X2RtX29wIG9wOworICAgIHN0cnVjdCB4ZW5fZG1fb3BfaW9yZXFfc2VydmVyX3JhbmdlICpkYXRh OwogCi0gICAgYXJnID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGFyZywgc2l6ZW9m KCphcmcpKTsKLSAgICBpZiAoIGFyZyA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIC0xOworICAg IG1lbXNldCgmb3AsIDAsIHNpemVvZihvcCkpOwogCi0gICAgYXJnLT5kb21pZCA9IGRvbWlkOwot ICAgIGFyZy0+aWQgPSBpZDsKLSAgICBhcmctPnR5cGUgPSBpc19tbWlvID8gSFZNT1BfSU9fUkFO R0VfTUVNT1JZIDogSFZNT1BfSU9fUkFOR0VfUE9SVDsKLSAgICBhcmctPnN0YXJ0ID0gc3RhcnQ7 Ci0gICAgYXJnLT5lbmQgPSBlbmQ7CisgICAgb3Aub3AgPSBYRU5fRE1PUF9tYXBfaW9fcmFuZ2Vf dG9faW9yZXFfc2VydmVyOworICAgIGRhdGEgPSAmb3AudS5tYXBfaW9fcmFuZ2VfdG9faW9yZXFf c2VydmVyOwogCi0gICAgcmMgPSB4ZW5jYWxsMih4Y2gtPnhjYWxsLCBfX0hZUEVSVklTT1JfaHZt X29wLAotICAgICAgICAgICAgICAgICAgSFZNT1BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZl ciwKLSAgICAgICAgICAgICAgICAgIEhZUEVSQ0FMTF9CVUZGRVJfQVNfQVJHKGFyZykpOworICAg IGRhdGEtPmlkID0gaWQ7CisgICAgZGF0YS0+dHlwZSA9IGlzX21taW8gPyBYRU5fRE1PUF9JT19S QU5HRV9NRU1PUlkgOiBYRU5fRE1PUF9JT19SQU5HRV9QT1JUOworICAgIGRhdGEtPnN0YXJ0ID0g c3RhcnQ7CisgICAgZGF0YS0+ZW5kID0gZW5kOwogCi0gICAgeGNfaHlwZXJjYWxsX2J1ZmZlcl9m cmVlKHhjaCwgYXJnKTsKLSAgICByZXR1cm4gcmM7CisgICAgcmV0dXJuIGRvX2RtX29wKHhjaCwg ZG9taWQsIDEsICZvcCwgc2l6ZW9mKG9wKSk7CiB9CiAKIGludCB4Y19odm1fdW5tYXBfaW9fcmFu Z2VfZnJvbV9pb3JlcV9zZXJ2ZXIoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvc2VydmlkX3QgaWQs IGludCBpc19tbWlvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50NjRfdCBzdGFydCwgdWludDY0X3QgZW5kKQogewotICAgIERFQ0xBUkVfSFlQRVJDQUxM X0JVRkZFUih4ZW5faHZtX2lvX3JhbmdlX3QsIGFyZyk7Ci0gICAgaW50IHJjOworICAgIHN0cnVj dCB4ZW5fZG1fb3Agb3A7CisgICAgc3RydWN0IHhlbl9kbV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2Ug KmRhdGE7CiAKLSAgICBhcmcgPSB4Y19oeXBlcmNhbGxfYnVmZmVyX2FsbG9jKHhjaCwgYXJnLCBz aXplb2YoKmFyZykpOwotICAgIGlmICggYXJnID09IE5VTEwgKQotICAgICAgICByZXR1cm4gLTE7 CisgICAgbWVtc2V0KCZvcCwgMCwgc2l6ZW9mKG9wKSk7CiAKLSAgICBhcmctPmRvbWlkID0gZG9t aWQ7Ci0gICAgYXJnLT5pZCA9IGlkOwotICAgIGFyZy0+dHlwZSA9IGlzX21taW8gPyBIVk1PUF9J T19SQU5HRV9NRU1PUlkgOiBIVk1PUF9JT19SQU5HRV9QT1JUOwotICAgIGFyZy0+c3RhcnQgPSBz dGFydDsKLSAgICBhcmctPmVuZCA9IGVuZDsKKyAgICBvcC5vcCA9IFhFTl9ETU9QX3VubWFwX2lv X3JhbmdlX2Zyb21faW9yZXFfc2VydmVyOworICAgIGRhdGEgPSAmb3AudS51bm1hcF9pb19yYW5n ZV9mcm9tX2lvcmVxX3NlcnZlcjsKIAotICAgIHJjID0geGVuY2FsbDIoeGNoLT54Y2FsbCwgX19I WVBFUlZJU09SX2h2bV9vcCwKLSAgICAgICAgICAgICAgICAgIEhWTU9QX3VubWFwX2lvX3Jhbmdl X2Zyb21faW9yZXFfc2VydmVyLAotICAgICAgICAgICAgICAgICAgSFlQRVJDQUxMX0JVRkZFUl9B U19BUkcoYXJnKSk7CisgICAgZGF0YS0+aWQgPSBpZDsKKyAgICBkYXRhLT50eXBlID0gaXNfbW1p byA/IFhFTl9ETU9QX0lPX1JBTkdFX01FTU9SWSA6IFhFTl9ETU9QX0lPX1JBTkdFX1BPUlQ7Cisg ICAgZGF0YS0+c3RhcnQgPSBzdGFydDsKKyAgICBkYXRhLT5lbmQgPSBlbmQ7CiAKLSAgICB4Y19o eXBlcmNhbGxfYnVmZmVyX2ZyZWUoeGNoLCBhcmcpOwotICAgIHJldHVybiByYzsKKyAgICByZXR1 cm4gZG9fZG1fb3AoeGNoLCBkb21pZCwgMSwgJm9wLCBzaXplb2Yob3ApKTsKIH0KIAogaW50IHhj X2h2bV9tYXBfcGNpZGV2X3RvX2lvcmVxX3NlcnZlcih4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRf dCBkb21pZCwKQEAgLTE1MjksMzcgKzE1MTYsMzIgQEAgaW50IHhjX2h2bV9tYXBfcGNpZGV2X3Rv X2lvcmVxX3NlcnZlcih4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21pZCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBidXMsIHVpbnQ4X3QgZGV2aWNl LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGZ1bmN0aW9u KQogewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih4ZW5faHZtX2lvX3JhbmdlX3QsIGFy Zyk7Ci0gICAgaW50IHJjOworICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7CisgICAgc3RydWN0IHhl bl9kbV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2UgKmRhdGE7CiAKICAgICBpZiAoZGV2aWNlID4gMHgx ZiB8fCBmdW5jdGlvbiA+IDB4NykgewogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAg cmV0dXJuIC0xOwogICAgIH0KIAotICAgIGFyZyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2Mo eGNoLCBhcmcsIHNpemVvZigqYXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCApCi0gICAgICAg IHJldHVybiAtMTsKKyAgICBtZW1zZXQoJm9wLCAwLCBzaXplb2Yob3ApKTsKIAotICAgIGFyZy0+ ZG9taWQgPSBkb21pZDsKLSAgICBhcmctPmlkID0gaWQ7Ci0gICAgYXJnLT50eXBlID0gSFZNT1Bf SU9fUkFOR0VfUENJOworICAgIG9wLm9wID0gWEVOX0RNT1BfbWFwX2lvX3JhbmdlX3RvX2lvcmVx X3NlcnZlcjsKKyAgICBkYXRhID0gJm9wLnUubWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcjsK KworICAgIGRhdGEtPmlkID0gaWQ7CisgICAgZGF0YS0+dHlwZSA9IFhFTl9ETU9QX0lPX1JBTkdF X1BDSTsKIAogICAgIC8qCiAgICAgICogVGhlIHVuZGVybHlpbmcgaHlwZXJjYWxsIHdpbGwgZGVh bCB3aXRoIHJhbmdlcyBvZiBQQ0kgU0JERgogICAgICAqIGJ1dCwgZm9yIHNpbXBsaWNpdHksIHRo ZSBBUEkgb25seSB1c2VzIHNpbmdsZXRvbnMuCiAgICAgICovCi0gICAgYXJnLT5zdGFydCA9IGFy Zy0+ZW5kID0gSFZNT1BfUENJX1NCREYoKHVpbnQ2NF90KXNlZ21lbnQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KWJ1cywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpZGV2aWNlLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdClmdW5jdGlvbik7 Ci0KLSAgICByYyA9IHhlbmNhbGwyKHhjaC0+eGNhbGwsIF9fSFlQRVJWSVNPUl9odm1fb3AsCi0g ICAgICAgICAgICAgICAgICBIVk1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyLAotICAg ICAgICAgICAgICAgICAgSFlQRVJDQUxMX0JVRkZFUl9BU19BUkcoYXJnKSk7CisgICAgZGF0YS0+ c3RhcnQgPSBkYXRhLT5lbmQgPSBYRU5fRE1PUF9QQ0lfU0JERigodWludDY0X3Qpc2VnbWVudCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50NjRf dClidXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dWludDY0X3QpZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHVpbnQ2NF90KWZ1bmN0aW9uKTsKIAotICAgIHhjX2h5cGVyY2FsbF9idWZmZXJf ZnJlZSh4Y2gsIGFyZyk7Ci0gICAgcmV0dXJuIHJjOworICAgIHJldHVybiBkb19kbV9vcCh4Y2gs IGRvbWlkLCAxLCAmb3AsIHNpemVvZihvcCkpOwogfQogCiBpbnQgeGNfaHZtX3VubWFwX3BjaWRl dl9mcm9tX2lvcmVxX3NlcnZlcih4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21pZCwKQEAg LTE1NjcsNTQgKzE1NDksNDkgQEAgaW50IHhjX2h2bV91bm1hcF9wY2lkZXZfZnJvbV9pb3JlcV9z ZXJ2ZXIoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGJ1cywgdWludDhfdCBkZXZpY2UsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGZ1bmN0aW9u KQogewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih4ZW5faHZtX2lvX3JhbmdlX3QsIGFy Zyk7Ci0gICAgaW50IHJjOworICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7CisgICAgc3RydWN0IHhl bl9kbV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2UgKmRhdGE7CiAKICAgICBpZiAoZGV2aWNlID4gMHgx ZiB8fCBmdW5jdGlvbiA+IDB4NykgewogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAg cmV0dXJuIC0xOwogICAgIH0KIAotICAgIGFyZyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2Mo eGNoLCBhcmcsIHNpemVvZigqYXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCApCi0gICAgICAg IHJldHVybiAtMTsKKyAgICBtZW1zZXQoJm9wLCAwLCBzaXplb2Yob3ApKTsKIAotICAgIGFyZy0+ ZG9taWQgPSBkb21pZDsKLSAgICBhcmctPmlkID0gaWQ7Ci0gICAgYXJnLT50eXBlID0gSFZNT1Bf SU9fUkFOR0VfUENJOwotICAgIGFyZy0+c3RhcnQgPSBhcmctPmVuZCA9IEhWTU9QX1BDSV9TQkRG KCh1aW50NjRfdClzZWdtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh1aW50NjRfdClidXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHVpbnQ2NF90KWRldmljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodWludDY0X3QpZnVuY3Rpb24pOwotCi0gICAgcmMgPSB4ZW5jYWxsMih4 Y2gtPnhjYWxsLCBfX0hZUEVSVklTT1JfaHZtX29wLAotICAgICAgICAgICAgICAgICAgSFZNT1Bf dW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICBIWVBF UkNBTExfQlVGRkVSX0FTX0FSRyhhcmcpKTsKKyAgICBvcC5vcCA9IFhFTl9ETU9QX3VubWFwX2lv X3JhbmdlX2Zyb21faW9yZXFfc2VydmVyOworICAgIGRhdGEgPSAmb3AudS51bm1hcF9pb19yYW5n ZV9mcm9tX2lvcmVxX3NlcnZlcjsKIAotICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gs IGFyZyk7Ci0gICAgcmV0dXJuIHJjOworICAgIGRhdGEtPmlkID0gaWQ7CisgICAgZGF0YS0+dHlw ZSA9IFhFTl9ETU9QX0lPX1JBTkdFX1BDSTsKKworICAgIC8qCisgICAgICogVGhlIHVuZGVybHlp bmcgaHlwZXJjYWxsIHdpbGwgZGVhbCB3aXRoIHJhbmdlcyBvZiBQQ0kgU0JERgorICAgICAqIGJ1 dCwgZm9yIHNpbXBsaWNpdHksIHRoZSBBUEkgb25seSB1c2VzIHNpbmdsZXRvbnMuCisgICAgICov CisgICAgZGF0YS0+c3RhcnQgPSBkYXRhLT5lbmQgPSBYRU5fRE1PUF9QQ0lfU0JERigodWludDY0 X3Qpc2VnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh1aW50NjRfdClidXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAodWludDY0X3QpZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KWZ1bmN0aW9uKTsKKworICAgIHJldHVybiBk b19kbV9vcCh4Y2gsIGRvbWlkLCAxLCAmb3AsIHNpemVvZihvcCkpOwogfQogCiBpbnQgeGNfaHZt X2Rlc3Ryb3lfaW9yZXFfc2VydmVyKHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkb21pZF90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpb3NlcnZpZF90IGlkKQogewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih4 ZW5faHZtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyX3QsIGFyZyk7Ci0gICAgaW50IHJjOworICAgIHN0 cnVjdCB4ZW5fZG1fb3Agb3A7CisgICAgc3RydWN0IHhlbl9kbV9vcF9kZXN0cm95X2lvcmVxX3Nl cnZlciAqZGF0YTsKIAotICAgIGFyZyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoeGNoLCBh cmcsIHNpemVvZigqYXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCApCi0gICAgICAgIHJldHVy biAtMTsKKyAgICBtZW1zZXQoJm9wLCAwLCBzaXplb2Yob3ApKTsKIAotICAgIGFyZy0+ZG9taWQg PSBkb21pZDsKLSAgICBhcmctPmlkID0gaWQ7CisgICAgb3Aub3AgPSBYRU5fRE1PUF9kZXN0cm95 X2lvcmVxX3NlcnZlcjsKKyAgICBkYXRhID0gJm9wLnUuZGVzdHJveV9pb3JlcV9zZXJ2ZXI7CiAK LSAgICByYyA9IHhlbmNhbGwyKHhjaC0+eGNhbGwsIF9fSFlQRVJWSVNPUl9odm1fb3AsCi0gICAg ICAgICAgICAgICAgICBIVk1PUF9kZXN0cm95X2lvcmVxX3NlcnZlciwKLSAgICAgICAgICAgICAg ICAgIEhZUEVSQ0FMTF9CVUZGRVJfQVNfQVJHKGFyZykpOworICAgIGRhdGEtPmlkID0gaWQ7CiAK LSAgICB4Y19oeXBlcmNhbGxfYnVmZmVyX2ZyZWUoeGNoLCBhcmcpOwotICAgIHJldHVybiByYzsK KyAgICByZXR1cm4gZG9fZG1fb3AoeGNoLCBkb21pZCwgMSwgJm9wLCBzaXplb2Yob3ApKTsKIH0K IAogaW50IHhjX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlKHhjX2ludGVyZmFjZSAqeGNoLApA QCAtMTYyMiwyMyArMTU5OSwxOCBAQCBpbnQgeGNfaHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUo eGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9z ZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW5hYmxl ZCkKIHsKLSAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVIoeGVuX2h2bV9zZXRfaW9yZXFfc2Vy dmVyX3N0YXRlX3QsIGFyZyk7Ci0gICAgaW50IHJjOworICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7 CisgICAgc3RydWN0IHhlbl9kbV9vcF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlICpkYXRhOwogCi0g ICAgYXJnID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGFyZywgc2l6ZW9mKCphcmcp KTsKLSAgICBpZiAoIGFyZyA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIG1lbXNl dCgmb3AsIDAsIHNpemVvZihvcCkpOwogCi0gICAgYXJnLT5kb21pZCA9IGRvbWlkOwotICAgIGFy Zy0+aWQgPSBpZDsKLSAgICBhcmctPmVuYWJsZWQgPSAhIWVuYWJsZWQ7CisgICAgb3Aub3AgPSBY RU5fRE1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlOworICAgIGRhdGEgPSAmb3AudS5zZXRfaW9y ZXFfc2VydmVyX3N0YXRlOwogCi0gICAgcmMgPSB4ZW5jYWxsMih4Y2gtPnhjYWxsLCBfX0hZUEVS VklTT1JfaHZtX29wLAotICAgICAgICAgICAgICAgICAgSFZNT1Bfc2V0X2lvcmVxX3NlcnZlcl9z dGF0ZSwKLSAgICAgICAgICAgICAgICAgIEhZUEVSQ0FMTF9CVUZGRVJfQVNfQVJHKGFyZykpOwor ICAgIGRhdGEtPmlkID0gaWQ7CisgICAgZGF0YS0+ZW5hYmxlZCA9ICEhZW5hYmxlZDsKIAotICAg IHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gsIGFyZyk7Ci0gICAgcmV0dXJuIHJjOworICAg IHJldHVybiBkb19kbV9vcCh4Y2gsIGRvbWlkLCAxLCAmb3AsIHNpemVvZihvcCkpOwogfQogCiBp bnQgeGNfZG9tYWluX3NldGRlYnVnZ2luZyh4Y19pbnRlcmZhY2UgKnhjaCwKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vZG0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vZG0uYwppbmRleCBmMDBi YzJjLi44ZmE1ZGQ1IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2RtLmMKKysrIGIveGVu L2FyY2gveDg2L2h2bS9kbS5jCkBAIC02NSw4ICs2NSw5NyBAQCBzdGF0aWMgaW50IGRtX29wKGRv bWlkX3QgZG9taWQsCiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAorICAgIHJjID0gLUVJTlZB TDsKKyAgICBpZiAoIG9wLnBhZCApCisgICAgICAgIGdvdG8gb3V0OworCiAgICAgc3dpdGNoICgg b3Aub3AgKQogICAgIHsKKyAgICBjYXNlIFhFTl9ETU9QX2NyZWF0ZV9pb3JlcV9zZXJ2ZXI6Cisg ICAgeworICAgICAgICBzdHJ1Y3QgZG9tYWluICpjdXJyX2QgPSBjdXJyZW50LT5kb21haW47Cisg ICAgICAgIHN0cnVjdCB4ZW5fZG1fb3BfY3JlYXRlX2lvcmVxX3NlcnZlciAqZGF0YSA9CisgICAg ICAgICAgICAmb3AudS5jcmVhdGVfaW9yZXFfc2VydmVyOworCisgICAgICAgIHJjID0gLUVJTlZB TDsKKyAgICAgICAgaWYgKCBkYXRhLT5wYWRbMF0gfHwgZGF0YS0+cGFkWzFdIHx8IGRhdGEtPnBh ZFsyXSApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICByYyA9IGh2bV9jcmVhdGVfaW9y ZXFfc2VydmVyKGQsIGN1cnJfZC0+ZG9tYWluX2lkLCAwLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGEtPmhhbmRsZV9idWZpb3JlcSwgJmRhdGEtPmlkKTsKKyAgICAg ICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBYRU5fRE1PUF9nZXRfaW9yZXFfc2VydmVyX2lu Zm86CisgICAgeworICAgICAgICBzdHJ1Y3QgeGVuX2RtX29wX2dldF9pb3JlcV9zZXJ2ZXJfaW5m byAqZGF0YSA9CisgICAgICAgICAgICAmb3AudS5nZXRfaW9yZXFfc2VydmVyX2luZm87CisKKyAg ICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICBpZiAoIGRhdGEtPnBhZCApCisgICAgICAgICAg ICBicmVhazsKKworICAgICAgICByYyA9IGh2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8oZCwgZGF0 YS0+aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YS0+aW9y ZXFfcGZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGEtPmJ1 ZmlvcmVxX3BmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRh LT5idWZpb3JlcV9wb3J0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBYRU5f RE1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyOgorICAgIHsKKyAgICAgICAgY29uc3Qg c3RydWN0IHhlbl9kbV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2UgKmRhdGEgPQorICAgICAgICAgICAg Jm9wLnUubWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcjsKKworICAgICAgICByYyA9IC1FSU5W QUw7CisgICAgICAgIGlmICggZGF0YS0+cGFkICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg ICAgIHJjID0gaHZtX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIoZCwgZGF0YS0+aWQsIGRh dGEtPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YS0+c3RhcnQsIGRhdGEtPmVuZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNh c2UgWEVOX0RNT1BfdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXI6CisgICAgeworICAg ICAgICBjb25zdCBzdHJ1Y3QgeGVuX2RtX29wX2lvcmVxX3NlcnZlcl9yYW5nZSAqZGF0YSA9Cisg ICAgICAgICAgICAmb3AudS51bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcjsKKworICAg ICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGlmICggZGF0YS0+cGFkICkKKyAgICAgICAgICAg IGJyZWFrOworCisgICAgICAgIHJjID0gaHZtX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2Vy dmVyKGQsIGRhdGEtPmlkLCBkYXRhLT50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zdGFydCwgZGF0YS0+ZW5kKTsKKyAgICAgICAg YnJlYWs7CisgICAgfQorCisgICAgY2FzZSBYRU5fRE1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRl OgorICAgIHsKKyAgICAgICAgY29uc3Qgc3RydWN0IHhlbl9kbV9vcF9zZXRfaW9yZXFfc2VydmVy X3N0YXRlICpkYXRhID0KKyAgICAgICAgICAgICZvcC51LnNldF9pb3JlcV9zZXJ2ZXJfc3RhdGU7 CisKKyAgICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICBpZiAoIGRhdGEtPnBhZCApCisgICAg ICAgICAgICBicmVhazsKKworICAgICAgICByYyA9IGh2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRl KGQsIGRhdGEtPmlkLCAhIWRhdGEtPmVuYWJsZWQpOworICAgICAgICBicmVhazsKKyAgICB9CisK KyAgICBjYXNlIFhFTl9ETU9QX2Rlc3Ryb3lfaW9yZXFfc2VydmVyOgorICAgIHsKKyAgICAgICAg Y29uc3Qgc3RydWN0IHhlbl9kbV9vcF9kZXN0cm95X2lvcmVxX3NlcnZlciAqZGF0YSA9CisgICAg ICAgICAgICAmb3AudS5kZXN0cm95X2lvcmVxX3NlcnZlcjsKKworICAgICAgICByYyA9IC1FSU5W QUw7CisgICAgICAgIGlmICggZGF0YS0+cGFkICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg ICAgIHJjID0gaHZtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKGQsIGRhdGEtPmlkKTsKKyAgICAgICAg YnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsK ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVu L2FyY2gveDg2L2h2bS9odm0uYwppbmRleCBjYjUwMWU1Li5mZDBlMThhIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvaHZtL2h2bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKQEAgLTQz NzksMTk1ICs0Mzc5LDYgQEAgc3RhdGljIGludCBodm1vcF9mbHVzaF90bGJfYWxsKHZvaWQpCiAg ICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgaHZtb3BfY3JlYXRlX2lvcmVxX3NlcnZlcigK LSAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90 KSB1b3ApCi17Ci0gICAgc3RydWN0IGRvbWFpbiAqY3Vycl9kID0gY3VycmVudC0+ZG9tYWluOwot ICAgIHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90IG9wOwotICAgIHN0cnVjdCBkb21haW4g KmQ7Ci0gICAgaW50IHJjOwotCi0gICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJm9wLCB1b3AsIDEp ICkKLSAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Ci0KLSAgICByYyA9IHJjdV9sb2NrX3JlbW90ZV9k b21haW5fYnlfaWQob3AuZG9taWQsICZkKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICBy ZXR1cm4gcmM7Ci0KLSAgICByYyA9IC1FSU5WQUw7Ci0gICAgaWYgKCAhaXNfaHZtX2RvbWFpbihk KSApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSB4c21faHZtX2lvcmVxX3NlcnZlcihY U01fRE1fUFJJViwgZCwgSFZNT1BfY3JlYXRlX2lvcmVxX3NlcnZlcik7Ci0gICAgaWYgKCByYyAh PSAwICkKLSAgICAgICAgZ290byBvdXQ7Ci0KLSAgICByYyA9IGh2bV9jcmVhdGVfaW9yZXFfc2Vy dmVyKGQsIGN1cnJfZC0+ZG9tYWluX2lkLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3AuaGFuZGxlX2J1ZmlvcmVxLCAmb3AuaWQpOwotICAgIGlmICggcmMgIT0gMCApCi0g ICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSBjb3B5X3RvX2d1ZXN0KHVvcCwgJm9wLCAxKSA/ IC1FRkFVTFQgOiAwOwotICAgIAotIG91dDoKLSAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKLSAg ICByZXR1cm4gcmM7Ci19Ci0KLXN0YXRpYyBpbnQgaHZtb3BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZv KAotICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2lu Zm9fdCkgdW9wKQotewotICAgIHhlbl9odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvX3Qgb3A7Ci0g ICAgc3RydWN0IGRvbWFpbiAqZDsKLSAgICBpbnQgcmM7Ci0KLSAgICBpZiAoIGNvcHlfZnJvbV9n dWVzdCgmb3AsIHVvcCwgMSkgKQotICAgICAgICByZXR1cm4gLUVGQVVMVDsKLQotICAgIHJjID0g cmN1X2xvY2tfcmVtb3RlX2RvbWFpbl9ieV9pZChvcC5kb21pZCwgJmQpOwotICAgIGlmICggcmMg IT0gMCApCi0gICAgICAgIHJldHVybiByYzsKLQotICAgIHJjID0gLUVJTlZBTDsKLSAgICBpZiAo ICFpc19odm1fZG9tYWluKGQpICkKLSAgICAgICAgZ290byBvdXQ7Ci0KLSAgICByYyA9IHhzbV9o dm1faW9yZXFfc2VydmVyKFhTTV9ETV9QUklWLCBkLCBIVk1PUF9nZXRfaW9yZXFfc2VydmVyX2lu Zm8pOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSBo dm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKGQsIG9wLmlkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmb3AuaW9yZXFfcGZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmb3AuYnVmaW9yZXFfcGZuLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJm9wLmJ1ZmlvcmVxX3BvcnQpOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIGdv dG8gb3V0OwotCi0gICAgcmMgPSBjb3B5X3RvX2d1ZXN0KHVvcCwgJm9wLCAxKSA/IC1FRkFVTFQg OiAwOwotICAgIAotIG91dDoKLSAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKLSAgICByZXR1cm4g cmM7Ci19Ci0KLXN0YXRpYyBpbnQgaHZtb3BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcigK LSAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9odm1faW9fcmFuZ2VfdCkgdW9wKQotewot ICAgIHhlbl9odm1faW9fcmFuZ2VfdCBvcDsKLSAgICBzdHJ1Y3QgZG9tYWluICpkOwotICAgIGlu dCByYzsKLQotICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZvcCwgdW9wLCAxKSApCi0gICAgICAg IHJldHVybiAtRUZBVUxUOwotCi0gICAgcmMgPSByY3VfbG9ja19yZW1vdGVfZG9tYWluX2J5X2lk KG9wLmRvbWlkLCAmZCk7Ci0gICAgaWYgKCByYyAhPSAwICkKLSAgICAgICAgcmV0dXJuIHJjOwot Ci0gICAgcmMgPSAtRUlOVkFMOwotICAgIGlmICggIWlzX2h2bV9kb21haW4oZCkgKQotICAgICAg ICBnb3RvIG91dDsKLQotICAgIHJjID0geHNtX2h2bV9pb3JlcV9zZXJ2ZXIoWFNNX0RNX1BSSVYs IGQsIEhWTU9QX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIpOwotICAgIGlmICggcmMgIT0g MCApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSBodm1fbWFwX2lvX3JhbmdlX3RvX2lv cmVxX3NlcnZlcihkLCBvcC5pZCwgb3AudHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9wLnN0YXJ0LCBvcC5lbmQpOwotCi0gb3V0OgotICAgIHJjdV91bmxv Y2tfZG9tYWluKGQpOwotICAgIHJldHVybiByYzsKLX0KLQotc3RhdGljIGludCBodm1vcF91bm1h cF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcigKLSAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFN KHhlbl9odm1faW9fcmFuZ2VfdCkgdW9wKQotewotICAgIHhlbl9odm1faW9fcmFuZ2VfdCBvcDsK LSAgICBzdHJ1Y3QgZG9tYWluICpkOwotICAgIGludCByYzsKLQotICAgIGlmICggY29weV9mcm9t X2d1ZXN0KCZvcCwgdW9wLCAxKSApCi0gICAgICAgIHJldHVybiAtRUZBVUxUOwotCi0gICAgcmMg PSByY3VfbG9ja19yZW1vdGVfZG9tYWluX2J5X2lkKG9wLmRvbWlkLCAmZCk7Ci0gICAgaWYgKCBy YyAhPSAwICkKLSAgICAgICAgcmV0dXJuIHJjOwotCi0gICAgcmMgPSAtRUlOVkFMOwotICAgIGlm ICggIWlzX2h2bV9kb21haW4oZCkgKQotICAgICAgICBnb3RvIG91dDsKLQotICAgIHJjID0geHNt X2h2bV9pb3JlcV9zZXJ2ZXIoWFNNX0RNX1BSSVYsIGQsIEhWTU9QX3VubWFwX2lvX3JhbmdlX2Zy b21faW9yZXFfc2VydmVyKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICBnb3RvIG91dDsK LQotICAgIHJjID0gaHZtX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyKGQsIG9wLmlk LCBvcC50eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9wLnN0YXJ0LCBvcC5lbmQpOwotICAgIAotIG91dDoKLSAgICByY3VfdW5sb2NrX2RvbWFpbihk KTsKLSAgICByZXR1cm4gcmM7Ci19Ci0KLXN0YXRpYyBpbnQgaHZtb3Bfc2V0X2lvcmVxX3NlcnZl cl9zdGF0ZSgKLSAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9odm1fc2V0X2lvcmVxX3Nl cnZlcl9zdGF0ZV90KSB1b3ApCi17Ci0gICAgeGVuX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRl X3Qgb3A7Ci0gICAgc3RydWN0IGRvbWFpbiAqZDsKLSAgICBpbnQgcmM7Ci0KLSAgICBpZiAoIGNv cHlfZnJvbV9ndWVzdCgmb3AsIHVvcCwgMSkgKQotICAgICAgICByZXR1cm4gLUVGQVVMVDsKLQot ICAgIHJjID0gcmN1X2xvY2tfcmVtb3RlX2RvbWFpbl9ieV9pZChvcC5kb21pZCwgJmQpOwotICAg IGlmICggcmMgIT0gMCApCi0gICAgICAgIHJldHVybiByYzsKLQotICAgIHJjID0gLUVJTlZBTDsK LSAgICBpZiAoICFpc19odm1fZG9tYWluKGQpICkKLSAgICAgICAgZ290byBvdXQ7Ci0KLSAgICBy YyA9IHhzbV9odm1faW9yZXFfc2VydmVyKFhTTV9ETV9QUklWLCBkLCBIVk1PUF9zZXRfaW9yZXFf c2VydmVyX3N0YXRlKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICBnb3RvIG91dDsKLQot ICAgIHJjID0gaHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUoZCwgb3AuaWQsICEhb3AuZW5hYmxl ZCk7Ci0KLSBvdXQ6Ci0gICAgcmN1X3VubG9ja19kb21haW4oZCk7Ci0gICAgcmV0dXJuIHJjOwot fQotCi1zdGF0aWMgaW50IGh2bW9wX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKAotICAgIFhFTl9HVUVT VF9IQU5ETEVfUEFSQU0oeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90KSB1b3ApCi17Ci0g ICAgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90IG9wOwotICAgIHN0cnVjdCBkb21haW4g KmQ7Ci0gICAgaW50IHJjOwotCi0gICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJm9wLCB1b3AsIDEp ICkKLSAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Ci0KLSAgICByYyA9IHJjdV9sb2NrX3JlbW90ZV9k b21haW5fYnlfaWQob3AuZG9taWQsICZkKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICBy ZXR1cm4gcmM7Ci0KLSAgICByYyA9IC1FSU5WQUw7Ci0gICAgaWYgKCAhaXNfaHZtX2RvbWFpbihk KSApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSB4c21faHZtX2lvcmVxX3NlcnZlcihY U01fRE1fUFJJViwgZCwgSFZNT1BfZGVzdHJveV9pb3JlcV9zZXJ2ZXIpOwotICAgIGlmICggcmMg IT0gMCApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSBodm1fZGVzdHJveV9pb3JlcV9z ZXJ2ZXIoZCwgb3AuaWQpOwotCi0gb3V0OgotICAgIHJjdV91bmxvY2tfZG9tYWluKGQpOwotICAg IHJldHVybiByYzsKLX0KLQogc3RhdGljIGludCBodm1vcF9zZXRfZXZ0Y2huX3VwY2FsbF92ZWN0 b3IoCiAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5faHZtX2V2dGNobl91cGNhbGxfdmVj dG9yX3QpIHVvcCkKIHsKQEAgLTUyODQsMzYgKzUwOTUsNiBAQCBsb25nIGRvX2h2bV9vcCh1bnNp Z25lZCBsb25nIG9wLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKICAgICBzdGFy dF9pdGVyID0gb3AgJiB+bWFzazsKICAgICBzd2l0Y2ggKCBvcCAmPSBtYXNrICkKICAgICB7Ci0g ICAgY2FzZSBIVk1PUF9jcmVhdGVfaW9yZXFfc2VydmVyOgotICAgICAgICByYyA9IGh2bW9wX2Ny ZWF0ZV9pb3JlcV9zZXJ2ZXIoCi0gICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcsIHhl bl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIAotICAg IGNhc2UgSFZNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvOgotICAgICAgICByYyA9IGh2bW9wX2dl dF9pb3JlcV9zZXJ2ZXJfaW5mbygKLSAgICAgICAgICAgIGd1ZXN0X2hhbmRsZV9jYXN0KGFyZywg eGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm9fdCkpOwotICAgICAgICBicmVhazsKLSAgICAK LSAgICBjYXNlIEhWTU9QX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXI6Ci0gICAgICAgIHJj ID0gaHZtb3BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcigKLSAgICAgICAgICAgIGd1ZXN0 X2hhbmRsZV9jYXN0KGFyZywgeGVuX2h2bV9pb19yYW5nZV90KSk7Ci0gICAgICAgIGJyZWFrOwot ICAgIAotICAgIGNhc2UgSFZNT1BfdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXI6Ci0g ICAgICAgIHJjID0gaHZtb3BfdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIoCi0gICAg ICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcsIHhlbl9odm1faW9fcmFuZ2VfdCkpOwotICAg ICAgICBicmVhazsKLQotICAgIGNhc2UgSFZNT1Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZToKLSAg ICAgICAgcmMgPSBodm1vcF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlKAotICAgICAgICAgICAgZ3Vl c3RfaGFuZGxlX2Nhc3QoYXJnLCB4ZW5faHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGVfdCkpOwot ICAgICAgICBicmVhazsKLSAgICAKLSAgICBjYXNlIEhWTU9QX2Rlc3Ryb3lfaW9yZXFfc2VydmVy OgotICAgICAgICByYyA9IGh2bW9wX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKAotICAgICAgICAgICAg Z3Vlc3RfaGFuZGxlX2Nhc3QoYXJnLCB4ZW5faHZtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyX3QpKTsK LSAgICAgICAgYnJlYWs7Ci0gICAgCiAgICAgY2FzZSBIVk1PUF9zZXRfZXZ0Y2huX3VwY2FsbF92 ZWN0b3I6CiAgICAgICAgIHJjID0gaHZtb3Bfc2V0X2V2dGNobl91cGNhbGxfdmVjdG9yKAogICAg ICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnLCB4ZW5faHZtX2V2dGNobl91cGNhbGxfdmVj dG9yX3QpKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBiL3hlbi9hcmNo L3g4Ni9odm0vaW9yZXEuYwppbmRleCAyODMwZjZjLi41ZDFhOGZhIDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvaHZtL2lvcmVxLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCkBAIC01 MTQsOSArNTE0LDkgQEAgc3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX2FsbG9jX3Jhbmdlc2V0 cyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAgICAgICAgY2hhciAqbmFtZTsKIAogICAg ICAgICByYyA9IGFzcHJpbnRmKCZuYW1lLCAiaW9yZXFfc2VydmVyICVkICVzIiwgcy0+aWQsCi0g ICAgICAgICAgICAgICAgICAgICAgKGkgPT0gSFZNT1BfSU9fUkFOR0VfUE9SVCkgPyAicG9ydCIg OgotICAgICAgICAgICAgICAgICAgICAgIChpID09IEhWTU9QX0lPX1JBTkdFX01FTU9SWSkgPyAi bWVtb3J5IiA6Ci0gICAgICAgICAgICAgICAgICAgICAgKGkgPT0gSFZNT1BfSU9fUkFOR0VfUENJ KSA/ICJwY2kiIDoKKyAgICAgICAgICAgICAgICAgICAgICAoaSA9PSBYRU5fRE1PUF9JT19SQU5H RV9QT1JUKSA/ICJwb3J0IiA6CisgICAgICAgICAgICAgICAgICAgICAgKGkgPT0gWEVOX0RNT1Bf SU9fUkFOR0VfTUVNT1JZKSA/ICJtZW1vcnkiIDoKKyAgICAgICAgICAgICAgICAgICAgICAoaSA9 PSBYRU5fRE1PUF9JT19SQU5HRV9QQ0kpID8gInBjaSIgOgogICAgICAgICAgICAgICAgICAgICAg ICIiKTsKICAgICAgICAgaWYgKCByYyApCiAgICAgICAgICAgICBnb3RvIGZhaWw7CkBAIC04MzQs OSArODM0LDkgQEAgaW50IGh2bV9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyKHN0cnVjdCBk b21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAKICAgICAgICAgICAgIHN3aXRjaCAoIHR5cGUgKQog ICAgICAgICAgICAgewotICAgICAgICAgICAgY2FzZSBIVk1PUF9JT19SQU5HRV9QT1JUOgotICAg ICAgICAgICAgY2FzZSBIVk1PUF9JT19SQU5HRV9NRU1PUlk6Ci0gICAgICAgICAgICBjYXNlIEhW TU9QX0lPX1JBTkdFX1BDSToKKyAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfUE9S VDoKKyAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfTUVNT1JZOgorICAgICAgICAg ICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QQ0k6CiAgICAgICAgICAgICAgICAgciA9IHMtPnJh bmdlW3R5cGVdOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC04ODYsOSArODg2LDkgQEAg aW50IGh2bV91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpk LCBpb3NlcnZpZF90IGlkLAogCiAgICAgICAgICAgICBzd2l0Y2ggKCB0eXBlICkKICAgICAgICAg ICAgIHsKLSAgICAgICAgICAgIGNhc2UgSFZNT1BfSU9fUkFOR0VfUE9SVDoKLSAgICAgICAgICAg IGNhc2UgSFZNT1BfSU9fUkFOR0VfTUVNT1JZOgotICAgICAgICAgICAgY2FzZSBIVk1PUF9JT19S QU5HRV9QQ0k6CisgICAgICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX1BPUlQ6CisgICAg ICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX01FTU9SWToKKyAgICAgICAgICAgIGNhc2Ug WEVOX0RNT1BfSU9fUkFOR0VfUENJOgogICAgICAgICAgICAgICAgIHIgPSBzLT5yYW5nZVt0eXBl XTsKICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtMTEyOSwxMiArMTEyOSwxMiBAQCBzdHJ1 Y3QgaHZtX2lvcmVxX3NlcnZlciAqaHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFp biAqZCwKIAogICAgICAgICAvKiBQQ0kgY29uZmlnIGRhdGEgY3ljbGUgKi8KIAotICAgICAgICBz YmRmID0gSFZNT1BfUENJX1NCREYoMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBD SV9CVVMoQ0Y4X0JERihjZjgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9T TE9UKENGOF9CREYoY2Y4KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfRlVO QyhDRjhfQkRGKGNmOCkpKTsKKyAgICAgICAgc2JkZiA9IFhFTl9ETU9QX1BDSV9TQkRGKDAsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQlVTKENGOF9CREYoY2Y4KSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfU0xPVChDRjhfQkRGKGNmOCkpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0ZVTkMoQ0Y4X0JERihjZjgpKSk7 CiAKLSAgICAgICAgdHlwZSA9IEhWTU9QX0lPX1JBTkdFX1BDSTsKKyAgICAgICAgdHlwZSA9IFhF Tl9ETU9QX0lPX1JBTkdFX1BDSTsKICAgICAgICAgYWRkciA9ICgodWludDY0X3Qpc2JkZiA8PCAz MikgfAogICAgICAgICAgICAgICAgQ0Y4X0FERFJfTE8oY2Y4KSB8CiAgICAgICAgICAgICAgICAo cC0+YWRkciAmIDMpOwpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKmh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsCiAgICAgZWxzZQog ICAgIHsKICAgICAgICAgdHlwZSA9IChwLT50eXBlID09IElPUkVRX1RZUEVfUElPKSA/Ci0gICAg ICAgICAgICAgICAgSFZNT1BfSU9fUkFOR0VfUE9SVCA6IEhWTU9QX0lPX1JBTkdFX01FTU9SWTsK KyAgICAgICAgICAgICAgICBYRU5fRE1PUF9JT19SQU5HRV9QT1JUIDogWEVOX0RNT1BfSU9fUkFO R0VfTUVNT1JZOwogICAgICAgICBhZGRyID0gcC0+YWRkcjsKICAgICB9CiAKQEAgLTExNzUsMTkg KzExNzUsMTkgQEAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKmh2bV9zZWxlY3RfaW9yZXFfc2Vy dmVyKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgZW5kOwogCi0gICAgICAgIGNhc2UgSFZNT1BfSU9fUkFOR0VfUE9SVDoKKyAgICAgICAgY2Fz ZSBYRU5fRE1PUF9JT19SQU5HRV9QT1JUOgogICAgICAgICAgICAgZW5kID0gYWRkciArIHAtPnNp emUgLSAxOwogICAgICAgICAgICAgaWYgKCByYW5nZXNldF9jb250YWluc19yYW5nZShyLCBhZGRy LCBlbmQpICkKICAgICAgICAgICAgICAgICByZXR1cm4gczsKIAogICAgICAgICAgICAgYnJlYWs7 Ci0gICAgICAgIGNhc2UgSFZNT1BfSU9fUkFOR0VfTUVNT1JZOgorICAgICAgICBjYXNlIFhFTl9E TU9QX0lPX1JBTkdFX01FTU9SWToKICAgICAgICAgICAgIGVuZCA9IGFkZHIgKyAocC0+c2l6ZSAq IHAtPmNvdW50KSAtIDE7CiAgICAgICAgICAgICBpZiAoIHJhbmdlc2V0X2NvbnRhaW5zX3Jhbmdl KHIsIGFkZHIsIGVuZCkgKQogICAgICAgICAgICAgICAgIHJldHVybiBzOwogCiAgICAgICAgICAg ICBicmVhazsKLSAgICAgICAgY2FzZSBIVk1PUF9JT19SQU5HRV9QQ0k6CisgICAgICAgIGNhc2Ug WEVOX0RNT1BfSU9fUkFOR0VfUENJOgogICAgICAgICAgICAgaWYgKCByYW5nZXNldF9jb250YWlu c19zaW5nbGV0b24ociwgYWRkciA+PiAzMikgKQogICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgIHAtPnR5cGUgPSBJT1JFUV9UWVBFX1BDSV9DT05GSUc7CmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9hc20teDg2L2h2bS9kb21haW4uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFp bi5oCmluZGV4IGQ1NWQxODAuLjM1MGYwMTMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvaHZtL2RvbWFpbi5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oCkBA IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8cHVibGljL2h2bS9wYXJhbXMuaD4KICNpbmNsdWRl IDxwdWJsaWMvaHZtL3NhdmUuaD4KICNpbmNsdWRlIDxwdWJsaWMvaHZtL2h2bV9vcC5oPgorI2lu Y2x1ZGUgPHB1YmxpYy9odm0vZG1fb3AuaD4KIAogc3RydWN0IGh2bV9pb3JlcV9wYWdlIHsKICAg ICB1bnNpZ25lZCBsb25nIGdtZm47CkBAIC00Nyw3ICs0OCw3IEBAIHN0cnVjdCBodm1faW9yZXFf dmNwdSB7CiAgICAgYm9vbF90ICAgICAgICAgICBwZW5kaW5nOwogfTsKIAotI2RlZmluZSBOUl9J T19SQU5HRV9UWVBFUyAoSFZNT1BfSU9fUkFOR0VfUENJICsgMSkKKyNkZWZpbmUgTlJfSU9fUkFO R0VfVFlQRVMgKFhFTl9ETU9QX0lPX1JBTkdFX1BDSSArIDEpCiAjZGVmaW5lIE1BWF9OUl9JT19S QU5HRVMgIDI1NgogCiBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciB7CmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29w LmgKaW5kZXggNDBlN2E5Ni4uMWRjODZmOSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGlj L2h2bS9kbV9vcC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaApAQCAtMjcs MTEgKzI3LDE2OCBAQAogI2lmIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09M U19fKQogCiAjaW5jbHVkZSAiLi4veGVuLmgiCisjaW5jbHVkZSAiLi4vZXZlbnRfY2hhbm5lbC5o IgogCiAjZGVmaW5lIFhFTl9ETU9QX2ludmFsaWQgMAogCisjaWZuZGVmIHVpbnQ2NF9hbGlnbmVk X3QKKyNkZWZpbmUgdWludDY0X2FsaWduZWRfdCB1aW50NjRfdAorI2VuZGlmCisKKy8qCisgKiBJ T1JFUSBTZXJ2ZXJzCisgKgorICogVGhlIGludGVyZmFjZSBiZXR3ZWVuIGFuIEkvTyBlbXVsYXRv ciBhbiBYZW4gaXMgY2FsbGVkIGFuIElPUkVRIFNlcnZlci4KKyAqIEEgZG9tYWluIHN1cHBvcnRz IGEgc2luZ2xlICdsZWdhY3knIElPUkVRIFNlcnZlciB3aGljaCBpcyBpbnN0YW50aWF0ZWQgaWYK KyAqIHBhcmFtZXRlci4uLgorICoKKyAqIEhWTV9QQVJBTV9JT1JFUV9QRk4gaXMgcmVhZCAodG8g Z2V0IHRoZSBnbWZuIGNvbnRhaW5pbmcgdGhlIHN5bmNocm9ub3VzCisgKiBpb3JlcSBzdHJ1Y3R1 cmVzKSwgb3IuLi4KKyAqIEhWTV9QQVJBTV9CVUZJT1JFUV9QRk4gaXMgcmVhZCAodG8gZ2V0IHRo ZSBnbWZuIGNvbnRhaW5pbmcgdGhlIGJ1ZmZlcmVkCisgKiBpb3JlcSByaW5nKSwgb3IuLi4KKyAq IEhWTV9QQVJBTV9CVUZJT1JFUV9FVlRDSE4gaXMgcmVhZCAodG8gZ2V0IHRoZSBldmVudCBjaGFu bmVsIHRoYXQgWGVuIHVzZXMKKyAqIHRvIHJlcXVlc3QgYnVmZmVyZWQgSS9PIGVtdWxhdGlvbiku CisgKgorICogVGhlIGZvbGxvd2luZyBoeXBlcmNhbGxzIGZhY2lsaXRhdGUgdGhlIGNyZWF0aW9u IG9mIElPUkVRIFNlcnZlcnMgZm9yCisgKiAnc2Vjb25kYXJ5JyBlbXVsYXRvcnMgd2hpY2ggYXJl IGludm9rZWQgdG8gaW1wbGVtZW50IHBvcnQgSS9PLCBtZW1vcnksIG9yCisgKiBQQ0kgY29uZmln IHNwYWNlIHJhbmdlcyB3aGljaCB0aGV5IGV4cGxpY2l0bHkgcmVnaXN0ZXIuCisgKi8KKwordHlw ZWRlZiB1aW50MTZfdCBpb3NlcnZpZF90OworCisvKgorICogWEVOX0RNT1BfY3JlYXRlX2lvcmVx X3NlcnZlcjogSW5zdGFudGlhdGUgYSBuZXcgSU9SRVEgU2VydmVyIGZvciBhCisgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnkgZW11bGF0b3IuCisgKgorICogVGhlIDxp ZD4gaGFuZGVkIGJhY2sgaXMgdW5pcXVlIGZvciB0YXJnZXQgZG9tYWluLiBUaGUgdmFsdXIgb2YK KyAqIDxoYW5kbGVfYnVmaW9yZXE+IHNob3VsZCBiZSBvbmUgb2YgSFZNX0lPUkVRU1JWX0JVRklP UkVRXyogZGVmaW5lZCBpbgorICogaHZtX29wLmguIElmIHRoZSB2YWx1ZSBpcyBIVk1fSU9SRVFT UlZfQlVGSU9SRVFfT0ZGIHRoZW4gIHRoZSBidWZmZXJlZAorICogaW9yZXEgcmluZyB3aWxsIG5v dCBiZSBhbGxvY2F0ZWQgYW5kIGhlbmNlIGFsbCBlbXVsYXRpb24gcmVxdWVzdHMgdG8KKyAqIHRo aXMgc2VydmVyIHdpbGwgYmUgc3luY2hyb25vdXMuCisgKi8KKyNkZWZpbmUgWEVOX0RNT1BfY3Jl YXRlX2lvcmVxX3NlcnZlciAxCisKK3N0cnVjdCB4ZW5fZG1fb3BfY3JlYXRlX2lvcmVxX3NlcnZl ciB7CisgICAgLyogSU4gLSBzaG91bGQgc2VydmVyIGhhbmRsZSBidWZmZXJlZCBpb3JlcXMgKi8K KyAgICB1aW50OF90IGhhbmRsZV9idWZpb3JlcTsKKyAgICB1aW50OF90IHBhZFszXTsKKyAgICAv KiBPVVQgLSBzZXJ2ZXIgaWQgKi8KKyAgICBpb3NlcnZpZF90IGlkOworfTsKKworLyoKKyAqIFhF Tl9ETU9QX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbzogR2V0IGFsbCB0aGUgaW5mb3JtYXRpb24gbmVj ZXNzYXJ5IHRvCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VzcyBJT1JF USBTZXJ2ZXIgPGlkPi4KKyAqCisgKiBUaGUgZW11bGF0b3IgbmVlZHMgdG8gbWFwIHRoZSBzeW5j aHJvbm91cyBpb3JlcSBzdHJ1Y3R1cmVzIGFuZCBidWZmZXJlZAorICogaW9yZXEgcmluZyAoaWYg aXQgZXhpc3RzKSB0aGF0IFhlbiB1c2VzIHRvIHJlcXVlc3QgZW11bGF0aW9uLiBUaGVzZSBhcmUK KyAqIGhvc3RlZCBpbiB0aGUgdGFyZ2V0IGRvbWFpbidzIGdtZm5zIDxpb3JlcV9wZm4+IGFuZCA8 YnVmaW9yZXFfcGZuPgorICogcmVzcGVjdGl2ZWx5LiBJbiBhZGRpdGlvbiwgaWYgdGhlIElPUkVR IFNlcnZlciBpcyBoYW5kbGluZyBidWZmZXJlZAorICogZW11bGF0aW9uIHJlcXVlc3RzLCB0aGUg ZW11bGF0b3IgbmVlZHMgdG8gYmluZCB0byBldmVudCBjaGFubmVsCisgKiA8YnVmaW9yZXFfcG9y dD4gdG8gbGlzdGVuIGZvciB0aGVtLiAoVGhlIGV2ZW50IGNoYW5uZWxzIHVzZWQgZm9yCisgKiBz eW5jaHJvbm91cyBlbXVsYXRpb24gcmVxdWVzdHMgYXJlIHNwZWNpZmllZCBpbiB0aGUgcGVyLUNQ VSBpb3JlcQorICogc3RydWN0dXJlcyBpbiA8aW9yZXFfcGZuPikuCisgKiBJZiB0aGUgSU9SRVEg U2VydmVyIGlzIG5vdCBoYW5kbGluZyBidWZmZXJlZCBlbXVsYXRpb24gcmVxdWVzdHMgdGhlbiB0 aGUKKyAqIHZhbHVlcyBoYW5kZWQgYmFjayBpbiA8YnVmaW9yZXFfcGZuPiBhbmQgPGJ1ZmlvcmVx X3BvcnQ+IHdpbGwgYm90aCBiZSAwLgorICovCisjZGVmaW5lIFhFTl9ETU9QX2dldF9pb3JlcV9z ZXJ2ZXJfaW5mbyAyCisKK3N0cnVjdCB4ZW5fZG1fb3BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvIHsK KyAgICAvKiBJTiAtIHNlcnZlciBpZCAqLworICAgIGlvc2VydmlkX3QgaWQ7CisgICAgdWludDE2 X3QgcGFkOworICAgIC8qIE9VVCAtIGJ1ZmZlcmVkIGlvcmVxIHBvcnQgKi8KKyAgICBldnRjaG5f cG9ydF90IGJ1ZmlvcmVxX3BvcnQ7CisgICAgLyogT1VUIC0gc3luYyBpb3JlcSBwZm4gKi8KKyAg ICB1aW50NjRfYWxpZ25lZF90IGlvcmVxX3BmbjsKKyAgICAvKiBPVVQgLSBidWZmZXJlZCBpb3Jl cSBwZm4gKi8KKyAgICB1aW50NjRfYWxpZ25lZF90IGJ1ZmlvcmVxX3BmbjsKK307CisKKy8qCisg KiBYRU5fRE1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyOiBSZWdpc3RlciBhbiBJL08g cmFuZ2UgZm9yCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXVs YXRpb24gYnkgdGhlIGNsaWVudCBvZgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSU9SRVEgU2VydmVyIDxpZD4uCisgKiBYRU5fRE1PUF91bm1hcF9pb19yYW5nZV9m cm9tX2lvcmVxX3NlcnZlcjogRGVyZWdpc3RlciBhbiBJL08gcmFuZ2UKKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgZm9y CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW11bGF0aW9u IGJ5IHRoZSBjbGllbnQgb2YKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJT1JFUSBTZXJ2ZXIgPGlkPi4KKyAqCisgKiBUaGVyZSBhcmUgdGhyZWUgdHlwZXMg b2YgSS9PIHRoYXQgY2FuIGJlIGVtdWxhdGVkOiBwb3J0IEkvTywgbWVtb3J5CisgKiBhY2Nlc3Nl cyBhbmQgUENJIGNvbmZpZyBzcGFjZSBhY2Nlc3Nlcy4gVGhlIDx0eXBlPiBmaWVsZCBkZW5vdGVz IHdoaWNoCisgKiB0eXBlIG9mIHJhbmdlKiB0aGUgPHN0YXJ0PiBhbmQgPGVuZD4gKGluY2x1c2l2 ZSkgZmllbGRzIGFyZSBzcGVjaWZ5aW5nLgorICogUENJIGNvbmZpZyBzcGFjZSByYW5nZXMgYXJl IHNwZWNpZmllZCBieSBzZWdtZW50L2J1cy9kZXZpY2UvZnVuY3Rpb24KKyAqIHZhbHVlcyB3aGlj aCBzaG91bGQgYmUgZW5jb2RlZCB1c2luZyB0aGUgRE1PUF9QQ0lfU0JERiBoZWxwZXIgbWFjcm8K KyAqIGJlbG93LgorICoKKyAqIE5PVEU6IHVubGVzcyBhbiBlbXVsYXRpb24gcmVxdWVzdCBmYWxs cyBlbnRpcmVseSB3aXRoaW4gYSByYW5nZSBtYXBwZWQKKyAqIGJ5IGEgc2Vjb25kYXJ5IGVtdWxh dG9yLCBpdCB3aWxsIG5vdCBiZSBwYXNzZWQgdG8gdGhhdCBlbXVsYXRvci4KKyAqLworI2RlZmlu ZSBYRU5fRE1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyIDMKKyNkZWZpbmUgWEVOX0RN T1BfdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIgNAorCitzdHJ1Y3QgeGVuX2RtX29w X2lvcmVxX3NlcnZlcl9yYW5nZSB7CisgICAgLyogSU4gLSBzZXJ2ZXIgaWQgKi8KKyAgICBpb3Nl cnZpZF90IGlkOworICAgIHVpbnQxNl90IHBhZDsKKyAgICAvKiBJTiAtIHR5cGUgb2YgcmFuZ2Ug Ki8KKyAgICB1aW50MzJfdCB0eXBlOworIyBkZWZpbmUgWEVOX0RNT1BfSU9fUkFOR0VfUE9SVCAg IDAgLyogSS9PIHBvcnQgcmFuZ2UgKi8KKyMgZGVmaW5lIFhFTl9ETU9QX0lPX1JBTkdFX01FTU9S WSAxIC8qIE1NSU8gcmFuZ2UgKi8KKyMgZGVmaW5lIFhFTl9ETU9QX0lPX1JBTkdFX1BDSSAgICAy IC8qIFBDSSBzZWdtZW50L2J1cy9kZXYvZnVuYyByYW5nZSAqLworICAgIC8qIElOIC0gaW5jbHVz aXZlIHN0YXJ0IGFuZCBlbmQgb2YgcmFuZ2UgKi8KKyAgICB1aW50NjRfYWxpZ25lZF90IHN0YXJ0 LCBlbmQ7Cit9OworCisjZGVmaW5lIFhFTl9ETU9QX1BDSV9TQkRGKHMsYixkLGYpIFwKKwkoKCgo cykgJiAweGZmZmYpIDw8IDE2KSB8ICBcCisJICgoKGIpICYgMHhmZikgPDwgOCkgfCAgICAgXAor CSAoKChkKSAmIDB4MWYpIDw8IDMpIHwgICAgIFwKKwkgKChmKSAmIDB4MDcpKQorCisvKgorICog WEVOX0RNT1Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZTogRW5hYmxlIG9yIGRpc2FibGUgdGhlIElP UkVRIFNlcnZlciA8aWQ+CisgKgorICogVGhlIElPUkVRIFNlcnZlciB3aWxsIG5vdCBiZSBwYXNz ZWQgYW55IGVtdWxhdGlvbiByZXF1ZXN0cyB1bnRpbCBpdCBpcworICogaW4gdGhlIGVuYWJsZWQg c3RhdGUuCisgKiBOb3RlIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBpb3JlcV9wZm4gYW5kIGJ1 ZmlvcmVxX2ZuIChzZWUKKyAqIFhFTl9ETU9QX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbykgYXJlIG5v dCBtZWFuaW5nZnVsIHVudGlsIHRoZSBJT1JFUSBTZXJ2ZXIKKyAqIGlzIGluIHRoZSBlbmFibGVk IHN0YXRlLgorICovCisjZGVmaW5lIFhFTl9ETU9QX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUgNQor CitzdHJ1Y3QgeGVuX2RtX29wX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUgeworICAgIC8qIElOIC0g c2VydmVyIGlkICovCisgICAgaW9zZXJ2aWRfdCBpZDsKKyAgICAvKiBJTiAtIGVuYWJsZWQ/ICov CisgICAgdWludDhfdCBlbmFibGVkOworICAgIHVpbnQ4X3QgcGFkOworfTsKKworLyoKKyAqIFhF Tl9ETU9QX2Rlc3Ryb3lfaW9yZXFfc2VydmVyOiBEZXN0cm95IHRoZSBJT1JFUSBTZXJ2ZXIgPGlk Pi4KKyAqCisgKiBBbnkgcmVnaXN0ZXJlZCBJL08gcmFuZ2VzIHdpbGwgYmUgYXV0b21hdGljYWxs eSBkZXJlZ2lzdGVyZWQuCisgKi8KKyNkZWZpbmUgWEVOX0RNT1BfZGVzdHJveV9pb3JlcV9zZXJ2 ZXIgNgorCitzdHJ1Y3QgeGVuX2RtX29wX2Rlc3Ryb3lfaW9yZXFfc2VydmVyIHsKKyAgICAvKiBJ TiAtIHNlcnZlciBpZCAqLworICAgIGlvc2VydmlkX3QgaWQ7CisgICAgdWludDE2X3QgcGFkOwor fTsKKwogc3RydWN0IHhlbl9kbV9vcCB7CiAgICAgdWludDMyX3Qgb3A7CisgICAgdWludDMyX3Qg cGFkOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHhlbl9kbV9vcF9jcmVhdGVfaW9yZXFf c2VydmVyIGNyZWF0ZV9pb3JlcV9zZXJ2ZXI7CisgICAgICAgIHN0cnVjdCB4ZW5fZG1fb3BfZ2V0 X2lvcmVxX3NlcnZlcl9pbmZvIGdldF9pb3JlcV9zZXJ2ZXJfaW5mbzsKKyAgICAgICAgc3RydWN0 IHhlbl9kbV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2UgbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZl cjsKKyAgICAgICAgc3RydWN0IHhlbl9kbV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2UgdW5tYXBfaW9f cmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXI7CisgICAgICAgIHN0cnVjdCB4ZW5fZG1fb3Bfc2V0X2lv cmVxX3NlcnZlcl9zdGF0ZSBzZXRfaW9yZXFfc2VydmVyX3N0YXRlOworICAgICAgICBzdHJ1Y3Qg eGVuX2RtX29wX2Rlc3Ryb3lfaW9yZXFfc2VydmVyIGRlc3Ryb3lfaW9yZXFfc2VydmVyOworICAg IH0gdTsKIH07CiAKIHN0cnVjdCB4ZW5fZG1fb3BfYnVmIHsKZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL3B1YmxpYy9odm0vaHZtX29wLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5o CmluZGV4IGIzZTQ1Y2YuLjZmY2Q4NmQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9o dm0vaHZtX29wLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaApAQCAtMjQz LDM3ICsyNDMsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9pbmplY3RfbXNpIHhlbl9odm1f aW5qZWN0X21zaV90OwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9pbmplY3RfbXNp X3QpOwogCiAvKgotICogSU9SRVEgU2VydmVycwotICoKLSAqIFRoZSBpbnRlcmZhY2UgYmV0d2Vl biBhbiBJL08gZW11bGF0b3IgYW4gWGVuIGlzIGNhbGxlZCBhbiBJT1JFUSBTZXJ2ZXIuCi0gKiBB IGRvbWFpbiBzdXBwb3J0cyBhIHNpbmdsZSAnbGVnYWN5JyBJT1JFUSBTZXJ2ZXIgd2hpY2ggaXMg aW5zdGFudGlhdGVkIGlmCi0gKiBwYXJhbWV0ZXIuLi4KLSAqCi0gKiBIVk1fUEFSQU1fSU9SRVFf UEZOIGlzIHJlYWQgKHRvIGdldCB0aGUgZ21mbiBjb250YWluaW5nIHRoZSBzeW5jaHJvbm91cwot ICogaW9yZXEgc3RydWN0dXJlcyksIG9yLi4uCi0gKiBIVk1fUEFSQU1fQlVGSU9SRVFfUEZOIGlz IHJlYWQgKHRvIGdldCB0aGUgZ21mbiBjb250YWluaW5nIHRoZSBidWZmZXJlZAotICogaW9yZXEg cmluZyksIG9yLi4uCi0gKiBIVk1fUEFSQU1fQlVGSU9SRVFfRVZUQ0hOIGlzIHJlYWQgKHRvIGdl dCB0aGUgZXZlbnQgY2hhbm5lbCB0aGF0IFhlbiB1c2VzCi0gKiB0byByZXF1ZXN0IGJ1ZmZlcmVk IEkvTyBlbXVsYXRpb24pLgotICogCi0gKiBUaGUgZm9sbG93aW5nIGh5cGVyY2FsbHMgZmFjaWxp dGF0ZSB0aGUgY3JlYXRpb24gb2YgSU9SRVEgU2VydmVycyBmb3IKLSAqICdzZWNvbmRhcnknIGVt dWxhdG9ycyB3aGljaCBhcmUgaW52b2tlZCB0byBpbXBsZW1lbnQgcG9ydCBJL08sIG1lbW9yeSwg b3IKLSAqIFBDSSBjb25maWcgc3BhY2UgcmFuZ2VzIHdoaWNoIHRoZXkgZXhwbGljaXRseSByZWdp c3Rlci4KKyAqIERlZmluaXRpb25zIHJlbGF0aW5nIHRvIERNT1BfY3JlYXRlX2lvcmVxX3NlcnZl ci4gKERlZmluZWQgaGVyZSBmb3IKKyAqIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5KS4KICAqLwog Ci10eXBlZGVmIHVpbnQxNl90IGlvc2VydmlkX3Q7Ci0KLS8qCi0gKiBIVk1PUF9jcmVhdGVfaW9y ZXFfc2VydmVyOiBJbnN0YW50aWF0ZSBhIG5ldyBJT1JFUSBTZXJ2ZXIgZm9yIGEgc2Vjb25kYXJ5 Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXVsYXRvciBzZXJ2aWNpbmcgZG9tYWlu IDxkb21pZD4uCi0gKgotICogVGhlIDxpZD4gaGFuZGVkIGJhY2sgaXMgdW5pcXVlIGZvciA8ZG9t aWQ+LiBJZiA8aGFuZGxlX2J1ZmlvcmVxPiBpcyB6ZXJvCi0gKiB0aGUgYnVmZmVyZWQgaW9yZXEg cmluZyB3aWxsIG5vdCBiZSBhbGxvY2F0ZWQgYW5kIGhlbmNlIGFsbCBlbXVsYXRpb24KLSAqIHJl cXVlc3RlcyB0byB0aGlzIHNlcnZlciB3aWxsIGJlIHN5bmNocm9ub3VzLgotICovCi0jZGVmaW5l IEhWTU9QX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgMTcKLXN0cnVjdCB4ZW5faHZtX2NyZWF0ZV9pb3Jl cV9zZXJ2ZXIgewotICAgIGRvbWlkX3QgZG9taWQ7ICAgICAgICAgICAvKiBJTiAtIGRvbWFpbiB0 byBiZSBzZXJ2aWNlZCAqLwogI2RlZmluZSBIVk1fSU9SRVFTUlZfQlVGSU9SRVFfT0ZGICAgIDAK ICNkZWZpbmUgSFZNX0lPUkVRU1JWX0JVRklPUkVRX0xFR0FDWSAxCiAvKgpAQCAtMjgxLDEwNyAr MjU0LDYgQEAgc3RydWN0IHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlciB7CiAgKiB0aGUgcG9p bnRlciBwYWlyIGdldHMgcmVhZCBhdG9taWNhbGx5OgogICovCiAjZGVmaW5lIEhWTV9JT1JFUVNS Vl9CVUZJT1JFUV9BVE9NSUMgMgotICAgIHVpbnQ4X3QgaGFuZGxlX2J1ZmlvcmVxOyAvKiBJTiAt IHNob3VsZCBzZXJ2ZXIgaGFuZGxlIGJ1ZmZlcmVkIGlvcmVxcyAqLwotICAgIGlvc2VydmlkX3Qg aWQ7ICAgICAgICAgICAvKiBPVVQgLSBzZXJ2ZXIgaWQgKi8KLX07Ci10eXBlZGVmIHN0cnVjdCB4 ZW5faHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgeGVuX2h2bV9jcmVhdGVfaW9yZXFfc2VydmVyX3Q7 Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXJfdCk7 Ci0KLS8qCi0gKiBIVk1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm86IEdldCBhbGwgdGhlIGluZm9y bWF0aW9uIG5lY2Vzc2FyeSB0byBhY2Nlc3MKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSU9SRVEgU2VydmVyIDxpZD4uIAotICoKLSAqIFRoZSBlbXVsYXRvciBuZWVkcyB0byBtYXAg dGhlIHN5bmNocm9ub3VzIGlvcmVxIHN0cnVjdHVyZXMgYW5kIGJ1ZmZlcmVkCi0gKiBpb3JlcSBy aW5nIChpZiBpdCBleGlzdHMpIHRoYXQgWGVuIHVzZXMgdG8gcmVxdWVzdCBlbXVsYXRpb24uIFRo ZXNlIGFyZQotICogaG9zdGVkIGluIGRvbWFpbiA8ZG9taWQ+J3MgZ21mbnMgPGlvcmVxX3Bmbj4g YW5kIDxidWZpb3JlcV9wZm4+Ci0gKiByZXNwZWN0aXZlbHkuIEluIGFkZGl0aW9uLCBpZiB0aGUg SU9SRVEgU2VydmVyIGlzIGhhbmRsaW5nIGJ1ZmZlcmVkCi0gKiBlbXVsYXRpb24gcmVxdWVzdHMs IHRoZSBlbXVsYXRvciBuZWVkcyB0byBiaW5kIHRvIGV2ZW50IGNoYW5uZWwKLSAqIDxidWZpb3Jl cV9wb3J0PiB0byBsaXN0ZW4gZm9yIHRoZW0uIChUaGUgZXZlbnQgY2hhbm5lbHMgdXNlZCBmb3IK LSAqIHN5bmNocm9ub3VzIGVtdWxhdGlvbiByZXF1ZXN0cyBhcmUgc3BlY2lmaWVkIGluIHRoZSBw ZXItQ1BVIGlvcmVxCi0gKiBzdHJ1Y3R1cmVzIGluIDxpb3JlcV9wZm4+KS4KLSAqIElmIHRoZSBJ T1JFUSBTZXJ2ZXIgaXMgbm90IGhhbmRsaW5nIGJ1ZmZlcmVkIGVtdWxhdGlvbiByZXF1ZXN0cyB0 aGVuIHRoZQotICogdmFsdWVzIGhhbmRlZCBiYWNrIGluIDxidWZpb3JlcV9wZm4+IGFuZCA8YnVm aW9yZXFfcG9ydD4gd2lsbCBib3RoIGJlIDAuCi0gKi8KLSNkZWZpbmUgSFZNT1BfZ2V0X2lvcmVx X3NlcnZlcl9pbmZvIDE4Ci1zdHJ1Y3QgeGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8gewot ICAgIGRvbWlkX3QgZG9taWQ7ICAgICAgICAgICAgICAgICAvKiBJTiAtIGRvbWFpbiB0byBiZSBz ZXJ2aWNlZCAqLwotICAgIGlvc2VydmlkX3QgaWQ7ICAgICAgICAgICAgICAgICAvKiBJTiAtIHNl cnZlciBpZCAqLwotICAgIGV2dGNobl9wb3J0X3QgYnVmaW9yZXFfcG9ydDsgICAvKiBPVVQgLSBi dWZmZXJlZCBpb3JlcSBwb3J0ICovCi0gICAgdWludDY0X2FsaWduZWRfdCBpb3JlcV9wZm47ICAg IC8qIE9VVCAtIHN5bmMgaW9yZXEgcGZuICovCi0gICAgdWludDY0X2FsaWduZWRfdCBidWZpb3Jl cV9wZm47IC8qIE9VVCAtIGJ1ZmZlcmVkIGlvcmVxIHBmbiAqLwotfTsKLXR5cGVkZWYgc3RydWN0 IHhlbl9odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvIHhlbl9odm1fZ2V0X2lvcmVxX3NlcnZlcl9p bmZvX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX2dldF9pb3JlcV9zZXJ2ZXJf aW5mb190KTsKLQotLyoKLSAqIEhWTV9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyOiBSZWdp c3RlciBhbiBJL08gcmFuZ2Ugb2YgZG9tYWluIDxkb21pZD4KLSAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmb3IgZW11bGF0aW9uIGJ5IHRoZSBjbGllbnQgb2YgSU9SRVEKLSAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2ZXIgPGlkPgotICogSFZNX3Vu bWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyOiBEZXJlZ2lzdGVyIGFuIEkvTyByYW5nZSBv ZiA8ZG9taWQ+Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBl bXVsYXRpb24gYnkgdGhlIGNsaWVudCBvZiBJT1JFUQotICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTZXJ2ZXIgPGlkPgotICoKLSAqIFRoZXJlIGFyZSB0aHJlZSB0eXBl cyBvZiBJL08gdGhhdCBjYW4gYmUgZW11bGF0ZWQ6IHBvcnQgSS9PLCBtZW1vcnkgYWNjZXNzZXMK LSAqIGFuZCBQQ0kgY29uZmlnIHNwYWNlIGFjY2Vzc2VzLiBUaGUgPHR5cGU+IGZpZWxkIGRlbm90 ZXMgd2hpY2ggdHlwZSBvZiByYW5nZQotICogdGhlIDxzdGFydD4gYW5kIDxlbmQ+IChpbmNsdXNp dmUpIGZpZWxkcyBhcmUgc3BlY2lmeWluZy4KLSAqIFBDSSBjb25maWcgc3BhY2UgcmFuZ2VzIGFy ZSBzcGVjaWZpZWQgYnkgc2VnbWVudC9idXMvZGV2aWNlL2Z1bmN0aW9uIHZhbHVlcwotICogd2hp Y2ggc2hvdWxkIGJlIGVuY29kZWQgdXNpbmcgdGhlIEhWTU9QX1BDSV9TQkRGIGhlbHBlciBtYWNy byBiZWxvdy4KLSAqCi0gKiBOT1RFOiB1bmxlc3MgYW4gZW11bGF0aW9uIHJlcXVlc3QgZmFsbHMg ZW50aXJlbHkgd2l0aGluIGEgcmFuZ2UgbWFwcGVkCi0gKiBieSBhIHNlY29uZGFyeSBlbXVsYXRv ciwgaXQgd2lsbCBub3QgYmUgcGFzc2VkIHRvIHRoYXQgZW11bGF0b3IuCi0gKi8KLSNkZWZpbmUg SFZNT1BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlciAxOQotI2RlZmluZSBIVk1PUF91bm1h cF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlciAyMAotc3RydWN0IHhlbl9odm1faW9fcmFuZ2Ug ewotICAgIGRvbWlkX3QgZG9taWQ7ICAgICAgICAgICAgICAgLyogSU4gLSBkb21haW4gdG8gYmUg c2VydmljZWQgKi8KLSAgICBpb3NlcnZpZF90IGlkOyAgICAgICAgICAgICAgIC8qIElOIC0gc2Vy dmVyIGlkICovCi0gICAgdWludDMyX3QgdHlwZTsgICAgICAgICAgICAgICAvKiBJTiAtIHR5cGUg b2YgcmFuZ2UgKi8KLSMgZGVmaW5lIEhWTU9QX0lPX1JBTkdFX1BPUlQgICAwIC8qIEkvTyBwb3J0 IHJhbmdlICovCi0jIGRlZmluZSBIVk1PUF9JT19SQU5HRV9NRU1PUlkgMSAvKiBNTUlPIHJhbmdl ICovCi0jIGRlZmluZSBIVk1PUF9JT19SQU5HRV9QQ0kgICAgMiAvKiBQQ0kgc2VnbWVudC9idXMv ZGV2L2Z1bmMgcmFuZ2UgKi8KLSAgICB1aW50NjRfYWxpZ25lZF90IHN0YXJ0LCBlbmQ7IC8qIElO IC0gaW5jbHVzaXZlIHN0YXJ0IGFuZCBlbmQgb2YgcmFuZ2UgKi8KLX07Ci10eXBlZGVmIHN0cnVj dCB4ZW5faHZtX2lvX3JhbmdlIHhlbl9odm1faW9fcmFuZ2VfdDsKLURFRklORV9YRU5fR1VFU1Rf SEFORExFKHhlbl9odm1faW9fcmFuZ2VfdCk7Ci0KLSNkZWZpbmUgSFZNT1BfUENJX1NCREYocyxi LGQsZikgICAgICAgICAgICAgICAgIFwKLQkoKCgocykgJiAweGZmZmYpIDw8IDE2KSB8ICAgICAg ICAgICAgICAgICAgIFwKLQkgKCgoYikgJiAweGZmKSA8PCA4KSB8ICAgICAgICAgICAgICAgICAg ICAgIFwKLQkgKCgoZCkgJiAweDFmKSA8PCAzKSB8ICAgICAgICAgICAgICAgICAgICAgIFwKLQkg KChmKSAmIDB4MDcpKQotCi0vKgotICogSFZNT1BfZGVzdHJveV9pb3JlcV9zZXJ2ZXI6IERlc3Ry b3kgdGhlIElPUkVRIFNlcnZlciA8aWQ+IHNlcnZpY2luZyBkb21haW4KLSAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8ZG9taWQ+LgotICoKLSAqIEFueSByZWdpc3RlcmVkIEkvTyByYW5n ZXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRlcmVnaXN0ZXJlZC4KLSAqLwotI2RlZmluZSBIVk1P UF9kZXN0cm95X2lvcmVxX3NlcnZlciAyMQotc3RydWN0IHhlbl9odm1fZGVzdHJveV9pb3JlcV9z ZXJ2ZXIgewotICAgIGRvbWlkX3QgZG9taWQ7IC8qIElOIC0gZG9tYWluIHRvIGJlIHNlcnZpY2Vk ICovCi0gICAgaW9zZXJ2aWRfdCBpZDsgLyogSU4gLSBzZXJ2ZXIgaWQgKi8KLX07Ci10eXBlZGVm IHN0cnVjdCB4ZW5faHZtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyIHhlbl9odm1fZGVzdHJveV9pb3Jl cV9zZXJ2ZXJfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fZGVzdHJveV9pb3Jl cV9zZXJ2ZXJfdCk7Ci0KLS8qCi0gKiBIVk1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlOiBFbmFi bGUgb3IgZGlzYWJsZSB0aGUgSU9SRVEgU2VydmVyIDxpZD4gc2VydmljaW5nCi0gKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gPGRvbWlkPi4KLSAqCi0gKiBUaGUgSU9SRVEg U2VydmVyIHdpbGwgbm90IGJlIHBhc3NlZCBhbnkgZW11bGF0aW9uIHJlcXVlc3RzIHVudGlsIGl0 IGlzIGluIHRoZQotICogZW5hYmxlZCBzdGF0ZS4KLSAqIE5vdGUgdGhhdCB0aGUgY29udGVudHMg b2YgdGhlIGlvcmVxX3BmbiBhbmQgYnVmaW9yZXFfZm4gKHNlZQotICogSFZNT1BfZ2V0X2lvcmVx X3NlcnZlcl9pbmZvKSBhcmUgbm90IG1lYW5pbmdmdWwgdW50aWwgdGhlIElPUkVRIFNlcnZlciBp cyBpbgotICogdGhlIGVuYWJsZWQgc3RhdGUuCi0gKi8KLSNkZWZpbmUgSFZNT1Bfc2V0X2lvcmVx X3NlcnZlcl9zdGF0ZSAyMgotc3RydWN0IHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSB7 Ci0gICAgZG9taWRfdCBkb21pZDsgICAvKiBJTiAtIGRvbWFpbiB0byBiZSBzZXJ2aWNlZCAqLwot ICAgIGlvc2VydmlkX3QgaWQ7ICAgLyogSU4gLSBzZXJ2ZXIgaWQgKi8KLSAgICB1aW50OF90IGVu YWJsZWQ7IC8qIElOIC0gZW5hYmxlZD8gKi8gICAgCi19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2 bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZV90 OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRl X3QpOwogCiAjZW5kaWYgLyogZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xT X18pICovCiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hzbS9kdW1teS5oIGIveGVuL2luY2x1 ZGUveHNtL2R1bW15LmgKaW5kZXggYjIwNmY1YS4uOWY3YzE3NCAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUveHNtL2R1bW15LmgKKysrIGIveGVuL2luY2x1ZGUveHNtL2R1bW15LmgKQEAgLTYzNCwx MiArNjM0LDYgQEAgc3RhdGljIFhTTV9JTkxJTkUgaW50IHhzbV9odm1faW5qZWN0X21zaShYU01f REVGQVVMVF9BUkcgc3RydWN0IGRvbWFpbiAqZCkKICAgICByZXR1cm4geHNtX2RlZmF1bHRfYWN0 aW9uKGFjdGlvbiwgY3VycmVudC0+ZG9tYWluLCBkKTsKIH0KIAotc3RhdGljIFhTTV9JTkxJTkUg aW50IHhzbV9odm1faW9yZXFfc2VydmVyKFhTTV9ERUZBVUxUX0FSRyBzdHJ1Y3QgZG9tYWluICpk LCBpbnQgb3ApCi17Ci0gICAgWFNNX0FTU0VSVF9BQ1RJT04oWFNNX0RNX1BSSVYpOwotICAgIHJl dHVybiB4c21fZGVmYXVsdF9hY3Rpb24oYWN0aW9uLCBjdXJyZW50LT5kb21haW4sIGQpOwotfQot CiBzdGF0aWMgWFNNX0lOTElORSBpbnQgeHNtX21lbV9zaGFyaW5nX29wKFhTTV9ERUZBVUxUX0FS RyBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgZG9tYWluICpjZCwgaW50IG9wKQogewogICAgIFhT TV9BU1NFUlRfQUNUSU9OKFhTTV9ETV9QUklWKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hz bS94c20uaCBiL3hlbi9pbmNsdWRlL3hzbS94c20uaAppbmRleCBlMmQzMzZmLi5iNTg0NWEyIDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS94c20veHNtLmgKKysrIGIveGVuL2luY2x1ZGUveHNtL3hz bS5oCkBAIC0xNjYsNyArMTY2LDYgQEAgc3RydWN0IHhzbV9vcGVyYXRpb25zIHsKICAgICBpbnQg KCpodm1fc2V0X2lzYV9pcnFfbGV2ZWwpIChzdHJ1Y3QgZG9tYWluICpkKTsKICAgICBpbnQgKCpo dm1fc2V0X3BjaV9saW5rX3JvdXRlKSAoc3RydWN0IGRvbWFpbiAqZCk7CiAgICAgaW50ICgqaHZt X2luamVjdF9tc2kpIChzdHJ1Y3QgZG9tYWluICpkKTsKLSAgICBpbnQgKCpodm1faW9yZXFfc2Vy dmVyKSAoc3RydWN0IGRvbWFpbiAqZCwgaW50IG9wKTsKICAgICBpbnQgKCptZW1fc2hhcmluZ19v cCkgKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBkb21haW4gKmNkLCBpbnQgb3ApOwogICAgIGlu dCAoKmFwaWMpIChzdHJ1Y3QgZG9tYWluICpkLCBpbnQgY21kKTsKICAgICBpbnQgKCptZW10eXBl KSAodWludDMyX3QgYWNjZXNzKTsKQEAgLTY1NiwxMSArNjU1LDYgQEAgc3RhdGljIGlubGluZSBp bnQgeHNtX2h2bV9pbmplY3RfbXNpICh4c21fZGVmYXVsdF90IGRlZiwgc3RydWN0IGRvbWFpbiAq ZCkKICAgICByZXR1cm4geHNtX29wcy0+aHZtX2luamVjdF9tc2koZCk7CiB9CiAKLXN0YXRpYyBp bmxpbmUgaW50IHhzbV9odm1faW9yZXFfc2VydmVyICh4c21fZGVmYXVsdF90IGRlZiwgc3RydWN0 IGRvbWFpbiAqZCwgaW50IG9wKQotewotICAgIHJldHVybiB4c21fb3BzLT5odm1faW9yZXFfc2Vy dmVyKGQsIG9wKTsKLX0KLQogc3RhdGljIGlubGluZSBpbnQgeHNtX21lbV9zaGFyaW5nX29wICh4 c21fZGVmYXVsdF90IGRlZiwgc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGRvbWFpbiAqY2QsIGlu dCBvcCkKIHsKICAgICByZXR1cm4geHNtX29wcy0+bWVtX3NoYXJpbmdfb3AoZCwgY2QsIG9wKTsK ZGlmZiAtLWdpdCBhL3hlbi94c20vZHVtbXkuYyBiL3hlbi94c20vZHVtbXkuYwppbmRleCBhMDgy YjI4Li5kNTQ0ZWMxIDEwMDY0NAotLS0gYS94ZW4veHNtL2R1bW15LmMKKysrIGIveGVuL3hzbS9k dW1teS5jCkBAIC0xNDksNyArMTQ5LDYgQEAgdm9pZCBfX2luaXQgeHNtX2ZpeHVwX29wcyAoc3Ry dWN0IHhzbV9vcGVyYXRpb25zICpvcHMpCiAgICAgc2V0X3RvX2R1bW15X2lmX251bGwob3BzLCBo dm1fc2V0X2lzYV9pcnFfbGV2ZWwpOwogICAgIHNldF90b19kdW1teV9pZl9udWxsKG9wcywgaHZt X3NldF9wY2lfbGlua19yb3V0ZSk7CiAgICAgc2V0X3RvX2R1bW15X2lmX251bGwob3BzLCBodm1f aW5qZWN0X21zaSk7Ci0gICAgc2V0X3RvX2R1bW15X2lmX251bGwob3BzLCBodm1faW9yZXFfc2Vy dmVyKTsKICAgICBzZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIG1lbV9zaGFyaW5nX29wKTsKICAg ICBzZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIGFwaWMpOwogICAgIHNldF90b19kdW1teV9pZl9u dWxsKG9wcywgbWFjaGluZV9tZW1vcnlfbWFwKTsKZGlmZiAtLWdpdCBhL3hlbi94c20vZmxhc2sv aG9va3MuYyBiL3hlbi94c20vZmxhc2svaG9va3MuYwppbmRleCAzODNkZDRmLi4xY2U4YTM2IDEw MDY0NAotLS0gYS94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKKysrIGIveGVuL3hzbS9mbGFzay9ob29r cy5jCkBAIC0xNTI1LDExICsxNTI1LDYgQEAgc3RhdGljIGludCBmbGFza19odm1faW5qZWN0X21z aShzdHJ1Y3QgZG9tYWluICpkKQogICAgIHJldHVybiBjdXJyZW50X2hhc19wZXJtKGQsIFNFQ0NM QVNTX0hWTSwgSFZNX19TRU5EX0lSUSk7CiB9CiAKLXN0YXRpYyBpbnQgZmxhc2tfaHZtX2lvcmVx X3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpbnQgb3ApCi17Ci0gICAgcmV0dXJuIGN1cnJlbnRf aGFzX3Blcm0oZCwgU0VDQ0xBU1NfSFZNLCBIVk1fX0hWTUNUTCk7Ci19Ci0KIHN0YXRpYyBpbnQg Zmxhc2tfbWVtX3NoYXJpbmdfb3Aoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGRvbWFpbiAqY2Qs IGludCBvcCkKIHsKICAgICBpbnQgcmMgPSBjdXJyZW50X2hhc19wZXJtKGNkLCBTRUNDTEFTU19I Vk0sIEhWTV9fTUVNX1NIQVJJTkcpOwpAQCAtMTgwOCw3ICsxODAzLDYgQEAgc3RhdGljIHN0cnVj dCB4c21fb3BlcmF0aW9ucyBmbGFza19vcHMgPSB7CiAgICAgLmh2bV9zZXRfaXNhX2lycV9sZXZl bCA9IGZsYXNrX2h2bV9zZXRfaXNhX2lycV9sZXZlbCwKICAgICAuaHZtX3NldF9wY2lfbGlua19y b3V0ZSA9IGZsYXNrX2h2bV9zZXRfcGNpX2xpbmtfcm91dGUsCiAgICAgLmh2bV9pbmplY3RfbXNp ID0gZmxhc2tfaHZtX2luamVjdF9tc2ksCi0gICAgLmh2bV9pb3JlcV9zZXJ2ZXIgPSBmbGFza19o dm1faW9yZXFfc2VydmVyLAogICAgIC5tZW1fc2hhcmluZ19vcCA9IGZsYXNrX21lbV9zaGFyaW5n X29wLAogICAgIC5hcGljID0gZmxhc2tfYXBpYywKICAgICAubWFjaGluZV9tZW1vcnlfbWFwID0g Zmxhc2tfbWFjaGluZV9tZW1vcnlfbWFwLAotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK