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: - Rebase to FSF GDB 7.2.50.20101231 (which is a 7.3 pre-release). Date: Thu, 23 Jul 2026 18:29:42 GMT Message-ID: <178483138226.1.7395496567913009168.rpms-gdb-6fa2f55b2780@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 6fa2f55b2780c05a15a945461d351a86d147aa7a ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogNmZhMmY1NWIyNzgwYzA1YTE1YTk0NTQ2MWQzNTFhODZkMTQ3YWE3YQog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMS0wMS0wMVQwMToyNzozMCswMTowMAogICAg ICAgICAgICBTdGF0cyAgOiArMjE0NC8tMjY4OCBpbiAyMCBmaWxlKHMpCiAgICAgICAgICAgIFVS TCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvNmZhMmY1NWIy NzgwYzA1YTE1YTk0NTQ2MWQzNTFhODZkMTQ3YWE3YT9icmFuY2g9Zml4LWR1cC1wYXRjaAoKICAg ICAgICAgICAgTG9nOgogICAgICAgICAgICAtIFJlYmFzZSB0byBGU0YgR0RCIDcuMi41MC4yMDEw MTIzMSAod2hpY2ggaXMgYSA3LjMgcHJlLXJlbGVhc2UpLgotIFJlbW92ZSBnZGItNi4zLWJ0LXBh c3QtemVyby0yMDA1MTIwMS5wYXRjaCwgZ2RiLWFyY2hlci1hZGEucGF0Y2ggYW5kCiAgZ2RiLTYu My1mcmFtZXBjemVyby0yMDA0MDkyNy5wYXRjaCBhbHJlYWR5IHJlbW92ZWQgZnJvbSAuc3BlYyBi ZWZvcmUuCi0gUmVtb3ZlIGdkYi02LjUtZHdhcmYtc3RhY2stb3ZlcmZsb3cucGF0Y2gsIHVwc3Ry ZWFtZWQgKFRvbSBUcm9tZXkpLgotIFJlbW92ZSBnZGItNi42LWJ6MjI1NzgzLWdkYi1kZWJ1Z2lu Zm8tcGF0aHMucGF0Y2gsIHVwc3RyZWFtZWQgKFRvbSBUcm9tZXkpLgotIFJlbW92ZSBnZGItNi42 LXJlYWRsaW5lLXN5c3RlbS5wYXRjaCwgcmVpbXBsZW1lbnRlZCB1cHN0cmVhbSAoVG9tIFRyb21l eSkuCi0gUmVtb3ZlIGdkYi1iejY0Mjg3OS1lbGZyZWFkLXNpZ2ludC1zdGFsZS5wYXRjaCwgdXBz dHJlYW1lZCAoSmFuIEtyYXRvY2h2aWwpLgotIFJlbW92ZSBnZGItbmV4dC1vdmVyLXRocm93LnBh dGNoLCB1cHN0cmVhbWVkIChUb20gVHJvbWV5KS4KCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9y ZSBiLy5naXRpZ25vcmUKaW5kZXggMmJmYTYwOS4uZWQxMmE5ZCAxMDA2NDQKLS0tIGEvLmdpdGln bm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xICsxIEBACi1nZGItNy4yLjUwLjIwMTAxMTE3LnRh ci5iejIKKy9nZGItNy4yLjUwLjIwMTAxMjMxLnRhci5iejIKCmRpZmYgLS1naXQgYS9nZGItNi4z LWJ0LXBhc3QtemVyby0yMDA1MTIwMS5wYXRjaCBiL2dkYi02LjMtYnQtcGFzdC16ZXJvLTIwMDUx MjAxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWI5NDZkLi4wMDAwMDAw Ci0tLSBhL2dkYi02LjMtYnQtcGFzdC16ZXJvLTIwMDUxMjAxLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsODggKzAsMCBAQAotMjAwNS0xMi0wMSAgSmVmZiBKb2huc3RvbiAgPGpqb2huc3RuQHJl ZGhhdC5jb20+Ci0KLQkqIGZyYW1lLmMgKGJhY2t0cmFjZV9wYXN0X3plcm9fcGMpOiBOZXcgc3Rh dGljIHZhcmlhYmxlLgotCShnZXRfcHJldl9mcmFtZSk6IERvbid0IHJldHVybiBOVUxMIGZvciB6 ZXJvIHBjIHZhbHVlIGlmCi0JYmFja3RyYWNlIHBhc3QtemVyby1mcmFtZSBvcHRpb24gaXMgdHVy bmVkIG9uLgotCShfaW5pdGlhbGl6ZV9mcmFtZSk6IEluaXRpYWxpemUgbmV3IGNvbW1hbmQgdG8g YWxsb3cgYmFja3RyYWNpbmcKLQlwYXN0IGEgemVybyBwYyB2YWx1ZSAoc2V0IGJhY2t0cmFjZSBw YXN0LXplcm8tcGMpLgotCi10ZXN0c3VpdGUvZ2RiLmJhc2U6Ci0yMDA1LTEyLTAxICBKZWZmIEpv aG5zdG9uICA8ampvaG5zdG5AcmVkaGF0LmNvbT4KLQotCSogc2V0c2hvdy5leHA6IEFkZCB0ZXN0 aW5nIG9mICJzZXQgYmFja3RyYWNlIHBhc3QtemVyby1wYyIgb3B0aW9uLgotCi0yMDA3LTEwLTE1 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlQb3J0IHRv IEdEQi02LjcuCi0KLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2Uvc2V0c2hvdy5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9y aWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZXRzaG93LmV4cAkyMDEwLTA2LTExIDIyOjU2OjA2 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9zZXRzaG93LmV4cAkyMDEwLTA3LTEyIDEwOjQ2OjA2LjAwMDAwMDAwMCArMDIwMAot QEAgLTk2LDYgKzk2LDE2IEBAIGlmIHsgIVt0YXJnZXRfaW5mbyBleGlzdHMgdXNlX2dkYl9zdHVi XSAKLSAgICAgZGVsZXRlX2JyZWFrcG9pbnRzCi0gICAgIGdkYl90ZXN0ICJydW4iICJTdGFydGlu ZyBwcm9ncmFtOi4qZm9vIGJhciBibHVwIGJheiBidWJibGUuKiIgInBhc3NpbmcgYXJncyIKLSB9 Ci0rI3Rlc3Qgc2hvdyBiYWNrdHJhY2UgcGFzdC16ZXJvLXBjCi0rZ2RiX3Rlc3QgInNob3cgYmFj a3RyYWNlIHBhc3QtemVyby1wYyIgIldoZXRoZXIgYmFja3RyYWNlcyBzaG91bGQgY29udGludWUg cGFzdCBhIHplcm8gcGMgdmFsdWUgaXMgb2ZmLiIgImRlZmF1bHQgc2hvdyBiYWNrdHJhY2UgcGFz dC16ZXJvLXBjIChvZmYpIgotKyN0ZXN0IHNldCBiYWNrdHJhY2UgcGFzdC16ZXJvLXBjIG9uCi0r Z2RiX3Rlc3QgInNldCBiYWNrdHJhY2UgcGFzdC16ZXJvLXBjIG9uIiAiIiAic2V0IGJhY2t0cmFj ZSBwYXN0LXplcm8tcGMgb24iCi0rI3Rlc3Qgc2hvdyBiYWNrdHJhY2UgcGFzdC16ZXJvLXBjCi0r Z2RiX3Rlc3QgInNob3cgYmFja3RyYWNlIHBhc3QtemVyby1wYyIgIldoZXRoZXIgYmFja3RyYWNl cyBzaG91bGQgY29udGludWUgcGFzdCBhIHplcm8gcGMgdmFsdWUgaXMgb24uIiAic2hvdyBiYWNr dHJhY2UgcGFzdC16ZXJvLXBjIChvbikiCi0rI3Rlc3Qgc2V0IGJhY2t0cmFjZSBwYXN0LXplcm8t cGMgb2ZmCi0rZ2RiX3Rlc3QgInNldCBiYWNrdHJhY2UgcGFzdC16ZXJvLXBjIG9mZiIgIiIgInNl dCBiYWNrdHJhY2UgcGFzdC16ZXJvLXBjIG9mZiIKLSsjdGVzdCBzaG93IGJhY2t0cmFjZSBwYXN0 LXplcm8tcGMKLStnZGJfdGVzdCAic2hvdyBiYWNrdHJhY2UgcGFzdC16ZXJvLXBjIiAiV2hldGhl ciBiYWNrdHJhY2VzIHNob3VsZCBjb250aW51ZSBwYXN0IGEgemVybyBwYyB2YWx1ZSBpcyBvZmYu IiAic2hvdyBiYWNrdHJhY2UgcGFzdC16ZXJvLXBjIChvZmYpIgotICN0ZXN0IHNldCBjaGVjayBy YW5nZSBvbgotIGdkYl90ZXN0ICJzZXQgY2hlY2sgcmFuZ2Ugb24iICIuKiIgInNldCBjaGVjayBy YW5nZSBvbiIgCi0gI3Rlc3Qgc2hvdyBjaGVjayByYW5nZSBvbgotSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL2ZyYW1lLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzEx Lm9yaWcvZ2RiL2ZyYW1lLmMJMjAxMC0wNy0xMiAxMDowMDo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9mcmFtZS5jCTIwMTAtMDctMTIgMTA6NDU6MTguMDAw MDAwMDAwICswMjAwCi1AQCAtMTg1LDYgKzE4NSwxNiBAQCBXaGV0aGVyIGJhY2t0cmFjZXMgc2hv dWxkIGNvbnRpbnVlIHBhc3QgCi0gCQkgICAgdmFsdWUpOwotIH0KLSAKLStzdGF0aWMgaW50IGJh Y2t0cmFjZV9wYXN0X3plcm9fcGM7Ci0rc3RhdGljIHZvaWQKLStzaG93X2JhY2t0cmFjZV9wYXN0 X3plcm9fcGMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICAgICBz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnBy aW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiXAotK1doZXRoZXIgYmFja3RyYWNlcyBzaG91bGQgY29u dGludWUgcGFzdCBhIHplcm8gcGMgdmFsdWUgaXMgJXMuXG4iKSwKLSsJCSAgICB2YWx1ZSk7Ci0r fQotKwotIHN0YXRpYyBpbnQgYmFja3RyYWNlX3Bhc3RfZW50cnk7Ci0gc3RhdGljIHZvaWQKLSBz aG93X2JhY2t0cmFjZV9wYXN0X2VudHJ5IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21f dHR5LAotQEAgLTE3ODQsOSArMTc5NCw3IEBAIGdldF9wcmV2X2ZyYW1lIChzdHJ1Y3QgZnJhbWVf aW5mbyAqdGhpc18KLSAgICAgfQotIAotICAgaWYgKHRoaXNfZnJhbWUtPmxldmVsID4gMAotLSNp ZiAwCi0tICAgICAgJiYgYmFja3RyYWNlX3Bhc3RfemVyb19wYwotLSNlbmRpZgotKyAgICAgICYm ICFiYWNrdHJhY2VfcGFzdF96ZXJvX3BjCi0gICAgICAgJiYgZ2V0X2ZyYW1lX3R5cGUgKHRoaXNf ZnJhbWUpID09IE5PUk1BTF9GUkFNRQotICAgICAgICYmIGdldF9mcmFtZV90eXBlIChnZXRfbmV4 dF9mcmFtZSAodGhpc19mcmFtZSkpID09IE5PUk1BTF9GUkFNRQotICAgICAgICYmIGdldF9mcmFt ZV9wYyAodGhpc19mcmFtZSkgPT0gMCkKLUBAIC0yMjcxLDYgKzIyNzksMTcgQEAgdGhlIHJlc3Qg b2YgdGhlIHN0YWNrIHRyYWNlLiIpLAotIAkJCSAgICZzZXRfYmFja3RyYWNlX2NtZGxpc3QsCi0g CQkJICAgJnNob3dfYmFja3RyYWNlX2NtZGxpc3QpOwotIAotKyAgYWRkX3NldHNob3dfYm9vbGVh bl9jbWQgKCJwYXN0LXplcm8tcGMiLCBjbGFzc19vYnNjdXJlLAotKyAJCQkgICAmYmFja3RyYWNl X3Bhc3RfemVyb19wYywgXygiXAotK1NldCB3aGV0aGVyIGJhY2t0cmFjZXMgc2hvdWxkIGNvbnRp bnVlIHBhc3QgYSB6ZXJvIHBjIHZhbHVlLiIpLCBfKCJcCi0rU2hvdyB3aGV0aGVyIGJhY2t0cmFj ZXMgc2hvdWxkIGNvbnRpbnVlIHBhc3QgYSB6ZXJvIHBjIHZhbHVlLiIpLCBfKCJcCi0rTm9ybWFs bHkgR0RCIHN0b3BzIGJhY2t0cmFjaW5nIHdoZW4gaXQgZmluZHMgYSB6ZXJvIHBjLlxuXAotK1Nl dCB0aGlzIHZhcmlhYmxlIGlmIHlvdSBuZWVkIHRvIHNlZSB0aGUgcmVzdCBvZiB0aGUgc3RhY2sg dHJhY2UuIiksIAotKyAJCQkgICBOVUxMLAotKwkJCSAgIHNob3dfYmFja3RyYWNlX3Bhc3RfemVy b19wYywKLSsJCQkgICAmc2V0X2JhY2t0cmFjZV9jbWRsaXN0LAotKyAJCQkgICAmc2hvd19iYWNr dHJhY2VfY21kbGlzdCk7Ci0rCi0gICBhZGRfc2V0c2hvd19pbnRlZ2VyX2NtZCAoImxpbWl0Iiwg Y2xhc3Nfb2JzY3VyZSwKLSAJCQkgICAmYmFja3RyYWNlX2xpbWl0LCBfKCJcCi0gU2V0IGFuIHVw cGVyIGJvdW5kIG9uIHRoZSBudW1iZXIgb2YgYmFja3RyYWNlIGxldmVscy4iKSwgXygiXAoKZGlm ZiAtLWdpdCBhL2dkYi02LjMtZnJhbWVwY3plcm8tMjAwNDA5MjcucGF0Y2ggYi9nZGItNi4zLWZy YW1lcGN6ZXJvLTIwMDQwOTI3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh OGRhZTZiLi4wMDAwMDAwCi0tLSBhL2dkYi02LjMtZnJhbWVwY3plcm8tMjAwNDA5MjcucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0yMDA0LTA5LTI3ICBBbmRyZXcgQ2FnbmV5 ICA8Y2FnbmV5QGdudS5vcmc+Ci0KLQkqIGZyYW1lLmMgKGdldF9wcmV2X2ZyYW1lKTogU3RvcCBi YWNrdHJhY2Ugd2hlbiBhIHplcm8gUEMgYW5kCi0Jc3VjY2Vzc2l2ZSBub3JtYWwgZnJhbWVzLgot Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvZnJhbWUuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi02LjguNTAuMjAwODExMjgub3JpZy9nZGIvZnJhbWUuYwkyMDA4LTEyLTA0IDAxOjM0OjM3 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi02LjguNTAuMjAwODExMjgvZ2RiL2ZyYW1lLmMJMjAw OC0xMi0wNCAwMTozNTo0Ny4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNTY2LDYgKzE1NjYsMTggQEAg Z2V0X3ByZXZfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzXwotICAgICAgIHJldHVybiBO VUxMOwotICAgICB9Ci0gCi0rICBpZiAodGhpc19mcmFtZS0+bGV2ZWwgPiAwCi0rI2lmIDAKLSsg ICAgICAmJiBiYWNrdHJhY2VfcGFzdF96ZXJvX3BjCi0rI2VuZGlmCi0rICAgICAgJiYgZ2V0X2Zy YW1lX3R5cGUgKHRoaXNfZnJhbWUpID09IE5PUk1BTF9GUkFNRQotKyAgICAgICYmIGdldF9mcmFt ZV90eXBlIChnZXRfbmV4dF9mcmFtZSAodGhpc19mcmFtZSkpID09IE5PUk1BTF9GUkFNRQotKyAg ICAgICYmIGdldF9mcmFtZV9wYyAodGhpc19mcmFtZSkgPT0gMCkKLSsgICAgewotKyAgICAgIGZy YW1lX2RlYnVnX2dvdF9udWxsX2ZyYW1lICh0aGlzX2ZyYW1lLCAiemVybyBQQyIpOwotKyAgICAg IHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0gICByZXR1cm4gZ2V0X3ByZXZfZnJhbWVfMSAodGhp c19mcmFtZSk7Ci0gfQotIAoKZGlmZiAtLWdpdCBhL2dkYi02LjMtaWE2NC1zaWdpbGwtMjAwNTEx MTUucGF0Y2ggYi9nZGItNi4zLWlhNjQtc2lnaWxsLTIwMDUxMTE1LnBhdGNoCmluZGV4IDA3YTZi NDYuLjg0ZDgzY2UgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtaWE2NC1zaWdpbGwtMjAwNTExMTUucGF0 Y2gKKysrIGIvZ2RiLTYuMy1pYTY0LXNpZ2lsbC0yMDA1MTExNS5wYXRjaApAQCAtMTIsMTAgKzEy LDEwIEBAIGdkYi90ZXN0c3VpdGU6CiAJKiBnZGIuYXJjaC9pYTY0LXNpZ2lsbC5jOiBOZXcgdGVz dC4KIAkqIGdkYi5hcmNoL2lhNjQtc2lnaWxsLmV4cDogRGl0dG8uCiAKLUluZGV4OiBnZGItNi44 LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaWE2NC1zaWdpbGwuZXhwCitJbmRl eDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2lhNjQtc2lnaWxs LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC9pYTY0LXNpZ2lsbC5leHAJMjAwOC0xMi0wMiAyMToxMDo1Ny4wMDAwMDAwMDAgKzAxMDAKKysr KyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaWE2NC1zaWdpbGwu ZXhwCTIwMTEtMDEtMDEgMDA6NTU6MDQuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDQ5IEBA CiArIyAgIENvcHlyaWdodCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpA QCAtNjYsMTAgKzY2LDEwIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gvaWE2NC1zaWdpbGwuZXhwCiArZ2RiX3Rlc3QgImhhbmRsZSBTSUdJTEwgbm9z dG9wIG5vcHJpbnQiICJTSUdJTEwuKk5vLipOby4qWWVzLioiICJoYW5kbGUgc2lnaWxsIgogK2dk Yl90ZXN0ICJydW4iICJTdGFydGluZyBwcm9ncmFtLippYTY0LXNpZ2lsbC4qXFtOZXcgdGhyZWFk LipcXS4qaGVsbG8gd29ybGQuKlByb2dyYW0gZXhpdGVkIG5vcm1hbGx5LiIgInJ1biB0byBleGl0 IgogKyAKLUluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv aWE2NC1zaWdpbGwuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXJjaC9pYTY0LXNpZ2lsbC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIv dGVzdHN1aXRlL2dkYi5hcmNoL2lhNjQtc2lnaWxsLmMJMjAwOC0xMi0wMiAyMToxMDo1Ny4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gvaWE2NC1zaWdpbGwuYwkyMDExLTAxLTAxIDAwOjU1OjA0LjAwMDAwMDAwMCArMDEwMAogQEAg LTAsMCArMSw4IEBACiArI2luY2x1ZGUgPHN0ZGlvLmg+CiArCkBAIC03OSwxMSArNzksMTEgQEAg SW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9pYTY0LXNp Z2lsbC5jCiArICByZXR1cm4gMDsKICt9CiArCi1JbmRleDogZ2RiLTYuOC41MC4yMDA4MTEyOC9n ZGIvbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9saW51eC1uYXQu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwODExMjgub3JpZy9nZGIvbGludXgtbmF0 LmMJMjAwOC0xMi0wMiAxOTowNDozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNi44LjUwLjIw MDgxMTI4L2dkYi9saW51eC1uYXQuYwkyMDA4LTEyLTAyIDIxOjExOjExLjAwMDAwMDAwMCArMDEw MAotQEAgLTI5NzQsNyArMjk3NCw4IEBAIHJldHJ5OgorLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEu b3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMS0wMS0wMSAwMDo1NDowNC4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9saW51eC1uYXQuYwkyMDExLTAxLTAxIDAwOjU1 OjU4LjAwMDAwMDAwMCArMDEwMAorQEAgLTM2NTIsNyArMzY1Miw4IEBAIHJldHJ5OgogICAgICAg dGhyZWFkcyBjYW4gYmUgYSBiaXQgdGltZS1jb25zdW1pbmcgc28gaWYgd2Ugd2FudCBkZWNlbnQK ICAgICAgIHBlcmZvcm1hbmNlIHdpdGggaGVhdmlseSBtdWx0aS10aHJlYWRlZCBwcm9ncmFtcywg ZXNwZWNpYWxseSB3aGVuCiAgICAgICB0aGV5J3JlIHVzaW5nIGEgaGlnaCBmcmVxdWVuY3kgdGlt ZXIsIHdlJ2QgYmV0dGVyIGF2b2lkIGl0IGlmIHdlCkBAIC05Myw4ICs5Myw4IEBAIEluZGV4OiBn ZGItNi44LjUwLjIwMDgxMTI4L2dkYi9saW51eC1uYXQuYwogIAogICAgaWYgKFdJRlNUT1BQRUQg KHN0YXR1cykpCiAgICAgIHsKLUBAIC0yOTkyLDcgKzI5OTMsOSBAQCByZXRyeToKLSAJICAmJiBp bmYtPnN0b3Bfc29vbiA9PSBOT19TVE9QX1FVSUVUTFkKK0BAIC0zNjcwLDcgKzM2NzEsOSBAQCBy ZXRyeToKKyAJICAmJiBpbmYtPmNvbnRyb2wuc3RvcF9zb29uID09IE5PX1NUT1BfUVVJRVRMWQog IAkgICYmIHNpZ25hbF9zdG9wX3N0YXRlIChzaWdubykgPT0gMAogIAkgICYmIHNpZ25hbF9wcmlu dF9zdGF0ZSAoc2lnbm8pID09IDAKIC0JICAmJiBzaWduYWxfcGFzc19zdGF0ZSAoc2lnbm8pID09 IDEpCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2ggYi9nZGIt Ni4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAppbmRleCA1MTk2NDNkLi44MGUzMDY4IDEwMDY0 NAotLS0gYS9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAorKysgYi9nZGItNi4zLXJl YWRuZXZlci0yMDA1MDkwNy5wYXRjaApAQCAtMTEsMTEgKzExLDExIEBACiAKICAgICAgICAgKiBn ZGIudGV4aW5mbyAoRmlsZSBPcHRpb25zKTogRG9jdW1lbnQgLS1yZWFkbmV2ZXIuCiAKLUluZGV4 OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9kb2MvZ2RiLnRleGluZm8KK0luZGV4OiBnZGItNy4y LjUwLjIwMTAxMjMxL2dkYi9kb2MvZ2RiLnRleGluZm8KID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTExLTEyIDIxOjQ5OjQx LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2RvYy9nZGIudGV4 aW5mbwkyMDEwLTExLTE2IDA3OjU5OjMxLjAwMDAwMDAwMCArMDEwMAotQEAgLTEwMDEsNiArMTAw MSwxMiBAQCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUncyBlbnRpcmUgc3ltYm9sIHRhCistLS0gZ2Ri LTcuMi41MC4yMDEwMTIzMS5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0xMi0yOSAwOTow MTozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9kb2MvZ2Ri LnRleGluZm8JMjAxMS0wMS0wMSAwMDo1NDowNy4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMDA3LDYg KzEwMDcsMTIgQEAgUmVhZCBlYWNoIHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJvbCB0YQogIHRo ZSBkZWZhdWx0LCB3aGljaCBpcyB0byByZWFkIGl0IGluY3JlbWVudGFsbHkgYXMgaXQgaXMgbmVl ZGVkLgogIFRoaXMgbWFrZXMgc3RhcnR1cCBzbG93ZXIsIGJ1dCBtYWtlcyBmdXR1cmUgb3BlcmF0 aW9ucyBmYXN0ZXIuCiAgCkBAIC0yOCwxMSArMjgsMTEgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAx MDExMTYvZ2RiL2RvYy9nZGIudGV4aW5mbwogIEBlbmQgdGFibGUKICAKICBAbm9kZSBNb2RlIE9w dGlvbnMKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9tYWluLmMKK0luZGV4OiBnZGIt Ny4yLjUwLjIwMTAxMjMxL2dkYi9tYWluLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIw MTAxMTE2Lm9yaWcvZ2RiL21haW4uYwkyMDEwLTExLTE2IDA3OjU5OjIwLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL21haW4uYwkyMDEwLTExLTE2IDA3OjU5OjU5 LjAwMDAwMDAwMCArMDEwMAotQEAgLTM5MCw2ICszOTAsNyBAQCBjYXB0dXJlZF9tYWluICh2b2lk ICpkYXRhKQorLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvbWFpbi5jCTIwMTEtMDEt MDEgMDA6NTM6MDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIv bWFpbi5jCTIwMTEtMDEtMDEgMDA6NTQ6MDcuMDAwMDAwMDAwICswMTAwCitAQCAtMzkxLDYgKzM5 MSw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICAgICAgeyJ4ZGIiLCBub19hcmd1 bWVudCwgJnhkYl9jb21tYW5kcywgMX0sCiAgICAgICAgeyJkYngiLCBub19hcmd1bWVudCwgJmRi eF9jb21tYW5kcywgMX0sCiAgICAgICAgeyJyZWFkbm93Iiwgbm9fYXJndW1lbnQsICZyZWFkbm93 X3N5bWJvbF9maWxlcywgMX0sCkBAIC00MCw3ICs0MCw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIw MTAxMTE2L2dkYi9tYWluLmMKICAgICAgICB7InIiLCBub19hcmd1bWVudCwgJnJlYWRub3dfc3lt Ym9sX2ZpbGVzLCAxfSwKICAgICAgICB7InF1aWV0Iiwgbm9fYXJndW1lbnQsICZxdWlldCwgMX0s CiAgICAgICAgeyJxIiwgbm9fYXJndW1lbnQsICZxdWlldCwgMX0sCi1AQCAtOTgyLDYgKzk4Myw3 IEBAIE9wdGlvbnM6XG5cblwKK0BAIC05OTMsNiArOTk0LDcgQEAgT3B0aW9uczpcblxuXAogICAg ZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZpbGUuXG5cCiAgICAtLXF1aWV0ICAgICAgICAgICAgRG8g bm90IHByaW50IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJlYWRub3cgICAg ICAgICAgRnVsbHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXApAQCAtNDgs MTAgKzQ4LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9tYWluLmMKICAiKSwg c3RyZWFtKTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKICAgIC0tc2U9RklMRSAgICAgICAg ICBVc2UgRklMRSBhcyBzeW1ib2wgZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAotSW5kZXg6 IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3N5bWZpbGUuYworSW5kZXg6IGdkYi03LjIuNTAuMjAx MDEyMzEvZ2RiL3N5bWZpbGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDExMTYu b3JpZy9nZGIvc3ltZmlsZS5jCTIwMTAtMTAtMTcgMjA6NDk6NDYuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvc3ltZmlsZS5jCTIwMTAtMTEtMTYgMDc6NTk6MzEu MDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTIzMS5vcmlnL2dkYi9zeW1maWxl LmMJMjAxMC0xMS0yMyAwMTo1OTo1OC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIw MTAxMjMxL2dkYi9zeW1maWxlLmMJMjAxMS0wMS0wMSAwMDo1NDowNy4wMDAwMDAwMDAgKzAxMDAK IEBAIC04MCw2ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91c2Vyc19jbGVhbnVw ICgKICAKICAvKiBHbG9iYWwgdmFyaWFibGVzIG93bmVkIGJ5IHRoaXMgZmlsZSAqLwpAQCAtNjAs MTAgKzYwLDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9zeW1maWxlLmMKICAK ICAvKiBFeHRlcm5hbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyByZWZlcmVuY2VkLiAqLwogIAot SW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03 LjIuNTAuMjAxMDEyMzEvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu NTAuMjAxMDExMTYub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTEtMTYgMDc6NTQ6MDIuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZHdhcmYycmVhZC5jCTIw MTAtMTEtMTYgMDg6MDA6MTguMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTIz MS5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMS0wMS0wMSAwMDo0MTo1MS4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9kd2FyZjJyZWFkLmMJMjAxMS0wMS0wMSAw MDo1NDowNy4wMDAwMDAwMDAgKzAxMDAKIEBAIC01Nyw2ICs1Nyw3IEBACiAgI2luY2x1ZGUgInZl Yy5oIgogICNpbmNsdWRlICJjLWxhbmcuaCIKQEAgLTcyLDcgKzcyLDcgQEAgSW5kZXg6IGdkYi03 LjIuNTAuMjAxMDExMTYvZ2RiL2R3YXJmMnJlYWQuYwogIAogICNpbmNsdWRlIDxmY250bC5oPgog ICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtMTM1Niw4ICsxMzU3LDkgQEAgZHdhcmYyX2hh c19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQorQEAgLTEzNDUsOCArMTM0Niw5IEBAIGR3 YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKICAgICAgICBiZmRfbWFwX292 ZXJfc2VjdGlvbnMgKG9iamZpbGUtPm9iZmQsIGR3YXJmMl9sb2NhdGVfc2VjdGlvbnMsIE5VTEwp OwogICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSA9IG9iamZpbGU7CiAgICAgIH0K QEAgLTg0LDE1ICs4NCwxNSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZHdhcmYy cmVhZC5jCiAgfQogIAogIC8qIFdoZW4gbG9hZGluZyBzZWN0aW9ucywgd2UgY2FuIGVpdGhlciBs b29rIGZvciAiLjxuYW1lPiIsIG9yIGZvcgotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2Ri L3RvcC5oCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdG9wLmgKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3RvcC5oCTIwMTAtMDQtMDcgMTg6NTQ6 MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdG9wLmgJMjAx MC0xMS0xNiAwNzo1OTozMS4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMjMx Lm9yaWcvZ2RiL3RvcC5oCTIwMTAtMTItMjkgMDE6NTg6MTQuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdG9wLmgJMjAxMS0wMS0wMSAwMDo1NDoyMS4wMDAwMDAw MDAgKzAxMDAKIEBAIC02MSw2ICs2MSw3IEBAIGV4dGVybiB2b2lkIHNldF9wcm9tcHQgKGNoYXIg Kik7CiAgCiAgLyogRnJvbSByYW5kb20gcGxhY2VzLiAgKi8KICBleHRlcm4gaW50IHJlYWRub3df c3ltYm9sX2ZpbGVzOwogK2V4dGVybiBpbnQgcmVhZG5ldmVyX3N5bWJvbF9maWxlczsKICAKLSAv KiBQZXJmb3JtIF9pbml0aWFsaXplIGluaXRpYWxpemF0aW9uICovCisgLyogUGVyZm9ybSBfaW5p dGlhbGl6ZSBpbml0aWFsaXphdGlvbi4gICovCiAgZXh0ZXJuIHZvaWQgZ2RiX2luaXQgKGNoYXIg Kik7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1zZWN1cml0eS1lcnJhdGEtMjAwNTA2MTAucGF0Y2gg Yi9nZGItNi4zLXNlY3VyaXR5LWVycmF0YS0yMDA1MDYxMC5wYXRjaAppbmRleCAzNzc2NWY5Li4w ZmU2OGRmIDEwMDY0NAotLS0gYS9nZGItNi4zLXNlY3VyaXR5LWVycmF0YS0yMDA1MDYxMC5wYXRj aAorKysgYi9nZGItNi4zLXNlY3VyaXR5LWVycmF0YS0yMDA1MDYxMC5wYXRjaApAQCAtMTksMTAg KzE5LDEwIEBAIFByb3Bvc2VkIHVwc3RyZWFtIGJ1dCBuZXZlciBjb21taXR0ZWQgdXBzdHJlYW0u CiAgICAgICAgIChzb3VyY2VfY29tbWFuZCk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLiAgQ2hlY2sg cGVybWlzc2lvbnMgaWYKICAgICAgICAgRlJPTV9UVFkgaXMgLTEuCiAKLUluZGV4OiBnZGItNy4x LjkwLjIwMTAwNzIwL2dkYi9jbGkvY2xpLWNtZHMuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEy MzEvZ2RiL2NsaS9jbGktY21kcy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcy MC5vcmlnL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEwLTA1LTE3IDIxOjI4OjEyLjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL2NsaS9jbGktY21kcy5jCTIwMTAtMDct MjEgMjA6MzA6MzAuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTIzMS5vcmln L2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEwLTEyLTI5IDAzOjExOjA0LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2NsaS9jbGktY21kcy5jCTIwMTEtMDEtMDEgMDA6 NTM6NTEuMDAwMDAwMDAwICswMTAwCiBAQCAtMzksNiArMzksNyBAQAogICNpbmNsdWRlICJzb3Vy Y2UuaCIKICAjaW5jbHVkZSAiZGlzYXNtLmgiCkBAIC0zMSw3ICszMSw3IEBAIEluZGV4OiBnZGIt Ny4xLjkwLjIwMTAwNzIwL2dkYi9jbGkvY2xpLWNtZHMuYwogIAogICNpbmNsdWRlICJ1aS1vdXQu aCIKICAKLUBAIC00ODcsNyArNDg4LDcgQEAgU2NyaXB0IGZpbGVuYW1lIGV4dGVuc2lvbiByZWNv Z25pdGlvbiBpcworQEAgLTQ4OCw3ICs0ODksNyBAQCBTY3JpcHQgZmlsZW5hbWUgZXh0ZW5zaW9u IHJlY29nbml0aW9uIGlzCiAgCiAgaW50CiAgZmluZF9hbmRfb3Blbl9zY3JpcHQgKGNvbnN0IGNo YXIgKnNjcmlwdF9maWxlLCBpbnQgc2VhcmNoX3BhdGgsCkBAIC00MCw3ICs0MCw3IEBAIEluZGV4 OiBnZGItNy4xLjkwLjIwMTAwNzIwL2dkYi9jbGkvY2xpLWNtZHMuYwogIHsKICAgIGNoYXIgKmZp bGU7CiAgICBpbnQgZmQ7Ci1AQCAtNTEzLDYgKzUxNCwzMiBAQCBmaW5kX2FuZF9vcGVuX3Njcmlw dCAoY29uc3QgY2hhciAqc2NyaXB0CitAQCAtNTE0LDYgKzUxNSwzMiBAQCBmaW5kX2FuZF9vcGVu X3NjcmlwdCAoY29uc3QgY2hhciAqc2NyaXB0CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIH0KICAK QEAgLTczLDcgKzczLDcgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL2NsaS9jbGkt Y21kcy5jCiAgICBkb19jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKICAKICAgICpzdHJlYW1wID0g ZmRvcGVuIChmZCwgRk9QRU5fUlQpOwotQEAgLTU3MiwxMyArNTk5LDE0IEBAIHNvdXJjZV9zY3Jp cHRfd2l0aF9zZWFyY2ggKGNvbnN0IGNoYXIgKmYKK0BAIC01NzMsMTMgKzYwMCwxNCBAQCBzb3Vy Y2Vfc2NyaXB0X3dpdGhfc2VhcmNoIChjb25zdCBjaGFyICpmCiAgICBpZiAoZmlsZSA9PSBOVUxM IHx8ICpmaWxlID09IDApCiAgICAgIGVycm9yIChfKCJzb3VyY2UgY29tbWFuZCByZXF1aXJlcyBm aWxlIG5hbWUgb2YgZmlsZSB0byBzb3VyY2UuIikpOwogIApAQCAtODEsMTkgKzgxLDE5IEBAIElu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIwL2dkYi9jbGkvY2xpLWNtZHMuYwogKyAgaWYgKCFmaW5k X2FuZF9vcGVuX3NjcmlwdCAoZmlsZSwgc2VhcmNoX3BhdGgsICZzdHJlYW0sICZmdWxsX3BhdGgs CiArCQkJICAgICBmcm9tX3R0eSkpCiAgICAgIHsKLSAgICAgICAvKiBUaGUgc2NyaXB0IHdhc24n dCBmb3VuZCwgb3Igd2FzIG90aGVyd2lzZSBpbmFjY2Vzc2libGUuCi0gCSBJZiB0aGUgc291cmNl IGNvbW1hbmQgd2FzIGludm9rZWQgaW50ZXJhY3RpdmVseSwgdGhyb3cgYW4gZXJyb3IuCi0gCSBP dGhlcndpc2UgKGUuZy4gaWYgaXQgd2FzIGludm9rZWQgYnkgYSBzY3JpcHQpLCBzaWxlbnRseSBp Z25vcmUKLSAJIHRoZSBlcnJvci4gICovCisgICAgICAgLyogVGhlIHNjcmlwdCB3YXNuJ3QgZm91 bmQsIG9yIHdhcyBvdGhlcndpc2UgaW5hY2Nlc3NpYmxlLiAgCisgICAgICAgICAgSWYgdGhlIHNv dXJjZSBjb21tYW5kIHdhcyBpbnZva2VkIGludGVyYWN0aXZlbHksIHRocm93IGFuCisgCSBlcnJv ci4gIE90aGVyd2lzZSAoZS5nLiBpZiBpdCB3YXMgaW52b2tlZCBieSBhIHNjcmlwdCksCisgCSBz aWxlbnRseSBpZ25vcmUgdGhlIGVycm9yLiAgKi8KIC0gICAgICBpZiAoZnJvbV90dHkpCiArICAg ICAgaWYgKGZyb21fdHR5ID4gMCkKICAJcGVycm9yX3dpdGhfbmFtZSAoZmlsZSk7CiAgICAgICAg ZWxzZQogIAlyZXR1cm47Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMC9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2dkYmluaXQuZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcy MC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCTIwMTAtMDctMjAgMjI6MjU6NDAu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2dkYmluaXQuZXhwCTIwMTEtMDEtMDEgMDA6NTM6MDkuMDAwMDAwMDAwICswMTAwCiBA QCAtMCwwICsxLDkxIEBACiArIyAgIENvcHlyaWdodCAyMDA1CiArIyAgIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgpAQCAtMTg2LDE3ICsxODYsMTcgQEAgSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAogK30KICsKICtyZW1v dGVfZXhlYyBidWlsZCAicm0gLmdkYmluaXQiCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMC9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxlCitJbmRleDogZ2RiLTcuMi41MC4y MDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxlCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysg Z2RiLTcuMS45MC4yMDEwMDcyMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxl CTIwMTAtMDctMjAgMjI6MjU6NDAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEw MTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxlCTIwMTEtMDEtMDEgMDA6 NTM6MDkuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxIEBACiArZWNobyAiXG5pbiBnZGJpbml0 IgotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL21haW4uYworSW5kZXg6IGdkYi03LjIu NTAuMjAxMDEyMzEvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3 MjAub3JpZy9nZGIvbWFpbi5jCTIwMTAtMDYtMjYgMDg6NDQ6NDcuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMS45MC4yMDEwMDcyMC9nZGIvbWFpbi5jCTIwMTAtMDctMjEgMjA6MDk6MDMuMDAw MDAwMDAwICswMjAwCi1AQCAtNzk0LDcgKzc5NCw3IEBAIEV4Y2VzcyBjb21tYW5kIGxpbmUgYXJn dW1lbnRzIGlnbm9yZWQuICgKKy0tLSBnZGItNy4yLjUwLjIwMTAxMjMxLm9yaWcvZ2RiL21haW4u YwkyMDEwLTEyLTI5IDAxOjU4OjE0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAx MDEyMzEvZ2RiL21haW4uYwkyMDExLTAxLTAxIDAwOjUzOjA5LjAwMDAwMDAwMCArMDEwMAorQEAg LTgwNSw3ICs4MDUsNyBAQCBFeGNlc3MgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBpZ25vcmVkLiAo CiAgICAgICBkZWJ1Z2dpbmcgb3Igd2hhdCBkaXJlY3RvcnkgeW91IGFyZSBpbi4gICovCiAgCiAg ICBpZiAoaG9tZV9nZGJpbml0ICYmICFpbmhpYml0X2dkYmluaXQpCkBAIC0yMDUsNyArMjA1LDcg QEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL21haW4uYwogIAogICAgLyogTm93IHBl cmZvcm0gYWxsIHRoZSBhY3Rpb25zIGluZGljYXRlZCBieSB0aGUgYXJndW1lbnRzLiAgKi8KICAg IGlmIChjZGFyZyAhPSBOVUxMKQotQEAgLTg2OCw3ICs4NjgsNyBAQCBDYW4ndCBhdHRhY2ggdG8g cHJvY2VzcyBhbmQgc3BlY2lmeSBhIGNvCitAQCAtODgwLDcgKzg4MCw3IEBAIENhbid0IGF0dGFj aCB0byBwcm9jZXNzIGFuZCBzcGVjaWZ5IGEgY28KICAgIC8qIFJlYWQgdGhlIC5nZGJpbml0IGZp bGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCAqaWYqIGl0IGlzbid0CiAgICAgICB0aGUgc2Ft ZSBhcyB0aGUgJEhPTUUvLmdkYmluaXQgZmlsZSAoaXQgc2hvdWxkIGV4aXN0LCBhbHNvKS4gICov CiAgICBpZiAobG9jYWxfZ2RiaW5pdCAmJiAhaW5oaWJpdF9nZGJpbml0KQpAQCAtMjE0LDExICsy MTQsMTEgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL21haW4uYwogIAogICAgLyog Tm93IHRoYXQgYWxsIC5nZGJpbml0J3MgaGF2ZSBiZWVuIHJlYWQgYW5kIGFsbCAtZCBvcHRpb25z IGhhdmUgYmVlbgogICAgICAgcHJvY2Vzc2VkLCB3ZSBjYW4gcmVhZCBhbnkgc2NyaXB0cyBtZW50 aW9uZWQgaW4gU1lNQVJHLgotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL3B5dGhvbi9w eS1hdXRvLWxvYWQuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL3B5dGhvbi9weS1h dXRvLWxvYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MjAub3JpZy9nZGIv cHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTAtMDUtMTcgMjM6MjM6MjUuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTAt MDctMjAgMjI6MjU6NDAuMDAwMDAwMDAwICswMjAwCi1AQCAtMjE5LDcgKzIxOSw3IEBAIHNvdXJj ZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKKy0tLSBnZGItNy4yLjUwLjIwMTAx MjMxLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEwLTEyLTE1IDE4OjI3OjU5LjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL3B5dGhvbi9weS1hdXRv LWxvYWQuYwkyMDExLTAxLTAxIDAwOjUzOjA5LjAwMDAwMDAwMCArMDEwMAorQEAgLTIyNCw3ICsy MjQsNyBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCiAgCX0KICAK ICAgICAgICBvcGVuZWQgPSBmaW5kX2FuZF9vcGVuX3NjcmlwdCAoZmlsZSwgMSAvKnNlYXJjaF9w YXRoKi8sCkBAIC0yMjcsMTAgKzIyNywxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMC9n ZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCiAgCiAgICAgICAgLyogSWYgdGhlIGZpbGUgaXMgbm90 IGZvdW5kLCB3ZSBzdGlsbCByZWNvcmQgdGhlIGZpbGUgaW4gdGhlIGhhc2ggdGFibGUsCiAgCSB3 ZSBvbmx5IHdhbnQgdG8gcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBvbmNlLgotSW5kZXg6IGdkYi03 LjEuOTAuMjAxMDA3MjAvZ2RiL2NsaS9jbGktY21kcy5oCitJbmRleDogZ2RiLTcuMi41MC4yMDEw MTIzMS9nZGIvY2xpL2NsaS1jbWRzLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAw NzIwLm9yaWcvZ2RiL2NsaS9jbGktY21kcy5oCTIwMTAtMDUtMDMgMDE6NTI6MTQuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMC9nZGIvY2xpL2NsaS1jbWRzLmgJMjAxMC0w Ny0yMCAyMjoyNTo0MC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMjMxLm9y aWcvZ2RiL2NsaS9jbGktY21kcy5oCTIwMTAtMTItMjkgMDM6MTE6MDQuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvY2xpL2NsaS1jbWRzLmgJMjAxMS0wMS0wMSAw MDo1MzowOS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xMjYsNyArMTI2LDggQEAgZXh0ZXJuIHZvaWQg c291cmNlX3NjcmlwdCAoY2hhciAqLCBpbnQpOwogIC8qIEV4cG9ydGVkIHRvIG9iamZpbGVzLmMu ICAqLwogIAoKZGlmZiAtLWdpdCBhL2dkYi02LjUtZHdhcmYtc3RhY2stb3ZlcmZsb3cucGF0Y2gg Yi9nZGItNi41LWR3YXJmLXN0YWNrLW92ZXJmbG93LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwZDEwN2IzLi4wMDAwMDAwCi0tLSBhL2dkYi02LjUtZHdhcmYtc3RhY2stb3Zl cmZsb3cucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1mb3IgZ2RiL0NoYW5n ZUxvZzoKLTIwMDYtMDgtMjIgIFdpbGwgRHJld3J5IDx3YWRAZ29vZ2xlLmNvbT4KLQkgICAgVGF2 aXMgT3JtYW5keSA8dGF2aXNvQGdvb2dsZS5jb20+Ci0KLQkqIGR3YXJmMnJlYWQuYyAoZGVjb2Rl X2xvY2Rlc2MpOiBFbmZvcmNlIGxvY2F0aW9uIGRlc2NyaXB0aW9uIHN0YWNrCi0JYm91bmRhcmll cy4KLQkqIGR3YXJmcmVhZC5jIChsb2N2YWwpOiBMaWtld2lzZS4KLQotMjAwNy0xMC0xNSAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JUG9ydCB0byBHREIt Ni43LgotCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAx MC0wNy0xMiAxMDo0Mzo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0xMiAxMDo0OTozMi4wMDAwMDAwMDAgKzAyMDAKLUBA IC0xMTM4Miw4ICsxMTM4Miw3IEBAIHJlYWRfc2lnbmF0dXJlZF90eXBlIChzdHJ1Y3Qgb2JqZmls ZSAqb2IKLSAgICBjYWxsZXJzIHdpbGwgb25seSB3YW50IGEgdmVyeSBiYXNpYyByZXN1bHQgYW5k IHRoaXMgY2FuIGJlY29tZSBhCi0gICAgY29tcGxhaW50LgotIAotLSAgIE5vdGUgdGhhdCBzdGFj a1swXSBpcyB1bnVzZWQgZXhjZXB0IGFzIGEgZGVmYXVsdCBlcnJvciByZXR1cm4uCi0tICAgTm90 ZSB0aGF0IHN0YWNrIG92ZXJmbG93IGlzIG5vdCB5ZXQgaGFuZGxlZC4gICovCi0rICAgTm90ZSB0 aGF0IHN0YWNrWzBdIGlzIHVudXNlZCBleGNlcHQgYXMgYSBkZWZhdWx0IGVycm9yIHJldHVybi4g Ki8KLSAKLSBzdGF0aWMgQ09SRV9BRERSCi0gZGVjb2RlX2xvY2Rlc2MgKHN0cnVjdCBkd2FyZl9i bG9jayAqYmxrLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLUBAIC0xMTM5OSw3ICsxMTM5OCw3IEBA IGRlY29kZV9sb2NkZXNjIChzdHJ1Y3QgZHdhcmZfYmxvY2sgKmJsaywKLSAKLSAgIGkgPSAwOwot ICAgc3RhY2tpID0gMDsKLS0gIHN0YWNrW3N0YWNraV0gPSAwOwotKyAgc3RhY2tbKytzdGFja2ld ID0gMDsKLSAKLSAgIHdoaWxlIChpIDwgc2l6ZSkKLSAgICAgewotQEAgLTExNTgxLDYgKzExNTgw LDE2IEBAIGRlY29kZV9sb2NkZXNjIChzdHJ1Y3QgZHdhcmZfYmxvY2sgKmJsaywKLSAJCSAgICAg ZHdhcmZfc3RhY2tfb3BfbmFtZSAob3AsIDEpKTsKLSAJICByZXR1cm4gKHN0YWNrW3N0YWNraV0p OwotIAl9Ci0rICAgICAgLyogRW5mb3JjZSBtYXhpbXVtIHN0YWNrIGRlcHRoIG9mIHNpemUtMSB0 byBhdm9pZCArK3N0YWNraSB3cml0aW5nCi0rICAgICAgICAgb3V0c2lkZSBvZiB0aGUgYWxsb2Nh dGVkIHNwYWNlLiBBbHNvIGVuZm9yY2UgbWluaW11bSA+IDAuCi0rICAgICAgICAgLS0gd2FkQGdv b2dsZS5jb20gMTQgQXVnIDIwMDYgKi8KLSsgICAgICBpZiAoc3RhY2tpID49IHNpemVvZiAoc3Rh Y2spIC8gc2l6ZW9mICgqc3RhY2spIC0gMSkKLSsJaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBf X0xJTkVfXywKLSsJICAgICAgICAgICAgICAgIF8oImxvY2F0aW9uIGRlc2NyaXB0aW9uIHN0YWNr IHRvbyBkZWVwOiAlZCIpLAotKwkgICAgICAgICAgICAgICAgc3RhY2tpKTsKLSsgICAgICBpZiAo c3RhY2tpIDw9IDApCi0rCWludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCSAg ICAgICAgICAgICAgICBfKCJsb2NhdGlvbiBkZXNjcmlwdGlvbiBzdGFjayB0b28gc2hhbGxvdyIp KTsKLSAgICAgfQotICAgcmV0dXJuIChzdGFja1tzdGFja2ldKTsKLSB9CgpkaWZmIC0tZ2l0IGEv Z2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaCBiL2dkYi02LjYtYnVpbGRp ZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKaW5kZXggYTQzMDY2Ny4uYzhiODg4MyAxMDA2NDQK LS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaAorKysgYi9nZGIt Ni42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoCkBAIC01OCwxMCArNTgsMTAgQEAg SHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDEvbXNnMDA1MTcuaHRt bAogCSogZXhlYy5jIChleGVjX2ZpbGVfYXR0YWNoKTogUHJpbnQgYSBtb3JlIHVzZWZ1bCBlcnJv ciBtZXNzYWdlIGlmIHRoZQogCXVzZXIgZGlkICJnZGIgY29yZSIuCiAKLUluZGV4OiBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi9leGNlcHRpb25zLmgKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMx L2dkYi9leGNlcHRpb25zLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9y aWcvZ2RiL2V4Y2VwdGlvbnMuaAkyMDEwLTA1LTAzIDAxOjUyOjE0LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2V4Y2VwdGlvbnMuaAkyMDEwLTA3LTEzIDIyOjU2 OjI5LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvZXhj ZXB0aW9ucy5oCTIwMTAtMDUtMDMgMDE6NTI6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu Mi41MC4yMDEwMTIzMS9nZGIvZXhjZXB0aW9ucy5oCTIwMTEtMDEtMDEgMDE6MTA6NDQuMDAwMDAw MDAwICswMTAwCiBAQCAtNzgsNiArNzgsOSBAQCBlbnVtIGVycm9ycyB7CiAgICAvKiBGZWF0dXJl IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4gICovCiAgICBVTlNVUFBPUlRF RF9FUlJPUiwKQEAgLTcyLDEwICs3MiwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvZXhjZXB0aW9ucy5oCiAgICAvKiBBZGQgbW9yZSBlcnJvcnMgaGVyZS4gICovCiAgICBOUl9F UlJPUlMKICB9OwotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2V4ZWMuYworSW5kZXg6 IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2V4ZWMuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEu OTAuMjAxMDA3MTEub3JpZy9nZGIvZXhlYy5jCTIwMTAtMDctMTIgMjM6MDc6MzQuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXhlYy5jCTIwMTAtMDctMTMgMjI6 NTY6MjkuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTIzMS5vcmlnL2dkYi9l eGVjLmMJMjAxMC0wOC0zMSAyMDowODo0My4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUw LjIwMTAxMjMxL2dkYi9leGVjLmMJMjAxMS0wMS0wMSAwMToxMDo0NC4wMDAwMDAwMDAgKzAxMDAK IEBAIC0zNCw2ICszNCw3IEBACiAgI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKICAjaW5jbHVkZSAi Z2RidGhyZWFkLmgiCkBAIC0xMTUsMTEgKzExNSwxMSBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEw MDcxMS9nZGIvZXhlYy5jCiAgCX0KICAKICAgICAgICAvKiBGSVhNRSAtIFRoaXMgc2hvdWxkIG9u bHkgYmUgcnVuIGZvciBSUzYwMDAsIGJ1dCB0aGUgaWZkZWYgaXMgYSBwb29yCi1JbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcxMS9nZGIvbWFpbi5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9n ZGIvbWFpbi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9t YWluLmMJMjAxMC0wNy0xMiAyMzowNzozNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi9tYWluLmMJMjAxMC0wNy0xMyAyMjo1ODoyMC4wMDAwMDAwMDAgKzAyMDAK LUBAIC0yNDEsNiArMjQxLDM2IEBAIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCAodm9pZCAqZGF0YSkK Ky0tLSBnZGItNy4yLjUwLjIwMTAxMjMxLm9yaWcvZ2RiL21haW4uYwkyMDExLTAxLTAxIDAxOjAw OjU0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL21haW4uYwky MDExLTAxLTAxIDAxOjExOjQ4LjAwMDAwMDAwMCArMDEwMAorQEAgLTI0Miw2ICsyNDIsMzYgQEAg Y2FwdHVyZWRfY29tbWFuZF9sb29wICh2b2lkICpkYXRhKQogICAgcmV0dXJuIDE7CiAgfQogIApA QCAtMTU2LDcgKzE1Niw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9tYWluLmMK ICBzdGF0aWMgaW50CiAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICB7Ci1AQCAtNjc4LDYg KzcwOCw4IEBAIGV4dGVybiBpbnQgZ2RidGtfdGVzdCAoY2hhciAqKTsKK0BAIC02ODgsNiArNzE4 LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAJewogIAkgIHN5bWFyZyA9IGFyZ3Zb b3B0aW5kXTsKICAJICBleGVjYXJnID0gYXJndltvcHRpbmRdOwpAQCAtMTY1LDcgKzE2NSw3IEBA IEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9tYWluLmMKICAJICBvcHRpbmQrKzsKICAJ fQogIAotQEAgLTgxNiwxMCArODQ4LDI1IEBAIEV4Y2VzcyBjb21tYW5kIGxpbmUgYXJndW1lbnRz IGlnbm9yZWQuICgKK0BAIC04MjgsMTAgKzg2MCwyNSBAQCBFeGNlc3MgY29tbWFuZCBsaW5lIGFy Z3VtZW50cyBpZ25vcmVkLiAoCiAgICAgICAgJiYgc3ltYXJnICE9IE5VTEwKICAgICAgICAmJiBz dHJjbXAgKGV4ZWNhcmcsIHN5bWFyZykgPT0gMCkKICAgICAgewpAQCAtMTgyLDExICsxODIsMTAg QEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL21haW4uYwogKwlmdW5jID0gZXhlY19m aWxlX2F0dGFjaDsKICsKICAgICAgICAvKiBUaGUgZXhlYyBmaWxlIGFuZCB0aGUgc3ltYm9sLWZp bGUgYXJlIHRoZSBzYW1lLiAgSWYgd2UgY2FuJ3QKLS0gICAgICAgICBvcGVuIGl0LCBiZXR0ZXIg b25seSBwcmludCBvbmUgZXJyb3IgbWVzc2FnZS4KLS0gICAgICAgICBjYXRjaF9jb21tYW5kX2Vy cm9ycyByZXR1cm5zIG5vbi16ZXJvIG9uIHN1Y2Nlc3MhICovCisgICAgICAgICAgb3BlbiBpdCwg YmV0dGVyIG9ubHkgcHJpbnQgb25lIGVycm9yIG1lc3NhZ2UuCistICAgICAgICAgY2F0Y2hfY29t bWFuZF9lcnJvcnMgcmV0dXJucyBub24temVybyBvbiBzdWNjZXNzISAgKi8KIC0gICAgICBpZiAo Y2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWNfZmlsZV9hdHRhY2gsIGV4ZWNhcmcsICFiYXRjaF9m bGFnLCBSRVRVUk5fTUFTS19BTEwpKQotKwkgb3BlbiBpdCwgYmV0dGVyIG9ubHkgcHJpbnQgb25l IGVycm9yIG1lc3NhZ2UuCi0rCSBjYXRjaF9jb21tYW5kX2Vycm9ycyByZXR1cm5zIG5vbi16ZXJv IG9uIHN1Y2Nlc3MhCisrICAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgcmV0dXJucyBub24t emVybyBvbiBzdWNjZXNzIQogKwkgRG8gbm90IGxvYWQgRVhFQ0FSRyBhcyBhIHN5bWJvbCBmaWxl IGlmIGl0IGhhcyBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkCiArCSBhcyBhIGNvcmUgZmlsZS4gICov CiArICAgICAgaWYgKGNhdGNoX2NvbW1hbmRfZXJyb3JzIChmdW5jLCBleGVjYXJnLCAhYmF0Y2hf ZmxhZywgUkVUVVJOX01BU0tfQUxMKQoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2Nh dGUtcnBtLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKaW5kZXggNDQx NmU2OC4uNDc3Y2MyNyAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0 Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKQEAgLTEsMjUgKzEsMjUg QEAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9ldmVudC10b3AuYworSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDEyMzEvZ2RiL2V2ZW50LXRvcC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi41MC4yMDEwMTExNi5vcmlnL2dkYi9ldmVudC10b3AuYwkyMDEwLTA5LTExIDE4OjAwOjI1LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2V2ZW50LXRvcC5jCTIw MTAtMTEtMTYgMDg6MTQ6MjYuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTIz MS5vcmlnL2dkYi9ldmVudC10b3AuYwkyMDEwLTEyLTI5IDAxOjU4OjE0LjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2V2ZW50LXRvcC5jCTIwMTEtMDEtMDEgMDE6 MDc6MzcuMDAwMDAwMDAwICswMTAwCiBAQCAtMzMsNiArMzMsNyBAQAogICNpbmNsdWRlICJjbGkv Y2xpLXNjcmlwdC5oIiAgICAgLyogZm9yIHJlc2V0X2NvbW1hbmRfbmVzdF9kZXB0aCAqLwogICNp bmNsdWRlICJtYWluLmgiCiAgI2luY2x1ZGUgImdkYnRocmVhZC5oIgogKyNpbmNsdWRlICJzeW1m aWxlLmgiCiAgCi0gLyogRm9yIGRvbnRfcmVwZWF0KCkgKi8KLSAjaW5jbHVkZSAiZ2RiY21kLmgi Ci1AQCAtMTkzLDYgKzE5NCw4IEBAIGNsaV9jb21tYW5kX2xvb3AgKHZvaWQpCisgI2luY2x1ZGUg ImdkYmNtZC5oIgkJLyogZm9yIGRvbnRfcmVwZWF0KCkgKi8KKyAKK0BAIC0xOTIsNiArMTkzLDgg QEAgY2xpX2NvbW1hbmRfbG9vcCAodm9pZCkKICAgICAgICBjaGFyICphX3Byb21wdDsKICAgICAg ICBjaGFyICpnZGJfcHJvbXB0ID0gZ2V0X3Byb21wdCAoKTsKICAKICsgICAgICBkZWJ1Z19mbHVz aF9taXNzaW5nICgpOwogKwotICAgICAgIC8qIFRlbGwgcmVhZGxpbmUgd2hhdCB0aGUgcHJvbXB0 IHRvIGRpc3BsYXkgaXMgYW5kIHdoYXQgZnVuY3Rpb24gaXQKLSAgICAgICAgICB3aWxsIG5lZWQg dG8gY2FsbCBhZnRlciBhIHdob2xlIGxpbmUgaXMgcmVhZC4gVGhpcyBhbHNvIGRpc3BsYXlzCi0g ICAgICAgICAgdGhlIGZpcnN0IHByb21wdC4gKi8KLUBAIC0yNjQsNiArMjY3LDggQEAgZGlzcGxh eV9nZGJfcHJvbXB0IChjaGFyICpuZXdfcHJvbXB0KQorICAgICAgIC8qIFRlbGwgcmVhZGxpbmUg d2hhdCB0aGUgcHJvbXB0IHRvIGRpc3BsYXkgaXMgYW5kIHdoYXQgZnVuY3Rpb24KKyAgICAgICAg ICBpdCB3aWxsIG5lZWQgdG8gY2FsbCBhZnRlciBhIHdob2xlIGxpbmUgaXMgcmVhZC4gIFRoaXMg YWxzbworICAgICAgICAgIGRpc3BsYXlzIHRoZSBmaXJzdCBwcm9tcHQuICAqLworQEAgLTI2Myw2 ICsyNjYsOCBAQCBkaXNwbGF5X2dkYl9wcm9tcHQgKGNoYXIgKm5ld19wcm9tcHQpCiAgICAvKiBS ZXNldCB0aGUgbmVzdGluZyBkZXB0aCB1c2VkIHdoZW4gdHJhY2UtY29tbWFuZHMgaXMgc2V0LiAg Ki8KICAgIHJlc2V0X2NvbW1hbmRfbmVzdF9kZXB0aCAoKTsKICAKQEAgLTI4LDEwICsyOCwxMCBA QCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZXZlbnQtdG9wLmMKICAgIC8qIEVhY2gg aW50ZXJwcmV0ZXIgaGFzIGl0cyBvd24gcnVsZXMgb24gZGlzcGxheWluZyB0aGUgY29tbWFuZAog ICAgICAgcHJvbXB0LiAgKi8KICAgIGlmICghY3VycmVudF9pbnRlcnBfZGlzcGxheV9wcm9tcHRf cCAoKSkKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9lbGZyZWFkLmMKK0luZGV4OiBn ZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9lbGZyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTExLTE2IDA4OjA0OjE4LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2VsZnJlYWQuYwkyMDEwLTEx LTE2IDA4OjE0OjI2LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEub3Jp Zy9nZGIvZWxmcmVhZC5jCTIwMTEtMDEtMDEgMDE6MDU6MDEuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvZWxmcmVhZC5jCTIwMTEtMDEtMDEgMDE6MDU6MTAuMDAw MDAwMDAwICswMTAwCiBAQCAtNDIsNiArNDIsNyBAQAogICNpbmNsdWRlICJnZGJjb3JlLmgiCiAg I2luY2x1ZGUgImdkYmNtZC5oIgpAQCAtNDY0LDExICs0NjQsMTEgQEAgSW5kZXg6IGdkYi03LjIu NTAuMjAxMDExMTYvZ2RiL2VsZnJlYWQuYwogIH0KICAKICBzdGF0aWMgY2hhciAqCi1JbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvc3ltZmlsZS5oCitJbmRleDogZ2RiLTcuMi41MC4yMDEw MTIzMS9nZGIvc3ltZmlsZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5v cmlnL2dkYi9zeW1maWxlLmgJMjAxMC0xMS0xNiAwODowNDoxOC4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9zeW1maWxlLmgJMjAxMC0xMS0xNiAwODoxNDoyNi4w MDAwMDAwMDAgKzAxMDAKLUBAIC01NTIsNiArNTUyLDggQEAgZXh0ZXJuIHN0cnVjdCBidWlsZF9p ZCAqYnVpbGRfaWRfYWRkcl9nZQorLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvc3lt ZmlsZS5oCTIwMTEtMDEtMDEgMDE6MDU6MDEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41 MC4yMDEwMTIzMS9nZGIvc3ltZmlsZS5oCTIwMTEtMDEtMDEgMDE6MDU6MTAuMDAwMDAwMDAwICsw MTAwCitAQCAtNTU5LDYgKzU1OSw4IEBAIGV4dGVybiBzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lk X2FkZHJfZ2UKICBleHRlcm4gY2hhciAqYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWls ZF9pZCAqYnVpbGRfaWQsCiAgCQkJCSAgIGNoYXIgKipsaW5rX3JldHVybiwgaW50IGFkZF9kZWJ1 Z19zdWZmaXgpOwogIGV4dGVybiB2b2lkIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIg KmJpbmFyeSwgY29uc3QgY2hhciAqZGVidWcpOwpAQCAtNDc3LDExICs0NzcsMTEgQEAgSW5kZXg6 IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3N5bWZpbGUuaAogIAogIC8qIEZyb20gZHdhcmYycmVh ZC5jICovCiAgCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2xpYi9n ZGIuZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIu ZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi90ZXN0c3Vp dGUvbGliL2dkYi5leHAJMjAxMC0xMS0xNiAwODowNDoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMC0xMS0xNiAw ODoxNDoyNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMzU4LDcgKzEzNTgsNyBAQCBwcm9jIGRlZmF1 bHRfZ2RiX3N0YXJ0IHsgfSB7CistLS0gZ2RiLTcuMi41MC4yMDEwMTIzMS5vcmlnL2dkYi90ZXN0 c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wMS0wMSAwMTowNTowMS4wMDAwMDAwMDAgKzAxMDAKKysr KyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wMS0w MSAwMTowNToxMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMzg5LDcgKzEzODksNyBAQCBwcm9jIGRl ZmF1bHRfZ2RiX3N0YXJ0IHsgfSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdp ZHRoIHRvIDAuIgogIAl9CiAgICAgIH0KQEAgLTQ5MCwxMCArNDkwLDEwIEBAIEluZGV4OiBnZGIt Ny4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAgICAgc2VuZF9nZGIg InNldCBidWlsZC1pZC12ZXJib3NlIDBcbiIKICAgICAgZ2RiX2V4cGVjdCAxMCB7CiAgCS1yZSAi JGdkYl9wcm9tcHQgJCIgewotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0 ZS9saWIvbWktc3VwcG9ydC5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0 c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEw MTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTAtMTEtMTYgMDg6 MDQ6MTguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1 aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDEwLTExLTE2IDA4OjE0OjI2LjAwMDAwMDAwMCArMDEw MAorLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBw b3J0LmV4cAkyMDExLTAxLTAxIDAxOjA1OjAxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIu NTAuMjAxMDEyMzEvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMS0wMS0wMSAw MTowNToxMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0yMjEsNyArMjIxLDcgQEAgcHJvYyBkZWZhdWx0 X21pX2dkYl9zdGFydCB7IGFyZ3MgfSB7CiAgCSAgICB9CiAgICAgIAl9CkBAIC01MDMsMTAgKzUw MywxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2xpYi9taS1z dXBwb3J0LmV4cAogICAgICBzZW5kX2dkYiAiMTkwLWdkYi1zZXQgYnVpbGQtaWQtdmVyYm9zZSAw XG4iCiAgICAgIGdkYl9leHBlY3QgMTAgewogIAktcmUgIi4qMTkwLWdkYi1zZXQgYnVpbGQtaWQt dmVyYm9zZSAwXHJcbjE5MFxcXF5kb25lXHJcbiRtaV9nZGJfcHJvbXB0JCIgewotSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL3R1aS90dWktaW50ZXJwLmMKK0luZGV4OiBnZGItNy4yLjUw LjIwMTAxMjMxL2dkYi90dWkvdHVpLWludGVycC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41 MC4yMDEwMTExNi5vcmlnL2dkYi90dWkvdHVpLWludGVycC5jCTIwMTAtMDUtMTggMDA6MjE6NDMu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdHVpL3R1aS1pbnRl cnAuYwkyMDEwLTExLTE2IDA4OjE0OjI2LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjIuNTAu MjAxMDEyMzEub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDEwLTA1LTE4IDAwOjIxOjQzLjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL3R1aS90dWktaW50ZXJw LmMJMjAxMS0wMS0wMSAwMTowNToxMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0zMCw2ICszMCw3IEBA CiAgI2luY2x1ZGUgInR1aS90dWkuaCIKICAjaW5jbHVkZSAidHVpL3R1aS1pby5oIgpAQCAtNTI0 LDEwICs1MjQsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3R1aS90dWktaW50 ZXJwLmMKICAgICAgICAvKiBUZWxsIHJlYWRsaW5lIHdoYXQgdGhlIHByb21wdCB0byBkaXNwbGF5 IGlzIGFuZCB3aGF0IGZ1bmN0aW9uCiAgICAgICAgICAgaXQgd2lsbCBuZWVkIHRvIGNhbGwgYWZ0 ZXIgYSB3aG9sZSBsaW5lIGlzIHJlYWQuIFRoaXMgYWxzbwogICAgICAgICAgIGRpc3BsYXlzIHRo ZSBmaXJzdCBwcm9tcHQuICAqLwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2FjbG9j YWwubTQKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9hY2xvY2FsLm00CiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9hY2xvY2FsLm00CTIwMTAtMDUt MjMgMDI6NTY6NTkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIv YWNsb2NhbC5tNAkyMDEwLTExLTE2IDA4OjE0OjI2LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03 LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvYWNsb2NhbC5tNAkyMDEwLTA1LTIzIDAyOjU2OjU5LjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2FjbG9jYWwubTQJMjAx MS0wMS0wMSAwMTowNToxMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xOSw2ICsxOSwxNjIgQEAgWW91 IGhhdmUgYW5vdGhlciB2ZXJzaW9uIG9mIGF1dG9jb25mLiAgSQogIElmIHlvdSBoYXZlIHByb2Js ZW1zLCB5b3UgbWF5IG5lZWQgdG8gcmVnZW5lcmF0ZSB0aGUgYnVpbGQgc3lzdGVtIGVudGlyZWx5 LgogIFRvIGRvIHNvLCB1c2UgdGhlIHByb2NlZHVyZSBkb2N1bWVudGVkIGJ5IHRoZSBwYWNrYWdl LCB0eXBpY2FsbHkgYGF1dG9yZWNvbmYnLl0pXSkKQEAgLTY5MSwxMCArNjkxLDEwIEBAIEluZGV4 OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9hY2xvY2FsLm00CiAgIyBDb3B5cmlnaHQgKEMpIDIw MDIsIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgogICMKICAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvY29uZmlnLmlu CitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvY29uZmlnLmluCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9jb25maWcuaW4JMjAxMC0wOS0wMiAxOTox MjozNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9jb25maWcu aW4JMjAxMC0xMS0xNiAwODoxNDoyNi4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4yLjUwLjIw MTAxMjMxLm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDEwLTA5LTAyIDE5OjEyOjM1LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2NvbmZpZy5pbgkyMDExLTAxLTAxIDAx OjA1OjEwLjAwMDAwMDAwMCArMDEwMAogQEAgLTQ2LDYgKzQ2LDkgQEAKICAvKiBEZWZpbmUgdG8g QkZEJ3MgZGVmYXVsdCB0YXJnZXQgdmVjdG9yLiAqLwogICN1bmRlZiBERUZBVUxUX0JGRF9WRUMK QEAgLTcxNSwxMSArNzE1LDExIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9jb25m aWcuaW4KICAvKiBEZWZpbmUgaWYgbGlidW53aW5kIGxpYnJhcnkgaXMgYmVpbmcgdXNlZC4gKi8K ICAjdW5kZWYgSEFWRV9MSUJVTldJTkQKICAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dk Yi9jb25maWd1cmUKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9jb25maWd1cmUKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEw LTExLTA1IDAyOjUwOjE3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYv Z2RiL2NvbmZpZ3VyZQkyMDEwLTExLTE2IDA4OjE1OjMzLjAwMDAwMDAwMCArMDEwMAotQEAgLTY3 OSw2ICs2NzksOSBAQCBSRVBPUlRfQlVHU19UTworLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEub3Jp Zy9nZGIvY29uZmlndXJlCTIwMTAtMTItMTQgMDg6MTc6MTQuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvY29uZmlndXJlCTIwMTEtMDEtMDEgMDE6MDg6NTAuMDAw MDAwMDAwICswMTAwCitAQCAtNjgwLDYgKzY4MCw5IEBAIFJFUE9SVF9CVUdTX1RPCiAgUEtHVkVS U0lPTgogIFRBUkdFVF9PQlMKICBzdWJkaXJzCkBAIC03MjksNyArNzI5LDcgQEAgSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL2NvbmZpZ3VyZQogIEdEQl9EQVRBRElSCiAgREVCVUdESVIK ICBhbV9fZmFzdGRlcENDX0ZBTFNFCi1AQCAtOTQ1LDYgKzk0OCw3IEBAIGVuYWJsZV9kZXBlbmRl bmN5X3RyYWNraW5nCitAQCAtOTQ2LDYgKzk0OSw3IEBAIGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNr aW5nCiAgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKICB3aXRoX2dkYl9kYXRhZGlyCiAgd2l0aF9y ZWxvY2F0ZWRfc291cmNlcwpAQCAtNzM3LDcgKzczNyw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIw MTAxMTE2L2dkYi9jb25maWd1cmUKICBlbmFibGVfdGFyZ2V0cwogIGVuYWJsZV82NF9iaXRfYmZk CiAgZW5hYmxlX2dkYmNsaQotQEAgLTk4Niw2ICs5OTAsOSBAQCBMREZMQUdTCitAQCAtOTg3LDYg Kzk5MSw5IEBAIExERkxBR1MKICBMSUJTCiAgQ1BQRkxBR1MKICBDUFAKQEAgLTc0Nyw3ICs3NDcs NyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvY29uZmlndXJlCiAgWUFDQwogIFlG TEFHUwogIFhNS01GJwotQEAgLTE2NDksNiArMTY1Niw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgor QEAgLTE2NTAsNiArMTY1Nyw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgW0RBVEFESVIvZ2RiXQogICAgLS13aXRoLXJlbG9jYXRlZC1zb3VyY2VzPVBB VEgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhp cyBwYXRoIGZvciBzb3VyY2UgZmlsZXMKQEAgLTc1Niw3ICs3NTYsNyBAQCBJbmRleDogZ2RiLTcu Mi41MC4yMDEwMTExNi9nZGIvY29uZmlndXJlCiAgICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1 c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBzdXBwb3J0CiAgICAtLXdpdGgtY3Vyc2VzICAg ICAgICAgICB1c2UgdGhlIGN1cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKLUBAIC0xNjg0LDYgKzE2OTMsOSBAQCBT b21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKK0BAIC0xNjg1LDYgKzE2OTQs OSBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKICAgIENQUEZMQUdT ICAgIEMvQysrL09iamVjdGl2ZSBDIHByZXByb2Nlc3NvciBmbGFncywgZS5nLiAtSTxpbmNsdWRl IGRpcj4gaWYKICAgICAgICAgICAgICAgIHlvdSBoYXZlIGhlYWRlcnMgaW4gYSBub25zdGFuZGFy ZCBkaXJlY3RvcnkgPGluY2x1ZGUgZGlyPgogICAgQ1BQICAgICAgICAgQyBwcmVwcm9jZXNzb3IK QEAgLTc2Niw3ICs3NjYsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvY29uZmln dXJlCiAgICBZQUNDICAgICAgICBUaGUgYFlldCBBbm90aGVyIEMgQ29tcGlsZXInIGltcGxlbWVu dGF0aW9uIHRvIHVzZS4gRGVmYXVsdHMgdG8KICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBwcm9n cmFtIGZvdW5kIG91dCBvZjogYGJpc29uIC15JywgYGJ5YWNjJywgYHlhY2MnLgogICAgWUZMQUdT ICAgICAgVGhlIGxpc3Qgb2YgYXJndW1lbnRzIHRoYXQgd2lsbCBiZSBwYXNzZWQgYnkgZGVmYXVs dCB0byAkWUFDQy4KLUBAIC03ODgxLDYgKzc4OTMsNDg2IEBAIF9BQ0VPRgorQEAgLTc4ODIsNiAr Nzg5NCw0ODYgQEAgX0FDRU9GCiAgZmkKICAKICAKQEAgLTEyNTIsMTEgKzEyNTIsMTEgQEAgSW5k ZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2NvbmZpZ3VyZQogKwogIAogIAotIHN1YmRpcnM9 IiRzdWJkaXJzIGRvYyB0ZXN0c3VpdGUiCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIv Y29uZmlndXJlLmFjCisgc3ViZGlycz0iJHN1YmRpcnMgdGVzdHN1aXRlIgorSW5kZXg6IGdkYi03 LjIuNTAuMjAxMDEyMzEvZ2RiL2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu NTAuMjAxMDExMTYub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTAtMTEtMDUgMDI6NTA6MTguMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvY29uZmlndXJlLmFjCTIw MTAtMTEtMTYgMDg6MTU6MTAuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTIz MS5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMC0xMi0xNCAwODoxNzoxNS4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9jb25maWd1cmUuYWMJMjAxMS0wMS0wMSAw MTowODoyOC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xMDgsNiArMTA4LDE5OSBAQCBBU19IRUxQX1NU UklORyhbLS13aXRoLXJlbG9jYXRlZC1zb3VyY2VzCiAgICAgICAgICAgICAgICBbUmVsb2NhdGVk IGRpcmVjdG9yeSBmb3Igc291cmNlIGZpbGVzLiBdKQogIF0pCkBAIC0xNDU0LDEzICsxNDU0LDEz IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9jb25maWd1cmUuYWMKICsgIGZpCiAr ZmkKICsgCi0gQUNfQ09ORklHX1NVQkRJUlMoZG9jIHRlc3RzdWl0ZSkKKyBBQ19DT05GSUdfU1VC RElSUyh0ZXN0c3VpdGUpCiAgCiAgIyBDaGVjayB3aGV0aGVyIHRvIHN1cHBvcnQgYWx0ZXJuYXRp dmUgdGFyZ2V0IGNvbmZpZ3VyYXRpb25zCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIv YWNpbmNsdWRlLm00CitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvYWNpbmNsdWRlLm00 CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9hY2luY2x1ZGUu bTQJMjAxMC0wNS0yNyAwNTo0MDo0NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIw MTAxMTE2L2dkYi9hY2luY2x1ZGUubTQJMjAxMC0xMS0xNiAwODoxNDoyNi4wMDAwMDAwMDAgKzAx MDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMjMxLm9yaWcvZ2RiL2FjaW5jbHVkZS5tNAkyMDEwLTA1 LTI3IDA1OjQwOjQ1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2Ri L2FjaW5jbHVkZS5tNAkyMDExLTAxLTAxIDAxOjA1OjEwLjAwMDAwMDAwMCArMDEwMAogQEAgLTEs MyArMSw1IEBACiArIyBzZXJpYWwgMQogKwpAQCAtMTQ3NiwxMCArMTQ3NiwxMCBAQCBJbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvYWNpbmNsdWRlLm00CiAgIyBAZGVmbWFjIEFDX1BST0df Q0NfU1REQwogICMgQG1haW5kZXggUFJPR19DQ19TVERDCiAgIyBAb3ZpbmRleCBDQwotSW5kZXg6 IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2NvcmVsb3cuYworSW5kZXg6IGdkYi03LjIuNTAuMjAx MDEyMzEvZ2RiL2NvcmVsb3cuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDExMTYu b3JpZy9nZGIvY29yZWxvdy5jCTIwMTAtMTEtMTYgMDg6MDQ6MTguMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvY29yZWxvdy5jCTIwMTAtMTEtMTYgMDg6MTQ6MjYu MDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTIzMS5vcmlnL2dkYi9jb3JlbG93 LmMJMjAxMS0wMS0wMSAwMTowNTowMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIw MTAxMjMxL2dkYi9jb3JlbG93LmMJMjAxMS0wMS0wMSAwMTowNToxMC4wMDAwMDAwMDAgKzAxMDAK IEBAIC0zMTcsNyArMzE3LDcgQEAgYnVpbGRfaWRfbG9jYXRlX2V4ZWMgKGludCBmcm9tX3R0eSkK ICAgICAgICAgIHN5bWZpbGVfb2JqZmlsZS0+ZmxhZ3MgfD0gT0JKRl9CVUlMRF9JRF9DT1JFX0xP QURFRDsKICAgICAgfQoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnoyMjU3ODMtZ2RiLWRlYnVnaW5m by1wYXRocy5wYXRjaCBiL2dkYi02LjYtYnoyMjU3ODMtZ2RiLWRlYnVnaW5mby1wYXRocy5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM5YmJjZC4uMDAwMDAwMAotLS0gYS9n ZGItNi42LWJ6MjI1NzgzLWdkYi1kZWJ1Z2luZm8tcGF0aHMucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwzMyArMCwwIEBACi1odHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vYnVnemlsbGEvc2hv d19idWcuY2dpP2lkPTIyNTc4MwotCi0KLUluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi9N YWtlZmlsZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwODExMjgub3JpZy9nZGIv TWFrZWZpbGUuaW4JMjAwOC0xMi0wMiAyMzowNjoxNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ni44LjUwLjIwMDgxMTI4L2dkYi9NYWtlZmlsZS5pbgkyMDA4LTEyLTAyIDIzOjI4OjAyLjAwMDAw MDAwMCArMDEwMAotQEAgLTE0OTAsOCArMTQ5MCwxMCBAQCBwby8kKFBBQ0tBR0UpLnBvdDogZm9y Y2UKLSAKLSAuU1VGRklYRVM6IC55IC5sCi0gLnkuYzoKLS0JJChTSEVMTCkgJChZTFdSQVApICQ8 IHkudGFiLmMgJEAudG1wIC0tICQoWUFDQykgJChZRkxBR1MpCi0tCS1zZWQgLWUgJy9leHRlcm4u Km1hbGxvYy9kJyBcCi0rCXJtIC1mICRAICRALnRtcAotKwkkKFNIRUxMKSAkKFlMV1JBUCkgJDwg eS50YWIuYyAkQCAtLSAkKFlBQ0MpICQoWUZMQUdTKSAmJiBtdiAkQCAkQC50bXAgXAotKwkJfHwg KHJtIC1mICRAOyBmYWxzZSkKLSsJc2VkIC1lICcvZXh0ZXJuLiptYWxsb2MvZCcgXAotIAkgICAg IC1lICcvZXh0ZXJuLipyZWFsbG9jL2QnIFwKLSAJICAgICAtZSAnL2V4dGVybi4qZnJlZS9kJyBc Ci0gCSAgICAgLWUgJy9pbmNsdWRlLiptYWxsb2MuaC9kJyBcCi1AQCAtMTUwMCw5ICsxNTAyLDkg QEAgcG8vJChQQUNLQUdFKS5wb3Q6IGZvcmNlCi0gCSAgICAgLWUgJ3MvXChbIFx0OywoXVwpZnJl ZVwoWyBcdF0qWyYoKSxdXCkvXDF4ZnJlZVwyL2cnIFwKLSAJICAgICAtZSAncy9cKFsgXHQ7LChd XClmcmVlJCQvXDF4ZnJlZS9nJyBcCi0gCSAgICAgLWUgJy9eI2xpbmUuKnkudGFiLmMvZCcgXAot LQkgIDwgJEAudG1wID4gJEAubmV3Ci0tCS1ybSAkQC50bXAKLS0JbXYgJEAubmV3IC4vJCouYwot KwkgICAgIC1lICJzL15cKCNsaW5lLipcKWBiYXNlbmFtZSAkPGAvXDFgZWNobyAkPHxzZWQgJ3Mv XC8vXFxcXFwvL2cnYC8iIFwKLSsJICA8ICRALnRtcCA+ICRACi0rCXJtIC1mICRALnRtcAotIC5s LmM6Ci0gCWlmIFsgIiQoRkxFWCkiIF0gJiYgJChGTEVYKSAtLXZlcnNpb24gPi9kZXYvbnVsbCAy PiYxOyB0aGVuIFwKLSAJICAgICQoRkxFWCkgLW8kQCAkPCAmJiBcCgpkaWZmIC0tZ2l0IGEvZ2Ri LTYuNi1yZWFkbGluZS1zeXN0ZW0ucGF0Y2ggYi9nZGItNi42LXJlYWRsaW5lLXN5c3RlbS5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI5MDFlNy4uMDAwMDAwMAotLS0gYS9n ZGItNi42LXJlYWRsaW5lLXN5c3RlbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCww IEBACi0yMDA3LTEwLTE2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci0KLQlQb3J0IHRvIEdEQi02LjcuCi0KLUluZGV4OiBnZGItNi43L2dkYi9kb2MvTWFrZWZp bGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi43Lm9yaWcvZ2RiL2RvYy9NYWtlZmlsZS5pbgky MDA3LTA3LTI2IDEyOjM0OjAwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjcvZ2RiL2RvYy9N YWtlZmlsZS5pbgkyMDA3LTEwLTE2IDE2OjMxOjA4LjAwMDAwMDAwMCArMDIwMAotQEAgLTEwOSw5 ICsxMDksNyBAQCBEVklQUyA9IGR2aXBzCi0gR0RCX0RPQ19TT1VSQ0VfSU5DTFVERVMgPSBcCi0g CSQoc3JjZGlyKS9mZGwudGV4aSBcCi0gCSQoc3JjZGlyKS9ncGwudGV4aSBcCi0tCSQoc3JjZGly KS9hZ2VudGV4cHIudGV4aSBcCi0tCSQoUkVBRExJTkVfRElSKS9ybHVzZXIudGV4aSBcCi0tCSQo UkVBRExJTkVfRElSKS9pbmMtaGlzdC50ZXhpbmZvCi0rCSQoc3JjZGlyKS9hZ2VudGV4cHIudGV4 aQotIEdEQl9ET0NfQlVJTERfSU5DTFVERVMgPSBcCi0gCWdkYi1jZmcudGV4aSBcCi0gCUdEQnZu LnRleGkKLUluZGV4OiBnZGItNi43L2dkYi9kb2MvZ2RiLnRleGluZm8KLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNi43Lm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDA3LTEwLTE2IDE2OjE5OjE5LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi02LjcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDA3LTEwLTE2 IDE2OjMyOjEwLjAwMDAwMDAwMCArMDIwMAotQEAgLTE1OCw4ICsxNTgsOCBAQCBzb2Z0d2FyZSBp biBnZW5lcmFsLiAgV2Ugd2lsbCBtaXNzIGhpbS4KLSAKLSAqIEdEQiBCdWdzOjogICAgICAgICAg ICAgICAgICAgIFJlcG9ydGluZyBidWdzIGluIEB2YWx1ZXtHREJOfQotIAotLSogQ29tbWFuZCBM aW5lIEVkaXRpbmc6OiAgICAgICAgQ29tbWFuZCBMaW5lIEVkaXRpbmcKLS0qIFVzaW5nIEhpc3Rv cnkgSW50ZXJhY3RpdmVseTo6IFVzaW5nIEhpc3RvcnkgSW50ZXJhY3RpdmVseQotKyogQ29tbWFu ZCBMaW5lIEVkaXRpbmc6IChybHVzZXJtYW4pLiAgICAgICBDb21tYW5kIExpbmUgRWRpdGluZwot KyogVXNpbmcgSGlzdG9yeSBJbnRlcmFjdGl2ZWx5OiAoaGlzdG9yeSkuICBVc2luZyBIaXN0b3J5 IEludGVyYWN0aXZlbHkKLSAqIEZvcm1hdHRpbmcgRG9jdW1lbnRhdGlvbjo6ICAgIEhvdyB0byBm b3JtYXQgYW5kIHByaW50IEB2YWx1ZXtHREJOfSBkb2N1bWVudGF0aW9uCi0gKiBJbnN0YWxsaW5n IEdEQjo6ICAgICAgICAgICAgICBJbnN0YWxsaW5nIEdEQgotICogTWFpbnRlbmFuY2UgQ29tbWFu ZHM6OiAgICAgICAgTWFpbnRlbmFuY2UgQ29tbWFuZHMKLUBAIC0xNTUzMyw3ICsxNTUzMyw3IEBA IERpc2FibGUgY29tbWFuZCBsaW5lIGVkaXRpbmcuCi0gU2hvdyB3aGV0aGVyIGNvbW1hbmQgbGlu ZSBlZGl0aW5nIGlzIGVuYWJsZWQuCi0gQGVuZCB0YWJsZQotIAotLUB4cmVme0NvbW1hbmQgTGlu ZSBFZGl0aW5nfSwgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgUmVhZGxpbmUKLStAeHJlZntD b21tYW5kIExpbmUgRWRpdGluZywgLCAsIHJsdXNlcm1hbiwgR05VIFJlYWRsaW5lIExpYnJhcnl9 LCBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBSZWFkbGluZQotIGludGVyZmFjZS4gIFVzZXJz IHVuZmFtaWxpYXIgd2l0aCBAc2N7Z251fSBFbWFjcyBvciBAY29kZXt2aX0gYXJlCi0gZW5jb3Vy YWdlZCB0byByZWFkIHRoYXQgY2hhcHRlci4KLSAKLUBAIC0xNTU0OCw3ICsxNTU0OCw4IEBAIGhp c3RvcnkgZmFjaWxpdHkuCi0gCi0gQHZhbHVle0dEQk59IHVzZXMgdGhlIEBzY3tnbnV9IEhpc3Rv cnkgbGlicmFyeSwgYSBwYXJ0IG9mIHRoZSBSZWFkbGluZQotIHBhY2thZ2UsIHRvIHByb3ZpZGUg dGhlIGhpc3RvcnkgZmFjaWxpdHkuICBAeHJlZntVc2luZyBIaXN0b3J5Ci0tSW50ZXJhY3RpdmVs eX0sIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIEhpc3RvcnkgbGlicmFyeS4K LStJbnRlcmFjdGl2ZWx5LCAsICwgaGlzdG9yeSwgR05VIEhpc3RvcnkgTGlicmFyeX0sIGZvciB0 aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24KLStvZiB0aGUgSGlzdG9yeSBsaWJyYXJ5LgotIAotIFRv IGlzc3VlIGEgY29tbWFuZCB0byBAdmFsdWV7R0RCTn0gd2l0aG91dCBhZmZlY3RpbmcgY2VydGFp biBhc3BlY3RzIG9mCi0gdGhlIHN0YXRlIHdoaWNoIGlzIHNlZW4gYnkgdXNlcnMsIHByZWZpeCBp dCB3aXRoIEBzYW1we3NlcnZlciB9Ci1AQCAtMTU2MDAsNyArMTU2MDEsNyBAQCBUaGlzIGRlZmF1 bHRzIHRvIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvCi0gQGVuZCB0YWJsZQotIAotIEhpc3Rvcnkg ZXhwYW5zaW9uIGFzc2lnbnMgc3BlY2lhbCBtZWFuaW5nIHRvIHRoZSBjaGFyYWN0ZXIgQGtiZHsh fS4KLS1AeHJlZntFdmVudCBEZXNpZ25hdG9yc30sIGZvciBtb3JlIGRldGFpbHMuCi0rQHhyZWZ7 RXZlbnQgRGVzaWduYXRvcnMsICwgLCBoaXN0b3J5LCBHTlUgSGlzdG9yeSBMaWJyYXJ5fSwgZm9y IG1vcmUgZGV0YWlscy4KLSAKLSBAY2luZGV4IGhpc3RvcnkgZXhwYW5zaW9uLCB0dXJuIG9uL29m ZgotIFNpbmNlIEBrYmR7IX0gaXMgYWxzbyB0aGUgbG9naWNhbCBub3Qgb3BlcmF0b3IgaW4gQywg aGlzdG9yeSBleHBhbnNpb24KLUBAIC0xNjY2MCw3ICsxNjY2MSw4IEBAIEluZGljYXRlcyB0aGUg Y3VycmVudCBwcm9ncmFtIGNvdW50ZXIgYWQKLSBAY2luZGV4IFRVSSBrZXkgYmluZGluZ3MKLSAK LSBUaGUgVFVJIGluc3RhbGxzIHNldmVyYWwga2V5IGJpbmRpbmdzIGluIHRoZSByZWFkbGluZSBr ZXltYXBzCi0tKEBweHJlZntDb21tYW5kIExpbmUgRWRpdGluZ30pLiAgVGhlIGZvbGxvd2luZyBr ZXkgYmluZGluZ3MKLSsoQHB4cmVme0NvbW1hbmQgTGluZSBFZGl0aW5nLCAsICwgcmx1c2VybWFu LCBHTlUgUmVhZGxpbmUgTGlicmFyeX0pLgotK1RoZSBmb2xsb3dpbmcga2V5IGJpbmRpbmdzCi0g YXJlIGluc3RhbGxlZCBmb3IgYm90aCBUVUkgbW9kZSBhbmQgdGhlIEB2YWx1ZXtHREJOfSBzdGFu ZGFyZCBtb2RlLgotIAotIEB0YWJsZSBAa2JkCi1AQCAtMjE5MzcsMTUgKzIxOTM5LDYgQEAgU3Vj aCBndWVzc2VzIGFyZSB1c3VhbGx5IHdyb25nLiAgRXZlbiB3ZQotIHRoaW5ncyB3aXRob3V0IGZp cnN0IHVzaW5nIHRoZSBkZWJ1Z2dlciB0byBmaW5kIHRoZSBmYWN0cy4KLSBAZW5kIGl0ZW1pemUK LSAKLS1AYyBUaGUgcmVhZGxpbmUgZG9jdW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCB3aXRoIHRo ZSByZWFkbGluZSBjb2RlCi0tQGMgYW5kIGNvbnNpc3RzIG9mIHRoZSB0d28gZm9sbG93aW5nIGZp bGVzOgotLUBjICAgICBybHVzZXIudGV4aW5mbwotLUBjICAgICBpbmMtaGlzdC50ZXhpbmZvCi0t QGMgVXNlIC1JIHdpdGggbWFrZWluZm8gdG8gcG9pbnQgdG8gdGhlIGFwcHJvcHJpYXRlIGRpcmVj dG9yeSwKLS1AYyBlbnZpcm9ubWVudCB2YXIgVEVYSU5QVVRTIHdpdGggVGVYLgotLUBpbmNsdWRl IHJsdXNlci50ZXhpCi0tQGluY2x1ZGUgaW5jLWhpc3QudGV4aW5mbwotLQotIAotIEBub2RlIEZv cm1hdHRpbmcgRG9jdW1lbnRhdGlvbgotIEBhcHBlbmRpeCBGb3JtYXR0aW5nIERvY3VtZW50YXRp b24KLUBAIC0yMjExNSw5ICsyMjEwOCw2IEBAIHNvdXJjZSBmb3IgdGhlIEBzYW1wey1saWJlcnR5 fSBmcmVlIHNvZnQKLSBAaXRlbSBnZGItQHZhbHVle0dEQlZOfS9vcGNvZGVzCi0gc291cmNlIGZv ciB0aGUgbGlicmFyeSBvZiBvcGNvZGUgdGFibGVzIGFuZCBkaXNhc3NlbWJsZXJzCi0gCi0tQGl0 ZW0gZ2RiLUB2YWx1ZXtHREJWTn0vcmVhZGxpbmUKLS1zb3VyY2UgZm9yIHRoZSBAc2N7Z251fSBj b21tYW5kLWxpbmUgaW50ZXJmYWNlCi0tCi0gQGl0ZW0gZ2RiLUB2YWx1ZXtHREJWTn0vZ2xvYgot IHNvdXJjZSBmb3IgdGhlIEBzY3tnbnV9IGZpbGVuYW1lIHBhdHRlcm4tbWF0Y2hpbmcgc3Vicm91 dGluZQotIAotQEAgLTIyMTQ5LDcgKzIyMTM5LDcgQEAgd2hlcmUgQHZhcntob3N0fSBpcyBhbiBp ZGVudGlmaWVyIHN1Y2ggYQotIGNvcnJlY3QgdmFsdWUgYnkgZXhhbWluaW5nIHlvdXIgc3lzdGVt LikKLSAKLSBSdW5uaW5nIEBzYW1we2NvbmZpZ3VyZSBAdmFye2hvc3R9fSBhbmQgdGhlbiBydW5u aW5nIEBjb2Rle21ha2V9IGJ1aWxkcyB0aGUKLS1AZmlsZXtiZmR9LCBAZmlsZXtyZWFkbGluZX0s IEBmaWxle21tYWxsb2N9LCBhbmQgQGZpbGV7bGliaWJlcnR5fQotK0BmaWxle2JmZH0sIEBmaWxl e21tYWxsb2N9LCBhbmQgQGZpbGV7bGliaWJlcnR5fQotIGxpYnJhcmllcywgdGhlbiBAY29kZXtn ZGJ9IGl0c2VsZi4gIFRoZSBjb25maWd1cmVkIHNvdXJjZSBmaWxlcywgYW5kIHRoZQotIGJpbmFy aWVzLCBhcmUgbGVmdCBpbiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgZGlyZWN0b3JpZXMuCi0g Ci1AQCAtMjIxNzUsNyArMjIxNjUsNyBAQCBzb3VyY2UgdHJlZSwgdGhlIEBmaWxle2dkYi1AdmFy e3ZlcnNpb24tCi0gdGhhdCBzdWJkaXJlY3RvcnkuICBUaGF0IGlzIHVzdWFsbHkgbm90IHdoYXQg eW91IHdhbnQuICBJbiBwYXJ0aWN1bGFyLAotIGlmIHlvdSBydW4gdGhlIGZpcnN0IEBmaWxle2Nv bmZpZ3VyZX0gZnJvbSB0aGUgQGZpbGV7Z2RifSBzdWJkaXJlY3RvcnkKLSBvZiB0aGUgQGZpbGV7 Z2RiLUB2YXJ7dmVyc2lvbi1udW1iZXJ9fSBkaXJlY3RvcnksIHlvdSB3aWxsIG9taXQgdGhlCi0t Y29uZmlndXJhdGlvbiBvZiBAZmlsZXtiZmR9LCBAZmlsZXtyZWFkbGluZX0sIGFuZCBvdGhlciBz aWJsaW5nCi0rY29uZmlndXJhdGlvbiBvZiBAZmlsZXtiZmR9LCBhbmQgb3RoZXIgc2libGluZwot IGRpcmVjdG9yaWVzIG9mIHRoZSBAZmlsZXtnZGJ9IHN1YmRpcmVjdG9yeS4gIFRoaXMgbGVhZHMg dG8gYnVpbGQgZXJyb3JzCi0gYWJvdXQgbWlzc2luZyBpbmNsdWRlIGZpbGVzIHN1Y2ggYXMgQGZp bGV7YmZkL2JmZC5ofS4KLSAKCmRpZmYgLS1naXQgYS9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5n LXN0ZXAtc3ctd2F0Y2hwb2ludHMyLnBhdGNoIGIvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1z dGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaAppbmRleCBmMTk3MTJlLi5lODk0MjU4IDEwMDY0NAot LS0gYS9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtc3ctd2F0Y2hwb2ludHMyLnBhdGNo CisrKyBiL2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1zdy13YXRjaHBvaW50czIucGF0 Y2gKQEAgLTIxLDExICsyMSwxMSBAQAogCiAJUG9ydCB0byBHREItNi44cHJlLgogCi1JbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvaW5mZXJpb3IuaAorSW5kZXg6IGdkYi03LjIuNTAuMjAx MDEyMzEvZ2RiL2luZmVyaW9yLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2 Lm9yaWcvZ2RiL2luZmVyaW9yLmgJMjAxMC0wNi0yNCAxNzoxNzozMC4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9pbmZlcmlvci5oCTIwMTAtMTEtMTYgMDc6NTQ6 MzYuMDAwMDAwMDAwICswMTAwCi1AQCAtMTk4LDcgKzE5OCwxNSBAQCBleHRlcm4gdm9pZCByZW9w ZW5fZXhlY19maWxlICh2b2lkKTsKKy0tLSBnZGItNy4yLjUwLjIwMTAxMjMxLm9yaWcvZ2RiL2lu ZmVyaW9yLmgJMjAxMS0wMS0wMSAwMToyNTowMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4y LjUwLjIwMTAxMjMxL2dkYi9pbmZlcmlvci5oCTIwMTEtMDEtMDEgMDE6MjU6MTYuMDAwMDAwMDAw ICswMTAwCitAQCAtMTg2LDcgKzE4NiwxNSBAQCBleHRlcm4gdm9pZCByZW9wZW5fZXhlY19maWxl ICh2b2lkKTsKICAvKiBUaGUgYHJlc3VtZScgcm91dGluZSBzaG91bGQgb25seSBiZSBjYWxsZWQg aW4gc3BlY2lhbCBjaXJjdW1zdGFuY2VzLgogICAgIE5vcm1hbGx5LCB1c2UgYHByb2NlZWQnLCB3 aGljaCBoYW5kbGVzIGEgbG90IG9mIGJvb2trZWVwaW5nLiAgKi8KICAKQEAgLTQyLDExICs0Miwx MSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvaW5mZXJpb3IuaAogIAogIC8qIEZy b20gbWlzYyBmaWxlcyAqLwogIAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZnJ1 bi5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvaW5mcnVuLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTAtMTEtMTYgMDc6 NTM6NTkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvaW5mcnVu LmMJMjAxMC0xMS0xNiAwNzo1NToyMy4wMDAwMDAwMDAgKzAxMDAKLUBAIC03NCw3ICs3NCw3IEBA IHN0YXRpYyBpbnQgZm9sbG93X2ZvcmsgKHZvaWQpOworLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEu b3JpZy9nZGIvaW5mcnVuLmMJMjAxMS0wMS0wMSAwMToyNTowMS4wMDAwMDAwMDAgKzAxMDAKKysr KyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9pbmZydW4uYwkyMDExLTAxLTAxIDAxOjI1OjI5LjAw MDAwMDAwMCArMDEwMAorQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIGludCBmb2xsb3dfZm9yayAo dm9pZCk7CiAgc3RhdGljIHZvaWQgc2V0X3NjaGVkbG9ja19mdW5jIChjaGFyICphcmdzLCBpbnQg ZnJvbV90dHksCiAgCQkJCXN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKTsKICAKQEAgLTU1LDcg KzU1LDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZnJ1bi5jCiAgCiAgc3Rh dGljIGludCBjdXJyZW50bHlfc3RlcHBpbmdfb3JfbmV4dGluZ19jYWxsYmFjayAoc3RydWN0IHRo cmVhZF9pbmZvICp0cCwKICAJCQkJCQkgICB2b2lkICpkYXRhKTsKLUBAIC0xNTU3LDcgKzE1NTcs NyBAQCBtYXliZV9zb2Z0d2FyZV9zaW5nbGVzdGVwIChzdHJ1Y3QgZ2RiYXJjCitAQCAtMTU3MCw3 ICsxNTcwLDcgQEAgbWF5YmVfc29mdHdhcmVfc2luZ2xlc3RlcCAoc3RydWN0IGdkYmFyYwogICAg IFNURVAgbm9uemVybyBpZiB3ZSBzaG91bGQgc3RlcCAoemVybyB0byBjb250aW51ZSBpbnN0ZWFk KS4KICAgICBTSUcgaXMgdGhlIHNpZ25hbCB0byBnaXZlIHRoZSBpbmZlcmlvciAoemVybyBmb3Ig bm9uZSkuICAqLwogIHZvaWQKQEAgLTY0LDI0ICs2NCwyNCBAQCBJbmRleDogZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvaW5mcnVuLmMKICB7CiAgICBpbnQgc2hvdWxkX3Jlc3VtZSA9IDE7CiAgICBz dHJ1Y3QgY2xlYW51cCAqb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChyZXN1bWVfY2xlYW51 cHMsIDApOwotQEAgLTE1ODksMTAgKzE1ODksMTIgQEAgcmVzdW1lIChpbnQgc3RlcCwgZW51bSB0 YXJnZXRfc2lnbmFsIHNpZworQEAgLTE2MDIsMTAgKzE2MDIsMTIgQEAgcmVzdW1lIChpbnQgc3Rl cCwgZW51bSB0YXJnZXRfc2lnbmFsIHNpZwogICAgICB9CiAgCiAgICBpZiAoZGVidWdfaW5mcnVu KQogLSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCiAtICAgICAgICAgICAgICAg ICAgICAgICAgImluZnJ1bjogcmVzdW1lIChzdGVwPSVkLCBzaWduYWw9JWQpLCAiCiAtCQkJInRy YXBfZXhwZWN0ZWQ9JWRcbiIsCi0tIAkJCXN0ZXAsIHNpZywgdHAtPnRyYXBfZXhwZWN0ZWQpOwor LSAJCQlzdGVwLCBzaWcsIHRwLT5jb250cm9sLnRyYXBfZXhwZWN0ZWQpOwogKyAgICBmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJpbmZydW46IHJlc3VtZSAoc3RlcD0lcywgc2lnbmFs PSVkKSwgIgogKwkJCQkgICAgInRyYXBfZXhwZWN0ZWQ9JWRcbiIsCiArCQkJKHN0ZXAgPT0gUkVT VU1FX1NURVBfQ09OVElOVUUgPyAiUkVTVU1FX1NURVBfQ09OVElOVUUiCiArCQkJOiAoc3RlcCA9 PSBSRVNVTUVfU1RFUF9VU0VSID8gIlJFU1VNRV9TVEVQX1VTRVIiCiArCQkJICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDogIlJFU1VNRV9TVEVQX05FRURFRCIpKSwKLSsJCQlzaWcsIHRwLT50 cmFwX2V4cGVjdGVkKTsKKysJCQlzaWcsIHRwLT5jb250cm9sLnRyYXBfZXhwZWN0ZWQpOwogIAog ICAgLyogTm9ybWFsbHksIGJ5IHRoZSB0aW1lIHdlIHJlYWNoIGByZXN1bWUnLCB0aGUgYnJlYWtw b2ludHMgYXJlIGVpdGhlcgogICAgICAgcmVtb3ZlZCBvciBpbnNlcnRlZCwgYXMgYXBwcm9wcmlh dGUuICBUaGUgZXhjZXB0aW9uIGlzIGlmIHdlJ3JlIHNpdHRpbmcKLUBAIC0xNzEwLDkgKzE3MTIs MTAgQEAgYSBjb21tYW5kIGxpa2UgYHJldHVybicgb3IgYGp1bXAnIHRvIGNvbgorQEAgLTE3MjMs OSArMTcyNSwxMCBAQCBhIGNvbW1hbmQgbGlrZSBgcmV0dXJuJyBvciBganVtcCcgdG8gY29uCiAg CSAgICAgaW5kaXZpZHVhbGx5LiAgKi8KICAJICByZXN1bWVfcHRpZCA9IGluZmVyaW9yX3B0aWQ7 CiAgCX0KQEAgLTk0LDcgKzk0LDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2lu ZnJ1bi5jCiAgCXsKICAJICAvKiBVc2VyLXNldHRhYmxlICdzY2hlZHVsZXInIG1vZGUgcmVxdWly ZXMgc29sbyB0aHJlYWQgcmVzdW1lLiAqLwogIAkgIHJlc3VtZV9wdGlkID0gaW5mZXJpb3JfcHRp ZDsKLUBAIC0xOTIxLDcgKzE5MjQsNyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0 YXJnZXRfc2lnCitAQCAtMTkzNCw3ICsxOTM3LDcgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIs IGVudW0gdGFyZ2V0X3NpZwogICAgc3RydWN0IHRocmVhZF9pbmZvICp0cDsKICAgIENPUkVfQURE UiBwYzsKICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2U7CkBAIC0xMDMsNyArMTAzLDcg QEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZnJ1bi5jCiAgCiAgICAvKiBJZiB3 ZSdyZSBzdG9wcGVkIGF0IGEgZm9yay92Zm9yaywgZm9sbG93IHRoZSBicmFuY2ggc2V0IGJ5IHRo ZQogICAgICAgInNldCBmb2xsb3ctZm9yay1tb2RlIiBjb21tYW5kOyBvdGhlcndpc2UsIHdlJ2xs IGp1c3QgcHJvY2VlZAotQEAgLTE5NTYsMTMgKzE5NTksMTMgQEAgcHJvY2VlZCAoQ09SRV9BRERS IGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTE5NjksMTMgKzE5NzIsMTMgQEAgcHJvY2VlZCAo Q09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZwogIAkgICBhY3R1YWxseSBiZSBleGVjdXRp bmcgdGhlIGJyZWFrcG9pbnQgaW5zbiBhbnl3YXkuCiAgCSAgIFdlJ2xsIGJlICh1bi0pZXhlY3V0 aW5nIHRoZSBwcmV2aW91cyBpbnN0cnVjdGlvbi4gICovCiAgCkBAIC0xMTksNyArMTE5LDcgQEAg SW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZnJ1bi5jCiAgICAgIH0KICAgIGVsc2UK ICAgICAgewotQEAgLTIwMDMsMTMgKzIwMDYsMTMgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIs IGVudW0gdGFyZ2V0X3NpZworQEAgLTIwMTYsMTMgKzIwMTksMTMgQEAgcHJvY2VlZCAoQ09SRV9B RERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZwogIAkgaXMgcmVxdWlyZWQgaXQgcmV0dXJucyBUUlVF IGFuZCBzZXRzIHRoZSBjdXJyZW50IHRocmVhZCB0bwogIAkgdGhlIG9sZCB0aHJlYWQuICovCiAg ICAgICAgaWYgKHByZXBhcmVfdG9fcHJvY2VlZCAoc3RlcCkpCkBAIC0xMzMsOSArMTMzLDkgQEAg SW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZnJ1bi5jCiAtICBpZiAob25lcHJvYykK ICsgIGlmIChyZXN1bWVfc3RlcCA9PSBSRVNVTUVfU1RFUF9VU0VSKQogICAgICB7Ci0gICAgICAg dHAtPnRyYXBfZXhwZWN0ZWQgPSAxOworICAgICAgIHRwLT5jb250cm9sLnRyYXBfZXhwZWN0ZWQg PSAxOwogICAgICAgIC8qIElmIGRpc3BsYWNlZCBzdGVwcGluZyBpcyBlbmFibGVkLCB3ZSBjYW4g c3RlcCBvdmVyIHRoZQotQEAgLTIwOTYsOCArMjA5OSwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIg YWRkciwgZW51bSB0YXJnZXRfc2lnCitAQCAtMjEwOSw4ICsyMTEyLDEzIEBAIHByb2NlZWQgKENP UkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKICAgIC8qIFJlc2V0IHRvIG5vcm1hbCBzdGF0 ZS4gICovCiAgICBpbml0X2luZndhaXRfc3RhdGUgKCk7CiAgCkBAIC0xNDUsMTIgKzE0NSwxMiBA QCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvaW5mcnVuLmMKICsgICAgcmVzdW1lX3N0 ZXAgPSBSRVNVTUVfU1RFUF9ORUVERUQ7CiArCiAgICAvKiBSZXN1bWUgaW5mZXJpb3IuICAqLwot LSAgcmVzdW1lIChvbmVwcm9jIHx8IHN0ZXAgfHwgYnBzdGF0X3Nob3VsZF9zdGVwICgpLCB0cC0+ c3RvcF9zaWduYWwpOwotKyAgcmVzdW1lIChyZXN1bWVfc3RlcCwgdHAtPnN0b3Bfc2lnbmFsKTsK Ky0gIHJlc3VtZSAob25lcHJvYyB8fCBzdGVwIHx8IGJwc3RhdF9zaG91bGRfc3RlcCAoKSwgdHAt PnN1c3BlbmQuc3RvcF9zaWduYWwpOworKyAgcmVzdW1lIChyZXN1bWVfc3RlcCwgdHAtPnN1c3Bl bmQuc3RvcF9zaWduYWwpOwogIAogICAgLyogV2FpdCBmb3IgaXQgdG8gc3RvcCAoaWYgbm90IHN0 YW5kYWxvbmUpCiAgICAgICBhbmQgaW4gYW55IGNhc2UgZGVjb2RlIHdoeSBpdCBzdG9wcGVkLCBh bmQgYWN0IGFjY29yZGluZ2x5LiAgKi8KLUBAIC00ODU5LDEzICs0ODY3LDE4IEBAIGluZnJ1bjog bm90IHN3aXRjaGluZyBiYWNrIHRvIHN0ZXBwZWQgdGgKK0BAIC00OTMzLDE0ICs0OTQxLDE5IEBA IGluZnJ1bjogbm90IHN3aXRjaGluZyBiYWNrIHRvIHN0ZXBwZWQgdGgKICAKICAvKiBJcyB0aHJl YWQgVFAgaW4gdGhlIG1pZGRsZSBvZiBzaW5nbGUtc3RlcHBpbmc/ICAqLwogIApAQCAtMTU4LDEy ICsxNTgsMTQgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZnJ1bi5jCiArc3Rh dGljIGVudW0gcmVzdW1lX3N0ZXAKICBjdXJyZW50bHlfc3RlcHBpbmcgKHN0cnVjdCB0aHJlYWRf aW5mbyAqdHApCiAgewotLSAgcmV0dXJuICgodHAtPnN0ZXBfcmFuZ2VfZW5kICYmIHRwLT5zdGVw X3Jlc3VtZV9icmVha3BvaW50ID09IE5VTEwpCi0tIAkgIHx8IHRwLT50cmFwX2V4cGVjdGVkCi0t IAkgIHx8IHRwLT5zdGVwcGluZ190aHJvdWdoX3NvbGliX2FmdGVyX2NhdGNoCi0tIAkgIHx8IGJw c3RhdF9zaG91bGRfc3RlcCAoKSk7Ci0rICBpZiAoKHRwLT5zdGVwX3JhbmdlX2VuZCAmJiB0cC0+ c3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9PSBOVUxMKQotKyAgICAgIHx8IHRwLT50cmFwX2V4cGVj dGVkCistICByZXR1cm4gKCh0cC0+Y29udHJvbC5zdGVwX3JhbmdlX2VuZAorLQkgICAmJiB0cC0+ Y29udHJvbC5zdGVwX3Jlc3VtZV9icmVha3BvaW50ID09IE5VTEwpCistCSAgfHwgdHAtPmNvbnRy b2wudHJhcF9leHBlY3RlZAorLQkgIHx8IHRwLT5zdGVwcGluZ190aHJvdWdoX3NvbGliX2FmdGVy X2NhdGNoCistCSAgfHwgYnBzdGF0X3Nob3VsZF9zdGVwICgpKTsKKysgIGlmICgodHAtPmNvbnRy b2wuc3RlcF9yYW5nZV9lbmQKKysgICAgICAgJiYgdHAtPmNvbnRyb2wuc3RlcF9yZXN1bWVfYnJl YWtwb2ludCA9PSBOVUxMKQorKyAgICAgIHx8IHRwLT5jb250cm9sLnRyYXBfZXhwZWN0ZWQKICsg ICAgICB8fCB0cC0+c3RlcHBpbmdfdGhyb3VnaF9zb2xpYl9hZnRlcl9jYXRjaCkKICsgICAgcmV0 dXJuIFJFU1VNRV9TVEVQX1VTRVI7CiArCkBAIC0xNzQsMTEgKzE3NiwxMSBAQCBJbmRleDogZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvaW5mcnVuLmMKICB9CiAgCiAgLyogUmV0dXJucyB0cnVlIGlm IGFueSB0aHJlYWQgKmJ1dCogdGhlIG9uZSBwYXNzZWQgaW4gImRhdGEiIGlzIGluIHRoZQotSW5k ZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuMi41 MC4yMDEwMTIzMS9nZGIvbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIw MTAxMTE2Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMTEtMTYgMDc6NTM6NTkuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmMJMjAxMC0xMS0x NiAwNzo1NDozNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0yODgzLDcgKzI4ODMsMTAgQEAgY291bnRf ZXZlbnRzX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKgorLS0tIGdkYi03LjIuNTAuMjAxMDEy MzEub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMS0wMS0wMSAwMToyNToxNi4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9saW51eC1uYXQuYwkyMDExLTAxLTAxIDAx OjI1OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTI5MDgsNyArMjkwOCwxMCBAQCBjb3VudF9ldmVu dHNfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqCiAgc3RhdGljIGludAogIHNlbGVjdF9zaW5n bGVzdGVwX2x3cF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwgdm9pZCAqZGF0YSkKICB7 CkBAIC0xOTAsMTAgKzE5MiwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGlu dXgtbmF0LmMKICAgICAgcmV0dXJuIDE7CiAgICBlbHNlCiAgICAgIHJldHVybiAwOwotSW5kZXg6 IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2xpbnV4LW5hdC5oCitJbmRleDogZ2RiLTcuMi41MC4y MDEwMTIzMS9nZGIvbGludXgtbmF0LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAx MTE2Lm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDctMjcgMjI6NTE6MzcuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmgJMjAxMC0xMS0xNiAw Nzo1NDozNi4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMjMxLm9yaWcvZ2Ri L2xpbnV4LW5hdC5oCTIwMTEtMDEtMDEgMDE6MjU6MTYuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMi41MC4yMDEwMTIzMS9nZGIvbGludXgtbmF0LmgJMjAxMS0wMS0wMSAwMToyNToxNi4wMDAw MDAwMDAgKzAxMDAKIEBAIC01NSw4ICs1NSw4IEBAIHN0cnVjdCBsd3BfaW5mbwogICAgLyogSWYg bm9uLXplcm8sIGEgcGVuZGluZyB3YWl0IHN0YXR1cy4gICovCiAgICBpbnQgc3RhdHVzOwoKZGlm ZiAtLWdpdCBhL2dkYi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2ggYi9nZGItNi44LXF1aXQt bmV2ZXItYWJvcnRzLnBhdGNoCmluZGV4IGVkMjJkNmIuLjc5YTJmNDcgMTAwNjQ0Ci0tLSBhL2dk Yi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2gKKysrIGIvZ2RiLTYuOC1xdWl0LW5ldmVyLWFi b3J0cy5wYXRjaApAQCAtNSwxMSArNSwxMSBAQCBTb21lIG9mIHRoZSB0aHJlYWRzIG1heSBub3Qg YmUgcHJvcGVybHkgUFRSQUNFX0RFVEFDSGVkIHdoaWNoIGh1cnRzIGlmIHRoZXkKIHNob3VsZCBo YXZlIGJlZW4gZGV0YWNoZWQgd2l0aCBTSUdTVE9QIChhcyB0aGV5IGFyZSBhY2NpZGVudGFsbHkg bGVmdCBydW5uaW5nCiBvbiB0aGUgZGVidWdnZXIgdGVybWluYXRpb24pLgogCi1JbmRleDogZ2Ri LTYuOC41MC4yMDA4MTEyOC9nZGIvZGVmcy5oCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9n ZGIvZGVmcy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA4MTEyOC5vcmlnL2dkYi9k ZWZzLmgJMjAwOC0xMS0yNyAxMDoyMzowMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNi44LjUw LjIwMDgxMTI4L2dkYi9kZWZzLmgJMjAwOC0xMi0wNiAyMTo0OTozMi4wMDAwMDAwMDAgKzAxMDAK LUBAIC0xNTUsNiArMTU1LDcgQEAgZXh0ZXJuIGNoYXIgKmdkYl9zeXNyb290OworLS0tIGdkYi03 LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvZGVmcy5oCTIwMTEtMDEtMDEgMDE6MDA6MjkuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvZGVmcy5oCTIwMTEtMDEtMDEg MDE6MDk6MTcuMDAwMDAwMDAwICswMTAwCitAQCAtMTY1LDYgKzE2NSw3IEBAIGV4dGVybiBjaGFy ICpweXRob25fbGliZGlyOwogIGV4dGVybiBjaGFyICpkZWJ1Z19maWxlX2RpcmVjdG9yeTsKICAK ICBleHRlcm4gaW50IHF1aXRfZmxhZzsKQEAgLTE3LDcgKzE3LDcgQEAgSW5kZXg6IGdkYi02Ljgu NTAuMjAwODExMjgvZ2RiL2RlZnMuaAogIGV4dGVybiBpbnQgaW1tZWRpYXRlX3F1aXQ7CiAgZXh0 ZXJuIGludCBzZXZlbmJpdF9zdHJpbmdzOwogIAotQEAgLTE2OCw3ICsxNjksNyBAQCBleHRlcm4g dm9pZCBxdWl0ICh2b2lkKTsKK0BAIC0xNzgsNyArMTc5LDcgQEAgZXh0ZXJuIHZvaWQgcXVpdCAo dm9pZCk7CiAgICAgbmVlZGVkLiAqLwogIAogICNkZWZpbmUgUVVJVCB7IFwKQEAgLTI2LDI0ICsy NiwyNCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvZGVmcy5oCiAgICBpZiAoZGVw cmVjYXRlZF9pbnRlcmFjdGl2ZV9ob29rKSBkZXByZWNhdGVkX2ludGVyYWN0aXZlX2hvb2sgKCk7 IFwKICB9CiAgCi1JbmRleDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvZXZlbnQtdG9wLmMKK0lu ZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9ldmVudC10b3AuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi02LjguNTAuMjAwODExMjgub3JpZy9nZGIvZXZlbnQtdG9wLmMJMjAwOC0xMi0wNCAxMDoz NDozMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi9ldmVudC10 b3AuYwkyMDA4LTEyLTA2IDIxOjQ5OjA3LjAwMDAwMDAwMCArMDEwMAotQEAgLTkzOSw3ICs5Mzks NyBAQCBhc3luY19yZXF1ZXN0X3F1aXQgKGdkYl9jbGllbnRfZGF0YSBhcmcpCistLS0gZ2RiLTcu Mi41MC4yMDEwMTIzMS5vcmlnL2dkYi9ldmVudC10b3AuYwkyMDExLTAxLTAxIDAxOjA3OjM3LjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2V2ZW50LXRvcC5jCTIw MTEtMDEtMDEgMDE6MDk6MzkuMDAwMDAwMDAwICswMTAwCitAQCAtOTA0LDcgKzkwNCw3IEBAIGFz eW5jX3JlcXVlc3RfcXVpdCAoZ2RiX2NsaWVudF9kYXRhIGFyZykKICAgICAgIGlzIG5vIHJlYXNv biB0byBjYWxsIHF1aXQgYWdhaW4gaGVyZSwgdW5sZXNzIGltbWVkaWF0ZV9xdWl0IGlzCi0gICAg ICBzZXQuKi8KKyAgICAgIHNldC4gICovCiAgCiAtICBpZiAocXVpdF9mbGFnIHx8IGltbWVkaWF0 ZV9xdWl0KQogKyAgaWYgKChxdWl0X2ZsYWcgfHwgaW1tZWRpYXRlX3F1aXQpICYmICFxdWl0X2Zs YWdfY2xlYW51cCkKICAgICAgcXVpdCAoKTsKICB9CiAgCi1JbmRleDogZ2RiLTYuOC41MC4yMDA4 MTEyOC9nZGIvdG9wLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90b3AuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwODExMjgub3JpZy9nZGIvdG9wLmMJMjAwOC0xMi0w NCAxMDoyMzoxMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90 b3AuYwkyMDA4LTEyLTA2IDIxOjQ5OjA3LjAwMDAwMDAwMCArMDEwMAotQEAgLTEyOTksNyArMTI5 OSw5IEBAIHF1aXRfZm9yY2UgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKy0tLSBnZGItNy4y LjUwLjIwMTAxMjMxLm9yaWcvZ2RiL3RvcC5jCTIwMTEtMDEtMDEgMDE6MDA6MjkuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdG9wLmMJMjAxMS0wMS0wMSAwMTow OToxNy4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMjU0LDcgKzEyNTQsOSBAQCBxdWl0X2ZvcmNlIChj aGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAgICBxdC5hcmdzID0gYXJnczsKICAgIHF0LmZyb21f dHR5ID0gZnJvbV90dHk7CiAgCkBAIC01NCwxMSArNTQsMTEgQEAgSW5kZXg6IGdkYi02LjguNTAu MjAwODExMjgvZ2RiL3RvcC5jCiAgICBjYXRjaF9lcnJvcnMgKHF1aXRfdGFyZ2V0LCAmcXQsCiAg CSAgICAgICAgIlF1aXR0aW5nOiAiLCBSRVRVUk5fTUFTS19BTEwpOwogIAotSW5kZXg6IGdkYi02 LjguNTAuMjAwODExMjgvZ2RiL3V0aWxzLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dk Yi91dGlscy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA4MTEyOC5vcmlnL2dkYi91 dGlscy5jCTIwMDgtMTItMDQgMTA6MzE6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTYuOC41 MC4yMDA4MTEyOC9nZGIvdXRpbHMuYwkyMDA4LTEyLTA2IDIxOjQ5OjA3LjAwMDAwMDAwMCArMDEw MAotQEAgLTExNCw2ICsxMTQsMTEgQEAgaW50IGpvYl9jb250cm9sOworLS0tIGdkYi03LjIuNTAu MjAxMDEyMzEub3JpZy9nZGIvdXRpbHMuYwkyMDExLTAxLTAxIDAxOjAwOjI5LjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL3V0aWxzLmMJMjAxMS0wMS0wMSAwMTow OToxNy4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMjEsNiArMTIxLDExIEBAIGludCBqb2JfY29udHJv bDsKICAKICBpbnQgcXVpdF9mbGFnOwogIAoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXItYWRhLnBh dGNoIGIvZ2RiLWFyY2hlci1hZGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDEyODExMmIuLjAwMDAwMDAKLS0tIGEvZ2RiLWFyY2hlci1hZGEucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwyMyArMCwwIEBACi1Gcm9tOiBLZWl0aCBTZWl0eiA8a2VpdGhzQHJlZGhhdC5jb20+ Ci1NZXNzYWdlLUlEOiA8NEI3RjIwN0EuNzAyMDEwMkByZWRoYXQuY29tPgotCi1bIHJlYWRfcGFy dGlhbF9kaWUgcGFydCBkcm9wcGVkIGluIHRoZSBwb3J0IHRvIFJhd2hpZGUgXQotCi0tLS0gZ2Ri LTcuMC4xLW9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAyLTIwIDAxOjA2OjQ0LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjAuMS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDItMjAgMDE6MDg6 MjguMDAwMDAwMDAwICswMTAwCi1AQCAtOTkyNCw5ICs5OTI4LDEzIEBAIGR3YXJmMl9jYW5vbmlj YWxpemVfbmFtZSAoY2hhciAqbmFtZSwgc3QKLSBzdGF0aWMgY2hhciAqCi0gZHdhcmYyX25hbWUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0tICBzdHJ1 Y3QgYXR0cmlidXRlICphdHRyOwotKyAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciA9IE5VTEw7Ci0r Ci0rICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2FkYSkKLSsgICAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX01JUFNfbGlua2FnZV9uYW1lLCBjdSk7Ci0gCi0tICBhdHRyID0g ZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbmFtZSwgY3UpOwotKyAgaWYgKCFhdHRyKQotKyAgICBh dHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbmFtZSwgY3UpOwotICAgaWYgKCFhdHRyIHx8 ICFEV19TVFJJTkcgKGF0dHIpKQotICAgICByZXR1cm4gTlVMTDsKLSAKCmRpZmYgLS1naXQgYS9n ZGItYXJjaGVyLnBhdGNoIGIvZ2RiLWFyY2hlci5wYXRjaAppbmRleCA5YzEyYTdmLi4wNmU3NmEw IDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLnBhdGNoCisrKyBiL2dkYi1hcmNoZXIucGF0Y2gKQEAg LTIsNyArMiw3IEBAIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9Qcm9qZWN0QXJjaGVy CiBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvQXJjaGVyQnJhbmNoTWFuYWdlbWVudAog CiBHSVQgc25hcHNob3Q6Ci1jb21taXQgZTc3NDAyMzczZDQzZWMyMzY2MWExNmExMzRjOTRlNjEx MmI5ZDAzMAorY29tbWl0IDE4ZDNkNWQ1NjRlYWM3YWQxMGJjOTcyYzk1N2U2MTU5YTQyNzZkM2YK IAogYnJhbmNoIGBhcmNoZXInIC0gdGhlIG1lcmdlIG9mIGJyYW5jaGVzOgogYXJjaGVyLWphbmty YXRvY2h2aWwtdmxhCkBAIC0xNCwxMCArMTQsMTAgQEAgYXJjaGVyLWphbmtyYXRvY2h2aWwtaWZ1 bmMKIAogCiBkaWZmIC0tZ2l0IGEvZ2RiL2FkYS1sYW5nLmMgYi9nZGIvYWRhLWxhbmcuYwotaW5k ZXggZWE3MWVhMi4uY2NkN2IyOSAxMDA2NDQKK2luZGV4IDNlZmZmMmUuLjk5MDk3YmYgMTAwNjQ0 CiAtLS0gYS9nZGIvYWRhLWxhbmcuYwogKysrIGIvZ2RiL2FkYS1sYW5nLmMKLUBAIC0xMTI1MCw2 ICsxMTI1MCw3IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCBwYywgaW50ICpvcGxlbnAsCitAQCAtMTEzNTYsNiArMTEzNTYsNyBAQCBhZGFf b3BlcmF0b3JfbGVuZ3RoIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcGMsIGlu dCAqb3BsZW5wLAogIAogIHN0YXRpYyBpbnQKICBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBl eHByZXNzaW9uICpleHAsIGludCBwb3MsCkBAIC0yNSw3ICsyNSw3IEBAIGluZGV4IGVhNzFlYTIu LmNjZDdiMjkgMTAwNjQ0CiAgCQkgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAogIAkJICAgIHZvaWQgKmRhdGEpCiAgewotQEAgLTEx MjY0LDEyICsxMTI2NSwxNSBAQCBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCBwb3MsCitAQCAtMTEzNzAsMTIgKzExMzcxLDE1IEBAIGFkYV9vcGVyYXRvcl9j aGVjayAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAJYnJlYWs7CiAgCiAgICAg ICAgZGVmYXVsdDoKQEAgLTQ0LDQwICs0NCwyMjkgQEAgaW5kZXggZWE3MWVhMi4uY2NkN2IyOSAx MDA2NDQKICAgICAgcmV0dXJuIDE7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2FtZDY0LWxpbnV4LW5h dC5jIGIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCi1pbmRleCAxNmU5N2EyLi4zYTVkNTdlIDEwMDY0 NAoraW5kZXggMTZlOTdhMi4uNzg0YTQ3NiAxMDA2NDQKIC0tLSBhL2dkYi9hbWQ2NC1saW51eC1u YXQuYwogKysrIGIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCi1AQCAtMzc1LDYgKzM3NSwyMCBAQCBh bWQ2NF9saW51eF9kcl91bnNldF9zdGF0dXMgKHVuc2lnbmVkIGxvbmcgbWFzaykKLSAgICAgfQor QEAgLTI2NSwxOCArMjY1LDExIEBAIGFtZDY0X2xpbnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVy cyAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKKyAMCisgLyogU3VwcG9ydCBmb3IgZGVidWcgcmVn aXN0ZXJzLiAgKi8KKyAKKy1zdGF0aWMgdW5zaWduZWQgbG9uZyBhbWQ2NF9saW51eF9kcltEUl9D T05UUk9MICsgMV07CistCisgc3RhdGljIHVuc2lnbmVkIGxvbmcKKy1hbWQ2NF9saW51eF9kcl9n ZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbnVtKQorK2FtZDY0X2xpbnV4X2RyX2dldCAoaW50IHRp ZCwgaW50IHJlZ251bSkKKyB7CistICBpbnQgdGlkOworICAgdW5zaWduZWQgbG9uZyB2YWx1ZTsK KyAKKy0gIHRpZCA9IFRJREdFVCAocHRpZCk7CistICBpZiAodGlkID09IDApCistICAgIHRpZCA9 IFBJREdFVCAocHRpZCk7CistCisgICAvKiBGSVhNRToga2V0dGVuaXMvMjAwMS0wMy0yNzogQ2Fs bGluZyBwZXJyb3Jfd2l0aF9uYW1lIGlmIHRoZQorICAgICAgcHRyYWNlIGNhbGwgZmFpbHMgYnJl YWtzIGRlYnVnZ2luZyByZW1vdGUgdGFyZ2V0cy4gIFRoZSBjb3JyZWN0CisgICAgICB3YXkgdG8g Zml4IHRoaXMgaXMgdG8gYWRkIHRoZSBoYXJkd2FyZSBicmVha3BvaW50IGFuZCB3YXRjaHBvaW50 CitAQCAtMjk4LDE0ICsyOTEsOCBAQCBhbWQ2NF9saW51eF9kcl9nZXQgKHB0aWRfdCBwdGlkLCBp bnQgcmVnbnVtKQorIC8qIFNldCBkZWJ1ZyByZWdpc3RlciBSRUdOVU0gdG8gVkFMVUUgaW4gb25s eSB0aGUgb25lIExXUCBvZiBQVElELiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorLWFtZDY0X2xpbnV4 X2RyX3NldCAocHRpZF90IHB0aWQsIGludCByZWdudW0sIHVuc2lnbmVkIGxvbmcgdmFsdWUpCisr YW1kNjRfbGludXhfZHJfc2V0IChpbnQgdGlkLCBpbnQgcmVnbnVtLCB1bnNpZ25lZCBsb25nIHZh bHVlKQorIHsKKy0gIGludCB0aWQ7CistCistICB0aWQgPSBUSURHRVQgKHB0aWQpOworLSAgaWYg KHRpZCA9PSAwKQorLSAgICB0aWQgPSBQSURHRVQgKHB0aWQpOworLQorICAgZXJybm8gPSAwOwor ICAgcHRyYWNlIChQVFJBQ0VfUE9LRVVTRVIsIHRpZCwKKyAJICBvZmZzZXRvZiAoc3RydWN0IHVz ZXIsIHVfZGVidWdyZWdbcmVnbnVtXSksIHZhbHVlKTsKK0BAIC0zMTMsMzUgKzMwMCw5NiBAQCBh bWQ2NF9saW51eF9kcl9zZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbnVtLCB1bnNpZ25lZCBsb25n IHZhbHVlKQorICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCB3cml0ZSBkZWJ1ZyBy ZWdpc3RlciIpKTsKICB9CiAgCi0rLyogU2VlIGkzODZfZHJfbG93X3R5cGUuZGV0YWNoLiAgRG8g bm90IHVzZSB3cmFwcGVycyBhbWQ2NF9saW51eF9kcl9zZXRfY29udHJvbAotKyAgIG9yIGFtZDY0 X2xpbnV4X2RyX3Jlc2V0X2FkZHIgYXMgdGhleSB3b3VsZCBtb2RpZnkgdGhlIHJlZ2lzdGVyIGNh Y2hlCi0rICAgKGFtZDY0X2xpbnV4X2RyKS4gICovCistLyogU2V0IERSX0NPTlRST0wgdG8gQURE UiBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCisrLyogSGVscGVyIGZvciBhbWQ2NF9saW51 eF9kcl9zZXRfY29udHJvbC4gICovCisrCisrc3RhdGljIHZvaWQKKythbWQ2NF9saW51eF9kcl9z ZXRfY29udHJvbF9jYWxsYmFjayAoaW50IHRpZCwgdm9pZCAqY29udHJvbF92b2lkcCkKKyt7Cisr ICB1bnNpZ25lZCBsb25nIGNvbnRyb2wgPSAqKHVuc2lnbmVkIGxvbmcgKikgY29udHJvbF92b2lk cDsKKysKKysgIGFtZDY0X2xpbnV4X2RyX3NldCAodGlkLCBEUl9DT05UUk9MLCBjb250cm9sKTsK Kyt9CisrCisrc3RhdGljIHZvaWQgYW1kNjRfbGludXhfZHJfc2V0X2FkZHIgKGludCByZWdudW0s IENPUkVfQUREUiBhZGRyKTsKKysKKysvKiBTZXQgRFJfQ09OVFJPTCB0byBBRERSIGluIGFsbCBM V1BzIG9mIENVUlJFTlRfSU5GRVJJT1IuICAqLworIAorIHN0YXRpYyB2b2lkCisgYW1kNjRfbGlu dXhfZHJfc2V0X2NvbnRyb2wgKHVuc2lnbmVkIGxvbmcgY29udHJvbCkKKyB7CistICBzdHJ1Y3Qg bHdwX2luZm8gKmxwOworLSAgcHRpZF90IHB0aWQ7CisrICBpbnQgaW5mZXJpb3JfcGlkID0gcHRp ZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKTsKKysgIHN0cnVjdCBpbmZlcmlvciAqaW5mID0gY3Vy cmVudF9pbmZlcmlvciAoKTsKKysKKysgIC8qIEFyZSB3ZSBkZXRhY2hpbmcgYnJlYWtwb2ludHMg ZnJvbSBhIGZvcmstZWQgY2hpbGQ/CisrICAgICBTZWUgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hw b2ludF9sd3BzIGZvciB0aGUgZm9yay1lZCBjaGlsZCBkZXNjcmlwdGlvbi4KKysgICAgIFRoZSBp Mzg2IGNvdW50ZXJwYXJ0IGlzIGkzODZfbGludXhfZHJfc2V0X2NvbnRyb2wuICAqLworKyAgaWYg KGluZi0+cGlkICE9IGluZmVyaW9yX3BpZCkKKysgICAgeworKyAgICAgIHN0cnVjdCBpMzg2X2Ry X21pcnJvciAqZHJfbWlycm9yID0gaTM4Nl9kcl9taXJyb3JfZ2V0ICgpOworKyAgICAgIGludCBp OworKworKyAgICAgIC8qIFRoZXJlIHdlcmUgdHdvIGNoYW5nZXMgaW4gTGludXgga2VybmVsIDIu Ni4zMyBieSB0aGUgY29tbWl0OgorKyAgICAgICAgIDcyZjY3NGQyMDNjZDIzMDQyNjQzN2NkY2Y3 ZGQ2ZjY4MWRhZDhiMGQKKysKKysgICAgICAgICAoMSkgQWZ0ZXIgZm9yay92Zm9yay9jbG9uZSB0 aGUgbmV3IHRhc2sgbm8gbG9uZ2VyIGluaGVyaXRzIHRoZSBkZWJ1ZworKwkgcmVnaXN0ZXJzLiAg SXQgaGFzIHRoZW0gemVyb2VkIGluc3RlYWQuICBFaXRoZXIgY2FzZSBpcyBPSyBmb3IgR0RCIGFz CisrCSBHREIgYWxyZWFkeSByZWdpc3RlcnMgYSBmaXggdXAgYnkgbGludXhfbmF0X3NldF9uZXdf dGhyZWFkLgorKworKwkgKDIpIElmIHlvdSBlbmFibGUgYSBicmVha3BvaW50IGJ5IHRoZSBDT05U Uk9MIGJpdHMgeW91IGhhdmUgYWxyZWFkeQorKwkgd3JpdHRlbiBpdHMgQUREUkVTUy4gIE90aGVy d2lzZSBMaW51eCBrZXJuZWwgd2lsbCByZXBvcnQgRUlOVkFMLgorKwkgRm9yIHRoaXMgY2FzZSB0 aGUgd29ya2Fyb3VuZCBoZXJlIGVuc3VyZXMgdGhhdCBkdXJpbmcgcmVzZXR0aW5nCisrCSAoZGV0 YWNoaW5nKSB3YXRjaHBvaW50cyBmb3IgYSBmb3JrLWVkIGNoaWxkIHdlIGNhbiBzZXQgQ09OVFJP TAorKwkgYXJiaXRyYXJpbHkgYXMgdGhlIGFkZHJlc3NlcyBnZXQgcHJlLXNldCBoZXJlIGp1c3Qg dG8gYmUgc3VyZS4KKysKKysJIFRoZSBzZWNvbmQgaXNzdWUgaXMgaG9wZWZ1bGx5IGdvaW5nIHRv IGJlIGZpeGVkIGluIExpbnV4IGtlcm5lbDoKKysJIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNv bS9zaG93X2J1Zy5jZ2k/aWQ9NjYwMjA0ICAqLworKworKyAgICAgIGlmICghZHJfbWlycm9yLT5h ZGRyX3ByZXNldCkKKysJeworKwkgIGRyX21pcnJvci0+YWRkcl9wcmVzZXQgPSAxOworKworKwkg IGZvciAoaSA9IDA7IGkgPCBEUl9MQVNUQUREUiAtIERSX0ZJUlNUQUREUjsgaSsrKQorKwkgICAg YW1kNjRfbGludXhfZHJfc2V0X2FkZHIgKGksIGRyX21pcnJvci0+YWRkcltpXSk7CisrCX0KKysg ICAgfQorKworKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChhbWQ2NF9saW51 eF9kcl9zZXRfY29udHJvbF9jYWxsYmFjaywKKysJCQkJICAgICAmY29udHJvbCk7CisrfQorKwor Ky8qIEhlbHBlciBmb3IgYW1kNjRfbGludXhfZHJfc2V0X2FkZHIuICAqLworKworK3N0cnVjdCBh bWQ2NF9saW51eF9kcl9zZXRfYWRkcl9kYXRhCisrICB7CisrICAgIGludCByZWdudW07CisrICAg IENPUkVfQUREUiBhZGRyOworKyAgfTsKICsKICtzdGF0aWMgdm9pZAotK2FtZDY0X2xpbnV4X2Ry X2RldGFjaCAodm9pZCkKKythbWQ2NF9saW51eF9kcl9zZXRfYWRkcl9jYWxsYmFjayAoaW50IHRp ZCwgdm9pZCAqZGF0YXBfdm9pZHApCiArewotKyAgaW50IHJlZ251bTsKKysgIGNvbnN0IHN0cnVj dCBhbWQ2NF9saW51eF9kcl9zZXRfYWRkcl9kYXRhICpkYXRhcCA9IGRhdGFwX3ZvaWRwOworIAor LSAgYW1kNjRfbGludXhfZHJbRFJfQ09OVFJPTF0gPSBjb250cm9sOworLSAgQUxMX0xXUFMgKGxw LCBwdGlkKQorLSAgICBhbWQ2NF9saW51eF9kcl9zZXQgKHB0aWQsIERSX0NPTlRST0wsIGNvbnRy b2wpOworKyAgYW1kNjRfbGludXhfZHJfc2V0ICh0aWQsIERSX0ZJUlNUQUREUiArIGRhdGFwLT5y ZWdudW0sIGRhdGFwLT5hZGRyKTsKKyB9CisgCistLyogU2V0IGFkZHJlc3MgUkVHTlVNICh6ZXJv IGJhc2VkKSB0byBBRERSIGluIGFsbCBMV1BzIG9mIExXUF9MSVNULiAgKi8KKysvKiBTZXQgYWRk cmVzcyBSRUdOVU0gKHplcm8gYmFzZWQpIHRvIEFERFIgaW4gYWxsIExXUHMgb2YgQ1VSUkVOVF9J TkZFUklPUi4KKysgICAqLworIAorIHN0YXRpYyB2b2lkCisgYW1kNjRfbGludXhfZHJfc2V0X2Fk ZHIgKGludCByZWdudW0sIENPUkVfQUREUiBhZGRyKQorIHsKKy0gIHN0cnVjdCBsd3BfaW5mbyAq bHA7CistICBwdGlkX3QgcHRpZDsKKysgIHN0cnVjdCBhbWQ2NF9saW51eF9kcl9zZXRfYWRkcl9k YXRhIGRhdGE7CisgCisgICBnZGJfYXNzZXJ0IChyZWdudW0gPj0gMCAmJiByZWdudW0gPD0gRFJf TEFTVEFERFIgLSBEUl9GSVJTVEFERFIpOworIAorLSAgYW1kNjRfbGludXhfZHJbRFJfRklSU1RB RERSICsgcmVnbnVtXSA9IGFkZHI7CistICBBTExfTFdQUyAobHAsIHB0aWQpCistICAgIGFtZDY0 X2xpbnV4X2RyX3NldCAocHRpZCwgRFJfRklSU1RBRERSICsgcmVnbnVtLCBhZGRyKTsKKysgIGRh dGEucmVnbnVtID0gcmVnbnVtOworKyAgZGF0YS5hZGRyID0gYWRkcjsKKysgIGxpbnV4X25hdF9p dGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoYW1kNjRfbGludXhfZHJfc2V0X2FkZHJfY2FsbGJhY2ss ICZkYXRhKTsKKyB9CisgCistLyogU2V0IGFkZHJlc3MgUkVHTlVNICh6ZXJvIGJhc2VkKSB0byB6 ZXJvIGluIGFsbCBMV1BzIG9mIExXUF9MSVNULiAgKi8KKysvKiBTZXQgYWRkcmVzcyBSRUdOVU0g KHplcm8gYmFzZWQpIHRvIHplcm8gaW4gYWxsIExXUHMgb2YgQ1VSUkVOVF9JTkZFUklPUi4KKysg ICAqLworIAorIHN0YXRpYyB2b2lkCisgYW1kNjRfbGludXhfZHJfcmVzZXRfYWRkciAoaW50IHJl Z251bSkKK0BAIC0zNTQsMzcgKzQwMiw1NCBAQCBhbWQ2NF9saW51eF9kcl9yZXNldF9hZGRyIChp bnQgcmVnbnVtKQorIHN0YXRpYyB1bnNpZ25lZCBsb25nCisgYW1kNjRfbGludXhfZHJfZ2V0X3N0 YXR1cyAodm9pZCkKKyB7CistICByZXR1cm4gYW1kNjRfbGludXhfZHJfZ2V0IChpbmZlcmlvcl9w dGlkLCBEUl9TVEFUVVMpOworKyAgaW50IHRpZDsKKysKKysgIHRpZCA9IFRJREdFVCAoaW5mZXJp b3JfcHRpZCk7CisrICBpZiAodGlkID09IDApCisrICAgIHRpZCA9IFBJREdFVCAoaW5mZXJpb3Jf cHRpZCk7CisrCisrICByZXR1cm4gYW1kNjRfbGludXhfZHJfZ2V0ICh0aWQsIERSX1NUQVRVUyk7 CisgfQorIAorLS8qIFVuc2V0IE1BU0sgYml0cyBpbiBEUl9TVEFUVVMgaW4gYWxsIExXUHMgb2Yg TFdQX0xJU1QuICAqLworKy8qIEhlbHBlciBmb3IgYW1kNjRfbGludXhfZHJfdW5zZXRfc3RhdHVz LiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorLWFtZDY0X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5z aWduZWQgbG9uZyBtYXNrKQorK2FtZDY0X2xpbnV4X2RyX3Vuc2V0X3N0YXR1c19jYWxsYmFjayAo aW50IHRpZCwgdm9pZCAqbWFza192b2lkcCkKKyB7CistICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwor LSAgcHRpZF90IHB0aWQ7CistCistICBBTExfTFdQUyAobHAsIHB0aWQpCistICAgIHsKKy0gICAg ICB1bnNpZ25lZCBsb25nIHZhbHVlOworKyAgdW5zaWduZWQgbG9uZyBtYXNrID0gKih1bnNpZ25l ZCBsb25nICopIG1hc2tfdm9pZHA7CisrICB1bnNpZ25lZCBsb25nIHZhbHVlOworICAgICAgIAor LSAgICAgIHZhbHVlID0gYW1kNjRfbGludXhfZHJfZ2V0IChwdGlkLCBEUl9TVEFUVVMpOworLSAg ICAgIHZhbHVlICY9IH5tYXNrOworLSAgICAgIGFtZDY0X2xpbnV4X2RyX3NldCAocHRpZCwgRFJf U1RBVFVTLCB2YWx1ZSk7CistICAgIH0KKysgIHZhbHVlID0gYW1kNjRfbGludXhfZHJfZ2V0ICh0 aWQsIERSX1NUQVRVUyk7CisrICB2YWx1ZSAmPSB+bWFzazsKKysgIGFtZDY0X2xpbnV4X2RyX3Nl dCAodGlkLCBEUl9TVEFUVVMsIHZhbHVlKTsKKyB9CisgCisrLyogVW5zZXQgTUFTSyBiaXRzIGlu IERSX1NUQVRVUyBpbiBhbGwgTFdQcyBvZiBDVVJSRU5UX0lORkVSSU9SLiAgKi8KICsKLSsgIGFt ZDY0X2xpbnV4X2RyX3NldCAoaW5mZXJpb3JfcHRpZCwgRFJfQ09OVFJPTCwgMCk7Ci0rICBhbWQ2 NF9saW51eF9kcl91bnNldF9zdGF0dXMgKH4wVUwpOwotKyAgZm9yIChyZWdudW0gPSBEUl9GSVJT VEFERFI7IHJlZ251bSA8PSBEUl9MQVNUQUREUjsgcmVnbnVtKyspCi0rICAgIGFtZDY0X2xpbnV4 X2RyX3NldCAoaW5mZXJpb3JfcHRpZCwgcmVnbnVtLCAwKTsKKytzdGF0aWMgdm9pZAorK2FtZDY0 X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQorK3sKKysgIGxpbnV4 X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoYW1kNjRfbGludXhfZHJfdW5zZXRfc3RhdHVz X2NhbGxiYWNrLAorKwkJCQkgICAgICZtYXNrKTsKICt9CiAgCiAgc3RhdGljIHZvaWQKICBhbWQ2 NF9saW51eF9uZXdfdGhyZWFkIChwdGlkX3QgcHRpZCkKLUBAIC04MDAsNiArODE0LDcgQEAgX2lu aXRpYWxpemVfYW1kNjRfbGludXhfbmF0ICh2b2lkKQotICAgaTM4Nl9kcl9sb3cucmVzZXRfYWRk ciA9IGFtZDY0X2xpbnV4X2RyX3Jlc2V0X2FkZHI7Ci0gICBpMzg2X2RyX2xvdy5nZXRfc3RhdHVz ID0gYW1kNjRfbGludXhfZHJfZ2V0X3N0YXR1czsKLSAgIGkzODZfZHJfbG93LnVuc2V0X3N0YXR1 cyA9IGFtZDY0X2xpbnV4X2RyX3Vuc2V0X3N0YXR1czsKLSsgIGkzODZfZHJfbG93LmRldGFjaCA9 IGFtZDY0X2xpbnV4X2RyX2RldGFjaDsKLSAgIGkzODZfc2V0X2RlYnVnX3JlZ2lzdGVyX2xlbmd0 aCAoOCk7Ci0gCi0gICAvKiBPdmVycmlkZSB0aGUgR05VL0xpbnV4IGluZmVyaW9yIHN0YXJ0dXAg aG9vay4gICovCisgeworLSAgaW50IGk7CisrICBzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21p cnJvciA9IGkzODZfZHJfbWlycm9yX2dldCAoKTsKKysgIGludCBpLCB0aWQ7CisrCisrICAvKiBW ZXJpZnkgRFJfTUlSUk9SIGlzIHZhbGlkLiAgKi8KKysgIGdkYl9hc3NlcnQgKFBJREdFVCAocHRp ZCkgPT0gUElER0VUIChpbmZlcmlvcl9wdGlkKSk7CisrCisrICB0aWQgPSBUSURHRVQgKHB0aWQp OworKyAgaWYgKHRpZCA9PSAwKQorKyAgICB0aWQgPSBQSURHRVQgKHB0aWQpOworIAorLSAgZm9y IChpID0gRFJfRklSU1RBRERSOyBpIDw9IERSX0xBU1RBRERSOyBpKyspCistICAgIGFtZDY0X2xp bnV4X2RyX3NldCAocHRpZCwgaSwgYW1kNjRfbGludXhfZHJbaV0pOworKyAgZm9yIChpID0gMDsg aSA8IERSX0xBU1RBRERSIC0gRFJfRklSU1RBRERSOyBpKyspCisrICAgIGFtZDY0X2xpbnV4X2Ry X3NldCAodGlkLCBEUl9GSVJTVEFERFIgKyBpLCBkcl9taXJyb3ItPmFkZHJbaV0pOworIAorLSAg YW1kNjRfbGludXhfZHJfc2V0IChwdGlkLCBEUl9DT05UUk9MLCBhbWQ2NF9saW51eF9kcltEUl9D T05UUk9MXSk7CisrICBhbWQ2NF9saW51eF9kcl9zZXQgKHRpZCwgRFJfQ09OVFJPTCwgZHJfbWly cm9yLT5jb250cm9sKTsKKyB9CisgDAorIAogZGlmZiAtLWdpdCBhL2dkYi9ibG9jay5jIGIvZ2Ri L2Jsb2NrLmMKLWluZGV4IDQ4YWMyMWIuLmZmY2M5N2YgMTAwNjQ0CitpbmRleCBmOTMyZDQxLi42 ZTJjZDg4IDEwMDY0NAogLS0tIGEvZ2RiL2Jsb2NrLmMKICsrKyBiL2dkYi9ibG9jay5jCiBAQCAt MzIxLDMgKzMyMSwyMSBAQCBhbGxvY2F0ZV9ibG9jayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2sp CkBAIC0xMTQsMjYgKzMwMywxOCBAQCBpbmRleCA3ZWVkYjZjLi5hNTE3ZTgwIDEwMDY0NAogKwog ICNlbmRpZiAvKiBCTE9DS19IICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2Jsb2NrZnJhbWUuYyBiL2dk Yi9ibG9ja2ZyYW1lLmMKLWluZGV4IDAzNDhiZjQuLmYwMWQwZWUgMTAwNjQ0CitpbmRleCAzNjZi ZWRkLi45N2Y0MThhIDEwMDY0NAogLS0tIGEvZ2RiL2Jsb2NrZnJhbWUuYwogKysrIGIvZ2RiL2Js b2NrZnJhbWUuYwotQEAgLTM4LDYgKzM4LDcgQEAKLSAjaW5jbHVkZSAiYmxvY2suaCIKLSAjaW5j bHVkZSAiaW5saW5lLWZyYW1lLmgiCi0gI2luY2x1ZGUgInBzeW10YWIuaCIKLSsjaW5jbHVkZSAi ZWxmLWJmZC5oIgotIAotIC8qIFJldHVybiB0aGUgaW5uZXJtb3N0IGxleGljYWwgYmxvY2sgaW4g ZXhlY3V0aW9uCi0gICAgaW4gYSBzcGVjaWZpZWQgc3RhY2sgZnJhbWUuICBUaGUgZnJhbWUgYWRk cmVzcyBpcyBhc3N1bWVkIHZhbGlkLgotQEAgLTE1OSw2ICsxNjAsNyBAQCBzdGF0aWMgQ09SRV9B RERSIGNhY2hlX3BjX2Z1bmN0aW9uX2xvdyA9IDA7CitAQCAtMTYwLDYgKzE2MCw3IEBAIHN0YXRp YyBDT1JFX0FERFIgY2FjaGVfcGNfZnVuY3Rpb25fbG93ID0gMDsKICBzdGF0aWMgQ09SRV9BRERS IGNhY2hlX3BjX2Z1bmN0aW9uX2hpZ2ggPSAwOwogIHN0YXRpYyBjaGFyICpjYWNoZV9wY19mdW5j dGlvbl9uYW1lID0gMDsKICBzdGF0aWMgc3RydWN0IG9ial9zZWN0aW9uICpjYWNoZV9wY19mdW5j dGlvbl9zZWN0aW9uID0gTlVMTDsKICtzdGF0aWMgaW50IGNhY2hlX3BjX2Z1bmN0aW9uX2lzX2du dV9pZnVuYyA9IDA7CiAgCi0gLyogQ2xlYXIgY2FjaGUsIGUuZy4gd2hlbiBzeW1ib2wgdGFibGUg aXMgZGlzY2FyZGVkLiAqLworIC8qIENsZWFyIGNhY2hlLCBlLmcuIHdoZW4gc3ltYm9sIHRhYmxl IGlzIGRpc2NhcmRlZC4gICovCiAgCi1AQCAtMTY5LDYgKzE3MSw3IEBAIGNsZWFyX3BjX2Z1bmN0 aW9uX2NhY2hlICh2b2lkKQorQEAgLTE3MCw2ICsxNzEsNyBAQCBjbGVhcl9wY19mdW5jdGlvbl9j YWNoZSAodm9pZCkKICAgIGNhY2hlX3BjX2Z1bmN0aW9uX2hpZ2ggPSAwOwogICAgY2FjaGVfcGNf ZnVuY3Rpb25fbmFtZSA9IChjaGFyICopIDA7CiAgICBjYWNoZV9wY19mdW5jdGlvbl9zZWN0aW9u ID0gTlVMTDsKQEAgLTE0MSw3ICszMjIsNyBAQCBpbmRleCAwMzQ4YmY0Li5mMDFkMGVlIDEwMDY0 NAogIH0KICAKICAvKiBGaW5kcyB0aGUgImZ1bmN0aW9uIiAodGV4dCBzeW1ib2wpIHRoYXQgaXMg c21hbGxlciB0aGFuIFBDIGJ1dAotQEAgLTE4NCw3ICsxODcsNyBAQCBjbGVhcl9wY19mdW5jdGlv bl9jYWNoZSAodm9pZCkKK0BAIC0xODUsNyArMTg3LDcgQEAgY2xlYXJfcGNfZnVuY3Rpb25fY2Fj aGUgKHZvaWQpCiAgCiAgLyogQmFja3dhcmQgY29tcGF0aWJpbGl0eSwgbm8gc2VjdGlvbiBhcmd1 bWVudC4gICovCiAgCkBAIC0xNTAsNyArMzMxLDcgQEAgaW5kZXggMDM0OGJmNC4uZjAxZDBlZSAx MDA2NDQKICBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKENPUkVfQUREUiBwYywgY2hhciAqKm5h bWUsIENPUkVfQUREUiAqYWRkcmVzcywKICAJCQkgIENPUkVfQUREUiAqZW5kYWRkcikKICB7Ci1A QCAtMjM2LDYgKzIzOSw3IEBAIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAoQ09SRV9BRERSIHBj LCBjaGFyICoqbmFtZSwgQ09SRV9BRERSICphZGRyZXNzLAorQEAgLTIzNyw2ICsyMzksNyBAQCBm aW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKENPUkVfQUREUiBwYywgY2hhciAqKm5hbWUsIENPUkVf QUREUiAqYWRkcmVzcywKICAJICBjYWNoZV9wY19mdW5jdGlvbl9oaWdoID0gQkxPQ0tfRU5EIChT WU1CT0xfQkxPQ0tfVkFMVUUgKGYpKTsKICAJICBjYWNoZV9wY19mdW5jdGlvbl9uYW1lID0gU1lN Qk9MX0xJTktBR0VfTkFNRSAoZik7CiAgCSAgY2FjaGVfcGNfZnVuY3Rpb25fc2VjdGlvbiA9IHNl Y3Rpb247CkBAIC0xNTgsNyArMzM5LDcgQEAgaW5kZXggMDM0OGJmNC4uZjAxZDBlZSAxMDA2NDQK ICAJICBnb3RvIHJldHVybl9jYWNoZWRfdmFsdWU7CiAgCX0KICAgICAgfQotQEAgLTI1OCwxMiAr MjYyLDEzIEBAIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAoQ09SRV9BRERSIHBjLCBjaGFyICoq bmFtZSwgQ09SRV9BRERSICphZGRyZXNzLAorQEAgLTI1OSwxMiArMjYyLDEzIEBAIGZpbmRfcGNf cGFydGlhbF9mdW5jdGlvbiAoQ09SRV9BRERSIHBjLCBjaGFyICoqbmFtZSwgQ09SRV9BRERSICph ZGRyZXNzLAogIAkqYWRkcmVzcyA9IDA7CiAgICAgICAgaWYgKGVuZGFkZHIgIT0gTlVMTCkKICAJ KmVuZGFkZHIgPSAwOwpAQCAtMTczLDcgKzM1NCw3IEBAIGluZGV4IDAzNDhiZjQuLmYwMWQwZWUg MTAwNjQ0CiAgCiAgICAvKiBJZiB0aGUgbWluaW1hbCBzeW1ib2wgaGFzIGEgc2l6ZSwgdXNlIGl0 IGZvciB0aGUgY2FjaGUuCiAgICAgICBPdGhlcndpc2UgdXNlIHRoZSBsZXNzZXIgb2YgdGhlIG5l eHQgbWluaW1hbCBzeW1ib2wgaW4gdGhlIHNhbWUKLUBAIC0zMjMsNyArMzI4LDggQEAgZmluZF9w Y19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLCBDT1JFX0FERFIg KmFkZHJlc3MsCitAQCAtMzI0LDcgKzMyOCw4IEBAIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAo Q09SRV9BRERSIHBjLCBjaGFyICoqbmFtZSwgQ09SRV9BRERSICphZGRyZXNzLAogIAkqZW5kYWRk ciA9IGNhY2hlX3BjX2Z1bmN0aW9uX2hpZ2g7CiAgICAgIH0KICAKQEAgLTE4Miw5ICszNjMsOSBA QCBpbmRleCAwMzQ4YmY0Li5mMDFkMGVlIDEwMDY0NAogKwkJCQkJOiBGSU5EX1BDX1BBUlRJQUxf RlVOQ1RJT05fTk9STUFMOwogIH0KICAKLSAvKiBSZXR1cm4gdGhlIGlubmVybW9zdCBzdGFjayBm cmFtZSBleGVjdXRpbmcgaW5zaWRlIG9mIEJMT0NLLAorIC8qIFJldHVybiB0aGUgaW5uZXJtb3N0 IHN0YWNrIGZyYW1lIGV4ZWN1dGluZyBpbnNpZGUgb2YgQkxPQ0ssIG9yIE5VTEwKIGRpZmYgLS1n aXQgYS9nZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwotaW5kZXggNmI1NTMxMy4u MzA2MjZhNiAxMDA2NDQKK2luZGV4IDgwOWViNTMuLjhmOTJjNGUgMTAwNjQ0CiAtLS0gYS9nZGIv YnJlYWtwb2ludC5jCiArKysgYi9nZGIvYnJlYWtwb2ludC5jCiBAQCAtNjIsNiArNjIsNyBAQApA QCAtMTk1LDI3ICszNzYsMTcgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKICAKICAv KiByZWFkbGluZSBpbmNsdWRlIGZpbGVzICovCiAgI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5l LmgiCi1AQCAtOTIsNiArOTMsOSBAQCBzdGF0aWMgdm9pZCBtYXBfYnJlYWtwb2ludF9udW1iZXJz IChjaGFyICosIHZvaWQgKCopIChzdHJ1Y3QgYnJlYWtwb2ludCAqLAotIAotIHN0YXRpYyB2b2lk IGlnbm9yZV9jb21tYW5kIChjaGFyICosIGludCk7Ci0gCi0rc3RhdGljIHZvaWQgdXBkYXRlX2Jy ZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKLSsJCQkJCSBzdHJ1Y3Qg c3ltdGFic19hbmRfbGluZXMgc2Fscyk7Ci0rCi0gc3RhdGljIGludCBicmVha3BvaW50X3JlX3Nl dF9vbmUgKHZvaWQgKik7Ci0gCi0gc3RhdGljIHZvaWQgY2xlYXJfY29tbWFuZCAoY2hhciAqLCBp bnQpOwotQEAgLTEwNCw2ICsxMDgsOSBAQCBzdGF0aWMgdm9pZCBicmVha19jb21tYW5kXzEgKGNo YXIgKiwgaW50LCBpbnQpOworQEAgLTEwNCw2ICsxMDUsOSBAQCBzdGF0aWMgdm9pZCBicmVha19j b21tYW5kXzEgKGNoYXIgKiwgaW50LCBpbnQpOwogIAogIHN0YXRpYyB2b2lkIG1lbnRpb24gKHN0 cnVjdCBicmVha3BvaW50ICopOwogIAogK3N0YXRpYyBzdHJ1Y3QgYnBfbG9jYXRpb24gKmFkZF9s b2NhdGlvbl90b19icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKICsJCQkJCSAgICAg Y29uc3Qgc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsKTsKICsKLSAvKiBUaGlzIGZ1bmN0aW9u IGlzIHVzZWQgaW4gZ2RidGsgc291cmNlcyBhbmQgdGh1cyBjYW4gbm90IGJlIG1hZGUgc3RhdGlj LiAgKi8KKyAvKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gZ2RidGsgc291cmNlcyBhbmQgdGh1 cyBjYW4gbm90IGJlIG1hZGUKKyAgICBzdGF0aWMuICAqLwogIHN0cnVjdCBicmVha3BvaW50ICpz ZXRfcmF3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotIAkJCQkJICAgICAg c3RydWN0IHN5bXRhYl9hbmRfbGluZSwKLUBAIC0yMTksNiArMjI2LDEwIEBAIHN0YXRpYyB2b2lk IGRpc2FibGVfdHJhY2VfY29tbWFuZCAoY2hhciAqLCBpbnQpOworQEAgLTIyMCw2ICsyMjQsMTAg QEAgc3RhdGljIHZvaWQgZGlzYWJsZV90cmFjZV9jb21tYW5kIChjaGFyICosIGludCk7CiAgCiAg c3RhdGljIHZvaWQgdHJhY2VfcGFzc19jb21tYW5kIChjaGFyICosIGludCk7CiAgCkBAIC0yMjYs NyArMzk3LDcgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKICAvKiBBc3N1bWluZyB3 ZSdyZSBjcmVhdGluZyBhIHN0YXRpYyB0cmFjZXBvaW50LCBkb2VzIFMgbG9vayBsaWtlIGEKICAg ICBzdGF0aWMgdHJhY2Vwb2ludCBtYXJrZXIgc3BlYyAoIi1tIE1BUktFUl9JRCIpPyAgKi8KICAj ZGVmaW5lIGlzX21hcmtlcl9zcGVjKHMpCQkJCQkJXAotQEAgLTEyNDEsNiArMTI1MiwyMiBAQCB3 YXRjaHBvaW50X2luX3RocmVhZF9zY29wZSAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCitAQCAtMTI3 MCw2ICsxMjc4LDIyIEBAIHdhdGNocG9pbnRfaW5fdGhyZWFkX3Njb3BlIChzdHJ1Y3QgYnJlYWtw b2ludCAqYikKICAJICAgICAgJiYgIWlzX2V4ZWN1dGluZyAoaW5mZXJpb3JfcHRpZCkpKTsKICB9 CiAgCkBAIC0yNDksNyArNDIwLDcgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKICAv KiBBc3N1bWluZyB0aGF0IEIgaXMgYSB3YXRjaHBvaW50OgogICAgIC0gUmVwYXJzZSB3YXRjaHBv aW50IGV4cHJlc3Npb24sIGlmIFJFUEFSU0UgaXMgbm9uLXplcm8KICAgICAtIEV2YWx1YXRlIGV4 cHJlc3Npb24gYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gQi0+dmFsCi1AQCAtMTI5Niw2ICsxMzIz LDggQEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLCBpbnQgcmVwYXJz ZSkKK0BAIC0xMzI5LDEyICsxMzUzLDE3IEBAIHVwZGF0ZV93YXRjaHBvaW50IChzdHJ1Y3QgYnJl YWtwb2ludCAqYiwgaW50IHJlcGFyc2UpCiAgICBzdHJ1Y3QgZnJhbWVfaWQgc2F2ZWRfZnJhbWVf aWQ7CiAgICBpbnQgZnJhbWVfc2F2ZWQ7CiAgCkBAIC0yNTgsNyArNDI5LDE2IEBAIGluZGV4IDZi NTUzMTMuLjMwNjI2YTYgMTAwNjQ0CiAgICAvKiBJZiB0aGlzIGlzIGEgbG9jYWwgd2F0Y2hwb2lu dCwgd2Ugb25seSB3YW50IHRvIGNoZWNrIGlmIHRoZQogICAgICAgd2F0Y2hwb2ludCBmcmFtZSBp cyBpbiBzY29wZSBpZiB0aGUgY3VycmVudCB0aHJlYWQgaXMgdGhlIHRocmVhZAogICAgICAgdGhh dCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHdhdGNocG9pbnQuICAqLwotQEAgLTE1MDAsMTMgKzE1 MjksNyBAQCB1cGRhdGVfd2F0Y2hwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsIGludCByZXBh cnNlKQorICAgaWYgKCF3YXRjaHBvaW50X2luX3RocmVhZF9zY29wZSAoYikpCisgICAgIHJldHVy bjsKKyAKKysgIGlmIChiLT5wc3BhY2UgIT0gY3VycmVudF9wcm9ncmFtX3NwYWNlKQorKyAgICBy ZXR1cm47CisrCisgICAvKiBXZSBkb24ndCBmcmVlIGxvY2F0aW9ucy4gIFRoZXkgYXJlIHN0b3Jl ZCBpbiBicF9sb2NhdGlvbiBhcnJheQorICAgICAgYW5kIHVwZGF0ZV9nbG9iYWxfbG9jYXRpb25z IHdpbGwgZXZlbnR1YWxseSBkZWxldGUgdGhlbSBhbmQKKyAgICAgIHJlbW92ZSBicmVha3BvaW50 cyBpZiBuZWVkZWQuICAqLworQEAgLTE1MzQsMTMgKzE1NjMsNyBAQCB1cGRhdGVfd2F0Y2hwb2lu dCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsIGludCByZXBhcnNlKQogIFdhdGNocG9pbnQgJWQgZGVs ZXRlZCBiZWNhdXNlIHRoZSBwcm9ncmFtIGhhcyBsZWZ0IHRoZSBibG9ja1xuXAogIGluIHdoaWNo IGl0cyBleHByZXNzaW9uIGlzIHZhbGlkLlxuIiksCiAgCQkgICAgICAgYi0+bnVtYmVyKTsKQEAg LTI3MywzMCArNDUzLDY3IEBAIGluZGV4IDZiNTUzMTMuLjMwNjI2YTYgMTAwNjQ0CiAgICAgIH0K ICAKICAgIC8qIFJlc3RvcmUgdGhlIHNlbGVjdGVkIGZyYW1lLiAgKi8KLUBAIC0yMzU0LDYgKzIz NzcsOCBAQCBkZXRhY2hfYnJlYWtwb2ludHMgKGludCBwaWQpCi0gICAvKiBEZXRhY2ggc2luZ2xl LXN0ZXAgYnJlYWtwb2ludHMgYXMgd2VsbC4gICovCi0gICBkZXRhY2hfc2luZ2xlX3N0ZXBfYnJl YWtwb2ludHMgKCk7CitAQCAtMTkxNiw2ICsxOTM5LDcgQEAgaW5zZXJ0X2JyZWFrcG9pbnRfbG9j YXRpb25zICh2b2lkKQorICAgaW50IHZhbCA9IDA7CisgICBpbnQgZGlzYWJsZWRfYnJlYWtzID0g MDsKKyAgIGludCBod19icmVha3BvaW50X2Vycm9yID0gMDsKKysgIHN0cnVjdCBwcm9ncmFtX3Nw YWNlICpzYXZlZF9jdXJyZW50X3Byb2dyYW1fc3BhY2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7 CisgCisgICBzdHJ1Y3QgdWlfZmlsZSAqdG1wX2Vycm9yX3N0cmVhbSA9IG1lbV9maWxlb3BlbiAo KTsKKyAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwcyA9IG1ha2VfY2xlYW51cF91aV9maWxlX2Rl bGV0ZSAodG1wX2Vycm9yX3N0cmVhbSk7CitAQCAtMTk0Myw5ICsxOTY3LDEzIEBAIGluc2VydF9i cmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKKyAgICAgICAvKiBGb3IgdGFyZ2V0cyB0aGF0IHN1 cHBvcnQgZ2xvYmFsIGJyZWFrcG9pbnRzLCB0aGVyZSdzIG5vIG5lZWQKKyAJIHRvIHNlbGVjdCBh biBpbmZlcmlvciB0byBpbnNlcnQgYnJlYWtwb2ludCB0by4gIEluIGZhY3QsIGV2ZW4KKyAJIGlm IHdlIGFyZW4ndCBhdHRhY2hlZCB0byBhbnkgcHJvY2VzcyB5ZXQsIHdlIHNob3VsZCBzdGlsbAor LQkgaW5zZXJ0IGJyZWFrcG9pbnRzLiAgKi8KKysJIGluc2VydCBicmVha3BvaW50cy4KKysKKysJ IEFsc28gaW5zZXJ0aW5nIGJyZWFrcG9pbnRzIGludG8gaW5hcHByb3ByaWF0ZSBpbmZlcmlvciBt dXN0IGJlCisrCSBwcmV2ZW50ZWQuICAqLworICAgICAgIGlmICghZ2RiYXJjaF9oYXNfZ2xvYmFs X2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCkKKy0JICAmJiBwdGlkX2VxdWFsIChpbmZlcmlv cl9wdGlkLCBudWxsX3B0aWQpKQorKwkgICYmIChwdGlkX2VxdWFsIChpbmZlcmlvcl9wdGlkLCBu dWxsX3B0aWQpCisrCSAgICAgIHx8IGJsLT5wc3BhY2UgIT0gc2F2ZWRfY3VycmVudF9wcm9ncmFt X3NwYWNlKSkKKyAJY29udGludWU7CiAgCi0rICB2YWwgfD0gdGFyZ2V0X2RldGFjaF93YXRjaHBv aW50cyAoKTsKLSsKLSAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotICAgcmV0dXJuIHZhbDsK LSB9Ci1AQCAtMjQ1NSw5ICsyNDgwLDExIEBAIHJlbW92ZV9icmVha3BvaW50XzEgKHN0cnVjdCBi cF9sb2NhdGlvbiAqYiwgaW5zZXJ0aW9uX3N0YXRlX3QgaXMpCi0gCXJldHVybiB2YWw7Ci0gICAg ICAgYi0+aW5zZXJ0ZWQgPSAoaXMgPT0gbWFya19pbnNlcnRlZCk7Ci0gICAgIH0KLS0gIGVsc2Ug aWYgKGItPmxvY190eXBlID09IGJwX2xvY19oYXJkd2FyZV93YXRjaHBvaW50KQotKyAgLyogYnBf bG9jX2hhcmR3YXJlX3dhdGNocG9pbnQgd2l0aCBtYXJrX2luc2VydGVkIGlzIGJlaW5nIGhhbmRs ZWQgYnkKLSsgICAgIHRhcmdldF9kZXRhY2hfd2F0Y2hwb2ludHMuICAqLwotKyAgZWxzZSBpZiAo Yi0+bG9jX3R5cGUgPT0gYnBfbG9jX2hhcmR3YXJlX3dhdGNocG9pbnQgJiYgaXMgPT0gbWFya191 bmluc2VydGVkKQotICAgICB7Ci0tICAgICAgYi0+aW5zZXJ0ZWQgPSAoaXMgPT0gbWFya19pbnNl cnRlZCk7Ci0rICAgICAgYi0+aW5zZXJ0ZWQgPSAwOwotICAgICAgIHZhbCA9IHRhcmdldF9yZW1v dmVfd2F0Y2hwb2ludCAoYi0+YWRkcmVzcywgYi0+bGVuZ3RoLAotIAkJCQkgICAgICBiLT53YXRj aHBvaW50X3R5cGUsIGItPm93bmVyLT5jb25kX2V4cCk7CisgICAgICAgdmFsID0gaW5zZXJ0X2Jw X2xvY2F0aW9uIChibCwgdG1wX2Vycm9yX3N0cmVhbSwgJmRpc2FibGVkX2JyZWFrcywKK0BAIC0x OTY5LDEzICsxOTk3LDE5IEBAIGluc2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKICAK LUBAIC0zMzQyLDYgKzMzNjksOCBAQCBwcmludF9pdF90eXBpY2FsIChicHN0YXQgYnMpCisgICAg ICAgaWYgKGJwdC0+ZGlzcG9zaXRpb24gPT0gZGlzcF9kZWxfYXRfbmV4dF9zdG9wKQorIAljb250 aW51ZTsKKy0gICAgICAKKysKKyAgICAgICBmb3IgKGxvYyA9IGJwdC0+bG9jOyBsb2M7IGxvYyA9 IGxvYy0+bmV4dCkKKy0JaWYgKCFsb2MtPmluc2VydGVkICYmIHNob3VsZF9iZV9pbnNlcnRlZCAo bG9jKSkKKy0JICB7CistCSAgICBzb21lX2ZhaWxlZCA9IDE7CistCSAgICBicmVhazsKKy0JICB9 CisrCXsKKysJICAvKiBWZXJpZnkgdGhlIGZpcnN0IGxvb3AgYWJvdmUgcmVhbGx5IHRyaWVkIHRv IGluc2VydCB0aGlzIExPQy4gICovCisrCSAgaWYgKCFsb2MtPmluc2VydGVkICYmIHNob3VsZF9i ZV9pbnNlcnRlZCAobG9jKQorKwkgICAgICAmJiAoZ2RiYXJjaF9oYXNfZ2xvYmFsX2JyZWFrcG9p bnRzICh0YXJnZXRfZ2RiYXJjaCkKKysJCSAgfHwgKCFwdGlkX2VxdWFsIChpbmZlcmlvcl9wdGlk LCBudWxsX3B0aWQpCisrCQkgICAgICAmJiBsb2MtPnBzcGFjZSA9PSBzYXZlZF9jdXJyZW50X3By b2dyYW1fc3BhY2UpKSkKKysJICAgIHsKKysJICAgICAgc29tZV9mYWlsZWQgPSAxOworKwkgICAg ICBicmVhazsKKysJICAgIH0KKysJfQorICAgICAgIGlmIChzb21lX2ZhaWxlZCkKKyAJeworIAkg IGZvciAobG9jID0gYnB0LT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQorQEAgLTI1MjUsOCAr MjU1OSw3IEBAIHJlbW92ZV9icmVha3BvaW50XzEgKHN0cnVjdCBicF9sb2NhdGlvbiAqYmwsIGlu c2VydGlvbl9zdGF0ZV90IGlzKQorICAgICB7CisgICAgICAgYmwtPmluc2VydGVkID0gKGlzID09 IG1hcmtfaW5zZXJ0ZWQpOworICAgICAgIHZhbCA9IHRhcmdldF9yZW1vdmVfd2F0Y2hwb2ludCAo YmwtPmFkZHJlc3MsIGJsLT5sZW5ndGgsCistCQkJCSAgICAgIGJsLT53YXRjaHBvaW50X3R5cGUs IAorLQkJCQkgICAgICBibC0+b3duZXItPmNvbmRfZXhwKTsKKysJCQkJICAgICAgYmwtPndhdGNo cG9pbnRfdHlwZSwgYmwtPm93bmVyLT5jb25kX2V4cCk7CisgCisgICAgICAgLyogRmFpbHVyZSB0 byByZW1vdmUgYW55IG9mIHRoZSBoYXJkd2FyZSB3YXRjaHBvaW50cyBjb21lcyBoZXJlLiAgKi8K KyAgICAgICBpZiAoKGlzID09IG1hcmtfdW5pbnNlcnRlZCkgJiYgKGJsLT5pbnNlcnRlZCkpCitA QCAtMzQxOSw2ICszNDUyLDggQEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJzKQogICAgICBj YXNlIGJwX3RyYWNlcG9pbnQ6CiAgICAgIGNhc2UgYnBfZmFzdF90cmFjZXBvaW50OgogICAgICBj YXNlIGJwX2ppdF9ldmVudDoKQEAgLTMwNSw3ICs1MjIsNyBAQCBpbmRleCA2YjU1MzEzLi4zMDYy NmE2IDEwMDY0NAogICAgICBkZWZhdWx0OgogICAgICAgIHJlc3VsdCA9IFBSSU5UX1VOS05PV047 CiAgICAgICAgYnJlYWs7Ci1AQCAtMzU2Miw2ICszNTkxLDggQEAgd2F0Y2hwb2ludF9jaGVjayAo dm9pZCAqcCkKK0BAIC0zNjQwLDYgKzM2NzUsOCBAQCB3YXRjaHBvaW50X2NoZWNrICh2b2lkICpw KQogICAgZ2RiX2Fzc2VydCAoYnMtPmJyZWFrcG9pbnRfYXQgIT0gTlVMTCk7CiAgICBiID0gYnMt PmJyZWFrcG9pbnRfYXQ7CiAgCkBAIC0zMTQsNyArNTMxLDcgQEAgaW5kZXggNmI1NTMxMy4uMzA2 MjZhNiAxMDA2NDQKICAgIC8qIElmIHRoaXMgaXMgYSBsb2NhbCB3YXRjaHBvaW50LCB3ZSBvbmx5 IHdhbnQgdG8gY2hlY2sgaWYgdGhlCiAgICAgICB3YXRjaHBvaW50IGZyYW1lIGlzIGluIHNjb3Bl IGlmIHRoZSBjdXJyZW50IHRocmVhZCBpcyB0aGUgdGhyZWFkCiAgICAgICB0aGF0IHdhcyB1c2Vk IHRvIGNyZWF0ZSB0aGUgd2F0Y2hwb2ludC4gICovCi1AQCAtMzY2OCwxMyArMzY5OSw3IEBAIHdh dGNocG9pbnRfY2hlY2sgKHZvaWQgKnApCitAQCAtMzc0OCwxMyArMzc4NSw3IEBAIHdhdGNocG9p bnRfY2hlY2sgKHZvaWQgKnApCiAgICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiIGRlbGV0ZWQg YmVjYXVzZSB0aGUgcHJvZ3JhbSBoYXMgbGVmdCB0aGUgYmxvY2sgaW5cblwKICB3aGljaCBpdHMg ZXhwcmVzc2lvbiBpcyB2YWxpZC5cbiIpOyAgICAgCiAgCkBAIC0zMjksMjIgKzU0Niw3IEBAIGlu ZGV4IDZiNTUzMTMuLjMwNjI2YTYgMTAwNjQ0CiAgCiAgICAgICAgcmV0dXJuIFdQX0RFTEVURUQ7 CiAgICAgIH0KLUBAIC0zNzQzLDggKzM3NjgsMTIgQEAgYnBzdGF0X2NoZWNrX2xvY2F0aW9uIChj b25zdCBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsLAotIAotIC8qIElmIEJTIHJlZmVycyB0byBhIHdh dGNocG9pbnQsIGRldGVybWluZSBpZiB0aGUgd2F0Y2hlZCB2YWx1ZXMKLSAgICBoYXMgYWN0dWFs bHkgY2hhbmdlZCwgYW5kIHdlIHNob3VsZCBzdG9wLiAgSWYgbm90LCBzZXQgQlMtPnN0b3AKLS0g ICB0byAwLiAgKi8KLS1zdGF0aWMgdm9pZAotKyAgIHRvIDAuCi0rICAgUmV0dXJuIDAgZm9yIHdh dGNocG9pbnRzIHdoaWNoIGNvdWxkIG5vdCBiZSB0aGUgY2F1c2Ugb2YgdGhpcyB0cmFwLgotKyAg IEluIHN1Y2ggY2FzZSBQUklOVF9JVCB3aWxsIGJlIHByaW50X2l0X25vb3AgYW5kIFNUT1Agd2ls bCBiZSAwLgotKyAgIE90aGVyd2lzZSByZXR1cm4gMSBidXQgaW4gc3VjaCBjYXNlIGl0IGlzIG5v dCBndWFyYW50ZWVkIHdoZXRoZXIgdGhpcwotKyAgIGJyZWFrcG9pbnQgZGlkIG9yIGRpZCBub3Qg dHJpZ2dlciB0aGlzIHRyYXAuICAqLwotK3N0YXRpYyBpbnQKLSBicHN0YXRfY2hlY2tfd2F0Y2hw b2ludCAoYnBzdGF0IGJzKQotIHsKLSAgIGNvbnN0IHN0cnVjdCBicF9sb2NhdGlvbiAqYmw7Ci1A QCAtMzg3OCw5ICszOTA3LDcgQEAgYnBzdGF0X2NoZWNrX3dhdGNocG9pbnQgKGJwc3RhdCBicykK K0BAIC0zOTU4LDkgKzM5ODksNyBAQCBicHN0YXRfY2hlY2tfd2F0Y2hwb2ludCAoYnBzdGF0IGJz KQogIAkgICAgY2FzZSAwOgogIAkgICAgICAvKiBFcnJvciBmcm9tIGNhdGNoX2Vycm9ycy4gICov CiAgCSAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiV2F0Y2hwb2ludCAlZCBkZWxldGVkLlxuIiks IGItPm51bWJlcik7CkBAIC0zNTUsMjcgKzU1Nyw3IEBAIGluZGV4IDZiNTUzMTMuLjMwNjI2YTYg MTAwNjQ0CiAgCSAgICAgIC8qIFdlJ3ZlIGFscmVhZHkgcHJpbnRlZCB3aGF0IG5lZWRzIHRvIGJl IHByaW50ZWQuICAqLwogIAkgICAgICBicy0+cHJpbnRfaXQgPSBwcmludF9pdF9kb25lOwogIAkg ICAgICBicmVhazsKLUBAIC0zODk0LDggKzM5MjEsMTAgQEAgYnBzdGF0X2NoZWNrX3dhdGNocG9p bnQgKGJwc3RhdCBicykKLSAJICAgICBhbnl0aGluZyBmb3IgdGhpcyB3YXRjaHBvaW50LiAgKi8K LSAJICBicy0+cHJpbnRfaXQgPSBwcmludF9pdF9ub29wOwotIAkgIGJzLT5zdG9wID0gMDsKLSsJ ICByZXR1cm4gMDsKLSAJfQotICAgICB9Ci0rICByZXR1cm4gMTsKLSB9Ci0gCi0gCi1AQCAtNDAz NSw3ICs0MDY0LDcgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAq YXNwYWNlLAotICAgc3RydWN0IGJwX2xvY2F0aW9uICpibDsKLSAgIHN0cnVjdCBicF9sb2NhdGlv biAqbG9jOwotICAgLyogRmlyc3QgaXRlbSBvZiBhbGxvY2F0ZWQgYnBzdGF0J3MuICAqLwotLSAg YnBzdGF0IGJzX2hlYWQgPSBOVUxMLCAqYnNfbGluayA9ICZic19oZWFkOwotKyAgYnBzdGF0IGJz X2hlYWQgPSBOVUxMLCAqYnNfbGluayA9ICZic19oZWFkLCAqYnNfbGlua19uZXh0OwotICAgLyog UG9pbnRlciB0byB0aGUgbGFzdCB0aGluZyBpbiB0aGUgY2hhaW4gY3VycmVudGx5LiAgKi8KLSAg IGJwc3RhdCBiczsKLSAgIGludCBpeDsKLUBAIC00MDg0LDcgKzQxMTMsNyBAQCBicHN0YXRfc3Rv cF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2UsCitAQCAtNDE2Niw3ICs0MTk1 LDcgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqYXNwYWNlLAog IAkgICAgIHdhdGNocG9pbnQgYXMgdHJpZ2dlcmVkIHNvIHRoYXQgd2Ugd2lsbCBoYW5kbGUgdGhl CiAgCSAgICAgb3V0LW9mLXNjb3BlIGV2ZW50LiAgV2UnbGwgZ2V0IHRvIHRoZSB3YXRjaHBvaW50 IG5leHQKICAJICAgICBpdGVyYXRpb24uICAqLwpAQCAtMzg0LDM2ICs1NjYsNyBAQCBpbmRleCA2 YjU1MzEzLi4zMDYyNmE2IDEwMDY0NAogIAkgICAgYi0+cmVsYXRlZF9icmVha3BvaW50LT53YXRj aHBvaW50X3RyaWdnZXJlZCA9IHdhdGNoX3RyaWdnZXJlZF95ZXM7CiAgCX0KICAgICAgfQotQEAg LTQxMDgsMTIgKzQxMzcsMjYgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRkcmVzc19z cGFjZSAqYXNwYWNlLAotIAotICAgcmVtb3ZlZF9hbnkgPSAwOwotIAotLSAgZm9yIChicyA9IGJz X2hlYWQ7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQpCi0rICBmb3IgKGJzX2xpbmsgPSAmYnNf aGVhZDsgKmJzX2xpbmsgIT0gTlVMTDsgYnNfbGluayA9IGJzX2xpbmtfbmV4dCkKLSAgICAgewot KyAgICAgIGJzID0gKmJzX2xpbms7Ci0rICAgICAgYnNfbGlua19uZXh0ID0gJmJzLT5uZXh0Owot KwotICAgICAgIGlmICghYnMtPnN0b3ApCi0gCWNvbnRpbnVlOwotIAotLSAgICAgIGJwc3RhdF9j aGVja193YXRjaHBvaW50IChicyk7Ci0rICAgICAgaWYgKCFicHN0YXRfY2hlY2tfd2F0Y2hwb2lu dCAoYnMpKQotKwl7Ci0rCSAgLyogRW5zdXJlIGJwc3RhdF9leHBsYWluc19zaWduYWwgc3RheXMg ZmFsc2UgaWYgdGhpcyBCTCBjb3VsZCBub3QgYmUKLSsJICAgICB0aGUgY2F1c2Ugb2YgdGhpcyB0 cmFwLiAgKi8KLSsKLSsJICBnZGJfYXNzZXJ0IChicy0+cHJpbnRfaXQgPT0gcHJpbnRfaXRfbm9v cCk7Ci0rCSAgZ2RiX2Fzc2VydCAoIWJzLT5zdG9wKTsKLSsJICAqYnNfbGluayA9IGJzLT5uZXh0 OwotKwkgIGJzX2xpbmtfbmV4dCA9IGJzX2xpbms7Ci0rCSAgeGZyZWUgKGJzKTsKLSsJICBjb250 aW51ZTsKLSsJfQotICAgICAgIGlmICghYnMtPnN0b3ApCi0gCWNvbnRpbnVlOwotIAotQEAgLTQy MDUsNyArNDI0OCw3IEBAIGhhbmRsZV9qaXRfZXZlbnQgKHZvaWQpCitAQCAtNDI4OCw3ICs0MzE3 LDcgQEAgaGFuZGxlX2ppdF9ldmVudCAodm9pZCkKICAvKiBEZWNpZGUgd2hhdCBpbmZydW4gbmVl ZHMgdG8gZG8gd2l0aCB0aGlzIGJwc3RhdC4gICovCiAgCiAgc3RydWN0IGJwc3RhdF93aGF0CkBA IC00MjIsNyArNTc1LDcgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKICB7CiAgICBz dHJ1Y3QgYnBzdGF0X3doYXQgcmV0dmFsOwogICAgLyogV2UgbmVlZCB0byBkZWZlciBjYWxsaW5n IGBzb2xpYl9hZGQnLCBhcyBhZGRpbmcgbmV3IHN5bWJvbHMKLUBAIC00MjEzLDExICs0MjU2LDEy IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCitAQCAtNDI5NiwxMiArNDMyNSwxMyBAQCBicHN0 YXRfd2hhdCAoYnBzdGF0IGJzKQogICAgICAgYW5kIGhlbmNlIG1heSBjbGVhciB1bnByb2Nlc3Nl ZCBlbnRyaWVzIGluIHRoZSBCUyBjaGFpbi4gICovCiAgICBpbnQgc2hsaWJfZXZlbnQgPSAwOwog ICAgaW50IGppdF9ldmVudCA9IDA7CkBAIC00MzAsMTMgKzU4MywxNCBAQCBpbmRleCA2YjU1MzEz Li4zMDYyNmE2IDEwMDY0NAogIAogICAgcmV0dmFsLm1haW5fYWN0aW9uID0gQlBTVEFUX1dIQVRf S0VFUF9DSEVDS0lORzsKICAgIHJldHZhbC5jYWxsX2R1bW15ID0gU1RPUF9OT05FOworICAgcmV0 dmFsLmlzX2xvbmdqbXAgPSAwOwogIAogLSAgZm9yICg7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5l eHQpCiArICBmb3IgKGJzID0gYnNfaGVhZDsgYnMgIT0gTlVMTDsgYnMgPSBicy0+bmV4dCkKICAg ICAgewogICAgICAgIC8qIEV4dHJhY3QgdGhpcyBCUydzIGFjdGlvbi4gIEFmdGVyIHByb2Nlc3Np bmcgZWFjaCBCUywgd2UgY2hlY2sKICAJIGlmIGl0cyBhY3Rpb24gb3ZlcnJpZGVzIGFsbCB3ZSd2 ZSBzZWVtIHNvIGZhci4gICovCi1AQCAtNDM0Miw2ICs0Mzg2LDIwIEBAIGJwc3RhdF93aGF0IChi cHN0YXQgYnMpCitAQCAtNDQzMSw2ICs0NDYxLDIwIEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMp CiAgCSAgICAgb3V0IGFscmVhZHkuICAqLwogIAkgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywg X19MSU5FX18sCiAgCQkJICBfKCJicHN0YXRfd2hhdDogdHJhY2Vwb2ludCBlbmNvdW50ZXJlZCIp KTsKQEAgLTQ1Nyw3ICs2MTEsNyBAQCBpbmRleCA2YjU1MzEzLi4zMDYyNmE2IDEwMDY0NAogIAlk ZWZhdWx0OgogIAkgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCiAgCQkJICBf KCJicHN0YXRfd2hhdDogdW5oYW5kbGVkIGJwdHlwZSAlZCIpLCAoaW50KSBicHR5cGUpOwotQEAg LTQzNzksNiArNDQzNywyMSBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQorQEAgLTQ0NjgsNiAr NDUxMiwyMSBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQogICAgICAgIGhhbmRsZV9qaXRfZXZl bnQgKCk7CiAgICAgIH0KICAKQEAgLTQ3OSw3ICs2MzMsNyBAQCBpbmRleCA2YjU1MzEzLi4zMDYy NmE2IDEwMDY0NAogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCi1AQCAtNDQ5Nyw2ICs0NTcwLDgg QEAgYnB0eXBlX3N0cmluZyAoZW51bSBicHR5cGUgdHlwZSkKK0BAIC00NTg5LDYgKzQ2NDgsOCBA QCBicHR5cGVfc3RyaW5nIChlbnVtIGJwdHlwZSB0eXBlKQogICAgICB7YnBfZmFzdF90cmFjZXBv aW50LCAiZmFzdCB0cmFjZXBvaW50In0sCiAgICAgIHticF9zdGF0aWNfdHJhY2Vwb2ludCwgInN0 YXRpYyB0cmFjZXBvaW50In0sCiAgICAgIHticF9qaXRfZXZlbnQsICJqaXQgZXZlbnRzIn0sCkBA IC00ODgsNyArNjQyLDcgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKICAgIH07CiAg CiAgICBpZiAoKChpbnQpIHR5cGUgPj0gKHNpemVvZiAoYnB0eXBlcykgLyBzaXplb2YgKGJwdHlw ZXNbMF0pKSkKLUBAIC00NjQzLDYgKzQ3MTgsOCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2Nh dGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCitAQCAtNDczNiw2ICs0Nzk3LDggQEAgcHJpbnRf b25lX2JyZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAogICAgICAgIGNh c2UgYnBfZmFzdF90cmFjZXBvaW50OgogICAgICAgIGNhc2UgYnBfc3RhdGljX3RyYWNlcG9pbnQ6 CiAgICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CkBAIC00OTcsNyArNjUxLDcgQEAgaW5kZXggNmI1 NTMxMy4uMzA2MjZhNiAxMDA2NDQKICAJaWYgKG9wdHMuYWRkcmVzc3ByaW50KQogIAkgIHsKICAJ ICAgIGFubm90YXRlX2ZpZWxkICg0KTsKLUBAIC00OTIzLDcgKzUwMDAsOCBAQCB1c2VyX3NldHRh YmxlX2JyZWFrcG9pbnQgKGNvbnN0IHN0cnVjdCBicmVha3BvaW50ICpiKQorQEAgLTUwMTcsNyAr NTA4MCw4IEBAIHVzZXJfc2V0dGFibGVfYnJlYWtwb2ludCAoY29uc3Qgc3RydWN0IGJyZWFrcG9p bnQgKmIpCiAgCSAgfHwgYi0+dHlwZSA9PSBicF9jYXRjaHBvaW50CiAgCSAgfHwgYi0+dHlwZSA9 PSBicF9oYXJkd2FyZV9icmVha3BvaW50CiAgCSAgfHwgaXNfdHJhY2Vwb2ludCAoYikKQEAgLTUw NSwyNiArNjU5LDI2IEBAIGluZGV4IDZiNTUzMTMuLjMwNjI2YTYgMTAwNjQ0CiArCSAgfHwgaXNf d2F0Y2hwb2ludCAoYikKICsJICB8fCBiLT50eXBlID09IGJwX2dudV9pZnVuY19yZXNvbHZlcik7 CiAgfQotIAkKKyAKICAvKiBQcmludCBpbmZvcm1hdGlvbiBvbiB1c2VyIHNldHRhYmxlIGJyZWFr cG9pbnQgKHdhdGNocG9pbnQsIGV0YykKLUBAIC01Mzg5LDYgKzU0NjcsOCBAQCBhbGxvY2F0ZV9i cF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmJwdCkKLSAgICAgY2FzZSBicF9qaXRfZXZl bnQ6CitAQCAtNTQ5Nyw2ICs1NTYxLDggQEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBi cmVha3BvaW50ICpicHQpCiAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CiAgICAgIGNhc2Ug YnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXI6CisgICAgIGNhc2UgYnBfZXhjZXB0aW9uX21hc3RlcjoK ICsgICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6CiArICAgIGNhc2UgYnBfZ251X2lmdW5j X3Jlc29sdmVyX3JldHVybjoKICAgICAgICBsb2MtPmxvY190eXBlID0gYnBfbG9jX3NvZnR3YXJl X2JyZWFrcG9pbnQ7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgYnBfaGFyZHdhcmVfYnJlYWtw b2ludDoKLUBAIC01NDc3LDYgKzU1NTcsNyBAQCBzZXRfcmF3X2JyZWFrcG9pbnRfd2l0aG91dF9s b2NhdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtNTU4Niw2ICs1NjUyLDcgQEAg c2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLAogICAgYi0+b3BzID0gTlVMTDsKICAgIGItPmNvbmRpdGlvbl9ub3RfcGFyc2VkID0gMDsK ICAgIGItPnB5X2JwX29iamVjdCA9IE5VTEw7CiArICBiLT5yZWxhdGVkX2JyZWFrcG9pbnQgPSBi OwogIAotICAgLyogQWRkIHRoaXMgYnJlYWtwb2ludCB0byB0aGUgZW5kIG9mIHRoZSBjaGFpbgot ICAgICAgc28gdGhhdCBhIGxpc3Qgb2YgYnJlYWtwb2ludHMgd2lsbCBjb21lIG91dCBpbiBvcmRl cgotQEAgLTU0OTYsNyArNTU3Nyw3IEBAIHNldF9yYXdfYnJlYWtwb2ludF93aXRob3V0X2xvY2F0 aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgIC8qIEFkZCB0aGlzIGJyZWFrcG9pbnQg dG8gdGhlIGVuZCBvZiB0aGUgY2hhaW4gc28gdGhhdCBhIGxpc3Qgb2YKKyAgICAgIGJyZWFrcG9p bnRzIHdpbGwgY29tZSBvdXQgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyBudW1iZXJzLiAgKi8KK0BA IC01NjA0LDcgKzU2NzEsNyBAQCBzZXRfcmF3X2JyZWFrcG9pbnRfd2l0aG91dF9sb2NhdGlvbiAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgCiAgLyogSW5pdGlhbGl6ZSBsb2MtPmZ1bmN0aW9u X25hbWUuICAqLwogIHN0YXRpYyB2b2lkCkBAIC01MzMsNyArNjg3LDcgQEAgaW5kZXggNmI1NTMx My4uMzA2MjZhNiAxMDA2NDQKICB7CiAgICBnZGJfYXNzZXJ0IChsb2MtPm93bmVyICE9IE5VTEwp OwogIAotQEAgLTU1MDQsOCArNTU4NSwyOSBAQCBzZXRfYnJlYWtwb2ludF9sb2NhdGlvbl9mdW5j dGlvbiAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2MpCitAQCAtNTYxMiw4ICs1Njc5LDI5IEBAIHNl dF9icmVha3BvaW50X2xvY2F0aW9uX2Z1bmN0aW9uIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYykK ICAgICAgICB8fCBsb2MtPm93bmVyLT50eXBlID09IGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQKICAg ICAgICB8fCBpc190cmFjZXBvaW50IChsb2MtPm93bmVyKSkKICAgICAgewpAQCAtNTY1LDcgKzcx OSw3IEBAIGluZGV4IDZiNTUzMTMuLjMwNjI2YTYgMTAwNjQ0CiAgICAgICAgaWYgKGxvYy0+ZnVu Y3Rpb25fbmFtZSkKICAJbG9jLT5mdW5jdGlvbl9uYW1lID0geHN0cmR1cCAobG9jLT5mdW5jdGlv bl9uYW1lKTsKICAgICAgfQotQEAgLTU1NzgsNyArNTY4MCw4IEBAIHNldF9yYXdfYnJlYWtwb2lu dCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtNTY4OCw3ICs1Nzc2LDggQEAgc2V0X3Jh d19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgIGItPmxvYy0+c2VjdGlv biA9IHNhbC5zZWN0aW9uOwogICAgYi0+bGluZV9udW1iZXIgPSBzYWwubGluZTsKICAKQEAgLTU3 NSw3ICs3MjksNyBAQCBpbmRleCA2YjU1MzEzLi4zMDYyNmE2IDEwMDY0NAogIAogICAgYnJlYWtw b2ludHNfY2hhbmdlZCAoKTsKICAKLUBAIC02NjUyLDcgKzY3NTUsNyBAQCBjbG9uZV9tb21lbnRh cnlfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKm9yaWcpCitAQCAtNjc3NSw3ICs2ODY0 LDcgQEAgY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpvcmln KQogIAogICAgY29weSA9IHNldF9yYXdfYnJlYWtwb2ludF93aXRob3V0X2xvY2F0aW9uIChvcmln LT5nZGJhcmNoLCBvcmlnLT50eXBlKTsKICAgIGNvcHktPmxvYyA9IGFsbG9jYXRlX2JwX2xvY2F0 aW9uIChjb3B5KTsKQEAgLTU4NCw3ICs3MzgsNyBAQCBpbmRleCA2YjU1MzEzLi4zMDYyNmE2IDEw MDY0NAogIAogICAgY29weS0+bG9jLT5nZGJhcmNoID0gb3JpZy0+bG9jLT5nZGJhcmNoOwogICAg Y29weS0+bG9jLT5yZXF1ZXN0ZWRfYWRkcmVzcyA9IG9yaWctPmxvYy0+cmVxdWVzdGVkX2FkZHJl c3M7Ci1AQCAtNjc1MSw2ICs2ODU0LDcgQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIp CitAQCAtNjg3NCw2ICs2OTYzLDcgQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCiAg CWRvX2NsZWFudXBzICh1aV9vdXRfY2hhaW4pOwogIAlicmVhazsKICAgICAgICBjYXNlIGJwX2Jy ZWFrcG9pbnQ6CkBAIC01OTIsNyArNzQ2LDcgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2 NDQKICAJaWYgKHVpX291dF9pc19taV9saWtlX3AgKHVpb3V0KSkKICAJICB7CiAgCSAgICBzYXlf d2hlcmUgPSAwOwotQEAgLTY3NjEsNiArNjg2NSw4IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3Bv aW50ICpiKQorQEAgLTY4ODQsNiArNjk3NCw4IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50 ICpiKQogIAllbHNlCiAgCSAgcHJpbnRmX2ZpbHRlcmVkIChfKCJCcmVha3BvaW50IikpOwogIAlw cmludGZfZmlsdGVyZWQgKF8oIiAlZCIpLCBiLT5udW1iZXIpOwpAQCAtNjAxLDE1ICs3NTUsMTUg QEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKICAJc2F5X3doZXJlID0gMTsKICAJYnJl YWs7CiAgICAgICAgY2FzZSBicF9oYXJkd2FyZV9icmVha3BvaW50OgotQEAgLTY4MTcsNiArNjky Myw3IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQotICAgICAgIGNhc2UgYnBfaml0 X2V2ZW50OgorQEAgLTY5NDMsNiArNzAzNSw3IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50 ICpiKQogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CiAgICAgICAgY2FzZSBicF9zdGRf dGVybWluYXRlX21hc3RlcjoKKyAgICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6CiArICAg ICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgogIAlicmVhazsKICAgICAgICB9 CiAgCi1AQCAtNjg3Nyw3ICs2OTg0LDggQEAgYWRkX2xvY2F0aW9uX3RvX2JyZWFrcG9pbnQgKHN0 cnVjdCBicmVha3BvaW50ICpiLAorQEAgLTcwMDMsNyArNzA5Niw4IEBAIGFkZF9sb2NhdGlvbl90 b19icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKICAgIGdkYl9hc3NlcnQgKGxvYy0+ cHNwYWNlICE9IE5VTEwpOwogICAgbG9jLT5zZWN0aW9uID0gc2FsLT5zZWN0aW9uOwogIApAQCAt NjE5LDEwICs3NzMsMjggQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKICAgIHJldHVy biBsb2M7CiAgfQogIAwKLUBAIC05NzEyLDEyICs5ODIwLDIyIEBAIGRlbGV0ZV9icmVha3BvaW50 IChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQorQEAgLTgzOTcsNiArODQ5MSw3IEBAIHdhdGNoX2Nv bW1hbmRfMSAoY2hhciAqYXJnLCBpbnQgYWNjZXNzZmxhZywgaW50IGZyb21fdHR5LAorICAgYiA9 IHNldF9yYXdfYnJlYWtwb2ludF93aXRob3V0X2xvY2F0aW9uIChOVUxMLCBicF90eXBlKTsKKyAg IHNldF9icmVha3BvaW50X251bWJlciAoaW50ZXJuYWwsIGIpOworICAgYi0+dGhyZWFkID0gdGhy ZWFkOworKyAgYi0+cHNwYWNlID0gY3VycmVudF9wcm9ncmFtX3NwYWNlOworICAgYi0+ZGlzcG9z aXRpb24gPSBkaXNwX2RvbnR0b3VjaDsKKyAgIGItPmV4cCA9IGV4cDsKKyAgIGItPmV4cF92YWxp ZF9ibG9jayA9IGV4cF92YWxpZF9ibG9jazsKK0BAIC05NTUwLDYgKzk2NDUsOSBAQCB1cGRhdGVf Z2xvYmFsX2xvY2F0aW9uX2xpc3QgKGludCBzaG91bGRfaW5zZXJ0KQorICAgICAgIGludCBrZWVw X2luX3RhcmdldCA9IDA7CisgICAgICAgaW50IHJlbW92ZWQgPSAwOworIAorKyAgICAgIGlmIChv bGRfbG9jLT5wc3BhY2UgIT0gY3VycmVudF9wcm9ncmFtX3NwYWNlKQorKwljb250aW51ZTsKKysK KyAgICAgICAvKiBTa2lwIExPQ1AgZW50cmllcyB3aGljaCB3aWxsIGRlZmluaXRlbHkgbmV2ZXIg YmUgbmVlZGVkLgorIAkgU3RvcCBlaXRoZXIgYXQgb3IgYmVpbmcgdGhlIG9uZSBtYXRjaGluZyBP TERfTE9DLiAgKi8KKyAgICAgICB3aGlsZSAobG9jcCA8IGJwX2xvY2F0aW9uICsgYnBfbG9jYXRp b25fY291bnQKK0BAIC05ODY1LDEyICs5OTYzLDIyIEBAIGRlbGV0ZV9icmVha3BvaW50IChzdHJ1 Y3QgYnJlYWtwb2ludCAqYnB0KQogIAotICAgLyogQXQgbGVhc3QgYXZvaWQgdGhpcyBzdGFsZSBy ZWZlcmVuY2UgdW50aWwgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBvZgotICAgICAgYnJlYWtwb2lu dHMgZ2V0cyByZXNvbHZlZC4gICovCisgICAvKiBBdCBsZWFzdCBhdm9pZCB0aGlzIHN0YWxlIHJl ZmVyZW5jZSB1bnRpbCB0aGUgcmVmZXJlbmNlIGNvdW50aW5nCisgICAgICBvZiBicmVha3BvaW50 cyBnZXRzIHJlc29sdmVkLiAgKi8KIC0gIGlmIChicHQtPnJlbGF0ZWRfYnJlYWtwb2ludCAhPSBO VUxMKQogKyAgaWYgKGJwdC0+cmVsYXRlZF9icmVha3BvaW50ICE9IGJwdCkKICAgICAgewpAQCAt NjQ3LDcgKzgxOSw3IEBAIGluZGV4IDZiNTUzMTMuLjMwNjI2YTYgMTAwNjQ0CiAgICAgIH0KICAK ICAgIG9ic2VydmVyX25vdGlmeV9icmVha3BvaW50X2RlbGV0ZWQgKGJwdC0+bnVtYmVyKTsKLUBA IC0xMDA0OSw2ICsxMDE2Nyw5IEBAIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoc3RydWN0 IGJyZWFrcG9pbnQgKmIsCitAQCAtMTAyMDEsNiArMTAzMDksOSBAQCB1cGRhdGVfYnJlYWtwb2lu dF9sb2NhdGlvbnMgKHN0cnVjdCBicmVha3BvaW50ICpiLAogICAgICByZXR1cm47CiAgCiAgICBi LT5sb2MgPSBOVUxMOwpAQCAtNjU3LDcgKzgyOSw3IEBAIGluZGV4IDZiNTUzMTMuLjMwNjI2YTYg MTAwNjQ0CiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgc2Fscy5uZWx0czsgKytpKQogICAgICB7Ci1A QCAtMTAwNzUsMTEgKzEwMTk2LDcgQEAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1 Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC0xMDIyNywxMSArMTAzMzgsNyBAQCB1cGRhdGVfYnJlYWtw b2ludF9sb2NhdGlvbnMgKHN0cnVjdCBicmVha3BvaW50ICpiLAogIAkgICAgfQogIAl9CiAgCkBA IC02NzAsNyArODQyLDcgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKICAJYi0+c291 cmNlX2ZpbGUgPSB4c3RyZHVwIChzYWxzLnNhbHNbaV0uc3ltdGFiLT5maWxlbmFtZSk7CiAgCiAg ICAgICAgaWYgKGItPmxpbmVfbnVtYmVyID09IDApCi1AQCAtMTAxNjEsNiArMTAyNzgsNyBAQCBi cmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCitAQCAtMTAzMTQsNiArMTA0MjEsNyBA QCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCiAgICAgIGNhc2UgYnBfdHJhY2Vw b2ludDoKICAgICAgY2FzZSBicF9mYXN0X3RyYWNlcG9pbnQ6CiAgICAgIGNhc2UgYnBfc3RhdGlj X3RyYWNlcG9pbnQ6CkBAIC02NzgsMTUgKzg1MCwxNSBAQCBpbmRleCA2YjU1MzEzLi4zMDYyNmE2 IDEwMDY0NAogICAgICAgIC8qIERvIG5vdCBhdHRlbXB0IHRvIHJlLXNldCBicmVha3BvaW50cyBk aXNhYmxlZCBkdXJpbmcgc3RhcnR1cC4gICovCiAgICAgICAgaWYgKGItPmVuYWJsZV9zdGF0ZSA9 PSBicF9zdGFydHVwX2Rpc2FibGVkKQogIAlyZXR1cm4gMDsKLUBAIC0xMDMyNSw2ICsxMDQ0Myw3 IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAgICAgY2FzZSBicF9sb25n am1wOgotICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1lOgorQEAgLTEwNDg0LDYgKzEwNTkyLDcg QEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQorICAgICBjYXNlIGJwX2V4Y2Vw dGlvbjoKKyAgICAgY2FzZSBicF9leGNlcHRpb25fcmVzdW1lOgogICAgICBjYXNlIGJwX2ppdF9l dmVudDoKICsgICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgogICAgICAgIGJy ZWFrOwogICAgICB9CiAgCi1AQCAtMTA0OTYsMTEgKzEwNjE1LDI1IEBAIG1hcF9icmVha3BvaW50 X251bWJlcnMgKGNoYXIgKmFyZ3MsIHZvaWQgKCpmdW5jdGlvbikgKHN0cnVjdCBicmVha3BvaW50 ICosCitAQCAtMTA2NTYsMTEgKzEwNzY1LDI1IEBAIG1hcF9icmVha3BvaW50X251bWJlcnMgKGNo YXIgKmFyZ3MsIHZvaWQgKCpmdW5jdGlvbikgKHN0cnVjdCBicmVha3BvaW50ICosCiAgCSAgQUxM X0JSRUFLUE9JTlRTX1NBRkUgKGIsIHRtcCkKICAJICAgIGlmIChiLT5udW1iZXIgPT0gbnVtKQog IAkgICAgICB7CkBAIC03MTYsNyArODg4LDcgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2 NDQKICAJCWJyZWFrOwogIAkgICAgICB9CiAgCSAgaWYgKG1hdGNoID09IDApCi1AQCAtMTE2MDQs NiArMTE3MzcsMjIgQEAgYWxsX3RyYWNlcG9pbnRzICgpCitAQCAtMTE3NjksNiArMTE4OTIsMjIg QEAgYWxsX3RyYWNlcG9pbnRzICgpCiAgICByZXR1cm4gdHBfdmVjOwogIH0KICAKQEAgLTczNywx MCArOTA5LDEwIEBAIGluZGV4IDZiNTUzMTMuLjMwNjI2YTYgMTAwNjQ0CiArfQogKwogIAwKLSAv KiBUaGlzIGhlbHAgc3RyaW5nIGlzIHVzZWQgZm9yIHRoZSBicmVhaywgaGJyZWFrLCB0YnJlYWsg YW5kIHRoYnJlYWsgY29tbWFuZHMuCi0gICAgSXQgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIHRvIHBy ZXZlbnQgZHVwbGljYXRpb24uCi1AQCAtMTE2NzMsNiArMTE4MjIsMTA3IEBAIHNhdmVfY29tbWFu ZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCi0gICBoZWxwX2xpc3QgKHNhdmVfY21kbGlzdCwg InNhdmUgIiwgLTEsIGdkYl9zdGRvdXQpOworIC8qIFRoaXMgaGVscCBzdHJpbmcgaXMgdXNlZCBm b3IgdGhlIGJyZWFrLCBoYnJlYWssIHRicmVhayBhbmQgdGhicmVhaworICAgIGNvbW1hbmRzLiAg SXQgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIHRvIHByZXZlbnQgZHVwbGljYXRpb24uCitAQCAtMTE4 NTQsNiArMTE5OTMsMTA3IEBAIGl0ZXJhdGVfb3Zlcl9icmVha3BvaW50cyAoaW50ICgqY2FsbGJh Y2spIChzdHJ1Y3QgYnJlYWtwb2ludCAqLCB2b2lkICopLAorICAgcmV0dXJuIE5VTEw7CiAgfQog IAogK3N0YXRpYyB2b2lkCkBAIC04NDQsMjAgKzEwMTYsMjAgQEAgaW5kZXggNmI1NTMxMy4uMzA2 MjZhNiAxMDA2NDQKICsgIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoYiwgc2Fscyk7CiAr fQogKwotIHN0cnVjdCBicmVha3BvaW50ICoKLSBpdGVyYXRlX292ZXJfYnJlYWtwb2ludHMgKGlu dCAoKmNhbGxiYWNrKSAoc3RydWN0IGJyZWFrcG9pbnQgKiwgdm9pZCAqKSwKLSAJCQkgIHZvaWQg KmRhdGEpCi1AQCAtMTIyMjIsNCArMTI0NzIsNSBAQCBpbmZlcmlvciBpbiBhbGwtc3RvcCBtb2Rl LCBnZGIgYmVoYXZlcyBhcyBpZiBhbHdheXMtaW5zZXJ0ZWQgbW9kZSBpcyBvZmYuIiksCisgdm9p ZAorIF9pbml0aWFsaXplX2JyZWFrcG9pbnQgKHZvaWQpCisgeworQEAgLTEyMzg4LDQgKzEyNjI4 LDUgQEAgaW5mZXJpb3IgaW4gYWxsLXN0b3AgbW9kZSwgZ2RiIGJlaGF2ZXMgYXMgaWYgYWx3YXlz LWluc2VydGVkIG1vZGUgaXMgb2ZmLiIpLAogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9p bnRzID0gMTsKICAKICAgIG9ic2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3Bv aW50X2Fib3V0X3RvX3Byb2NlZWQpOwogKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAoYnJl YWtwb2ludF90eXBlc19tYXJrX3VzZWQpOwogIH0KIGRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2lu dC5oIGIvZ2RiL2JyZWFrcG9pbnQuaAotaW5kZXggZTM0YzJkMy4uNGFhZGQ1NyAxMDA2NDQKK2lu ZGV4IGJmYWU4ZDkuLmEwNThlNDYgMTAwNjQ0CiAtLS0gYS9nZGIvYnJlYWtwb2ludC5oCiArKysg Yi9nZGIvYnJlYWtwb2ludC5oCi1AQCAtMTM4LDYgKzEzOCw5IEBAIGVudW0gYnB0eXBlCitAQCAt MTQ3LDYgKzE0Nyw5IEBAIGVudW0gYnB0eXBlCiAgCiAgICAgIC8qIEV2ZW50IGZvciBKSVQgY29t cGlsZWQgY29kZSBnZW5lcmF0aW9uIG9yIGRlbGV0aW9uLiAgKi8KICAgICAgYnBfaml0X2V2ZW50 LApAQCAtODg2LDYgKzEwNTgsMTkgQEAgaW5kZXggMDRmODEyNy4uMmUyOWViMiAxMDA2NDQKICAJ ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCIsIChpbnQpIChoaWdoX2JvdW5kIC0gbG93 X2JvdW5kICsgMSkpOwogIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJdIik7CiAgCitkaWZm IC0tZ2l0IGEvZ2RiL2RlZnMuaCBiL2dkYi9kZWZzLmgKK2luZGV4IDQ4OWRlNzQuLjMzNWQzZjUg MTAwNjQ0CistLS0gYS9nZGIvZGVmcy5oCisrKysgYi9nZGIvZGVmcy5oCitAQCAtMzk4LDYgKzM5 OCw4IEBAIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3Jlc3RvcmVfcGFnZV9p bmZvICh2b2lkKTsKKyBleHRlcm4gc3RydWN0IGNsZWFudXAgKgorICAgc2V0X2JhdGNoX2ZsYWdf YW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCk7CisgCisrZXh0ZXJuIHN0 cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAodm9pZCk7 CisrCisgZXh0ZXJuIGNoYXIgKmdkYl9yZWFscGF0aCAoY29uc3QgY2hhciAqKTsKKyBleHRlcm4g Y2hhciAqeGZ1bGxwYXRoIChjb25zdCBjaGFyICopOworIAogZGlmZiAtLWdpdCBhL2dkYi9kb2Mv Z2RiaW50LnRleGluZm8gYi9nZGIvZG9jL2dkYmludC50ZXhpbmZvCiBpbmRleCA0YTExMmFhLi43 YjZiZWQ0IDEwMDY0NAogLS0tIGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwpAQCAtMTAzMiwxMCAr MTIxNywxMCBAQCBpbmRleCBlMTliOGVkLi4zNDNlMTYwIDEwMDY0NAogIFRoaXMgb2JzZXJ2ZXIg aXMgdXNlZCBmb3IgaW50ZXJuYWwgdGVzdGluZy4gIERvIG5vdCB1c2UuICAKICBTZWUgdGVzdHN1 aXRlL2dkYi5nZGIvb2JzZXJ2ZXIuZXhwLgogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJleHByLmMg Yi9nZGIvZHdhcmYyZXhwci5jCi1pbmRleCBiOWFlMTA4Li4yNTU1OTA4IDEwMDY0NAoraW5kZXgg MjliZmNmNC4uYzMzOTM3OCAxMDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJleHByLmMKICsrKyBiL2dk Yi9kd2FyZjJleHByLmMKLUBAIC04NzUsNiArODc1LDEzIEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0 cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKK0BAIC05MDAsNiArOTAwLDEzIEBAIGV4ZWN1 dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKICAJICBjdHgtPmR3 YXJmX2NhbGwgKGN0eCwgcmVzdWx0KTsKICAJICBnb3RvIG5vX3B1c2g7CiAgCkBAIC0xMDUwLDEw ICsxMjM1LDEwIEBAIGluZGV4IGI5YWUxMDguLjI1NTU5MDggMTAwNjQ0CiAgCSAgZXJyb3IgKF8o IlVuaGFuZGxlZCBkd2FyZiBleHByZXNzaW9uIG9wY29kZSAweCV4IiksIG9wKTsKICAJfQogZGlm ZiAtLWdpdCBhL2dkYi9kd2FyZjJleHByLmggYi9nZGIvZHdhcmYyZXhwci5oCi1pbmRleCA2MWI4 ZjAwLi5kOTRjMDNjIDEwMDY0NAoraW5kZXggNjhjYzY2Ny4uNWI1ZjI5YyAxMDA2NDQKIC0tLSBh L2dkYi9kd2FyZjJleHByLmgKICsrKyBiL2dkYi9kd2FyZjJleHByLmgKLUBAIC0xMDgsOSArMTA4 LDE1IEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQKK0BAIC0xMTQsOSArMTE0LDE1IEBAIHN0 cnVjdCBkd2FyZl9leHByX2NvbnRleHQKICAjaWYgMAogICAgLyogTm90IHlldCBpbXBsZW1lbnRl ZC4gICovCiAgCkBAIC0xMDcxLDEwICsxMjU2LDEwIEBAIGluZGV4IDYxYjhmMDAuLmQ5NGMwM2Mg MTAwNjQ0CiAgICAvKiBUaGUgY3VycmVudCBkZXB0aCBvZiBkd2FyZiBleHByZXNzaW9uIHJlY3Vy c2lvbiwgdmlhIERXX09QX2NhbGwqLAogICAgICAgRFdfT1BfZmJyZWcsIERXX09QX3B1c2hfb2Jq ZWN0X2FkZHJlc3MsIGV0Yy4sIGFuZCB0aGUgbWF4aW11bQogZGlmZiAtLWdpdCBhL2dkYi9kd2Fy ZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYwotaW5kZXggYjJhZWNmMi4uYWZjNzkwNyAxMDA2NDQK K2luZGV4IGYwZTA4YzcuLmQ1YzBjMzYgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYybG9jLmMKICsr KyBiL2dkYi9kd2FyZjJsb2MuYwotQEAgLTEyNyw2ICsxMjcsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhw cl9iYXRvbgorQEAgLTEzMyw2ICsxMzMsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbgogIHsK ICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2Rh dGEgKnBlcl9jdTsKQEAgLTEwODQsOSArMTI2OSw5IEBAIGluZGV4IGIyYWVjZjIuLmFmYzc5MDcg MTAwNjQ0CiAgfTsKICAKICAvKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBkd2FyZjJfZXZhbHVhdGVf bG9jX2Rlc2MuICAqLwotQEAgLTE5NSwyMyArMTk4LDMzIEBAIGR3YXJmX2V4cHJfZnJhbWVfYmFz ZV8xIChzdHJ1Y3Qgc3ltYm9sICpmcmFtZWZ1bmMsIENPUkVfQUREUiBwYywKK0BAIC0yMDEsMjMg KzIwNCwzMyBAQCBkd2FyZl9leHByX2ZyYW1lX2Jhc2VfMSAoc3RydWN0IHN5bWJvbCAqZnJhbWVm dW5jLCBDT1JFX0FERFIgcGMsCiAgICAgICAgc3ltYmF0b24gPSBTWU1CT0xfTE9DQVRJT05fQkFU T04gKGZyYW1lZnVuYyk7Ci0gICAgICAgKnN0YXJ0ID0gZmluZF9sb2NhdGlvbl9leHByZXNzaW9u IChzeW1iYXRvbiwgbGVuZ3RoLCBwYyk7CisgICAgICAgKnN0YXJ0ID0gZHdhcmYyX2ZpbmRfbG9j YXRpb25fZXhwcmVzc2lvbiAoc3ltYmF0b24sIGxlbmd0aCwgcGMpOwogICAgICB9CiAtICBlbHNl CiArICBlbHNlIGlmIChTWU1CT0xfQ09NUFVURURfT1BTIChmcmFtZWZ1bmMpID09ICZkd2FyZjJf bG9jZXhwcl9mdW5jcykKQEAgLTExMjcsOCArMTMxMiw4IEBAIGluZGV4IGIyYWVjZjIuLmFmYzc5 MDcgMTAwNjQ0CiAgfQogIAogIC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZHdhcmYyX2V2YWx1YXRl X2xvY19kZXNjLiAgQ29tcHV0ZXMgdGhlIENGQSBmb3IKLUBAIC0yNjMsNiArMjc2LDE1OCBAQCBk d2FyZl9leHByX2R3YXJmX2NhbGwgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwgc2l6 ZV90IGRpZV9vZmZzZXQpCi0gICByZXR1cm4gcGVyX2N1X2R3YXJmX2NhbGwgKGN0eCwgZGllX29m ZnNldCwgZGViYXRvbi0+cGVyX2N1KTsKK0BAIC0yODQsNiArMjk3LDE1OSBAQCBkd2FyZl9leHBy X2R3YXJmX2NhbGwgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwgc2l6ZV90IGRpZV9v ZmZzZXQpCisgCQkJICAgIGN0eC0+Z2V0X2ZyYW1lX3BjLCBjdHgtPmJhdG9uKTsKICB9CiAgCiAr c3RhdGljIENPUkVfQUREUgpAQCAtMTIwOSw2ICsxMzk0LDcgQEAgaW5kZXggYjJhZWNmMi4uYWZj NzkwNyAxMDA2NDQKICsgIGN0eC0+cmVhZF9tZW0gPSBkd2FyZl9leHByX3JlYWRfbWVtOwogKyAg Y3R4LT5nZXRfZnJhbWVfYmFzZSA9IGR3YXJmX2V4cHJfZnJhbWVfYmFzZTsKICsgIGN0eC0+Z2V0 X2ZyYW1lX2NmYSA9IGR3YXJmX2V4cHJfZnJhbWVfY2ZhOworKyAgY3R4LT5nZXRfZnJhbWVfcGMg PSBkd2FyZl9leHByX2ZyYW1lX3BjOwogKyAgY3R4LT5nZXRfdGxzX2FkZHJlc3MgPSBkd2FyZl9l eHByX3Rsc19hZGRyZXNzOwogKyAgY3R4LT5kd2FyZl9jYWxsID0gZHdhcmZfZXhwcl9kd2FyZl9j YWxsOwogKyAgY3R4LT5nZXRfb2JqZWN0X2FkZHJlc3MgPSBkd2FyZl9leHByX29iamVjdF9hZGRy ZXNzOwpAQCAtMTI3MCw4ICsxNDU2LDggQEAgaW5kZXggYjJhZWNmMi4uYWZjNzkwNyAxMDA2NDQK ICsgIGlmICghZGxsYmF0b24pCiArICAgIHJldHVybiAwOwogKwotKyAgZGF0YSA9IGZpbmRfbG9j YXRpb25fZXhwcmVzc2lvbiAoZGxsYmF0b24sICZzaXplLAotKwkJCQkgICBnZXRfZnJhbWVfYWRk cmVzc19pbl9ibG9jayAoZnJhbWUpKTsKKysgIGRhdGEgPSBkd2FyZjJfZmluZF9sb2NhdGlvbl9l eHByZXNzaW9uIChkbGxiYXRvbiwgJnNpemUsCisrCQkJCQkgIGdldF9mcmFtZV9hZGRyZXNzX2lu X2Jsb2NrIChmcmFtZSkpOwogKyAgaWYgKGRhdGEgPT0gTlVMTCkKICsgICAgcmV0dXJuIDA7CiAr CkBAIC0xMjg2LDI5ICsxNDcyLDI5IEBAIGluZGV4IGIyYWVjZjIuLmFmYzc5MDcgMTAwNjQ0CiAg c3RydWN0IHBpZWNlX2Nsb3N1cmUKICB7CiAgICAvKiBSZWZlcmVuY2UgY291bnQuICAqLwotQEAg LTg4NywxMCArMTA1Miw4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKLSAJCQkgIHN0cnVjdCBkd2FyZjJfcGVy X2N1X2RhdGEgKnBlcl9jdSkKK0BAIC0xMDM4LDEwICsxMjA0LDggQEAgZHdhcmYyX2V2YWx1YXRl X2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUsCisgCQkJICAgICAgIExPTkdFU1QgYnl0ZV9vZmZzZXQpCiAgewogICAgc3RydWN0IHZhbHVl ICpyZXR2YWw7CiAtICBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbiBiYXRvbjsKICAgIHN0cnVjdCBk d2FyZl9leHByX2NvbnRleHQgKmN0eDsKLS0gIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47Cisg ICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwogLSAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUg PSBkd2FyZjJfcGVyX2N1X29iamZpbGUgKHBlcl9jdSk7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqb2xk X2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwogIAotICAgaWYgKHNpemUg PT0gMCkKLSAgICAgewotQEAgLTkwMCwyNCArMTA2Myw4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2Nf ZGVzYyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKyAgIGlm IChieXRlX29mZnNldCA8IDApCisgICAgIGludmFsaWRfc3ludGhldGljX3BvaW50ZXIgKCk7CitA QCAtMTA1NCwyNSArMTIxOCwxMCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICAgICAgICByZXR1cm4g cmV0dmFsOwogICAgICB9CiAgCiAtICBiYXRvbi5mcmFtZSA9IGZyYW1lOwogLSAgYmF0b24ucGVy X2N1ID0gcGVyX2N1OwotKyAgY3R4ID0gZHdhcmZfZXhwcl9wcmVwX2N0eCAoZnJhbWUsIGRhdGEs IHNpemUsIHBlcl9jdSk7CisrICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51 cCwgMCk7CiAgCiAtICBjdHggPSBuZXdfZHdhcmZfZXhwcl9jb250ZXh0ICgpOwogLSAgb2xkX2No YWluID0gbWFrZV9jbGVhbnVwX2ZyZWVfZHdhcmZfZXhwcl9jb250ZXh0IChjdHgpOwotLQorKyAg Y3R4ID0gZHdhcmZfZXhwcl9wcmVwX2N0eCAoZnJhbWUsIGRhdGEsIHNpemUsIHBlcl9jdSk7Cisg CiAtICBjdHgtPmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKIC0gIGN0eC0+ YWRkcl9zaXplID0gZHdhcmYyX3Blcl9jdV9hZGRyX3NpemUgKHBlcl9jdSk7CiAtICBjdHgtPm9m ZnNldCA9IGR3YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKHBlcl9jdSk7CkBAIC0xMzE3LDYgKzE1 MDMsNyBAQCBpbmRleCBiMmFlY2YyLi5hZmM3OTA3IDEwMDY0NAogLSAgY3R4LT5yZWFkX21lbSA9 IGR3YXJmX2V4cHJfcmVhZF9tZW07CiAtICBjdHgtPmdldF9mcmFtZV9iYXNlID0gZHdhcmZfZXhw cl9mcmFtZV9iYXNlOwogLSAgY3R4LT5nZXRfZnJhbWVfY2ZhID0gZHdhcmZfZXhwcl9mcmFtZV9j ZmE7CistICBjdHgtPmdldF9mcmFtZV9wYyA9IGR3YXJmX2V4cHJfZnJhbWVfcGM7CiAtICBjdHgt PmdldF90bHNfYWRkcmVzcyA9IGR3YXJmX2V4cHJfdGxzX2FkZHJlc3M7CiAtICBjdHgtPmR3YXJm X2NhbGwgPSBkd2FyZl9leHByX2R3YXJmX2NhbGw7CiAtCkBAIC0xMzI0LDEwICsxNTExLDE0IEBA IGluZGV4IGIyYWVjZjIuLmFmYzc5MDcgMTAwNjQ0CiAgICBpZiAoY3R4LT5udW1fcGllY2VzID4g MCkKICAgICAgewogICAgICAgIHN0cnVjdCBwaWVjZV9jbG9zdXJlICpjOwotQEAgLTk1MSw2ICsx MDk4LDExIEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC0xMTE2LDYgKzEyNjUsMTUgQEAgZHdhcmYyX2V2 YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUsCiAgCSAgICBDT1JFX0FERFIgYWRkcmVzcyA9IGR3YXJmX2V4cHJfZmV0Y2hfYWRk cmVzcyAoY3R4LCAwKTsKICAJICAgIGludCBpbl9zdGFja19tZW1vcnkgPSBkd2FyZl9leHByX2Zl dGNoX2luX3N0YWNrX21lbW9yeSAoY3R4LCAwKTsKICAKKysJICAgIC8qIEZyYW1lIG1heSBiZSBu ZWVkZWQgZm9yIGNoZWNrX3R5cGVkZWYgb2YgVFlQRV9EWU5BTUlDLiAgKi8KKysJICAgIG1ha2Vf Y2xlYW51cF9yZXN0b3JlX3NlbGVjdGVkX2ZyYW1lICgpOworKwkgICAgc2VsZWN0X2ZyYW1lIChm cmFtZSk7CisrCiArCSAgICAvKiBvYmplY3RfYWRkcmVzc19zZXQgY2FsbGVkIGhlcmUgaXMgcmVx dWlyZWQgaW4gQUxMT0NBVEVfVkFMVUUncwogKwkgICAgICAgQ0hFQ0tfVFlQRURFRiBmb3IgdGhl IG9iamVjdCdzIHBvc3NpYmxlCiArCSAgICAgICBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzLiAg Ki8KQEAgLTEzMzYsNyArMTUyNyw3IEBAIGluZGV4IGIyYWVjZjIuLmFmYzc5MDcgMTAwNjQ0CiAg CSAgICByZXR2YWwgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CiAgCSAgICBWQUxVRV9MVkFMIChy ZXR2YWwpID0gbHZhbF9tZW1vcnk7CiAgCSAgICBzZXRfdmFsdWVfbGF6eSAocmV0dmFsLCAxKTsK LUBAIC0yNTg3LDExICsyNzM5LDUxIEBAIGxvY2xpc3RfdHJhY2Vwb2ludF92YXJfcmVmIChzdHJ1 Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTI4MTAsMTEg KzI5NjgsNTEgQEAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYgKHN0cnVjdCBzeW1ib2wgKnN5 bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgCQkJIGRsYmF0b24tPnBlcl9jdSk7CiAg fQogIApAQCAtMTM5MSwxMCArMTU4MiwxMCBAQCBpbmRleCBiMmFlY2YyLi5hZmM3OTA3IDEwMDY0 NAogKyAgbWlzc2luZ190cmFjZXBvaW50X3Zhcl9yZWYKICt9OwogZGlmZiAtLWdpdCBhL2dkYi9k d2FyZjJsb2MuaCBiL2dkYi9kd2FyZjJsb2MuaAotaW5kZXggYTJjZmU3Zi4uZjJkMDdlZiAxMDA2 NDQKK2luZGV4IGU5NDM0NmMuLjU1YmVlYzIgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYybG9jLmgK ICsrKyBiL2dkYi9kd2FyZjJsb2MuaAotQEAgLTk2LDUgKzk2LDE0IEBAIHN0cnVjdCBkd2FyZjJf bG9jbGlzdF9iYXRvbgorQEAgLTEwNSw1ICsxMDUsMTQgQEAgc3RydWN0IGR3YXJmMl9sb2NsaXN0 X2JhdG9uCiAgCiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJm Ml9sb2NleHByX2Z1bmNzOwogIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29w cyBkd2FyZjJfbG9jbGlzdF9mdW5jczsKQEAgLTE0MTAsMTIgKzE2MDEsMTIgQEAgaW5kZXggYTJj ZmU3Zi4uZjJkMDdlZiAxMDA2NDQKICAKICAjZW5kaWYgLyogZHdhcmYybG9jLmggKi8KIGRpZmYg LS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwotaW5kZXggNDA0ZmFm OC4uZTM3MmFmYiAxMDA2NDQKK2luZGV4IDgwNzcwZjguLjk5MDg0OTUgMTAwNjQ0CiAtLS0gYS9n ZGIvZHdhcmYycmVhZC5jCiArKysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAtMTIyMSw2ICsxMjIx LDkgQEAgc3RhdGljIGludCBhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKHN0cnVjdCBhdHRy aWJ1dGUgKik7Ci0gCi0gc3RhdGljIGludCBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKHN0cnVjdCBh dHRyaWJ1dGUgKik7CitAQCAtMTIwNiw2ICsxMjA2LDkgQEAgc3RhdGljIHZvaWQgZmlsbF9pbl9s b2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKKyAJCQkJICAgc3RydWN0IGR3YXJm Ml9sb2NsaXN0X2JhdG9uICpiYXRvbiwKKyAJCQkJICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cik7 CiAgCiArc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqZHdhcmYyX2F0dHJfdG9f bG9jbGlzdF9iYXRvbgogKyAgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KTsKQEAgLTE0MjMsNyArMTYxNCw3IEBAIGluZGV4IDQwNGZhZjguLmUzNzJhZmIgMTAw NjQ0CiAgc3RhdGljIHZvaWQgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChzdHJ1Y3QgYXR0 cmlidXRlICphdHRyLAogIAkJCQkJIHN0cnVjdCBzeW1ib2wgKnN5bSwKICAJCQkJCSBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSk7Ci1AQCAtMTI1MSw2ICsxMjU0LDkgQEAgc3RhdGljIHZvaWQgYWdlX2Nh Y2hlZF9jb21wX3VuaXRzICh2b2lkKTsKK0BAIC0xMjQwLDYgKzEyNDMsOSBAQCBzdGF0aWMgdm9p ZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQpOwogIAogIHN0YXRpYyB2b2lkIGZyZWVfb25l X2NhY2hlZF9jb21wX3VuaXQgKHZvaWQgKik7CiAgCkBAIC0xNDMzLDcgKzE2MjQsNyBAQCBpbmRl eCA0MDRmYWY4Li5lMzcyYWZiIDEwMDY0NAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqc2V0X2RpZV90 eXBlIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IHR5cGUgKiwKICAJCQkJICBzdHJ1Y3QgZHdh cmYyX2N1ICopOwogIAotQEAgLTEyNzUsNiArMTI4MSw5IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAq Z2V0X2RpZV90eXBlX2F0X29mZnNldCAodW5zaWduZWQgaW50LAorQEAgLTEyNjQsNiArMTI3MCw5 IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlX2F0X29mZnNldCAodW5zaWduZWQg aW50LAogIAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwogIApAQCAtMTQ0Myw3ICsxNjM0LDcgQEAg aW5kZXggNDA0ZmFmOC4uZTM3MmFmYiAxMDA2NDQKICBzdGF0aWMgdm9pZCBkd2FyZjJfcmVsZWFz ZV9xdWV1ZSAodm9pZCAqZHVtbXkpOwogIAogIHN0YXRpYyB2b2lkIHF1ZXVlX2NvbXBfdW5pdCAo c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAotQEAgLTcxMTIsNiArNzEyMSwyOSBA QCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCitAQCAtNzIzNyw2ICs3MjQ2LDI5IEBAIHByb2Nlc3NfZW51bWVyYXRp b25fc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAg IG5ld19zeW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7CiAgfQogIApAQCAtMTQ3Myw3ICsxNjY0 LDcgQEAgaW5kZXggNDA0ZmFmOC4uZTM3MmFmYiAxMDA2NDQKICAvKiBFeHRyYWN0IGFsbCBpbmZv cm1hdGlvbiBmcm9tIGEgRFdfVEFHX2FycmF5X3R5cGUgRElFIGFuZCBwdXQgaXQgaW4KICAgICB0 aGUgRElFJ3MgdHlwZSBmaWVsZC4gIEZvciBub3csIHRoaXMgb25seSBoYW5kbGVzIG9uZSBkaW1l bnNpb25hbAogICAgIGFycmF5cy4gICovCi1AQCAtNzEyNSw3ICs3MTU3LDcgQEAgcmVhZF9hcnJh eV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAt NzI1MCw3ICs3MjgyLDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlLCAqcmFu Z2VfdHlwZSwgKmluZGV4X3R5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqKnJhbmdlX3R5cGVzID0gTlVM TDsKICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CkBAIC0xNDgyLDcgKzE2NzMsNyBAQCBpbmRl eCA0MDRmYWY4Li5lMzcyYWZiIDEwMDY0NAogICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAg ICBjaGFyICpuYW1lOwogIAotQEAgLTcxNzgsMTcgKzcyMTAsMTEgQEAgcmVhZF9hcnJheV90eXBl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNzMwMywx NyArNzMzNSwxMSBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CiAgCiAgICBpZiAocmVh ZF9hcnJheV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikKQEAgLTE1MDUsNyAr MTY5Niw3IEBAIGluZGV4IDQwNGZhZjguLmUzNzJhZmIgMTAwNjQ0CiAgCiAgICAvKiBVbmRlcnN0 YW5kIER3YXJmMiBzdXBwb3J0IGZvciB2ZWN0b3IgdHlwZXMgKGxpa2UgdGhleSBvY2N1ciBvbgog ICAgICAgdGhlIFBvd2VyUEMgdy8gQWx0aVZlYykuICBHY2MganVzdCBhZGRzIGFub3RoZXIgYXR0 cmlidXRlIHRvIHRoZQotQEAgLTc2ODEsMjkgKzc3MDcsMTE0IEBAIHJlYWRfdGFnX3N0cmluZ190 eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNzgw NiwyOSArNzgzMiwxMTQgQEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0g Z2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdl X3R5cGUsICppbmRleF90eXBlLCAqY2hhcl90eXBlOwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0 cjsKQEAgLTE2MzQsNyArMTgyNSw3IEBAIGluZGV4IDQwNGZhZjguLmUzNzJhZmIgMTAwNjQ0CiAg ICBjaGFyX3R5cGUgPSBsYW5ndWFnZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVm biwgZ2RiYXJjaCk7CiAgICB0eXBlID0gY3JlYXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFyX3R5 cGUsIHJhbmdlX3R5cGUpOwogIAotQEAgLTc5ODUsOCArODA5Niw3IEBAIHJlYWRfc3VicmFuZ2Vf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTgx MTAsOCArODIyMSw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZTsKICAgIHN0 cnVjdCB0eXBlICpyYW5nZV90eXBlOwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKQEAgLTE2 NDQsNyArMTgzNSw3IEBAIGluZGV4IDQwNGZhZjguLmUzNzJhZmIgMTAwNjQ0CiAgICBjaGFyICpu YW1lOwogICAgTE9OR0VTVCBuZWdhdGl2ZV9tYXNrOwogIAotQEAgLTc5OTksNDggKzgxMDksMTI1 IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQorQEAgLTgxMjQsNDggKzgyMzQsMTI1IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgaWYgKHJhbmdl X3R5cGUpCiAgICAgIHJldHVybiByYW5nZV90eXBlOwogIApAQCAtMTgwMiw3ICsxOTkzLDcgQEAg aW5kZXggNDA0ZmFmOC4uZTM3MmFmYiAxMDA2NDQKICAgICAgfQogIAogICAgLyogRHdhcmYtMiBz cGVjaWZpY2F0aW9ucyBleHBsaWNpdGx5IGFsbG93cyB0byBjcmVhdGUgc3VicmFuZ2UgdHlwZXMK LUBAIC04MDgyLDIwICs4MjY5LDQxIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTgyMDcsMjAgKzgzOTQsNDEgQEAg cmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCiAgCX0KICAgICAgfQogIApAQCAtMTg1Niw3ICsyMDQ3LDcgQEAgaW5kZXggNDA0ZmFm OC4uZTM3MmFmYiAxMDA2NDQKICAKICAgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7CiAg ICBpZiAobmFtZSkKLUBAIC0xMDU1OSwxMCArMTA3NjcsMTIgQEAgdmFyX2RlY29kZV9sb2NhdGlv biAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAorQEAgLTEwNjg2 LDEwICsxMDg5NCwxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9uIChzdHJ1Y3QgYXR0cmlidXRlICph dHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgICAgICAoaS5lLiB3aGVuIHRoZSB2YWx1ZSBvZiBh IHJlZ2lzdGVyIG9yIG1lbW9yeSBsb2NhdGlvbiBpcwogICAgICAgcmVmZXJlbmNlZCwgb3IgYSB0 aHJlYWQtbG9jYWwgYmxvY2ssIGV0Yy4pLiAgVGhlbiBhZ2FpbiwgaXQgbWlnaHQKICAgICAgIG5v dCBiZSB3b3J0aHdoaWxlLiAgSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXNuJ3QgdW5sZXNzIHBlcmZv cm1hbmNlCkBAIC0xODcxLDcgKzIwNjIsNyBAQCBpbmRleCA0MDRmYWY4Li5lMzcyYWZiIDEwMDY0 NAogIH0KICAKICAvKiBHaXZlbiBhIHBvaW50ZXIgdG8gYSBEV0FSRiBpbmZvcm1hdGlvbiBlbnRy eSwgZmlndXJlIG91dCBpZiB3ZSBuZWVkCi1AQCAtMTA2MDAsNiArMTA4MTAsOCBAQCBuZXdfc3lt Ym9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UsCitAQCAtMTA3MjcsNiArMTA5MzcsOCBAQCBuZXdfc3ltYm9sX2Z1bGwg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UsCiAgICAgICAgZWxzZQogIAlzeW0gPSBPQlNUQUNLX1pBTExPQyAoJm9iamZpbGUtPm9i amZpbGVfb2JzdGFjaywgc3RydWN0IHN5bWJvbCk7CiAgICAgICAgT0JKU1RBVCAob2JqZmlsZSwg bl9zeW1zKyspOwpAQCAtMTg4MCw3ICsyMDcxLDcgQEAgaW5kZXggNDA0ZmFmOC4uZTM3MmFmYiAx MDA2NDQKICAKICAgICAgICAvKiBDYWNoZSB0aGlzIHN5bWJvbCdzIG5hbWUgYW5kIHRoZSBuYW1l J3MgZGVtYW5nbGVkIGZvcm0gKGlmIGFueSkuICAqLwogICAgICAgIFNZTUJPTF9TRVRfTEFOR1VB R0UgKHN5bSwgY3UtPmxhbmd1YWdlKTsKLUBAIC0xMTM2Nyw2ICsxMTU3OSw5IEBAIHJlYWRfdHlw ZV9kaWVfMSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAg LTExNDk0LDYgKzExNzA2LDkgQEAgcmVhZF90eXBlX2RpZV8xIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAKQEAgLTE4 OTAsOCArMjA4MSw4IEBAIGluZGV4IDQwNGZhZjguLmUzNzJhZmIgMTAwNjQ0CiAgICByZXR1cm4g dGhpc190eXBlOwogIH0KICAKLUBAIC0xNDExOSw2NyArMTQzMzQsMTAyIEBAIGF0dHJfZm9ybV9p c19jb25zdGFudCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0cikKLSAgICAgfQorQEAgLTE0MjkyLDU5 ICsxNDUwNyw5NyBAQCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1 LAorICAgYmF0b24tPmJhc2VfYWRkcmVzcyA9IGN1LT5iYXNlX2FkZHJlc3M7CiAgfQogIAogLXN0 YXRpYyB2b2lkCkBAIC0xOTExLDI3ICsyMTAyLDE1IEBAIGluZGV4IDQwNGZhZjguLmUzNzJhZmIg MTAwNjQ0CiAtICAgIHsKIC0gICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9u OwogKyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpiYXRvbjsKLSAKLS0gICAgICBiYXRv biA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJCSAg ICAgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24pKTsKLS0gICAgICBiYXRvbi0+ cGVyX2N1ID0gY3UtPnBlcl9jdTsKLS0gICAgICBnZGJfYXNzZXJ0IChiYXRvbi0+cGVyX2N1KTsK KysKICsgIGdkYl9hc3NlcnQgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpOwotIAotLSAgICAg IGR3YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwKLS0JCQkg ICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MpOworKwogKyAgYmF0b24gPSBvYnN0YWNrX2FsbG9j ICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mICgqYmF0b24pKTsKICsgIGJh dG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OwogKyAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7 CiAgCi0tICAgICAgLyogV2UgZG9uJ3Qga25vdyBob3cgbG9uZyB0aGUgbG9jYXRpb24gbGlzdCBp cywgYnV0IG1ha2Ugc3VyZSB3ZQotLQkgZG9uJ3QgcnVuIG9mZiB0aGUgZWRnZSBvZiB0aGUgc2Vj dGlvbi4gICovCi0tICAgICAgYmF0b24tPnNpemUgPSBkd2FyZjJfcGVyX29iamZpbGUtPmxvYy5z aXplIC0gRFdfVU5TTkQgKGF0dHIpOwotLSAgICAgIGJhdG9uLT5kYXRhID0gZHdhcmYyX3Blcl9v YmpmaWxlLT5sb2MuYnVmZmVyICsgRFdfVU5TTkQgKGF0dHIpOwotLSAgICAgIGJhdG9uLT5iYXNl X2FkZHJlc3MgPSBjdS0+YmFzZV9hZGRyZXNzOwotLSAgICAgIGlmIChjdS0+YmFzZV9rbm93biA9 PSAwKQotLQljb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0tCQkgICBfKCJMb2NhdGlv biBsaXN0IHVzZWQgd2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBDVSBiYXNlIGFkZHJlc3MuIikpOwor LSAgICAgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3Rh Y2ssCistCQkJICAgICBzaXplb2YgKHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbikpOwogKyAg LyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWluZyB0aGUgYmxvY2sncyBkYXRhIHBvaW50ZXIK ICsgICAgIGhlcmUsIG5vdCB0aGUgYWN0dWFsIGRhdGEuICBXZSdyZSBzdGlsbCBwb2ludGluZyBp bnRvIHRoZQogKyAgICAgaW5mb19idWZmZXIgZm9yIFNZTSdzIG9iamZpbGU7IHJpZ2h0IG5vdyB3 ZSBuZXZlciByZWxlYXNlCkBAIC0xOTQwLDIwICsyMTE5LDI0IEBAIGluZGV4IDQwNGZhZjguLmUz NzJhZmIgMTAwNjQ0CiArICBiYXRvbi0+c2l6ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZTsKICsg IGJhdG9uLT5kYXRhID0gRFdfQkxPQ0sgKGF0dHIpLT5kYXRhOwogKyAgZ2RiX2Fzc2VydCAoYmF0 b24tPnNpemUgPT0gMCB8fCBiYXRvbi0+ZGF0YSAhPSBOVUxMKTsKLSsKKyAKKy0gICAgICBmaWxs X2luX2xvY2xpc3RfYmF0b24gKGN1LCBiYXRvbiwgYXR0cik7CiArICByZXR1cm4gYmF0b247CiAr fQotKworIAorLSAgICAgIGlmIChjdS0+YmFzZV9rbm93biA9PSAwKQorLQljb21wbGFpbnQgKCZz eW1maWxlX2NvbXBsYWludHMsCistCQkgICBfKCJMb2NhdGlvbiBsaXN0IHVzZWQgd2l0aG91dCBz cGVjaWZ5aW5nIHRoZSBDVSBiYXNlIGFkZHJlc3MuIikpOwogK3N0YXRpYyBzdHJ1Y3QgZHdhcmYy X2xvY2xpc3RfYmF0b24gKgogK2R3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBh dHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogK3sKICsgIHN0cnVjdCBkd2Fy ZjJfbG9jbGlzdF9iYXRvbiAqYmF0b247Ci0rCisgCiArICAvKiBEV19BVF9sb2NhdGlvbiBvZiB0 aGUgcmVmZXJlbmNlZCBESUUgbWF5IGJlIG1pc3NpbmcgaWYgdGhlIHJlZmVyZW5jZWQKICsgICAg IHZhcmlhYmxlIGhhcyBiZWVuIG9wdGltaXplZCBvdXQuICAqLwogKyAgaWYgKCFhdHRyKQogKyAg ICByZXR1cm4gTlVMTDsKLSAKKysKICsgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJmMl9wZXJf b2JqZmlsZS0+b2JqZmlsZSwKICsJCSAgICAgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MpOwog KwpAQCAtMTk2NiwxNCArMjE0OSw5IEBAIGluZGV4IDQwNGZhZjguLmUzNzJhZmIgMTAwNjQ0CiAr CiArICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNr LAogKwkJCSBzaXplb2YgKHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbikpOwotKyAgYmF0b24t PnBlcl9jdSA9IGN1LT5wZXJfY3U7Ci0rICBnZGJfYXNzZXJ0IChiYXRvbi0+cGVyX2N1KTsKICsK LSsgIC8qIFdlIGRvbid0IGtub3cgaG93IGxvbmcgdGhlIGxvY2F0aW9uIGxpc3QgaXMsIGJ1dCBt YWtlIHN1cmUgd2UKLSsgICAgIGRvbid0IHJ1biBvZmYgdGhlIGVkZ2Ugb2YgdGhlIHNlY3Rpb24u ICAqLwotKyAgYmF0b24tPnNpemUgPSBkd2FyZjJfcGVyX29iamZpbGUtPmxvYy5zaXplIC0gRFdf VU5TTkQgKGF0dHIpOwotKyAgYmF0b24tPmRhdGEgPSBkd2FyZjJfcGVyX29iamZpbGUtPmxvYy5i dWZmZXIgKyBEV19VTlNORCAoYXR0cik7Ci0rICBiYXRvbi0+YmFzZV9hZGRyZXNzID0gY3UtPmJh c2VfYWRkcmVzczsKKysgIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoY3UsIGJhdG9uLCBhdHRyKTsK KysKICsgIGlmIChjdS0+YmFzZV9rbm93biA9PSAwKQogKyAgICBjb21wbGFpbnQgKCZzeW1maWxl X2NvbXBsYWludHMsCiArCSAgICAgICBfKCJMb2NhdGlvbiBsaXN0IHVzZWQgd2l0aG91dCBzcGVj aWZ5aW5nIHRoZSBDVSBiYXNlIGFkZHJlc3MuIikpOwpAQCAtMjA0Miw3ICsyMjIwLDcgQEAgaW5k ZXggNDA0ZmFmOC4uZTM3MmFmYiAxMDA2NDQKICAgICAgfQogIH0KICAKLUBAIC0xNDUzMyw2ICsx NDc4MywzMSBAQCBvZmZzZXRfYW5kX3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25z dCB2b2lkICppdGVtX3JocykKK0BAIC0xNDY5MCw2ICsxNDk0MywzMSBAQCBvZmZzZXRfYW5kX3R5 cGVfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKICAgIHJl dHVybiBvZnNfbGhzLT5vZmZzZXQgPT0gb2ZzX3Jocy0+b2Zmc2V0OwogIH0KICAKQEAgLTIwNzQs NyArMjI1Miw3IEBAIGluZGV4IDQwNGZhZjguLmUzNzJhZmIgMTAwNjQ0CiAgLyogU2V0IHRoZSB0 eXBlIGFzc29jaWF0ZWQgd2l0aCBESUUgdG8gVFlQRS4gIFNhdmUgaXQgaW4gQ1UncyBoYXNoCiAg ICAgdGFibGUgaWYgbmVjZXNzYXJ5LiAgRm9yIGNvbnZlbmllbmNlLCByZXR1cm4gVFlQRS4KICAK LUBAIC0xNDU1OCw2ICsxNDgzMyw4IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xNDcxNSw2 ICsxNDk5Myw4IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0 eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlID0gY3UtPm9iamZpbGU7CiAgICBodGFiX3QgKnR5cGVfaGFzaF9wdHI7CiAgCkBAIC0yMDg0 LDcgKzIyNjIsNyBAQCBpbmRleCA0MDRmYWY4Li5lMzcyYWZiIDEwMDY0NAogICAgICAgaW5pdGlh bGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBUaGVyZSBhcmUgYSBmZXcgdHlwZXMgd2hlcmUK ICAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9pbmcgc28sIGJlY2F1c2UgdGhlIHR5cGUtc3BlY2lm aWMgYXJlYSBpcwogZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFkLmMgYi9nZGIvZWxmcmVhZC5jCi1p bmRleCAyNzBmOTNmLi5hNTg5YzIzIDEwMDY0NAoraW5kZXggZDYwN2I4Ny4uMmFhN2RkOSAxMDA2 NDQKIC0tLSBhL2dkYi9lbGZyZWFkLmMKICsrKyBiL2dkYi9lbGZyZWFkLmMKIEBAIC0zNyw2ICsz Nyw3IEBACkBAIC0yMzY4LDcgKzI1NDYsNyBAQCBpbmRleCAyNzBmOTNmLi5hNTg5YzIzIDEwMDY0 NAogIHN0cnVjdCBidWlsZF9pZAogICAgewogICAgICBzaXplX3Qgc2l6ZTsKLUBAIC04MDAsNiAr MTA0OSw4IEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQg c3ltZmlsZV9mbGFncykKK0BAIC04MDYsNiArMTA1NSw4IEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKICAJICAgICAgIGJmZF9l cnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKICAKICAgICAgICBlbGZfc3ltdGFiX3JlYWQgKG9i amZpbGUsIFNUX0RZTkFNSUMsIGR5bnN5bWNvdW50LCBkeW5fc3ltYm9sX3RhYmxlLCAwKTsKQEAg LTMwMzgsNyArMzIxNiw3IEBAIGluZGV4IGUwY2ExMmMuLmRlNjMxMWEgMTAwNjQ0CiAgICBlbHNl CiAgICAgIHsKIGRpZmYgLS1naXQgYS9nZGIvZ2RidHlwZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCi1p bmRleCBkOTZkMGY4Li40YmViY2RhIDEwMDY0NAoraW5kZXggYjY1MTA5OC4uNzAyNjlkNiAxMDA2 NDQKIC0tLSBhL2dkYi9nZGJ0eXBlcy5jCiArKysgYi9nZGIvZ2RidHlwZXMuYwogQEAgLTM5LDYg KzM5LDkgQEAKQEAgLTMzMjIsNyArMzUwMCw3IEBAIGluZGV4IGQ5NmQwZjguLjRiZWJjZGEgMTAw NjQ0CiArCVRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpID0gdGFyZ2V0X3R5cGU7CiAgICAgICAgaWYg KFRZUEVfU1RVQiAodGFyZ2V0X3R5cGUpIHx8IFRZUEVfVEFSR0VUX1NUVUIgKHRhcmdldF90eXBl KSkKICAJewotIAkgIC8qIEVtcHR5LiAgKi8KKyAJICAvKiBOb3RoaW5nIHdlIGNhbiBkby4gICov CiAgCX0KICAgICAgICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJB WQogLQkgICAgICAgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxCkBAIC0zOTY4LDcgKzQxNDYs NyBAQCBpbmRleCBkOTZkMGY4Li40YmViY2RhIDEwMDY0NAogIAogICAgYWRkX3NldHNob3dfemlu dGVnZXJfY21kICgib3ZlcmxvYWQiLCBub19jbGFzcywgJm92ZXJsb2FkX2RlYnVnLCBfKCJcCiBk aWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmggYi9nZGIvZ2RidHlwZXMuaAotaW5kZXggNTFlYjQ0 NS4uNjI3ZTVhZiAxMDA2NDQKK2luZGV4IDFjZTJkOTEuLjEzM2Y1ODMgMTAwNjQ0CiAtLS0gYS9n ZGIvZ2RidHlwZXMuaAogKysrIGIvZ2RiL2dkYnR5cGVzLmgKIEBAIC0xNzAsNiArMTcwLDcgQEAg ZW51bSB0eXBlX2ZsYWdfdmFsdWUKQEAgLTQxODIsNyArNDM2MCw3IEBAIGluZGV4IDUxZWI0NDUu LjYyN2U1YWYgMTAwNjQ0CiAgCiAgLyogQysrICovCiAgCi1AQCAtMTE3Niw2ICsxMjg1LDEwIEBA IHN0cnVjdCBidWlsdGluX3R5cGUKK0BAIC0xMTc3LDYgKzEyODYsMTAgQEAgc3RydWN0IGJ1aWx0 aW5fdHlwZQogICAgICAgKCopICgpIGNhbiBzZXJ2ZXIgYXMgYSBnZW5lcmljIGZ1bmN0aW9uIHBv aW50ZXIuICAqLwogICAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fZnVuY19wdHI7CiAgCkBAIC00MTkz LDcgKzQzNzEsNyBAQCBpbmRleCA1MWViNDQ1Li42MjdlNWFmIDEwMDY0NAogIAogICAgLyogU3Bl Y2lhbC1wdXJwb3NlIHR5cGVzLiAgKi8KICAKLUBAIC0xMjE2LDYgKzEzMjksOCBAQCBzdHJ1Y3Qg b2JqZmlsZV90eXBlCitAQCAtMTIxNyw2ICsxMzMwLDggQEAgc3RydWN0IG9iamZpbGVfdHlwZQog IAogICAgLyogVHlwZXMgdXNlZCBmb3Igc3ltYm9scyB3aXRoIG5vIGRlYnVnIGluZm9ybWF0aW9u LiAgKi8KICAgIHN0cnVjdCB0eXBlICpub2RlYnVnX3RleHRfc3ltYm9sOwpAQCAtNDIwMiw3ICs0 MzgwLDcgQEAgaW5kZXggNTFlYjQ0NS4uNjI3ZTVhZiAxMDA2NDQKICAgIHN0cnVjdCB0eXBlICpu b2RlYnVnX2RhdGFfc3ltYm9sOwogICAgc3RydWN0IHR5cGUgKm5vZGVidWdfdW5rbm93bl9zeW1i b2w7CiAgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190bHNfc3ltYm9sOwotQEAgLTEzNjMsNiArMTQ3 OCwxOCBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlw ZSAqLCBzdHJ1Y3QgdHlwZSAqLAorQEAgLTEzNjQsNiArMTQ3OSwxOCBAQCBleHRlcm4gc3RydWN0 IHR5cGUgKmNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAog IAkJCQkgICAgICAgc3RydWN0IHR5cGUgKik7CiAgZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBf YXJyYXlfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOwogIApAQCAtNDIyMSw3 ICs0Mzk5LDcgQEAgaW5kZXggNTFlYjQ0NS4uNjI3ZTVhZiAxMDA2NDQKICBleHRlcm4gc3RydWN0 IHR5cGUgKmNyZWF0ZV9zdHJpbmdfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwK ICAJCQkJCXN0cnVjdCB0eXBlICopOwogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3VwX3N0cmlu Z19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7Ci1AQCAtMTQwOCw2ICsxNTM1 LDggQEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0cnVj dCB0eXBlICopOworQEAgLTE0MDksNiArMTUzNiw4IEBAIGV4dGVybiBpbnQgaXNfcHVibGljX2Fu Y2VzdG9yIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqKTsKICAKICBleHRlcm4gaW50IGlz X3VuaXF1ZV9hbmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHZhbHVlICopOwogIApAQCAt NDIzMCw3ICs0NDA4LDcgQEAgaW5kZXggNTFlYjQ0NS4uNjI3ZTVhZiAxMDA2NDQKICAvKiBPdmVy bG9hZCByZXNvbHV0aW9uICovCiAgCiAgI2RlZmluZSBMRU5HVEhfTUFUQ0goYnYpICgoYnYpLT5y YW5rWzBdKQotQEAgLTE0NzgsMTAgKzE2MDcsMTEgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2Vf cHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOworQEAgLTE0NzksMTAgKzE2MDgsMTEgQEAgZXh0ZXJu IHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOwogIAogIGV4dGVybiBo dGFiX3QgY3JlYXRlX2NvcGllZF90eXBlc19oYXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7 CiAgCkBAIC00MjQ1LDEyMyArNDQyMyw2MzIgQEAgaW5kZXggNTFlYjQ0NS4uNjI3ZTVhZiAxMDA2 NDQKICsKICAjZW5kaWYgLyogR0RCVFlQRVNfSCAqLwogZGlmZiAtLWdpdCBhL2dkYi9pMzg2LWxp bnV4LW5hdC5jIGIvZ2RiL2kzODYtbGludXgtbmF0LmMKLWluZGV4IDRmY2UxYWMuLjE0NGE4OTkg MTAwNjQ0CitpbmRleCA0ZmNlMWFjLi43YjY5NjFlIDEwMDY0NAogLS0tIGEvZ2RiL2kzODYtbGlu dXgtbmF0LmMKICsrKyBiL2dkYi9pMzg2LWxpbnV4LW5hdC5jCi1AQCAtNzQ3LDYgKzc0NywyMSBA QCBpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQotICAgICB9 CitAQCAtNjMzLDIyICs2MzMsMTMgQEAgaTM4Nl9saW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3Rl cnMgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCisgfQorIAwKKyAKKy0vKiBTdXBwb3J0IGZvciBk ZWJ1ZyByZWdpc3RlcnMuICAqLworLQorLXN0YXRpYyB1bnNpZ25lZCBsb25nIGkzODZfbGludXhf ZHJbRFJfQ09OVFJPTCArIDFdOworLQorIC8qIEdldCBkZWJ1ZyByZWdpc3RlciBSRUdOVU0gdmFs dWUgZnJvbSBvbmx5IHRoZSBvbmUgTFdQIG9mIFBUSUQuICAqLworIAorIHN0YXRpYyB1bnNpZ25l ZCBsb25nCistaTM4Nl9saW51eF9kcl9nZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbnVtKQorK2kz ODZfbGludXhfZHJfZ2V0IChpbnQgdGlkLCBpbnQgcmVnbnVtKQorIHsKKy0gIGludCB0aWQ7Cisg ICB1bnNpZ25lZCBsb25nIHZhbHVlOworIAorLSAgdGlkID0gVElER0VUIChwdGlkKTsKKy0gIGlm ICh0aWQgPT0gMCkKKy0gICAgdGlkID0gUElER0VUIChwdGlkKTsKKy0KKyAgIC8qIEZJWE1FOiBr ZXR0ZW5pcy8yMDAxLTAzLTI3OiBDYWxsaW5nIHBlcnJvcl93aXRoX25hbWUgaWYgdGhlCisgICAg ICBwdHJhY2UgY2FsbCBmYWlscyBicmVha3MgZGVidWdnaW5nIHJlbW90ZSB0YXJnZXRzLiAgVGhl IGNvcnJlY3QKKyAgICAgIHdheSB0byBmaXggdGhpcyBpcyB0byBhZGQgdGhlIGhhcmR3YXJlIGJy ZWFrcG9pbnQgYW5kIHdhdGNocG9pbnQKK0BAIC02NzAsMTQgKzY2MSw4IEBAIGkzODZfbGludXhf ZHJfZ2V0IChwdGlkX3QgcHRpZCwgaW50IHJlZ251bSkKKyAvKiBTZXQgZGVidWcgcmVnaXN0ZXIg UkVHTlVNIHRvIFZBTFVFIGluIG9ubHkgdGhlIG9uZSBMV1Agb2YgUFRJRC4gICovCisgCisgc3Rh dGljIHZvaWQKKy1pMzg2X2xpbnV4X2RyX3NldCAocHRpZF90IHB0aWQsIGludCByZWdudW0sIHVu c2lnbmVkIGxvbmcgdmFsdWUpCisraTM4Nl9saW51eF9kcl9zZXQgKGludCB0aWQsIGludCByZWdu dW0sIHVuc2lnbmVkIGxvbmcgdmFsdWUpCisgeworLSAgaW50IHRpZDsKKy0KKy0gIHRpZCA9IFRJ REdFVCAocHRpZCk7CistICBpZiAodGlkID09IDApCistICAgIHRpZCA9IFBJREdFVCAocHRpZCk7 CistCisgICBlcnJubyA9IDA7CisgICBwdHJhY2UgKFBUUkFDRV9QT0tFVVNFUiwgdGlkLAorIAkg IG9mZnNldG9mIChzdHJ1Y3QgdXNlciwgdV9kZWJ1Z3JlZ1tyZWdudW1dKSwgdmFsdWUpOworQEAg LTY4NSwzNSArNjcwLDc4IEBAIGkzODZfbGludXhfZHJfc2V0IChwdGlkX3QgcHRpZCwgaW50IHJl Z251bSwgdW5zaWduZWQgbG9uZyB2YWx1ZSkKKyAgICAgcGVycm9yX3dpdGhfbmFtZSAoXygiQ291 bGRuJ3Qgd3JpdGUgZGVidWcgcmVnaXN0ZXIiKSk7CiAgfQogIAotKy8qIFNlZSBpMzg2X2RyX2xv d190eXBlLmRldGFjaC4gIERvIG5vdCB1c2Ugd3JhcHBlcnMgaTM4Nl9saW51eF9kcl9zZXRfY29u dHJvbAotKyAgIG9yIGkzODZfbGludXhfZHJfcmVzZXRfYWRkciBhcyB0aGV5IHdvdWxkIG1vZGlm eSB0aGUgcmVnaXN0ZXIgY2FjaGUKLSsgICAoaTM4Nl9saW51eF9kcikuICAqLworLS8qIFNldCBE Ul9DT05UUk9MIHRvIEFERFIgaW4gYWxsIExXUHMgb2YgTFdQX0xJU1QuICAqLworKy8qIEhlbHBl ciBmb3IgaTM4Nl9saW51eF9kcl9zZXRfY29udHJvbC4gICovCiArCiArc3RhdGljIHZvaWQKLStp Mzg2X2xpbnV4X2RyX2RldGFjaCAodm9pZCkKKytpMzg2X2xpbnV4X2RyX3NldF9jb250cm9sX2Nh bGxiYWNrIChpbnQgdGlkLCB2b2lkICpjb250cm9sX3ZvaWRwKQogK3sKLSsgIGludCByZWdudW07 CisrICB1bnNpZ25lZCBsb25nIGNvbnRyb2wgPSAqKHVuc2lnbmVkIGxvbmcgKikgY29udHJvbF92 b2lkcDsKICsKLSsgIGkzODZfbGludXhfZHJfc2V0IChpbmZlcmlvcl9wdGlkLCBEUl9DT05UUk9M LCAwKTsKLSsgIGkzODZfbGludXhfZHJfdW5zZXRfc3RhdHVzICh+MFVMKTsKLSsgIGZvciAocmVn bnVtID0gRFJfRklSU1RBRERSOyByZWdudW0gPD0gRFJfTEFTVEFERFI7IHJlZ251bSsrKQotKyAg ICBpMzg2X2xpbnV4X2RyX3NldCAoaW5mZXJpb3JfcHRpZCwgcmVnbnVtLCAwKTsKKysgIGkzODZf bGludXhfZHJfc2V0ICh0aWQsIERSX0NPTlRST0wsIGNvbnRyb2wpOwogK30KICsKKytzdGF0aWMg dm9pZCBpMzg2X2xpbnV4X2RyX3NldF9hZGRyIChpbnQgcmVnbnVtLCBDT1JFX0FERFIgYWRkcik7 CisrCisrLyogU2V0IERSX0NPTlRST0wgdG8gQUREUiBpbiBhbGwgTFdQcyBvZiBDVVJSRU5UX0lO RkVSSU9SLiAgKi8KKyAKICBzdGF0aWMgdm9pZAotIGkzODZfbGludXhfbmV3X3RocmVhZCAocHRp ZF90IHB0aWQpCisgaTM4Nl9saW51eF9kcl9zZXRfY29udHJvbCAodW5zaWduZWQgbG9uZyBjb250 cm9sKQogIHsKLUBAIC05NzYsNiArOTkxLDcgQEAgX2luaXRpYWxpemVfaTM4Nl9saW51eF9uYXQg KHZvaWQpCi0gICBpMzg2X2RyX2xvdy5yZXNldF9hZGRyID0gaTM4Nl9saW51eF9kcl9yZXNldF9h ZGRyOwotICAgaTM4Nl9kcl9sb3cuZ2V0X3N0YXR1cyA9IGkzODZfbGludXhfZHJfZ2V0X3N0YXR1 czsKLSAgIGkzODZfZHJfbG93LnVuc2V0X3N0YXR1cyA9IGkzODZfbGludXhfZHJfdW5zZXRfc3Rh dHVzOwotKyAgaTM4Nl9kcl9sb3cuZGV0YWNoID0gaTM4Nl9saW51eF9kcl9kZXRhY2g7Ci0gICBp Mzg2X3NldF9kZWJ1Z19yZWdpc3Rlcl9sZW5ndGggKDQpOwotIAotICAgLyogT3ZlcnJpZGUgdGhl IGRlZmF1bHQgcHRyYWNlIHJlc3VtZSBtZXRob2QuICAqLwotZGlmZiAtLWdpdCBhL2dkYi9pMzg2 LW5hdC5jIGIvZ2RiL2kzODYtbmF0LmMKLWluZGV4IGVhYTM2NDQuLjA5MjFjN2UgMTAwNjQ0Ci0t LS0gYS9nZGIvaTM4Ni1uYXQuYwotKysrIGIvZ2RiL2kzODYtbmF0LmMKLUBAIC01MzMsNiArNTMz LDE3IEBAIGkzODZfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBp bnQgdHlwZSwKLSAgIHJldHVybiByZXR2YWw7CistICBzdHJ1Y3QgbHdwX2luZm8gKmxwOworLSAg cHRpZF90IHB0aWQ7CisrICBpbnQgaW5mZXJpb3JfcGlkID0gcHRpZF9nZXRfcGlkIChpbmZlcmlv cl9wdGlkKTsKKysgIHN0cnVjdCBpbmZlcmlvciAqaW5mID0gY3VycmVudF9pbmZlcmlvciAoKTsK KysKKysgIC8qIFRoZSBhbWQ2NCBjb3VudGVycGFydCBhbmQgZGVzY3JpcHRpb24gaXMgYW1kNjRf bGludXhfZHJfc2V0X2NvbnRyb2wuICAqLworKyAgaWYgKGluZi0+cGlkICE9IGluZmVyaW9yX3Bp ZCkKKysgICAgeworKyAgICAgIHN0cnVjdCBpMzg2X2RyX21pcnJvciAqZHJfbWlycm9yID0gaTM4 Nl9kcl9taXJyb3JfZ2V0ICgpOworKyAgICAgIGludCBpOworKworKyAgICAgIGlmICghZHJfbWly cm9yLT5hZGRyX3ByZXNldCkKKysJeworKwkgIGRyX21pcnJvci0+YWRkcl9wcmVzZXQgPSAxOwor IAorLSAgaTM4Nl9saW51eF9kcltEUl9DT05UUk9MXSA9IGNvbnRyb2w7CistICBBTExfTFdQUyAo bHAsIHB0aWQpCistICAgIGkzODZfbGludXhfZHJfc2V0IChwdGlkLCBEUl9DT05UUk9MLCBjb250 cm9sKTsKKysJICBmb3IgKGkgPSAwOyBpIDwgRFJfTEFTVEFERFIgLSBEUl9GSVJTVEFERFI7IGkr KykKKysJICAgIGkzODZfbGludXhfZHJfc2V0X2FkZHIgKGksIGRyX21pcnJvci0+YWRkcltpXSk7 CisrCX0KKysgICAgfQorKworKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChp Mzg2X2xpbnV4X2RyX3NldF9jb250cm9sX2NhbGxiYWNrLAorKwkJCQkgICAgICZjb250cm9sKTsK ICB9CiAgCi0rLyogU2VlIHRhcmdldF9kZXRhY2hfd2F0Y2hwb2ludHMuICAqLworLS8qIFNldCBh ZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gQUREUiBpbiBhbGwgTFdQcyBvZiBMV1BfTElT VC4gICovCisrLyogSGVscGVyIGZvciBpMzg2X2xpbnV4X2RyX3NldF9hZGRyLiAgKi8KICsKLStz dGF0aWMgaW50Ci0raTM4Nl9kZXRhY2hfd2F0Y2hwb2ludHMgKHZvaWQpCisrc3RydWN0IGkzODZf bGludXhfZHJfc2V0X2FkZHJfZGF0YQorKyAgeworKyAgICBpbnQgcmVnbnVtOworKyAgICBDT1JF X0FERFIgYWRkcjsKKysgIH07CisrCisrc3RhdGljIHZvaWQKKytpMzg2X2xpbnV4X2RyX3NldF9h ZGRyX2NhbGxiYWNrIChpbnQgdGlkLCB2b2lkICpkYXRhcF92b2lkcCkKICt7Ci0rICBpZiAoaTM4 Nl9kcl9sb3cuZGV0YWNoKQotKyAgICBpMzg2X2RyX2xvdy5kZXRhY2ggKCk7CisrICBjb25zdCBz dHJ1Y3QgaTM4Nl9saW51eF9kcl9zZXRfYWRkcl9kYXRhICpkYXRhcCA9IGRhdGFwX3ZvaWRwOwog KwotKyAgcmV0dXJuIDA7CisrICBpMzg2X2xpbnV4X2RyX3NldCAodGlkLCBEUl9GSVJTVEFERFIg KyBkYXRhcC0+cmVnbnVtLCBkYXRhcC0+YWRkcik7CiArfQogKwotIC8qIFJldHVybiBub24temVy byBpZiB3ZSBjYW4gd2F0Y2ggYSBtZW1vcnkgcmVnaW9uIHRoYXQgc3RhcnRzIGF0Ci0gICAgYWRk cmVzcyBBRERSIGFuZCB3aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVzLiAgKi8KKysvKiBTZXQgYWRk cmVzcyBSRUdOVU0gKHplcm8gYmFzZWQpIHRvIEFERFIgaW4gYWxsIExXUHMgb2YgQ1VSUkVOVF9J TkZFUklPUi4KKysgICAqLwogIAotQEAgLTY4NSw2ICs2OTYsNyBAQCBpMzg2X3VzZV93YXRjaHBv aW50cyAoc3RydWN0IHRhcmdldF9vcHMgKnQpCi0gICB0LT50b19zdG9wcGVkX2RhdGFfYWRkcmVz cyA9IGkzODZfc3RvcHBlZF9kYXRhX2FkZHJlc3M7Ci0gICB0LT50b19pbnNlcnRfd2F0Y2hwb2lu dCA9IGkzODZfaW5zZXJ0X3dhdGNocG9pbnQ7Ci0gICB0LT50b19yZW1vdmVfd2F0Y2hwb2ludCA9 IGkzODZfcmVtb3ZlX3dhdGNocG9pbnQ7Ci0rICB0LT50b19kZXRhY2hfd2F0Y2hwb2ludHMgPSBp Mzg2X2RldGFjaF93YXRjaHBvaW50czsKLSAgIHQtPnRvX2luc2VydF9od19icmVha3BvaW50ID0g aTM4Nl9pbnNlcnRfaHdfYnJlYWtwb2ludDsKLSAgIHQtPnRvX3JlbW92ZV9od19icmVha3BvaW50 ID0gaTM4Nl9yZW1vdmVfaHdfYnJlYWtwb2ludDsKKyBzdGF0aWMgdm9pZAorIGkzODZfbGludXhf ZHJfc2V0X2FkZHIgKGludCByZWdudW0sIENPUkVfQUREUiBhZGRyKQorIHsKKy0gIHN0cnVjdCBs d3BfaW5mbyAqbHA7CistICBwdGlkX3QgcHRpZDsKKysgIHN0cnVjdCBpMzg2X2xpbnV4X2RyX3Nl dF9hZGRyX2RhdGEgZGF0YTsKKyAKKyAgIGdkYl9hc3NlcnQgKHJlZ251bSA+PSAwICYmIHJlZ251 bSA8PSBEUl9MQVNUQUREUiAtIERSX0ZJUlNUQUREUik7CisgCistICBpMzg2X2xpbnV4X2RyW0RS X0ZJUlNUQUREUiArIHJlZ251bV0gPSBhZGRyOworLSAgQUxMX0xXUFMgKGxwLCBwdGlkKQorLSAg ICBpMzg2X2xpbnV4X2RyX3NldCAocHRpZCwgRFJfRklSU1RBRERSICsgcmVnbnVtLCBhZGRyKTsK KysgIGRhdGEucmVnbnVtID0gcmVnbnVtOworKyAgZGF0YS5hZGRyID0gYWRkcjsKKysgIGxpbnV4 X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoaTM4Nl9saW51eF9kcl9zZXRfYWRkcl9jYWxs YmFjaywgJmRhdGEpOwogIH0KLWRpZmYgLS1naXQgYS9nZGIvaTM4Ni1uYXQuaCBiL2dkYi9pMzg2 LW5hdC5oCi1pbmRleCA3MzE3ZTdkLi5lYTkxNGE1IDEwMDY0NAotLS0tIGEvZ2RiL2kzODYtbmF0 LmgKLSsrKyBiL2dkYi9pMzg2LW5hdC5oCi1AQCAtNjIsNiArNjIsMTAgQEAgZXh0ZXJuIHZvaWQg aTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICopOwotICAgICAgIHVuc2V0 X3N0YXR1cyAgICAgICAgICAgICAtLSB1bnNldCB0aGUgc3BlY2lmaWVkIGJpdHMgb2YgdGhlIGRl YnVnCi0gCQkJCSAgc3RhdHVzIChEUjYpIHJlZ2lzdGVyIGZvciBhbGwgTFdQcwotIAotKyAgICAg IGRldGFjaCAgICAgICAgICAgICAgICAgICAtLSBjbGVhciBhbGwgZGVidWcgcmVnaXN0ZXJzIG9m IG9ubHkgdGhlCi0rCQkJCSAgSU5GRVJJT1JfUFRJRCB0YXNrIHdpdGhvdXQgYWZmZWN0aW5nIGFu eQotKwkJCQkgIHJlZ2lzdGVyIGNhY2hlcy4KLSsKLSAgICBBZGRpdGlvbmFsbHksIHRoZSBuYXRp dmUgZmlsZSBzaG91bGQgc2V0IHRoZSBkZWJ1Z19yZWdpc3Rlcl9sZW5ndGgKLSAgICBmaWVsZCB0 byA0IG9yIDggZGVwZW5kaW5nIG9uIHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZCBmb3IKLSAgICBk ZXViZyByZWdpc3RlcnMuICAqLwotQEAgLTczLDYgKzc3LDcgQEAgc3RydWN0IGkzODZfZHJfbG93 X3R5cGUKLSAgICAgdm9pZCAoKnJlc2V0X2FkZHIpIChpbnQpOwotICAgICB1bnNpZ25lZCBsb25n ICgqZ2V0X3N0YXR1cykgKHZvaWQpOwotICAgICB2b2lkICgqdW5zZXRfc3RhdHVzKSAodW5zaWdu ZWQgbG9uZyk7Ci0rICAgIHZvaWQgKCpkZXRhY2gpICh2b2lkKTsKLSAgICAgaW50IGRlYnVnX3Jl Z2lzdGVyX2xlbmd0aDsKLSAgIH07CiAgCi1kaWZmIC0tZ2l0IGEvZ2RiL2luZmNhbGwuYyBiL2dk Yi9pbmZjYWxsLmMKLWluZGV4IDdmNjBlNTYuLmI3YWNmYzYgMTAwNjQ0Ci0tLS0gYS9nZGIvaW5m Y2FsbC5jCi0rKysgYi9nZGIvaW5mY2FsbC5jCi1AQCAtMjI1LDYgKzIyNSw1NiBAQCB2YWx1ZV9h cmdfY29lcmNlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHZhbHVlICphcmcsCi0g ICByZXR1cm4gdmFsdWVfY2FzdCAodHlwZSwgYXJnKTsKKy0vKiBTZXQgYWRkcmVzcyBSRUdOVU0g KHplcm8gYmFzZWQpIHRvIHplcm8gaW4gYWxsIExXUHMgb2YgTFdQX0xJU1QuICAqLworKy8qIFNl dCBhZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gemVybyBpbiBhbGwgTFdQcyBvZiBDVVJS RU5UX0lORkVSSU9SLgorKyAgICovCisgCisgc3RhdGljIHZvaWQKKyBpMzg2X2xpbnV4X2RyX3Jl c2V0X2FkZHIgKGludCByZWdudW0pCitAQCAtNzI2LDM2ICs3NTQsNTQgQEAgaTM4Nl9saW51eF9k cl9yZXNldF9hZGRyIChpbnQgcmVnbnVtKQorIHN0YXRpYyB1bnNpZ25lZCBsb25nCisgaTM4Nl9s aW51eF9kcl9nZXRfc3RhdHVzICh2b2lkKQorIHsKKy0gIHJldHVybiBpMzg2X2xpbnV4X2RyX2dl dCAoaW5mZXJpb3JfcHRpZCwgRFJfU1RBVFVTKTsKKysgIGludCB0aWQ7CisrCisrICB0aWQgPSBU SURHRVQgKGluZmVyaW9yX3B0aWQpOworKyAgaWYgKHRpZCA9PSAwKQorKyAgICB0aWQgPSBQSURH RVQgKGluZmVyaW9yX3B0aWQpOworKworKyAgcmV0dXJuIGkzODZfbGludXhfZHJfZ2V0ICh0aWQs IERSX1NUQVRVUyk7CiAgfQogIAotKy8qIENhbGwgZ251LWlmdW5jIChTVFRfR05VX0lGVU5DIC0g YSBmdW5jdGlvbiByZXR1cm5pbmcgYWRkcmVzc3Mgb2YgYSByZWFsCi0rICAgZnVuY3Rpb24gdG8g Y2FsbCkuICBQQyBpcyB0aGUgZ251LWlmdW5jIGZ1bmN0aW9uIGVudHJ5LiAgRnVuY3Rpb24gcmV0 dXJucwotKyAgIGZ1bmN0aW9uIGVudHJ5IG9mIHRoZSBnbnUtaWZ1bmMtcmVzb2x2ZWQgZnVuY3Rp b24gdG8gY2FsbC4gIElmIFJFVFZBTF9UWVBFUAotKyAgIGlzIG5vdCBOVUxMIGZpbGwgaW4gKlJF VFZBTF9UWVBFUCB3aXRoIHJldHVybiB0eXBlIG9mIHRoZSBnbnUtaWZ1bmMtcmVzb2x2ZWQKLSsg ICBmdW5jdGlvbiB0byBjYWxsLiAgS2VlcCAqUkVUVkFMX1RZUEVQIGludGFjdCBpZiB0aGUgcmV0 dXJuIHR5cGUgY291bGQgbm90IGJlCi0rICAgZm91bmQuICAqLworLS8qIFVuc2V0IE1BU0sgYml0 cyBpbiBEUl9TVEFUVVMgaW4gYWxsIExXUHMgb2YgTFdQX0xJU1QuICAqLworKy8qIEhlbHBlciBm b3IgaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXMuICAqLworIAorIHN0YXRpYyB2b2lkCistaTM4 Nl9saW51eF9kcl91bnNldF9zdGF0dXMgKHVuc2lnbmVkIGxvbmcgbWFzaykKKytpMzg2X2xpbnV4 X2RyX3Vuc2V0X3N0YXR1c19jYWxsYmFjayAoaW50IHRpZCwgdm9pZCAqbWFza192b2lkcCkKKyB7 CistICBzdHJ1Y3QgbHdwX2luZm8gKmxwOworLSAgcHRpZF90IHB0aWQ7CistCistICBBTExfTFdQ UyAobHAsIHB0aWQpCistICAgIHsKKy0gICAgICB1bnNpZ25lZCBsb25nIHZhbHVlOworKyAgdW5z aWduZWQgbG9uZyBtYXNrID0gKih1bnNpZ25lZCBsb25nICopIG1hc2tfdm9pZHA7CisrICB1bnNp Z25lZCBsb25nIHZhbHVlOworICAgICAgIAorLSAgICAgIHZhbHVlID0gaTM4Nl9saW51eF9kcl9n ZXQgKHB0aWQsIERSX1NUQVRVUyk7CistICAgICAgdmFsdWUgJj0gfm1hc2s7CistICAgICAgaTM4 Nl9saW51eF9kcl9zZXQgKHB0aWQsIERSX1NUQVRVUywgdmFsdWUpOworLSAgICB9CisrICB2YWx1 ZSA9IGkzODZfbGludXhfZHJfZ2V0ICh0aWQsIERSX1NUQVRVUyk7CisrICB2YWx1ZSAmPSB+bWFz azsKKysgIGkzODZfbGludXhfZHJfc2V0ICh0aWQsIERSX1NUQVRVUywgdmFsdWUpOworK30KICsK LStzdGF0aWMgQ09SRV9BRERSCi0rZ251X2lmdW5jX3Jlc29sdmUgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBDT1JFX0FERFIgcGMpCisrLyogVW5zZXQgTUFTSyBiaXRzIGluIERSX1NUQVRVUyBp biBhbGwgTFdQcyBvZiBDVVJSRU5UX0lORkVSSU9SLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2kz ODZfbGludXhfZHJfdW5zZXRfc3RhdHVzICh1bnNpZ25lZCBsb25nIG1hc2spCiArewotKyAgY2hh ciAqbmFtZV9hdF9wYzsKLSsgIENPUkVfQUREUiBzdGFydF9hdF9wYywgYWRkcmVzczsKLSsgIHN0 cnVjdCB0eXBlICpmdW5jX2Z1bmNfdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0 aW5fZnVuY19mdW5jOwotKyAgc3RydWN0IHZhbHVlICpmdW5jdGlvbiwgKmFkZHJlc3NfdmFsOwor KyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChpMzg2X2xpbnV4X2RyX3Vuc2V0 X3N0YXR1c19jYWxsYmFjaywKKysJCQkJICAgICAmbWFzayk7CisgfQorIAorIHN0YXRpYyB2b2lk CisgaTM4Nl9saW51eF9uZXdfdGhyZWFkIChwdGlkX3QgcHRpZCkKKyB7CistICBpbnQgaTsKKysg IHN0cnVjdCBpMzg2X2RyX21pcnJvciAqZHJfbWlycm9yID0gaTM4Nl9kcl9taXJyb3JfZ2V0ICgp OworKyAgaW50IGksIHRpZDsKICsKLSsgIGlmIChmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKHBj LCAmbmFtZV9hdF9wYywgJnN0YXJ0X2F0X3BjLCBOVUxMKQotKyAgICAgICYmIHN0YXJ0X2F0X3Bj ID09IHBjKQotKyAgICB7Ci0rICAgICAgaWYgKHJlc29sdmVfZ251X2lmdW5jIChuYW1lX2F0X3Bj LCAmYWRkcmVzcykpCi0rCXJldHVybiBhZGRyZXNzOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIG5h bWVfYXRfcGMgPSBOVUxMOworKyAgLyogVmVyaWZ5IERSX01JUlJPUiBpcyB2YWxpZC4gICovCisr ICBnZGJfYXNzZXJ0IChQSURHRVQgKHB0aWQpID09IFBJREdFVCAoaW5mZXJpb3JfcHRpZCkpOwor KworKyAgdGlkID0gVElER0VUIChwdGlkKTsKKysgIGlmICh0aWQgPT0gMCkKKysgICAgdGlkID0g UElER0VUIChwdGlkKTsKKyAKKy0gIGZvciAoaSA9IERSX0ZJUlNUQUREUjsgaSA8PSBEUl9MQVNU QUREUjsgaSsrKQorLSAgICBpMzg2X2xpbnV4X2RyX3NldCAocHRpZCwgaSwgaTM4Nl9saW51eF9k cltpXSk7CisrICBmb3IgKGkgPSAwOyBpIDwgRFJfTEFTVEFERFIgLSBEUl9GSVJTVEFERFI7IGkr KykKKysgICAgaTM4Nl9saW51eF9kcl9zZXQgKHRpZCwgRFJfRklSU1RBRERSICsgaSwgZHJfbWly cm9yLT5hZGRyW2ldKTsKKyAKKy0gIGkzODZfbGludXhfZHJfc2V0IChwdGlkLCBEUl9DT05UUk9M LCBpMzg2X2xpbnV4X2RyW0RSX0NPTlRST0xdKTsKKysgIGkzODZfbGludXhfZHJfc2V0ICh0aWQs IERSX0NPTlRST0wsIGRyX21pcnJvci0+Y29udHJvbCk7CisgfQorIAwKKyAKK2RpZmYgLS1naXQg YS9nZGIvaTM4Ni1uYXQuYyBiL2dkYi9pMzg2LW5hdC5jCitpbmRleCBlYWEzNjQ0Li43ZjMyYmQy IDEwMDY0NAorLS0tIGEvZ2RiL2kzODYtbmF0LmMKKysrKyBiL2dkYi9pMzg2LW5hdC5jCitAQCAt MjUsNiArMjUsNyBAQAorICNpbmNsdWRlICJnZGJjbWQuaCIKKyAjaW5jbHVkZSAidGFyZ2V0Lmgi CisgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKysjaW5jbHVkZSAiaW5mZXJpb3IuaCIKKyAKKyAv KiBTdXBwb3J0IGZvciBoYXJkd2FyZSB3YXRjaHBvaW50cyBhbmQgYnJlYWtwb2ludHMgdXNpbmcg dGhlIGkzODYKKyAgICBkZWJ1ZyByZWdpc3RlcnMuCitAQCAtNDQsNyArNDUsNiBAQCBzdHJ1Y3Qg aTM4Nl9kcl9sb3dfdHlwZSBpMzg2X2RyX2xvdzsKKyAjZGVmaW5lIFRBUkdFVF9IQVNfRFJfTEVO XzggKGkzODZfZHJfbG93LmRlYnVnX3JlZ2lzdGVyX2xlbmd0aCA9PSA4KQorIAorIC8qIERlYnVn IHJlZ2lzdGVycycgaW5kaWNlcy4gICovCistI2RlZmluZSBEUl9OQUREUgk0CS8qIFRoZSBudW1i ZXIgb2YgZGVidWcgYWRkcmVzcyByZWdpc3RlcnMuICAqLworICNkZWZpbmUgRFJfU1RBVFVTCTYJ LyogSW5kZXggb2YgZGVidWcgc3RhdHVzIHJlZ2lzdGVyIChEUjYpLiAgKi8KKyAjZGVmaW5lIERS X0NPTlRST0wJNwkvKiBJbmRleCBvZiBkZWJ1ZyBjb250cm9sIHJlZ2lzdGVyIChEUjcpLiAqLwor IAorQEAgLTExMSw0OSArMTExLDYwIEBAIHN0cnVjdCBpMzg2X2RyX2xvd190eXBlIGkzODZfZHJf bG93OworIAorIC8qIFRoZSBJJ3RoIGRlYnVnIHJlZ2lzdGVyIGlzIHZhY2FudCBpZiBpdHMgTG9j YWwgYW5kIEdsb2JhbCBFbmFibGUKKyAgICBiaXRzIGFyZSByZXNldCBpbiB0aGUgRGVidWcgQ29u dHJvbCByZWdpc3Rlci4gICovCistI2RlZmluZSBJMzg2X0RSX1ZBQ0FOVChpKSBcCistICAoKGRy X2NvbnRyb2xfbWlycm9yICYgKDMgPDwgKERSX0VOQUJMRV9TSVpFICogKGkpKSkpID09IDApCisr Cisrc3RhdGljIGlubGluZSBpbnQKKytpMzg2X2RyX3ZhY2FudCAoc3RydWN0IGkzODZfZHJfbWly cm9yICpkcl9taXJyb3IsIGludCBpKQorK3sKKysgIHJldHVybiAoZHJfbWlycm9yLT5jb250cm9s ICYgKDMgPDwgKERSX0VOQUJMRV9TSVpFICogaSkpKSA9PSAwOworK30KKyAKKyAvKiBMb2NhbGx5 IGVuYWJsZSB0aGUgYnJlYWsvd2F0Y2hwb2ludCBpbiB0aGUgSSd0aCBkZWJ1ZyByZWdpc3Rlci4g ICovCistI2RlZmluZSBJMzg2X0RSX0xPQ0FMX0VOQUJMRShpKSBcCistICBkcl9jb250cm9sX21p cnJvciB8PSAoMSA8PCAoRFJfTE9DQUxfRU5BQkxFX1NISUZUICsgRFJfRU5BQkxFX1NJWkUgKiAo aSkpKQorIAorLS8qIEdsb2JhbGx5IGVuYWJsZSB0aGUgYnJlYWsvd2F0Y2hwb2ludCBpbiB0aGUg SSd0aCBkZWJ1ZyByZWdpc3Rlci4gICovCistI2RlZmluZSBJMzg2X0RSX0dMT0JBTF9FTkFCTEUo aSkgXAorLSAgZHJfY29udHJvbF9taXJyb3IgfD0gKDEgPDwgKERSX0dMT0JBTF9FTkFCTEVfU0hJ RlQgKyBEUl9FTkFCTEVfU0laRSAqIChpKSkpCisrc3RhdGljIGlubGluZSB2b2lkCisraTM4Nl9k cl9sb2NhbF9lbmFibGUgKHN0cnVjdCBpMzg2X2RyX21pcnJvciAqZHJfbWlycm9yLCBpbnQgaSkK Kyt7CisrICBkcl9taXJyb3ItPmNvbnRyb2wgfD0gMSA8PCAoRFJfTE9DQUxfRU5BQkxFX1NISUZU ICsgRFJfRU5BQkxFX1NJWkUgKiBpKTsKKyt9CisgCisgLyogRGlzYWJsZSB0aGUgYnJlYWsvd2F0 Y2hwb2ludCBpbiB0aGUgSSd0aCBkZWJ1ZyByZWdpc3Rlci4gICovCistI2RlZmluZSBJMzg2X0RS X0RJU0FCTEUoaSkgXAorLSAgZHJfY29udHJvbF9taXJyb3IgJj0gfigzIDw8IChEUl9FTkFCTEVf U0laRSAqIChpKSkpCisrCisrc3RhdGljIGlubGluZSB2b2lkCisraTM4Nl9kcl9kaXNhYmxlIChz dHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21pcnJvciwgaW50IGkpCisreworKyAgZHJfbWlycm9y LT5jb250cm9sICY9IH4oMyA8PCAoRFJfRU5BQkxFX1NJWkUgKiBpKSk7CisrfQorIAorIC8qIFNl dCBpbiBEUjcgdGhlIFJXIGFuZCBMRU4gZmllbGRzIGZvciB0aGUgSSd0aCBkZWJ1ZyByZWdpc3Rl ci4gICovCistI2RlZmluZSBJMzg2X0RSX1NFVF9SV19MRU4oaSxyd2xlbikgXAorLSAgZG8geyBc CistICAgIGRyX2NvbnRyb2xfbWlycm9yICY9IH4oMHgwZiA8PCAoRFJfQ09OVFJPTF9TSElGVCtE Ul9DT05UUk9MX1NJWkUqKGkpKSk7ICAgXAorLSAgICBkcl9jb250cm9sX21pcnJvciB8PSAoKHJ3 bGVuKSA8PCAoRFJfQ09OVFJPTF9TSElGVCtEUl9DT05UUk9MX1NJWkUqKGkpKSk7IFwKKy0gIH0g d2hpbGUgKDApCisrCisrc3RhdGljIGlubGluZSB2b2lkCisraTM4Nl9kcl9zZXRfcndfbGVuIChz dHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21pcnJvciwgaW50IGksIHVuc2lnbmVkIHJ3bGVuKQor K3sKKysgIGRyX21pcnJvci0+Y29udHJvbCAmPSB+KDB4MGYgPDwgKERSX0NPTlRST0xfU0hJRlQg KyBEUl9DT05UUk9MX1NJWkUgKiBpKSk7CisrICBkcl9taXJyb3ItPmNvbnRyb2wgfD0gcndsZW4g PDwgKERSX0NPTlRST0xfU0hJRlQgKyBEUl9DT05UUk9MX1NJWkUgKiBpKTsKKyt9CisgCisgLyog R2V0IGZyb20gRFI3IHRoZSBSVyBhbmQgTEVOIGZpZWxkcyBmb3IgdGhlIEkndGggZGVidWcgcmVn aXN0ZXIuICAqLworLSNkZWZpbmUgSTM4Nl9EUl9HRVRfUldfTEVOKGkpIFwKKy0gICgoZHJfY29u dHJvbF9taXJyb3IgPj4gKERSX0NPTlRST0xfU0hJRlQgKyBEUl9DT05UUk9MX1NJWkUgKiAoaSkp KSAmIDB4MGYpCisrCisrc3RhdGljIGlubGluZSB1bnNpZ25lZAorK2kzODZfZHJfZ2V0X3J3X2xl biAoc3RydWN0IGkzODZfZHJfbWlycm9yICpkcl9taXJyb3IsIGludCBpKQorK3sKKysgIHJldHVy biAoKGRyX21pcnJvci0+Y29udHJvbCA+PiAoRFJfQ09OVFJPTF9TSElGVCArIERSX0NPTlRST0xf U0laRSAqIGkpKQorKwkgICYgMHgwZik7CisrfQorIAorIC8qIE1hc2sgdGhhdCB0aGlzIEkndGgg d2F0Y2hwb2ludCBoYXMgdHJpZ2dlcmVkLiAgKi8KKyAjZGVmaW5lIEkzODZfRFJfV0FUQ0hfTUFT SyhpKQkoMSA8PCAoaSkpCisgCisgLyogRGlkIHRoZSB3YXRjaHBvaW50IHdob3NlIGFkZHJlc3Mg aXMgaW4gdGhlIEkndGggcmVnaXN0ZXIgYnJlYWs/ICAqLworLSNkZWZpbmUgSTM4Nl9EUl9XQVRD SF9ISVQoaSkJKGRyX3N0YXR1c19taXJyb3IgJiBJMzg2X0RSX1dBVENIX01BU0sgKGkpKQorK3N0 YXRpYyBpbmxpbmUgaW50CisraTM4Nl9kcl93YXRjaF9oaXQgKHN0cnVjdCBpMzg2X2RyX21pcnJv ciAqZHJfbWlycm9yLCBpbnQgaSkKKyt7CisrICByZXR1cm4gKGRyX21pcnJvci0+c3RhdHVzICYg STM4Nl9EUl9XQVRDSF9NQVNLIChpKSkgIT0gMDsKKyt9CisgCisgLyogQSBtYWNybyB0byBsb29w IG92ZXIgYWxsIGRlYnVnIHJlZ2lzdGVycy4gICovCisgI2RlZmluZSBBTExfREVCVUdfUkVHSVNU RVJTKGkpCWZvciAoaSA9IDA7IGkgPCBEUl9OQUREUjsgaSsrKQorIAorLS8qIE1pcnJvciB0aGUg aW5mZXJpb3IncyBEUmkgcmVnaXN0ZXJzLiAgV2Uga2VlcCB0aGUgc3RhdHVzIGFuZAorLSAgIGNv bnRyb2wgcmVnaXN0ZXJzIHNlcGFyYXRlZCBiZWNhdXNlIHRoZXkgZG9uJ3QgaG9sZCBhZGRyZXNz ZXMuICAqLworLXN0YXRpYyBDT1JFX0FERFIgZHJfbWlycm9yW0RSX05BRERSXTsKKy1zdGF0aWMg dW5zaWduZWQgbG9uZyBkcl9zdGF0dXNfbWlycm9yLCBkcl9jb250cm9sX21pcnJvcjsKKy0KKy0v KiBSZWZlcmVuY2UgY291bnRzIGZvciBlYWNoIGRlYnVnIHJlZ2lzdGVyLiAgKi8KKy1zdGF0aWMg aW50IGRyX3JlZl9jb3VudFtEUl9OQUREUl07CistCisgLyogV2hldGhlciBvciBub3QgdG8gcHJp bnQgdGhlIG1pcnJvcmVkIGRlYnVnIHJlZ2lzdGVycy4gICovCisgc3RhdGljIGludCBtYWludF9z aG93X2RyOworIAorQEAgLTE5NSwyMSArMjA2LDgwIEBAIHN0YXRpYyBpbnQgaTM4Nl9oYW5kbGVf bm9uYWxpZ25lZF93YXRjaHBvaW50IChpMzg2X3dwX29wX3Qgd2hhdCwKKyAKKyAvKiBJbXBsZW1l bnRhdGlvbi4gICovCisgCisrLyogUGVyLWluZmVyaW9yIGRhdGEga2V5LiAgKi8KKytzdGF0aWMg Y29uc3Qgc3RydWN0IGluZmVyaW9yX2RhdGEgKmkzODZfaW5mZXJpb3JfZGF0YTsKKysKKytzdHJ1 Y3QgaTM4Nl9pbmZlcmlvcl9kYXRhCisrICB7CisrICAgIC8qIENvcHkgb2YgaTM4NiBoYXJkd2Fy ZSBkZWJ1ZyByZWdpc3RlcnMgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuICAqLworKyAgICBzdHJ1 Y3QgaTM4Nl9kcl9taXJyb3IgZHJfbWlycm9yOworKyAgfTsKKysKKytzdGF0aWMgdm9pZAorK2kz ODZfaW5mZXJpb3JfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgaW5mZXJpb3IgKmluZiwgdm9pZCAqYXJn KQorK3sKKysgIHN0cnVjdCBpMzg2X2luZmVyaW9yX2RhdGEgKmluZl9kYXRhID0gYXJnOworKwor KyAgeGZyZWUgKGluZl9kYXRhKTsKKyt9CisrCisrc3RhdGljIHN0cnVjdCBpMzg2X2luZmVyaW9y X2RhdGEgKgorK2kzODZfaW5mZXJpb3JfZGF0YV9nZXQgKHZvaWQpCisreworKyAgc3RydWN0IGlu ZmVyaW9yICppbmYgPSBjdXJyZW50X2luZmVyaW9yICgpOworKyAgc3RydWN0IGkzODZfaW5mZXJp b3JfZGF0YSAqaW5mX2RhdGE7CisrCisrICBpbmZfZGF0YSA9IGluZmVyaW9yX2RhdGEgKGluZiwg aTM4Nl9pbmZlcmlvcl9kYXRhKTsKKysgIGlmIChpbmZfZGF0YSA9PSBOVUxMKQorKyAgICB7Cisr ICAgICAgaW5mX2RhdGEgPSB4emFsbG9jIChzaXplb2YgKCppbmZfZGF0YSkpOworKyAgICAgIHNl dF9pbmZlcmlvcl9kYXRhIChjdXJyZW50X2luZmVyaW9yICgpLCBpMzg2X2luZmVyaW9yX2RhdGEs IGluZl9kYXRhKTsKKysgICAgfQorKworKyAgaWYgKGluZi0+cGlkICE9IHB0aWRfZ2V0X3BpZCAo aW5mZXJpb3JfcHRpZCkpCisrICAgIHsKKysgICAgICBzdGF0aWMgc3RydWN0IGkzODZfaW5mZXJp b3JfZGF0YSBkZXRhY2hlZF9pbmZfZGF0YV9sb2NhbDsKKysgICAgICBzdGF0aWMgaW50IGRldGFj aGVkX2luZl9waWQgPSAtMTsKKysKKysgICAgICBpZiAoZGV0YWNoZWRfaW5mX3BpZCAhPSBwdGlk X2dldF9waWQgKGluZmVyaW9yX3B0aWQpKQorKwl7CisrCSAgZGV0YWNoZWRfaW5mX3BpZCA9IHB0 aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCk7CisrCisrCSAgLyogRm9ya2VkIHByb2Nlc3NlcyBn ZXQgYSBjb3B5IG9mIHRoZSBkZWJ1ZyByZWdpc3RlcnMuICAqLworKwkgIG1lbWNweSAoJmRldGFj aGVkX2luZl9kYXRhX2xvY2FsLCBpbmZfZGF0YSwKKysJCSAgc2l6ZW9mIChkZXRhY2hlZF9pbmZf ZGF0YV9sb2NhbCkpOworKwkgIGRldGFjaGVkX2luZl9kYXRhX2xvY2FsLmRyX21pcnJvci5hZGRy X3ByZXNldCA9IDA7CisrCX0KKysKKysgICAgICByZXR1cm4gJmRldGFjaGVkX2luZl9kYXRhX2xv Y2FsOworKyAgICB9CisrCisrICByZXR1cm4gaW5mX2RhdGE7CisrfQorKworIC8qIENsZWFyIHRo ZSByZWZlcmVuY2UgY291bnRzIGFuZCBmb3JnZXQgZXZlcnl0aGluZyB3ZSBrbmV3IGFib3V0IHRo ZQorICAgIGRlYnVnIHJlZ2lzdGVycy4gICovCisgCisrc3RydWN0IGkzODZfZHJfbWlycm9yICoK KytpMzg2X2RyX21pcnJvcl9nZXQgKHZvaWQpCisreworKyAgcmV0dXJuICZpMzg2X2luZmVyaW9y X2RhdGFfZ2V0ICgpLT5kcl9taXJyb3I7CisrfQorKworIHZvaWQKKyBpMzg2X2NsZWFudXBfZHJl Z3MgKHZvaWQpCisgeworKyAgc3RydWN0IGkzODZfZHJfbWlycm9yICpkcl9taXJyb3IgPSBpMzg2 X2RyX21pcnJvcl9nZXQgKCk7CisgICBpbnQgaTsKKyAKKyAgIEFMTF9ERUJVR19SRUdJU1RFUlMo aSkKKyAgICAgeworLSAgICAgIGRyX21pcnJvcltpXSA9IDA7CistICAgICAgZHJfcmVmX2NvdW50 W2ldID0gMDsKKysgICAgICBkcl9taXJyb3ItPmFkZHJbaV0gPSAwOworKyAgICAgIGRyX21pcnJv ci0+cmVmX2NvdW50W2ldID0gMDsKKyAgICAgfQorLSAgZHJfY29udHJvbF9taXJyb3IgPSAwOwor LSAgZHJfc3RhdHVzX21pcnJvciAgPSAwOworKyAgZHJfbWlycm9yLT5hZGRyX3ByZXNldCA9IDA7 CisrICBkcl9taXJyb3ItPmNvbnRyb2wgPSAwOworKyAgZHJfbWlycm9yLT5zdGF0dXMgPSAwOwor IH0KKyAKKyAvKiBQcmludCB0aGUgdmFsdWVzIG9mIHRoZSBtaXJyb3JlZCBkZWJ1ZyByZWdpc3Rl cnMuICBUaGlzIGlzIGNhbGxlZAorQEAgLTIyMCw2ICsyOTAsNyBAQCBzdGF0aWMgdm9pZAorIGkz ODZfc2hvd19kciAoY29uc3QgY2hhciAqZnVuYywgQ09SRV9BRERSIGFkZHIsCisgCSAgICAgIGlu dCBsZW4sIGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSkKKyB7CisrICBzdHJ1Y3QgaTM4Nl9k cl9taXJyb3IgKmRyX21pcnJvciA9IGkzODZfZHJfbWlycm9yX2dldCAoKTsKKyAgIGludCBhZGRy X3NpemUgPSBnZGJhcmNoX2FkZHJfYml0ICh0YXJnZXRfZ2RiYXJjaCkgLyA4OworICAgaW50IGk7 CisgCitAQCAtMjM5LDEzICszMTAsMTYgQEAgaTM4Nl9zaG93X2RyIChjb25zdCBjaGFyICpmdW5j LCBDT1JFX0FERFIgYWRkciwKKyAJCQkJOiAiPz91bmtub3duPz8iKSkpKTsKKyAgIHB1dHNfdW5m aWx0ZXJlZCAoIjpcbiIpOworICAgcHJpbnRmX3VuZmlsdGVyZWQgKCJcdENPTlRST0wgKERSNyk6 ICVzICAgICAgICAgIFNUQVRVUyAoRFI2KTogJXNcbiIsCistCQkgICAgIHBoZXggKGRyX2NvbnRy b2xfbWlycm9yLCA4KSwgcGhleCAoZHJfc3RhdHVzX21pcnJvciwgOCkpOworKwkJICAgICBwaGV4 IChkcl9taXJyb3ItPmNvbnRyb2wsIDgpLAorKwkJICAgICBwaGV4IChkcl9taXJyb3ItPnN0YXR1 cywgOCkpOworICAgQUxMX0RFQlVHX1JFR0lTVEVSUyhpKQorICAgICB7CisgICAgICAgcHJpbnRm X3VuZmlsdGVyZWQgKCJcCisgXHREUiVkOiBhZGRyPTB4JXMsIHJlZi5jb3VudD0lZCAgRFIlZDog YWRkcj0weCVzLCByZWYuY291bnQ9JWRcbiIsCistCQkgaSwgcGhleCAoZHJfbWlycm9yW2ldLCBh ZGRyX3NpemUpLCBkcl9yZWZfY291bnRbaV0sCistCQkgaSsxLCBwaGV4IChkcl9taXJyb3JbaSsx XSwgYWRkcl9zaXplKSwgZHJfcmVmX2NvdW50W2krMV0pOworKwkJCSBpLCBwaGV4IChkcl9taXJy b3ItPmFkZHJbaV0sIGFkZHJfc2l6ZSksCisrCQkJIGRyX21pcnJvci0+cmVmX2NvdW50W2ldLCBp ICsgMSwKKysJCQkgcGhleCAoZHJfbWlycm9yLT5hZGRyW2kgKyAxXSwgYWRkcl9zaXplKSwKKysJ CQkgZHJfbWlycm9yLT5yZWZfY291bnRbaSArIDFdKTsKKyAgICAgICBpKys7CisgICAgIH0KKyB9 CitAQCAtMzExLDYgKzM4NSw3IEBAIEludmFsaWQgaGFyZHdhcmUgYnJlYWtwb2ludCBsZW5ndGgg JWQgaW4gaTM4Nl9sZW5ndGhfYW5kX3J3X2JpdHMuXG4iKSwgbGVuKTsKKyBzdGF0aWMgaW50Cisg aTM4Nl9pbnNlcnRfYWxpZ25lZF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgdW5zaWduZWQg bGVuX3J3X2JpdHMpCisgeworKyAgc3RydWN0IGkzODZfZHJfbWlycm9yICpkcl9taXJyb3IgPSBp Mzg2X2RyX21pcnJvcl9nZXQgKCk7CisgICBpbnQgaTsKKyAKKyAgIGlmICghaTM4Nl9kcl9sb3cu c2V0X2FkZHIgfHwgIWkzODZfZHJfbG93LnNldF9jb250cm9sKQorQEAgLTMyMSwxMSArMzk2LDEw IEBAIGkzODZfaW5zZXJ0X2FsaWduZWRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIHVuc2ln bmVkIGxlbl9yd19iaXRzKQorICAgICAgcmV1c2UgaXQgZm9yIHRoaXMgd2F0Y2hwb2ludCBhcyB3 ZWxsIChhbmQgc2F2ZSBhIHJlZ2lzdGVyKS4gICovCisgICBBTExfREVCVUdfUkVHSVNURVJTKGkp CisgICAgIHsKKy0gICAgICBpZiAoIUkzODZfRFJfVkFDQU5UIChpKQorLQkgICYmIGRyX21pcnJv cltpXSA9PSBhZGRyCistCSAgJiYgSTM4Nl9EUl9HRVRfUldfTEVOIChpKSA9PSBsZW5fcndfYml0 cykKKysgICAgICBpZiAoIWkzODZfZHJfdmFjYW50IChkcl9taXJyb3IsIGkpICYmIGRyX21pcnJv ci0+YWRkcltpXSA9PSBhZGRyCisrCSAgJiYgaTM4Nl9kcl9nZXRfcndfbGVuIChkcl9taXJyb3Is IGkpID09IGxlbl9yd19iaXRzKQorIAl7CistCSAgZHJfcmVmX2NvdW50W2ldKys7CisrCSAgZHJf bWlycm9yLT5yZWZfY291bnRbaV0rKzsKKyAJICByZXR1cm4gMDsKKyAJfQorICAgICB9CitAQCAt MzMzLDcgKzQwNyw3IEBAIGkzODZfaW5zZXJ0X2FsaWduZWRfd2F0Y2hwb2ludCAoQ09SRV9BRERS IGFkZHIsIHVuc2lnbmVkIGxlbl9yd19iaXRzKQorICAgLyogTmV4dCwgbG9vayBmb3IgYSB2YWNh bnQgZGVidWcgcmVnaXN0ZXIuICAqLworICAgQUxMX0RFQlVHX1JFR0lTVEVSUyhpKQorICAgICB7 CistICAgICAgaWYgKEkzODZfRFJfVkFDQU5UIChpKSkKKysgICAgICBpZiAoaTM4Nl9kcl92YWNh bnQgKGRyX21pcnJvciwgaSkpCisgCWJyZWFrOworICAgICB9CisgCitAQCAtMzQ0LDkgKzQxOCw5 IEBAIGkzODZfaW5zZXJ0X2FsaWduZWRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIHVuc2ln bmVkIGxlbl9yd19iaXRzKQorICAgLyogTm93IHNldCB1cCB0aGUgcmVnaXN0ZXIgSSB0byB3YXRj aCBvdXIgcmVnaW9uLiAgKi8KKyAKKyAgIC8qIFJlY29yZCB0aGUgaW5mbyBpbiBvdXIgbG9jYWwg bWlycm9yZWQgYXJyYXkuICAqLworLSAgZHJfbWlycm9yW2ldID0gYWRkcjsKKy0gIGRyX3JlZl9j b3VudFtpXSA9IDE7CistICBJMzg2X0RSX1NFVF9SV19MRU4gKGksIGxlbl9yd19iaXRzKTsKKysg IGRyX21pcnJvci0+YWRkcltpXSA9IGFkZHI7CisrICBkcl9taXJyb3ItPnJlZl9jb3VudFtpXSA9 IDE7CisrICBpMzg2X2RyX3NldF9yd19sZW4gKGRyX21pcnJvciwgaSwgbGVuX3J3X2JpdHMpOwor ICAgLyogTm90ZTogd2Ugb25seSBlbmFibGUgdGhlIHdhdGNocG9pbnQgbG9jYWxseSwgaS5lLiBp biB0aGUgY3VycmVudAorICAgICAgdGFzay4gIEN1cnJlbnRseSwgbm8gaTM4NiB0YXJnZXQgYWxs b3dzIG9yIHN1cHBvcnRzIGdsb2JhbAorICAgICAgd2F0Y2hwb2ludHM7IGhvd2V2ZXIsIGlmIGFu eSB0YXJnZXQgd291bGQgd2FudCB0aGF0IGluIHRoZQorQEAgLTM1NCwxMyArNDI4LDEzIEBAIGkz ODZfaW5zZXJ0X2FsaWduZWRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIHVuc2lnbmVkIGxl bl9yd19iaXRzKQorICAgICAgdG8gZW5hYmxlIHdhdGNocG9pbnRzIGdsb2JhbGx5IG9yIGxvY2Fs bHksIGFuZCB0aGUgY29kZSBiZWxvdworICAgICAgc2hvdWxkIHVzZSBnbG9iYWwgb3IgbG9jYWwg ZW5hYmxlIGFuZCBzbG93LWRvd24gZmxhZ3MgYXMKKyAgICAgIGFwcHJvcHJpYXRlLiAgKi8KKy0g IEkzODZfRFJfTE9DQUxfRU5BQkxFIChpKTsKKy0gIGRyX2NvbnRyb2xfbWlycm9yIHw9IERSX0xP Q0FMX1NMT1dET1dOOworLSAgZHJfY29udHJvbF9taXJyb3IgJj0gSTM4Nl9EUl9DT05UUk9MX01B U0s7CisrICBpMzg2X2RyX2xvY2FsX2VuYWJsZSAoZHJfbWlycm9yLCBpKTsKKysgIGRyX21pcnJv ci0+Y29udHJvbCB8PSBEUl9MT0NBTF9TTE9XRE9XTjsKKysgIGRyX21pcnJvci0+Y29udHJvbCAm PSBJMzg2X0RSX0NPTlRST0xfTUFTSzsKKyAKKyAgIC8qIEZpbmFsbHksIGFjdHVhbGx5IHBhc3Mg dGhlIGluZm8gdG8gdGhlIGluZmVyaW9yLiAgKi8KKyAgIGkzODZfZHJfbG93LnNldF9hZGRyIChp LCBhZGRyKTsKKy0gIGkzODZfZHJfbG93LnNldF9jb250cm9sIChkcl9jb250cm9sX21pcnJvcik7 CisrICBpMzg2X2RyX2xvdy5zZXRfY29udHJvbCAoZHJfbWlycm9yLT5jb250cm9sKTsKKyAKKyAg IC8qIE9ubHkgYSBzYW5pdHkgY2hlY2sgZm9yIGxlZnRvdmVyIGJpdHMgKHNldCBwb3NzaWJseSBv bmx5IGJ5IGluZmVyaW9yKS4gICovCisgICBpZiAoaTM4Nl9kcl9sb3cudW5zZXRfc3RhdHVzKQor QEAgLTM3OCwyMSArNDUyLDIxIEBAIGkzODZfaW5zZXJ0X2FsaWduZWRfd2F0Y2hwb2ludCAoQ09S RV9BRERSIGFkZHIsIHVuc2lnbmVkIGxlbl9yd19iaXRzKQorIHN0YXRpYyBpbnQKKyBpMzg2X3Jl bW92ZV9hbGlnbmVkX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCB1bnNpZ25lZCBsZW5fcndf Yml0cykKKyB7CisrICBzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21pcnJvciA9IGkzODZfZHJf bWlycm9yX2dldCAoKTsKKyAgIGludCBpLCByZXR2YWwgPSAtMTsKKyAKKyAgIEFMTF9ERUJVR19S RUdJU1RFUlMoaSkKKyAgICAgeworLSAgICAgIGlmICghSTM4Nl9EUl9WQUNBTlQgKGkpCistCSAg JiYgZHJfbWlycm9yW2ldID09IGFkZHIKKy0JICAmJiBJMzg2X0RSX0dFVF9SV19MRU4gKGkpID09 IGxlbl9yd19iaXRzKQorKyAgICAgIGlmICghaTM4Nl9kcl92YWNhbnQgKGRyX21pcnJvciwgaSkg JiYgZHJfbWlycm9yLT5hZGRyW2ldID09IGFkZHIKKysJICAmJiBpMzg2X2RyX2dldF9yd19sZW4g KGRyX21pcnJvciwgaSkgPT0gbGVuX3J3X2JpdHMpCisgCXsKKy0JICBpZiAoLS1kcl9yZWZfY291 bnRbaV0gPT0gMCkgLyogbm8gbG9uZ2VyIGluIHVzZT8gKi8KKysJICBpZiAoLS1kcl9taXJyb3It PnJlZl9jb3VudFtpXSA9PSAwKSAvKiBubyBsb25nZXIgaW4gdXNlPyAqLworIAkgICAgeworIAkg ICAgICAvKiBSZXNldCBvdXIgbWlycm9yLiAgKi8KKy0JICAgICAgZHJfbWlycm9yW2ldID0gMDsK Ky0JICAgICAgSTM4Nl9EUl9ESVNBQkxFIChpKTsKKysJICAgICAgZHJfbWlycm9yLT5hZGRyW2ld ID0gMDsKKysJICAgICAgaTM4Nl9kcl9kaXNhYmxlIChkcl9taXJyb3IsIGkpOworIAkgICAgICAv KiBSZXNldCBpdCBpbiB0aGUgaW5mZXJpb3IuICAqLworLQkgICAgICBpMzg2X2RyX2xvdy5zZXRf Y29udHJvbCAoZHJfY29udHJvbF9taXJyb3IpOworKwkgICAgICBpMzg2X2RyX2xvdy5zZXRfY29u dHJvbCAoZHJfbWlycm9yLT5jb250cm9sKTsKKyAJICAgICAgaWYgKGkzODZfZHJfbG93LnJlc2V0 X2FkZHIpCisgCQlpMzg2X2RyX2xvdy5yZXNldF9hZGRyIChpKTsKKyAJICAgIH0KK0BAIC01NTQs MjYgKzYyOCwyNyBAQCBpMzg2X3JlZ2lvbl9va19mb3Jfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFk ZHIsIGludCBsZW4pCisgc3RhdGljIGludAorIGkzODZfc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0 cnVjdCB0YXJnZXRfb3BzICpvcHMsIENPUkVfQUREUiAqYWRkcl9wKQorIHsKKysgIHN0cnVjdCBp Mzg2X2RyX21pcnJvciAqZHJfbWlycm9yID0gaTM4Nl9kcl9taXJyb3JfZ2V0ICgpOworICAgQ09S RV9BRERSIGFkZHIgPSAwOworICAgaW50IGk7CisgICBpbnQgcmMgPSAwOworIAorLSAgZHJfc3Rh dHVzX21pcnJvciA9IGkzODZfZHJfbG93LmdldF9zdGF0dXMgKCk7CisrICBkcl9taXJyb3ItPnN0 YXR1cyA9IGkzODZfZHJfbG93LmdldF9zdGF0dXMgKCk7CisgCisgICBBTExfREVCVUdfUkVHSVNU RVJTKGkpCisgICAgIHsKKy0gICAgICBpZiAoSTM4Nl9EUl9XQVRDSF9ISVQgKGkpCisrICAgICAg aWYgKGkzODZfZHJfd2F0Y2hfaGl0IChkcl9taXJyb3IsIGkpCisgCSAgLyogVGhpcyBzZWNvbmQg Y29uZGl0aW9uIG1ha2VzIHN1cmUgRFJpIGlzIHNldCB1cCBmb3IgYSBkYXRhCisgCSAgICAgd2F0 Y2hwb2ludCwgbm90IGEgaGFyZHdhcmUgYnJlYWtwb2ludC4gIFRoZSByZWFzb24gaXMKKyAJICAg ICB0aGF0IEdEQiBkb2Vzbid0IGNhbGwgdGhlIHRhcmdldF9zdG9wcGVkX2RhdGFfYWRkcmVzcwor IAkgICAgIG1ldGhvZCBleGNlcHQgZm9yIGRhdGEgd2F0Y2hwb2ludHMuICBJbiBvdGhlciB3b3Jk cywgSSdtCisgCSAgICAgYmVpbmcgcGFyYW5vaWFjLiAgKi8KKy0JICAmJiBJMzg2X0RSX0dFVF9S V19MRU4gKGkpICE9IDAKKysJICAmJiBpMzg2X2RyX2dldF9yd19sZW4gKGRyX21pcnJvciwgaSkg IT0gMAorIAkgIC8qIFRoaXMgdGhpcmQgY29uZGl0aW9uIG1ha2VzIHN1cmUgRFJpIGlzIG5vdCB2 YWNhbnQsIHRoaXMKKyAJICAgICBhdm9pZHMgZmFsc2UgcG9zaXRpdmVzIGluIHdpbmRvd3MtbmF0 LmMuICAqLworLQkgICYmICFJMzg2X0RSX1ZBQ0FOVCAoaSkpCisrCSAgJiYgIWkzODZfZHJfdmFj YW50IChkcl9taXJyb3IsIGkpKQorIAl7CistCSAgYWRkciA9IGRyX21pcnJvcltpXTsKKysJICBh ZGRyID0gZHJfbWlycm9yLT5hZGRyW2ldOworIAkgIHJjID0gMTsKKyAJICBpZiAobWFpbnRfc2hv d19kcikKKyAJICAgIGkzODZfc2hvd19kciAoIndhdGNocG9pbnRfaGl0IiwgYWRkciwgLTEsIGh3 X3dyaXRlKTsKK0BAIC02ODcsNiArNzYyLDEwIEBAIGkzODZfdXNlX3dhdGNocG9pbnRzIChzdHJ1 Y3QgdGFyZ2V0X29wcyAqdCkKKyAgIHQtPnRvX3JlbW92ZV93YXRjaHBvaW50ID0gaTM4Nl9yZW1v dmVfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX2luc2VydF9od19icmVha3BvaW50ID0gaTM4Nl9pbnNl cnRfaHdfYnJlYWtwb2ludDsKKyAgIHQtPnRvX3JlbW92ZV9od19icmVha3BvaW50ID0gaTM4Nl9y ZW1vdmVfaHdfYnJlYWtwb2ludDsKKysKKysgIGlmIChpMzg2X2luZmVyaW9yX2RhdGEgPT0gTlVM TCkKKysgICAgaTM4Nl9pbmZlcmlvcl9kYXRhCisrICAgICAgPSByZWdpc3Rlcl9pbmZlcmlvcl9k YXRhX3dpdGhfY2xlYW51cCAoaTM4Nl9pbmZlcmlvcl9kYXRhX2NsZWFudXApOworIH0KKyAKKyB2 b2lkCitkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbmF0LmggYi9nZGIvaTM4Ni1uYXQuaAoraW5kZXgg NzMxN2U3ZC4uNjVjZDMyNiAxMDA2NDQKKy0tLSBhL2dkYi9pMzg2LW5hdC5oCisrKysgYi9nZGIv aTM4Ni1uYXQuaAorQEAgLTc4LDYgKzc4LDI4IEBAIHN0cnVjdCBpMzg2X2RyX2xvd190eXBlCisg CisgZXh0ZXJuIHN0cnVjdCBpMzg2X2RyX2xvd190eXBlIGkzODZfZHJfbG93OworIAorKy8qIFRo ZSBudW1iZXIgb2YgZGVidWcgYWRkcmVzcyByZWdpc3RlcnMuICAqLworKyNkZWZpbmUgRFJfTkFE RFIJNAorKworKy8qIENvcHkgb2YgaGFyZHdhcmUgZGVidWcgcmVnaXN0ZXJzIGZvciBwZXJmb3Jt YW5jZSByZWFzb25zLiAgKi8KKysKKytzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IKKysgIHsKKysgICAg LyogTWlycm9yIHRoZSBpbmZlcmlvcidzIERSaSByZWdpc3RlcnMuICBXZSBrZWVwIHRoZSBzdGF0 dXMgYW5kCisrICAgICAgIGNvbnRyb2wgcmVnaXN0ZXJzIHNlcGFyYXRlZCBiZWNhdXNlIHRoZXkg ZG9uJ3QgaG9sZCBhZGRyZXNzZXMuICAqLworKyAgICBDT1JFX0FERFIgYWRkcltEUl9OQUREUl07 CisrCisrICAgIC8qIEFsbCB0aGUgQUREUiBoYXJkd2FyZSByZWdpc3RlcnMgaGF2ZSBiZWVuIHdy aXR0ZW4gYXQgbGVhc3Qgb25jZS4gICovCisrICAgIHVuc2lnbmVkIGFkZHJfcHJlc2V0IDogMTsK KysKKysgICAgLyogUmVmZXJlbmNlIGNvdW50cyBmb3IgZWFjaCBkZWJ1ZyByZWdpc3Rlci4gICov CisrICAgIGludCByZWZfY291bnRbRFJfTkFERFJdOworKworKyAgICB1bnNpZ25lZCBsb25nIHN0 YXR1cywgY29udHJvbDsKKysgIH07CisrCisrZXh0ZXJuIHN0cnVjdCBpMzg2X2RyX21pcnJvciAq aTM4Nl9kcl9taXJyb3JfZ2V0ICh2b2lkKTsKKysKKyAvKiBVc2UgdGhpcyBmdW5jdGlvbiB0byBz ZXQgaTM4Nl9kcl9sb3cgZGVidWdfcmVnaXN0ZXJfbGVuZ3RoIGZpZWxkCisgICAgcmF0aGVyIHRo YW4gc2V0dGluZyBpdCBkaXJlY3RseSB0byBjaGVjayB0aGF0IHRoZSBsZW5ndGggaXMgb25seQor ICAgIHNldCBvbmNlLiAgSXQgYWxzbyBlbmFibGVzIHRoZSAnbWFpbnQgc2V0L3Nob3cgc2hvdy1k ZWJ1Zy1yZWdzJyAKK2RpZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2RiL2luZmNhbGwuYwor aW5kZXggNmViMWJiZi4uNzMyM2M0YiAxMDA2NDQKKy0tLSBhL2dkYi9pbmZjYWxsLmMKKysrKyBi L2dkYi9pbmZjYWxsLmMKK0BAIC0yMjUsNiArMjI1LDU2IEBAIHZhbHVlX2FyZ19jb2VyY2UgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdmFsdWUgKmFyZywKKyAgIHJldHVybiB2YWx1 ZV9jYXN0ICh0eXBlLCBhcmcpOworIH0KKyAKKysvKiBDYWxsIGdudS1pZnVuYyAoU1RUX0dOVV9J RlVOQyAtIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGFkZHJlc3NzIG9mIGEgcmVhbAorKyAgIGZ1bmN0 aW9uIHRvIGNhbGwpLiAgUEMgaXMgdGhlIGdudS1pZnVuYyBmdW5jdGlvbiBlbnRyeS4gIEZ1bmN0 aW9uIHJldHVybnMKKysgICBmdW5jdGlvbiBlbnRyeSBvZiB0aGUgZ251LWlmdW5jLXJlc29sdmVk IGZ1bmN0aW9uIHRvIGNhbGwuICBJZiBSRVRWQUxfVFlQRVAKKysgICBpcyBub3QgTlVMTCBmaWxs IGluICpSRVRWQUxfVFlQRVAgd2l0aCByZXR1cm4gdHlwZSBvZiB0aGUgZ251LWlmdW5jLXJlc29s dmVkCisrICAgZnVuY3Rpb24gdG8gY2FsbC4gIEtlZXAgKlJFVFZBTF9UWVBFUCBpbnRhY3QgaWYg dGhlIHJldHVybiB0eXBlIGNvdWxkIG5vdCBiZQorKyAgIGZvdW5kLiAgKi8KKysKKytzdGF0aWMg Q09SRV9BRERSCisrZ251X2lmdW5jX3Jlc29sdmUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBD T1JFX0FERFIgcGMpCisreworKyAgY2hhciAqbmFtZV9hdF9wYzsKKysgIENPUkVfQUREUiBzdGFy dF9hdF9wYywgYWRkcmVzczsKKysgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfdHlwZSA9IGJ1aWx0 aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jOworKyAgc3RydWN0IHZhbHVlICpm dW5jdGlvbiwgKmFkZHJlc3NfdmFsOworKworKyAgaWYgKGZpbmRfcGNfcGFydGlhbF9mdW5jdGlv biAocGMsICZuYW1lX2F0X3BjLCAmc3RhcnRfYXRfcGMsIE5VTEwpCisrICAgICAgJiYgc3RhcnRf YXRfcGMgPT0gcGMpCisrICAgIHsKKysgICAgICBpZiAocmVzb2x2ZV9nbnVfaWZ1bmMgKG5hbWVf YXRfcGMsICZhZGRyZXNzKSkKKysJcmV0dXJuIGFkZHJlc3M7CisrICAgIH0KKysgIGVsc2UKKysg ICAgbmFtZV9hdF9wYyA9IE5VTEw7CiArCiArICBmdW5jdGlvbiA9IGFsbG9jYXRlX3ZhbHVlIChm dW5jX2Z1bmNfdHlwZSk7CiArICBzZXRfdmFsdWVfYWRkcmVzcyAoZnVuY3Rpb24sIHBjKTsKQEAg LTQ0NDUsOTggKzUxMzIsOTEgQEAgaW5kZXggN2Y2MGU1Ni4uYjdhY2ZjNiAxMDA2NDQKICAgICAg ewogICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSBvZiBmdW5jdGlvbnMgbGFja2luZyBkZWJ1Z2dp bmcgaW5mby4KICAgICAgICAgICBUaGVpciB2YWx1ZXMgYXJlIGNoYXJhY3RlcnMgc2luY2UgdGhl aXIgYWRkcmVzc2VzIGFyZSBjaGFyICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIvZ2Ri L2luZnJ1bi5jCi1pbmRleCBmNmIwMGRhLi41NmU1NThiIDEwMDY0NAotLS0tIGEvZ2RiL2luZnJ1 bi5jCi0rKysgYi9nZGIvaW5mcnVuLmMKLUBAIC0zMjY3LDYgKzMyNjcsMTAgQEAgaGFuZGxlX2lu ZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKLSAKLSAg ICAgICBzdG9wX3BjID0gcmVnY2FjaGVfcmVhZF9wYyAoZ2V0X3RocmVhZF9yZWdjYWNoZSAoZWNz LT5wdGlkKSk7Ci0gCi0rICAgICAgLyogQ2xlYXIgV0FUQ0hQT0lOVF9UUklHR0VSRUQgdmFsdWVz IGZyb20gcHJldmlvdXMgc3RvcCB3aGljaCBjb3VsZAotKwkgY29uZnVzZSBicHN0YXRfc3RvcF9z dGF0dXMgYW5kIGJwc3RhdF9leHBsYWluc19zaWduYWwuICAqLwotKyAgICAgIHdhdGNocG9pbnRz X3RyaWdnZXJlZCAoJmVjcy0+d3MpOwotKwotICAgICAgIGVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9w X2Jwc3RhdAotIAk9IGJwc3RhdF9zdG9wX3N0YXR1cyAoZ2V0X3JlZ2NhY2hlX2FzcGFjZSAoZ2V0 X2N1cnJlbnRfcmVnY2FjaGUgKCkpLAotIAkJCSAgICAgIHN0b3BfcGMsIGVjcy0+cHRpZCk7Ci1A QCAtMzM1NCw2ICszMzU4LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1 dGlvbl9jb250cm9sX3N0YXRlICplY3MpCi0gCi0gICAgICAgc3RvcF9wYyA9IHJlZ2NhY2hlX3Jl YWRfcGMgKGdldF90aHJlYWRfcmVnY2FjaGUgKGVjcy0+cHRpZCkpOwotIAotKyAgICAgIC8qIENs ZWFyIFdBVENIUE9JTlRfVFJJR0dFUkVEIHZhbHVlcyBmcm9tIHByZXZpb3VzIHN0b3Agd2hpY2gg Y291bGQKLSsJIGNvbmZ1c2UgYnBzdGF0X3N0b3Bfc3RhdHVzIGFuZCBicHN0YXRfZXhwbGFpbnNf c2lnbmFsLiAgKi8KLSsgICAgICB3YXRjaHBvaW50c190cmlnZ2VyZWQgKCZlY3MtPndzKTsKLSsK LSAgICAgICAvKiBEbyB3aGF0ZXZlciBpcyBuZWNlc3NhcnkgdG8gdGhlIHBhcmVudCBicmFuY2gg b2YgdGhlIHZmb3JrLiAgKi8KLSAgICAgICBoYW5kbGVfdmZvcmtfY2hpbGRfZXhlY19vcl9leGl0 ICgxKTsKLSAKIGRpZmYgLS1naXQgYS9nZGIvbGludXgtbmF0LmMgYi9nZGIvbGludXgtbmF0LmMK LWluZGV4IDBlMTgwMzQuLjk2ODk1ZGIgMTAwNjQ0CitpbmRleCA1NjQ5MGNjLi5jNGQxYzI4IDEw MDY0NAogLS0tIGEvZ2RiL2xpbnV4LW5hdC5jCiArKysgYi9nZGIvbGludXgtbmF0LmMKLUBAIC0y NjA3LDYgKzI2MDcsMzkgQEAgbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3Qg dGFyZ2V0X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKLSAgIHJldHVybiBscC0+c3RvcHBl ZF9kYXRhX2FkZHJlc3NfcDsKK0BAIC0xMjQzLDYgKzEyNDMsNjQgQEAgaXRlcmF0ZV9vdmVyX2x3 cHMgKHB0aWRfdCBmaWx0ZXIsCisgICByZXR1cm4gTlVMTDsKICB9CiAgCi0rLyogSW4gYHNldCBm b2xsb3ctZm9yay1tb2RlIGNoaWxkJyB3aXRoIG11bHRpdGhyZWFkZWQgcGFyZW50IHdlIG5lZWQg dG8gZGV0YWNoCi0rICAgd2F0Y2hwb2ludHMgZnJvbSBhbGwgdGhlIExXUHMuICBJbiBzdWNoIGNh c2UgSU5GRVJJT1JfUFRJRCB3aWxsIGJlIHRoZQotKyAgIG5vbi10aHJlYWRlZCBuZXcgY2hpbGQg d2hpbGUgTFdQX0xJU1Qgd2lsbCBzdGlsbCBjb250YWluIGFsbCB0aGUgdGhyZWFkcyBvZgotKyAg IHRoZSBwYXJlbnQgYmVpbmcgZGV0YWNoZWQuICAqLworKy8qIEhlbHBlciBmb3IgbGludXhfbmF0 X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzLiAgKi8KKysKKytzdHJ1Y3QgaXRlcmF0ZV93YXRjaHBv aW50X2x3cHNfZGF0YQorKyAgeworKyAgICBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3 cHNfZnR5cGUgY2FsbGJhY2s7CisrICAgIHZvaWQgKmNhbGxiYWNrX2RhdGE7CisrICB9OwogKwog K3N0YXRpYyBpbnQKLStsaW51eF9uYXRfZGV0YWNoX3dhdGNocG9pbnRzICh2b2lkKQorK2l0ZXJh dGVfd2F0Y2hwb2ludF9sd3BzX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLCB2b2lkICpk YXRhcF92b2lkcCkKICt7Ci0rICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotKyAgaW50IGZvdW5kID0g MCwgcmV0dmFsID0gMDsKLSsgIHB0aWRfdCBmaWx0ZXIgPSBwaWRfdG9fcHRpZCAocHRpZF9nZXRf cGlkIChpbmZlcmlvcl9wdGlkKSk7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gc2F2 ZV9pbmZlcmlvcl9wdGlkICgpOworKyAgc3RydWN0IGl0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzX2Rh dGEgKmRhdGFwID0gZGF0YXBfdm9pZHA7CisrICBpbnQgdGlkOwogKwotKyAgZm9yIChscCA9IGx3 cF9saXN0OyBscDsgbHAgPSBscC0+bmV4dCkKLSsgICAgaWYgKHB0aWRfbWF0Y2ggKGxwLT5wdGlk LCBmaWx0ZXIpKQotKyAgICAgIHsKLSsJaW5mZXJpb3JfcHRpZCA9IGxwLT5wdGlkOwotKwlyZXR2 YWwgfD0gbGludXhfb3BzLT50b19kZXRhY2hfd2F0Y2hwb2ludHMgKCk7Ci0rCWZvdW5kID0gMTsK LSsgICAgICB9CisrICB0aWQgPSBUSURHRVQgKGxwLT5wdGlkKTsKKysgIGlmICh0aWQgPT0gMCkK KysgICAgdGlkID0gUElER0VUIChscC0+cHRpZCk7CiArCi0rICBkb19jbGVhbnVwcyAob2xkX2No YWluKTsKKysgIGRhdGFwLT5jYWxsYmFjayAodGlkLCBkYXRhcC0+Y2FsbGJhY2tfZGF0YSk7Cisr CisrICAvKiBDb250aW51ZSB0aGUgdHJhdmVyc2FsLiAgKi8KKysgIHJldHVybiAwOworK30KICsK LSsgIGlmICghZm91bmQpCisrLyogSXRlcmF0ZSBsaWtlIGl0ZXJhdGVfb3Zlcl9sd3BzIGRvZXMg ZXhjZXB0IHdoZW4gZm9ya2luZy1vZmYgYSBjaGlsZCBjYWxsCisrICAgQ0FMTEJBQ0sgd2l0aCBD QUxMQkFDS19EQVRBIHNwZWNpZmljYWxseSBvbmx5IGZvciB0aGF0IG5ldyBjaGlsZCBQSUQuCisr CisrICAgRHVyaW5nIGBzZXQgZm9sbG93LWZvcmstbW9kZSBjaGlsZCcgdGhlIGNhbGwgaXMgYWxz byBtYWRlIGZvciB0aGUgbmV3IGNoaWxkCisrICAgUElEOyBwYXJlbnQgd2F0Y2hwb2ludHMgZ2V0 IGRldGFjaGVkIGVsc2V3aGVyZSAoZHVyaW5nIHRhcmdldF9kZXRhY2gpLiAgKi8KKysKKyt2b2lk CisrbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzCisrICAobGludXhfbmF0X2l0ZXJh dGVfd2F0Y2hwb2ludF9sd3BzX2Z0eXBlIGNhbGxiYWNrLCB2b2lkICpjYWxsYmFja19kYXRhKQor K3sKKysgIHN0cnVjdCBpdGVyYXRlX3dhdGNocG9pbnRfbHdwc19kYXRhIGRhdGE7CisrICBpbnQg aW5mZXJpb3JfcGlkID0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKTsKKysgIHN0cnVjdCBp bmZlcmlvciAqaW5mID0gY3VycmVudF9pbmZlcmlvciAoKTsKKysKKysgIGRhdGEuY2FsbGJhY2sg PSBjYWxsYmFjazsKKysgIGRhdGEuY2FsbGJhY2tfZGF0YSA9IGNhbGxiYWNrX2RhdGE7CisrCisr ICBpZiAoaW5mLT5waWQgPT0gaW5mZXJpb3JfcGlkKQogKyAgICB7Ci0rICAgICAgZ2RiX2Fzc2Vy dCAoIWlzX2x3cCAoaW5mZXJpb3JfcHRpZCkpOworKyAgICAgIC8qIFN0YW5kYXJkIG1vZGUuICBJ dGVyYXRlIGFsbCB0aGUgdGhyZWFkcyBvZiB0aGUgY3VycmVudCBpbmZlcmlvci4KKysJIFdpdGhv dXQgc3BlY2lmeWluZyBJTkZFUklPUl9QSUQgaXQgd291bGQgaXRlcmF0ZSBhbGwgdGhlIHRocmVh ZHMgb2YKKysJIGFsbCB0aGUgaW5mZXJpb3JzLCB3aGljaCBpcyBpbmFwcHJvcHJpYXRlIGZvciB3 YXRjaHBvaW50cy4gICovCiArCi0rICAgICAgcmV0dmFsIHw9IGxpbnV4X29wcy0+dG9fZGV0YWNo X3dhdGNocG9pbnRzICgpOworKyAgICAgIGl0ZXJhdGVfb3Zlcl9sd3BzIChwaWRfdG9fcHRpZCAo aW5mZXJpb3JfcGlkKSwKKysJCQkgaXRlcmF0ZV93YXRjaHBvaW50X2x3cHNfY2FsbGJhY2ssICZk YXRhKTsKICsgICAgfQorKyAgZWxzZQorKyAgICB7CisrICAgICAgLyogRGV0YWNoaW5nIGEgbmV3 IGNoaWxkIFBJRCB0ZW1wb3JhcmlseSBwcmVzZW50IGluIElORkVSSU9SX1BJRC4gICovCiArCi0r ICByZXR1cm4gcmV0dmFsOworKyAgICAgIGNhbGxiYWNrIChpbmZlcmlvcl9waWQsIGNhbGxiYWNr X2RhdGEpOworKyAgICB9CiArfQogKwotIC8qIENvbW1vbmx5IGFueSBicmVha3BvaW50IC8gd2F0 Y2hwb2ludCBnZW5lcmF0ZSBvbmx5IFNJR1RSQVAuICAqLwotIAotIHN0YXRpYyBpbnQKLUBAIC01 NjYwLDYgKzU2OTMsOCBAQCBsaW51eF9uYXRfYWRkX3RhcmdldCAoc3RydWN0IHRhcmdldF9vcHMg KnQpCi0gICB0LT50b190aHJlYWRfYWRkcmVzc19zcGFjZSA9IGxpbnV4X25hdF90aHJlYWRfYWRk cmVzc19zcGFjZTsKLSAgIHQtPnRvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IGxpbnV4X25hdF9z dG9wcGVkX2J5X3dhdGNocG9pbnQ7Ci0gICB0LT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IGxp bnV4X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVzczsKLSsgIGlmIChsaW51eF9vcHMtPnRvX2RldGFj aF93YXRjaHBvaW50cykKLSsgICAgdC0+dG9fZGV0YWNoX3dhdGNocG9pbnRzID0gbGludXhfbmF0 X2RldGFjaF93YXRjaHBvaW50czsKLSAKLSAgIHQtPnRvX2Nhbl9hc3luY19wID0gbGludXhfbmF0 X2Nhbl9hc3luY19wOwotICAgdC0+dG9faXNfYXN5bmNfcCA9IGxpbnV4X25hdF9pc19hc3luY19w OwotZGlmZiAtLWdpdCBhL2dkYi9saW51eC10ZGVwLmMgYi9nZGIvbGludXgtdGRlcC5jCi1pbmRl eCBjNTFlZGU5Li5lZjhjYmRhIDEwMDY0NAotLS0tIGEvZ2RiL2xpbnV4LXRkZXAuYwotKysrIGIv Z2RiL2xpbnV4LXRkZXAuYwotQEAgLTI0LDYgKzI0LDggQEAKLSAjaW5jbHVkZSAidGFyZ2V0Lmgi Ci0gI2luY2x1ZGUgImVsZi9jb21tb24uaCIKLSAjaW5jbHVkZSAiaW5mZXJpb3IuaCIKLSsjaW5j bHVkZSAidmFsdWUuaCIKLSsjaW5jbHVkZSAiaW5mY2FsbC5oIgotIAotIHN0YXRpYyBzdHJ1Y3Qg Z2RiYXJjaF9kYXRhICpsaW51eF9nZGJhcmNoX2RhdGFfaGFuZGxlOworIC8qIFVwZGF0ZSBvdXIg aW50ZXJuYWwgc3RhdGUgd2hlbiBjaGFuZ2luZyBmcm9tIG9uZSBjaGVja3BvaW50IHRvCisgICAg YW5vdGhlciBpbmRpY2F0ZWQgYnkgTkVXX1BUSUQuICBXZSBjYW4gb25seSBzd2l0Y2ggc2luZ2xl LXRocmVhZGVkCisgICAgYXBwbGljYXRpb25zLCBzbyB3ZSBvbmx5IGNyZWF0ZSBvbmUgbmV3IExX UCwgYW5kIHRoZSBwcmV2aW91cyBsaXN0CitkaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LW5hdC5oIGIv Z2RiL2xpbnV4LW5hdC5oCitpbmRleCA2NDM5M2ZkLi5hMDUzY2JkIDEwMDY0NAorLS0tIGEvZ2Ri L2xpbnV4LW5hdC5oCisrKysgYi9nZGIvbGludXgtbmF0LmgKK0BAIC0xMzksNiArMTM5LDExIEBA IHN0cnVjdCBsd3BfaW5mbyAqaXRlcmF0ZV9vdmVyX2x3cHMgKHB0aWRfdCBmaWx0ZXIsCisgCQkJ CQkJICAgICB2b2lkICopLCAKKyAJCQkJICAgIHZvaWQgKmRhdGEpOwogIAorK3R5cGVkZWYgdm9p ZCAoKmxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwc19mdHlwZSkgKGludCB0aWQsIHZv aWQgKmRhdGEpOworKworK2V4dGVybiB2b2lkIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRf bHdwcworKyAgKGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwc19mdHlwZSBjYWxsYmFj aywgdm9pZCAqY2FsbGJhY2tfZGF0YSk7CisrCisgLyogQ3JlYXRlIGEgcHJvdG90eXBlIGdlbmVy aWMgR05VL0xpbnV4IHRhcmdldC4gIFRoZSBjbGllbnQgY2FuCisgICAgb3ZlcnJpZGUgaXQgd2l0 aCBsb2NhbCBtZXRob2RzLiAgKi8KKyBzdHJ1Y3QgdGFyZ2V0X29wcyAqIGxpbnV4X3RhcmdldCAo dm9pZCk7CiBkaWZmIC0tZ2l0IGEvZ2RiL21pL21pLWNtZC12YXIuYyBiL2dkYi9taS9taS1jbWQt dmFyLmMKIGluZGV4IDMxMGFkZTkuLmQ4NzEwYTEgMTAwNjQ0CiAtLS0gYS9nZGIvbWkvbWktY21k LXZhci5jCkBAIC00NjAxLDcgKzUyODEsNyBAQCBpbmRleCAwYTU3ZTc3Li42YmU3NGRmIDEwMDY0 NAogIAkJICAgICAgIFNZTUJPTF9MSU5LQUdFX05BTUUgKHRzeW1ib2wpKSA9PSAwKQogIAkgIHJl dHVybiBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCk7CiBkaWZmIC0tZ2l0IGEvZ2RiL3At dmFscHJpbnQuYyBiL2dkYi9wLXZhbHByaW50LmMKLWluZGV4IDQ0YTJkNzIuLmUzYWVhZDQgMTAw NjQ0CitpbmRleCA0NzY2M2JkLi5kOWZiODc4IDEwMDY0NAogLS0tIGEvZ2RiL3AtdmFscHJpbnQu YwogKysrIGIvZ2RiL3AtdmFscHJpbnQuYwogQEAgLTM4LDYgKzM4LDcgQEAKQEAgLTQ4NjAsNDIg KzU1NDAsMTQ2IEBAIGluZGV4IDE2MjU1NzUuLmQwNzJmODYgMTAwNjQ0CiArCiAgI2VuZGlmIC8q IFBBUlNFUl9ERUZTX0ggKi8KIGRpZmYgLS1naXQgYS9nZGIvcHBjLWxpbnV4LW5hdC5jIGIvZ2Ri L3BwYy1saW51eC1uYXQuYwotaW5kZXggMThkZGVlNy4uNjUyYjAyYSAxMDA2NDQKK2luZGV4IDE4 ZGRlZTcuLmViYjAwMjIgMTAwNjQ0CiAtLS0gYS9nZGIvcHBjLWxpbnV4LW5hdC5jCiArKysgYi9n ZGIvcHBjLWxpbnV4LW5hdC5jCi1AQCAtMjAxMCw2ICsyMDEwLDI0IEBAIHBwY19saW51eF9yZW1v dmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywKLSAgIHJldHVy biByZXQ7CitAQCAtMTYyMCwxMiArMTYyMCwxOCBAQCBib29rZV9yZW1vdmVfcG9pbnQgKHN0cnVj dCBwcGNfaHdfYnJlYWtwb2ludCAqYiwgaW50IHRpZCkKKyAgIGh3X2JyZWFrc1tpXS5od19icmVh ayA9IE5VTEw7CiAgfQogIAotKy8qIFNlZSB0YXJnZXRfZGV0YWNoX3dhdGNocG9pbnRzLiAgRG8g bm90IHVzZSB3cmFwcGVyCi0rICAgcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50IGFzIGl0IHdv dWxkIG1vZGlmeSB0aGUgcmVnaXN0ZXIgY2FjaGUKLSsgICAoc2F2ZWRfZGFicl92YWx1ZSkuICAq LworK3N0YXRpYyB2b2lkCisrYm9va2VfaW5zZXJ0X3BvaW50X2NhbGxiYWNrIChpbnQgdGlkLCB2 b2lkICpwcF92b2lkcCkKKyt7CisrICBzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9pbnQgKnBwID0gcHBf dm9pZHA7CiArCi0rc3RhdGljIGludAotK3BwY19saW51eF9kZXRhY2hfd2F0Y2hwb2ludHMgKHZv aWQpCisrICBib29rZV9pbnNlcnRfcG9pbnQgKHBwLCB0aWQpOworK30KKysKKyBzdGF0aWMgaW50 CisgcHBjX2xpbnV4X2luc2VydF9od19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwKKyAJCQkJICBzdHJ1Y3QgYnBfdGFyZ2V0X2luZm8gKmJwX3RndCkKKyB7CistICBwdGlkX3Qg cHRpZDsKKy0gIHN0cnVjdCBsd3BfaW5mbyAqbHA7CisgICBzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9p bnQgcDsKKyAKKyAgIGlmICghaGF2ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNlICgpKQorQEAgLTE2 MzksMTggKzE2NDUsMjMgQEAgcHBjX2xpbnV4X2luc2VydF9od19icmVha3BvaW50IChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwKKyAgIHAuYWRkcjIgICAgICAgICAgID0gMDsKKyAgIHAuY29uZGl0 aW9uX3ZhbHVlID0gMDsKKyAKKy0gIEFMTF9MV1BTIChscCwgcHRpZCkKKy0gICAgYm9va2VfaW5z ZXJ0X3BvaW50ICgmcCwgVElER0VUIChwdGlkKSk7CisrICBsaW51eF9uYXRfaXRlcmF0ZV93YXRj aHBvaW50X2x3cHMgKGJvb2tlX2luc2VydF9wb2ludF9jYWxsYmFjaywgJnApOworIAorICAgcmV0 dXJuIDA7CisgfQorIAorK3N0YXRpYyB2b2lkCisrYm9va2VfcmVtb3ZlX3BvaW50X2NhbGxiYWNr IChpbnQgdGlkLCB2b2lkICpwcF92b2lkcCkKICt7Ci0rICBwaWRfdCB0aWQ7CisrICBzdHJ1Y3Qg cHBjX2h3X2JyZWFrcG9pbnQgKnBwID0gcHBfdm9pZHA7CiArCi0rICB0aWQgPSBUSURHRVQgKGlu ZmVyaW9yX3B0aWQpOwotKyAgaWYgKHRpZCA9PSAwKQotKyAgICB0aWQgPSBQSURHRVQgKGluZmVy aW9yX3B0aWQpOworKyAgYm9va2VfcmVtb3ZlX3BvaW50IChwcCwgdGlkKTsKKyt9CiArCi0rICBp ZiAocHRyYWNlIChQVFJBQ0VfU0VUX0RFQlVHUkVHLCB0aWQsIE5VTEwsIE5VTEwpIDwgMCkKLSsg ICAgcmV0dXJuIC0xOwotKyAgcmV0dXJuIDA7Cisgc3RhdGljIGludAorIHBwY19saW51eF9yZW1v dmVfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgCQkJCSAgc3RydWN0 IGJwX3RhcmdldF9pbmZvICpicF90Z3QpCisgeworLSAgcHRpZF90IHB0aWQ7CistICBzdHJ1Y3Qg bHdwX2luZm8gKmxwOworICAgc3RydWN0IHBwY19od19icmVha3BvaW50IHA7CisgCisgICBpZiAo IWhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFjZSAoKSkKK0BAIC0xNjY0LDggKzE2NzUsNyBAQCBw cGNfbGludXhfcmVtb3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAor ICAgcC5hZGRyMiAgICAgICAgICAgPSAwOworICAgcC5jb25kaXRpb25fdmFsdWUgPSAwOworIAor LSAgQUxMX0xXUFMgKGxwLCBwdGlkKQorLSAgICBib29rZV9yZW1vdmVfcG9pbnQgKCZwLCBUSURH RVQgKHB0aWQpKTsKKysgIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoYm9va2Vf cmVtb3ZlX3BvaW50X2NhbGxiYWNrLCAmcCk7CisgCisgICByZXR1cm4gMDsKKyB9CitAQCAtMTg3 OCwxMiArMTg4OCwxOSBAQCBwcGNfbGludXhfY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9u IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAorIAkgICYmIGNoZWNrX2NvbmRpdGlv biAoYWRkciwgY29uZCwgJmRhdGFfdmFsdWUpKTsKKyB9CisgCisrc3RhdGljIHZvaWQKKytzZXRf c2F2ZWRfZGFicl92YWx1ZV9jYWxsYmFjayAoaW50IHRpZCwgdm9pZCAqcmV0cF92b2lkcCkKKyt7 CisrICBpbnQgKnJldHAgPSByZXRwX3ZvaWRwOworKworKyAgaWYgKHB0cmFjZSAoUFRSQUNFX1NF VF9ERUJVR1JFRywgdGlkLCAwLCBzYXZlZF9kYWJyX3ZhbHVlKSA8IDApCisrICAgICpyZXRwID0g LTE7CiArfQogKwotIHN0YXRpYyB2b2lkCi0gcHBjX2xpbnV4X25ld190aHJlYWQgKHB0aWRfdCBw dGlkKQorIHN0YXRpYyBpbnQKKyBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQURE UiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCisgCQkJICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29u ZCkKICB7Ci1AQCAtMjM0OSw2ICsyMzY3LDcgQEAgX2luaXRpYWxpemVfcHBjX2xpbnV4X25hdCAo dm9pZCkKLSAgIHQtPnRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCA9IHBwY19saW51eF9y ZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQ7Ci0gICB0LT50b19pbnNlcnRfd2F0Y2hwb2ludCA9 IHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludDsKLSAgIHQtPnRvX3JlbW92ZV93YXRjaHBvaW50 ID0gcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50OwotKyAgdC0+dG9fZGV0YWNoX3dhdGNocG9p bnRzID0gcHBjX2xpbnV4X2RldGFjaF93YXRjaHBvaW50czsKLSAgIHQtPnRvX3N0b3BwZWRfYnlf d2F0Y2hwb2ludCA9IHBwY19saW51eF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7Ci0gICB0LT50b19z dG9wcGVkX2RhdGFfYWRkcmVzcyA9IHBwY19saW51eF9zdG9wcGVkX2RhdGFfYWRkcmVzczsKLSAg IHQtPnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBwcGNfbGludXhfd2F0Y2hwb2lu dF9hZGRyX3dpdGhpbl9yYW5nZTsKKy0gIHN0cnVjdCBsd3BfaW5mbyAqbHA7CistICBwdGlkX3Qg cHRpZDsKKyAgIGludCByZXQgPSAtMTsKKyAKKyAgIGlmIChoYXZlX3B0cmFjZV9ib29rZV9pbnRl cmZhY2UgKCkpCitAQCAtMTkwNyw4ICsxOTI0LDcgQEAgcHBjX2xpbnV4X2luc2VydF93YXRjaHBv aW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAorICAgICAgIHAuYWRkciAgICAg ICAgICAgID0gKHVpbnQ2NF90KSBhZGRyOworICAgICAgIHAuYWRkcjIgICAgICAgICAgID0gMDsK KyAKKy0gICAgICBBTExfTFdQUyAobHAsIHB0aWQpCistCWJvb2tlX2luc2VydF9wb2ludCAoJnAs IFRJREdFVCAocHRpZCkpOworKyAgICAgIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdw cyAoYm9va2VfaW5zZXJ0X3BvaW50X2NhbGxiYWNrLCAmcCk7CisgCisgICAgICAgcmV0ID0gMDsK KyAgICAgfQorQEAgLTE5NTEsMTIgKzE5NjcsOCBAQCBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9p bnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCisgCisgICAgICAgc2F2ZWRfZGFi cl92YWx1ZSA9IGRhYnJfdmFsdWU7CisgCistICAgICAgQUxMX0xXUFMgKGxwLCBwdGlkKQorLQlp ZiAocHRyYWNlIChQVFJBQ0VfU0VUX0RFQlVHUkVHLCBUSURHRVQgKHB0aWQpLCAwLAorLQkJICAg IHNhdmVkX2RhYnJfdmFsdWUpIDwgMCkKKy0JICByZXR1cm4gLTE7CistCisgICAgICAgcmV0ID0g MDsKKysgICAgICBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMgKHNldF9zYXZlZF9k YWJyX3ZhbHVlX2NhbGxiYWNrLCAmcmV0KTsKKyAgICAgfQorIAorICAgcmV0dXJuIHJldDsKK0BA IC0xOTY2LDggKzE5NzgsNiBAQCBzdGF0aWMgaW50CisgcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBv aW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAorIAkJCSAgICAgc3RydWN0IGV4 cHJlc3Npb24gKmNvbmQpCisgeworLSAgc3RydWN0IGx3cF9pbmZvICpscDsKKy0gIHB0aWRfdCBw dGlkOworICAgaW50IHJldCA9IC0xOworIAorICAgaWYgKGhhdmVfcHRyYWNlX2Jvb2tlX2ludGVy ZmFjZSAoKSkKK0BAIC0xOTkxLDIwICsyMDAxLDE2IEBAIHBwY19saW51eF9yZW1vdmVfd2F0Y2hw b2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywKKyAgICAgICBwLmFkZHIgICAg ICAgICAgICA9ICh1aW50NjRfdCkgYWRkcjsKKyAgICAgICBwLmFkZHIyICAgICAgICAgICA9IDA7 CisgCistICAgICAgQUxMX0xXUFMgKGxwLCBwdGlkKQorLQlib29rZV9yZW1vdmVfcG9pbnQgKCZw LCBUSURHRVQgKHB0aWQpKTsKKysgICAgICBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3 cHMgKGJvb2tlX3JlbW92ZV9wb2ludF9jYWxsYmFjaywgJnApOworIAorICAgICAgIHJldCA9IDA7 CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworICAgICAgIHNhdmVkX2RhYnJfdmFsdWUgPSAwOwor LSAgICAgIEFMTF9MV1BTIChscCwgcHRpZCkKKy0JaWYgKHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJV R1JFRywgVElER0VUIChwdGlkKSwgMCwKKy0JCSAgICBzYXZlZF9kYWJyX3ZhbHVlKSA8IDApCist CSAgcmV0dXJuIC0xOworIAorICAgICAgIHJldCA9IDA7CisrICAgICAgbGludXhfbmF0X2l0ZXJh dGVfd2F0Y2hwb2ludF9sd3BzIChzZXRfc2F2ZWRfZGFicl92YWx1ZV9jYWxsYmFjaywgJnJldCk7 CisgICAgIH0KKyAKKyAgIHJldHVybiByZXQ7CiBkaWZmIC0tZ2l0IGEvZ2RiL3ByaW50Y21kLmMg Yi9nZGIvcHJpbnRjbWQuYwogaW5kZXggNTU4Njc2Ny4uMTQ0ZTg1MSAxMDA2NDQKIC0tLSBhL2dk Yi9wcmludGNtZC5jCkBAIC01MTI5LDcgKzU5MTMsNyBAQCBpbmRleCA4MjMyNDM2Li5lOWZjOGFh IDEwMDY0NAogIAogIAwKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMgYi9nZGIv cHl0aG9uL3B5LXZhbHVlLmMKLWluZGV4IDQ0NDU2NTUuLjhiMDZmZDggMTAwNjQ0CitpbmRleCAz YWRlNTEyLi43MGUwMGU5IDEwMDY0NAogLS0tIGEvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCiArKysg Yi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKIEBAIC0yOCw2ICsyOCw3IEBACkBAIC01MTY4LDcgKzU5 NTIsNyBAQCBpbmRleCA0NDQ1NjU1Li44YjA2ZmQ4IDEwMDY0NAogIAogIAwKIGRpZmYgLS1naXQg YS9nZGIvc29saWItc3ZyNC5jIGIvZ2RiL3NvbGliLXN2cjQuYwotaW5kZXggZGIyMTM2MC4uMTg5 N2QxMCAxMDA2NDQKK2luZGV4IDYwZWZjNGEuLjgyNGEwNzYgMTAwNjQ0CiAtLS0gYS9nZGIvc29s aWItc3ZyNC5jCiArKysgYi9nZGIvc29saWItc3ZyNC5jCiBAQCAtMTI3Niw3ICsxMjc2LDggQEAg c3ZyNF9pbl9keW5zeW1fcmVzb2x2ZV9jb2RlIChDT1JFX0FERFIgcGMpCkBAIC01MTgxLDYgKzU5 NjUsMzIgQEAgaW5kZXggZGIyMTM2MC4uMTg5N2QxMCAxMDA2NDQKICB9CiAgCiAgLyogR2l2ZW4g YW4gZXhlY3V0YWJsZSdzIEFCRkQgYW5kIHRhcmdldCwgY29tcHV0ZSB0aGUgZW50cnktcG9pbnQK K2RpZmYgLS1naXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jCitpbmRleCAxZTBjMmU2Li4y M2Y3ZjU2IDEwMDY0NAorLS0tIGEvZ2RiL3N0YWNrLmMKKysrKyBiL2dkYi9zdGFjay5jCitAQCAt MzY2LDYgKzM2Niw3IEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKyAJICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmd1YWdlOworIAkJICBzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyBvcHRzOworKwkJICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOworIAor ICAgICAgICAgICAgICAgICAgIC8qIFVzZSB0aGUgYXBwcm9wcmlhdGUgbGFuZ3VhZ2UgdG8gZGlz cGxheSBvdXIgc3ltYm9sLAorICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyB0aGUgdXNlciBm b3JjZWQgdGhlIGxhbmd1YWdlIHRvIGEgc3BlY2lmaWMKK0BAIC0zNzgsNyArMzc5LDEzIEBAIHBy aW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSwKKyAJCSAgZ2V0X3Jhd19wcmludF9vcHRpb25zICgmb3B0cyk7CisgCQkgIG9wdHMuZGVy ZWZfcmVmID0gMDsKKyAJCSAgb3B0cy5zdW1tYXJ5ID0gc3VtbWFyeTsKKysKKysJCSAgLyogRnJh bWUgbWF5IGJlIG5lZWRlZCBmb3IgY2hlY2tfdHlwZWRlZiBvZiBUWVBFX0RZTkFNSUMuICAqLwor KwkJICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAoKTsK KysJCSAgc2VsZWN0X2ZyYW1lIChmcmFtZSk7CisgCQkgIGNvbW1vbl92YWxfcHJpbnQgKHZhbCwg c3RiLT5zdHJlYW0sIDIsICZvcHRzLCBsYW5ndWFnZSk7CisrCQkgIGRvX2NsZWFudXBzIChvbGRf Y2hhaW4pOworKworIAkJICB1aV9vdXRfZmllbGRfc3RyZWFtICh1aW91dCwgInZhbHVlIiwgc3Ri KTsKKyAJICAgICAgICB9CisgCSAgICAgIGVsc2UKIGRpZmYgLS1naXQgYS9nZGIvc3ltbWlzYy5j IGIvZ2RiL3N5bW1pc2MuYwogaW5kZXggZWY2MzIxNi4uMWNjOTA4MiAxMDA2NDQKIC0tLSBhL2dk Yi9zeW1taXNjLmMKQEAgLTUyNTksOTMgKzYwNjksNiBAQCBpbmRleCBhNDAzMmY4Li45NDRkZDMz IDEwMDY0NAogIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKgogICAgICBsb29rdXBfbWlu aW1hbF9zeW1ib2xfYW5kX29iamZpbGUgKGNvbnN0IGNoYXIgKiwKICAJCQkJICAgICAgIHN0cnVj dCBvYmpmaWxlICoqKTsKLWRpZmYgLS1naXQgYS9nZGIvdGFyZ2V0LmMgYi9nZGIvdGFyZ2V0LmMK LWluZGV4IDU5ODQxMjUuLjA2NTg5ZDQgMTAwNjQ0Ci0tLS0gYS9nZGIvdGFyZ2V0LmMKLSsrKyBi L2dkYi90YXJnZXQuYwotQEAgLTEyMyw2ICsxMjMsOCBAQCBzdGF0aWMgaW50IGRlYnVnX3RvX2lu c2VydF93YXRjaHBvaW50IChDT1JFX0FERFIsIGludCwgaW50LAotIHN0YXRpYyBpbnQgZGVidWdf dG9fcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiwgaW50LCBpbnQsCi0gCQkJCSAgICAgICBz dHJ1Y3QgZXhwcmVzc2lvbiAqKTsKLSAKLStzdGF0aWMgaW50IGRlYnVnX3RvX2RldGFjaF93YXRj aHBvaW50cyAodm9pZCk7Ci0rCi0gc3RhdGljIGludCBkZWJ1Z190b19zdG9wcGVkX2J5X3dhdGNo cG9pbnQgKHZvaWQpOwotIAotIHN0YXRpYyBpbnQgZGVidWdfdG9fc3RvcHBlZF9kYXRhX2FkZHJl c3MgKHN0cnVjdCB0YXJnZXRfb3BzICosIENPUkVfQUREUiAqKTsKLUBAIC02MDYsNiArNjA4LDcg QEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQotICAgICAgIElOSEVSSVQgKHRvX3JlbW92 ZV9od19icmVha3BvaW50LCB0KTsKLSAgICAgICBJTkhFUklUICh0b19pbnNlcnRfd2F0Y2hwb2lu dCwgdCk7Ci0gICAgICAgSU5IRVJJVCAodG9fcmVtb3ZlX3dhdGNocG9pbnQsIHQpOwotKyAgICAg IElOSEVSSVQgKHRvX2RldGFjaF93YXRjaHBvaW50cywgdCk7Ci0gICAgICAgSU5IRVJJVCAodG9f c3RvcHBlZF9kYXRhX2FkZHJlc3MsIHQpOwotICAgICAgIElOSEVSSVQgKHRvX2hhdmVfc3RlcHBh YmxlX3dhdGNocG9pbnQsIHQpOwotICAgICAgIElOSEVSSVQgKHRvX2hhdmVfY29udGludWFibGVf d2F0Y2hwb2ludCwgdCk7Ci1AQCAtNzM5LDYgKzc0Miw5IEBAIHVwZGF0ZV9jdXJyZW50X3Rhcmdl dCAodm9pZCkKLSAgIGRlX2ZhdWx0ICh0b19yZW1vdmVfd2F0Y2hwb2ludCwKLSAJICAgIChpbnQg KCopIChDT1JFX0FERFIsIGludCwgaW50LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKSkKLSAJICAgIHJl dHVybl9taW51c19vbmUpOwotKyAgZGVfZmF1bHQgKHRvX2RldGFjaF93YXRjaHBvaW50cywKLSsJ ICAgIChpbnQgKCopICh2b2lkKSkKLSsJICAgIHJldHVybl96ZXJvKTsKLSAgIGRlX2ZhdWx0ICh0 b19zdG9wcGVkX2J5X3dhdGNocG9pbnQsCi0gCSAgICAoaW50ICgqKSAodm9pZCkpCi0gCSAgICBy ZXR1cm5femVybyk7Ci1AQCAtMzU3MCw2ICszNTc2LDE5IEBAIGRlYnVnX3RvX3JlbW92ZV93YXRj aHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0gICByZXR1cm4gcmV0 dmFsOwotIH0KLSAKLStzdGF0aWMgaW50Ci0rZGVidWdfdG9fZGV0YWNoX3dhdGNocG9pbnRzICh2 b2lkKQotK3sKLSsgIGludCByZXR2YWw7Ci0rCi0rICByZXR2YWwgPSBkZWJ1Z190YXJnZXQudG9f ZGV0YWNoX3dhdGNocG9pbnRzICgpOwotKwotKyAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk bG9nLAotKwkJICAgICAgInRhcmdldF9kZXRhY2hfd2F0Y2hwb2ludHMgKCkgPSAlbGRcbiIsCi0r CQkgICAgICAodW5zaWduZWQgbG9uZykgcmV0dmFsKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQot KwotIHN0YXRpYyB2b2lkCi0gZGVidWdfdG9fdGVybWluYWxfaW5pdCAodm9pZCkKLSB7Ci1AQCAt MzgxNyw2ICszODM2LDcgQEAgc2V0dXBfdGFyZ2V0X2RlYnVnICh2b2lkKQotICAgY3VycmVudF90 YXJnZXQudG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQgPSBkZWJ1Z190b19yZW1vdmVfaHdfYnJlYWtw b2ludDsKLSAgIGN1cnJlbnRfdGFyZ2V0LnRvX2luc2VydF93YXRjaHBvaW50ID0gZGVidWdfdG9f aW5zZXJ0X3dhdGNocG9pbnQ7Ci0gICBjdXJyZW50X3RhcmdldC50b19yZW1vdmVfd2F0Y2hwb2lu dCA9IGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50OwotKyAgY3VycmVudF90YXJnZXQudG9fZGV0 YWNoX3dhdGNocG9pbnRzID0gZGVidWdfdG9fZGV0YWNoX3dhdGNocG9pbnRzOwotICAgY3VycmVu dF90YXJnZXQudG9fc3RvcHBlZF9ieV93YXRjaHBvaW50ID0gZGVidWdfdG9fc3RvcHBlZF9ieV93 YXRjaHBvaW50OwotICAgY3VycmVudF90YXJnZXQudG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBk ZWJ1Z190b19zdG9wcGVkX2RhdGFfYWRkcmVzczsKLSAgIGN1cnJlbnRfdGFyZ2V0LnRvX3dhdGNo cG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBkZWJ1Z190b193YXRjaHBvaW50X2FkZHJfd2l0aGlu X3JhbmdlOwotZGlmZiAtLWdpdCBhL2dkYi90YXJnZXQuaCBiL2dkYi90YXJnZXQuaAotaW5kZXgg NzI5MGQ5MC4uYzAyNmQ3NiAxMDA2NDQKLS0tLSBhL2dkYi90YXJnZXQuaAotKysrIGIvZ2RiL3Rh cmdldC5oCi1AQCAtNDQ1LDYgKzQ0NSw3IEBAIHN0cnVjdCB0YXJnZXRfb3BzCi0gICAgICAgIHBy b3ZpZGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0XyogbWFjcm9zLiAgKi8KLSAgICAg aW50ICgqdG9fcmVtb3ZlX3dhdGNocG9pbnQpIChDT1JFX0FERFIsIGludCwgaW50LCBzdHJ1Y3Qg ZXhwcmVzc2lvbiAqKTsKLSAgICAgaW50ICgqdG9faW5zZXJ0X3dhdGNocG9pbnQpIChDT1JFX0FE RFIsIGludCwgaW50LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKLSsgICAgaW50ICgqdG9fZGV0YWNo X3dhdGNocG9pbnRzKSAodm9pZCk7Ci0gCi0gICAgIGludCAoKnRvX3N0b3BwZWRfYnlfd2F0Y2hw b2ludCkgKHZvaWQpOwotICAgICBpbnQgdG9faGF2ZV9zdGVwcGFibGVfd2F0Y2hwb2ludDsKLUBA IC0xMzI0LDYgKzEzMjUsMTUgQEAgZXh0ZXJuIGNoYXIgKm5vcm1hbF9waWRfdG9fc3RyIChwdGlk X3QgcHRpZCk7Ci0gI2RlZmluZQl0YXJnZXRfcmVtb3ZlX3dhdGNocG9pbnQoYWRkciwgbGVuLCB0 eXBlLCBjb25kKSBcCi0gICAgICAoKmN1cnJlbnRfdGFyZ2V0LnRvX3JlbW92ZV93YXRjaHBvaW50 KSAoYWRkciwgbGVuLCB0eXBlLCBjb25kKQotIAotKy8qIENsZWFyIGFsbCBkZWJ1ZyByZWdpc3Rl cnMgd2l0aG91dCBhZmZlY3RpbmcgYW55IHJlZ2lzdGVyIGNhY2hlcy4gIEZ1bmN0aW9uCi0rICAg YWN0cyBvbiBJTkZFUklPUl9QVElEIHdoaWNoIHNob3VsZCBiZSB0aGUgZm9ya2VkLW9mZiBwcm9j ZXNzLCBlaXRoZXIgdGhlCi0rICAgbm9uLXRocmVhZGVkIGNoaWxkIG9uZSBvciB0aGUgdGhyZWFk ZWQgcGFyZW50IG9uZSwgZGVwZW5kaW5nIG9uIGBzZXQKLSsgICBmb2xsb3ctZm9yay1tb2RlJy4g IEJvdGggd2F0Y2hwb2ludHMgYW5kIGhhcmR3YXJlIGJyZWFrcG9pbnRzIGdldCByZW1vdmVkLgot KyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUuICAqLwotKwotKyNkZWZpbmUJ dGFyZ2V0X2RldGFjaF93YXRjaHBvaW50cygpCVwKLSsgICAgICgqY3VycmVudF90YXJnZXQudG9f ZGV0YWNoX3dhdGNocG9pbnRzKSAoKQotKwotICNkZWZpbmUgdGFyZ2V0X2luc2VydF9od19icmVh a3BvaW50KGdkYmFyY2gsIGJwX3RndCkgXAotICAgICAgKCpjdXJyZW50X3RhcmdldC50b19pbnNl cnRfaHdfYnJlYWtwb2ludCkgKGdkYmFyY2gsIGJwX3RndCkKLSAKIGRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TCiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAogaW5kZXggMDAwMDAwMC4uODNmYWFmNgpAQCAtNzgyMyw2ICs4NTQ2LDEyMSBAQCBpbmRleCAw MDAwMDAwLi5lNDkyYjNhCiArICBwcmludCAqLCBjNDBwdCAgISBicmVhay1oZXJlCiArCiArZW5k IHByb2dyYW0gcmVwcm8KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5 bmFtaWMtb3RoZXItZnJhbWUtc3R1Yi5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5 bmFtaWMtb3RoZXItZnJhbWUtc3R1Yi5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwLi4yNjFjZTE3CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUtc3R1Yi5mOTAKK0BAIC0wLDAgKzEsMjQgQEAKKysh IENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKKyshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisrIQorKyEgSWhpcyBmaWxlIGlz IHRoZSBGb3J0cmFuIHNvdXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KKyshIE9yaWdpbmFsIGZp bGUgd3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KKyshIE1vZGlm aWVkIGZvciB0aGUgR0RCIHRlc3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPi4KKysKKytzdWJyb3V0aW5lIGJhcgorKyAgcmVhbCA6OiBkdW1teQorKyAg ZHVtbXkgPSAxCisrZW5kIHN1YnJvdXRpbmUgYmFyCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi40ZmRkNWVlCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZXhwCitAQCAtMCwwICsxLDM3IEBACisr IyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrIyAKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIyAKKysj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAorKworK3NldCB0ZXN0Zmls ZSAiZHluYW1pYy1vdGhlci1mcmFtZSIKKytzZXQgc3JjZmlsZTEgJHt0ZXN0ZmlsZX0uZjkwCisr c2V0IHNyY2ZpbGUyICR7dGVzdGZpbGV9LXN0dWIuZjkwCisrc2V0IG9iamZpbGUyICR7b2JqZGly fS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tc3R1Yi5vCisrc2V0IGV4ZWN1dGFibGUgJHt0ZXN0Zmls ZX0KKytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0KKysKKytp ZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGUyfSIgIiR7b2Jq ZmlsZTJ9IiBvYmplY3Qge2Y3N31dICE9ICIiCisrICAgICB8fCBbZ2RiX2NvbXBpbGUgIiR7c3Jj ZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlMX0gJHtvYmpmaWxlMn0iICIke2JpbmZpbGV9IiBleGVj dXRhYmxlIHtkZWJ1ZyBmNzd9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNv bXBpbGUgJHtzcmNmaWxlMX0gb3IgJHtzcmNmaWxlMn0iCisrICAgIHJldHVybiAtMQorK30KKysK KytjbGVhbl9yZXN0YXJ0ICR7ZXhlY3V0YWJsZX0KKysKKytpZiAhW3J1bnRvIGJhcl9dIHRoZW4g eworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBiYXJfIgorKyAgICBjb250aW51ZQorK30K KysKKytnZGJfdGVzdCAiYnQiIHtmb28gXChzdHJpbmc9J2hlbGxvJy4qfQorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5mOTAgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZjkwCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMmJjNjM3ZAorLS0tIC9kZXYvbnVsbAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmY5MAorQEAgLTAs MCArMSwzNiBAQAorKyEgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyshCisr ISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgor KyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5j b20+LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgorKworK3N1YnJvdXRpbmUgZm9vIChzdHJpbmcp CisrICBpbnRlcmZhY2UKKysgICAgc3Vicm91dGluZSBiYXIKKysgICAgZW5kIHN1YnJvdXRpbmUK KysgIGVuZCBpbnRlcmZhY2UKKysgIGNoYXJhY3RlciBzdHJpbmcqKCopCisrICBjYWxsIGJhciAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISBzdG9wLWhlcmUKKytlbmQgc3Vicm91dGlu ZSBmb28KKytwcm9ncmFtIHRlc3QKKysgIGludGVyZmFjZQorKyAgICBzdWJyb3V0aW5lIGZvbyAo c3RyaW5nKQorKyAgICBjaGFyYWN0ZXIgc3RyaW5nKigqKQorKyAgICBlbmQgc3Vicm91dGluZQor KyAgZW5kIGludGVyZmFjZQorKyAgY2FsbCBmb28gKCdoZWxsbycpCisrZW5kCiBkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vZHluYW1pYy5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAw MDAwLi4wY2NlYmUwCkBAIC04MTY5LDIzICs5MDA3LDIwNyBAQCBpbmRleCAwMDAwMDAwLi4yMjZk YzVkCiArISBPcmlnaW5hbCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVk aGF0LmNvbT4uCiArISBNb2RpZmllZCBmb3IgdGhlIEdEQiB0ZXN0Y2FzZSBieSBKYW4gS3JhdG9j aHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCiArCi0rc3Vicm91dGluZSBmb28gKGUs IGYpCi0rICBjaGFyYWN0ZXIgKGxlbj0xKSA6OiBjCi0rICBjaGFyYWN0ZXIgKGxlbj04KSA6OiBk Ci0rICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBlCi0rICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBmICgx OjcsIDg6MTApCi0rICBjID0gJ2MnCi0rICBkID0gJ2QnCi0rICBlID0gJ2UnICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXItaW5pdAotKyAgZiA9ICdmJwotKyAgZigx LDkpID0gJ2YyJwotKyAgYyA9ICdjJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICEgdmFyLWZpbmlzaAotK2VuZCBzdWJyb3V0aW5lIGZvbwotKyAgY2hhcmFjdGVyIChsZW49 NCkgOjogZywgaCAoMTo3LCA4OjEwKQotKyAgZyA9ICdnJwotKyAgaCA9ICdoJwotKyAgY2FsbCBm b28gKGcsIGgpCi0rZW5kCisrc3Vicm91dGluZSBmb28gKGUsIGYpCisrICBjaGFyYWN0ZXIgKGxl bj0xKSA6OiBjCisrICBjaGFyYWN0ZXIgKGxlbj04KSA6OiBkCisrICBjaGFyYWN0ZXIgKGxlbj0q KSA6OiBlCisrICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBmICgxOjcsIDg6MTApCisrICBjID0gJ2Mn CisrICBkID0gJ2QnCisrICBlID0gJ2UnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgISB2YXItaW5pdAorKyAgZiA9ICdmJworKyAgZigxLDkpID0gJ2YyJworKyAgYyA9ICdj JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyLWZpbmlzaAorK2Vu ZCBzdWJyb3V0aW5lIGZvbworKyAgY2hhcmFjdGVyIChsZW49NCkgOjogZywgaCAoMTo3LCA4OjEw KQorKyAgZyA9ICdnJworKyAgaCA9ICdoJworKyAgY2FsbCBmb28gKGcsIGgpCisrZW5kCitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5jIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5jCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMC4uMTUzYzE4YgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5jCitAQCAtMCwwICsxLDU5IEBACisr LyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysg ICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisr CisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPHB0aHJl YWQuaD4KKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisrc3RhdGljIHZvbGF0aWxlIGludCBhLCBi LCBjOworKworK3N0YXRpYyB2b2lkCisrbWFya2VyX2V4aXQxICh2b2lkKQorK3sKKysgIGEgPSAx OworK30KKysKKysvKiBXb3JrYXJvdW5kIFBSIGJyZWFrcG9pbnRzLzEyMjcyIGJ5IHR3byBkaWZm ZXJlbnQgYnJlYWtwb2ludCBsb2NhdGlvbnMuICAqLworK3N0YXRpYyB2b2lkCisrbWFya2VyX2V4 aXQyICh2b2lkKQorK3sKKysgIGEgPSAxOworK30KKysKKytzdGF0aWMgdm9pZCAqCisrc3RhcnQg KHZvaWQgKmFyZykKKyt7CisrICBiID0gMjsKKysgIGMgPSAzOworKworKyAgcmV0dXJuIE5VTEw7 CisrfQorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgcHRocmVhZF90IHRocmVhZDsKKysg IGludCBpOworKworKyAgaSA9IHB0aHJlYWRfY3JlYXRlICgmdGhyZWFkLCBOVUxMLCBzdGFydCwg TlVMTCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrICBpID0gcHRocmVhZF9qb2luICh0aHJlYWQs IE5VTEwpOworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgbWFya2VyX2V4aXQxICgpOworKyAg bWFya2VyX2V4aXQyICgpOworKyAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLm11bHRpL3dhdGNocG9pbnQtbXVsdGkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu bXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwLi4zYjVkMDQwCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5t dWx0aS93YXRjaHBvaW50LW11bHRpLmV4cAorQEAgLTAsMCArMSwxMTMgQEAKKysjIENvcHlyaWdo dCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKysKKytpZiB7IFtpc19yZW1vdGUgdGFyZ2V0XSB8fCAhW2lzbmF0aXZl XSB9IHRoZW4geworKyAgICBjb250aW51ZQorK30KKysKKytzZXQgdGVzdGZpbGUgIndhdGNocG9p bnQtbXVsdGkiCisrCisrc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KKytzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5jCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1dGFi bGV9CisrCisraWYgeyBbZ2RiX2NvbXBpbGVfcHRocmVhZHMgIiR7c3JjZGlyfS8ke3N1YmRpcn0v JHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7Cisr ICAgIHVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAorKyAgICByZXR1cm4gLTEKKyt9CisrCisrY2xl YW5fcmVzdGFydCAkZXhlY3V0YWJsZQorKworK2lmICFbcnVudG9fbWFpbl0geworKyAgICByZXR1 cm4KKyt9CisrIyBOZXZlciBrZWVwL3VzZSBhbnkgbm9uLWh3IGJyZWFrcG9pbnRzIHRvIHdvcmth cm91bmQgYSBtdWx0aS1pbmZlcmlvciBidWcuCisrZGVsZXRlX2JyZWFrcG9pbnRzCisrCisrZ2Ri X3Rlc3QgImFkZC1pbmZlcmlvciIgIkFkZGVkIGluZmVyaW9yIDIiCisrZ2RiX3Rlc3QgImluZmVy aW9yIDIiICJ3aXRjaGluZyB0byBpbmZlcmlvciAyIC4qIgorK2dkYl9sb2FkICRiaW5maWxlCisr CisraWYgIVtydW50b19tYWluXSB7CisrICAgIHJldHVybgorK30KKytkZWxldGVfYnJlYWtwb2lu dHMKKysKKysjIFNpbXVsYXRlIG5vbi1zdG9wK3RhcmdldC1hc3luYyB3aGljaCBhbHNvIHVzZXMg YnJlYWtwb2ludCBhbHdheXMtaW5zZXJ0ZWQuCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYnJl YWtwb2ludCBhbHdheXMtaW5zZXJ0ZWQgb24iCisrIyBkaXNwbGFjZWQtc3RlcHBpbmcgaXMgYWxz byBuZWVkZWQgYXMgb3RoZXIgR0RCIHNvbWV0aW1lcyBzdGlsbCByZW1vdmVzIHRoZQorKyMgYnJl YWtwb2ludHMsIGV2ZW4gd2l0aCBhbHdheXMtaW5zZXJ0ZWQgb24uCisrZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgZGlzcGxhY2VkLXN0ZXBwaW5nIG9uIgorKworKyMgRGVidWdnaW5nIG9mIHRoaXMg dGVzdGNhc2U6CisrI2dkYl90ZXN0X25vX291dHB1dCAibWFpbnRlbmFuY2Ugc2V0IHNob3ctZGVi dWctcmVncyBvbiIKKysjZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgZGVidWcgaW5mcnVuIDEiCisr CisrIyBEbyBub3QgdXNlIHNpbXBsZSBoYXJkd2FyZSB3YXRjaHBvaW50ICgid2F0Y2giKSBhcyBp dHMgZmFsc2UgaGl0IG1heSBiZQorKyMgdW5ub3RpY2VkIGJ5IEdEQiBpZiBpdCByZWFkcyBpdCBz dGlsbCBoYXMgdGhlIHNhbWUgdmFsdWUuCisrZ2RiX3Rlc3QgImF3YXRjaCBjIiAiSGFyZHdhcmUg YWNjZXNzIFxcKHJlYWQvd3JpdGVcXCkgd2F0Y2hwb2ludCBcWzAtOVxdKzogYyIKKysjIE5ldmVy IGtlZXAvdXNlIGFueSBub24taHcgYnJlYWtwb2ludHMgdG8gd29ya2Fyb3VuZCBhIG11bHRpLWlu ZmVyaW9yIGJ1Zy4KKysjIFVzZSBgKicgdG8gd29ya2Fyb3VuZCBhIG11bHRpLWluZmVyaW9yIGJ1 Zy4KKytzZXQgdGVzdCAiaGJyZWFrICptYXJrZXJfZXhpdDIiCisrZ2RiX3Rlc3RfbXVsdGlwbGUg JHRlc3QgJHRlc3QgeworKyAgICAtcmUgIkhhcmR3YXJlIGFzc2lzdGVkIGJyZWFrcG9pbnQgXFsw LTlcXSsgYXQgLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKysg ICAgLXJlICIoTm8gaGFyZHdhcmUgYnJlYWtwb2ludCBzdXBwb3J0IGluIHRoZSB0YXJnZXRcXC58 SGFyZHdhcmUgYnJlYWtwb2ludHMgdXNlZCBleGNlZWRzIGxpbWl0XFwuKVxyXG4kZ2RiX3Byb21w dCAkIiB7CisrCXBhc3MgJHRlc3QKKysJdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhwCisrCXJldHVy bgorKyAgICB9CisrfQorKworK2dkYl90ZXN0ICJpbmZlcmlvciAxIiAid2l0Y2hpbmcgdG8gaW5m ZXJpb3IgMSAuKiIKKysKKytnZGJfdGVzdCAiYXdhdGNoIGIiICJIYXJkd2FyZSBhY2Nlc3MgXFwo cmVhZC93cml0ZVxcKSB3YXRjaHBvaW50IFxbMC05XF0rOiBiIgorK2dkYl90ZXN0ICJoYnJlYWsg Km1hcmtlcl9leGl0MSIge0hhcmR3YXJlIGFzc2lzdGVkIGJyZWFrcG9pbnQgWzAtOV0rIGF0IC4q fQorKworK2dkYl90ZXN0ICJpbmZlcmlvciAyIiAid2l0Y2hpbmcgdG8gaW5mZXJpb3IgMiAuKiIK KysKKysjIEZBSUwgd291bGQgYmUgYSBoaXQgb24gd2F0Y2hwb2ludCBmb3IgYGInIC0gdGhhdCBv bmUgaXMgZm9yIHRoZSBvdGhlcgorKyMgaW5mZXJpb3IuCisrZ2RiX3Rlc3QgImNvbnRpbnVlIiAi SGFyZHdhcmUgYWNjZXNzIFxcKHJlYWQvd3JpdGVcXCkgd2F0Y2hwb2ludCBcWzAtOVxdKzogY1xy XG5cclxuT2xkIHZhbHVlID0gMFxyXG5OZXcgdmFsdWUgPSAzXHJcbi4qIiAiY2F0Y2ggYyIKKysK KytzZXQgdGVzdCAiY2F0Y2ggbWFya2VyX2V4aXQyIgorK2dkYl90ZXN0X211bHRpcGxlICJjb250 aW51ZSIgJHRlc3QgeworKyAgICAtcmUgIkJyZWFrcG9pbnQgXFswLTlcXSssIG1hcmtlcl9leGl0 MiAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXNldHVwX2tmYWlsIGJyZWFrcG9pbnRzLzEyMzEy ICotKi0qCisrCXBhc3MgJHRlc3QKKysgICAgfQorKyAgICAtcmUgIkhhcmR3YXJlIGFjY2VzcyBc XChyZWFkL3dyaXRlXFwpIHdhdGNocG9pbnQgXFswLTlcXSs6IGNcclxuXHJcblZhbHVlID0gM1xy XG4uKiBpbiBfX25wdGxfZGVhdGhfZXZlbnQgLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwlzZXR1 cF9rZmFpbCBicmVha3BvaW50cy8xMjMxMiAqLSotKgorKwlmYWlsICR0ZXN0CisrICAgIH0KKyt9 CisrCisrZ2RiX3Rlc3QgImluZmVyaW9yIDEiICJ3aXRjaGluZyB0byBpbmZlcmlvciAxIC4qIgor KworK2dkYl90ZXN0ICJjb250aW51ZSIgIkhhcmR3YXJlIGFjY2VzcyBcXChyZWFkL3dyaXRlXFwp IHdhdGNocG9pbnQgXFswLTlcXSs6IGJcclxuXHJcbk9sZCB2YWx1ZSA9IDBcclxuTmV3IHZhbHVl ID0gMlxyXG4uKiIgImNhdGNoIGIiCisrCisrc2V0IHRlc3QgImNhdGNoIG1hcmtlcl9leGl0MSIK KytnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICR0ZXN0IHsKKysgICAgLXJlICJCcmVha3Bv aW50IFxbMC05XF0rLCBtYXJrZXJfZXhpdDEgLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwlzZXR1 cF9rZmFpbCBicmVha3BvaW50cy8xMjMxMiAqLSotKgorKwlwYXNzICR0ZXN0CisrICAgIH0KKysg ICAgLXJlICJIYXJkd2FyZSBhY2Nlc3MgXFwocmVhZC93cml0ZVxcKSB3YXRjaHBvaW50IFxbMC05 XF0rOiBiXHJcblxyXG5WYWx1ZSA9IDJcclxuLiogaW4gX19ucHRsX2RlYXRoX2V2ZW50IC4qXHJc biRnZGJfcHJvbXB0ICQiIHsKKysJc2V0dXBfa2ZhaWwgYnJlYWtwb2ludHMvMTIzMTIgKi0qLSoK KysJZmFpbCAkdGVzdAorKyAgICB9CisrfQorKwogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9w dC9hcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4 IDAwMDAwMDAuLjcyOWY0NTcKQEAgLTg1NjQsMTUgKzk1ODYsMTUgQEAgaW5kZXggMDAwMDAwMC4u Mjk1NjAyZAogKyAgcyA6PSAndGVzdCcjMCdzdHJpbmcnOwogKyAgd3JpdGVsbihzKTsgeyBzZXQg YnJlYWtwb2ludCAyIGhlcmUgfQogK2VuZC4KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1jaGlsZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAuLjRkYzMwOGIKK2luZGV4IDAwMDAwMDAuLmEyYWQyOWEKIC0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLWZv cmtvZmYuYwotQEAgLTAsMCArMSwxNzUgQEAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVh ZHMvd2F0Y2hwb2ludC1mb3JrLWNoaWxkLmMKK0BAIC0wLDAgKzEsMTI3IEBACiArLyogVGVzdCBj YXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHBy b2Nlc3MuCiArCi0rICAgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgogKwpAQCAt ODU5Myw2MSArOTYxNSwxMiBAQCBpbmRleCAwMDAwMDAwLi40ZGMzMDhiCiArCiArI2luY2x1ZGUg PHN0cmluZy5oPgogKyNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysj aW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPHNpZ25hbC5oPgorKyNpbmNsdWRlIDxzdGRp by5oPgogKwotK3N0YXRpYyB2b2lkCi0rZGVsYXkgKHZvaWQpCi0rewotKyAgaW50IGkgPSB1c2xl ZXAgKDEwMDAwMDAgLyAxMDApOwotKyAgYXNzZXJ0IChpID09IDAgfHwgZXJybm8gPT0gRUlOVFIp OwotK30KLSsKLSsjaWYgZGVmaW5lZCBGT0xMT1dfUEFSRU5UCi0rCi0rc3RhdGljIHZvaWQKLStm b3Jrb2ZmIChpbnQgbnIpCi0rewotKyAgcGlkX3QgY2hpbGQsIHBpZF9nb3Q7Ci0rICBpbnQgZXhp dF9jb2RlID0gNDIgKyBucjsKLSsgIGludCBzdGF0dXMsIGk7Ci0rCi0rICBjaGlsZCA9IGZvcmsg KCk7Ci0rICBzd2l0Y2ggKGNoaWxkKQotKyAgICB7Ci0rICAgIGNhc2UgLTE6Ci0rICAgICAgYXNz ZXJ0ICgwKTsKLSsgICAgY2FzZSAwOgotKyAgICAgIHByaW50ZiAoImNoaWxkJWQ6ICVkXG4iLCBu ciwgKGludCkgZ2V0cGlkICgpKTsKLSsgICAgICAvKiBEZWxheSB0byBnZXQgYm90aCB0aGUgImNo aWxkJWQiIGFuZCAicGFyZW50JWQiIG1lc3NhZ2UgcHJpbnRlZCB3aXRob3V0Ci0rCSBhIHJhY2Ug YnJlYWtpbmcgZXhwZWN0IGJ5IGl0cyBlbmRsZXNzIHdhaXQgb24gYCRnZGJfcHJvbXB0JCc6Ci0r CSBCcmVha3BvaW50IDMsIGJyZWFrcG9pbnQgKCkgYXQgLi4vLi4vLi4vZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuYzozMwotKwkgMzMgICAgICB9Ci0rCSAoZ2RiKSBw YXJlbnQyOiAxNDIyMyAgKi8KLSsgICAgICBpID0gc2xlZXAgKDEpOwotKyAgICAgIGFzc2VydCAo aSA9PSAwKTsKLSsKLSsgICAgICAvKiBXZSBtdXN0IG5vdCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWlu c3QgYSBmb3Jnb3R0ZW4gYnJlYWtwb2ludCkuICAqLwotKyAgICAgIHZhcisrOwotKyAgICAgIGJy ZWFrcG9pbnQgKCk7Ci0rCi0rICAgICAgX2V4aXQgKGV4aXRfY29kZSk7Ci0rICAgIGRlZmF1bHQ6 Ci0rICAgICAgcHJpbnRmICgicGFyZW50JWQ6ICVkXG4iLCBuciwgKGludCkgY2hpbGQpOwotKyAg ICAgIC8qIERlbGF5IHRvIGdldCBib3RoIHRoZSAiY2hpbGQlZCIgYW5kICJwYXJlbnQlZCIgbWVz c2FnZSBwcmludGVkLCBzZWUKLSsJIGFib3ZlLiAgKi8KLSsgICAgICBpID0gc2xlZXAgKDEpOwot KyAgICAgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgICAgICBwaWRfZ290ID0gd2FpdCAoJnN0YXR1 cyk7Ci0rICAgICAgYXNzZXJ0IChwaWRfZ290ID09IGNoaWxkKTsKLSsgICAgICBhc3NlcnQgKFdJ RkVYSVRFRCAoc3RhdHVzKSk7Ci0rICAgICAgYXNzZXJ0IChXRVhJVFNUQVRVUyAoc3RhdHVzKSA9 PSBleGl0X2NvZGUpOwotKwotKyAgICAgIC8qIFdlIG11c3QgZ2V0IGNhdWdodCBoZXJlIChhZ2Fp bnN0IGEgZmFsc2Ugd2F0Y2hwb2ludCByZW1vdmFsKS4gICovCi0rICAgICAgYnJlYWtwb2ludCAo KTsKLSsgICAgfQotK30KLSsKLSsjZWxpZiBkZWZpbmVkIEZPTExPV19DSElMRAorKyNpbmNsdWRl ICJ3YXRjaHBvaW50LWZvcmsuaCIKICsKICtzdGF0aWMgdm9sYXRpbGUgaW50IHVzcjFfZ290Owog KwpAQCAtODY1NywxMSArOTYzMCwxMSBAQCBpbmRleCAwMDAwMDAwLi40ZGMzMDhiCiArICB1c3Ix X2dvdCsrOwogK30KICsKLStzdGF0aWMgdm9pZAorK3ZvaWQKICtmb3Jrb2ZmIChpbnQgbnIpCiAr ewotKyAgcGlkX3QgY2hpbGQ7Ci0rICBpbnQgaSwgbG9vcDsKKysgIHBpZF90IGNoaWxkLCBzYXZl X3BhcmVudCA9IGdldHBpZCAoKTsKKysgIGludCBpOwogKyAgc3RydWN0IHNpZ2FjdGlvbiBhY3Qs IG9sZGFjdDsKICsjaWZkZWYgVEhSRUFECiArICB2b2lkICp0aHJlYWRfcmVzdWx0OwpAQCAtODY5 Miw3ICs5NjY1LDcgQEAgaW5kZXggMDAwMDAwMC4uNGRjMzA4YgogKyAgICAgIC8qIFdlIG11c3Qg bm90IGdldCBjYXVnaHQgaGVyZSAoYWdhaW5zdCBhIGZvcmdvdHRlbiBicmVha3BvaW50KS4gICov CiArCiArICAgICAgdmFyKys7Ci0rICAgICAgYnJlYWtwb2ludCAoKTsKKysgICAgICBtYXJrZXIg KCk7CiArCiArI2lmZGVmIFRIUkVBRAogKyAgICAgIC8qIEFuZCBuZWl0aGVyIGdvdCBjYXVnaHQg b3VyIHRocmVhZC4gICovCkBAIC04NzIwLDQwICs5NjkzLDQxIEBAIGluZGV4IDAwMDAwMDAuLjRk YzMwOGIKICsKICsgICAgICAvKiBMZXQgdGhlIHBhcmVudCBzaWduYWwgdXMgYWJvdXQgaXRzIHN1 Y2Nlc3MuICBCZSBjYXJlZnVsIG9mIHJhY2VzLiAgKi8KICsKLSsgICAgICBmb3IgKGxvb3AgPSAw OyBsb29wIDwgMTAwMDsgbG9vcCsrKQorKyAgICAgIGZvciAoOzspCiArCXsKICsJICAvKiBQYXJl bnQgZWl0aGVyIGRpZWQgKGFuZCBVU1IxX0dPVCBpcyB6ZXJvKSBvciBpdCBzdWNjZWVkZWQuICAq LworKwkgIGlmIChnZXRwcGlkICgpICE9IHNhdmVfcGFyZW50KQorKwkgICAgYnJlYWs7CiArCSAg aWYgKGtpbGwgKGdldHBwaWQgKCksIDApICE9IDApCiArCSAgICBicmVhazsKICsJICAvKiBQYXJl bnQgc3VjY2VlZGVkPyAgKi8KICsJICBpZiAodXNyMV9nb3QpCiArCSAgICBicmVhazsKICsKLSsJ ICBkZWxheSAoKTsKKysjaWZkZWYgVEhSRUFECisrCSAgaSA9IHB0aHJlYWRfeWllbGQgKCk7Cisr CSAgYXNzZXJ0IChpID09IDApOworKyNlbmRpZgogKwl9CiArICAgICAgYXNzZXJ0ICh1c3IxX2dv dCk7CiArCiArICAgICAgLyogV2UgbXVzdCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3QgYSBmYWxz ZSB3YXRjaHBvaW50IHJlbW92YWwpLiAgKi8KICsKLSsgICAgICBicmVha3BvaW50ICgpOworKyAg ICAgIG1hcmtlciAoKTsKICsgICAgfQogKwogKyAgaSA9IHNpZ2FjdGlvbiAoU0lHVVNSMSwgJm9s ZGFjdCwgTlVMTCk7CiArICBhc3NlcnQgKGkgPT0gMCk7CiArfQotKwotKyNlbHNlCi0rIyBlcnJv ciAiIUZPTExPV19QQVJFTlQgJiYgIUZPTExPV19DSElMRCIKLSsjZW5kaWYKIGRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1tdC5jIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstbXQuYwogbmV3IGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDAwMDAwMDAuLmVkYWNmYzAKK2luZGV4IDAwMDAwMDAuLjA4YTVhZmYKIC0t LSAvZGV2L251bGwKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1m b3JrLW10LmMKLUBAIC0wLDAgKzEsMTU3IEBACitAQCAtMCwwICsxLDE3NCBAQAogKy8qIFRlc3Qg Y2FzZSBmb3IgZm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYgb2YgYSBw cm9jZXNzLgogKwotKyAgIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKyAgIENvcHlyaWdodCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgogKwogKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KICsKQEAg LTg3ODMsNDkgKzk3NTcsNTYgQEAgaW5kZXggMDAwMDAwMC4uZWRhY2ZjMAogKyNpbmNsdWRlIDx1 bmlzdGQuaD4KICsjZGVmaW5lIGdldHRpZCgpIHN5c2NhbGwgKF9fTlJfZ2V0dGlkKQogKworKyNp bmNsdWRlICJ3YXRjaHBvaW50LWZvcmsuaCIKKysKICsvKiBOb24tYXRvbWljIGB2YXIrKycgc2hv dWxkIG5vdCBodXJ0IGFzIHdlIHN5bmNocm9uaXplIHRoZSB0aHJlYWRzIGJ5IHRoZSBTVEVQCiAr ICAgdmFyaWFibGUuICBIaXQtY29tbWVudHMgbmVlZCB0byBiZSBkdXBsaWNpdGUgdGhlcmUgdG8g Y2F0Y2ggYm90aCBhdC1zdG9wcwogKyAgIGFuZCBiZWhpbmQtc3RvcHMsIGRlcGVuZGluZyBvbiB0 aGUgdGFyZ2V0LiAgKi8KICsKLStzdGF0aWMgdm9sYXRpbGUgaW50IHZhcjsKKyt2b2xhdGlsZSBp bnQgdmFyOwogKwotK3N0YXRpYyB2b2lkCi0rZHVtbXkgKHZvaWQpCisrdm9pZAorK21hcmtlciAo dm9pZCkKICt7CiArfQogKwogK3N0YXRpYyB2b2lkCi0rYnJlYWtwb2ludCAodm9pZCkKKytlbXB0 eSAodm9pZCkKICt7CiArfQogKwotKy8qIEluY2x1ZGUgaGVyZSB0aGUgZnVuY3Rpb25zOgotKyAg IHN0YXRpYyB2b2lkIGZvcmtvZmYgKGludCBucik7Ci0rICAgc3RhdGljIHZvaWQgZGVsYXkgKHZv aWQpOyAgKi8KLSsKLStzdGF0aWMgcHRocmVhZF90IHRocmVhZDsKLStzdGF0aWMgdm9sYXRpbGUg aW50IHN0ZXA7Ci0rI2RlZmluZSBUSFJFQUQKKytzdGF0aWMgdm9pZAorK21hcmtfZXhpdCAodm9p ZCkKKyt7CisrfQogKwotKyNpbmNsdWRlICJ3YXRjaHBvaW50LWZvcmstZm9ya29mZi5jIgorK3B0 aHJlYWRfdCB0aHJlYWQ7Cisrdm9sYXRpbGUgaW50IHN0ZXA7CiArCiArc3RhdGljIHZvaWQgKgog K3N0YXJ0ICh2b2lkICphcmcpCiAreworKyAgaW50IGk7CisrCiArICBpZiAoc3RlcCA+PSAzKQog KyAgICBnb3RvIHN0ZXBfMzsKICsKICsgIHdoaWxlIChzdGVwICE9IDEpCi0rICAgIGRlbGF5ICgp OworKyAgICB7CisrICAgICAgaSA9IHB0aHJlYWRfeWllbGQgKCk7CisrICAgICAgYXNzZXJ0IChp ID09IDApOworKyAgICB9CiArCiArICB2YXIrKzsJLyogdmFsaWRpdHktdGhyZWFkLUIgKi8KLSsg IGR1bW15ICgpOwkvKiB2YWxpZGl0eS10aHJlYWQtQiAqLworKyAgZW1wdHkgKCk7CS8qIHZhbGlk aXR5LXRocmVhZC1CICovCiArICBzdGVwID0gMjsKICsgIHdoaWxlIChzdGVwICE9IDMpCiArICAg IHsKICsgICAgICBpZiAoc3RlcCA9PSA5OSkKICsJZ290byBzdGVwXzk5OwotKyAgICAgIGRlbGF5 ICgpOworKworKyAgICAgIGkgPSBwdGhyZWFkX3lpZWxkICgpOworKyAgICAgIGFzc2VydCAoaSA9 PSAwKTsKICsgICAgfQogKwogK3N0ZXBfMzoKQEAgLTg4MzMsMjQgKzk4MTQsMjYgQEAgaW5kZXgg MDAwMDAwMC4uZWRhY2ZjMAogKyAgICBnb3RvIHN0ZXBfNTsKICsKICsgIHZhcisrOwkvKiBhZnRl ci1mb3JrMS1CICovCi0rICBkdW1teSAoKTsJLyogYWZ0ZXItZm9yazEtQiAqLworKyAgZW1wdHkg KCk7CS8qIGFmdGVyLWZvcmsxLUIgKi8KICsgIHN0ZXAgPSA0OwogKyAgd2hpbGUgKHN0ZXAgIT0g NSkKICsgICAgewogKyAgICAgIGlmIChzdGVwID09IDk5KQogKwlnb3RvIHN0ZXBfOTk7Ci0rICAg ICAgZGVsYXkgKCk7CisrCisrICAgICAgaSA9IHB0aHJlYWRfeWllbGQgKCk7CisrICAgICAgYXNz ZXJ0IChpID09IDApOwogKyAgICB9CiArCiArc3RlcF81OgogKyAgdmFyKys7CS8qIGFmdGVyLWZv cmsyLUIgKi8KLSsgIGR1bW15ICgpOwkvKiBhZnRlci1mb3JrMi1CICovCisrICBlbXB0eSAoKTsJ LyogYWZ0ZXItZm9yazItQiAqLwogKyAgcmV0dXJuICh2b2lkICopIDVVTDsKICsKICtzdGVwXzk5 OgogKyAgLyogV2UgbXVzdCBub3QgZ2V0IGNhdWdodCBoZXJlIChhZ2FpbnN0IGEgZm9yZ290dGVu IGJyZWFrcG9pbnQpLiAgKi8KICsgIHZhcisrOwotKyAgYnJlYWtwb2ludCAoKTsKKysgIG1hcmtl ciAoKTsKICsgIHJldHVybiAodm9pZCAqKSA5OVVMOwogK30KICsKQEAgLTg4NjMsMjQgKzk4NDYs MjggQEAgaW5kZXggMDAwMDAwMC4uZWRhY2ZjMAogKyAgc2V0YnVmIChzdGRvdXQsIE5VTEwpOwog KyAgcHJpbnRmICgibWFpbjogJWRcbiIsIChpbnQpIGdldHRpZCAoKSk7CiArCi0rICAvKiBHZW5l cmFsIHdhdGNocG9pbnRzIHZhbGlkaXR5LiAgKi8KKysgIC8qIEdlbmVyYWwgaGFyZHdhcmUgYnJl YWtwb2ludHMgYW5kIHdhdGNocG9pbnRzIHZhbGlkaXR5LiAgKi8KKysgIG1hcmtlciAoKTsKICsg IHZhcisrOwkvKiB2YWxpZGl0eS1maXJzdCAqLwotKyAgZHVtbXkgKCk7CS8qIHZhbGlkaXR5LWZp cnN0ICovCisrICBlbXB0eSAoKTsJLyogdmFsaWRpdHktZmlyc3QgKi8KICsKICsgIGkgPSBwdGhy ZWFkX2NyZWF0ZSAoJnRocmVhZCwgTlVMTCwgc3RhcnQsIE5VTEwpOwogKyAgYXNzZXJ0IChpID09 IDApOwogKwogKyAgdmFyKys7CS8qIHZhbGlkaXR5LXRocmVhZC1BICovCi0rICBkdW1teSAoKTsJ LyogdmFsaWRpdHktdGhyZWFkLUEgKi8KKysgIGVtcHR5ICgpOwkvKiB2YWxpZGl0eS10aHJlYWQt QSAqLwogKyAgc3RlcCA9IDE7CiArICB3aGlsZSAoc3RlcCAhPSAyKQotKyAgICBkZWxheSAoKTsK KysgICAgeworKyAgICAgIGkgPSBwdGhyZWFkX3lpZWxkICgpOworKyAgICAgIGFzc2VydCAoaSA9 PSAwKTsKKysgICAgfQogKwogKyAgLyogSGFyZHdhcmUgd2F0Y2hwb2ludHMgZ290IGRpc2FybWVk IGhlcmUuICAqLwogKyAgZm9ya29mZiAoMSk7CiArCiArICB2YXIrKzsJLyogYWZ0ZXItZm9yazEt QSAqLwotKyAgZHVtbXkgKCk7CS8qIGFmdGVyLWZvcmsxLUEgKi8KKysgIGVtcHR5ICgpOwkvKiBh ZnRlci1mb3JrMS1BICovCiArICBzdGVwID0gMzsKICsjaWZkZWYgRk9MTE9XX0NISUxECiArICAv KiBTcGF3biBuZXcgdGhyZWFkIGFzIGl0IHdhcyBkZWxldGVkIGluIHRoZSBjaGlsZCBvZiBGT1JL LiAgKi8KQEAgLTg4ODgsMTMgKzk4NzUsMTYgQEAgaW5kZXggMDAwMDAwMC4uZWRhY2ZjMAogKyAg YXNzZXJ0IChpID09IDApOwogKyNlbmRpZgogKyAgd2hpbGUgKHN0ZXAgIT0gNCkKLSsgICAgZGVs YXkgKCk7CisrICAgIHsKKysgICAgICBpID0gcHRocmVhZF95aWVsZCAoKTsKKysgICAgICBhc3Nl cnQgKGkgPT0gMCk7CisrICAgIH0KICsKICsgIC8qIEEgc2FuaXR5IGNoZWNrIGZvciBkb3VibGUg aGFyZHdhcmUgd2F0Y2hwb2ludHMgcmVtb3ZhbC4gICovCiArICBmb3Jrb2ZmICgyKTsKICsKICsg IHZhcisrOwkvKiBhZnRlci1mb3JrMi1BICovCi0rICBkdW1teSAoKTsJLyogYWZ0ZXItZm9yazIt QSAqLworKyAgZW1wdHkgKCk7CS8qIGFmdGVyLWZvcmsyLUEgKi8KICsgIHN0ZXAgPSA1OwogKyNp ZmRlZiBGT0xMT1dfQ0hJTEQKICsgIC8qIFNwYXduIG5ldyB0aHJlYWQgYXMgaXQgd2FzIGRlbGV0 ZWQgaW4gdGhlIGNoaWxkIG9mIEZPUksuICAqLwpAQCAtODkwNiwxNyArOTg5Niw5OCBAQCBpbmRl eCAwMDAwMDAwLi5lZGFjZmMwCiArICBhc3NlcnQgKGkgPT0gMCk7CiArICBhc3NlcnQgKHRocmVh ZF9yZXN1bHQgPT0gKHZvaWQgKikgNVVMKTsKICsKKysgIG1hcmtfZXhpdCAoKTsKICsgIHJldHVy biAwOwogK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9p bnQtZm9yay5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuYwor ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLXBh cmVudC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstcGFyZW50 LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi44MmQxMTgyCistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1w YXJlbnQuYworQEAgLTAsMCArMSw3NCBAQAorKy8qIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3 LXdhdGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYgb2YgYSBwcm9jZXNzLgorKworKyAgIENvcHly aWdodCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKwor KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQorKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwK KysgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCisrCisrI2luY2x1ZGUgPHN0cmlu Zy5oPgorKyNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5j bHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPGFzc2VydC5oPgorKyNpbmNsdWRlIDxzdGRpby5o PgorKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorKworKyNpbmNsdWRlICJ3YXRjaHBvaW50LWZvcmsu aCIKKysKKyt2b2lkCisrZm9ya29mZiAoaW50IG5yKQorK3sKKysgIHBpZF90IGNoaWxkLCBwaWRf Z290OworKyAgaW50IGV4aXRfY29kZSA9IDQyICsgbnI7CisrICBpbnQgc3RhdHVzLCBpOworKwor KyAgY2hpbGQgPSBmb3JrICgpOworKyAgc3dpdGNoIChjaGlsZCkKKysgICAgeworKyAgICBjYXNl IC0xOgorKyAgICAgIGFzc2VydCAoMCk7CisrICAgIGNhc2UgMDoKKysgICAgICBwcmludGYgKCJj aGlsZCVkOiAlZFxuIiwgbnIsIChpbnQpIGdldHBpZCAoKSk7CisrICAgICAgLyogRGVsYXkgdG8g Z2V0IGJvdGggdGhlICJjaGlsZCVkIiBhbmQgInBhcmVudCVkIiBtZXNzYWdlIHByaW50ZWQgd2l0 aG91dAorKwkgYSByYWNlIGJyZWFraW5nIGV4cGVjdCBieSBpdHMgZW5kbGVzcyB3YWl0IG9uIGAk Z2RiX3Byb21wdCQnOgorKwkgQnJlYWtwb2ludCAzLCBtYXJrZXIgKCkgYXQgLi4vLi4vLi4vZ2Ri L3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuYzozMworKwkgMzMgICAgICB9 CisrCSAoZ2RiKSBwYXJlbnQyOiAxNDIyMyAgKi8KKysgICAgICBpID0gc2xlZXAgKDEpOworKyAg ICAgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgICAgICAvKiBXZSBtdXN0IG5vdCBnZXQgY2F1Z2h0 IGhlcmUgKGFnYWluc3QgYSBmb3Jnb3R0ZW4gYnJlYWtwb2ludCkuICAqLworKyAgICAgIHZhcisr OworKyAgICAgIG1hcmtlciAoKTsKKysKKysgICAgICBfZXhpdCAoZXhpdF9jb2RlKTsKKysgICAg ZGVmYXVsdDoKKysgICAgICBwcmludGYgKCJwYXJlbnQlZDogJWRcbiIsIG5yLCAoaW50KSBjaGls ZCk7CisrICAgICAgLyogRGVsYXkgdG8gZ2V0IGJvdGggdGhlICJjaGlsZCVkIiBhbmQgInBhcmVu dCVkIiBtZXNzYWdlIHByaW50ZWQsIHNlZQorKwkgYWJvdmUuICAqLworKyAgICAgIGkgPSBzbGVl cCAoMSk7CisrICAgICAgYXNzZXJ0IChpID09IDApOworKworKyAgICAgIHBpZF9nb3QgPSB3YWl0 ICgmc3RhdHVzKTsKKysgICAgICBhc3NlcnQgKHBpZF9nb3QgPT0gY2hpbGQpOworKyAgICAgIGFz c2VydCAoV0lGRVhJVEVEIChzdGF0dXMpKTsKKysgICAgICBhc3NlcnQgKFdFWElUU1RBVFVTIChz dGF0dXMpID09IGV4aXRfY29kZSk7CisrCisrICAgICAgLyogV2UgbXVzdCBnZXQgY2F1Z2h0IGhl cmUgKGFnYWluc3QgYSBmYWxzZSB3YXRjaHBvaW50IHJlbW92YWwpLiAgKi8KKysgICAgICBtYXJr ZXIgKCk7CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFk cy93YXRjaHBvaW50LWZvcmstc3QuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hw b2ludC1mb3JrLXN0LmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41ZjYy ZTdmCitpbmRleCAwMDAwMDAwLi5hN2VlZWRkCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5jCi1AQCAtMCwwICsxLDU3IEBACisr KysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1zdC5jCitAQCAt MCwwICsxLDYxIEBACiArLyogVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMg YWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHByb2Nlc3MuCiArCi0rICAgQ29weXJpZ2h0IDIwMDgsIDIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMDgsIDIw MDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgR0RCLgogKwpAQCAtODk0MSwxNyArMTAwMTIsMTkgQEAgaW5kZXggMDAwMDAw MC4uNWY2MmU3ZgogKyNpbmNsdWRlIDxzdGRpby5oPgogKyNpbmNsdWRlIDxzdGRsaWIuaD4KICsK LStzdGF0aWMgdm9sYXRpbGUgaW50IHZhcjsKKysjaW5jbHVkZSAid2F0Y2hwb2ludC1mb3JrLmgi CiArCi0rc3RhdGljIHZvaWQKLSticmVha3BvaW50ICh2b2lkKQorK3ZvbGF0aWxlIGludCB2YXI7 CisrCisrdm9pZAorK21hcmtlciAodm9pZCkKICt7CiArfQogKwotKy8qIEluY2x1ZGUgaGVyZSB0 aGUgZnVuY3Rpb246Ci0rICAgc3RhdGljIHZvaWQgZm9ya29mZiAoaW50IG5yKTsgICovCi0rCi0r I2luY2x1ZGUgIndhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMiCisrc3RhdGljIHZvaWQKKyttYXJr X2V4aXQgKHZvaWQpCisreworK30KICsKICtpbnQKICttYWluICh2b2lkKQpAQCAtODk1OSw3ICsx MDAzMiw4IEBAIGluZGV4IDAwMDAwMDAuLjVmNjJlN2YKICsgIHNldGJ1ZiAoc3Rkb3V0LCBOVUxM KTsKICsgIHByaW50ZiAoIm1haW46ICVkXG4iLCAoaW50KSBnZXRwaWQgKCkpOwogKwotKyAgLyog R2VuZXJhbCB3YXRjaHBvaW50cyB2YWxpZGl0eS4gICovCisrICAvKiBHZW5lcmFsIGhhcmR3YXJl IGJyZWFrcG9pbnRzIGFuZCB3YXRjaHBvaW50cyB2YWxpZGl0eS4gICovCisrICBtYXJrZXIgKCk7 CiArICB2YXIrKzsKICsgIC8qIEhhcmR3YXJlIHdhdGNocG9pbnRzIGdvdCBkaXNhcm1lZCBoZXJl LiAgKi8KICsgIGZvcmtvZmYgKDEpOwpAQCAtODk2OSwxNSArMTAwNDMsMTYgQEAgaW5kZXggMDAw MDAwMC4uNWY2MmU3ZgogKyAgZm9ya29mZiAoMik7CiArICB2YXIrKzsKICsKKysgIG1hcmtfZXhp dCAoKTsKICsgIHJldHVybiAwOwogK30KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dh dGNocG9pbnQtZm9yay5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4x ZGM5M2FiCitpbmRleCAwMDAwMDAwLi4xMTc3MDBiCiAtLS0gL2Rldi9udWxsCiArKysgYi9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAKLUBAIC0wLDAgKzEsMTMw IEBACi0rIyBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KK0BAIC0wLDAgKzEsMTQ5IEBACisrIyBDb3B5cmlnaHQgMjAwOCwgMjAwOSwgMjAxMCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQpAQCAtODk5NSw1NiArMTAwNzAsNzIgQEAgaW5kZXggMDAwMDAwMC4uMWRjOTNhYgogKyMg VGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygpLW9mZiBv ZiBhIHByb2Nlc3MuCiArCiArcHJvYyB0ZXN0IHt0eXBlIHN5bWJvbH0gewotKyAgICBnbG9iYWwg b2JqZGlyIHN1YmRpciBzcmNkaXIKKysgICAgZ2xvYmFsIG9iamRpciBzdWJkaXIgc3JjZGlyIGdk Yl9wcm9tcHQKICsKLSsgICAgc2V0IHRlc3Qgd2F0Y2hwb2ludC1mb3JrCisrICAgIHNldCB0ZXN0 ZmlsZSB3YXRjaHBvaW50LWZvcmsKICsKICsgICAgZ2xvYmFsIHBmX3ByZWZpeAogKyAgICBzZXQg cHJlZml4X3Rlc3QgJHBmX3ByZWZpeAogKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAiJHR5cGU6Igog KyAgICBzZXQgcHJlZml4X210ICRwZl9wcmVmaXgKICsKKysgICAgc2V0IHNyY2ZpbGVfdHlwZSAk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LSR7dHlwZX0uYworKworKwogKyAgICAjIG5v IHRocmVhZHMKICsKICsgICAgc2V0IHBmX3ByZWZpeCAkcHJlZml4X210CiArICAgIGxhcHBlbmQg cGZfcHJlZml4ICJzaW5nbGV0aHJlYWRlZDoiCiArCi0rICAgIHNldCBleGVjdXRhYmxlICR7dGVz dH0tJHt0eXBlfQotKyAgICBpZiB7IFtnZGJfY29tcGlsZSAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7 dGVzdH0uYyAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0gZXhlY3V0YWJsZSBbbGlz dCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1EJHN5bWJvbF1dICE9ICIiIH0gewotKwl1bnRlc3Rl ZCAke3Rlc3R9LmV4cAotKwlyZXR1cm4gLTEKKysgICAgc2V0IGV4ZWN1dGFibGUgJHt0ZXN0Zmls ZX0tJHt0eXBlfS1zdAorKyAgICBzZXQgc3JjZmlsZV9tYWluICR7c3JjZGlyfS8ke3N1YmRpcn0v JHt0ZXN0ZmlsZX0tc3QuYworKyAgICBpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNmaWxlX21haW59 ICR7c3JjZmlsZV90eXBlfSIgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1dGFibGV9IGV4ZWN1 dGFibGUgW2xpc3QgZGVidWcgYWRkaXRpb25hbF9mbGFncz0tRCRzeW1ib2xdXSAhPSAiIiB9IHsK KysJdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhwCisrCXJldHVybgogKyAgICB9CiArICAgIGNsZWFu X3Jlc3RhcnQgJGV4ZWN1dGFibGUKICsKLSsgICAgZ2RiX3Rlc3QgInNob3cgZGV0YWNoLW9uLWZv cmsiICJXaGV0aGVyIGdkYiB3aWxsIGRldGFjaCB0aGUgY2hpbGQgb2YgYSBmb3JrIGlzIG9uLiIK LSsgICAgZ2RiX3Rlc3QgInNldCBmb2xsb3ctZm9yay1tb2RlICR0eXBlIgotKyAgICBnZGJfdGVz dCAic2hvdyBmb2xsb3ctZm9yay1tb2RlIiAiRGVidWdnZXIgcmVzcG9uc2UgdG8gYSBwcm9ncmFt IGNhbGwgb2YgZm9yayBvciB2Zm9yayBpcyBcIiR0eXBlXCIuIgorKyAgICBnZGJfdGVzdCAic2hv dyBkZXRhY2gtb24tZm9yayIgIldoZXRoZXIgZ2RiIHdpbGwgZGV0YWNoIHRoZSBjaGlsZCBvZiBh IGZvcmsgaXMgb25cXC4iCisrICAgIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGZvbGxvdy1mb3Jr LW1vZGUgJHR5cGUiCisrICAgIGdkYl90ZXN0ICJzaG93IGZvbGxvdy1mb3JrLW1vZGUiICJEZWJ1 Z2dlciByZXNwb25zZSB0byBhIHByb2dyYW0gY2FsbCBvZiBmb3JrIG9yIHZmb3JrIGlzIFwiJHR5 cGVcIlxcLiIKICsgICAgIyBUZXN0Y2FzZSB1c2VzIGl0IGZvciB0aGUgYGZvbGxvdy1mb3JrLW1v ZGUgY2hpbGQnIHR5cGUuCi0rICAgIGdkYl90ZXN0ICJoYW5kbGUgU0lHVVNSMSBub3N0b3Agbm9w cmludCBwYXNzIgorKyAgICBnZGJfdGVzdCAiaGFuZGxlIFNJR1VTUjEgbm9zdG9wIG5vcHJpbnQg cGFzcyIgIk5vXFsgXHRcXStOb1xbIFx0XF0rWWVzLioiCiArCi0rICAgIGlmIHsgIVtydW50b19t YWluXSB9IHRoZW4gewotKwlnZGJfc3VwcHJlc3NfdGVzdHMKKysgICAgaWYgIVtydW50b19tYWlu XSB7CiArCXJldHVybgogKyAgICB9CiArCi0rICAgICMgSW5zdGFsbCB0aGUgd2F0Y2hwb2ludCBv bmx5IGFmdGVyIGdldHRpbmcgaW50byBNQUlOIC0gd29ya2Fyb3VuZCBzb21lIFBQQwotKyAgICAj IHByb2JsZW0uCi0rICAgIGdkYl90ZXN0ICJ3YXRjaCB2YXIiICJhdGNocG9pbnQgMjogdmFyIiAi U2V0IHRoZSB3YXRjaHBvaW50IgorKyAgICBnZGJfdGVzdCAid2F0Y2ggdmFyIiAiYXRjaHBvaW50 IFxbMC05XF0rOiB2YXIiICJTZXQgdGhlIHdhdGNocG9pbnQiCiArCiArICAgICMgSXQgaXMgbmV2 ZXIgaGl0IGJ1dCBpdCBzaG91bGQgbm90IGJlIGxlZnQgb3ZlciBpbiB0aGUgZm9yaygpZWQtb2Zm IGNoaWxkLgotKyAgICBnZGJfYnJlYWtwb2ludCAiYnJlYWtwb2ludCIKKysgICAgc2V0IGhicmVh ayAiaGJyZWFrIgorKyAgICBzZXQgdGVzdCAiaGJyZWFrIG1hcmtlciIKKysgICAgZ2RiX3Rlc3Rf bXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKwktcmUgIkhhcmR3YXJlIGFzc2lzdGVkIGJyZWFrcG9p bnQgXFswLTlcXSsgYXQgLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwkgICAgcGFzcyAkdGVzdAor Kwl9CisrCS1yZSAiKE5vIGhhcmR3YXJlIGJyZWFrcG9pbnQgc3VwcG9ydCBpbiB0aGUgdGFyZ2V0 XFwufEhhcmR3YXJlIGJyZWFrcG9pbnRzIHVzZWQgZXhjZWVkcyBsaW1pdFxcLilcclxuJGdkYl9w cm9tcHQgJCIgeworKwkgICAgcGFzcyAkdGVzdAorKwkgICAgc2V0IGhicmVhayAiYnJlYWsiCisr CSAgICBnZGJfdGVzdCAiYnJlYWsgbWFya2VyIgorKwl9CisrICAgIH0KKysKKysgICAgZ2RiX2Jy ZWFrcG9pbnQgIm1hcmtfZXhpdCIKICsKICsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAg ICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDAuKk5ldyB2YWx1ZSA9IDEuKmZvcmtv ZmYgKlxcKDFcXCkuKiIgIndhdGNocG9pbnRzIHdvcmsiCisrCSAgICAgInJlYWtwb2ludCBcWzAt OVxdKywgbWFya2VyLioiICJoYXJkd2FyZSBicmVha3BvaW50cyB3b3JrIgogKyAgICBnZGJfdGVz dCAiY29udGludWUiIFwKLSsJICAgICAicmVha3BvaW50IDMsIGJyZWFrcG9pbnQuKiIgImJyZWFr cG9pbnQgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCisrCSAgICAgImF0Y2hwb2ludCBcWzAtOVxdKzog dmFyLipPbGQgdmFsdWUgPSAwLipOZXcgdmFsdWUgPSAxLipmb3Jrb2ZmICpcXCgxXFwpLioiICJ3 YXRjaHBvaW50cyB3b3JrIgogKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRj aHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gMS4qTmV3IHZhbHVlID0gMi4qZm9ya29mZiAqXFwo MlxcKS4qIiAid2F0Y2hwb2ludCBhZnRlciB0aGUgZmlyc3QgZm9yayIKKysJICAgICAicmVha3Bv aW50IFxbMC05XF0rLCBtYXJrZXIuKiIgImJyZWFrcG9pbnQgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsi CiArICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJyZWFrcG9pbnQgMywgYnJlYWtw b2ludC4qIiAiYnJlYWtwb2ludCBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCisrCSAgICAgImF0Y2hw b2ludCBcWzAtOVxdKzogdmFyLipPbGQgdmFsdWUgPSAxLipOZXcgdmFsdWUgPSAyLipmb3Jrb2Zm ICpcXCgyXFwpLioiICJ3YXRjaHBvaW50IGFmdGVyIHRoZSBmaXJzdCBmb3JrIgogKyAgICBnZGJf dGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0g Mi4qTmV3IHZhbHVlID0gMy4qcmV0dXJuICowOyIgIndhdGNocG9pbnQgYWZ0ZXIgdGhlIHNlY29u ZCBmb3JrIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiICJDb250aW51aW5nLi4qUHJvZ3JhbSBl eGl0ZWQgbm9ybWFsbHkuIiAiZmluaXNoIgorKwkgICAgICJyZWFrcG9pbnQgXFswLTlcXSssIG1h cmtlci4qIiAiYnJlYWtwb2ludCBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCisrICAgIGdkYl90ZXN0 ICJjb250aW51ZSIgXAorKwkgICAgICJhdGNocG9pbnQgXFswLTlcXSs6IHZhci4qT2xkIHZhbHVl ID0gMi4qTmV3IHZhbHVlID0gMy4qbWFya19leGl0IFxcKFxcKTsiICJ3YXRjaHBvaW50IGFmdGVy IHRoZSBzZWNvbmQgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQ29udGludWluZ1xc Li4qXHJcbkJyZWFrcG9pbnQgXFswLTlcXSssIG1hcmtfZXhpdCAuKiIgImZpbmlzaCIKICsKICsK ICsgICAgIyB0aHJlYWRzCkBAIC05MDUyLDYxICsxMDE0MywxMDIgQEAgaW5kZXggMDAwMDAwMC4u MWRjOTNhYgogKyAgICBzZXQgcGZfcHJlZml4ICRwcmVmaXhfbXQKICsgICAgbGFwcGVuZCBwZl9w cmVmaXggIm11bHRpdGhyZWFkZWQ6IgogKwotKyAgICBzZXQgZXhlY3V0YWJsZSAke3Rlc3R9LW10 LSR7dHlwZX0KLSsgICAgaWYgeyBbZ2RiX2NvbXBpbGVfcHRocmVhZHMgJHtzcmNkaXJ9LyR7c3Vi ZGlyfS8ke3Rlc3R9LW10LmMgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1dGFibGV9IGV4ZWN1 dGFibGUgW2xpc3QgZGVidWcgYWRkaXRpb25hbF9mbGFncz0tRCRzeW1ib2xdXSAhPSAiIiB9IHsK LSsJdW50ZXN0ZWQgJHt0ZXN0fS5leHAKLSsJcmV0dXJuIC0xCisrICAgIHNldCBleGVjdXRhYmxl ICR7dGVzdGZpbGV9LSR7dHlwZX0tbXQKKysgICAgc2V0IHNyY2ZpbGVfbWFpbiAke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9LW10LmMKKysgICAgaWYgeyBbZ2RiX2NvbXBpbGVfcHRocmVh ZHMgIiR7c3JjZmlsZV9tYWlufSAke3NyY2ZpbGVfdHlwZX0iICR7b2JqZGlyfS8ke3N1YmRpcn0v JHtleGVjdXRhYmxlfSBleGVjdXRhYmxlIFtsaXN0IGRlYnVnICJhZGRpdGlvbmFsX2ZsYWdzPS1E JHN5bWJvbCAtRFRIUkVBRCJdXSAhPSAiIiB9IHsKKysJdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhw CisrCXJldHVybgogKyAgICB9CiArICAgIGNsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUKICsKLSsg ICAgZ2RiX3Rlc3QgInNldCBmb2xsb3ctZm9yay1tb2RlICR0eXBlIgorKyAgICBnZGJfdGVzdF9u b19vdXRwdXQgInNldCBmb2xsb3ctZm9yay1tb2RlICR0eXBlIgogKyAgICAjIFRlc3RjYXNlIHVz ZXMgaXQgZm9yIHRoZSBgZm9sbG93LWZvcmstbW9kZSBjaGlsZCcgdHlwZS4KLSsgICAgZ2RiX3Rl c3QgImhhbmRsZSBTSUdVU1IxIG5vc3RvcCBub3ByaW50IHBhc3MiCisrICAgIGdkYl90ZXN0ICJo YW5kbGUgU0lHVVNSMSBub3N0b3Agbm9wcmludCBwYXNzIiAiTm9cWyBcdFxdK05vXFsgXHRcXStZ ZXMuKiIKICsKLSsgICAgaWYgeyAhW3J1bnRvX21haW5dIH0gdGhlbiB7Ci0rCWdkYl9zdXBwcmVz c190ZXN0cworKyAgICBpZiAhW3J1bnRvX21haW5dIHsKICsJcmV0dXJuCiArICAgIH0KICsKLSsg ICAgIyBJbnN0YWxsIHRoZSB3YXRjaHBvaW50IG9ubHkgYWZ0ZXIgZ2V0dGluZyBpbnRvIE1BSU4g LSB3b3JrYXJvdW5kIHNvbWUgUFBDCi0rICAgICMgcHJvYmxlbS4KLSsgICAgZ2RiX3Rlc3QgIndh dGNoIHZhciIgImF0Y2hwb2ludCAyOiB2YXIiICJTZXQgdGhlIHdhdGNocG9pbnQiCisrICAgIGdk Yl90ZXN0ICJ3YXRjaCB2YXIiICJhdGNocG9pbnQgXFswLTlcXSs6IHZhciIgIlNldCB0aGUgd2F0 Y2hwb2ludCIKICsKLSsgICAgIyBJdCBpcyBuZXZlciBoaXQgYnV0IGl0IHNob3VsZCBub3QgYmUg bGVmdCBvdmVyIGluIHRoZSBmb3JrKCllZC1vZmYgY2hpbGQuCi0rICAgIGdkYl9icmVha3BvaW50 ICJicmVha3BvaW50IgorKyAgICAjIEl0IHNob3VsZCBub3QgYmUgbGVmdCBvdmVyIGluIHRoZSBm b3JrKCllZC1vZmYgY2hpbGQuCisrICAgIGdkYl90ZXN0ICIkaGJyZWFrIG1hcmtlciIge3JlYWtw b2ludCBbMC05XSsuKn0KKysKKysgICAgZ2RiX2JyZWFrcG9pbnQgIm1hcmtfZXhpdCIKICsKICsg ICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2 YWx1ZSA9IDAuKk5ldyB2YWx1ZSA9IDEuKnZhbGlkaXR5LWZpcnN0LioiICJzaW5nbGV0aHJlYWQg d2F0Y2hwb2ludHMgd29yayIKKysJICAgICAicmVha3BvaW50IFxbMC05XF0rLCBtYXJrZXIuKiIg ImhhcmR3YXJlIGJyZWFrcG9pbnRzIHdvcmsiCiArICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAot KwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSAxLipOZXcgdmFsdWUgPSAyLip2 YWxpZGl0eS10aHJlYWQtQS4qIiAibXVsdGl0aHJlYWRlZCB3YXRjaHBvaW50cyB3b3JrIGF0IEEi CisrCSAgICAgImF0Y2hwb2ludCBcWzAtOVxdKzogdmFyLipPbGQgdmFsdWUgPSAwLipOZXcgdmFs dWUgPSAxLip2YWxpZGl0eS1maXJzdC4qIiAic2luZ2xldGhyZWFkIHdhdGNocG9pbnRzIHdvcmsi CiArICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipP bGQgdmFsdWUgPSAyLipOZXcgdmFsdWUgPSAzLip2YWxpZGl0eS10aHJlYWQtQi4qIiAibXVsdGl0 aHJlYWRlZCB3YXRjaHBvaW50cyB3b3JrIGF0IEIiCisrCSAgICAgImF0Y2hwb2ludCBcWzAtOVxd KzogdmFyLipPbGQgdmFsdWUgPSAxLipOZXcgdmFsdWUgPSAyLip2YWxpZGl0eS10aHJlYWQtQS4q IiAibXVsdGl0aHJlYWRlZCB3YXRjaHBvaW50cyB3b3JrIGF0IEEiCiArICAgIGdkYl90ZXN0ICJj b250aW51ZSIgXAotKwkgICAgICJyZWFrcG9pbnQgMywgYnJlYWtwb2ludC4qIiAiYnJlYWtwb2lu dCAoQSkgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCisrCSAgICAgImF0Y2hwb2ludCBcWzAtOVxdKzog dmFyLipPbGQgdmFsdWUgPSAyLipOZXcgdmFsdWUgPSAzLip2YWxpZGl0eS10aHJlYWQtQi4qIiAi bXVsdGl0aHJlYWRlZCB3YXRjaHBvaW50cyB3b3JrIGF0IEIiCiArICAgIGdkYl90ZXN0ICJjb250 aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSAzLipOZXcgdmFs dWUgPSA0LiphZnRlci1mb3JrMS1BLioiICJ3YXRjaHBvaW50IEEgYWZ0ZXIgdGhlIGZpcnN0IGZv cmsiCisrCSAgICAgInJlYWtwb2ludCBcWzAtOVxdKywgbWFya2VyLioiICJicmVha3BvaW50IChB KSBhZnRlciB0aGUgZmlyc3QgZm9yayIKICsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAg ICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDQuKk5ldyB2YWx1ZSA9IDUuKmFmdGVy LWZvcmsxLUIuKiIgIndhdGNocG9pbnQgQiBhZnRlciB0aGUgZmlyc3QgZm9yayIKKysJICAgICAi YXRjaHBvaW50IFxbMC05XF0rOiB2YXIuKk9sZCB2YWx1ZSA9IDMuKk5ldyB2YWx1ZSA9IDQuKmFm dGVyLWZvcmsxLUEuKiIgIndhdGNocG9pbnQgQSBhZnRlciB0aGUgZmlyc3QgZm9yayIKICsgICAg Z2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAgInJlYWtwb2ludCAzLCBicmVha3BvaW50Lioi ICJicmVha3BvaW50IChBKSBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCisrCSAgICAgImF0Y2hwb2lu dCBcWzAtOVxdKzogdmFyLipPbGQgdmFsdWUgPSA0LipOZXcgdmFsdWUgPSA1LiphZnRlci1mb3Jr MS1CLioiICJ3YXRjaHBvaW50IEIgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCiArICAgIGdkYl90ZXN0 ICJjb250aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSA1LipO ZXcgdmFsdWUgPSA2LiphZnRlci1mb3JrMi1BLioiICJ3YXRjaHBvaW50IEEgYWZ0ZXIgdGhlIHNl Y29uZCBmb3JrIgorKwkgICAgICJyZWFrcG9pbnQgXFswLTlcXSssIG1hcmtlci4qIiAiYnJlYWtw b2ludCAoQSkgYWZ0ZXIgdGhlIHNlY29uZCBmb3JrIgogKyAgICBnZGJfdGVzdCAiY29udGludWUi IFwKLSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gNi4qTmV3IHZhbHVlID0g Ny4qYWZ0ZXItZm9yazItQi4qIiAid2F0Y2hwb2ludCBCIGFmdGVyIHRoZSBzZWNvbmQgZm9yayIK LSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQ29udGludWluZy4uKlByb2dyYW0gZXhpdGVkIG5v cm1hbGx5LiIgImZpbmlzaCIKKysJICAgICAiYXRjaHBvaW50IFxbMC05XF0rOiB2YXIuKk9sZCB2 YWx1ZSA9IDUuKk5ldyB2YWx1ZSA9IDYuKmFmdGVyLWZvcmsyLUEuKiIgIndhdGNocG9pbnQgQSBh ZnRlciB0aGUgc2Vjb25kIGZvcmsiCisrICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkgICAg ICJhdGNocG9pbnQgXFswLTlcXSs6IHZhci4qT2xkIHZhbHVlID0gNi4qTmV3IHZhbHVlID0gNy4q YWZ0ZXItZm9yazItQi4qIiAid2F0Y2hwb2ludCBCIGFmdGVyIHRoZSBzZWNvbmQgZm9yayIKKysg ICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQ29udGludWluZ1xcLi4qXHJcbkJyZWFrcG9pbnQgXFsw LTlcXSssIG1hcmtfZXhpdCAuKiIgImZpbmlzaCIKICsKICsKICsgICAgIyBjbGVhbnVwCi0rCiAr ICAgIHNldCBwZl9wcmVmaXggJHByZWZpeF90ZXN0CiArfQogKwogK3Rlc3QgcGFyZW50IEZPTExP V19QQVJFTlQKICsKICsjIE9ubHkgR05VL0xpbnV4IGlzIGtub3duIHRvIHN1cHBvcnQgYHNldCBm b2xsb3ctZm9yay1tb2RlIGNoaWxkJy4KLStpZiB7W2lzdGFyZ2V0ICIqLSotbGludXgqIl19IHsK KytpZiB7W2lzdGFyZ2V0ICIqLSotbGludXgqIl0gJiYgIVtpc19yZW1vdGUgdGFyZ2V0XX0gewog KyAgICB0ZXN0IGNoaWxkIEZPTExPV19DSElMRAorK30gZWxzZSB7CisrICAgIHVudGVzdGVkICJj aGlsZCIKICt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBv aW50LWZvcmsuaCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmgK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4zMWY3NjU2CistLS0gL2Rldi9u dWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5oCitA QCAtMCwwICsxLDMyIEBACisrLyogVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2lu dHMgYWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHByb2Nlc3MuCisrCisrICAgQ29weXJpZ2h0IDIwMDgs IDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr CisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICAg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorKyAgIEJvc3Rv biwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKysKKysjaWZkZWYgVEhSRUFECisrI2luY2x1ZGUg PHB0aHJlYWQuaD4KKysKKytleHRlcm4gdm9sYXRpbGUgaW50IHN0ZXA7CisrZXh0ZXJuIHB0aHJl YWRfdCB0aHJlYWQ7CisrI2VuZGlmIC8qIFRIUkVBRCAqLworKworK2V4dGVybiB2b2xhdGlsZSBp bnQgdmFyOworKworK2V4dGVybiB2b2lkIG1hcmtlciAodm9pZCk7CisrZXh0ZXJuIHZvaWQgZm9y a29mZiAoaW50IG5yKTsKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAogaW5kZXggYWYwYjAwZC4uZTFhOGRjNCAx MDA2NDQKIC0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKQEAgLTkxNDMsMTcgKzEw Mjc1LDE3IEBAIGluZGV4IGFmMGIwMGQuLmUxYThkYzQgMTAwNjQ0CiAgICAgIHNldCBwYXNjYWxf aW5pdF9kb25lIDEKICB9ICAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3RvcC5jIGIvZ2RiL3RvcC5jCi1p bmRleCA2NjgwYzM4Li4zOGQxY2MyIDEwMDY0NAoraW5kZXggNDVjOTI1OS4uODg1NjMyMiAxMDA2 NDQKIC0tLSBhL2dkYi90b3AuYwogKysrIGIvZ2RiL3RvcC5jCi1AQCAtMzM4LDYgKzMzOCw3IEBA IHZvaWQKK0BAIC0zNDMsNiArMzQzLDcgQEAgdm9pZAogIHByZXBhcmVfZXhlY3V0ZV9jb21tYW5k ICh2b2lkKQogIHsKICAgIGZyZWVfYWxsX3ZhbHVlcyAoKTsKICsgIGZyZWVfYWxsX3R5cGVzICgp OwogIAotICAgLyogV2l0aCBtdWx0aXBsZSB0aHJlYWRzIHJ1bm5pbmcgd2hpbGUgdGhlIG9uZSB3 ZSdyZSBleGFtaW5pbmcgaXMgc3RvcHBlZCwKLSAgICAgIHRoZSBkY2FjaGUgY2FuIGdldCBzdGFs ZSB3aXRob3V0IHVzIGJlaW5nIGFibGUgdG8gZGV0ZWN0IGl0LgorICAgLyogV2l0aCBtdWx0aXBs ZSB0aHJlYWRzIHJ1bm5pbmcgd2hpbGUgdGhlIG9uZSB3ZSdyZSBleGFtaW5pbmcgaXMKKyAgICAg IHN0b3BwZWQsIHRoZSBkY2FjaGUgY2FuIGdldCBzdGFsZSB3aXRob3V0IHVzIGJlaW5nIGFibGUg dG8gZGV0ZWN0CiBkaWZmIC0tZ2l0IGEvZ2RiL3R5cGVwcmludC5jIGIvZ2RiL3R5cGVwcmludC5j CiBpbmRleCBjZTlmNTUxLi41ZjlkNzM5IDEwMDY0NAogLS0tIGEvZ2RiL3R5cGVwcmludC5jCkBA IC05MjExLDExICsxMDM0Myw1MiBAQCBpbmRleCBjZTlmNTUxLi41ZjlkNzM5IDEwMDY0NAogIH0K ICAKICBzdGF0aWMgdm9pZAorZGlmZiAtLWdpdCBhL2dkYi91dGlscy5jIGIvZ2RiL3V0aWxzLmMK K2luZGV4IDAyYzdhMzcuLjg5NGJlNjkgMTAwNjQ0CistLS0gYS9nZGIvdXRpbHMuYworKysrIGIv Z2RiL3V0aWxzLmMKK0BAIC0yMTk4LDYgKzIxOTgsMzYgQEAgc2V0X2JhdGNoX2ZsYWdfYW5kX21h a2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCkKKyAgIHJldHVybiBiYWNrX3RvOwor IH0KKyAKKysvKiBIZWxwZXIgZm9yIG1ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mby4gICov CisrCisrc3RhdGljIHZvaWQKKytkb19yZXN0b3JlX3NlbGVjdGVkX2ZyYW1lX2NsZWFudXAgKHZv aWQgKmFyZykKKyt7CisrICBzdHJ1Y3QgZnJhbWVfaWQgKmZyYW1lX2lkcCA9IGFyZzsKKysKKysg IHNlbGVjdF9mcmFtZSAoZnJhbWVfZmluZF9ieV9pZCAoKmZyYW1lX2lkcCkpOworKworKyAgeGZy ZWUgKGZyYW1lX2lkcCk7CisrfQorKworKy8qIFByb3ZpZGUgY2xlYW51cCBmb3IgcmVzdG9yaW5n IGN1cnJlbnRseSBzZWxlY3RlZCBmcmFtZS4gIFVzZSBmcmFtZV9pZCBmb3IKKysgICB0aGUgY2Fz ZSB0aGUgY3VycmVudCBmcmFtZSBiZWNvbWVzIHN0YWxlIGluIHRoZSBtZWFudGltZS4gICovCisr Cisrc3RydWN0IGNsZWFudXAgKgorK21ha2VfY2xlYW51cF9yZXN0b3JlX3NlbGVjdGVkX2ZyYW1l ICh2b2lkKQorK3sKKysgIHN0cnVjdCBmcmFtZV9pZCAqZnJhbWVfaWRwOworKworKyAgLyogZ2V0 X3NlbGVjdGVkX2ZyYW1lLT5nZXRfY3VycmVudF9mcmFtZSB3b3VsZCBlcnJvciBvdGhlcndpc2Uu ICAqLworKyAgaWYgKCFoYXNfc3RhY2tfZnJhbWVzICgpKQorKyAgICByZXR1cm4gbWFrZV9jbGVh bnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworKworKyAgZnJhbWVfaWRwID0geG1hbGxvYyAoc2l6 ZW9mICgqZnJhbWVfaWRwKSk7CisrICAqZnJhbWVfaWRwID0gZ2V0X2ZyYW1lX2lkIChnZXRfc2Vs ZWN0ZWRfZnJhbWUgKE5VTEwpKTsKKysKKysgIHJldHVybiBtYWtlX2NsZWFudXAgKGRvX3Jlc3Rv cmVfc2VsZWN0ZWRfZnJhbWVfY2xlYW51cCwgZnJhbWVfaWRwKTsKKyt9CisrCisgLyogU2V0IHRo ZSBzY3JlZW4gc2l6ZSBiYXNlZCBvbiBMSU5FU19QRVJfUEFHRSBhbmQgQ0hBUlNfUEVSX0xJTkUu ICAqLworIAorIHN0YXRpYyB2b2lkCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbGFyaXRoLmMgYi9nZGIv dmFsYXJpdGguYwotaW5kZXggN2M1NTNkMS4uODBiZTgyZiAxMDA2NDQKK2luZGV4IDZiMjEyYjIu LmM2YjQ4NDMgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsYXJpdGguYwogKysrIGIvZ2RiL3ZhbGFyaXRo LmMKLUBAIC0xNjEsMTIgKzE2MSwyNiBAQCB2YWx1ZV9zdWJzY3JpcHQgKHN0cnVjdCB2YWx1ZSAq YXJyYXksIExPTkdFU1QgaW5kZXgpCitAQCAtMTY1LDEyICsxNjUsMjYgQEAgdmFsdWVfc3Vic2Ny aXB0IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNUIGluZGV4KQogIAogICAgICAgIGdldF9k aXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dlcmJvdW5kLCAmdXBwZXJib3VuZCk7CiAg ICAgICAgaWYgKFZBTFVFX0xWQUwgKGFycmF5KSAhPSBsdmFsX21lbW9yeSkKQEAgLTkyNDQsNyAr MTA0MTcsNyBAQCBpbmRleCA3YzU1M2QxLi44MGJlODJmIDEwMDY0NAogIAkgIC8qIEVtaXQgd2Fy bmluZyB1bmxlc3Mgd2UgaGF2ZSBhbiBhcnJheSBvZiB1bmtub3duIHNpemUuCiAgCSAgICAgQW4g YXJyYXkgb2YgdW5rbm93biBzaXplIGhhcyBsb3dlcmJvdW5kIDAgYW5kIHVwcGVyYm91bmQgLTEu ICAqLwogIAkgIGlmICh1cHBlcmJvdW5kID4gLTEpCi1AQCAtMTg1LDM0ICsxOTksMzcgQEAgdmFs dWVfc3Vic2NyaXB0IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNUIGluZGV4KQorQEAgLTE4 OSwzNCArMjAzLDM3IEBAIHZhbHVlX3N1YnNjcmlwdCAoc3RydWN0IHZhbHVlICphcnJheSwgTE9O R0VTVCBpbmRleCkKICAgICAgZXJyb3IgKF8oIm5vdCBhbiBhcnJheSBvciBzdHJpbmciKSk7CiAg fQogIApAQCAtOTI5NCw3ICsxMDQ2Nyw3IEBAIGluZGV4IDdjNTUzZDEuLjgwYmU4MmYgMTAwNjQ0 CiAgICByZXR1cm4gdjsKICB9CiAgCi1AQCAtMjkyLDYgKzMwOSwxMCBAQCBpbnQKK0BAIC0yOTYs NiArMzEzLDEwIEBAIGludAogIGJpbm9wX3VzZXJfZGVmaW5lZF9wIChlbnVtIGV4cF9vcGNvZGUg b3AsCiAgCQkgICAgICBzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdCB2YWx1ZSAqYXJnMikKICB7 CkBAIC05MzA2LDcgKzEwNDc5LDcgQEAgaW5kZXggN2M1NTNkMS4uODBiZTgyZiAxMDA2NDQKICB9 CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3ZhbG9wcy5jCi1pbmRleCA5MzJl MzExLi41Y2U1NjVmIDEwMDY0NAoraW5kZXggN2VhNjMxNS4uYWQzZGFjZiAxMDA2NDQKIC0tLSBh L2dkYi92YWxvcHMuYwogKysrIGIvZ2RiL3ZhbG9wcy5jCiBAQCAtMzgsNiArMzgsNyBAQApAQCAt OTMxNyw3ICsxMDQ5MCw3IEBAIGluZGV4IDkzMmUzMTEuLjVjZTU2NWYgMTAwNjQ0CiAgCiAgI2lu Y2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC04OTcsNiArODk4 LDY1IEBAIHZhbHVlX29uZSAoc3RydWN0IHR5cGUgKnR5cGUsIGVudW0gbHZhbF90eXBlIGx2KQor QEAgLTkwMSw2ICs5MDIsNjUgQEAgdmFsdWVfb25lIChzdHJ1Y3QgdHlwZSAqdHlwZSwgZW51bSBs dmFsX3R5cGUgbHYpCiAgICByZXR1cm4gdmFsOwogIH0KICAKQEAgLTkzODMsNyArMTA1NTYsNyBA QCBpbmRleCA5MzJlMzExLi41Y2U1NjVmIDEwMDY0NAogIC8qIEhlbHBlciBmdW5jdGlvbiBmb3Ig dmFsdWVfYXQsIHZhbHVlX2F0X2xhenksIGFuZCB2YWx1ZV9hdF9sYXp5X3N0YWNrLiAgKi8KICAK ICBzdGF0aWMgc3RydWN0IHZhbHVlICoKLUBAIC05OTUsMTUgKzEwNTUsMjEgQEAgdmFsdWVfZmV0 Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCitAQCAtOTk5LDE1ICsxMDU5LDIxIEBAIHZhbHVl X2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQogICAgICB9CiAgICBlbHNlIGlmIChWQUxV RV9MVkFMICh2YWwpID09IGx2YWxfbWVtb3J5KQogICAgICB7CkBAIC05NDEyLDcgKzEwNTg1LDcg QEAgaW5kZXggOTMyZTMxMS4uNWNlNTY1ZiAxMDA2NDQKICAJfQogICAgICB9CiAgICBlbHNlIGlm IChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfcmVnaXN0ZXIpCi1AQCAtMTQwNyw3ICsxNDczLDE4 IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGJsb2Nr ICpiKQorQEAgLTE0MTgsNyArMTQ4NCwxOCBAQCBhZGRyZXNzX29mX3ZhcmlhYmxlIChzdHJ1Y3Qg c3ltYm9sICp2YXIsIHN0cnVjdCBibG9jayAqYikKICAgIGlmICgoVkFMVUVfTFZBTCAodmFsKSA9 PSBsdmFsX21lbW9yeSAmJiB2YWx1ZV9sYXp5ICh2YWwpKQogICAgICAgIHx8IFRZUEVfQ09ERSAo dHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMpCiAgICAgIHsKQEAgLTk0MzIsNyArMTA2MDUsNyBAQCBp bmRleCA5MzJlMzExLi41Y2U1NjVmIDEwMDY0NAogIAogICAgICAgIHJldHVybiB2YWx1ZV9mcm9t X3BvaW50ZXIgKGxvb2t1cF9wb2ludGVyX3R5cGUgKHR5cGUpLCBhZGRyKTsKICAgICAgfQotQEAg LTE1MTUsNiArMTU5Miw3IEBAIHN0cnVjdCB2YWx1ZSAqCitAQCAtMTUyNiw2ICsxNjAzLDcgQEAg c3RydWN0IHZhbHVlICoKICB2YWx1ZV9jb2VyY2VfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkK ICB7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFy ZzEpKTsKQEAgLTk0NDAsNyArMTA2MTMsNyBAQCBpbmRleCA5MzJlMzExLi41Y2U1NjVmIDEwMDY0 NAogIAogICAgLyogSWYgdGhlIHVzZXIgdHJpZXMgdG8gZG8gc29tZXRoaW5nIHJlcXVpcmluZyBh IHBvaW50ZXIgd2l0aCBhbgogICAgICAgYXJyYXkgdGhhdCBoYXMgbm90IHlldCBiZWVuIHB1c2hl ZCB0byB0aGUgdGFyZ2V0LCB0aGVuIHRoaXMgd291bGQKLUBAIC0xNTI0LDggKzE2MDIsMTIgQEAg dmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCitAQCAtMTUzNSw4ICsxNjEz LDEyIEBAIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICphcmcxKQogICAgaWYgKFZB TFVFX0xWQUwgKGFyZzEpICE9IGx2YWxfbWVtb3J5KQogICAgICBlcnJvciAoXygiQXR0ZW1wdCB0 byB0YWtlIGFkZHJlc3Mgb2YgdmFsdWUgbm90IGxvY2F0ZWQgaW4gbWVtb3J5LiIpKTsKICAKQEAg LTk0NTUsNyArMTA2MjgsNyBAQCBpbmRleCA5MzJlMzExLi41Y2U1NjVmIDEwMDY0NAogIAogIC8q IEdpdmVuIGEgdmFsdWUgd2hpY2ggaXMgYSBmdW5jdGlvbiwgcmV0dXJuIGEgdmFsdWUgd2hpY2gg aXMgYSBwb2ludGVyCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHByaW50LmMgYi9nZGIvdmFscHJpbnQu YwotaW5kZXggZGRiMTZlNC4uYzRjMjk2OSAxMDA2NDQKK2luZGV4IDVjYmEwMjMuLjRlZjVlNWEg MTAwNjQ0CiAtLS0gYS9nZGIvdmFscHJpbnQuYwogKysrIGIvZ2RiL3ZhbHByaW50LmMKIEBAIC0z Niw2ICszNiw3IEBACkBAIC05NDc0LDcgKzEwNjQ3LDcgQEAgaW5kZXggZGRiMTZlNC4uYzRjMjk2 OSAxMDA2NDQKICAgICAgY2FzZSBUWVBFX0NPREVfQklUU1RSSU5HOgogICAgICAgIHJldHVybiAw OwogICAgICBkZWZhdWx0OgotQEAgLTExMDQsNiArMTEwNCw3IEBAIHZhbF9wcmludF9hcnJheV9l bGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorQEAg LTExMTEsNiArMTExMSw3IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogIHsKICAgIHVuc2lnbmVkIGludCB0aGlu Z3NfcHJpbnRlZCA9IDA7CiAgICB1bnNpZ25lZCBsZW47CkBAIC05NDgyLDcgKzEwNjU1LDcgQEAg aW5kZXggZGRiMTZlNC4uYzRjMjk2OSAxMDA2NDQKICAgIHN0cnVjdCB0eXBlICplbHR0eXBlLCAq aW5kZXhfdHlwZTsKICAgIHVuc2lnbmVkIGVsdGxlbjsKICAgIC8qIFBvc2l0aW9uIG9mIHRoZSBh cnJheSBlbGVtZW50IHdlIGFyZSBleGFtaW5pbmcgdG8gc2VlCi1AQCAtMTExMiw5ICsxMTEzLDMz IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLAorQEAgLTExMTksOSArMTEyMCwzMyBAQCB2YWxfcHJpbnRfYXJyYXlf ZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAg IC8qIE51bWJlciBvZiByZXBldGl0aW9ucyB3ZSBoYXZlIGRldGVjdGVkIHNvIGZhci4gICovCiAg ICB1bnNpZ25lZCBpbnQgcmVwczsKICAgIExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kOwpA QCAtOTUxOCw3ICsxMDY5MSw3IEBAIGluZGV4IGRkYjE2ZTQuLmM0YzI5NjkgMTAwNjQ0CiAgICBp bmRleF90eXBlID0gVFlQRV9JTkRFWF9UWVBFICh0eXBlKTsKICAKICAgIGlmIChnZXRfYXJyYXlf Ym91bmRzICh0eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkpCi1AQCAtMTE4OSw2ICsxMjE0 LDggQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3Qg Z2RiX2J5dGUgKnZhbGFkZHIsCitAQCAtMTE5Niw2ICsxMjIxLDggQEAgdmFsX3ByaW50X2FycmF5 X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAg ICAgIHsKICAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKICAgICAgfQpA QCAtOTUyOCw3ICsxMDcwMSw3IEBAIGluZGV4IGRkYjE2ZTQuLmM0YzI5NjkgMTAwNjQ0CiAgCiAg LyogUmVhZCBMRU4gYnl0ZXMgb2YgdGFyZ2V0IG1lbW9yeSBhdCBhZGRyZXNzIE1FTUFERFIsIHBs YWNpbmcgdGhlCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmMgYi9nZGIvdmFsdWUuYwotaW5kZXgg ODVjYjYyYS4uMDEzYTlmYyAxMDA2NDQKK2luZGV4IGM3ZGUzMjMuLjY0NWZlZjIgMTAwNjQ0CiAt LS0gYS9nZGIvdmFsdWUuYwogKysrIGIvZ2RiL3ZhbHVlLmMKIEBAIC0zOSw2ICszOSw3IEBACkBA IC05NTM5LDcgKzEwNzEyLDcgQEAgaW5kZXggODVjYjYyYS4uMDEzYTlmYyAxMDA2NDQKICAKICAj aW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgogIAotQEAgLTg1MCwxMiArODUxLDE1IEBAIHZvaWQK K0BAIC04NjQsMTIgKzg2NSwxNSBAQCB2b2lkCiAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlv biAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsCiAgCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVl ICp3aG9sZSkKICB7CkBAIC05NTU1LDcgKzEwNzI4LDcgQEAgaW5kZXggODVjYjYyYS4uMDEzYTlm YyAxMDA2NDQKICAgIGlmICh3aG9sZS0+bHZhbCA9PSBsdmFsX2NvbXB1dGVkKQogICAgICB7CiAg ICAgICAgc3RydWN0IGx2YWxfZnVuY3MgKmZ1bmNzID0gd2hvbGUtPmxvY2F0aW9uLmNvbXB1dGVk LmZ1bmNzOwotQEAgLTg2Myw2ICs4NjcsMTIgQEAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlv biAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsCitAQCAtODc3LDYgKzg4MSwxMiBAQCBzZXRfdmFs dWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVudCwKICAgICAgICBp ZiAoZnVuY3MtPmNvcHlfY2xvc3VyZSkKICAgICAgICAgIGNvbXBvbmVudC0+bG9jYXRpb24uY29t cHV0ZWQuY2xvc3VyZSA9IGZ1bmNzLT5jb3B5X2Nsb3N1cmUgKHdob2xlKTsKICAgICAgfQpAQCAt OTU2OCw3ICsxMDc0MSw3IEBAIGluZGV4IDg1Y2I2MmEuLjAxM2E5ZmMgMTAwNjQ0CiAgfQogIAog IAwKLUBAIC05OTUsNiArMTAwNSwyOSBAQCBzaG93X3ZhbHVlcyAoY2hhciAqbnVtX2V4cCwgaW50 IGZyb21fdHR5KQorQEAgLTEwMDksNiArMTAxOSwyOSBAQCBzaG93X3ZhbHVlcyAoY2hhciAqbnVt X2V4cCwgaW50IGZyb21fdHR5KQogICAgICAgIG51bV9leHBbMV0gPSAnXDAnOwogICAgICB9CiAg fQpAQCAtOTU5OCw3ICsxMDc3MSw3IEBAIGluZGV4IDg1Y2I2MmEuLjAxM2E5ZmMgMTAwNjQ0CiAg DAogIC8qIEludGVybmFsIHZhcmlhYmxlcy4gIFRoZXNlIGFyZSB2YXJpYWJsZXMgd2l0aGluIHRo ZSBkZWJ1Z2dlcgogICAgIHRoYXQgaG9sZCB2YWx1ZXMgYXNzaWduZWQgYnkgZGVidWdnZXIgY29t bWFuZHMuCi1AQCAtMTQ3Myw2ICsxNTA2LDQwIEBAIGNhbGxfaW50ZXJuYWxfZnVuY3Rpb24gKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTE1MDMsNiArMTUzNiw0MCBAQCBjYWxsX2ludGVy bmFsX2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgIHJldHVybiAoKmlmbi0+ aGFuZGxlcikgKGdkYmFyY2gsIGxhbmd1YWdlLCBpZm4tPmNvb2tpZSwgYXJnYywgYXJndik7CiAg fQogIApAQCAtOTYzOSw3ICsxMDgxMiw3IEBAIGluZGV4IDg1Y2I2MmEuLjAxM2E5ZmMgMTAwNjQ0 CiAgLyogVGhlICdmdW5jdGlvbicgY29tbWFuZC4gIFRoaXMgZG9lcyBub3RoaW5nIC0tIGl0IGlz IGp1c3QgYQogICAgIHBsYWNlaG9sZGVyIHRvIGxldCAiaGVscCBmdW5jdGlvbiBOQU1FIiB3b3Jr LiAgVGhpcyBpcyBhbHNvIHVzZWQgYXMKICAgICB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHN1 Yi1jb21tYW5kIHRoYXQgaXMgY3JlYXRlZCB3aGVuCi1AQCAtMTUyMCwxMSArMTU4NywxMCBAQCBw cmVzZXJ2ZV9vbmVfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAorQEAgLTE1NTAsMTEgKzE2MTcsMTAgQEAgcHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1 Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJCSAgICBodGFiX3Qg Y29waWVkX3R5cGVzKQogIHsKICAgIGlmIChUWVBFX09CSkZJTEUgKHZhbHVlLT50eXBlKSA9PSBv YmpmaWxlKQpAQCAtOTY1Myw3ICsxMDgyNiw3IEBAIGluZGV4IDg1Y2I2MmEuLjAxM2E5ZmMgMTAw NjQ0CiAgCQkJCQkJIGNvcGllZF90eXBlcyk7CiAgfQogIAotQEAgLTE1MzksMTMgKzE2MDUsMTMg QEAgcHJlc2VydmVfb25lX2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMTU2OSwxMyArMTYzNSwxMyBAQCBwcmVzZXJ2ZV9v bmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyLCBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9JTlRFR0VSOgogICAgICAgIGlmICh2YXIt PnUuaW50ZWdlci50eXBlICYmIFRZUEVfT0JKRklMRSAodmFyLT51LmludGVnZXIudHlwZSkgPT0g b2JqZmlsZSkKICAJdmFyLT51LmludGVnZXIudHlwZQpAQCAtOTY2OSw3ICsxMDg0Miw3IEBAIGlu ZGV4IDg1Y2I2MmEuLjAxM2E5ZmMgMTAwNjQ0CiAgICAgICAgYnJlYWs7CiAgCiAgICAgIGNhc2Ug SU5URVJOQUxWQVJfVkFMVUU6Ci1AQCAtMjM5OSw3ICsyNDY1LDI0IEBAIHZhbHVlX2Zyb21fZGVj ZmxvYXQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqZGVjKQorQEAgLTI0Mzgs NyArMjUwNCwyNCBAQCB2YWx1ZV9mcm9tX2RlY2Zsb2F0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29u c3QgZ2RiX2J5dGUgKmRlYykKICBzdHJ1Y3QgdmFsdWUgKgogIGNvZXJjZV9yZWYgKHN0cnVjdCB2 YWx1ZSAqYXJnKQogIHsKQEAgLTk2OTUsNyArMTA4NjgsNyBAQCBpbmRleCA4NWNiNjJhLi4wMTNh OWZjIDEwMDY0NAogIAogICAgaWYgKFRZUEVfQ09ERSAodmFsdWVfdHlwZV9hcmdfdG1wKSA9PSBU WVBFX0NPREVfUkVGKQogICAgICBhcmcgPSB2YWx1ZV9hdF9sYXp5IChUWVBFX1RBUkdFVF9UWVBF ICh2YWx1ZV90eXBlX2FyZ190bXApLAotQEAgLTI0OTcsNCArMjU4MCw4IEBAIFZBUklBQkxFIGlz IGFscmVhZHkgaW5pdGlhbGl6ZWQuIikpOworQEAgLTI1MzYsNCArMjYxOSw4IEBAIFZBUklBQkxF IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIikpOwogICAgYWRkX3ByZWZpeF9jbWQgKCJmdW5jdGlv biIsIG5vX2NsYXNzLCBmdW5jdGlvbl9jb21tYW5kLCBfKCJcCiAgUGxhY2Vob2xkZXIgY29tbWFu ZCBmb3Igc2hvd2luZyBoZWxwIG9uIGNvbnZlbmllbmNlIGZ1bmN0aW9ucy4iKSwKICAJCSAgJmZ1 bmN0aW9ubGlzdCwgImZ1bmN0aW9uICIsIDAsICZjbWRsaXN0KTsKQEAgLTk3MDUsMTAgKzEwODc4 LDEwIEBAIGluZGV4IDg1Y2I2MmEuLjAxM2E5ZmMgMTAwNjQ0CiArICBvYnNlcnZlcl9hdHRhY2hf bWFya191c2VkICh2YWx1ZV90eXBlc19tYXJrX3VzZWQpOwogIH0KIGRpZmYgLS1naXQgYS9nZGIv dmFsdWUuaCBiL2dkYi92YWx1ZS5oCi1pbmRleCBlZjJjYjRmLi5hYzk5YTRiIDEwMDY0NAoraW5k ZXggY2YwODliZS4uMGZiODlmMSAxMDA2NDQKIC0tLSBhL2dkYi92YWx1ZS5oCiArKysgYi9nZGIv dmFsdWUuaAotQEAgLTM3Myw2ICszNzMsMTAgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVf ZnJvbV9kb3VibGUgKHN0cnVjdCB0eXBlICp0eXBlLCBET1VCTEVTVCBudW0pOworQEAgLTM4OSw2 ICszODksMTAgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZnJvbV9kb3VibGUgKHN0cnVj dCB0eXBlICp0eXBlLCBET1VCTEVTVCBudW0pOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVl X2Zyb21fZGVjZmxvYXQgKHN0cnVjdCB0eXBlICp0eXBlLAogIAkJCQkJICBjb25zdCBnZGJfYnl0 ZSAqZGVjYnl0ZXMpOwogIApAQCAtOTcxOSw3ICsxMDg5Miw3IEBAIGluZGV4IGVmMmNiNGYuLmFj OTlhNGIgMTAwNjQ0CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYXQgKHN0cnVjdCB0eXBl ICp0eXBlLCBDT1JFX0FERFIgYWRkcik7CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYXRf bGF6eSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKTsKICAKLUBAIC03MzMsNyAr NzM3LDcgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYWxsb2NhdGVfc3BhY2VfaW5faW5m ZXJpb3IgKGludCk7CitAQCAtNzQ5LDcgKzc1Myw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZh bHVlX2FsbG9jYXRlX3NwYWNlX2luX2luZmVyaW9yIChpbnQpOwogIGV4dGVybiBzdHJ1Y3QgdmFs dWUgKnZhbHVlX29mX2xvY2FsIChjb25zdCBjaGFyICpuYW1lLCBpbnQgY29tcGxhaW4pOwogIAog IGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZh bHVlICphcnJheSwKQEAgLTk3MjksNyArMTA5MDIsNyBAQCBpbmRleCBlZjJjYjRmLi5hYzk5YTRi IDEwMDY0NAogIC8qIFVzZXIgZnVuY3Rpb24gaGFuZGxlci4gICovCiAgCiBkaWZmIC0tZ2l0IGEv Z2RiL3Zhcm9iai5jIGIvZ2RiL3Zhcm9iai5jCi1pbmRleCAyNTUxOGQ0Li5jYjVkOGEyIDEwMDY0 NAoraW5kZXggZTg3ZDM5OS4uMGVhNTRmNSAxMDA2NDQKIC0tLSBhL2dkYi92YXJvYmouYwogKysr IGIvZ2RiL3Zhcm9iai5jCiBAQCAtMjYsNiArMjYsOCBAQAoKZGlmZiAtLWdpdCBhL2dkYi1iejUz MzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoIGIvZ2RiLWJ6NTMzMTc2LWZvcnRyYW4tb21wLXN0 ZXAucGF0Y2gKaW5kZXggMzljYWMwZC4uYjlhZWZkNSAxMDA2NDQKLS0tIGEvZ2RiLWJ6NTMzMTc2 LWZvcnRyYW4tb21wLXN0ZXAucGF0Y2gKKysrIGIvZ2RiLWJ6NTMzMTc2LWZvcnRyYW4tb21wLXN0 ZXAucGF0Y2gKQEAgLTIxLDExICsyMSwxMyBAQCBkZWJ1Z2dpbmcgcHJvYmxlbSBvZiBHT01QIG91 dHNpZGUgb2YgdGhlIHNjb3BlIG9mIHRoaXMgQnVnLgogCiAKIAotLS0tIC4vZ2RiL2luZnJ1bi5j CTIwMDktMTItMDkgMjI6MDM6MzMuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvaW5mcnVuLmMJ MjAwOS0xMi0wOSAyMjoyOTo1Ni4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zOTk0LDYgKzM5OTQsMTIg QEAgaW5mcnVuOiBub3Qgc3dpdGNoaW5nIGJhY2sgdG8gc3RlcHBlZCB0aAorSW5kZXg6IGdkYi03 LjIuNTAuMjAxMDEyMzEvZ2RiL2luZnJ1bi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi41MC4y MDEwMTIzMS5vcmlnL2dkYi9pbmZydW4uYwkyMDExLTAxLTAxIDAxOjAyOjQ1LjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2luZnJ1bi5jCTIwMTEtMDEtMDEgMDE6 MTA6MjIuMDAwMDAwMDAwICswMTAwCitAQCAtNDU4NSw2ICs0NTg1LDEyIEBAIGluZnJ1bjogbm90 IHN3aXRjaGluZyBiYWNrIHRvIHN0ZXBwZWQgdGgKICAKLSAgICAgICBpZiAoZWNzLT5ldmVudF90 aHJlYWQtPnN0ZXBfb3Zlcl9jYWxscyA9PSBTVEVQX09WRVJfQUxMKQorICAgICAgIGlmIChlY3Mt PmV2ZW50X3RocmVhZC0+Y29udHJvbC5zdGVwX292ZXJfY2FsbHMgPT0gU1RFUF9PVkVSX0FMTCkK ICAJewogKwkgIHN0cnVjdCBzeW1ib2wgKnN0b3BfZm4gPSBmaW5kX3BjX2Z1bmN0aW9uIChzdG9w X3BjKTsKICsKQEAgLTM2LDcgKzM4LDcgQEAgZGVidWdnaW5nIHByb2JsZW0gb2YgR09NUCBvdXRz aWRlIG9mIHRoZSBzY29wZSBvZiB0aGlzIEJ1Zy4KICAJICAvKiBXZSdyZSBkb2luZyBhICJuZXh0 Ii4KICAKICAJICAgICBOb3JtYWwgKGZvcndhcmQpIGV4ZWN1dGlvbjogc2V0IGEgYnJlYWtwb2lu dCBhdCB0aGUKLUBAIC00MDIwLDYgKzQwMjYsNyBAQCBpbmZydW46IG5vdCBzd2l0Y2hpbmcgYmFj ayB0byBzdGVwcGVkIHRoCitAQCAtNDYxMiw2ICs0NjE4LDcgQEAgaW5mcnVuOiBub3Qgc3dpdGNo aW5nIGJhY2sgdG8gc3RlcHBlZCB0aAogIAogIAkgIGtlZXBfZ29pbmcgKGVjcyk7CiAgCSAgcmV0 dXJuOwpAQCAtNDQsOCArNDYsMTAgQEAgZGVidWdnaW5nIHByb2JsZW0gb2YgR09NUCBvdXRzaWRl IG9mIHRoZSBzY29wZSBvZiB0aGlzIEJ1Zy4KICAJfQogIAogICAgICAgIC8qIElmIHdlIGFyZSBp biBhIGZ1bmN0aW9uIGNhbGwgdHJhbXBvbGluZSAoYSBzdHViIGJldHdlZW4gdGhlCi0tLS0gLi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkxOTcwLTAxLTAxIDAxOjAwOjAw LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3Rl cC5leHAJMjAwOS0xMi0wOSAyMjozMTowNC4wMDAwMDAwMDAgKzAxMDAKK0luZGV4OiBnZGItNy4y LjUwLjIwMTAxMjMxL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw CisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1z dGVwLmV4cAkyMDExLTAxLTAxIDAxOjA5OjU4LjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSwz MSBAQAogKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAr CkBAIC03OCw4ICs4MiwxMCBAQCBkZWJ1Z2dpbmcgcHJvYmxlbSBvZiBHT01QIG91dHNpZGUgb2Yg dGhlIHNjb3BlIG9mIHRoaXMgQnVnLgogKwogK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJzdWNjZXNzIl0KICtnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAic3VjY2VzcyIg Ii4qc3VjY2Vzcy4qIgotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5m OTAJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZjkwCTIwMDktMTItMDkgMjI6MjU6MzUuMDAwMDAwMDAw ICswMTAwCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL29tcC1zdGVwLmY5MAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5mOTAJMjAxMS0wMS0wMSAwMTowOTo1OC4wMDAwMDAw MDAgKzAxMDAKIEBAIC0wLDAgKzEsMzIgQEAKICshIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgogKwoKZGlmZiAtLWdpdCBhL2dkYi1iejY0Mjg3OS1lbGZyZWFk LXNpZ2ludC1zdGFsZS5wYXRjaCBiL2dkYi1iejY0Mjg3OS1lbGZyZWFkLXNpZ2ludC1zdGFsZS5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEwNzllZi4uMDAwMDAwMAotLS0g YS9nZGItYno2NDI4NzktZWxmcmVhZC1zaWdpbnQtc3RhbGUucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw4NSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAx MC0wOS9tc2cwMDE5Mi5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIEZpeCBFTEYgc3RhbGUgcmVmZXJl bmNlICBbUmU6IFtwYXRjaF0gLmdkYl9pbmRleDogRG8gbm90IGNyYXNoIG9uIE5PQklUU10KLQot T24gV2VkLCAwOCBTZXAgMjAxMCAyMTo0MDoxMiArMDIwMCwgVG9tIFRyb21leSB3cm90ZToKLT4g Pj4+Pj4gIkphbiIgPT0gSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ IHdyaXRlczoKLT4gCi0+IEphbj4gd2hpY2ggc2hvdWxkIG5vdCBiZSBmYXRhbCBidXQgZHVlIHRv IHNvbWUgb3RoZXIgYnVncyB0aGVyZWluIGl0IGNhbgotPiBKYW4+IGNyYXNoIEdEQi4KLT4gCi0+ IEkgYW0gY3VyaW91cyBhYm91dCB0aGVzZSBvdGhlciBidWdzLgotCi0rICAgICAgLyogTWVtb3J5 IGdldHMgcGVybWFuZW50bHkgcmVmZXJlbmNlZCBmcm9tIEFCRkQgYWZ0ZXIKLSsJIGJmZF9nZXRf c3ludGhldGljX3N5bXRhYiBzbyBpdCBtdXN0IG5vdCBnZXQgZnJlZWQgYmVmb3JlIEFCRkQgZ2V0 cy4KLSsJIEl0IGhhcHBlbnMgb25seSBpbiB0aGUgY2FzZSB3aGVuIGVsZl9zbHVycF9yZWxvY190 YWJsZSBzZWVzCi0rCSBhc2VjdGlvbi0+cmVsb2NhdGlvbiBOVUxMLiAgRGV0ZXJtaW5pbmcgd2hp Y2ggc2VjdGlvbiBpcyBhc2VjdGlvbiBpcwotKwkgZG9uZSBieSBfYmZkX2VsZl9nZXRfc3ludGhl dGljX3N5bXRhYiB3aGljaCBpcyBhbGwgYSBiZmQKLSsJIGltcGxlbWVudGF0aW9uIGRldGFpbCwg dGhvdWdoLiAgKi8KLQotVGhhdCBpcyBmcm9tOgotCi0jMCAgaW4gZWxmX3NsdXJwX3JlbG9jX3Rh YmxlX2Zyb21fc2VjdGlvbiAoYWJmZCwgYXNlY3QsIHJlbF9oZHIsIHJlbG9jX2NvdW50PTExNzAs IHJlbGVudHMsIHN5bWJvbHMsIGR5bmFtaWM9MSkgYXQgZWxmY29kZS5oOjE0ODIKLSMxICBpbiBi ZmRfZWxmNjRfc2x1cnBfcmVsb2NfdGFibGUgKGFiZmQsIGFzZWN0LCBzeW1ib2xzLCBkeW5hbWlj PTEpIGF0IGVsZmNvZGUuaDoxNTYzCi0jMiAgaW4gX2JmZF9lbGZfZ2V0X3N5bnRoZXRpY19zeW10 YWIgKGFiZmQsIHN5bWNvdW50PTAsIHN5bXMsIGR5bnN5bWNvdW50PTE3OTIsIGR5bnN5bXMsIHJl dCkgYXQgZWxmLmM6OTI2OQotIzMgIGluIGVsZl9zeW1maWxlX3JlYWQgKG9iamZpbGUsIHN5bWZp bGVfZmxhZ3M9NikgYXQgZWxmcmVhZC5jOjgwOQotCi1XaGVyZQotCSAgZWxmY29kZS5oOmVsZl9z bHVycF9yZWxvY190YWJsZV9mcm9tX3NlY3Rpb24KLWNvbnRhaW5zCi0gICAgICAgICAgcHMgPSBz eW1ib2xzICsgRUxGX1JfU1lNIChyZWxhLnJfaW5mbykgLSAxOwotICAgICAgICAgIHJlbGVudC0+ c3ltX3B0cl9wdHIgPSBwczsKLQotYHN5bWJvbHMnIGhlcmUgaXMgZWxmX3N5bWZpbGVfcmVhZCdz IGBkeW5fc3ltYm9sX3RhYmxlJy4gIGBkeW5fc3ltYm9sX3RhYmxlJwotZ290IGltbWVkaWF0ZWx5 IHhmcmVlJ2QgYnV0IHRoZSBmcmVlZCBtZW1vcnkgcmVtYWluZWQgcmVmZXJlbmNlZCBieQotYXNl Y3QtPnJlbG9jYXRpb24gKGNvbnRhaW5pbmcgdGhlIFJFTEVOVCBtZW1vcnkgYWJvdmUsIHN0b3Jl ZCB0aGVyZSBieQotZWxmX3NsdXJwX3JlbG9jX3RhYmxlKS4KLQotYXNlY3QtPnJlbG9jYXRpb24g cHJvYmFibHkgZG9lcyBub3QgZ2V0IHVzZWQgaWYgQUJGRCBpcyBub3QgYmVpbmcgcmVhZC1pbiB0 aGUKLXNlY29uZCB0aW1lLCB3aGljaCBoYXBwZW5zIG9ubHkgaWYgT0JKRklMRSBpcyBiZWluZyBj cmVhdGVkIHRoZSBzZWNvbmQgdGltZSwKLXdoaWNoIGhhcHBlbnMgZHVlIHRvIHRoZSBlcnJvciBj YWxsIGluIHRoZSBwcmV2aW91cyBtYWlsLgotCi0KLUkgd2FzIGN1cmlvdXMgdGhlcmUgZWxmX3N5 bWZpbGVfcmVhZCB1c2VzIDAgZm9yIENPUFlfTkFNRVMgaW4gYSBzaW1pbGFyIGNhc2U6Ci0gICAg ICBlbGZfc3ltdGFiX3JlYWQgKG9iamZpbGUsIFNUX1JFR1VMQVIsIHN5bWNvdW50LCBzeW1ib2xf dGFibGUsIDApOwotd2hlcmUgU1lNQk9MX1RBQkxFIGlzIGFsc28gaW1tZWRpYXRlbHkgeGZyZWVk LiAgQnV0IHRoYXQgc2VlbXMgdG8gYmUgY29ycmVjdCBhcwotZWxmX3NsdXJwX3N5bWJvbF90YWJs ZSB1c2VzIAotICAgICAgc3ltYmFzZSA9IChlbGZfc3ltYm9sX3R5cGUgKikgYmZkX3phbGxvYyAo YWJmZCwgYW10KTsKLWZvciB0aGUgY29udGVudCB3aGVyZSBsYXRlciBlbGZyZWFkLmMncyBTWU1C T0xfVEFCTEUgcG9pbnRzIHRvLiAgT25seSB0aGUKLXBvaW50ZXJzIGdldCB4ZnJlZWQgd2hpY2gg aXMgT0suCi0KLQotTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZl ZG9yYTE0c25hcHNob3QtbGludXgtZ251LgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIw MTAtMDktMDkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQot CUZpeCBzdGFsZSBtZW1vcnkgcmVmZXJlbmNlcy4KLQkqIGVsZnJlYWQuYzogSW5jbHVkZSBsaWJi ZmQuaC4KLQkoZWxmX3N5bWZpbGVfcmVhZCk6IFJlcGxhY2UgeG1hbGxvYyBieSBiZmRfYWxsb2Ms IGRyb3AgeGZyZWUsIG5ldwotCWNvbW1lbnQuCi0KLS0tLSBhL2dkYi9lbGZyZWFkLmMKLSsrKyBi L2dkYi9lbGZyZWFkLmMKLUBAIC03OTIsOCArNzkzLDE0IEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKLSAKLSAgIGlmIChzdG9y YWdlX25lZWRlZCA+IDApCi0gICAgIHsKLS0gICAgICBkeW5fc3ltYm9sX3RhYmxlID0gKGFzeW1i b2wgKiopIHhtYWxsb2MgKHN0b3JhZ2VfbmVlZGVkKTsKLS0gICAgICBtYWtlX2NsZWFudXAgKHhm cmVlLCBkeW5fc3ltYm9sX3RhYmxlKTsKLSsgICAgICAvKiBNZW1vcnkgZ2V0cyBwZXJtYW5lbnRs eSByZWZlcmVuY2VkIGZyb20gQUJGRCBhZnRlcgotKwkgYmZkX2dldF9zeW50aGV0aWNfc3ltdGFi IHNvIGl0IG11c3Qgbm90IGdldCBmcmVlZCBiZWZvcmUgQUJGRCBnZXRzLgotKwkgSXQgaGFwcGVu cyBvbmx5IGluIHRoZSBjYXNlIHdoZW4gZWxmX3NsdXJwX3JlbG9jX3RhYmxlIHNlZXMKLSsJIGFz ZWN0aW9uLT5yZWxvY2F0aW9uIE5VTEwuICBEZXRlcm1pbmluZyB3aGljaCBzZWN0aW9uIGlzIGFz ZWN0aW9uIGlzCi0rCSBkb25lIGJ5IF9iZmRfZWxmX2dldF9zeW50aGV0aWNfc3ltdGFiIHdoaWNo IGlzIGFsbCBhIGJmZAotKwkgaW1wbGVtZW50YXRpb24gZGV0YWlsLCB0aG91Z2guICAqLwotKwot KyAgICAgIGR5bl9zeW1ib2xfdGFibGUgPSBiZmRfYWxsb2MgKGFiZmQsIHN0b3JhZ2VfbmVlZGVk KTsKLSAgICAgICBkeW5zeW1jb3VudCA9IGJmZF9jYW5vbmljYWxpemVfZHluYW1pY19zeW10YWIg KG9iamZpbGUtPm9iZmQsCi0gCQkJCQkJICAgICBkeW5fc3ltYm9sX3RhYmxlKTsKLSAKLQoKZGlm ZiAtLWdpdCBhL2dkYi1uZXh0LW92ZXItdGhyb3cucGF0Y2ggYi9nZGItbmV4dC1vdmVyLXRocm93 LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2ZlZWYyLi4wMDAwMDAwCi0t LSBhL2dkYi1uZXh0LW92ZXItdGhyb3cucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjgzICsw LDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTEwL21zZzAw MTA5Lmh0bWwKLVN1YmplY3Q6IFJGQzogbmV4dC9maW5pc2gvZXRjIC12cy0gZXhjZXB0aW9ucwot Ci1UaGlzIGlzIGEgcmVmcmVzaCBvZjoKLQotICAgIGh0dHA6Ly93d3cuc291cmNld2FyZS5vcmcv bWwvZ2RiLXBhdGNoZXMvMjAwOS0wNS9tc2cwMDYzNS5odG1sCi0KLShUaGUgdGhyZWFkIGNvbnRp bnVlcyBpbiB0aGUgZm9sbG93aW5nIG1vbnRoLikKLQotSSByZWJhc2VkIHRoZSBwYXRjaCBhbmQg YWRkcmVzc2VkIFBlZHJvJ3MgY29tbWVudHMuCi0KLUkgZGlkIG5vdCBhZGQgdGhlIHVzZXIgbm90 aWZpY2F0aW9uIHRoYXQgRG91ZyBhc2tlZCBmb3IuCi0KLVRoaXMgdmVyc2lvbiBkb2VzIHdvcmsg aWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGEgc2lnbmFsIGhhbmRsZXIuCi1UaGUgaW5j bHVkZWQgSmF2YSB0ZXN0IGNhc2UgY2hlY2tzIHRoYXQgKG9uIG1vc3QgcGxhdGZvcm1zKS4KLQot QnVpbHQgYW5kIHJlZ3Rlc3RlZCBvbiB4ODYtNjQgKGNvbXBpbGUgZmFybSkuCi1UZXN0cyBmb3Ig dGhlIG5ldyBmdW5jdGlvbmFsaXR5IGFyZSBpbmNsdWRlZC4KLQotSSdkIGFwcHJlY2lhdGUgY29t bWVudHMuICBJIGRvbid0IHdhbnQgdG8gY29tbWl0IHRoaXMgd2l0aG91dCBhIHJldmlldywKLWFz IG15IGV4cGVyaWVuY2UgaXMgdGhhdCBJIHVzdWFsbHkgZXJyIHdoZW4gdG91Y2hpbmcgYnJlYWtw b2ludHMgb3IKLWluZnJ1bi4KLQotSWYgeW91IHdhbnQgdG8gdHJ5IHRoaXMgeW91cnNlbGYsIHlv dSB3aWxsIG5lZWQgYSBuZXctZW5vdWdoIGxpYmdjYywgb25lCi10aGF0IGluY2x1ZGVzIHRoZSBu ZWNlc3NhcnkgZGVidWdnaW5nIGhvb2suCi0KLVRvbQotCi0yMDEwLTEwLTA2ICBUb20gVHJvbWV5 ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0KLQkqIGluZnJ1bi5jIChoYW5kbGVfaW5mZXJpb3JfZXZl bnQpOiBIYW5kbGUgZXhjZXB0aW9uIGJyZWFrcG9pbnRzLgotCShoYW5kbGVfaW5mZXJpb3JfZXZl bnQpOiBMaWtld2lzZS4KLQkoaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCk6IE5l dyBmdW5jdGlvbi4KLQkoY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSk6IExpa2V3aXNlLgotCSogaW5m ZXJpb3IuaCAoZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwKTogRGVjbGFyZS4KLQkq IGluZmNtZC5jIChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXApOiBObyBsb25nZXIg c3RhdGljLgotCShzdGVwXzEpOiBTZXQgdGhyZWFkJ3MgaW5pdGlhdGluZyBmcmFtZS4KLQkodW50 aWxfbmV4dF9jb250aW51YXRpb24pOiBOZXcgZnVuY3Rpb24uCi0JKHVudGlsX25leHRfY29tbWFu ZCk6IFN1cHBvcnQgZXhjZXB0aW9uIGJyZWFrcG9pbnRzLgotCShmaW5pc2hfY29tbWFuZF9jb250 aW51YXRpb24pOiBEZWxldGUgbG9uZ2ptcCBicmVha3BvaW50LgotCShmaW5pc2hfZm9yd2FyZCk6 IFN1cHBvcnQgZXhjZXB0aW9uIGJyZWFrcG9pbnRzLgotCSogZ2RidGhyZWFkLmggKHN0cnVjdCB0 aHJlYWRfaW5mbykgPGluaXRpYXRpbmdfZnJhbWU+OiBOZXcgZmllbGQuCi0JKiBicmVha3BvaW50 LmggKGVudW0gYnB0eXBlKSA8YnBfZXhjZXB0aW9uLCBicF9leGNlcHRpb25fcmVzdW1lLAotCWJw X2V4Y2VwdGlvbl9tYXN0ZXI+OiBOZXcgY29uc3RhbnRzLgotCShzdHJ1Y3QgYnBzdGF0X3doYXQp IDxpc19sb25nam1wPjogTmV3IGZpZWxkLgotCSogYnJlYWtwb2ludC5jIChjcmVhdGVfZXhjZXB0 aW9uX21hc3Rlcl9icmVha3BvaW50KTogTmV3IGZ1bmN0aW9uLgotCSh1cGRhdGVfYnJlYWtwb2lu dHNfYWZ0ZXJfZXhlYyk6IEhhbmRsZSBicF9leGNlcHRpb25fbWFzdGVyLiAgQ2FsbAotCWNyZWF0 ZV9leGNlcHRpb25fbWFzdGVyX2JyZWFrcG9pbnQuCi0JKHByaW50X2l0X3R5cGljYWwpOiBIYW5k bGUgYnBfZXhjZXB0aW9uX21hc3RlciwgYnBfZXhjZXB0aW9uLgotCShicHN0YXRfc3RvcF9zdGF0 dXMpOiBIYW5kbGUgYnBfZXhjZXB0aW9uX21hc3Rlci4KLQkoYnBzdGF0X3doYXQpOiBIYW5kbGUg YnBfZXhjZXB0aW9uX21hc3RlciwgYnBfZXhjZXB0aW9uLAotCWJwX2V4Y2VwdGlvbl9yZXN1bWUu Ci0JKGJwdHlwZV9zdHJpbmcpOiBMaWtld2lzZS4KLQkocHJpbnRfb25lX2JyZWFrcG9pbnRfbG9j YXRpb24pOiBMaWtld2lzZS4KLQkoYWxsb2NhdGVfYnBfbG9jYXRpb24pOiBMaWtld2lzZS4KLQko c2V0X2xvbmdqbXBfYnJlYWtwb2ludCk6IEhhbmRsZSBleGNlcHRpb24gYnJlYWtwb2ludHMuCi0J KGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnQpOiBMaWtld2lzZS4KLQkobWVudGlvbik6IExpa2V3 aXNlLgotCShzdHJ1Y3QgdW50aWxfYnJlYWtfY29tbWFuZF9jb250aW51YXRpb25fYXJncykgPHRo cmVhZF9udW0+OiBOZXcKLQlmaWVsZC4KLQkodW50aWxfYnJlYWtfY29tbWFuZF9jb250aW51YXRp b24pOiBDYWxsCi0JZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludC4KLQkodW50aWxfYnJlYWtfY29t bWFuZCk6IFN1cHBvcnQgZXhjZXB0aW9uIGJyZWFrcG9pbnRzLgotCShkZWxldGVfY29tbWFuZCk6 IExpa2V3aXNlLgotCShicmVha3BvaW50X3JlX3NldF9vbmUpOiBMaWtld2lzZS4KLQkoYnJlYWtw b2ludF9yZV9zZXQpOiBMaWtld2lzZS4KLQotMjAxMC0xMC0wNiAgVG9tIFRyb21leSAgPHRyb21l eUByZWRoYXQuY29tPgotCi0JKiBnZGIuamF2YS9qbnBlLmphdmE6IE5ldyBmaWxlLgotCSogZ2Ri LmphdmEvam5wZS5leHA6IE5ldyBmaWxlLgotCSogZ2RiLmNwL2dkYjk1OTMuZXhwOiBOZXcgZmls ZS4KLQkqIGdkYi5jcC9nZGI5NTkzLmNjOiBOZXcgZmlsZS4KLQotSW5kZXg6IGdkYi03LjIuNTAu MjAxMDExMTYvZ2RiL2JyZWFrcG9pbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAx MDExMTYub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTAtMTEtMTcgMDI6Mzg6NTkuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvYnJlYWtwb2ludC5jCTIwMTAtMTEt MTcgMDI6NDE6NTMuMDAwMDAwMDAwICswMTAwCi1AQCAtMjIzMiw2ICsyMjMyLDMzIEBAIGNyZWF0 ZV9zdGRfdGVybWluYXRlX21hc3Rlcl9icmVha3BvaW50ICgKLSAgIGRvX2NsZWFudXBzIChvbGRf Y2hhaW4pOwotIH0KLSAKLSsvKiBJbnN0YWxsIGEgbWFzdGVyIGJyZWFrcG9pbnQgb24gdGhlIHVu d2luZGVyJ3MgZGVidWcgaG9vay4gICovCi0rCi0rdm9pZAotK2NyZWF0ZV9leGNlcHRpb25fbWFz dGVyX2JyZWFrcG9pbnQgKHZvaWQpCi0rewotKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7Ci0r Ci0rICBBTExfT0JKRklMRVMgKG9iamZpbGUpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgbWluaW1h bF9zeW1ib2wgKmRlYnVnX2hvb2s7Ci0rCi0rICAgICAgZGVidWdfaG9vayA9IGxvb2t1cF9taW5p bWFsX3N5bWJvbF90ZXh0ICgiX1Vud2luZF9EZWJ1Z0hvb2siLCBvYmpmaWxlKTsKLSsgICAgICBp ZiAoZGVidWdfaG9vayAhPSBOVUxMKQotKwl7Ci0rCSAgc3RydWN0IGJyZWFrcG9pbnQgKmI7Ci0r Ci0rCSAgYiA9IGNyZWF0ZV9pbnRlcm5hbF9icmVha3BvaW50IChnZXRfb2JqZmlsZV9hcmNoIChv YmpmaWxlKSwKLSsJCQkJCSAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKGRlYnVnX2hvb2spLAotKwkJ CQkJICBicF9leGNlcHRpb25fbWFzdGVyKTsKLSsJICBiLT5hZGRyX3N0cmluZyA9IHhzdHJkdXAg KCJfVW53aW5kX0RlYnVnSG9vayIpOwotKwkgIGItPmVuYWJsZV9zdGF0ZSA9IGJwX2Rpc2FibGVk OwotKwl9Ci0rICAgIH0KLSsKLSsgIHVwZGF0ZV9nbG9iYWxfbG9jYXRpb25fbGlzdCAoMSk7Ci0r fQotKwotIHZvaWQKLSB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKLSB7Ci1A QCAtMjI3Myw3ICsyMzAwLDggQEAgdXBkYXRlX2JyZWFrcG9pbnRzX2FmdGVyX2V4ZWMgKHZvaWQp Ci0gICAgIC8qIFRocmVhZCBldmVudCBicmVha3BvaW50cyBtdXN0IGJlIHNldCBhbmV3IGFmdGVy IGFuIGV4ZWMoKSwKLSAgICAgICAgYXMgbXVzdCBvdmVybGF5IGV2ZW50IGFuZCBsb25nam1wIG1h c3RlciBicmVha3BvaW50cy4gICovCi0gICAgIGlmIChiLT50eXBlID09IGJwX3RocmVhZF9ldmVu dCB8fCBiLT50eXBlID09IGJwX292ZXJsYXlfZXZlbnQKLS0JfHwgYi0+dHlwZSA9PSBicF9sb25n am1wX21hc3RlciB8fCBiLT50eXBlID09IGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyKQotKwl8fCBi LT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyIHx8IGItPnR5cGUgPT0gYnBfc3RkX3Rlcm1pbmF0 ZV9tYXN0ZXIKLSsJfHwgYi0+dHlwZSA9PSBicF9leGNlcHRpb25fbWFzdGVyKQotICAgICAgIHsK LSAJZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwotIAljb250aW51ZTsKLUBAIC0yMjg4LDcgKzIzMTYs OCBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKLSAKLSAgICAgLyogTG9u Z2ptcCBhbmQgbG9uZ2ptcC1yZXN1bWUgYnJlYWtwb2ludHMgYXJlIGFsc28gbWVhbmluZ2xlc3MK LSAgICAgICAgYWZ0ZXIgYW4gZXhlYy4gICovCi0tICAgIGlmIChiLT50eXBlID09IGJwX2xvbmdq bXAgfHwgYi0+dHlwZSA9PSBicF9sb25nam1wX3Jlc3VtZSkKLSsgICAgaWYgKGItPnR5cGUgPT0g YnBfbG9uZ2ptcCB8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfcmVzdW1lCi0rCXx8IGItPnR5cGUg PT0gYnBfZXhjZXB0aW9uIHx8IGItPnR5cGUgPT0gYnBfZXhjZXB0aW9uX3Jlc3VtZSkKLSAgICAg ICB7Ci0gCWRlbGV0ZV9icmVha3BvaW50IChiKTsKLSAJY29udGludWU7Ci1AQCAtMjM1MCw2ICsy Mzc5LDcgQEAgdXBkYXRlX2JyZWFrcG9pbnRzX2FmdGVyX2V4ZWMgKHZvaWQpCi0gICBjcmVhdGVf bG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoInNpZ2xvbmdqbXAiKTsKLSAgIGNyZWF0ZV9sb25n am1wX21hc3Rlcl9icmVha3BvaW50ICgiX3NpZ2xvbmdqbXAiKTsKLSAgIGNyZWF0ZV9zdGRfdGVy bWluYXRlX21hc3Rlcl9icmVha3BvaW50ICgic3RkOjp0ZXJtaW5hdGUoKSIpOwotKyAgY3JlYXRl X2V4Y2VwdGlvbl9tYXN0ZXJfYnJlYWtwb2ludCAoKTsKLSB9Ci0gCi0gaW50Ci1AQCAtMzI3NSw2 ICszMzA1LDEyIEBAIHByaW50X2l0X3R5cGljYWwgKGJwc3RhdCBicykKLSAgICAgICByZXN1bHQg PSBQUklOVF9OT1RISU5HOwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIGJwX2V4Y2VwdGlv bl9tYXN0ZXI6Ci0rICAgICAgLyogVGhlc2Ugc2hvdWxkIG5ldmVyIGJlIGVuYWJsZWQuICAqLwot KyAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiRXhjZXB0aW9uIE1hc3RlciBCcmVha3BvaW50OiBn ZGIgc2hvdWxkIG5vdCBzdG9wIVxuIikpOwotKyAgICAgIHJlc3VsdCA9IFBSSU5UX05PVEhJTkc7 Ci0rICAgICAgYnJlYWs7Ci0rCi0gICAgIGNhc2UgYnBfd2F0Y2hwb2ludDoKLSAgICAgY2FzZSBi cF9oYXJkd2FyZV93YXRjaHBvaW50OgotICAgICAgIGFubm90YXRlX3dhdGNocG9pbnQgKGItPm51 bWJlcik7Ci1AQCAtMzM2Miw2ICszMzk4LDggQEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJz KQotICAgICBjYXNlIGJwX25vbmU6Ci0gICAgIGNhc2UgYnBfbG9uZ2ptcDoKLSAgICAgY2FzZSBi cF9sb25nam1wX3Jlc3VtZToKLSsgICAgY2FzZSBicF9leGNlcHRpb246Ci0rICAgIGNhc2UgYnBf ZXhjZXB0aW9uX3Jlc3VtZToKLSAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKLSAgICAgY2FzZSBi cF93YXRjaHBvaW50X3Njb3BlOgotICAgICBjYXNlIGJwX2NhbGxfZHVtbXk6Ci1AQCAtNDE2NCw3 ICs0MjAyLDggQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRkcmVzc19zcGFjZQotIAot IAkgIGlmIChiLT50eXBlID09IGJwX3RocmVhZF9ldmVudCB8fCBiLT50eXBlID09IGJwX292ZXJs YXlfZXZlbnQKLSAJICAgICAgfHwgYi0+dHlwZSA9PSBicF9sb25nam1wX21hc3RlcgotLQkgICAg ICB8fCBiLT50eXBlID09IGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyKQotKwkgICAgICB8fCBiLT50 eXBlID09IGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyCi0rCSAgICAgIHx8IGItPnR5cGUgPT0gYnBf ZXhjZXB0aW9uX21hc3RlcikKLSAJICAgIC8qIFdlIGRvIG5vdCBzdG9wIGZvciB0aGVzZS4gICov Ci0gCSAgICBicy0+c3RvcCA9IDA7Ci0gCSAgZWxzZQotQEAgLTQyNjAsNiArNDI5OSw3IEBAIGJw c3RhdF93aGF0IChicHN0YXQgYnNfaGVhZCkKLSAKLSAgIHJldHZhbC5tYWluX2FjdGlvbiA9IEJQ U1RBVF9XSEFUX0tFRVBfQ0hFQ0tJTkc7Ci0gICByZXR2YWwuY2FsbF9kdW1teSA9IFNUT1BfTk9O RTsKLSsgIHJldHZhbC5pc19sb25nam1wID0gMDsKLSAKLSAgIGZvciAoYnMgPSBic19oZWFkOyBi cyAhPSBOVUxMOyBicyA9IGJzLT5uZXh0KQotICAgICB7Ci1AQCAtNDMxNSwxMCArNDM1NSwxNCBA QCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzX2hlYWQpCi0gCSAgICB9Ci0gCSAgYnJlYWs7Ci0gCWNh c2UgYnBfbG9uZ2ptcDoKLSsJY2FzZSBicF9leGNlcHRpb246Ci0gCSAgdGhpc19hY3Rpb24gPSBC UFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUU7Ci0rCSAgcmV0dmFsLmlzX2xvbmdqbXAgPSBi cHR5cGUgPT0gYnBfbG9uZ2ptcDsKLSAJICBicmVhazsKLSAJY2FzZSBicF9sb25nam1wX3Jlc3Vt ZToKLSsJY2FzZSBicF9leGNlcHRpb25fcmVzdW1lOgotIAkgIHRoaXNfYWN0aW9uID0gQlBTVEFU X1dIQVRfQ0xFQVJfTE9OR0pNUF9SRVNVTUU7Ci0rCSAgcmV0dmFsLmlzX2xvbmdqbXAgPSBicHR5 cGUgPT0gYnBfbG9uZ2ptcF9yZXN1bWU7Ci0gCSAgYnJlYWs7Ci0gCWNhc2UgYnBfc3RlcF9yZXN1 bWU6Ci0gCSAgaWYgKGJzLT5zdG9wKQotQEAgLTQzMzQsNiArNDM3OCw3IEBAIGJwc3RhdF93aGF0 IChicHN0YXQgYnNfaGVhZCkKLSAJY2FzZSBicF9vdmVybGF5X2V2ZW50OgotIAljYXNlIGJwX2xv bmdqbXBfbWFzdGVyOgotIAljYXNlIGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyOgotKwljYXNlIGJw X2V4Y2VwdGlvbl9tYXN0ZXI6Ci0gCSAgdGhpc19hY3Rpb24gPSBCUFNUQVRfV0hBVF9TSU5HTEU7 Ci0gCSAgYnJlYWs7Ci0gCWNhc2UgYnBfY2F0Y2hwb2ludDoKLUBAIC00NTU2LDYgKzQ2MDEsOCBA QCBicHR5cGVfc3RyaW5nIChlbnVtIGJwdHlwZSB0eXBlKQotICAgICB7YnBfYWNjZXNzX3dhdGNo cG9pbnQsICJhY2Mgd2F0Y2hwb2ludCJ9LAotICAgICB7YnBfbG9uZ2ptcCwgImxvbmdqbXAifSwK LSAgICAge2JwX2xvbmdqbXBfcmVzdW1lLCAibG9uZ2ptcCByZXN1bWUifSwKLSsgICAge2JwX2V4 Y2VwdGlvbiwgImV4Y2VwdGlvbiJ9LAotKyAgICB7YnBfZXhjZXB0aW9uX3Jlc3VtZSwgImV4Y2Vw dGlvbiByZXN1bWUifSwKLSAgICAge2JwX3N0ZXBfcmVzdW1lLCAic3RlcCByZXN1bWUifSwKLSAg ICAge2JwX3dhdGNocG9pbnRfc2NvcGUsICJ3YXRjaHBvaW50IHNjb3BlIn0sCi0gICAgIHticF9j YWxsX2R1bW15LCAiY2FsbCBkdW1teSJ9LAotQEAgLTQ1NjUsNiArNDYxMiw3IEBAIGJwdHlwZV9z dHJpbmcgKGVudW0gYnB0eXBlIHR5cGUpCi0gICAgIHticF9vdmVybGF5X2V2ZW50LCAib3Zlcmxh eSBldmVudHMifSwKLSAgICAge2JwX2xvbmdqbXBfbWFzdGVyLCAibG9uZ2ptcCBtYXN0ZXIifSwK LSAgICAge2JwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyLCAic3RkOjp0ZXJtaW5hdGUgbWFzdGVyIn0s Ci0rICAgIHticF9leGNlcHRpb25fbWFzdGVyLCAiZXhjZXB0aW9uIG1hc3RlciJ9LAotICAgICB7 YnBfY2F0Y2hwb2ludCwgImNhdGNocG9pbnQifSwKLSAgICAge2JwX3RyYWNlcG9pbnQsICJ0cmFj ZXBvaW50In0sCi0gICAgIHticF9mYXN0X3RyYWNlcG9pbnQsICJmYXN0IHRyYWNlcG9pbnQifSwK LUBAIC00NzA1LDYgKzQ3NTMsOCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3Ry dWN0IGJyCi0gICAgICAgY2FzZSBicF9maW5pc2g6Ci0gICAgICAgY2FzZSBicF9sb25nam1wOgot ICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6Ci0rICAgICAgY2FzZSBicF9leGNlcHRpb246 Ci0rICAgICAgY2FzZSBicF9leGNlcHRpb25fcmVzdW1lOgotICAgICAgIGNhc2UgYnBfc3RlcF9y ZXN1bWU6Ci0gICAgICAgY2FzZSBicF93YXRjaHBvaW50X3Njb3BlOgotICAgICAgIGNhc2UgYnBf Y2FsbF9kdW1teToKLUBAIC00NzE0LDYgKzQ3NjQsNyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9s b2NhdGlvbiAoc3RydWN0IGJyCi0gICAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50OgotICAgICAg IGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6Ci0gICAgICAgY2FzZSBicF9zdGRfdGVybWluYXRlX21h c3RlcjoKLSsgICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6Ci0gICAgICAgY2FzZSBicF90 cmFjZXBvaW50OgotICAgICAgIGNhc2UgYnBfZmFzdF90cmFjZXBvaW50OgotICAgICAgIGNhc2Ug YnBfc3RhdGljX3RyYWNlcG9pbnQ6Ci1AQCAtNTQ1Nyw2ICs1NTA4LDggQEAgYWxsb2NhdGVfYnBf bG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50IAotICAgICBjYXNlIGJwX2ZpbmlzaDoKLSAgICAg Y2FzZSBicF9sb25nam1wOgotICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1lOgotKyAgICBjYXNl IGJwX2V4Y2VwdGlvbjoKLSsgICAgY2FzZSBicF9leGNlcHRpb25fcmVzdW1lOgotICAgICBjYXNl IGJwX3N0ZXBfcmVzdW1lOgotICAgICBjYXNlIGJwX3dhdGNocG9pbnRfc2NvcGU6Ci0gICAgIGNh c2UgYnBfY2FsbF9kdW1teToKLUBAIC01NDY5LDYgKzU1MjIsNyBAQCBhbGxvY2F0ZV9icF9sb2Nh dGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgCi0gICAgIGNhc2UgYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0 ZXI6Ci0gICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyOgotICAgICBjYXNlIGJwX2dudV9p ZnVuY19yZXNvbHZlcl9yZXR1cm46Ci0rICAgIGNhc2UgYnBfZXhjZXB0aW9uX21hc3RlcjoKLSAg ICAgICBsb2MtPmxvY190eXBlID0gYnBfbG9jX3NvZnR3YXJlX2JyZWFrcG9pbnQ7Ci0gICAgICAg YnJlYWs7Ci0gICAgIGNhc2UgYnBfaGFyZHdhcmVfYnJlYWtwb2ludDoKLUBAIC01NzA4LDggKzU3 NjIsNyBAQCBtYWtlX2JyZWFrcG9pbnRfcGVybWFuZW50IChzdHJ1Y3QgYnJlYWtwCi0gfQotIAot IC8qIENhbGwgdGhpcyByb3V0aW5lIHdoZW4gc3RlcHBpbmcgYW5kIG5leHRpbmcgdG8gZW5hYmxl IGEgYnJlYWtwb2ludAotLSAgIGlmIHdlIGRvIGEgbG9uZ2ptcCgpIGluIFRIUkVBRC4gIFdoZW4g d2UgaGl0IHRoYXQgYnJlYWtwb2ludCwgY2FsbAotLSAgIHNldF9sb25nam1wX3Jlc3VtZV9icmVh a3BvaW50KCkgdG8gZmlndXJlIG91dCB3aGVyZSB3ZSBhcmUgZ29pbmcuICovCi0rICAgaWYgd2Ug ZG8gYSBsb25nam1wKCkgb3IgJ3Rocm93JyBpbiBUSFJFQUQuICAqLwotIAotIHZvaWQKLSBzZXRf bG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhyZWFkKQotQEAgLTU3MjIsMTEgKzU3NzUsMTIgQEAg c2V0X2xvbmdqbXBfYnJlYWtwb2ludCAoaW50IHRocmVhZCkKLSAgICAgIGNsb25lcyBvZiB0aG9z ZSBhbmQgZW5hYmxlIHRoZW0gZm9yIHRoZSByZXF1ZXN0ZWQgdGhyZWFkLiAgKi8KLSAgIEFMTF9C UkVBS1BPSU5UU19TQUZFIChiLCB0ZW1wKQotICAgICBpZiAoYi0+cHNwYWNlID09IGN1cnJlbnRf cHJvZ3JhbV9zcGFjZQotLQkmJiBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyKQotKwkmJiAo Yi0+dHlwZSA9PSBicF9sb25nam1wX21hc3RlcgotKwkgICAgfHwgYi0+dHlwZSA9PSBicF9leGNl cHRpb25fbWFzdGVyKSkKLSAgICAgICB7Ci0gCXN0cnVjdCBicmVha3BvaW50ICpjbG9uZSA9IGNs b25lX21vbWVudGFyeV9icmVha3BvaW50IChiKTsKLSAKLS0JY2xvbmUtPnR5cGUgPSBicF9sb25n am1wOwotKwljbG9uZS0+dHlwZSA9IGItPnR5cGUgPT0gYnBfbG9uZ2ptcF9tYXN0ZXIgPyBicF9s b25nam1wIDogYnBfZXhjZXB0aW9uOwotIAljbG9uZS0+dGhyZWFkID0gdGhyZWFkOwotICAgICAg IH0KLSB9Ci1AQCAtNTczOCw3ICs1NzkyLDcgQEAgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludCAo aW50IHRocmVhZCkKLSAgIHN0cnVjdCBicmVha3BvaW50ICpiLCAqdGVtcDsKLSAKLSAgIEFMTF9C UkVBS1BPSU5UU19TQUZFIChiLCB0ZW1wKQotLSAgICBpZiAoYi0+dHlwZSA9PSBicF9sb25nam1w KQotKyAgICBpZiAoYi0+dHlwZSA9PSBicF9sb25nam1wIHx8IGItPnR5cGUgPT0gYnBfZXhjZXB0 aW9uKQotICAgICAgIHsKLSAJaWYgKGItPnRocmVhZCA9PSB0aHJlYWQpCi0gCSAgZGVsZXRlX2Jy ZWFrcG9pbnQgKGIpOwotQEAgLTY5MTMsNiArNjk2Nyw4IEBAIG1lbnRpb24gKHN0cnVjdCBicmVh a3BvaW50ICpiKQotICAgICAgIGNhc2UgYnBfZmluaXNoOgotICAgICAgIGNhc2UgYnBfbG9uZ2pt cDoKLSAgICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1lOgotKyAgICAgIGNhc2UgYnBfZXhjZXB0 aW9uOgotKyAgICAgIGNhc2UgYnBfZXhjZXB0aW9uX3Jlc3VtZToKLSAgICAgICBjYXNlIGJwX3N0 ZXBfcmVzdW1lOgotICAgICAgIGNhc2UgYnBfY2FsbF9kdW1teToKLSAgICAgICBjYXNlIGJwX3N0 ZF90ZXJtaW5hdGU6Ci1AQCAtNjkyNCw2ICs2OTgwLDcgQEAgbWVudGlvbiAoc3RydWN0IGJyZWFr cG9pbnQgKmIpCi0gICAgICAgY2FzZSBicF9sb25nam1wX21hc3RlcjoKLSAgICAgICBjYXNlIGJw X3N0ZF90ZXJtaW5hdGVfbWFzdGVyOgotICAgICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVy X3JldHVybjoKLSsgICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6Ci0gCWJyZWFrOwotICAg ICAgIH0KLSAKLUBAIC04NTk4LDYgKzg2NTUsNyBAQCBzdHJ1Y3QgdW50aWxfYnJlYWtfY29tbWFu ZF9jb250aW51YXRpb25fCi0gewotICAgc3RydWN0IGJyZWFrcG9pbnQgKmJyZWFrcG9pbnQ7Ci0g ICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDI7Ci0rICBpbnQgdGhyZWFkX251bTsKLSB9 OwotIAotIC8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGZldGNoX2luZmVyaW9yX2V2ZW50 IHZpYSB0aGUKLUBAIC04NjEyLDYgKzg2NzAsNyBAQCB1bnRpbF9icmVha19jb21tYW5kX2NvbnRp bnVhdGlvbiAodm9pZCAqCi0gICBkZWxldGVfYnJlYWtwb2ludCAoYS0+YnJlYWtwb2ludCk7Ci0g ICBpZiAoYS0+YnJlYWtwb2ludDIpCi0gICAgIGRlbGV0ZV9icmVha3BvaW50IChhLT5icmVha3Bv aW50Mik7Ci0rICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50IChhLT50aHJlYWRfbnVtKTsKLSB9 Ci0gCi0gdm9pZAotQEAgLTg2MjMsNiArODY4Miw4IEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNo YXIgKmFyZywgaW50IGZyb20KLSAgIHN0cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50OwotICAg c3RydWN0IGJyZWFrcG9pbnQgKmJyZWFrcG9pbnQyID0gTlVMTDsKLSAgIHN0cnVjdCBjbGVhbnVw ICpvbGRfY2hhaW47Ci0rICBpbnQgdGhyZWFkOwotKyAgc3RydWN0IHRocmVhZF9pbmZvICp0cDsK LSAKLSAgIGNsZWFyX3Byb2NlZWRfc3RhdHVzICgpOwotIAotQEAgLTg2NjEsNiArODcyMiw5IEBA IHVudGlsX2JyZWFrX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb20KLSAKLSAgIG9sZF9jaGFp biA9IG1ha2VfY2xlYW51cF9kZWxldGVfYnJlYWtwb2ludCAoYnJlYWtwb2ludCk7Ci0gCi0rICB0 cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKLSsgIHRocmVhZCA9IHRwLT5udW07Ci0rCi0gICAvKiBL ZWVwIHdpdGhpbiB0aGUgY3VycmVudCBmcmFtZSwgb3IgaW4gZnJhbWVzIGNhbGxlZCBieSB0aGUg Y3VycmVudAotICAgICAgb25lLiAgKi8KLSAKLUBAIC04NjczLDYgKzg3MzcsMTAgQEAgdW50aWxf YnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbQotIAkJCQkJICAgICAgZnJhbWVfdW53 aW5kX2NhbGxlcl9pZCAoZnJhbWUpLAotIAkJCQkJICAgICAgYnBfdW50aWwpOwotICAgICAgIG1h a2VfY2xlYW51cF9kZWxldGVfYnJlYWtwb2ludCAoYnJlYWtwb2ludDIpOwotKwotKyAgICAgIHNl dF9sb25nam1wX2JyZWFrcG9pbnQgKHRocmVhZCk7Ci0rICAgICAgdHAtPmluaXRpYXRpbmdfZnJh bWUgPSBmcmFtZV91bndpbmRfY2FsbGVyX2lkIChmcmFtZSk7Ci0rICAgICAgbWFrZV9jbGVhbnVw IChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJlYWQpOwotICAgICB9Ci0g Ci0gICBwcm9jZWVkICgtMSwgVEFSR0VUX1NJR05BTF9ERUZBVUxULCAwKTsKLUBAIC04Njg5LDYg Kzg3NTcsNyBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tCi0gCi0g ICAgICAgYXJncy0+YnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7Ci0gICAgICAgYXJncy0+YnJlYWtw b2ludDIgPSBicmVha3BvaW50MjsKLSsgICAgICBhcmdzLT50aHJlYWRfbnVtID0gdGhyZWFkOwot IAotICAgICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0gICAgICAgYWRkX2NvbnRp bnVhdGlvbiAoaW5mZXJpb3JfdGhyZWFkICgpLAotQEAgLTk5NDAsNiArMTAwMDksNyBAQCBkZWxl dGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCi0gCSAgICAmJiBiLT50eXBlICE9 IGJwX292ZXJsYXlfZXZlbnQKLSAJICAgICYmIGItPnR5cGUgIT0gYnBfbG9uZ2ptcF9tYXN0ZXIK LSAJICAgICYmIGItPnR5cGUgIT0gYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXIKLSsJICAgICYmIGIt PnR5cGUgIT0gYnBfZXhjZXB0aW9uX21hc3RlcgotIAkgICAgJiYgYi0+bnVtYmVyID49IDApCi0g CSAgewotIAkgICAgYnJlYWtzX3RvX2RlbGV0ZSA9IDE7Ci1AQCAtOTk2MSw2ICsxMDAzMSw3IEBA IGRlbGV0ZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKLSAJCSYmIGItPnR5cGUg IT0gYnBfb3ZlcmxheV9ldmVudAotIAkJJiYgYi0+dHlwZSAhPSBicF9sb25nam1wX21hc3Rlcgot IAkJJiYgYi0+dHlwZSAhPSBicF9zdGRfdGVybWluYXRlX21hc3RlcgotKwkJJiYgYi0+dHlwZSAh PSBicF9leGNlcHRpb25fbWFzdGVyCi0gCQkmJiBiLT5udW1iZXIgPj0gMCkKLSAJICAgICAgZGVs ZXRlX2JyZWFrcG9pbnQgKGIpOwotIAkgIH0KLUBAIC0xMDQ3MCw2ICsxMDU0MSw3IEBAIGJyZWFr cG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50 OgotICAgICBjYXNlIGJwX2xvbmdqbXBfbWFzdGVyOgotICAgICBjYXNlIGJwX3N0ZF90ZXJtaW5h dGVfbWFzdGVyOgotKyAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6Ci0gICAgICAgZGVsZXRl X2JyZWFrcG9pbnQgKGIpOwotICAgICAgIGJyZWFrOwotIAotQEAgLTEwNDkzLDYgKzEwNTY1LDgg QEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQotICAgICBjYXNlIGJwX3N0ZXBf cmVzdW1lOgotICAgICBjYXNlIGJwX2xvbmdqbXA6Ci0gICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1 bWU6Ci0rICAgIGNhc2UgYnBfZXhjZXB0aW9uOgotKyAgICBjYXNlIGJwX2V4Y2VwdGlvbl9yZXN1 bWU6Ci0gICAgIGNhc2UgYnBfaml0X2V2ZW50OgotICAgICBjYXNlIGJwX2dudV9pZnVuY19yZXNv bHZlcl9yZXR1cm46Ci0gICAgICAgYnJlYWs7Ci1AQCAtMTA1MzcsNiArMTA2MTEsNyBAQCBicmVh a3BvaW50X3JlX3NldCAodm9pZCkKLSAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50 ICgic2lnbG9uZ2ptcCIpOwotICAgY3JlYXRlX2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKCJf c2lnbG9uZ2ptcCIpOwotICAgY3JlYXRlX3N0ZF90ZXJtaW5hdGVfbWFzdGVyX2JyZWFrcG9pbnQg KCJzdGQ6OnRlcm1pbmF0ZSgpIik7Ci0rICBjcmVhdGVfZXhjZXB0aW9uX21hc3Rlcl9icmVha3Bv aW50ICgpOwotIH0KLSAMCi0gLyogUmVzZXQgdGhlIHRocmVhZCBudW1iZXIgb2YgdGhpcyBicmVh a3BvaW50OgotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2JyZWFrcG9pbnQuaAotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIw MTAtMTEtMTcgMDI6Mzg6NTkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTEx Ni9nZGIvYnJlYWtwb2ludC5oCTIwMTAtMTEtMTcgMDI6Mzk6MTkuMDAwMDAwMDAwICswMTAwCi1A QCAtNjEsNiArNjEsMTMgQEAgZW51bSBicHR5cGUKLSAgICAgYnBfbG9uZ2ptcCwJCQkvKiBzZWNy ZXQgYnJlYWtwb2ludCB0byBmaW5kIGxvbmdqbXAoKSAqLwotICAgICBicF9sb25nam1wX3Jlc3Vt ZSwJCS8qIHNlY3JldCBicmVha3BvaW50IHRvIGVzY2FwZSBsb25nam1wKCkgKi8KLSAKLSsgICAg LyogQW4gaW50ZXJuYWwgYnJlYWtwb2ludCB0aGF0IGlzIGluc3RhbGxlZCBvbiB0aGUgdW53aW5k ZXIncwotKyAgICAgICBkZWJ1ZyBob29rLiAgKi8KLSsgICAgYnBfZXhjZXB0aW9uLAotKyAgICAv KiBBbiBpbnRlcm5hbCBicmVha3BvaW50IHRoYXQgaXMgc2V0IGF0IHRoZSBwb2ludCB3aGVyZSBh bgotKyAgICAgICBleGNlcHRpb24gd2lsbCBsYW5kLiAgKi8KLSsgICAgYnBfZXhjZXB0aW9uX3Jl c3VtZSwKLSsKLSAgICAgLyogVXNlZCBieSB3YWl0X2Zvcl9pbmZlcmlvciBmb3Igc3RlcHBpbmcg b3ZlciBzdWJyb3V0aW5lIGNhbGxzLCBmb3IKLSAgICAgICAgc3RlcHBpbmcgb3ZlciBzaWduYWwg aGFuZGxlcnMsIGFuZCBmb3Igc2tpcHBpbmcgcHJvbG9ndWVzLiAgKi8KLSAgICAgYnBfc3RlcF9y ZXN1bWUsCi1AQCAtMTMwLDYgKzEzNyw5IEBAIGVudW0gYnB0eXBlCi0gICAgIC8qIE1hc3RlciBj b3BpZXMgb2Ygc3RkOjp0ZXJtaW5hdGUgYnJlYWtwb2ludHMuICAqLwotICAgICBicF9zdGRfdGVy bWluYXRlX21hc3RlciwKLSAKLSsgICAgLyogTGlrZSBicF9sb25nam1wX21hc3RlciwgYnV0IGZv ciBleGNlcHRpb25zLiAgKi8KLSsgICAgYnBfZXhjZXB0aW9uX21hc3RlciwKLSsKLSAgICAgYnBf Y2F0Y2hwb2ludCwKLSAKLSAgICAgYnBfdHJhY2Vwb2ludCwKLUBAIC02NzIsNiArNjgyLDEwIEBA IHN0cnVjdCBicHN0YXRfd2hhdAotICAgICAgICBjb250aW51aW5nIGZyb20gYSBjYWxsIGR1bW15 IHdpdGhvdXQgcG9wcGluZyB0aGUgZnJhbWUgaXMgbm90IGEKLSAgICAgICAgdXNlZnVsIG9uZSku ICAqLwotICAgICBlbnVtIHN0b3Bfc3RhY2tfa2luZCBjYWxsX2R1bW15OwotKwotKyAgICAvKiBV c2VkIGZvciBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUuICBUcnVlIGlmIHdlIGFyZQot KyAgICAgICBoYW5kbGluZyBhIGxvbmdqbXAsIGZhbHNlIGlmIHdlIGFyZSBoYW5kbGluZyBhbiBl eGNlcHRpb24uICAqLwotKyAgICBpbnQgaXNfbG9uZ2ptcDsKLSAgIH07Ci0gCi0gLyogVGhlIHBv c3NpYmxlIHJldHVybiB2YWx1ZXMgZm9yIHByaW50X2Jwc3RhdCwgcHJpbnRfaXRfbm9ybWFsLAot SW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2dkYnRocmVhZC5oCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9nZGJ0aHJlYWQuaAkyMDEwLTExLTAyIDAy OjM3OjMxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2dkYnRo cmVhZC5oCTIwMTAtMTEtMTcgMDI6Mzk6MTkuMDAwMDAwMDAwICswMTAwCi1AQCAtMTg1LDYgKzE4 NSwxMCBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8KLSAgIC8qIFRydWUgaWYgdGhpcyB0aHJlYWQgaGFz IGJlZW4gZXhwbGljaXRseSByZXF1ZXN0ZWQgdG8gc3RvcC4gICovCi0gICBpbnQgc3RvcF9yZXF1 ZXN0ZWQ7Ci0gCi0rICAvKiBUaGUgaW5pdGlhdGluZyBmcmFtZSBvZiBhIG5leHRpbmcgb3BlcmF0 aW9uLCB1c2VkIGZvciBkZWNpZGluZwotKyAgICAgd2hpY2ggZXhjZXB0aW9ucyB0byBpbnRlcmNl cHQuICAqLwotKyAgc3RydWN0IGZyYW1lX2lkIGluaXRpYXRpbmdfZnJhbWU7Ci0rCi0gICAvKiBQ cml2YXRlIGRhdGEgdXNlZCBieSB0aGUgdGFyZ2V0IHZlY3RvciBpbXBsZW1lbnRhdGlvbi4gICov Ci0gICBzdHJ1Y3QgcHJpdmF0ZV90aHJlYWRfaW5mbyAqcHJpdmF0ZTsKLSAKLUluZGV4OiBnZGIt Ny4yLjUwLjIwMTAxMTE2L2dkYi9pbmZjbWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAu MjAxMDExMTYub3JpZy9nZGIvaW5mY21kLmMJMjAxMC0wNy0wMSAxNzozNjoxNS4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9pbmZjbWQuYwkyMDEwLTExLTE3IDAy OjM5OjE5LjAwMDAwMDAwMCArMDEwMAotQEAgLTgyMiw3ICs4MjIsNyBAQCBuZXh0aV9jb21tYW5k IChjaGFyICpjb3VudF9zdHJpbmcsIGludCBmCi0gICBzdGVwXzEgKDEsIDEsIGNvdW50X3N0cmlu Zyk7Ci0gfQotIAotLXN0YXRpYyB2b2lkCi0rdm9pZAotIGRlbGV0ZV9sb25nam1wX2JyZWFrcG9p bnRfY2xlYW51cCAodm9pZCAqYXJnKQotIHsKLSAgIGludCB0aHJlYWQgPSAqIChpbnQgKikgYXJn OwotQEAgLTg2MiwxMCArODYyLDEzIEBAIHN0ZXBfMSAoaW50IHNraXBfc3Vicm91dGluZXMsIGlu dCBzaW5nbGUKLSAKLSAgIGlmICghc2luZ2xlX2luc3QgfHwgc2tpcF9zdWJyb3V0aW5lcykJCS8q IGxlYXZlIHNpIGNvbW1hbmQgYWxvbmUgKi8KLSAgICAgewotKyAgICAgIHN0cnVjdCB0aHJlYWRf aW5mbyAqdHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7Ci0rCi0gICAgICAgaWYgKGluX3RocmVhZF9s aXN0IChpbmZlcmlvcl9wdGlkKSkKLSAgCXRocmVhZCA9IHBpZF90b190aHJlYWRfaWQgKGluZmVy aW9yX3B0aWQpOwotIAotICAgICAgIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKHRocmVhZCk7Ci0r ICAgICAgdHAtPmluaXRpYXRpbmdfZnJhbWUgPSBnZXRfZnJhbWVfaWQgKGdldF9jdXJyZW50X2Zy YW1lICgpKTsKLSAKLSAgICAgICBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9p bnRfY2xlYW51cCwgJnRocmVhZCk7Ci0gICAgIH0KLUBAIC0xMjE5LDYgKzEyMjIsMTUgQEAgc2ln bmFsX2NvbW1hbmQgKGNoYXIgKnNpZ251bV9leHAsIGludCBmcgotICAgcHJvY2VlZCAoKENPUkVf QUREUikgLTEsIG91cnNpZywgMCk7Ci0gfQotIAotKy8qIEEgY29udGludWF0aW9uIGNhbGxiYWNr IGZvciB1bnRpbF9uZXh0X2NvbW1hbmQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rdW50aWxfbmV4 dF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKLSt7Ci0rICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRw ID0gYXJnOwotKyAgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludCAodHAtPm51bSk7Ci0rfQotKwot IC8qIFByb2NlZWQgdW50aWwgd2UgcmVhY2ggYSBkaWZmZXJlbnQgc291cmNlIGxpbmUgd2l0aCBw YyBncmVhdGVyIHRoYW4KLSAgICBvdXIgY3VycmVudCBvbmUgb3IgZXhpdCB0aGUgZnVuY3Rpb24u ICBXZSBza2lwIGNhbGxzIGluIGJvdGggY2FzZXMuCi0gCi1AQCAtMTIzNSw2ICsxMjQ3LDggQEAg dW50aWxfbmV4dF9jb21tYW5kIChpbnQgZnJvbV90dHkpCi0gICBzdHJ1Y3Qgc3ltYm9sICpmdW5j OwotICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7Ci0gICBzdHJ1Y3QgdGhyZWFkX2luZm8g KnRwID0gaW5mZXJpb3JfdGhyZWFkICgpOwotKyAgaW50IHRocmVhZCA9IHRwLT5udW07Ci0rICBz dHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwotIAotICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMgKCk7 Ci0gICBzZXRfc3RlcF9mcmFtZSAoKTsKLUBAIC0xMjcwLDcgKzEyODQsMTkgQEAgdW50aWxfbmV4 dF9jb21tYW5kIChpbnQgZnJvbV90dHkpCi0gCi0gICB0cC0+c3RlcF9tdWx0aSA9IDA7CQkvKiBP bmx5IG9uZSBjYWxsIHRvIHByb2NlZWQgKi8KLSAKLSsgIHNldF9sb25nam1wX2JyZWFrcG9pbnQg KHRocmVhZCk7Ci0rICB0cC0+aW5pdGlhdGluZ19mcmFtZSA9IGdldF9mcmFtZV9pZCAoZnJhbWUp OwotKyAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50 X2NsZWFudXAsICZ0aHJlYWQpOwotKwotICAgcHJvY2VlZCAoKENPUkVfQUREUikgLTEsIFRBUkdF VF9TSUdOQUxfREVGQVVMVCwgMSk7Ci0rCi0rICBpZiAodGFyZ2V0X2Nhbl9hc3luY19wICgpICYm IGlzX3J1bm5pbmcgKGluZmVyaW9yX3B0aWQpKQotKyAgICB7Ci0rICAgICAgZGlzY2FyZF9jbGVh bnVwcyAob2xkX2NoYWluKTsKLSsgICAgICBhZGRfY29udGludWF0aW9uICh0cCwgdW50aWxfbmV4 dF9jb250aW51YXRpb24sIHRwLCBOVUxMKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICBkb19jbGVh bnVwcyAob2xkX2NoYWluKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC0xNDYzLDYgKzE0ODks NyBAQCBmaW5pc2hfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKLSAgIGlmIChicyAh PSBOVUxMICYmIHRwLT5wcm9jZWVkX3RvX2ZpbmlzaCkKLSAgICAgb2JzZXJ2ZXJfbm90aWZ5X25v cm1hbF9zdG9wIChicywgMSAvKiBwcmludCBmcmFtZSAqLyk7Ci0gICBkZWxldGVfYnJlYWtwb2lu dCAoYS0+YnJlYWtwb2ludCk7Ci0rICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50IChpbmZlcmlv cl90aHJlYWQgKCktPm51bSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtMTU0Niw2ICsxNTcz LDcgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9uLAotICAgc3RydWN0 IGJyZWFrcG9pbnQgKmJyZWFrcG9pbnQ7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwot ICAgc3RydWN0IGZpbmlzaF9jb21tYW5kX2NvbnRpbnVhdGlvbl9hcmdzICpjYXJnczsKLSsgIGlu dCB0aHJlYWQgPSB0cC0+bnVtOwotIAotICAgc2FsID0gZmluZF9wY19saW5lIChnZXRfZnJhbWVf cGMgKGZyYW1lKSwgMCk7Ci0gICBzYWwucGMgPSBnZXRfZnJhbWVfcGMgKGZyYW1lKTsKLUBAIC0x NTU2LDYgKzE1ODQsMTAgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9u LAotIAotICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50IChicmVh a3BvaW50KTsKLSAKLSsgIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKHRocmVhZCk7Ci0rICB0cC0+ aW5pdGlhdGluZ19mcmFtZSA9IGdldF9mcmFtZV9pZCAoZnJhbWUpOwotKyAgbWFrZV9jbGVhbnVw IChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJlYWQpOwotKwotICAgdHAt PnByb2NlZWRfdG9fZmluaXNoID0gMTsgICAgLyogV2Ugd2FudCBzdG9wX3JlZ2lzdGVycywgcGxl YXNlLi4uICAqLwotICAgY2FyZ3MgPSB4bWFsbG9jIChzaXplb2YgKCpjYXJncykpOwotIAotSW5k ZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZmVyaW9yLmgKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2luZmVyaW9yLmgJMjAxMC0xMS0xNyAwMjozODo1 NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9pbmZlcmlvci5o CTIwMTAtMTEtMTcgMDI6Mzk6MTkuMDAwMDAwMDAwICswMTAwCi1AQCAtMjk5LDYgKzI5OSw4IEBA IGV4dGVybiB2b2lkIGludGVycnVwdF90YXJnZXRfY29tbWFuZCAoY2gKLSAKLSBleHRlcm4gdm9p ZCBpbnRlcnJ1cHRfdGFyZ2V0XzEgKGludCBhbGxfdGhyZWFkcyk7Ci0gCi0rZXh0ZXJuIHZvaWQg ZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwICh2b2lkICphcmcpOwotKwotIGV4dGVy biB2b2lkIGRldGFjaF9jb21tYW5kIChjaGFyICosIGludCk7Ci0gCi0gZXh0ZXJuIHZvaWQgbm90 aWNlX25ld19pbmZlcmlvciAocHRpZF90LCBpbnQsIGludCk7Ci1JbmRleDogZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvaW5mcnVuLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2 Lm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTAtMTEtMTcgMDI6Mzg6NTkuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvaW5mcnVuLmMJMjAxMC0xMS0xNyAwMjozOToxOS4w MDAwMDAwMDAgKzAxMDAKLUBAIC00NSw2ICs0NSw4IEBACi0gI2luY2x1ZGUgImxhbmd1YWdlLmgi Ci0gI2luY2x1ZGUgInNvbGliLmgiCi0gI2luY2x1ZGUgIm1haW4uaCIKLSsjaW5jbHVkZSAiZGlj dGlvbmFyeS5oIgotKyNpbmNsdWRlICJibG9jay5oIgotICNpbmNsdWRlICJnZGJfYXNzZXJ0Lmgi Ci0gI2luY2x1ZGUgIm1pL21pLWNvbW1vbi5oIgotICNpbmNsdWRlICJldmVudC10b3AuaCIKLUBA IC0yMjI5LDYgKzIyMzEsOCBAQCBzdGF0aWMgdm9pZCBpbnNlcnRfc3RlcF9yZXN1bWVfYnJlYWtw b2luCi0gCQkJCQkJICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNyX3NhbCwKLSAJCQkJCQkgIHN0 cnVjdCBmcmFtZV9pZCBzcl9pZCk7Ci0gc3RhdGljIHZvaWQgaW5zZXJ0X2xvbmdqbXBfcmVzdW1l X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICosIENPUkVfQUREUik7Ci0rc3RhdGljIHZvaWQg Y2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICos Ci0rCQkJCSAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqLCBzdHJ1Y3Qgc3ltYm9sICopOwotIAotIHN0 YXRpYyB2b2lkIHN0b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAq ZWNzKTsKLSBzdGF0aWMgdm9pZCBwcmVwYXJlX3RvX3dhaXQgKHN0cnVjdCBleGVjdXRpb25fY29u dHJvbF9zdGF0ZSAqZWNzKTsKLUBAIC00MTIxLDIzICs0MTI1LDMzIEBAIHByb2Nlc3NfZXZlbnRf c3RvcF90ZXN0OgotIAotIAllY3MtPmV2ZW50X3RocmVhZC0+c3RlcHBpbmdfb3Zlcl9icmVha3Bv aW50ID0gMTsKLSAKLS0JaWYgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldF9wIChnZGJhcmNo KQotLQkgICAgfHwgIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0IChnZGJhcmNoLCBmcmFtZSwg JmptcF9idWZfcGMpKQotKwlpZiAod2hhdC5pc19sb25nam1wKQotIAkgIHsKLS0JICAgIGlmIChk ZWJ1Z19pbmZydW4pCi0tCSAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlwK LSsJICAgIGlmICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXRfcCAoZ2RiYXJjaCkKLSsJCXx8 ICFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldCAoZ2RiYXJjaCwKLSsJCQkJCQlmcmFtZSwgJmpt cF9idWZfcGMpKQotKwkgICAgICB7Ci0rCQlpZiAoZGVidWdfaW5mcnVuKQotKwkJICBmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJcCi0gaW5mcnVuOiBCUFNUQVRfV0hBVF9TRVRfTE9O R0pNUF9SRVNVTUUgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldClcbiIpOwotLQkgICAga2Vl cF9nb2luZyAoZWNzKTsKLS0JICAgIHJldHVybjsKLS0JICB9Ci0rCQlrZWVwX2dvaW5nIChlY3Mp OwotKwkJcmV0dXJuOwotKwkgICAgICB9Ci0gCi0tCS8qIFdlJ3JlIGdvaW5nIHRvIHJlcGxhY2Ug dGhlIGN1cnJlbnQgc3RlcC1yZXN1bWUgYnJlYWtwb2ludAotLQkgICB3aXRoIGEgbG9uZ2ptcC1y ZXN1bWUgYnJlYWtwb2ludC4gICovCi0tCWRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChl Y3MtPmV2ZW50X3RocmVhZCk7Ci0rCSAgICAvKiBXZSdyZSBnb2luZyB0byByZXBsYWNlIHRoZSBj dXJyZW50IHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQKLSsJICAgICAgIHdpdGggYSBsb25nam1wLXJl c3VtZSBicmVha3BvaW50LiAgKi8KLSsJICAgIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50 IChlY3MtPmV2ZW50X3RocmVhZCk7Ci0gCi0tCS8qIEluc2VydCBhIGJyZWFrcG9pbnQgYXQgcmVz dW1lIGFkZHJlc3MuICAqLwotLQlpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoZ2Ri YXJjaCwgam1wX2J1Zl9wYyk7Ci0rCSAgICAvKiBJbnNlcnQgYSBicmVha3BvaW50IGF0IHJlc3Vt ZSBhZGRyZXNzLiAgKi8KLSsJICAgIGluc2VydF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChn ZGJhcmNoLCBqbXBfYnVmX3BjKTsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBzdHJ1Y3Qg c3ltYm9sICpmdW5jID0gZ2V0X2ZyYW1lX2Z1bmN0aW9uIChmcmFtZSk7Ci0gCi0rCSAgICBpZiAo ZnVuYykKLSsJICAgICAgY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoZWNzLCBmcmFtZSwgZnVuYyk7 Ci0rCSAgfQotIAlrZWVwX2dvaW5nIChlY3MpOwotIAlyZXR1cm47Ci0gCi1AQCAtNDE0OSw2ICs0 MTYzLDUzIEBAIGluZnJ1bjogQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FICgKLSAJZ2Ri X2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgIT0gTlVM TCk7Ci0gCWRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7 Ci0gCi0rCWlmICghd2hhdC5pc19sb25nam1wKQotKwkgIHsKLSsJICAgIC8qIFRoZXJlIGFyZSBz ZXZlcmFsIGNhc2VzIHRvIGNvbnNpZGVyLgotKwkgICAgICAgCi0rCSAgICAgICAxLiBUaGUgaW5p dGlhdGluZyBmcmFtZSBubyBsb25nZXIgZXhpc3RzLiAgSW4gdGhpcyBjYXNlCi0rCSAgICAgICB3 ZSBtdXN0IHN0b3AsIGJlY2F1c2UgdGhlIGV4Y2VwdGlvbiBoYXMgZ29uZSB0b28gZmFyLgotKwkg ICAgICAgCi0rCSAgICAgICAyLiBUaGUgaW5pdGlhdGluZyBmcmFtZSBleGlzdHMsIGFuZCBpcyB0 aGUgc2FtZSBhcyB0aGUKLSsJICAgICAgIGN1cnJlbnQgZnJhbWUuCi0rCSAgICAgICAKLSsJICAg ICAgIDIuMS4gSWYgd2UgYXJlIHN0ZXBwaW5nLCBkZWZlciB0byB0aGUgc3RlcHBpbmcgbG9naWMu Ci0rCSAgICAgICAKLSsJICAgICAgIDIuMi4gT3RoZXJ3aXNlLCB3ZSBhcmUgbm90IHN0ZXBwaW5n LCBzbyB3ZSBhcmUgZG9pbmcgYQotKwkgICAgICAgImZpbmlzaCIgYW5kIHdlIGhhdmUgcmVhY2hl ZCB0aGUgY2FsbGluZyBmcmFtZS4gIFNvLAotKwkgICAgICAgc3RvcC4KLSsJICAgICAgIAotKwkg ICAgICAgMy4gVGhlIGluaXRpYXRpbmcgZnJhbWUgZXhpc3RzIGFuZCBpcyBkaWZmZXJlbnQgZnJv bQotKwkgICAgICAgdGhlIGN1cnJlbnQgZnJhbWUuICBUaGlzIG1lYW5zIHRoZSBleGNlcHRpb24g aGFzIGJlZW4KLSsJICAgICAgIGNhdWdodCBiZW5lYXRoIHRoZSBpbml0aWF0aW5nIGZyYW1lLCBz byBrZWVwIGdvaW5nLiAgKi8KLSsJICAgIHN0cnVjdCBmcmFtZV9pbmZvICppbml0X2ZyYW1lCi0r CSAgICAgID0gZnJhbWVfZmluZF9ieV9pZCAoZWNzLT5ldmVudF90aHJlYWQtPmluaXRpYXRpbmdf ZnJhbWUpOwotKwkgICAgaWYgKGluaXRfZnJhbWUpCi0rCSAgICAgIHsKLSsJCXN0cnVjdCBmcmFt ZV9pZCBjdXJyZW50X2lkCi0rCQkgID0gZ2V0X2ZyYW1lX2lkIChnZXRfY3VycmVudF9mcmFtZSAo KSk7Ci0rCQlpZiAoZnJhbWVfaWRfZXEgKGN1cnJlbnRfaWQsCi0rCQkJCSBlY3MtPmV2ZW50X3Ro cmVhZC0+aW5pdGlhdGluZ19mcmFtZSkpCi0rCQkgIHsKLSsJCSAgICBpZiAoZWNzLT5ldmVudF90 aHJlYWQtPnN0ZXBfcmFuZ2Vfc3RhcnQpCi0rCQkgICAgICB7Ci0rCQkJLyogQ2FzZSAyLjEuICAq LwotKwkJCWJyZWFrOwotKwkJICAgICAgfQotKwkJICAgIGVsc2UKLSsJCSAgICAgIHsKLSsJCQkv KiBDYXNlIDIuMjogZmFsbCB0aHJvdWdoLiAgKi8KLSsJCSAgICAgIH0KLSsJCSAgfQotKwkJZWxz ZQotKwkJICB7Ci0rCQkgICAgLyogQ2FzZSAzLiAgKi8KLSsJCSAgICBrZWVwX2dvaW5nIChlY3Mp OwotKwkJICAgIHJldHVybjsKLSsJCSAgfQotKwkgICAgICB9Ci0rCSAgfQotKwotIAllY3MtPmV2 ZW50X3RocmVhZC0+c3RvcF9zdGVwID0gMTsKLSAJcHJpbnRfZW5kX3N0ZXBwaW5nX3JhbmdlX3Jl YXNvbiAoKTsKLSAJc3RvcF9zdGVwcGluZyAoZWNzKTsKLUBAIC01MTI3LDYgKzUxODgsMTAwIEBA IGluc2VydF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QKLSAgICAgc2V0X21vbWVu dGFyeV9icmVha3BvaW50X2F0X3BjIChnZGJhcmNoLCBwYywgYnBfbG9uZ2ptcF9yZXN1bWUpOwot IH0KLSAKLSsvKiBJbnNlcnQgYW4gZXhjZXB0aW9uIHJlc3VtZSBicmVha3BvaW50LiAgVFAgaXMg dGhlIHRocmVhZCB0aHJvd2luZwotKyAgIHRoZSBleGNlcHRpb24uICBUaGUgYmxvY2sgQiBpcyB0 aGUgYmxvY2sgb2YgdGhlIHVud2luZGVyIGRlYnVnIGhvb2sKLSsgICBmdW5jdGlvbi4gIEZSQU1F IGlzIHRoZSBmcmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjYWxsIHRvIHRoaXMKLSsgICBmdW5j dGlvbi4gIFNZTSBpcyB0aGUgc3ltYm9sIG9mIHRoZSBmdW5jdGlvbiBhcmd1bWVudCBob2xkaW5n IHRoZQotKyAgIHRhcmdldCBQQyBvZiB0aGUgZXhjZXB0aW9uLiAgKi8KLSsKLStzdGF0aWMgdm9p ZAotK2luc2VydF9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCB0aHJlYWRfaW5m byAqdHAsCi0rCQkJCSAgICBzdHJ1Y3QgYmxvY2sgKmIsCi0rCQkJCSAgICBzdHJ1Y3QgZnJhbWVf aW5mbyAqZnJhbWUsCi0rCQkJCSAgICBzdHJ1Y3Qgc3ltYm9sICpzeW0pCi0rewotKyAgc3RydWN0 IGdkYl9leGNlcHRpb24gZTsKLSsKLSsgIC8qIFdlIHdhbnQgdG8gaWdub3JlIGVycm9ycyBoZXJl LiAgKi8KLSsgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAg c3RydWN0IHN5bWJvbCAqdnN5bTsKLSsgICAgICBzdHJ1Y3QgdmFsdWUgKnZhbHVlOwotKyAgICAg IENPUkVfQUREUiBoYW5kbGVyOwotKyAgICAgIHN0cnVjdCBicmVha3BvaW50ICpicDsKLSsKLSsg ICAgICB2c3ltID0gbG9va3VwX3N5bWJvbCAoU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSwgYiwg VkFSX0RPTUFJTiwgTlVMTCk7Ci0rICAgICAgdmFsdWUgPSByZWFkX3Zhcl92YWx1ZSAodnN5bSwg ZnJhbWUpOwotKyAgICAgIC8qIElmIHRoZSB2YWx1ZSB3YXMgb3B0aW1pemVkIG91dCwgcmV2ZXJ0 IHRvIHRoZSBvbGQgYmVoYXZpb3IuICAqLwotKyAgICAgIGlmICghIHZhbHVlX29wdGltaXplZF9v dXQgKHZhbHVlKSkKLSsJewotKwkgIGhhbmRsZXIgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWx1ZSk7 Ci0rCi0rCSAgLyogV2UncmUgZ29pbmcgdG8gcmVwbGFjZSB0aGUgY3VycmVudCBzdGVwLXJlc3Vt ZSBicmVha3BvaW50Ci0rCSAgICAgd2l0aCBhbiBleGNlcHRpb24tcmVzdW1lIGJyZWFrcG9pbnQu ICAqLwotKwkgIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50ICh0cCk7Ci0rCi0rCSAgaWYg KGRlYnVnX2luZnJ1bikKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJ CQkJImluZnJ1bjogZXhjZXB0aW9uIHJlc3VtZSBhdCAlbHhcbiIsCi0rCQkJCSh1bnNpZ25lZCBs b25nKSBoYW5kbGVyKTsKLSsKLSsJICBicCA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9w YyAoZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwKLSsJCQkJCSAgICAgICBoYW5kbGVyLCBicF9leGNl cHRpb25fcmVzdW1lKTsKLSsJICBpbmZlcmlvcl90aHJlYWQgKCktPnN0ZXBfcmVzdW1lX2JyZWFr cG9pbnQgPSBicDsKLSsJfQotKyAgICB9Ci0rfQotKwotKy8qIFRoaXMgaXMgY2FsbGVkIHdoZW4g YW4gZXhjZXB0aW9uIGhhcyBiZWVuIGludGVyY2VwdGVkLiAgQ2hlY2sgdG8KLSsgICBzZWUgd2hl dGhlciB0aGUgZXhjZXB0aW9uJ3MgZGVzdGluYXRpb24gaXMgb2YgaW50ZXJlc3QsIGFuZCBpZiBz bywKLSsgICBzZXQgYW4gZXhjZXB0aW9uIHJlc3VtZSBicmVha3BvaW50IHRoZXJlLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK2NoZWNrX2V4Y2VwdGlvbl9yZXN1bWUgKHN0cnVjdCBleGVjdXRpb25f Y29udHJvbF9zdGF0ZSAqZWNzLAotKwkJCXN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgc3RydWN0 IHN5bWJvbCAqZnVuYykKLSt7Ci0rICBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBlOwotKwotKyAgVFJZ X0NBVENIIChlLCBSRVRVUk5fTUFTS19BTEwpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgYmxvY2sg KmI7Ci0rICAgICAgc3RydWN0IGRpY3RfaXRlcmF0b3IgaXRlcjsKLSsgICAgICBzdHJ1Y3Qgc3lt Ym9sICpzeW07Ci0rICAgICAgaW50IGFyZ25vID0gMDsKLSsKLSsgICAgICAvKiBUaGUgZXhjZXB0 aW9uIGJyZWFrcG9pbnQgaXMgYSB0aHJlYWQtc3BlY2lmaWMgYnJlYWtwb2ludCBvbgotKwkgdGhl IHVud2luZGVyJ3MgZGVidWcgaG9vaywgZGVjbGFyZWQgYXM6Ci0rCSAKLSsJIHZvaWQgX1Vud2lu ZF9EZWJ1Z0hvb2sgKHZvaWQgKmNmYSwgdm9pZCAqaGFuZGxlcik7Ci0rCSAKLSsJIFRoZSBDRkEg YXJndW1lbnQgaW5kaWNhdGVzIHRoZSBmcmFtZSB0byB3aGljaCBjb250cm9sIGlzCi0rCSBhYm91 dCB0byBiZSB0cmFuc2ZlcnJlZC4gIEhBTkRMRVIgaXMgdGhlIGRlc3RpbmF0aW9uIFBDLgotKwkg Ci0rCSBXZSBpZ25vcmUgdGhlIENGQSBhbmQgc2V0IGEgdGVtcG9yYXJ5IGJyZWFrcG9pbnQgYXQg SEFORExFUi4KLSsJIFRoaXMgaXMgbm90IGV4dHJlbWVseSBlZmZpY2llbnQgYnV0IGl0IGF2b2lk cyBpc3N1ZXMgaW4gZ2RiCi0rCSB3aXRoIGNvbXB1dGluZyB0aGUgRFdBUkYgQ0ZBLCBhbmQgaXQg YWxzbyB3b3JrcyBldmVuIGluIHdlaXJkCi0rCSBjYXNlcyBzdWNoIGFzIHRocm93aW5nIGFuIGV4 Y2VwdGlvbiBmcm9tIGluc2lkZSBhIHNpZ25hbAotKwkgaGFuZGxlci4gICovCi0rCi0rICAgICAg YiA9IFNZTUJPTF9CTE9DS19WQUxVRSAoZnVuYyk7Ci0rICAgICAgQUxMX0JMT0NLX1NZTUJPTFMg KGIsIGl0ZXIsIHN5bSkKLSsJewotKwkgIGlmICghU1lNQk9MX0lTX0FSR1VNRU5UIChzeW0pKQot KwkgICAgY29udGludWU7Ci0rCi0rCSAgaWYgKGFyZ25vID09IDApCi0rCSAgICArK2FyZ25vOwot KwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtw b2ludCAoZWNzLT5ldmVudF90aHJlYWQsCi0rCQkJCQkJICBiLCBmcmFtZSwgc3ltKTsKLSsJICAg ICAgYnJlYWs7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotK30KLSsKLSBzdGF0aWMgdm9pZAotIHN0 b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQotIHsKLUlu ZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuY2MK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1 OTMuY2MJMjAxMC0xMS0xNyAwMjozOToxOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMTgw IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K LSsKLSsgICBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsgICAqLwotKyNp bmNsdWRlIDxpb3N0cmVhbT4KLSsKLSt1c2luZyBuYW1lc3BhY2Ugc3RkOwotKwotK2NsYXNzIE5l eHRPdmVyVGhyb3dEZXJpdmF0ZXMKLSt7Ci0rCi0rcHVibGljOgotKwotKwotKyAgLy8gU2luZ2xl IHRocm93IGFuIGV4Y2VwdGlvbiBpbiB0aGlzIGZ1bmN0aW9uLgotKyAgdm9pZCBmdW5jdGlvbjEo KSAKLSsgIHsKLSsgICAgdGhyb3cgMjA7Ci0rICB9Ci0rCi0rICAvLyBUaHJvdyBhbiBleGNlcHRp b24gaW4gYW5vdGhlciBmdW5jdGlvbi4KLSsgIHZvaWQgZnVuY3Rpb24yKCkgCi0rICB7Ci0rICAg IGZ1bmN0aW9uMSgpOwotKyAgfQotKwotKyAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGluIGFub3Ro ZXIgZnVuY3Rpb24sIGJ1dCBoYW5kbGUgaXQKLSsgIC8vIGxvY2FsbHkuCi0rICB2b2lkIGZ1bmN0 aW9uMyAoKSAKLSsgIHsKLSsgICAgewotKyAgICAgIHRyeQotKwl7Ci0rCSAgZnVuY3Rpb24xICgp OwotKwl9Ci0rICAgICAgY2F0Y2ggKC4uLikgCi0rCXsKLSsJICBjb3V0IDw8ICJDYXVnaHQgYW5k IGhhbmRsZWQgZnVuY3Rpb24xIGV4Y2VwdGlvbiIgPDwgZW5kbDsKLSsJfQotKyAgICB9Ci0rICB9 Ci0rCi0rICB2b2lkIHJldGhyb3cgKCkKLSsgIHsKLSsgICAgdHJ5Ci0rICAgICAgewotKwlmdW5j dGlvbjEgKCk7Ci0rICAgICAgfQotKyAgICBjYXRjaCAoLi4uKQotKyAgICAgIHsKLSsJdGhyb3c7 Ci0rICAgICAgfQotKyAgfQotKwotKyAgdm9pZCBmaW5pc2ggKCkKLSsgIHsKLSsgICAgLy8gV2Ug dXNlIHRoaXMgdG8gdGVzdCB0aGF0IGEgImZpbmlzaCIgaGVyZSBkb2VzIG5vdCBlbmQgdXAgaW4K LSsgICAgLy8gdGhpcyBmcmFtZSwgYnV0IGluIHRoZSBvbmUgYWJvdmUuCi0rICAgIHRyeQotKyAg ICAgIHsKLSsJZnVuY3Rpb24xICgpOwotKyAgICAgIH0KLSsgICAgY2F0Y2ggKGludCB4KQotKyAg ICAgIHsKLSsgICAgICB9Ci0rICAgIGZ1bmN0aW9uMSAoKTsJCS8vIG1hcmtlciBmb3IgdW50aWwK LSsgIH0KLSsKLSsgIHZvaWQgdW50aWwgKCkKLSsgIHsKLSsgICAgZnVuY3Rpb24xICgpOwotKyAg ICBmdW5jdGlvbjEgKCk7CQkvLyB1bnRpbCBoZXJlCi0rICB9Ci0rCi0rfTsKLStOZXh0T3ZlclRo cm93RGVyaXZhdGVzIG5leHRfY2FzZXM7Ci0rCi0rCi0raW50IG1haW4gKCkgCi0reyAKLSsgIHRy eQotKyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy5mdW5jdGlvbjEgKCk7Ci0rICAgIH0KLSsgIGNh dGNoICguLi4pCi0rICAgIHsKLSsgICAgICAvLyBEaXNjYXJkCi0rICAgIH0KLSsKLSsgIHRyeQot KyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy5mdW5jdGlvbjIgKCk7Ci0rICAgIH0KLSsgIGNhdGNo ICguLi4pCi0rICAgIHsKLSsgICAgICAvLyBEaXNjYXJkCi0rICAgIH0KLSsKLSsgIHRyeQotKyAg ICB7Ci0rICAgICAgLy8gVGhpcyBpcyBkdXBsaWNhdGVkIHNvIHdlIGNhbiBuZXh0IG92ZXIgb25l IGJ1dCBzdGVwIGludG8KLSsgICAgICAvLyBhbm90aGVyLgotKyAgICAgIG5leHRfY2FzZXMuZnVu Y3Rpb24yICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgICAgLy8gRGlz Y2FyZAotKyAgICB9Ci0rCi0rICBuZXh0X2Nhc2VzLmZ1bmN0aW9uMyAoKTsKLSsKLSsgIHRyeQot KyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy5yZXRocm93ICgpOwotKyAgICB9Ci0rICBjYXRjaCAo Li4uKQotKyAgICB7Ci0rICAgICAgLy8gRGlzY2FyZAotKyAgICB9Ci0rCi0rICB0cnkKLSsgICAg ewotKyAgICAgIC8vIEFub3RoZXIgZHVwbGljYXRlIHNvIHdlIGNhbiB0ZXN0ICJmaW5pc2giLgot KyAgICAgIG5leHRfY2FzZXMuZnVuY3Rpb24yICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQot KyAgICB7Ci0rICAgICAgLy8gRGlzY2FyZAotKyAgICB9Ci0rCi0rICAvLyBBbm90aGVyIHRlc3Qg Zm9yICJmaW5pc2giLgotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICBuZXh0X2Nhc2VzLmZpbmlzaCAo KTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICB9Ci0rCi0rICAvLyBUZXN0 IG9mICJ1bnRpbCIuCi0rICB0cnkKLSsgICAgewotKyAgICAgIG5leHRfY2FzZXMuZmluaXNoICgp OwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgIH0KLSsKLSsgIC8vIFRlc3Qg b2YgInVudGlsIiB3aXRoIGFuIGFyZ3VtZW50LgotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICBuZXh0 X2Nhc2VzLnVudGlsICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgIH0K LSsKLSsgIC8vIFRlc3Qgb2YgImFkdmFuY2UiLgotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICBuZXh0 X2Nhc2VzLnVudGlsICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgIH0K LSt9Ci0rCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9n ZGI5NTkzLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvZ2RiOTU5My5leHAJMjAxMC0xMS0xNyAwMjozOToxOS4wMDAwMDAwMDAgKzAxMDAKLUBA IC0wLDAgKzEsMTgyIEBACi0rIyBDb3B5cmlnaHQgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwot KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0r Ci0rCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30K LSsKLStpZiB7IFtza2lwX2NwbHVzX3Rlc3RzXSB9IHsgY29udGludWUgfQotKwotK3NldCB0ZXN0 ZmlsZSAiZ2RiOTU5MyIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYwotK3NldCBiaW5maWxl ICRvYmpkaXIvJHN1YmRpci8kdGVzdGZpbGUKLSsKLSsjIENyZWF0ZSBhbmQgc291cmNlIHRoZSBm aWxlIHRoYXQgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBpbGVyCi0rIyB1c2Vk IHRvIGNvbXBpbGUgdGhlIHRlc3QgY2FzZS4KLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5m aWxlfSAiYysrIl0gewotKyAgICB1bnRlc3RlZCBnZGI5NTkzLmV4cAotKyAgICByZXR1cm4gLTEK LSt9Ci0rCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxl fSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9ICIiIH0gewotKyAgICB1 bnRlc3RlZCBnZGI5NTkzLmV4cAotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBTb21lIHRhcmdl dHMgY2FuJ3QgZG8gZnVuY3Rpb24gY2FsbHMsIHNvIGRvbid0IGV2ZW4gYm90aGVyIHdpdGggdGhp cwotKyMgdGVzdC4KLStpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYixjYW5ub3RfY2FsbF9mdW5j dGlvbnNdIHsKLSsgICAgc2V0dXBfeGZhaWwgIiotKi0qIiA5NTkzCi0rICAgIGZhaWwgIlRoaXMg dGFyZ2V0IGNhbiBub3QgY2FsbCBmdW5jdGlvbnMiCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dk Yl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGly Ci0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAg IHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIG1haW4iCi0rICAgIGNvbnRpbnVlCi0rfSAKLSsKLSsj IFNlZSB3aGV0aGVyIHdlIGhhdmUgdGhlIG5lZWRlZCB1bndpbmRlciBob29rcy4KLStzZXQgb2sg MQotK2dkYl90ZXN0X211bHRpcGxlICJwcmludCBfVW53aW5kX0RlYnVnSG9vayIgImNoZWNrIGZv ciB1bndpbmRlciBob29rIiB7Ci0rICAgIC1yZSAiPSAuKl9VbndpbmRfRGVidWdIb29rLipcclxu JGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICJjaGVjayBmb3IgdW53aW5kZXIgaG9vayIKLSsgICAg fQotKyAgICAtcmUgIk5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQuXHJcbiRnZGJfcHJv bXB0ICQiIHsKLSsJIyBQYXNzIHRoZSB0ZXN0IHNvIHdlIGRvbid0IGdldCBib2d1cyBmYWlscyBp biB0aGUgcmVzdWx0cy4KLSsJcGFzcyAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2siCi0rCXNldCBv ayAwCi0rICAgIH0KLSt9Ci0raWYgeyEkb2t9IHsKLSsgICAgdW50ZXN0ZWQgZ2RiOTU5My5leHAK LSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgU2VlIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9idWd6 aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9OTU5MwotKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAgICIu KmNhdGNoICguLi4pLioiIFwKLSsgICAgIm5leHQgb3ZlciBhIHRocm93IDEiCi0rCi0rZ2RiX3Rl c3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMuZnVuY3Rpb24yLioiIFwKLSsgICJuZXh0IHBh c3QgY2F0Y2ggMSIKLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgICAiLipjYXRjaCAoLi4uKS4q IiBcCi0rICAgICJuZXh0IG92ZXIgYSB0aHJvdyAyIgotKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0r ICAiLipuZXh0X2Nhc2VzLmZ1bmN0aW9uMi4qIiBcCi0rICAibmV4dCBwYXN0IGNhdGNoIDIiCi0r Ci0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsgICIuKmZ1bmN0aW9uMSgpLioiIFwKLSsgICJzdGVwIGlu dG8gZnVuY3Rpb24yIDEiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICAgIi4qY2F0Y2ggKC4u LikuKiIgXAotKyAgICAibmV4dCBvdmVyIGEgdGhyb3cgMyIKLSsKLStnZGJfdGVzdCAibmV4dCIg XAotKyAgIi4qbmV4dF9jYXNlcy5mdW5jdGlvbjMuKiIgXAotKyAgIm5leHQgcGFzdCBjYXRjaCAz IgotKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLnJldGhyb3cuKiIgXAot KyAgICAibmV4dCBvdmVyIGEgdGhyb3cgNCIKLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgIi4q Y2F0Y2ggKC4uLikuKiIgXAotKyAgIm5leHQgb3ZlciBhIHJldGhyb3ciCi0rCi0rZ2RiX3Rlc3Qg Im5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMuZnVuY3Rpb24yLioiIFwKLSsgICJuZXh0IGFmdGVy IGEgcmV0aHJvdyIKLSsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xKCkuKiIg XAotKyAgInN0ZXAgaW50byBmdW5jdGlvbjIgMiIKLSsKLStnZGJfdGVzdCAiZmluaXNoIiBcCi0r ICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAiZmluaXNoIDEiCi0rCi0rZ2RiX3Rlc3QgIm5leHQi IFwKLSsgICIuKm5leHRfY2FzZXMuZmluaXNoICgpLioiIFwKLSsgICJuZXh0IHBhc3QgY2F0Y2gg NCIKLSsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xICgpLioiIFwKLSsgICJz dGVwIGludG8gZmluaXNoIG1ldGhvZCIKLSsKLStnZGJfdGVzdCAiZmluaXNoIiBcCi0rICAiLipj YXRjaCAoLi4uKS4qIiBcCi0rICAiZmluaXNoIDIiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsg ICIuKm5leHRfY2FzZXMuZmluaXNoICgpLioiIFwKLSsgICJuZXh0IHBhc3QgY2F0Y2ggNSIKLSsK LStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xICgpLioiIFwKLSsgICJzdGVwIGlu dG8gZmluaXNoLCBmb3IgdW50aWwiCi0rCi0rZ2RiX3Rlc3QgInVudGlsIiBcCi0rICAiLipjYXRj aCAuaW50IHguKiIgXAotKyAgInVudGlsIHdpdGggbm8gYXJndW1lbnQgMSIKLSsKLStzZXQgbGlu ZSBbZ2RiX2dldF9saW5lX251bWJlciAibWFya2VyIGZvciB1bnRpbCIgJHRlc3RmaWxlLmNjXQot KwotK2dkYl90ZXN0ICJ1bnRpbCAkbGluZSIgXAotKyAgIi4qZnVuY3Rpb24xICgpLioiIFwKLSsg ICJuZXh0IHBhc3QgY2F0Y2ggNiIKLSsKLStnZGJfdGVzdCAidW50aWwiIFwKLSsgICIuKmNhdGNo ICguLi4pLioiIFwKLSsgICJ1bnRpbCB3aXRoIG5vIGFyZ3VtZW50IDIiCi0rCi0rc2V0IGxpbmUg W2dkYl9nZXRfbGluZV9udW1iZXIgInVudGlsIGhlcmUiICR0ZXN0ZmlsZS5jY10KLSsKLStnZGJf dGVzdCAibmV4dCIgXAotKyAgIi4qbmV4dF9jYXNlcy51bnRpbCAoKS4qIiBcCi0rICAibmV4dCBw YXN0IGNhdGNoIDYiCi0rCi0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsgICIuKmZ1bmN0aW9uMSAoKS4q IiBcCi0rICAic3RlcCBpbnRvIHVudGlsIgotKwotK2dkYl90ZXN0ICJ1bnRpbCAkbGluZSIgXAot KyAgIi4qY2F0Y2ggKC4uLikuKiIgXAotKyAgInVudGlsLW92ZXItdGhyb3ciCi0rCi0rZ2RiX3Rl c3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMudW50aWwgKCkuKiIgXAotKyAgIm5leHQgcGFz dCBjYXRjaCA3IgotKwotK2dkYl90ZXN0ICJzdGVwIiBcCi0rICAiLipmdW5jdGlvbjEgKCkuKiIg XAotKyAgInN0ZXAgaW50byB1bnRpbCwgZm9yIGFkdmFuY2UiCi0rCi0rZ2RiX3Rlc3QgImFkdmFu Y2UgJGxpbmUiIFwKLSsgICIuKmNhdGNoICguLi4pLioiIFwKLSsgICJhZHZhbmNlLW92ZXItdGhy b3ciCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pu cGUuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAw MDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5q YXZhL2pucGUuZXhwCTIwMTAtMTEtMTcgMDI6Mzk6MTkuMDAwMDAwMDAwICswMTAwCi1AQCAtMCww ICsxLDc0IEBACi0rIyBDb3B5cmlnaHQgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK LSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raWYgJHRyYWNl bGV2ZWwgdGhlbiB7Ci0rICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rbG9hZF9saWIgImph dmEuZXhwIgotKwotK3NldCB0ZXN0ZmlsZSAiam5wZSIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxl fS5qYXZhCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotK2lm ICB7IFtjb21waWxlX2phdmFfZnJvbV9zb3VyY2UgJHtzcmNkaXJ9LyRzdWJkaXIvJHtzcmNmaWxl fSAke2JpbmZpbGV9ICItZyJdICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29t cGlsZSAke3NyY2Rpcn0vJHN1YmRpci8ke3NyY2ZpbGV9IgotKyAgICByZXR1cm4gLTEKLSt9Ci0r Ci0rIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0r Z2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxl fQotKwotK3NldCBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhayBoZXJlIiAkdGVzdGZp bGUuamF2YV0KLStnZGJfdGVzdCAiYnJlYWsgJHRlc3RmaWxlLmphdmE6JGxpbmUiICIiCi0rCi0r Z2RiX3Rlc3QgInJ1biIgXAotKyAgIi8vIGJyZWFrIGhlcmUuKiIgXAotKyAgInJ1biBqYXZhIG5l eHQtb3Zlci10aHJvdyIKLSsKLSsjIFNlZSB3aGV0aGVyIHdlIGhhdmUgdGhlIG5lZWRlZCB1bndp bmRlciBob29rcy4KLStzZXQgb2sgMQotK2dkYl90ZXN0X211bHRpcGxlICJwcmludCBfVW53aW5k X0RlYnVnSG9vayIgImNoZWNrIGZvciB1bndpbmRlciBob29rIGluIGphdmEiIHsKLSsgICAgLXJl ICI9IC4qX1Vud2luZF9EZWJ1Z0hvb2suKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgImNo ZWNrIGZvciB1bndpbmRlciBob29rIGluIGphdmEiCi0rICAgIH0KLSsgICAgLXJlICJObyBzeW1i b2wgLiogaW4gY3VycmVudCBjb250ZXh0Lj9cclxuJGdkYl9wcm9tcHQgJCIgewotKwkjIFBhc3Mg dGhlIHRlc3Qgc28gd2UgZG9uJ3QgZ2V0IGJvZ3VzIGZhaWxzIGluIHRoZSByZXN1bHRzLgotKwlz ZXR1cF94ZmFpbCAqLSotKgotKwlmYWlsICJjaGVjayBmb3IgdW53aW5kZXIgaG9vayBpbiBqYXZh IgotKwlzZXQgb2sgMAotKyAgICB9Ci0rfQotK2lmIHshJG9rfSB7Ci0rICAgIHVudGVzdGVkIGpu cGUuZXhwCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfdGVzdCAiaGFuZGxlIFNJR1NFR1Yg bm9zdG9wIG5vcHJpbnQiIFwKLSsgICJTSUdTRUdWLipmYXVsdCIgXAotKyAgImRpc2FibGUgU0lH U0VHViBmb3IgbmV4dC1vdmVyLU5QRSIKLSsKLSsjIFRoZSBsaW5lIHdoZXJlIHdlIHN0b3AgZGlm ZmVyIGFjY29yZGluZyB0byBnY2o7IGNoZWNrIGp1c3Qgd2UgZGlkIG5vdCBhbHJlYWR5Ci0rIyBl eGVjdXRlIHRoZSBjYXRjaCBwb2ludC4KLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgIiIgXAot KyAgIm5leHQgb3ZlciBOUEUiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgImNhdGNoIHBvaW50Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiY2F0Y2ggcG9p bnQiICIuKi8vIGNhdGNoIHBvaW50LioiCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIv dGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuamF2YQotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMDEx MTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmphdmEJMjAxMC0xMS0xNyAwMjozOToxOS4w MDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMzggQEAKLSsvLyBUZXN0IG5leHQtb3Zlci1OUEUu Ci0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsK LSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsg ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsgICAqLwotKwotK3B1YmxpYyBj bGFzcyBqbnBlCi0rewotKyAgcHVibGljIHN0YXRpYyBTdHJpbmcgbnBlICgpCi0rICB7Ci0rICAg IHJldHVybiAoKE9iamVjdCkgbnVsbCkudG9TdHJpbmcoKTsKLSsgIH0KLSsKLSsgIHB1YmxpYyBz dGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKQotKyAgewotKyAgICB0cnkKLSsgICAgICB7 Ci0rCVN5c3RlbS5vdXQucHJpbnRsbiAobnBlICgpKTsgLy8gYnJlYWsgaGVyZQotKyAgICAgIH0K LSsgICAgY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG4pCi0rICAgICAgewotKwlTeXN0ZW0u b3V0LnByaW50bG4gKCJzdWNjZXNzIik7IC8vIGNhdGNoIHBvaW50Ci0rICAgICAgfQotKyAgfQot K30KCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDI2MTBkNDguLmUyOTI2 NzMgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0yMywxMSArMjMsMTEg QEAgTmFtZTogZ2RiJXs/X3dpdGhfZGVidWc6LWRlYnVnfQogIyBTZXQgdmVyc2lvbiB0byBjb250 ZW50cyBvZiBnZGIvdmVyc2lvbi5pbi4KICMgTk9URTogdGhlIEZTRiBnZGIgdmVyc2lvbnMgYXJl IG51bWJlcmVkIE4uTSBmb3Igb2ZmaWNpYWwgcmVsZWFzZXMsIGxpa2UgNi4zCiAjIGFuZCwgc2lu Y2UgSmFudWFyeSAyMDA1LCBYLlkuWi5kYXRlIGZvciBkYWlseSBzbmFwc2hvdHMsIGxpa2UgNi4z LjUwLjIwMDUwMTEyICMgKGRhaWx5IHNuYXBzaG90IGZyb20gbWFpbGluZSksIG9yIDYuMy4wLjIw MDQwMTEyIChoZWFkIG9mIHRoZSByZWxlYXNlIGJyYW5jaCkuCi1WZXJzaW9uOiA3LjIuNTAuMjAx MDExMTcKK1ZlcnNpb246IDcuMi41MC4yMDEwMTIzMQogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBj b250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBz dHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVu Y2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDQlez9fd2l0aF91cHN0 cmVhbToudXBzdHJlYW19JXtkaXN0fQorUmVsZWFzZTogNSV7P193aXRoX3Vwc3RyZWFtOi51cHN0 cmVhbX0le2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9u cyBhbmQgR1BMdjIrIGFuZCBHUEx2Misgd2l0aCBleGNlcHRpb25zIGFuZCBHUEwrIGFuZCBMR1BM djIrIGFuZCBHRkRMIGFuZCBCU0QgYW5kIFB1YmxpYyBEb21haW4KIEdyb3VwOiBEZXZlbG9wbWVu dC9EZWJ1Z2dlcnMKQEAgLTIwMywxMSArMjAzLDYgQEAgUGF0Y2gxNjk6IGdkYi02LjMtaWE2NC1z aWdpbGwtMjAwNTExMTUucGF0Y2gKICM9cHVzaCt3b3JrOiBUaGVyZSB3YXMgc29tZSBtYWlsIHRo cmVhZCBhYm91dCBpdCwgdGhpcyBwYXRjaCBtYXkgYmUgYSBoYWNrLgogUGF0Y2gxODg6IGdkYi02 LjUtYnoyMDM2NjEtZW1pdC1yZWxvY3MucGF0Y2gKIAotIyBTZWN1cml0eSBwYXRjaDogYXZvaWQg c3RhY2sgb3ZlcmZsb3dzIGluIGR3YXJmIGV4cHJlc3Npb24gY29tcHV0YXRpb24uCi0jIENWRS0y MDA2LTQxNDYKLSM9cHVzaAotUGF0Y2gxOTA6IGdkYi02LjUtZHdhcmYtc3RhY2stb3ZlcmZsb3cu cGF0Y2gKLQogIyBTdXBwb3J0IFRMUyBzeW1ib2xzICgrYGVycm5vJyBzdWdnZXN0aW9uIGlmIG5v IHB0aHJlYWQgaXMgZm91bmQpIChCWiAxODUzMzcpLgogIz1wdXNoK3dvcms6IEl0IHNob3VsZCBi ZSByZXBsYWNlZCBieSBleGlzdGluZyB1bmNvbW1pdHRlZCBSb2xhbmQncyBnbGliYyBwYXRjaCBm b3IgVExTIHdpdGhvdXQgbGlicHRocmVhZHMuCiBQYXRjaDE5NDogZ2RiLTYuNS1iejE4NTMzNy1y ZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5wYXRjaApAQCAtMjcyLDEwICsyNjcsNiBA QCBQYXRjaDIzNDogZ2RiLTYuNi1iejIzMDAwMC1wb3dlcjYtZGlzYXNzZW1ibHktdGVzdC5wYXRj aAogIz1wdXNoK3dvcms6IFVwc3RyZWFtIHNob3VsZCBoYXZlIGJhY2t3YXJkIGNvbXBhdC4gQVBJ OiBsaWJjLWFscGhhOiA8MjAwNzAxMjcxMDQ1MzkuR0E5NDQ0QC4qPgogUGF0Y2gyMzU6IGdkYi02 LjMtYnoyMzE4MzItb2JzdGFjay0yZ2IucGF0Y2gKIAotIyBGaXggZGVidWdnaW5nIEdEQiBpdHNl bGYgLSB0aGUgY29tcGlsZWQgaW4gc291cmNlIGZpbGVzIHBhdGhzIChCWiAyMjU3ODMpLgotIz1w dXNoCi1QYXRjaDI0MTogZ2RiLTYuNi1iejIyNTc4My1nZGItZGVidWdpbmZvLXBhdGhzLnBhdGNo Ci0KICMgQWxsb3cgcnVubmluZyBgL3Vzci9iaW4vZ2NvcmUnIHdpdGggcHJvdmlkZWQgYnV0IGlu YWNjZXNzaWJsZSB0dHkgKEJaIDIyOTUxNykuCiAjPWZlZG9yYXRlc3QKIFBhdGNoMjQ1OiBnZGIt Ni42LWJ6MjI5NTE3LWdjb3JlLXdpdGhvdXQtdGVybWluYWwucGF0Y2gKQEAgLTI5MiwxMCArMjgz LDYgQEAgUGF0Y2gyNTQ6IGdkYi02LjYtdGVzdHN1aXRlLXRpbWVvdXRzLnBhdGNoCiAjPWZlZG9y YXRlc3QKIFBhdGNoMjU4OiBnZGItNi42LWJ6MjM3NTcyLXBwYy1hdG9taWMtc2VxdWVuY2UtdGVz dC5wYXRjaAogCi0jIExpbmsgd2l0aCBsaWJyZWFkbGluZSBwcm92aWRlZCBieSB0aGUgb3BlcmF0 aW5nIHN5c3RlbS4KLSM9cHVzaAotUGF0Y2gyNjE6IGdkYi02LjYtcmVhZGxpbmUtc3lzdGVtLnBh dGNoCi0KICMgVGVzdCBrZXJuZWwgVkRTTyBkZWNvZGluZyB3aGlsZSBhdHRhY2hpbmcgdG8gYW4g aTM4NiBwcm9jZXNzLgogIz1mZWRvcmF0ZXN0CiBQYXRjaDI2MzogZ2RiLTYuMy1hdHRhY2gtc2Vl LXZkc28tdGVzdC5wYXRjaApAQCAtNTE2LDE0ICs1MDMsNiBAQCBQYXRjaDUxMDogZ2RiLWJ6NTky MDMxLXNpZ2luZm8tbG9zdC00b2Y1LnBhdGNoCiAjPXB1c2gKIFBhdGNoNTExOiBnZGItYno1OTIw MzEtc2lnaW5mby1sb3N0LTVvZjUucGF0Y2gKIAotIyBGaXggY3Jhc2ggb24gQ1RSTC1DIHdoaWxl IHJlYWRpbmcgYW4gRUxGIHN5bWJvbCBmaWxlIChCWiA2NDI4NzkpLgotIz1wdXNoCi1QYXRjaDUy MDogZ2RiLWJ6NjQyODc5LWVsZnJlYWQtc2lnaW50LXN0YWxlLnBhdGNoCi0KLSMgRml4IG5leHQv ZmluaXNoL2V0YyAtdnMtIGV4Y2VwdGlvbnMgKFRvbSBUcm9tZXkpLgotIz1wdXNoCi1QYXRjaDUy NTogZ2RiLW5leHQtb3Zlci10aHJvdy5wYXRjaAotCiAjIFZlcmlmeSBHREIgUHl0aG9uIGJ1aWx0 LWluIGZ1bmN0aW9uIGdkYi5zb2xpYl9hZGRyZXNzIGV4aXN0cyAoQlogIyA2MzQxMDgpLgogUGF0 Y2g1MjY6IGdkYi1iejYzNDEwOC1zb2xpYl9hZGRyZXNzLnBhdGNoCiAKQEAgLTY4OSw3ICs2Njgs NiBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9w LWV4cC5jCiAlcGF0Y2gxNjQgLXAxCiAlcGF0Y2gxNjkgLXAxCiAlcGF0Y2gxODggLXAxCi0lcGF0 Y2gxOTAgLXAxCiAlcGF0Y2gxOTQgLXAxCiAlcGF0Y2gxOTYgLXAxCiAlcGF0Y2gxOTkgLXAxCkBA IC03MDUsMTMgKzY4MywxMSBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9v YmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2gyMzEgLXAxCiAlcGF0Y2gyMzQgLXAxCiAlcGF0 Y2gyMzUgLXAxCi0lcGF0Y2gyNDEgLXAxCiAlcGF0Y2gyNDUgLXAxCiAlcGF0Y2gyNDcgLXAxCiAl cGF0Y2gyNTQgLXAxCiAlcGF0Y2gyNTggLXAxCiAlcGF0Y2gyNjAgLXAxCi0lcGF0Y2gyNjEgLXAx CiAlcGF0Y2gyNjMgLXAxCiAlcGF0Y2gyNjUgLXAxCiAlcGF0Y2gyNjYgLXAxCkBAIC03NjgsOCAr NzQ0LDYgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBn ZGIvcC1leHAuYwogJXBhdGNoNTA0IC1wMQogJXBhdGNoNTEwIC1wMQogJXBhdGNoNTExIC1wMQot JXBhdGNoNTIwIC1wMQotJXBhdGNoNTI1IC1wMQogJXBhdGNoNTI2IC1wMQogCiAlcGF0Y2gzOTMg LXAxCkBAIC0xMTQ3LDYgKzExMjEsMTYgQEAgZmkKICVlbmRpZgogCiAlY2hhbmdlbG9nCisqIFNh dCBKYW4gIDEgMjAxMSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4g LSA3LjIuNTAuMjAxMDEyMzEtNS5mYzE1CistIFJlYmFzZSB0byBGU0YgR0RCIDcuMi41MC4yMDEw MTIzMSAod2hpY2ggaXMgYSA3LjMgcHJlLXJlbGVhc2UpLgorLSBSZW1vdmUgZ2RiLTYuMy1idC1w YXN0LXplcm8tMjAwNTEyMDEucGF0Y2gsIGdkYi1hcmNoZXItYWRhLnBhdGNoIGFuZAorICBnZGIt Ni4zLWZyYW1lcGN6ZXJvLTIwMDQwOTI3LnBhdGNoIGFscmVhZHkgcmVtb3ZlZCBmcm9tIC5zcGVj IGJlZm9yZS4KKy0gUmVtb3ZlIGdkYi02LjUtZHdhcmYtc3RhY2stb3ZlcmZsb3cucGF0Y2gsIHVw c3RyZWFtZWQgKFRvbSBUcm9tZXkpLgorLSBSZW1vdmUgZ2RiLTYuNi1iejIyNTc4My1nZGItZGVi dWdpbmZvLXBhdGhzLnBhdGNoLCB1cHN0cmVhbWVkIChUb20gVHJvbWV5KS4KKy0gUmVtb3ZlIGdk Yi02LjYtcmVhZGxpbmUtc3lzdGVtLnBhdGNoLCByZWltcGxlbWVudGVkIHVwc3RyZWFtIChUb20g VHJvbWV5KS4KKy0gUmVtb3ZlIGdkYi1iejY0Mjg3OS1lbGZyZWFkLXNpZ2ludC1zdGFsZS5wYXRj aCwgdXBzdHJlYW1lZCAoSmFuIEtyYXRvY2h2aWwpLgorLSBSZW1vdmUgZ2RiLW5leHQtb3Zlci10 aHJvdy5wYXRjaCwgdXBzdHJlYW1lZCAoVG9tIFRyb21leSkuCisKICogTW9uIERlYyAyNyAyMDEw IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMi41MC4yMDEw MTExNy00LmZjMTUKIC0gUHJvdmlkZSBzdHViICUle19zeXNjb25mZGlyfS9nZGJpbml0IChCWiA2 NTEyMzIpLgogCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggYzVlYjlkZS4u MWQxMTliNiAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsxIEBACi1i MTMxNDNjN2M3ZTcwZjkyOWM4NmMzZjM2MzI0NzkwOSAgZ2RiLTcuMi41MC4yMDEwMTExNy50YXIu YnoyCitiYWMzNjE0MzQ4MzBkZGMzZTgzYzQwZTE4N2I2MGE5NiAgZ2RiLTcuMi41MC4yMDEwMTIz MS50YXIuYnoyCg==