From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: - Revert FSF GDB gdbserver tracepoints as incomplete now. Date: Thu, 23 Jul 2026 18:29:22 GMT Message-ID: <178483136250.1.4524496840832070984.rpms-gdb-39d52ac1d6cf@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 39d52ac1d6cf7446f797c9856a426db91b9b849b QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogMzlkNTJhYzFkNmNmNzQ0NmY3OTdjOTg1NmE0MjZkYjkx YjliODQ5YgpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3JhcHJvamVjdC5v cmc+CkRhdGUgICA6IDIwMTAtMDEtMjFUMTk6NTM6NDErMDA6MDAKU3RhdHMgIDogKzI2ODEvLTEg aW4gMiBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMv Z2RiL2MvMzlkNTJhYzFkNmNmNzQ0NmY3OTdjOTg1NmE0MjZkYjkxYjliODQ5Yj9icmFuY2g9Zml4 LWR1cC1wYXRjaAoKTG9nOgotIFJldmVydCBGU0YgR0RCIGdkYnNlcnZlciB0cmFjZXBvaW50cyBh cyBpbmNvbXBsZXRlIG5vdy4KCi0tLQpkaWZmIC0tZ2l0IGEvZ2RiLWdkYnNlcnZlci10cmFjZXBv aW50LXJldmVydC5wYXRjaCBiL2dkYi1nZGJzZXJ2ZXItdHJhY2Vwb2ludC1yZXZlcnQucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU5NjI0ZAotLS0gL2Rldi9udWxs CisrKyBiL2dkYi1nZGJzZXJ2ZXItdHJhY2Vwb2ludC1yZXZlcnQucGF0Y2gKQEAgLTAsMCArMSwy NjczIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEwLTAxL21zZzAwMTgz Lmh0bWwKKworUkVWRVJUCisKKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvaTM4Ny1mcC5jCTIwMTAtMDEt MjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL2kzODctZnAu YwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAorQEAgLTczLDcgKzczLDcgQEAg c3RydWN0IGkzODdfZnhzYXZlIHsKKyB9OworIAorIHZvaWQKKy1pMzg3X2NhY2hlX3RvX2ZzYXZl IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCisraTM4N19jYWNoZV90b19m c2F2ZSAodm9pZCAqYnVmKQorIHsKKyAgIHN0cnVjdCBpMzg3X2ZzYXZlICpmcCA9IChzdHJ1Y3Qg aTM4N19mc2F2ZSAqKSBidWY7CisgICBpbnQgaTsKK0BAIC04MSwzOSArODEsMzggQEAgaTM4N19j YWNoZV90b19mc2F2ZSAoc3RydWN0IHJlZ2NhY2hlICpyZQorICAgdW5zaWduZWQgbG9uZyB2YWws IHZhbDI7CisgCisgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorLSAgICBjb2xsZWN0X3JlZ2lz dGVyIChyZWdjYWNoZSwgaSArIHN0MF9yZWdudW0sCistCQkgICAgICAoKGNoYXIgKikgJmZwLT5z dF9zcGFjZVswXSkgKyBpICogMTApOworKyAgICBjb2xsZWN0X3JlZ2lzdGVyIChpICsgc3QwX3Jl Z251bSwgKChjaGFyICopICZmcC0+c3Rfc3BhY2VbMF0pICsgaSAqIDEwKTsKKyAKKy0gIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmaW9mZiIsICZmcC0+ZmlvZmYpOworLSAg Y29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZvb2ZmIiwgJmZwLT5mb29mZik7 CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJmaW9mZiIsICZmcC0+ZmlvZmYpOworKyAg Y29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZm9vZmYiLCAmZnAtPmZvb2ZmKTsKKyAgIAorICAg LyogVGhpcyBvbmUncyAxMSBiaXRzLi4uICovCistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUg KHJlZ2NhY2hlLCAiZm9wIiwgJnZhbDIpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgi Zm9wIiwgJnZhbDIpOworICAgZnAtPmZvcCA9ICh2YWwyICYgMHg3RkYpIHwgKGZwLT5mb3AgJiAw eEY4MDApOworIAorICAgLyogU29tZSByZWdpc3RlcnMgYXJlIDE2LWJpdC4gICovCistICBjb2xs ZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZmN0cmwiLCAmdmFsKTsKKysgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAoImZjdHJsIiwgJnZhbCk7CisgICBmcC0+ZmN0cmwgPSB2YWw7 CisgCistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZnN0YXQiLCAmdmFs KTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoImZzdGF0IiwgJnZhbCk7CisgICB2YWwg Jj0gMHhGRkZGOworICAgZnAtPmZzdGF0ID0gdmFsOworIAorLSAgY29sbGVjdF9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgImZ0YWciLCAmdmFsKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlf bmFtZSAoImZ0YWciLCAmdmFsKTsKKyAgIHZhbCAmPSAweEZGRkY7CisgICBmcC0+ZnRhZyA9IHZh bDsKKyAKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmaXNlZyIsICZ2 YWwpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZmlzZWciLCAmdmFsKTsKKyAgIHZh bCAmPSAweEZGRkY7CisgICBmcC0+ZmlzZWcgPSB2YWw7CisgCistICBjb2xsZWN0X3JlZ2lzdGVy X2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9zZWciLCAmdmFsKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJf YnlfbmFtZSAoImZvc2VnIiwgJnZhbCk7CisgICB2YWwgJj0gMHhGRkZGOworICAgZnAtPmZvc2Vn ID0gdmFsOworIH0KKyAKKyB2b2lkCistaTM4N19mc2F2ZV90b19jYWNoZSAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQorK2kzODdfZnNhdmVfdG9fY2FjaGUgKGNv bnN0IHZvaWQgKmJ1ZikKKyB7CisgICBzdHJ1Y3QgaTM4N19mc2F2ZSAqZnAgPSAoc3RydWN0IGkz ODdfZnNhdmUgKikgYnVmOworICAgaW50IGk7CitAQCAtMTIxLDM1ICsxMjAsMzQgQEAgaTM4N19m c2F2ZV90b19jYWNoZSAoc3RydWN0IHJlZ2NhY2hlICpyZQorICAgdW5zaWduZWQgbG9uZyB2YWw7 CisgCisgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorLSAgICBzdXBwbHlfcmVnaXN0ZXIgKHJl Z2NhY2hlLCBpICsgc3QwX3JlZ251bSwKKy0JCSAgICAgKChjaGFyICopICZmcC0+c3Rfc3BhY2Vb MF0pICsgaSAqIDEwKTsKKysgICAgc3VwcGx5X3JlZ2lzdGVyIChpICsgc3QwX3JlZ251bSwgKChj aGFyICopICZmcC0+c3Rfc3BhY2VbMF0pICsgaSAqIDEwKTsKKyAKKy0gIHN1cHBseV9yZWdpc3Rl cl9ieV9uYW1lIChyZWdjYWNoZSwgImZpb2ZmIiwgJmZwLT5maW9mZik7CistICBzdXBwbHlfcmVn aXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb29mZiIsICZmcC0+Zm9vZmYpOworKyAgc3VwcGx5 X3JlZ2lzdGVyX2J5X25hbWUgKCJmaW9mZiIsICZmcC0+ZmlvZmYpOworKyAgc3VwcGx5X3JlZ2lz dGVyX2J5X25hbWUgKCJmb29mZiIsICZmcC0+Zm9vZmYpOworIAorICAgLyogU29tZSByZWdpc3Rl cnMgYXJlIDE2LWJpdC4gICovCisgICB2YWwgPSBmcC0+ZmN0cmwgJiAweEZGRkY7CistICBzdXBw bHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmY3RybCIsICZ2YWwpOworKyAgc3VwcGx5 X3JlZ2lzdGVyX2J5X25hbWUgKCJmY3RybCIsICZ2YWwpOworIAorICAgdmFsID0gZnAtPmZzdGF0 ICYgMHhGRkZGOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZnN0YXQi LCAmdmFsKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiZnN0YXQiLCAmdmFsKTsKKyAK KyAgIHZhbCA9IGZwLT5mdGFnICYgMHhGRkZGOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUg KHJlZ2NhY2hlLCAiZnRhZyIsICZ2YWwpOworKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJm dGFnIiwgJnZhbCk7CisgCisgICB2YWwgPSBmcC0+ZmlzZWcgJiAweEZGRkY7CistICBzdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmaXNlZyIsICZ2YWwpOworKyAgc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKCJmaXNlZyIsICZ2YWwpOworIAorICAgdmFsID0gZnAtPmZvc2VnICYg MHhGRkZGOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9zZWciLCAm dmFsKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiZm9zZWciLCAmdmFsKTsKKyAKKyAg IC8qIGZvcCBoYXMgb25seSAxMSB2YWxpZCBiaXRzLiAgKi8KKyAgIHZhbCA9IChmcC0+Zm9wKSAm IDB4N0ZGOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9wIiwgJnZh bCk7CisrICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoImZvcCIsICZ2YWwpOworIH0KKyAKKyB2 b2lkCistaTM4N19jYWNoZV90b19meHNhdmUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZv aWQgKmJ1ZikKKytpMzg3X2NhY2hlX3RvX2Z4c2F2ZSAodm9pZCAqYnVmKQorIHsKKyAgIHN0cnVj dCBpMzg3X2Z4c2F2ZSAqZnAgPSAoc3RydWN0IGkzODdfZnhzYXZlICopIGJ1ZjsKKyAgIGludCBp OworQEAgLTE1OCwyOSArMTU2LDI3IEBAIGkzODdfY2FjaGVfdG9fZnhzYXZlIChzdHJ1Y3QgcmVn Y2FjaGUgKnIKKyAgIHVuc2lnbmVkIGxvbmcgdmFsLCB2YWwyOworIAorICAgZm9yIChpID0gMDsg aSA8IDg7IGkrKykKKy0gICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGkgKyBzdDBfcmVn bnVtLAorLQkJICAgICAgKChjaGFyICopICZmcC0+c3Rfc3BhY2VbMF0pICsgaSAqIDE2KTsKKysg ICAgY29sbGVjdF9yZWdpc3RlciAoaSArIHN0MF9yZWdudW0sICgoY2hhciAqKSAmZnAtPnN0X3Nw YWNlWzBdKSArIGkgKiAxNik7CisgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3htbV9yZWdpc3RlcnM7 IGkrKykKKy0gICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGkgKyB4bW0wX3JlZ251bSwK Ky0JCSAgICAgICgoY2hhciAqKSAmZnAtPnhtbV9zcGFjZVswXSkgKyBpICogMTYpOworKyAgICBj b2xsZWN0X3JlZ2lzdGVyIChpICsgeG1tMF9yZWdudW0sICgoY2hhciAqKSAmZnAtPnhtbV9zcGFj ZVswXSkgKyBpICogMTYpOworIAorLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNo ZSwgImZpb2ZmIiwgJmZwLT5maW9mZik7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJl Z2NhY2hlLCAiZm9vZmYiLCAmZnAtPmZvb2ZmKTsKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFt ZSAocmVnY2FjaGUsICJteGNzciIsICZmcC0+bXhjc3IpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9i eV9uYW1lICgiZmlvZmYiLCAmZnAtPmZpb2ZmKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFt ZSAoImZvb2ZmIiwgJmZwLT5mb29mZik7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJt eGNzciIsICZmcC0+bXhjc3IpOworIAorICAgLyogVGhpcyBvbmUncyAxMSBiaXRzLi4uICovCist ICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9wIiwgJnZhbDIpOworKyAg Y29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZm9wIiwgJnZhbDIpOworICAgZnAtPmZvcCA9ICh2 YWwyICYgMHg3RkYpIHwgKGZwLT5mb3AgJiAweEY4MDApOworIAorICAgLyogU29tZSByZWdpc3Rl cnMgYXJlIDE2LWJpdC4gICovCistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hl LCAiZmN0cmwiLCAmdmFsKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoImZjdHJsIiwg JnZhbCk7CisgICBmcC0+ZmN0cmwgPSB2YWw7CisgCistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25h bWUgKHJlZ2NhY2hlLCAiZnN0YXQiLCAmdmFsKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFt ZSAoImZzdGF0IiwgJnZhbCk7CisgICBmcC0+ZnN0YXQgPSB2YWw7CisgCisgICAvKiBDb252ZXJ0 IHRvIHRoZSBzaW1wbGlmZWQgdGFnIGZvcm0gc3RvcmVkIGluIGZ4c2F2ZSBkYXRhLiAgKi8KKy0g IGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmdGFnIiwgJnZhbCk7CisrICBj b2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJmdGFnIiwgJnZhbCk7CisgICB2YWwgJj0gMHhGRkZG OworICAgdmFsMiA9IDA7CisgICBmb3IgKGkgPSA3OyBpID49IDA7IGktLSkKK0BAIC0xOTIsMTAg KzE4OCwxMCBAQCBpMzg3X2NhY2hlX3RvX2Z4c2F2ZSAoc3RydWN0IHJlZ2NhY2hlICpyCisgICAg IH0KKyAgIGZwLT5mdGFnID0gdmFsMjsKKyAKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAo cmVnY2FjaGUsICJmaXNlZyIsICZ2YWwpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgi ZmlzZWciLCAmdmFsKTsKKyAgIGZwLT5maXNlZyA9IHZhbDsKKyAKKy0gIGNvbGxlY3RfcmVnaXN0 ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb3NlZyIsICZ2YWwpOworKyAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lICgiZm9zZWciLCAmdmFsKTsKKyAgIGZwLT5mb3NlZyA9IHZhbDsKKyB9CisgCitA QCAtMjQ3LDcgKzI0Myw3IEBAIGkzODdfZnRhZyAoc3RydWN0IGkzODdfZnhzYXZlICpmcCwgaW50 IHIKKyB9CisgCisgdm9pZAorLWkzODdfZnhzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCisraTM4N19meHNhdmVfdG9fY2FjaGUgKGNvbnN0 IHZvaWQgKmJ1ZikKKyB7CisgICBzdHJ1Y3QgaTM4N19meHNhdmUgKmZwID0gKHN0cnVjdCBpMzg3 X2Z4c2F2ZSAqKSBidWY7CisgICBpbnQgaSwgdG9wOworQEAgLTI1NiwyMiArMjUyLDIwIEBAIGkz ODdfZnhzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnIKKyAgIHVuc2lnbmVkIGxvbmcg dmFsOworIAorICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykKKy0gICAgc3VwcGx5X3JlZ2lzdGVy IChyZWdjYWNoZSwgaSArIHN0MF9yZWdudW0sCistCQkgICAgICgoY2hhciAqKSAmZnAtPnN0X3Nw YWNlWzBdKSArIGkgKiAxNik7CisrICAgIHN1cHBseV9yZWdpc3RlciAoaSArIHN0MF9yZWdudW0s ICgoY2hhciAqKSAmZnAtPnN0X3NwYWNlWzBdKSArIGkgKiAxNik7CisgICBmb3IgKGkgPSAwOyBp IDwgbnVtX3htbV9yZWdpc3RlcnM7IGkrKykKKy0gICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNo ZSwgaSArIHhtbTBfcmVnbnVtLAorLQkJICAgICAoKGNoYXIgKikgJmZwLT54bW1fc3BhY2VbMF0p ICsgaSAqIDE2KTsKKysgICAgc3VwcGx5X3JlZ2lzdGVyIChpICsgeG1tMF9yZWdudW0sICgoY2hh ciAqKSAmZnAtPnhtbV9zcGFjZVswXSkgKyBpICogMTYpOworIAorLSAgc3VwcGx5X3JlZ2lzdGVy X2J5X25hbWUgKHJlZ2NhY2hlLCAiZmlvZmYiLCAmZnAtPmZpb2ZmKTsKKy0gIHN1cHBseV9yZWdp c3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZvb2ZmIiwgJmZwLT5mb29mZik7CistICBzdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJteGNzciIsICZmcC0+bXhjc3IpOworKyAgc3Vw cGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmaW9mZiIsICZmcC0+ZmlvZmYpOworKyAgc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKCJmb29mZiIsICZmcC0+Zm9vZmYpOworKyAgc3VwcGx5X3JlZ2lzdGVy X2J5X25hbWUgKCJteGNzciIsICZmcC0+bXhjc3IpOworIAorICAgLyogU29tZSByZWdpc3RlcnMg YXJlIDE2LWJpdC4gICovCisgICB2YWwgPSBmcC0+ZmN0cmwgJiAweEZGRkY7CistICBzdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmY3RybCIsICZ2YWwpOworKyAgc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKCJmY3RybCIsICZ2YWwpOworIAorICAgdmFsID0gZnAtPmZzdGF0ICYg MHhGRkZGOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZnN0YXQiLCAm dmFsKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiZnN0YXQiLCAmdmFsKTsKKyAKKyAg IC8qIEdlbmVyYXRlIHRoZSBmb3JtIG9mIGZ0YWcgZGF0YSB0aGF0IEdEQiBleHBlY3RzLiAgKi8K KyAgIHRvcCA9IChmcC0+ZnN0YXQgPj4gMTEpICYgMHg3OworQEAgLTI4NSwxNCArMjc5LDE0IEBA IGkzODdfZnhzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnIKKyAJdGFnID0gMzsKKyAg ICAgICB2YWwgfD0gdGFnIDw8ICgyICogaSk7CisgICAgIH0KKy0gIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgImZ0YWciLCAmdmFsKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9u YW1lICgiZnRhZyIsICZ2YWwpOworIAorICAgdmFsID0gZnAtPmZpc2VnICYgMHhGRkZGOworLSAg c3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZmlzZWciLCAmdmFsKTsKKysgIHN1 cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiZmlzZWciLCAmdmFsKTsKKyAKKyAgIHZhbCA9IGZwLT5m b3NlZyAmIDB4RkZGRjsKKy0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZv c2VnIiwgJnZhbCk7CisrICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoImZvc2VnIiwgJnZhbCk7 CisgCisgICB2YWwgPSAoZnAtPmZvcCkgJiAweDdGRjsKKy0gIHN1cHBseV9yZWdpc3Rlcl9ieV9u YW1lIChyZWdjYWNoZSwgImZvcCIsICZ2YWwpOworKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUg KCJmb3AiLCAmdmFsKTsKKyB9CistLS0gLi9nZGIvZ2Ric2VydmVyL2kzODctZnAuaAkyMDEwLTAx LTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL2dkYnNlcnZlci9pMzg3LWZw LmgJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMCwxMSArMjAsMTEg QEAKKyAjaWZuZGVmIEkzODdfRlBfSAorICNkZWZpbmUgSTM4N19GUF9ICisgCistdm9pZCBpMzg3 X2NhY2hlX3RvX2ZzYXZlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpOwor LXZvaWQgaTM4N19mc2F2ZV90b19jYWNoZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29u c3Qgdm9pZCAqYnVmKTsKKyt2b2lkIGkzODdfY2FjaGVfdG9fZnNhdmUgKHZvaWQgKmJ1Zik7Cisr dm9pZCBpMzg3X2ZzYXZlX3RvX2NhY2hlIChjb25zdCB2b2lkICpidWYpOworIAorLXZvaWQgaTM4 N19jYWNoZV90b19meHNhdmUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1Zik7 Cistdm9pZCBpMzg3X2Z4c2F2ZV90b19jYWNoZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwg Y29uc3Qgdm9pZCAqYnVmKTsKKyt2b2lkIGkzODdfY2FjaGVfdG9fZnhzYXZlICh2b2lkICpidWYp OworK3ZvaWQgaTM4N19meHNhdmVfdG9fY2FjaGUgKGNvbnN0IHZvaWQgKmJ1Zik7CisgCisgZXh0 ZXJuIGludCBudW1feG1tX3JlZ2lzdGVyczsKKyAKKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvbGludXgt YXJtLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIv Z2Ric2VydmVyL2xpbnV4LWFybS1sb3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCAr MDEwMAorQEAgLTgxLDE3ICs4MSwxNyBAQCBhcm1fY2Fubm90X2ZldGNoX3JlZ2lzdGVyIChpbnQg cmVnbm8pCisgfQorIAorIHN0YXRpYyB2b2lkCistYXJtX2ZpbGxfZ3JlZ3NldCAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQorK2FybV9maWxsX2dyZWdzZXQgKHZvaWQgKmJ1 ZikKKyB7CisgICBpbnQgaTsKKyAKKyAgIGZvciAoaSA9IDA7IGkgPCBhcm1fbnVtX3JlZ3M7IGkr KykKKyAgICAgaWYgKGFybV9yZWdtYXBbaV0gIT0gLTEpCistICAgICAgY29sbGVjdF9yZWdpc3Rl ciAocmVnY2FjaGUsIGksICgoY2hhciAqKSBidWYpICsgYXJtX3JlZ21hcFtpXSk7CisrICAgICAg Y29sbGVjdF9yZWdpc3RlciAoaSwgKChjaGFyICopIGJ1ZikgKyBhcm1fcmVnbWFwW2ldKTsKKyB9 CisgCisgc3RhdGljIHZvaWQKKy1hcm1fc3RvcmVfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQorK2FybV9zdG9yZV9ncmVnc2V0IChjb25zdCB2b2lk ICpidWYpCisgeworICAgaW50IGk7CisgICBjaGFyIHplcm9idWZbOF07CitAQCAtOTksMTMgKzk5 LDEzIEBAIGFybV9zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2MKKyAgIG1lbXNl dCAoemVyb2J1ZiwgMCwgOCk7CisgICBmb3IgKGkgPSAwOyBpIDwgYXJtX251bV9yZWdzOyBpKysp CisgICAgIGlmIChhcm1fcmVnbWFwW2ldICE9IC0xKQorLSAgICAgIHN1cHBseV9yZWdpc3RlciAo cmVnY2FjaGUsIGksICgoY2hhciAqKSBidWYpICsgYXJtX3JlZ21hcFtpXSk7CisrICAgICAgc3Vw cGx5X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIGFybV9yZWdtYXBbaV0pOworICAgICBl bHNlCistICAgICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgemVyb2J1Zik7CisrICAg ICAgc3VwcGx5X3JlZ2lzdGVyIChpLCB6ZXJvYnVmKTsKKyB9CisgCisgc3RhdGljIHZvaWQKKy1h cm1fZmlsbF93bW14cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYp CisrYXJtX2ZpbGxfd21teHJlZ3NldCAodm9pZCAqYnVmKQorIHsKKyAgIGludCBpOworIAorQEAg LTExMywxNiArMTEzLDE1IEBAIGFybV9maWxsX3dtbXhyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAq cmUKKyAgICAgcmV0dXJuOworIAorICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCistICAgIGNv bGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBhcm1fbnVtX3JlZ3MgKyBpLCAoY2hhciAqKSBidWYg KyBpICogOCk7CisrICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGFybV9udW1fcmVncyArIGksIChjaGFy ICopIGJ1ZiArIGkgKiA4KTsKKyAKKyAgIC8qIFdlIG9ubHkgaGF2ZSBhY2Nlc3MgdG8gd2Nzc2Ys IHdjYXNmLCBhbmQgd2NncjAtd2NncjMuICAqLworICAgZm9yIChpID0gMDsgaSA8IDY7IGkrKykK Ky0gICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGFybV9udW1fcmVncyArIGkgKyAxNiwK Ky0JCSAgICAgIChjaGFyICopIGJ1ZiArIDE2ICogOCArIGkgKiA0KTsKKysgICAgY29sbGVjdF9y ZWdpc3RlciAoYXJtX251bV9yZWdzICsgaSArIDE2LCAoY2hhciAqKSBidWYgKyAxNiAqIDggKyBp ICogNCk7CisgfQorIAorIHN0YXRpYyB2b2lkCistYXJtX3N0b3JlX3dtbXhyZWdzZXQgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKKythcm1fc3RvcmVfd21teHJl Z3NldCAoY29uc3Qgdm9pZCAqYnVmKQorIHsKKyAgIGludCBpOworIAorQEAgLTEzMCwxNiArMTI5 LDE1IEBAIGFybV9zdG9yZV93bW14cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnIKKyAgICAgcmV0 dXJuOworIAorICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCistICAgIHN1cHBseV9yZWdpc3Rl ciAocmVnY2FjaGUsIGFybV9udW1fcmVncyArIGksIChjaGFyICopIGJ1ZiArIGkgKiA4KTsKKysg ICAgc3VwcGx5X3JlZ2lzdGVyIChhcm1fbnVtX3JlZ3MgKyBpLCAoY2hhciAqKSBidWYgKyBpICog OCk7CisgCisgICAvKiBXZSBvbmx5IGhhdmUgYWNjZXNzIHRvIHdjc3NmLCB3Y2FzZiwgYW5kIHdj Z3IwLXdjZ3IzLiAgKi8KKyAgIGZvciAoaSA9IDA7IGkgPCA2OyBpKyspCistICAgIHN1cHBseV9y ZWdpc3RlciAocmVnY2FjaGUsIGFybV9udW1fcmVncyArIGkgKyAxNiwKKy0JCSAgICAgKGNoYXIg KikgYnVmICsgMTYgKiA4ICsgaSAqIDQpOworKyAgICBzdXBwbHlfcmVnaXN0ZXIgKGFybV9udW1f cmVncyArIGkgKyAxNiwgKGNoYXIgKikgYnVmICsgMTYgKiA4ICsgaSAqIDQpOworIH0KKyAKKyBz dGF0aWMgdm9pZAorLWFybV9maWxsX3ZmcHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgdm9pZCAqYnVmKQorK2FybV9maWxsX3ZmcHJlZ3NldCAodm9pZCAqYnVmKQorIHsKKyAgIGlu dCBpLCBudW0sIGJhc2U7CisgCitAQCAtMTUzLDEzICsxNTEsMTMgQEAgYXJtX2ZpbGxfdmZwcmVn c2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZworIAorICAgYmFzZSA9IGZpbmRfcmVnbm8gKCJkMCIp OworICAgZm9yIChpID0gMDsgaSA8IG51bTsgaSsrKQorLSAgICBjb2xsZWN0X3JlZ2lzdGVyIChy ZWdjYWNoZSwgYmFzZSArIGksIChjaGFyICopIGJ1ZiArIGkgKiA4KTsKKysgICAgY29sbGVjdF9y ZWdpc3RlciAoYmFzZSArIGksIChjaGFyICopIGJ1ZiArIGkgKiA4KTsKKyAKKy0gIGNvbGxlY3Rf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmcHNjciIsIChjaGFyICopIGJ1ZiArIDMyICog OCk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJmcHNjciIsIChjaGFyICopIGJ1ZiAr IDMyICogOCk7CisgfQorIAorIHN0YXRpYyB2b2lkCistYXJtX3N0b3JlX3ZmcHJlZ3NldCAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQorK2FybV9zdG9yZV92ZnBy ZWdzZXQgKGNvbnN0IHZvaWQgKmJ1ZikKKyB7CisgICBpbnQgaSwgbnVtLCBiYXNlOworIAorQEAg LTE3MywyOCArMTcxLDI4IEBAIGFybV9zdG9yZV92ZnByZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAq cmUKKyAKKyAgIGJhc2UgPSBmaW5kX3JlZ25vICgiZDAiKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBu dW07IGkrKykKKy0gICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgYmFzZSArIGksIChjaGFy ICopIGJ1ZiArIGkgKiA4KTsKKysgICAgc3VwcGx5X3JlZ2lzdGVyIChiYXNlICsgaSwgKGNoYXIg KikgYnVmICsgaSAqIDgpOworIAorLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hl LCAiZnBzY3IiLCAoY2hhciAqKSBidWYgKyAzMiAqIDgpOworKyAgc3VwcGx5X3JlZ2lzdGVyX2J5 X25hbWUgKCJmcHNjciIsIChjaGFyICopIGJ1ZiArIDMyICogOCk7CisgfQorIAorIGV4dGVybiBp bnQgZGVidWdfdGhyZWFkczsKKyAKKyBzdGF0aWMgQ09SRV9BRERSCistYXJtX2dldF9wYyAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKKythcm1fZ2V0X3BjICgpCisgeworICAgdW5zaWduZWQg bG9uZyBwYzsKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZw Yyk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJwYyIsICZwYyk7CisgICBpZiAoZGVi dWdfdGhyZWFkcykKKyAgICAgZnByaW50ZiAoc3RkZXJyLCAic3RvcCBwYyBpcyAlMDhseFxuIiwg cGMpOworICAgcmV0dXJuIHBjOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLWFybV9zZXRfcGMgKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIENPUkVfQUREUiBwYykKKythcm1fc2V0X3BjIChDT1JF X0FERFIgcGMpCisgeworICAgdW5zaWduZWQgbG9uZyBuZXdwYyA9IHBjOworLSAgc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAmbmV3cGMpOworKyAgc3VwcGx5X3JlZ2lz dGVyX2J5X25hbWUgKCJwYyIsICZuZXdwYyk7CisgfQorIAorIC8qIENvcnJlY3QgaW4gZWl0aGVy IGVuZGlhbm5lc3MuICAqLworQEAgLTIxMiwxMCArMjEwLDkgQEAgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGxvbmcgYXJtX2VhYmlfYnJlYQorIHN0YXRpYyBpbnQKKyBhcm1fYnJlYWtwb2ludF9hdCAo Q09SRV9BRERSIHdoZXJlKQorIHsKKy0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRf dGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKKyAgIHVuc2lnbmVkIGxvbmcg Y3BzcjsKKyAKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJjcHNyIiwg JmNwc3IpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiY3BzciIsICZjcHNyKTsKKyAK KyAgIGlmIChjcHNyICYgMHgyMCkKKyAgICAgeworQEAgLTI0NiwxMSArMjQzLDEwIEBAIGFybV9i cmVha3BvaW50X2F0IChDT1JFX0FERFIgd2hlcmUpCisgICAgaXMgb3V0c2lkZSBvZiB0aGUgZnVu Y3Rpb24uICBTbyByYXRoZXIgdGhhbiBpbXBvcnRpbmcgc29mdHdhcmUgc2luZ2xlLXN0ZXAsCisg ICAgd2UgY2FuIGp1c3QgcnVuIHVudGlsIGV4aXQuICAqLworIHN0YXRpYyBDT1JFX0FERFIKKy1h cm1fcmVpbnNlcnRfYWRkciAodm9pZCkKKythcm1fcmVpbnNlcnRfYWRkciAoKQorIHsKKy0gIHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2lu ZmVyaW9yLCAxKTsKKyAgIHVuc2lnbmVkIGxvbmcgcGM7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5 X25hbWUgKHJlZ2NhY2hlLCAibHIiLCAmcGMpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1l ICgibHIiLCAmcGMpOworICAgcmV0dXJuIHBjOworIH0KKyAKKy0tLSAuL2dkYi9nZGJzZXJ2ZXIv bGludXgtY3Jpcy1sb3cuYwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAorKysr IC4vZ2RiL2dkYnNlcnZlci9saW51eC1jcmlzLWxvdy5jCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAw MDAwMDAwICswMTAwCitAQCAtNjIsMjAgKzYyLDIwIEBAIGNyaXNfY2Fubm90X2ZldGNoX3JlZ2lz dGVyIChpbnQgcmVnbm8pCisgZXh0ZXJuIGludCBkZWJ1Z190aHJlYWRzOworIAorIHN0YXRpYyBD T1JFX0FERFIKKy1jcmlzX2dldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCkK KytjcmlzX2dldF9wYyAodm9pZCkKKyB7CisgICB1bnNpZ25lZCBsb25nIHBjOworLSAgY29sbGVj dF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJnBjKTsKKysgIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAoInBjIiwgJnBjKTsKKyAgIGlmIChkZWJ1Z190aHJlYWRzKQorICAgICBm cHJpbnRmIChzdGRlcnIsICJzdG9wIHBjIGlzICUwOGx4XG4iLCBwYyk7CisgICByZXR1cm4gcGM7 CisgfQorIAorIHN0YXRpYyB2b2lkCistY3Jpc19zZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIENPUkVfQUREUiBwYykKKytjcmlzX3NldF9wYyAoQ09SRV9BRERSIHBjKQorIHsKKyAg IHVuc2lnbmVkIGxvbmcgbmV3cGMgPSBwYzsKKy0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChy ZWdjYWNoZSwgInBjIiwgJm5ld3BjKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgicGMi LCAmbmV3cGMpOworIH0KKyAKKyBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgY3Jpc19icmVh a3BvaW50ID0gMHhlOTM4OworQEAgLTEwMiw5ICsxMDIsOCBAQCBjcmlzX2JyZWFrcG9pbnRfYXQg KENPUkVfQUREUiB3aGVyZSkKKyBzdGF0aWMgQ09SRV9BRERSCisgY3Jpc19yZWluc2VydF9hZGRy ICh2b2lkKQorIHsKKy0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3Jl Z2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKKyAgIHVuc2lnbmVkIGxvbmcgcGM7CistICBj b2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAic3JwIiwgJnBjKTsKKysgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAoInNycCIsICZwYyk7CisgICByZXR1cm4gcGM7CisgfQorIAor LS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1jcmlzdjMyLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6 MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWNyaXN2MzItbG93 LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC01NCwyMCArNTQsMjAg QEAgc3RhdGljIGludCBjcmlzX3JlZ21hcFtdID0geworIGV4dGVybiBpbnQgZGVidWdfdGhyZWFk czsKKyAKKyBzdGF0aWMgQ09SRV9BRERSCistY3Jpc19nZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUpCisrY3Jpc19nZXRfcGMgKHZvaWQpCisgeworICAgdW5zaWduZWQgbG9uZyBwYzsK Ky0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZwYyk7CisrICBj b2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJwYyIsICZwYyk7CisgICBpZiAoZGVidWdfdGhyZWFk cykKKyAgICAgZnByaW50ZiAoc3RkZXJyLCAic3RvcCBwYyBpcyAlMDhseFxuIiwgcGMpOworICAg cmV0dXJuIHBjOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLWNyaXNfc2V0X3BjIChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMpCisrY3Jpc19zZXRfcGMgKENPUkVfQUREUiBw YykKKyB7CisgICB1bnNpZ25lZCBsb25nIG5ld3BjID0gcGM7CistICBzdXBwbHlfcmVnaXN0ZXJf YnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZuZXdwYyk7CisrICBzdXBwbHlfcmVnaXN0ZXJfYnlf bmFtZSAoInBjIiwgJm5ld3BjKTsKKyB9CisgCisgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0 IGNyaXNfYnJlYWtwb2ludCA9IDB4ZTkzODsKK0BAIC05OSw0MSArOTksMzkgQEAgY3Jpc19icmVh a3BvaW50X2F0IChDT1JFX0FERFIgd2hlcmUpCisgc3RhdGljIENPUkVfQUREUgorIGNyaXNfcmVp bnNlcnRfYWRkciAodm9pZCkKKyB7CistICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlID0gZ2V0 X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7CisgICB1bnNpZ25lZCBsb25n IHBjOworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInNycCIsICZwYyk7 CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJzcnAiLCAmcGMpOworICAgcmV0dXJuIHBj OworIH0KKyAKKyBzdGF0aWMgdm9pZAorLWNyaXNfd3JpdGVfZGF0YV9icmVha3BvaW50IChzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorLQkJCSAgICBpbnQgYnAsIHVuc2lnbmVkIGxvbmcgc3Rh cnQsIHVuc2lnbmVkIGxvbmcgZW5kKQorK2NyaXNfd3JpdGVfZGF0YV9icmVha3BvaW50IChpbnQg YnAsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQorIHsKKyAgIHN3aXRj aCAoYnApCisgICAgIHsKKyAgICAgY2FzZSAwOgorLSAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9u YW1lIChyZWdjYWNoZSwgInMzIiwgJnN0YXJ0KTsKKy0gICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlf bmFtZSAocmVnY2FjaGUsICJzNCIsICZlbmQpOworKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9u YW1lICgiczMiLCAmc3RhcnQpOworKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczQi LCAmZW5kKTsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSAxOgorLSAgICAgIHN1cHBseV9yZWdp c3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInM1IiwgJnN0YXJ0KTsKKy0gICAgICBzdXBwbHlfcmVn aXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzNiIsICZlbmQpOworKyAgICAgIHN1cHBseV9yZWdp c3Rlcl9ieV9uYW1lICgiczUiLCAmc3RhcnQpOworKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9u YW1lICgiczYiLCAmZW5kKTsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSAyOgorLSAgICAgIHN1 cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInM3IiwgJnN0YXJ0KTsKKy0gICAgICBz dXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzOCIsICZlbmQpOworKyAgICAgIHN1 cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczciLCAmc3RhcnQpOworKyAgICAgIHN1cHBseV9yZWdp c3Rlcl9ieV9uYW1lICgiczgiLCAmZW5kKTsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSAzOgor LSAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInM5IiwgJnN0YXJ0KTsK Ky0gICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzMTAiLCAmZW5kKTsK KysgICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInM5IiwgJnN0YXJ0KTsKKysgICAgICBz dXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInMxMCIsICZlbmQpOworICAgICAgIGJyZWFrOworICAg ICBjYXNlIDQ6CistICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczEx IiwgJnN0YXJ0KTsKKy0gICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJz MTIiLCAmZW5kKTsKKysgICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInMxMSIsICZzdGFy dCk7CisrICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJzMTIiLCAmZW5kKTsKKyAgICAg ICBicmVhazsKKyAgICAgY2FzZSA1OgorLSAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChy ZWdjYWNoZSwgInMxMyIsICZzdGFydCk7CistICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUg KHJlZ2NhY2hlLCAiczE0IiwgJmVuZCk7CisrICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUg KCJzMTMiLCAmc3RhcnQpOworKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczE0Iiwg JmVuZCk7CisgICAgICAgYnJlYWs7CisgICAgIH0KKyB9CitAQCAtMTQ1LDcgKzE0Myw2IEBAIGNy aXNfaW5zZXJ0X3BvaW50IChjaGFyIHR5cGUsIENPUkVfQUREUiAKKyAgIHVuc2lnbmVkIGxvbmcg YnBfY3RybDsKKyAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsKKyAgIHVuc2lnbmVkIGxvbmcg Y2NzOworLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsKKyAKKyAgIC8qIEJyZWFrcG9pbnQv d2F0Y2hwb2ludCB0eXBlcyAoR0RCIHRlcm1pbm9sb2d5KToKKyAgICAgIDAgPSBtZW1vcnkgYnJl YWtwb2ludCBmb3IgaW5zdHJ1Y3Rpb25zCitAQCAtMTYxLDE1ICsxNTgsMTMgQEAgY3Jpc19pbnNl cnRfcG9pbnQgKGNoYXIgdHlwZSwgQ09SRV9BRERSIAorICAgICAgIHJldHVybiAxOworICAgICB9 CisgCistICByZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGN1cnJlbnRfaW5mZXJpb3Is IDEpOworLQorICAgLyogUmVhZCB3YXRjaHBvaW50cyBhcmUgc2V0IGFzIGFjY2VzcyB3YXRjaHBv aW50cywgYmVjYXVzZSBvZiBHREIncworICAgICAgaW5hYmlsaXR5IHRvIGRlYWwgd2l0aCBwdXJl IHJlYWQgd2F0Y2hwb2ludHMuICAqLworICAgaWYgKHR5cGUgPT0gJzMnKQorICAgICB0eXBlID0g JzQnOworIAorICAgLyogR2V0IHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyLiAgKi8KKy0gIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzMCIsICZicF9jdHJsKTsKKysgIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInMwIiwgJmJwX2N0cmwpOworIAorICAgLyogVGhlIHdh dGNocG9pbnQgYWxsb2NhdGlvbiBzY2hlbWUgaXMgdGhlIHNpbXBsZXN0IHBvc3NpYmxlLgorICAg ICAgRm9yIGV4YW1wbGUsIGlmIGEgcmVnaW9uIGlzIHdhdGNoZWQgZm9yIHJlYWQgYW5kCitAQCAt MjA3LDE5ICsyMDIsMTkgQEAgY3Jpc19pbnNlcnRfcG9pbnQgKGNoYXIgdHlwZSwgQ09SRV9BRERS IAorICAgICB9CisgCisgICAvKiBTZXR1cCB0aGUgY29uZmlndXJhdGlvbiByZWdpc3Rlci4gICov CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzMCIsICZicF9jdHJsKTsK KysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczAiLCAmYnBfY3RybCk7CisgCisgICAvKiBT ZXR1cCB0aGUgcmFuZ2UuICAqLworICAgc3RhcnQgPSBhZGRyOworICAgZW5kID0gYWRkciArIGxl biAtIDE7CisgCisgICAvKiBDb25maWd1cmUgdGhlIHdhdGNocG9pbnQgcmVnaXN0ZXIuICAqLwor LSAgY3Jpc193cml0ZV9kYXRhX2JyZWFrcG9pbnQgKHJlZ2NhY2hlLCBicCwgc3RhcnQsIGVuZCk7 CisrICBjcmlzX3dyaXRlX2RhdGFfYnJlYWtwb2ludCAoYnAsIHN0YXJ0LCBlbmQpOworIAorLSAg Y29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImNjcyIsICZjY3MpOworKyAgY29s bGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiY2NzIiwgJmNjcyk7CisgICAvKiBTZXQgdGhlIFMxIGZs YWcgdG8gZW5hYmxlIHdhdGNocG9pbnRzLiAgKi8KKyAgIGNjcyB8PSAoMSA8PCAxOSk7CistICBz dXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJjY3MiLCAmY2NzKTsKKysgIHN1cHBs eV9yZWdpc3Rlcl9ieV9uYW1lICgiY2NzIiwgJmNjcyk7CisgCisgICByZXR1cm4gMDsKKyB9CitA QCAtMjMwLDcgKzIyNSw2IEBAIGNyaXNfcmVtb3ZlX3BvaW50IChjaGFyIHR5cGUsIENPUkVfQURE UiAKKyAgIGludCBicDsKKyAgIHVuc2lnbmVkIGxvbmcgYnBfY3RybDsKKyAgIHVuc2lnbmVkIGxv bmcgc3RhcnQsIGVuZDsKKy0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGU7CisgCisgICAvKiBC cmVha3BvaW50L3dhdGNocG9pbnQgdHlwZXM6CisgICAgICAwID0gbWVtb3J5IGJyZWFrcG9pbnQg Zm9yIGluc3RydWN0aW9ucworQEAgLTI0MiwxNSArMjM2LDEzIEBAIGNyaXNfcmVtb3ZlX3BvaW50 IChjaGFyIHR5cGUsIENPUkVfQUREUiAKKyAgIGlmICh0eXBlIDwgJzInIHx8IHR5cGUgPiAnNCcp CisgICAgIHJldHVybiAtMTsKKyAKKy0gIHJlZ2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAo Y3VycmVudF9pbmZlcmlvciwgMSk7CistCisgICAvKiBSZWFkIHdhdGNocG9pbnRzIGFyZSBzZXQg YXMgYWNjZXNzIHdhdGNocG9pbnRzLCBiZWNhdXNlIG9mIEdEQidzCisgICAgICBpbmFiaWxpdHkg dG8gZGVhbCB3aXRoIHB1cmUgcmVhZCB3YXRjaHBvaW50cy4gICovCisgICBpZiAodHlwZSA9PSAn MycpCisgICAgIHR5cGUgPSAnNCc7CisgCisgICAvKiBHZXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVn aXN0ZXIuICAqLworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInMwIiwg JmJwX2N0cmwpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiczAiLCAmYnBfY3RybCk7 CisgCisgICAvKiBUcnkgdG8gZmluZCBhIHdhdGNocG9pbnQgdGhhdCBpcyBjb25maWd1cmVkIGZv ciB0aGUKKyAgICAgIHNwZWNpZmllZCByYW5nZSwgdGhlbiBjaGVjayB0aGF0IHJlYWQvd3JpdGUg YWxzbyBtYXRjaGVzLiAgKi8KK0BAIC0yNjIsMTggKzI1NCwxOCBAQCBjcmlzX3JlbW92ZV9wb2lu dCAoY2hhciB0eXBlLCBDT1JFX0FERFIgCisgICB1bnNpZ25lZCBsb25nIGJwX2RfcmVnc1sxMl07 CisgCisgICAvKiBHZXQgYWxsIHJhbmdlIHJlZ2lzdGVycyB0byBzaW1wbGlmeSBzZWFyY2guICAq LworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInMzIiwgJmJwX2RfcmVn c1swXSk7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczQiLCAmYnBf ZF9yZWdzWzFdKTsKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzNSIs ICZicF9kX3JlZ3NbMl0pOworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwg InM2IiwgJmJwX2RfcmVnc1szXSk7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2Nh Y2hlLCAiczciLCAmYnBfZF9yZWdzWzRdKTsKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAo cmVnY2FjaGUsICJzOCIsICZicF9kX3JlZ3NbNV0pOworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9u YW1lIChyZWdjYWNoZSwgInM5IiwgJmJwX2RfcmVnc1s2XSk7CistICBjb2xsZWN0X3JlZ2lzdGVy X2J5X25hbWUgKHJlZ2NhY2hlLCAiczEwIiwgJmJwX2RfcmVnc1s3XSk7CistICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczExIiwgJmJwX2RfcmVnc1s4XSk7CistICBjb2xs ZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczEyIiwgJmJwX2RfcmVnc1s5XSk7Cist ICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczEzIiwgJmJwX2RfcmVnc1sx MF0pOworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInMxNCIsICZicF9k X3JlZ3NbMTFdKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInMzIiwgJmJwX2RfcmVn c1swXSk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJzNCIsICZicF9kX3JlZ3NbMV0p OworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiczUiLCAmYnBfZF9yZWdzWzJdKTsKKysg IGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInM2IiwgJmJwX2RfcmVnc1szXSk7CisrICBjb2xs ZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJzNyIsICZicF9kX3JlZ3NbNF0pOworKyAgY29sbGVjdF9y ZWdpc3Rlcl9ieV9uYW1lICgiczgiLCAmYnBfZF9yZWdzWzVdKTsKKysgIGNvbGxlY3RfcmVnaXN0 ZXJfYnlfbmFtZSAoInM5IiwgJmJwX2RfcmVnc1s2XSk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5 X25hbWUgKCJzMTAiLCAmYnBfZF9yZWdzWzddKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFt ZSAoInMxMSIsICZicF9kX3JlZ3NbOF0pOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgi czEyIiwgJmJwX2RfcmVnc1s5XSk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJzMTMi LCAmYnBfZF9yZWdzWzEwXSk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJzMTQiLCAm YnBfZF9yZWdzWzExXSk7CisgCisgICBmb3IgKGJwID0gMDsgYnAgPCA2OyBicCsrKQorICAgICB7 CitAQCAtMzA3LDExICsyOTksMTEgQEAgY3Jpc19yZW1vdmVfcG9pbnQgKGNoYXIgdHlwZSwgQ09S RV9BRERSIAorICAgICAgc3RhcnQvZW5kIGFkZHJlc3Nlcy4gICovCisgICBicF9jdHJsICY9IH4o MyA8PCAoMiArIChicCAqIDQpKSk7CisgICAvKiBTZXR1cCB0aGUgY29uZmlndXJhdGlvbiByZWdp c3Rlci4gICovCistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzMCIsICZi cF9jdHJsKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczAiLCAmYnBfY3RybCk7Cisg CisgICBzdGFydCA9IGVuZCA9IDA7CisgICAvKiBDb25maWd1cmUgdGhlIHdhdGNocG9pbnQgcmVn aXN0ZXIuICAqLworLSAgY3Jpc193cml0ZV9kYXRhX2JyZWFrcG9pbnQgKHJlZ2NhY2hlLCBicCwg c3RhcnQsIGVuZCk7CisrICBjcmlzX3dyaXRlX2RhdGFfYnJlYWtwb2ludCAoYnAsIHN0YXJ0LCBl bmQpOworIAorICAgLyogTm90ZSB0aGF0IHdlIGRvbid0IGNsZWFyIHRoZSBTMSBmbGFnIGhlcmUu ICBJdCdzIGRvbmUgd2hlbiBjb250aW51aW5nLiAgKi8KKyAgIHJldHVybiAwOworLS0tIC4vZ2Ri L2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEw MAorKysrIC4vZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAw MDAwMDAwMCArMDEwMAorQEAgLTQ1MSw4ICs0NTEsNyBAQCBoYW5kbGVfZXh0ZW5kZWRfd2FpdCAo c3RydWN0IGx3cF9pbmZvICplCisgc3RhdGljIENPUkVfQUREUgorIGdldF9zdG9wX3BjICh2b2lk KQorIHsKKy0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hl IChjdXJyZW50X2luZmVyaW9yLCAxKTsKKy0gIENPUkVfQUREUiBzdG9wX3BjID0gKCp0aGVfbG93 X3RhcmdldC5nZXRfcGMpIChyZWdjYWNoZSk7CisrICBDT1JFX0FERFIgc3RvcF9wYyA9ICgqdGhl X2xvd190YXJnZXQuZ2V0X3BjKSAoKTsKKyAKKyAgIGlmICghIGdldF90aHJlYWRfbHdwIChjdXJy ZW50X2luZmVyaW9yKS0+c3RlcHBpbmcpCisgICAgIHN0b3BfcGMgLT0gdGhlX2xvd190YXJnZXQu ZGVjcl9wY19hZnRlcl9icmVhazsKK0BAIC04ODUsNyArODg0LDYgQEAgY2hlY2tfcmVtb3ZlZF9i cmVha3BvaW50IChzdHJ1Y3QgbHdwX2luZgorIHsKKyAgIENPUkVfQUREUiBzdG9wX3BjOworICAg c3RydWN0IHRocmVhZF9pbmZvICpzYXZlZF9pbmZlcmlvcjsKKy0gIHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGU7CisgCisgICBpZiAoZXZlbnRfY2hpbGQtPnBlbmRpbmdfaXNfYnJlYWtwb2ludCA9 PSAwKQorICAgICByZXR1cm4gMDsKK0BAIC04OTYsNyArODk0LDcgQEAgY2hlY2tfcmVtb3ZlZF9i cmVha3BvaW50IChzdHJ1Y3QgbHdwX2luZgorIAorICAgc2F2ZWRfaW5mZXJpb3IgPSBjdXJyZW50 X2luZmVyaW9yOworICAgY3VycmVudF9pbmZlcmlvciA9IGdldF9sd3BfdGhyZWFkIChldmVudF9j aGlsZCk7CistICByZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGN1cnJlbnRfaW5mZXJp b3IsIDEpOworKworICAgc3RvcF9wYyA9IGdldF9zdG9wX3BjICgpOworIAorICAgLyogSWYgdGhl IFBDIGhhcyBjaGFuZ2VkIHNpbmNlIHdlIHN0b3BwZWQsIHRoZW4gd2Ugc2hvdWxkbid0IGRvCitA QCAtOTMyLDcgKzkzMCw3IEBAIGNoZWNrX3JlbW92ZWRfYnJlYWtwb2ludCAoc3RydWN0IGx3cF9p bmYKKyAgICAgeworICAgICAgIGlmIChkZWJ1Z190aHJlYWRzKQorIAlmcHJpbnRmIChzdGRlcnIs ICJTZXQgcGMgdG8gMHglbHhcbiIsIChsb25nKSBzdG9wX3BjKTsKKy0gICAgICAoKnRoZV9sb3df dGFyZ2V0LnNldF9wYykgKHJlZ2NhY2hlLCBzdG9wX3BjKTsKKysgICAgICAoKnRoZV9sb3dfdGFy Z2V0LnNldF9wYykgKHN0b3BfcGMpOworICAgICB9CisgCisgICAvKiBXZSBjb25zdW1lZCB0aGUg cGVuZGluZyBTSUdUUkFQLiAgKi8KK0BAIC0xMDY1LDEyICsxMDYzLDExIEBAIHJldHJ5OgorICAg ICAgICYmIHRoZV9sb3dfdGFyZ2V0LmdldF9wYyAhPSBOVUxMKQorICAgICB7CisgICAgICAgc3Ry dWN0IHRocmVhZF9pbmZvICpzYXZlZF9pbmZlcmlvciA9IGN1cnJlbnRfaW5mZXJpb3I7CistICAg ICAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGN1cnJl bnRfaW5mZXJpb3IsIDEpOworICAgICAgIENPUkVfQUREUiBwYzsKKyAKKyAgICAgICBjdXJyZW50 X2luZmVyaW9yID0gKHN0cnVjdCB0aHJlYWRfaW5mbyAqKQorIAlmaW5kX2luZmVyaW9yX2lkICgm YWxsX3RocmVhZHMsIGNoaWxkLT5oZWFkLmlkKTsKKy0gICAgICBwYyA9ICgqdGhlX2xvd190YXJn ZXQuZ2V0X3BjKSAocmVnY2FjaGUpOworKyAgICAgIHBjID0gKCp0aGVfbG93X3RhcmdldC5nZXRf cGMpICgpOworICAgICAgIGZwcmludGYgKHN0ZGVyciwgImxpbnV4X3dhaXRfZm9yX2x3cDogcGMg aXMgMHglbHhcbiIsIChsb25nKSBwYyk7CisgICAgICAgY3VycmVudF9pbmZlcmlvciA9IHNhdmVk X2luZmVyaW9yOworICAgICB9CitAQCAtMTgzNSw4ICsxODMyLDcgQEAgbGludXhfcmVzdW1lX29u ZV9sd3AgKHN0cnVjdCBsd3BfaW5mbyAqbAorIAorICAgaWYgKGRlYnVnX3RocmVhZHMgJiYgdGhl X2xvd190YXJnZXQuZ2V0X3BjICE9IE5VTEwpCisgICAgIHsKKy0gICAgICBzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7 CistICAgICAgQ09SRV9BRERSIHBjID0gKCp0aGVfbG93X3RhcmdldC5nZXRfcGMpIChyZWdjYWNo ZSk7CisrICAgICAgQ09SRV9BRERSIHBjID0gKCp0aGVfbG93X3RhcmdldC5nZXRfcGMpICgpOwor ICAgICAgIGZwcmludGYgKHN0ZGVyciwgIiAgcmVzdW1pbmcgZnJvbSBwYyAweCVseFxuIiwgKGxv bmcpIHBjKTsKKyAgICAgfQorIAorQEAgLTIxMjUsNyArMjEyMSw3IEBAIHJlZ2lzdGVyX2FkZHIg KGludCByZWdudW0pCisgCisgLyogRmV0Y2ggb25lIHJlZ2lzdGVyLiAgKi8KKyBzdGF0aWMgdm9p ZAorLWZldGNoX3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8p CisrZmV0Y2hfcmVnaXN0ZXIgKGludCByZWdubykKKyB7CisgICBDT1JFX0FERFIgcmVnYWRkcjsK KyAgIGludCBpLCBzaXplOworQEAgLTIxNjQsMjkgKzIxNjAsMjkgQEAgZmV0Y2hfcmVnaXN0ZXIg KHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaAorICAgICB9CisgCisgICBpZiAodGhlX2xvd190YXJn ZXQuc3VwcGx5X3B0cmFjZV9yZWdpc3RlcikKKy0gICAgdGhlX2xvd190YXJnZXQuc3VwcGx5X3B0 cmFjZV9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vLCBidWYpOworKyAgICB0aGVfbG93X3Rhcmdl dC5zdXBwbHlfcHRyYWNlX3JlZ2lzdGVyIChyZWdubywgYnVmKTsKKyAgIGVsc2UKKy0gICAgc3Vw cGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbm8sIGJ1Zik7CisrICAgIHN1cHBseV9yZWdpc3Rl ciAocmVnbm8sIGJ1Zik7CisgCisgZXJyb3JfZXhpdDo7CisgfQorIAorIC8qIEZldGNoIGFsbCBy ZWdpc3RlcnMsIG9yIGp1c3Qgb25lLCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiAgKi8KKyBzdGF0 aWMgdm9pZAorLXVzcl9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsIGludCByZWdubykKKyt1c3JfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzIChpbnQg cmVnbm8pCisgeworICAgaWYgKHJlZ25vID09IC0xKQorICAgICBmb3IgKHJlZ25vID0gMDsgcmVn bm8gPCB0aGVfbG93X3RhcmdldC5udW1fcmVnczsgcmVnbm8rKykKKy0gICAgICBmZXRjaF9yZWdp c3RlciAocmVnY2FjaGUsIHJlZ25vKTsKKysgICAgICBmZXRjaF9yZWdpc3RlciAocmVnbm8pOwor ICAgZWxzZQorLSAgICBmZXRjaF9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vKTsKKysgICAgZmV0 Y2hfcmVnaXN0ZXIgKHJlZ25vKTsKKyB9CisgCisgLyogU3RvcmUgb3VyIHJlZ2lzdGVyIHZhbHVl cyBiYWNrIGludG8gdGhlIGluZmVyaW9yLgorICAgIElmIFJFR05PIGlzIC0xLCBkbyB0aGlzIGZv ciBhbGwgcmVnaXN0ZXJzLgorICAgIE90aGVyd2lzZSwgUkVHTk8gc3BlY2lmaWVzIHdoaWNoIHJl Z2lzdGVyIChzbyB3ZSBjYW4gc2F2ZSB0aW1lKS4gICovCisgc3RhdGljIHZvaWQKKy11c3Jfc3Rv cmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVn bm8pCisrdXNyX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAoaW50IHJlZ25vKQorIHsKKyAgIENP UkVfQUREUiByZWdhZGRyOworICAgaW50IGksIHNpemU7CitAQCAtMjIxMSw5ICsyMjA3LDkgQEAg dXNyX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAoc3RydWN0IHJlZworICAgICAgIG1lbXNldCAo YnVmLCAwLCBzaXplKTsKKyAKKyAgICAgICBpZiAodGhlX2xvd190YXJnZXQuY29sbGVjdF9wdHJh Y2VfcmVnaXN0ZXIpCistCXRoZV9sb3dfdGFyZ2V0LmNvbGxlY3RfcHRyYWNlX3JlZ2lzdGVyIChy ZWdjYWNoZSwgcmVnbm8sIGJ1Zik7CisrCXRoZV9sb3dfdGFyZ2V0LmNvbGxlY3RfcHRyYWNlX3Jl Z2lzdGVyIChyZWdubywgYnVmKTsKKyAgICAgICBlbHNlCistCWNvbGxlY3RfcmVnaXN0ZXIgKHJl Z2NhY2hlLCByZWdubywgYnVmKTsKKysJY29sbGVjdF9yZWdpc3RlciAocmVnbm8sIGJ1Zik7Cisg CisgICAgICAgcGlkID0gbHdwaWRfb2YgKGdldF90aHJlYWRfbHdwIChjdXJyZW50X2luZmVyaW9y KSk7CisgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkgKz0gc2l6ZW9mIChQVFJBQ0VfWEZF Ul9UWVBFKSkKK0BAIC0yMjQ1LDcgKzIyNDEsNyBAQCB1c3Jfc3RvcmVfaW5mZXJpb3JfcmVnaXN0 ZXJzIChzdHJ1Y3QgcmVnCisgICAgIH0KKyAgIGVsc2UKKyAgICAgZm9yIChyZWdubyA9IDA7IHJl Z25vIDwgdGhlX2xvd190YXJnZXQubnVtX3JlZ3M7IHJlZ25vKyspCistICAgICAgdXNyX3N0b3Jl X2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2FjaGUsIHJlZ25vKTsKKysgICAgICB1c3Jfc3RvcmVf aW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdubyk7CisgfQorICNlbmRpZiAvKiBIQVZFX0xJTlVYX1VT UlJFR1MgKi8KKyAKK0BAIC0yMjU0LDcgKzIyNTAsNyBAQCB1c3Jfc3RvcmVfaW5mZXJpb3JfcmVn aXN0ZXJzIChzdHJ1Y3QgcmVnCisgI2lmZGVmIEhBVkVfTElOVVhfUkVHU0VUUworIAorIHN0YXRp YyBpbnQKKy1yZWdzZXRzX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSkKKytyZWdzZXRzX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAoKQorIHsKKyAg IHN0cnVjdCByZWdzZXRfaW5mbyAqcmVnc2V0OworICAgaW50IHNhd19nZW5lcmFsX3JlZ3MgPSAw OworQEAgLTIzMDAsNyArMjI5Niw3IEBAIHJlZ3NldHNfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJz IChzdHJ1Y3QKKyAJfQorICAgICAgIGVsc2UgaWYgKHJlZ3NldC0+dHlwZSA9PSBHRU5FUkFMX1JF R1MpCisgCXNhd19nZW5lcmFsX3JlZ3MgPSAxOworLSAgICAgIHJlZ3NldC0+c3RvcmVfZnVuY3Rp b24gKHJlZ2NhY2hlLCBidWYpOworKyAgICAgIHJlZ3NldC0+c3RvcmVfZnVuY3Rpb24gKGJ1Zik7 CisgICAgICAgcmVnc2V0ICsrOworICAgICAgIGZyZWUgKGJ1Zik7CisgICAgIH0KK0BAIC0yMzEx LDcgKzIzMDcsNyBAQCByZWdzZXRzX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAoc3RydWN0Cisg fQorIAorIHN0YXRpYyBpbnQKKy1yZWdzZXRzX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKKytyZWdzZXRzX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVy cyAoKQorIHsKKyAgIHN0cnVjdCByZWdzZXRfaW5mbyAqcmVnc2V0OworICAgaW50IHNhd19nZW5l cmFsX3JlZ3MgPSAwOworQEAgLTIzNDUsNyArMjM0MSw3IEBAIHJlZ3NldHNfc3RvcmVfaW5mZXJp b3JfcmVnaXN0ZXJzIChzdHJ1Y3QKKyAgICAgICBpZiAocmVzID09IDApCisgCXsKKyAJICAvKiBU aGVuIG92ZXJsYXkgb3VyIGNhY2hlZCByZWdpc3RlcnMgb24gdGhhdC4gICovCistCSAgcmVnc2V0 LT5maWxsX2Z1bmN0aW9uIChyZWdjYWNoZSwgYnVmKTsKKysJICByZWdzZXQtPmZpbGxfZnVuY3Rp b24gKGJ1Zik7CisgCisgCSAgLyogT25seSBub3cgZG8gd2Ugd3JpdGUgdGhlIHJlZ2lzdGVyIHNl dC4gICovCisgI2lmbmRlZiBfX3NwYXJjX18KK0BAIC0yMzk1LDI2ICsyMzkxLDI2IEBAIHJlZ3Nl dHNfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QKKyAKKyAKKyB2b2lkCistbGludXhf ZmV0Y2hfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8pCisr bGludXhfZmV0Y2hfcmVnaXN0ZXJzIChpbnQgcmVnbm8pCisgeworICNpZmRlZiBIQVZFX0xJTlVY X1JFR1NFVFMKKy0gIGlmIChyZWdzZXRzX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2Fj aGUpID09IDApCisrICBpZiAocmVnc2V0c19mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKCkgPT0g MCkKKyAgICAgcmV0dXJuOworICNlbmRpZgorICNpZmRlZiBIQVZFX0xJTlVYX1VTUlJFR1MKKy0g IHVzcl9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ2NhY2hlLCByZWdubyk7CisrICB1c3Jf ZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdubyk7CisgI2VuZGlmCisgfQorIAorIHZvaWQK Ky1saW51eF9zdG9yZV9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCBy ZWdubykKKytsaW51eF9zdG9yZV9yZWdpc3RlcnMgKGludCByZWdubykKKyB7CisgI2lmZGVmIEhB VkVfTElOVVhfUkVHU0VUUworLSAgaWYgKHJlZ3NldHNfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJz IChyZWdjYWNoZSkgPT0gMCkKKysgIGlmIChyZWdzZXRzX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVy cyAoKSA9PSAwKQorICAgICByZXR1cm47CisgI2VuZGlmCisgI2lmZGVmIEhBVkVfTElOVVhfVVNS UkVHUworLSAgdXNyX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2FjaGUsIHJlZ25vKTsK KysgIHVzcl9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ25vKTsKKyAjZW5kaWYKKyB9Cisg CistLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5oCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAw MDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5oCTIwMTAtMDEtMjEg MjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCitAQCAtMjQsOCArMjQsOCBAQAorICNpbmNsdWRlICJn ZGJfcHJvY19zZXJ2aWNlLmgiCisgCisgI2lmZGVmIEhBVkVfTElOVVhfUkVHU0VUUworLXR5cGVk ZWYgdm9pZCAoKnJlZ3NldF9maWxsX2Z1bmMpIChzdHJ1Y3QgcmVnY2FjaGUgKiwgdm9pZCAqKTsK Ky10eXBlZGVmIHZvaWQgKCpyZWdzZXRfc3RvcmVfZnVuYykgKHN0cnVjdCByZWdjYWNoZSAqLCBj b25zdCB2b2lkICopOworK3R5cGVkZWYgdm9pZCAoKnJlZ3NldF9maWxsX2Z1bmMpICh2b2lkICop OworK3R5cGVkZWYgdm9pZCAoKnJlZ3NldF9zdG9yZV9mdW5jKSAoY29uc3Qgdm9pZCAqKTsKKyBl bnVtIHJlZ3NldF90eXBlIHsKKyAgIEdFTkVSQUxfUkVHUywKKyAgIEZQX1JFR1MsCitAQCAtNzAs OCArNzAsOCBAQCBzdHJ1Y3QgbGludXhfdGFyZ2V0X29wcworICAgICAgc3RvcmUgdGhlIHJlZ2lz dGVyLCBhbmQgMiBpZiBmYWlsdXJlIHRvIHN0b3JlIHRoZSByZWdpc3RlcgorICAgICAgaXMgYWNj ZXB0YWJsZS4gICovCisgICBpbnQgKCpjYW5ub3Rfc3RvcmVfcmVnaXN0ZXIpIChpbnQpOworLSAg Q09SRV9BRERSICgqZ2V0X3BjKSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSk7CistICB2b2lk ICgqc2V0X3BjKSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIG5ld3BjKTsK KysgIENPUkVfQUREUiAoKmdldF9wYykgKHZvaWQpOworKyAgdm9pZCAoKnNldF9wYykgKENPUkVf QUREUiBuZXdwYyk7CisgICBjb25zdCB1bnNpZ25lZCBjaGFyICpicmVha3BvaW50OworICAgaW50 IGJyZWFrcG9pbnRfbGVuOworICAgQ09SRV9BRERSICgqYnJlYWtwb2ludF9yZWluc2VydF9hZGRy KSAodm9pZCk7CitAQCAtODgsMTAgKzg4LDggQEAgc3RydWN0IGxpbnV4X3RhcmdldF9vcHMKKyAK KyAgIC8qIEhvb2tzIHRvIHJlZm9ybWF0IHJlZ2lzdGVyIGRhdGEgZm9yIFBFRUtVU1IvUE9LRVVT UiAoaW4gcGFydGljdWxhcgorICAgICAgZm9yIHJlZ2lzdGVycyBzbWFsbGVyIHRoYW4gYW4geGZl ciB1bml0KS4gICovCistICB2b2lkICgqY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIpIChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLAorLQkJCQkgICBpbnQgcmVnbm8sIGNoYXIgKmJ1Zik7CistICB2 b2lkICgqc3VwcGx5X3B0cmFjZV9yZWdpc3RlcikgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs CistCQkJCSAgaW50IHJlZ25vLCBjb25zdCBjaGFyICpidWYpOworKyAgdm9pZCAoKmNvbGxlY3Rf cHRyYWNlX3JlZ2lzdGVyKSAoaW50IHJlZ25vLCBjaGFyICpidWYpOworKyAgdm9pZCAoKnN1cHBs eV9wdHJhY2VfcmVnaXN0ZXIpIChpbnQgcmVnbm8sIGNvbnN0IGNoYXIgKmJ1Zik7CisgCisgICAv KiBIb29rIHRvIGNvbnZlcnQgZnJvbSB0YXJnZXQgZm9ybWF0IHRvIHB0cmFjZSBmb3JtYXQgYW5k IGJhY2suCisgICAgICBSZXR1cm5zIHRydWUgaWYgYW55IGNvbnZlcnNpb24gd2FzIGRvbmU7IGZh bHNlIG90aGVyd2lzZS4KKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtbTMyci1sb3cuYwkyMDEw LTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL2dkYnNlcnZlci9saW51 eC1tMzJyLWxvdy5jCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCitAQCAtNTMs MjAgKzUzLDE4IEBAIG0zMnJfY2Fubm90X2ZldGNoX3JlZ2lzdGVyIChpbnQgcmVnbm8pCisgfQor IAorIHN0YXRpYyBDT1JFX0FERFIKKy1tMzJyX2dldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSkKKyttMzJyX2dldF9wYyAoKQorIHsKKyAgIHVuc2lnbmVkIGxvbmcgcGM7CistICBjb2xs ZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAmcGMpOworLSAgaWYgKGRlYnVn X3RocmVhZHMpCistICAgIGZwcmludGYgKHN0ZGVyciwgInN0b3AgcGMgaXMgJTA4bHhcbiIsIHBj KTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJnBjKTsKKyAgIHJldHVybiBw YzsKKyB9CisgCisgc3RhdGljIHZvaWQKKy1tMzJyX3NldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZSwgQ09SRV9BRERSIHBjKQorK20zMnJfc2V0X3BjIChDT1JFX0FERFIgcGMpCisgewor ICAgdW5zaWduZWQgbG9uZyBuZXdwYyA9IHBjOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUg KHJlZ2NhY2hlLCAicGMiLCAmbmV3cGMpOworKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJw YyIsICZuZXdwYyk7CisgfQorIAorIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBtMzJyX2Jy ZWFrcG9pbnQgPSAweDEwZjE7CistLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4LW02OGstbG93LmMJ MjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9nZGJzZXJ2ZXIv bGludXgtbTY4ay1sb3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAorQEAg LTcxLDQwICs3MSw0MCBAQCBtNjhrX2Nhbm5vdF9mZXRjaF9yZWdpc3RlciAoaW50IHJlZ25vKQor ICNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CisgCisgc3RhdGljIHZvaWQKKy1tNjhrX2ZpbGxfZ3Jl Z3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQorK202OGtfZmlsbF9n cmVnc2V0ICh2b2lkICpidWYpCisgeworICAgaW50IGk7CisgCisgICBmb3IgKGkgPSAwOyBpIDwg bTY4a19udW1fZ3JlZ3M7IGkrKykKKy0gICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGks IChjaGFyICopIGJ1ZiArIG02OGtfcmVnbWFwW2ldKTsKKysgICAgY29sbGVjdF9yZWdpc3RlciAo aSwgKGNoYXIgKikgYnVmICsgbTY4a19yZWdtYXBbaV0pOworIH0KKyAKKyBzdGF0aWMgdm9pZAor LW02OGtfc3RvcmVfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9p ZCAqYnVmKQorK202OGtfc3RvcmVfZ3JlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQorIHsKKyAgIGlu dCBpOworIAorICAgZm9yIChpID0gMDsgaSA8IG02OGtfbnVtX2dyZWdzOyBpKyspCistICAgIHN1 cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGksIChjb25zdCBjaGFyICopIGJ1ZiArIG02OGtfcmVn bWFwW2ldKTsKKysgICAgc3VwcGx5X3JlZ2lzdGVyIChpLCAoY29uc3QgY2hhciAqKSBidWYgKyBt NjhrX3JlZ21hcFtpXSk7CisgfQorIAorIHN0YXRpYyB2b2lkCistbTY4a19maWxsX2ZwcmVnc2V0 IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCisrbTY4a19maWxsX2ZwcmVn c2V0ICh2b2lkICpidWYpCisgeworICAgaW50IGk7CisgCisgICBmb3IgKGkgPSBtNjhrX251bV9n cmVnczsgaSA8IG02OGtfbnVtX3JlZ3M7IGkrKykKKy0gICAgY29sbGVjdF9yZWdpc3RlciAocmVn Y2FjaGUsIGksICgoY2hhciAqKSBidWYKKy0JCQkgKyAobTY4a19yZWdtYXBbaV0gLSBtNjhrX3Jl Z21hcFttNjhrX251bV9ncmVnc10pKSk7CisrICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGksICgoY2hh ciAqKSBidWYKKysJCQkgICsgKG02OGtfcmVnbWFwW2ldIC0gbTY4a19yZWdtYXBbbTY4a19udW1f Z3JlZ3NdKSkpOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLW02OGtfc3RvcmVfZnByZWdzZXQgKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKKyttNjhrX3N0b3JlX2Zw cmVnc2V0IChjb25zdCB2b2lkICpidWYpCisgeworICAgaW50IGk7CisgCisgICBmb3IgKGkgPSBt NjhrX251bV9ncmVnczsgaSA8IG02OGtfbnVtX3JlZ3M7IGkrKykKKy0gICAgc3VwcGx5X3JlZ2lz dGVyIChyZWdjYWNoZSwgaSwgKChjb25zdCBjaGFyICopIGJ1ZgorKyAgICBzdXBwbHlfcmVnaXN0 ZXIgKGksICgoY29uc3QgY2hhciAqKSBidWYKKyAJCQkgKyAobTY4a19yZWdtYXBbaV0gLSBtNjhr X3JlZ21hcFttNjhrX251bV9ncmVnc10pKSk7CisgfQorIAorQEAgLTEyNiwyMCArMTI2LDIwIEBA IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIG02OGtfYnJlYWtwb2kKKyAjZGVmaW5lIG02OGtf YnJlYWtwb2ludF9sZW4gMgorIAorIHN0YXRpYyBDT1JFX0FERFIKKy1tNjhrX2dldF9wYyAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKKyttNjhrX2dldF9wYyAoKQorIHsKKyAgIHVuc2lnbmVk IGxvbmcgcGM7CisgCistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicGMi LCAmcGMpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgicGMiLCAmcGMpOworICAgcmV0 dXJuIHBjOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLW02OGtfc2V0X3BjIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgdmFsdWUpCisrbTY4a19zZXRfcGMgKENPUkVfQUREUiB2 YWx1ZSkKKyB7CisgICB1bnNpZ25lZCBsb25nIG5ld3BjID0gdmFsdWU7CisgCistICBzdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZuZXdwYyk7CisrICBzdXBwbHlfcmVn aXN0ZXJfYnlfbmFtZSAoInBjIiwgJm5ld3BjKTsKKyB9CisgCisgc3RhdGljIGludAorLS0tIC4v Z2RiL2dkYnNlcnZlci9saW51eC1taXBzLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAw MDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LW1pcHMtbG93LmMJMjAxMC0wMS0y MSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMTUsMTUgKzExNSwxNSBAQCBtaXBzX2Nh bm5vdF9zdG9yZV9yZWdpc3RlciAoaW50IHJlZ25vKQorIH0KKyAKKyBzdGF0aWMgQ09SRV9BRERS CistbWlwc19nZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCisrbWlwc19nZXRfcGMg KCkKKyB7CisgICB1bmlvbiBtaXBzX3JlZ2lzdGVyIHBjOworLSAgY29sbGVjdF9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgInBjIiwgcGMuYnVmKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlf bmFtZSAoInBjIiwgcGMuYnVmKTsKKyAgIHJldHVybiByZWdpc3Rlcl9zaXplICgwKSA9PSA0ID8g cGMucmVnMzIgOiBwYy5yZWc2NDsKKyB9CisgCisgc3RhdGljIHZvaWQKKy1taXBzX3NldF9wYyAo c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBjKQorK21pcHNfc2V0X3BjIChD T1JFX0FERFIgcGMpCisgeworICAgdW5pb24gbWlwc19yZWdpc3RlciBuZXdwYzsKKyAgIGlmIChy ZWdpc3Rlcl9zaXplICgwKSA9PSA0KQorQEAgLTEzMSw3ICsxMzEsNyBAQCBtaXBzX3NldF9wYyAo c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgCisgICBlbHNlCisgICAgIG5ld3BjLnJlZzY0ID0g cGM7CisgCistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsIG5ld3Bj LmJ1Zik7CisrICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgbmV3cGMuYnVmKTsKKyB9 CisgCisgLyogQ29ycmVjdCBpbiBlaXRoZXIgZW5kaWFubmVzcy4gICovCitAQCAtMTQyLDExICsx NDIsMTAgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2JyZWFrcG9pbgorICAgIGlz IG91dHNpZGUgb2YgdGhlIGZ1bmN0aW9uLiAgU28gcmF0aGVyIHRoYW4gaW1wb3J0aW5nIHNvZnR3 YXJlIHNpbmdsZS1zdGVwLAorICAgIHdlIGNhbiBqdXN0IHJ1biB1bnRpbCBleGl0LiAgKi8KKyBz dGF0aWMgQ09SRV9BRERSCistbWlwc19yZWluc2VydF9hZGRyICh2b2lkKQorK21pcHNfcmVpbnNl cnRfYWRkciAoKQorIHsKKy0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhyZWFk X3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKKyAgIHVuaW9uIG1pcHNfcmVnaXN0ZXIg cmE7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicjMxIiwgcmEuYnVm KTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInIzMSIsIHJhLmJ1Zik7CisgICByZXR1 cm4gcmVnaXN0ZXJfc2l6ZSAoMCkgPT0gNCA/IHJhLnJlZzMyIDogcmEucmVnNjQ7CisgfQorIAor QEAgLTE4NCwyNiArMTgzLDI0IEBAIHBzX2dldF90aHJlYWRfYXJlYSAoY29uc3Qgc3RydWN0IHBz X3Byb2MKKyAjaWZkZWYgSEFWRV9QVFJBQ0VfR0VUUkVHUworIAorIHN0YXRpYyB2b2lkCistbWlw c19jb2xsZWN0X3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorLQkJICAgICAg IGludCB1c2VfNjRiaXQsIGludCByZWdubywgdW5pb24gbWlwc19yZWdpc3RlciAqcmVnKQorK21p cHNfY29sbGVjdF9yZWdpc3RlciAoaW50IHVzZV82NGJpdCwgaW50IHJlZ25vLCB1bmlvbiBtaXBz X3JlZ2lzdGVyICpyZWcpCisgeworICAgdW5pb24gbWlwc19yZWdpc3RlciB0bXBfcmVnOworIAor ICAgaWYgKHVzZV82NGJpdCkKKyAgICAgeworLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2Nh Y2hlLCByZWdubywgJnRtcF9yZWcucmVnNjQpOworKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJl Z25vLCAmdG1wX3JlZy5yZWc2NCk7CisgICAgICAgKnJlZyA9IHRtcF9yZWc7CisgICAgIH0KKyAg IGVsc2UKKyAgICAgeworLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubywg JnRtcF9yZWcucmVnMzIpOworKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ25vLCAmdG1wX3Jl Zy5yZWczMik7CisgICAgICAgcmVnLT5yZWc2NCA9IHRtcF9yZWcucmVnMzI7CisgICAgIH0KKyB9 CisgCisgc3RhdGljIHZvaWQKKy1taXBzX3N1cHBseV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwKKy0JCSAgICAgIGludCB1c2VfNjRiaXQsIGludCByZWdubywgY29uc3QgdW5p b24gbWlwc19yZWdpc3RlciAqcmVnKQorK21pcHNfc3VwcGx5X3JlZ2lzdGVyIChpbnQgdXNlXzY0 Yml0LCBpbnQgcmVnbm8sIGNvbnN0IHVuaW9uIG1pcHNfcmVnaXN0ZXIgKnJlZykKKyB7CisgICBp bnQgb2Zmc2V0ID0gMDsKKyAKK0BAIC0yMTIsMzUgKzIwOSwzMyBAQCBtaXBzX3N1cHBseV9yZWdp c3RlciAoc3RydWN0IHJlZ2NhY2hlICpyCisgICBpZiAoX19CWVRFX09SREVSID09IF9fQklHX0VO RElBTiAmJiAhdXNlXzY0Yml0KQorICAgICBvZmZzZXQgPSA0OworIAorLSAgc3VwcGx5X3JlZ2lz dGVyIChyZWdjYWNoZSwgcmVnbm8sIHJlZy0+YnVmICsgb2Zmc2V0KTsKKysgIHN1cHBseV9yZWdp c3RlciAocmVnbm8sIHJlZy0+YnVmICsgb2Zmc2V0KTsKKyB9CisgCisgc3RhdGljIHZvaWQKKy1t aXBzX2NvbGxlY3RfcmVnaXN0ZXJfMzJiaXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCist CQkJICAgICBpbnQgdXNlXzY0Yml0LCBpbnQgcmVnbm8sIHVuc2lnbmVkIGNoYXIgKmJ1ZikKKytt aXBzX2NvbGxlY3RfcmVnaXN0ZXJfMzJiaXQgKGludCB1c2VfNjRiaXQsIGludCByZWdubywgdW5z aWduZWQgY2hhciAqYnVmKQorIHsKKyAgIHVuaW9uIG1pcHNfcmVnaXN0ZXIgdG1wX3JlZzsKKyAg IGludCByZWczMjsKKyAKKy0gIG1pcHNfY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHVzZV82 NGJpdCwgcmVnbm8sICZ0bXBfcmVnKTsKKysgIG1pcHNfY29sbGVjdF9yZWdpc3RlciAodXNlXzY0 Yml0LCByZWdubywgJnRtcF9yZWcpOworICAgcmVnMzIgPSB0bXBfcmVnLnJlZzY0OworICAgbWVt Y3B5IChidWYsICZyZWczMiwgNCk7CisgfQorIAorIHN0YXRpYyB2b2lkCistbWlwc19zdXBwbHlf cmVnaXN0ZXJfMzJiaXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCistCQkJICAgIGludCB1 c2VfNjRiaXQsIGludCByZWdubywgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmKQorK21pcHNfc3Vw cGx5X3JlZ2lzdGVyXzMyYml0IChpbnQgdXNlXzY0Yml0LCBpbnQgcmVnbm8sIGNvbnN0IHVuc2ln bmVkIGNoYXIgKmJ1ZikKKyB7CisgICB1bmlvbiBtaXBzX3JlZ2lzdGVyIHRtcF9yZWc7CisgICBp bnQgcmVnMzI7CisgCisgICBtZW1jcHkgKCZyZWczMiwgYnVmLCA0KTsKKyAgIHRtcF9yZWcucmVn NjQgPSByZWczMjsKKy0gIG1pcHNfc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0 LCByZWdubywgJnRtcF9yZWcpOworKyAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHVzZV82NGJpdCwg cmVnbm8sICZ0bXBfcmVnKTsKKyB9CisgCisgc3RhdGljIHZvaWQKKy1taXBzX2ZpbGxfZ3JlZ3Nl dCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQorK21pcHNfZmlsbF9ncmVn c2V0ICh2b2lkICpidWYpCisgeworICAgdW5pb24gbWlwc19yZWdpc3RlciAqcmVnc2V0ID0gYnVm OworICAgaW50IGksIHVzZV82NGJpdDsKK0BAIC0yNDgsMjcgKzI0MywyMCBAQCBtaXBzX2ZpbGxf Z3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjCisgICB1c2VfNjRiaXQgPSAocmVnaXN0ZXJf c2l6ZSAoMCkgPT0gOCk7CisgCisgICBmb3IgKGkgPSAxOyBpIDwgMzI7IGkrKykKKy0gICAgbWlw c19jb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LCBpLCByZWdzZXQgKyBpKTsK KysgICAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGksIHJlZ3NldCArIGkpOwor IAorLSAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LAorLQkJCSBm aW5kX3JlZ25vICgibG8iKSwgcmVnc2V0ICsgMzIpOworLSAgbWlwc19jb2xsZWN0X3JlZ2lzdGVy IChyZWdjYWNoZSwgdXNlXzY0Yml0LAorLQkJCSBmaW5kX3JlZ25vICgiaGkiKSwgcmVnc2V0ICsg MzMpOworLSAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LAorLQkJ CSBmaW5kX3JlZ25vICgicGMiKSwgcmVnc2V0ICsgMzQpOworLSAgbWlwc19jb2xsZWN0X3JlZ2lz dGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LAorLQkJCSBmaW5kX3JlZ25vICgiYmFkdmFkZHIiKSwg cmVnc2V0ICsgMzUpOworLSAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0 Yml0LAorLQkJCSBmaW5kX3JlZ25vICgic3RhdHVzIiksIHJlZ3NldCArIDM2KTsKKy0gIG1pcHNf Y29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHVzZV82NGJpdCwKKy0JCQkgZmluZF9yZWdubyAo ImNhdXNlIiksIHJlZ3NldCArIDM3KTsKKysgIG1pcHNfY29sbGVjdF9yZWdpc3RlciAodXNlXzY0 Yml0LCBmaW5kX3JlZ25vICgibG8iKSwgcmVnc2V0ICsgMzIpOworKyAgbWlwc19jb2xsZWN0X3Jl Z2lzdGVyICh1c2VfNjRiaXQsIGZpbmRfcmVnbm8gKCJoaSIpLCByZWdzZXQgKyAzMyk7CisrICBt aXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoInBjIiksIHJlZ3Nl dCArIDM0KTsKKysgIG1pcHNfY29sbGVjdF9yZWdpc3RlciAodXNlXzY0Yml0LCBmaW5kX3JlZ25v ICgiYmFkdmFkZHIiKSwgcmVnc2V0ICsgMzUpOworKyAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyICh1 c2VfNjRiaXQsIGZpbmRfcmVnbm8gKCJzdGF0dXMiKSwgcmVnc2V0ICsgMzYpOworKyAgbWlwc19j b2xsZWN0X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGZpbmRfcmVnbm8gKCJjYXVzZSIpLCByZWdzZXQg KyAzNyk7CisgCistICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQs CistCQkJIGZpbmRfcmVnbm8gKCJyZXN0YXJ0IiksIHJlZ3NldCArIDApOworKyAgbWlwc19jb2xs ZWN0X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGZpbmRfcmVnbm8gKCJyZXN0YXJ0IiksIHJlZ3NldCAr IDApOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLW1pcHNfc3RvcmVfZ3JlZ3NldCAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQorK21pcHNfc3RvcmVfZ3JlZ3NldCAo Y29uc3Qgdm9pZCAqYnVmKQorIHsKKyAgIGNvbnN0IHVuaW9uIG1pcHNfcmVnaXN0ZXIgKnJlZ3Nl dCA9IGJ1ZjsKKyAgIGludCBpLCB1c2VfNjRiaXQ7CitAQCAtMjc2LDI0ICsyNjQsMjAgQEAgbWlw c19zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZworICAgdXNlXzY0Yml0ID0gKHJl Z2lzdGVyX3NpemUgKDApID09IDgpOworIAorICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspCist ICAgIG1pcHNfc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LCBpLCByZWdzZXQg KyBpKTsKKysgICAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHVzZV82NGJpdCwgaSwgcmVnc2V0ICsg aSk7CisgCistICBtaXBzX3N1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHVzZV82NGJpdCwgZmlu ZF9yZWdubyAoImxvIiksIHJlZ3NldCArIDMyKTsKKy0gIG1pcHNfc3VwcGx5X3JlZ2lzdGVyIChy ZWdjYWNoZSwgdXNlXzY0Yml0LCBmaW5kX3JlZ25vICgiaGkiKSwgcmVnc2V0ICsgMzMpOworLSAg bWlwc19zdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsIGZpbmRfcmVnbm8gKCJw YyIpLCByZWdzZXQgKyAzNCk7CistICBtaXBzX3N1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHVz ZV82NGJpdCwKKy0JCQlmaW5kX3JlZ25vICgiYmFkdmFkZHIiKSwgcmVnc2V0ICsgMzUpOworLSAg bWlwc19zdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsCistCQkJZmluZF9yZWdu byAoInN0YXR1cyIpLCByZWdzZXQgKyAzNik7CistICBtaXBzX3N1cHBseV9yZWdpc3RlciAocmVn Y2FjaGUsIHVzZV82NGJpdCwKKy0JCQlmaW5kX3JlZ25vICgiY2F1c2UiKSwgcmVnc2V0ICsgMzcp OworKyAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoImxvIiks IHJlZ3NldCArIDMyKTsKKysgIG1pcHNfc3VwcGx5X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGZpbmRf cmVnbm8gKCJoaSIpLCByZWdzZXQgKyAzMyk7CisrICBtaXBzX3N1cHBseV9yZWdpc3RlciAodXNl XzY0Yml0LCBmaW5kX3JlZ25vICgicGMiKSwgcmVnc2V0ICsgMzQpOworKyAgbWlwc19zdXBwbHlf cmVnaXN0ZXIgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoImJhZHZhZGRyIiksIHJlZ3NldCArIDM1 KTsKKysgIG1pcHNfc3VwcGx5X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGZpbmRfcmVnbm8gKCJzdGF0 dXMiKSwgcmVnc2V0ICsgMzYpOworKyAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHVzZV82NGJpdCwg ZmluZF9yZWdubyAoImNhdXNlIiksIHJlZ3NldCArIDM3KTsKKyAKKy0gIG1pcHNfc3VwcGx5X3Jl Z2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LAorLQkJCWZpbmRfcmVnbm8gKCJyZXN0YXJ0Iiks IHJlZ3NldCArIDApOworKyAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHVzZV82NGJpdCwgZmluZF9y ZWdubyAoInJlc3RhcnQiKSwgcmVnc2V0ICsgMCk7CisgfQorIAorIHN0YXRpYyB2b2lkCistbWlw c19maWxsX2ZwcmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCisr bWlwc19maWxsX2ZwcmVnc2V0ICh2b2lkICpidWYpCisgeworICAgdW5pb24gbWlwc19yZWdpc3Rl ciAqcmVnc2V0ID0gYnVmOworICAgaW50IGksIHVzZV82NGJpdCwgZmlyc3RfZnAsIGJpZ19lbmRp YW47CitAQCAtMzA1LDE5ICsyODksMTggQEAgbWlwc19maWxsX2ZwcmVnc2V0IChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZworICAgLyogU2VlIEdEQiBmb3IgYSBkaXNjdXNzaW9uIG9mIHRoaXMgcGVjdWxp YXIgbGF5b3V0LiAgKi8KKyAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKQorICAgICBpZiAodXNl XzY0Yml0KQorLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBmaXJzdF9mcCArIGks IHJlZ3NldFtpXS5idWYpOworKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGZpcnN0X2ZwICsgaSwg cmVnc2V0W2ldLmJ1Zik7CisgICAgIGVsc2UKKy0gICAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdj YWNoZSwgZmlyc3RfZnAgKyBpLAorKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGZpcnN0X2ZwICsg aSwKKyAJCQlyZWdzZXRbaSAmIH4xXS5idWYgKyA0ICogKGJpZ19lbmRpYW4gIT0gKGkgJiAxKSkp OworIAorLSAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyXzMyYml0IChyZWdjYWNoZSwgdXNlXzY0Yml0 LAorLQkJCSAgICAgICBmaW5kX3JlZ25vICgiZmNzciIpLCByZWdzZXRbMzJdLmJ1Zik7CistICBt aXBzX2NvbGxlY3RfcmVnaXN0ZXJfMzJiaXQgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsIGZpbmRfcmVn bm8gKCJmaXIiKSwKKysgIG1pcHNfY29sbGVjdF9yZWdpc3Rlcl8zMmJpdCAodXNlXzY0Yml0LCBm aW5kX3JlZ25vICgiZmNzciIpLCByZWdzZXRbMzJdLmJ1Zik7CisrICBtaXBzX2NvbGxlY3RfcmVn aXN0ZXJfMzJiaXQgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoImZpciIpLAorIAkJCSAgICAgICBy ZWdzZXRbMzJdLmJ1ZiArIDQpOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLW1pcHNfc3RvcmVfZnBy ZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKKyttaXBz X3N0b3JlX2ZwcmVnc2V0IChjb25zdCB2b2lkICpidWYpCisgeworICAgY29uc3QgdW5pb24gbWlw c19yZWdpc3RlciAqcmVnc2V0ID0gYnVmOworICAgaW50IGksIHVzZV82NGJpdCwgZmlyc3RfZnAs IGJpZ19lbmRpYW47CitAQCAtMzI5LDE0ICszMTIsMTMgQEAgbWlwc19zdG9yZV9mcHJlZ3NldCAo c3RydWN0IHJlZ2NhY2hlICpyZQorICAgLyogU2VlIEdEQiBmb3IgYSBkaXNjdXNzaW9uIG9mIHRo aXMgcGVjdWxpYXIgbGF5b3V0LiAgKi8KKyAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKQorICAg ICBpZiAodXNlXzY0Yml0KQorLSAgICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGZpcnN0 X2ZwICsgaSwgcmVnc2V0W2ldLmJ1Zik7CisrICAgICAgc3VwcGx5X3JlZ2lzdGVyIChmaXJzdF9m cCArIGksIHJlZ3NldFtpXS5idWYpOworICAgICBlbHNlCistICAgICAgc3VwcGx5X3JlZ2lzdGVy IChyZWdjYWNoZSwgZmlyc3RfZnAgKyBpLAorKyAgICAgIHN1cHBseV9yZWdpc3RlciAoZmlyc3Rf ZnAgKyBpLAorIAkJICAgICAgIHJlZ3NldFtpICYgfjFdLmJ1ZiArIDQgKiAoYmlnX2VuZGlhbiAh PSAoaSAmIDEpKSk7CisgCistICBtaXBzX3N1cHBseV9yZWdpc3Rlcl8zMmJpdCAocmVnY2FjaGUs IHVzZV82NGJpdCwKKy0JCQkgICAgICBmaW5kX3JlZ25vICgiZmNzciIpLCByZWdzZXRbMzJdLmJ1 Zik7CistICBtaXBzX3N1cHBseV9yZWdpc3Rlcl8zMmJpdCAocmVnY2FjaGUsIHVzZV82NGJpdCwg ZmluZF9yZWdubyAoImZpciIpLAorKyAgbWlwc19zdXBwbHlfcmVnaXN0ZXJfMzJiaXQgKHVzZV82 NGJpdCwgZmluZF9yZWdubyAoImZjc3IiKSwgcmVnc2V0WzMyXS5idWYpOworKyAgbWlwc19zdXBw bHlfcmVnaXN0ZXJfMzJiaXQgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoImZpciIpLAorIAkJCSAg ICAgIHJlZ3NldFszMl0uYnVmICsgNCk7CisgfQorICNlbmRpZiAvKiBIQVZFX1BUUkFDRV9HRVRS RUdTICovCistLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwkyMDEwLTAxLTIwIDIz OjU1OjM4LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93 LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNjksMjcgKzE2OSwy NiBAQCBwcGNfY2Fubm90X2ZldGNoX3JlZ2lzdGVyIChpbnQgcmVnbm8pCisgfQorIAorIHN0YXRp YyB2b2lkCistcHBjX2NvbGxlY3RfcHRyYWNlX3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLCBpbnQgcmVnbm8sIGNoYXIgKmJ1ZikKKytwcGNfY29sbGVjdF9wdHJhY2VfcmVnaXN0 ZXIgKGludCByZWdubywgY2hhciAqYnVmKQorIHsKKyAgIGludCBzaXplID0gcmVnaXN0ZXJfc2l6 ZSAocmVnbm8pOworIAorICAgbWVtc2V0IChidWYsIDAsIHNpemVvZiAobG9uZykpOworIAorICAg aWYgKHNpemUgPCBzaXplb2YgKGxvbmcpKQorLSAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNo ZSwgcmVnbm8sIGJ1ZiArIHNpemVvZiAobG9uZykgLSBzaXplKTsKKysgICAgY29sbGVjdF9yZWdp c3RlciAocmVnbm8sIGJ1ZiArIHNpemVvZiAobG9uZykgLSBzaXplKTsKKyAgIGVsc2UKKy0gICAg Y29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vLCBidWYpOworKyAgICBjb2xsZWN0X3Jl Z2lzdGVyIChyZWdubywgYnVmKTsKKyB9CisgCisgc3RhdGljIHZvaWQKKy1wcGNfc3VwcGx5X3B0 cmFjZV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKy0JCQkgICAgaW50IHJl Z25vLCBjb25zdCBjaGFyICpidWYpCisrcHBjX3N1cHBseV9wdHJhY2VfcmVnaXN0ZXIgKGludCBy ZWdubywgY29uc3QgY2hhciAqYnVmKQorIHsKKyAgIGludCBzaXplID0gcmVnaXN0ZXJfc2l6ZSAo cmVnbm8pOworICAgaWYgKHNpemUgPCBzaXplb2YgKGxvbmcpKQorLSAgICBzdXBwbHlfcmVnaXN0 ZXIgKHJlZ2NhY2hlLCByZWdubywgYnVmICsgc2l6ZW9mIChsb25nKSAtIHNpemUpOworKyAgICBz dXBwbHlfcmVnaXN0ZXIgKHJlZ25vLCBidWYgKyBzaXplb2YgKGxvbmcpIC0gc2l6ZSk7CisgICBl bHNlCistICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vLCBidWYpOworKyAgICBz dXBwbHlfcmVnaXN0ZXIgKHJlZ25vLCBidWYpOworIH0KKyAKKyAKK0BAIC0yMDAsNyArMTk5LDcg QEAgcHBjX3N1cHBseV9wdHJhY2VfcmVnaXN0ZXIgKHN0cnVjdCByZWdjYQorICAgIHJldHVybiB0 byBGRCBhbmQgQUREUiB0aGUgZmlsZSBoYW5kbGUgYW5kIE5QQyBwYXJhbWV0ZXIgYWRkcmVzcwor ICAgIHVzZWQgd2l0aCB0aGUgc3lzdGVtIGNhbGwuICBSZXR1cm4gbm9uLXplcm8gaWYgc3VjY2Vz c2Z1bC4gICovCisgc3RhdGljIGludAorLXBhcnNlX3NwdWZzX3J1biAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgaW50ICpmZCwgQ09SRV9BRERSICphZGRyKQorK3BhcnNlX3NwdWZzX3J1biAo aW50ICpmZCwgQ09SRV9BRERSICphZGRyKQorIHsKKyAgIENPUkVfQUREUiBjdXJyX3BjOworICAg aW50IGN1cnJfaW5zbjsKK0BAIC0yMDksMTAgKzIwOCwxMCBAQCBwYXJzZV9zcHVmc19ydW4gKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjCisgICBpZiAocmVnaXN0ZXJfc2l6ZSAoMCkgPT0gNCkKKyAg ICAgeworICAgICAgIHVuc2lnbmVkIGludCBwYywgcjAsIHIzLCByNDsKKy0gICAgICBjb2xsZWN0 X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAmcGMpOworLSAgICAgIGNvbGxlY3Rf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJyMCIsICZyMCk7CistICAgICAgY29sbGVjdF9y ZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgIm9yaWdfcjMiLCAmcjMpOworLSAgICAgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJyNCIsICZyNCk7CisrICAgICAgY29sbGVj dF9yZWdpc3Rlcl9ieV9uYW1lICgicGMiLCAmcGMpOworKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJf YnlfbmFtZSAoInIwIiwgJnIwKTsKKysgICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJv cmlnX3IzIiwgJnIzKTsKKysgICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJyNCIsICZy NCk7CisgICAgICAgY3Vycl9wYyA9IChDT1JFX0FERFIpIHBjOworICAgICAgIGN1cnJfcjAgPSAo aW50KSByMDsKKyAgICAgICAqZmQgPSAoaW50KSByMzsKK0BAIC0yMjEsMTAgKzIyMCwxMCBAQCBw YXJzZV9zcHVmc19ydW4gKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjCisgICBlbHNlCisgICAgIHsK KyAgICAgICB1bnNpZ25lZCBsb25nIHBjLCByMCwgcjMsIHI0OworLSAgICAgIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZwYyk7CistICAgICAgY29sbGVjdF9yZWdp c3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInIwIiwgJnIwKTsKKy0gICAgICBjb2xsZWN0X3JlZ2lz dGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAib3JpZ19yMyIsICZyMyk7CistICAgICAgY29sbGVjdF9y ZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInI0IiwgJnI0KTsKKysgICAgICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKCJwYyIsICZwYyk7CisrICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9u YW1lICgicjAiLCAmcjApOworKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoIm9yaWdf cjMiLCAmcjMpOworKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInI0IiwgJnI0KTsK KyAgICAgICBjdXJyX3BjID0gKENPUkVfQUREUikgcGM7CisgICAgICAgY3Vycl9yMCA9IChpbnQp IHIwOworICAgICAgICpmZCA9IChpbnQpIHIzOworQEAgLTI0NiwxMiArMjQ1LDEyIEBAIHBhcnNl X3NwdWZzX3J1biAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWMKKyB9CisgCisgc3RhdGljIENPUkVf QUREUgorLXBwY19nZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCisrcHBjX2dldF9w YyAodm9pZCkKKyB7CisgICBDT1JFX0FERFIgYWRkcjsKKyAgIGludCBmZDsKKyAKKy0gIGlmIChw YXJzZV9zcHVmc19ydW4gKHJlZ2NhY2hlLCAmZmQsICZhZGRyKSkKKysgIGlmIChwYXJzZV9zcHVm c19ydW4gKCZmZCwgJmFkZHIpKQorICAgICB7CisgICAgICAgdW5zaWduZWQgaW50IHBjOworICAg ICAgICgqdGhlX3RhcmdldC0+cmVhZF9tZW1vcnkpIChhZGRyLCAodW5zaWduZWQgY2hhciAqKSAm cGMsIDQpOworQEAgLTI2MCwyNCArMjU5LDI0IEBAIHBwY19nZXRfcGMgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUpCisgICBlbHNlIGlmIChyZWdpc3Rlcl9zaXplICgwKSA9PSA0KQorICAgICB7 CisgICAgICAgdW5zaWduZWQgaW50IHBjOworLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFt ZSAocmVnY2FjaGUsICJwYyIsICZwYyk7CisrICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1l ICgicGMiLCAmcGMpOworICAgICAgIHJldHVybiAoQ09SRV9BRERSKSBwYzsKKyAgICAgfQorICAg ZWxzZQorICAgICB7CisgICAgICAgdW5zaWduZWQgbG9uZyBwYzsKKy0gICAgICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAmcGMpOworKyAgICAgIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAoInBjIiwgJnBjKTsKKyAgICAgICByZXR1cm4gKENPUkVfQUREUikgcGM7 CisgICAgIH0KKyB9CisgCisgc3RhdGljIHZvaWQKKy1wcGNfc2V0X3BjIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMpCisrcHBjX3NldF9wYyAoQ09SRV9BRERSIHBjKQor IHsKKyAgIENPUkVfQUREUiBhZGRyOworICAgaW50IGZkOworIAorLSAgaWYgKHBhcnNlX3NwdWZz X3J1biAocmVnY2FjaGUsICZmZCwgJmFkZHIpKQorKyAgaWYgKHBhcnNlX3NwdWZzX3J1biAoJmZk LCAmYWRkcikpCisgICAgIHsKKyAgICAgICB1bnNpZ25lZCBpbnQgbmV3cGMgPSBwYzsKKyAgICAg ICAoKnRoZV90YXJnZXQtPndyaXRlX21lbW9yeSkgKGFkZHIsICh1bnNpZ25lZCBjaGFyICopICZu ZXdwYywgNCk7CitAQCAtMjg1LDEyICsyODQsMTIgQEAgcHBjX3NldF9wYyAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSwgQworICAgZWxzZSBpZiAocmVnaXN0ZXJfc2l6ZSAoMCkgPT0gNCkKKyAg ICAgeworICAgICAgIHVuc2lnbmVkIGludCBuZXdwYyA9IHBjOworLSAgICAgIHN1cHBseV9yZWdp c3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJm5ld3BjKTsKKysgICAgICBzdXBwbHlfcmVn aXN0ZXJfYnlfbmFtZSAoInBjIiwgJm5ld3BjKTsKKyAgICAgfQorICAgZWxzZQorICAgICB7Cisg ICAgICAgdW5zaWduZWQgbG9uZyBuZXdwYyA9IHBjOworLSAgICAgIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJm5ld3BjKTsKKysgICAgICBzdXBwbHlfcmVnaXN0ZXJf YnlfbmFtZSAoInBjIiwgJm5ld3BjKTsKKyAgICAgfQorIH0KKyAKK0BAIC00NTAsMTggKzQ0OSwx OCBAQCBwcGNfYnJlYWtwb2ludF9hdCAoQ09SRV9BRERSIHdoZXJlKQorIC8qIFByb3ZpZGUgb25s eSBhIGZpbGwgZnVuY3Rpb24gZm9yIHRoZSBnZW5lcmFsIHJlZ2lzdGVyIHNldC4gIHBzX2xnZXRy ZWdzCisgICAgd2lsbCB1c2UgdGhpcyBmb3IgTlBUTCBzdXBwb3J0LiAgKi8KKyAKKy1zdGF0aWMg dm9pZCBwcGNfZmlsbF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpi dWYpCisrc3RhdGljIHZvaWQgcHBjX2ZpbGxfZ3JlZ3NldCAodm9pZCAqYnVmKQorIHsKKyAgIGlu dCBpOworIAorICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspCistICAgIHBwY19jb2xsZWN0X3B0 cmFjZV9yZWdpc3RlciAocmVnY2FjaGUsIGksIChjaGFyICopIGJ1ZiArIHBwY19yZWdtYXBbaV0p OworKyAgICBwcGNfY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIgKGksIChjaGFyICopIGJ1ZiArIHBw Y19yZWdtYXBbaV0pOworIAorICAgZm9yIChpID0gNjQ7IGkgPCA3MDsgaSsrKQorLSAgICBwcGNf Y29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCAoY2hhciAqKSBidWYgKyBwcGNf cmVnbWFwW2ldKTsKKysgICAgcHBjX2NvbGxlY3RfcHRyYWNlX3JlZ2lzdGVyIChpLCAoY2hhciAq KSBidWYgKyBwcGNfcmVnbWFwW2ldKTsKKyAKKyAgIGZvciAoaSA9IDcxOyBpIDwgNzM7IGkrKykK Ky0gICAgcHBjX2NvbGxlY3RfcHRyYWNlX3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKGNoYXIgKikg YnVmICsgcHBjX3JlZ21hcFtpXSk7CisrICAgIHBwY19jb2xsZWN0X3B0cmFjZV9yZWdpc3RlciAo aSwgKGNoYXIgKikgYnVmICsgcHBjX3JlZ21hcFtpXSk7CisgfQorIAorICNpZm5kZWYgUFRSQUNF X0dFVFZTWFJFR1MKK0BAIC00NzIsNyArNDcxLDcgQEAgc3RhdGljIHZvaWQgcHBjX2ZpbGxfZ3Jl Z3NldCAoc3RydWN0IHJlZworICNkZWZpbmUgU0laRU9GX1ZTWFJFR1MgMzIqOAorIAorIHN0YXRp YyB2b2lkCistcHBjX2ZpbGxfdnN4cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2 b2lkICpidWYpCisrcHBjX2ZpbGxfdnN4cmVnc2V0ICh2b2lkICpidWYpCisgeworICAgaW50IGks IGJhc2U7CisgICBjaGFyICpyZWdzZXQgPSBidWY7CitAQCAtNDgyLDExICs0ODEsMTEgQEAgcHBj X2ZpbGxfdnN4cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZworIAorICAgYmFzZSA9IGZpbmRf cmVnbm8gKCJ2czBoIik7CisgICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykKKy0gICAgY29sbGVj dF9yZWdpc3RlciAocmVnY2FjaGUsIGJhc2UgKyBpLCAmcmVnc2V0W2kgKiA4XSk7CisrICAgIGNv bGxlY3RfcmVnaXN0ZXIgKGJhc2UgKyBpLCAmcmVnc2V0W2kgKiA4XSk7CisgfQorIAorIHN0YXRp YyB2b2lkCistcHBjX3N0b3JlX3ZzeHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwg Y29uc3Qgdm9pZCAqYnVmKQorK3BwY19zdG9yZV92c3hyZWdzZXQgKGNvbnN0IHZvaWQgKmJ1ZikK KyB7CisgICBpbnQgaSwgYmFzZTsKKyAgIGNvbnN0IGNoYXIgKnJlZ3NldCA9IGJ1ZjsKK0BAIC00 OTYsNyArNDk1LDcgQEAgcHBjX3N0b3JlX3ZzeHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZQor IAorICAgYmFzZSA9IGZpbmRfcmVnbm8gKCJ2czBoIik7CisgICBmb3IgKGkgPSAwOyBpIDwgMzI7 IGkrKykKKy0gICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgYmFzZSArIGksICZyZWdzZXRb aSAqIDhdKTsKKysgICAgc3VwcGx5X3JlZ2lzdGVyIChiYXNlICsgaSwgJnJlZ3NldFtpICogOF0p OworIH0KKyAKKyAjaWZuZGVmIFBUUkFDRV9HRVRWUlJFR1MKK0BAIC01MDcsNyArNTA2LDcgQEAg cHBjX3N0b3JlX3ZzeHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZQorICNkZWZpbmUgU0laRU9G X1ZSUkVHUyAzMyoxNis0CisgCisgc3RhdGljIHZvaWQKKy1wcGNfZmlsbF92cnJlZ3NldCAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQorK3BwY19maWxsX3ZycmVnc2V0ICh2 b2lkICpidWYpCisgeworICAgaW50IGksIGJhc2U7CisgICBjaGFyICpyZWdzZXQgPSBidWY7CitA QCAtNTE3LDE0ICs1MTYsMTQgQEAgcHBjX2ZpbGxfdnJyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAq cmVnYworIAorICAgYmFzZSA9IGZpbmRfcmVnbm8gKCJ2cjAiKTsKKyAgIGZvciAoaSA9IDA7IGkg PCAzMjsgaSsrKQorLSAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgYmFzZSArIGksICZy ZWdzZXRbaSAqIDE2XSk7CisrICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGJhc2UgKyBpLCAmcmVnc2V0 W2kgKiAxNl0pOworIAorLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInZz Y3IiLCAmcmVnc2V0WzMyICogMTYgKyAxMl0pOworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1l IChyZWdjYWNoZSwgInZyc2F2ZSIsICZyZWdzZXRbMzMgKiAxNl0pOworKyAgY29sbGVjdF9yZWdp c3Rlcl9ieV9uYW1lICgidnNjciIsICZyZWdzZXRbMzIgKiAxNiArIDEyXSk7CisrICBjb2xsZWN0 X3JlZ2lzdGVyX2J5X25hbWUgKCJ2cnNhdmUiLCAmcmVnc2V0WzMzICogMTZdKTsKKyB9CisgCisg c3RhdGljIHZvaWQKKy1wcGNfc3RvcmVfdnJyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUsIGNvbnN0IHZvaWQgKmJ1ZikKKytwcGNfc3RvcmVfdnJyZWdzZXQgKGNvbnN0IHZvaWQgKmJ1 ZikKKyB7CisgICBpbnQgaSwgYmFzZTsKKyAgIGNvbnN0IGNoYXIgKnJlZ3NldCA9IGJ1ZjsKK0BA IC01MzQsMTAgKzUzMywxMCBAQCBwcGNfc3RvcmVfdnJyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAq cmVnCisgCisgICBiYXNlID0gZmluZF9yZWdubyAoInZyMCIpOworICAgZm9yIChpID0gMDsgaSA8 IDMyOyBpKyspCistICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGJhc2UgKyBpLCAmcmVn c2V0W2kgKiAxNl0pOworKyAgICBzdXBwbHlfcmVnaXN0ZXIgKGJhc2UgKyBpLCAmcmVnc2V0W2kg KiAxNl0pOworIAorLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAidnNjciIs ICZyZWdzZXRbMzIgKiAxNiArIDEyXSk7CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVn Y2FjaGUsICJ2cnNhdmUiLCAmcmVnc2V0WzMzICogMTZdKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lICgidnNjciIsICZyZWdzZXRbMzIgKiAxNiArIDEyXSk7CisrICBzdXBwbHlfcmVnaXN0 ZXJfYnlfbmFtZSAoInZyc2F2ZSIsICZyZWdzZXRbMzMgKiAxNl0pOworIH0KKyAKKyAjaWZuZGVm IFBUUkFDRV9HRVRFVlJSRUdTCitAQCAtNTUzLDcgKzU1Miw3IEBAIHN0cnVjdCBnZGJfZXZycmVn c2V0X3QKKyB9OworIAorIHN0YXRpYyB2b2lkCistcHBjX2ZpbGxfZXZycmVnc2V0IChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCisrcHBjX2ZpbGxfZXZycmVnc2V0ICh2b2lk ICpidWYpCisgeworICAgaW50IGksIGV2MDsKKyAgIHN0cnVjdCBnZGJfZXZycmVnc2V0X3QgKnJl Z3NldCA9IGJ1ZjsKK0BAIC01NjMsMTQgKzU2MiwxNCBAQCBwcGNfZmlsbF9ldnJyZWdzZXQgKHN0 cnVjdCByZWdjYWNoZSAqcmVnCisgCisgICBldjAgPSBmaW5kX3JlZ25vICgiZXYwaCIpOworICAg Zm9yIChpID0gMDsgaSA8IDMyOyBpKyspCistICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hl LCBldjAgKyBpLCAmcmVnc2V0LT5ldnJbaV0pOworKyAgICBjb2xsZWN0X3JlZ2lzdGVyIChldjAg KyBpLCAmcmVnc2V0LT5ldnJbaV0pOworIAorLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChy ZWdjYWNoZSwgImFjYyIsICZyZWdzZXQtPmFjYyk7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25h bWUgKHJlZ2NhY2hlLCAic3BlZnNjciIsICZyZWdzZXQtPnNwZWZzY3IpOworKyAgY29sbGVjdF9y ZWdpc3Rlcl9ieV9uYW1lICgiYWNjIiwgJnJlZ3NldC0+YWNjKTsKKysgIGNvbGxlY3RfcmVnaXN0 ZXJfYnlfbmFtZSAoInNwZWZzY3IiLCAmcmVnc2V0LT5zcGVmc2NyKTsKKyB9CisgCisgc3RhdGlj IHZvaWQKKy1wcGNfc3RvcmVfZXZycmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBj b25zdCB2b2lkICpidWYpCisrcHBjX3N0b3JlX2V2cnJlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQor IHsKKyAgIGludCBpLCBldjA7CisgICBjb25zdCBzdHJ1Y3QgZ2RiX2V2cnJlZ3NldF90ICpyZWdz ZXQgPSBidWY7CitAQCAtNTgwLDEwICs1NzksMTAgQEAgcHBjX3N0b3JlX2V2cnJlZ3NldCAoc3Ry dWN0IHJlZ2NhY2hlICpyZQorIAorICAgZXYwID0gZmluZF9yZWdubyAoImV2MGgiKTsKKyAgIGZv ciAoaSA9IDA7IGkgPCAzMjsgaSsrKQorLSAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBl djAgKyBpLCAmcmVnc2V0LT5ldnJbaV0pOworKyAgICBzdXBwbHlfcmVnaXN0ZXIgKGV2MCArIGks ICZyZWdzZXQtPmV2cltpXSk7CisgCistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2Fj aGUsICJhY2MiLCAmcmVnc2V0LT5hY2MpOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJl Z2NhY2hlLCAic3BlZnNjciIsICZyZWdzZXQtPnNwZWZzY3IpOworKyAgc3VwcGx5X3JlZ2lzdGVy X2J5X25hbWUgKCJhY2MiLCAmcmVnc2V0LT5hY2MpOworKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25h bWUgKCJzcGVmc2NyIiwgJnJlZ3NldC0+c3BlZnNjcik7CisgfQorIAorIHN0cnVjdCByZWdzZXRf aW5mbyB0YXJnZXRfcmVnc2V0c1tdID0geworLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1zMzkw LWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ri c2VydmVyL2xpbnV4LXMzOTAtbG93LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAx MDAKK0BAIC0xMDYsNyArMTA2LDcgQEAgczM5MF9jYW5ub3Rfc3RvcmVfcmVnaXN0ZXIgKGludCBy ZWdubykKKyB9CisgCisgc3RhdGljIHZvaWQKKy1zMzkwX2NvbGxlY3RfcHRyYWNlX3JlZ2lzdGVy IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8sIGNoYXIgKmJ1ZikKKytzMzkw X2NvbGxlY3RfcHRyYWNlX3JlZ2lzdGVyIChpbnQgcmVnbm8sIGNoYXIgKmJ1ZikKKyB7CisgICBp bnQgc2l6ZSA9IHJlZ2lzdGVyX3NpemUgKHJlZ25vKTsKKyAgIGlmIChzaXplIDwgc2l6ZW9mIChs b25nKSkKK0BAIC0xMjMsOSArMTIzLDkgQEAgczM5MF9jb2xsZWN0X3B0cmFjZV9yZWdpc3RlciAo c3RydWN0IHJlZworIAl9CisgICAgICAgZWxzZSBpZiAocmVnYWRkciA9PSBQVF9QU1dBRERSCisg CSAgICAgICB8fCAocmVnYWRkciA+PSBQVF9HUFIwICYmIHJlZ2FkZHIgPD0gUFRfR1BSMTUpKQor LQljb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbm8sIGJ1ZiArIHNpemVvZiAobG9uZykg LSBzaXplKTsKKysJY29sbGVjdF9yZWdpc3RlciAocmVnbm8sIGJ1ZiArIHNpemVvZiAobG9uZykg LSBzaXplKTsKKyAgICAgICBlbHNlCistCWNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdu bywgYnVmKTsKKysJY29sbGVjdF9yZWdpc3RlciAocmVnbm8sIGJ1Zik7CisgCisgICAgICAgLyog V2hlbiBkZWJ1Z2dpbmcgYSAzMi1iaXQgaW5mZXJpb3Igb24gYSA2NC1iaXQgaG9zdCwgbWFrZSBz dXJlCisgCSB0aGUgMzEtYml0IGFkZHJlc3NpbmcgbW9kZSBiaXQgaXMgc2V0IGluIHRoZSBQU1cg bWFzay4gICovCitAQCAtMTM3LDcgKzEzNyw3IEBAIHMzOTBfY29sbGVjdF9wdHJhY2VfcmVnaXN0 ZXIgKHN0cnVjdCByZWcKKyB9CisgCisgc3RhdGljIHZvaWQKKy1zMzkwX3N1cHBseV9wdHJhY2Vf cmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubywgY29uc3QgY2hh ciAqYnVmKQorK3MzOTBfc3VwcGx5X3B0cmFjZV9yZWdpc3RlciAoaW50IHJlZ25vLCBjb25zdCBj aGFyICpidWYpCisgeworICAgaW50IHNpemUgPSByZWdpc3Rlcl9zaXplIChyZWdubyk7CisgICBp ZiAoc2l6ZSA8IHNpemVvZiAobG9uZykpCitAQCAtMTUyLDE4ICsxNTIsMTggQEAgczM5MF9zdXBw bHlfcHRyYWNlX3JlZ2lzdGVyIChzdHJ1Y3QgcmVnYworIAl9CisgICAgICAgZWxzZSBpZiAocmVn YWRkciA9PSBQVF9QU1dBRERSCisgCSAgICAgICB8fCAocmVnYWRkciA+PSBQVF9HUFIwICYmIHJl Z2FkZHIgPD0gUFRfR1BSMTUpKQorLQlzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubywg YnVmICsgc2l6ZW9mIChsb25nKSAtIHNpemUpOworKwlzdXBwbHlfcmVnaXN0ZXIgKHJlZ25vLCBi dWYgKyBzaXplb2YgKGxvbmcpIC0gc2l6ZSk7CisgICAgICAgZWxzZQorLQlzdXBwbHlfcmVnaXN0 ZXIgKHJlZ2NhY2hlLCByZWdubywgYnVmKTsKKysJc3VwcGx5X3JlZ2lzdGVyIChyZWdubywgYnVm KTsKKyAgICAgfQorICAgZWxzZQorLSAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdu bywgYnVmKTsKKysgICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdubywgYnVmKTsKKyB9CisgCisgLyog UHJvdmlkZSBvbmx5IGEgZmlsbCBmdW5jdGlvbiBmb3IgdGhlIGdlbmVyYWwgcmVnaXN0ZXIgc2V0 LiAgcHNfbGdldHJlZ3MKKyAgICB3aWxsIHVzZSB0aGlzIGZvciBOUFRMIHN1cHBvcnQuICAqLwor IAorLXN0YXRpYyB2b2lkIHMzOTBfZmlsbF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCB2b2lkICpidWYpCisrc3RhdGljIHZvaWQgczM5MF9maWxsX2dyZWdzZXQgKHZvaWQgKmJ1 ZikKKyB7CisgICBpbnQgaTsKKyAKK0BAIC0xNzMsNyArMTczLDcgQEAgc3RhdGljIHZvaWQgczM5 MF9maWxsX2dyZWdzZXQgKHN0cnVjdCByZQorIAkgIHx8IHRoZV9sb3dfdGFyZ2V0LnJlZ21hcFtp XSA+IFBUX0FDUjE1KQorIAljb250aW51ZTsKKyAKKy0gICAgICBzMzkwX2NvbGxlY3RfcHRyYWNl X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKGNoYXIgKikgYnVmCisrICAgICAgczM5MF9jb2xsZWN0 X3B0cmFjZV9yZWdpc3RlciAoaSwgKGNoYXIgKikgYnVmCisgCQkJCSAgICAgICArIHRoZV9sb3df dGFyZ2V0LnJlZ21hcFtpXSk7CisgICAgIH0KKyB9CitAQCAtMTg4LDEyICsxODgsMTIgQEAgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgczM5MF9icmVha3BvaQorICNkZWZpbmUgczM5MF9icmVh a3BvaW50X2xlbiAyCisgCisgc3RhdGljIENPUkVfQUREUgorLXMzOTBfZ2V0X3BjIChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlKQorK3MzOTBfZ2V0X3BjICgpCisgeworICAgaWYgKHJlZ2lzdGVy X3NpemUgKDApID09IDQpCisgICAgIHsKKyAgICAgICB1bnNpZ25lZCBpbnQgcGM7CistICAgICAg Y29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBzd2EiLCAmcGMpOworKyAgICAg IGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBzd2EiLCAmcGMpOworICNpZm5kZWYgX19zMzkw eF9fCisgICAgICAgcGMgJj0gMHg3ZmZmZmZmZjsKKyAjZW5kaWYKK0BAIC0yMDIsMTMgKzIwMiwx MyBAQCBzMzkwX2dldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKKyAgIGVsc2UKKyAg ICAgeworICAgICAgIHVuc2lnbmVkIGxvbmcgcGM7CistICAgICAgY29sbGVjdF9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgInBzd2EiLCAmcGMpOworKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJf YnlfbmFtZSAoInBzd2EiLCAmcGMpOworICAgICAgIHJldHVybiBwYzsKKyAgICAgfQorIH0KKyAK KyBzdGF0aWMgdm9pZAorLXMzOTBfc2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBD T1JFX0FERFIgbmV3cGMpCisrczM5MF9zZXRfcGMgKENPUkVfQUREUiBuZXdwYykKKyB7CisgICBp ZiAocmVnaXN0ZXJfc2l6ZSAoMCkgPT0gNCkKKyAgICAgeworQEAgLTIxNiwxMiArMjE2LDEyIEBA IHMzOTBfc2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCAKKyAjaWZuZGVmIF9fczM5 MHhfXworICAgICAgIHBjIHw9IDB4ODAwMDAwMDA7CisgI2VuZGlmCistICAgICAgc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicHN3YSIsICZwYyk7CisrICAgICAgc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKCJwc3dhIiwgJnBjKTsKKyAgICAgfQorICAgZWxzZQorICAgICB7Cisg ICAgICAgdW5zaWduZWQgbG9uZyBwYyA9IG5ld3BjOworLSAgICAgIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgInBzd2EiLCAmcGMpOworKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lICgicHN3YSIsICZwYyk7CisgICAgIH0KKyB9CisgCitAQCAtMjY4LDggKzI2OCw3IEBA IHMzOTBfYXJjaF9zZXR1cCAodm9pZCkKKyAjaWZkZWYgX19zMzkweF9fCisgICB7CisgICAgIHVu c2lnbmVkIGludCBwc3dtOworLSAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlID0gZ2V0X3Ro cmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7CistICAgIGNvbGxlY3RfcmVnaXN0 ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwc3dtIiwgJnBzd20pOworKyAgICBjb2xsZWN0X3JlZ2lz dGVyX2J5X25hbWUgKCJwc3dtIiwgJnBzd20pOworICAgICBpZiAocHN3bSAmIDEpCisgICAgICAg aW5pdF9yZWdpc3RlcnNfczM5MHhfbGludXg2NCAoKTsKKyAKKy0tLSAuL2dkYi9nZGJzZXJ2ZXIv bGludXgtc2gtbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKKysrKyAu L2dkYi9nZGJzZXJ2ZXIvbGludXgtc2gtbG93LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAw MDAgKzAxMDAKK0BAIC01OSwxOCArNTksMTggQEAgc2hfY2Fubm90X2ZldGNoX3JlZ2lzdGVyIChp bnQgcmVnbm8pCisgfQorIAorIHN0YXRpYyBDT1JFX0FERFIKKy1zaF9nZXRfcGMgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUpCisrc2hfZ2V0X3BjICgpCisgeworICAgdW5zaWduZWQgbG9uZyBw YzsKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZwYyk7Cisr ICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJwYyIsICZwYyk7CisgICByZXR1cm4gcGM7Cisg fQorIAorIHN0YXRpYyB2b2lkCistc2hfc2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBDT1JFX0FERFIgcGMpCisrc2hfc2V0X3BjIChDT1JFX0FERFIgcGMpCisgeworICAgdW5zaWdu ZWQgbG9uZyBuZXdwYyA9IHBjOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hl LCAicGMiLCAmbmV3cGMpOworKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJwYyIsICZuZXdw Yyk7CisgfQorIAorIC8qIENvcnJlY3QgaW4gZWl0aGVyIGVuZGlhbm5lc3MsIG9idmlvdXNseS4g ICovCitAQCAtOTQsMTMgKzk0LDEzIEBAIHNoX2JyZWFrcG9pbnRfYXQgKENPUkVfQUREUiB3aGVy ZSkKKyAvKiBQcm92aWRlIG9ubHkgYSBmaWxsIGZ1bmN0aW9uIGZvciB0aGUgZ2VuZXJhbCByZWdp c3RlciBzZXQuICBwc19sZ2V0cmVncworICAgIHdpbGwgdXNlIHRoaXMgZm9yIE5QVEwgc3VwcG9y dC4gICovCisgCistc3RhdGljIHZvaWQgc2hfZmlsbF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCB2b2lkICpidWYpCisrc3RhdGljIHZvaWQgc2hfZmlsbF9ncmVnc2V0ICh2b2lk ICpidWYpCisgeworICAgaW50IGk7CisgCisgICBmb3IgKGkgPSAwOyBpIDwgMjM7IGkrKykKKyAg ICAgaWYgKHNoX3JlZ21hcFtpXSAhPSAtMSkKKy0gICAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdj YWNoZSwgaSwgKGNoYXIgKikgYnVmICsgc2hfcmVnbWFwW2ldKTsKKysgICAgICBjb2xsZWN0X3Jl Z2lzdGVyIChpLCAoY2hhciAqKSBidWYgKyBzaF9yZWdtYXBbaV0pOworIH0KKyAKKyBzdHJ1Y3Qg cmVnc2V0X2luZm8gdGFyZ2V0X3JlZ3NldHNbXSA9IHsKKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvbGlu dXgtc3BhcmMtbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKKysrKyAu L2dkYi9nZGJzZXJ2ZXIvbGludXgtc3BhcmMtbG93LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAw MDAwMDAgKzAxMDAKK0BAIC0xMTMsNyArMTEzLDcgQEAgc3BhcmNfY2Fubm90X2ZldGNoX3JlZ2lz dGVyIChpbnQgcmVnbm8pCisgfQorIAorIHN0YXRpYyB2b2lkCistc3BhcmNfZmlsbF9ncmVnc2V0 X3RvX3N0YWNrIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCisr c3BhcmNfZmlsbF9ncmVnc2V0X3RvX3N0YWNrIChjb25zdCB2b2lkICpidWYpCisgeworICAgaW50 IGk7CisgICBDT1JFX0FERFIgYWRkciA9IDA7CitAQCAtMTI4LDE0ICsxMjgsMTQgQEAgc3BhcmNf ZmlsbF9ncmVnc2V0X3RvX3N0YWNrIChzdHJ1Y3QgcmVnYworIAorICAgZm9yIChpID0gbDBfcmVn bm87IGkgPD0gaTdfcmVnbm87IGkrKykKKyAgICAgeworLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXIg KHJlZ2NhY2hlLCBpLCB0bXBfcmVnX2J1Zik7CisrICAgICAgY29sbGVjdF9yZWdpc3RlciAoaSwg dG1wX3JlZ19idWYpOworICAgICAgICgqdGhlX3RhcmdldC0+d3JpdGVfbWVtb3J5KSAoYWRkciwg dG1wX3JlZ19idWYsIHNpemVvZih0bXBfcmVnX2J1ZikpOworICAgICAgIGFkZHIgKz0gc2l6ZW9m KHRtcF9yZWdfYnVmKTsKKyAgICAgfQorIH0KKyAKKyBzdGF0aWMgdm9pZAorLXNwYXJjX2ZpbGxf Z3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQorK3NwYXJjX2Zp bGxfZ3JlZ3NldCAodm9pZCAqYnVmKQorIHsKKyAgIGludCBpOworICAgaW50IHJhbmdlOworQEAg LTE0MywyNSArMTQzLDI1IEBAIHNwYXJjX2ZpbGxfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpy ZWcKKyAgIGZvciAocmFuZ2UgPSAwOyByYW5nZSA8IE5fR1JFR1NfUkFOR0VTOyByYW5nZSsrKQor ICAgICBmb3IgKGkgPSBncmVnc19yYW5nZXNbcmFuZ2VdLnJlZ25vX3N0YXJ0OyBpIDw9IGdyZWdz X3Jhbmdlc1tyYW5nZV0ucmVnbm9fZW5kOyBpKyspCisgICAgICAgaWYgKHNwYXJjX3JlZ21hcFtp XSAhPSAtMSkKKy0JY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGksICgoY2hhciAqKSBidWYp ICsgc3BhcmNfcmVnbWFwW2ldKTsKKysJY29sbGVjdF9yZWdpc3RlciAoaSwgKChjaGFyICopIGJ1 ZikgKyBzcGFyY19yZWdtYXBbaV0pOworIAorLSAgc3BhcmNfZmlsbF9ncmVnc2V0X3RvX3N0YWNr IChyZWdjYWNoZSwgYnVmKTsKKysgIHNwYXJjX2ZpbGxfZ3JlZ3NldF90b19zdGFjayAoYnVmKTsK KyB9CisgCisgc3RhdGljIHZvaWQKKy1zcGFyY19maWxsX2ZwcmVnc2V0IChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCisrc3BhcmNfZmlsbF9mcHJlZ3NldCAodm9pZCAqYnVm KQorIHsKKyAgIGludCBpOworICAgaW50IHJhbmdlOworIAorICAgZm9yIChyYW5nZSA9IDA7IHJh bmdlIDwgTl9GUFJFR1NfUkFOR0VTOyByYW5nZSsrKQorICAgICBmb3IgKGkgPSBmcHJlZ3NfcmFu Z2VzW3JhbmdlXS5yZWdub19zdGFydDsgaSA8PSBmcHJlZ3NfcmFuZ2VzW3JhbmdlXS5yZWdub19l bmQ7IGkrKykKKy0gICAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKChjaGFyICop IGJ1ZikgKyBzcGFyY19yZWdtYXBbaV0pOworKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGksICgo Y2hhciAqKSBidWYpICsgc3BhcmNfcmVnbWFwW2ldKTsKKyAKKyB9CisgCisgc3RhdGljIHZvaWQK Ky1zcGFyY19zdG9yZV9ncmVnc2V0X2Zyb21fc3RhY2sgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUsIGNvbnN0IHZvaWQgKmJ1ZikKKytzcGFyY19zdG9yZV9ncmVnc2V0X2Zyb21fc3RhY2sgKGNv bnN0IHZvaWQgKmJ1ZikKKyB7CisgICBpbnQgaTsKKyAgIENPUkVfQUREUiBhZGRyID0gMDsKK0BA IC0xNzcsMTMgKzE3NywxMyBAQCBzcGFyY19zdG9yZV9ncmVnc2V0X2Zyb21fc3RhY2sgKHN0cnVj dCByCisgICBmb3IgKGkgPSBsMF9yZWdubzsgaSA8PSBpN19yZWdubzsgaSsrKQorICAgICB7Cisg ICAgICAgKCp0aGVfdGFyZ2V0LT5yZWFkX21lbW9yeSkgKGFkZHIsIHRtcF9yZWdfYnVmLCBzaXpl b2YodG1wX3JlZ19idWYpKTsKKy0gICAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCB0 bXBfcmVnX2J1Zik7CisrICAgICAgc3VwcGx5X3JlZ2lzdGVyIChpLCB0bXBfcmVnX2J1Zik7Cisg ICAgICAgYWRkciArPSBzaXplb2YodG1wX3JlZ19idWYpOworICAgICB9CisgfQorIAorIHN0YXRp YyB2b2lkCistc3BhcmNfc3RvcmVfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwg Y29uc3Qgdm9pZCAqYnVmKQorK3NwYXJjX3N0b3JlX2dyZWdzZXQgKGNvbnN0IHZvaWQgKmJ1ZikK KyB7CisgICBpbnQgaTsKKyAgIGNoYXIgemVyb2J1Zls4XTsKK0BAIC0xOTQsMzMgKzE5NCwzMSBA QCBzcGFyY19zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlCisgICBmb3IgKHJhbmdl ID0gMDsgcmFuZ2UgPCBOX0dSRUdTX1JBTkdFUzsgcmFuZ2UrKykKKyAgICAgZm9yIChpID0gZ3Jl Z3NfcmFuZ2VzW3JhbmdlXS5yZWdub19zdGFydDsgaSA8PSBncmVnc19yYW5nZXNbcmFuZ2VdLnJl Z25vX2VuZDsgaSsrKQorICAgICAgIGlmIChzcGFyY19yZWdtYXBbaV0gIT0gLTEpCistCXN1cHBs eV9yZWdpc3RlciAocmVnY2FjaGUsIGksICgoY2hhciAqKSBidWYpICsgc3BhcmNfcmVnbWFwW2ld KTsKKysJc3VwcGx5X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIHNwYXJjX3JlZ21hcFtp XSk7CisgICAgICAgZWxzZQorLQlzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCB6ZXJvYnVm KTsKKysJc3VwcGx5X3JlZ2lzdGVyIChpLCB6ZXJvYnVmKTsKKyAKKy0gIHNwYXJjX3N0b3JlX2dy ZWdzZXRfZnJvbV9zdGFjayAocmVnY2FjaGUsIGJ1Zik7CisrICBzcGFyY19zdG9yZV9ncmVnc2V0 X2Zyb21fc3RhY2sgKGJ1Zik7CisgfQorIAorIHN0YXRpYyB2b2lkCistc3BhcmNfc3RvcmVfZnBy ZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKKytzcGFy Y19zdG9yZV9mcHJlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQorIHsKKyAgIGludCBpOworICAgaW50 IHJhbmdlOworIAorICAgZm9yIChyYW5nZSA9IDA7IHJhbmdlIDwgTl9GUFJFR1NfUkFOR0VTOyBy YW5nZSsrKQorLSAgICBmb3IgKGkgPSBmcHJlZ3NfcmFuZ2VzW3JhbmdlXS5yZWdub19zdGFydDsK Ky0JIGkgPD0gZnByZWdzX3Jhbmdlc1tyYW5nZV0ucmVnbm9fZW5kOworLQkgaSsrKQorLSAgICAg IHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGksICgoY2hhciAqKSBidWYpICsgc3BhcmNfcmVn bWFwW2ldKTsKKysgICAgZm9yIChpID0gZnByZWdzX3Jhbmdlc1tyYW5nZV0ucmVnbm9fc3RhcnQ7 IGkgPD0gZnByZWdzX3Jhbmdlc1tyYW5nZV0ucmVnbm9fZW5kOyBpKyspCisrICAgICAgc3VwcGx5 X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIHNwYXJjX3JlZ21hcFtpXSk7CisgfQorIAor IGV4dGVybiBpbnQgZGVidWdfdGhyZWFkczsKKyAKKyBzdGF0aWMgQ09SRV9BRERSCistc3BhcmNf Z2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQorK3NwYXJjX2dldF9wYyAoKQorIHsK Ky0gIHVuc2lnbmVkIGxvbmcgcGM7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2Nh Y2hlLCAicGMiLCAmcGMpOworKyAgQ09SRV9BRERSIHBjOworKyAgY29sbGVjdF9yZWdpc3Rlcl9i eV9uYW1lICgicGMiLCAmcGMpOworICAgaWYgKGRlYnVnX3RocmVhZHMpCisgICAgIGZwcmludGYg KHN0ZGVyciwgInN0b3AgcGMgaXMgJTA4bHhcbiIsIHBjKTsKKyAgIHJldHVybiBwYzsKK0BAIC0y NDksMTIgKzI0NywxMSBAQCBzcGFyY19icmVha3BvaW50X2F0IChDT1JFX0FERFIgd2hlcmUpCisg ICAgaXMgb3V0c2lkZSBvZiB0aGUgZnVuY3Rpb24uICBTbyByYXRoZXIgdGhhbiBpbXBvcnRpbmcg c29mdHdhcmUgc2luZ2xlLXN0ZXAsCisgICAgd2UgY2FuIGp1c3QgcnVuIHVudGlsIGV4aXQuICAq LworIHN0YXRpYyBDT1JFX0FERFIKKy1zcGFyY19yZWluc2VydF9hZGRyICh2b2lkKQorK3NwYXJj X3JlaW5zZXJ0X2FkZHIgKCkKKyB7CistICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlID0gZ2V0 X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7CisgICBDT1JFX0FERFIgbHI7 CisgICAvKiBPNyBpcyB0aGUgZXF1aXZhbGVudCB0byB0aGUgJ2xyJyBvZiBvdGhlciBhcmNocy4g ICovCistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAibzciLCAmbHIpOwor KyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgibzciLCAmbHIpOworICAgcmV0dXJuIGxyOwor IH0KKyAKKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvbGludXgteDg2LWxvdy5jCTIwMTAtMDEtMjAgMjM6 NTU6MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXg4Ni1sb3cu YwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAorQEAgLTE3Myw3ICsxNzMsNyBA QCBpMzg2X2Nhbm5vdF9mZXRjaF9yZWdpc3RlciAoaW50IHJlZ25vKQorIH0KKyAKKyBzdGF0aWMg dm9pZAorLXg4Nl9maWxsX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQg KmJ1ZikKKyt4ODZfZmlsbF9ncmVnc2V0ICh2b2lkICpidWYpCisgeworICAgaW50IGk7CisgCitA QCAtMTgyLDIwICsxODIsMTkgQEAgeDg2X2ZpbGxfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpy ZWdjYQorICAgICB7CisgICAgICAgZm9yIChpID0gMDsgaSA8IFg4Nl82NF9OVU1fUkVHUzsgaSsr KQorIAlpZiAoeDg2XzY0X3JlZ21hcFtpXSAhPSAtMSkKKy0JICBjb2xsZWN0X3JlZ2lzdGVyIChy ZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1ZikgKyB4ODZfNjRfcmVnbWFwW2ldKTsKKysJICBjb2xs ZWN0X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIHg4Nl82NF9yZWdtYXBbaV0pOworICAg ICAgIHJldHVybjsKKyAgICAgfQorICNlbmRpZgorIAorICAgZm9yIChpID0gMDsgaSA8IEkzODZf TlVNX1JFR1M7IGkrKykKKy0gICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGksICgoY2hh ciAqKSBidWYpICsgaTM4Nl9yZWdtYXBbaV0pOworKyAgICBjb2xsZWN0X3JlZ2lzdGVyIChpLCAo KGNoYXIgKikgYnVmKSArIGkzODZfcmVnbWFwW2ldKTsKKyAKKy0gIGNvbGxlY3RfcmVnaXN0ZXJf YnlfbmFtZSAocmVnY2FjaGUsICJvcmlnX2VheCIsCistCQkJICAgICgoY2hhciAqKSBidWYpICsg T1JJR19FQVggKiA0KTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoIm9yaWdfZWF4Iiwg KChjaGFyICopIGJ1ZikgKyBPUklHX0VBWCAqIDQpOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLXg4 Nl9zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpi dWYpCisreDg2X3N0b3JlX2dyZWdzZXQgKGNvbnN0IHZvaWQgKmJ1ZikKKyB7CisgICBpbnQgaTsK KyAKK0BAIC0yMDQsNTAgKzIwMyw0OSBAQCB4ODZfc3RvcmVfZ3JlZ3NldCAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjCisgICAgIHsKKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgWDg2XzY0X05VTV9SRUdT OyBpKyspCisgCWlmICh4ODZfNjRfcmVnbWFwW2ldICE9IC0xKQorLQkgIHN1cHBseV9yZWdpc3Rl ciAocmVnY2FjaGUsIGksICgoY2hhciAqKSBidWYpICsgeDg2XzY0X3JlZ21hcFtpXSk7CisrCSAg c3VwcGx5X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIHg4Nl82NF9yZWdtYXBbaV0pOwor ICAgICAgIHJldHVybjsKKyAgICAgfQorICNlbmRpZgorIAorICAgZm9yIChpID0gMDsgaSA8IEkz ODZfTlVNX1JFR1M7IGkrKykKKy0gICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKChj aGFyICopIGJ1ZikgKyBpMzg2X3JlZ21hcFtpXSk7CisrICAgIHN1cHBseV9yZWdpc3RlciAoaSwg KChjaGFyICopIGJ1ZikgKyBpMzg2X3JlZ21hcFtpXSk7CisgCistICBzdXBwbHlfcmVnaXN0ZXJf YnlfbmFtZSAocmVnY2FjaGUsICJvcmlnX2VheCIsCistCQkJICAgKChjaGFyICopIGJ1ZikgKyBP UklHX0VBWCAqIDQpOworKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJvcmlnX2VheCIsICgo Y2hhciAqKSBidWYpICsgT1JJR19FQVggKiA0KTsKKyB9CisgCisgc3RhdGljIHZvaWQKKy14ODZf ZmlsbF9mcHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQorK3g4 Nl9maWxsX2ZwcmVnc2V0ICh2b2lkICpidWYpCisgeworICNpZmRlZiBfX3g4Nl82NF9fCistICBp Mzg3X2NhY2hlX3RvX2Z4c2F2ZSAocmVnY2FjaGUsIGJ1Zik7CisrICBpMzg3X2NhY2hlX3RvX2Z4 c2F2ZSAoYnVmKTsKKyAjZWxzZQorLSAgaTM4N19jYWNoZV90b19mc2F2ZSAocmVnY2FjaGUsIGJ1 Zik7CisrICBpMzg3X2NhY2hlX3RvX2ZzYXZlIChidWYpOworICNlbmRpZgorIH0KKyAKKyBzdGF0 aWMgdm9pZAorLXg4Nl9zdG9yZV9mcHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwg Y29uc3Qgdm9pZCAqYnVmKQorK3g4Nl9zdG9yZV9mcHJlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQor IHsKKyAjaWZkZWYgX194ODZfNjRfXworLSAgaTM4N19meHNhdmVfdG9fY2FjaGUgKHJlZ2NhY2hl LCBidWYpOworKyAgaTM4N19meHNhdmVfdG9fY2FjaGUgKGJ1Zik7CisgI2Vsc2UKKy0gIGkzODdf ZnNhdmVfdG9fY2FjaGUgKHJlZ2NhY2hlLCBidWYpOworKyAgaTM4N19mc2F2ZV90b19jYWNoZSAo YnVmKTsKKyAjZW5kaWYKKyB9CisgCisgI2lmbmRlZiBfX3g4Nl82NF9fCisgCisgc3RhdGljIHZv aWQKKy14ODZfZmlsbF9mcHhyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQg KmJ1ZikKKyt4ODZfZmlsbF9mcHhyZWdzZXQgKHZvaWQgKmJ1ZikKKyB7CistICBpMzg3X2NhY2hl X3RvX2Z4c2F2ZSAocmVnY2FjaGUsIGJ1Zik7CisrICBpMzg3X2NhY2hlX3RvX2Z4c2F2ZSAoYnVm KTsKKyB9CisgCisgc3RhdGljIHZvaWQKKy14ODZfc3RvcmVfZnB4cmVnc2V0IChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCisreDg2X3N0b3JlX2ZweHJlZ3NldCAo Y29uc3Qgdm9pZCAqYnVmKQorIHsKKy0gIGkzODdfZnhzYXZlX3RvX2NhY2hlIChyZWdjYWNoZSwg YnVmKTsKKysgIGkzODdfZnhzYXZlX3RvX2NhY2hlIChidWYpOworIH0KKyAKKyAjZW5kaWYKK0BA IC0yODIsMzggKzI4MCwzOCBAQCBzdHJ1Y3QgcmVnc2V0X2luZm8gdGFyZ2V0X3JlZ3NldHNbXSA9 CisgfTsKKyAKKyBzdGF0aWMgQ09SRV9BRERSCisteDg2X2dldF9wYyAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSkKKyt4ODZfZ2V0X3BjICh2b2lkKQorIHsKKyAgIGludCB1c2VfNjRiaXQgPSBy ZWdpc3Rlcl9zaXplICgwKSA9PSA4OworIAorICAgaWYgKHVzZV82NGJpdCkKKyAgICAgeworICAg ICAgIHVuc2lnbmVkIGxvbmcgcGM7CistICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChy ZWdjYWNoZSwgInJpcCIsICZwYyk7CisrICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgi cmlwIiwgJnBjKTsKKyAgICAgICByZXR1cm4gKENPUkVfQUREUikgcGM7CisgICAgIH0KKyAgIGVs c2UKKyAgICAgeworICAgICAgIHVuc2lnbmVkIGludCBwYzsKKy0gICAgICBjb2xsZWN0X3JlZ2lz dGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZWlwIiwgJnBjKTsKKysgICAgICBjb2xsZWN0X3JlZ2lz dGVyX2J5X25hbWUgKCJlaXAiLCAmcGMpOworICAgICAgIHJldHVybiAoQ09SRV9BRERSKSBwYzsK KyAgICAgfQorIH0KKyAKKyBzdGF0aWMgdm9pZAorLXg4Nl9zZXRfcGMgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsIENPUkVfQUREUiBwYykKKyt4ODZfc2V0X3BjIChDT1JFX0FERFIgcGMpCisg eworICAgaW50IHVzZV82NGJpdCA9IHJlZ2lzdGVyX3NpemUgKDApID09IDg7CisgCisgICBpZiAo dXNlXzY0Yml0KQorICAgICB7CisgICAgICAgdW5zaWduZWQgbG9uZyBuZXdwYyA9IHBjOworLSAg ICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInJpcCIsICZuZXdwYyk7Cisr ICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJyaXAiLCAmbmV3cGMpOworICAgICB9Cisg ICBlbHNlCisgICAgIHsKKyAgICAgICB1bnNpZ25lZCBpbnQgbmV3cGMgPSBwYzsKKy0gICAgICBz dXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJlaXAiLCAmbmV3cGMpOworKyAgICAg IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiZWlwIiwgJm5ld3BjKTsKKyAgICAgfQorIH0KKyAM CistLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXh0ZW5zYS1sb3cuYwkyMDEwLTAxLTIwIDIzOjU1 OjM4LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL2dkYnNlcnZlci9saW51eC14dGVuc2EtbG93 LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zNyw3ICszNyw3IEBA IGVudW0gcmVnbnVtIHsKKyB9OworIAorIHN0YXRpYyB2b2lkCisteHRlbnNhX2ZpbGxfZ3JlZ3Nl dCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQorK3h0ZW5zYV9maWxsX2dy ZWdzZXQgKHZvaWQgKmJ1ZikKKyB7CisgICBlbGZfZ3JlZ190KiByc2V0ID0gKGVsZl9ncmVnX3Qq KWJ1ZjsKKyAgIGludCBhcjBfcmVnbnVtOworQEAgLTUxLDI3ICs1MSwyNyBAQCB4dGVuc2FfZmls bF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlCisgCisgICBmb3IgKGkgPSBhcjBfcmVnbnVt OyBpIDwgYXIwX3JlZ251bSArIFhDSEFMX05VTV9BUkVHUzsgaSsrKQorICAgICB7CistICAgICAg Y29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGksIHB0cik7CisrICAgICAgY29sbGVjdF9yZWdp c3RlciAoaSwgcHRyKTsKKyAgICAgICBwdHIgKz0gcmVnaXN0ZXJfc2l6ZShpKTsKKyAgICAgfQor IAorICAgLyogTG9vcCByZWdpc3RlcnMsIGlmIGhhcmR3YXJlIGhhcyBpdC4gICovCisgCisgI2lm IFhDSEFMX0hBVkVfTE9PUAorLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwg ImxiZWciLCAoY2hhciopJnJzZXRbUl9MQkVHXSk7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25h bWUgKHJlZ2NhY2hlLCAibGVuZCIsIChjaGFyKikmcnNldFtSX0xFTkRdKTsKKy0gIGNvbGxlY3Rf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJsY291bnQiLCAoY2hhciopJnJzZXRbUl9MQ09V TlRdKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoImxiZWciLCAoY2hhciopJnJzZXRb Ul9MQkVHXSk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJsZW5kIiwgKGNoYXIqKSZy c2V0W1JfTEVORF0pOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgibGNvdW50IiwgKGNo YXIqKSZyc2V0W1JfTENPVU5UXSk7CisgI2VuZGlmCisgCistICBjb2xsZWN0X3JlZ2lzdGVyX2J5 X25hbWUgKHJlZ2NhY2hlLCAic2FyIiwgKGNoYXIqKSZyc2V0W1JfU0FSXSk7CistICBjb2xsZWN0 X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAoY2hhciopJnJzZXRbUl9QQ10pOwor LSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBzIiwgKGNoYXIqKSZyc2V0 W1JfUFNdKTsKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJ3aW5kb3di YXNlIiwgKGNoYXIqKSZyc2V0W1JfV0JdKTsKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAo cmVnY2FjaGUsICJ3aW5kb3dzdGFydCIsIChjaGFyKikmcnNldFtSX1dTXSk7CisrICBjb2xsZWN0 X3JlZ2lzdGVyX2J5X25hbWUgKCJzYXIiLCAoY2hhciopJnJzZXRbUl9TQVJdKTsKKysgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgKGNoYXIqKSZyc2V0W1JfUENdKTsKKysgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBzIiwgKGNoYXIqKSZyc2V0W1JfUFNdKTsKKysgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAoIndpbmRvd2Jhc2UiLCAoY2hhciopJnJzZXRbUl9XQl0pOwor KyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgid2luZG93c3RhcnQiLCAoY2hhciopJnJzZXRb Ul9XU10pOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLXh0ZW5zYV9zdG9yZV9ncmVnc2V0IChzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCisreHRlbnNhX3N0b3JlX2dy ZWdzZXQgKGNvbnN0IHZvaWQgKmJ1ZikKKyB7CisgICBjb25zdCBlbGZfZ3JlZ190KiByc2V0ID0g KGNvbnN0IGVsZl9ncmVnX3QqKWJ1ZjsKKyAgIGludCBhcjBfcmVnbnVtOworQEAgLTg1LDQ3ICs4 NSw0NyBAQCB4dGVuc2Ffc3RvcmVfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyCisgCisgICBm b3IgKGkgPSBhcjBfcmVnbnVtOyBpIDwgYXIwX3JlZ251bSArIFhDSEFMX05VTV9BUkVHUzsgaSsr KQorICAgICB7CistICAgICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgcHRyKTsKKysg ICAgICBzdXBwbHlfcmVnaXN0ZXIgKGksIHB0cik7CisgICAgICAgcHRyICs9IHJlZ2lzdGVyX3Np emUoaSk7CisgICAgIH0KKyAKKyAgIC8qIExvb3AgcmVnaXN0ZXJzLCBpZiBoYXJkd2FyZSBoYXMg aXQuICAqLworIAorICNpZiBYQ0hBTF9IQVZFX0xPT1AKKy0gIHN1cHBseV9yZWdpc3Rlcl9ieV9u YW1lIChyZWdjYWNoZSwgImxiZWciLCAoY2hhciopJnJzZXRbUl9MQkVHXSk7CistICBzdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJsZW5kIiwgKGNoYXIqKSZyc2V0W1JfTEVORF0p OworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAibGNvdW50IiwgKGNoYXIq KSZyc2V0W1JfTENPVU5UXSk7CisrICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoImxiZWciLCAo Y2hhciopJnJzZXRbUl9MQkVHXSk7CisrICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoImxlbmQi LCAoY2hhciopJnJzZXRbUl9MRU5EXSk7CisrICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoImxj b3VudCIsIChjaGFyKikmcnNldFtSX0xDT1VOVF0pOworICNlbmRpZgorIAorLSAgc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAic2FyIiwgKGNoYXIqKSZyc2V0W1JfU0FSXSk7Cist ICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsIChjaGFyKikmcnNldFtS X1BDXSk7CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwcyIsIChjaGFy KikmcnNldFtSX1BTXSk7CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJ3 aW5kb3diYXNlIiwgKGNoYXIqKSZyc2V0W1JfV0JdKTsKKy0gIHN1cHBseV9yZWdpc3Rlcl9ieV9u YW1lIChyZWdjYWNoZSwgIndpbmRvd3N0YXJ0IiwgKGNoYXIqKSZyc2V0W1JfV1NdKTsKKysgIHN1 cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgic2FyIiwgKGNoYXIqKSZyc2V0W1JfU0FSXSk7CisrICBz dXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgKGNoYXIqKSZyc2V0W1JfUENdKTsKKysgIHN1 cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgicHMiLCAoY2hhciopJnJzZXRbUl9QU10pOworKyAgc3Vw cGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJ3aW5kb3diYXNlIiwgKGNoYXIqKSZyc2V0W1JfV0JdKTsK KysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgid2luZG93c3RhcnQiLCAoY2hhciopJnJzZXRb Ul9XU10pOworIH0KKyAKKyAvKiBYdGVuc2EgR05VL0xpbnV4IFBUUkFDRSBpbnRlcmZhY2UgaW5j bHVkZXMgZXh0ZW5kZWQgcmVnaXN0ZXIgc2V0LiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorLXh0ZW5z YV9maWxsX3h0cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCisr eHRlbnNhX2ZpbGxfeHRyZWdzZXQgKHZvaWQgKmJ1ZikKKyB7CisgICBjb25zdCB4dGVuc2FfcmVn dGFibGVfdCAqcHRyOworIAorICAgZm9yIChwdHIgPSB4dGVuc2FfcmVnbWFwX3RhYmxlOyBwdHIt Pm5hbWU7IHB0cisrKQorICAgICB7CistICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChy ZWdjYWNoZSwgcHRyLT5uYW1lLAorKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocHRy LT5uYW1lLAorIAkJCQkoY2hhciopYnVmICsgcHRyLT5wdHJhY2Vfb2Zmc2V0KTsKKyAgICAgfQor IH0KKyAKKyBzdGF0aWMgdm9pZAorLXh0ZW5zYV9zdG9yZV94dHJlZ3NldCAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQorK3h0ZW5zYV9zdG9yZV94dHJlZ3NldCAo Y29uc3Qgdm9pZCAqYnVmKQorIHsKKyAgIGNvbnN0IHh0ZW5zYV9yZWd0YWJsZV90ICpwdHI7Cisg CisgICBmb3IgKHB0ciA9IHh0ZW5zYV9yZWdtYXBfdGFibGU7IHB0ci0+bmFtZTsgcHRyKyspCisg ICAgIHsKKy0gICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsIHB0ci0+bmFt ZSwKKysgICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocHRyLT5uYW1lLAorIAkJCQkoY2hh ciopYnVmICsgcHRyLT5wdHJhY2Vfb2Zmc2V0KTsKKyAgICAgfQorIH0KK0BAIC0xNTAsMTkgKzE1 MCwxOSBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB4dGVuc2FfYnJlYWtwCisgI2RlZmlu ZSB4dGVuc2FfYnJlYWtwb2ludF9sZW4gMgorIAorIHN0YXRpYyBDT1JFX0FERFIKKy14dGVuc2Ff Z2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQorK3h0ZW5zYV9nZXRfcGMgKHZvaWQp CisgeworICAgdW5zaWduZWQgbG9uZyBwYzsKKyAKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFt ZSAocmVnY2FjaGUsICJwYyIsICZwYyk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJw YyIsICZwYyk7CisgICByZXR1cm4gcGM7CisgfQorIAorIHN0YXRpYyB2b2lkCisteHRlbnNhX3Nl dF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBjKQorK3h0ZW5zYV9z ZXRfcGMgKENPUkVfQUREUiBwYykKKyB7CisgICB1bnNpZ25lZCBsb25nIG5ld3BjID0gcGM7Cist ICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZuZXdwYyk7CisrICBz dXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJm5ld3BjKTsKKyB9CisgCisgc3RhdGljIGlu dAorLS0tIC4vZ2RiL2dkYnNlcnZlci9udG8tbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAw MDAwMDAgKzAxMDAKKysrKyAuL2dkYi9nZGJzZXJ2ZXIvbnRvLWxvdy5jCTIwMTAtMDEtMjEgMjA6 MzM6MTUuMDAwMDAwMDAwICswMTAwCitAQCAtNjAxLDcgKzYwMSw3IEBAIG50b193YWl0IChwdGlk X3QgcHRpZCwKKyAgICBJZiBSRUdOTyBpcyAtMSwgZmV0Y2ggYWxsIHJlZ2lzdGVycywgb3IgUkVH Tk8gcmVnaXN0ZXIgb25seSBvdGhlcndpc2UuICAqLworIAorIHN0YXRpYyB2b2lkCistbnRvX2Zl dGNoX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKQorK250 b19mZXRjaF9yZWdpc3RlcnMgKGludCByZWdubykKKyB7CisgICBpbnQgcmVnc2l6ZTsKKyAgIHBy b2Nmc19ncmVnIGdyZWc7CitAQCAtNjI5LDcgKzYyOSw3IEBAIG50b19mZXRjaF9yZWdpc3RlcnMg KHN0cnVjdCByZWdjYWNoZSAqcmUKKyAJICAgIHsKKyAJICAgICAgY29uc3QgdW5zaWduZWQgaW50 IHJlZ2lzdGVyb2Zmc2V0CisgCQk9IHRoZV9sb3dfdGFyZ2V0LnJlZ2lzdGVyX29mZnNldCAocmVn bm8pOworLQkgICAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubywgKChjaGFyICop JmdyZWcpICsgcmVnaXN0ZXJvZmZzZXQpOworKwkgICAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ25v LCAoKGNoYXIgKikmZ3JlZykgKyByZWdpc3Rlcm9mZnNldCk7CisgCSAgICB9CisgCX0KKyAgICAg ICBlbHNlCitAQCAtNjM4LDcgKzYzOCw3IEBAIG50b19mZXRjaF9yZWdpc3RlcnMgKHN0cnVjdCBy ZWdjYWNoZSAqcmUKKyAJICAgID0gdGhlX2xvd190YXJnZXQucmVnaXN0ZXJfb2Zmc2V0IChyZWdu byk7CisgCSAgaWYgKHJlZ2lzdGVyb2Zmc2V0ID09IC0xKQorIAkgICAgcmV0dXJuOworLQkgIHN1 cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vLCAoKGNoYXIgKikmZ3JlZykgKyByZWdpc3Rl cm9mZnNldCk7CisrCSAgc3VwcGx5X3JlZ2lzdGVyIChyZWdubywgKChjaGFyICopJmdyZWcpICsg cmVnaXN0ZXJvZmZzZXQpOworIAl9CisgICAgIH0KKyAgIGVsc2UKK0BAIC02NDksNyArNjQ5LDcg QEAgbnRvX2ZldGNoX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZQorICAgIFdlIGFsd2F5 cyBzdG9yZSBhbGwgcmVnaXN0ZXJzLCByZWdhcmRsZXNzIG9mIFJFR05PLiAgKi8KKyAKKyBzdGF0 aWMgdm9pZAorLW50b19zdG9yZV9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IGludCByZWdubykKKytudG9fc3RvcmVfcmVnaXN0ZXJzIChpbnQgcmVnbm8pCisgeworICAgcHJv Y2ZzX2dyZWcgZ3JlZzsKKyAgIGludCBlcnI7CitAQCAtNjcxLDcgKzY3MSw3IEBAIG50b19zdG9y ZV9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmUKKyAgICAgeworICAgICAgIGNvbnN0IHVu c2lnbmVkIGludCByZWdvZmZzZXQKKyAJPSB0aGVfbG93X3RhcmdldC5yZWdpc3Rlcl9vZmZzZXQg KHJlZ25vKTsKKy0gICAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbm8sICgoY2hh ciAqKSZncmVnKSArIHJlZ29mZnNldCk7CisrICAgICAgY29sbGVjdF9yZWdpc3RlciAocmVnbm8s ICgoY2hhciAqKSZncmVnKSArIHJlZ29mZnNldCk7CisgICAgIH0KKyAgIGVyciA9IGRldmN0bCAo bnRvX2luZmVyaW9yLmN0bF9mZCwgRENNRF9QUk9DX1NFVEdSRUcsICZncmVnLCBzaXplb2YgKGdy ZWcpLAorIAkJMCk7CistLS0gLi9nZGIvZ2Ric2VydmVyL3Byb2Mtc2VydmljZS5jCTIwMTAtMDEt MjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL3Byb2Mtc2Vy dmljZS5jCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCitAQCAtMTAxLDcgKzEw MSw2IEBAIHBzX2xnZXRyZWdzIChnZGJfcHNfcHJvY2hhbmRsZV90IHBoLCBsd3AKKyAjaWZkZWYg SEFWRV9SRUdTRVRTCisgICBzdHJ1Y3QgbHdwX2luZm8gKmx3cDsKKyAgIHN0cnVjdCB0aHJlYWRf aW5mbyAqcmVnX2luZmVyaW9yLCAqc2F2ZV9pbmZlcmlvcjsKKy0gIHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGU7CisgCisgICBsd3AgPSBmaW5kX2x3cF9waWQgKHBpZF90b19wdGlkIChsd3BpZCkp OworICAgaWYgKGx3cCA9PSBOVUxMKQorQEAgLTExMCw5ICsxMDksOSBAQCBwc19sZ2V0cmVncyAo Z2RiX3BzX3Byb2NoYW5kbGVfdCBwaCwgbHdwCisgICByZWdfaW5mZXJpb3IgPSBnZXRfbHdwX3Ro cmVhZCAobHdwKTsKKyAgIHNhdmVfaW5mZXJpb3IgPSBjdXJyZW50X2luZmVyaW9yOworICAgY3Vy cmVudF9pbmZlcmlvciA9IHJlZ19pbmZlcmlvcjsKKy0gIHJlZ2NhY2hlID0gZ2V0X3RocmVhZF9y ZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7CistICB0aGVfdGFyZ2V0LT5mZXRjaF9yZWdp c3RlcnMgKHJlZ2NhY2hlLCAtMSk7CistICBncmVnc2V0X2luZm8gKCktPmZpbGxfZnVuY3Rpb24g KHJlZ2NhY2hlLCBncmVnc2V0KTsKKysKKysgIHRoZV90YXJnZXQtPmZldGNoX3JlZ2lzdGVycyAo LTEpOworKyAgZ3JlZ3NldF9pbmZvICgpLT5maWxsX2Z1bmN0aW9uIChncmVnc2V0KTsKKyAKKyAg IGN1cnJlbnRfaW5mZXJpb3IgPSBzYXZlX2luZmVyaW9yOworICAgcmV0dXJuIFBTX09LOworLS0t IC4vZ2RiL2dkYnNlcnZlci9yZWdjYWNoZS5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAw ICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL3JlZ2NhY2hlLmMJMjAxMC0wMS0yMSAyMDozMzox NS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMyw2ICsyMywxNiBAQAorICNpbmNsdWRlIDxzdGRsaWIu aD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgCisrLyogVGhlIHByaXZhdGUgZGF0YSBmb3IgdGhl IHJlZ2lzdGVyIGNhY2hlLiAgTm90ZSB0aGF0IHdlIGhhdmUgb25lCisrICAgcGVyIGluZmVyaW9y OyB0aGlzIGlzIHByaW1hcmlseSBmb3Igc2ltcGxpY2l0eSwgYXMgdGhlIHBlcmZvcm1hbmNlCisr ICAgYmVuZWZpdCBpcyBtaW5pbWFsLiAgKi8KKysKKytzdHJ1Y3QgaW5mZXJpb3JfcmVnY2FjaGVf ZGF0YQorK3sKKysgIGludCByZWdpc3RlcnNfdmFsaWQ7CisrICB1bnNpZ25lZCBjaGFyICpyZWdp c3RlcnM7CisrfTsKKysKKyBzdGF0aWMgaW50IHJlZ2lzdGVyX2J5dGVzOworIAorIHN0YXRpYyBz dHJ1Y3QgcmVnICpyZWdfZGVmczsKK0BAIC0zMCwyMyArNDAsMjAgQEAgc3RhdGljIGludCBudW1f cmVnaXN0ZXJzOworIAorIGNvbnN0IGNoYXIgKipnZGJzZXJ2ZXJfZXhwZWRpdGVfcmVnczsKKyAK Ky1zdHJ1Y3QgcmVnY2FjaGUgKgorLWdldF90aHJlYWRfcmVnY2FjaGUgKHN0cnVjdCB0aHJlYWRf aW5mbyAqdGhyZWFkLCBpbnQgZmV0Y2gpCisrc3RhdGljIHN0cnVjdCBpbmZlcmlvcl9yZWdjYWNo ZV9kYXRhICoKKytnZXRfcmVnY2FjaGUgKHN0cnVjdCB0aHJlYWRfaW5mbyAqaW5mLCBpbnQgZmV0 Y2gpCisgeworLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsKKysgIHN0cnVjdCBpbmZlcmlv cl9yZWdjYWNoZV9kYXRhICpyZWdjYWNoZTsKKyAKKy0gIHJlZ2NhY2hlID0gKHN0cnVjdCByZWdj YWNoZSAqKSBpbmZlcmlvcl9yZWdjYWNoZV9kYXRhICh0aHJlYWQpOworKyAgcmVnY2FjaGUgPSAo c3RydWN0IGluZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKikgaW5mZXJpb3JfcmVnY2FjaGVfZGF0YSAo aW5mKTsKKyAKKyAgIGlmIChyZWdjYWNoZSA9PSBOVUxMKQorICAgICBmYXRhbCAoIm5vIHJlZ2lz dGVyIGNhY2hlIik7CisgCisrICAvKiBGSVhNRSAtIGZldGNoIHJlZ2lzdGVycyBmb3IgSU5GICov CisgICBpZiAoZmV0Y2ggJiYgcmVnY2FjaGUtPnJlZ2lzdGVyc192YWxpZCA9PSAwKQorICAgICB7 CistICAgICAgc3RydWN0IHRocmVhZF9pbmZvICpzYXZlZF9pbmZlcmlvciA9IGN1cnJlbnRfaW5m ZXJpb3I7CistCistICAgICAgY3VycmVudF9pbmZlcmlvciA9IHRocmVhZDsKKy0gICAgICBmZXRj aF9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ2NhY2hlLCAtMSk7CistICAgICAgY3VycmVudF9pbmZl cmlvciA9IHNhdmVkX2luZmVyaW9yOworKyAgICAgIGZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAo LTEpOworICAgICAgIHJlZ2NhY2hlLT5yZWdpc3RlcnNfdmFsaWQgPSAxOworICAgICB9CisgCitA QCAtNTcsMTYgKzY0LDE2IEBAIHZvaWQKKyByZWdjYWNoZV9pbnZhbGlkYXRlX29uZSAoc3RydWN0 IGluZmVyaW9yX2xpc3RfZW50cnkgKmVudHJ5KQorIHsKKyAgIHN0cnVjdCB0aHJlYWRfaW5mbyAq dGhyZWFkID0gKHN0cnVjdCB0aHJlYWRfaW5mbyAqKSBlbnRyeTsKKy0gIHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGU7CisrICBzdHJ1Y3QgaW5mZXJpb3JfcmVnY2FjaGVfZGF0YSAqcmVnY2FjaGU7 CisgCistICByZWdjYWNoZSA9IChzdHJ1Y3QgcmVnY2FjaGUgKikgaW5mZXJpb3JfcmVnY2FjaGVf ZGF0YSAodGhyZWFkKTsKKysgIHJlZ2NhY2hlID0gKHN0cnVjdCBpbmZlcmlvcl9yZWdjYWNoZV9k YXRhICopIGluZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKHRocmVhZCk7CisgCisgICBpZiAocmVnY2Fj aGUtPnJlZ2lzdGVyc192YWxpZCkKKyAgICAgeworICAgICAgIHN0cnVjdCB0aHJlYWRfaW5mbyAq c2F2ZWRfaW5mZXJpb3IgPSBjdXJyZW50X2luZmVyaW9yOworIAorICAgICAgIGN1cnJlbnRfaW5m ZXJpb3IgPSB0aHJlYWQ7CistICAgICAgc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdjYWNo ZSwgLTEpOworKyAgICAgIHN0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAoLTEpOworICAgICAgIGN1 cnJlbnRfaW5mZXJpb3IgPSBzYXZlZF9pbmZlcmlvcjsKKyAgICAgfQorIAorQEAgLTc0LDI1ICs4 MSwyNCBAQCByZWdjYWNoZV9pbnZhbGlkYXRlX29uZSAoc3RydWN0IGluZmVyaW9yCisgfQorIAor IHZvaWQKKy1yZWdjYWNoZV9pbnZhbGlkYXRlICh2b2lkKQorK3JlZ2NhY2hlX2ludmFsaWRhdGUg KCkKKyB7CisgICBmb3JfZWFjaF9pbmZlcmlvciAoJmFsbF90aHJlYWRzLCByZWdjYWNoZV9pbnZh bGlkYXRlX29uZSk7CisgfQorIAorLXN0cnVjdCByZWdjYWNoZSAqCisrdm9pZCAqCisgbmV3X3Jl Z2lzdGVyX2NhY2hlICh2b2lkKQorIHsKKy0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGU7Cisr ICBzdHJ1Y3QgaW5mZXJpb3JfcmVnY2FjaGVfZGF0YSAqcmVnY2FjaGU7CisgCisgICBpZiAocmVn aXN0ZXJfYnl0ZXMgPT0gMCkKKyAgICAgcmV0dXJuIE5VTEw7IC8qIFRoZSBhcmNoaXRlY3R1cmUg aGFzbid0IGJlZW4gaW5pdGlhbGl6ZWQgeWV0LiAgKi8KKyAKKyAgIHJlZ2NhY2hlID0geG1hbGxv YyAoc2l6ZW9mICgqcmVnY2FjaGUpKTsKKyAKKy0gIC8qIE1ha2Ugc3VyZSB0byB6ZXJvLWluaXRp YWxpemUgdGhlIHJlZ2lzdGVyIGNhY2hlIHdoZW4gaXQgaXMKKy0gICAgIGNyZWF0ZWQsIGluIGNh c2UgdGhlcmUgYXJlIHJlZ2lzdGVycyB0aGUgdGFyZ2V0IG5ldmVyCistICAgICBmZXRjaGVzLiAg VGhpcyB3YXkgdGhleSdsbCByZWFkIGFzIHplcm8gaW5zdGVhZCBvZgorLSAgICAgZ2FyYmFnZS4g ICovCisrICAvKiBNYWtlIHN1cmUgdG8gemVyby1pbml0aWFsaXplIHRoZSByZWdpc3RlciBjYWNo ZSB3aGVuIGl0IGlzIGNyZWF0ZWQsCisrICAgICBpbiBjYXNlIHRoZXJlIGFyZSByZWdpc3RlcnMg dGhlIHRhcmdldCBuZXZlciBmZXRjaGVzLiAgVGhpcyB3YXkgdGhleSdsbAorKyAgICAgcmVhZCBh cyB6ZXJvIGluc3RlYWQgb2YgZ2FyYmFnZS4gICovCisgICByZWdjYWNoZS0+cmVnaXN0ZXJzID0g eGNhbGxvYyAoMSwgcmVnaXN0ZXJfYnl0ZXMpOworIAorICAgcmVnY2FjaGUtPnJlZ2lzdGVyc192 YWxpZCA9IDA7CitAQCAtMTAxLDggKzEwNywxMSBAQCBuZXdfcmVnaXN0ZXJfY2FjaGUgKHZvaWQp CisgfQorIAorIHZvaWQKKy1mcmVlX3JlZ2lzdGVyX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlKQorK2ZyZWVfcmVnaXN0ZXJfY2FjaGUgKHZvaWQgKnJlZ2NhY2hlX3ApCisgeworKyAg c3RydWN0IGluZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKnJlZ2NhY2hlCisrICAgID0gKHN0cnVjdCBp bmZlcmlvcl9yZWdjYWNoZV9kYXRhICopIHJlZ2NhY2hlX3A7CisrCisgICBpZiAocmVnY2FjaGUp CisgICAgIHsKKyAgICAgICBmcmVlIChyZWdjYWNoZS0+cmVnaXN0ZXJzKTsKK0BAIC0xMTQsMTAg KzEyMyw4IEBAIHN0YXRpYyB2b2lkCisgcmVhbGxvY19yZWdpc3Rlcl9jYWNoZSAoc3RydWN0IGlu ZmVyaW9yX2xpc3RfZW50cnkgKnRocmVhZF9wKQorIHsKKyAgIHN0cnVjdCB0aHJlYWRfaW5mbyAq dGhyZWFkID0gKHN0cnVjdCB0aHJlYWRfaW5mbyAqKSB0aHJlYWRfcDsKKy0gIHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUKKy0gICAgPSAoc3RydWN0IHJlZ2NhY2hlICopIGluZmVyaW9yX3JlZ2Nh Y2hlX2RhdGEgKHRocmVhZCk7CisgCistICBmcmVlX3JlZ2lzdGVyX2NhY2hlIChyZWdjYWNoZSk7 CisrICBmcmVlX3JlZ2lzdGVyX2NhY2hlIChpbmZlcmlvcl9yZWdjYWNoZV9kYXRhICh0aHJlYWQp KTsKKyAgIHNldF9pbmZlcmlvcl9yZWdjYWNoZV9kYXRhICh0aHJlYWQsIG5ld19yZWdpc3Rlcl9j YWNoZSAoKSk7CisgfQorIAorQEAgLTE0NywxOCArMTU0LDE4IEBAIHNldF9yZWdpc3Rlcl9jYWNo ZSAoc3RydWN0IHJlZyAqcmVncywgaW4KKyB9CisgCisgdm9pZAorLXJlZ2lzdGVyc190b19zdHJp bmcgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNoYXIgKmJ1ZikKKytyZWdpc3RlcnNfdG9f c3RyaW5nIChjaGFyICpidWYpCisgeworLSAgdW5zaWduZWQgY2hhciAqcmVnaXN0ZXJzID0gcmVn Y2FjaGUtPnJlZ2lzdGVyczsKKysgIHVuc2lnbmVkIGNoYXIgKnJlZ2lzdGVycyA9IGdldF9yZWdj YWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSktPnJlZ2lzdGVyczsKKyAKKyAgIGNvbnZlcnRfaW50 X3RvX2FzY2lpIChyZWdpc3RlcnMsIGJ1ZiwgcmVnaXN0ZXJfYnl0ZXMpOworIH0KKyAKKyB2b2lk CistcmVnaXN0ZXJzX2Zyb21fc3RyaW5nIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjaGFy ICpidWYpCisrcmVnaXN0ZXJzX2Zyb21fc3RyaW5nIChjaGFyICpidWYpCisgeworICAgaW50IGxl biA9IHN0cmxlbiAoYnVmKTsKKy0gIHVuc2lnbmVkIGNoYXIgKnJlZ2lzdGVycyA9IHJlZ2NhY2hl LT5yZWdpc3RlcnM7CisrICB1bnNpZ25lZCBjaGFyICpyZWdpc3RlcnMgPSBnZXRfcmVnY2FjaGUg KGN1cnJlbnRfaW5mZXJpb3IsIDEpLT5yZWdpc3RlcnM7CisgCisgICBpZiAobGVuICE9IHJlZ2lz dGVyX2J5dGVzICogMikKKyAgICAgeworQEAgLTIwNyw0MCArMjE0LDQwIEBAIHJlZ2lzdGVyX3Np emUgKGludCBuKQorIH0KKyAKKyBzdGF0aWMgdW5zaWduZWQgY2hhciAqCistcmVnaXN0ZXJfZGF0 YSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IG4sIGludCBmZXRjaCkKKytyZWdpc3Rl cl9kYXRhIChpbnQgbiwgaW50IGZldGNoKQorIHsKKy0gIHJldHVybiByZWdjYWNoZS0+cmVnaXN0 ZXJzICsgKHJlZ19kZWZzW25dLm9mZnNldCAvIDgpOworKyAgdW5zaWduZWQgY2hhciAqcmVnaXN0 ZXJzCisrICAgID0gZ2V0X3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCBmZXRjaCktPnJlZ2lz dGVyczsKKysKKysgIHJldHVybiByZWdpc3RlcnMgKyAocmVnX2RlZnNbbl0ub2Zmc2V0IC8gOCk7 CisgfQorIAorIHZvaWQKKy1zdXBwbHlfcmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUsIGludCBuLCBjb25zdCB2b2lkICpidWYpCisrc3VwcGx5X3JlZ2lzdGVyIChpbnQgbiwgY29u c3Qgdm9pZCAqYnVmKQorIHsKKy0gIG1lbWNweSAocmVnaXN0ZXJfZGF0YSAocmVnY2FjaGUsIG4s IDApLCBidWYsIHJlZ2lzdGVyX3NpemUgKG4pKTsKKysgIG1lbWNweSAocmVnaXN0ZXJfZGF0YSAo biwgMCksIGJ1ZiwgcmVnaXN0ZXJfc2l6ZSAobikpOworIH0KKyAKKyB2b2lkCistc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCistCQkJIGNvbnN0IGNo YXIgKm5hbWUsIGNvbnN0IHZvaWQgKmJ1ZikKKytzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoY29u c3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqYnVmKQorIHsKKy0gIHN1cHBseV9yZWdpc3RlciAo cmVnY2FjaGUsIGZpbmRfcmVnbm8gKG5hbWUpLCBidWYpOworKyAgc3VwcGx5X3JlZ2lzdGVyIChm aW5kX3JlZ25vIChuYW1lKSwgYnVmKTsKKyB9CisgCisgdm9pZAorLWNvbGxlY3RfcmVnaXN0ZXIg KHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCBuLCB2b2lkICpidWYpCisrY29sbGVjdF9y ZWdpc3RlciAoaW50IG4sIHZvaWQgKmJ1ZikKKyB7CistICBtZW1jcHkgKGJ1ZiwgcmVnaXN0ZXJf ZGF0YSAocmVnY2FjaGUsIG4sIDEpLCByZWdpc3Rlcl9zaXplIChuKSk7CisrICBtZW1jcHkgKGJ1 ZiwgcmVnaXN0ZXJfZGF0YSAobiwgMSksIHJlZ2lzdGVyX3NpemUgKG4pKTsKKyB9CisgCisgdm9p ZAorLWNvbGxlY3RfcmVnaXN0ZXJfYXNfc3RyaW5nIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBpbnQgbiwgY2hhciAqYnVmKQorK2NvbGxlY3RfcmVnaXN0ZXJfYXNfc3RyaW5nIChpbnQgbiwg Y2hhciAqYnVmKQorIHsKKy0gIGNvbnZlcnRfaW50X3RvX2FzY2lpIChyZWdpc3Rlcl9kYXRhIChy ZWdjYWNoZSwgbiwgMSksCistCQkJYnVmLCByZWdpc3Rlcl9zaXplIChuKSk7CisrICBjb252ZXJ0 X2ludF90b19hc2NpaSAocmVnaXN0ZXJfZGF0YSAobiwgMSksIGJ1ZiwgcmVnaXN0ZXJfc2l6ZSAo bikpOworIH0KKyAKKyB2b2lkCistY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLAorLQkJCSAgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqYnVmKQorK2Nv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqYnVmKQorIHsK Ky0gIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBmaW5kX3JlZ25vIChuYW1lKSwgYnVmKTsK KysgIGNvbGxlY3RfcmVnaXN0ZXIgKGZpbmRfcmVnbm8gKG5hbWUpLCBidWYpOworIH0KKy0tLSAu L2dkYi9nZGJzZXJ2ZXIvcmVnY2FjaGUuaAkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCAr MDEwMAorKysrIC4vZ2RiL2dkYnNlcnZlci9yZWdjYWNoZS5oCTIwMTAtMDEtMjEgMjA6MzM6MTUu MDAwMDAwMDAwICswMTAwCitAQCAtMjEsMjcgKzIxLDE0IEBACisgI2RlZmluZSBSRUdDQUNIRV9I CisgCisgc3RydWN0IGluZmVyaW9yX2xpc3RfZW50cnk7Cistc3RydWN0IHRocmVhZF9pbmZvOwor LQorLS8qIFRoZSBkYXRhIGZvciB0aGUgcmVnaXN0ZXIgY2FjaGUuICBOb3RlIHRoYXQgd2UgaGF2 ZSBvbmUgcGVyCistICAgaW5mZXJpb3I7IHRoaXMgaXMgcHJpbWFyaWx5IGZvciBzaW1wbGljaXR5 LCBhcyB0aGUgcGVyZm9ybWFuY2UKKy0gICBiZW5lZml0IGlzIG1pbmltYWwuICAqLworLQorLXN0 cnVjdCByZWdjYWNoZQorLXsKKy0gIGludCByZWdpc3RlcnNfdmFsaWQ7CistICB1bnNpZ25lZCBj aGFyICpyZWdpc3RlcnM7CistfTsKKyAKKyAvKiBDcmVhdGUgYSBuZXcgcmVnaXN0ZXIgY2FjaGUg Zm9yIElORkVSSU9SLiAgKi8KKyAKKy1zdHJ1Y3QgcmVnY2FjaGUgKm5ld19yZWdpc3Rlcl9jYWNo ZSAodm9pZCk7CistCistc3RydWN0IHJlZ2NhY2hlICpnZXRfdGhyZWFkX3JlZ2NhY2hlIChzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgaW50IGZldGNoKTsKKyt2b2lkICpuZXdfcmVnaXN0ZXJf Y2FjaGUgKHZvaWQpOworIAorIC8qIFJlbGVhc2UgYWxsIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGgg dGhlIHJlZ2lzdGVyIGNhY2hlIGZvciBJTkZFUklPUi4gICovCisgCistdm9pZCBmcmVlX3JlZ2lz dGVyX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKTsKKyt2b2lkIGZyZWVfcmVnaXN0 ZXJfY2FjaGUgKHZvaWQgKnJlZ2NhY2hlKTsKKyAKKyAvKiBJbnZhbGlkYXRlIGNhY2hlZCByZWdp c3RlcnMgZm9yIG9uZSBvciBhbGwgdGhyZWFkcy4gICovCisgCitAQCAtNTEsMTEgKzM4LDExIEBA IHZvaWQgcmVnY2FjaGVfaW52YWxpZGF0ZSAodm9pZCk7CisgLyogQ29udmVydCBhbGwgcmVnaXN0 ZXJzIHRvIGEgc3RyaW5nIGluIHRoZSBjdXJyZW50bHkgc3BlY2lmaWVkIHJlbW90ZQorICAgIGZv cm1hdC4gICovCisgCistdm9pZCByZWdpc3RlcnNfdG9fc3RyaW5nIChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBjaGFyICpidWYpOworK3ZvaWQgcmVnaXN0ZXJzX3RvX3N0cmluZyAoY2hhciAq YnVmKTsKKyAKKyAvKiBDb252ZXJ0IGEgc3RyaW5nIHRvIHJlZ2lzdGVyIHZhbHVlcyBhbmQgZmls bCBvdXIgcmVnaXN0ZXIgY2FjaGUuICAqLworIAorLXZvaWQgcmVnaXN0ZXJzX2Zyb21fc3RyaW5n IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjaGFyICpidWYpOworK3ZvaWQgcmVnaXN0ZXJz X2Zyb21fc3RyaW5nIChjaGFyICpidWYpOworIAorIC8qIFJldHVybiBhIHBvaW50ZXIgdG8gdGhl IGRlc2NyaXB0aW9uIG9mIHJlZ2lzdGVyIGBgbicnLiAgKi8KKyAKK0BAIC03MCwxNSArNTcsMTQg QEAgaW50IGZpbmRfcmVnbm8gKGNvbnN0IGNoYXIgKm5hbWUpOworIGV4dGVybiBjb25zdCBjaGFy ICoqZ2Ric2VydmVyX2V4cGVkaXRlX3JlZ3M7CisgZXh0ZXJuIGNvbnN0IGNoYXIgKmdkYnNlcnZl cl94bWx0YXJnZXQ7CisgCistdm9pZCBzdXBwbHlfcmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsIGludCBuLCBjb25zdCB2b2lkICpidWYpOworK3ZvaWQgc3VwcGx5X3JlZ2lzdGVy IChpbnQgbiwgY29uc3Qgdm9pZCAqYnVmKTsKKyAKKy12b2lkIHN1cHBseV9yZWdpc3Rlcl9ieV9u YW1lIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorLQkJCSAgICAgIGNvbnN0IGNoYXIgKm5h bWUsIGNvbnN0IHZvaWQgKmJ1Zik7Cisrdm9pZCBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoY29u c3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqYnVmKTsKKyAKKy12b2lkIGNvbGxlY3RfcmVnaXN0 ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCBuLCB2b2lkICpidWYpOworK3ZvaWQg Y29sbGVjdF9yZWdpc3RlciAoaW50IG4sIHZvaWQgKmJ1Zik7CisgCistdm9pZCBjb2xsZWN0X3Jl Z2lzdGVyX2FzX3N0cmluZyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IG4sIGNoYXIg KmJ1Zik7Cisrdm9pZCBjb2xsZWN0X3JlZ2lzdGVyX2FzX3N0cmluZyAoaW50IG4sIGNoYXIgKmJ1 Zik7CisgCistdm9pZCBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKmJ1Zik7Cisrdm9pZCBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKmJ1Zik7CisgCisgI2VuZGlm IC8qIFJFR0NBQ0hFX0ggKi8KKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvcmVtb3RlLXV0aWxzLmMJMjAx MC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9nZGJzZXJ2ZXIvcmVt b3RlLXV0aWxzLmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMDUz LDcgKzEwNTMsNyBAQCBjb252ZXJ0X2FzY2lpX3RvX2ludCAoY2hhciAqZnJvbSwgdW5zaWduCisg fQorIAorIHN0YXRpYyBjaGFyICoKKy1vdXRyZWcgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IGludCByZWdubywgY2hhciAqYnVmKQorK291dHJlZyAoaW50IHJlZ25vLCBjaGFyICpidWYpCisg eworICAgaWYgKChyZWdubyA+PiAxMikgIT0gMCkKKyAgICAgKmJ1ZisrID0gdG9oZXggKChyZWdu byA+PiAxMikgJiAweGYpOworQEAgLTEwNjIsNyArMTA2Miw3IEBAIG91dHJlZyAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwgaW50IHIKKyAgICpidWYrKyA9IHRvaGV4ICgocmVnbm8gPj4gNCkg JiAweGYpOworICAgKmJ1ZisrID0gdG9oZXggKHJlZ25vICYgMHhmKTsKKyAgICpidWYrKyA9ICc6 JzsKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYXNfc3RyaW5nIChyZWdjYWNoZSwgcmVnbm8sIGJ1Zik7 CisrICBjb2xsZWN0X3JlZ2lzdGVyX2FzX3N0cmluZyAocmVnbm8sIGJ1Zik7CisgICBidWYgKz0g MiAqIHJlZ2lzdGVyX3NpemUgKHJlZ25vKTsKKyAgICpidWYrKyA9ICc7JzsKKyAKK0BAIC0xMTE2 LDcgKzExMTYsNiBAQCBwcmVwYXJlX3Jlc3VtZV9yZXBseSAoY2hhciAqYnVmLCBwdGlkX3QgCisg ICAgICAgeworIAlzdHJ1Y3QgdGhyZWFkX2luZm8gKnNhdmVkX2luZmVyaW9yOworIAljb25zdCBj aGFyICoqcmVncDsKKy0Jc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsKKyAKKyAJc3ByaW50ZiAo YnVmLCAiVCUwMngiLCBzdGF0dXMtPnZhbHVlLnNpZyk7CisgCWJ1ZiArPSBzdHJsZW4gKGJ1Zik7 CitAQCAtMTEyNyw4ICsxMTI2LDYgQEAgcHJlcGFyZV9yZXN1bWVfcmVwbHkgKGNoYXIgKmJ1Ziwg cHRpZF90IAorIAorIAljdXJyZW50X2luZmVyaW9yID0gZmluZF90aHJlYWRfcHRpZCAocHRpZCk7 CisgCistCXJlZ2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwg MSk7CistCisgCWlmICh0aGVfdGFyZ2V0LT5zdG9wcGVkX2J5X3dhdGNocG9pbnQgIT0gTlVMTAor IAkgICAgJiYgKCp0aGVfdGFyZ2V0LT5zdG9wcGVkX2J5X3dhdGNocG9pbnQpICgpKQorIAkgIHsK K0BAIC0xMTUxLDcgKzExNDgsNyBAQCBwcmVwYXJlX3Jlc3VtZV9yZXBseSAoY2hhciAqYnVmLCBw dGlkX3QgCisgCisgCXdoaWxlICgqcmVncCkKKyAJICB7CistCSAgICBidWYgPSBvdXRyZWcgKHJl Z2NhY2hlLCBmaW5kX3JlZ25vICgqcmVncCksIGJ1Zik7CisrCSAgICBidWYgPSBvdXRyZWcgKGZp bmRfcmVnbm8gKCpyZWdwKSwgYnVmKTsKKyAJICAgIHJlZ3AgKys7CisgCSAgfQorIAkqYnVmID0g J1wwJzsKKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvc2VydmVyLmMJMjAxMC0wMS0yMCAyMzo1NTozOC4w MDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9nZGJzZXJ2ZXIvc2VydmVyLmMJMjAxMC0wMS0yMSAy MDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yNDU2LDI1ICsyNDU2LDE1IEBAIHByb2Nlc3Nf c2VyaWFsX2V2ZW50ICh2b2lkKQorIAl9CisgICAgICAgYnJlYWs7CisgICAgIGNhc2UgJ2cnOgor LSAgICAgIHsKKy0Jc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsKKy0KKy0JcmVxdWlyZV9ydW5u aW5nIChvd25fYnVmKTsKKy0Jc2V0X2Rlc2lyZWRfaW5mZXJpb3IgKDEpOworLQlyZWdjYWNoZSA9 IGdldF90aHJlYWRfcmVnY2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IsIDEpOworLQlyZWdpc3RlcnNf dG9fc3RyaW5nIChyZWdjYWNoZSwgb3duX2J1Zik7CistICAgICAgfQorKyAgICAgIHJlcXVpcmVf cnVubmluZyAob3duX2J1Zik7CisrICAgICAgc2V0X2Rlc2lyZWRfaW5mZXJpb3IgKDEpOworKyAg ICAgIHJlZ2lzdGVyc190b19zdHJpbmcgKG93bl9idWYpOworICAgICAgIGJyZWFrOworICAgICBj YXNlICdHJzoKKy0gCXsKKy0JICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOworLQorLQkgIHJl cXVpcmVfcnVubmluZyAob3duX2J1Zik7CistCSAgc2V0X2Rlc2lyZWRfaW5mZXJpb3IgKDEpOwor LQkgIHJlZ2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7 CistCSAgcmVnaXN0ZXJzX2Zyb21fc3RyaW5nIChyZWdjYWNoZSwgJm93bl9idWZbMV0pOworLQkg IHdyaXRlX29rIChvd25fYnVmKTsKKy0JfQorKyAgICAgIHJlcXVpcmVfcnVubmluZyAob3duX2J1 Zik7CisrICAgICAgc2V0X2Rlc2lyZWRfaW5mZXJpb3IgKDEpOworKyAgICAgIHJlZ2lzdGVyc19m cm9tX3N0cmluZyAoJm93bl9idWZbMV0pOworKyAgICAgIHdyaXRlX29rIChvd25fYnVmKTsKKyAg ICAgICBicmVhazsKKyAgICAgY2FzZSAnbSc6CisgICAgICAgcmVxdWlyZV9ydW5uaW5nIChvd25f YnVmKTsKKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmgJMjAxMC0wMS0yMCAyMzo1NTozOC4w MDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmgJMjAxMC0wMS0yMSAy MDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNjYsMTMgKzE2NiwxMyBAQCBzdHJ1Y3QgdGFy Z2V0X29wcworIAorICAgICAgSWYgUkVHTk8gaXMgLTEsIGZldGNoIGFsbCByZWdpc3RlcnM7IG90 aGVyd2lzZSwgZmV0Y2ggYXQgbGVhc3QgUkVHTk8uICAqLworIAorLSAgdm9pZCAoKmZldGNoX3Jl Z2lzdGVycykgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubyk7CisrICB2b2lk ICgqZmV0Y2hfcmVnaXN0ZXJzKSAoaW50IHJlZ25vKTsKKyAKKyAgIC8qIFN0b3JlIHJlZ2lzdGVy cyB0byB0aGUgaW5mZXJpb3IgcHJvY2Vzcy4KKyAKKyAgICAgIElmIFJFR05PIGlzIC0xLCBzdG9y ZSBhbGwgcmVnaXN0ZXJzOyBvdGhlcndpc2UsIHN0b3JlIGF0IGxlYXN0IFJFR05PLiAgKi8KKyAK Ky0gIHZvaWQgKCpzdG9yZV9yZWdpc3RlcnMpIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBp bnQgcmVnbm8pOworKyAgdm9pZCAoKnN0b3JlX3JlZ2lzdGVycykgKGludCByZWdubyk7CisgCisg ICAvKiBSZWFkIG1lbW9yeSBmcm9tIHRoZSBpbmZlcmlvciBwcm9jZXNzLiAgVGhpcyBzaG91bGQg Z2VuZXJhbGx5IGJlCisgICAgICBjYWxsZWQgdGhyb3VnaCByZWFkX2luZmVyaW9yX21lbW9yeSwg d2hpY2ggaGFuZGxlcyBicmVha3BvaW50IHNoYWRvd2luZy4KK0BAIC0zMDcsMTEgKzMwNywxMSBA QCB2b2lkIHNldF90YXJnZXRfb3BzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqCisgI2RlZmluZSBteXRo cmVhZF9hbGl2ZShwaWQpIFwKKyAgICgqdGhlX3RhcmdldC0+dGhyZWFkX2FsaXZlKSAocGlkKQor IAorLSNkZWZpbmUgZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzKHJlZ2NhY2hlLCByZWdubykJXAor LSAgKCp0aGVfdGFyZ2V0LT5mZXRjaF9yZWdpc3RlcnMpIChyZWdjYWNoZSwgcmVnbm8pCisrI2Rl ZmluZSBmZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMocmVnbm8pIFwKKysgICgqdGhlX3RhcmdldC0+ ZmV0Y2hfcmVnaXN0ZXJzKSAocmVnbm8pCisgCistI2RlZmluZSBzdG9yZV9pbmZlcmlvcl9yZWdp c3RlcnMocmVnY2FjaGUsIHJlZ25vKSBcCistICAoKnRoZV90YXJnZXQtPnN0b3JlX3JlZ2lzdGVy cykgKHJlZ2NhY2hlLCByZWdubykKKysjZGVmaW5lIHN0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyhy ZWdubykgXAorKyAgKCp0aGVfdGFyZ2V0LT5zdG9yZV9yZWdpc3RlcnMpIChyZWdubykKKyAKKyAj ZGVmaW5lIGpvaW5faW5mZXJpb3IocGlkKSBcCisgICAoKnRoZV90YXJnZXQtPmpvaW4pIChwaWQp CistLS0gLi9nZGIvZ2Ric2VydmVyL3dpbjMyLWFybS1sb3cuYwkyMDEwLTAxLTIwIDIzOjU1OjM4 LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL2dkYnNlcnZlci93aW4zMi1hcm0tbG93LmMJMjAx MC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC05MywxOSArOTMsMTcgQEAgcmVn cHRyIChDT05URVhUKiBjLCBpbnQgcikKKyAKKyAvKiBGZXRjaCByZWdpc3RlciBmcm9tIGdkYnNl cnZlciByZWdjYWNoZSBkYXRhLiAgKi8KKyBzdGF0aWMgdm9pZAorLWFybV9mZXRjaF9pbmZlcmlv cl9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKy0JCQkgICAgIHdpbjMyX3Ro cmVhZF9pbmZvICp0aCwgaW50IHIpCisrYXJtX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVyICh3aW4z Ml90aHJlYWRfaW5mbyAqdGgsIGludCByKQorIHsKKyAgIGNoYXIgKmNvbnRleHRfb2Zmc2V0ID0g cmVncHRyICgmdGgtPmNvbnRleHQsIHIpOworLSAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwg ciwgY29udGV4dF9vZmZzZXQpOworKyAgc3VwcGx5X3JlZ2lzdGVyIChyLCBjb250ZXh0X29mZnNl dCk7CisgfQorIAorIC8qIFN0b3JlIGEgbmV3IHJlZ2lzdGVyIHZhbHVlIGludG8gdGhlIHRocmVh ZCBjb250ZXh0IG9mIFRILiAgKi8KKyBzdGF0aWMgdm9pZAorLWFybV9zdG9yZV9pbmZlcmlvcl9y ZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKy0JCQkgICAgIHdpbjMyX3RocmVh ZF9pbmZvICp0aCwgaW50IHIpCisrYXJtX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVyICh3aW4zMl90 aHJlYWRfaW5mbyAqdGgsIGludCByKQorIHsKKy0gIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hl LCByLCByZWdwdHIgKCZ0aC0+Y29udGV4dCwgcikpOworKyAgY29sbGVjdF9yZWdpc3RlciAociwg cmVncHRyICgmdGgtPmNvbnRleHQsIHIpKTsKKyB9CisgCisgLyogQ29ycmVjdCBpbiBlaXRoZXIg ZW5kaWFubmVzcy4gIFdlIGRvIG5vdCBzdXBwb3J0IFRodW1iIHlldC4gICovCistLS0gLi9nZGIv Z2Ric2VydmVyL3dpbjMyLWkzODYtbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAg KzAxMDAKKysrKyAuL2dkYi9nZGJzZXJ2ZXIvd2luMzItaTM4Ni1sb3cuYwkyMDEwLTAxLTIxIDIw OjMzOjE1LjAwMDAwMDAwMCArMDEwMAorQEAgLTI3MSw4ICsyNzEsNyBAQCBzdGF0aWMgY29uc3Qg aW50IG1hcHBpbmdzW10gPSB7CisgCisgLyogRmV0Y2ggcmVnaXN0ZXIgZnJvbSBnZGJzZXJ2ZXIg cmVnY2FjaGUgZGF0YS4gICovCisgc3RhdGljIHZvaWQKKy1pMzg2X2ZldGNoX2luZmVyaW9yX3Jl Z2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorLQkJCSAgICAgIHdpbjMyX3RocmVh ZF9pbmZvICp0aCwgaW50IHIpCisraTM4Nl9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlciAod2luMzJf dGhyZWFkX2luZm8gKnRoLCBpbnQgcikKKyB7CisgICBjaGFyICpjb250ZXh0X29mZnNldCA9IChj aGFyICopICZ0aC0+Y29udGV4dCArIG1hcHBpbmdzW3JdOworIAorQEAgLTI4MCwyNCArMjc5LDIz IEBAIGkzODZfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXIgKHN0cnVjdCByZWcKKyAgIGlmIChyID09 IEZDU19SRUdOVU0pCisgICAgIHsKKyAgICAgICBsID0gKigobG9uZyAqKSBjb250ZXh0X29mZnNl dCkgJiAweGZmZmY7CistICAgICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgciwgKGNoYXIg KikgJmwpOworKyAgICAgIHN1cHBseV9yZWdpc3RlciAociwgKGNoYXIgKikgJmwpOworICAgICB9 CisgICBlbHNlIGlmIChyID09IEZPUF9SRUdOVU0pCisgICAgIHsKKyAgICAgICBsID0gKCooKGxv bmcgKikgY29udGV4dF9vZmZzZXQpID4+IDE2KSAmICgoMSA8PCAxMSkgLSAxKTsKKy0gICAgICBz dXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByLCAoY2hhciAqKSAmbCk7CisrICAgICAgc3VwcGx5 X3JlZ2lzdGVyIChyLCAoY2hhciAqKSAmbCk7CisgICAgIH0KKyAgIGVsc2UKKy0gICAgc3VwcGx5 X3JlZ2lzdGVyIChyZWdjYWNoZSwgciwgY29udGV4dF9vZmZzZXQpOworKyAgICBzdXBwbHlfcmVn aXN0ZXIgKHIsIGNvbnRleHRfb2Zmc2V0KTsKKyB9CisgCisgLyogU3RvcmUgYSBuZXcgcmVnaXN0 ZXIgdmFsdWUgaW50byB0aGUgdGhyZWFkIGNvbnRleHQgb2YgVEguICAqLworIHN0YXRpYyB2b2lk CistaTM4Nl9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwKKy0JCQkgICAgICB3aW4zMl90aHJlYWRfaW5mbyAqdGgsIGludCByKQorK2kzODZfc3RvcmVf aW5mZXJpb3JfcmVnaXN0ZXIgKHdpbjMyX3RocmVhZF9pbmZvICp0aCwgaW50IHIpCisgeworICAg Y2hhciAqY29udGV4dF9vZmZzZXQgPSAoY2hhciAqKSAmdGgtPmNvbnRleHQgKyBtYXBwaW5nc1ty XTsKKy0gIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByLCBjb250ZXh0X29mZnNldCk7Cisr ICBjb2xsZWN0X3JlZ2lzdGVyIChyLCBjb250ZXh0X29mZnNldCk7CisgfQorIAorIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGkzODZfd2luMzJfYnJlYWtwb2ludCA9IDB4Y2M7CistLS0gLi9n ZGIvZ2Ric2VydmVyL3dpbjMyLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICsw MTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL3dpbjMyLWxvdy5jCTIwMTAtMDEtMjEgMjA6MzM6MTUu MDAwMDAwMDAwICswMTAwCitAQCAtMzcyLDI5ICszNzIsMjkgQEAgY2hpbGRfY29udGludWUgKERX T1JEIGNvbnRpbnVlX3N0YXR1cywgaQorIAorIC8qIEZldGNoIHJlZ2lzdGVyKHMpIGZyb20gdGhl IGN1cnJlbnQgdGhyZWFkIGNvbnRleHQuICAqLworIHN0YXRpYyB2b2lkCistY2hpbGRfZmV0Y2hf aW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcikKKytj aGlsZF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKGludCByKQorIHsKKyAgIGludCByZWdubzsK KyAgIHdpbjMyX3RocmVhZF9pbmZvICp0aCA9IHRocmVhZF9yZWMgKGN1cnJlbnRfaW5mZXJpb3Jf cHRpZCAoKSwgVFJVRSk7CisgICBpZiAociA9PSAtMSB8fCByID4gTlVNX1JFR1MpCistICAgIGNo aWxkX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2FjaGUsIE5VTV9SRUdTKTsKKysgICAg Y2hpbGRfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzIChOVU1fUkVHUyk7CisgICBlbHNlCisgICAg IGZvciAocmVnbm8gPSAwOyByZWdubyA8IHI7IHJlZ25vKyspCistICAgICAgKCp0aGVfbG93X3Rh cmdldC5mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcikgKHJlZ2NhY2hlLCB0aCwgcmVnbm8pOworKyAg ICAgICgqdGhlX2xvd190YXJnZXQuZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXIpICh0aCwgcmVnbm8p OworIH0KKyAKKyAvKiBTdG9yZSBhIG5ldyByZWdpc3RlciB2YWx1ZSBpbnRvIHRoZSBjdXJyZW50 IHRocmVhZCBjb250ZXh0LiAgV2UgZG9uJ3QKKyAgICBjaGFuZ2UgdGhlIHByb2dyYW0ncyBjb250 ZXh0IHVudGlsIGxhdGVyLCB3aGVuIHdlIHJlc3VtZSBpdC4gICovCisgc3RhdGljIHZvaWQKKy1j aGlsZF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IGludCByKQorK2NoaWxkX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAoaW50IHIpCisgeworICAg aW50IHJlZ25vOworICAgd2luMzJfdGhyZWFkX2luZm8gKnRoID0gdGhyZWFkX3JlYyAoY3VycmVu dF9pbmZlcmlvcl9wdGlkICgpLCBUUlVFKTsKKyAgIGlmIChyID09IC0xIHx8IHIgPT0gMCB8fCBy ID4gTlVNX1JFR1MpCistICAgIGNoaWxkX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2Fj aGUsIE5VTV9SRUdTKTsKKysgICAgY2hpbGRfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChOVU1f UkVHUyk7CisgICBlbHNlCisgICAgIGZvciAocmVnbm8gPSAwOyByZWdubyA8IHI7IHJlZ25vKysp CistICAgICAgKCp0aGVfbG93X3RhcmdldC5zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcikgKHJlZ2Nh Y2hlLCB0aCwgcmVnbm8pOworKyAgICAgICgqdGhlX2xvd190YXJnZXQuc3RvcmVfaW5mZXJpb3Jf cmVnaXN0ZXIpICh0aCwgcmVnbm8pOworIH0KKyAKKyAvKiBNYXAgdGhlIFdpbmRvd3MgZXJyb3Ig bnVtYmVyIGluIEVSUk9SIHRvIGEgbG9jYWxlLWRlcGVuZGVudCBlcnJvcgorQEAgLTE1NjksNyAr MTU2OSw2IEBAIHN0YXRpYyBwdGlkX3QKKyB3aW4zMl93YWl0IChwdGlkX3QgcHRpZCwgc3RydWN0 IHRhcmdldF93YWl0c3RhdHVzICpvdXJzdGF0dXMsIGludCBvcHRpb25zKQorIHsKKyAgIHN0cnVj dCBwcm9jZXNzX2luZm8gKnByb2Nlc3M7CistICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOwor IAorICAgd2hpbGUgKDEpCisgICAgIHsKK0BAIC0xNTkxLDggKzE1OTAsNyBAQCB3aW4zMl93YWl0 IChwdGlkX3QgcHRpZCwgc3RydWN0IHRhcmdldF93CisgCSAgT1VUTVNHMiAoKCJDaGlsZCBTdG9w cGVkIHdpdGggc2lnbmFsID0gJWQgXG4iLAorIAkJICAgIG91cnN0YXR1cy0+dmFsdWUuc2lnKSk7 CisgCistCSAgcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9y LCAxKTsKKy0JICBjaGlsZF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ2NhY2hlLCAtMSk7 CisrCSAgY2hpbGRfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzICgtMSk7CisgCisgCSAgaWYgKG91 cnN0YXR1cy0+a2luZCA9PSBUQVJHRVRfV0FJVEtJTkRfTE9BREVECisgCSAgICAgICYmICFzZXJ2 ZXJfd2FpdGluZykKK0BAIC0xNjI0LDE3ICsxNjIyLDE3IEBAIHdpbjMyX3dhaXQgKHB0aWRfdCBw dGlkLCBzdHJ1Y3QgdGFyZ2V0X3cKKyAvKiBGZXRjaCByZWdpc3RlcnMgZnJvbSB0aGUgaW5mZXJp b3IgcHJvY2Vzcy4KKyAgICBJZiBSRUdOTyBpcyAtMSwgZmV0Y2ggYWxsIHJlZ2lzdGVyczsgb3Ro ZXJ3aXNlLCBmZXRjaCBhdCBsZWFzdCBSRUdOTy4gICovCisgc3RhdGljIHZvaWQKKy13aW4zMl9m ZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCBy ZWdubykKKyt3aW4zMl9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKGludCByZWdubykKKyB7Cist ICBjaGlsZF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ2NhY2hlLCByZWdubyk7CisrICBj aGlsZF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ25vKTsKKyB9CisgCisgLyogU3RvcmUg cmVnaXN0ZXJzIHRvIHRoZSBpbmZlcmlvciBwcm9jZXNzLgorICAgIElmIFJFR05PIGlzIC0xLCBz dG9yZSBhbGwgcmVnaXN0ZXJzOyBvdGhlcndpc2UsIHN0b3JlIGF0IGxlYXN0IFJFR05PLiAgKi8K KyBzdGF0aWMgdm9pZAorLXdpbjMyX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKQorK3dpbjMyX3N0b3JlX2luZmVyaW9yX3JlZ2lz dGVycyAoaW50IHJlZ25vKQorIHsKKy0gIGNoaWxkX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAo cmVnY2FjaGUsIHJlZ25vKTsKKysgIGNoaWxkX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAocmVn bm8pOworIH0KKyAKKyAvKiBSZWFkIG1lbW9yeSBmcm9tIHRoZSBpbmZlcmlvciBwcm9jZXNzLiAg VGhpcyBzaG91bGQgZ2VuZXJhbGx5IGJlCistLS0gLi9nZGIvZ2Ric2VydmVyL3dpbjMyLWxvdy5o CTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVy L3dpbjMyLWxvdy5oCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCitAQCAtNjEs MTIgKzYxLDEwIEBAIHN0cnVjdCB3aW4zMl90YXJnZXRfb3BzCisgICB2b2lkICgqdGhyZWFkX2Fk ZGVkKSAod2luMzJfdGhyZWFkX2luZm8gKnRoKTsKKyAKKyAgIC8qIEZldGNoIHJlZ2lzdGVyIGZy b20gZ2Ric2VydmVyIHJlZ2NhY2hlIGRhdGEuICAqLworLSAgdm9pZCAoKmZldGNoX2luZmVyaW9y X3JlZ2lzdGVyKSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKy0JCQkJICAgd2luMzJfdGhy ZWFkX2luZm8gKnRoLCBpbnQgcik7CisrICB2b2lkICgqZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXIp ICh3aW4zMl90aHJlYWRfaW5mbyAqdGgsIGludCByKTsKKyAKKyAgIC8qIFN0b3JlIGEgbmV3IHJl Z2lzdGVyIHZhbHVlIGludG8gdGhlIHRocmVhZCBjb250ZXh0IG9mIFRILiAgKi8KKy0gIHZvaWQg KCpzdG9yZV9pbmZlcmlvcl9yZWdpc3RlcikgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCist CQkJCSAgIHdpbjMyX3RocmVhZF9pbmZvICp0aCwgaW50IHIpOworKyAgdm9pZCAoKnN0b3JlX2lu ZmVyaW9yX3JlZ2lzdGVyKSAod2luMzJfdGhyZWFkX2luZm8gKnRoLCBpbnQgcik7CisgCisgICB2 b2lkICgqc2luZ2xlX3N0ZXApICh3aW4zMl90aHJlYWRfaW5mbyAqdGgpOworIAoKZGlmZiAtLWdp dCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggYzgyODRmOC4uNzBmYjlhMSAxMDA2NDQKLS0t IGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTM2LDcgKzM2LDcgQEAgVmVyc2lvbjogNy4w LjUwLjIwMTAwMTIxCiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyBy ZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFy dCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9y IHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogMiV7P193aXRoX3Vwc3RyZWFtOi51cHN0cmVhbX0le2Rp c3R9CitSZWxlYXNlOiAzJXs/X3dpdGhfdXBzdHJlYW06LnVwc3RyZWFtfSV7ZGlzdH0KIAogTGlj ZW5zZTogR1BMdjMrCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC00MjgsNiArNDI4 LDkgQEAgUGF0Y2g0MTE6IGdkYi1zb2xpYi1kaXNwbGF5LnBhdGNoCiAjIFJldmVydDogQWRkIC1X dW51c2VkLWZ1bmN0aW9uIHRvIGNvbXBpbGUgZmxhZ3MuCiBQYXRjaDQxMjogZ2RiLXVudXNlZC1y ZXZlcnQucGF0Y2gKIAorIyBSZXZlcnQgRlNGIEdEQiBnZGJzZXJ2ZXIgdHJhY2Vwb2ludHMgYXMg aW5jb21wbGV0ZSBub3cuCitQYXRjaDQxMzogZ2RiLWdkYnNlcnZlci10cmFjZXBvaW50LXJldmVy dC5wYXRjaAorCiBCdWlsZFJlcXVpcmVzOiBuY3Vyc2VzLWRldmVsJXs/X2lzYX0gdGV4aW5mbyBn ZXR0ZXh0IGZsZXggYmlzb24gZXhwYXQtZGV2ZWwlez9faXNhfQogUmVxdWlyZXM6IHJlYWRsaW5l JXs/X2lzYX0KIEJ1aWxkUmVxdWlyZXM6IHJlYWRsaW5lLWRldmVsJXs/X2lzYX0KQEAgLTY3Myw2 ICs2NzYsNyBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5j IGdkYi9wLWV4cC5jCiAlcGF0Y2g0MDggLXAxCiAlcGF0Y2g0MTEgLXAxCiAlcGF0Y2g0MTIgLXAx CislcGF0Y2g0MTMgLXAxCiAjIEFsd2F5cyB2ZXJpZnkgaXRzIGFwcGxpY2FiaWxpdHkuCiAlcGF0 Y2gzOTMgLXAxCiAlcGF0Y2gzMzUgLXAxCkBAIC05OTgsNiArMTAwMiw5IEBAIGZpCiAlZW5kaWYK IAogJWNoYW5nZWxvZworKiBUaHUgSmFuIDIxIDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLjUwLjIwMTAwMTIxLTMuZmMxMworLSBSZXZlcnQgRlNG IEdEQiBnZGJzZXJ2ZXIgdHJhY2Vwb2ludHMgYXMgaW5jb21wbGV0ZSBub3cuCisKICogVGh1IEph biAyMSAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcu MC41MC4yMDEwMDEyMS0yLmZjMTMKIC0gYXJjaGVyLWphbmtyYXRvY2h2aWwtZmVkb3JhMTMgY29t bWl0OiAyMWU0MThjMDQyOTBhYTVkMmU3NTU0M2QzMWZlM2ZlNWQ3MGQ2ZDQxCiAtIFtleHByLWN1 bXVsYXRpdmVdIEZpeCAiYnJlYWsgZXhwciBpZiAoY29uZCkiIHJlZ3Jlc3Npb24uCg==