From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v2 02/13] iommu: introduce the concept of BFN... Date: Sat, 7 Jul 2018 12:05:15 +0100 Message-ID: <20180707110526.35822-3-paul.durrant@citrix.com> References: <20180707110526.35822-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fbl1z-00024e-Gu for xen-devel@lists.xenproject.org; Sat, 07 Jul 2018 11:05:35 +0000 In-Reply-To: <20180707110526.35822-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Kevin Tian , Stefano Stabellini , Suravee Suthikulpanit , Julien Grall , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org Li4ubWVhbmluZyAnYnVzIGZyYW1lIG51bWJlcicgaS5lLiBhIGZyYW1lIG51bWJlciBtYXBwZWQg aW4gdGhlIElPTU1VCnJhdGhlciB0aGFuIHRoZSBNTVUuCgpUaGlzIHBhdGNoIGlzIGEgbGFyZ2Vs eSBjb3NtZXRpYyBjaGFuZ2UgdGhhdCBzdWJzdGl0dXRlcyB0aGUgdGVybXMgJ2dmbicKYW5kICdn YWRkcicgZm9yICdiZm4nIGFuZCAnYmFkZHInIGluIGFsbCB0aGUgcGxhY2VzIHdoZXJlIHRoZSBm cmFtZSBudW1iZXIKb3IgYWRkcmVzcyByZWxhdGUgdG8gdGhlIElPTU1VIHJhdGhlciB0aGFuIHRo ZSBNTVUuCgpUaGUgcGFydHMgdGhhdCBhcmUgbm90IHB1cmVseSBjb3NtZXRpYyBhcmU6CgogLSB0 aGUgaW50cm9kdWN0aW9uIG9mIGEgdHlwZS1zYWZlIGRlY2xhcmF0aW9uIG9mIGJmbl90IGFuZCBk ZWZpbml0aW9uIG9mCiAgIElOVkFMSURfQkZOIHRvIG1ha2UgdGhlIHN1YnN0aXR1dGlvbiBvZiBn Zm5feChJTlZBTElEX0dGTikgbWVjaGFuaWNhbC4KIC0gdGhlIGludHJvZHVjdGlvbiBvZiBfX2Jm bl90b19iYWRkciBhbmQgX19iYWRkcl90b19iZm4gKGFuZCB0eXBlLXNhZmUKICAgdmFyaWFudHMg d2l0aG91dCB0aGUgbGVhZGluZyBfXykgd2l0aCBzb21lIHVzZSBvZiB0aGUgZm9ybWVyLgoKU3Vi c2VxdWVudCBwYXRjaGVzIHdpbGwgY29udmVydCBjb2RlIHRvIG1ha2UgdXNlIG9mIHR5cGUtc2Fm ZSBCRk5zLgoKU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4 LmNvbT4KLS0tCkNjOiBTdXJhdmVlIFN1dGhpa3VscGFuaXQgPHN1cmF2ZWUuc3V0aGlrdWxwYW5p dEBhbWQuY29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3Jn PgpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KQ2M6IEphbiBCZXVsaWNo IDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29t PgoKdjI6CiAtIEFkZHJlc3NlZCBjb21tZW50cyBmcm9tIEphbi4KLS0tCiB4ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9hbWQvaW9tbXVfY21kLmMgICAgIHwgMTggKysrLS0tLQogeGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jICAgICB8IDc2ICsrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jIHwg IDIgKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMgICAgICAgICAgfCAxOSAr KysrKy0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyAgICAgICAgICAgICB8IDI5 ICsrKysrLS0tLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYyAgICAgICAg IHwgMzAgKysrKysrLS0tLS0tCiB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAgICAgICAgICAg ICAgICAgIHwgMzggKysrKysrKysrKysrLS0tCiB4ZW4vaW5jbHVkZS94ZW4vbW0uaCAgICAgICAg ICAgICAgICAgICAgICAgIHwgMTAgKysrLQogOCBmaWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9u cygrKSwgOTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvYW1kL2lvbW11X2NtZC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2Nt ZC5jCmluZGV4IDA4MjQ3ZmEzNTQuLmY5M2JlY2Q2ZTEgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9jbWQuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9hbWQvaW9tbXVfY21kLmMKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIGludmFsaWRhdGVfaW9t bXVfYWxsKHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11KQogfQogCiB2b2lkIGFtZF9pb21tdV9mbHVz aF9pb3RsYih1OCBkZXZmbiwgY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50NjRfdCBnYWRkciwgdW5zaWduZWQgaW50IG9yZGVyKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgYmFkZHJfdCBiYWRkciwgdW5zaWduZWQgaW50IG9yZGVy KQogewogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgc3RydWN0IGFtZF9pb21tdSAqaW9t bXU7CkBAIC0zMTUsMTIgKzMxNSwxMiBAQCB2b2lkIGFtZF9pb21tdV9mbHVzaF9pb3RsYih1OCBk ZXZmbiwgY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAKICAgICAvKiBzZW5kIElOVkFMSURB VEVfSU9UTEJfUEFHRVMgY29tbWFuZCAqLwogICAgIHNwaW5fbG9ja19pcnFzYXZlKCZpb21tdS0+ bG9jaywgZmxhZ3MpOwotICAgIGludmFsaWRhdGVfaW90bGJfcGFnZXMoaW9tbXUsIG1heHBlbmQs IDAsIHF1ZXVlaWQsIGdhZGRyLCByZXFfaWQsIG9yZGVyKTsKKyAgICBpbnZhbGlkYXRlX2lvdGxi X3BhZ2VzKGlvbW11LCBtYXhwZW5kLCAwLCBxdWV1ZWlkLCBiYWRkciwgcmVxX2lkLCBvcmRlcik7 CiAgICAgZmx1c2hfY29tbWFuZF9idWZmZXIoaW9tbXUpOwogICAgIHNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmlvbW11LT5sb2NrLCBmbGFncyk7CiB9CiAKLXN0YXRpYyB2b2lkIGFtZF9pb21tdV9m bHVzaF9hbGxfaW90bGJzKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90IGdhZGRyLAorc3RhdGlj IHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9pb3RsYnMoc3RydWN0IGRvbWFpbiAqZCwgYmFkZHJf dCBiYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBvcmRlcikKIHsKICAgICBzdHJ1Y3QgcGNpX2RldiAqcGRldjsKQEAgLTMzMyw3ICszMzMs NyBAQCBzdGF0aWMgdm9pZCBhbWRfaW9tbXVfZmx1c2hfYWxsX2lvdGxicyhzdHJ1Y3QgZG9tYWlu ICpkLCB1aW50NjRfdCBnYWRkciwKICAgICAgICAgdTggZGV2Zm4gPSBwZGV2LT5kZXZmbjsKIAog ICAgICAgICBkbyB7Ci0gICAgICAgICAgICBhbWRfaW9tbXVfZmx1c2hfaW90bGIoZGV2Zm4sIHBk ZXYsIGdhZGRyLCBvcmRlcik7CisgICAgICAgICAgICBhbWRfaW9tbXVfZmx1c2hfaW90bGIoZGV2 Zm4sIHBkZXYsIGJhZGRyLCBvcmRlcik7CiAgICAgICAgICAgICBkZXZmbiArPSBwZGV2LT5waGFu dG9tX3N0cmlkZTsKICAgICAgICAgfSB3aGlsZSAoIGRldmZuICE9IHBkZXYtPmRldmZuICYmCiAg ICAgICAgICAgICAgICAgICBQQ0lfU0xPVChkZXZmbikgPT0gUENJX1NMT1QocGRldi0+ZGV2Zm4p ICk7CkBAIC0zNDIsNyArMzQyLDcgQEAgc3RhdGljIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9p b3RsYnMoc3RydWN0IGRvbWFpbiAqZCwgdWludDY0X3QgZ2FkZHIsCiAKIC8qIEZsdXNoIGlvbW11 IGNhY2hlIGFmdGVyIHAybSBjaGFuZ2VzLiAqLwogc3RhdGljIHZvaWQgX2FtZF9pb21tdV9mbHVz aF9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50NjRfdCBnYWRkciwgdW5zaWduZWQgaW50IG9yZGVyKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBiYWRkcl90IGJhZGRyLCB1bnNpZ25lZCBpbnQgb3JkZXIpCiB7 CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICBzdHJ1Y3QgYW1kX2lvbW11ICppb21tdTsK QEAgLTM1MiwxMyArMzUyLDEzIEBAIHN0YXRpYyB2b2lkIF9hbWRfaW9tbXVfZmx1c2hfcGFnZXMo c3RydWN0IGRvbWFpbiAqZCwKICAgICBmb3JfZWFjaF9hbWRfaW9tbXUgKCBpb21tdSApCiAgICAg ewogICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmaW9tbXUtPmxvY2ssIGZsYWdzKTsKLSAgICAg ICAgaW52YWxpZGF0ZV9pb21tdV9wYWdlcyhpb21tdSwgZ2FkZHIsIGRvbV9pZCwgb3JkZXIpOwor ICAgICAgICBpbnZhbGlkYXRlX2lvbW11X3BhZ2VzKGlvbW11LCBiYWRkciwgZG9tX2lkLCBvcmRl cik7CiAgICAgICAgIGZsdXNoX2NvbW1hbmRfYnVmZmVyKGlvbW11KTsKICAgICAgICAgc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmaW9tbXUtPmxvY2ssIGZsYWdzKTsKICAgICB9CiAKICAgICBpZiAo IGF0c19lbmFibGVkICkKLSAgICAgICAgYW1kX2lvbW11X2ZsdXNoX2FsbF9pb3RsYnMoZCwgZ2Fk ZHIsIG9yZGVyKTsKKyAgICAgICAgYW1kX2lvbW11X2ZsdXNoX2FsbF9pb3RsYnMoZCwgYmFkZHIs IG9yZGVyKTsKIH0KIAogdm9pZCBhbWRfaW9tbXVfZmx1c2hfYWxsX3BhZ2VzKHN0cnVjdCBkb21h aW4gKmQpCkBAIC0zNjcsOSArMzY3LDkgQEAgdm9pZCBhbWRfaW9tbXVfZmx1c2hfYWxsX3BhZ2Vz KHN0cnVjdCBkb21haW4gKmQpCiB9CiAKIHZvaWQgYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKHN0cnVj dCBkb21haW4gKmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdm biwgdW5zaWduZWQgaW50IG9yZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyBiZm4sIHVuc2lnbmVkIGludCBvcmRlcikKIHsKLSAgICBfYW1kX2lvbW11X2ZsdXNo X3BhZ2VzKGQsICh1aW50NjRfdCkgZ2ZuIDw8IFBBR0VfU0hJRlQsIG9yZGVyKTsKKyAgICBfYW1k X2lvbW11X2ZsdXNoX3BhZ2VzKGQsIF9fYmZuX3RvX2JhZGRyKGJmbiksIG9yZGVyKTsKIH0KIAog dm9pZCBhbWRfaW9tbXVfZmx1c2hfZGV2aWNlKHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11LCB1aW50 MTZfdCBiZGYpCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVf bWFwLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMKaW5kZXggNzBi NDM0NWIzNy4uNGRlYWI5Y2QyZiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv YW1kL2lvbW11X21hcC5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9t YXAuYwpAQCAtMzUsMTIgKzM1LDEyIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgcGZuX3RvX3BkZV9p ZHgodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGludCBsZXZlbCkKICAgICByZXR1cm4gaWR4 OwogfQogCi12b2lkIGNsZWFyX2lvbW11X3B0ZV9wcmVzZW50KHVuc2lnbmVkIGxvbmcgbDFfbWZu LCB1bnNpZ25lZCBsb25nIGdmbikKK3ZvaWQgY2xlYXJfaW9tbXVfcHRlX3ByZXNlbnQodW5zaWdu ZWQgbG9uZyBsMV9tZm4sIHVuc2lnbmVkIGxvbmcgYmZuKQogewogICAgIHU2NCAqdGFibGUsICpw dGU7CiAKICAgICB0YWJsZSA9IG1hcF9kb21haW5fcGFnZShfbWZuKGwxX21mbikpOwotICAgIHB0 ZSA9IHRhYmxlICsgcGZuX3RvX3BkZV9pZHgoZ2ZuLCBJT01NVV9QQUdJTkdfTU9ERV9MRVZFTF8x KTsKKyAgICBwdGUgPSB0YWJsZSArIHBmbl90b19wZGVfaWR4KGJmbiwgSU9NTVVfUEFHSU5HX01P REVfTEVWRUxfMSk7CiAgICAgKnB0ZSA9IDA7CiAgICAgdW5tYXBfZG9tYWluX3BhZ2UodGFibGUp OwogfQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBib29sX3Qgc2V0X2lvbW11X3BkZV9wcmVz ZW50KHUzMiAqcGRlLCB1bnNpZ25lZCBsb25nIG5leHRfbWZuLAogICAgIHJldHVybiBuZWVkX2Zs dXNoOwogfQogCi1zdGF0aWMgYm9vbF90IHNldF9pb21tdV9wdGVfcHJlc2VudCh1bnNpZ25lZCBs b25nIHB0X21mbiwgdW5zaWduZWQgbG9uZyBnZm4sIAorc3RhdGljIGJvb2xfdCBzZXRfaW9tbXVf cHRlX3ByZXNlbnQodW5zaWduZWQgbG9uZyBwdF9tZm4sIHVuc2lnbmVkIGxvbmcgYmZuLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuZXh0X21mbiwg aW50IHBkZV9sZXZlbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s X3QgaXcsIGJvb2xfdCBpcikKIHsKQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgYm9vbF90IHNl dF9pb21tdV9wdGVfcHJlc2VudCh1bnNpZ25lZCBsb25nIHB0X21mbiwgdW5zaWduZWQgbG9uZyBn Zm4sCiAKICAgICB0YWJsZSA9IG1hcF9kb21haW5fcGFnZShfbWZuKHB0X21mbikpOwogCi0gICAg cGRlID0gKHUzMiopKHRhYmxlICsgcGZuX3RvX3BkZV9pZHgoZ2ZuLCBwZGVfbGV2ZWwpKTsKKyAg ICBwZGUgPSAodTMyKikodGFibGUgKyBwZm5fdG9fcGRlX2lkeChiZm4sIHBkZV9sZXZlbCkpOwog CiAgICAgbmVlZF9mbHVzaCA9IHNldF9pb21tdV9wZGVfcHJlc2VudChwZGUsIG5leHRfbWZuLCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1VX1BBR0lOR19NT0RF X0xFVkVMXzAsIGl3LCBpcik7CkBAIC0zMzEsNyArMzMxLDcgQEAgc3RhdGljIHZvaWQgc2V0X3Bk ZV9jb3VudCh1NjQgKnBkZSwgdW5zaWduZWQgaW50IGNvdW50KQogICogb3RoZXJ3aXNlIGluY3Jl YXNlIHBkZSBjb3VudCBpZiBtZm4gaXMgY29udGlnb3VzIHdpdGggbWZuIC0gMQogICovCiBzdGF0 aWMgaW50IGlvbW11X3VwZGF0ZV9wZGVfY291bnQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBwdF9tZm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgYmZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWVyZ2VfbGV2ZWwpCiB7CiAgICAg dW5zaWduZWQgaW50IHBkZV9jb3VudCwgbmV4dF9sZXZlbDsKQEAgLTM0Nyw3ICszNDcsNyBAQCBz dGF0aWMgaW50IGlvbW11X3VwZGF0ZV9wZGVfY291bnQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBwdF9tZm4sCiAKICAgICAvKiBnZXQgcGRlIGF0IG1lcmdlIGxldmVsICovCiAgICAg dGFibGUgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihwdF9tZm4pKTsKLSAgICBwZGUgPSB0YWJsZSAr IHBmbl90b19wZGVfaWR4KGdmbiwgbWVyZ2VfbGV2ZWwpOworICAgIHBkZSA9IHRhYmxlICsgcGZu X3RvX3BkZV9pZHgoYmZuLCBtZXJnZV9sZXZlbCk7CiAKICAgICAvKiBnZXQgcGFnZSB0YWJsZSBv ZiBuZXh0IGxldmVsICovCiAgICAgbnRhYmxlX21hZGRyID0gYW1kX2lvbW11X2dldF9uZXh0X3Rh YmxlX2Zyb21fcHRlKCh1MzIqKXBkZSk7CkBAIC0zNjIsNyArMzYyLDcgQEAgc3RhdGljIGludCBp b21tdV91cGRhdGVfcGRlX2NvdW50KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcHRf bWZuLAogICAgIG1hc2sgPSAoMVVMTDw8IChQVEVfUEVSX1RBQkxFX1NISUZUICogbmV4dF9sZXZl bCkpIC0gMTsKIAogICAgIGlmICggKChmaXJzdF9tZm4gJiBtYXNrKSA9PSAwKSAmJgotICAgICAg ICAgKCgoZ2ZuICYgbWFzaykgfCBmaXJzdF9tZm4pID09IG1mbikgKQorICAgICAgICAgKCgoYmZu ICYgbWFzaykgfCBmaXJzdF9tZm4pID09IG1mbikgKQogICAgIHsKICAgICAgICAgcGRlX2NvdW50 ID0gZ2V0X3BkZV9jb3VudCgqcGRlKTsKIApAQCAtMzg3LDcgKzM4Nyw3IEBAIG91dDoKIH0KIAog c3RhdGljIGludCBpb21tdV9tZXJnZV9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBs b25nIHB0X21mbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBn Zm4sIHVuc2lnbmVkIGludCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBiZm4sIHVuc2lnbmVkIGludCBmbGFncywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IG1lcmdlX2xldmVsKQogewogICAgIHU2NCAqdGFibGUsICpw ZGUsICpudGFibGU7CkBAIC0zOTgsNyArMzk4LDcgQEAgc3RhdGljIGludCBpb21tdV9tZXJnZV9w YWdlcyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHB0X21mbiwKICAgICBBU1NFUlQo IHNwaW5faXNfbG9ja2VkKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spICYmIHB0X21mbiApOwogCiAg ICAgdGFibGUgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihwdF9tZm4pKTsKLSAgICBwZGUgPSB0YWJs ZSArIHBmbl90b19wZGVfaWR4KGdmbiwgbWVyZ2VfbGV2ZWwpOworICAgIHBkZSA9IHRhYmxlICsg cGZuX3RvX3BkZV9pZHgoYmZuLCBtZXJnZV9sZXZlbCk7CiAKICAgICAvKiBnZXQgZmlyc3QgbWZu ICovCiAgICAgbnRhYmxlX21mbiA9IGFtZF9pb21tdV9nZXRfbmV4dF90YWJsZV9mcm9tX3B0ZSgo dTMyKilwZGUpID4+IFBBR0VfU0hJRlQ7CkBAIC00MzYsNyArNDM2LDcgQEAgc3RhdGljIGludCBp b21tdV9tZXJnZV9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHB0X21mbiwK ICAqIHtSZSwgdW59bWFwcGluZyBzdXBlciBwYWdlIGZyYW1lcyBjYXVzZXMgcmUtYWxsb2NhdGlv biBvZiBpbwogICogcGFnZSB0YWJsZXMuCiAgKi8KLXN0YXRpYyBpbnQgaW9tbXVfcGRlX2Zyb21f Z2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcGZuLCAKK3N0YXRpYyBpbnQgaW9t bXVfcGRlX2Zyb21fYmZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcGZuLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwdF9tZm5bXSkKIHsKICAg ICB1NjQgKnBkZSwgKm5leHRfdGFibGVfdmFkZHI7CkBAIC00NzcsMTEgKzQ3NywxMSBAQCBzdGF0 aWMgaW50IGlvbW11X3BkZV9mcm9tX2dmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25n IHBmbiwKICAgICAgICAgICAgICBuZXh0X3RhYmxlX21mbiAhPSAwICkKICAgICAgICAgewogICAg ICAgICAgICAgaW50IGk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwgZ2ZuOworICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sIGJmbjsKICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBwYWdlX3N6OwogCiAgICAgICAgICAgICBwYWdlX3N6ID0gMSA8PCAoUFRFX1BFUl9UQUJMRV9T SElGVCAqIChuZXh0X2xldmVsIC0gMSkpOwotICAgICAgICAgICAgZ2ZuID0gIHBmbiAmIH4oKDEg PDwgKFBURV9QRVJfVEFCTEVfU0hJRlQgKiBuZXh0X2xldmVsKSkgLSAxKTsKKyAgICAgICAgICAg IGJmbiA9ICBwZm4gJiB+KCgxIDw8IChQVEVfUEVSX1RBQkxFX1NISUZUICogbmV4dF9sZXZlbCkp IC0gMSk7CiAgICAgICAgICAgICBtZm4gPSBuZXh0X3RhYmxlX21mbjsKIAogICAgICAgICAgICAg LyogYWxsb2NhdGUgbG93ZXIgbGV2ZWwgcGFnZSB0YWJsZSAqLwpAQCAtNDk5LDEwICs0OTksMTAg QEAgc3RhdGljIGludCBpb21tdV9wZGVfZnJvbV9nZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBwZm4sCiAKICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgUFRFX1BFUl9UQUJM RV9TSVpFOyBpKysgKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNldF9pb21tdV9w dGVfcHJlc2VudChuZXh0X3RhYmxlX21mbiwgZ2ZuLCBtZm4sIG5leHRfbGV2ZWwsCisgICAgICAg ICAgICAgICAgc2V0X2lvbW11X3B0ZV9wcmVzZW50KG5leHRfdGFibGVfbWZuLCBiZm4sIG1mbiwg bmV4dF9sZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISFJT01N VUZfd3JpdGFibGUsICEhSU9NTVVGX3JlYWRhYmxlKTsKICAgICAgICAgICAgICAgICBtZm4gKz0g cGFnZV9zejsKLSAgICAgICAgICAgICAgICBnZm4gKz0gcGFnZV9zejsKKyAgICAgICAgICAgICAg ICBiZm4gKz0gcGFnZV9zejsKICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGFtZF9pb21t dV9mbHVzaF9hbGxfcGFnZXMoZCk7CkBAIC01NDAsNyArNTQwLDcgQEAgc3RhdGljIGludCBpb21t dV9wZGVfZnJvbV9nZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwZm4sCiAgICAg cmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgdXBkYXRlX3BhZ2luZ19tb2RlKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQorc3RhdGljIGludCB1cGRhdGVfcGFnaW5nX21vZGUo c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4pCiB7CiAgICAgdTE2IGJkZjsKICAg ICB2b2lkICpkZXZpY2VfZW50cnk7CkBAIC01NTQsMTMgKzU1NCwxMyBAQCBzdGF0aWMgaW50IHVw ZGF0ZV9wYWdpbmdfbW9kZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKICAg ICB1bnNpZ25lZCBsb25nIG9sZF9yb290X21mbjsKICAgICBzdHJ1Y3QgZG9tYWluX2lvbW11ICpo ZCA9IGRvbV9pb21tdShkKTsKIAotICAgIGlmICggZ2ZuID09IGdmbl94KElOVkFMSURfR0ZOKSAp CisgICAgaWYgKCBiZm4gPT0gYmZuX3goSU5WQUxJRF9CRk4pICkKICAgICAgICAgcmV0dXJuIC1F QUREUk5PVEFWQUlMOwotICAgIEFTU0VSVCghKGdmbiA+PiBERUZBVUxUX0RPTUFJTl9BRERSRVNT X1dJRFRIKSk7CisgICAgQVNTRVJUKCEoYmZuID4+IERFRkFVTFRfRE9NQUlOX0FERFJFU1NfV0lE VEgpKTsKIAogICAgIGxldmVsID0gaGQtPmFyY2gucGFnaW5nX21vZGU7CiAgICAgb2xkX3Jvb3Qg PSBoZC0+YXJjaC5yb290X3RhYmxlOwotICAgIG9mZnNldCA9IGdmbiA+PiAoUFRFX1BFUl9UQUJM RV9TSElGVCAqIChsZXZlbCAtIDEpKTsKKyAgICBvZmZzZXQgPSBiZm4gPj4gKFBURV9QRVJfVEFC TEVfU0hJRlQgKiAobGV2ZWwgLSAxKSk7CiAKICAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJmhk LT5hcmNoLm1hcHBpbmdfbG9jaykgJiYgaXNfaHZtX2RvbWFpbihkKSk7CiAKQEAgLTYzMSw3ICs2 MzEsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdfbW9kZShzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBsb25nIGdmbikKICAgICByZXR1cm4gMDsKIH0KIAotaW50IGFtZF9pb21tdV9tYXBf cGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyBt Zm4sCitpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxv bmcgYmZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IGZsYWdzKQogewogICAgIGJvb2xfdCBuZWVkX2ZsdXNoID0gMDsKQEAgLTY1MSwzNCAr NjUxLDM0IEBAIGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIGlmICggcmMgKQogICAgIHsKICAg ICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgIEFNRF9J T01NVV9ERUJVRygiUm9vdCB0YWJsZSBhbGxvYyBmYWlsZWQsIGdmbiA9ICVseFxuIiwgZ2ZuKTsK KyAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJSb290IHRhYmxlIGFsbG9jIGZhaWxlZCwgYmZuID0g JWx4XG4iLCBiZm4pOwogICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgIHJldHVybiBy YzsKICAgICB9CiAKICAgICAvKiBTaW5jZSBIVk0gZG9tYWluIGlzIGluaXRpYWxpemVkIHdpdGgg MiBsZXZlbCBJTyBwYWdlIHRhYmxlLAotICAgICAqIHdlIG1pZ2h0IG5lZWQgYSBkZWVwZXIgcGFn ZSB0YWJsZSBmb3IgbGFnZXIgZ2ZuIG5vdyAqLworICAgICAqIHdlIG1pZ2h0IG5lZWQgYSBkZWVw ZXIgcGFnZSB0YWJsZSBmb3Igd2lkZXIgYmZuIG5vdyAqLwogICAgIGlmICggaXNfaHZtX2RvbWFp bihkKSApCiAgICAgewotICAgICAgICBpZiAoIHVwZGF0ZV9wYWdpbmdfbW9kZShkLCBnZm4pICkK KyAgICAgICAgaWYgKCB1cGRhdGVfcGFnaW5nX21vZGUoZCwgYmZuKSApCiAgICAgICAgIHsKICAg ICAgICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAgICAg ICAgQU1EX0lPTU1VX0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxlZCBnZm4gPSAlbHhcbiIs IGdmbik7CisgICAgICAgICAgICBBTURfSU9NTVVfREVCVUcoIlVwZGF0ZSBwYWdlIG1vZGUgZmFp bGVkIGJmbiA9ICVseFxuIiwgYmZuKTsKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAg ICAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCBp b21tdV9wZGVfZnJvbV9nZm4oZCwgZ2ZuLCBwdF9tZm4pIHx8IChwdF9tZm5bMV0gPT0gMCkgKQor ICAgIGlmICggaW9tbXVfcGRlX2Zyb21fYmZuKGQsIGJmbiwgcHRfbWZuKSB8fCAocHRfbWZuWzFd ID09IDApICkKICAgICB7CiAgICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xv Y2spOwotICAgICAgICBBTURfSU9NTVVfREVCVUcoIkludmFsaWQgSU8gcGFnZXRhYmxlIGVudHJ5 IGdmbiA9ICVseFxuIiwgZ2ZuKTsKKyAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJbnZhbGlkIElP IHBhZ2V0YWJsZSBlbnRyeSBiZm4gPSAlbHhcbiIsIGJmbik7CiAgICAgICAgIGRvbWFpbl9jcmFz aChkKTsKICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CiAgICAgfQogCiAgICAgLyogSW5zdGFsbCA0 ayBtYXBwaW5nIGZpcnN0ICovCi0gICAgbmVlZF9mbHVzaCA9IHNldF9pb21tdV9wdGVfcHJlc2Vu dChwdF9tZm5bMV0sIGdmbiwgbWZuLCAKKyAgICBuZWVkX2ZsdXNoID0gc2V0X2lvbW11X3B0ZV9w cmVzZW50KHB0X21mblsxXSwgYmZuLCBtZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJT01NVV9QQUdJTkdfTU9ERV9MRVZFTF8xLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgISEoZmxhZ3MgJiBJT01NVUZfd3JpdGFibGUpLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISEoZmxhZ3MgJiBJT01NVUZfcmVhZGFi bGUpKTsKQEAgLTY5MCw3ICs2OTAsNyBAQCBpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAvKiA0 SyBtYXBwaW5nIGZvciBQViBndWVzdHMgbmV2ZXIgY2hhbmdlcywgCiAgICAgICogbm8gbmVlZCB0 byBmbHVzaCBpZiB3ZSB0cnVzdCBub24tcHJlc2VudCBiaXRzICovCiAgICAgaWYgKCBpc19odm1f ZG9tYWluKGQpICkKLSAgICAgICAgYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKGQsIGdmbiwgMCk7Cisg ICAgICAgIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhkLCBiZm4sIDApOwogCiAgICAgZm9yICggbWVy Z2VfbGV2ZWwgPSBJT01NVV9QQUdJTkdfTU9ERV9MRVZFTF8yOwogICAgICAgICAgIG1lcmdlX2xl dmVsIDw9IGhkLT5hcmNoLnBhZ2luZ19tb2RlOyBtZXJnZV9sZXZlbCsrICkKQEAgLTY5OCwxNSAr Njk4LDE1IEBAIGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgICAgICBpZiAoIHB0X21mblttZXJn ZV9sZXZlbF0gPT0gMCApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKCAhaW9tbXVf dXBkYXRlX3BkZV9jb3VudChkLCBwdF9tZm5bbWVyZ2VfbGV2ZWxdLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdmbiwgbWZuLCBtZXJnZV9sZXZlbCkgKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJmbiwgbWZuLCBtZXJnZV9sZXZlbCkgKQogICAg ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKCBpb21tdV9tZXJnZV9wYWdlcyhkLCBwdF9t Zm5bbWVyZ2VfbGV2ZWxdLCBnZm4sIAorICAgICAgICBpZiAoIGlvbW11X21lcmdlX3BhZ2VzKGQs IHB0X21mblttZXJnZV9sZXZlbF0sIGJmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmbGFncywgbWVyZ2VfbGV2ZWwpICkKICAgICAgICAgewogICAgICAgICAgICAgc3Bpbl91bmxv Y2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7CiAgICAgICAgICAgICBBTURfSU9NTVVfREVCVUco Ik1lcmdlIGlvbW11IHBhZ2UgZmFpbGVkIGF0IGxldmVsICVkLCAiCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgImdmbiA9ICVseCBtZm4gPSAlbHhcbiIsIG1lcmdlX2xldmVsLCBnZm4sIG1m bik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJmbiA9ICVseCBtZm4gPSAlbHhcbiIs IG1lcmdlX2xldmVsLCBiZm4sIG1mbik7CiAgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAg ICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKICAgICAgICAgfQpAQCAtNzIwLDcgKzcyMCw3IEBA IG91dDoKICAgICByZXR1cm4gMDsKIH0KIAotaW50IGFtZF9pb21tdV91bm1hcF9wYWdlKHN0cnVj dCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQoraW50IGFtZF9pb21tdV91bm1hcF9wYWdl KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuKQogewogICAgIHVuc2lnbmVkIGxv bmcgcHRfbWZuWzddOwogICAgIHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11KGQp OwpAQCAtNzM5LDM0ICs3MzksMzQgQEAgaW50IGFtZF9pb21tdV91bm1hcF9wYWdlKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQogICAgIH0KIAogICAgIC8qIFNpbmNlIEhWTSBk b21haW4gaXMgaW5pdGlhbGl6ZWQgd2l0aCAyIGxldmVsIElPIHBhZ2UgdGFibGUsCi0gICAgICog d2UgbWlnaHQgbmVlZCBhIGRlZXBlciBwYWdlIHRhYmxlIGZvciBsYWdlciBnZm4gbm93ICovCisg ICAgICogd2UgbWlnaHQgbmVlZCBhIGRlZXBlciBwYWdlIHRhYmxlIGZvciBsYWdlciBiZm4gbm93 ICovCiAgICAgaWYgKCBpc19odm1fZG9tYWluKGQpICkKICAgICB7Ci0gICAgICAgIGludCByYyA9 IHVwZGF0ZV9wYWdpbmdfbW9kZShkLCBnZm4pOworICAgICAgICBpbnQgcmMgPSB1cGRhdGVfcGFn aW5nX21vZGUoZCwgYmZuKTsKIAogICAgICAgICBpZiAoIHJjICkKICAgICAgICAgewogICAgICAg ICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgICAgICBB TURfSU9NTVVfREVCVUcoIlVwZGF0ZSBwYWdlIG1vZGUgZmFpbGVkIGdmbiA9ICVseFxuIiwgZ2Zu KTsKKyAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiVXBkYXRlIHBhZ2UgbW9kZSBmYWlsZWQg YmZuID0gJWx4XG4iLCBiZm4pOwogICAgICAgICAgICAgaWYgKCByYyAhPSAtRUFERFJOT1RBVkFJ TCApCiAgICAgICAgICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICAgICAgcmV0dXJu IHJjOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCBpb21tdV9wZGVfZnJvbV9nZm4oZCwg Z2ZuLCBwdF9tZm4pIHx8IChwdF9tZm5bMV0gPT0gMCkgKQorICAgIGlmICggaW9tbXVfcGRlX2Zy b21fYmZuKGQsIGJmbiwgcHRfbWZuKSB8fCAocHRfbWZuWzFdID09IDApICkKICAgICB7CiAgICAg ICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAgICBBTURfSU9N TVVfREVCVUcoIkludmFsaWQgSU8gcGFnZXRhYmxlIGVudHJ5IGdmbiA9ICVseFxuIiwgZ2ZuKTsK KyAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBlbnRyeSBiZm4g PSAlbHhcbiIsIGJmbik7CiAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgcmV0dXJu IC1FRkFVTFQ7CiAgICAgfQogCiAgICAgLyogbWFyayBQVEUgYXMgJ3BhZ2Ugbm90IHByZXNlbnQn ICovCi0gICAgY2xlYXJfaW9tbXVfcHRlX3ByZXNlbnQocHRfbWZuWzFdLCBnZm4pOworICAgIGNs ZWFyX2lvbW11X3B0ZV9wcmVzZW50KHB0X21mblsxXSwgYmZuKTsKICAgICBzcGluX3VubG9jaygm aGQtPmFyY2gubWFwcGluZ19sb2NrKTsKIAotICAgIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhkLCBn Zm4sIDApOworICAgIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhkLCBiZm4sIDApOwogCiAgICAgcmV0 dXJuIDA7CiB9CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2Ft ZF9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYwpp bmRleCAxMmQyNjk1Yjg5Li5kNjA4NjMxZTZlIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2FtZC9wY2lfYW1kX2lvbW11LmMKQEAgLTU3OCw3ICs1NzgsNyBAQCBzdGF0aWMgdm9pZCBhbWRf ZHVtcF9wMm1fdGFibGVfbGV2ZWwoc3RydWN0IHBhZ2VfaW5mbyogcGcsIGludCBsZXZlbCwKICAg ICAgICAgICAgICAgICBtYWRkcl90b19wYWdlKG5leHRfdGFibGVfbWFkZHIpLCBuZXh0X2xldmVs LAogICAgICAgICAgICAgICAgIGFkZHJlc3MsIGluZGVudCArIDEpOwogICAgICAgICBlbHNlCi0g ICAgICAgICAgICBwcmludGsoIiUqc2dmbjogJTA4bHggIG1mbjogJTA4bHhcbiIsCisgICAgICAg ICAgICBwcmludGsoIiUqc2JmbjogJTA4bHggIG1mbjogJTA4bHhcbiIsCiAgICAgICAgICAgICAg ICAgICAgaW5kZW50LCAiIiwKICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylQRk5f RE9XTihhZGRyZXNzKSwKICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylQRk5fRE9X TihuZXh0X3RhYmxlX21hZGRyKSk7CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9hcm0vc21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYwppbmRleCA3 NGMwOWIwOTkxLi5mOWYyZThkY2E0IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9hcm0vc21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKQEAg LTI1NTEsNyArMjU1MSw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X2lvdGxi X2ZsdXNoX2FsbChzdHJ1Y3QgZG9tYWluICpkKQogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVj ayBhcm1fc21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJmbiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBwYWdlX2NvdW50KQogewogCS8qIEFSTSBTTU1VIHYxIGRvZXNuJ3QgaGF2ZSBmbHVzaCBieSBW TUEgYW5kIFZNSUQgKi8KQEAgLTI3MzcsMTAgKzI3MzcsMTIgQEAgc3RhdGljIHZvaWQgYXJtX3Nt bXVfaW9tbXVfZG9tYWluX3RlYXJkb3duKHN0cnVjdCBkb21haW4gKmQpCiAJeGZyZWUoeGVuX2Rv bWFpbik7CiB9CiAKLXN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X21hcF9wYWdlKHN0 cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAorc3RhdGljIGludCBfX211c3RfY2hl Y2sgYXJtX3NtbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4s CiAJCQl1bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgaW50IGZsYWdzKQogewogCXAybV90eXBl X3QgdDsKKwl1bnNpZ25lZCBsb25nIGZyYW1lID0gYmZuOworCXVuc2lnbmVkIGxvbmcgZ2ZuOwog CiAJLyoKIAkgKiBHcmFudCBtYXBwaW5ncyBjYW4gYmUgdXNlZCBmb3IgRE1BIHJlcXVlc3RzLiBU aGUgZGV2X2J1c19hZGRyCkBAIC0yNzQ4LDEwICsyNzUwLDExIEBAIHN0YXRpYyBpbnQgX19tdXN0 X2NoZWNrIGFybV9zbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg Z2ZuLAogCSAqIHByb3RlY3RlZCBieSBhbiBJT01NVSwgWGVuIG5lZWRzIHRvIGFkZCBhIDE6MSBt YXBwaW5nIGluIHRoZSBkb21haW4KIAkgKiBwMm0gdG8gYWxsb3cgRE1BIHJlcXVlc3QgdG8gd29y ay4KIAkgKiBUaGlzIGlzIG9ubHkgdmFsaWQgd2hlbiB0aGUgZG9tYWluIGlzIGRpcmVjdGVkIG1h cHBlZC4gSGVuY2UgdGhpcwotCSAqIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgZ250 dGFiIGNvZGUgd2l0aCBnZm4gPT0gbWZuLgorCSAqIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVz ZWQgYnkgZ250dGFiIGNvZGUgd2l0aCBnZm4gPT0gbWZuID09IGJmbi4KIAkgKi8KIAlCVUdfT04o IWlzX2RvbWFpbl9kaXJlY3RfbWFwcGVkKGQpKTsKLQlCVUdfT04obWZuICE9IGdmbik7CisJQlVH X09OKG1mbiAhPSBmcmFtZSk7CisJZ2ZuID0gZnJhbWU7CiAKIAkvKiBXZSBvbmx5IHN1cHBvcnQg cmVhZGFibGUgYW5kIHdyaXRhYmxlIGZsYWdzICovCiAJaWYgKCEoZmxhZ3MgJiAoSU9NTVVGX3Jl YWRhYmxlIHwgSU9NTVVGX3dyaXRhYmxlKSkpCkBAIC0yNzY2LDggKzI3NjksMTIgQEAgc3RhdGlj IGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyBnZm4sCiAJcmV0dXJuIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KGQsIF9nZm4o Z2ZuKSwgX21mbihtZm4pLCAwLCB0KTsKIH0KIAotc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJt X3NtbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKK3N0 YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgbG9uZyBiZm4pCiB7CisJdW5zaWduZWQgbG9uZyBmcmFtZSA9IGJmbjsKKwl1 bnNpZ25lZCBsb25nIGdmbiA9IGZyYW1lOworCXVuc2lnbmVkIGxvbmcgbWZuID0gZnJhbWU7CisK IAkvKgogCSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgdXNlZCBieSBnbnR0YWIgY29k ZSB3aGVuIHRoZSBkb21haW4KIAkgKiBpcyBkaXJlY3QgbWFwcGVkCkBAIC0yNzc1LDcgKzI3ODIs NyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV91bm1hcF9wYWdlKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQogCWlmICggIWlzX2RvbWFpbl9kaXJlY3RfbWFw cGVkKGQpICkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlyZXR1cm4gZ3Vlc3RfcGh5c21hcF9yZW1v dmVfcGFnZShkLCBfZ2ZuKGdmbiksIF9tZm4oZ2ZuKSwgMCk7CisJcmV0dXJuIGd1ZXN0X3BoeXNt YXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihnZm4pLCBfbWZuKG1mbiksIDApOwogfQogCiBzdGF0aWMg Y29uc3Qgc3RydWN0IGlvbW11X29wcyBhcm1fc21tdV9pb21tdV9vcHMgPSB7CmRpZmYgLS1naXQg YS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvaW9tbXUuYwppbmRleCAyYzQ0ZmFiZjk5Li45YTNiYjZhNDNlIDEwMDY0NAotLS0gYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2lvbW11LmMKQEAgLTE4NSw3ICsxODUsOCBAQCB2b2lkIF9faHdkb21faW5pdCBpb21tdV9od2Rv bV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiAgICAgICAgIHBhZ2VfbGlzdF9mb3JfZWFjaCAoIHBh Z2UsICZkLT5wYWdlX2xpc3QgKQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IG1mbiA9IG1mbl94KHBhZ2VfdG9fbWZuKHBhZ2UpKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgZ2ZuID0gbWZuX3RvX2dtZm4oZCwgbWZuKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg ZnJhbWUgPSBtZm5fdG9fZ21mbihkLCBtZm4pOworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBi Zm4gPSBmcmFtZTsKICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXBwaW5nID0gSU9NTVVGX3Jl YWRhYmxlOwogICAgICAgICAgICAgaW50IHJldDsKIApAQCAtMTk0LDcgKzE5NSw3IEBAIHZvaWQg X19od2RvbV9pbml0IGlvbW11X2h3ZG9tX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAg ICAgICAgICAgID09IFBHVF93cml0YWJsZV9wYWdlKSApCiAgICAgICAgICAgICAgICAgbWFwcGlu ZyB8PSBJT01NVUZfd3JpdGFibGU7CiAKLSAgICAgICAgICAgIHJldCA9IGhkLT5wbGF0Zm9ybV9v cHMtPm1hcF9wYWdlKGQsIGdmbiwgbWZuLCBtYXBwaW5nKTsKKyAgICAgICAgICAgIHJldCA9IGhk LT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGJmbiwgbWZuLCBtYXBwaW5nKTsKICAgICAgICAg ICAgIGlmICggIXJjICkKICAgICAgICAgICAgICAgICByYyA9IHJldDsKIApAQCAtMjU1LDcgKzI1 Niw3IEBAIHZvaWQgaW9tbXVfZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkKICAgICBh cmNoX2lvbW11X2RvbWFpbl9kZXN0cm95KGQpOwogfQogCi1pbnQgaW9tbXVfbWFwX3BhZ2Uoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAoraW50 IGlvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuLCB1bnNp Z25lZCBsb25nIG1mbiwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7 CiAgICAgY29uc3Qgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9tbXUoZCk7CkBAIC0y NjQsMTMgKzI2NSwxMyBAQCBpbnQgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIGlmICggIWlvbW11X2VuYWJs ZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMgKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJjID0g aGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgZ2ZuLCBtZm4sIGZsYWdzKTsKKyAgICByYyA9 IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGJmbiwgbWZuLCBmbGFncyk7CiAgICAgaWYg KCB1bmxpa2VseShyYykgKQogICAgIHsKICAgICAgICAgaWYgKCAhZC0+aXNfc2h1dHRpbmdfZG93 biAmJiBwcmludGtfcmF0ZWxpbWl0KCkgKQogICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIK LSAgICAgICAgICAgICAgICAgICAiZCVkOiBJT01NVSBtYXBwaW5nIGdmbiAlI2x4IHRvIG1mbiAl I2x4IGZhaWxlZDogJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBnZm4s IG1mbiwgcmMpOworICAgICAgICAgICAgICAgICAgICJkJWQ6IElPTU1VIG1hcHBpbmcgYmZuICUj bHggdG8gbWZuICUjbHggZmFpbGVkOiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICBkLT5kb21h aW5faWQsIGJmbiwgbWZuLCByYyk7CiAKICAgICAgICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWlu KGQpICkKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKQEAgLTI3OSw3ICsyODAsNyBAQCBp bnQgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVu c2lnbmVkIGxvbmcgbWZuLAogICAgIHJldHVybiByYzsKIH0KIAotaW50IGlvbW11X3VubWFwX3Bh Z2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCitpbnQgaW9tbXVfdW5tYXBf cGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbikKIHsKICAgICBjb25zdCBz dHJ1Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKICAgICBpbnQgcmM7CkBAIC0y ODcsMTMgKzI4OCwxMyBAQCBpbnQgaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBsb25nIGdmbikKICAgICBpZiAoICFpb21tdV9lbmFibGVkIHx8ICFoZC0+cGxhdGZv cm1fb3BzICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMt PnVubWFwX3BhZ2UoZCwgZ2ZuKTsKKyAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPnVubWFwX3Bh Z2UoZCwgYmZuKTsKICAgICBpZiAoIHVubGlrZWx5KHJjKSApCiAgICAgewogICAgICAgICBpZiAo ICFkLT5pc19zaHV0dGluZ19kb3duICYmIHByaW50a19yYXRlbGltaXQoKSApCiAgICAgICAgICAg ICBwcmludGsoWEVOTE9HX0VSUgotICAgICAgICAgICAgICAgICAgICJkJWQ6IElPTU1VIHVubWFw cGluZyBnZm4gJSNseCBmYWlsZWQ6ICVkXG4iLAotICAgICAgICAgICAgICAgICAgIGQtPmRvbWFp bl9pZCwgZ2ZuLCByYyk7CisgICAgICAgICAgICAgICAgICAgImQlZDogSU9NTVUgdW5tYXBwaW5n IGJmbiAlI2x4IGZhaWxlZDogJWRcbiIsCisgICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lk LCBiZm4sIHJjKTsKIAogICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4oZCkgKQogICAg ICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwpAQCAtMzE5LDcgKzMyMCw3IEBAIHN0YXRpYyB2b2lk IGlvbW11X2ZyZWVfcGFnZXRhYmxlcyh1bnNpZ25lZCBsb25nIHVudXNlZCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjcHVtYXNrX2N5Y2xlKHNtcF9wcm9jZXNzb3JfaWQoKSwgJmNwdV9v bmxpbmVfbWFwKSk7CiB9CiAKLWludCBpb21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGdmbiwKK2ludCBpb21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgcGFnZV9jb3VudCkKIHsKICAgICBjb25zdCBzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRv bV9pb21tdShkKTsKQEAgLTMyOCwxMyArMzI5LDEzIEBAIGludCBpb21tdV9pb3RsYl9mbHVzaChz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKICAgICBpZiAoICFpb21tdV9lbmFi bGVkIHx8ICFoZC0+cGxhdGZvcm1fb3BzIHx8ICFoZC0+cGxhdGZvcm1fb3BzLT5pb3RsYl9mbHVz aCApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5pb3Rs Yl9mbHVzaChkLCBnZm4sIHBhZ2VfY291bnQpOworICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+ aW90bGJfZmx1c2goZCwgYmZuLCBwYWdlX2NvdW50KTsKICAgICBpZiAoIHVubGlrZWx5KHJjKSAp CiAgICAgewogICAgICAgICBpZiAoICFkLT5pc19zaHV0dGluZ19kb3duICYmIHByaW50a19yYXRl bGltaXQoKSApCiAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUgotICAgICAgICAgICAgICAg ICAgICJkJWQ6IElPTU1VIElPVExCIGZsdXNoIGZhaWxlZDogJWQsIGdmbiAlI2x4LCBwYWdlIGNv dW50ICV1XG4iLAotICAgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgcmMsIGdmbiwgcGFn ZV9jb3VudCk7CisgICAgICAgICAgICAgICAgICAgImQlZDogSU9NTVUgSU9UTEIgZmx1c2ggZmFp bGVkOiAlZCwgYmZuICUjbHgsIHBhZ2UgY291bnQgJXVcbiIsCisgICAgICAgICAgICAgICAgICAg ZC0+ZG9tYWluX2lkLCByYywgYmZuLCBwYWdlX2NvdW50KTsKIAogICAgICAgICBpZiAoICFpc19o YXJkd2FyZV9kb21haW4oZCkgKQogICAgICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwpkaWZmIC0t Z2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgYi94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC92dGQvaW9tbXUuYwppbmRleCAxNzEwMjU2ODIzLi40OGY2MmUwZThkIDEwMDY0 NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYworKysgYi94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwpAQCAtNTg1LDcgKzU4NSw3IEBAIHN0YXRpYyBp bnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2FsbCh2b2lkKQogfQogCiBzdGF0aWMgaW50IF9f bXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJmbiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xfdCBkbWFfb2xk X3B0ZV9wcmVzZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgaW50IHBhZ2VfY291bnQpCiB7CkBAIC02MTIsMTIgKzYxMiwxMiBAQCBzdGF0aWMg aW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpkLAogICAg ICAgICBpZiAoIGlvbW11X2RvbWlkID09IC0xICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g ICAgICAgIGlmICggcGFnZV9jb3VudCAhPSAxIHx8IGdmbiA9PSBnZm5feChJTlZBTElEX0dGTikg KQorICAgICAgICBpZiAoIHBhZ2VfY291bnQgIT0gMSB8fCBiZm4gPT0gYmZuX3goSU5WQUxJRF9C Rk4pICkKICAgICAgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCBpb21t dV9kb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGZsdXNo X2Rldl9pb3RsYik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJjID0gaW9tbXVfZmx1c2hf aW90bGJfcHNpKGlvbW11LCBpb21tdV9kb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwYWRkcl90KWdmbiA8PCBQQUdFX1NISUZUXzRLLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19iZm5fdG9fYmFkZHIoYmZuKSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEssCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZG1hX29sZF9wdGVfcHJlc2VudCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX2Rldl9pb3RsYik7CkBAIC02 MzMsMTUgKzYzMywxNSBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3Rs YihzdHJ1Y3QgZG9tYWluICpkLAogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9m bHVzaF9pb3RsYl9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJmbiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBwYWdlX2NvdW50KQogewotICAgIHJldHVybiBpb21tdV9mbHVzaF9pb3RsYihkLCBnZm4s IDEsIHBhZ2VfY291bnQpOworICAgIHJldHVybiBpb21tdV9mbHVzaF9pb3RsYihkLCBiZm4sIDEs IHBhZ2VfY291bnQpOwogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9p b3RsYl9hbGwoc3RydWN0IGRvbWFpbiAqZCkKIHsKLSAgICByZXR1cm4gaW9tbXVfZmx1c2hfaW90 bGIoZCwgZ2ZuX3goSU5WQUxJRF9HRk4pLCAwLCAwKTsKKyAgICByZXR1cm4gaW9tbXVfZmx1c2hf aW90bGIoZCwgYmZuX3goSU5WQUxJRF9CRk4pLCAwLCAwKTsKIH0KIAogLyogY2xlYXIgb25lIHBh Z2UncyBwYWdlIHRhYmxlICovCkBAIC0xNzY3LDcgKzE3NjcsNyBAQCBzdGF0aWMgdm9pZCBpb21t dV9kb21haW5fdGVhcmRvd24oc3RydWN0IGRvbWFpbiAqZCkKIH0KIAogc3RhdGljIGludCBfX211 c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBiZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIG1mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBmbGFncykKIHsKQEAgLTE3ODYsMTQgKzE3ODYsMTQgQEAgc3RhdGlj IGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwK IAogICAgIHNwaW5fbG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKIAotICAgIHBnX21hZGRy ID0gYWRkcl90b19kbWFfcGFnZV9tYWRkcihkLCAocGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80 SywgMSk7CisgICAgcGdfbWFkZHIgPSBhZGRyX3RvX2RtYV9wYWdlX21hZGRyKGQsIF9fYmZuX3Rv X2JhZGRyKGJmbiksIDEpOwogICAgIGlmICggcGdfbWFkZHIgPT0gMCApCiAgICAgewogICAgICAg ICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKICAgICAgICAgcmV0dXJuIC1F Tk9NRU07CiAgICAgfQogICAgIHBhZ2UgPSAoc3RydWN0IGRtYV9wdGUgKiltYXBfdnRkX2RvbWFp bl9wYWdlKHBnX21hZGRyKTsKLSAgICBwdGUgPSBwYWdlICsgKGdmbiAmIExFVkVMX01BU0spOwor ICAgIHB0ZSA9IHBhZ2UgKyAoYmZuICYgTEVWRUxfTUFTSyk7CiAgICAgb2xkID0gKnB0ZTsKICAg ICBkbWFfc2V0X3B0ZV9hZGRyKG5ldywgKHBhZGRyX3QpbWZuIDw8IFBBR0VfU0hJRlRfNEspOwog ICAgIGRtYV9zZXRfcHRlX3Byb3QobmV3LApAQCAtMTgxNywyMiArMTgxNywyMiBAQCBzdGF0aWMg aW50IF9fbXVzdF9jaGVjayBpbnRlbF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAog ICAgIHVubWFwX3Z0ZF9kb21haW5fcGFnZShwYWdlKTsKIAogICAgIGlmICggIXRoaXNfY3B1KGlv bW11X2RvbnRfZmx1c2hfaW90bGIpICkKLSAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYihk LCBnZm4sIGRtYV9wdGVfcHJlc2VudChvbGQpLCAxKTsKKyAgICAgICAgcmMgPSBpb21tdV9mbHVz aF9pb3RsYihkLCBiZm4sIGRtYV9wdGVfcHJlc2VudChvbGQpLCAxKTsKIAogICAgIHJldHVybiBy YzsKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfdW5tYXBfcGFnZShz dHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIGdmbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBiZm4pCiB7CiAgICAgLyogRG8gbm90aGlu ZyBpZiBoYXJkd2FyZSBkb21haW4gYW5kIGlvbW11IHN1cHBvcnRzIHBhc3MgdGhydS4gKi8KICAg ICBpZiAoIGlvbW11X3Bhc3N0aHJvdWdoICYmIGlzX2hhcmR3YXJlX2RvbWFpbihkKSApCiAgICAg ICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRtYV9wdGVfY2xlYXJfb25lKGQsIChwYWRkcl90 KWdmbiA8PCBQQUdFX1NISUZUXzRLKTsKKyAgICByZXR1cm4gZG1hX3B0ZV9jbGVhcl9vbmUoZCwg X19iZm5fdG9fYmFkZHIoYmZuKSk7CiB9CiAKLWludCBpb21tdV9wdGVfZmx1c2goc3RydWN0IGRv bWFpbiAqZCwgdTY0IGdmbiwgdTY0ICpwdGUsCitpbnQgaW9tbXVfcHRlX2ZsdXNoKHN0cnVjdCBk b21haW4gKmQsIHVpbnQ2NF90IGJmbiwgdWludDY0X3QgKnB0ZSwKICAgICAgICAgICAgICAgICAg ICAgaW50IG9yZGVyLCBpbnQgcHJlc2VudCkKIHsKICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQg KmRyaGQ7CkBAIC0xODU2LDcgKzE4NTYsNyBAQCBpbnQgaW9tbXVfcHRlX2ZsdXNoKHN0cnVjdCBk b21haW4gKmQsIHU2NCBnZm4sIHU2NCAqcHRlLAogICAgICAgICAgICAgY29udGludWU7CiAKICAg ICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9wc2koaW9tbXUsIGlvbW11X2RvbWlkLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFkZHJfdClnZm4gPDwgUEFHRV9TSElG VF80SywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19iZm5fdG9fYmFkZHIo YmZuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIsICFwcmVzZW50 LCBmbHVzaF9kZXZfaW90bGIpOwogICAgICAgICBpZiAoIHJjID4gMCApCiAgICAgICAgIHsKQEAg LTI2MjYsNyArMjYyNiw3IEBAIHN0YXRpYyB2b2lkIHZ0ZF9kdW1wX3AybV90YWJsZV9sZXZlbChw YWRkcl90IHB0X21hZGRyLCBpbnQgbGV2ZWwsIHBhZGRyX3QgZ3BhLAogICAgICAgICAgICAgdnRk X2R1bXBfcDJtX3RhYmxlX2xldmVsKGRtYV9wdGVfYWRkcigqcHRlKSwgbmV4dF9sZXZlbCwgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcywgaW5kZW50ICsgMSk7 CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50aygiJSpzZ2ZuOiAlMDhseCBtZm46ICUw OGx4XG4iLAorICAgICAgICAgICAgcHJpbnRrKCIlKnNiZm46ICUwOGx4IG1mbjogJTA4bHhcbiIs CiAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAiIiwKICAgICAgICAgICAgICAgICAgICAodW5z aWduZWQgbG9uZykoYWRkcmVzcyA+PiBQQUdFX1NISUZUXzRLKSwKICAgICAgICAgICAgICAgICAg ICAodW5zaWduZWQgbG9uZykoZG1hX3B0ZV9hZGRyKCpwdGUpID4+IFBBR0VfU0hJRlRfNEspKTsK ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oIGIveGVuL2luY2x1ZGUveGVuL2lv bW11LmgKaW5kZXggNmI0MmUzYjg3Ni4uMTRhZGEwYzE0ZSAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUveGVuL2lvbW11LmgKKysrIGIveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKQEAgLTIzLDExICsy MywzNyBAQAogI2luY2x1ZGUgPHhlbi9wYWdlLWRlZnMuaD4KICNpbmNsdWRlIDx4ZW4vc3Bpbmxv Y2suaD4KICNpbmNsdWRlIDx4ZW4vcGNpLmg+CisjaW5jbHVkZSA8eGVuL3R5cGVzYWZlLmg+CiAj aW5jbHVkZSA8cHVibGljL2h2bS9pb3JlcS5oPgogI2luY2x1ZGUgPHB1YmxpYy9kb21jdGwuaD4K ICNpbmNsdWRlIDxhc20vZGV2aWNlLmg+CiAjaW5jbHVkZSA8YXNtL2lvbW11Lmg+CiAKK1RZUEVf U0FGRSh1aW50NjRfdCwgYmZuKTsKKyNkZWZpbmUgUFJJX2JmbiAgICAgUFJJeDY0CisjZGVmaW5l IElOVkFMSURfQkZOIF9iZm4ofjBVTCkKKworI2lmbmRlZiBiZm5fdAorI2RlZmluZSBiZm5fdCAv KiBHcmVwIGZvZGRlcjogYmZuX3QsIF9iZm4oKSBhbmQgYmZuX3goKSBhcmUgZGVmaW5lZCBhYm92 ZSAqLworI2RlZmluZSBfYmZuCisjZGVmaW5lIGJmbl94CisjdW5kZWYgYmZuX3QKKyN1bmRlZiBf YmZuCisjdW5kZWYgYmZuX3gKKyNlbmRpZgorCisjZGVmaW5lIElPTU1VX1BBR0VfU0hJRlQgMTIK KyNkZWZpbmUgSU9NTVVfUEFHRV9TSVpFICAoX0FDKDEsTCkgPDwgSU9NTVVfUEFHRV9TSElGVCkK KyNkZWZpbmUgSU9NTVVfUEFHRV9NQVNLICAofihJT01NVV9QQUdFX1NJWkUgLSAxKSkKKwordHlw ZWRlZiB1aW50NjRfdCBiYWRkcl90OworCisjZGVmaW5lIF9fYmZuX3RvX2JhZGRyKGJmbikgKChi YWRkcl90KShiZm4pIDw8IElPTU1VX1BBR0VfU0hJRlQpCisjZGVmaW5lIF9fYmFkZHJfdG9fYmZu KGJhZGRyKSAoKHVpbnQ2NF90KShiYWRkciA+PiBJT01NVV9QQUdFX1NISUZUKSkKKworI2RlZmlu ZSBiZm5fdG9fYmFkZHIoYmZuKSBfX2Jmbl90b19iYWRkcihiZm5feChiZm4pKQorI2RlZmluZSBi YWRkcl90b19iZm4oYmFkZHIpIF9iZm4oX19iYWRkcl90b19iZm4oYmFkZHIpKQorCiBleHRlcm4g Ym9vbF90IGlvbW11X2VuYWJsZSwgaW9tbXVfZW5hYmxlZDsKIGV4dGVybiBib29sX3QgZm9yY2Vf aW9tbXUsIGlvbW11X2RvbTBfc3RyaWN0LCBpb21tdV92ZXJib3NlOwogZXh0ZXJuIGJvb2xfdCBp b21tdV93b3JrYXJvdW5kX2Jpb3NfYnVnLCBpb21tdV9pZ2Z4LCBpb21tdV9wYXNzdGhyb3VnaDsK QEAgLTYwLDkgKzg2LDkgQEAgdm9pZCBpb21tdV90ZWFyZG93bihzdHJ1Y3QgZG9tYWluICpkKTsK ICNkZWZpbmUgSU9NTVVGX3JlYWRhYmxlICAoMXU8PF9JT01NVUZfcmVhZGFibGUpCiAjZGVmaW5l IF9JT01NVUZfd3JpdGFibGUgMQogI2RlZmluZSBJT01NVUZfd3JpdGFibGUgICgxdTw8X0lPTU1V Rl93cml0YWJsZSkKLWludCBfX211c3RfY2hlY2sgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCitpbnQgX19tdXN0X2NoZWNrIGlvbW11X21hcF9wYWdl KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgaW50IGZsYWdzKTsKLWlu dCBfX211c3RfY2hlY2sgaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBsb25nIGdmbik7CitpbnQgX19tdXN0X2NoZWNrIGlvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRv bWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4pOwogCiBlbnVtIGlvbW11X2ZlYXR1cmUKIHsKQEAg LTE1Miw5ICsxNzgsOSBAQCBzdHJ1Y3QgaW9tbXVfb3BzIHsKICNlbmRpZiAvKiBIQVNfUENJICov CiAKICAgICB2b2lkICgqdGVhcmRvd24pKHN0cnVjdCBkb21haW4gKmQpOwotICAgIGludCBfX211 c3RfY2hlY2sgKCptYXBfcGFnZSkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4s CisgICAgaW50IF9fbXVzdF9jaGVjayAoKm1hcF9wYWdlKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGJmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwotICAgIGludCBfX211c3RfY2hlY2sgKCp1 bm1hcF9wYWdlKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbik7CisgICAgaW50 IF9fbXVzdF9jaGVjayAoKnVubWFwX3BhZ2UpKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxv bmcgYmZuKTsKICAgICB2b2lkICgqZnJlZV9wYWdlX3RhYmxlKShzdHJ1Y3QgcGFnZV9pbmZvICop OwogI2lmZGVmIENPTkZJR19YODYKICAgICB2b2lkICgqdXBkYXRlX2lyZV9mcm9tX2FwaWMpKHVu c2lnbmVkIGludCBhcGljLCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgdmFsdWUpOwpA QCAtMTY1LDcgKzE5MSw3IEBAIHN0cnVjdCBpb21tdV9vcHMgewogICAgIHZvaWQgKCpyZXN1bWUp KHZvaWQpOwogICAgIHZvaWQgKCpzaGFyZV9wMm0pKHN0cnVjdCBkb21haW4gKmQpOwogICAgIHZv aWQgKCpjcmFzaF9zaHV0ZG93bikodm9pZCk7Ci0gICAgaW50IF9fbXVzdF9jaGVjayAoKmlvdGxi X2ZsdXNoKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKKyAgICBpbnQgX19t dXN0X2NoZWNrICgqaW90bGJfZmx1c2gpKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg YmZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBh Z2VfY291bnQpOwogICAgIGludCBfX211c3RfY2hlY2sgKCppb3RsYl9mbHVzaF9hbGwpKHN0cnVj dCBkb21haW4gKmQpOwogICAgIGludCAoKmdldF9yZXNlcnZlZF9kZXZpY2VfbWVtb3J5KShpb21t dV9ncmRtX3QgKiwgdm9pZCAqKTsKQEAgLTE4Nyw3ICsyMTMsNyBAQCBpbnQgaW9tbXVfZG9fcGNp X2RvbWN0bChzdHJ1Y3QgeGVuX2RvbWN0bCAqLCBzdHJ1Y3QgZG9tYWluICpkLAogaW50IGlvbW11 X2RvX2RvbWN0bChzdHJ1Y3QgeGVuX2RvbWN0bCAqLCBzdHJ1Y3QgZG9tYWluICpkLAogICAgICAg ICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kb21jdGxfdCkpOwogCi1p bnQgX19tdXN0X2NoZWNrIGlvbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGxvbmcgZ2ZuLAoraW50IF9fbXVzdF9jaGVjayBpb21tdV9pb3RsYl9mbHVzaChzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpOwogaW50IF9fbXVzdF9jaGVjayBpb21t dV9pb3RsYl9mbHVzaF9hbGwoc3RydWN0IGRvbWFpbiAqZCk7CiAKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3hlbi9tbS5oIGIveGVuL2luY2x1ZGUveGVuL21tLmgKaW5kZXggZTkyODU1MWM5MS4u ZTAzODdmZjE3NSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL21tLmgKKysrIGIveGVuL2lu Y2x1ZGUveGVuL21tLmgKQEAgLTE0LDggKzE0LDkgQEAKICAqIHNob3VsZCBiZSBhZGhlcmVkIHRv LgogICoKICAqIG1mbjogTWFjaGluZSBGcmFtZSBOdW1iZXIKLSAqICAgVGhlIHZhbHVlcyBYZW4g cHV0cyBpbnRvIGl0cyBvd24gcGFnZXRhYmxlcy4gIFRoaXMgaXMgdGhlIGhvc3QgcGh5c2ljYWwK LSAqICAgbWVtb3J5IGFkZHJlc3Mgc3BhY2Ugd2l0aCBSQU0sIE1NSU8gZXRjLgorICogICBUaGUg dmFsdWVzIFhlbiBwdXRzIGludG8gaXRzIG93biBwYWdldGFibGVzLCAybmQgc3RhZ2UgcGFnZXRh YmxlcyAod2hlcmUKKyAqICAgaGFyZHdhcmUgYXNzaXN0ZWQgMm5kIHN0YWdlIHRyYW5zbGF0aW9u IGlzIHVzZWQpIG9yIElPTU1VIHBhZ2UgdGFibGVzLgorICogICBUaGlzIGlzIHRoZSBob3N0IHBo eXNpY2FsIG1lbW9yeSBhZGRyZXNzIHNwYWNlIHdpdGggUkFNLCBNTUlPIGV0Yy4KICAqCiAgKiBn Zm46IEd1ZXN0IEZyYW1lIE51bWJlcgogICogICBUaGUgdmFsdWVzIGEgZ3Vlc3QgcHV0cyBpbiBp dHMgb3duIHBhZ2V0YWJsZXMuICBGb3IgYW4gYXV0by10cmFuc2xhdGVkCkBAIC0yNiw2ICsyNywx MSBAQAogICogICBBIGxpbmVhciBpZGVhIG9mIGEgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBzcGFj ZS4gRm9yIGFuIGF1dG8tdHJhbnNsYXRlZAogICogICBndWVzdCwgcGZuID09IGdmbiB3aGlsZSBm b3IgYSBub24tdHJhbnNsYXRlZCBndWVzdCwgcGZuICE9IGdmbi4KICAqCisgKiBiZm46IEJ1cyBG cmFtZSBOdW1iZXIgKGRlZmluaXRpb25zIGluIGluY2x1ZGUveGVuL2lvbW11LmgpCisgKiAgIFRo ZSBsaW5lYXIgZnJhbWUgbnVtYmVycyBvZiBJT01NVSBhZGRyZXNzIHNwYWNlLiBBbGwgaW5pdGlh dG9ycyBmb3IgYQorICogICBnaXZlbiBkb21haW4gc2hhcmUgYSBzaW5nbGUgSU9NTVUgYWRkcmVz cyBzcGFjZSBhbmQsIGJ5IGRlZmF1bHQsIFhlbiB3aWxsCisgKiAgIGVuc3VyZSBiZm4gPT0gcGZu LgorICoKICAqIFdBUk5JTkc6IFNvbWUgb2YgdGhlc2UgdGVybXMgaGF2ZSBjaGFuZ2VkIG92ZXIg dGltZSB3aGlsZSBvdGhlcnMgaGF2ZSBiZWVuCiAgKiB1c2VkIGluY29uc2lzdGVudGx5LCBtZWFu aW5nIHRoYXQgYSBsb3Qgb2YgZXhpc3RpbmcgY29kZSBkb2VzIG5vdCBtYXRjaCB0aGUKICAqIGRl ZmluaXRpb25zIGFib3ZlLiAgTmV3IGNvZGUgc2hvdWxkIHVzZSB0aGVzZSB0ZXJtcyBhcyBkZXNj cmliZWQgaGVyZSwgYW5kCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz dGluZm8veGVuLWRldmVs