From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v7 09/32] libxc: introduce a xc_dom_arch for hvm-3.0-x86_32 guests Date: Fri, 2 Oct 2015 17:48:40 +0200 Message-ID: <1443800943-17668-10-git-send-email-roger.pau@citrix.com> References: <1443800943-17668-1-git-send-email-roger.pau@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.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1Zi2aK-0008Ke-Pd for xen-devel@lists.xenproject.org; Fri, 02 Oct 2015 15:49:24 +0000 In-Reply-To: <1443800943-17668-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Wei Liu , Stefano Stabellini , Ian Jackson , Ian Campbell , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org VGhpcyB4Y19kb21fYXJjaCB3aWxsIGJlIHVzZWQgaW4gb3JkZXIgdG8gYnVpbGQgSFZNIGRvbWFp bnMuIFRoZSBjb2RlIGlzCmJhc2VkIG9uIHRoZSBleGlzdGluZyB4Y19odm1fcG9wdWxhdGVfbWVt b3J5IGFuZCB4Y19odm1fcG9wdWxhdGVfcGFyYW1zCmZ1bmN0aW9ucy4KClNpZ25lZC1vZmYtYnk6 IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogQW5k cmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQWNrZWQtYnk6IFdlaSBMaXUg PHdlaS5saXUyQGNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0 cml4LmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFuby5zdGFiZWxsaW5pQGV1LmNp dHJpeC5jb20+CkNjOiBJYW4gQ2FtcGJlbGwgPGlhbi5jYW1wYmVsbEBjaXRyaXguY29tPgpDYzog V2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCkNoYW5nZXMgc2luY2UgdjY6CiAtIEZp eCBpbmNvcnJlY3QgcHJpbnRmIGNvbnZlcnNpb24gc3BlY2lmaWNhdGlvbi4KCkNoYW5nZXMgc2lu Y2UgdjU6CiAtIFNldCB0ciBsaW1pdCB0byAweDY3LgogLSBVc2UgImdvdG8gb3V0IiBjb25zaXN0 ZW50bHkgaW4gdmNwdV9odm0uCiAtIFVuY29uZGl0aW9uYWxseSBjYWxsIGZyZWUoZnVsbF9jdHgp IGJlZm9yZSBleGl0aW5nIHZjcHVfaHZtLgogLSBBZGQgV2VpIExpdSBBY2suCgpDaGFuZ2VzIHNp bmNlIHY0OgogLSBSZXBsYWNlIGEgbWFsbG9jK21lbXNldCB3aXRoIGEgY2FsbG9jLgogLSBSZW1v dmUgYSAhPSBOVUxMIGNoZWNrLgogLSBBZGQgQW5kcmV3IENvb3BlciBSZXZpZXdlZC1ieS4KCkNo YW5nZXMgc2luY2UgdjM6CiAtIE1ha2Ugc3VyZSBjL3MgYjlkYmUzMyBpcyBub3QgcmV2ZXJ0ZWQg b24gdGhpcyBwYXRjaC4KIC0gU2V0IHRoZSBpbml0aWFsIEJTUCBzdGF0ZSB1c2luZyB7Z2V0L3Nl dH1odm1jb250ZXh0LgotLS0KIHRvb2xzL2xpYnhjL2luY2x1ZGUveGNfZG9tLmggfCAgIDYgKwog dG9vbHMvbGlieGMveGNfZG9tX3g4Ni5jICAgICB8IDYxOCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDYxMyBpbnNlcnRpb25zKCsp LCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hjX2Rv bS5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaAppbmRleCAyNDk4Y2Y3Li5lNTJiMDIz IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hjX2RvbS5oCisrKyBiL3Rvb2xzL2xp YnhjL2luY2x1ZGUveGNfZG9tLmgKQEAgLTE4Niw2ICsxODYsMTIgQEAgc3RydWN0IHhjX2RvbV9p bWFnZSB7CiAgICAgfSBjb250YWluZXJfdHlwZTsKIAogICAgIC8qIEhWTSBzcGVjaWZpYyBmaWVs ZHMuICovCisgICAgeGVuX3Bmbl90IHRhcmdldF9wYWdlczsKKyAgICB4ZW5fcGZuX3QgbW1pb19z dGFydDsKKyAgICB4ZW5fcGZuX3QgbW1pb19zaXplOworICAgIHhlbl9wZm5fdCBsb3dtZW1fZW5k OworICAgIHhlbl9wZm5fdCBoaWdobWVtX2VuZDsKKwogICAgIC8qIEV4dHJhIEFDUEkgdGFibGVz IHBhc3NlZCB0byBIVk1MT0FERVIgKi8KICAgICBzdHJ1Y3QgeGNfaHZtX2Zpcm13YXJlX21vZHVs ZSBhY3BpX21vZHVsZTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfZG9tX3g4Ni5jIGIv dG9vbHMvbGlieGMveGNfZG9tX3g4Ni5jCmluZGV4IGFiODg5OTYuLmRkMzMxYmYgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnhjL3hjX2RvbV94ODYuYworKysgYi90b29scy9saWJ4Yy94Y19kb21feDg2 LmMKQEAgLTM5LDEwICszOSwzMiBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotI2RlZmlu ZSBTVVBFUlBBR0VfUEZOX1NISUZUICA5Ci0jZGVmaW5lIFNVUEVSUEFHRV9OUl9QRk5TICAgICgx VUwgPDwgU1VQRVJQQUdFX1BGTl9TSElGVCkKICNkZWZpbmUgU1VQRVJQQUdFX0JBVENIX1NJWkUg NTEyCiAKKyNkZWZpbmUgU1VQRVJQQUdFXzJNQl9TSElGVCAgIDkKKyNkZWZpbmUgU1VQRVJQQUdF XzJNQl9OUl9QRk5TICgxVUwgPDwgU1VQRVJQQUdFXzJNQl9TSElGVCkKKyNkZWZpbmUgU1VQRVJQ QUdFXzFHQl9TSElGVCAgIDE4CisjZGVmaW5lIFNVUEVSUEFHRV8xR0JfTlJfUEZOUyAoMVVMIDw8 IFNVUEVSUEFHRV8xR0JfU0hJRlQpCisKKyNkZWZpbmUgWDg2X0NSMF9QRSAweDAxCisjZGVmaW5l IFg4Nl9DUjBfRVQgMHgxMAorCisjZGVmaW5lIFZHQV9IT0xFX1NJWkUgKDB4MjApCisKKyNkZWZp bmUgU1BFQ0lBTFBBR0VfUEFHSU5HICAgMAorI2RlZmluZSBTUEVDSUFMUEFHRV9BQ0NFU1MgICAx CisjZGVmaW5lIFNQRUNJQUxQQUdFX1NIQVJJTkcgIDIKKyNkZWZpbmUgU1BFQ0lBTFBBR0VfQlVG SU9SRVEgMworI2RlZmluZSBTUEVDSUFMUEFHRV9YRU5TVE9SRSA0CisjZGVmaW5lIFNQRUNJQUxQ QUdFX0lPUkVRICAgIDUKKyNkZWZpbmUgU1BFQ0lBTFBBR0VfSURFTlRfUFQgNgorI2RlZmluZSBT UEVDSUFMUEFHRV9DT05TT0xFICA3CisjZGVmaW5lIE5SX1NQRUNJQUxfUEFHRVMgICAgIDgKKyNk ZWZpbmUgc3BlY2lhbF9wZm4oeCkgKDB4ZmYwMDB1IC0gTlJfU1BFQ0lBTF9QQUdFUyArICh4KSkK KworI2RlZmluZSBOUl9JT1JFUV9TRVJWRVJfUEFHRVMgOAorI2RlZmluZSBpb3JlcV9zZXJ2ZXJf cGZuKHgpIChzcGVjaWFsX3BmbigwKSAtIE5SX0lPUkVRX1NFUlZFUl9QQUdFUyArICh4KSkKKwog I2RlZmluZSBiaXRzX3RvX21hc2soYml0cykgICAgICAgKCgoeGVuX3ZhZGRyX3QpMSA8PCAoYml0 cykpLTEpCiAjZGVmaW5lIHJvdW5kX2Rvd24oYWRkciwgbWFzaykgICAoKGFkZHIpICYgfihtYXNr KSkKICNkZWZpbmUgcm91bmRfdXAoYWRkciwgbWFzaykgICAgICgoYWRkcikgfCAobWFzaykpCkBA IC00NjIsNiArNDg0LDEzNSBAQCBzdGF0aWMgaW50IGFsbG9jX21hZ2ljX3BhZ2VzKHN0cnVjdCB4 Y19kb21faW1hZ2UgKmRvbSkKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgYnVpbGRf aHZtX2luZm8odm9pZCAqaHZtX2luZm9fcGFnZSwgc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQor eworICAgIHN0cnVjdCBodm1faW5mb190YWJsZSAqaHZtX2luZm8gPSAoc3RydWN0IGh2bV9pbmZv X3RhYmxlICopCisgICAgICAgICgoKHVuc2lnbmVkIGNoYXIgKilodm1faW5mb19wYWdlKSArIEhW TV9JTkZPX09GRlNFVCk7CisgICAgdWludDhfdCBzdW07CisgICAgaW50IGk7CisKKyAgICBtZW1z ZXQoaHZtX2luZm9fcGFnZSwgMCwgUEFHRV9TSVpFKTsKKworICAgIC8qIEZpbGwgaW4gdGhlIGhl YWRlci4gKi8KKyAgICBtZW1jcHkoaHZtX2luZm8tPnNpZ25hdHVyZSwgIkhWTSBJTkZPIiwgc2l6 ZW9mKGh2bV9pbmZvLT5zaWduYXR1cmUpKTsKKyAgICBodm1faW5mby0+bGVuZ3RoID0gc2l6ZW9m KHN0cnVjdCBodm1faW5mb190YWJsZSk7CisKKyAgICAvKiBTZW5zaWJsZSBkZWZhdWx0czogdGhl c2UgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGNhbGxlci4gKi8KKyAgICBodm1faW5mby0+YXBp Y19tb2RlID0gMTsKKyAgICBodm1faW5mby0+bnJfdmNwdXMgPSAxOworICAgIG1lbXNldChodm1f aW5mby0+dmNwdV9vbmxpbmUsIDB4ZmYsIHNpemVvZihodm1faW5mby0+dmNwdV9vbmxpbmUpKTsK KworICAgIC8qIE1lbW9yeSBwYXJhbWV0ZXJzLiAqLworICAgIGh2bV9pbmZvLT5sb3dfbWVtX3Bn ZW5kID0gZG9tLT5sb3dtZW1fZW5kID4+IFBBR0VfU0hJRlQ7CisgICAgaHZtX2luZm8tPmhpZ2hf bWVtX3BnZW5kID0gZG9tLT5oaWdobWVtX2VuZCA+PiBQQUdFX1NISUZUOworICAgIGh2bV9pbmZv LT5yZXNlcnZlZF9tZW1fcGdzdGFydCA9IGlvcmVxX3NlcnZlcl9wZm4oMCk7CisKKyAgICAvKiBG aW5pc2ggd2l0aCB0aGUgY2hlY2tzdW0uICovCisgICAgZm9yICggaSA9IDAsIHN1bSA9IDA7IGkg PCBodm1faW5mby0+bGVuZ3RoOyBpKysgKQorICAgICAgICBzdW0gKz0gKCh1aW50OF90ICopaHZt X2luZm8pW2ldOworICAgIGh2bV9pbmZvLT5jaGVja3N1bSA9IC1zdW07Cit9CisKK3N0YXRpYyBp bnQgYWxsb2NfbWFnaWNfcGFnZXNfaHZtKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKK3sKKyAg ICB1bnNpZ25lZCBsb25nIGk7CisgICAgdm9pZCAqaHZtX2luZm9fcGFnZTsKKyAgICB1aW50MzJf dCAqaWRlbnRfcHQsIGRvbWlkID0gZG9tLT5ndWVzdF9kb21pZDsKKyAgICBpbnQgcmM7CisgICAg eGVuX3Bmbl90IHNwZWNpYWxfYXJyYXlbTlJfU1BFQ0lBTF9QQUdFU107CisgICAgeGVuX3Bmbl90 IGlvcmVxX3NlcnZlcl9hcnJheVtOUl9JT1JFUV9TRVJWRVJfUEFHRVNdOworICAgIHhjX2ludGVy ZmFjZSAqeGNoID0gZG9tLT54Y2g7CisKKyAgICBpZiAoIChodm1faW5mb19wYWdlID0geGNfbWFw X2ZvcmVpZ25fcmFuZ2UoCisgICAgICAgICAgICAgIHhjaCwgZG9taWQsIFBBR0VfU0laRSwgUFJP VF9SRUFEIHwgUFJPVF9XUklURSwKKyAgICAgICAgICAgICAgSFZNX0lORk9fUEZOKSkgPT0gTlVM TCApCisgICAgICAgIGdvdG8gZXJyb3Jfb3V0OworICAgIGJ1aWxkX2h2bV9pbmZvKGh2bV9pbmZv X3BhZ2UsIGRvbSk7CisgICAgbXVubWFwKGh2bV9pbmZvX3BhZ2UsIFBBR0VfU0laRSk7CisKKyAg ICAvKiBBbGxvY2F0ZSBhbmQgY2xlYXIgc3BlY2lhbCBwYWdlcy4gKi8KKyAgICBmb3IgKCBpID0g MDsgaSA8IE5SX1NQRUNJQUxfUEFHRVM7IGkrKyApCisgICAgICAgIHNwZWNpYWxfYXJyYXlbaV0g PSBzcGVjaWFsX3BmbihpKTsKKworICAgIHJjID0geGNfZG9tYWluX3BvcHVsYXRlX3BoeXNtYXBf ZXhhY3QoeGNoLCBkb21pZCwgTlJfU1BFQ0lBTF9QQUdFUywgMCwgMCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxfYXJyYXkpOworICAgIGlmICggcmMg IT0gMCApCisgICAgeworICAgICAgICBET01QUklOVEYoIkNvdWxkIG5vdCBhbGxvY2F0ZSBzcGVj aWFsIHBhZ2VzLiIpOworICAgICAgICBnb3RvIGVycm9yX291dDsKKyAgICB9CisKKyAgICBpZiAo IHhjX2NsZWFyX2RvbWFpbl9wYWdlcyh4Y2gsIGRvbWlkLCBzcGVjaWFsX3BmbigwKSwgTlJfU1BF Q0lBTF9QQUdFUykgKQorICAgICAgICAgICAgZ290byBlcnJvcl9vdXQ7CisKKyAgICB4Y19odm1f cGFyYW1fc2V0KHhjaCwgZG9taWQsIEhWTV9QQVJBTV9TVE9SRV9QRk4sCisgICAgICAgICAgICAg ICAgICAgICBzcGVjaWFsX3BmbihTUEVDSUFMUEFHRV9YRU5TVE9SRSkpOworICAgIHhjX2h2bV9w YXJhbV9zZXQoeGNoLCBkb21pZCwgSFZNX1BBUkFNX0JVRklPUkVRX1BGTiwKKyAgICAgICAgICAg ICAgICAgICAgIHNwZWNpYWxfcGZuKFNQRUNJQUxQQUdFX0JVRklPUkVRKSk7CisgICAgeGNfaHZt X3BhcmFtX3NldCh4Y2gsIGRvbWlkLCBIVk1fUEFSQU1fSU9SRVFfUEZOLAorICAgICAgICAgICAg ICAgICAgICAgc3BlY2lhbF9wZm4oU1BFQ0lBTFBBR0VfSU9SRVEpKTsKKyAgICB4Y19odm1fcGFy YW1fc2V0KHhjaCwgZG9taWQsIEhWTV9QQVJBTV9DT05TT0xFX1BGTiwKKyAgICAgICAgICAgICAg ICAgICAgIHNwZWNpYWxfcGZuKFNQRUNJQUxQQUdFX0NPTlNPTEUpKTsKKyAgICB4Y19odm1fcGFy YW1fc2V0KHhjaCwgZG9taWQsIEhWTV9QQVJBTV9QQUdJTkdfUklOR19QRk4sCisgICAgICAgICAg ICAgICAgICAgICBzcGVjaWFsX3BmbihTUEVDSUFMUEFHRV9QQUdJTkcpKTsKKyAgICB4Y19odm1f cGFyYW1fc2V0KHhjaCwgZG9taWQsIEhWTV9QQVJBTV9NT05JVE9SX1JJTkdfUEZOLAorICAgICAg ICAgICAgICAgICAgICAgc3BlY2lhbF9wZm4oU1BFQ0lBTFBBR0VfQUNDRVNTKSk7CisgICAgeGNf aHZtX3BhcmFtX3NldCh4Y2gsIGRvbWlkLCBIVk1fUEFSQU1fU0hBUklOR19SSU5HX1BGTiwKKyAg ICAgICAgICAgICAgICAgICAgIHNwZWNpYWxfcGZuKFNQRUNJQUxQQUdFX1NIQVJJTkcpKTsKKwor ICAgIC8qCisgICAgICogQWxsb2NhdGUgYW5kIGNsZWFyIGFkZGl0aW9uYWwgaW9yZXEgc2VydmVy IHBhZ2VzLiBUaGUgZGVmYXVsdAorICAgICAqIHNlcnZlciB3aWxsIHVzZSB0aGUgSU9SRVEgYW5k IEJVRklPUkVRIHNwZWNpYWwgcGFnZXMgYWJvdmUuCisgICAgICovCisgICAgZm9yICggaSA9IDA7 IGkgPCBOUl9JT1JFUV9TRVJWRVJfUEFHRVM7IGkrKyApCisgICAgICAgIGlvcmVxX3NlcnZlcl9h cnJheVtpXSA9IGlvcmVxX3NlcnZlcl9wZm4oaSk7CisKKyAgICByYyA9IHhjX2RvbWFpbl9wb3B1 bGF0ZV9waHlzbWFwX2V4YWN0KHhjaCwgZG9taWQsIE5SX0lPUkVRX1NFUlZFUl9QQUdFUywgMCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGlvcmVxX3NlcnZl cl9hcnJheSk7CisgICAgaWYgKCByYyAhPSAwICkKKyAgICB7CisgICAgICAgIERPTVBSSU5URigi Q291bGQgbm90IGFsbG9jYXRlIGlvcmVxIHNlcnZlciBwYWdlcy4iKTsKKyAgICAgICAgZ290byBl cnJvcl9vdXQ7CisgICAgfQorCisgICAgaWYgKCB4Y19jbGVhcl9kb21haW5fcGFnZXMoeGNoLCBk b21pZCwgaW9yZXFfc2VydmVyX3BmbigwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOUl9JT1JFUV9TRVJWRVJfUEFHRVMpICkKKyAgICAgICAgICAgIGdvdG8gZXJyb3Jfb3V0Owor CisgICAgLyogVGVsbCB0aGUgZG9tYWluIHdoZXJlIHRoZSBwYWdlcyBhcmUgYW5kIGhvdyBtYW55 IHRoZXJlIGFyZSAqLworICAgIHhjX2h2bV9wYXJhbV9zZXQoeGNoLCBkb21pZCwgSFZNX1BBUkFN X0lPUkVRX1NFUlZFUl9QRk4sCisgICAgICAgICAgICAgICAgICAgICBpb3JlcV9zZXJ2ZXJfcGZu KDApKTsKKyAgICB4Y19odm1fcGFyYW1fc2V0KHhjaCwgZG9taWQsIEhWTV9QQVJBTV9OUl9JT1JF UV9TRVJWRVJfUEFHRVMsCisgICAgICAgICAgICAgICAgICAgICBOUl9JT1JFUV9TRVJWRVJfUEFH RVMpOworCisgICAgLyoKKyAgICAgKiBJZGVudGl0eS1tYXAgcGFnZSB0YWJsZSBpcyByZXF1aXJl ZCBmb3IgcnVubmluZyB3aXRoIENSMC5QRz0wIHdoZW4KKyAgICAgKiB1c2luZyBJbnRlbCBFUFQu IENyZWF0ZSBhIDMyLWJpdCBub24tUEFFIHBhZ2UgZGlyZWN0b3J5IG9mIHN1cGVycGFnZXMuCisg ICAgICovCisgICAgaWYgKCAoaWRlbnRfcHQgPSB4Y19tYXBfZm9yZWlnbl9yYW5nZSgKKyAgICAg ICAgICAgICAgeGNoLCBkb21pZCwgUEFHRV9TSVpFLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAor ICAgICAgICAgICAgICBzcGVjaWFsX3BmbihTUEVDSUFMUEFHRV9JREVOVF9QVCkpKSA9PSBOVUxM ICkKKyAgICAgICAgZ290byBlcnJvcl9vdXQ7CisgICAgZm9yICggaSA9IDA7IGkgPCBQQUdFX1NJ WkUgLyBzaXplb2YoKmlkZW50X3B0KTsgaSsrICkKKyAgICAgICAgaWRlbnRfcHRbaV0gPSAoKGkg PDwgMjIpIHwgX1BBR0VfUFJFU0VOVCB8IF9QQUdFX1JXIHwgX1BBR0VfVVNFUiB8CisgICAgICAg ICAgICAgICAgICAgICAgIF9QQUdFX0FDQ0VTU0VEIHwgX1BBR0VfRElSVFkgfCBfUEFHRV9QU0Up OworICAgIG11bm1hcChpZGVudF9wdCwgUEFHRV9TSVpFKTsKKyAgICB4Y19odm1fcGFyYW1fc2V0 KHhjaCwgZG9taWQsIEhWTV9QQVJBTV9JREVOVF9QVCwKKyAgICAgICAgICAgICAgICAgICAgIHNw ZWNpYWxfcGZuKFNQRUNJQUxQQUdFX0lERU5UX1BUKSA8PCBQQUdFX1NISUZUKTsKKworICAgIGRv bS0+Y29uc29sZV9wZm4gPSBzcGVjaWFsX3BmbihTUEVDSUFMUEFHRV9DT05TT0xFKTsKKyAgICBk b20tPnhlbnN0b3JlX3BmbiA9IHNwZWNpYWxfcGZuKFNQRUNJQUxQQUdFX1hFTlNUT1JFKTsKKyAg ICBkb20tPnBhcm1zLnZpcnRfaHlwZXJjYWxsID0gLTE7CisKKyAgICByYyA9IDA7CisgICAgZ290 byBvdXQ7CisgZXJyb3Jfb3V0OgorICAgIHJjID0gLTE7Cisgb3V0OgorCisgICAgcmV0dXJuIHJj OworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogc3RhdGljIGludCBzdGFydF9pbmZvX3g4 Nl8zMihzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCkBAIC02ODAsNiArODMxLDEwMiBAQCBzdGF0 aWMgaW50IHZjcHVfeDg2XzY0KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKICAgICByZXR1cm4g cmM7CiB9CiAKK3N0YXRpYyBpbnQgdmNwdV9odm0oc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQor eworICAgIHN0cnVjdCB7CisgICAgICAgIHN0cnVjdCBodm1fc2F2ZV9kZXNjcmlwdG9yIGhlYWRl cl9kOworICAgICAgICBIVk1fU0FWRV9UWVBFKEhFQURFUikgaGVhZGVyOworICAgICAgICBzdHJ1 Y3QgaHZtX3NhdmVfZGVzY3JpcHRvciBjcHVfZDsKKyAgICAgICAgSFZNX1NBVkVfVFlQRShDUFUp IGNwdTsKKyAgICAgICAgc3RydWN0IGh2bV9zYXZlX2Rlc2NyaXB0b3IgZW5kX2Q7CisgICAgICAg IEhWTV9TQVZFX1RZUEUoRU5EKSBlbmQ7CisgICAgfSBic3BfY3R4OworICAgIHVpbnQ4X3QgKmZ1 bGxfY3R4ID0gTlVMTDsKKyAgICBpbnQgcmM7CisKKyAgICBET01QUklOVEZfQ0FMTEVEKGRvbS0+ eGNoKTsKKworICAgIC8qCisgICAgICogR2V0IHRoZSBmdWxsIEhWTSBjb250ZXh0IGluIG9yZGVy IHRvIGhhdmUgdGhlIGhlYWRlciwgaXQgaXMgbm90CisgICAgICogcG9zc2libGUgdG8gZ2V0IHRo ZSBoZWFkZXIgd2l0aCBnZXRjb250ZXh0X3BhcnRpYWwsIGFuZCBjcmFmdGluZyBvbmUKKyAgICAg KiBmcm9tIHVzZXJzcGFjZSBpcyBhbHNvIG5vdCBhbiBvcHRpb24gc2luY2UgY3B1aWQgaXMgdHJh cHBlZCBhbmQKKyAgICAgKiBtb2RpZmllZCBieSBYZW4uCisgICAgICovCisKKyAgICByYyA9IHhj X2RvbWFpbl9odm1fZ2V0Y29udGV4dChkb20tPnhjaCwgZG9tLT5ndWVzdF9kb21pZCwgTlVMTCwg MCk7CisgICAgaWYgKCByYyA8PSAwICkKKyAgICB7CisgICAgICAgIHhjX2RvbV9wYW5pYyhkb20t PnhjaCwgWENfSU5URVJOQUxfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IHVuYWJs ZSB0byBmZXRjaCBIVk0gY29udGV4dCBzaXplIChyYz0lZCkiLAorICAgICAgICAgICAgICAgICAg ICAgX19mdW5jX18sIHJjKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgZnVsbF9j dHggPSBjYWxsb2MoMSwgcmMpOworICAgIGlmICggZnVsbF9jdHggPT0gTlVMTCApCisgICAgewor ICAgICAgICB4Y19kb21fcGFuaWMoZG9tLT54Y2gsIFhDX0lOVEVSTkFMX0VSUk9SLAorICAgICAg ICAgICAgICAgICAgICAgIiVzOiB1bmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBIVk0gY29u dGV4dCAocmM9JWQpIiwKKyAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCByYyk7CisgICAg ICAgIHJjID0gLUVOT01FTTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgcmMgPSB4 Y19kb21haW5faHZtX2dldGNvbnRleHQoZG9tLT54Y2gsIGRvbS0+Z3Vlc3RfZG9taWQsIGZ1bGxf Y3R4LCByYyk7CisgICAgaWYgKCByYyA8PSAwICkKKyAgICB7CisgICAgICAgIHhjX2RvbV9wYW5p Yyhkb20tPnhjaCwgWENfSU5URVJOQUxfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6 IHVuYWJsZSB0byBmZXRjaCBIVk0gY29udGV4dCAocmM9JWQpIiwKKyAgICAgICAgICAgICAgICAg ICAgIF9fZnVuY19fLCByYyk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIC8qIENv cHkgdGhlIGhlYWRlciB0byBvdXIgcGFydGlhbCBjb250ZXh0LiAqLworICAgIG1lbXNldCgmYnNw X2N0eCwgMCwgc2l6ZW9mKGJzcF9jdHgpKTsKKyAgICBtZW1jcHkoJmJzcF9jdHgsIGZ1bGxfY3R4 LAorICAgICAgICAgICBzaXplb2Yoc3RydWN0IGh2bV9zYXZlX2Rlc2NyaXB0b3IpICsgSFZNX1NB VkVfTEVOR1RIKEhFQURFUikpOworCisgICAgLyogU2V0IHRoZSBDUFUgZGVzY3JpcHRvci4gKi8K KyAgICBic3BfY3R4LmNwdV9kLnR5cGVjb2RlID0gSFZNX1NBVkVfQ09ERShDUFUpOworICAgIGJz cF9jdHguY3B1X2QuaW5zdGFuY2UgPSAwOworICAgIGJzcF9jdHguY3B1X2QubGVuZ3RoID0gSFZN X1NBVkVfTEVOR1RIKENQVSk7CisKKyAgICAvKiBTZXQgdGhlIGNhY2hlZCBwYXJ0IG9mIHRoZSBy ZWxldmFudCBzZWdtZW50IHJlZ2lzdGVycy4gKi8KKyAgICBic3BfY3R4LmNwdS5jc19iYXNlID0g MDsKKyAgICBic3BfY3R4LmNwdS5kc19iYXNlID0gMDsKKyAgICBic3BfY3R4LmNwdS5zc19iYXNl ID0gMDsKKyAgICBic3BfY3R4LmNwdS50cl9iYXNlID0gMDsKKyAgICBic3BfY3R4LmNwdS5jc19s aW1pdCA9IH4wdTsKKyAgICBic3BfY3R4LmNwdS5kc19saW1pdCA9IH4wdTsKKyAgICBic3BfY3R4 LmNwdS5zc19saW1pdCA9IH4wdTsKKyAgICBic3BfY3R4LmNwdS50cl9saW1pdCA9IDB4Njc7Cisg ICAgYnNwX2N0eC5jcHUuY3NfYXJieXRlcyA9IDB4YzliOworICAgIGJzcF9jdHguY3B1LmRzX2Fy Ynl0ZXMgPSAweGM5MzsKKyAgICBic3BfY3R4LmNwdS5zc19hcmJ5dGVzID0gMHhjOTM7CisgICAg YnNwX2N0eC5jcHUudHJfYXJieXRlcyA9IDB4OGI7CisKKyAgICAvKiBTZXQgdGhlIGNvbnRyb2wg cmVnaXN0ZXJzLiAqLworICAgIGJzcF9jdHguY3B1LmNyMCA9IFg4Nl9DUjBfUEUgfCBYODZfQ1Iw X0VUOworCisgICAgLyogU2V0IHRoZSBJUC4gKi8KKyAgICBic3BfY3R4LmNwdS5yaXAgPSBkb20t PnBhcm1zLnBoeXNfZW50cnk7CisKKyAgICAvKiBTZXQgdGhlIGVuZCBkZXNjcmlwdG9yLiAqLwor ICAgIGJzcF9jdHguZW5kX2QudHlwZWNvZGUgPSBIVk1fU0FWRV9DT0RFKEVORCk7CisgICAgYnNw X2N0eC5lbmRfZC5pbnN0YW5jZSA9IDA7CisgICAgYnNwX2N0eC5lbmRfZC5sZW5ndGggPSBIVk1f U0FWRV9MRU5HVEgoRU5EKTsKKworICAgIHJjID0geGNfZG9tYWluX2h2bV9zZXRjb250ZXh0KGRv bS0+eGNoLCBkb20tPmd1ZXN0X2RvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh1aW50OF90ICopJmJzcF9jdHgsIHNpemVvZihic3BfY3R4KSk7CisgICAgaWYgKCByYyAh PSAwICkKKyAgICAgICAgeGNfZG9tX3BhbmljKGRvbS0+eGNoLCBYQ19JTlRFUk5BTF9FUlJPUiwK KyAgICAgICAgICAgICAgICAgICAgICIlczogU0VUSFZNQ09OVEVYVCBmYWlsZWQgKHJjPSVkKSIs IF9fZnVuY19fLCByYyk7CisKKyBvdXQ6CisgICAgZnJlZShmdWxsX2N0eCk7CisgICAgcmV0dXJu IHJjOworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogc3RhdGljIGludCB4ODZfY29tcGF0 KHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWlkLCBjaGFyICpndWVzdF90eXBlKQpAQCAt NzYwLDcgKzEwMDcsNyBAQCBzdGF0aWMgaW50IG1lbWluaXRfcHYoc3RydWN0IHhjX2RvbV9pbWFn ZSAqZG9tKQogCiAgICAgaWYgKCBkb20tPnN1cGVycGFnZXMgKQogICAgIHsKLSAgICAgICAgaW50 IGNvdW50ID0gZG9tLT50b3RhbF9wYWdlcyA+PiBTVVBFUlBBR0VfUEZOX1NISUZUOworICAgICAg ICBpbnQgY291bnQgPSBkb20tPnRvdGFsX3BhZ2VzID4+IFNVUEVSUEFHRV8yTUJfU0hJRlQ7CiAg ICAgICAgIHhlbl9wZm5fdCBleHRlbnRzW2NvdW50XTsKIAogICAgICAgICBkb20tPnAybV9zaXpl ID0gZG9tLT50b3RhbF9wYWdlczsKQEAgLTc3MSw5ICsxMDE4LDkgQEAgc3RhdGljIGludCBtZW1p bml0X3B2KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKIAogICAgICAgICBET01QUklOVEYoIlBv cHVsYXRpbmcgbWVtb3J5IHdpdGggJWQgc3VwZXJwYWdlcyIsIGNvdW50KTsKICAgICAgICAgZm9y ICggcGZuID0gMDsgcGZuIDwgY291bnQ7IHBmbisrICkKLSAgICAgICAgICAgIGV4dGVudHNbcGZu XSA9IHBmbiA8PCBTVVBFUlBBR0VfUEZOX1NISUZUOworICAgICAgICAgICAgZXh0ZW50c1twZm5d ID0gcGZuIDw8IFNVUEVSUEFHRV8yTUJfU0hJRlQ7CiAgICAgICAgIHJjID0geGNfZG9tYWluX3Bv cHVsYXRlX3BoeXNtYXBfZXhhY3QoZG9tLT54Y2gsIGRvbS0+Z3Vlc3RfZG9taWQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCBTVVBFUlBBR0Vf UEZOX1NISUZULCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb3VudCwgU1VQRVJQQUdFXzJNQl9TSElGVCwgMCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW50cyk7CiAgICAgICAgIGlmICggcmMgKQog ICAgICAgICAgICAgcmV0dXJuIHJjOwpAQCAtNzgzLDcgKzEwMzAsNyBAQCBzdGF0aWMgaW50IG1l bWluaXRfcHYoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQogICAgICAgICBmb3IgKCBpID0gMDsg aSA8IGNvdW50OyBpKysgKQogICAgICAgICB7CiAgICAgICAgICAgICBtZm4gPSBleHRlbnRzW2ld OwotICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCBTVVBFUlBBR0VfTlJfUEZOUzsgaisrLCBw Zm4rKyApCisgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8IFNVUEVSUEFHRV8yTUJfTlJfUEZO UzsgaisrLCBwZm4rKyApCiAgICAgICAgICAgICAgICAgZG9tLT5wMm1faG9zdFtwZm5dID0gbWZu ICsgajsKICAgICAgICAgfQogICAgIH0KQEAgLTg2OCw3ICsxMTE1LDcgQEAgc3RhdGljIGludCBt ZW1pbml0X3B2KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKIAogICAgICAgICAgICAgcGFnZXMg PSAodm1lbXJhbmdlc1tpXS5lbmQgLSB2bWVtcmFuZ2VzW2ldLnN0YXJ0KQogICAgICAgICAgICAg ICAgID4+IFBBR0VfU0hJRlQ7Ci0gICAgICAgICAgICBzdXBlcl9wYWdlcyA9IHBhZ2VzID4+IFNV UEVSUEFHRV9QRk5fU0hJRlQ7CisgICAgICAgICAgICBzdXBlcl9wYWdlcyA9IHBhZ2VzID4+IFNV UEVSUEFHRV8yTUJfU0hJRlQ7CiAgICAgICAgICAgICBwZm5fYmFzZSA9IHZtZW1yYW5nZXNbaV0u c3RhcnQgPj4gUEFHRV9TSElGVDsKIAogICAgICAgICAgICAgZm9yICggcGZuID0gcGZuX2Jhc2U7 IHBmbiA8IHBmbl9iYXNlK3BhZ2VzOyBwZm4rKyApCkBAIC04ODEsMTEgKzExMjgsMTEgQEAgc3Rh dGljIGludCBtZW1pbml0X3B2KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKICAgICAgICAgICAg ICAgICBzdXBlcl9wYWdlcyAtPSBjb3VudDsKIAogICAgICAgICAgICAgICAgIGZvciAoIHBmbiA9 IHBmbl9iYXNlX2lkeCwgaiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgcGZuIDwgcGZuX2Jh c2VfaWR4ICsgKGNvdW50IDw8IFNVUEVSUEFHRV9QRk5fU0hJRlQpOwotICAgICAgICAgICAgICAg ICAgICAgIHBmbiArPSBTVVBFUlBBR0VfTlJfUEZOUywgaisrICkKKyAgICAgICAgICAgICAgICAg ICAgICBwZm4gPCBwZm5fYmFzZV9pZHggKyAoY291bnQgPDwgU1VQRVJQQUdFXzJNQl9TSElGVCk7 CisgICAgICAgICAgICAgICAgICAgICAgcGZuICs9IFNVUEVSUEFHRV8yTUJfTlJfUEZOUywgaisr ICkKICAgICAgICAgICAgICAgICAgICAgZXh0ZW50c1tqXSA9IGRvbS0+cDJtX2hvc3RbcGZuXTsK ICAgICAgICAgICAgICAgICByYyA9IHhjX2RvbWFpbl9wb3B1bGF0ZV9waHlzbWFwKGRvbS0+eGNo LCBkb20tPmd1ZXN0X2RvbWlkLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNVUEVSUEFHRV9QRk5fU0hJRlQsIG1lbWZsYWdzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VQRVJQQUdFXzJNQl9T SElGVCwgbWVtZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBleHRlbnRzKTsKICAgICAgICAgICAgICAgICBpZiAoIHJjIDwgMCApCiAgICAgICAg ICAgICAgICAgICAgIHJldHVybiByYzsKQEAgLTg5NSw3ICsxMTQyLDcgQEAgc3RhdGljIGludCBt ZW1pbml0X3B2KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKICAgICAgICAgICAgICAgICBmb3Ig KCBqID0gMDsgaiA8IHJjOyBqKysgKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgbWZuID0gZXh0ZW50c1tqXTsKLSAgICAgICAgICAgICAgICAgICAgZm9yICggayA9IDA7 IGsgPCBTVVBFUlBBR0VfTlJfUEZOUzsgaysrLCBwZm4rKyApCisgICAgICAgICAgICAgICAgICAg IGZvciAoIGsgPSAwOyBrIDwgU1VQRVJQQUdFXzJNQl9OUl9QRk5TOyBrKyssIHBmbisrICkKICAg ICAgICAgICAgICAgICAgICAgICAgIGRvbS0+cDJtX2hvc3RbcGZuXSA9IG1mbiArIGs7CiAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHBmbl9iYXNlX2lkeCA9IHBmbjsKQEAgLTkz Niw2ICsxMTgzLDMzMiBAQCBzdGF0aWMgaW50IG1lbWluaXRfcHYoc3RydWN0IHhjX2RvbV9pbWFn ZSAqZG9tKQogICAgIHJldHVybiByYzsKIH0KIAorLyoKKyAqIENoZWNrIHdoZXRoZXIgdGhlcmUg ZXhpc3RzIG1taW8gaG9sZSBpbiB0aGUgc3BlY2lmaWVkIG1lbW9yeSByYW5nZS4KKyAqIFJldHVy bnMgMSBpZiBleGlzdHMsIGVsc2UgcmV0dXJucyAwLgorICovCitzdGF0aWMgaW50IGNoZWNrX21t aW9faG9sZSh1aW50NjRfdCBzdGFydCwgdWludDY0X3QgbWVtc2l6ZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQ2NF90IG1taW9fc3RhcnQsIHVpbnQ2NF90IG1taW9fc2l6ZSkKK3sK KyAgICBpZiAoIHN0YXJ0ICsgbWVtc2l6ZSA8PSBtbWlvX3N0YXJ0IHx8IHN0YXJ0ID49IG1taW9f c3RhcnQgKyBtbWlvX3NpemUgKQorICAgICAgICByZXR1cm4gMDsKKyAgICBlbHNlCisgICAgICAg IHJldHVybiAxOworfQorCitzdGF0aWMgaW50IG1lbWluaXRfaHZtKHN0cnVjdCB4Y19kb21faW1h Z2UgKmRvbSkKK3sKKyAgICB1bnNpZ25lZCBsb25nIGksIHZtZW1pZCwgbnJfcGFnZXMgPSBkb20t PnRvdGFsX3BhZ2VzOworICAgIHVuc2lnbmVkIGxvbmcgcDJtX3NpemU7CisgICAgdW5zaWduZWQg bG9uZyB0YXJnZXRfcGFnZXMgPSBkb20tPnRhcmdldF9wYWdlczsKKyAgICB1bnNpZ25lZCBsb25n IGN1cl9wYWdlcywgY3VyX3BmbjsKKyAgICBpbnQgcmM7CisgICAgeGVuX2NhcGFiaWxpdGllc19p bmZvX3QgY2FwczsKKyAgICB1bnNpZ25lZCBsb25nIHN0YXRfbm9ybWFsX3BhZ2VzID0gMCwgc3Rh dF8ybWJfcGFnZXMgPSAwLCAKKyAgICAgICAgc3RhdF8xZ2JfcGFnZXMgPSAwOworICAgIHVuc2ln bmVkIGludCBtZW1mbGFncyA9IDA7CisgICAgaW50IGNsYWltX2VuYWJsZWQgPSBkb20tPmNsYWlt X2VuYWJsZWQ7CisgICAgdWludDY0X3QgdG90YWxfcGFnZXM7CisgICAgeGVuX3ZtZW1yYW5nZV90 IGR1bW15X3ZtZW1yYW5nZVsyXTsKKyAgICB1bnNpZ25lZCBpbnQgZHVtbXlfdm5vZGVfdG9fcG5v ZGVbMV07CisgICAgeGVuX3ZtZW1yYW5nZV90ICp2bWVtcmFuZ2VzOworICAgIHVuc2lnbmVkIGlu dCAqdm5vZGVfdG9fcG5vZGU7CisgICAgdW5zaWduZWQgaW50IG5yX3ZtZW1yYW5nZXMsIG5yX3Zu b2RlczsKKyAgICB4Y19pbnRlcmZhY2UgKnhjaCA9IGRvbS0+eGNoOworICAgIHVpbnQzMl90IGRv bWlkID0gZG9tLT5ndWVzdF9kb21pZDsKKworICAgIGlmICggbnJfcGFnZXMgPiB0YXJnZXRfcGFn ZXMgKQorICAgICAgICBtZW1mbGFncyB8PSBYRU5NRU1GX3BvcHVsYXRlX29uX2RlbWFuZDsKKwor ICAgIGlmICggZG9tLT5ucl92bWVtcmFuZ2VzID09IDAgKQorICAgIHsKKyAgICAgICAgLyogQnVp bGQgZHVtbXkgdm5vZGUgaW5mb3JtYXRpb24KKyAgICAgICAgICoKKyAgICAgICAgICogR3Vlc3Qg cGh5c2ljYWwgYWRkcmVzcyBzcGFjZSBsYXlvdXQ6CisgICAgICAgICAqIFswLCBob2xlX3N0YXJ0 KSBbaG9sZV9zdGFydCwgNEcpIFs0RywgaGlnaG1lbV9lbmQpCisgICAgICAgICAqCisgICAgICAg ICAqIE9mIGNvdXJzZSBpZiB0aGVyZSBpcyBubyBoaWdoIG1lbW9yeSwgdGhlIHNlY29uZCB2bWVt cmFuZ2UKKyAgICAgICAgICogaGFzIG5vIGVmZmVjdCBvbiB0aGUgYWN0dWFsIHJlc3VsdC4KKyAg ICAgICAgICovCisKKyAgICAgICAgZHVtbXlfdm1lbXJhbmdlWzBdLnN0YXJ0ID0gMDsKKyAgICAg ICAgZHVtbXlfdm1lbXJhbmdlWzBdLmVuZCAgID0gZG9tLT5sb3dtZW1fZW5kOworICAgICAgICBk dW1teV92bWVtcmFuZ2VbMF0uZmxhZ3MgPSAwOworICAgICAgICBkdW1teV92bWVtcmFuZ2VbMF0u bmlkICAgPSAwOworICAgICAgICBucl92bWVtcmFuZ2VzID0gMTsKKworICAgICAgICBpZiAoIGRv bS0+aGlnaG1lbV9lbmQgPiAoMVVMTCA8PCAzMikgKQorICAgICAgICB7CisgICAgICAgICAgICBk dW1teV92bWVtcmFuZ2VbMV0uc3RhcnQgPSAxVUxMIDw8IDMyOworICAgICAgICAgICAgZHVtbXlf dm1lbXJhbmdlWzFdLmVuZCAgID0gZG9tLT5oaWdobWVtX2VuZDsKKyAgICAgICAgICAgIGR1bW15 X3ZtZW1yYW5nZVsxXS5mbGFncyA9IDA7CisgICAgICAgICAgICBkdW1teV92bWVtcmFuZ2VbMV0u bmlkICAgPSAwOworCisgICAgICAgICAgICBucl92bWVtcmFuZ2VzKys7CisgICAgICAgIH0KKwor ICAgICAgICBkdW1teV92bm9kZV90b19wbm9kZVswXSA9IFhDX05VTUFfTk9fTk9ERTsKKyAgICAg ICAgbnJfdm5vZGVzID0gMTsKKyAgICAgICAgdm1lbXJhbmdlcyA9IGR1bW15X3ZtZW1yYW5nZTsK KyAgICAgICAgdm5vZGVfdG9fcG5vZGUgPSBkdW1teV92bm9kZV90b19wbm9kZTsKKyAgICB9Cisg ICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKCBucl9wYWdlcyA+IHRhcmdldF9wYWdlcyApCisg ICAgICAgIHsKKyAgICAgICAgICAgIERPTVBSSU5URigiQ2Fubm90IGVuYWJsZSB2TlVNQSBhbmQg UG9EIGF0IHRoZSBzYW1lIHRpbWUiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3Jfb3V0OworICAg ICAgICB9CisKKyAgICAgICAgbnJfdm1lbXJhbmdlcyA9IGRvbS0+bnJfdm1lbXJhbmdlczsKKyAg ICAgICAgbnJfdm5vZGVzID0gZG9tLT5ucl92bm9kZXM7CisgICAgICAgIHZtZW1yYW5nZXMgPSBk b20tPnZtZW1yYW5nZXM7CisgICAgICAgIHZub2RlX3RvX3Bub2RlID0gZG9tLT52bm9kZV90b19w bm9kZTsKKyAgICB9CisKKyAgICB0b3RhbF9wYWdlcyA9IDA7CisgICAgcDJtX3NpemUgPSAwOwor ICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfdm1lbXJhbmdlczsgaSsrICkKKyAgICB7CisgICAgICAg IHRvdGFsX3BhZ2VzICs9ICgodm1lbXJhbmdlc1tpXS5lbmQgLSB2bWVtcmFuZ2VzW2ldLnN0YXJ0 KQorICAgICAgICAgICAgICAgICAgICAgICAgPj4gUEFHRV9TSElGVCk7CisgICAgICAgIHAybV9z aXplID0gcDJtX3NpemUgPiAodm1lbXJhbmdlc1tpXS5lbmQgPj4gUEFHRV9TSElGVCkgPworICAg ICAgICAgICAgcDJtX3NpemUgOiAodm1lbXJhbmdlc1tpXS5lbmQgPj4gUEFHRV9TSElGVCk7Cisg ICAgfQorCisgICAgaWYgKCB0b3RhbF9wYWdlcyAhPSBucl9wYWdlcyApCisgICAgeworICAgICAg ICBET01QUklOVEYoInZOVU1BIG1lbW9yeSBwYWdlcyBtaXNtYXRjaCAoMHglIlBSSXg2NCIgIT0g MHglbHgpIiwKKyAgICAgICAgICAgICAgIHRvdGFsX3BhZ2VzLCBucl9wYWdlcyk7CisgICAgICAg IGdvdG8gZXJyb3Jfb3V0OworICAgIH0KKworICAgIGlmICggeGNfdmVyc2lvbih4Y2gsIFhFTlZF Ul9jYXBhYmlsaXRpZXMsICZjYXBzKSAhPSAwICkKKyAgICB7CisgICAgICAgIERPTVBSSU5URigi Q291bGQgbm90IGdldCBYZW4gY2FwYWJpbGl0aWVzIik7CisgICAgICAgIGdvdG8gZXJyb3Jfb3V0 OworICAgIH0KKworICAgIGRvbS0+cDJtX3NpemUgPSBwMm1fc2l6ZTsKKyAgICBkb20tPnAybV9o b3N0ID0geGNfZG9tX21hbGxvYyhkb20sIHNpemVvZih4ZW5fcGZuX3QpICoKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tLT5wMm1fc2l6ZSk7CisgICAgaWYgKCBkb20t PnAybV9ob3N0ID09IE5VTEwgKQorICAgIHsKKyAgICAgICAgRE9NUFJJTlRGKCJDb3VsZCBub3Qg YWxsb2NhdGUgcDJtIik7CisgICAgICAgIGdvdG8gZXJyb3Jfb3V0OworICAgIH0KKworICAgIGZv ciAoIGkgPSAwOyBpIDwgcDJtX3NpemU7IGkrKyApCisgICAgICAgIGRvbS0+cDJtX2hvc3RbaV0g PSAoKHhlbl9wZm5fdCktMSk7CisgICAgZm9yICggdm1lbWlkID0gMDsgdm1lbWlkIDwgbnJfdm1l bXJhbmdlczsgdm1lbWlkKysgKQorICAgIHsKKyAgICAgICAgdWludDY0X3QgcGZuOworCisgICAg ICAgIGZvciAoIHBmbiA9IHZtZW1yYW5nZXNbdm1lbWlkXS5zdGFydCA+PiBQQUdFX1NISUZUOwor ICAgICAgICAgICAgICBwZm4gPCB2bWVtcmFuZ2VzW3ZtZW1pZF0uZW5kID4+IFBBR0VfU0hJRlQ7 CisgICAgICAgICAgICAgIHBmbisrICkKKyAgICAgICAgICAgIGRvbS0+cDJtX2hvc3RbcGZuXSA9 IHBmbjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRyeSB0byBjbGFpbSBwYWdlcyBmb3IgZWFy bHkgd2FybmluZyBvZiBpbnN1ZmZpY2llbnQgbWVtb3J5IGF2YWlsYWJsZS4KKyAgICAgKiBUaGlz IHNob3VsZCBnbyBiZWZvcmUgeGNfZG9tYWluX3NldF9wb2RfdGFyZ2V0LCBiZWN1YXNlIHRoYXQg ZnVuY3Rpb24KKyAgICAgKiBhY3R1YWxseSBhbGxvY2F0ZXMgbWVtb3J5IGZvciB0aGUgZ3Vlc3Qu IENsYWltaW5nIGFmdGVyIG1lbW9yeSBoYXMgYmVlbgorICAgICAqIGFsbG9jYXRlZCBpcyBwb2lu dGxlc3MuCisgICAgICovCisgICAgaWYgKCBjbGFpbV9lbmFibGVkICkgeworICAgICAgICByYyA9 IHhjX2RvbWFpbl9jbGFpbV9wYWdlcyh4Y2gsIGRvbWlkLCB0YXJnZXRfcGFnZXMgLSBWR0FfSE9M RV9TSVpFKTsKKyAgICAgICAgaWYgKCByYyAhPSAwICkKKyAgICAgICAgeworICAgICAgICAgICAg RE9NUFJJTlRGKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBIVk0gZ3Vlc3QgYXMgd2Ug Y2Fubm90IGNsYWltIG1lbW9yeSEiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3Jfb3V0OworICAg ICAgICB9CisgICAgfQorCisgICAgaWYgKCBtZW1mbGFncyAmIFhFTk1FTUZfcG9wdWxhdGVfb25f ZGVtYW5kICkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAqIFN1YnRyYWN0IFZHQV9IT0xF X1NJWkUgZnJvbSB0YXJnZXRfcGFnZXMgZm9yIHRoZSBWR0EKKyAgICAgICAgICogImhvbGUiLiAg WGVuIHdpbGwgYWRqdXN0IHRoZSBQb0QgY2FjaGUgc2l6ZSBzbyB0aGF0IGRvbWFpbgorICAgICAg ICAgKiB0b3RfcGFnZXMgd2lsbCBiZSB0YXJnZXRfcGFnZXMgLSBWR0FfSE9MRV9TSVpFIGFmdGVy CisgICAgICAgICAqIHRoaXMgY2FsbC4KKyAgICAgICAgICovCisgICAgICAgIHJjID0geGNfZG9t YWluX3NldF9wb2RfdGFyZ2V0KHhjaCwgZG9taWQsIHRhcmdldF9wYWdlcyAtIFZHQV9IT0xFX1NJ WkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5V TEwpOworICAgICAgICBpZiAoIHJjICE9IDAgKQorICAgICAgICB7CisgICAgICAgICAgICBET01Q UklOVEYoIkNvdWxkIG5vdCBzZXQgUG9EIHRhcmdldCBmb3IgSFZNIGd1ZXN0LlxuIik7CisgICAg ICAgICAgICBnb3RvIGVycm9yX291dDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAg ICogQWxsb2NhdGUgbWVtb3J5IGZvciBIVk0gZ3Vlc3QsIHNraXBwaW5nIFZHQSBob2xlIDB4QTAw MDAtMHhDMDAwMC4KKyAgICAgKgorICAgICAqIFdlIGF0dGVtcHQgdG8gYWxsb2NhdGUgMUdCIHBh Z2VzIGlmIHBvc3NpYmxlLiBJdCBmYWxscyBiYWNrIG9uIDJNQgorICAgICAqIHBhZ2VzIGlmIDFH QiBhbGxvY2F0aW9uIGZhaWxzLiA0S0IgcGFnZXMgd2lsbCBiZSB1c2VkIGV2ZW50dWFsbHkgaWYK KyAgICAgKiBib3RoIGZhaWwuCisgICAgICogCisgICAgICogVW5kZXIgMk1CIG1vZGUsIHdlIGFs bG9jYXRlIHBhZ2VzIGluIGJhdGNoZXMgb2Ygbm8gbW9yZSB0aGFuIDhNQiB0byAKKyAgICAgKiBl bnN1cmUgdGhhdCB3ZSBjYW4gYmUgcHJlZW1wdGVkIGFuZCBoZW5jZSBkb20wIHJlbWFpbnMgcmVz cG9uc2l2ZS4KKyAgICAgKi8KKyAgICByYyA9IHhjX2RvbWFpbl9wb3B1bGF0ZV9waHlzbWFwX2V4 YWN0KAorICAgICAgICB4Y2gsIGRvbWlkLCAweGEwLCAwLCBtZW1mbGFncywgJmRvbS0+cDJtX2hv c3RbMHgwMF0pOworCisgICAgc3RhdF9ub3JtYWxfcGFnZXMgPSAwOworICAgIGZvciAoIHZtZW1p ZCA9IDA7IHZtZW1pZCA8IG5yX3ZtZW1yYW5nZXM7IHZtZW1pZCsrICkKKyAgICB7CisgICAgICAg IHVuc2lnbmVkIGludCBuZXdfbWVtZmxhZ3MgPSBtZW1mbGFnczsKKyAgICAgICAgdWludDY0X3Qg ZW5kX3BhZ2VzOworICAgICAgICB1bnNpZ25lZCBpbnQgdm5vZGUgPSB2bWVtcmFuZ2VzW3ZtZW1p ZF0ubmlkOworICAgICAgICB1bnNpZ25lZCBpbnQgcG5vZGUgPSB2bm9kZV90b19wbm9kZVt2bm9k ZV07CisKKyAgICAgICAgaWYgKCBwbm9kZSAhPSBYQ19OVU1BX05PX05PREUgKQorICAgICAgICAg ICAgbmV3X21lbWZsYWdzIHw9IFhFTk1FTUZfZXhhY3Rfbm9kZShwbm9kZSk7CisKKyAgICAgICAg ZW5kX3BhZ2VzID0gdm1lbXJhbmdlc1t2bWVtaWRdLmVuZCA+PiBQQUdFX1NISUZUOworICAgICAg ICAvKgorICAgICAgICAgKiBDb25zaWRlciB2Z2EgaG9sZSBiZWxvbmdzIHRvIHRoZSB2bWVtcmFu Z2UgdGhhdCBjb3ZlcnMKKyAgICAgICAgICogMHhBMDAwMC0weEMwMDAwLiBOb3RlIHRoYXQgMHgw MDAwMC0weEEwMDAwIGlzIHBvcHVsYXRlZCBqdXN0CisgICAgICAgICAqIGJlZm9yZSB0aGlzIGxv b3AuCisgICAgICAgICAqLworICAgICAgICBpZiAoIHZtZW1yYW5nZXNbdm1lbWlkXS5zdGFydCA9 PSAwICkKKyAgICAgICAgeworICAgICAgICAgICAgY3VyX3BhZ2VzID0gMHhjMDsKKyAgICAgICAg ICAgIHN0YXRfbm9ybWFsX3BhZ2VzICs9IDB4YzA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor ICAgICAgICAgICAgY3VyX3BhZ2VzID0gdm1lbXJhbmdlc1t2bWVtaWRdLnN0YXJ0ID4+IFBBR0Vf U0hJRlQ7CisKKyAgICAgICAgd2hpbGUgKCAocmMgPT0gMCkgJiYgKGVuZF9wYWdlcyA+IGN1cl9w YWdlcykgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBDbGlwIGNvdW50IHRvIG1heGltdW0g MUdCIGV4dGVudC4gKi8KKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQgPSBlbmRfcGFn ZXMgLSBjdXJfcGFnZXM7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1heF9wYWdlcyA9IFNV UEVSUEFHRV8xR0JfTlJfUEZOUzsKKworICAgICAgICAgICAgaWYgKCBjb3VudCA+IG1heF9wYWdl cyApCisgICAgICAgICAgICAgICAgY291bnQgPSBtYXhfcGFnZXM7CisKKyAgICAgICAgICAgIGN1 cl9wZm4gPSBkb20tPnAybV9ob3N0W2N1cl9wYWdlc107CisKKyAgICAgICAgICAgIC8qIFRha2Ug Y2FyZSB0aGUgY29ybmVyIGNhc2VzIG9mIHN1cGVyIHBhZ2UgdGFpbHMgKi8KKyAgICAgICAgICAg IGlmICggKChjdXJfcGZuICYgKFNVUEVSUEFHRV8xR0JfTlJfUEZOUy0xKSkgIT0gMCkgJiYKKyAg ICAgICAgICAgICAgICAgKGNvdW50ID4gKC1jdXJfcGZuICYgKFNVUEVSUEFHRV8xR0JfTlJfUEZO Uy0xKSkpICkKKyAgICAgICAgICAgICAgICBjb3VudCA9IC1jdXJfcGZuICYgKFNVUEVSUEFHRV8x R0JfTlJfUEZOUy0xKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCAoKGNvdW50ICYgKFNVUEVSUEFH RV8xR0JfTlJfUEZOUy0xKSkgIT0gMCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAoY291bnQg PiBTVVBFUlBBR0VfMUdCX05SX1BGTlMpICkKKyAgICAgICAgICAgICAgICBjb3VudCAmPSB+KFNV UEVSUEFHRV8xR0JfTlJfUEZOUyAtIDEpOworCisgICAgICAgICAgICAvKiBBdHRlbXAgdG8gYWxs b2NhdGUgMUdCIHN1cGVyIHBhZ2UuIEJlY2F1c2UgaW4gZWFjaCBwYXNzCisgICAgICAgICAgICAg KiB3ZSBvbmx5IGFsbG9jYXRlIGF0IG1vc3QgMUdCLCB3ZSBkb24ndCBoYXZlIHRvIGNsaXAKKyAg ICAgICAgICAgICAqIHN1cGVyIHBhZ2UgYm91bmRhcmllcy4KKyAgICAgICAgICAgICAqLworICAg ICAgICAgICAgaWYgKCAoKGNvdW50IHwgY3VyX3BmbikgJiAoU1VQRVJQQUdFXzFHQl9OUl9QRk5T IC0gMSkpID09IDAgJiYKKyAgICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlcmUgZXhpc3Rz IE1NSU8gaG9sZSBpbiB0aGUgMUdCIG1lbW9yeQorICAgICAgICAgICAgICAgICAgKiByYW5nZSAq LworICAgICAgICAgICAgICAgICAhY2hlY2tfbW1pb19ob2xlKGN1cl9wZm4gPDwgUEFHRV9TSElG VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVBFUlBBR0VfMUdCX05SX1BG TlMgPDwgUEFHRV9TSElGVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb20t Pm1taW9fc3RhcnQsIGRvbS0+bW1pb19zaXplKSApCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgbG9uZyBkb25lOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnJfZXh0ZW50 cyA9IGNvdW50ID4+IFNVUEVSUEFHRV8xR0JfU0hJRlQ7CisgICAgICAgICAgICAgICAgeGVuX3Bm bl90IHNwX2V4dGVudHNbbnJfZXh0ZW50c107CisKKyAgICAgICAgICAgICAgICBmb3IgKCBpID0g MDsgaSA8IG5yX2V4dGVudHM7IGkrKyApCisgICAgICAgICAgICAgICAgICAgIHNwX2V4dGVudHNb aV0gPQorICAgICAgICAgICAgICAgICAgICAgICAgZG9tLT5wMm1faG9zdFtjdXJfcGFnZXMrKGk8 PFNVUEVSUEFHRV8xR0JfU0hJRlQpXTsKKworICAgICAgICAgICAgICAgIGRvbmUgPSB4Y19kb21h aW5fcG9wdWxhdGVfcGh5c21hcCh4Y2gsIGRvbWlkLCBucl9leHRlbnRzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVBFUlBBR0VfMUdCX1NISUZU LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdf bWVtZmxhZ3MsIHNwX2V4dGVudHMpOworCisgICAgICAgICAgICAgICAgaWYgKCBkb25lID4gMCAp CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0XzFnYl9wYWdlcyAr PSBkb25lOworICAgICAgICAgICAgICAgICAgICBkb25lIDw8PSBTVVBFUlBBR0VfMUdCX1NISUZU OworICAgICAgICAgICAgICAgICAgICBjdXJfcGFnZXMgKz0gZG9uZTsKKyAgICAgICAgICAgICAg ICAgICAgY291bnQgLT0gZG9uZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK KyAgICAgICAgICAgIGlmICggY291bnQgIT0gMCApCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgLyogQ2xpcCBjb3VudCB0byBtYXhpbXVtIDhNQiBleHRlbnQuICovCisgICAgICAgICAg ICAgICAgbWF4X3BhZ2VzID0gU1VQRVJQQUdFXzJNQl9OUl9QRk5TICogNDsKKyAgICAgICAgICAg ICAgICBpZiAoIGNvdW50ID4gbWF4X3BhZ2VzICkKKyAgICAgICAgICAgICAgICAgICAgY291bnQg PSBtYXhfcGFnZXM7CisKKyAgICAgICAgICAgICAgICAvKiBDbGlwIHBhcnRpYWwgc3VwZXJwYWdl IGV4dGVudHMgdG8gc3VwZXJwYWdlCisgICAgICAgICAgICAgICAgICogYm91bmRhcmllcy4gKi8K KyAgICAgICAgICAgICAgICBpZiAoICgoY3VyX3BmbiAmIChTVVBFUlBBR0VfMk1CX05SX1BGTlMt MSkpICE9IDApICYmCisgICAgICAgICAgICAgICAgICAgICAoY291bnQgPiAoLWN1cl9wZm4gJiAo U1VQRVJQQUdFXzJNQl9OUl9QRk5TLTEpKSkgKQorICAgICAgICAgICAgICAgICAgICBjb3VudCA9 IC1jdXJfcGZuICYgKFNVUEVSUEFHRV8yTUJfTlJfUEZOUy0xKTsKKyAgICAgICAgICAgICAgICBl bHNlIGlmICggKChjb3VudCAmIChTVVBFUlBBR0VfMk1CX05SX1BGTlMtMSkpICE9IDApICYmCisg ICAgICAgICAgICAgICAgICAgICAgICAgIChjb3VudCA+IFNVUEVSUEFHRV8yTUJfTlJfUEZOUykg KQorICAgICAgICAgICAgICAgICAgICBjb3VudCAmPSB+KFNVUEVSUEFHRV8yTUJfTlJfUEZOUyAt IDEpOyAvKiBjbGlwIG5vbi1zLnAuIHRhaWwgKi8KKworICAgICAgICAgICAgICAgIC8qIEF0dGVt cHQgdG8gYWxsb2NhdGUgc3VwZXJwYWdlIGV4dGVudHMuICovCisgICAgICAgICAgICAgICAgaWYg KCAoKGNvdW50IHwgY3VyX3BmbikgJiAoU1VQRVJQQUdFXzJNQl9OUl9QRk5TIC0gMSkpID09IDAg KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbG9uZyBkb25lOworICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5yX2V4dGVudHMgPSBjb3VudCA+PiBTVVBF UlBBR0VfMk1CX1NISUZUOworICAgICAgICAgICAgICAgICAgICB4ZW5fcGZuX3Qgc3BfZXh0ZW50 c1tucl9leHRlbnRzXTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IG5y X2V4dGVudHM7IGkrKyApCisgICAgICAgICAgICAgICAgICAgICAgICBzcF9leHRlbnRzW2ldID0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb20tPnAybV9ob3N0W2N1cl9wYWdlcysoaTw8 U1VQRVJQQUdFXzJNQl9TSElGVCldOworCisgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB4Y19k b21haW5fcG9wdWxhdGVfcGh5c21hcCh4Y2gsIGRvbWlkLCBucl9leHRlbnRzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VQRVJQQUdFXzJN Ql9TSElGVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5ld19tZW1mbGFncywgc3BfZXh0ZW50cyk7CisKKyAgICAgICAgICAgICAgICAgICAg aWYgKCBkb25lID4gMCApCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHN0YXRfMm1iX3BhZ2VzICs9IGRvbmU7CisgICAgICAgICAgICAgICAgICAgICAgICBk b25lIDw8PSBTVVBFUlBBR0VfMk1CX1NISUZUOworICAgICAgICAgICAgICAgICAgICAgICAgY3Vy X3BhZ2VzICs9IGRvbmU7CisgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCAtPSBkb25lOwor ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor CisgICAgICAgICAgICAvKiBGYWxsIGJhY2sgdG8gNGtCIGV4dGVudHMuICovCisgICAgICAgICAg ICBpZiAoIGNvdW50ICE9IDAgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJjID0g eGNfZG9tYWluX3BvcHVsYXRlX3BoeXNtYXBfZXhhY3QoCisgICAgICAgICAgICAgICAgICAgIHhj aCwgZG9taWQsIGNvdW50LCAwLCBuZXdfbWVtZmxhZ3MsICZkb20tPnAybV9ob3N0W2N1cl9wYWdl c10pOworICAgICAgICAgICAgICAgIGN1cl9wYWdlcyArPSBjb3VudDsKKyAgICAgICAgICAgICAg ICBzdGF0X25vcm1hbF9wYWdlcyArPSBjb3VudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor CisgICAgICAgIGlmICggcmMgIT0gMCApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAg ICBpZiAoIHJjICE9IDAgKQorICAgIHsKKyAgICAgICAgRE9NUFJJTlRGKCJDb3VsZCBub3QgYWxs b2NhdGUgbWVtb3J5IGZvciBIVk0gZ3Vlc3QuIik7CisgICAgICAgIGdvdG8gZXJyb3Jfb3V0Owor ICAgIH0KKworICAgIERQUklOVEYoIlBIWVNJQ0FMIE1FTU9SWSBBTExPQ0FUSU9OOlxuIik7Cisg ICAgRFBSSU5URigiICA0S0IgUEFHRVM6IDB4JTAxNmx4XG4iLCBzdGF0X25vcm1hbF9wYWdlcyk7 CisgICAgRFBSSU5URigiICAyTUIgUEFHRVM6IDB4JTAxNmx4XG4iLCBzdGF0XzJtYl9wYWdlcyk7 CisgICAgRFBSSU5URigiICAxR0IgUEFHRVM6IDB4JTAxNmx4XG4iLCBzdGF0XzFnYl9wYWdlcyk7 CisKKyAgICByYyA9IDA7CisgICAgZ290byBvdXQ7CisgZXJyb3Jfb3V0OgorICAgIHJjID0gLTE7 Cisgb3V0OgorCisgICAgLyogZW5zdXJlIG5vIHVuY2xhaW1lZCBwYWdlcyBhcmUgbGVmdCB1bnVz ZWQgKi8KKyAgICB4Y19kb21haW5fY2xhaW1fcGFnZXMoeGNoLCBkb21pZCwgMCAvKiBjYW5jZWxz IHRoZSBjbGFpbSAqLyk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSAqLwogCiBzdGF0aWMgaW50IGJvb3RlYXJseShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCkBA IC0xMDUwLDYgKzE2MjMsMTIgQEAgc3RhdGljIGludCBib290bGF0ZV9wdihzdHJ1Y3QgeGNfZG9t X2ltYWdlICpkb20pCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgYm9vdGxhdGVfaHZt KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKK3sKKyAgICBET01QUklOVEYoIiVzOiBkb2luZyBu b3RoaW5nIiwgX19mdW5jX18pOworICAgIHJldHVybiAwOworfQorCiBpbnQgeGNfZG9tX2ZlYXR1 cmVfdHJhbnNsYXRlZChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiB7CiAgICAgLyogR3Vlc3Rz IHJ1bm5pbmcgaW5zaWRlIEhWTSBjb250YWluZXJzIGFyZSBhbHdheXMgYXV0by10cmFuc2xhdGVk LiAqLwpAQCAtMTA5MywxMCArMTY3MiwyNyBAQCBzdGF0aWMgc3RydWN0IHhjX2RvbV9hcmNoIHhj X2RvbV82NCA9IHsKICAgICAuYm9vdGxhdGUgPSBib290bGF0ZV9wdiwKIH07CiAKK3N0YXRpYyBz dHJ1Y3QgeGNfZG9tX2FyY2ggeGNfaHZtXzMyID0geworICAgIC5ndWVzdF90eXBlID0gImh2bS0z LjAteDg2XzMyIiwKKyAgICAubmF0aXZlX3Byb3RvY29sID0gWEVOX0lPX1BST1RPX0FCSV9YODZf MzIsCisgICAgLnBhZ2Vfc2hpZnQgPSBQQUdFX1NISUZUX1g4NiwKKyAgICAuc2l6ZW9mX3BmbiA9 IDQsCisgICAgLmFsbG9jX21hZ2ljX3BhZ2VzID0gYWxsb2NfbWFnaWNfcGFnZXNfaHZtLAorICAg IC5jb3VudF9wZ3RhYmxlcyA9IE5VTEwsCisgICAgLnNldHVwX3BndGFibGVzID0gTlVMTCwKKyAg ICAuc3RhcnRfaW5mbyA9IE5VTEwsCisgICAgLnNoYXJlZF9pbmZvID0gTlVMTCwKKyAgICAudmNw dSA9IHZjcHVfaHZtLAorICAgIC5tZW1pbml0ID0gbWVtaW5pdF9odm0sCisgICAgLmJvb3RlYXJs eSA9IGJvb3RlYXJseSwKKyAgICAuYm9vdGxhdGUgPSBib290bGF0ZV9odm0sCit9OworCiBzdGF0 aWMgdm9pZCBfX2luaXQgcmVnaXN0ZXJfYXJjaF9ob29rcyh2b2lkKQogewogICAgIHhjX2RvbV9y ZWdpc3Rlcl9hcmNoX2hvb2tzKCZ4Y19kb21fMzJfcGFlKTsKICAgICB4Y19kb21fcmVnaXN0ZXJf YXJjaF9ob29rcygmeGNfZG9tXzY0KTsKKyAgICB4Y19kb21fcmVnaXN0ZXJfYXJjaF9ob29rcygm eGNfaHZtXzMyKTsKIH0KIAogLyoKLS0gCjEuOS41IChBcHBsZSBHaXQtNTAuMykKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=