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] gdb-17.2-rebase-f44: Rebase to FSF GDB 7.4.50.20120703. Date: Sat, 27 Jun 2026 23:55:45 GMT Message-ID: <178260454551.1.5415021640490451759.rpms-gdb-11eae308064f@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 11eae308064f98cde92bd70f482d6ad452dd3355 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogMTFlYWUzMDgwNjRmOThjZGU5MmJkNzBmNDgyZDZhZDQ1MmRk MzM1NQogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMi0wNy0wM1QyMDo1NDowNSswMjow MAogICAgICAgICAgICBTdGF0cyAgOiArNTA4MS8tMzc2NiBpbiAyNCBmaWxlKHMpCiAgICAgICAg ICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvMTFl YWUzMDgwNjRmOThjZGU5MmJkNzBmNDgyZDZhZDQ1MmRkMzM1NT9icmFuY2g9Z2RiLTE3LjItcmVi YXNlLWY0NAoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBSZWJhc2UgdG8gRlNGIEdEQiA3 LjQuNTAuMjAxMjA3MDMuCgotIFthcmNoZXItdHJvbWV5LWR3ei1tdWx0aWZpbGUtcmViYXNlXSBN ZXJnZSBuZXcgYnJhbmNoIChUb20gVHJvbWV5KS4KLSBbYXJtXSA8LS13aXRoIHRlc3RzdWl0ZT46 IERpc2FibGUgZnBjIEJ1aWxkUmVxdWlyZXMgYXMgaXQgaXMgbm90IHlldCBidWlsdC4KLSBSZXZl cnQgZnVuY3Rpb24gcmV0dXJuaW5nIHBvaW50ZXIgZml4IChQUiA5NTE0KSByZWdyZXNzaW5nIEZl ZG9yYSBlcnJubyBwYXRjaC4KCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25v cmUKaW5kZXggMDIxMjk2NC4uMjkzNmYxYyAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8u Z2l0aWdub3JlCkBAIC0xLDIgKzEsMiBAQAogL2xpYnN0ZGMrKy12My1weXRob24tcjE1NTk3OC50 YXIuYnoyCi0vZ2RiLTcuNC41MC4yMDEyMDYwMy50YXIuYnoyCisvZ2RiLTcuNC41MC4yMDEyMDcw My50YXIuYnoyCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gg Yi9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAppbmRleCBjZmZiMDdiLi43NzI4MDcw IDEwMDY0NAotLS0gYS9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAorKysgYi9nZGIt Ni4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaApAQCAtMTEsMTEgKzExLDExIEBACiAKICAgICAg ICAgKiBnZGIudGV4aW5mbyAoRmlsZSBPcHRpb25zKTogRG9jdW1lbnQgLS1yZWFkbmV2ZXIuCiAK LUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9kb2MvZ2RiLnRleGluZm8KK0luZGV4OiBn ZGItNy40LjUwLjIwMTIwNzAzL2dkYi9kb2MvZ2RiLnRleGluZm8KID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA2LTAyIDE4 OjE2OjM2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2RvYy9n ZGIudGV4aW5mbwkyMDEyLTA2LTAyIDE4OjI1OjIwLjMwMDI1NDAxOSArMDIwMAotQEAgLTEwMjAs NiArMTAyMCwxMiBAQCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUncyBlbnRpcmUgc3ltYm9sIHRhCist LS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNy0w MyAxNzozMDowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9k b2MvZ2RiLnRleGluZm8JMjAxMi0wNy0wMyAxNzozMTo0MC42OTU2NDI0NDkgKzAyMDAKK0BAIC0x MDIzLDYgKzEwMjMsMTIgQEAgUmVhZCBlYWNoIHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJvbCB0 YQogIHRoZSBkZWZhdWx0LCB3aGljaCBpcyB0byByZWFkIGl0IGluY3JlbWVudGFsbHkgYXMgaXQg aXMgbmVlZGVkLgogIFRoaXMgbWFrZXMgc3RhcnR1cCBzbG93ZXIsIGJ1dCBtYWtlcyBmdXR1cmUg b3BlcmF0aW9ucyBmYXN0ZXIuCiAgCkBAIC0yOCwxMCArMjgsMTAgQEAgSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL2RvYy9nZGIudGV4aW5mbwogIEBlbmQgdGFibGUKICAKICBAbm9kZSBN b2RlIE9wdGlvbnMKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9tYWluLmMKK0luZGV4 OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9tYWluLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40 LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA2LTAyIDE4OjE2OjM2LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL21haW4uYwkyMDEyLTA2LTAyIDE4 OjI1OjIwLjMwMjI1NDAxOSArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIv bWFpbi5jCTIwMTItMDctMDMgMTc6MzA6MDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41 MC4yMDEyMDcwMy9nZGIvbWFpbi5jCTIwMTItMDctMDMgMTc6MzE6NDAuNjk2NjQyNDQ4ICswMjAw CiBAQCAtNDE0LDYgKzQxNCw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICAgICAg eyJ4ZGIiLCBub19hcmd1bWVudCwgJnhkYl9jb21tYW5kcywgMX0sCiAgICAgICAgeyJkYngiLCBu b19hcmd1bWVudCwgJmRieF9jb21tYW5kcywgMX0sCkBAIC00OCwxMSArNDgsMTEgQEAgSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL21haW4uYwogICIpLCBzdHJlYW0pOwogICAgZnB1dHNf dW5maWx0ZXJlZCAoXygiXAogICAgLS1zZT1GSUxFICAgICAgICAgIFVzZSBGSUxFIGFzIHN5bWJv bCBmaWxlIGFuZCBleGVjdXRhYmxlIGZpbGUuXG5cCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvc3ltZmlsZS5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvc3ltZmlsZS5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9zeW1maWxlLmMJ MjAxMi0wNS0zMSAyMDo0NDo0OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi9zeW1maWxlLmMJMjAxMi0wNi0wMiAxODoyNToyMC4zMzQyNTQwMTMgKzAyMDAKLUBA IC04MCw2ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91c2Vyc19jbGVhbnVwICgK Ky0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDEyLTA3LTAzIDE3 OjMwOjA3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3N5bWZp bGUuYwkyMDEyLTA3LTAzIDE3OjMxOjQwLjY5NzY0MjQ0NyArMDIwMAorQEAgLTgxLDYgKzgxLDcg QEAgc3RhdGljIHZvaWQgY2xlYXJfc3ltdGFiX3VzZXJzX2NsZWFudXAgKAogIAogIC8qIEdsb2Jh bCB2YXJpYWJsZXMgb3duZWQgYnkgdGhpcyBmaWxlLiAgKi8KICBpbnQgcmVhZG5vd19zeW1ib2xf ZmlsZXM7CS8qIFJlYWQgZnVsbCBzeW1ib2xzIGltbWVkaWF0ZWx5LiAgKi8KQEAgLTYwLDE5ICs2 MCwxOSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc3ltZmlsZS5jCiAgCiAgLyog RXh0ZXJuYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgcmVmZXJlbmNlZC4gICovCiAgCi1JbmRl eDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZHdhcmYycmVhZC5jCitJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDcwMy9nZGIvZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDEyMDYwMi5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMi0wNi0wMiAxODoxNjozNi4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9kd2FyZjJyZWFkLmMJMjAxMi0w Ni0wMiAxODoyNTozMi44MzcyNTA1MzUgKzAyMDAKLUBAIC02Myw2ICs2Myw3IEBACi0gI2luY2x1 ZGUgInZhbHByaW50LmgiCi0gI2luY2x1ZGUgImdkYmNvcmUuaCIgLyogZm9yIGdudXRhcmdldCAq LworLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTItMDct MDMgMTc6MzA6MDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIv ZHdhcmYycmVhZC5jCTIwMTItMDctMDMgMTc6MzE6NTMuNDIxNjI3MTUzICswMjAwCitAQCAtNjUs NiArNjUsNyBAQAorICNpbmNsdWRlICJnZGIvZ2RiLWluZGV4LmgiCiAgI2luY2x1ZGUgPGN0eXBl Lmg+CisgI2luY2x1ZGUgImdkYl9iZmQuaCIKICsjaW5jbHVkZSAidG9wLmgiCiAgCiAgI2luY2x1 ZGUgPGZjbnRsLmg+CiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC0xNTE0LDggKzE1MTUs OSBAQCBkd2FyZjJfaGFzX2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCitAQCAtMTU4Nyw4 ICsxNTg4LDkgQEAgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgbmFtZXMpOwogICAgICAgIGR3YXJm Ml9wZXJfb2JqZmlsZS0+b2JqZmlsZSA9IG9iamZpbGU7CiAgICAgIH0KQEAgLTg0LDEwICs4NCwx MCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZHdhcmYycmVhZC5jCiAgfQogIAog IC8qIFdoZW4gbG9hZGluZyBzZWN0aW9ucywgd2UgbG9vayBlaXRoZXIgZm9yIHVuY29tcHJlc3Nl ZCBzZWN0aW9uIG9yIGZvcgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3RvcC5oCitJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdG9wLmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3RvcC5oCTIwMTItMDEtMjMgMTg6MTI6MzAuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdG9wLmgJMjAxMi0wNi0wMiAx ODoyNToyMC4zNjcyNTQwMDEgKzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2Ri L3RvcC5oCTIwMTItMDEtMjMgMTg6MTI6MzAuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41 MC4yMDEyMDcwMy9nZGIvdG9wLmgJMjAxMi0wNy0wMyAxNzozMTo0MC43MDA2NDI0NDQgKzAyMDAK IEBAIC02MCw2ICs2MCw3IEBAIGV4dGVybiB2b2lkIHNldF9wcm9tcHQgKGNvbnN0IGNoYXIgKnMp OwogIAogIC8qIEZyb20gcmFuZG9tIHBsYWNlcy4gICovCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNS1i ejIxNjcxMS1jbG9uZS1pcy1vdXRlcm1vc3QucGF0Y2ggYi9nZGItNi41LWJ6MjE2NzExLWNsb25l LWlzLW91dGVybW9zdC5wYXRjaAppbmRleCA3MDRlMjlhLi40MWE4ODdhIDEwMDY0NAotLS0gYS9n ZGItNi41LWJ6MjE2NzExLWNsb25lLWlzLW91dGVybW9zdC5wYXRjaAorKysgYi9nZGItNi41LWJ6 MjE2NzExLWNsb25lLWlzLW91dGVybW9zdC5wYXRjaApAQCAtMjMsMTAgKzIzLDEwIEBAIGluc3Rl YWQuCiAKIAlQb3J0IHRvIEdEQi02LjcuCiAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dk Yi9hbWQ2NC1saW51eC10ZGVwLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9hbWQ2 NC1saW51eC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcv Z2RiL2FtZDY0LWxpbnV4LXRkZXAuYwkyMDEyLTA2LTAyIDIxOjA1OjQ1LjM1MjI4MDEyOCArMDIw MAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYwkyMDEyLTA2 LTAyIDIxOjA2OjI1LjUzNjI2NTMyNSArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3Jp Zy9nZGIvYW1kNjQtbGludXgtdGRlcC5jCTIwMTItMDYtMTMgMjI6MzY6NDguMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvYW1kNjQtbGludXgtdGRlcC5jCTIwMTIt MDctMDMgMTc6MzI6NDYuNTQ3NTYzMzYzICswMjAwCiBAQCAtMjcxLDYgKzI3MSw4MCBAQCBhbWQ2 NF9saW51eF9yZWdpc3Rlcl9yZWdncm91cF9wIChzdHJ1Y3QKICAKICAvKiBTZXQgdGhlIHByb2dy YW0gY291bnRlciBmb3IgcHJvY2VzcyBQVElEIHRvIFBDLiAgKi8KQEAgLTEwOCwyMCArMTA4LDIw IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMKICBz dGF0aWMgdm9pZAogIGFtZDY0X2xpbnV4X3dyaXRlX3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBDT1JFX0FERFIgcGMpCiAgewotQEAgLTEzMzAsNiArMTQwNCw4IEBAIGFtZDY0X2xpbnV4 X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmYKK0BAIC0xNTQ3LDYgKzE2MjEsOCBAQCBhbWQ2 NF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mCiAgCi0gICB0ZGVwLT54c2F2ZV94 Y3IwX29mZnNldCA9IEkzODZfTElOVVhfWFNBVkVfWENSMF9PRkZTRVQ7CisgICBhbWQ2NF9saW51 eF9pbml0X2FiaV9jb21tb24gKGluZm8sIGdkYmFyY2gpOwogIAogKyAgdGRlcC0+b3V0ZXJtb3N0 X2ZyYW1lX3AgPSBhbWQ2NF9saW51eF9vdXRlcm1vc3RfZnJhbWU7CiArCiAgICAvKiBHTlUvTGlu dXggdXNlcyBTVlI0LXN0eWxlIHNoYXJlZCBsaWJyYXJpZXMuICAqLwogICAgc2V0X3NvbGliX3N2 cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cwogICAgICAoZ2RiYXJjaCwgc3ZyNF9scDY0X2ZldGNo X2xpbmtfbWFwX29mZnNldHMpOwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2FtZDY0 LXRkZXAuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2FtZDY0LXRkZXAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvYW1kNjQtdGRlcC5jCTIw MTItMDYtMDIgMjE6MDU6NDUuMzUyMjgwMTI4ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvYW1kNjQtdGRlcC5jCTIwMTItMDYtMDIgMjE6MDY6MDAuNDM3Mjc0NTc0ICswMjAwCi1A QCAtMjEzOCw2ICsyMTM4LDcgQEAgYW1kNjRfZnJhbWVfdW53aW5kX3N0b3BfcmVhc29uIChzdHJ1 Y3QgZgorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvYW1kNjQtdGRlcC5jCTIwMTIt MDYtMTYgMTc6MjA6MjIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9n ZGIvYW1kNjQtdGRlcC5jCTIwMTItMDctMDMgMTc6MzI6MTIuMzM1NjA0NDE1ICswMjAwCitAQCAt MjMyNCw2ICsyMzI0LDcgQEAgYW1kNjRfZnJhbWVfdW53aW5kX3N0b3BfcmVhc29uIChzdHJ1Y3Qg ZgogIHsKICAgIHN0cnVjdCBhbWQ2NF9mcmFtZV9jYWNoZSAqY2FjaGUgPQogICAgICBhbWQ2NF9m cmFtZV9jYWNoZSAodGhpc19mcmFtZSwgdGhpc19jYWNoZSk7CkBAIC0xMjksNyArMTI5LDcgQEAg SW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2FtZDY0LXRkZXAuYwogIAogICAgaWYgKCFj YWNoZS0+YmFzZV9wKQogICAgICByZXR1cm4gVU5XSU5EX1VOQVZBSUxBQkxFOwotQEAgLTIxNDYs NiArMjE0NywxMCBAQCBhbWQ2NF9mcmFtZV91bndpbmRfc3RvcF9yZWFzb24gKHN0cnVjdCBmCitA QCAtMjMzMiw2ICsyMzMzLDEwIEBAIGFtZDY0X2ZyYW1lX3Vud2luZF9zdG9wX3JlYXNvbiAoc3Ry dWN0IGYKICAgIGlmIChjYWNoZS0+YmFzZSA9PSAwKQogICAgICByZXR1cm4gVU5XSU5EX09VVEVS TU9TVDsKICAKQEAgLTE0MCw3ICsxNDAsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvYW1kNjQtdGRlcC5jCiAgICByZXR1cm4gVU5XSU5EX05PX1JFQVNPTjsKICB9CiAgCi1AQCAt MjE1NSw2ICsyMTYwLDcgQEAgYW1kNjRfZnJhbWVfdGhpc19pZCAoc3RydWN0IGZyYW1lX2luZm8g KgorQEAgLTIzNDEsNiArMjM0Niw3IEBAIGFtZDY0X2ZyYW1lX3RoaXNfaWQgKHN0cnVjdCBmcmFt ZV9pbmZvICoKICB7CiAgICBzdHJ1Y3QgYW1kNjRfZnJhbWVfY2FjaGUgKmNhY2hlID0KICAgICAg YW1kNjRfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOwpAQCAtMTQ4LDcgKzE0 OCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9hbWQ2NC10ZGVwLmMKICAKICAg IGlmICghY2FjaGUtPmJhc2VfcCkKICAgICAgcmV0dXJuOwotQEAgLTIxNjMsNiArMjE2OSwxMCBA QCBhbWQ2NF9mcmFtZV90aGlzX2lkIChzdHJ1Y3QgZnJhbWVfaW5mbyAqCitAQCAtMjM0OSw2ICsy MzU1LDEwIEBAIGFtZDY0X2ZyYW1lX3RoaXNfaWQgKHN0cnVjdCBmcmFtZV9pbmZvICoKICAgIGlm IChjYWNoZS0+YmFzZSA9PSAwKQogICAgICByZXR1cm47CiAgCkBAIC0xNTksMTEgKzE1OSwxMSBA QCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvYW1kNjQtdGRlcC5jCiAgICAoKnRoaXNf aWQpID0gZnJhbWVfaWRfYnVpbGQgKGNhY2hlLT5iYXNlICsgMTYsIGNhY2hlLT5wYyk7CiAgfQog IAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2kzODYtdGRlcC5jCitJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDcwMy9nZGIvaTM4Ni10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40 LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2kzODYtdGRlcC5jCTIwMTItMDYtMDIgMjE6MDU6NDUuMzUy MjgwMTI4ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvaTM4Ni10ZGVwLmMJMjAx Mi0wNi0wMiAyMTowNjowMC40NjYyNzQ1NjIgKzAyMDAKLUBAIC03NjM5LDYgKzc2MzksOSBAQCBp Mzg2X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpCistLS0gZ2RiLTcuNC41MC4y MDEyMDcwMy5vcmlnL2dkYi9pMzg2LXRkZXAuYwkyMDEyLTA2LTE4IDE5OjMxOjM0LjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2kzODYtdGRlcC5jCTIwMTItMDct MDMgMTc6MzI6MTIuMzM5NjA0NDA5ICswMjAwCitAQCAtNzY1NSw2ICs3NjU1LDkgQEAgaTM4Nl9n ZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQogIAogICAgdGRlcC0+eHNhdmVfeGNy MF9vZmZzZXQgPSAtMTsKICAKQEAgLTE3MywxMCArMTczLDEwIEBAIEluZGV4OiBnZGItNy40LjUw LjIwMTIwNjAyL2dkYi9pMzg2LXRkZXAuYwogICAgdGRlcC0+cmVjb3JkX3JlZ21hcCA9IGkzODZf cmVjb3JkX3JlZ21hcDsKICAKICAgIHNldF9nZGJhcmNoX2xvbmdfbG9uZ19hbGlnbl9iaXQgKGdk YmFyY2gsIDMyKTsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9pMzg2LXRkZXAuaAor SW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2kzODYtdGRlcC5oCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9pMzg2LXRkZXAuaAkyMDEyLTA2LTAyIDIx OjA1OjQ1LjM1MjI4MDEyOCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2kzODYt dGRlcC5oCTIwMTItMDYtMDIgMjE6MDY6MDAuNDg2Mjc0NTY4ICswMjAwCistLS0gZ2RiLTcuNC41 MC4yMDEyMDcwMy5vcmlnL2dkYi9pMzg2LXRkZXAuaAkyMDEyLTA2LTEzIDIyOjI5OjE1LjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2kzODYtdGRlcC5oCTIwMTIt MDctMDMgMTc6MzI6MTIuMzQwNjA0NDA4ICswMjAwCiBAQCAtMjE5LDYgKzIxOSw5IEBAIHN0cnVj dCBnZGJhcmNoX3RkZXAKICAgIGludCAoKmkzODZfc3lzZW50ZXJfcmVjb3JkKSAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSk7CiAgICAvKiBQYXJzZSBzeXNjYWxsIGFyZ3MuICAqLwpAQCAtMTg3 LDEwICsxODcsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2kzODYtdGRlcC5o CiAgfTsKICAKICAvKiBGbG9hdGluZy1wb2ludCByZWdpc3RlcnMuICAqLwotSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjA2MDIvZ2RiL2lhNjQtdGRlcC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcw My9nZGIvaWE2NC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9y aWcvZ2RiL2lhNjQtdGRlcC5jCTIwMTItMDYtMDIgMjE6MDU6NDUuMzUyMjgwMTI4ICswMjAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvaWE2NC10ZGVwLmMJMjAxMi0wNi0wMiAyMTowNjow MC40OTAyNzQ1NTIgKzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL2lhNjQt dGRlcC5jCTIwMTItMDctMDMgMTc6MzA6MDkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41 MC4yMDEyMDcwMy9nZGIvaWE2NC10ZGVwLmMJMjAxMi0wNy0wMyAxNzozMjoxMi4zNDM2MDQ0MDUg KzAyMDAKIEBAIC0yMTc2LDYgKzIxNzYsMTM4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZnJhbWVf dW53aW5kIGlhNjRfZnIKICAgIGRlZmF1bHRfZnJhbWVfc25pZmZlcgogIH07CkBAIC0zMzgsMTAg KzMzOCwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvaWE2NC10ZGVwLmMKICAj aWZkZWYgSEFWRV9MSUJVTldJTkRfSUE2NF9ICiAgICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2lu ZGVyIChnZGJhcmNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlhNjRfbGli dW53aW5kX3NpZ3RyYW1wX2ZyYW1lX3Vud2luZCk7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2J0LWNsb25lLXN0b3AuYworSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9idC1jbG9uZS1zdG9wLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv YnQtY2xvbmUtc3RvcC5jCTIwMTItMDYtMDIgMjE6MDY6MDAuNTE0Mjc0NTQ0ICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2J0LWNsb25lLXN0 b3AuYwkyMDEyLTA3LTAzIDE3OjMyOjEyLjM0NDYwNDQwNCArMDIwMAogQEAgLTAsMCArMSwzOSBA QAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiAr CkBAIC0zODIsMTAgKzM4MiwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL2J0LWNsb25lLXN0b3AuYwogKwlmb3IgKDs7KQogKwkJcGF1c2Uo KTsKICt9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL2J0LWNsb25lLXN0b3AuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL2J0LWNsb25lLXN0b3AuZXhwCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2J0LWNsb25lLXN0b3AuZXhwCTIw MTItMDYtMDIgMjE6MDY6MDAuNTE1Mjc0NTQ3ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcw My9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2J0LWNsb25lLXN0b3AuZXhwCTIwMTItMDctMDMg MTc6MzI6MTIuMzQ0NjA0NDA0ICswMjAwCiBAQCAtMCwwICsxLDYxIEBACiArIyBDb3B5cmlnaHQg MjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKCmRpZmYgLS1naXQgYS9nZGIt Ni42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxv Y2F0ZS1jb3JlLWFzLWFyZy5wYXRjaAppbmRleCA5Njg3NzEyLi5jMjhiMDAwIDEwMDY0NAotLS0g YS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoCisrKyBiL2dkYi02LjYt YnVpbGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKQEAgLTU4LDEwICs1OCwxMCBAQCBIdHRw Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDUxNy5odG1sCiAJ KiBleGVjLmMgKGV4ZWNfZmlsZV9hdHRhY2gpOiBQcmludCBhIG1vcmUgdXNlZnVsIGVycm9yIG1l c3NhZ2UgaWYgdGhlCiAJdXNlciBkaWQgImdkYiBjb3JlIi4KIAotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL2V4Y2VwdGlvbnMuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2Ri L2V4Y2VwdGlvbnMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9n ZGIvZXhjZXB0aW9ucy5oCTIwMTItMDEtMDQgMDk6MTc6MDEuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZXhjZXB0aW9ucy5oCTIwMTItMDYtMDIgMTk6NTk6MjIu MTk1MTE0MDUyICswMjAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9leGNlcHRp b25zLmgJMjAxMi0wMS0wNCAwOToxNzowMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUw LjIwMTIwNzAzL2dkYi9leGNlcHRpb25zLmgJMjAxMi0wNy0wMyAxNzozNjoyNy44NDAyOTcyNjQg KzAyMDAKIEBAIC04Niw2ICs4Niw5IEBAIGVudW0gZXJyb3JzIHsKICAgIC8qIERXX09QX0dOVV9l bnRyeV92YWx1ZSByZXNvbHZpbmcgZmFpbGVkLiAgKi8KICAgIE5PX0VOVFJZX1ZBTFVFX0VSUk9S LApAQCAtNzIsMTkgKzcyLDE5IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9leGNl cHRpb25zLmgKICAgIC8qIEFkZCBtb3JlIGVycm9ycyBoZXJlLiAgKi8KICAgIE5SX0VSUk9SUwog IH07Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZXhlYy5jCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDcwMy9nZGIvZXhlYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEy MDYwMi5vcmlnL2dkYi9leGVjLmMJMjAxMi0wNS0yOSAxNjoyMzozOS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9leGVjLmMJMjAxMi0wNi0wMiAxOTo1OToyMi4x OTYxMTQwNTIgKzAyMDAKLUBAIC0zMyw2ICszMyw3IEBACi0gI2luY2x1ZGUgImFyY2gtdXRpbHMu aCIKKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL2V4ZWMuYwkyMDEyLTA3LTAzIDE3 OjMwOjA3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2V4ZWMu YwkyMDEyLTA3LTAzIDE3OjM3OjI3Ljc3NzIyNTE3NSArMDIwMAorQEAgLTM0LDYgKzM0LDcgQEAK ICAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCiAgI2luY2x1ZGUgInByb2dzcGFjZS5oIgorICNpbmNs dWRlICJnZGJfYmZkLmgiCiArI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKICAKICAjaW5jbHVkZSA8 ZmNudGwuaD4KICAjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIKLUBAIC0yNTEsMTIgKzI1 MiwyNyBAQCBleGVjX2ZpbGVfYXR0YWNoIChjaGFyICpmaWxlbmFtZSwgaW50IGZyCitAQCAtMjQ1 LDEyICsyNDYsMjcgQEAgZXhlY19maWxlX2F0dGFjaCAoY2hhciAqZmlsZW5hbWUsIGludCBmcgog IAogICAgICAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdF9tYXRjaGVzIChleGVjX2JmZCwgYmZkX29i amVjdCwgJm1hdGNoaW5nKSkKICAJewpAQCAtMTE0LDExICsxMTQsMTEgQEAgSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjA2MDIvZ2RiL2V4ZWMuYwogKwkJICAgZ2RiX2JmZF9lcnJtc2cgKGJmZF9nZXRf ZXJyb3IgKCksIG1hdGNoaW5nKSk7CiAgCX0KICAKLSAgICAgICAvKiBGSVhNRSAtIFRoaXMgc2hv dWxkIG9ubHkgYmUgcnVuIGZvciBSUzYwMDAsIGJ1dCB0aGUgaWZkZWYgaXMgYSBwb29yCi1JbmRl eDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvbWFpbi5jCisgICAgICAgZ2RiX2JmZF9zdGFzaF9m aWxlbmFtZSAoZXhlY19iZmQpOworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL21haW4u YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvbWFpbi5jCTIw MTItMDYtMDIgMTk6MTE6NTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvbWFpbi5jCTIwMTItMDYtMDIgMTk6NTk6NDIuMDgyMTA3NDk5ICswMjAwCistLS0gZ2Ri LTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9tYWluLmMJMjAxMi0wNy0wMyAxNzozMTo0MC4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9tYWluLmMJMjAxMi0wNy0w MyAxNzozNjoyNy44NDMyOTcyNjEgKzAyMDAKIEBAIC0yNjYsNiArMjY2LDM2IEBAIHR5cGVkZWYg c3RydWN0IGNtZGFyZyB7CiAgLyogRGVmaW5lIHR5cGUgVkVDIChjbWRhcmdfcykuICAqLwogIERF Rl9WRUNfTyAoY21kYXJnX3MpOwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUu cGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCmluZGV4IDBhOTYwMzUuLmYwZGI1 ZDEgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKKysrIGIvZ2RiLTYu Ni1idWlsZGlkLWxvY2F0ZS5wYXRjaApAQCAtMSwxOCArMSwxOCBAQAotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL2NvcmVsb3cuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2Ri L2NvcmVsb3cuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIv Y29yZWxvdy5jCTIwMTItMDYtMDIgMjE6MDc6MDMuNjk1MjUxMjcyICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvY29yZWxvdy5jCTIwMTItMDYtMDIgMjE6MDc6MTYuNDY0MjQ2NTY5 ICswMjAwCi1AQCAtNDYsNiArNDYsOSBAQAotICNpbmNsdWRlICJmaWxlbmFtZXMuaCIKKy0tLSBn ZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL2NvcmVsb3cuYwkyMDEyLTA3LTAzIDE3OjMwOjA3 LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2NvcmVsb3cuYwky MDEyLTA3LTAzIDE3OjMzOjI3Ljg4MjUxMzcxNCArMDIwMAorQEAgLTQ3LDYgKzQ3LDkgQEAKICAj aW5jbHVkZSAicHJvZ3NwYWNlLmgiCiAgI2luY2x1ZGUgIm9iamZpbGVzLmgiCisgI2luY2x1ZGUg ImdkYl9iZmQuaCIKICsjaW5jbHVkZSAiYXV4di5oIgogKyNpbmNsdWRlICJlbGYvY29tbW9uLmgi CiArI2luY2x1ZGUgImdkYmNtZC5oIgogIAogICNpZm5kZWYgT19MQVJHRUZJTEUKICAjZGVmaW5l IE9fTEFSR0VGSUxFIDAKLUBAIC0yNzUsNiArMjc4LDUyIEBAIGFkZF90b190aHJlYWRfbGlzdCAo YmZkICphYmZkLCBhc2VjdGlvbgorQEAgLTI3NCw2ICsyNzcsNTIgQEAgYWRkX3RvX3RocmVhZF9s aXN0IChiZmQgKmFiZmQsIGFzZWN0aW9uCiAgICAgIGluZmVyaW9yX3B0aWQgPSBwdGlkOwkJCS8q IFllcywgbWFrZSBpdCBjdXJyZW50LiAgKi8KICB9CiAgCkBAIC02NSw3ICs2NSw3IEBAIEluZGV4 OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9jb3JlbG93LmMKICAvKiBUaGlzIHJvdXRpbmUgb3Bl bnMgYW5kIHNldHMgdXAgdGhlIGNvcmUgZmlsZSBiZmQuICAqLwogIAogIHN0YXRpYyB2b2lkCi1A QCAtMzc3LDYgKzQyNiwxMiBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90 dHkpCitAQCAtMzc4LDYgKzQyNywxMiBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQg ZnJvbV90dHkpCiAgICBwdXNoX3RhcmdldCAoJmNvcmVfb3BzKTsKICAgIGRpc2NhcmRfY2xlYW51 cHMgKG9sZF9jaGFpbik7CiAgCkBAIC03OCw3ICs3OCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIw MTIwNjAyL2dkYi9jb3JlbG93LmMKICAgIC8qIERvIHRoaXMgYmVmb3JlIGFja25vd2xlZGdpbmcg dGhlIGluZmVyaW9yLCBzbyBpZgogICAgICAgcG9zdF9jcmVhdGVfaW5mZXJpb3IgdGhyb3dzIChj YW4gaGFwcGVuIGVhc2lsbHkgaWYgeW91J3JlIGxvYWRpbmcKICAgICAgIGEgY29yZSBmaWxlIHdp dGggdGhlIHdyb25nIGV4ZWMpLCB3ZSBhcmVuJ3QgbGVmdCB3aXRoIHRocmVhZHMKLUBAIC05MzUs NCArOTkwLDExIEBAIF9pbml0aWFsaXplX2NvcmVsb3cgKHZvaWQpCitAQCAtOTQxLDQgKzk5Niwx MSBAQCBfaW5pdGlhbGl6ZV9jb3JlbG93ICh2b2lkKQogICAgaW5pdF9jb3JlX29wcyAoKTsKICAK ICAgIGFkZF90YXJnZXQgKCZjb3JlX29wcyk7CkBAIC05MCwxMSArOTAsMTEgQEAgSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA2MDIvZ2RiL2NvcmVsb3cuYwogKwkJCSAgIE5VTEwsIE5VTEwsIE5VTEws CiArCQkJICAgJnNldGxpc3QsICZzaG93bGlzdCk7CiAgfQotSW5kZXg6IGdkYi03LjQuNTAuMjAx MjA2MDIvZ2RiL2RvYy9nZGIudGV4aW5mbworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2Ri L2RvYy9nZGIudGV4aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3Jp Zy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDYtMDIgMjE6MDc6MDMuNjk1MjUxMjcyICswMjAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDYtMDIg MjE6MDc6MTYuNDgwMjQ2NTYzICswMjAwCi1AQCAtMTY1MDIsNiArMTY1MDIsMjcgQEAgaW5mb3Jt YXRpb24gZmlsZXMuCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMi0wNy0wMyAxNzozMTo0MC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUw LjIwMTIwNzAzL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNy0wMyAxNzozMzoxNC42MzA1Mjk1 MjggKzAyMDAKK0BAIC0xNjUzMCw2ICsxNjUzMCwyNyBAQCBpbmZvcm1hdGlvbiBmaWxlcy4KICAK ICBAZW5kIHRhYmxlCiAgCkBAIC0xMjIsMTAgKzEyMiwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGNpbmRleCBAY29kZXsuZ251X2RlYnVnbGlu a30gc2VjdGlvbnMKICBAY2luZGV4IGRlYnVnIGxpbmsgc2VjdGlvbnMKICBBIGRlYnVnIGxpbmsg aXMgYSBzcGVjaWFsIHNlY3Rpb24gb2YgdGhlIGV4ZWN1dGFibGUgZmlsZSBuYW1lZAotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6IGdkYi03LjQuNTAu MjAxMjA3MDMvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAx MjA2MDIub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTItMDYtMDIgMjE6MDc6MDMuNjk1MjUxMjcy ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc29saWItc3ZyNC5jCTIwMTItMDYt MDIgMjE6MDc6MTYuNTEwMjQ2NTUyICswMjAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmln L2dkYi9zb2xpYi1zdnI0LmMJMjAxMi0wNi0wNSAxNzo0NDowMy4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9zb2xpYi1zdnI0LmMJMjAxMi0wNy0wMyAxNzozMzox NC42MzE1Mjk1MjcgKzAyMDAKIEBAIC0xMjI3LDkgKzEyMjcsNTIgQEAgc3ZyNF9yZWFkX3NvX2xp c3QgKENPUkVfQUREUiBsbSwgc3RydWN0CiAgCSAgY29udGludWU7CiAgCX0KQEAgLTE4MiwxNCAr MTgyLDE0IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9zb2xpYi1zdnI0LmMKICAg ICAgICB4ZnJlZSAoYnVmZmVyKTsKICAKICAgICAgICAvKiBJZiB0aGlzIGVudHJ5IGhhcyBubyBu YW1lLCBvciBpdHMgbmFtZSBtYXRjaGVzIHRoZSBuYW1lCi1JbmRleDogZ2RiLTcuNC41MC4yMDEy MDYwMi9nZGIvZWxmcmVhZC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvZWxmcmVh ZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9lbGZyZWFk LmMJMjAxMi0wNi0wMiAyMTowNzowMy42OTUyNTEyNzIgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwNjAyL2dkYi9lbGZyZWFkLmMJMjAxMi0wNi0wMiAyMTowNzo1Ni4yNjQyMzIwNDkgKzAyMDAK LUBAIC00NCw2ICs0NCwxMSBAQAotICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKy0tLSBnZGItNy40 LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEyLTA3LTAzIDE3OjMwOjA3LjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2VsZnJlYWQuYwkyMDEyLTA3 LTAzIDE3OjM0OjA0Ljc3ODQ2ODk2NSArMDIwMAorQEAgLTQ1LDYgKzQ1LDExIEBACiAgI2luY2x1 ZGUgInJlZ2NhY2hlLmgiCiAgI2luY2x1ZGUgImJjYWNoZS5oIgorICNpbmNsdWRlICJnZGJfYmZk LmgiCiArI2luY2x1ZGUgImxpYmJmZC5oIgogKyNpbmNsdWRlICJnZGJjb3JlLmgiCiArI2luY2x1 ZGUgImdkYmNtZC5oIgpAQCAtMTk4LDcgKzE5OCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi9lbGZyZWFkLmMKICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2 b2lkKTsKICAKLUBAIC0xMDcyLDE2ICsxMDc3LDY1IEBAIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJf cmV0dXJuX3N0b3AgKHN0cnUKK0BAIC0xMDc0LDE2ICsxMDc5LDY1IEBAIGVsZl9nbnVfaWZ1bmNf cmVzb2x2ZXJfcmV0dXJuX3N0b3AgKHN0cnUKICAgIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9u cyAoYiwgc2Fscywgc2Fsc19lbmQpOwogIH0KICAKQEAgLTI2Niw3ICsyNjYsNyBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZWxmcmVhZC5jCiAgewogICAgc3RydWN0IGJ1aWxkX2lk ICpyZXR2YWw7CiAgCi1AQCAtMTA5Nyw2ICsxMTUxLDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChi ZmQgKmFiZmQpCitAQCAtMTA5OSw2ICsxMTUzLDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQg KmFiZmQpCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTYxNSw3ICs2MTUsNyBAQCBJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZWxmcmVhZC5jCiAgLyogUmV0dXJuIGlmIEZJTEVO QU1FIGhhcyBOVF9HTlVfQlVJTERfSUQgbWF0Y2hpbmcgdGhlIENIRUNLIHZhbHVlLiAgKi8KICAK ICBzdGF0aWMgaW50Ci1AQCAtMTExMSw3ICsxNTA3LDcgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25z dCBjaGFyICpmaWxlbmFtZSwgcworQEAgLTExMTMsNyArMTUwOSw3IEBAIGJ1aWxkX2lkX3Zlcmlm eSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHMKICAgIGlmIChhYmZkID09IE5VTEwpCiAgICAgIHJl dHVybiAwOwogIApAQCAtNjI0LDcgKzYyNCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAy L2dkYi9lbGZyZWFkLmMKICAKICAgIGlmIChmb3VuZCA9PSBOVUxMKQogICAgICB3YXJuaW5nIChf KCJGaWxlIFwiJXNcIiBoYXMgbm8gYnVpbGQtaWQsIGZpbGUgc2tpcHBlZCIpLCBmaWxlbmFtZSk7 Ci1AQCAtMTEyOSwxNyArMTUyNSwxOCBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZp bGVuYW1lLCBzCitAQCAtMTEzMSwxNyArMTUyNywxOCBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0 IGNoYXIgKmZpbGVuYW1lLCBzCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTY0Nyw3ICs2 NDcsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZWxmcmVhZC5jCiAgCiAgICAv KiBLZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgc28gdGhhdCBERUJVR19GSUxFX0RJUkVDVE9S WSBiZWluZyAiIiB3aWxsCiAgICAgICBjYXVzZSAiLy5idWlsZC1pZC8uLi4iIGxvb2t1cHMuICAq LwotQEAgLTExNTIsNiArMTU0OSw4IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1 Y3QgYnVpbGQKK0BAIC0xMTU0LDYgKzE1NTEsOCBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFt ZSAoc3RydWN0IGJ1aWxkCiAgICAgICAgc2l6ZV90IGRlYnVnZGlyX2xlbiA9IHN0cmxlbiAoZGVi dWdkaXIpOwogICAgICAgIGdkYl9ieXRlICpkYXRhID0gYnVpbGRfaWQtPmRhdGE7CiAgICAgICAg c2l6ZV90IHNpemUgPSBidWlsZF9pZC0+c2l6ZTsKQEAgLTY1Niw3ICs2NTYsNyBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZWxmcmVhZC5jCiAgICAgICAgY2hhciAqczsKICAKICAg ICAgICBtZW1jcHkgKGxpbmssIGRlYnVnZGlyLCBkZWJ1Z2Rpcl9sZW4pOwotQEAgLTExNjYsMzcg KzE1NjUsMjQwIEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKK0BA IC0xMTY4LDM3ICsxNTY3LDI0MCBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0 IGJ1aWxkCiAgCSpzKysgPSAnLyc7CiAgICAgICAgd2hpbGUgKHNpemUtLSA+IDApCiAgCXMgKz0g c3ByaW50ZiAocywgIiUwMngiLCAodW5zaWduZWQpICpkYXRhKyspOwpAQCAtOTA4LDcgKzkwOCw3 IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9lbGZyZWFkLmMKICAgICAgICB4ZnJl ZSAoYnVpbGRfaWQpOwogICAgICAgIC8qIFByZXZlbnQgbG9vcGluZyBvbiBhIHN0cmlwcGVkIC5k ZWJ1ZyBmaWxlLiAgKi8KICAgICAgICBpZiAoYnVpbGRfaWRfbmFtZSAhPSBOVUxMCi1AQCAtMTIw Nyw3ICsxODA5LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cgor QEAgLTEyMDksNyArMTgxMSw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlk IChzdHIKICAJICB4ZnJlZSAoYnVpbGRfaWRfbmFtZSk7CiAgCX0KICAgICAgICBlbHNlIGlmIChi dWlsZF9pZF9uYW1lICE9IE5VTEwpCkBAIC05MTcsNyArOTE3LDcgQEAgSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL2VsZnJlYWQuYwogICAgICB9CiAgICByZXR1cm4gTlVMTDsKICB9Ci1A QCAtMTQyNyw5ICsyMDI5LDEwIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWwKK0BAIC0xNDM2LDkgKzIwMzgsMTAgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9i amZpbGUgKm9iamZpbAogICAgICAgYC5ub3RlLmdudS5idWlsZC1pZCcuICAqLwogICAgZWxzZSBp ZiAoIW9iamZpbGVfaGFzX3BhcnRpYWxfc3ltYm9scyAob2JqZmlsZSkpCiAgICAgIHsKQEAgLTkz MCw3ICs5MzAsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZWxmcmVhZC5jCiAg CiAgICAgICAgaWYgKGRlYnVnZmlsZSA9PSBOVUxMKQogIAlkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFy YXRlX2RlYnVnX2ZpbGVfYnlfZGVidWdsaW5rIChvYmpmaWxlKTsKLUBAIC0xNDQxLDYgKzIwNDQs MTIgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAorQEAgLTE0NTAs NiArMjA1MywxMiBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCiAg CSAgc3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChhYmZkLCBzeW1maWxlX2ZsYWdzLCBvYmpmaWxl KTsKICAJICB4ZnJlZSAoZGVidWdmaWxlKTsKICAJfQpAQCAtOTQxLDkgKzk0MSw5IEBAIEluZGV4 OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9lbGZyZWFkLmMKICsKICsgICAgICB4ZnJlZSAoYnVp bGRfaWRfZmlsZW5hbWUpOwogICAgICB9Ci0gfQogIAotQEAgLTE3NzAsNCArMjM3OSwxNiBAQCBf aW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKQorICAgaWYgKHN5bXRhYl9jcmVhdGVfZGVidWcpCitA QCAtMTc4Miw0ICsyMzkxLDE2IEBAIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpCiAgCiAgICBl bGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YSA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAo KTsKICAgIGdudV9pZnVuY19mbnNfcCA9ICZlbGZfZ251X2lmdW5jX2ZuczsKQEAgLTk2MCwxMCAr OTYwLDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9lbGZyZWFkLmMKICsKICsg IG9ic2VydmVyX2F0dGFjaF9leGVjdXRhYmxlX2NoYW5nZWQgKGRlYnVnX3ByaW50X2V4ZWN1dGFi bGVfY2hhbmdlZCk7CiAgfQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3N5bWZpbGUu aAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3N5bWZpbGUuaAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvc3ltZmlsZS5oCTIwMTItMDYtMDIgMjE6 MDc6MDMuNjk1MjUxMjcyICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc3ltZmls ZS5oCTIwMTItMDYtMDIgMjE6MDc6MTYuNTI0MjQ2NTQ3ICswMjAwCistLS0gZ2RiLTcuNC41MC4y MDEyMDcwMy5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMi0wNS0yNSAwMDoxNDozNS4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9zeW1maWxlLmgJMjAxMi0wNy0wMyAx NzozMzoxNC42MzI1Mjk1MjYgKzAyMDAKIEBAIC02MTUsNiArNjE1LDEzIEBAIHZvaWQgZnJlZV9z eW1maWxlX3NlZ21lbnRfZGF0YSAoc3RydWN0IHMKICAKICBleHRlcm4gc3RydWN0IGNsZWFudXAg KmluY3JlbWVudF9yZWFkaW5nX3N5bXRhYiAodm9pZCk7CkBAIC05NzgsMTAgKzk3OCwxMCBAQCBJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc3ltZmlsZS5oCiAgLyogRnJvbSBkd2FyZjJy ZWFkLmMgKi8KICAKICAvKiBOYW1lcyBmb3IgYSBkd2FyZjIgZGVidWdnaW5nIHNlY3Rpb24uICBU aGUgZmllbGQgTk9STUFMIGlzIHRoZSBub3JtYWwKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAy L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dk Yi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw NjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEyLTA2LTAyIDIxOjA3OjAzLjY5 NTI1MTI3MiArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAkyMDEyLTA2LTAyIDIxOjA3OjE2LjUyNjI0NjU0NiArMDIwMAorLS0tIGdkYi03LjQu NTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTItMDctMDMgMTc6 MzA6MDkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1 aXRlL2xpYi9nZGIuZXhwCTIwMTItMDctMDMgMTc6MzM6MTQuNjMzNTI5NTI0ICswMjAwCiBAQCAt MTM4OCw2ICsxMzg4LDE2IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdh cm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KQEAgLTk5OSwxMCArOTk5 LDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5l eHAKICAgICAgcmV0dXJuIDA7CiAgfQogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAz L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NC41MC4yMDEyMDYwMi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTIt MDYtMDIgMjE6MDc6MDMuNjk1MjUxMjcyICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDEyLTA2LTAyIDIxOjA3OjE2LjUzNTI0 NjU0NCArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2xp Yi9taS1zdXBwb3J0LmV4cAkyMDEyLTA0LTE0IDE0OjE4OjQ0LjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAx Mi0wNy0wMyAxNzozMzoxNC42MzM1Mjk1MjQgKzAyMDAKIEBAIC0yMTMsNiArMjEzLDE2IEBAIHBy b2MgZGVmYXVsdF9taV9nZGJfc3RhcnQgeyBhcmdzIH0gewogIAkgICAgd2FybmluZyAiQ291bGRu J3Qgc2V0IHRoZSB3aWR0aCB0byAwLiIKICAJfQpAQCAtMTAyMCwxMCArMTAyMCwxMCBAQCBJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAog ICAgICAjIElmIGFsbG93aW5nIHRoZSBpbmZlcmlvciB0byBoYXZlIGl0cyBvd24gUFRZIHRoZW4g YXNzaWduIHRoZSBpbmZlcmlvcgogICAgICAjIGl0cyBvd24gdGVybWluYWwgZGV2aWNlIGhlcmUu CiAgICAgIGlmIHsgJHNlcGFyYXRlX2luZmVyaW9yX3B0eSB9IHsKLUluZGV4OiBnZGItNy40LjUw LjIwMTIwNjAyL2dkYi9vYmpmaWxlcy5oCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIv b2JqZmlsZXMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIv b2JqZmlsZXMuaAkyMDEyLTA2LTAyIDIxOjA3OjAzLjY5NTI1MTI3MiArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjA2MDIvZ2RiL29iamZpbGVzLmgJMjAxMi0wNi0wMiAyMTowNzoxNi41MzkyNDY1 NDEgKzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL29iamZpbGVzLmgJMjAx Mi0wNy0wMyAxNzozMDowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAz L2dkYi9vYmpmaWxlcy5oCTIwMTItMDctMDMgMTc6MzM6MTQuNjMzNTI5NTI0ICswMjAwCiBAQCAt NDMyLDYgKzQzMiwxMCBAQCBzdHJ1Y3Qgb2JqZmlsZQogIAogICNkZWZpbmUgT0JKRl9NQUlOTElO RSAoMSA8PCA1KQoKZGlmZiAtLWdpdCBhL2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1p cy1kZWZhdWx0LnBhdGNoIGIvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLWlzLWRlZmF1 bHQucGF0Y2gKaW5kZXggNTBhZjc5Ni4uYmZjOGU5NiAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1zY2hl ZHVsZXJfbG9ja2luZy1zdGVwLWlzLWRlZmF1bHQucGF0Y2gKKysrIGIvZ2RiLTYuNi1zY2hlZHVs ZXJfbG9ja2luZy1zdGVwLWlzLWRlZmF1bHQucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIw NzAzL2dkYi9pbmZydW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3Jp Zy9nZGIvaW5mcnVuLmMJMjAxMS0wNy0yMiAxOToxMjo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4uYwkyMDExLTA3LTIyIDE5OjE3OjA2LjAwMDAw MDAwMCArMDIwMAotQEAgLTE1NDksNyArMTU0OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpzY2hl ZHVsZXJfZW51bXNbXSA9IHsKKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL2luZnJ1 bi5jCTIwMTItMDctMDMgMjA6MjY6MjUuMDYwOTQwNzY1ICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDcwMy9nZGIvaW5mcnVuLmMJMjAxMi0wNy0wMyAyMDoyNjozMi44MDg5Mjk4NjAgKzAyMDAK K0BAIC0xNTkxLDcgKzE1OTEsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc2NoZWR1bGVy X2VudW1zCiAgICBzY2hlZGxvY2tfc3RlcCwKICAgIE5VTEwKICB9OwpAQCAtMTEsMTEgKzExLDEx IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4uYwogIHN0YXRpYyB2b2lk CiAgc2hvd19zY2hlZHVsZXJfbW9kZSAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0 eSwKICAJCSAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVl KQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY29u c29sZS5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLm1p L21pLWNvbnNvbGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmln L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhwCTIwMTEtMDEtMDEgMTY6MzM6NDcu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dk Yi5taS9taS1jb25zb2xlLmV4cAkyMDExLTA3LTIyIDE5OjE3OjA2LjAwMDAwMDAwMCArMDIwMAot QEAgLTQ3LDYgKzQ3LDkgQEAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9 LworLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1j b25zb2xlLmV4cAkyMDEyLTA3LTAzIDIwOjI2OjI1LjA2MDk0MDc2NSArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY29uc29sZS5leHAJMjAxMi0w Ny0wMyAyMDoyNjozMi44MDk5Mjk4NTggKzAyMDAKK0BAIC00Niw2ICs0Niw5IEBAIGlmICB7IFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8KICAKICBtaV9ydW5fdG9fbWFpbgogIApA QCAtMjUsMTEgKzI1LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3Vp dGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhwCiAgIyBOZXh0IG92ZXIgdGhlIGhlbGxvKCkgY2FsbCB3 aGljaCB3aWxsIHByb2R1Y2UgbG90cyBvZiBvdXRwdXQKICBtaV9nZGJfdGVzdCAiMjIwLWV4ZWMt bmV4dCIgXAogIAkgICAgIjIyMFxcXnJ1bm5pbmcoXHJcblxcKnJ1bm5pbmcsdGhyZWFkLWlkPVwi YWxsXCIpPyIgXAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu bWkvbWkyLWNvbnNvbGUuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1 aXRlL2dkYi5taS9taTItY29uc29sZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIw MTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLWNvbnNvbGUuZXhwCTIwMTEtMDYt MjMgMTE6NDA6NTAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi5taS9taTItY29uc29sZS5leHAJMjAxMS0wNy0yMiAxOToxNzoyNy4wMDAw MDAwMDAgKzAyMDAKLUBAIC00Nyw2ICs0Nyw5IEBAIGlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNk aXJ9LyR7c3ViZGlyfS8KKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9nZGIubWkvbWkyLWNvbnNvbGUuZXhwCTIwMTItMDctMDMgMjA6MjY6MjUuMDYwOTQwNzY1ICsw MjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItY29u c29sZS5leHAJMjAxMi0wNy0wMyAyMDoyNjozMi44MDk5Mjk4NTggKzAyMDAKK0BAIC00Niw2ICs0 Niw5IEBAIGlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8KICAKICBtaV9y dW5fdG9fbWFpbgogIApAQCAtMzksMTEgKzM5LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi1jb25zb2xlLmV4cAogICMgTmV4dCBvdmVyIHRo ZSBoZWxsbygpIGNhbGwgd2hpY2ggd2lsbCBwcm9kdWNlIGxvdHMgb2Ygb3V0cHV0CiAgbWlfZ2Ri X3Rlc3QgIjIyMC1leGVjLW5leHQiICIyMjBcXF5ydW5uaW5nKFxyXG4pPyhcXCpydW5uaW5nLHRo cmVhZC1pZD1cImFsbFwiKT8iIFwKICAJIlN0YXJ0ZWQgc3RlcCBvdmVyIGhlbGxvIgotSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY2xpLmV4cAorSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY2xpLmV4cAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdGVzdHN1aXRlL2dk Yi5taS9taS1jbGkuZXhwCTIwMTEtMDQtMjcgMTI6MTc6MzguMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCTIwMTEt MDctMjIgMTk6MTc6MDYuMDAwMDAwMDAwICswMjAwCi1AQCAtMTc2LDcgKzE3Niw3IEBAIG1pX2V4 ZWN1dGVfdG8gImV4ZWMtY29udGludWUiICJicmVha3BvaW4KKy0tLSBnZGItNy40LjUwLjIwMTIw NzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY2xpLmV4cAkyMDEyLTA3LTAzIDIwOjI2 OjI1LjA2MDk0MDc2NSArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0 ZS9nZGIubWkvbWktY2xpLmV4cAkyMDEyLTA3LTAzIDIwOjI2OjMyLjgxMDkyOTg1NiArMDIwMAor QEAgLTE3NSw3ICsxNzUsNyBAQCBtaV9leGVjdXRlX3RvICJleGVjLWNvbnRpbnVlIiAiYnJlYWtw b2luCiAgIyBUZXN0IHRoYXQgdGhlIHRva2VuIGlzIG91dHB1dCBldmVuIGZvciBDTEkgY29tbWFu ZHMKICAjIEFsc28gdGVzdCB0aGF0ICpzdG9wcGVkIGluY2x1ZGVzIGZyYW1lIGluZm9ybWF0aW9u LgogIG1pX2dkYl90ZXN0ICIzNCBuZXh0IiBcCkBAIC01MiwzICs1MiwyNSBAQCBJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCiAgICAgICIz NCBuZXh0OiBydW4iCiAgCiAgaWYgeyEkYXN5bmN9IHsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIw NzAzL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWxvZ2dpbmcuZXhwCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWxvZ2dpbmcu ZXhwCTIwMTItMDYtMjkgMDA6MTE6MjMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1sb2dnaW5nLmV4cAkyMDEyLTA3LTAzIDIw OjI5OjAzLjU3MzcxNzY1MSArMDIwMAorQEAgLTU2LDcgKzU2LDcgQEAgY2xvc2UgJGNoYW4KKyAK KyBzZXQgbWlfbG9nX3Byb21wdCAiXFsoXF1nZGJcWylcXSBcW1xyXG5cXSsiCisgCistaWYgW3Jl Z2V4cCAiXFxeZG9uZVxbXHJcblxdKyRtaV9sb2dfcHJvbXB0XFxecnVubmluZ1xbXHJcblxdK1xc KnJ1bm5pbmcsdGhyZWFkLWlkPVwiYWxsXCJcW1xyXG5cXSskbWlfbG9nX3Byb21wdFxcKnN0b3Bw ZWQscmVhc29uPVwiZW5kLXN0ZXBwaW5nLXJhbmdlXCIsLipcW1xyXG5cXSskbWlfbG9nX3Byb21w dFxcXnJ1bm5pbmdcW1xyXG5cXStcXCpydW5uaW5nLHRocmVhZC1pZD1cImFsbFwiXFtcclxuXF0r JG1pX2xvZ19wcm9tcHRcXCpzdG9wcGVkLHJlYXNvbj1cImVuZC1zdGVwcGluZy1yYW5nZVwiLC4q XFtcclxuXF0rJG1pX2xvZ19wcm9tcHQiICRsb2djb250ZW50XSB7CisraWYgW3JlZ2V4cCAiXFxe ZG9uZVxbXHJcblxdKyRtaV9sb2dfcHJvbXB0XFxecnVubmluZ1xbXHJcblxdK1xcKnJ1bm5pbmcs dGhyZWFkLWlkPVwiMVwiXFtcclxuXF0rJG1pX2xvZ19wcm9tcHRcXCpzdG9wcGVkLHJlYXNvbj1c ImVuZC1zdGVwcGluZy1yYW5nZVwiLC4qXFtcclxuXF0rJG1pX2xvZ19wcm9tcHRcXF5ydW5uaW5n XFtcclxuXF0rXFwqcnVubmluZyx0aHJlYWQtaWQ9XCIxXCJcW1xyXG5cXSskbWlfbG9nX3Byb21w dFxcKnN0b3BwZWQscmVhc29uPVwiZW5kLXN0ZXBwaW5nLXJhbmdlXCIsLipcW1xyXG5cXSskbWlf bG9nX3Byb21wdCIgJGxvZ2NvbnRlbnRdIHsKKyAgICAgcGFzcyAiTG9nIGZpbGUgY29udGVudHMi CisgfSBlbHNlIHsKKyAgICAgZmFpbCAiTG9nIGZpbGUgY29udGVudHMiCitAQCAtNzksNyArNzks NyBAQCBzZXQgY2hhbiBbb3BlbiAkbWlsb2dmaWxlXQorIHNldCBsb2djb250ZW50IFtyZWFkICRj aGFuXQorIGNsb3NlICRjaGFuCisgCistaWYgW3JlZ2V4cCAiMTAwMVxcXmRvbmVcW1xyXG5cXSsk bWlfbG9nX3Byb21wdC4qMTAwMlxcXnJ1bm5pbmdcW1xyXG5cXStcXCpydW5uaW5nLHRocmVhZC1p ZD1cImFsbFwiXFtcclxuXF0rJG1pX2xvZ19wcm9tcHRcXCpzdG9wcGVkLHJlYXNvbj1cImVuZC1z dGVwcGluZy1yYW5nZVwiLC4qXFtcclxuXF0rJG1pX2xvZ19wcm9tcHQuKjEwMDNcXF5ydW5uaW5n XFtcclxuXF0rXFwqcnVubmluZyx0aHJlYWQtaWQ9XCJhbGxcIlxbXHJcblxdKyRtaV9sb2dfcHJv bXB0XFwqc3RvcHBlZCxyZWFzb249XCJlbmQtc3RlcHBpbmctcmFuZ2VcIiwuKlxbXHJcblxdKyRt aV9sb2dfcHJvbXB0IiAkbG9nY29udGVudF0geworK2lmIFtyZWdleHAgIjEwMDFcXF5kb25lXFtc clxuXF0rJG1pX2xvZ19wcm9tcHQuKjEwMDJcXF5ydW5uaW5nXFtcclxuXF0rXFwqcnVubmluZyx0 aHJlYWQtaWQ9XCIxXCJcW1xyXG5cXSskbWlfbG9nX3Byb21wdFxcKnN0b3BwZWQscmVhc29uPVwi ZW5kLXN0ZXBwaW5nLXJhbmdlXCIsLipcW1xyXG5cXSskbWlfbG9nX3Byb21wdC4qMTAwM1xcXnJ1 bm5pbmdcW1xyXG5cXStcXCpydW5uaW5nLHRocmVhZC1pZD1cIjFcIlxbXHJcblxdKyRtaV9sb2df cHJvbXB0XFwqc3RvcHBlZCxyZWFzb249XCJlbmQtc3RlcHBpbmctcmFuZ2VcIiwuKlxbXHJcblxd KyRtaV9sb2dfcHJvbXB0IiAkbG9nY29udGVudF0geworICAgICBwYXNzICJSZWRpcmVjdCBsb2cg ZmlsZSBjb250ZW50cyIKKyB9IGVsc2UgeworICAgICBmYWlsICJSZWRpcmVjdCBsb2cgZmlsZSBj b250ZW50cyIKCmRpZmYgLS1naXQgYS9nZGItNi44LWF0dGFjaC1zaWduYWxsZWQtZGV0YWNoLXN0 b3BwZWQucGF0Y2ggYi9nZGItNi44LWF0dGFjaC1zaWduYWxsZWQtZGV0YWNoLXN0b3BwZWQucGF0 Y2gKaW5kZXggNDRjYzdiYS4uMTM5NjZmMiAxMDA2NDQKLS0tIGEvZ2RiLTYuOC1hdHRhY2gtc2ln bmFsbGVkLWRldGFjaC1zdG9wcGVkLnBhdGNoCisrKyBiL2dkYi02LjgtYXR0YWNoLXNpZ25hbGxl ZC1kZXRhY2gtc3RvcHBlZC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUluZGV4OiBnZGItNy40LjUw LjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2Ri L2xpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dk Yi9saW51eC1uYXQuYwkyMDEyLTA2LTAyIDIwOjUxOjU4LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4LW5hdC5jCTIwMTItMDYtMDIgMjA6NTQ6MzAuMTI3 NTI5MTU5ICswMjAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9saW51eC1uYXQu YwkyMDEyLTA3LTAzIDE3OjQ2OjU1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAx MjA3MDMvZ2RiL2xpbnV4LW5hdC5jCTIwMTItMDctMDMgMTc6NTc6MjkuNjA4NzM0OTMzICswMjAw CiBAQCAtMTgwLDYgKzE4MCw5IEBAIGJsb2NrZWQuICAqLwogIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0 X29wcyAqbGludXhfb3BzOwogIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0X29wcyBsaW51eF9vcHNfc2F2 ZWQ7CkBAIC01NSw4ICs1NSw4IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51 eC1uYXQuYwogIH0KICAKICAvKiBSZXN1bWUgTFAuICAqLwotQEAgLTIwODMsNiArMjA5OSwxNCBA QCBsaW51eF9uYXRfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCi0gICAgICByZXN1bWVf Y2FsbGJhY2suICAqLworQEAgLTIxMDQsNiArMjEyMCwxNCBAQCBsaW51eF9uYXRfcmVzdW1lIChz dHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCisgICAgICBsaW51eF9uYXRfcmVzdW1lX2NhbGxiYWNrLiAg Ki8KICAgIGxwLT5zdG9wcGVkID0gMDsKICAKICsgIC8qIEF0IHRoaXMgcG9pbnQsIHdlIGFyZSBn b2luZyB0byByZXN1bWUgdGhlIGluZmVyaW9yIGFuZCBpZiB3ZQpAQCAtNjgsOSArNjgsOSBAQCBJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvbGludXgtbmF0LmMKICsgICAgcGlkX3dhc19z dG9wcGVkID0gMDsKICsKICAgIGlmIChyZXN1bWVfbWFueSkKLSAgICAgaXRlcmF0ZV9vdmVyX2x3 cHMgKHB0aWQsIHJlc3VtZV9jYWxsYmFjaywgTlVMTCk7CisgICAgIGl0ZXJhdGVfb3Zlcl9sd3Bz IChwdGlkLCBsaW51eF9uYXRfcmVzdW1lX2NhbGxiYWNrLCBOVUxMKTsKICAKLUBAIC00MTMyLDYg KzQxNTYsOCBAQCBsaW51eF9uYXRfbW91cm5faW5mZXJpb3IgKHN0cnVjdCB0YXJnZXRfCitAQCAt NDEyOSw2ICs0MTUzLDggQEAgbGludXhfbmF0X21vdXJuX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0 XwogICAgICAgICB0aGVyZSBhcmUgb3RoZXIgdmlhYmxlIGZvcmtzIHRvIGRlYnVnLiAgRGVsZXRl IHRoZSBleGl0aW5nCiAgICAgICAgIG9uZSBhbmQgY29udGV4dC1zd2l0Y2ggdG8gdGhlIGZpcnN0 IGF2YWlsYWJsZS4gICovCiAgICAgIGxpbnV4X2ZvcmtfbW91cm5faW5mZXJpb3IgKCk7CkBAIC03 OSwxMSArNzksMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4LW5hdC5j CiAgfQogIAogIC8qIENvbnZlcnQgYSBuYXRpdmUvaG9zdCBzaWdpbmZvIG9iamVjdCwgaW50by9m cm9tIHRoZSBzaWdpbmZvIGluIHRoZQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBlZC5leHAKK0luZGV4OiBnZGItNy40LjUw LjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNoLXN0b3BwZWQuZXhwCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvYXR0YWNoLXN0b3BwZWQuZXhwCTIwMTItMDEtMDQgMDk6Mjc6NTUuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L2F0dGFjaC1zdG9wcGVkLmV4cAkyMDEyLTA2LTAyIDIwOjUyOjA4Ljg5MzUwNTQwMyArMDIwMAot QEAgLTYzLDcgKzYzLDY1IEBAIHByb2MgY29yZWZ1bmMgeyB0aHJlYWR0eXBlIH0geworLS0tIGdk Yi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaC1z dG9wcGVkLmV4cAkyMDEyLTA2LTI2IDIxOjIzOjIwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBlZC5l eHAJMjAxMi0wNy0wMyAxNzo1Njo0My43OTc3OTAxMjAgKzAyMDAKK0BAIC02MSw3ICs2MSw2NSBA QCBwcm9jIGNvcmVmdW5jIHsgdGhyZWFkdHlwZSB9IHsKICAgICAgZ2RiX3JlaW5pdGlhbGl6ZV9k aXIgJHNyY2Rpci8kc3ViZGlyCiAgICAgIGdkYl9sb2FkICR7YmluZmlsZX0KICAKCmRpZmYgLS1n aXQgYS9nZGItNy4yLjUwLXNwYXJjLWFkZC13b3JrYXJvdW5kLXRvLWJyb2tlbi1kZWJ1Zy1maWxl cy5wYXRjaCBiL2dkYi03LjIuNTAtc3BhcmMtYWRkLXdvcmthcm91bmQtdG8tYnJva2VuLWRlYnVn LWZpbGVzLnBhdGNoCmluZGV4IGIwMTE2NTguLmJlY2Y4MGUgMTAwNjQ0Ci0tLSBhL2dkYi03LjIu NTAtc3BhcmMtYWRkLXdvcmthcm91bmQtdG8tYnJva2VuLWRlYnVnLWZpbGVzLnBhdGNoCisrKyBi L2dkYi03LjIuNTAtc3BhcmMtYWRkLXdvcmthcm91bmQtdG8tYnJva2VuLWRlYnVnLWZpbGVzLnBh dGNoCkBAIC0xLDggKzEsOCBAQAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJm MnJlYWQuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2dkYl9iZmQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEt MDctMjIgMTk6Mzc6MTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMjIgMTk6NDQ6NDIuMDAwMDAwMDAwICswMjAwCi1AQCAt NjcsMTIgKzY3LDE0IEBACistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9nZGJfYmZk LmMJMjAxMi0wNy0wMyAxNzozMDowNy4zNTY3NTQ2NTUgKzAyMDAKKysrKyBnZGItNy40LjUwLjIw MTIwNzAzL2dkYi9nZGJfYmZkLmMJMjAxMi0wNy0wMyAxNzo0Mzo1Mi41NjU3NjI0NTQgKzAyMDAK K0BAIC0yNiwxMiArMjYsMTQgQEAKICAjaWZkZWYgSEFWRV9aTElCX0gKICAjaW5jbHVkZSA8emxp Yi5oPgogICNlbmRpZgpAQCAtMTUsMzcgKzE1LDM3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9kd2FyZjJyZWFkLmMKICAjZW5kaWYKICsjZW5kaWYKICAKLSB0eXBlZGVmIHN0cnVj dCBzeW1ib2wgKnN5bWJvbHA7Ci0gREVGX1ZFQ19QIChzeW1ib2xwKTsKLUBAIC0xNjE4LDYgKzE2 MjAsNyBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCi0gICAgICAg ICB9Ci0gICAgIH0KKyAvKiBBbiBvYmplY3Qgb2YgdGhpcyB0eXBlIGlzIHN0b3JlZCBpbiB0aGUg c2VjdGlvbidzIHVzZXIgZGF0YSB3aGVuCisgICAgbWFwcGluZyBhIHNlY3Rpb24uICAqLworQEAg LTE4MSw2ICsxODMsNyBAQCBmcmVlX29uZV9iZmRfc2VjdGlvbiAoYmZkICphYmZkLCBhc2VjdGlv CiAgCisgICBpZiAoc2VjdCAhPSBOVUxMICYmIHNlY3QtPmRhdGEgIT0gTlVMTCkKKyAgICAgewog KyNpZm5kZWYgX19zcGFyY19fCiAgI2lmZGVmIEhBVkVfTU1BUAotICAgaWYgKHBhZ2VzaXplID09 IDApCi0gICAgIHBhZ2VzaXplID0gZ2V0cGFnZXNpemUgKCk7Ci1AQCAtMTY0MSw2ICsxNjQ0LDcg QEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iagorICAgICAgIGlmIChz ZWN0LT5tYXBfYWRkciAhPSBOVUxMKQorIAl7CitAQCAtMTkxLDYgKzE5NCw3IEBAIGZyZWVfb25l X2JmZF9zZWN0aW9uIChiZmQgKmFiZmQsIGFzZWN0aW8KICAJfQotICAgICB9CisgICAgICAgZWxz ZQogICNlbmRpZgogKyNlbmRpZgorIAl4ZnJlZSAoc2VjdC0+ZGF0YSk7CisgICAgIH0KKyB9CitA QCAtNDI1LDYgKzQyOSw3IEBAIGdkYl9iZmRfbWFwX3NlY3Rpb24gKGFzZWN0aW9uICpzZWN0cCwg YmYKKyAgICAgICAgIH0KKyAgICAgfQogIAotICAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlIGFyZSBh IG5vcm1hbCwgbm90LWNvbXByZXNzZWQgc2VjdGlvbi4gICovCi0gICBpbmZvLT5idWZmZXIgPSBi dWYKLUBAIC0xNTk4Myw2ICsxNTk4Nyw3IEBAIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoc3RydWN0 IGR3YXJmMl9zZWMKLSB7Ci0gICBpZiAoaW5mby0+bWFwX2FkZHIgIT0gTlVMTCkKLSAgICAgewog KyNpZm5kZWYgX19zcGFyY19fCiAgI2lmZGVmIEhBVkVfTU1BUAotICAgICAgIGludCByZXM7Ci0g Ci1AQCAtMTU5OTIsNiArMTU5OTcsNyBAQCBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKHN0cnVjdCBk d2FyZjJfc2VjCi0gICAgICAgLyogV2l0aG91dCBIQVZFX01NQVAsIHdlIHNob3VsZCBuZXZlciBi ZSBoZXJlIHRvIGJlZ2luIHdpdGguICAqLwotICAgICAgIGdkYl9hc3NlcnRfbm90X3JlYWNoZWQg KCJubyBtbWFwIHN1cHBvcnQiKTsKLSAjZW5kaWYKKyAgIHsKKyAgICAgLyogVGhlIHBhZ2Ugc2l6 ZSwgdXNlZCB3aGVuIG1tYXBwaW5nLiAgKi8KK0BAIC00NTgsNiArNDYzLDcgQEAgZ2RiX2JmZF9t YXBfc2VjdGlvbiAoYXNlY3Rpb24gKnNlY3RwLCBiZgorICAgICAgIH0KKyAgIH0KKyAjZW5kaWYg LyogSEFWRV9NTUFQICovCiArI2VuZGlmCi0gICAgIH0KLSB9CisgCisgICAvKiBJZiB3ZSBnZXQg aGVyZSwgd2UgYXJlIGEgbm9ybWFsLCBub3QtY29tcHJlc3NlZCBzZWN0aW9uLiAgKi8KICAKCmRp ZmYgLS1naXQgYS9nZGItYXJjaGVyLnBhdGNoIGIvZ2RiLWFyY2hlci5wYXRjaAppbmRleCA2YjRl Nzk5Li4wZDE1NjI2IDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLnBhdGNoCisrKyBiL2dkYi1hcmNo ZXIucGF0Y2gKQEAgLTIsMTggKzIsNDYgQEAgaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtp L1Byb2plY3RBcmNoZXIKIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9BcmNoZXJCcmFu Y2hNYW5hZ2VtZW50CiAKIEdJVCBzbmFwc2hvdDoKLWNvbW1pdCBkMTAyMTMyMjAxOTE1ODk4MTQ3 MTRkNzFlZjBmNWJhNjRmYmMzYjc1Citjb21taXQgZjA3YTJhMjRjNDkzZWViYzlkZjZiN2M5Y2E4 YzdmZTA4MTNhYWZmZAogCiBicmFuY2ggYGFyY2hlcicgLSB0aGUgbWVyZ2Ugb2YgYnJhbmNoZXM6 CiBhcmNoZXItamFua3JhdG9jaHZpbC12bGEKIGFyY2hlci10cm9tZXktcHl0aG9uCithcmNoZXIt dHJvbWV5LWR3ei1tdWx0aWZpbGUtcmViYXNlCiAKIAogZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmls ZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgotaW5kZXggYmY2YjBkYS4uZjBkNDZkZCAxMDA2NDQKK2lu ZGV4IGE0MWNmZjkuLmQ3Nzg2YTYgMTAwNjQ0CiAtLS0gYS9nZGIvTWFrZWZpbGUuaW4KICsrKyBi L2dkYi9NYWtlZmlsZS5pbgotQEAgLTEzMDQsNiArMTMwNCwxMiBAQCBzdGFtcC1oOiAkKHNyY2Rp cikvY29uZmlnLmluIGNvbmZpZy5zdGF0dXMKK0BAIC03MDQsNyArNzA0LDcgQEAgU0ZJTEVTID0g YWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxwcmludC5jIGFkYS10 YXNrcy5jIFwKKyAJZXhjZXB0aW9ucy5jIGV4cHByaW50LmMgXAorIAlmLWV4cC55IGYtbGFuZy5j IGYtdHlwZXByaW50LmMgZi12YWxwcmludC5jIGZpbGVzeXN0ZW0uYyBcCisgCWZpbmRjbWQuYyBm aW5kdmFyLmMgZnJhbWUuYyBmcmFtZS1iYXNlLmMgZnJhbWUtdW53aW5kLmMgXAorLQlnZGJhcmNo LmMgYXJjaC11dGlscy5jIGdkYnR5cGVzLmMgZ251LXYyLWFiaS5jIGdudS12My1hYmkuYyBcCisr CWdkYmFyY2guYyBhcmNoLXV0aWxzLmMgZ2RiX2JmZC5jIGdkYnR5cGVzLmMgZ251LXYyLWFiaS5j IGdudS12My1hYmkuYyBcCisgCWdvLWV4cC55IGdvLWxhbmcuYyBnby10eXBlcHJpbnQuYyBnby12 YWxwcmludC5jIFwKKyAJaW5mLWxvb3AuYyBcCisgCWluZmNhbGwuYyBcCitAQCAtODI5LDcgKzgy OSw3IEBAIGdudWxpYi9pbXBvcnQvZXh0cmEvc25pcHBldC93YXJuLW9uLXVzZS5oIFwKKyBnbnVs aWIvaW1wb3J0L3N0ZGRlZi5pbi5oIGdudWxpYi9pbXBvcnQvaW50dHlwZXMuaW4uaCBpbmxpbmUt ZnJhbWUuaCBza2lwLmggXAorIGNvbW1vbi9jb21tb24tdXRpbHMuaCBjb21tb24veG1sLXV0aWxz LmggY29tbW9uL2J1ZmZlci5oIGNvbW1vbi9wdGlkLmggXAorIGNvbW1vbi9mb3JtYXQuaCBcCist Y29tbW9uL2xpbnV4LW9zZGF0YS5oIGdkYi1kbGZjbi5oIGF1dG8tbG9hZC5oIHByb2JlLmggc3Rh cC1wcm9iZS5oCisrY29tbW9uL2xpbnV4LW9zZGF0YS5oIGdkYi1kbGZjbi5oIGF1dG8tbG9hZC5o IHByb2JlLmggc3RhcC1wcm9iZS5oIGdkYl9iZmQuaAorIAorICMgSGVhZGVyIGZpbGVzIHRoYXQg YWxyZWFkeSBoYXZlIHNyY2RpciBpbiB0aGVtLCBvciB3aGljaCBhcmUgaW4gb2JqZGlyLgorIAor QEAgLTg3OSw3ICs4NzksNyBAQCBDT01NT05fT0JTID0gJChERVBGSUxFUykgJChDT05GSUdfT0JT KSAkKFlZT0JKKSBcCisgCW1hY3JvdGFiLm8gbWFjcm9jbWQubyBtYWNyb2V4cC5vIG1hY3Jvc2Nv cGUubyBcCisgCW1pLWNvbW1vbi5vIFwKKyAJZXZlbnQtbG9vcC5vIGV2ZW50LXRvcC5vIGluZi1s b29wLm8gY29tcGxldGVyLm8gXAorLQlnZGJhcmNoLm8gYXJjaC11dGlscy5vIGdkYnR5cGVzLm8g b3NhYmkubyBjb3B5aW5nLm8gXAorKwlnZGJhcmNoLm8gYXJjaC11dGlscy5vIGdkYnR5cGVzLm8g Z2RiX2JmZC5vIG9zYWJpLm8gY29weWluZy5vIFwKKyAJbWVtYXR0ci5vIG1lbS1icmVhay5vIHRh cmdldC5vIHBhcnNlLm8gbGFuZ3VhZ2UubyBidWlsZHN5bS5vIFwKKyAJZmluZGNtZC5vIFwKKyAJ c3RkLXJlZ3MubyBcCitAQCAtMTMwNyw2ICsxMzA3LDEyIEBAIHN0YW1wLWg6ICQoc3JjZGlyKS9j b25maWcuaW4gY29uZmlnLnN0YXR1cwogIAkgIENPTkZJR19MSU5LUz0gXAogIAkgICQoU0hFTEwp IGNvbmZpZy5zdGF0dXMKICAKQEAgLTI3LDEwICs1NSwxMCBAQCBpbmRleCBiZjZiMGRhLi5mMGQ0 NmRkIDEwMDY0NAogIAkkKFNIRUxMKSBjb25maWcuc3RhdHVzIC0tcmVjaGVjawogIAogZGlmZiAt LWdpdCBhL2dkYi9hZGEtbGFuZy5jIGIvZ2RiL2FkYS1sYW5nLmMKLWluZGV4IGFmMGZkYjUuLjAy YzZlNmYgMTAwNjQ0CitpbmRleCBhYTA5MGFmLi5lNjcyNzMxIDEwMDY0NAogLS0tIGEvZ2RiL2Fk YS1sYW5nLmMKICsrKyBiL2dkYi9hZGEtbGFuZy5jCi1AQCAtMTIwNTUsNiArMTIwNTUsNyBAQCBh ZGFfb3BlcmF0b3JfbGVuZ3RoIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcGMs IGludCAqb3BsZW5wLAorQEAgLTEyMDM3LDYgKzEyMDM3LDcgQEAgYWRhX29wZXJhdG9yX2xlbmd0 aCAoY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBjLCBpbnQgKm9wbGVucCwKICAK ICBzdGF0aWMgaW50CiAgYWRhX29wZXJhdG9yX2NoZWNrIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw LCBpbnQgcG9zLApAQCAtMzgsNyArNjYsNyBAQCBpbmRleCBhZjBmZGI1Li4wMmM2ZTZmIDEwMDY0 NAogIAkJICAgIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2 b2lkICpkYXRhKSwKICAJCSAgICB2b2lkICpkYXRhKQogIHsKLUBAIC0xMjA2OSwxMiArMTIwNzAs MTUgQEAgYWRhX29wZXJhdG9yX2NoZWNrIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9z LAorQEAgLTEyMDUxLDEyICsxMjA1MiwxNSBAQCBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBl eHByZXNzaW9uICpleHAsIGludCBwb3MsCiAgCWJyZWFrOwogIAogICAgICAgIGRlZmF1bHQ6CkBA IC01NiwxMSArODQsNDEgQEAgaW5kZXggYWYwZmRiNS4uMDJjNmU2ZiAxMDA2NDQKICAgICAgICAm JiAoKm9iamZpbGVfZnVuYykgKFRZUEVfT0JKRklMRSAodHlwZSksIGRhdGEpKQogICAgICByZXR1 cm4gMTsKICAKK2RpZmYgLS1naXQgYS9nZGIvYmZkLXRhcmdldC5jIGIvZ2RiL2JmZC10YXJnZXQu YworaW5kZXggNjcyODgwMC4uMjFmNTNiYiAxMDA2NDQKKy0tLSBhL2dkYi9iZmQtdGFyZ2V0LmMK KysrKyBiL2dkYi9iZmQtdGFyZ2V0LmMKK0BAIC0yMSw2ICsyMSw3IEBACisgI2luY2x1ZGUgInRh cmdldC5oIgorICNpbmNsdWRlICJiZmQtdGFyZ2V0LmgiCisgI2luY2x1ZGUgImV4ZWMuaCIKKysj aW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorIC8qIFRoZSBvYmplY3QgdGhhdCBpcyBzdG9yZWQgaW4g dGhlIHRhcmdldF9vcHMtPnRvX2RhdGEgZmllbGQgaGFzIHRoaXMKKyAgICB0eXBlLiAgKi8KK0BA IC03MCw3ICs3MSw3IEBAIHRhcmdldF9iZmRfeGNsb3NlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdCwg aW50IHF1aXR0aW5nKQorIHsKKyAgIHN0cnVjdCB0YXJnZXRfYmZkX2RhdGEgKmRhdGEgPSB0LT50 b19kYXRhOworIAorLSAgYmZkX2Nsb3NlIChkYXRhLT5iZmQpOworKyAgZ2RiX2JmZF91bnJlZiAo ZGF0YS0+YmZkKTsKKyAgIHhmcmVlIChkYXRhLT50YWJsZS5zZWN0aW9ucyk7CisgICB4ZnJlZSAo ZGF0YSk7CisgICB4ZnJlZSAodCk7CitAQCAtODMsNyArODQsNyBAQCB0YXJnZXRfYmZkX3Jlb3Bl biAoc3RydWN0IGJmZCAqYWJmZCkKKyAgIHN0cnVjdCB0YXJnZXRfYmZkX2RhdGEgKmRhdGE7Cisg CisgICBkYXRhID0gWFpBTExPQyAoc3RydWN0IHRhcmdldF9iZmRfZGF0YSk7CistICBkYXRhLT5i ZmQgPSBhYmZkOworKyAgZGF0YS0+YmZkID0gZ2RiX2JmZF9yZWYgKGFiZmQpOworICAgYnVpbGRf c2VjdGlvbl90YWJsZSAoYWJmZCwgJmRhdGEtPnRhYmxlLnNlY3Rpb25zLCAmZGF0YS0+dGFibGUu c2VjdGlvbnNfZW5kKTsKKyAKKyAgIHQgPSBYWkFMTE9DIChzdHJ1Y3QgdGFyZ2V0X29wcyk7CiBk aWZmIC0tZ2l0IGEvZ2RiL2Jsb2NrLmMgYi9nZGIvYmxvY2suYwotaW5kZXggMTUwMzczMC4uYTUy MmJjYSAxMDA2NDQKK2luZGV4IGEwZjgyZWMuLjA5N2RiZjYgMTAwNjQ0CiAtLS0gYS9nZGIvYmxv Y2suYwogKysrIGIvZ2RiL2Jsb2NrLmMKLUBAIC02ODcsMyArNjg3LDIxIEBAIGJsb2NrX2l0ZXJf bWF0Y2hfbmV4dCAoY29uc3QgY2hhciAqbmFtZSwKK0BAIC02OTIsMyArNjkyLDIxIEBAIGJsb2Nr X2l0ZXJfbWF0Y2hfbmV4dCAoY29uc3QgY2hhciAqbmFtZSwKICAKICAgIHJldHVybiBibG9ja19p dGVyX21hdGNoX3N0ZXAgKGl0ZXJhdG9yLCBuYW1lLCBjb21wYXJlLCAwKTsKICB9CkBAIC05NCwx MCArMTUyLDEwIEBAIGluZGV4IDk5YzQ3ODguLjZjZWI3MDQgMTAwNjQ0CiArCiAgI2VuZGlmIC8q IEJMT0NLX0ggKi8KIGRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9p bnQuYwotaW5kZXggYTg2N2IxMC4uZTQxYzY5MiAxMDA2NDQKK2luZGV4IDU1NTY5NGUuLjkyMTY0 MDUgMTAwNjQ0CiAtLS0gYS9nZGIvYnJlYWtwb2ludC5jCiArKysgYi9nZGIvYnJlYWtwb2ludC5j Ci1AQCAtMTUxNTQsNiArMTUxNTQsMjQgQEAgYWxsX3RyYWNlcG9pbnRzICh2b2lkKQorQEAgLTE1 NTI1LDYgKzE1NTI1LDI0IEBAIGFsbF90cmFjZXBvaW50cyAodm9pZCkKICAgIHJldHVybiB0cF92 ZWM7CiAgfQogIApAQCAtMTIyLDcgKzE4MCw3IEBAIGluZGV4IGE4NjdiMTAuLmU0MWM2OTIgMTAw NjQ0CiAgDAogIC8qIFRoaXMgaGVscCBzdHJpbmcgaXMgdXNlZCBmb3IgdGhlIGJyZWFrLCBoYnJl YWssIHRicmVhayBhbmQgdGhicmVhawogICAgIGNvbW1hbmRzLiAgSXQgaXMgZGVmaW5lZCBhcyBh IG1hY3JvIHRvIHByZXZlbnQgZHVwbGljYXRpb24uCi1AQCAtMTYwOTcsNCArMTYxMTUsNyBAQCBT aG93IHRoZSBjaGFubmVsIHRvIHVzZSBmb3IgZHluYW1pYyBwcmludGYiKSwgTlVMTCwKK0BAIC0x NjQ5MCw0ICsxNjUwOCw3IEBAIGFnZW50LXByaW50ZiBcInByaW50ZiBmb3JtYXQgc3RyaW5nXCIs IGFyZzEsIGFyZzIsIGFyZzMsIC4uLiwgYXJnblxuXAogICAgYXV0b21hdGljX2hhcmR3YXJlX2Jy ZWFrcG9pbnRzID0gMTsKICAKICAgIG9ic2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChi cmVha3BvaW50X2Fib3V0X3RvX3Byb2NlZWQpOwpAQCAtMTMwLDYgKzE4OCw1OCBAQCBpbmRleCBh ODY3YjEwLi5lNDFjNjkyIDEwMDY0NAogKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAoYnJl YWtwb2ludF90eXBlc19tYXJrX3VzZWQpOwogKyNlbmRpZgogIH0KK2RpZmYgLS1naXQgYS9nZGIv YnVpbGRzeW0uYyBiL2dkYi9idWlsZHN5bS5jCitpbmRleCBmMWZiNGJlLi41NGEwZWEzIDEwMDY0 NAorLS0tIGEvZ2RiL2J1aWxkc3ltLmMKKysrKyBiL2dkYi9idWlsZHN5bS5jCitAQCAtOTQxLDcg Kzk0MSw4IEBAIGJsb2NrX2NvbXBhciAoY29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQor ICAgIG5ldmVyIGtub3cgYWJvdXQgdGhpcyBlbXB0eSBmaWxlIChGSVhNRSkuICAqLworIAorIHN0 cnVjdCBzeW10YWIgKgorLWVuZF9zeW10YWIgKENPUkVfQUREUiBlbmRfYWRkciwgc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIGludCBzZWN0aW9uKQorK2VuZF9zeW10YWJfZnVsbCAoQ09SRV9BRERS IGVuZF9hZGRyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IHNlY3Rpb24sCisrCQkgaW50 IHJlcXVpcmVkKQorIHsKKyAgIHN0cnVjdCBzeW10YWIgKnN5bXRhYiA9IE5VTEw7CisgICBzdHJ1 Y3QgYmxvY2t2ZWN0b3IgKmJsb2NrdmVjdG9yOworQEAgLTEwMTMsNyArMTAxNCw4IEBAIGVuZF9z eW10YWIgKENPUkVfQUREUiBlbmRfYWRkciwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBz ZWN0aW9uKQorICAgY2xlYW51cF91bmRlZmluZWRfc3RhYnNfdHlwZXMgKG9iamZpbGUpOworICAg ZmluaXNoX2dsb2JhbF9zdGFicyAob2JqZmlsZSk7CisgCistICBpZiAocGVuZGluZ19ibG9ja3Mg PT0gTlVMTAorKyAgaWYgKCFyZXF1aXJlZAorKyAgICAgICYmIHBlbmRpbmdfYmxvY2tzID09IE5V TEwKKyAgICAgICAmJiBmaWxlX3N5bWJvbHMgPT0gTlVMTAorICAgICAgICYmIGdsb2JhbF9zeW1i b2xzID09IE5VTEwKKyAgICAgICAmJiBoYXZlX2xpbmVfbnVtYmVycyA9PSAwCitAQCAtMTIxOSw2 ICsxMjIxLDEyIEBAIGVuZF9zeW10YWIgKENPUkVfQUREUiBlbmRfYWRkciwgc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGludCBzZWN0aW9uKQorICAgcmV0dXJuIHN5bXRhYjsKKyB9CisgCisrc3Ry dWN0IHN5bXRhYiAqCisrZW5kX3N5bXRhYiAoQ09SRV9BRERSIGVuZF9hZGRyLCBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgaW50IHNlY3Rpb24pCisreworKyAgcmV0dXJuIGVuZF9zeW10YWJfZnVs bCAoZW5kX2FkZHIsIG9iamZpbGUsIHNlY3Rpb24sIDApOworK30KKysKKyAvKiBQdXNoIGEgY29u dGV4dCBibG9jay4gIEFyZ3MgYXJlIGFuIGlkZW50aWZ5aW5nIG5lc3RpbmcgbGV2ZWwKKyAgICAo Y2hlY2thYmxlIHdoZW4geW91IHBvcCBpdCksIGFuZCB0aGUgc3RhcnRpbmcgUEMgYWRkcmVzcyBv ZiB0aGlzCisgICAgY29udGV4dC4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkc3ltLmggYi9n ZGIvYnVpbGRzeW0uaAoraW5kZXggNDQ0ODI2Ny4uN2Q5Yjk3YyAxMDA2NDQKKy0tLSBhL2dkYi9i dWlsZHN5bS5oCisrKysgYi9nZGIvYnVpbGRzeW0uaAorQEAgLTI2MSw2ICsyNjEsMTAgQEAgZXh0 ZXJuIGNoYXIgKnBvcF9zdWJmaWxlICh2b2lkKTsKKyBleHRlcm4gc3RydWN0IHN5bXRhYiAqZW5k X3N5bXRhYiAoQ09SRV9BRERSIGVuZF9hZGRyLAorIAkJCQkgIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCBpbnQgc2VjdGlvbik7CisgCisrZXh0ZXJuIHN0cnVjdCBzeW10YWIgKmVuZF9zeW10YWJf ZnVsbCAoQ09SRV9BRERSIGVuZF9hZGRyLAorKwkJCQkgICAgICAgc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIGludCBzZWN0aW9uLAorKwkJCQkgICAgICAgaW50IHJlcXVpcmVkKTsKKysKKyAvKiBE ZWZpbmVkIGluIHN0YWJzcmVhZC5jLiAgKi8KKyAKKyBleHRlcm4gdm9pZCBzY2FuX2ZpbGVfZ2xv YmFscyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwogZGlmZiAtLWdpdCBhL2dkYi9jLXR5cGVw cmludC5jIGIvZ2RiL2MtdHlwZXByaW50LmMKIGluZGV4IGE1ODkyYjUuLjI5NDRjMmQgMTAwNjQ0 CiAtLS0gYS9nZGIvYy10eXBlcHJpbnQuYwpAQCAtMTUyLDYgKzI2Miw0OTIgQEAgaW5kZXggYTU4 OTJiNS4uMjk0NGMyZCAxMDA2NDQKICAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiXSIpOwog IAogIAljX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp LCBzdHJlYW0sCitkaWZmIC0tZ2l0IGEvZ2RiL2NjLXdpdGgtZHd6LnNoIGIvZ2RiL2NjLXdpdGgt ZHd6LnNoCitkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKK2luZGV4IGY2NmRlYjEuLjAwMDAwMDAK Ky0tLSBhL2dkYi9jYy13aXRoLWR3ei5zaAorKysrIC9kZXYvbnVsbAorQEAgLTEsODAgKzAsMCBA QAorLSMhIC9iaW4vc2gKKy0jIFdyYXBwZXIgYXJvdW5kIGdjYyB0byBydW4gJ2R3eicgd2hlbiBy dW5uaW5nIHRoZSB0ZXN0c3VpdGUuCistCistIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMiBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKy0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCist IworLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCistIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0jCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CistCistIyBUaGlzIHByb2dyYW0gcmVxdWlyZXMgZHd6IGluIGFkZGl0aW9uIHRvIGdjYy4KKy0j CistIyBFeGFtcGxlIHVzYWdlOgorLSMKKy0jIGJhc2gkIGNkICRvYmpkaXIvZ2RiL3Rlc3RzdWl0 ZQorLSMgYmFzaCQgcnVudGVzdCBcCistIyAgIENDX0ZPUl9UQVJHRVQ9Ii9iaW4vc2ggJHNyY2Rp ci9jYy13aXRoLWR3ei5zaCBnY2MiIFwKKy0jICAgQ1hYX0ZPUl9UQVJHRVQ9Ii9iaW4vc2ggJHNy Y2Rpci9jYy13aXRoLWR3ei5zaCBnKysiCistIworLQorLW15bmFtZT1jYy13aXRoLWR3ei5zaAor LQorLURXWj0ke0RXWjotZHd6fQorLQorLWhhdmVfbGluaz11bmtub3duCistbmV4dF9pc19vdXRw dXRfZmlsZT1ubworLW91dHB1dF9maWxlPWEub3V0CistCistZm9yIGFyZyBpbiAiJEAiCistZG8K Ky0gICAgaWYgWyAiJG5leHRfaXNfb3V0cHV0X2ZpbGUiID0gInllcyIgXQorLSAgICB0aGVuCist CW91dHB1dF9maWxlPSIkYXJnIgorLQluZXh0X2lzX291dHB1dF9maWxlPW5vCistCWNvbnRpbnVl CistICAgIGZpCistCistICAgICMgUG9vciBtYW4ncyBnY2MgYXJndW1lbnQgcGFyc2VyLgorLSAg ICAjIFdlIGRvbid0IG5lZWQgdG8gaGFuZGxlIGFsbCBhcmd1bWVudHMsIHdlIGp1c3QgbmVlZCB0 byBrbm93IGlmIHdlJ3JlCistICAgICMgZG9pbmcgYSBsaW5rIGFuZCB3aGF0IHRoZSBvdXRwdXQg ZmlsZSBpcy4KKy0gICAgIyBJdCdzIG5vdCBwZXJmZWN0LCBidXQgaXQgc2VlbXMgdG8gd29yayB3 ZWxsIGVub3VnaCBmb3IgdGhlIHRhc2sgYXQgaGFuZC4KKy0gICAgY2FzZSAiJGFyZyIgaW4KKy0g ICAgIi1jIikgaGF2ZV9saW5rPW5vIDs7CistICAgICItRSIpIGhhdmVfbGluaz1ubyA7OworLSAg ICAiLVMiKSBoYXZlX2xpbms9bm8gOzsKKy0gICAgIi1vIikgbmV4dF9pc19vdXRwdXRfZmlsZT15 ZXMgOzsKKy0gICAgZXNhYworLWRvbmUKKy0KKy1pZiBbICIkbmV4dF9pc19vdXRwdXRfZmlsZSIg PSAieWVzIiBdCistdGhlbgorLSAgICBlY2hvICIkbXluYW1lOiBVbmFibGUgdG8gZmluZCBvdXRw dXQgZmlsZSIgPiYyCistICAgIGV4aXQgMQorLWZpCistCistaWYgWyAiJGhhdmVfbGluayIgPSAi bm8iIF0KKy10aGVuCistICAgICIkQCIKKy0gICAgZXhpdCAkPworLWZpCistCistIiRAIgorLXJj PSQ/CistWyAkcmMgIT0gMCBdICYmIGV4aXQgJHJjCistaWYgWyAhIC1mICIkb3V0cHV0X2ZpbGUi IF0KKy10aGVuCistICAgIGVjaG8gIiRteW5hbWU6IEludGVybmFsIGVycm9yOiAkb3V0cHV0X2Zp bGUgbWlzc2luZy4iID4mMgorLSAgICBleGl0IDEKKy1maQorLQorLSREV1ogIiRvdXRwdXRfZmls ZSIgPiAvZGV2L251bGwgMj4mMQorLQorLWV4aXQgMAorZGlmZiAtLWdpdCBhL2dkYi9jYy13aXRo LWluZGV4LnNoIGIvZ2RiL2NjLXdpdGgtaW5kZXguc2gKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggNjQ0YmEzNC4uMDAwMDAwMAorLS0tIGEvZ2RiL2NjLXdpdGgtaW5kZXguc2gKKysr KyAvZGV2L251bGwKK0BAIC0xLDEyNiArMCwwIEBACistIyEgL2Jpbi9zaAorLSMgV3JhcHBlciBh cm91bmQgZ2NjIHRvIGFkZCB0aGUgLmdkYl9pbmRleCBzZWN0aW9uIHdoZW4gcnVubmluZyB0aGUg dGVzdHN1aXRlLgorLQorLSMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCistIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0jIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCistIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSMKKy0jIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKy0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCistIworLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorLQorLSMgVGhp cyBwcm9ncmFtIHJlcXVpcmVzIGdkYiBhbmQgb2JqY29weSBpbiBhZGRpdGlvbiB0byBnY2MuCist IyBUaGUgZGVmYXVsdCB2YWx1ZXMgYXJlIGdkYiBmcm9tIHRoZSBidWlsZCB0cmVlIGFuZCBvYmpj b3B5IGZyb20gJFBBVEguCistIyBUaGV5IG1heSBiZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgZW52 aXJvbm1lbnQgdmFyaWFibGVzIEdEQiBhbmQgT0JKQ09QWQorLSMgcmVzcGVjdGl2ZWx5LgorLSMg V2UgYXNzdW1lIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcyBlaXRoZXIgJG9iai9nZGIgb3IgJG9i ai9nZGIvdGVzdHN1aXRlLgorLSMKKy0jIEV4YW1wbGUgdXNhZ2U6CistIworLSMgYmFzaCQgY2Qg JG9iamRpci9nZGIvdGVzdHN1aXRlCistIyBiYXNoJCBydW50ZXN0IFwKKy0jICAgQ0NfRk9SX1RB UkdFVD0iL2Jpbi9zaCAkc3JjZGlyL2NjLXdpdGgtaW5kZXguc2ggZ2NjIiBcCistIyAgIENYWF9G T1JfVEFSR0VUPSIvYmluL3NoICRzcmNkaXIvY2Mtd2l0aC1pbmRleC5zaCBnKysiCistIworLSMg Rm9yIGRvY3VtZW50YXRpb24gb24gaW5kZXggZmlsZXM6IGluZm8gLWYgZ2RiLmluZm8gLW4gIklu ZGV4IEZpbGVzIgorLQorLW15bmFtZT1jYy13aXRoLWluZGV4LnNoCistCistaWYgWyAteiAiJEdE QiIgXQorLXRoZW4KKy0gICAgaWYgWyAtZiAuL2dkYiBdCistICAgIHRoZW4KKy0JR0RCPSIuL2dk YiIKKy0gICAgZWxpZiBbIC1mIC4uL2dkYiBdCistICAgIHRoZW4KKy0JR0RCPSIuLi9nZGIiCist ICAgIGVsaWYgWyAtZiAuLi8uLi9nZGIgXQorLSAgICB0aGVuCistCUdEQj0iLi4vLi4vZ2RiIgor LSAgICBlbHNlCistCWVjaG8gIiRteW5hbWU6IHVuYWJsZSB0byBmaW5kIHVzYWJsZSBnZGIiID4m MgorLQlleGl0IDEKKy0gICAgZmkKKy1maQorLQorLU9CSkNPUFk9JHtPQkpDT1BZOi1vYmpjb3B5 fQorLQorLWhhdmVfbGluaz11bmtub3duCistbmV4dF9pc19vdXRwdXRfZmlsZT1ubworLW91dHB1 dF9maWxlPWEub3V0CistCistZm9yIGFyZyBpbiAiJEAiCistZG8KKy0gICAgaWYgWyAiJG5leHRf aXNfb3V0cHV0X2ZpbGUiID0gInllcyIgXQorLSAgICB0aGVuCistCW91dHB1dF9maWxlPSIkYXJn IgorLQluZXh0X2lzX291dHB1dF9maWxlPW5vCistCWNvbnRpbnVlCistICAgIGZpCistCistICAg ICMgUG9vciBtYW4ncyBnY2MgYXJndW1lbnQgcGFyc2VyLgorLSAgICAjIFdlIGRvbid0IG5lZWQg dG8gaGFuZGxlIGFsbCBhcmd1bWVudHMsIHdlIGp1c3QgbmVlZCB0byBrbm93IGlmIHdlJ3JlCist ICAgICMgZG9pbmcgYSBsaW5rIGFuZCB3aGF0IHRoZSBvdXRwdXQgZmlsZSBpcy4KKy0gICAgIyBJ dCdzIG5vdCBwZXJmZWN0LCBidXQgaXQgc2VlbXMgdG8gd29yayB3ZWxsIGVub3VnaCBmb3IgdGhl IHRhc2sgYXQgaGFuZC4KKy0gICAgY2FzZSAiJGFyZyIgaW4KKy0gICAgIi1jIikgaGF2ZV9saW5r PW5vIDs7CistICAgICItRSIpIGhhdmVfbGluaz1ubyA7OworLSAgICAiLVMiKSBoYXZlX2xpbms9 bm8gOzsKKy0gICAgIi1vIikgbmV4dF9pc19vdXRwdXRfZmlsZT15ZXMgOzsKKy0gICAgZXNhYwor LWRvbmUKKy0KKy1pZiBbICIkbmV4dF9pc19vdXRwdXRfZmlsZSIgPSAieWVzIiBdCistdGhlbgor LSAgICBlY2hvICIkbXluYW1lOiBVbmFibGUgdG8gZmluZCBvdXRwdXQgZmlsZSIgPiYyCistICAg IGV4aXQgMQorLWZpCistCistaWYgWyAiJGhhdmVfbGluayIgPSAibm8iIF0KKy10aGVuCistICAg ICIkQCIKKy0gICAgZXhpdCAkPworLWZpCistCistaW5kZXhfZmlsZT0iJHtvdXRwdXRfZmlsZX0u Z2RiLWluZGV4IgorLWlmIFsgLWYgIiRpbmRleF9maWxlIiBdCistdGhlbgorLSAgICBlY2hvICIk bXluYW1lOiBJbmRleCBmaWxlICRpbmRleF9maWxlIGV4aXN0cywgd29uJ3QgY2xvYmJlci4iID4m MgorLSAgICBleGl0IDEKKy1maQorLQorLW91dHB1dF9kaXI9IiR7b3V0cHV0X2ZpbGUlLyp9Igor LVsgIiRvdXRwdXRfZGlyIiA9ICIkb3V0cHV0X2ZpbGUiIF0gJiYgb3V0cHV0X2Rpcj0iLiIKKy0K Ky0iJEAiCistcmM9JD8KKy1bICRyYyAhPSAwIF0gJiYgZXhpdCAkcmMKKy1pZiBbICEgLWYgIiRv dXRwdXRfZmlsZSIgXQorLXRoZW4KKy0gICAgZWNobyAiJG15bmFtZTogSW50ZXJuYWwgZXJyb3I6 ICRvdXRwdXRfZmlsZSBtaXNzaW5nLiIgPiYyCistICAgIGV4aXQgMQorLWZpCistCistJEdEQiAt LWJhdGNoLXNpbGVudCAtbnggLWV4ICJzZXQgYXV0by1sb2FkIG5vIiAtZXggImZpbGUgJG91dHB1 dF9maWxlIiAtZXggInNhdmUgZ2RiLWluZGV4ICRvdXRwdXRfZGlyIgorLXJjPSQ/CistWyAkcmMg IT0gMCBdICYmIGV4aXQgJHJjCistCistIyBHREIgbWlnaHQgbm90IGFsd2F5cyBjcmVhdGUgYW4g aW5kZXguICBDb3BlLgorLWlmIFsgLWYgIiRpbmRleF9maWxlIiBdCistdGhlbgorLSAgICAkT0JK Q09QWSAtLWFkZC1zZWN0aW9uIC5nZGJfaW5kZXg9IiRpbmRleF9maWxlIiBcCistCS0tc2V0LXNl Y3Rpb24tZmxhZ3MgLmdkYl9pbmRleD1yZWFkb25seSBcCistCSIkb3V0cHV0X2ZpbGUiICIkb3V0 cHV0X2ZpbGUiCistICAgIHJjPSQ/CistZWxzZQorLSAgICByYz0wCistZmkKKy0KKy1ybSAtZiAi JGluZGV4X2ZpbGUiCistZXhpdCAkcmMKK2RpZmYgLS1naXQgYS9nZGIvY2xpL2NsaS1kdW1wLmMg Yi9nZGIvY2xpL2NsaS1kdW1wLmMKK2luZGV4IDRhOGI1ZDEuLjEyNDQ3NjcgMTAwNjQ0CistLS0g YS9nZGIvY2xpL2NsaS1kdW1wLmMKKysrKyBiL2dkYi9jbGkvY2xpLWR1bXAuYworQEAgLTMyLDYg KzMyLDcgQEAKKyAjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIKKyAjaW5jbHVkZSAiZ2Ri Y29yZS5oIgorICNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCisrI2luY2x1ZGUgImdkYl9iZmQu aCIKKyAKKyAjZGVmaW5lIFhNQUxMT0MoVFlQRSkgKChUWVBFKikgeG1hbGxvYyAoc2l6ZW9mIChU WVBFKSkpCisgCitAQCAtMTExLDEyICsxMTIsMTIgQEAgYmZkX29wZW5yX3dpdGhfY2xlYW51cCAo Y29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCkKKyB7CisgICBiZmQgKmli ZmQ7CisgCistICBpYmZkID0gYmZkX29wZW5yIChmaWxlbmFtZSwgdGFyZ2V0KTsKKysgIGliZmQg PSBnZGJfYmZkX3JlZiAoYmZkX29wZW5yIChmaWxlbmFtZSwgdGFyZ2V0KSk7CisgICBpZiAoaWJm ZCA9PSBOVUxMKQorICAgICBlcnJvciAoXygiRmFpbGVkIHRvIG9wZW4gJXM6ICVzLiIpLCBmaWxl bmFtZSwgCisgCSAgIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKKyAKKy0gIG1ha2Vf Y2xlYW51cF9iZmRfY2xvc2UgKGliZmQpOworKyAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoaWJm ZCk7CisgICBpZiAoIWJmZF9jaGVja19mb3JtYXQgKGliZmQsIGJmZF9vYmplY3QpKQorICAgICBl cnJvciAoXygiJyVzJyBpcyBub3QgYSByZWNvZ25pemVkIGZpbGUgZm9ybWF0LiIpLCBmaWxlbmFt ZSk7CisgCitAQCAtMTMxLDExICsxMzIsMTEgQEAgYmZkX29wZW53X3dpdGhfY2xlYW51cCAoY29u c3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCwKKyAKKyAgIGlmICgqbW9kZSA9 PSAndycpCS8qIFdyaXRlOiBjcmVhdGUgbmV3IGZpbGUgKi8KKyAgICAgeworLSAgICAgIG9iZmQg PSBiZmRfb3BlbncgKGZpbGVuYW1lLCB0YXJnZXQpOworKyAgICAgIG9iZmQgPSBnZGJfYmZkX3Jl ZiAoYmZkX29wZW53IChmaWxlbmFtZSwgdGFyZ2V0KSk7CisgICAgICAgaWYgKG9iZmQgPT0gTlVM TCkKKyAJZXJyb3IgKF8oIkZhaWxlZCB0byBvcGVuICVzOiAlcy4iKSwgZmlsZW5hbWUsIAorIAkg ICAgICAgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworLSAgICAgIG1ha2VfY2xlYW51 cF9iZmRfY2xvc2UgKG9iZmQpOworKyAgICAgIG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKG9iZmQp OworICAgICAgIGlmICghYmZkX3NldF9mb3JtYXQgKG9iZmQsIGJmZF9vYmplY3QpKQorIAllcnJv ciAoXygiYmZkX29wZW53X3dpdGhfY2xlYW51cDogJXMuIiksIGJmZF9lcnJtc2cgKGJmZF9nZXRf ZXJyb3IgKCkpKTsKKyAgICAgfQorZGlmZiAtLWdpdCBhL2dkYi9jb250cmliL2NjLXdpdGgtdHdl YWtzLnNoIGIvZ2RiL2NvbnRyaWIvY2Mtd2l0aC10d2Vha3Muc2gKK25ldyBmaWxlIG1vZGUgMTAw NzU1CitpbmRleCAwMDAwMDAwLi45MjcwZGI0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvY29u dHJpYi9jYy13aXRoLXR3ZWFrcy5zaAorQEAgLTAsMCArMSwxNjIgQEAKKysjISAvYmluL3NoCisr IyBXcmFwcGVyIGFyb3VuZCBnY2MgdG8gdHdlYWsgdGhlIG91dHB1dCBpbiB2YXJpb3VzIHdheXMg d2hlbiBydW5uaW5nCisrIyB0aGUgdGVzdHN1aXRlLgorKworKyMgQ29weXJpZ2h0IChDKSAyMDEw LTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorKworKyMgVGhpcyBwcm9ncmFtIHJlcXVpcmVzIGdkYiBhbmQgb2JqY29weSBp biBhZGRpdGlvbiB0byBnY2MuCisrIyBUaGUgZGVmYXVsdCB2YWx1ZXMgYXJlIGdkYiBmcm9tIHRo ZSBidWlsZCB0cmVlIGFuZCBvYmpjb3B5IGZyb20gJFBBVEguCisrIyBUaGV5IG1heSBiZSBvdmVy cmlkZGVuIGJ5IHNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIEdEQiBhbmQgT0JKQ09QWQor KyMgcmVzcGVjdGl2ZWx5LgorKyMgV2UgYXNzdW1lIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcyBl aXRoZXIgJG9iai9nZGIgb3IgJG9iai9nZGIvdGVzdHN1aXRlLgorKyMKKysjIEV4YW1wbGUgdXNh Z2U6CisrIworKyMgYmFzaCQgY2QgJG9iamRpci9nZGIvdGVzdHN1aXRlCisrIyBiYXNoJCBydW50 ZXN0IFwKKysjICAgQ0NfRk9SX1RBUkdFVD0iL2Jpbi9zaCAkc3JjZGlyL2NjLXdpdGgtdHdlYWtz LnNoIEFSR1MgZ2NjIiBcCisrIyAgIENYWF9GT1JfVEFSR0VUPSIvYmluL3NoICRzcmNkaXIvY2Mt d2l0aC10d2Vha3Muc2ggQVJHUyBnKysiCisrIworKyMgRm9yIGRvY3VtZW50YXRpb24gb24gaW5k ZXggZmlsZXM6IGluZm8gLWYgZ2RiLmluZm8gLW4gIkluZGV4IEZpbGVzIgorKyMgRm9yIGluZm9y bWF0aW9uIGFib3V0ICdkd3onLCBzZWUgdGhlIGFubm91bmNlbWVudDoKKysjICAgICBodHRwOi8v Z2NjLmdudS5vcmcvbWwvZ2NjLzIwMTItMDQvbXNnMDA2ODYuaHRtbAorKyMgKE1vcmUgZG9jdW1l bnRhdGlvbiBpcyB0byBjb21lLikKKysKKysjIEFSR1MgZGV0ZXJtaW5lIHdoYXQgaXMgZG9uZS4g IFRoZXkgY2FuIGJlOgorKyMgLXogY29tcHJlc3MgdXNpbmcgZHd6CisrIyAtbSBjb21wcmVzcyB1 c2luZyBkd3ogLW0KKysjIC1pIG1ha2UgYW4gaW5kZXgKKysjIElmIG5vdGhpbmcgaXMgZ2l2ZW4s IG5vIGNoYW5nZXMgYXJlIG1hZGUKKysKKytteW5hbWU9Y2Mtd2l0aC10d2Vha3Muc2gKKysKKytp ZiBbIC16ICIkR0RCIiBdCisrdGhlbgorKyAgICBpZiBbIC1mIC4vZ2RiIF0KKysgICAgdGhlbgor KwlHREI9Ii4vZ2RiIgorKyAgICBlbGlmIFsgLWYgLi4vZ2RiIF0KKysgICAgdGhlbgorKwlHREI9 Ii4uL2dkYiIKKysgICAgZWxpZiBbIC1mIC4uLy4uL2dkYiBdCisrICAgIHRoZW4KKysJR0RCPSIu Li8uLi9nZGIiCisrICAgIGVsc2UKKysJZWNobyAiJG15bmFtZTogdW5hYmxlIHRvIGZpbmQgdXNh YmxlIGdkYiIgPiYyCisrCWV4aXQgMQorKyAgICBmaQorK2ZpCisrCisrT0JKQ09QWT0ke09CSkNP UFk6LW9iamNvcHl9CisrCisrRFdaPSR7RFdaOi1kd3p9CisrCisraGF2ZV9saW5rPXVua25vd24K KytuZXh0X2lzX291dHB1dF9maWxlPW5vCisrb3V0cHV0X2ZpbGU9YS5vdXQKKysKKyt3YW50X2lu ZGV4PWZhbHNlCisrd2FudF9kd3o9ZmFsc2UKKyt3YW50X211bHRpPWZhbHNlCisrCisrd2hpbGUg WyAkIyAtZ3QgMCBdOyBkbworKyAgICBjYXNlICIkMSIgaW4KKysJLXopIHdhbnRfZHd6PXRydWUg OzsKKysJLWkpIHdhbnRfaW5kZXg9dHJ1ZSA7OworKwktbSkgd2FudF9tdWx0aT10cnVlIDs7Cisr CSopIGJyZWFrIDs7CisrICAgIGVzYWMKKysgICAgc2hpZnQKKytkb25lCisrCisrZm9yIGFyZyBp biAiJEAiCisrZG8KKysgICAgaWYgWyAiJG5leHRfaXNfb3V0cHV0X2ZpbGUiID0gInllcyIgXQor KyAgICB0aGVuCisrCW91dHB1dF9maWxlPSIkYXJnIgorKwluZXh0X2lzX291dHB1dF9maWxlPW5v CisrCWNvbnRpbnVlCisrICAgIGZpCisrCisrICAgICMgUG9vciBtYW4ncyBnY2MgYXJndW1lbnQg cGFyc2VyLgorKyAgICAjIFdlIGRvbid0IG5lZWQgdG8gaGFuZGxlIGFsbCBhcmd1bWVudHMsIHdl IGp1c3QgbmVlZCB0byBrbm93IGlmIHdlJ3JlCisrICAgICMgZG9pbmcgYSBsaW5rIGFuZCB3aGF0 IHRoZSBvdXRwdXQgZmlsZSBpcy4KKysgICAgIyBJdCdzIG5vdCBwZXJmZWN0LCBidXQgaXQgc2Vl bXMgdG8gd29yayB3ZWxsIGVub3VnaCBmb3IgdGhlIHRhc2sgYXQgaGFuZC4KKysgICAgY2FzZSAi JGFyZyIgaW4KKysgICAgIi1jIikgaGF2ZV9saW5rPW5vIDs7CisrICAgICItRSIpIGhhdmVfbGlu az1ubyA7OworKyAgICAiLVMiKSBoYXZlX2xpbms9bm8gOzsKKysgICAgIi1vIikgbmV4dF9pc19v dXRwdXRfZmlsZT15ZXMgOzsKKysgICAgZXNhYworK2RvbmUKKysKKytpZiBbICIkbmV4dF9pc19v dXRwdXRfZmlsZSIgPSAieWVzIiBdCisrdGhlbgorKyAgICBlY2hvICIkbXluYW1lOiBVbmFibGUg dG8gZmluZCBvdXRwdXQgZmlsZSIgPiYyCisrICAgIGV4aXQgMQorK2ZpCisrCisraWYgWyAiJGhh dmVfbGluayIgPSAibm8iIF0KKyt0aGVuCisrICAgICIkQCIKKysgICAgZXhpdCAkPworK2ZpCisr CisraW5kZXhfZmlsZT0iJHtvdXRwdXRfZmlsZX0uZ2RiLWluZGV4IgorK2lmIFsgIiR3YW50X2lu ZGV4IiA9IHRydWUgXSAmJiBbIC1mICIkaW5kZXhfZmlsZSIgXQorK3RoZW4KKysgICAgZWNobyAi JG15bmFtZTogSW5kZXggZmlsZSAkaW5kZXhfZmlsZSBleGlzdHMsIHdvbid0IGNsb2JiZXIuIiA+ JjIKKysgICAgZXhpdCAxCisrZmkKKysKKytvdXRwdXRfZGlyPSIke291dHB1dF9maWxlJS8qfSIK KytbICIkb3V0cHV0X2RpciIgPSAiJG91dHB1dF9maWxlIiBdICYmIG91dHB1dF9kaXI9Ii4iCisr CisrIiRAIgorK3JjPSQ/CisrWyAkcmMgIT0gMCBdICYmIGV4aXQgJHJjCisraWYgWyAhIC1mICIk b3V0cHV0X2ZpbGUiIF0KKyt0aGVuCisrICAgIGVjaG8gIiRteW5hbWU6IEludGVybmFsIGVycm9y OiAkb3V0cHV0X2ZpbGUgbWlzc2luZy4iID4mMgorKyAgICBleGl0IDEKKytmaQorKworK2lmIFsg IiR3YW50X2luZGV4IiA9IHRydWUgXTsgdGhlbgorKyAgICAkR0RCIC0tYmF0Y2gtc2lsZW50IC1u eCAtZXggInNldCBhdXRvLWxvYWQgbm8iIC1leCAiZmlsZSAkb3V0cHV0X2ZpbGUiIC1leCAic2F2 ZSBnZGItaW5kZXggJG91dHB1dF9kaXIiCisrICAgIHJjPSQ/CisrICAgIFsgJHJjICE9IDAgXSAm JiBleGl0ICRyYworKworKyAgICAjIEdEQiBtaWdodCBub3QgYWx3YXlzIGNyZWF0ZSBhbiBpbmRl eC4gIENvcGUuCisrICAgIGlmIFsgLWYgIiRpbmRleF9maWxlIiBdCisrICAgIHRoZW4KKysJJE9C SkNPUFkgLS1hZGQtc2VjdGlvbiAuZ2RiX2luZGV4PSIkaW5kZXhfZmlsZSIgXAorKwkgICAgLS1z ZXQtc2VjdGlvbi1mbGFncyAuZ2RiX2luZGV4PXJlYWRvbmx5IFwKKysJICAgICIkb3V0cHV0X2Zp bGUiICIkb3V0cHV0X2ZpbGUiCisrCXJjPSQ/CisrICAgIGVsc2UKKysJcmM9MAorKyAgICBmaQor KyAgICBbICRyYyAhPSAwIF0gJiYgZXhpdCAkcmMKKytmaQorKworK2lmIFsgIiR3YW50X2R3eiIg PSB0cnVlIF07IHRoZW4KKysgICAgJERXWiAiJG91dHB1dF9maWxlIiA+IC9kZXYvbnVsbCAyPiYx CisrZWxpZiBbICIkd2FudF9tdWx0aSIgPSB0cnVlIF07IHRoZW4KKysgICAgY3AgJG91dHB1dF9m aWxlICR7b3V0cHV0X2ZpbGV9LmFsdAorKyAgICAkRFdaIC1tICR7b3V0cHV0X2ZpbGV9LmR3eiAi JG91dHB1dF9maWxlIiAke291dHB1dF9maWxlfS5hbHQgPiAvZGV2L251bGwgMj4mMQorK2ZpCisr Cisrcm0gLWYgIiRpbmRleF9maWxlIgorK2V4aXQgJHJjCitkaWZmIC0tZ2l0IGEvZ2RiL2NvcmVs b3cuYyBiL2dkYi9jb3JlbG93LmMKK2luZGV4IGRkNjI1NjAuLjM4MGMwZGMgMTAwNjQ0CistLS0g YS9nZGIvY29yZWxvdy5jCisrKysgYi9nZGIvY29yZWxvdy5jCitAQCAtNDYsNiArNDYsNyBAQAor ICNpbmNsdWRlICJmaWxlbmFtZXMuaCIKKyAjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCisgI2luY2x1 ZGUgIm9iamZpbGVzLmgiCisrI2luY2x1ZGUgImdkYl9iZmQuaCIKKyAKKyAjaWZuZGVmIE9fTEFS R0VGSUxFCisgI2RlZmluZSBPX0xBUkdFRklMRSAwCitAQCAtMjE1LDkgKzIxNiw3IEBAIGNvcmVf Y2xvc2UgKGludCBxdWl0dGluZykKKyAJICBjb3JlX2RhdGEgPSBOVUxMOworIAl9CisgCistICAg ICAgbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKGNvcmVfYmZkKTsKKy0gICAgICBnZGJfYmZkX2Ns b3NlX29yX3dhcm4gKGNvcmVfYmZkKTsKKy0gICAgICB4ZnJlZSAobmFtZSk7CisrICAgICAgZ2Ri X2JmZF91bnJlZiAoY29yZV9iZmQpOworICAgICAgIGNvcmVfYmZkID0gTlVMTDsKKyAgICAgfQor ICAgY29yZV92ZWMgPSBOVUxMOworQEAgLTMxOSwxMiArMzE4LDE0IEBAIGNvcmVfb3BlbiAoY2hh ciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKKyAgIGlmIChzY3JhdGNoX2NoYW4gPCAwKQorICAg ICBwZXJyb3Jfd2l0aF9uYW1lIChmaWxlbmFtZSk7CisgCistICB0ZW1wX2JmZCA9IGJmZF9mb3Bl biAoZmlsZW5hbWUsIGdudXRhcmdldCwgCistCQkJd3JpdGVfZmlsZXMgPyBGT1BFTl9SVUIgOiBG T1BFTl9SQiwKKy0JCQlzY3JhdGNoX2NoYW4pOworKyAgdGVtcF9iZmQgPSBnZGJfYmZkX3JlZiAo YmZkX2ZvcGVuIChmaWxlbmFtZSwgZ251dGFyZ2V0LCAKKysJCQkJICAgICB3cml0ZV9maWxlcyA/ IEZPUEVOX1JVQiA6IEZPUEVOX1JCLAorKwkJCQkgICAgIHNjcmF0Y2hfY2hhbikpOworICAgaWYg KHRlbXBfYmZkID09IE5VTEwpCisgICAgIHBlcnJvcl93aXRoX25hbWUgKGZpbGVuYW1lKTsKKyAK KysgIGdkYl9iZmRfc3Rhc2hfZmlsZW5hbWUgKHRlbXBfYmZkKTsKKysKKyAgIGlmICghYmZkX2No ZWNrX2Zvcm1hdCAodGVtcF9iZmQsIGJmZF9jb3JlKQorICAgICAgICYmICFnZGJfY2hlY2tfZm9y bWF0ICh0ZW1wX2JmZCkpCisgICAgIHsKK0BAIC0zMzIsNyArMzMzLDcgQEAgY29yZV9vcGVuIChj aGFyICpmaWxlbmFtZSwgaW50IGZyb21fdHR5KQorICAgICAgIC8qIEZJWE1FOiBzaG91bGQgYmUg Y2hlY2tpbmcgZm9yIGVycm9ycyBmcm9tIGJmZF9jbG9zZSAoZm9yIG9uZQorICAgICAgICAgIHRo aW5nLCBvbiBlcnJvciBpdCBkb2VzIG5vdCBmcmVlIGFsbCB0aGUgc3RvcmFnZSBhc3NvY2lhdGVk CisgICAgICAgICAgd2l0aCB0aGUgYmZkKS4gICovCistICAgICAgbWFrZV9jbGVhbnVwX2JmZF9j bG9zZSAodGVtcF9iZmQpOworKyAgICAgIG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKHRlbXBfYmZk KTsKKyAgICAgICBlcnJvciAoXygiXCIlc1wiIGlzIG5vdCBhIGNvcmUgZHVtcDogJXMiKSwKKyAJ ICAgICBmaWxlbmFtZSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworICAgICB9CitA QCAtMzQwLDcgKzM0MSw3IEBAIGNvcmVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0 eSkKKyAgIC8qIExvb2tzIHNlbWktcmVhc29uYWJsZS4gIFRvc3MgdGhlIG9sZCBjb3JlIGZpbGUg YW5kIHdvcmsgb24gdGhlCisgICAgICBuZXcuICAqLworIAorLSAgZGlzY2FyZF9jbGVhbnVwcyAo b2xkX2NoYWluKTsJLyogRG9uJ3QgZnJlZSBmaWxlbmFtZSBhbnkgbW9yZSAqLworKyAgZG9fY2xl YW51cHMgKG9sZF9jaGFpbik7CisgICB1bnB1c2hfdGFyZ2V0ICgmY29yZV9vcHMpOworICAgY29y ZV9iZmQgPSB0ZW1wX2JmZDsKKyAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAoY29yZV9jbG9z ZV9jbGVhbnVwLCAwIC8qaWdub3JlKi8pOwogZGlmZiAtLWdpdCBhL2dkYi9kYXRhLWRpcmVjdG9y eS9NYWtlZmlsZS5pbiBiL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgogaW5kZXggODdj NmRkNC4uMWMyNjY1MiAxMDA2NDQKIC0tLSBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5p bgpAQCAtMTg3LDkgKzc4MywxOCBAQCBpbmRleCA4N2M2ZGQ0Li4xYzI2NjUyIDEwMDY0NAogIEZM QUdTX1RPX1BBU1MgPSBcCiAgCSJwcmVmaXg9JChwcmVmaXgpIiBcCiBkaWZmIC0tZ2l0IGEvZ2Ri L2RlZnMuaCBiL2dkYi9kZWZzLmgKLWluZGV4IDAzMDkyYWEuLjZkNzMzODYgMTAwNjQ0CitpbmRl eCAxYzZmYTc5Li5lYzA4MzQ4IDEwMDY0NAogLS0tIGEvZ2RiL2RlZnMuaAogKysrIGIvZ2RiL2Rl ZnMuaAorQEAgLTMxNSw3ICszMTUsNyBAQCBleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfY2xl YW51cF9jbG9zZSAoaW50IGZkKTsKKyAKKyBleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfY2xl YW51cF9mY2xvc2UgKEZJTEUgKmZpbGUpOworIAorLWV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFr ZV9jbGVhbnVwX2JmZF9jbG9zZSAoYmZkICphYmZkKTsKKytleHRlcm4gc3RydWN0IGNsZWFudXAg Km1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKGJmZCAqYWJmZCk7CisgCisgc3RydWN0IG9ic3RhY2s7 CisgZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfb2JzdGFja19mcmVlIChzdHJ1 Y3Qgb2JzdGFjayAqb2JzdGFjayk7CiBAQCAtMzUzLDYgKzM1Myw4IEBAIGV4dGVybiBzdHJ1Y3Qg Y2xlYW51cCAqbWFrZV9jbGVhbnVwX3Jlc3RvcmVfcGFnZV9pbmZvICh2b2lkKTsKICBleHRlcm4g c3RydWN0IGNsZWFudXAgKgogICAgc2V0X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0 b3JlX3BhZ2VfaW5mbyAodm9pZCk7CkBAIC0yMDAsMTAgKzgwNSwxMCBAQCBpbmRleCAwMzA5MmFh Li42ZDczMzg2IDEwMDY0NAogIGV4dGVybiBjaGFyICp4ZnVsbHBhdGggKGNvbnN0IGNoYXIgKik7 CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGlu Zm8KLWluZGV4IDAxNGNmZDguLmQwYThjNTEgMTAwNjQ0CitpbmRleCBkMzI0YTkzLi45Y2NmN2Yx IDEwMDY0NAogLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbwogKysrIGIvZ2RiL2RvYy9nZGIudGV4 aW5mbwotQEAgLTExOTEsNiArMTE5MSwxNiBAQCBmb3IgcmVtb3RlIGRlYnVnZ2luZy4KK0BAIC0x MTk0LDYgKzExOTQsMTYgQEAgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcuCiAgUnVuIHVzaW5nIEB2YXJ7 ZGV2aWNlfSBmb3IgeW91ciBwcm9ncmFtJ3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dC4KICBA YyBGSVhNRToga2luZ2RvbiB0aGlua3MgdGhlcmUgaXMgbW9yZSB0byAtdHR5LiAgSW52ZXN0aWdh dGUuCiAgCkBAIC0yMjAsNyArODI1LDcgQEAgaW5kZXggMDE0Y2ZkOC4uZDBhOGM1MSAxMDA2NDQK ICBAYyByZXNvbHZlIHRoZSBzaXR1YXRpb24gb2YgdGhlc2UgZXZlbnR1YWxseQogIEBpdGVtIC10 dWkKICBAY2luZGV4IEBjb2Rley0tdHVpfQotQEAgLTIyNDk0LDggKzIyNTA0LDYgQEAgY29udGFp bmluZyBAY29kZXtlbmR9LiAgRm9yIGV4YW1wbGU6CitAQCAtMjI1NDEsOCArMjI1NTEsNiBAQCBj b250YWluaW5nIEBjb2Rle2VuZH0uICBGb3IgZXhhbXBsZToKICAKICBAc21hbGxleGFtcGxlCiAg KEB2YWx1ZXtHREJQfSkgcHl0aG9uCkBAIC0yMjksNyArODM0LDcgQEAgaW5kZXggMDE0Y2ZkOC4u ZDBhOGM1MSAxMDA2NDQKICA+cHJpbnQgMjMKICA+ZW5kCiAgMjMKLUBAIC0yMjUwOSw2ICsyMjUx NywxNCBAQCBjb250cm9sbGVkIHVzaW5nIEBjb2Rle3NldCBweXRob24gcHJpbnQtc3RhY2t9OiBp ZiBAY29kZXtmdWxsfSwgdGhlbgorQEAgLTIyNTU2LDYgKzIyNTY0LDE0IEBAIGNvbnRyb2xsZWQg dXNpbmcgQGNvZGV7c2V0IHB5dGhvbiBwcmludC1zdGFja306IGlmIEBjb2Rle2Z1bGx9LCB0aGVu CiAgZnVsbCBQeXRob24gc3RhY2sgcHJpbnRpbmcgaXMgZW5hYmxlZDsgaWYgQGNvZGV7bm9uZX0s IHRoZW4gUHl0aG9uIHN0YWNrCiAgYW5kIG1lc3NhZ2UgcHJpbnRpbmcgaXMgZGlzYWJsZWQ7IGlm IEBjb2Rle21lc3NhZ2V9LCB0aGUgZGVmYXVsdCwgb25seQogIHRoZSBtZXNzYWdlIGNvbXBvbmVu dCBvZiB0aGUgZXJyb3IgaXMgcHJpbnRlZC4KQEAgLTI0NCw3ICs4NDksNyBAQCBpbmRleCAwMTRj ZmQ4Li5kMGE4YzUxIDEwMDY0NAogIEBlbmQgdGFibGUKICAKICBJdCBpcyBhbHNvIHBvc3NpYmxl IHRvIGV4ZWN1dGUgYSBQeXRob24gc2NyaXB0IGZyb20gdGhlIEB2YWx1ZXtHREJOfQotQEAgLTIy NTMwLDYgKzIyNTQ2LDE0IEBAIGFuZCB0aHVzIGlzIGFsd2F5cyBhdmFpbGFibGUuCitAQCAtMjI1 NzcsNiArMjI1OTMsMTQgQEAgYW5kIHRodXMgaXMgYWx3YXlzIGF2YWlsYWJsZS4KICBAY2luZGV4 IHB5dGhvbiBhcGkKICBAY2luZGV4IHByb2dyYW1taW5nIGluIHB5dGhvbgogIApAQCAtMjYwLDcg Kzg2NSw3IEBAIGluZGV4IDAxNGNmZDguLmQwYThjNTEgMTAwNjQ0CiAgQGNpbmRleCBweXRob24g cGFnaW5hdGlvbgogIEF0IHN0YXJ0dXAsIEB2YWx1ZXtHREJOfSBvdmVycmlkZXMgUHl0aG9uJ3Mg QGNvZGV7c3lzLnN0ZG91dH0gYW5kCiBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5m byBiL2dkYi9kb2MvZ2RiaW50LnRleGluZm8KLWluZGV4IDI2N2E2ZWIuLjRmMTU5YjQgMTAwNjQ0 CitpbmRleCA5YTQ0MGVmLi5kZDA0NjMzIDEwMDY0NAogLS0tIGEvZ2RiL2RvYy9nZGJpbnQudGV4 aW5mbwogKysrIGIvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogQEAgLTIxMDMsNiArMjEwMywxOCBA QCB0aW1lLCBhbmQgc28gd2UgYXR0ZW1wdCB0byBoYW5kbGUgc3ltYm9scyBpbmNyZW1lbnRhbGx5 LiAgRm9yIGluc3RhbmNlLApAQCAtNDA0LDExICsxMDA5LDU1IEBAIGluZGV4IDY4MjdlZDguLmM2 M2I5MDEgMTAwNjQ0CiAgQGRlZnR5cGVmdW4gdm9pZCB0ZXN0X25vdGlmaWNhdGlvbiAoaW50IEB2 YXJ7c29tZWFyZ30pCiAgVGhpcyBvYnNlcnZlciBpcyB1c2VkIGZvciBpbnRlcm5hbCB0ZXN0aW5n LiAgRG8gbm90IHVzZS4gIAogIFNlZSB0ZXN0c3VpdGUvZ2RiLmdkYi9vYnNlcnZlci5leHAuCitk aWZmIC0tZ2l0IGEvZ2RiL2RzcmVjLmMgYi9nZGIvZHNyZWMuYworaW5kZXggZDJjOTliMi4uNjZk NGMxMyAxMDA2NDQKKy0tLSBhL2dkYi9kc3JlYy5jCisrKysgYi9nZGIvZHNyZWMuYworQEAgLTIz LDYgKzIzLDcgQEAKKyAjaW5jbHVkZSA8dGltZS5oPgorICNpbmNsdWRlICJnZGJfYXNzZXJ0Lmgi CisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorIGV4 dGVybiB2b2lkIHJlcG9ydF90cmFuc2Zlcl9wZXJmb3JtYW5jZSAodW5zaWduZWQgbG9uZywgdGlt ZV90LCB0aW1lX3QpOworIAorQEAgLTU2LDE5ICs1NywyMiBAQCBsb2FkX3NyZWMgKHN0cnVjdCBz ZXJpYWwgKmRlc2MsIGNvbnN0IGNoYXIgKmZpbGUsIGJmZF92bWEgbG9hZF9vZmZzZXQsCisgICBp bnQgcmVjbGVuOworICAgdGltZV90IHN0YXJ0X3RpbWUsIGVuZF90aW1lOworICAgdW5zaWduZWQg bG9uZyBkYXRhX2NvdW50ID0gMDsKKysgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOworIAorICAg c3JlYyA9IChjaGFyICopIGFsbG9jYSAobWF4cmVjc2l6ZSArIDEpOworIAorLSAgYWJmZCA9IGJm ZF9vcGVuciAoZmlsZSwgMCk7CisrICBhYmZkID0gZ2RiX2JmZF9yZWYgKGJmZF9vcGVuciAoZmls ZSwgMCkpOworICAgaWYgKCFhYmZkKQorICAgICB7CisgICAgICAgcHJpbnRmX2ZpbHRlcmVkIChf KCJVbmFibGUgdG8gb3BlbiBmaWxlICVzXG4iKSwgZmlsZSk7CisgICAgICAgcmV0dXJuOworICAg ICB9CisgCisrICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoYWJmZCk7CisgICBp ZiAoYmZkX2NoZWNrX2Zvcm1hdCAoYWJmZCwgYmZkX29iamVjdCkgPT0gMCkKKyAgICAgeworICAg ICAgIHByaW50Zl9maWx0ZXJlZCAoXygiRmlsZSBpcyBub3QgYW4gb2JqZWN0IGZpbGVcbiIpKTsK KysgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisgICAgICAgcmV0dXJuOworICAgICB9Cisg CitAQCAtMTcwLDYgKzE3NCw3IEBAIGxvYWRfc3JlYyAoc3RydWN0IHNlcmlhbCAqZGVzYywgY29u c3QgY2hhciAqZmlsZSwgYmZkX3ZtYSBsb2FkX29mZnNldCwKKyAgIHNlcmlhbF9mbHVzaF9pbnB1 dCAoZGVzYyk7CisgCisgICByZXBvcnRfdHJhbnNmZXJfcGVyZm9ybWFuY2UgKGRhdGFfY291bnQs IHN0YXJ0X3RpbWUsIGVuZF90aW1lKTsKKysgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyB9Cisg CisgLyoKIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyZXhwci5jIGIvZ2RiL2R3YXJmMmV4cHIuYwot aW5kZXggZTBhYWZjNy4uNzM4NzcxMSAxMDA2NDQKK2luZGV4IDIxNGIzNzEuLmQ5YjM3NTEgMTAw NjQ0CiAtLS0gYS9nZGIvZHdhcmYyZXhwci5jCiArKysgYi9nZGIvZHdhcmYyZXhwci5jCi1AQCAt MTQ1OCw2ICsxNDU4LDE0IEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2Nv bnRleHQgKmN0eCwKK0BAIC0xNDgwLDYgKzE0ODAsMTQgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3Ry dWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAogIAkgIH0KICAJICBicmVhazsKICAKQEAgLTQy NCw3ICsxMDczLDcgQEAgaW5kZXggZTBhYWZjNy4uNzM4NzcxMSAxMDA2NDQKICAJICBlcnJvciAo XygiVW5oYW5kbGVkIGR3YXJmIGV4cHJlc3Npb24gb3Bjb2RlIDB4JXgiKSwgb3ApOwogIAl9CiBk aWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuaCBiL2dkYi9kd2FyZjJleHByLmgKLWluZGV4IGYz OWVmM2MuLjA2NmNiMTAgMTAwNjQ0CitpbmRleCBkYjQ5YjljLi4zYWUwYmUxIDEwMDY0NAogLS0t IGEvZ2RiL2R3YXJmMmV4cHIuaAogKysrIGIvZ2RiL2R3YXJmMmV4cHIuaAogQEAgLTkxLDEyICs5 MSw4IEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MKQEAgLTQ0MSwxMCArMTA5MCwx MCBAQCBpbmRleCBmMzllZjNjLi4wNjZjYjEwIDEwMDY0NAogIAogIC8qIFRoZSBsb2NhdGlvbiBv ZiBhIHZhbHVlLiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYybG9jLmMgYi9nZGIvZHdhcmYy bG9jLmMKLWluZGV4IDhjOTdmMTkuLmE2ZjNlOWMgMTAwNjQ0CitpbmRleCA2ZmVlYWI2Li44MGRk OWJjIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMmxvYy5jCiArKysgYi9nZGIvZHdhcmYybG9jLmMK LUBAIC0yNzQsNiArMjc0LDkgQEAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24KK0BAIC0yOTMsNiAr MjkzLDkgQEAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24KICB7CiAgICBzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWU7CiAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3U7CkBAIC00NTQs NyArMTEwMyw3IEBAIGluZGV4IDhjOTdmMTkuLmE2ZjNlOWMgMTAwNjQ0CiAgfTsKICAKICAvKiBI ZWxwZXIgZnVuY3Rpb25zIGZvciBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MuICAqLwotQEAgLTMz MywxNiArMzM2LDE0IEBAIHN0YXRpYyB2b2lkCitAQCAtMzUyLDE2ICszNTUsMTQgQEAgc3RhdGlj IHZvaWQKICBkd2FyZl9leHByX2ZyYW1lX2Jhc2VfMSAoc3RydWN0IHN5bWJvbCAqZnJhbWVmdW5j LCBDT1JFX0FERFIgcGMsCiAgCQkJIGNvbnN0IGdkYl9ieXRlICoqc3RhcnQsIHNpemVfdCAqbGVu Z3RoKQogIHsKQEAgLTQ3Myw3ICsxMTIyLDcgQEAgaW5kZXggOGM5N2YxOS4uYTZmM2U5YyAxMDA2 NDQKICAgICAgewogICAgICAgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqc3ltYmF0b247 CiAgCi1AQCAtMzU1LDEwICszNTYsMjMgQEAgZHdhcmZfZXhwcl9mcmFtZV9iYXNlXzEgKHN0cnVj dCBzeW1ib2wgKmZyYW1lZnVuYywgQ09SRV9BRERSIHBjLAorQEAgLTM3NCwxMCArMzc1LDIzIEBA IGR3YXJmX2V4cHJfZnJhbWVfYmFzZV8xIChzdHJ1Y3Qgc3ltYm9sICpmcmFtZWZ1bmMsIENPUkVf QUREUiBwYywKICAgICAgICBlbHNlCiAgCSpsZW5ndGggPSAwOwogICAgICB9CkBAIC00OTgsNyAr MTE0Nyw3IEBAIGluZGV4IDhjOTdmMTkuLmE2ZjNlOWMgMTAwNjQ0CiAgfQogIAogIC8qIEhlbHBl ciBmdW5jdGlvbiBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLiAgQ29tcHV0ZXMgdGhlIENG QSBmb3IKLUBAIC00MjYsNiArNDQwLDg1IEBAIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCAoc3RydWN0 IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LCBjdV9vZmZzZXQgZGllX29mZnNldCkKK0BAIC00NDUs NiArNDU5LDg1IEBAIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCAoc3RydWN0IGR3YXJmX2V4cHJfY29u dGV4dCAqY3R4LCBjdV9vZmZzZXQgZGllX29mZnNldCkKICAJCSAgICAgY3R4LT5mdW5jcy0+Z2V0 X2ZyYW1lX3BjLCBjdHgtPmJhdG9uKTsKICB9CiAgCkBAIC01ODQsNyArMTIzMyw3IEBAIGluZGV4 IDhjOTdmMTkuLmE2ZjNlOWMgMTAwNjQ0CiAgLyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIGR3YXJm Ml9ldmFsdWF0ZV9sb2NfZGVzYy4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICoKLUBAIC0x MTA1LDEwICsxMTk4LDEyIEBAIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUg KHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKK0BAIC0xMTM5LDEwICsxMjMyLDEyIEBA IGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUgKHN0cnVjdCBkd2FyZl9leHBy X2NvbnRleHQgKmN0eCwKICAKICAgIHNhdmVkX2N0eC5nZGJhcmNoID0gY3R4LT5nZGJhcmNoOwog ICAgc2F2ZWRfY3R4LmFkZHJfc2l6ZSA9IGN0eC0+YWRkcl9zaXplOwpAQCAtNTk3LDcgKzEyNDYs NyBAQCBpbmRleCA4Yzk3ZjE5Li5hNmYzZTljIDEwMDY0NAogICAgY3R4LT5vZmZzZXQgPSBkd2Fy ZjJfcGVyX2N1X3RleHRfb2Zmc2V0IChiYXRvbl9sb2NhbC5wZXJfY3UpOwogICAgY3R4LT5iYXRv biA9ICZiYXRvbl9sb2NhbDsKICAKLUBAIC0xMTE2LDEwICsxMjExLDk1IEBAIGR3YXJmX2V4cHJf cHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0 eCwKK0BAIC0xMTUwLDEwICsxMjQ1LDk1IEBAIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50 cnlfdmFsdWUgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKICAKICAgIGN0eC0+Z2Ri YXJjaCA9IHNhdmVkX2N0eC5nZGJhcmNoOwogICAgY3R4LT5hZGRyX3NpemUgPSBzYXZlZF9jdHgu YWRkcl9zaXplOwpAQCAtNjkzLDcgKzEzNDIsNyBAQCBpbmRleCA4Yzk3ZjE5Li5hNmYzZTljIDEw MDY0NAogIC8qIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2Mu CiAgICAgRmV0Y2ggdGhlIGFkZHJlc3MgaW5kZXhlZCBieSBEV19PUF9HTlVfYWRkcl9pbmRleC4g ICovCiAgCi1AQCAtMjA1MywyMiArMjIzMyw2IEBAIGludmFsaWRfc3ludGhldGljX3BvaW50ZXIg KHZvaWQpCitAQCAtMjA4OCwyMiArMjI2OCw2IEBAIGludmFsaWRfc3ludGhldGljX3BvaW50ZXIg KHZvaWQpCiAgCSAgICJyZWZlcmVuY2VkIHZpYSBzeW50aGV0aWMgcG9pbnRlciIpKTsKICB9CiAg CkBAIC03MTYsNyArMTM2NSw3IEBAIGluZGV4IDhjOTdmMTkuLmE2ZjNlOWMgMTAwNjQ0CiAgLyog RXZhbHVhdGUgYSBsb2NhdGlvbiBkZXNjcmlwdGlvbiwgc3RhcnRpbmcgYXQgREFUQSBhbmQgd2l0 aCBsZW5ndGgKICAgICBTSVpFLCB0byBmaW5kIHRoZSBjdXJyZW50IGxvY2F0aW9uIG9mIHZhcmlh YmxlIG9mIFRZUEUgaW4gdGhlCiAgICAgY29udGV4dCBvZiBGUkFNRS4gIEJZVEVfT0ZGU0VUIGlz IGFwcGxpZWQgYWZ0ZXIgdGhlIGNvbnRlbnRzIGFyZQotQEAgLTIwODEsNyArMjI0NSw2IEBAIGR3 YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lLAorQEAgLTIxMTYsNyArMjI4MCw2IEBAIGR3YXJmMl9ldmFsdWF0ZV9s b2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l LAogIAkJCSAgICAgICBMT05HRVNUIGJ5dGVfb2Zmc2V0KQogIHsKICAgIHN0cnVjdCB2YWx1ZSAq cmV0dmFsOwpAQCAtNzI0LDcgKzEzNzMsNyBAQCBpbmRleCA4Yzk3ZjE5Li5hNmYzZTljIDEwMDY0 NAogICAgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4OwogICAgc3RydWN0IGNsZWFudXAg Km9sZF9jaGFpbiwgKnZhbHVlX2NoYWluOwogICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBk d2FyZjJfcGVyX2N1X29iamZpbGUgKHBlcl9jdSk7Ci1AQCAtMjA5MywyOSArMjI1NiwxOCBAQCBk d2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSwKK0BAIC0yMTI4LDI5ICsyMjkxLDE4IEBAIGR3YXJmMl9ldmFsdWF0 ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lLAogICAgaWYgKHNpemUgPT0gMCkKICAgICAgcmV0dXJuIGFsbG9jYXRlX29wdGltaXplZF9v dXRfdmFsdWUgKHR5cGUpOwogIApAQCAtNzU1LDcgKzE0MDQsNyBAQCBpbmRleCA4Yzk3ZjE5Li5h NmYzZTljIDEwMDY0NAogIAkgIHJldHZhbCA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKICAJICBt YXJrX3ZhbHVlX2J5dGVzX3VuYXZhaWxhYmxlIChyZXR2YWwsIDAsIFRZUEVfTEVOR1RIICh0eXBl KSk7CiAgCSAgcmV0dXJuIHJldHZhbDsKLUBAIC0yMTc5LDYgKzIzMzEsMTYgQEAgZHdhcmYyX2V2 YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUsCitAQCAtMjIxNCw2ICsyMzY2LDE2IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVz Y19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAogIAkg ICAgaW50IGluX3N0YWNrX21lbW9yeSA9IGR3YXJmX2V4cHJfZmV0Y2hfaW5fc3RhY2tfbWVtb3J5 IChjdHgsIDApOwogIAogIAkgICAgZG9fY2xlYW51cHMgKHZhbHVlX2NoYWluKTsKQEAgLTc3Miw3 ICsxNDIxLDcgQEAgaW5kZXggOGM5N2YxOS4uYTZmM2U5YyAxMDA2NDQKICAJICAgIHJldHZhbCA9 IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5cGUpOwogIAkgICAgVkFMVUVfTFZBTCAocmV0dmFsKSA9 IGx2YWxfbWVtb3J5OwogIAkgICAgaWYgKGluX3N0YWNrX21lbW9yeSkKLUBAIC00MDQ4LDggKzQy MTAsNyBAQCBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5bWJvbCAqc3ltYm9s LCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC00MTI0LDggKzQyODYsNyBAQCBsb2NsaXN0 X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5bWJvbCAqc3ltYm9sLCBzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwKICAJCQkgICAgICAgZGxiYXRvbi0+cGVyX2N1KTsKICB9CiAgCkBAIC03ODIs NyArMTQzMSw3IEBAIGluZGV4IDhjOTdmMTkuLmE2ZjNlOWMgMTAwNjQ0CiAgY29uc3Qgc3RydWN0 IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX2xvY2xpc3RfZnVuY3MgPSB7CiAgICBsb2NsaXN0 X3JlYWRfdmFyaWFibGUsCiAgICBsb2NsaXN0X3JlYWRfdmFyaWFibGVfYXRfZW50cnksCi1AQCAt NDA1OCw2ICs0MjE5LDQ4IEBAIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJm Ml9sb2NsaXN0X2Z1bmNzID0geworQEAgLTQxMzQsNiArNDI5NSw0OCBAQCBjb25zdCBzdHJ1Y3Qg c3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5jcyA9IHsKICAgIGxvY2xpc3Rf dHJhY2Vwb2ludF92YXJfcmVmCiAgfTsKICAKQEAgLTg1MiwxMCArMTUwMSwxNDUgQEAgaW5kZXgg ZTlkMDZhMy4uYmZhNjc3NiAxMDA2NDQKICAvKiBDb21waWxlIGEgRFdBUkYgbG9jYXRpb24gZXhw cmVzc2lvbiB0byBhbiBhZ2VudCBleHByZXNzaW9uLgogICAgIAogZGlmZiAtLWdpdCBhL2dkYi9k d2FyZjJyZWFkLmMgYi9nZGIvZHdhcmYycmVhZC5jCi1pbmRleCA4ZGJjNTNlLi5iNWI3ODEzIDEw MDY0NAoraW5kZXggNTIyODhlOC4uNDQ3ZGMyNSAxMDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJyZWFk LmMKICsrKyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC0xMzQ4LDYgKzEzNDgsOSBAQCBzdGF0aWMg dm9pZCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorQEAgLTY0 LDIwICs2NCwxMiBAQAorICNpbmNsdWRlICJnZGJjb3JlLmgiIC8qIGZvciBnbnV0YXJnZXQgKi8K KyAjaW5jbHVkZSAiZ2RiL2dkYi1pbmRleC5oIgorICNpbmNsdWRlIDxjdHlwZS5oPgorKyNpbmNs dWRlICJnZGJfYmZkLmgiCisgCisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgImdkYl9z dHJpbmcuaCIKKyAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgorICNpbmNsdWRlIDxzeXMvdHlwZXMu aD4KKy0jaWZkZWYgSEFWRV9aTElCX0gKKy0jaW5jbHVkZSA8emxpYi5oPgorLSNlbmRpZgorLSNp ZmRlZiBIQVZFX01NQVAKKy0jaW5jbHVkZSA8c3lzL21tYW4uaD4KKy0jaWZuZGVmIE1BUF9GQUlM RUQKKy0jZGVmaW5lIE1BUF9GQUlMRUQgKCh2b2lkICopIC0xKQorLSNlbmRpZgorLSNlbmRpZgor IAorIHR5cGVkZWYgc3RydWN0IHN5bWJvbCAqc3ltYm9scDsKKyBERUZfVkVDX1AgKHN5bWJvbHAp OworQEAgLTk1LDggKzg3LDYgQEAgc3RhdGljIGludCBjaGVja19waHlzbmFtZSA9IDA7CisgLyog V2hlbiBub24temVybywgZG8gbm90IHJlamVjdCBkZXByZWNhdGVkIC5nZGJfaW5kZXggc2VjdGlv bnMuICAqLworIGludCB1c2VfZGVwcmVjYXRlZF9pbmRleF9zZWN0aW9ucyA9IDA7CisgCistc3Rh dGljIGludCBwYWdlc2l6ZTsKKy0KKyAvKiBXaGVuIHNldCwgdGhlIGZpbGUgdGhhdCB3ZSdyZSBw cm9jZXNzaW5nIGlzIGtub3duIHRvIGhhdmUgZGVidWdnaW5nCisgICAgaW5mbyBmb3IgQysrIG5h bWVzcGFjZXMuICBHQ0MgMy4zLnggZGlkIG5vdCBwcm9kdWNlIHRoaXMgaW5mb3JtYXRpb24sCisg ICAgYnV0IGxhdGVyIHZlcnNpb25zIGRvLiAgKi8KK0BAIC0xMTAsMTAgKzEwMCw2IEBAIHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9pbmZvCisgICBhc2VjdGlvbiAqYXNlY3Rpb247CisgICBnZGJfYnl0 ZSAqYnVmZmVyOworICAgYmZkX3NpemVfdHlwZSBzaXplOworLSAgLyogTm90IE5VTEwgaWYgdGhl IHNlY3Rpb24gd2FzIGFjdHVhbGx5IG1tYXBwZWQuICAqLworLSAgdm9pZCAqbWFwX2FkZHI7Cist ICAvKiBQYWdlIGFsaWduZWQgc2l6ZSBvZiBtbWFwcGVkIGFyZWEuICAqLworLSAgYmZkX3NpemVf dHlwZSBtYXBfbGVuOworICAgLyogVHJ1ZSBpZiB3ZSBoYXZlIHRyaWVkIHRvIHJlYWQgdGhpcyBz ZWN0aW9uLiAgKi8KKyAgIGludCByZWFkaW47CisgfTsKK0BAIC0yMjYsNiArMjEyLDEwIEBAIHN0 cnVjdCBkd2FyZjJfcGVyX29iamZpbGUKKyAgICAgIFRoaXMgaXMgTlVMTCBpZiB0aGUgdGFibGUg aGFzbid0IGJlZW4gYWxsb2NhdGVkIHlldC4gICovCisgICBodGFiX3QgZHdvX2ZpbGVzOworIAor KyAgLyogVGhlIHNoYXJlZCAnLmR3eicgZmlsZSwgaWYgb25lIGV4aXN0cy4gIFRoaXMgaXMgdXNl ZCB3aGVuIHRoZQorKyAgICAgb3JpZ2luYWwgZGF0YSB3YXMgY29tcHJlc3NlZCB1c2luZyAnZHd6 IC1tJy4gICovCisrICBzdHJ1Y3QgZHd6X2ZpbGUgKmR3el9maWxlOworKworICAgLyogQSBmbGFn IGluZGljYXRpbmcgd2V0aGVyIHRoaXMgb2JqZmlsZSBoYXMgYSBzZWN0aW9uIGxvYWRlZCBhdCBh CisgICAgICBWTUEgb2YgMC4gICovCisgICBpbnQgaGFzX3NlY3Rpb25fYXRfemVybzsKK0BAIC00 ODQsMTUgKzQ3NCwxMyBAQCBzdHJ1Y3QgZHdhcmYyX2N1CisgCisgc3RydWN0IGR3YXJmMl9wZXJf Y3VfZGF0YQorIHsKKy0gIC8qIFRoZSBzdGFydCBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGlzIGNv bXBpbGF0aW9uIHVuaXQuICAyKioyOS0xCistICAgICBieXRlcyBzaG91bGQgc3VmZmljZSB0byBz dG9yZSB0aGUgbGVuZ3RoIG9mIGFueSBjb21waWxhdGlvbiB1bml0CistICAgICAtIGlmIGl0IGRv ZXNuJ3QsIEdEQiB3aWxsIGZhbGwgb3ZlciBhbnl3YXkuCisrICAvKiBUaGUgc3RhcnQgb2Zmc2V0 IGFuZCBsZW5ndGggb2YgdGhpcyBjb21waWxhdGlvbiB1bml0LgorICAgICAgTk9URTogVW5saWtl IGNvbXBfdW5pdF9oZWFkLmxlbmd0aCwgdGhpcyBsZW5ndGggaW5jbHVkZXMKKyAgICAgIGluaXRp YWxfbGVuZ3RoX3NpemUuCisgICAgICBJZiB0aGUgRElFIHJlZmVycyB0byBhIERXTyBmaWxlLCB0 aGlzIGlzIGFsd2F5cyBvZiB0aGUgb3JpZ2luYWwgZGllLAorICAgICAgbm90IHRoZSBEV08gZmls ZS4gICovCisgICBzZWN0X29mZnNldCBvZmZzZXQ7CistICB1bnNpZ25lZCBpbnQgbGVuZ3RoIDog Mjk7CisrICB1bnNpZ25lZCBpbnQgbGVuZ3RoOworIAorICAgLyogRmxhZyBpbmRpY2F0aW5nIHRo aXMgY29tcGlsYXRpb24gdW5pdCB3aWxsIGJlIHJlYWQgaW4gYmVmb3JlCisgICAgICBhbnkgb2Yg dGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdHMgYXJlIHByb2Nlc3NlZC4gICovCitAQCAtNTA3 LDYgKzQ5NSw5IEBAIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEKKyAgIC8qIE5vbi16ZXJvIGlm IHRoaXMgQ1UgaXMgZnJvbSAuZGVidWdfdHlwZXMuICAqLworICAgdW5zaWduZWQgaW50IGlzX2Rl YnVnX3R5cGVzIDogMTsKKyAKKysgIC8qIE5vbi16ZXJvIGlmIHRoaXMgQ1UgaXMgZnJvbSB0aGUg LmR3eiBmaWxlLiAgKi8KKysgIHVuc2lnbmVkIGludCBpc19kd3ogOiAxOworKworICAgLyogVGhl IHNlY3Rpb24gdGhpcyBDVS9UVSBsaXZlcyBpbi4KKyAgICAgIElmIHRoZSBESUUgcmVmZXJzIHRv IGEgRFdPIGZpbGUsIHRoaXMgaXMgYWx3YXlzIHRoZSBvcmlnaW5hbCBkaWUsCisgICAgICBub3Qg dGhlIERXTyBmaWxlLiAgKi8KK0BAIC02MjUsNiArNjE2LDIyIEBAIHN0cnVjdCBkd29fZmlsZQor ICAgaHRhYl90IHR1czsKKyB9OworIAorKy8qIFRoaXMgcmVwcmVzZW50cyBhICcuZHd6JyBmaWxl LiAgKi8KKysKKytzdHJ1Y3QgZHd6X2ZpbGUKKyt7CisrICAvKiBBIGR3eiBmaWxlIGNhbiBvbmx5 IGNvbnRhaW4gYSBmZXcgc2VjdGlvbnMuICAqLworKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2lu Zm8gYWJicmV2OworKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gaW5mbzsKKysgIHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9pbmZvIHN0cjsKKysgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZv IGxpbmU7CisrICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBtYWNybzsKKysgIHN0cnVjdCBk d2FyZjJfc2VjdGlvbl9pbmZvIGdkYl9pbmRleDsKKysKKysgIC8qIFRoZSBkd3oncyBCRkQuICAq LworKyAgYmZkICpkd3pfYmZkOworK307CisrCisgLyogU3RydWN0IHVzZWQgdG8gcGFzcyBtaXNj LiBwYXJhbWV0ZXJzIHRvIHJlYWRfZGllX2FuZF9jaGlsZHJlbiwgZXQKKyAgICBhbC4gIHdoaWNo IGFyZSB1c2VkIGZvciBib3RoIC5kZWJ1Z19pbmZvIGFuZCAuZGVidWdfdHlwZXMgZGllcy4KKyAg ICBBbGwgcGFyYW1ldGVycyBoZXJlIGFyZSB1bmNoYW5naW5nIGZvciB0aGUgbGlmZSBvZiB0aGUg Y2FsbC4gIFRoaXMKK0BAIC03MzgsNiArNzQ1LDEyIEBAIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZv CisgICAgIC8qIEZsYWcgc2V0IGlmIGZpeHVwX3BhcnRpYWxfZGllIGhhcyBiZWVuIGNhbGxlZCBv biB0aGlzIGRpZS4gICovCisgICAgIHVuc2lnbmVkIGludCBmaXh1cF9jYWxsZWQgOiAxOworIAor KyAgICAvKiBGbGFnIHNldCBpZiBEV19UQUdfaW1wb3J0ZWRfdW5pdCB1c2VzIERXX0ZPUk1fR05V X3JlZl9hbHQuICAqLworKyAgICB1bnNpZ25lZCBpbnQgaXNfZHd6IDogMTsKKysKKysgICAgLyog RmxhZyBzZXQgaWYgc3BlY19vZmZzZXQgdXNlcyBEV19GT1JNX0dOVV9yZWZfYWx0LiAgKi8KKysg ICAgdW5zaWduZWQgaW50IHNwZWNfaXNfZHd6IDogMTsKKysKKyAgICAgLyogVGhlIG5hbWUgb2Yg dGhpcyBESUUuICBOb3JtYWxseSB0aGUgdmFsdWUgb2YgRFdfQVRfbmFtZSwgYnV0CisgICAgICAg IHNvbWV0aW1lcyBhIGRlZmF1bHQgbmFtZSBmb3IgdW5uYW1lZCBESUVzLiAgKi8KKyAgICAgY2hh ciAqbmFtZTsKK0BAIC0xMTIxLDcgKzExMzQsNyBAQCBzdGF0aWMgZ2RiX2J5dGUgKnJlYWRfcGFy dGlhbF9kaWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICosCisgCQkJCSAgIHVuc2ln bmVkIGludCwKKyAJCQkJICAgZ2RiX2J5dGUgKik7CisgCistc3RhdGljIHN0cnVjdCBwYXJ0aWFs X2RpZV9pbmZvICpmaW5kX3BhcnRpYWxfZGllIChzZWN0X29mZnNldCwKKytzdGF0aWMgc3RydWN0 IHBhcnRpYWxfZGllX2luZm8gKmZpbmRfcGFydGlhbF9kaWUgKHNlY3Rfb2Zmc2V0LCBpbnQsCisg CQkJCQkJICBzdHJ1Y3QgZHdhcmYyX2N1ICopOworIAorIHN0YXRpYyB2b2lkIGZpeHVwX3BhcnRp YWxfZGllIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqLAorQEAgLTExNjMsNiArMTE3Niw4IEBA IHN0YXRpYyBjaGFyICpyZWFkX2luZGlyZWN0X3N0cmluZyAoYmZkICosIGdkYl9ieXRlICosCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY29tcF91bml0 X2hlYWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCAqKTsKKyAKKytzdGF0aWMgY2hhciAqcmVhZF9pbmRpcmVjdF9zdHJpbmdfZnJvbV9kd3ogKHN0 cnVjdCBkd3pfZmlsZSAqLCBMT05HRVNUKTsKKysKKyBzdGF0aWMgVUxPTkdFU1QgcmVhZF91bnNp Z25lZF9sZWIxMjggKGJmZCAqLCBnZGJfYnl0ZSAqLCB1bnNpZ25lZCBpbnQgKik7CisgCisgc3Rh dGljIExPTkdFU1QgcmVhZF9zaWduZWRfbGViMTI4IChiZmQgKiwgZ2RiX2J5dGUgKiwgdW5zaWdu ZWQgaW50ICopOworQEAgLTE0MDcsNiArMTQyMiw5IEBAIHN0YXRpYyB2b2lkIGZpbGxfaW5fbG9j bGlzdF9iYXRvbiAoc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAgCQkJCSAgIHN0cnVjdCBkd2FyZjJf bG9jbGlzdF9iYXRvbiAqYmF0b24sCiAgCQkJCSAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpOwog IApAQCAtODY1LDcgKzE2NDksMTYgQEAgaW5kZXggOGRiYzUzZS4uYjViNzgxMyAxMDA2NDQKICBz dGF0aWMgdm9pZCBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIsCiAgCQkJCQkgc3RydWN0IHN5bWJvbCAqc3ltLAogIAkJCQkJIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KTsKLUBAIC0xMzgwLDYgKzEzODMsOSBAQCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2Nv bXBfdW5pdHMgKHZvaWQpOworQEAgLTE0MjIsNyArMTQ0MCw3IEBAIHN0YXRpYyBoYXNodmFsX3Qg cGFydGlhbF9kaWVfaGFzaCAoY29uc3Qgdm9pZCAqaXRlbSk7Cisgc3RhdGljIGludCBwYXJ0aWFs X2RpZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKTsKKyAK KyBzdGF0aWMgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqZHdhcmYyX2ZpbmRfY29udGFpbmlu Z19jb21wX3VuaXQKKy0gIChzZWN0X29mZnNldCBvZmZzZXQsIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlKTsKKysgIChzZWN0X29mZnNldCBvZmZzZXQsIHVuc2lnbmVkIGludCBvZmZzZXRfaW5fZHd6 LCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgCisgc3RhdGljIHZvaWQgaW5pdF9vbmVfY29t cF91bml0IChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKKyAJCQkJc3RydWN0IGR3YXJmMl9wZXJfY3Vf ZGF0YSAqcGVyX2N1KTsKK0BAIC0xNDM5LDYgKzE0NTcsOSBAQCBzdGF0aWMgdm9pZCBhZ2VfY2Fj aGVkX2NvbXBfdW5pdHMgKHZvaWQpOwogIAogIHN0YXRpYyB2b2lkIGZyZWVfb25lX2NhY2hlZF9j b21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKik7CiAgCkBAIC04NzUsNyArMTY2 OCw3IEBAIGluZGV4IDhkYmM1M2UuLmI1Yjc4MTMgMTAwNjQ0CiAgc3RhdGljIHN0cnVjdCB0eXBl ICpzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgdHlwZSAqLAogIAkJCQkg IHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCi1AQCAtMTQwNSw2ICsxNDExLDkgQEAgc3RhdGljIHN0 cnVjdCB0eXBlICpnZXRfZGllX3R5cGVfYXRfb2Zmc2V0IChzZWN0X29mZnNldCwKK0BAIC0xNDY0 LDYgKzE0ODUsOSBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKmdldF9kaWVfdHlwZV9hdF9vZmZzZXQg KHNlY3Rfb2Zmc2V0LAogIAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwogIApAQCAtODg1LDgwICsx Njc4LDkzNCBAQCBpbmRleCA4ZGJjNTNlLi5iNWI3ODEzIDEwMDY0NAogIHN0YXRpYyB2b2lkIGR3 YXJmMl9yZWxlYXNlX3F1ZXVlICh2b2lkICpkdW1teSk7CiAgCiAgc3RhdGljIHZvaWQgcXVldWVf Y29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UsCi1AQCAtOTUyNiw2 ICs5NTM1LDI5IEBAIHByb2Nlc3NfZW51bWVyYXRpb25fc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIG5ld19zeW1ib2wgKGRpZSwgdGhpc190eXBl LCBjdSk7CitAQCAtMTQ4Miw2ICsxNTA2LDEyIEBAIHN0YXRpYyB2b2lkIGZpbmRfZmlsZV9hbmRf ZGlyZWN0b3J5IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKKyBzdGF0aWMgY2hhciAqZmlsZV9mdWxs X25hbWUgKGludCBmaWxlLCBzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLAorIAkJCSAgICAgY29uc3Qg Y2hhciAqY29tcF9kaXIpOworIAorK3N0YXRpYyBnZGJfYnl0ZSAqcmVhZF9hbmRfY2hlY2tfY29t cF91bml0X2hlYWQKKysgIChzdHJ1Y3QgY29tcF91bml0X2hlYWQgKmhlYWRlciwKKysgICBzdHJ1 Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiwKKysgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rp b25faW5mbyAqYWJicmV2X3NlY3Rpb24sIGdkYl9ieXRlICppbmZvX3B0ciwKKysgICBpbnQgaXNf ZGVidWdfdHlwZXNfc2VjdGlvbik7CisrCisgc3RhdGljIHZvaWQgaW5pdF9jdXR1X2FuZF9yZWFk X2RpZXMKKyAgIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1LCBpbnQgdXNlX2V4 aXN0aW5nX2N1LCBpbnQga2VlcCwKKyAgICBkaWVfcmVhZGVyX2Z1bmNfZnR5cGUgKmRpZV9yZWFk ZXJfZnVuYywgdm9pZCAqZGF0YSk7CitAQCAtMTUwNCw4ICsxNTM0LDYgQEAgc3RhdGljIHN0cnVj dCBkd29fdW5pdCAqbG9va3VwX2R3b190eXBlX3VuaXQKKyAKKyBzdGF0aWMgdm9pZCBmcmVlX2R3 b19maWxlX2NsZWFudXAgKHZvaWQgKik7CisgCistc3RhdGljIHZvaWQgbXVubWFwX3NlY3Rpb25f YnVmZmVyIChzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqKTsKKy0KKyBzdGF0aWMgdm9pZCBw cm9jZXNzX2N1X2luY2x1ZGVzICh2b2lkKTsKKyAKKyAjaWYgV09SRFNfQklHRU5ESUFOCitAQCAt MTY3NSw4NSArMTcwMyw2IEBAIGR3YXJmMl9sb2NhdGVfc2VjdGlvbnMgKGJmZCAqYWJmZCwgYXNl Y3Rpb24gKnNlY3RwLCB2b2lkICp2bmFtZXMpCisgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+aGFz X3NlY3Rpb25fYXRfemVybyA9IDE7CiAgfQogIAotKy8qIENyZWF0ZSBhIG5ldyBhcnJheSBkaW1l bnNpb24gcmVmZXJlbmNpbmcgaXRzIHRhcmdldCB0eXBlIFRZUEUuCistLyogRGVjb21wcmVzcyBh IHNlY3Rpb24gdGhhdCB3YXMgY29tcHJlc3NlZCB1c2luZyB6bGliLiAgU3RvcmUgdGhlCistICAg ZGVjb21wcmVzc2VkIGJ1ZmZlciwgYW5kIGl0cyBzaXplLCBpbiBPVVRCVUYgYW5kIE9VVFNJWkUu ICAqLworLQorLXN0YXRpYyB2b2lkCistemxpYl9kZWNvbXByZXNzX3NlY3Rpb24gKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBhc2VjdGlvbiAqc2VjdHAsCistICAgICAgICAgICAgICAgICAgICAg ICAgIGdkYl9ieXRlICoqb3V0YnVmLCBiZmRfc2l6ZV90eXBlICpvdXRzaXplKQorLXsKKy0gIGJm ZCAqYWJmZCA9IHNlY3RwLT5vd25lcjsKKy0jaWZuZGVmIEhBVkVfWkxJQl9ICistICBlcnJvciAo XygiU3VwcG9ydCBmb3IgemxpYi1jb21wcmVzc2VkIERXQVJGIGRhdGEgKGZyb20gJyVzJykgIgor LSAgICAgICAgICAgImlzIGRpc2FibGVkIGluIHRoaXMgY29weSBvZiBHREIiKSwKKy0gICAgICAg ICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7CistI2Vsc2UKKy0gIGJmZF9zaXplX3R5cGUgY29t cHJlc3NlZF9zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKKy0gIGdkYl9ieXRl ICpjb21wcmVzc2VkX2J1ZmZlciA9IHhtYWxsb2MgKGNvbXByZXNzZWRfc2l6ZSk7CistICBzdHJ1 Y3QgY2xlYW51cCAqY2xlYW51cCA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGNvbXByZXNzZWRfYnVm ZmVyKTsKKy0gIGJmZF9zaXplX3R5cGUgdW5jb21wcmVzc2VkX3NpemU7CistICBnZGJfYnl0ZSAq dW5jb21wcmVzc2VkX2J1ZmZlcjsKKy0gIHpfc3RyZWFtIHN0cm07CistICBpbnQgcmM7CistICBp bnQgaGVhZGVyX3NpemUgPSAxMjsKKy0KKy0gIGlmIChiZmRfc2VlayAoYWJmZCwgc2VjdHAtPmZp bGVwb3MsIFNFRUtfU0VUKSAhPSAwCistICAgICAgfHwgYmZkX2JyZWFkIChjb21wcmVzc2VkX2J1 ZmZlciwKKy0JCSAgICBjb21wcmVzc2VkX3NpemUsIGFiZmQpICE9IGNvbXByZXNzZWRfc2l6ZSkK Ky0gICAgZXJyb3IgKF8oIkR3YXJmIEVycm9yOiBDYW4ndCByZWFkIERXQVJGIGRhdGEgZnJvbSAn JXMnIiksCistICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7CistCistICAvKiBS ZWFkIHRoZSB6bGliIGhlYWRlci4gIEluIHRoaXMgY2FzZSwgaXQgc2hvdWxkIGJlICJaTElCIiBm b2xsb3dlZAorLSAgICAgYnkgdGhlIHVuY29tcHJlc3NlZCBzZWN0aW9uIHNpemUsIDggYnl0ZXMg aW4gYmlnLWVuZGlhbiBvcmRlci4gICovCistICBpZiAoY29tcHJlc3NlZF9zaXplIDwgaGVhZGVy X3NpemUKKy0gICAgICB8fCBzdHJuY21wIChjb21wcmVzc2VkX2J1ZmZlciwgIlpMSUIiLCA0KSAh PSAwKQorLSAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IENvcnJ1cHQgRFdBUkYgWkxJQiBoZWFk ZXIgZnJvbSAnJXMnIiksCistICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Cist ICB1bmNvbXByZXNzZWRfc2l6ZSA9IGNvbXByZXNzZWRfYnVmZmVyWzRdOyB1bmNvbXByZXNzZWRf c2l6ZSA8PD0gODsKKy0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzVd OyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKKy0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXBy ZXNzZWRfYnVmZmVyWzZdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKKy0gIHVuY29tcHJlc3Nl ZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzddOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsK Ky0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzhdOyB1bmNvbXByZXNz ZWRfc2l6ZSA8PD0gODsKKy0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVy WzldOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKKy0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNv bXByZXNzZWRfYnVmZmVyWzEwXTsgdW5jb21wcmVzc2VkX3NpemUgPDw9IDg7CistICB1bmNvbXBy ZXNzZWRfc2l6ZSArPSBjb21wcmVzc2VkX2J1ZmZlclsxMV07CistCistICAvKiBJdCBpcyBwb3Nz aWJsZSB0aGUgc2VjdGlvbiBjb25zaXN0cyBvZiBzZXZlcmFsIGNvbXByZXNzZWQKKy0gICAgIGJ1 ZmZlcnMgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyLCBzbyB3ZSB1bmNvbXByZXNzIGluIGEgbG9vcC4g ICovCistICBzdHJtLnphbGxvYyA9IE5VTEw7CistICBzdHJtLnpmcmVlID0gTlVMTDsKKy0gIHN0 cm0ub3BhcXVlID0gTlVMTDsKKy0gIHN0cm0uYXZhaWxfaW4gPSBjb21wcmVzc2VkX3NpemUgLSBo ZWFkZXJfc2l6ZTsKKy0gIHN0cm0ubmV4dF9pbiA9IChCeXRlZiopIGNvbXByZXNzZWRfYnVmZmVy ICsgaGVhZGVyX3NpemU7CistICBzdHJtLmF2YWlsX291dCA9IHVuY29tcHJlc3NlZF9zaXplOwor LSAgdW5jb21wcmVzc2VkX2J1ZmZlciA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxl X29ic3RhY2ssCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5jb21w cmVzc2VkX3NpemUpOworLSAgcmMgPSBpbmZsYXRlSW5pdCAoJnN0cm0pOworLSAgd2hpbGUgKHN0 cm0uYXZhaWxfaW4gPiAwKQorLSAgICB7CistICAgICAgaWYgKHJjICE9IFpfT0spCistICAgICAg ICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IHNldHRpbmcgdXAgRFdBUkYgdW5jb21wcmVzc2lvbiBp biAnJXMnOiAlZCIpLAorLSAgICAgICAgICAgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLCBy Yyk7CistICAgICAgc3RybS5uZXh0X291dCA9ICgoQnl0ZWYqKSB1bmNvbXByZXNzZWRfYnVmZmVy CistICAgICAgICAgICAgICAgICAgICAgICArICh1bmNvbXByZXNzZWRfc2l6ZSAtIHN0cm0uYXZh aWxfb3V0KSk7CistICAgICAgcmMgPSBpbmZsYXRlICgmc3RybSwgWl9GSU5JU0gpOworLSAgICAg IGlmIChyYyAhPSBaX1NUUkVBTV9FTkQpCistICAgICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6 IHpsaWIgZXJyb3IgdW5jb21wcmVzc2luZyBmcm9tICclcyc6ICVkIiksCistICAgICAgICAgICAg ICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksIHJjKTsKKy0gICAgICByYyA9IGluZmxhdGVSZXNl dCAoJnN0cm0pOworLSAgICB9CistICByYyA9IGluZmxhdGVFbmQgKCZzdHJtKTsKKy0gIGlmIChy YyAhPSBaX09LCistICAgICAgfHwgc3RybS5hdmFpbF9vdXQgIT0gMCkKKy0gICAgZXJyb3IgKF8o IkR3YXJmIEVycm9yOiBjb25jbHVkaW5nIERXQVJGIHVuY29tcHJlc3Npb24gaW4gJyVzJzogJWQi KSwKKy0gICAgICAgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLCByYyk7CistCistICBkb19j bGVhbnVwcyAoY2xlYW51cCk7CistICAqb3V0YnVmID0gdW5jb21wcmVzc2VkX2J1ZmZlcjsKKy0g ICpvdXRzaXplID0gdW5jb21wcmVzc2VkX3NpemU7CistI2VuZGlmCistfQorLQorIC8qIEEgaGVs cGVyIGZ1bmN0aW9uIHRoYXQgZGVjaWRlcyB3aGV0aGVyIGEgc2VjdGlvbiBpcyBlbXB0eSwKKyAg ICBvciBub3QgcHJlc2VudC4gICovCisgCitAQCAtMTc4MCw1NiArMTcyOSwyNyBAQCBkd2FyZjJf cmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJmMl9zZWN0 aW9uX2luZm8gKmluZm8pCisgICBpZiAoaW5mby0+cmVhZGluKQorICAgICByZXR1cm47CisgICBp bmZvLT5idWZmZXIgPSBOVUxMOworLSAgaW5mby0+bWFwX2FkZHIgPSBOVUxMOworICAgaW5mby0+ cmVhZGluID0gMTsKKyAKKyAgIGlmIChkd2FyZjJfc2VjdGlvbl9lbXB0eV9wIChpbmZvKSkKKyAg ICAgcmV0dXJuOworIAorLSAgLyogTm90ZSB0aGF0IEFCRkQgbWF5IG5vdCBiZSBmcm9tIE9CSkZJ TEUsIGUuZy4gYSBEV08gc2VjdGlvbi4gICovCisgICBhYmZkID0gc2VjdHAtPm93bmVyOworIAor LSAgLyogQ2hlY2sgaWYgdGhlIGZpbGUgaGFzIGEgNC1ieXRlIGhlYWRlciBpbmRpY2F0aW5nIGNv bXByZXNzaW9uLiAgKi8KKy0gIGlmIChpbmZvLT5zaXplID4gc2l6ZW9mIChoZWFkZXIpCistICAg ICAgJiYgYmZkX3NlZWsgKGFiZmQsIHNlY3RwLT5maWxlcG9zLCBTRUVLX1NFVCkgPT0gMAorLSAg ICAgICYmIGJmZF9icmVhZCAoaGVhZGVyLCBzaXplb2YgKGhlYWRlciksIGFiZmQpID09IHNpemVv ZiAoaGVhZGVyKSkKKy0gICAgeworLSAgICAgIC8qIFVwb24gZGVjb21wcmVzc2lvbiwgdXBkYXRl IHRoZSBidWZmZXIgYW5kIGl0cyBzaXplLiAgKi8KKy0gICAgICBpZiAoc3RybmNtcCAoaGVhZGVy LCAiWkxJQiIsIHNpemVvZiAoaGVhZGVyKSkgPT0gMCkKKy0gICAgICAgIHsKKy0gICAgICAgICAg emxpYl9kZWNvbXByZXNzX3NlY3Rpb24gKG9iamZpbGUsIHNlY3RwLCAmaW5mby0+YnVmZmVyLAor LQkJCQkgICAmaW5mby0+c2l6ZSk7CistICAgICAgICAgIHJldHVybjsKKy0gICAgICAgIH0KKy0g ICAgfQorLQorLSNpZmRlZiBIQVZFX01NQVAKKy0gIGlmIChwYWdlc2l6ZSA9PSAwKQorLSAgICBw YWdlc2l6ZSA9IGdldHBhZ2VzaXplICgpOworLQorLSAgLyogT25seSB0cnkgdG8gbW1hcCBzZWN0 aW9ucyB3aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50IHRvCistICAgICB3YXN0 ZSBzcGFjZSBkdWUgdG8gZnJhZ21lbnRhdGlvbi4gIEFsc28sIG9ubHkgdHJ5IG1tYXAgZm9yIHNl Y3Rpb25zCistICAgICB3aXRob3V0IHJlbG9jYXRpb25zLiAgKi8KKy0KKy0gIGlmIChpbmZvLT5z aXplID4gNCAqIHBhZ2VzaXplICYmIChzZWN0cC0+ZmxhZ3MgJiBTRUNfUkVMT0MpID09IDApCisr ICAvKiBJZiB0aGUgc2VjdGlvbiBoYXMgcmVsb2NhdGlvbnMsIHdlIG11c3QgcmVhZCBpdCBvdXJz ZWx2ZXMuCisrICAgICBPdGhlcndpc2Ugd2UgYXR0YWNoIGl0IHRvIHRoZSBCRkQuICAqLworKyAg aWYgKChzZWN0cC0+ZmxhZ3MgJiBTRUNfUkVMT0MpID09IDApCisgICAgIHsKKy0gICAgICBpbmZv LT5idWZmZXIgPSBiZmRfbW1hcCAoYWJmZCwgMCwgaW5mby0+c2l6ZSwgUFJPVF9SRUFELAorLSAg ICAgICAgICAgICAgICAgICAgICAgICBNQVBfUFJJVkFURSwgc2VjdHAtPmZpbGVwb3MsCistICAg ICAgICAgICAgICAgICAgICAgICAgICZpbmZvLT5tYXBfYWRkciwgJmluZm8tPm1hcF9sZW4pOwor KyAgICAgIGNvbnN0IGdkYl9ieXRlICpieXRlcyA9IGdkYl9iZmRfbWFwX3NlY3Rpb24gKHNlY3Rw LCAmaW5mby0+c2l6ZSk7CisgCistICAgICAgaWYgKChjYWRkcl90KWluZm8tPmJ1ZmZlciAhPSBN QVBfRkFJTEVEKQorLQl7CistI2lmIEhBVkVfUE9TSVhfTUFEVklTRQorLQkgIHBvc2l4X21hZHZp c2UgKGluZm8tPm1hcF9hZGRyLCBpbmZvLT5tYXBfbGVuLCBQT1NJWF9NQURWX1dJTExORUVEKTsK Ky0jZW5kaWYKKy0JICByZXR1cm47CistCX0KKysgICAgICAvKiBXZSBoYXZlIHRvIGNhc3QgYXdh eSBjb25zdCBoZXJlIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMuCisrCSBGaXhpbmcgZHdhcmYycmVh ZCB0byBiZSBjb25zdC1jb3JyZWN0IHdvdWxkIGJlIHF1aXRlIG5pY2UuICAqLworKyAgICAgIGlu Zm8tPmJ1ZmZlciA9IChnZGJfYnl0ZSAqKSBieXRlczsKKysgICAgICByZXR1cm47CisgICAgIH0K Ky0jZW5kaWYKKyAKKy0gIC8qIElmIHdlIGdldCBoZXJlLCB3ZSBhcmUgYSBub3JtYWwsIG5vdC1j b21wcmVzc2VkIHNlY3Rpb24uICAqLworLSAgaW5mby0+YnVmZmVyID0gYnVmCistICAgID0gb2Jz dGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgaW5mby0+c2l6ZSk7CisrICBi dWYgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBpbmZvLT5zaXpl KTsKKysgIGluZm8tPmJ1ZmZlciA9IGJ1ZjsKKyAKKyAgIC8qIFdoZW4gZGVidWdnaW5nIC5vIGZp bGVzLCB3ZSBtYXkgbmVlZCB0byBhcHBseSByZWxvY2F0aW9uczsgc2VlCisgICAgICBodHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwMi0wNC9tc2cwMDEzNi5odG1sIC4KK0BA IC0xOTA1LDYgKzE4MjUsMTExIEBAIGR3YXJmMl9nZXRfc2VjdGlvbl9pbmZvIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKKyAgICpzaXplcCA9IGluZm8tPnNpemU7CisgfQorIAorKy8qIEEgaGVs cGVyIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIHNlY3Rpb25zIGZvciBhIC5kd3ogZmlsZS4gICovCiAr Ci0rICAgTXVsdGlkaW1lbnNpb25hbCBhcnJheXMgYXJlIGludGVybmFsbHkgcmVwcmVzZW50ZWQg YXMgYSBzdGFjayBvZgotKyAgIHNpbmdsZWRpbWVuc2lvbmFsIGFycmF5cyBiZWluZyByZWZlcmVu Y2VkIGJ5IHRoZWlyIFRZUEVfVEFSR0VUX1RZUEUuICAqLworK3N0YXRpYyB2b2lkCisrbG9jYXRl X2R3el9zZWN0aW9ucyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdHAsIHZvaWQgKmFyZykKKyt7 CisrICBzdHJ1Y3QgZHd6X2ZpbGUgKmR3el9maWxlID0gYXJnOwogKwotK3N0YXRpYyBzdHJ1Y3Qg dHlwZSAqCi0rY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKLSsJCQkgICAgICAgc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorKyAgLyogTm90ZSB0aGF0IHdlIG9ubHkgc3VwcG9y dCB0aGUgc3RhbmRhcmQgRUxGIG5hbWVzLCBiZWNhdXNlIC5kd3oKKysgICAgIGlzIEVMRi1vbmx5 IChhdCB0aGUgdGltZSBvZiB3cml0aW5nKS4gICovCisrICBpZiAoc2VjdGlvbl9pc19wIChzZWN0 cC0+bmFtZSwgJmR3YXJmMl9lbGZfbmFtZXMuYWJicmV2KSkKKysgICAgeworKyAgICAgIGR3el9m aWxlLT5hYmJyZXYuYXNlY3Rpb24gPSBzZWN0cDsKKysgICAgICBkd3pfZmlsZS0+YWJicmV2LnNp emUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdHApOworKyAgICB9CisrICBlbHNlIGlmIChz ZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAmZHdhcmYyX2VsZl9uYW1lcy5pbmZvKSkKKysgICAg eworKyAgICAgIGR3el9maWxlLT5pbmZvLmFzZWN0aW9uID0gc2VjdHA7CisrICAgICAgZHd6X2Zp bGUtPmluZm8uc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCk7CisrICAgIH0KKysg IGVsc2UgaWYgKHNlY3Rpb25faXNfcCAoc2VjdHAtPm5hbWUsICZkd2FyZjJfZWxmX25hbWVzLnN0 cikpCisrICAgIHsKKysgICAgICBkd3pfZmlsZS0+c3RyLmFzZWN0aW9uID0gc2VjdHA7CisrICAg ICAgZHd6X2ZpbGUtPnN0ci5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKKysg ICAgfQorKyAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgJmR3YXJmMl9lbGZf bmFtZXMubGluZSkpCisrICAgIHsKKysgICAgICBkd3pfZmlsZS0+bGluZS5hc2VjdGlvbiA9IHNl Y3RwOworKyAgICAgIGR3el9maWxlLT5saW5lLnNpemUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAo c2VjdHApOworKyAgICB9CisrICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAm ZHdhcmYyX2VsZl9uYW1lcy5tYWNybykpCisrICAgIHsKKysgICAgICBkd3pfZmlsZS0+bWFjcm8u YXNlY3Rpb24gPSBzZWN0cDsKKysgICAgICBkd3pfZmlsZS0+bWFjcm8uc2l6ZSA9IGJmZF9nZXRf c2VjdGlvbl9zaXplIChzZWN0cCk7CisrICAgIH0KKysgIGVsc2UgaWYgKHNlY3Rpb25faXNfcCAo c2VjdHAtPm5hbWUsICZkd2FyZjJfZWxmX25hbWVzLmdkYl9pbmRleCkpCisrICAgIHsKKysgICAg ICBkd3pfZmlsZS0+Z2RiX2luZGV4LmFzZWN0aW9uID0gc2VjdHA7CisrICAgICAgZHd6X2ZpbGUt PmdkYl9pbmRleC5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKKysgICAgfQor K30KKysKKysvKiBPcGVuIHRoZSBzZXBhcmF0ZSAnLmR3eicgZGVidWcgZmlsZSwgaWYgbmVlZGVk LiAgRXJyb3IgaWYgdGhlIGZpbGUKKysgICBjYW5ub3QgYmUgZm91bmQuICAqLworKworK3N0YXRp YyBzdHJ1Y3QgZHd6X2ZpbGUgKgorK2R3YXJmMl9nZXRfZHd6X2ZpbGUgKHZvaWQpCiArewotKyAg dHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCB0eXBlLCByYW5nZV90eXBlKTsKKysgIGJm ZCAqYWJmZCwgKmR3el9iZmQ7CisrICBhc2VjdGlvbiAqc2VjdGlvbjsKKysgIGdkYl9ieXRlICpk YXRhOworKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CisrICBjb25zdCBjaGFyICpmaWxlbmFt ZTsKKysgIHN0cnVjdCBkd3pfZmlsZSAqcmVzdWx0OworKworKyAgaWYgKGR3YXJmMl9wZXJfb2Jq ZmlsZS0+ZHd6X2ZpbGUgIT0gTlVMTCkKKysgICAgcmV0dXJuIGR3YXJmMl9wZXJfb2JqZmlsZS0+ ZHd6X2ZpbGU7CisrCisrICBhYmZkID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLT5vYmZk OworKyAgc2VjdGlvbiA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLmdudV9kZWJ1 Z2FsdGxpbmsiKTsKKysgIGlmIChzZWN0aW9uID09IE5VTEwpCisrICAgIGVycm9yIChfKCJjb3Vs ZCBub3QgZmluZCAnLmdudV9kZWJ1Z2FsdGxpbmsnIHNlY3Rpb24iKSk7CisrICBpZiAoIWJmZF9t YWxsb2NfYW5kX2dldF9zZWN0aW9uIChhYmZkLCBzZWN0aW9uLCAmZGF0YSkpCisrICAgIGVycm9y IChfKCJjb3VsZCBub3QgcmVhZCAnLmdudV9kZWJ1Z2FsdGxpbmsnIHNlY3Rpb246ICVzIiksCisr CSAgIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKKysgIGNsZWFudXAgPSBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBkYXRhKTsKKysKKysgIGZpbGVuYW1lID0gZGF0YTsKKysgIGlmICghSVNf QUJTT0xVVEVfUEFUSCAoZmlsZW5hbWUpKQorKyAgICB7CisrICAgICAgY2hhciAqYWJzID0gZ2Ri X3JlYWxwYXRoIChkd2FyZjJfcGVyX29iamZpbGUtPm9iamZpbGUtPm5hbWUpOworKyAgICAgIGNo YXIgKnJlbDsKICsKLSsgIC8qIFRoZXNlIGdlbmVyaWMgdHlwZSBhdHRyaWJ1dGVzIG5lZWQgdG8g YmUgZmV0Y2hlZCBieQotKyAgICAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIDxtdWx0aV9mNzdf c3Vic2NyaXB0PidzIGNhbGwgb2YKLSsgICAgIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSBvbmx5 IGZvciB0aGUgaW5uZXJtb3N0IGFycmF5IHR5cGUuICAqLwotKyAgZmV0Y2hfZGllX3R5cGVfYXR0 cnMgKGRpZSwgdHlwZSwgY3UpOworKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGFicyk7Cisr ICAgICAgYWJzID0gbGRpcm5hbWUgKGFicyk7CisrICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwg YWJzKTsKICsKLSsgIC8qIFRoZXNlIGdlbmVyaWMgdHlwZSBhdHRyaWJ1dGVzIGFyZSBjaGVja2Vk IGZvciBhbGxvY2F0ZWQvYXNzb2NpYXRlZAotKyAgICAgdmFsaWRpdHkgd2hpbGUgYWNjZXNzaW5n IEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NLLiAgKi8KLSsgIGZldGNoX2RpZV90eXBlX2F0dHJz IChkaWUsIHJhbmdlX3R5cGUsIGN1KTsKKysgICAgICByZWwgPSBjb25jYXQgKGFicywgU0xBU0hf U1RSSU5HLCBmaWxlbmFtZSwgKGNoYXIgKikgTlVMTCk7CisrICAgICAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgcmVsKTsKKysgICAgICBmaWxlbmFtZSA9IHJlbDsKKysgICAgfQogKwotKyAgcmV0dXJu IHR5cGU7Ci0rfQorKyAgLyogVGhlIGZvcm1hdCBpcyBqdXN0IGEgTlVMLXRlcm1pbmF0ZWQgZmls ZSBuYW1lLCBmb2xsb3dlZCBieSB0aGUKKysgICAgIGJ1aWxkLWlkLiAgRm9yIG5vdywgdGhvdWdo LCB3ZSBpZ25vcmUgdGhlIGJ1aWxkLWlkLiAgKi8KKysgIGR3el9iZmQgPSBnZGJfYmZkX29wZW4g KGZpbGVuYW1lLCBnbnV0YXJnZXQsIC0xKTsKKysgIGlmIChkd3pfYmZkID09IE5VTEwpCisrICAg IGVycm9yIChfKCJjb3VsZCBub3QgcmVhZCAnJXMnOiAlcyIpLCBmaWxlbmFtZSwKKysJICAgYmZk X2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOwogKwotIC8qIEV4dHJhY3QgYWxsIGluZm9ybWF0 aW9uIGZyb20gYSBEV19UQUdfYXJyYXlfdHlwZSBESUUgYW5kIHB1dCBpdCBpbgotICAgIHRoZSBE SUUncyB0eXBlIGZpZWxkLiAgRm9yIG5vdywgdGhpcyBvbmx5IGhhbmRsZXMgb25lIGRpbWVuc2lv bmFsCi0gICAgYXJyYXlzLiAgKi8KLUBAIC05NTM5LDcgKzk1NzEsNyBAQCByZWFkX2FycmF5X3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIHN0cnVj dCB0eXBlICplbGVtZW50X3R5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZTsKLSAgIHN0cnVj dCB0eXBlICoqcmFuZ2VfdHlwZXMgPSBOVUxMOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsK LS0gIGludCBuZGltID0gMDsKLSsgIGludCBuZGltID0gMCwgaTsKLSAgIHN0cnVjdCBjbGVhbnVw ICpiYWNrX3RvOwotICAgY2hhciAqbmFtZTsKKysgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAoZHd6 X2JmZCwgYmZkX29iamVjdCkpCisrICAgIHsKKysgICAgICBnZGJfYmZkX3VucmVmIChkd3pfYmZk KTsKKysgICAgICBlcnJvciAoXygiZmlsZSAnJXMnIHdhcyBub3QgdXNhYmxlOiAlcyIpLCBmaWxl bmFtZSwKKysJICAgICBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7CisrICAgIH0KKysK KysgIHJlc3VsdCA9IE9CU1RBQ0tfWkFMTE9DICgmZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxl LT5vYmpmaWxlX29ic3RhY2ssCisrCQkJICAgc3RydWN0IGR3el9maWxlKTsKKysgIHJlc3VsdC0+ ZHd6X2JmZCA9IGR3el9iZmQ7CisrCisrICBiZmRfbWFwX292ZXJfc2VjdGlvbnMgKGR3el9iZmQs IGxvY2F0ZV9kd3pfc2VjdGlvbnMsIHJlc3VsdCk7CisrCisrICBkb19jbGVhbnVwcyAoY2xlYW51 cCk7CisrCisrICByZXR1cm4gcmVzdWx0OworK30KKyAMCisgLyogRFdBUkYgcXVpY2tfc3ltYm9s c19mdW5jdGlvbnMgc3VwcG9ydC4gICovCiAgCi1AQCAtOTU5MiwxNyArOTYyNCwxOSBAQCByZWFk X2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK LSAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CitAQCAtMjEwMSwyMyArMjEyNiwxOSBAQCBleHRyYWN0 X2N1X3ZhbHVlIChjb25zdCBjaGFyICpieXRlcywgVUxPTkdFU1QgKnJlc3VsdCkKKyAgIHJldHVy biAxOworIH0KICAKLSAgIGlmIChyZWFkX2FycmF5X29yZGVyIChkaWUsIGN1KSA9PSBEV19PUkRf Y29sX21ham9yKQotLSAgICB7Ci0tICAgICAgaW50IGkgPSAwOworLS8qIFJlYWQgdGhlIENVIGxp c3QgZnJvbSB0aGUgbWFwcGVkIGluZGV4LCBhbmQgdXNlIGl0IHRvIGNyZWF0ZSBhbGwKKy0gICB0 aGUgQ1Ugb2JqZWN0cyBmb3IgdGhpcyBvYmpmaWxlLiAgUmV0dXJuIDAgaWYgc29tZXRoaW5nIHdl bnQgd3JvbmcsCistICAgMSBpZiBldmVyeXRoaW5nIHdlbnQgb2suICAqLworKy8qIEEgaGVscGVy IGZvciBjcmVhdGVfY3VzX2Zyb21faW5kZXggdGhhdCBoYW5kbGVzIGEgZ2l2ZW4gbGlzdCBvZgor KyAgIENVcy4gICovCisgCisgc3RhdGljIGludAorLWNyZWF0ZV9jdXNfZnJvbV9pbmRleCAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGdkYl9ieXRlICpjdV9saXN0LAorLQkJICAgICAg IG9mZnNldF90eXBlIGN1X2xpc3RfZWxlbWVudHMpCisrY3JlYXRlX2N1c19mcm9tX2luZGV4X2xp c3QgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCSAgICBjb25zdCBnZGJfYnl0ZSAqY3Vf bGlzdCwgb2Zmc2V0X3R5cGUgbl9lbGVtZW50cywKKysJCQkgICAgc3RydWN0IGR3YXJmMl9zZWN0 aW9uX2luZm8gKnNlY3Rpb24sCisrCQkJICAgIGludCBpc19kd3osCisrCQkJICAgIGludCBiYXNl X29mZnNldCkKKyB7CisgICBvZmZzZXRfdHlwZSBpOworIAorLSAgZHdhcmYyX3Blcl9vYmpmaWxl LT5uX2NvbXBfdW5pdHMgPSBjdV9saXN0X2VsZW1lbnRzIC8gMjsKKy0gIGR3YXJmMl9wZXJfb2Jq ZmlsZS0+YWxsX2NvbXBfdW5pdHMKKy0gICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2Jq ZmlsZV9vYnN0YWNrLAorLQkJICAgICBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0cwor LQkJICAgICAqIHNpemVvZiAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKSk7CiAtCi0tICAg ICAgd2hpbGUgKGkgPCBuZGltKQotLQl0eXBlID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEwsIHR5 cGUsIHJhbmdlX3R5cGVzW2krK10pOwotLSAgICB9Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICB3 aGlsZSAobmRpbS0tID4gMCkKLS0JdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCB0eXBl LCByYW5nZV90eXBlc1tuZGltXSk7Ci0tICAgIH0KLSsgICAgZm9yIChpID0gMDsgaSA8IG5kaW07 IGkrKykKLSsgICAgICB0eXBlID0gY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHR5cGUs IHJhbmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsKLSsgIGVsc2UgLyogKHJlYWRfYXJyYXlfb3JkZXIg KGRpZSwgY3UpID09IERXX09SRF9yb3dfbWFqb3IpICovCi0rICAgIGZvciAoaSA9IG5kaW0gLSAx OyBpID49IDA7IGktLSkKLSsgICAgICB0eXBlID0gY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNp b24gKHR5cGUsIHJhbmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsKLSsKLSsgIC8qIERhdGEgbG9jYXRp b25zIHNob3VsZCBiZSBzZXQgb25seSBmb3IgdGhlIG91dGVybW9zdCBkaW1lbnNpb24gYXMgdGhl eQotKyAgICAgd291bGQgYmUgY29uZnVzaW5nIGZvciB0aGUgZGVyZWZlcmVuY2VkIG9mZnNldCBv biB0aGUgaW5uZXIgb25lcy4gICovCi0rICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRf ZGF0YV9sb2NhdGlvbiwgY3UpOwotKyAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0r ICAgIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyAodHlwZSkKLSsgICAgICA9IGR3YXJm Ml9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGdkYl9hc3NlcnQgKCFUWVBF X0RBVEFfTE9DQVRJT05fSVNfQUREUiAodHlwZSkpOworLSAgZm9yIChpID0gMDsgaSA8IGN1X2xp c3RfZWxlbWVudHM7IGkgKz0gMikKKysgIGZvciAoaSA9IDA7IGkgPCBuX2VsZW1lbnRzOyBpICs9 IDIpCisgICAgIHsKKyAgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGVfY3U7Cisg ICAgICAgVUxPTkdFU1Qgb2Zmc2V0LCBsZW5ndGg7CitAQCAtMjEzMiwxNSArMjE1Myw0NSBAQCBj cmVhdGVfY3VzX2Zyb21faW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBnZGJf Ynl0ZSAqY3VfbGlzdCwKKyAgICAgICB0aGVfY3UtPm9mZnNldC5zZWN0X29mZiA9IG9mZnNldDsK KyAgICAgICB0aGVfY3UtPmxlbmd0aCA9IGxlbmd0aDsKKyAgICAgICB0aGVfY3UtPm9iamZpbGUg PSBvYmpmaWxlOworLSAgICAgIHRoZV9jdS0+aW5mb19vcl90eXBlc19zZWN0aW9uID0gJmR3YXJm Ml9wZXJfb2JqZmlsZS0+aW5mbzsKKysgICAgICB0aGVfY3UtPmluZm9fb3JfdHlwZXNfc2VjdGlv biA9IHNlY3Rpb247CisgICAgICAgdGhlX2N1LT52LnF1aWNrID0gT0JTVEFDS19aQUxMT0MgKCZv YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCisgCQkJCQlzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9xdWlj a19kYXRhKTsKKy0gICAgICBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2kgLyAy XSA9IHRoZV9jdTsKKysgICAgICB0aGVfY3UtPmlzX2R3eiA9IGlzX2R3ejsKKysgICAgICBkd2Fy ZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2Jhc2Vfb2Zmc2V0ICsgaSAvIDJdID0gdGhl X2N1OworICAgICB9CiAgCi0gICAvKiBVbmRlcnN0YW5kIER3YXJmMiBzdXBwb3J0IGZvciB2ZWN0 b3IgdHlwZXMgKGxpa2UgdGhleSBvY2N1ciBvbgotICAgICAgdGhlIFBvd2VyUEMgdy8gQWx0aVZl YykuICBHY2MganVzdCBhZGRzIGFub3RoZXIgYXR0cmlidXRlIHRvIHRoZQotQEAgLTEwMDg2LDI5 ICsxMDEyMCwxMTQgQEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0 X29iamZpbGVfYXJjaCAob2JqZmlsZSk7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5 cGUsICppbmRleF90eXBlLCAqY2hhcl90eXBlOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsK KyAgIHJldHVybiAxOworIH0KKyAKKysvKiBSZWFkIHRoZSBDVSBsaXN0IGZyb20gdGhlIG1hcHBl ZCBpbmRleCwgYW5kIHVzZSBpdCB0byBjcmVhdGUgYWxsCisrICAgdGhlIENVIG9iamVjdHMgZm9y IHRoaXMgb2JqZmlsZS4gIFJldHVybiAwIGlmIHNvbWV0aGluZyB3ZW50IHdyb25nLAorKyAgIDEg aWYgZXZlcnl0aGluZyB3ZW50IG9rLiAgKi8KKysKKytzdGF0aWMgaW50CisrY3JlYXRlX2N1c19m cm9tX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCSAgICAgICBjb25zdCBnZGJf Ynl0ZSAqY3VfbGlzdCwgb2Zmc2V0X3R5cGUgY3VfbGlzdF9lbGVtZW50cywKKysJCSAgICAgICBj b25zdCBnZGJfYnl0ZSAqZHd6X2xpc3QsIG9mZnNldF90eXBlIGR3el9lbGVtZW50cykKKyt7Cisr ICBzdHJ1Y3QgZHd6X2ZpbGUgKmR3ejsKKysKKysgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21w X3VuaXRzID0gKGN1X2xpc3RfZWxlbWVudHMgKyBkd3pfZWxlbWVudHMpIC8gMjsKKysgIGR3YXJm Ml9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHMKKysgICAgPSBvYnN0YWNrX2FsbG9jICgmb2Jq ZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKwkJICAgICBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29t cF91bml0cworKwkJICAgICAqIHNpemVvZiAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKSk7 CisrCisrICBpZiAoIWNyZWF0ZV9jdXNfZnJvbV9pbmRleF9saXN0IChvYmpmaWxlLCBjdV9saXN0 LCBjdV9saXN0X2VsZW1lbnRzLAorKwkJCQkgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvLCAw LCAwKSkKKysgICAgcmV0dXJuIDA7CisrCisrICBpZiAoZHd6X2VsZW1lbnRzID09IDApCisrICAg IHJldHVybiAxOworKworKyAgZHd6ID0gZHdhcmYyX2dldF9kd3pfZmlsZSAoKTsKKysgIHJldHVy biBjcmVhdGVfY3VzX2Zyb21faW5kZXhfbGlzdCAob2JqZmlsZSwgZHd6X2xpc3QsIGR3el9lbGVt ZW50cywKKysJCQkJICAgICAmZHd6LT5pbmZvLCAxLCBjdV9saXN0X2VsZW1lbnRzIC8gMik7Cisr fQorKworIC8qIENyZWF0ZSB0aGUgc2lnbmF0dXJlZCB0eXBlIGhhc2ggdGFibGUgZnJvbSB0aGUg aW5kZXguICAqLworIAorIHN0YXRpYyBpbnQKK0BAIC0yMzMwLDMzICsyMzgxLDQ0IEBAIGZpbmRf c2xvdF9pbl9tYXBwZWRfaGFzaCAoc3RydWN0IG1hcHBlZF9pbmRleCAqaW5kZXgsIGNvbnN0IGNo YXIgKm5hbWUsCisgICAgIH0KKyB9CisgCistLyogUmVhZCB0aGUgaW5kZXggZmlsZS4gIElmIGV2 ZXJ5dGhpbmcgd2VudCBvaywgaW5pdGlhbGl6ZSB0aGUgInF1aWNrIgorLSAgIGVsZW1lbnRzIG9m IGFsbCB0aGUgQ1VzIGFuZCByZXR1cm4gMS4gIE90aGVyd2lzZSwgcmV0dXJuIDAuICAqLworKy8q IEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmVhZHMgdGhlIC5nZGJfaW5kZXggZnJvbSBTRUNUSU9O IGFuZCBmaWxscworKyAgIGluIE1BUC4gIEZJTEVOQU1FIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxl IGNvbnRhaW5pbmcgdGhlIHNlY3Rpb247CisrICAgaXQgaXMgdXNlZCBmb3IgZXJyb3IgcmVwb3J0 aW5nLiAgREVQUkVDQVRFRF9PSyBpcyBub256ZXJvIGlmIGl0IGlzCisrICAgb2sgdG8gdXNlIGRl cHJlY2F0ZWQgc2VjdGlvbnMuCisrCisrICAgQ1VfTElTVCwgQ1VfTElTVF9FTEVNRU5UUywgVFlQ RVNfTElTVCwgYW5kIFRZUEVTX0xJU1RfRUxFTUVOVFMgYXJlCisrICAgb3V0IHBhcmFtZXRlcnMg dGhhdCBhcmUgZmlsbGVkIGluIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIENVIGFuZAorKyAg IFRVIGxpc3RzIGluIHRoZSBzZWN0aW9uLgorKworKyAgIFJldHVybnMgMSBpZiBhbGwgd2VudCB3 ZWxsLCAwIG90aGVyd2lzZS4gICovCisgCisgc3RhdGljIGludAorLWR3YXJmMl9yZWFkX2luZGV4 IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytyZWFkX2luZGV4X2Zyb21fc2VjdGlvbiAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorKwkJCSBp bnQgZGVwcmVjYXRlZF9vaywKKysJCQkgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rp b24sCisrCQkJIHN0cnVjdCBtYXBwZWRfaW5kZXggKm1hcCwKKysJCQkgY29uc3QgZ2RiX2J5dGUg KipjdV9saXN0LAorKwkJCSBvZmZzZXRfdHlwZSAqY3VfbGlzdF9lbGVtZW50cywKKysJCQkgY29u c3QgZ2RiX2J5dGUgKip0eXBlc19saXN0LAorKwkJCSBvZmZzZXRfdHlwZSAqdHlwZXNfbGlzdF9l bGVtZW50cykKKyB7CisgICBjaGFyICphZGRyOworLSAgc3RydWN0IG1hcHBlZF9pbmRleCAqbWFw OworKyAgb2Zmc2V0X3R5cGUgdmVyc2lvbjsKKyAgIG9mZnNldF90eXBlICptZXRhZGF0YTsKKy0g IGNvbnN0IGdkYl9ieXRlICpjdV9saXN0OworLSAgY29uc3QgZ2RiX2J5dGUgKnR5cGVzX2xpc3Qg PSBOVUxMOworLSAgb2Zmc2V0X3R5cGUgdmVyc2lvbiwgY3VfbGlzdF9lbGVtZW50czsKKy0gIG9m ZnNldF90eXBlIHR5cGVzX2xpc3RfZWxlbWVudHMgPSAwOworICAgaW50IGk7CisgCistICBpZiAo ZHdhcmYyX3NlY3Rpb25fZW1wdHlfcCAoJmR3YXJmMl9wZXJfb2JqZmlsZS0+Z2RiX2luZGV4KSkK KysgIGlmIChkd2FyZjJfc2VjdGlvbl9lbXB0eV9wIChzZWN0aW9uKSkKKyAgICAgcmV0dXJuIDA7 CisgCisgICAvKiBPbGRlciBlbGZ1dGlscyBzdHJpcCB2ZXJzaW9ucyBjb3VsZCBrZWVwIHRoZSBz ZWN0aW9uIGluIHRoZSBtYWluCisgICAgICBleGVjdXRhYmxlIHdoaWxlIHNwbGl0dGluZyBpdCBm b3IgdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZmlsZS4gICovCistICBpZiAoKGJmZF9nZXRfZmls ZV9mbGFncyAoZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguYXNlY3Rpb24pCistICAgICAg ICYgU0VDX0hBU19DT05URU5UUykgPT0gMCkKKysgIGlmICgoYmZkX2dldF9maWxlX2ZsYWdzIChz ZWN0aW9uLT5hc2VjdGlvbikgJiBTRUNfSEFTX0NPTlRFTlRTKSA9PSAwKQorICAgICByZXR1cm4g MDsKKyAKKy0gIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsICZkd2FyZjJfcGVyX29iamZp bGUtPmdkYl9pbmRleCk7CisrICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCBzZWN0aW9u KTsKKyAKKy0gIGFkZHIgPSBkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5idWZmZXI7Cisr ICBhZGRyID0gc2VjdGlvbi0+YnVmZmVyOworICAgLyogVmVyc2lvbiBjaGVjay4gICovCisgICB2 ZXJzaW9uID0gTUFZQkVfU1dBUCAoKihvZmZzZXRfdHlwZSAqKSBhZGRyKTsKKyAgIC8qIFZlcnNp b25zIGVhcmxpZXIgdGhhbiAzIGVtaXR0ZWQgZXZlcnkgY29weSBvZiBhIHBzeW1ib2wuICBUaGlz CitAQCAtMjM2OSw3ICsyNDMxLDcgQEAgZHdhcmYyX3JlYWRfaW5kZXggKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlKQorICAgICAgIGlmICghd2FybmluZ19wcmludGVkKQorIAl7CisgCSAgd2Fybmlu ZyAoXygiU2tpcHBpbmcgb2Jzb2xldGUgLmdkYl9pbmRleCBzZWN0aW9uIGluICVzLiIpLAorLQkJ ICAgb2JqZmlsZS0+bmFtZSk7CisrCQkgICBmaWxlbmFtZSk7CisgCSAgd2FybmluZ19wcmludGVk ID0gMTsKKyAJfQorICAgICAgIHJldHVybiAwOworQEAgLTIzODIsMTQgKzI0NDQsMTQgQEAgZHdh cmYyX3JlYWRfaW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorICAgICAgc2V0IGJyZWFr cG9pbnRzIG9uIGlubGluZWQgZnVuY3Rpb25zIGJ5IG5hbWUsIHNvIHdlIGlnbm9yZSB0aGVzZQor ICAgICAgaW5kaWNlcyB1bmxlc3MgdGhlIC0tdXNlLWRlcHJlY2F0ZWQtaW5kZXgtc2VjdGlvbnMg Y29tbWFuZCBsaW5lCisgICAgICBvcHRpb24gd2FzIHN1cHBsaWVkLiAgKi8KKy0gIGlmICh2ZXJz aW9uIDwgNiAmJiAhdXNlX2RlcHJlY2F0ZWRfaW5kZXhfc2VjdGlvbnMpCisrICBpZiAodmVyc2lv biA8IDYgJiYgIWRlcHJlY2F0ZWRfb2spCisgICAgIHsKKyAgICAgICBzdGF0aWMgaW50IHdhcm5p bmdfcHJpbnRlZCA9IDA7CisgICAgICAgaWYgKCF3YXJuaW5nX3ByaW50ZWQpCisgCXsKKyAJICB3 YXJuaW5nIChfKCJTa2lwcGluZyBkZXByZWNhdGVkIC5nZGJfaW5kZXggc2VjdGlvbiBpbiAlcywg cGFzcyAiCisgCQkgICAgICItLXVzZS1kZXByZWNhdGVkLWluZGV4LXNlY3Rpb25zIHRvIHVzZSB0 aGVtIGFueXdheSIpLAorLQkJICAgb2JqZmlsZS0+bmFtZSk7CisrCQkgICBmaWxlbmFtZSk7Cisg CSAgd2FybmluZ19wcmludGVkID0gMTsKKyAJfQorICAgICAgIHJldHVybiAwOworQEAgLTIzOTks MjIgKzI0NjEsMjEgQEAgZHdhcmYyX3JlYWRfaW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl KQorICAgaWYgKHZlcnNpb24gPiA3KQorICAgICByZXR1cm4gMDsKKyAKKy0gIG1hcCA9IE9CU1RB Q0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzdHJ1Y3QgbWFwcGVkX2luZGV4 KTsKKyAgIG1hcC0+dmVyc2lvbiA9IHZlcnNpb247CistICBtYXAtPnRvdGFsX3NpemUgPSBkd2Fy ZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5zaXplOworKyAgbWFwLT50b3RhbF9zaXplID0gc2Vj dGlvbi0+c2l6ZTsKKyAKKyAgIG1ldGFkYXRhID0gKG9mZnNldF90eXBlICopIChhZGRyICsgc2l6 ZW9mIChvZmZzZXRfdHlwZSkpOworIAorICAgaSA9IDA7CistICBjdV9saXN0ID0gYWRkciArIE1B WUJFX1NXQVAgKG1ldGFkYXRhW2ldKTsKKy0gIGN1X2xpc3RfZWxlbWVudHMgPSAoKE1BWUJFX1NX QVAgKG1ldGFkYXRhW2kgKyAxXSkgLSBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSkpCistCQkgICAg ICAvIDgpOworKyAgKmN1X2xpc3QgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pOwor KyAgKmN1X2xpc3RfZWxlbWVudHMgPSAoKE1BWUJFX1NXQVAgKG1ldGFkYXRhW2kgKyAxXSkgLSBN QVlCRV9TV0FQIChtZXRhZGF0YVtpXSkpCisrCQkgICAgICAgLyA4KTsKKyAgICsraTsKKyAKKy0g IHR5cGVzX2xpc3QgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pOworLSAgdHlwZXNf bGlzdF9lbGVtZW50cyA9ICgoTUFZQkVfU1dBUCAobWV0YWRhdGFbaSArIDFdKQorLQkJCSAgLSBN QVlCRV9TV0FQIChtZXRhZGF0YVtpXSkpCistCQkJIC8gOCk7CisrICAqdHlwZXNfbGlzdCA9IGFk ZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7CisrICAqdHlwZXNfbGlzdF9lbGVtZW50cyA9 ICgoTUFZQkVfU1dBUCAobWV0YWRhdGFbaSArIDFdKQorKwkJCSAgIC0gTUFZQkVfU1dBUCAobWV0 YWRhdGFbaV0pKQorKwkJCSAgLyA4KTsKKyAgICsraTsKKyAKKyAgIG1hcC0+YWRkcmVzc190YWJs ZSA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7CitAQCAtMjQzMCwxMSArMjQ5MSw1 NSBAQCBkd2FyZjJfcmVhZF9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgCisgICBt YXAtPmNvbnN0YW50X3Bvb2wgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pOworIAor KyAgcmV0dXJuIDE7CisrfQorKworKworKy8qIFJlYWQgdGhlIGluZGV4IGZpbGUuICBJZiBldmVy eXRoaW5nIHdlbnQgb2ssIGluaXRpYWxpemUgdGhlICJxdWljayIKKysgICBlbGVtZW50cyBvZiBh bGwgdGhlIENVcyBhbmQgcmV0dXJuIDEuICBPdGhlcndpc2UsIHJldHVybiAwLiAgKi8KKysKKytz dGF0aWMgaW50CisrZHdhcmYyX3JlYWRfaW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQor K3sKKysgIHN0cnVjdCBtYXBwZWRfaW5kZXggbG9jYWxfbWFwLCAqbWFwOworKyAgY29uc3QgZ2Ri X2J5dGUgKmN1X2xpc3QsICp0eXBlc19saXN0LCAqZHd6X2xpc3QgPSBOVUxMOworKyAgb2Zmc2V0 X3R5cGUgY3VfbGlzdF9lbGVtZW50cywgdHlwZXNfbGlzdF9lbGVtZW50cywgZHd6X2xpc3RfZWxl bWVudHMgPSAwOworKworKyAgaWYgKCFyZWFkX2luZGV4X2Zyb21fc2VjdGlvbiAob2JqZmlsZSwg b2JqZmlsZS0+bmFtZSwKKysJCQkJdXNlX2RlcHJlY2F0ZWRfaW5kZXhfc2VjdGlvbnMsCisrCQkJ CSZkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleCwgJmxvY2FsX21hcCwKKysJCQkJJmN1X2xp c3QsICZjdV9saXN0X2VsZW1lbnRzLAorKwkJCQkmdHlwZXNfbGlzdCwgJnR5cGVzX2xpc3RfZWxl bWVudHMpKQorKyAgICByZXR1cm4gMDsKKysKKyAgIC8qIERvbid0IHVzZSB0aGUgaW5kZXggaWYg aXQncyBlbXB0eS4gICovCistICBpZiAobWFwLT5zeW1ib2xfdGFibGVfc2xvdHMgPT0gMCkKKysg IGlmIChsb2NhbF9tYXAuc3ltYm9sX3RhYmxlX3Nsb3RzID09IDApCisgICAgIHJldHVybiAwOwor IAorLSAgaWYgKCFjcmVhdGVfY3VzX2Zyb21faW5kZXggKG9iamZpbGUsIGN1X2xpc3QsIGN1X2xp c3RfZWxlbWVudHMpKQorKyAgLyogSWYgdGhlcmUgaXMgYSAuZHd6IGZpbGUsIHJlYWQgaXQgc28g d2UgY2FuIGdldCBpdHMgQ1UgbGlzdCBhcworKyAgICAgd2VsbC4gICovCisrICBpZiAoYmZkX2dl dF9zZWN0aW9uX2J5X25hbWUgKG9iamZpbGUtPm9iZmQsICIuZ251X2RlYnVnYWx0bGluayIpICE9 IE5VTEwpCisrICAgIHsKKysgICAgICBzdHJ1Y3QgZHd6X2ZpbGUgKmR3eiA9IGR3YXJmMl9nZXRf ZHd6X2ZpbGUgKCk7CisrICAgICAgc3RydWN0IG1hcHBlZF9pbmRleCBkd3pfbWFwOworKyAgICAg IGNvbnN0IGdkYl9ieXRlICpkd3pfdHlwZXNfaWdub3JlOworKyAgICAgIG9mZnNldF90eXBlIGR3 el90eXBlc19lbGVtZW50c19pZ25vcmU7CisrCisrICAgICAgaWYgKCFyZWFkX2luZGV4X2Zyb21f c2VjdGlvbiAob2JqZmlsZSwgYmZkX2dldF9maWxlbmFtZSAoZHd6LT5kd3pfYmZkKSwKKysJCQkJ ICAgIDEsCisrCQkJCSAgICAmZHd6LT5nZGJfaW5kZXgsICZkd3pfbWFwLAorKwkJCQkgICAgJmR3 el9saXN0LCAmZHd6X2xpc3RfZWxlbWVudHMsCisrCQkJCSAgICAmZHd6X3R5cGVzX2lnbm9yZSwK KysJCQkJICAgICZkd3pfdHlwZXNfZWxlbWVudHNfaWdub3JlKSkKKysJeworKwkgIHdhcm5pbmcg KF8oImNvdWxkIG5vdCByZWFkICcuZ2RiX2luZGV4JyBzZWN0aW9uIGZyb20gJXM7IHNraXBwaW5n IiksCisrCQkgICBiZmRfZ2V0X2ZpbGVuYW1lIChkd3otPmR3el9iZmQpKTsKKysJICByZXR1cm4g MDsKKysJfQorKyAgICB9CisrCisrICBpZiAoIWNyZWF0ZV9jdXNfZnJvbV9pbmRleCAob2JqZmls ZSwgY3VfbGlzdCwgY3VfbGlzdF9lbGVtZW50cywKKysJCQkgICAgICBkd3pfbGlzdCwgZHd6X2xp c3RfZWxlbWVudHMpKQorICAgICByZXR1cm4gMDsKKyAKKyAgIGlmICh0eXBlc19saXN0X2VsZW1l bnRzKQorQEAgLTI0NTUsNyArMjU2MCwxMCBAQCBkd2FyZjJfcmVhZF9pbmRleCAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUpCisgCXJldHVybiAwOworICAgICB9CisgCistICBjcmVhdGVfYWRkcm1h cF9mcm9tX2luZGV4IChvYmpmaWxlLCBtYXApOworKyAgY3JlYXRlX2FkZHJtYXBfZnJvbV9pbmRl eCAob2JqZmlsZSwgJmxvY2FsX21hcCk7CisrCisrICBtYXAgPSBvYnN0YWNrX2FsbG9jICgmb2Jq ZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKHN0cnVjdCBtYXBwZWRfaW5kZXgpKTsKKysg ICptYXAgPSBsb2NhbF9tYXA7CisgCisgICBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxl ID0gbWFwOworICAgZHdhcmYyX3Blcl9vYmpmaWxlLT51c2luZ19pbmRleCA9IDE7CitAQCAtMzQ0 Miw2ICszNTUwLDIyIEBAIHJlYWRfY29tcF91bml0X2hlYWQgKHN0cnVjdCBjb21wX3VuaXRfaGVh ZCAqY3VfaGVhZGVyLAorICAgcmV0dXJuIGluZm9fcHRyOworIH0KKyAKKysvKiBIZWxwZXIgZnVu Y3Rpb24gdGhhdCByZXR1cm5zIHRoZSBwcm9wZXIgYWJicmV2IHNlY3Rpb24gZm9yCisrICAgVEhJ U19DVS4gICovCisrCisrc3RhdGljIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICoKKytnZXRf YWJicmV2X3NlY3Rpb25fZm9yX2N1IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1 KQorK3sKKysgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICphYmJyZXY7CisrCisrICBpZiAo dGhpc19jdS0+aXNfZHd6KQorKyAgICBhYmJyZXYgPSAmZHdhcmYyX2dldF9kd3pfZmlsZSAoKS0+ YWJicmV2OworKyAgZWxzZQorKyAgICBhYmJyZXYgPSAmZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJy ZXY7CisrCisrICByZXR1cm4gYWJicmV2OworK30KKysKKyAvKiBTdWJyb3V0aW5lIG9mIHJlYWRf YW5kX2NoZWNrX2NvbXBfdW5pdF9oZWFkIGFuZAorICAgIHJlYWRfYW5kX2NoZWNrX3R5cGVfdW5p dF9oZWFkIHRvIHNpbXBsaWZ5IHRoZW0uCisgICAgUGVyZm9ybSB2YXJpb3VzIGVycm9yIGNoZWNr aW5nIG9uIHRoZSBoZWFkZXIuICAqLworQEAgLTM0NjAsOCArMzU4NCw3IEBAIGVycm9yX2NoZWNr X2NvbXBfdW5pdF9oZWFkIChzdHJ1Y3QgY29tcF91bml0X2hlYWQgKmhlYWRlciwKKyAJICAgZmls ZW5hbWUpOworIAorICAgaWYgKGhlYWRlci0+YWJicmV2X29mZnNldC5zZWN0X29mZgorLSAgICAg ID49IGR3YXJmMl9zZWN0aW9uX3NpemUgKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwKKy0J CQkgICAgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJyZXYpKQorKyAgICAgID49IGR3YXJmMl9z ZWN0aW9uX3NpemUgKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwgYWJicmV2X3NlY3Rpb24p KQorICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IGJhZCBvZmZzZXQgKDB4JWx4KSBpbiBjb21w aWxhdGlvbiB1bml0IGhlYWRlciAiCisgCSAgICIob2Zmc2V0IDB4JWx4ICsgNikgW2luIG1vZHVs ZSAlc10iKSwKKyAJICAgKGxvbmcpIGhlYWRlci0+YWJicmV2X29mZnNldC5zZWN0X29mZiwgKGxv bmcpIGhlYWRlci0+b2Zmc2V0LnNlY3Rfb2ZmLAorQEAgLTM2NzgsNiArMzgwMSw3IEBAIGNyZWF0 ZV9kZWJ1Z190eXBlc19oYXNoX3RhYmxlIChzdHJ1Y3QgZHdvX2ZpbGUgKmR3b19maWxlLAorICAg ICB7CisgICAgICAgYmZkICphYmZkOworICAgICAgIGdkYl9ieXRlICppbmZvX3B0ciwgKmVuZF9w dHI7CisrICAgICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmFiYnJldl9zZWN0aW9uOwor IAorICAgICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsIHNlY3Rpb24pOworICAgICAg IGluZm9fcHRyID0gc2VjdGlvbi0+YnVmZmVyOworQEAgLTM2ODksNiArMzgxMywxMSBAQCBjcmVh dGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSAoc3RydWN0IGR3b19maWxlICpkd29fZmlsZSwKKyAJ IG5vdCBwcmVzZW50LCBpbiB3aGljaCBjYXNlIHNlY3Rpb24tPmFzZWN0aW9uIHdpbGwgYmUgTlVM TC4gICovCisgICAgICAgYWJmZCA9IHNlY3Rpb24tPmFzZWN0aW9uLT5vd25lcjsKKyAKKysgICAg ICBpZiAoZHdvX2ZpbGUpCisrCWFiYnJldl9zZWN0aW9uID0gJmR3b19maWxlLT5zZWN0aW9ucy5h YmJyZXY7CisrICAgICAgZWxzZQorKwlhYmJyZXZfc2VjdGlvbiA9ICZkd2FyZjJfcGVyX29iamZp bGUtPmFiYnJldjsKKysKKyAgICAgICBpZiAodHlwZXNfaHRhYiA9PSBOVUxMKQorIAl7CisgCSAg aWYgKGR3b19maWxlKQorQEAgLTM5MjMsNyArNDA1Miw4IEBAIGluaXRfY3V0dV9hbmRfcmVhZF9k aWVzIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1LAorICAgZHdhcmYyX3JlYWRf c2VjdGlvbiAob2JqZmlsZSwgc2VjdGlvbik7CisgCisgICBiZWdpbl9pbmZvX3B0ciA9IGluZm9f cHRyID0gc2VjdGlvbi0+YnVmZmVyICsgdGhpc19jdS0+b2Zmc2V0LnNlY3Rfb2ZmOworLSAgYWJi cmV2X3NlY3Rpb24gPSAmZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJyZXY7CisrCisrICBhYmJyZXZf c2VjdGlvbiA9IGdldF9hYmJyZXZfc2VjdGlvbl9mb3JfY3UgKHRoaXNfY3UpOworIAorICAgaWYg KHVzZV9leGlzdGluZ19jdSAmJiB0aGlzX2N1LT5jdSAhPSBOVUxMKQorICAgICB7CitAQCAtNDI5 MCw3ICs0NDIwLDcgQEAgaW5pdF9jdXR1X2FuZF9yZWFkX2RpZXNfc2ltcGxlIChzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1LAorIAkJCQl2b2lkICpkYXRhKQorIHsKKyAgIGluaXRf Y3V0dV9hbmRfcmVhZF9kaWVzX25vX2ZvbGxvdyAodGhpc19jdSwKKy0JCQkJICAgICAmZHdhcmYy X3Blcl9vYmpmaWxlLT5hYmJyZXYsCisrCQkJCSAgICAgZ2V0X2FiYnJldl9zZWN0aW9uX2Zvcl9j dSAodGhpc19jdSksCisgCQkJCSAgICAgTlVMTCwKKyAJCQkJICAgICBkaWVfcmVhZGVyX2Z1bmMs IGRhdGEpOworIH0KK0BAIC00NTM3LDYgKzQ2NjcsOSBAQCBzZXRfcGFydGlhbF91c2VyIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgICAgICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCA9 IHBlcl9jdS0+di5wc3ltdGFiOworICAgICAgIGludCBqOworIAorKyAgICAgIGlmIChwc3QgPT0g TlVMTCkKKysJY29udGludWU7CisrCisgICAgICAgZm9yIChqID0gMDsgaiA8IHBzdC0+bnVtYmVy X29mX2RlcGVuZGVuY2llczsgKytqKQorIAl7CisgCSAgLyogU2V0IHRoZSAndXNlcicgZmllbGQg b25seSBpZiBpdCBpcyBub3QgYWxyZWFkeSBzZXQuICAqLworQEAgLTQ2MzAsMzggKzQ3NjMsMzIg QEAgbG9hZF9wYXJ0aWFsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqdGhp c19jdSkKKyAgIGluaXRfY3V0dV9hbmRfcmVhZF9kaWVzICh0aGlzX2N1LCAxLCAxLCBsb2FkX3Bh cnRpYWxfY29tcF91bml0X3JlYWRlciwgTlVMTCk7CisgfQorIAorLS8qIENyZWF0ZSBhIGxpc3Qg b2YgYWxsIGNvbXBpbGF0aW9uIHVuaXRzIGluIE9CSkZJTEUuCistICAgVGhpcyBpcyBvbmx5IGRv bmUgZm9yIC1yZWFkbm93IGFuZCBidWlsZGluZyBwYXJ0aWFsIHN5bXRhYnMuICAqLworLQorIHN0 YXRpYyB2b2lkCistY3JlYXRlX2FsbF9jb21wX3VuaXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSkKKytyZWFkX2NvbXBfdW5pdHNfZnJvbV9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKKysJCQkgICAgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiwKKysJCQkg ICAgICB1bnNpZ25lZCBpbnQgaXNfZHd6LAorKwkJCSAgICAgIGludCAqbl9hbGxvY2F0ZWQsCisr CQkJICAgICAgaW50ICpuX2NvbXBfdW5pdHMsCisrCQkJICAgICAgc3RydWN0IGR3YXJmMl9wZXJf Y3VfZGF0YSAqKiphbGxfY29tcF91bml0cykKKyB7CistICBpbnQgbl9hbGxvY2F0ZWQ7CistICBp bnQgbl9jb21wX3VuaXRzOworLSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKmFsbF9jb21w X3VuaXRzOworICAgZ2RiX2J5dGUgKmluZm9fcHRyOworKyAgYmZkICphYmZkID0gc2VjdGlvbi0+ YXNlY3Rpb24tPm93bmVyOworIAorLSAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3 YXJmMl9wZXJfb2JqZmlsZS0+aW5mbyk7CistICBpbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmls ZS0+aW5mby5idWZmZXI7CisrICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCBzZWN0aW9u KTsKKyAKKy0gIG5fY29tcF91bml0cyA9IDA7CistICBuX2FsbG9jYXRlZCA9IDEwOworLSAgYWxs X2NvbXBfdW5pdHMgPSB4bWFsbG9jIChuX2FsbG9jYXRlZAorLQkJCSAgICAqIHNpemVvZiAoc3Ry dWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKSk7CisrICBpbmZvX3B0ciA9IHNlY3Rpb24tPmJ1ZmZl cjsKKyAKKy0gIHdoaWxlIChpbmZvX3B0ciA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZm ZXIKKy0JICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvLnNpemUpCisrICB3aGlsZSAoaW5mb19w dHIgPCBzZWN0aW9uLT5idWZmZXIgKyBzZWN0aW9uLT5zaXplKQorICAgICB7CisgICAgICAgdW5z aWduZWQgaW50IGxlbmd0aCwgaW5pdGlhbF9sZW5ndGhfc2l6ZTsKKyAgICAgICBzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1OworICAgICAgIHNlY3Rfb2Zmc2V0IG9mZnNldDsKKyAK Ky0gICAgICBvZmZzZXQuc2VjdF9vZmYgPSBpbmZvX3B0ciAtIGR3YXJmMl9wZXJfb2JqZmlsZS0+ aW5mby5idWZmZXI7CisrICAgICAgb2Zmc2V0LnNlY3Rfb2ZmID0gaW5mb19wdHIgLSBzZWN0aW9u LT5idWZmZXI7CisgCisgICAgICAgLyogUmVhZCBqdXN0IGVub3VnaCBpbmZvcm1hdGlvbiB0byBm aW5kIG91dCB3aGVyZSB0aGUgbmV4dAorIAkgY29tcGlsYXRpb24gdW5pdCBpcy4gICovCistICAg ICAgbGVuZ3RoID0gcmVhZF9pbml0aWFsX2xlbmd0aCAob2JqZmlsZS0+b2JmZCwgaW5mb19wdHIs CistCQkJCSAgICAmaW5pdGlhbF9sZW5ndGhfc2l6ZSk7CisrICAgICAgbGVuZ3RoID0gcmVhZF9p bml0aWFsX2xlbmd0aCAoYWJmZCwgaW5mb19wdHIsICZpbml0aWFsX2xlbmd0aF9zaXplKTsKKyAK KyAgICAgICAvKiBTYXZlIHRoZSBjb21waWxhdGlvbiB1bml0IGZvciBsYXRlciBsb29rdXAuICAq LworICAgICAgIHRoaXNfY3UgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrLAorQEAgLTQ2NjksMjAgKzQ3OTYsNTAgQEAgY3JlYXRlX2FsbF9jb21wX3VuaXRzIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgICAgICBtZW1zZXQgKHRoaXNfY3UsIDAsIHNpemVvZiAo KnRoaXNfY3UpKTsKKyAgICAgICB0aGlzX2N1LT5vZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgdGhp c19jdS0+bGVuZ3RoID0gbGVuZ3RoICsgaW5pdGlhbF9sZW5ndGhfc2l6ZTsKKysgICAgICB0aGlz X2N1LT5pc19kd3ogPSBpc19kd3o7CisgICAgICAgdGhpc19jdS0+b2JqZmlsZSA9IG9iamZpbGU7 CistICAgICAgdGhpc19jdS0+aW5mb19vcl90eXBlc19zZWN0aW9uID0gJmR3YXJmMl9wZXJfb2Jq ZmlsZS0+aW5mbzsKKysgICAgICB0aGlzX2N1LT5pbmZvX29yX3R5cGVzX3NlY3Rpb24gPSBzZWN0 aW9uOworIAorLSAgICAgIGlmIChuX2NvbXBfdW5pdHMgPT0gbl9hbGxvY2F0ZWQpCisrICAgICAg aWYgKCpuX2NvbXBfdW5pdHMgPT0gKm5fYWxsb2NhdGVkKQorIAl7CistCSAgbl9hbGxvY2F0ZWQg Kj0gMjsKKy0JICBhbGxfY29tcF91bml0cyA9IHhyZWFsbG9jIChhbGxfY29tcF91bml0cywKKy0J CQkJICAgICBuX2FsbG9jYXRlZAorLQkJCQkgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICopKTsKKysJICAqbl9hbGxvY2F0ZWQgKj0gMjsKKysJICAqYWxsX2NvbXBfdW5p dHMgPSB4cmVhbGxvYyAoKmFsbF9jb21wX3VuaXRzLAorKwkJCQkgICAgICAqbl9hbGxvY2F0ZWQK KysJCQkJICAgICAgKiBzaXplb2YgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKikpOworIAl9 CistICAgICAgYWxsX2NvbXBfdW5pdHNbbl9jb21wX3VuaXRzKytdID0gdGhpc19jdTsKKysgICAg ICAoKmFsbF9jb21wX3VuaXRzKVsqbl9jb21wX3VuaXRzXSA9IHRoaXNfY3U7CisrICAgICAgKysq bl9jb21wX3VuaXRzOworIAorICAgICAgIGluZm9fcHRyID0gaW5mb19wdHIgKyB0aGlzX2N1LT5s ZW5ndGg7CisgICAgIH0KKyt9CisrCisrLyogQ3JlYXRlIGEgbGlzdCBvZiBhbGwgY29tcGlsYXRp b24gdW5pdHMgaW4gT0JKRklMRS4KKysgICBUaGlzIGlzIG9ubHkgZG9uZSBmb3IgLXJlYWRub3cg YW5kIGJ1aWxkaW5nIHBhcnRpYWwgc3ltdGFicy4gICovCisrCisrc3RhdGljIHZvaWQKKytjcmVh dGVfYWxsX2NvbXBfdW5pdHMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK3sKKysgIGludCBu X2FsbG9jYXRlZDsKKysgIGludCBuX2NvbXBfdW5pdHM7CisrICBzdHJ1Y3QgZHdhcmYyX3Blcl9j dV9kYXRhICoqYWxsX2NvbXBfdW5pdHM7CisrCisrICBuX2NvbXBfdW5pdHMgPSAwOworKyAgbl9h bGxvY2F0ZWQgPSAxMDsKKysgIGFsbF9jb21wX3VuaXRzID0geG1hbGxvYyAobl9hbGxvY2F0ZWQK KysJCQkgICAgKiBzaXplb2YgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKikpOworKworKyAg cmVhZF9jb21wX3VuaXRzX2Zyb21fc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2JqZmls ZS0+aW5mbywgMCwKKysJCQkJJm5fYWxsb2NhdGVkLCAmbl9jb21wX3VuaXRzLCAmYWxsX2NvbXBf dW5pdHMpOworKworKyAgaWYgKGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmpmaWxlLT5vYmZk LCAiLmdudV9kZWJ1Z2FsdGxpbmsiKSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgc3RydWN0IGR3 el9maWxlICpkd3ogPSBkd2FyZjJfZ2V0X2R3el9maWxlICgpOworKworKyAgICAgIHJlYWRfY29t cF91bml0c19mcm9tX3NlY3Rpb24gKG9iamZpbGUsICZkd3otPmluZm8sIDEsCisrCQkJCSAgICAm bl9hbGxvY2F0ZWQsICZuX2NvbXBfdW5pdHMsCisrCQkJCSAgICAmYWxsX2NvbXBfdW5pdHMpOwor KyAgICB9CisgCisgICBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzCisgICAgID0g b2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKK0BAIC00NzY3LDYgKzQ5 MjQsNyBAQCBzY2FuX3BhcnRpYWxfc3ltYm9scyAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKmZp cnN0X2RpZSwgQ09SRV9BRERSICpsb3dwYywKKyAJCXN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEg KnBlcl9jdTsKKyAKKyAJCXBlcl9jdSA9IGR3YXJmMl9maW5kX2NvbnRhaW5pbmdfY29tcF91bml0 IChwZGktPmQub2Zmc2V0LAorKwkJCQkJCQkgICBwZGktPmlzX2R3eiwKKyAJCQkJCQkJICAgY3Ut Pm9iamZpbGUpOworIAorIAkJLyogR28gcmVhZCB0aGUgcGFydGlhbCB1bml0LCBpZiBuZWVkZWQu ICAqLworQEAgLTQ4MjQsNyArNDk4Miw4IEBAIHBhcnRpYWxfZGllX3BhcmVudF9zY29wZSAoc3Ry dWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwKKyAKKyAgIHJlYWxfcGRpID0gcGRpOworICAgd2hp bGUgKHJlYWxfcGRpLT5oYXNfc3BlY2lmaWNhdGlvbikKKy0gICAgcmVhbF9wZGkgPSBmaW5kX3Bh cnRpYWxfZGllIChyZWFsX3BkaS0+c3BlY19vZmZzZXQsIGN1KTsKKysgICAgcmVhbF9wZGkgPSBm aW5kX3BhcnRpYWxfZGllIChyZWFsX3BkaS0+c3BlY19vZmZzZXQsCisrCQkJCSByZWFsX3BkaS0+ c3BlY19pc19kd3osIGN1KTsKKyAKKyAgIHBhcmVudCA9IHJlYWxfcGRpLT5kaWVfcGFyZW50Owor ICAgaWYgKHBhcmVudCA9PSBOVUxMKQorQEAgLTUzMjQsNiArNTQ4Myw5IEBAIHNraXBfb25lX2Rp ZSAoY29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwgZ2RiX2J5dGUgKmluZm9f cHRyLAorIAkgIGVsc2UKKyAJICAgIGluZm9fcHRyICs9IGN1LT5oZWFkZXIub2Zmc2V0X3NpemU7 CisgCSAgYnJlYWs7CisrCWNhc2UgRFdfRk9STV9HTlVfcmVmX2FsdDoKKysJICBpbmZvX3B0ciAr PSBjdS0+aGVhZGVyLm9mZnNldF9zaXplOworKwkgIGJyZWFrOworIAljYXNlIERXX0ZPUk1fYWRk cjoKKyAJICBpbmZvX3B0ciArPSBjdS0+aGVhZGVyLmFkZHJfc2l6ZTsKKyAJICBicmVhazsKK0BA IC01MzUzLDYgKzU1MTUsNyBAQCBza2lwX29uZV9kaWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVy X3NwZWNzICpyZWFkZXIsIGdkYl9ieXRlICppbmZvX3B0ciwKKyAJICBicmVhazsKKyAJY2FzZSBE V19GT1JNX3NlY19vZmZzZXQ6CisgCWNhc2UgRFdfRk9STV9zdHJwOgorKwljYXNlIERXX0ZPUk1f R05VX3N0cnBfYWx0OgorIAkgIGluZm9fcHRyICs9IGN1LT5oZWFkZXIub2Zmc2V0X3NpemU7Cisg CSAgYnJlYWs7CisgCWNhc2UgRFdfRk9STV9leHBybG9jOgorQEAgLTU5OTksNyArNjE2Miw5IEBA IHByb2Nlc3NfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9j dSwKKyAgICAgIGl0LCBieSBzY2FubmluZyB0aGUgRElFJ3MgYmVsb3cgdGhlIGNvbXBpbGF0aW9u IHVuaXQuICAqLworICAgZ2V0X3Njb3BlX3BjX2JvdW5kcyAoY3UtPmRpZXMsICZsb3dwYywgJmhp Z2hwYywgY3UpOworIAorLSAgc3ltdGFiID0gZW5kX3N5bXRhYiAoaGlnaHBjICsgYmFzZWFkZHIs IG9iamZpbGUsIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKTsKKysgIHN5bXRhYiA9IGVuZF9zeW10 YWJfZnVsbCAoaGlnaHBjICsgYmFzZWFkZHIsIG9iamZpbGUsCisrCQkJICAgIFNFQ1RfT0ZGX1RF WFQgKG9iamZpbGUpLAorKwkJCSAgICBwZXJfY3UtPmltcG9ydGVkX3N5bXRhYnMgIT0gTlVMTCk7 CisgCisgICBpZiAoc3ltdGFiICE9IE5VTEwpCisgICAgIHsKK0BAIC02MDY4LDkgKzYyMzMsMTEg QEAgcHJvY2Vzc19pbXBvcnRlZF91bml0X2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQorICAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9j dTsKKyAgICAgICBzdHJ1Y3Qgc3ltdGFiICppbXBvcnRlZF9zeW10YWI7CisgICAgICAgc2VjdF9v ZmZzZXQgb2Zmc2V0OworKyAgICAgIGludCBpc19kd3o7CisgCisgICAgICAgb2Zmc2V0ID0gZHdh cmYyX2dldF9yZWZfZGllX29mZnNldCAoYXR0cik7CistICAgICAgcGVyX2N1ID0gZHdhcmYyX2Zp bmRfY29udGFpbmluZ19jb21wX3VuaXQgKG9mZnNldCwgY3UtPm9iamZpbGUpOworKyAgICAgIGlz X2R3eiA9IChhdHRyLT5mb3JtID09IERXX0ZPUk1fR05VX3JlZl9hbHQgfHwgY3UtPnBlcl9jdS0+ aXNfZHd6KTsKKysgICAgICBwZXJfY3UgPSBkd2FyZjJfZmluZF9jb250YWluaW5nX2NvbXBfdW5p dCAob2Zmc2V0LCBpc19kd3osIGN1LT5vYmpmaWxlKTsKKyAKKyAgICAgICAvKiBRdWV1ZSB0aGUg dW5pdCwgaWYgbmVlZGVkLiAgKi8KKyAgICAgICBpZiAobWF5YmVfcXVldWVfY29tcF91bml0IChj dSwgcGVyX2N1LCBjdS0+bGFuZ3VhZ2UpKQorQEAgLTcyODQsMjQgKzc0NTEsMjIgQEAgdHJ5X29w ZW5fZHdvX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVfbmFtZSkKKyAgIGlmIChkZXNjIDwgMCkKKyAg ICAgcmV0dXJuIE5VTEw7CisgCistICBzeW1fYmZkID0gYmZkX2ZvcGVuIChhYnNvbHV0ZV9uYW1l LCBnbnV0YXJnZXQsIEZPUEVOX1JCLCBkZXNjKTsKKysgIHN5bV9iZmQgPSBnZGJfYmZkX29wZW4g KGFic29sdXRlX25hbWUsIGdudXRhcmdldCwgZGVzYyk7CisgICBpZiAoIXN5bV9iZmQpCisgICAg IHsKKyAgICAgICB4ZnJlZSAoYWJzb2x1dGVfbmFtZSk7CisgICAgICAgcmV0dXJuIE5VTEw7Cisg ICAgIH0KKysgIGdkYl9iZmRfc3Rhc2hfZmlsZW5hbWUgKHN5bV9iZmQpOworKyAgeGZyZWUgKGFi c29sdXRlX25hbWUpOworICAgYmZkX3NldF9jYWNoZWFibGUgKHN5bV9iZmQsIDEpOworIAorICAg aWYgKCFiZmRfY2hlY2tfZm9ybWF0IChzeW1fYmZkLCBiZmRfb2JqZWN0KSkKKyAgICAgeworLSAg ICAgIGJmZF9jbG9zZSAoc3ltX2JmZCk7IC8qIFRoaXMgYWxzbyBjbG9zZXMgZGVzYy4gICovCist ICAgICAgeGZyZWUgKGFic29sdXRlX25hbWUpOworKyAgICAgIGdkYl9iZmRfdW5yZWYgKHN5bV9i ZmQpOyAvKiBUaGlzIGFsc28gY2xvc2VzIGRlc2MuICAqLworICAgICAgIHJldHVybiBOVUxMOwor ICAgICB9CisgCistICAvKiBiZmRfdXNyZGF0YSBleGlzdHMgZm9yIGFwcGxpY2F0aW9ucyBhbmQg bGliYmZkIG11c3Qgbm90IHRvdWNoIGl0LiAgKi8KKy0gIGdkYl9hc3NlcnQgKGJmZF91c3JkYXRh IChzeW1fYmZkKSA9PSBOVUxMKTsKKy0KKyAgIHJldHVybiBzeW1fYmZkOworIH0KKyAKK0BAIC03 NDkzLDIwICs3NjU4LDcgQEAgZnJlZV9kd29fZmlsZSAoc3RydWN0IGR3b19maWxlICpkd29fZmls ZSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5m byAqc2VjdGlvbjsKKyAKKyAgIGdkYl9hc3NlcnQgKGR3b19maWxlLT5kd29fYmZkICE9IG9iamZp bGUtPm9iZmQpOworLSAgYmZkX2Nsb3NlIChkd29fZmlsZS0+ZHdvX2JmZCk7CistCistICBtdW5t YXBfc2VjdGlvbl9idWZmZXIgKCZkd29fZmlsZS0+c2VjdGlvbnMuYWJicmV2KTsKKy0gIG11bm1h cF9zZWN0aW9uX2J1ZmZlciAoJmR3b19maWxlLT5zZWN0aW9ucy5pbmZvKTsKKy0gIG11bm1hcF9z ZWN0aW9uX2J1ZmZlciAoJmR3b19maWxlLT5zZWN0aW9ucy5saW5lKTsKKy0gIG11bm1hcF9zZWN0 aW9uX2J1ZmZlciAoJmR3b19maWxlLT5zZWN0aW9ucy5sb2MpOworLSAgbXVubWFwX3NlY3Rpb25f YnVmZmVyICgmZHdvX2ZpbGUtPnNlY3Rpb25zLnN0cik7CistICBtdW5tYXBfc2VjdGlvbl9idWZm ZXIgKCZkd29fZmlsZS0+c2VjdGlvbnMuc3RyX29mZnNldHMpOworLQorLSAgZm9yIChpeCA9IDA7 CistICAgICAgIFZFQ19pdGVyYXRlIChkd2FyZjJfc2VjdGlvbl9pbmZvX2RlZiwgZHdvX2ZpbGUt PnNlY3Rpb25zLnR5cGVzLAorLQkJICAgIGl4LCBzZWN0aW9uKTsKKy0gICAgICAgKytpeCkKKy0g ICAgbXVubWFwX3NlY3Rpb25fYnVmZmVyIChzZWN0aW9uKTsKKysgIGdkYl9iZmRfdW5yZWYgKGR3 b19maWxlLT5kd29fYmZkKTsKKyAKKyAgIFZFQ19mcmVlIChkd2FyZjJfc2VjdGlvbl9pbmZvX2Rl ZiwgZHdvX2ZpbGUtPnNlY3Rpb25zLnR5cGVzKTsKKyB9CitAQCAtOTg3OCw2ICsxMDAzMCwyOSBA QCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCisgICBuZXdfc3ltYm9sIChkaWUsIHRoaXNfdHlwZSwgY3UpOworIH0K KyAKKysvKiBDcmVhdGUgYSBuZXcgYXJyYXkgZGltZW5zaW9uIHJlZmVyZW5jaW5nIGl0cyB0YXJn ZXQgdHlwZSBUWVBFLgorKworKyAgIE11bHRpZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBpbnRlcm5h bGx5IHJlcHJlc2VudGVkIGFzIGEgc3RhY2sgb2YKKysgICBzaW5nbGVkaW1lbnNpb25hbCBhcnJh eXMgYmVpbmcgcmVmZXJlbmNlZCBieSB0aGVpciBUWVBFX1RBUkdFVF9UWVBFLiAgKi8KKysKKytz dGF0aWMgc3RydWN0IHR5cGUgKgorK2NyZWF0ZV9zaW5nbGVfYXJyYXlfZGltZW5zaW9uIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGUsCisrCQkJICAgICAgIHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyt7CisrICB0eXBlID0gY3Jl YXRlX2FycmF5X3R5cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGUpOworKworKyAgLyogVGhlc2Ug Z2VuZXJpYyB0eXBlIGF0dHJpYnV0ZXMgbmVlZCB0byBiZSBmZXRjaGVkIGJ5CisrICAgICBldmFs dWF0ZV9zdWJleHBfc3RhbmRhcmQgPG11bHRpX2Y3N19zdWJzY3JpcHQ+J3MgY2FsbCBvZgorKyAg ICAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIG9ubHkgZm9yIHRoZSBpbm5lcm1vc3QgYXJyYXkg dHlwZS4gICovCisrICBmZXRjaF9kaWVfdHlwZV9hdHRycyAoZGllLCB0eXBlLCBjdSk7CisrCisr ICAvKiBUaGVzZSBnZW5lcmljIHR5cGUgYXR0cmlidXRlcyBhcmUgY2hlY2tlZCBmb3IgYWxsb2Nh dGVkL2Fzc29jaWF0ZWQKKysgICAgIHZhbGlkaXR5IHdoaWxlIGFjY2Vzc2luZyBGSUVMRF9MT0Nf S0lORF9EV0FSRl9CTE9DSy4gICovCisrICBmZXRjaF9kaWVfdHlwZV9hdHRycyAoZGllLCByYW5n ZV90eXBlLCBjdSk7CisrCisrICByZXR1cm4gdHlwZTsKKyt9CisrCisgLyogRXh0cmFjdCBhbGwg aW5mb3JtYXRpb24gZnJvbSBhIERXX1RBR19hcnJheV90eXBlIERJRSBhbmQgcHV0IGl0IGluCisg ICAgdGhlIERJRSdzIHR5cGUgZmllbGQuICBGb3Igbm93LCB0aGlzIG9ubHkgaGFuZGxlcyBvbmUg ZGltZW5zaW9uYWwKKyAgICBhcnJheXMuICAqLworQEAgLTk4OTEsNyArMTAwNjYsNyBAQCByZWFk X2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK KyAgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZTsK KyAgIHN0cnVjdCB0eXBlICoqcmFuZ2VfdHlwZXMgPSBOVUxMOworICAgc3RydWN0IGF0dHJpYnV0 ZSAqYXR0cjsKKy0gIGludCBuZGltID0gMDsKKysgIGludCBuZGltID0gMCwgaTsKKyAgIHN0cnVj dCBjbGVhbnVwICpiYWNrX3RvOworICAgY2hhciAqbmFtZTsKKyAKK0BAIC05OTQ0LDE3ICsxMDEx OSwxOSBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKKyAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CisgCisgICBpZiAocmVhZF9hcnJh eV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikKKy0gICAgeworLSAgICAgIGlu dCBpID0gMDsKKy0KKy0gICAgICB3aGlsZSAoaSA8IG5kaW0pCistCXR5cGUgPSBjcmVhdGVfYXJy YXlfdHlwZSAoTlVMTCwgdHlwZSwgcmFuZ2VfdHlwZXNbaSsrXSk7CistICAgIH0KKy0gIGVsc2UK Ky0gICAgeworLSAgICAgIHdoaWxlIChuZGltLS0gPiAwKQorLQl0eXBlID0gY3JlYXRlX2FycmF5 X3R5cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGVzW25kaW1dKTsKKy0gICAgfQorKyAgICBmb3Ig KGkgPSAwOyBpIDwgbmRpbTsgaSsrKQorKyAgICAgIHR5cGUgPSBjcmVhdGVfc2luZ2xlX2FycmF5 X2RpbWVuc2lvbiAodHlwZSwgcmFuZ2VfdHlwZXNbaV0sIGRpZSwgY3UpOworKyAgZWxzZSAvKiAo cmVhZF9hcnJheV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX3Jvd19tYWpvcikgKi8KKysgICAg Zm9yIChpID0gbmRpbSAtIDE7IGkgPj0gMDsgaS0tKQorKyAgICAgIHR5cGUgPSBjcmVhdGVfc2lu Z2xlX2FycmF5X2RpbWVuc2lvbiAodHlwZSwgcmFuZ2VfdHlwZXNbaV0sIGRpZSwgY3UpOworKwor KyAgLyogRGF0YSBsb2NhdGlvbnMgc2hvdWxkIGJlIHNldCBvbmx5IGZvciB0aGUgb3V0ZXJtb3N0 IGRpbWVuc2lvbiBhcyB0aGV5CisrICAgICB3b3VsZCBiZSBjb25mdXNpbmcgZm9yIHRoZSBkZXJl ZmVyZW5jZWQgb2Zmc2V0IG9uIHRoZSBpbm5lciBvbmVzLiAgKi8KKysgIGF0dHIgPSBkd2FyZjJf YXR0ciAoZGllLCBEV19BVF9kYXRhX2xvY2F0aW9uLCBjdSk7CisrICBpZiAoYXR0cl9mb3JtX2lz X2Jsb2NrIChhdHRyKSkKKysgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLICh0eXBl KQorKyAgICAgID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOworKyAg Z2RiX2Fzc2VydCAoIVRZUEVfREFUQV9MT0NBVElPTl9JU19BRERSICh0eXBlKSk7CisgCisgICAv KiBVbmRlcnN0YW5kIER3YXJmMiBzdXBwb3J0IGZvciB2ZWN0b3IgdHlwZXMgKGxpa2UgdGhleSBv Y2N1ciBvbgorICAgICAgdGhlIFBvd2VyUEMgdy8gQWx0aVZlYykuICBHY2MganVzdCBhZGRzIGFu b3RoZXIgYXR0cmlidXRlIHRvIHRoZQorQEAgLTEwNDM4LDI5ICsxMDYxNSwxMTQgQEAgcmVhZF90 YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmls ZSk7CisgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBlLCAqY2hh cl90eXBlOworICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKIC0gIHVuc2lnbmVkIGludCBsZW5n dGg7CiArICBpbnQgbGVuZ3RoOwogKwpAQCAtMTA4Myw3ICsyNzMwLDcgQEAgaW5kZXggOGRiYzUz ZS4uYjViNzgxMyAxMDA2NDQKICAgIGNoYXJfdHlwZSA9IGxhbmd1YWdlX3N0cmluZ19jaGFyX3R5 cGUgKGN1LT5sYW5ndWFnZV9kZWZuLCBnZGJhcmNoKTsKICAgIHR5cGUgPSBjcmVhdGVfc3RyaW5n X3R5cGUgKE5VTEwsIGNoYXJfdHlwZSwgcmFuZ2VfdHlwZSk7CiAgCi1AQCAtMTA0MTIsNyArMTA1 MzEsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKK0BAIC0xMDc2NCw3ICsxMTAyNiw3IEBAIHJlYWRfc3VicmFuZ2VfdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0 IHR5cGUgKmJhc2VfdHlwZTsKICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwogICAgc3RydWN0 IGF0dHJpYnV0ZSAqYXR0cjsKQEAgLTEwOTIsNyArMjczOSw3IEBAIGluZGV4IDhkYmM1M2UuLmI1 Yjc4MTMgMTAwNjQ0CiAgICBpbnQgbG93X2RlZmF1bHRfaXNfdmFsaWQ7CiAgICBjaGFyICpuYW1l OwogICAgTE9OR0VTVCBuZWdhdGl2ZV9tYXNrOwotQEAgLTEwNDY4LDQyICsxMDU4Nyw2IEBAIHJl YWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQorQEAgLTEwODIwLDQyICsxMTA4Miw2IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkJCQkgICAgICAiLSBESUUg YXQgMHgleCBbaW4gbW9kdWxlICVzXSIpLAogIAkgICAgICAgZGllLT5vZmZzZXQuc2VjdF9vZmYs IGN1LT5vYmpmaWxlLT5uYW1lKTsKICAKQEAgLTExMzUsNyArMjc4Miw3IEBAIGluZGV4IDhkYmM1 M2UuLmI1Yjc4MTMgMTAwNjQ0CiAgICAvKiBEd2FyZi0yIHNwZWNpZmljYXRpb25zIGV4cGxpY2l0 bHkgYWxsb3dzIHRvIGNyZWF0ZSBzdWJyYW5nZSB0eXBlcwogICAgICAgd2l0aG91dCBzcGVjaWZ5 aW5nIGEgYmFzZSB0eXBlLgogICAgICAgSW4gdGhhdCBjYXNlLCB0aGUgYmFzZSB0eXBlIG11c3Qg YmUgc2V0IHRvIHRoZSB0eXBlIG9mCi1AQCAtMTA1NDIsMjQgKzEwNjI1LDE2MyBAQCByZWFkX3N1 YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK K0BAIC0xMDg5NCwyNCArMTExMjAsMTYzIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAl9CiAgICAgIH0KICAKQEAgLTEx NzcsNyArMjgyNCwxMCBAQCBpbmRleCA4ZGJjNTNlLi5iNWI3ODEzIDEwMDY0NAogKyAgICAgIHN0 cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKICsgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJn ZXRfY3UgPSBjdTsKICsgICAgICBzdHJ1Y3QgYXR0cmlidXRlICp0YXJnZXRfbG9jX2F0dHI7Ci0r CisgCistICAvKiBBZGEgZXhwZWN0cyBhbiBlbXB0eSBhcnJheSBvbiBubyBib3VuZGFyeSBhdHRy aWJ1dGVzLiAgKi8KKy0gIGlmIChhdHRyID09IE5VTEwgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1 YWdlX2FkYSkKKy0gICAgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgPSAx OwogKyAgICAgIHRhcmdldF9kaWUgPSBmb2xsb3dfZGllX3JlZl9vcl9zaWcgKGRpZSwgYXR0ciwg JnRhcmdldF9jdSk7CiArICAgICAgZ2RiX2Fzc2VydCAodGFyZ2V0X2N1LT5vYmpmaWxlID09IGN1 LT5vYmpmaWxlKTsKICsgICAgICB0YXJnZXRfbG9jX2F0dHIgPSBkd2FyZjJfYXR0ciAodGFyZ2V0 X2RpZSwgRFdfQVRfbG9jYXRpb24sIHRhcmdldF9jdSk7CkBAIC0xMjE1LDEwICsyODY1LDcgQEAg aW5kZXggOGRiYzUzZS4uYjViNzgxMyAxMDA2NDQKICsgICAgICBpZiAobG93ID49IDApCiArCVRZ UEVfVU5TSUdORUQgKHJhbmdlX3R5cGUpID0gMTsKICsgICAgfQotIAotLSAgLyogQWRhIGV4cGVj dHMgYW4gZW1wdHkgYXJyYXkgb24gbm8gYm91bmRhcnkgYXR0cmlidXRlcy4gICovCi0tICBpZiAo YXR0ciA9PSBOVUxMICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCi0tICAgIFRZUEVf SElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKKysKICsgIGF0dHIgPSBkd2Fy ZjJfYXR0ciAoZGllLCBEV19BVF91cHBlcl9ib3VuZCwgY3UpOwogKyAgaWYgKCFhdHRyIHx8ICgh YXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiAhYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRy KQogKwkJJiYgIWlzX3JlZl9hdHRyIChhdHRyKSkpCkBAIC0xMzEzLDcgKzI5NjAsMjE0IEBAIGlu ZGV4IDhkYmM1M2UuLmI1Yjc4MTMgMTAwNjQ0CiAgCiAgICBuYW1lID0gZHdhcmYyX25hbWUgKGRp ZSwgY3UpOwogICAgaWYgKG5hbWUpCi1AQCAtMTMyNTcsMTAgKzEzNDc5LDEyIEBAIHZhcl9kZWNv ZGVfbG9jYXRpb24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwK K0BAIC0xMTY4NSw2ICsxMjA1MCw4IEBAIHJlYWRfcGFydGlhbF9kaWUgKGNvbnN0IHN0cnVjdCBk aWVfcmVhZGVyX3NwZWNzICpyZWFkZXIsCisgCWNhc2UgRFdfQVRfZXh0ZW5zaW9uOgorIAkgIHBh cnRfZGllLT5oYXNfc3BlY2lmaWNhdGlvbiA9IDE7CisgCSAgcGFydF9kaWUtPnNwZWNfb2Zmc2V0 ID0gZHdhcmYyX2dldF9yZWZfZGllX29mZnNldCAoJmF0dHIpOworKwkgIHBhcnRfZGllLT5zcGVj X2lzX2R3eiA9IChhdHRyLmZvcm0gPT0gRFdfRk9STV9HTlVfcmVmX2FsdAorKwkJCQkgICB8fCBj dS0+cGVyX2N1LT5pc19kd3opOworIAkgIGJyZWFrOworIAljYXNlIERXX0FUX3NpYmxpbmc6Cisg CSAgLyogSWdub3JlIGFic29sdXRlIHNpYmxpbmdzLCB0aGV5IG1pZ2h0IHBvaW50IG91dHNpZGUg b2YKK0BAIC0xMTczMSw3ICsxMjA5OCwxMSBAQCByZWFkX3BhcnRpYWxfZGllIChjb25zdCBzdHJ1 Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAorIAorIAljYXNlIERXX0FUX2ltcG9ydDoKKyAJ ICBpZiAocGFydF9kaWUtPnRhZyA9PSBEV19UQUdfaW1wb3J0ZWRfdW5pdCkKKy0JICAgIHBhcnRf ZGllLT5kLm9mZnNldCA9IGR3YXJmMl9nZXRfcmVmX2RpZV9vZmZzZXQgKCZhdHRyKTsKKysJICAg IHsKKysJICAgICAgcGFydF9kaWUtPmQub2Zmc2V0ID0gZHdhcmYyX2dldF9yZWZfZGllX29mZnNl dCAoJmF0dHIpOworKwkgICAgICBwYXJ0X2RpZS0+aXNfZHd6ID0gKGF0dHIuZm9ybSA9PSBEV19G T1JNX0dOVV9yZWZfYWx0CisrCQkJCSAgfHwgY3UtPnBlcl9jdS0+aXNfZHd6KTsKKysJICAgIH0K KyAJICBicmVhazsKKyAKKyAJZGVmYXVsdDoKK0BAIC0xMTgwMiwxMyArMTIxNzMsMTQgQEAgZmlu ZF9wYXJ0aWFsX2RpZV9pbl9jb21wX3VuaXQgKHNlY3Rfb2Zmc2V0IG9mZnNldCwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCisgICAgRFdfRk9STV9yZWZfc2lnOCkuICAqLworIAorIHN0YXRpYyBzdHJ1 Y3QgcGFydGlhbF9kaWVfaW5mbyAqCistZmluZF9wYXJ0aWFsX2RpZSAoc2VjdF9vZmZzZXQgb2Zm c2V0LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKytmaW5kX3BhcnRpYWxfZGllIChzZWN0X29mZnNl dCBvZmZzZXQsIGludCBvZmZzZXRfaW5fZHd6LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyB7Cisg ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOworICAgc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqcGVyX2N1ID0gTlVMTDsKKyAgIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZv ICpwZCA9IE5VTEw7CisgCistICBpZiAob2Zmc2V0X2luX2N1X3AgKCZjdS0+aGVhZGVyLCBvZmZz ZXQpKQorKyAgaWYgKG9mZnNldF9pbl9kd3ogPT0gY3UtPnBlcl9jdS0+aXNfZHd6CisrICAgICAg JiYgb2Zmc2V0X2luX2N1X3AgKCZjdS0+aGVhZGVyLCBvZmZzZXQpKQorICAgICB7CisgICAgICAg cGQgPSBmaW5kX3BhcnRpYWxfZGllX2luX2NvbXBfdW5pdCAob2Zmc2V0LCBjdSk7CisgICAgICAg aWYgKHBkICE9IE5VTEwpCitAQCAtMTE4MjcsNyArMTIxOTksOCBAQCBmaW5kX3BhcnRpYWxfZGll IChzZWN0X29mZnNldCBvZmZzZXQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIAkJIChsb25nKSBj dS0+aGVhZGVyLm9mZnNldC5zZWN0X29mZiwgKGxvbmcpIG9mZnNldC5zZWN0X29mZiwKKyAJCSBi ZmRfZ2V0X2ZpbGVuYW1lIChvYmpmaWxlLT5vYmZkKSk7CisgCX0KKy0gICAgICBwZXJfY3UgPSBk d2FyZjJfZmluZF9jb250YWluaW5nX2NvbXBfdW5pdCAob2Zmc2V0LCBvYmpmaWxlKTsKKysgICAg ICBwZXJfY3UgPSBkd2FyZjJfZmluZF9jb250YWluaW5nX2NvbXBfdW5pdCAob2Zmc2V0LCBvZmZz ZXRfaW5fZHd6LAorKwkJCQkJCSBvYmpmaWxlKTsKKyAKKyAgICAgICBpZiAocGVyX2N1LT5jdSA9 PSBOVUxMIHx8IHBlcl9jdS0+Y3UtPnBhcnRpYWxfZGllcyA9PSBOVUxMKQorIAlsb2FkX3BhcnRp YWxfY29tcF91bml0IChwZXJfY3UpOworQEAgLTExODg1LDcgKzEyMjU4LDggQEAgZ3Vlc3NfcGFy dGlhbF9kaWVfc3RydWN0dXJlX25hbWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpzdHJ1Y3Rf cGRpLAorIAorICAgcmVhbF9wZGkgPSBzdHJ1Y3RfcGRpOworICAgd2hpbGUgKHJlYWxfcGRpLT5o YXNfc3BlY2lmaWNhdGlvbikKKy0gICAgcmVhbF9wZGkgPSBmaW5kX3BhcnRpYWxfZGllIChyZWFs X3BkaS0+c3BlY19vZmZzZXQsIGN1KTsKKysgICAgcmVhbF9wZGkgPSBmaW5kX3BhcnRpYWxfZGll IChyZWFsX3BkaS0+c3BlY19vZmZzZXQsCisrCQkJCSByZWFsX3BkaS0+c3BlY19pc19kd3osIGN1 KTsKKyAKKyAgIGlmIChyZWFsX3BkaS0+ZGllX3BhcmVudCAhPSBOVUxMKQorICAgICByZXR1cm47 CitAQCAtMTE5MzMsNyArMTIzMDcsOCBAQCBmaXh1cF9wYXJ0aWFsX2RpZSAoc3RydWN0IHBhcnRp YWxfZGllX2luZm8gKnBhcnRfZGllLAorICAgICB7CisgICAgICAgc3RydWN0IHBhcnRpYWxfZGll X2luZm8gKnNwZWNfZGllOworIAorLSAgICAgIHNwZWNfZGllID0gZmluZF9wYXJ0aWFsX2RpZSAo cGFydF9kaWUtPnNwZWNfb2Zmc2V0LCBjdSk7CisrICAgICAgc3BlY19kaWUgPSBmaW5kX3BhcnRp YWxfZGllIChwYXJ0X2RpZS0+c3BlY19vZmZzZXQsCisrCQkJCSAgIHBhcnRfZGllLT5zcGVjX2lz X2R3eiwgY3UpOworIAorICAgICAgIGZpeHVwX3BhcnRpYWxfZGllIChzcGVjX2RpZSwgY3UpOwor IAorQEAgLTEyMDIxLDYgKzEyMzk2LDEwIEBAIHJlYWRfYXR0cmlidXRlX3ZhbHVlIChjb25zdCBz dHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAorIAkJCQkgICAgICAgJmN1LT5oZWFkZXIs ICZieXRlc19yZWFkKTsKKyAgICAgICBpbmZvX3B0ciArPSBieXRlc19yZWFkOworICAgICAgIGJy ZWFrOworKyAgICBjYXNlIERXX0ZPUk1fR05VX3JlZl9hbHQ6CisrICAgICAgRFdfVU5TTkQgKGF0 dHIpID0gcmVhZF9vZmZzZXQgKGFiZmQsIGluZm9fcHRyLCAmY3UtPmhlYWRlciwgJmJ5dGVzX3Jl YWQpOworKyAgICAgIGluZm9fcHRyICs9IGJ5dGVzX3JlYWQ7CisrICAgICAgYnJlYWs7CisgICAg IGNhc2UgRFdfRk9STV9hZGRyOgorICAgICAgIERXX0FERFIgKGF0dHIpID0gcmVhZF9hZGRyZXNz IChhYmZkLCBpbmZvX3B0ciwgY3UsICZieXRlc19yZWFkKTsKKyAgICAgICBpbmZvX3B0ciArPSBi eXRlc19yZWFkOworQEAgLTEyMDYzLDEwICsxMjQ0MiwyNSBAQCByZWFkX2F0dHJpYnV0ZV92YWx1 ZSAoY29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKKyAgICAgICBpbmZvX3B0 ciArPSBieXRlc19yZWFkOworICAgICAgIGJyZWFrOworICAgICBjYXNlIERXX0ZPUk1fc3RycDoK Ky0gICAgICBEV19TVFJJTkcgKGF0dHIpID0gcmVhZF9pbmRpcmVjdF9zdHJpbmcgKGFiZmQsIGlu Zm9fcHRyLCBjdV9oZWFkZXIsCistCQkJCQkgICAgICAgJmJ5dGVzX3JlYWQpOworLSAgICAgIERX X1NUUklOR19JU19DQU5PTklDQUwgKGF0dHIpID0gMDsKKy0gICAgICBpbmZvX3B0ciArPSBieXRl c19yZWFkOworKyAgICAgIGlmICghY3UtPnBlcl9jdS0+aXNfZHd6KQorKwl7CisrCSAgRFdfU1RS SU5HIChhdHRyKSA9IHJlYWRfaW5kaXJlY3Rfc3RyaW5nIChhYmZkLCBpbmZvX3B0ciwgY3VfaGVh ZGVyLAorKwkJCQkJCSAgICZieXRlc19yZWFkKTsKKysJICBEV19TVFJJTkdfSVNfQ0FOT05JQ0FM IChhdHRyKSA9IDA7CisrCSAgaW5mb19wdHIgKz0gYnl0ZXNfcmVhZDsKKysJICBicmVhazsKKysJ fQorKyAgICAgIC8qIEZBTExUSFJPVUdIICovCisrICAgIGNhc2UgRFdfRk9STV9HTlVfc3RycF9h bHQ6CisrICAgICAgeworKwlzdHJ1Y3QgZHd6X2ZpbGUgKmR3eiA9IGR3YXJmMl9nZXRfZHd6X2Zp bGUgKCk7CisrCUxPTkdFU1Qgc3RyX29mZnNldCA9IHJlYWRfb2Zmc2V0IChhYmZkLCBpbmZvX3B0 ciwgY3VfaGVhZGVyLAorKwkJCQkJICAmYnl0ZXNfcmVhZCk7CisrCisrCURXX1NUUklORyAoYXR0 cikgPSByZWFkX2luZGlyZWN0X3N0cmluZ19mcm9tX2R3eiAoZHd6LCBzdHJfb2Zmc2V0KTsKKysJ RFdfU1RSSU5HX0lTX0NBTk9OSUNBTCAoYXR0cikgPSAwOworKwlpbmZvX3B0ciArPSBieXRlc19y ZWFkOworKyAgICAgIH0KKyAgICAgICBicmVhazsKKyAgICAgY2FzZSBEV19GT1JNX2V4cHJsb2M6 CisgICAgIGNhc2UgRFdfRk9STV9ibG9jazoKK0BAIC0xMjE3OCw2ICsxMjU3MiwxMCBAQCByZWFk X2F0dHJpYnV0ZV92YWx1ZSAoY29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwK KyAJICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7CisgICAgIH0KKyAKKysgIC8qIFN1cGVy IGhhY2suICAqLworKyAgaWYgKGN1LT5wZXJfY3UtPmlzX2R3eiAmJiBpc19yZWZfYXR0ciAoYXR0 cikpCisrICAgIGF0dHItPmZvcm0gPSBEV19GT1JNX0dOVV9yZWZfYWx0OworKworICAgLyogV2Ug aGF2ZSBzZWVuIGluc3RhbmNlcyB3aGVyZSB0aGUgY29tcGlsZXIgdHJpZWQgdG8gZW1pdCBhIGJ5 dGUKKyAgICAgIHNpemUgYXR0cmlidXRlIG9mIC0xIHdoaWNoIGVuZGVkIHVwIGJlaW5nIGVuY29k ZWQgYXMgYW4gdW5zaWduZWQKKyAgICAgIDB4ZmZmZmZmZmYuICBBbHRob3VnaCAweGZmZmZmZmZm IGlzIHRlY2huaWNhbGx5IGEgdmFsaWQgc2l6ZSB2YWx1ZSwKK0BAIC0xMjQ3NCw2ICsxMjg3Miwz MCBAQCByZWFkX2luZGlyZWN0X3N0cmluZ19hdF9vZmZzZXQgKGJmZCAqYWJmZCwgTE9OR0VTVCBz dHJfb2Zmc2V0KQorICAgcmV0dXJuIChjaGFyICopIChkd2FyZjJfcGVyX29iamZpbGUtPnN0ci5i dWZmZXIgKyBzdHJfb2Zmc2V0KTsKKyB9CisgCisrLyogUmVhZCBhIHN0cmluZyBhdCBvZmZzZXQg U1RSX09GRlNFVCBpbiB0aGUgLmRlYnVnX3N0ciBzZWN0aW9uIGZyb20KKysgICB0aGUgLmR3eiBm aWxlIERXWi4gIFRocm93IGFuIGVycm9yIGlmIHRoZSBvZmZzZXQgaXMgdG9vIGxhcmdlLiAgSWYK KysgICB0aGUgc3RyaW5nIGNvbnNpc3RzIG9mIGEgc2luZ2xlIE5VTCBieXRlLCByZXR1cm4gTlVM TDsgb3RoZXJ3aXNlCisrICAgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgc3RyaW5nLiAgKi8KKysK KytzdGF0aWMgY2hhciAqCisrcmVhZF9pbmRpcmVjdF9zdHJpbmdfZnJvbV9kd3ogKHN0cnVjdCBk d3pfZmlsZSAqZHd6LCBMT05HRVNUIHN0cl9vZmZzZXQpCisreworKyAgZHdhcmYyX3JlYWRfc2Vj dGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLCAmZHd6LT5zdHIpOworKworKyAgaWYg KGR3ei0+c3RyLmJ1ZmZlciA9PSBOVUxMKQorKyAgICBlcnJvciAoXygiRFdfRk9STV9HTlVfc3Ry cF9hbHQgdXNlZCB3aXRob3V0IC5kZWJ1Z19zdHIgIgorKwkgICAgICJzZWN0aW9uIFtpbiBtb2R1 bGUgJXNdIiksCisrCSAgIGJmZF9nZXRfZmlsZW5hbWUgKGR3ei0+ZHd6X2JmZCkpOworKyAgaWYg KHN0cl9vZmZzZXQgPj0gZHd6LT5zdHIuc2l6ZSkKKysgICAgZXJyb3IgKF8oIkRXX0ZPUk1fR05V X3N0cnBfYWx0IHBvaW50aW5nIG91dHNpZGUgb2YgIgorKwkgICAgICIuZGVidWdfc3RyIHNlY3Rp b24gW2luIG1vZHVsZSAlc10iKSwKKysJICAgYmZkX2dldF9maWxlbmFtZSAoZHd6LT5kd3pfYmZk KSk7CisrICBnZGJfYXNzZXJ0IChIT1NUX0NIQVJfQklUID09IDgpOworKyAgaWYgKGR3ei0+c3Ry LmJ1ZmZlcltzdHJfb2Zmc2V0XSA9PSAnXDAnKQorKyAgICByZXR1cm4gTlVMTDsKKysgIHJldHVy biAoY2hhciAqKSAoZHd6LT5zdHIuYnVmZmVyICsgc3RyX29mZnNldCk7CisrfQorKworIHN0YXRp YyBjaGFyICoKKyByZWFkX2luZGlyZWN0X3N0cmluZyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqYnVm LAorIAkJICAgICAgY29uc3Qgc3RydWN0IGNvbXBfdW5pdF9oZWFkICpjdV9oZWFkZXIsCitAQCAt MTI5NDYsNiArMTMzNjgsMzAgQEAgYWRkX2ZpbGVfbmFtZSAoc3RydWN0IGxpbmVfaGVhZGVyICps aCwKKyAgIGZlLT5zeW10YWIgPSBOVUxMOworIH0KKyAKKysvKiBBIGNvbnZlbmllbmNlIGZ1bmN0 aW9uIHRvIGZpbmQgdGhlIHByb3BlciAuZGVidWdfbGluZSBzZWN0aW9uIGZvciBhCisrICAgQ1Uu ICAqLworKworK3N0YXRpYyBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqCisrZ2V0X2RlYnVn X2xpbmVfc2VjdGlvbiAoc3RydWN0IGR3YXJmMl9jdSAqY3UpCisreworKyAgc3RydWN0IGR3YXJm Ml9zZWN0aW9uX2luZm8gKnNlY3Rpb247CisrCisrICAvKiBGb3IgVFVzIGluIERXTyBmaWxlcywg dGhlIERXX0FUX3N0bXRfbGlzdCBhdHRyaWJ1dGUgbGl2ZXMgaW4gdGhlCisrICAgICBEV08gZmls ZS4gICovCisrICBpZiAoY3UtPmR3b191bml0ICYmIGN1LT5wZXJfY3UtPmlzX2RlYnVnX3R5cGVz KQorKyAgICBzZWN0aW9uID0gJmN1LT5kd29fdW5pdC0+ZHdvX2ZpbGUtPnNlY3Rpb25zLmxpbmU7 CisrICBlbHNlIGlmIChjdS0+cGVyX2N1LT5pc19kd3opCisrICAgIHsKKysgICAgICBzdHJ1Y3Qg ZHd6X2ZpbGUgKmR3eiA9IGR3YXJmMl9nZXRfZHd6X2ZpbGUgKCk7CisrCisrICAgICAgc2VjdGlv biA9ICZkd3otPmxpbmU7CisrICAgIH0KKysgIGVsc2UKKysgICAgc2VjdGlvbiA9ICZkd2FyZjJf cGVyX29iamZpbGUtPmxpbmU7CisrCisrICByZXR1cm4gc2VjdGlvbjsKKyt9CisrCisgLyogUmVh ZCB0aGUgc3RhdGVtZW50IHByb2dyYW0gaGVhZGVyIHN0YXJ0aW5nIGF0IE9GRlNFVCBpbgorICAg IC5kZWJ1Z19saW5lLCBvciAuZGVidWdfbGluZS5kd28uICBSZXR1cm4gYSBwb2ludGVyCisgICAg dG8gYSBzdHJ1Y3QgbGluZV9oZWFkZXIsIGFsbG9jYXRlZCB1c2luZyB4bWFsbG9jLgorQEAgLTEy OTY2LDEzICsxMzQxMiw3IEBAIGR3YXJmX2RlY29kZV9saW5lX2hlYWRlciAodW5zaWduZWQgaW50 IG9mZnNldCwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25f aW5mbyAqc2VjdGlvbjsKKyAgIGJmZCAqYWJmZDsKKyAKKy0gIC8qIEZvciBUVXMgaW4gRFdPIGZp bGVzLCB0aGUgRFdfQVRfc3RtdF9saXN0IGF0dHJpYnV0ZSBsaXZlcyBpbiB0aGUKKy0gICAgIERX TyBmaWxlLiAgKi8KKy0gIGlmIChjdS0+ZHdvX3VuaXQgJiYgY3UtPnBlcl9jdS0+aXNfZGVidWdf dHlwZXMpCistICAgIHNlY3Rpb24gPSAmY3UtPmR3b191bml0LT5kd29fZmlsZS0+c2VjdGlvbnMu bGluZTsKKy0gIGVsc2UKKy0gICAgc2VjdGlvbiA9ICZkd2FyZjJfcGVyX29iamZpbGUtPmxpbmU7 CistCisrICBzZWN0aW9uID0gZ2V0X2RlYnVnX2xpbmVfc2VjdGlvbiAoY3UpOworICAgZHdhcmYy X3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLCBzZWN0aW9uKTsKKyAg IGlmIChzZWN0aW9uLT5idWZmZXIgPT0gTlVMTCkKKyAgICAgeworQEAgLTEzMjk3LDcgKzEzNzM3 LDcgQEAgZHdhcmZfZGVjb2RlX2xpbmVzXzEgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIGNvbnN0 IGNoYXIgKmNvbXBfZGlyLAorIAkJCSBHQ2QgYnkgdGhlIGxpbmtlci4gIElnbm9yZSBpdC4gIFBS IGdkYi8xMjUyOCAqLworIAorIAkJICAgICAgbG9uZyBsaW5lX29mZnNldAorLQkJCT0gbGluZV9w dHIgLSBkd2FyZjJfcGVyX29iamZpbGUtPmxpbmUuYnVmZmVyOworKwkJCT0gbGluZV9wdHIgLSBn ZXRfZGVidWdfbGluZV9zZWN0aW9uIChjdSktPmJ1ZmZlcjsKKyAKKyAJCSAgICAgIGNvbXBsYWlu dCAoJnN5bWZpbGVfY29tcGxhaW50cywKKyAJCQkJIF8oIi5kZWJ1Z19saW5lIGFkZHJlc3MgYXQg b2Zmc2V0IDB4JWx4IGlzIDAgIgorQEAgLTEzNjU5LDEwICsxNDA5OSwxMiBAQCB2YXJfZGVjb2Rl X2xvY2F0aW9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAg ICAgICAoaS5lLiB3aGVuIHRoZSB2YWx1ZSBvZiBhIHJlZ2lzdGVyIG9yIG1lbW9yeSBsb2NhdGlv biBpcwogICAgICAgcmVmZXJlbmNlZCwgb3IgYSB0aHJlYWQtbG9jYWwgYmxvY2ssIGV0Yy4pLiAg VGhlbiBhZ2FpbiwgaXQgbWlnaHQKICAgICAgIG5vdCBiZSB3b3J0aHdoaWxlLiAgSSdtIGFzc3Vt aW5nIHRoYXQgaXQgaXNuJ3QgdW5sZXNzIHBlcmZvcm1hbmNlCkBAIC0xMzI4LDcgKzMxODIsNyBA QCBpbmRleCA4ZGJjNTNlLi5iNWI3ODEzIDEwMDY0NAogIAogICAgaWYgKFNZTUJPTF9DT01QVVRF RF9PUFMgKHN5bSkgPT0gJmR3YXJmMl9sb2NsaXN0X2Z1bmNzKQogICAgICBjdS0+aGFzX2xvY2xp c3QgPSAxOwotQEAgLTEzMzAxLDYgKzEzNTI1LDggQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAor QEAgLTEzNzAzLDYgKzE0MTQ1LDggQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogICAgICAgIGVs c2UKICAJc3ltID0gT0JTVEFDS19aQUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0 cnVjdCBzeW1ib2wpOwogICAgICAgIE9CSlNUQVQgKG9iamZpbGUsIG5fc3ltcysrKTsKQEAgLTEz MzcsOCArMzE5MSwzMyBAQCBpbmRleCA4ZGJjNTNlLi5iNWI3ODEzIDEwMDY0NAogIAogICAgICAg IC8qIENhY2hlIHRoaXMgc3ltYm9sJ3MgbmFtZSBhbmQgdGhlIG5hbWUncyBkZW1hbmdsZWQgZm9y bSAoaWYgYW55KS4gICovCiAgICAgICAgU1lNQk9MX1NFVF9MQU5HVUFHRSAoc3ltLCBjdS0+bGFu Z3VhZ2UpOwotQEAgLTE0MDc1LDYgKzE0MzAxLDkgQEAgcmVhZF90eXBlX2RpZV8xIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgICAgYnJlYWs7CitAQCAt MTQxMjYsNiArMTQ1NzAsNyBAQCBkd2FyZjJfY29uc3RfdmFsdWVfYXR0ciAoc3RydWN0IGF0dHJp YnV0ZSAqYXR0ciwgc3RydWN0IHR5cGUgKnR5cGUsCisgICAgIGNhc2UgRFdfRk9STV9zdHJpbmc6 CisgICAgIGNhc2UgRFdfRk9STV9zdHJwOgorICAgICBjYXNlIERXX0ZPUk1fR05VX3N0cl9pbmRl eDoKKysgICAgY2FzZSBEV19GT1JNX0dOVV9zdHJwX2FsdDoKKyAgICAgICAvKiBEV19TVFJJTkcg aXMgYWxyZWFkeSBhbGxvY2F0ZWQgb24gdGhlIG9iamZpbGUgb2JzdGFjaywgcG9pbnQKKyAJIGRp cmVjdGx5IHRvIGl0LiAgKi8KKyAgICAgICAqYnl0ZXMgPSAoZ2RiX2J5dGUgKikgRFdfU1RSSU5H IChhdHRyKTsKK0BAIC0xNDMxMiw3ICsxNDc1NywxNSBAQCBsb29rdXBfZGllX3R5cGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLAorIAorICAgLyogRmlyc3Qg c2VlIGlmIHdlIGhhdmUgaXQgY2FjaGVkLiAgKi8KKyAKKy0gIGlmIChpc19yZWZfYXR0ciAoYXR0 cikpCisrICBpZiAoYXR0ci0+Zm9ybSA9PSBEV19GT1JNX0dOVV9yZWZfYWx0KQorKyAgICB7Cisr ICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1OworKyAgICAgIHNlY3Rfb2Zm c2V0IG9mZnNldCA9IGR3YXJmMl9nZXRfcmVmX2RpZV9vZmZzZXQgKGF0dHIpOworKworKyAgICAg IHBlcl9jdSA9IGR3YXJmMl9maW5kX2NvbnRhaW5pbmdfY29tcF91bml0IChvZmZzZXQsIDEsIGN1 LT5vYmpmaWxlKTsKKysgICAgICB0aGlzX3R5cGUgPSBnZXRfZGllX3R5cGVfYXRfb2Zmc2V0IChv ZmZzZXQsIHBlcl9jdSk7CisrICAgIH0KKysgIGVsc2UgaWYgKGlzX3JlZl9hdHRyIChhdHRyKSkK KyAgICAgeworICAgICAgIHNlY3Rfb2Zmc2V0IG9mZnNldCA9IGR3YXJmMl9nZXRfcmVmX2RpZV9v ZmZzZXQgKGF0dHIpOworIAorQEAgLTE0NDc3LDYgKzE0OTMwLDkgQEAgcmVhZF90eXBlX2RpZV8x IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgICAgYnJl YWs7CiAgICAgIH0KICAKICsgIGlmICh0aGlzX3R5cGUpCkBAIC0xMzQ3LDcgKzMyMjYsMTk1IEBA IGluZGV4IDhkYmM1M2UuLmI1Yjc4MTMgMTAwNjQ0CiAgICByZXR1cm4gdGhpc190eXBlOwogIH0K ICAKLUBAIC0xNjQ3Miw2MiArMTY3MDEsMTAwIEBAIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoc3Ry dWN0IGR3YXJmMl9jdSAqY3UsCitAQCAtMTUwODUsNiArMTU1NDEsMTAgQEAgZHVtcF9kaWVfc2hh bGxvdyAoc3RydWN0IHVpX2ZpbGUgKmYsIGludCBpbmRlbnQsIHN0cnVjdCBkaWVfaW5mbyAqZGll KQorIAkgIGZwcmludGZfdW5maWx0ZXJlZCAoZiwgInJlZiBhZGRyZXNzOiAiKTsKKyAJICBmcHV0 c19maWx0ZXJlZCAoaGV4X3N0cmluZyAoRFdfVU5TTkQgKCZkaWUtPmF0dHJzW2ldKSksIGYpOwor IAkgIGJyZWFrOworKwljYXNlIERXX0ZPUk1fR05VX3JlZl9hbHQ6CisrCSAgZnByaW50Zl91bmZp bHRlcmVkIChmLCAiYWx0IHJlZiBhZGRyZXNzOiAiKTsKKysJICBmcHV0c19maWx0ZXJlZCAoaGV4 X3N0cmluZyAoRFdfVU5TTkQgKCZkaWUtPmF0dHJzW2ldKSksIGYpOworKwkgIGJyZWFrOworIAlj YXNlIERXX0ZPUk1fcmVmMToKKyAJY2FzZSBEV19GT1JNX3JlZjI6CisgCWNhc2UgRFdfRk9STV9y ZWY0OgorQEAgLTE1MTE2LDYgKzE1NTc2LDcgQEAgZHVtcF9kaWVfc2hhbGxvdyAoc3RydWN0IHVp X2ZpbGUgKmYsIGludCBpbmRlbnQsIHN0cnVjdCBkaWVfaW5mbyAqZGllKQorIAljYXNlIERXX0ZP Uk1fc3RyaW5nOgorIAljYXNlIERXX0ZPUk1fc3RycDoKKyAJY2FzZSBEV19GT1JNX0dOVV9zdHJf aW5kZXg6CisrCWNhc2UgRFdfRk9STV9HTlVfc3RycF9hbHQ6CisgCSAgZnByaW50Zl91bmZpbHRl cmVkIChmLCAic3RyaW5nOiBcIiVzXCIgKCVzIGNhbm9uaWNhbGl6ZWQpIiwKKyAJCSAgIERXX1NU UklORyAoJmRpZS0+YXR0cnNbaV0pCisgCQkgICA/IERXX1NUUklORyAoJmRpZS0+YXR0cnNbaV0p IDogIiIsCitAQCAtMTUyMTksNiArMTU2ODAsNyBAQCBpc19yZWZfYXR0ciAoc3RydWN0IGF0dHJp YnV0ZSAqYXR0cikKKyAgICAgY2FzZSBEV19GT1JNX3JlZjQ6CisgICAgIGNhc2UgRFdfRk9STV9y ZWY4OgorICAgICBjYXNlIERXX0ZPUk1fcmVmX3VkYXRhOgorKyAgICBjYXNlIERXX0ZPUk1fR05V X3JlZl9hbHQ6CisgICAgICAgcmV0dXJuIDE7CisgICAgIGRlZmF1bHQ6CisgICAgICAgcmV0dXJu IDA7CitAQCAtMTUyOTYsNyArMTU3NTgsOCBAQCBmb2xsb3dfZGllX3JlZl9vcl9zaWcgKHN0cnVj dCBkaWVfaW5mbyAqc3JjX2RpZSwgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwKKyAgICBSZXR1cm5z IE5VTEwgaWYgT0ZGU0VUIGlzIGludmFsaWQuICAqLworIAorIHN0YXRpYyBzdHJ1Y3QgZGllX2lu Zm8gKgorLWZvbGxvd19kaWVfb2Zmc2V0IChzZWN0X29mZnNldCBvZmZzZXQsIHN0cnVjdCBkd2Fy ZjJfY3UgKipyZWZfY3UpCisrZm9sbG93X2RpZV9vZmZzZXQgKHNlY3Rfb2Zmc2V0IG9mZnNldCwg aW50IG9mZnNldF9pbl9kd3osCisrCQkgICBzdHJ1Y3QgZHdhcmYyX2N1ICoqcmVmX2N1KQorIHsK KyAgIHN0cnVjdCBkaWVfaW5mbyB0ZW1wX2RpZTsKKyAgIHN0cnVjdCBkd2FyZjJfY3UgKnRhcmdl dF9jdSwgKmN1ID0gKnJlZl9jdTsKK0BAIC0xNTMxMywxMSArMTU3NzYsMTMgQEAgZm9sbG93X2Rp ZV9vZmZzZXQgKHNlY3Rfb2Zmc2V0IG9mZnNldCwgc3RydWN0IGR3YXJmMl9jdSAqKnJlZl9jdSkK KyAgICAgICBpZiAoISBvZmZzZXRfaW5fY3VfcCAoJmN1LT5oZWFkZXIsIG9mZnNldCkpCisgCXJl dHVybiBOVUxMOworICAgICB9CistICBlbHNlIGlmICghIG9mZnNldF9pbl9jdV9wICgmY3UtPmhl YWRlciwgb2Zmc2V0KSkKKysgIGVsc2UgaWYgKG9mZnNldF9pbl9kd3ogIT0gY3UtPnBlcl9jdS0+ aXNfZHd6CisrCSAgIHx8ICEgb2Zmc2V0X2luX2N1X3AgKCZjdS0+aGVhZGVyLCBvZmZzZXQpKQor ICAgICB7CisgICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1OworIAorLSAg ICAgIHBlcl9jdSA9IGR3YXJmMl9maW5kX2NvbnRhaW5pbmdfY29tcF91bml0IChvZmZzZXQsIGN1 LT5vYmpmaWxlKTsKKysgICAgICBwZXJfY3UgPSBkd2FyZjJfZmluZF9jb250YWluaW5nX2NvbXBf dW5pdCAob2Zmc2V0LCBvZmZzZXRfaW5fZHd6LAorKwkJCQkJCSBjdS0+b2JqZmlsZSk7CisgCisg ICAgICAgLyogSWYgbmVjZXNzYXJ5LCBhZGQgaXQgdG8gdGhlIHF1ZXVlIGFuZCBsb2FkIGl0cyBE SUVzLiAgKi8KKyAgICAgICBpZiAobWF5YmVfcXVldWVfY29tcF91bml0IChjdSwgcGVyX2N1LCBj dS0+bGFuZ3VhZ2UpKQorQEAgLTE1MzQ5LDcgKzE1ODE0LDEwIEBAIGZvbGxvd19kaWVfcmVmIChz dHJ1Y3QgZGllX2luZm8gKnNyY19kaWUsIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCisgICBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSA9ICpyZWZfY3U7CisgICBzdHJ1Y3QgZGllX2luZm8gKmRpZTsKKyAK Ky0gIGRpZSA9IGZvbGxvd19kaWVfb2Zmc2V0IChvZmZzZXQsIHJlZl9jdSk7CisrICBkaWUgPSBm b2xsb3dfZGllX29mZnNldCAob2Zmc2V0LAorKwkJCSAgIChhdHRyLT5mb3JtID09IERXX0ZPUk1f R05VX3JlZl9hbHQKKysJCQkgICAgfHwgY3UtPnBlcl9jdS0+aXNfZHd6KSwKKysJCQkgICByZWZf Y3UpOworICAgaWYgKCFkaWUpCisgICAgIGVycm9yIChfKCJEd2FyZiBFcnJvcjogQ2Fubm90IGZp bmQgRElFIGF0IDB4JXggcmVmZXJlbmNlZCBmcm9tIERJRSAiCisgCSAgICJhdCAweCV4IFtpbiBt b2R1bGUgJXNdIiksCitAQCAtMTUzODAsNyArMTU4NDgsNyBAQCBkd2FyZjJfZmV0Y2hfZGllX2xv Y2F0aW9uX2Jsb2NrIChjdV9vZmZzZXQgb2Zmc2V0X2luX2N1LAorICAgICBsb2FkX2N1IChwZXJf Y3UpOworICAgY3UgPSBwZXJfY3UtPmN1OworIAorLSAgZGllID0gZm9sbG93X2RpZV9vZmZzZXQg KG9mZnNldCwgJmN1KTsKKysgIGRpZSA9IGZvbGxvd19kaWVfb2Zmc2V0IChvZmZzZXQsIHBlcl9j dS0+aXNfZHd6LCAmY3UpOworICAgaWYgKCFkaWUpCisgICAgIGVycm9yIChfKCJEd2FyZiBFcnJv cjogQ2Fubm90IGZpbmQgRElFIGF0IDB4JXggcmVmZXJlbmNlZCBpbiBtb2R1bGUgJXMiKSwKKyAJ ICAgb2Zmc2V0LnNlY3Rfb2ZmLCBwZXJfY3UtPm9iamZpbGUtPm5hbWUpOworQEAgLTE2MTc5LDYg KzE2NjQ3LDcgQEAgc2tpcF9mb3JtX2J5dGVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICpieXRlcywg Z2RiX2J5dGUgKmJ1ZmZlcl9lbmQsCisgCisgICAgIGNhc2UgRFdfRk9STV9zZWNfb2Zmc2V0Ogor ICAgICBjYXNlIERXX0ZPUk1fc3RycDoKKysgICAgY2FzZSBEV19GT1JNX0dOVV9zdHJwX2FsdDoK KyAgICAgICBieXRlcyArPSBvZmZzZXRfc2l6ZTsKKyAgICAgICBicmVhazsKKyAKK0BAIC0xNjMz NCw3ICsxNjgwMyw3IEBAIGR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYmZkICphYmZkLCBnZGJf Ynl0ZSAqbWFjX3B0ciwgZ2RiX2J5dGUgKm1hY19lbmQsCisgCQkJICBzdHJ1Y3QgbWFjcm9fc291 cmNlX2ZpbGUgKmN1cnJlbnRfZmlsZSwKKyAJCQkgIHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIGNo YXIgKmNvbXBfZGlyLAorIAkJCSAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rpb24s CistCQkJICBpbnQgc2VjdGlvbl9pc19nbnUsCisrCQkJICBpbnQgc2VjdGlvbl9pc19nbnUsIGlu dCBzZWN0aW9uX2lzX2R3eiwKKyAJCQkgIHVuc2lnbmVkIGludCBvZmZzZXRfc2l6ZSwKKyAJCQkg IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCSAgaHRhYl90IGluY2x1ZGVfaGFzaCkKK0BA IC0xNjM4NSw2ICsxNjg1NCw4IEBAIGR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYmZkICphYmZk LCBnZGJfYnl0ZSAqbWFjX3B0ciwgZ2RiX2J5dGUgKm1hY19lbmQsCisgICAgICAgICBjYXNlIERX X01BQ1JPX0dOVV91bmRlZjoKKyAJY2FzZSBEV19NQUNST19HTlVfZGVmaW5lX2luZGlyZWN0Ogor IAljYXNlIERXX01BQ1JPX0dOVV91bmRlZl9pbmRpcmVjdDoKKysJY2FzZSBEV19NQUNST19HTlVf ZGVmaW5lX2luZGlyZWN0X2FsdDoKKysJY2FzZSBEV19NQUNST19HTlVfdW5kZWZfaW5kaXJlY3Rf YWx0OgorICAgICAgICAgICB7CisgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQ7 CisgICAgICAgICAgICAgaW50IGxpbmU7CitAQCAtMTY0MDcsMTEgKzE2ODc4LDIwIEBAIGR3YXJm X2RlY29kZV9tYWNyb19ieXRlcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqbWFjX3B0ciwgZ2RiX2J5 dGUgKm1hY19lbmQsCisgCQlzdHJfb2Zmc2V0ID0gcmVhZF9vZmZzZXRfMSAoYWJmZCwgbWFjX3B0 ciwgb2Zmc2V0X3NpemUpOworIAkJbWFjX3B0ciArPSBvZmZzZXRfc2l6ZTsKKyAKKy0JCWJvZHkg PSByZWFkX2luZGlyZWN0X3N0cmluZ19hdF9vZmZzZXQgKGFiZmQsIHN0cl9vZmZzZXQpOworKwkJ aWYgKG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVfZGVmaW5lX2luZGlyZWN0X2FsdAorKwkJ ICAgIHx8IG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVfdW5kZWZfaW5kaXJlY3RfYWx0KQor KwkJICB7CisrCQkgICAgc3RydWN0IGR3el9maWxlICpkd3ogPSBkd2FyZjJfZ2V0X2R3el9maWxl ICgpOworKworKwkJICAgIGJvZHkgPSByZWFkX2luZGlyZWN0X3N0cmluZ19mcm9tX2R3eiAoZHd6 LCBzdHJfb2Zmc2V0KTsKKysJCSAgfQorKwkJZWxzZQorKwkJICBib2R5ID0gcmVhZF9pbmRpcmVj dF9zdHJpbmdfYXRfb2Zmc2V0IChhYmZkLCBzdHJfb2Zmc2V0KTsKKyAJICAgICAgfQorIAorIAkg ICAgaXNfZGVmaW5lID0gKG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVfZGVmaW5lCistCQkJ IHx8IG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVfZGVmaW5lX2luZGlyZWN0KTsKKysJCQkg fHwgbWFjaW5mb190eXBlID09IERXX01BQ1JPX0dOVV9kZWZpbmVfaW5kaXJlY3QKKysJCQkgfHwg bWFjaW5mb190eXBlID09IERXX01BQ1JPX0dOVV9kZWZpbmVfaW5kaXJlY3RfYWx0KTsKKyAgICAg ICAgICAgICBpZiAoISBjdXJyZW50X2ZpbGUpCisgCSAgICAgIHsKKyAJCS8qIERXQVJGIHZpb2xh dGlvbiBhcyBubyBtYWluIHNvdXJjZSBpcyBwcmVzZW50LiAgKi8KK0BAIC0xNjQzNSw3ICsxNjkx NSw4IEBAIGR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqbWFj X3B0ciwgZ2RiX2J5dGUgKm1hY19lbmQsCisgCSAgICBlbHNlCisgCSAgICAgIHsKKyAJCWdkYl9h c3NlcnQgKG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVfdW5kZWYKKy0JCQkgICAgfHwgbWFj aW5mb190eXBlID09IERXX01BQ1JPX0dOVV91bmRlZl9pbmRpcmVjdCk7CisrCQkJICAgIHx8IG1h Y2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVfdW5kZWZfaW5kaXJlY3QKKysJCQkgICAgfHwgbWFj aW5mb190eXBlID09IERXX01BQ1JPX0dOVV91bmRlZl9pbmRpcmVjdF9hbHQpOworIAkJbWFjcm9f dW5kZWYgKGN1cnJlbnRfZmlsZSwgbGluZSwgYm9keSk7CisgCSAgICAgIH0KKyAgICAgICAgICAg fQorQEAgLTE2NTEwLDYgKzE2OTkxLDcgQEAgZHdhcmZfZGVjb2RlX21hY3JvX2J5dGVzIChiZmQg KmFiZmQsIGdkYl9ieXRlICptYWNfcHRyLCBnZGJfYnl0ZSAqbWFjX2VuZCwKKyAgICAgICAgICAg YnJlYWs7CisgCisgCWNhc2UgRFdfTUFDUk9fR05VX3RyYW5zcGFyZW50X2luY2x1ZGU6CisrCWNh c2UgRFdfTUFDUk9fR05VX3RyYW5zcGFyZW50X2luY2x1ZGVfYWx0OgorIAkgIHsKKyAJICAgIExP TkdFU1Qgb2Zmc2V0OworIAkgICAgdm9pZCAqKnNsb3Q7CitAQCAtMTY1MjgsMTMgKzE3MDEwLDMy IEBAIGR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqbWFjX3B0 ciwgZ2RiX2J5dGUgKm1hY19lbmQsCisgCSAgICAgIH0KKyAJICAgIGVsc2UKKyAJICAgICAgewor KwkJYmZkICppbmNsdWRlX2JmZCA9IGFiZmQ7CisrCQlzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5m byAqaW5jbHVkZV9zZWN0aW9uID0gc2VjdGlvbjsKKysJCXN0cnVjdCBkd2FyZjJfc2VjdGlvbl9p bmZvIGFsdF9zZWN0aW9uOworKwkJZ2RiX2J5dGUgKmluY2x1ZGVfbWFjX2VuZCA9IG1hY19lbmQ7 CisrCQlpbnQgaXNfZHd6ID0gc2VjdGlvbl9pc19kd3o7CisrCisgCQkqc2xvdCA9IG1hY19wdHI7 CisgCistCQlkd2FyZl9kZWNvZGVfbWFjcm9fYnl0ZXMgKGFiZmQsCistCQkJCQkgIHNlY3Rpb24t PmJ1ZmZlciArIG9mZnNldCwKKy0JCQkJCSAgbWFjX2VuZCwgY3VycmVudF9maWxlLAorKwkJaWYg KG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVfdHJhbnNwYXJlbnRfaW5jbHVkZV9hbHQpCisr CQkgIHsKKysJCSAgICBzdHJ1Y3QgZHd6X2ZpbGUgKmR3eiA9IGR3YXJmMl9nZXRfZHd6X2ZpbGUg KCk7CisrCisrCQkgICAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5v YmpmaWxlLAorKwkJCQkJICZkd3otPm1hY3JvKTsKKysKKysJCSAgICBpbmNsdWRlX2JmZCA9IGR3 ei0+bWFjcm8uYXNlY3Rpb24tPm93bmVyOworKwkJICAgIGluY2x1ZGVfc2VjdGlvbiA9ICZkd3ot Pm1hY3JvOworKwkJICAgIGluY2x1ZGVfbWFjX2VuZCA9IGR3ei0+bWFjcm8uYnVmZmVyICsgZHd6 LT5tYWNyby5zaXplOworKwkJICAgIGlzX2R3eiA9IDE7CisrCQkgIH0KKysKKysJCWR3YXJmX2Rl Y29kZV9tYWNyb19ieXRlcyAoaW5jbHVkZV9iZmQsCisrCQkJCQkgIGluY2x1ZGVfc2VjdGlvbi0+ YnVmZmVyICsgb2Zmc2V0LAorKwkJCQkJICBpbmNsdWRlX21hY19lbmQsIGN1cnJlbnRfZmlsZSwK KyAJCQkJCSAgbGgsIGNvbXBfZGlyLAorLQkJCQkJICBzZWN0aW9uLCBzZWN0aW9uX2lzX2dudSwK KysJCQkJCSAgc2VjdGlvbiwgc2VjdGlvbl9pc19nbnUsIGlzX2R3eiwKKyAJCQkJCSAgb2Zmc2V0 X3NpemUsIG9iamZpbGUsIGluY2x1ZGVfaGFzaCk7CisgCisgCQlodGFiX3JlbW92ZV9lbHQgKGlu Y2x1ZGVfaGFzaCwgbWFjX3B0cik7CitAQCAtMTY3NTMsNyArMTcyNTQsOCBAQCBkd2FyZl9kZWNv ZGVfbWFjcm9zIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgdW5zaWduZWQgaW50IG9mZnNldCwKKyAg IHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAoaW5jbHVkZV9oYXNoLCBtYWNfcHRyLCBJTlNFUlQpOwor ICAgKnNsb3QgPSBtYWNfcHRyOworICAgZHdhcmZfZGVjb2RlX21hY3JvX2J5dGVzIChhYmZkLCBt YWNfcHRyLCBtYWNfZW5kLAorLQkJCSAgICBjdXJyZW50X2ZpbGUsIGxoLCBjb21wX2Rpciwgc2Vj dGlvbiwgc2VjdGlvbl9pc19nbnUsCisrCQkJICAgIGN1cnJlbnRfZmlsZSwgbGgsIGNvbXBfZGly LCBzZWN0aW9uLAorKwkJCSAgICBzZWN0aW9uX2lzX2dudSwgMCwKKyAJCQkgICAgb2Zmc2V0X3Np emUsIG9iamZpbGUsIGluY2x1ZGVfaGFzaCk7CisgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Cisg fQorQEAgLTE2ODUxLDYyICsxNzM1MywxMDAgQEAgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSwKICAgIGJhdG9uLT5mcm9tX2R3byA9IGN1LT5kd29fdW5pdCAhPSBO VUxMOwogIH0KICAKQEAgLTE0ODYsNyArMzU1Myw0NyBAQCBpbmRleCA4ZGJjNTNlLi5iNWI3ODEz IDEwMDY0NAogICAgICB9CiAgfQogIAotQEAgLTE2ODk1LDYgKzE3MTYyLDI1IEBAIHBlcl9jdV9v ZmZzZXRfYW5kX3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVt X3JocykKK0BAIC0xNzAwOCwyOCArMTc1NDgsMzQgQEAgZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNl dCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQorIAorIHN0YXRpYyBzdHJ1Y3Qg ZHdhcmYyX3Blcl9jdV9kYXRhICoKKyBkd2FyZjJfZmluZF9jb250YWluaW5nX2NvbXBfdW5pdCAo c2VjdF9vZmZzZXQgb2Zmc2V0LAorKwkJCQkgIHVuc2lnbmVkIGludCBvZmZzZXRfaW5fZHd6LAor IAkJCQkgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorIHsKKyAgIHN0cnVjdCBkd2FyZjJfcGVy X2N1X2RhdGEgKnRoaXNfY3U7CisgICBpbnQgbG93LCBoaWdoOworKyAgY29uc3Qgc2VjdF9vZmZz ZXQgKmN1X29mZjsKKyAKKyAgIGxvdyA9IDA7CisgICBoaWdoID0gZHdhcmYyX3Blcl9vYmpmaWxl LT5uX2NvbXBfdW5pdHMgLSAxOworICAgd2hpbGUgKGhpZ2ggPiBsb3cpCisgICAgIHsKKysgICAg ICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICptaWRfY3U7CisgICAgICAgaW50IG1pZCA9IGxv dyArIChoaWdoIC0gbG93KSAvIDI7CisgCistICAgICAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+ YWxsX2NvbXBfdW5pdHNbbWlkXS0+b2Zmc2V0LnNlY3Rfb2ZmCistCSAgPj0gb2Zmc2V0LnNlY3Rf b2ZmKQorKyAgICAgIG1pZF9jdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNb bWlkXTsKKysgICAgICBjdV9vZmYgPSAmbWlkX2N1LT5vZmZzZXQ7CisrICAgICAgaWYgKG1pZF9j dS0+aXNfZHd6ID49IG9mZnNldF9pbl9kd3oKKysJICAmJiBjdV9vZmYtPnNlY3Rfb2ZmID49IG9m ZnNldC5zZWN0X29mZikKKyAJaGlnaCA9IG1pZDsKKyAgICAgICBlbHNlCisgCWxvdyA9IG1pZCAr IDE7CisgICAgIH0KKyAgIGdkYl9hc3NlcnQgKGxvdyA9PSBoaWdoKTsKKy0gIGlmIChkd2FyZjJf cGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2xvd10tPm9mZnNldC5zZWN0X29mZgorLSAgICAg ID4gb2Zmc2V0LnNlY3Rfb2ZmKQorKyAgdGhpc19jdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxs X2NvbXBfdW5pdHNbbG93XTsKKysgIGN1X29mZiA9ICZ0aGlzX2N1LT5vZmZzZXQ7CisrICBpZiAo dGhpc19jdS0+aXNfZHd6ICE9IG9mZnNldF9pbl9kd3ogfHwgY3Vfb2ZmLT5zZWN0X29mZiA+IG9m ZnNldC5zZWN0X29mZikKKyAgICAgeworLSAgICAgIGlmIChsb3cgPT0gMCkKKysgICAgICBpZiAo bG93ID09IDAgfHwgdGhpc19jdS0+aXNfZHd6ICE9IG9mZnNldF9pbl9kd3opCisgCWVycm9yIChf KCJEd2FyZiBFcnJvcjogY291bGQgbm90IGZpbmQgcGFydGlhbCBESUUgY29udGFpbmluZyAiCisg CSAgICAgICAib2Zmc2V0IDB4JWx4IFtpbiBtb2R1bGUgJXNdIiksCisgCSAgICAgICAobG9uZykg b2Zmc2V0LnNlY3Rfb2ZmLCBiZmRfZ2V0X2ZpbGVuYW1lIChvYmpmaWxlLT5vYmZkKSk7CitAQCAt MTcyNzAsNiArMTc4MTYsMjUgQEAgcGVyX2N1X29mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9p ZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQogIAkgICYmIG9mc19saHMtPm9mZnNl dC5zZWN0X29mZiA9PSBvZnNfcmhzLT5vZmZzZXQuc2VjdF9vZmYpOwogIH0KICAKQEAgLTE1MTIs NyArMzYxOSw3IEBAIGluZGV4IDhkYmM1M2UuLmI1Yjc4MTMgMTAwNjQ0CiAgLyogU2V0IHRoZSB0 eXBlIGFzc29jaWF0ZWQgd2l0aCBESUUgdG8gVFlQRS4gIFNhdmUgaXQgaW4gQ1UncyBoYXNoCiAg ICAgdGFibGUgaWYgbmVjZXNzYXJ5LiAgRm9yIGNvbnZlbmllbmNlLCByZXR1cm4gVFlQRS4KICAK LUBAIC0xNjkxOSw2ICsxNzIwNSw4IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xNzI5NCw2 ICsxNzg1OSw4IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0 eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1 X29mZnNldF9hbmRfdHlwZSAqKnNsb3QsIG9mczsKICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl ID0gY3UtPm9iamZpbGU7CiAgCkBAIC0xNTIxLDggKzM2MjgsOTQgQEAgaW5kZXggOGRiYzUzZS4u YjViNzgxMyAxMDA2NDQKICAgIC8qIEZvciBBZGEgdHlwZXMsIG1ha2Ugc3VyZSB0aGF0IHRoZSBn bmF0LXNwZWNpZmljIGRhdGEgaXMgYWx3YXlzCiAgICAgICBpbml0aWFsaXplZCAoaWYgbm90IGFs cmVhZHkgc2V0KS4gIFRoZXJlIGFyZSBhIGZldyB0eXBlcyB3aGVyZQogICAgICAgd2Ugc2hvdWxk IG5vdCBiZSBkb2luZyBzbywgYmVjYXVzZSB0aGUgdHlwZS1zcGVjaWZpYyBhcmVhIGlzCitAQCAt MTc0NzEsNTMgKzE4MDM4LDEzIEBAIHNob3dfZHdhcmYyX2NtZCAoY2hhciAqYXJncywgaW50IGZy b21fdHR5KQorICAgY21kX3Nob3dfbGlzdCAoc2hvd19kd2FyZjJfY21kbGlzdCwgZnJvbV90dHks ICIiKTsKKyB9CisgCistLyogSWYgc2VjdGlvbiBkZXNjcmliZWQgYnkgSU5GTyB3YXMgbW1hcHBl ZCwgbXVubWFwIGl0IG5vdy4gICovCistCistc3RhdGljIHZvaWQKKy1tdW5tYXBfc2VjdGlvbl9i dWZmZXIgKHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQorLXsKKy0gIGlmIChpbmZv LT5tYXBfYWRkciAhPSBOVUxMKQorLSAgICB7CistI2lmZGVmIEhBVkVfTU1BUAorLSAgICAgIGlu dCByZXM7CistCistICAgICAgcmVzID0gbXVubWFwIChpbmZvLT5tYXBfYWRkciwgaW5mby0+bWFw X2xlbik7CistICAgICAgZ2RiX2Fzc2VydCAocmVzID09IDApOworLSNlbHNlCistICAgICAgLyog V2l0aG91dCBIQVZFX01NQVAsIHdlIHNob3VsZCBuZXZlciBiZSBoZXJlIHRvIGJlZ2luIHdpdGgu ICAqLworLSAgICAgIGdkYl9hc3NlcnRfbm90X3JlYWNoZWQgKCJubyBtbWFwIHN1cHBvcnQiKTsK Ky0jZW5kaWYKKy0gICAgfQorLX0KKy0KKy0vKiBtdW5tYXAgZGVidWcgc2VjdGlvbnMgZm9yIE9C SkZJTEUsIGlmIG5lY2Vzc2FyeS4gICovCisrLyogRnJlZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBP QkpGSUxFLCBpZiBuZWNlc3NhcnkuICAqLworIAorIHN0YXRpYyB2b2lkCisgZHdhcmYyX3Blcl9v YmpmaWxlX2ZyZWUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkKQorIHsKKyAgIHN0 cnVjdCBkd2FyZjJfcGVyX29iamZpbGUgKmRhdGEgPSBkOworICAgaW50IGl4OworLSAgc3RydWN0 IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rpb247CistCistICAvKiBUaGlzIGlzIHNvcnRlZCBh Y2NvcmRpbmcgdG8gdGhlIG9yZGVyIHRoZXkncmUgZGVmaW5lZCBpbiB0byBtYWtlIGl0IGVhc2ll cgorLSAgICAgdG8ga2VlcCBpbiBzeW5jLiAgKi8KKy0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAo JmRhdGEtPmluZm8pOworLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+YWJicmV2KTsK Ky0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmxpbmUpOworLSAgbXVubWFwX3NlY3Rp b25fYnVmZmVyICgmZGF0YS0+bG9jKTsKKy0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEt Pm1hY2luZm8pOworLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+bWFjcm8pOworLSAg bXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+c3RyKTsKKy0gIG11bm1hcF9zZWN0aW9uX2J1 ZmZlciAoJmRhdGEtPnJhbmdlcyk7CistICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5h ZGRyKTsKKy0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmZyYW1lKTsKKy0gIG11bm1h cF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmVoX2ZyYW1lKTsKKy0gIG11bm1hcF9zZWN0aW9uX2J1 ZmZlciAoJmRhdGEtPmdkYl9pbmRleCk7CistCistICBmb3IgKGl4ID0gMDsKKy0gICAgICAgVkVD X2l0ZXJhdGUgKGR3YXJmMl9zZWN0aW9uX2luZm9fZGVmLCBkYXRhLT50eXBlcywgaXgsIHNlY3Rp b24pOworLSAgICAgICArK2l4KQorLSAgICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKHNlY3Rpb24p OworIAorICAgZm9yIChpeCA9IDA7IGl4IDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5p dHM7ICsraXgpCisgICAgIFZFQ19mcmVlIChkd2FyZjJfcGVyX2N1X3B0ciwKK0BAIC0xNzUyNyw2 ICsxODA1NCw5IEBAIGR3YXJmMl9wZXJfb2JqZmlsZV9mcmVlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgdm9pZCAqZCkKKyAKKyAgIGlmIChkYXRhLT5kd29fZmlsZXMpCisgICAgIGZyZWVfZHdv X2ZpbGVzIChkYXRhLT5kd29fZmlsZXMsIG9iamZpbGUpOworKworKyAgaWYgKGRhdGEtPmR3el9m aWxlICYmIGRhdGEtPmR3el9maWxlLT5kd3pfYmZkKQorKyAgICBnZGJfYmZkX3VucmVmIChkYXRh LT5kd3pfZmlsZS0+ZHd6X2JmZCk7CisgfQorIAorIAwKK2RpZmYgLS1naXQgYS9nZGIvZWxmcmVh ZC5jIGIvZ2RiL2VsZnJlYWQuYworaW5kZXggMWVkZmIyNy4uZDkxMDljZiAxMDA2NDQKKy0tLSBh L2dkYi9lbGZyZWFkLmMKKysrKyBiL2dkYi9lbGZyZWFkLmMKK0BAIC00NCw2ICs0NCw3IEBACisg I2luY2x1ZGUgImdkYnRocmVhZC5oIgorICNpbmNsdWRlICJyZWdjYWNoZS5oIgorICNpbmNsdWRl ICJiY2FjaGUuaCIKKysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorIGV4dGVybiB2b2lkIF9pbml0 aWFsaXplX2VsZnJlYWQgKHZvaWQpOworIAorQEAgLTExMjMsNyArMTEyNCw3IEBAIGJ1aWxkX2lk X3ZlcmlmeSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBidWlsZF9pZCAqY2hlY2spCisg ICBlbHNlCisgICAgIHJldHZhbCA9IDE7CisgCistICBnZGJfYmZkX2Nsb3NlX29yX3dhcm4gKGFi ZmQpOworKyAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7CisgCisgICB4ZnJlZSAoZm91bmQpOworIAog ZGlmZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCi1pbmRleCA3ZjFkZmFjLi41MjQ2 MmJjIDEwMDY0NAoraW5kZXggM2Q0MzQwNi4uNTU2OGIxYyAxMDA2NDQKIC0tLSBhL2dkYi9ldmFs LmMKICsrKyBiL2dkYi9ldmFsLmMKIEBAIC00MSw2ICs0MSw3IEBACkBAIC0yMDEwLDYgKzQyMDMs ODEgQEAgaW5kZXggN2YxZGZhYy4uNTI0NjJiYyAxMDA2NDQKIC0gIHJldHVybiBuZGltZW47CiAr CiAgfQorZGlmZiAtLWdpdCBhL2dkYi9leGVjLmMgYi9nZGIvZXhlYy5jCitpbmRleCA2YmExOTg2 Li41NDBjMjcxIDEwMDY0NAorLS0tIGEvZ2RiL2V4ZWMuYworKysrIGIvZ2RiL2V4ZWMuYworQEAg LTMzLDYgKzMzLDcgQEAKKyAjaW5jbHVkZSAiYXJjaC11dGlscy5oIgorICNpbmNsdWRlICJnZGJ0 aHJlYWQuaCIKKyAjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCisrI2luY2x1ZGUgImdkYl9iZmQuaCIK KyAKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIK K0BAIC05OCwxMCArOTksOCBAQCBleGVjX2Nsb3NlICh2b2lkKQorICAgaWYgKGV4ZWNfYmZkKQor ICAgICB7CisgICAgICAgYmZkICphYmZkID0gZXhlY19iZmQ7CistICAgICAgY2hhciAqbmFtZSA9 IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpOworIAorLSAgICAgIGdkYl9iZmRfY2xvc2Vfb3Jfd2Fy biAoYWJmZCk7CistICAgICAgeGZyZWUgKG5hbWUpOworKyAgICAgIGdkYl9iZmRfdW5yZWYgKGFi ZmQpOworIAorICAgICAgIC8qIFJlbW92aW5nIHRhcmdldCBzZWN0aW9ucyBtYXkgY2xvc2UgdGhl IGV4ZWNfb3BzIHRhcmdldC4KKyAJIENsZWFyIGV4ZWNfYmZkIGJlZm9yZSBkb2luZyBzbyB0byBw cmV2ZW50IHJlY3Vyc2lvbi4gICovCitAQCAtMTM3LDggKzEzNiw3IEBAIGV4ZWNfY2xvc2VfMSAo aW50IHF1aXR0aW5nKQorIAkgIG5lZWRfc3ltdGFiX2NsZWFudXAgPSAxOworIAl9CisgICAgICAg ZWxzZSBpZiAodnAtPmJmZCAhPSBleGVjX2JmZCkKKy0JLyogRklYTUUtbGVhazogV2Ugc2hvdWxk IGJlIGZyZWVpbmcgdnAtPm5hbWUgdG9vLCBJIHRoaW5rLiAgKi8KKy0JZ2RiX2JmZF9jbG9zZV9v cl93YXJuICh2cC0+YmZkKTsKKysJZ2RiX2JmZF91bnJlZiAodnAtPmJmZCk7CisgCisgICAgICAg eGZyZWUgKHZwKTsKKyAgICAgfQorQEAgLTIzMCwxMSArMjI4LDE0IEBAIGV4ZWNfZmlsZV9hdHRh Y2ggKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCisgCSAgICAgJnNjcmF0Y2hfcGF0aG5h bWUpOworIAl9CisgI2VuZGlmCisrCisrICAgICAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhm cmVlLCBzY3JhdGNoX3BhdGhuYW1lKTsKKysKKyAgICAgICBpZiAoc2NyYXRjaF9jaGFuIDwgMCkK KyAJcGVycm9yX3dpdGhfbmFtZSAoZmlsZW5hbWUpOworLSAgICAgIGV4ZWNfYmZkID0gYmZkX2Zv cGVuIChzY3JhdGNoX3BhdGhuYW1lLCBnbnV0YXJnZXQsCistCQkJICAgIHdyaXRlX2ZpbGVzID8g Rk9QRU5fUlVCIDogRk9QRU5fUkIsCistCQkJICAgIHNjcmF0Y2hfY2hhbik7CisrICAgICAgZXhl Y19iZmQgPSBnZGJfYmZkX3JlZiAoYmZkX2ZvcGVuIChzY3JhdGNoX3BhdGhuYW1lLCBnbnV0YXJn ZXQsCisrCQkJCQkgd3JpdGVfZmlsZXMgPyBGT1BFTl9SVUIgOiBGT1BFTl9SQiwKKysJCQkJCSBz Y3JhdGNoX2NoYW4pKTsKKyAKKyAgICAgICBpZiAoIWV4ZWNfYmZkKQorIAl7CitAQCAtMjQyLDEz ICsyNDMsNiBAQCBleGVjX2ZpbGVfYXR0YWNoIChjaGFyICpmaWxlbmFtZSwgaW50IGZyb21fdHR5 KQorIAkJIHNjcmF0Y2hfcGF0aG5hbWUsIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsK KyAJfQorIAorLSAgICAgIC8qIEF0IHRoaXMgcG9pbnQsIHNjcmF0Y2hfcGF0aG5hbWUgYW5kIGV4 ZWNfYmZkLT5uYW1lIGJvdGggcG9pbnQgdG8gdGhlCistICAgICAgICAgc2FtZSBtYWxsb2MnZCBz dHJpbmcuICBIb3dldmVyIGV4ZWNfY2xvc2UoKSB3aWxsIGF0dGVtcHQgdG8gZnJlZSBpdAorLSAg ICAgICAgIHZpYSB0aGUgZXhlY19iZmQtPm5hbWUgcG9pbnRlciwgc28gd2UgbmVlZCB0byBtYWtl IGFub3RoZXIgY29weSBhbmQKKy0gICAgICAgICBsZWF2ZSBleGVjX2JmZCBhcyB0aGUgbmV3IG93 bmVyIG9mIHRoZSBvcmlnaW5hbCBjb3B5LiAgKi8KKy0gICAgICBzY3JhdGNoX3BhdGhuYW1lID0g eHN0cmR1cCAoc2NyYXRjaF9wYXRobmFtZSk7CistICAgICAgY2xlYW51cHMgPSBtYWtlX2NsZWFu dXAgKHhmcmVlLCBzY3JhdGNoX3BhdGhuYW1lKTsKKy0KKyAgICAgICBpZiAoIWJmZF9jaGVja19m b3JtYXRfbWF0Y2hlcyAoZXhlY19iZmQsIGJmZF9vYmplY3QsICZtYXRjaGluZykpCisgCXsKKyAJ ICAvKiBNYWtlIHN1cmUgdG8gY2xvc2UgZXhlY19iZmQsIG9yIGVsc2UgInJ1biIgbWlnaHQgdHJ5 IHRvIHVzZQorQEAgLTI1OSw2ICsyNTMsOCBAQCBleGVjX2ZpbGVfYXR0YWNoIChjaGFyICpmaWxl bmFtZSwgaW50IGZyb21fdHR5KQorIAkJIGdkYl9iZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgp LCBtYXRjaGluZykpOworIAl9CisgCisrICAgICAgZ2RiX2JmZF9zdGFzaF9maWxlbmFtZSAoZXhl Y19iZmQpOworKworICAgICAgIC8qIEZJWE1FIC0gVGhpcyBzaG91bGQgb25seSBiZSBydW4gZm9y IFJTNjAwMCwgYnV0IHRoZSBpZmRlZiBpcyBhIHBvb3IKKyAgICAgICAgICB3YXkgdG8gYWNjb21w bGlzaC4gICovCisgI2lmZGVmIERFUFJFQ0FURURfSUJNNjAwMF9UQVJHRVQKIGRpZmYgLS1naXQg YS9nZGIvZi1leHAueSBiL2dkYi9mLWV4cC55CiBpbmRleCAzM2M3NDE4Li40ZGIxYmZhIDEwMDY0 NAogLS0tIGEvZ2RiL2YtZXhwLnkKQEAgLTIyNDQsMTc3ICs0NTEyLDc3NCBAQCBpbmRleCA4Yjg0 YjVhLi40YjI0MGEzIDEwMDY0NAogKyAgaWYgKGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9w cmludF90b19zdHJlYW0gKHR5cGUsIHN0cmVhbSkgIT0gTlVMTCkKICsgICAgcmV0dXJuOwogKwot ICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7Ci0gICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCi0g ICAgIHsKLWRpZmYgLS1naXQgYS9nZGIvZmluZHZhci5jIGIvZ2RiL2ZpbmR2YXIuYwotaW5kZXgg ZWQ3OTAzYy4uZTQxMmEzZCAxMDA2NDQKLS0tLSBhL2dkYi9maW5kdmFyLmMKLSsrKyBiL2dkYi9m aW5kdmFyLmMKLUBAIC0zNSw2ICszNSw3IEBACi0gI2luY2x1ZGUgImJsb2NrLmgiCi0gI2luY2x1 ZGUgIm9iamZpbGVzLmgiCi0gI2luY2x1ZGUgImxhbmd1YWdlLmgiCi0rI2luY2x1ZGUgImR3YXJm MmxvYy5oIgotIAotIC8qIEJhc2ljIGJ5dGUtc3dhcHBpbmcgcm91dGluZXMuICBBbGwgJ2V4dHJh Y3QnIGZ1bmN0aW9ucyByZXR1cm4gYQotICAgIGhvc3QtZm9ybWF0IGludGVnZXIgZnJvbSBhIHRh cmdldC1mb3JtYXQgaW50ZWdlciBhdCBBRERSIHdoaWNoIGlzCi1AQCAtNDA3LDcgKzQwOCwxMCBA QCBzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAoc3RydWN0IHN5bWJvbCAqc3ltKQotIH0KLSAKLSAv KiBBIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSAibGFfcmVhZF92YXJfdmFsdWUiIGhv b2sgaW4KLS0gICB0aGUgbGFuZ3VhZ2UgdmVjdG9yIHdoaWNoIHNob3VsZCB3b3JrIGluIG1vc3Qg c2l0dWF0aW9ucy4gICovCi0rICAgdGhlIGxhbmd1YWdlIHZlY3RvciB3aGljaCBzaG91bGQgd29y ayBpbiBtb3N0IHNpdHVhdGlvbnMuCi0rICAgV2UgaGF2ZSB0byBmaXJzdCBmaW5kIHRoZSBhZGRy ZXNzIG9mIHRoZSB2YXJpYWJsZSBiZWZvcmUgYWxsb2NhdGluZyBzdHJ1Y3QKLSsgICB2YWx1ZSB0 byByZXR1cm4gYXMgaXRzIHNpemUgbWF5IGRlcGVuZCBvbiBEV19PUF9QVVNIX09CSkVDVF9BRERS RVNTIHBvc3NpYmx5IAotKyAgIHVzZWQgYnkgaXRzIHR5cGUuICAqLwotIAotIHN0cnVjdCB2YWx1 ZSAqCi0gZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUpCi1AQCAtNDE1LDE2ICs0MTksNiBAQCBkZWZhdWx0X3JlYWRfdmFy X3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAg IHN0cnVjdCB2YWx1ZSAqdjsKLSAgIHN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZh cik7Ci0gICBDT1JFX0FERFIgYWRkcjsKLS0gIGludCBsZW47Ci0tCi0tICAvKiBDYWxsIGNoZWNr X3R5cGVkZWYgb24gb3VyIHR5cGUgdG8gbWFrZSBzdXJlIHRoYXQsIGlmIFRZUEUgaXMKLS0gICAg IGEgVFlQRV9DT0RFX1RZUEVERUYsIGl0cyBsZW5ndGggaXMgc2V0IHRvIHRoZSBsZW5ndGggb2Yg dGhlIHRhcmdldCB0eXBlCi0tICAgICBpbnN0ZWFkIG9mIHplcm8uICBIb3dldmVyLCB3ZSBkbyBu b3QgcmVwbGFjZSB0aGUgdHlwZWRlZiB0eXBlIGJ5IHRoZQotLSAgICAgdGFyZ2V0IHR5cGUsIGJl Y2F1c2Ugd2Ugd2FudCB0byBrZWVwIHRoZSB0eXBlZGVmIGluIG9yZGVyIHRvIGJlIGFibGUgdG8K LS0gICAgIHNldCB0aGUgcmV0dXJuZWQgdmFsdWUgdHlwZSBkZXNjcmlwdGlvbiBjb3JyZWN0bHku ICAqLwotLSAgY2hlY2tfdHlwZWRlZiAodHlwZSk7Ci0tCi0tICBsZW4gPSBUWVBFX0xFTkdUSCAo dHlwZSk7Ci0gCi0gICBpZiAoc3ltYm9sX3JlYWRfbmVlZHNfZnJhbWUgKHZhcikpCi0gICAgIGdk Yl9hc3NlcnQgKGZyYW1lKTsKLUBAIC00MzQsNyArNDI4LDcgQEAgZGVmYXVsdF9yZWFkX3Zhcl92 YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gICAg IGNhc2UgTE9DX0NPTlNUOgotICAgICAgIC8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJn ZXQgZm9ybWF0LiAgKi8KLSAgICAgICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotLSAgICAg IHN0b3JlX3NpZ25lZF9pbnRlZ2VyICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBsZW4sCi0rICAg ICAgc3RvcmVfc2lnbmVkX2ludGVnZXIgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFRZUEVfTEVO R1RIICh0eXBlKSwKLSAJCQkgICAgZ2RiYXJjaF9ieXRlX29yZGVyIChnZXRfdHlwZV9hcmNoICh0 eXBlKSksCi0gCQkJICAgIChMT05HRVNUKSBTWU1CT0xfVkFMVUUgKHZhcikpOwotICAgICAgIFZB TFVFX0xWQUwgKHYpID0gbm90X2x2YWw7Ci1AQCAtNDU5LDEyICs0NTMsMTIgQEAgZGVmYXVsdF9y ZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUpCi0gCi0gICAgIGNhc2UgTE9DX0NPTlNUX0JZVEVTOgotICAgICAgIHYgPSBhbGxvY2F0ZV92 YWx1ZSAodHlwZSk7Ci0tICAgICAgbWVtY3B5ICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBTWU1C T0xfVkFMVUVfQllURVMgKHZhciksIGxlbik7Ci0rICAgICAgbWVtY3B5ICh2YWx1ZV9jb250ZW50 c19yYXcgKHYpLCBTWU1CT0xfVkFMVUVfQllURVMgKHZhciksCi0rCSAgICAgIFRZUEVfTEVOR1RI ICh0eXBlKSk7Ci0gICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLSAgICAgICByZXR1 cm4gdjsKLSAKLSAgICAgY2FzZSBMT0NfU1RBVElDOgotLSAgICAgIHYgPSBhbGxvY2F0ZV92YWx1 ZV9sYXp5ICh0eXBlKTsKLSAgICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCi0gCWFkZHIgPSBz eW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIpLAotIAkJ CQkJIFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7Ci1AQCAtNDc4LDcgKzQ3Miw2IEBAIGRlZmF1 bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lKQotIAllcnJvciAoXygiVW5rbm93biBhcmd1bWVudCBsaXN0IGFkZHJlc3MgZm9yIGAl cycuIiksCi0gCSAgICAgICBTWU1CT0xfUFJJTlRfTkFNRSAodmFyKSk7Ci0gICAgICAgYWRkciAr PSBTWU1CT0xfVkFMVUUgKHZhcik7Ci0tICAgICAgdiA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5 cGUpOwotICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIExPQ19SRUZfQVJHOgotQEAgLTQ5Mywx NCArNDg2LDEyIEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotIAlhcmdyZWYgKz0gU1lNQk9MX1ZBTFVFICh2YXIp OwotIAlyZWYgPSB2YWx1ZV9hdCAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFyZ3JlZik7 Ci0gCWFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChyZWYpOwotLQl2ID0gYWxsb2NhdGVfdmFsdWVf bGF6eSAodHlwZSk7Ci0gCWJyZWFrOwotICAgICAgIH0KLSAKLSAgICAgY2FzZSBMT0NfTE9DQUw6 Ci0gICAgICAgYWRkciA9IGdldF9mcmFtZV9sb2NhbHNfYWRkcmVzcyAoZnJhbWUpOwotICAgICAg IGFkZHIgKz0gU1lNQk9MX1ZBTFVFICh2YXIpOwotLSAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZV9s YXp5ICh0eXBlKTsKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBMT0NfVFlQRURFRjoKLUBA IC01MDksNyArNTAwLDYgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAq dmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNh c2UgTE9DX0JMT0NLOgotLSAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBlKTsKLSAg ICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCi0gCWFkZHIgPSBzeW1ib2xfb3ZlcmxheWVkX2Fk ZHJlc3MKLSAJICAoQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSksIFNZTUJP TF9PQkpfU0VDVElPTiAodmFyKSk7Ci1AQCAtNTM1LDcgKzUyNSw2IEBAIGRlZmF1bHRfcmVhZF92 YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQot IAkgICAgICAgICAgICAgU1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOwotIAotIAkgICAgYWRkciA9 IHZhbHVlX2FzX2FkZHJlc3MgKHJlZ3ZhbCk7Ci0tCSAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6 eSAodHlwZSk7Ci0gCSAgfQotIAllbHNlCi0gCSAgewotQEAgLTU4Myw3ICs1NzIsNiBAQCBkZWZh dWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZSkKLSAJaWYgKG9ial9zZWN0aW9uCi0gCSAgICAmJiAob2JqX3NlY3Rpb24tPnRoZV9i ZmRfc2VjdGlvbi0+ZmxhZ3MgJiBTRUNfVEhSRUFEX0xPQ0FMKSAhPSAwKQotIAkgIGFkZHIgPSB0 YXJnZXRfdHJhbnNsYXRlX3Rsc19hZGRyZXNzIChvYmpfc2VjdGlvbi0+b2JqZmlsZSwgYWRkcik7 Ci0tCXYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBlKTsKLSAgICAgICB9Ci0gICAgICAgYnJl YWs7Ci0gCi1AQCAtNTk2LDYgKzU4NCwxMCBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1 Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAgICAgICBicmVhazsK LSAgICAgfQotIAotKyAgLyogQUREUiBpcyBzZXQgaGVyZSBmb3IgQUxMT0NBVEVfVkFMVUUncyBD SEVDS19UWVBFREVGIGZvcgotKyAgICAgRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUy4gICovCi0r ICBvYmplY3RfYWRkcmVzc19zZXQgKGFkZHIpOwotKyAgdiA9IGFsbG9jYXRlX3ZhbHVlX2xhenkg KHR5cGUpOwotICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKLSAgIHNldF92YWx1ZV9h ZGRyZXNzICh2LCBhZGRyKTsKLSAgIHJldHVybiB2OwotQEAgLTY5MSwxMCArNjgzLDExIEBAIHN0 cnVjdCB2YWx1ZSAqCi0gdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGlu dCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci0tICBzdHJ1Y3QgdHlwZSAqdHlw ZTEgPSBjaGVja190eXBlZGVmICh0eXBlKTsKLSAgIHN0cnVjdCB2YWx1ZSAqdjsKLSAKLS0gIGlm IChnZGJhcmNoX2NvbnZlcnRfcmVnaXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbnVtLCB0eXBlMSkpCi0r ICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7CisgICBDSEVDS19UWVBFREVGICh0eXBlKTsK KyAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkKKyAgICAgeworZGlmZiAtLWdpdCBhL2dkYi9m aW5kdmFyLmMgYi9nZGIvZmluZHZhci5jCitpbmRleCA2NmJjZWJlLi5lNTllNWYyIDEwMDY0NAor LS0tIGEvZ2RiL2ZpbmR2YXIuYworKysrIGIvZ2RiL2ZpbmR2YXIuYworQEAgLTM1LDYgKzM1LDcg QEAKKyAjaW5jbHVkZSAiYmxvY2suaCIKKyAjaW5jbHVkZSAib2JqZmlsZXMuaCIKKyAjaW5jbHVk ZSAibGFuZ3VhZ2UuaCIKKysjaW5jbHVkZSAiZHdhcmYybG9jLmgiCisgCisgLyogQmFzaWMgYnl0 ZS1zd2FwcGluZyByb3V0aW5lcy4gIEFsbCAnZXh0cmFjdCcgZnVuY3Rpb25zIHJldHVybiBhCisg ICAgaG9zdC1mb3JtYXQgaW50ZWdlciBmcm9tIGEgdGFyZ2V0LWZvcm1hdCBpbnRlZ2VyIGF0IEFE RFIgd2hpY2ggaXMKK0BAIC00MzgsNyArNDM5LDEwIEBAIG1pbnN5bV9sb29rdXBfaXRlcmF0b3Jf Y2IgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpjYl9kYXRhKQorIH0KKyAKKyAvKiBB IGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSAibGFfcmVhZF92YXJfdmFsdWUiIGhvb2sg aW4KKy0gICB0aGUgbGFuZ3VhZ2UgdmVjdG9yIHdoaWNoIHNob3VsZCB3b3JrIGluIG1vc3Qgc2l0 dWF0aW9ucy4gICovCisrICAgdGhlIGxhbmd1YWdlIHZlY3RvciB3aGljaCBzaG91bGQgd29yayBp biBtb3N0IHNpdHVhdGlvbnMuCisrICAgV2UgaGF2ZSB0byBmaXJzdCBmaW5kIHRoZSBhZGRyZXNz IG9mIHRoZSB2YXJpYWJsZSBiZWZvcmUgYWxsb2NhdGluZyBzdHJ1Y3QKKysgICB2YWx1ZSB0byBy ZXR1cm4gYXMgaXRzIHNpemUgbWF5IGRlcGVuZCBvbiBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNT IHBvc3NpYmx5IAorKyAgIHVzZWQgYnkgaXRzIHR5cGUuICAqLworIAorIHN0cnVjdCB2YWx1ZSAq CisgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUpCitAQCAtNDQ2LDE2ICs0NTAsNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3Zh bHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAgIHN0 cnVjdCB2YWx1ZSAqdjsKKyAgIHN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7 CisgICBDT1JFX0FERFIgYWRkcjsKKy0gIGludCBsZW47CistCistICAvKiBDYWxsIGNoZWNrX3R5 cGVkZWYgb24gb3VyIHR5cGUgdG8gbWFrZSBzdXJlIHRoYXQsIGlmIFRZUEUgaXMKKy0gICAgIGEg VFlQRV9DT0RFX1RZUEVERUYsIGl0cyBsZW5ndGggaXMgc2V0IHRvIHRoZSBsZW5ndGggb2YgdGhl IHRhcmdldCB0eXBlCistICAgICBpbnN0ZWFkIG9mIHplcm8uICBIb3dldmVyLCB3ZSBkbyBub3Qg cmVwbGFjZSB0aGUgdHlwZWRlZiB0eXBlIGJ5IHRoZQorLSAgICAgdGFyZ2V0IHR5cGUsIGJlY2F1 c2Ugd2Ugd2FudCB0byBrZWVwIHRoZSB0eXBlZGVmIGluIG9yZGVyIHRvIGJlIGFibGUgdG8KKy0g ICAgIHNldCB0aGUgcmV0dXJuZWQgdmFsdWUgdHlwZSBkZXNjcmlwdGlvbiBjb3JyZWN0bHkuICAq LworLSAgY2hlY2tfdHlwZWRlZiAodHlwZSk7CistCistICBsZW4gPSBUWVBFX0xFTkdUSCAodHlw ZSk7CisgCisgICBpZiAoc3ltYm9sX3JlYWRfbmVlZHNfZnJhbWUgKHZhcikpCisgICAgIGdkYl9h c3NlcnQgKGZyYW1lKTsKK0BAIC00NjUsNyArNDU5LDcgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1 ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgICAgIGNh c2UgTE9DX0NPTlNUOgorICAgICAgIC8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQg Zm9ybWF0LiAgKi8KKyAgICAgICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworLSAgICAgIHN0 b3JlX3NpZ25lZF9pbnRlZ2VyICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBsZW4sCisrICAgICAg c3RvcmVfc2lnbmVkX2ludGVnZXIgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFRZUEVfTEVOR1RI ICh0eXBlKSwKKyAJCQkgICAgZ2RiYXJjaF9ieXRlX29yZGVyIChnZXRfdHlwZV9hcmNoICh0eXBl KSksCisgCQkJICAgIChMT05HRVNUKSBTWU1CT0xfVkFMVUUgKHZhcikpOworICAgICAgIFZBTFVF X0xWQUwgKHYpID0gbm90X2x2YWw7CitAQCAtNDkwLDEyICs0ODQsMTIgQEAgZGVmYXVsdF9yZWFk X3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUp CisgCisgICAgIGNhc2UgTE9DX0NPTlNUX0JZVEVTOgorICAgICAgIHYgPSBhbGxvY2F0ZV92YWx1 ZSAodHlwZSk7CistICAgICAgbWVtY3B5ICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBTWU1CT0xf VkFMVUVfQllURVMgKHZhciksIGxlbik7CisrICAgICAgbWVtY3B5ICh2YWx1ZV9jb250ZW50c19y YXcgKHYpLCBTWU1CT0xfVkFMVUVfQllURVMgKHZhciksCisrCSAgICAgIFRZUEVfTEVOR1RIICh0 eXBlKSk7CisgICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKKyAgICAgICByZXR1cm4g djsKKyAKKyAgICAgY2FzZSBMT0NfU1RBVElDOgorLSAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZV9s YXp5ICh0eXBlKTsKKyAgICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCisgCWFkZHIgPSBzeW1i b2xfb3ZlcmxheWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIpLAorIAkJCQkJ IFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7CitAQCAtNTA5LDcgKzUwMyw2IEBAIGRlZmF1bHRf cmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lKQorIAllcnJvciAoXygiVW5rbm93biBhcmd1bWVudCBsaXN0IGFkZHJlc3MgZm9yIGAlcycu IiksCisgCSAgICAgICBTWU1CT0xfUFJJTlRfTkFNRSAodmFyKSk7CisgICAgICAgYWRkciArPSBT WU1CT0xfVkFMVUUgKHZhcik7CistICAgICAgdiA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5cGUp OworICAgICAgIGJyZWFrOworIAorICAgICBjYXNlIExPQ19SRUZfQVJHOgorQEAgLTUyNCwxNCAr NTE3LDEyIEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3Ry dWN0IGZyYW1lX2luZm8gKmZyYW1lKQorIAlhcmdyZWYgKz0gU1lNQk9MX1ZBTFVFICh2YXIpOwor IAlyZWYgPSB2YWx1ZV9hdCAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFyZ3JlZik7Cisg CWFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChyZWYpOworLQl2ID0gYWxsb2NhdGVfdmFsdWVfbGF6 eSAodHlwZSk7CisgCWJyZWFrOworICAgICAgIH0KKyAKKyAgICAgY2FzZSBMT0NfTE9DQUw6Cisg ICAgICAgYWRkciA9IGdldF9mcmFtZV9sb2NhbHNfYWRkcmVzcyAoZnJhbWUpOworICAgICAgIGFk ZHIgKz0gU1lNQk9MX1ZBTFVFICh2YXIpOworLSAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5 ICh0eXBlKTsKKyAgICAgICBicmVhazsKKyAKKyAgICAgY2FzZSBMT0NfVFlQRURFRjoKK0BAIC01 NDAsNyArNTMxLDYgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFy LCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgICAgICAgYnJlYWs7CisgCisgICAgIGNhc2Ug TE9DX0JMT0NLOgorLSAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBlKTsKKyAgICAg ICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCisgCWFkZHIgPSBzeW1ib2xfb3ZlcmxheWVkX2FkZHJl c3MKKyAJICAoQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSksIFNZTUJPTF9P QkpfU0VDVElPTiAodmFyKSk7CitAQCAtNTY2LDcgKzU1Niw2IEBAIGRlZmF1bHRfcmVhZF92YXJf dmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorIAkg ICAgICAgICAgICAgU1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOworIAorIAkgICAgYWRkciA9IHZh bHVlX2FzX2FkZHJlc3MgKHJlZ3ZhbCk7CistCSAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAo dHlwZSk7CisgCSAgfQorIAllbHNlCisgCSAgeworQEAgLTYxNSw3ICs2MDQsNiBAQCBkZWZhdWx0 X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSkKKyAJaWYgKG9ial9zZWN0aW9uCisgCSAgICAmJiAob2JqX3NlY3Rpb24tPnRoZV9iZmRf c2VjdGlvbi0+ZmxhZ3MgJiBTRUNfVEhSRUFEX0xPQ0FMKSAhPSAwKQorIAkgIGFkZHIgPSB0YXJn ZXRfdHJhbnNsYXRlX3Rsc19hZGRyZXNzIChvYmpfc2VjdGlvbi0+b2JqZmlsZSwgYWRkcik7Cist CXYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBlKTsKKyAgICAgICB9CisgICAgICAgYnJlYWs7 CisgCitAQCAtNjI4LDYgKzYxNiwxMCBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qg c3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAgICAgICBicmVhazsKKyAg ICAgfQorIAorKyAgLyogQUREUiBpcyBzZXQgaGVyZSBmb3IgQUxMT0NBVEVfVkFMVUUncyBDSEVD S19UWVBFREVGIGZvcgorKyAgICAgRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUy4gICovCisrICBv YmplY3RfYWRkcmVzc19zZXQgKGFkZHIpOworKyAgdiA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5 cGUpOworICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKKyAgIHNldF92YWx1ZV9hZGRy ZXNzICh2LCBhZGRyKTsKKyAgIHJldHVybiB2OworQEAgLTcyMywxMCArNzE1LDExIEBAIHN0cnVj dCB2YWx1ZSAqCisgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBy ZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyB7CisgICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7CistICBzdHJ1Y3QgdHlwZSAqdHlwZTEg PSBjaGVja190eXBlZGVmICh0eXBlKTsKKyAgIHN0cnVjdCB2YWx1ZSAqdjsKKyAKKy0gIGlmIChn ZGJhcmNoX2NvbnZlcnRfcmVnaXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbnVtLCB0eXBlMSkpCisrICB0 eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7CisrCisrICBpZiAoZ2RiYXJjaF9jb252ZXJ0X3Jl Z2lzdGVyX3AgKGdkYmFyY2gsIHJlZ251bSwgdHlwZSkpCisgICAgIHsKKyAgICAgICBpbnQgb3B0 aW0sIHVuYXZhaWwsIG9rOworIAorQEAgLTc0MSw3ICs3MzQsNyBAQCB2YWx1ZV9mcm9tX3JlZ2lz dGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IHJlZ251bSwgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lKQorICAgICAgIFZBTFVFX0xWQUwgKHYpID0gbHZhbF9yZWdpc3RlcjsKKyAgICAgICBWQUxV RV9GUkFNRV9JRCAodikgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKKyAgICAgICBWQUxVRV9SRUdO VU0gKHYpID0gcmVnbnVtOworLSAgICAgIG9rID0gZ2RiYXJjaF9yZWdpc3Rlcl90b192YWx1ZSAo Z2RiYXJjaCwgZnJhbWUsIHJlZ251bSwgdHlwZTEsCisrICAgICAgb2sgPSBnZGJhcmNoX3JlZ2lz dGVyX3RvX3ZhbHVlIChnZGJhcmNoLCBmcmFtZSwgcmVnbnVtLCB0eXBlLAorIAkJCQkgICAgICB2 YWx1ZV9jb250ZW50c19yYXcgKHYpLCAmb3B0aW0sCisgCQkJCSAgICAgICZ1bmF2YWlsKTsKKyAK K2RpZmYgLS1naXQgYS9nZGIvZ2NvcmUuYyBiL2dkYi9nY29yZS5jCitpbmRleCBhZWRkYTQxLi5m OWExMzg5IDEwMDY0NAorLS0tIGEvZ2RiL2djb3JlLmMKKysrKyBiL2dkYi9nY29yZS5jCitAQCAt MzMsNiArMzMsNyBAQAorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlICJyZWdjYWNoZS5o IgorICNpbmNsdWRlICJyZWdzZXQuaCIKKysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorIC8qIFRo ZSBsYXJnZXN0IGFtb3VudCBvZiBtZW1vcnkgdG8gcmVhZCBmcm9tIHRoZSB0YXJnZXQgYXQgb25j ZS4gIFdlCisgICAgbXVzdCB0aHJvdHRsZSBpdCB0byBsaW1pdCB0aGUgYW1vdW50IG9mIG1lbW9y eSB1c2VkIGJ5IEdEQiBkdXJpbmcKK0BAIC01MCwxMCArNTEsMTEgQEAgc3RhdGljIGludCBnY29y ZV9tZW1vcnlfc2VjdGlvbnMgKGJmZCAqKTsKKyBiZmQgKgorIGNyZWF0ZV9nY29yZV9iZmQgKGNo YXIgKmZpbGVuYW1lKQorIHsKKy0gIGJmZCAqb2JmZCA9IGJmZF9vcGVudyAoZmlsZW5hbWUsIGRl ZmF1bHRfZ2NvcmVfdGFyZ2V0ICgpKTsKKysgIGJmZCAqb2JmZCA9IGdkYl9iZmRfcmVmIChiZmRf b3BlbncgKGZpbGVuYW1lLCBkZWZhdWx0X2djb3JlX3RhcmdldCAoKSkpOworIAorICAgaWYgKCFv YmZkKQorICAgICBlcnJvciAoXygiRmFpbGVkIHRvIG9wZW4gJyVzJyBmb3Igb3V0cHV0LiIpLCBm aWxlbmFtZSk7CisrICBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lIChvYmZkKTsKKyAgIGJmZF9zZXRf Zm9ybWF0IChvYmZkLCBiZmRfY29yZSk7CisgICBiZmRfc2V0X2FyY2hfbWFjaCAob2JmZCwgZGVm YXVsdF9nY29yZV9hcmNoICgpLCBkZWZhdWx0X2djb3JlX21hY2ggKCkpOworICAgcmV0dXJuIG9i ZmQ7CitAQCAtMTEwLDcgKzExMiw3IEBAIGRvX2JmZF9kZWxldGVfY2xlYW51cCAodm9pZCAqYXJn KQorICAgYmZkICpvYmZkID0gYXJnOworICAgY29uc3QgY2hhciAqZmlsZW5hbWUgPSBvYmZkLT5m aWxlbmFtZTsKKyAKKy0gIGJmZF9jbG9zZSAoYXJnKTsKKysgIGdkYl9iZmRfdW5yZWYgKGFyZyk7 CisgICB1bmxpbmsgKGZpbGVuYW1lKTsKKyB9CisgCitAQCAtMTU0LDcgKzE1Niw3IEBAIGdjb3Jl X2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyAgIGZwcmludGZfZmlsdGVyZWQg KGdkYl9zdGRvdXQsICJTYXZlZCBjb3JlZmlsZSAlc1xuIiwgY29yZWZpbGVuYW1lKTsKKyAKKyAg IGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7CistICBiZmRfY2xvc2UgKG9iZmQpOworKyAg Z2RiX2JmZF91bnJlZiAob2JmZCk7CisgfQorIAorIHN0YXRpYyB1bnNpZ25lZCBsb25nCitkaWZm IC0tZ2l0IGEvZ2RiL2dkYi1nZGIuZ2RiLmluIGIvZ2RiL2dkYi1nZGIuZ2RiLmluCitpbmRleCBm ZmI3ZjUzLi5hMmU3ZTk0IDEwMDY0NAorLS0tIGEvZ2RiL2dkYi1nZGIuZ2RiLmluCisrKysgYi9n ZGIvZ2RiLWdkYi5nZGIuaW4KK0BAIC0xLDUgKzEsMTUgQEAKKyBlY2hvIFNldHRpbmcgdXAgdGhl IGVudmlyb25tZW50IGZvciBkZWJ1Z2dpbmcgZ2RiLlxuCisgCisrIyBTZXQgdXAgdGhlIFB5dGhv biBsaWJyYXJ5IGFuZCAicmVxdWlyZSIgY29tbWFuZC4KKytweXRob24KKytmcm9tIG9zLnBhdGgg aW1wb3J0IGFic3BhdGgKKytnZGIuZGF0YWRpciA9IGFic3BhdGggKCdAc3JjZGlyQC9weXRob24v bGliJykKKytnZGIucHl0aG9ubGliZGlyID0gZ2RiLmRhdGFkaXIKKytnZGIuX19wYXRoX18gPSBb Z2RiLmRhdGFkaXIgKyAnL2dkYiddCisrc3lzLnBhdGguaW5zZXJ0KDAsIGdkYi5kYXRhZGlyKQor K2VuZAorK3NvdXJjZSBAc3JjZGlyQC9weXRob24vbGliL2dkYi9fX2luaXRfXy5weQorKworIHNl dCBjb21wbGFpbnRzIDEKKyAKKyBiIGludGVybmFsX2Vycm9yCitkaWZmIC0tZ2l0IGEvZ2RiL2dk Yl9iZmQuYyBiL2dkYi9nZGJfYmZkLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwLi5iNDM1NTNmCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvZ2RiX2JmZC5jCitAQCAtMCww ICsxLDQ4MSBAQAorKy8qIERlZmluaXRpb25zIGZvciBCRkQgd3JhcHBlcnMgdXNlZCBieSBHREIu CisrCisrICAgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyCisrICAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysK KysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSAiZGVmcy5o IgorKyNpbmNsdWRlICJnZGJfYmZkLmgiCisrI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKysjaW5j bHVkZSAiZ2RiX3N0cmluZy5oIgorKyNpbmNsdWRlICJoYXNodGFiLmgiCisrI2lmZGVmIEhBVkVf WkxJQl9ICisrI2luY2x1ZGUgPHpsaWIuaD4KKysjZW5kaWYKKysjaWZkZWYgSEFWRV9NTUFQCisr I2luY2x1ZGUgPHN5cy9tbWFuLmg+CisrI2lmbmRlZiBNQVBfRkFJTEVECisrI2RlZmluZSBNQVBf RkFJTEVEICgodm9pZCAqKSAtMSkKKysjZW5kaWYKKysjZW5kaWYKKysKKysvKiBBbiBvYmplY3Qg b2YgdGhpcyB0eXBlIGlzIHN0b3JlZCBpbiB0aGUgc2VjdGlvbidzIHVzZXIgZGF0YSB3aGVuCisr ICAgbWFwcGluZyBhIHNlY3Rpb24uICAqLworKworK3N0cnVjdCBnZGJfYmZkX3NlY3Rpb25fZGF0 YQorK3sKKysgIC8qIFNpemUgb2YgdGhlIGRhdGEuICAqLworKyAgYmZkX3NpemVfdHlwZSBzaXpl OworKyAgLyogSWYgdGhlIGRhdGEgd2FzIG1tYXBwZWQsIHRoaXMgaXMgdGhlIGxlbmd0aCBvZiB0 aGUgbWFwLiAgKi8KKysgIGJmZF9zaXplX3R5cGUgbWFwX2xlbjsKKysgIC8qIFRoZSBkYXRhLiAg SWYgTlVMTCwgdGhlIHNlY3Rpb24gZGF0YSBoYXMgbm90IGJlZW4gcmVhZC4gICovCisrICB2b2lk ICpkYXRhOworKyAgLyogSWYgdGhlIGRhdGEgd2FzIG1tYXBwZWQsIHRoaXMgaXMgdGhlIG1hcCBh ZGRyZXNzLiAgKi8KKysgIHZvaWQgKm1hcF9hZGRyOworK307CisrCisrLyogU2VlIGdkYl9iZmQu aC4gICovCisrCisrdm9pZAorK2dkYl9iZmRfc3Rhc2hfZmlsZW5hbWUgKHN0cnVjdCBiZmQgKmFi ZmQpCisreworKyAgY2hhciAqbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpOworKyAgY2hh ciAqZGF0YTsKKysKKysgIGRhdGEgPSBiZmRfYWxsb2MgKGFiZmQsIHN0cmxlbiAobmFtZSkgKyAx KTsKKysgIHN0cmNweSAoZGF0YSwgbmFtZSk7CisrCisrICAvKiBVbndhcnJhbnRlZCBjaHVtbWlu ZXNzIHdpdGggQkZELiAgKi8KKysgIGFiZmQtPmZpbGVuYW1lID0gZGF0YTsKKyt9CisrCisrLyog QW4gb2JqZWN0IG9mIHRoaXMgdHlwZSBpcyBzdG9yZWQgaW4gZWFjaCBCRkQncyB1c2VyIGRhdGEu ICAqLworKworK3N0cnVjdCBnZGJfYmZkX2RhdGEKKyt7CisrICAvKiBUaGUgcmVmZXJlbmNlIGNv dW50LiAgKi8KKysgIGludCByZWZjOworKworKyAgLyogVGhlIG10aW1lIG9mIHRoZSBCRkQgYXQg dGhlIHBvaW50IHRoZSBjYWNoZSBlbnRyeSB3YXMgbWFkZS4gICovCisrICB0aW1lX3QgbXRpbWU7 CisrfTsKKysKKysvKiBBIGhhc2ggdGFibGUgc3RvcmluZyBhbGwgdGhlIEJGRHMgbWFpbnRhaW5l ZCBpbiB0aGUgY2FjaGUuICAqLworKworK3N0YXRpYyBodGFiX3QgZ2RiX2JmZF9jYWNoZTsKKysK KysvKiBUaGUgdHlwZSBvZiBhbiBvYmplY3QgYmVpbmcgbG9va2VkIHVwIGluIGdkYl9iZmRfY2Fj aGUuICBXZSB1c2UKKysgICBodGFiJ3MgY2FwYWJpbGl0eSBvZiBzdG9yaW5nIG9uZSBraW5kIG9m IG9iamVjdCAoQkZEIGluIHRoaXMgY2FzZSkKKysgICBhbmQgdXNpbmcgYSBkaWZmZXJlbnQgc29y dCBvZiBvYmplY3QgZm9yIHNlYXJjaGluZy4gICovCisrCisrc3RydWN0IGdkYl9iZmRfY2FjaGVf c2VhcmNoCisreworKyAgLyogVGhlIGZpbGVuYW1lLiAgKi8KKysgIGNvbnN0IGNoYXIgKmZpbGVu YW1lOworKyAgLyogVGhlIG10aW1lLiAgKi8KKysgIHRpbWVfdCBtdGltZTsKKyt9OworKworKy8q IEEgaGFzaCBmdW5jdGlvbiBmb3IgQkZEcy4gICovCisrCisrc3RhdGljIGhhc2h2YWxfdAorK2hh c2hfYmZkIChjb25zdCB2b2lkICpiKQorK3sKKysgIGNvbnN0IGJmZCAqYWJmZCA9IGI7CisrCisr ICAvKiBJdCBpcyBzaW1wbGVzdCB0byBqdXN0IGhhc2ggdGhlIGZpbGVuYW1lLiAgKi8KKysgIHJl dHVybiBodGFiX2hhc2hfc3RyaW5nIChiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7CisrfQorKwor Ky8qIEFuIGVxdWFsaXR5IGZ1bmN0aW9uIGZvciBCRkRzLiAgTm90ZSB0aGF0IHRoaXMgZXhwZWN0 cyB0aGUgY2FsbGVyCisrICAgdG8gc2VhcmNoIHVzaW5nIHN0cnVjdCBnZGJfYmZkX2NhY2hlX3Nl YXJjaCBvbmx5LCBub3QgQkZEcy4gICovCisrCisrc3RhdGljIGludAorK2VxX2JmZCAoY29uc3Qg dm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKKyt7CisrICBjb25zdCBiZmQgKmFiZmQgPSBhOworKyAg Y29uc3Qgc3RydWN0IGdkYl9iZmRfY2FjaGVfc2VhcmNoICpzID0gYjsKKysgIHN0cnVjdCBnZGJf YmZkX2RhdGEgKmdkYXRhID0gYmZkX3VzcmRhdGEgKGFiZmQpOworKworKyAgcmV0dXJuIChnZGF0 YS0+bXRpbWUgPT0gcy0+bXRpbWUKKysJICAmJiBzdHJjbXAgKGJmZF9nZXRfZmlsZW5hbWUgKGFi ZmQpLCBzLT5maWxlbmFtZSkgPT0gMCk7CisrfQorKworK3N0cnVjdCBiZmQgKgorK2dkYl9iZmRf b3BlbiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdGFyZ2V0LCBpbnQgZmQpCisrewor KyAgaGFzaHZhbF90IGhhc2g7CisrICB2b2lkICoqc2xvdDsKKysgIGJmZCAqYWJmZDsKKysgIHN0 cnVjdCBnZGJfYmZkX2NhY2hlX3NlYXJjaCBzZWFyY2g7CisrICBzdHJ1Y3Qgc3RhdCBzdDsKKysK KysgIGlmIChnZGJfYmZkX2NhY2hlID09IE5VTEwpCisrICAgIGdkYl9iZmRfY2FjaGUgPSBodGFi X2NyZWF0ZV9hbGxvYyAoMSwgaGFzaF9iZmQsIGVxX2JmZCwgTlVMTCwKKysJCQkJICAgICAgIHhj YWxsb2MsIHhmcmVlKTsKKysKKysgIGlmIChmZCA9PSAtMSkKKysgICAgeworKyAgICAgIGZkID0g b3BlbiAobmFtZSwgT19SRE9OTFkgfCBPX0JJTkFSWSk7CisrICAgICAgaWYgKGZkID09IC0xKQor Kwl7CisrCSAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX3N5c3RlbV9jYWxsKTsKKysJICByZXR1 cm4gTlVMTDsKKysJfQorKyAgICB9CisrCisrICBzZWFyY2guZmlsZW5hbWUgPSBuYW1lOworKyAg aWYgKGZzdGF0IChmZCwgJnN0KSA8IDApCisrICAgIHsKKysgICAgICAvKiBXZWlyZCBzaXR1YXRp b24gaGVyZS4gICovCisrICAgICAgc2VhcmNoLm10aW1lID0gMDsKKysgICAgfQorKyAgZWxzZQor KyAgICBzZWFyY2gubXRpbWUgPSBzdC5zdF9tdGltZTsKKysKKysgIC8qIE5vdGUgdGhhdCB0aGlz IG11c3QgY29tcHV0ZSB0aGUgc2FtZSByZXN1bHQgYXMgaGFzaF9iZmQuICAqLworKyAgaGFzaCA9 IGh0YWJfaGFzaF9zdHJpbmcgKG5hbWUpOworKyAgLyogTm90ZSB0aGF0IHdlIGNhbm5vdCB1c2Ug aHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoIGhlcmUsIGJlY2F1c2UKKysgICAgIG9wZW5pbmcgdGhl IEJGRCBtYXkgZmFpbDsgYW5kIHRoaXMgd291bGQgdmlvbGF0ZSBoYXNodGFiCisrICAgICBpbnZh cmlhbnRzLiAgKi8KKysgIGFiZmQgPSBodGFiX2ZpbmRfd2l0aF9oYXNoIChnZGJfYmZkX2NhY2hl LCAmc2VhcmNoLCBoYXNoKTsKKysgIGlmIChhYmZkICE9IE5VTEwpCisrICAgIHsKKysgICAgICBj bG9zZSAoZmQpOworKyAgICAgIHJldHVybiBnZGJfYmZkX3JlZiAoYWJmZCk7CisrICAgIH0KKysK KysgIGFiZmQgPSBiZmRfZm9wZW4gKG5hbWUsIHRhcmdldCwgRk9QRU5fUkIsIGZkKTsKKysgIGlm IChhYmZkID09IE5VTEwpCisrICAgIHJldHVybiBOVUxMOworKworKyAgc2xvdCA9IGh0YWJfZmlu ZF9zbG90X3dpdGhfaGFzaCAoZ2RiX2JmZF9jYWNoZSwgJnNlYXJjaCwgaGFzaCwgSU5TRVJUKTsK KysgIGdkYl9hc3NlcnQgKCEqc2xvdCk7CisrICAqc2xvdCA9IGFiZmQ7CisrCisrICBnZGJfYmZk X3N0YXNoX2ZpbGVuYW1lIChhYmZkKTsKKysgIHJldHVybiBnZGJfYmZkX3JlZiAoYWJmZCk7Cisr fQorKworKy8qIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmVsZWFzZXMgYW55IHNlY3Rpb24gZGF0 YSBhdHRhY2hlZCB0byB0aGUKKysgICBCRkQuICAqLworKworK3N0YXRpYyB2b2lkCisrZnJlZV9v bmVfYmZkX3NlY3Rpb24gKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3RwLCB2b2lkICppZ25vcmUp CisreworKyAgc3RydWN0IGdkYl9iZmRfc2VjdGlvbl9kYXRhICpzZWN0ID0gYmZkX2dldF9zZWN0 aW9uX3VzZXJkYXRhIChhYmZkLCBzZWN0cCk7CisrCisrICBpZiAoc2VjdCAhPSBOVUxMICYmIHNl Y3QtPmRhdGEgIT0gTlVMTCkKKysgICAgeworKyNpZmRlZiBIQVZFX01NQVAKKysgICAgICBpZiAo c2VjdC0+bWFwX2FkZHIgIT0gTlVMTCkKKysJeworKwkgIGludCByZXM7CisrCisrCSAgcmVzID0g bXVubWFwIChzZWN0LT5tYXBfYWRkciwgc2VjdC0+bWFwX2xlbik7CisrCSAgZ2RiX2Fzc2VydCAo cmVzID09IDApOworKwl9CisrICAgICAgZWxzZQorKyNlbmRpZgorKwl4ZnJlZSAoc2VjdC0+ZGF0 YSk7CisrICAgIH0KKyt9CisrCisrLyogQ2xvc2UgQUJGRCwgYW5kIHdhcm4gaWYgdGhhdCBmYWls cy4gICovCisrCisrc3RhdGljIGludAorK2dkYl9iZmRfY2xvc2Vfb3Jfd2FybiAoc3RydWN0IGJm ZCAqYWJmZCkKKyt7CisrICBpbnQgcmV0OworKyAgY2hhciAqbmFtZSA9IGJmZF9nZXRfZmlsZW5h bWUgKGFiZmQpOworKworKyAgYmZkX21hcF9vdmVyX3NlY3Rpb25zIChhYmZkLCBmcmVlX29uZV9i ZmRfc2VjdGlvbiwgTlVMTCk7CisrCisrICByZXQgPSBiZmRfY2xvc2UgKGFiZmQpOworKworKyAg aWYgKCFyZXQpCisrICAgIHdhcm5pbmcgKF8oImNhbm5vdCBjbG9zZSBcIiVzXCI6ICVzIiksCisr CSAgICAgbmFtZSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworKworKyAgcmV0dXJu IHJldDsKKyt9CisrCisrLyogQWRkIHJlZmVyZW5jZSB0byBBQkZELiAgUmV0dXJucyBBQkZELiAg Ki8KKysKKytzdHJ1Y3QgYmZkICoKKytnZGJfYmZkX3JlZiAoc3RydWN0IGJmZCAqYWJmZCkKKyt7 CisrICBzdHJ1Y3QgZ2RiX2JmZF9kYXRhICpnZGF0YTsKKysKKysgIGlmIChhYmZkID09IE5VTEwp CisrICAgIHJldHVybiBOVUxMOworKworKyAgZ2RhdGEgPSBiZmRfdXNyZGF0YSAoYWJmZCk7Cisr CisrICBpZiAoZ2RhdGEgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGdkYXRhLT5yZWZjICs9IDE7 CisrICAgICAgcmV0dXJuIGFiZmQ7CisrICAgIH0KKysKKysgIGdkYXRhID0gYmZkX3phbGxvYyAo YWJmZCwgc2l6ZW9mIChzdHJ1Y3QgZ2RiX2JmZF9kYXRhKSk7CisrICBnZGF0YS0+cmVmYyA9IDE7 CisrICBnZGF0YS0+bXRpbWUgPSBiZmRfZ2V0X210aW1lIChhYmZkKTsKKysgIGJmZF91c3JkYXRh IChhYmZkKSA9IGdkYXRhOworKworKyAgcmV0dXJuIGFiZmQ7CisrfQorKworKy8qIFVucmVmZXJl bmNlIGFuZCBwb3NzaWJseSBjbG9zZSBBQkZELiAgKi8KKysKKyt2b2lkCisrZ2RiX2JmZF91bnJl ZiAoc3RydWN0IGJmZCAqYWJmZCkKKyt7CisrICBzdHJ1Y3QgZ2RiX2JmZF9kYXRhICpnZGF0YTsK KysgIHN0cnVjdCBnZGJfYmZkX2NhY2hlX3NlYXJjaCBzZWFyY2g7CisrCisrICBpZiAoYWJmZCA9 PSBOVUxMKQorKyAgICByZXR1cm47CisrCisrICBnZGF0YSA9IGJmZF91c3JkYXRhIChhYmZkKTsK KysgIGdkYl9hc3NlcnQgKGdkYXRhLT5yZWZjID49IDEpOworKworKyAgZ2RhdGEtPnJlZmMgLT0g MTsKKysgIGlmIChnZGF0YS0+cmVmYyA+IDApCisrICAgIHJldHVybjsKKysKKysgIHNlYXJjaC5m aWxlbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpOworKworKyAgaWYgKGdkYl9iZmRfY2Fj aGUgJiYgc2VhcmNoLmZpbGVuYW1lKQorKyAgICB7CisrICAgICAgaGFzaHZhbF90IGhhc2ggPSBo dGFiX2hhc2hfc3RyaW5nIChzZWFyY2guZmlsZW5hbWUpOworKyAgICAgIHZvaWQgKipzbG90Owor KworKyAgICAgIHNlYXJjaC5tdGltZSA9IGdkYXRhLT5tdGltZTsKKysgICAgICBzbG90ID0gaHRh Yl9maW5kX3Nsb3Rfd2l0aF9oYXNoIChnZGJfYmZkX2NhY2hlLCAmc2VhcmNoLCBoYXNoLAorKwkJ CQkgICAgICAgTk9fSU5TRVJUKTsKKysKKysgICAgICBpZiAoc2xvdCAmJiAqc2xvdCkKKysJaHRh Yl9jbGVhcl9zbG90IChnZGJfYmZkX2NhY2hlLCBzbG90KTsKKysgICAgfQorKworKyAgYmZkX3Vz cmRhdGEgKGFiZmQpID0gTlVMTDsgIC8qIFBhcmFub2lhLiAgKi8KKysKKysgIGdkYl9iZmRfY2xv c2Vfb3Jfd2FybiAoYWJmZCk7CisrfQorKworKy8qIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0 dXJucyB0aGUgc2VjdGlvbiBkYXRhIGRlc2NyaXB0b3IKKysgICBhc3NvY2lhdGVkIHdpdGggU0VD VElPTi4gIElmIG5vIHN1Y2ggZGVzY3JpcHRvciBleGlzdHMsIGEgbmV3IG9uZQorKyAgIGlzIGFs bG9jYXRlZCBhbmQgY2xlYXJlZC4gICovCisrCisrc3RhdGljIHN0cnVjdCBnZGJfYmZkX3NlY3Rp b25fZGF0YSAqCisrZ2V0X3NlY3Rpb25fZGVzY3JpcHRvciAoYXNlY3Rpb24gKnNlY3Rpb24pCisr eworKyAgc3RydWN0IGdkYl9iZmRfc2VjdGlvbl9kYXRhICpyZXN1bHQ7CisrCisrICByZXN1bHQg PSBiZmRfZ2V0X3NlY3Rpb25fdXNlcmRhdGEgKHNlY3Rpb24tPm93bmVyLCBzZWN0aW9uKTsKKysK KysgIGlmIChyZXN1bHQgPT0gTlVMTCkKKysgICAgeworKyAgICAgIHJlc3VsdCA9IGJmZF96YWxs b2MgKHNlY3Rpb24tPm93bmVyLCBzaXplb2YgKCpyZXN1bHQpKTsKKysgICAgICBiZmRfc2V0X3Nl Y3Rpb25fdXNlcmRhdGEgKHNlY3Rpb24tPm93bmVyLCBzZWN0aW9uLCByZXN1bHQpOworKyAgICB9 CisrCisrICByZXR1cm4gcmVzdWx0OworK30KKysKKysvKiBEZWNvbXByZXNzIGEgc2VjdGlvbiB0 aGF0IHdhcyBjb21wcmVzc2VkIHVzaW5nIHpsaWIuICBTdG9yZSB0aGUKKysgICBkZWNvbXByZXNz ZWQgYnVmZmVyLCBhbmQgaXRzIHNpemUsIGluIERFU0NSSVBUT1IuICAqLworKworK3N0YXRpYyB2 b2lkCisremxpYl9kZWNvbXByZXNzX3NlY3Rpb24gKGFzZWN0aW9uICpzZWN0cCwKKysJCQkgc3Ry dWN0IGdkYl9iZmRfc2VjdGlvbl9kYXRhICpkZXNjcmlwdG9yKQorK3sKKysgIGJmZCAqYWJmZCA9 IHNlY3RwLT5vd25lcjsKKysjaWZuZGVmIEhBVkVfWkxJQl9ICisrICBlcnJvciAoXygiU3VwcG9y dCBmb3IgemxpYi1jb21wcmVzc2VkIGRhdGEgKGZyb20gJyVzJywgc2VjdGlvbiAnJXMnKSAiCisr ICAgICAgICAgICAiaXMgZGlzYWJsZWQgaW4gdGhpcyBjb3B5IG9mIEdEQiIpLAorKyAgICAgICAg IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLAorKwkgYmZkX2dldF9zZWN0aW9uX25hbWUgKHNlY3Rw KSk7CisrI2Vsc2UKKysgIGJmZF9zaXplX3R5cGUgY29tcHJlc3NlZF9zaXplID0gYmZkX2dldF9z ZWN0aW9uX3NpemUgKHNlY3RwKTsKKysgIGdkYl9ieXRlICpjb21wcmVzc2VkX2J1ZmZlciA9IHht YWxsb2MgKGNvbXByZXNzZWRfc2l6ZSk7CisrICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cCA9IG1h a2VfY2xlYW51cCAoeGZyZWUsIGNvbXByZXNzZWRfYnVmZmVyKTsKKysgIHN0cnVjdCBjbGVhbnVw ICppbm5lcl9jbGVhbnVwOworKyAgYmZkX3NpemVfdHlwZSB1bmNvbXByZXNzZWRfc2l6ZTsKKysg IGdkYl9ieXRlICp1bmNvbXByZXNzZWRfYnVmZmVyOworKyAgel9zdHJlYW0gc3RybTsKKysgIGlu dCByYzsKKysgIGludCBoZWFkZXJfc2l6ZSA9IDEyOworKyAgc3RydWN0IGR3YXJmMl9wZXJfYmZk X3NlY3Rpb24gKnNlY3Rpb25fZGF0YTsKKysKKysgIGlmIChiZmRfc2VlayAoYWJmZCwgc2VjdHAt PmZpbGVwb3MsIFNFRUtfU0VUKSAhPSAwCisrICAgICAgfHwgYmZkX2JyZWFkIChjb21wcmVzc2Vk X2J1ZmZlciwKKysJCSAgICBjb21wcmVzc2VkX3NpemUsIGFiZmQpICE9IGNvbXByZXNzZWRfc2l6 ZSkKKysgICAgZXJyb3IgKF8oImNhbid0IHJlYWQgZGF0YSBmcm9tICclcycsIHNlY3Rpb24gJyVz JyIpLAorKyAgICAgICAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksCisrCSAgIGJmZF9nZXRf c2VjdGlvbl9uYW1lIChhYmZkLCBzZWN0cCkpOworKworKyAgLyogUmVhZCB0aGUgemxpYiBoZWFk ZXIuICBJbiB0aGlzIGNhc2UsIGl0IHNob3VsZCBiZSAiWkxJQiIgZm9sbG93ZWQKKysgICAgIGJ5 IHRoZSB1bmNvbXByZXNzZWQgc2VjdGlvbiBzaXplLCA4IGJ5dGVzIGluIGJpZy1lbmRpYW4gb3Jk ZXIuICAqLworKyAgaWYgKGNvbXByZXNzZWRfc2l6ZSA8IGhlYWRlcl9zaXplCisrICAgICAgfHwg c3RybmNtcCAoY29tcHJlc3NlZF9idWZmZXIsICJaTElCIiwgNCkgIT0gMCkKKysgICAgZXJyb3Ig KF8oImNvcnJ1cHQgWkxJQiBoZWFkZXIgZnJvbSAnJXMnLCBzZWN0aW9uICclcyciKSwKKysgICAg ICAgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLAorKwkgICBiZmRfZ2V0X3NlY3Rpb25fbmFt ZSAoYWJmZCwgc2VjdHApKTsKKysgIHVuY29tcHJlc3NlZF9zaXplID0gY29tcHJlc3NlZF9idWZm ZXJbNF07IHVuY29tcHJlc3NlZF9zaXplIDw8PSA4OworKyAgdW5jb21wcmVzc2VkX3NpemUgKz0g Y29tcHJlc3NlZF9idWZmZXJbNV07IHVuY29tcHJlc3NlZF9zaXplIDw8PSA4OworKyAgdW5jb21w cmVzc2VkX3NpemUgKz0gY29tcHJlc3NlZF9idWZmZXJbNl07IHVuY29tcHJlc3NlZF9zaXplIDw8 PSA4OworKyAgdW5jb21wcmVzc2VkX3NpemUgKz0gY29tcHJlc3NlZF9idWZmZXJbN107IHVuY29t cHJlc3NlZF9zaXplIDw8PSA4OworKyAgdW5jb21wcmVzc2VkX3NpemUgKz0gY29tcHJlc3NlZF9i dWZmZXJbOF07IHVuY29tcHJlc3NlZF9zaXplIDw8PSA4OworKyAgdW5jb21wcmVzc2VkX3NpemUg Kz0gY29tcHJlc3NlZF9idWZmZXJbOV07IHVuY29tcHJlc3NlZF9zaXplIDw8PSA4OworKyAgdW5j b21wcmVzc2VkX3NpemUgKz0gY29tcHJlc3NlZF9idWZmZXJbMTBdOyB1bmNvbXByZXNzZWRfc2l6 ZSA8PD0gODsKKysgIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzExXTsK KysKKysgIC8qIEl0IGlzIHBvc3NpYmxlIHRoZSBzZWN0aW9uIGNvbnNpc3RzIG9mIHNldmVyYWwg Y29tcHJlc3NlZAorKyAgICAgYnVmZmVycyBjb25jYXRlbmF0ZWQgdG9nZXRoZXIsIHNvIHdlIHVu Y29tcHJlc3MgaW4gYSBsb29wLiAgKi8KKysgIHN0cm0uemFsbG9jID0gTlVMTDsKKysgIHN0cm0u emZyZWUgPSBOVUxMOworKyAgc3RybS5vcGFxdWUgPSBOVUxMOworKyAgc3RybS5hdmFpbF9pbiA9 IGNvbXByZXNzZWRfc2l6ZSAtIGhlYWRlcl9zaXplOworKyAgc3RybS5uZXh0X2luID0gKEJ5dGVm KikgY29tcHJlc3NlZF9idWZmZXIgKyBoZWFkZXJfc2l6ZTsKKysgIHN0cm0uYXZhaWxfb3V0ID0g dW5jb21wcmVzc2VkX3NpemU7CisrICB1bmNvbXByZXNzZWRfYnVmZmVyID0geG1hbGxvYyAodW5j b21wcmVzc2VkX3NpemUpOworKyAgaW5uZXJfY2xlYW51cCA9IG1ha2VfY2xlYW51cCAoeGZyZWUs IHVuY29tcHJlc3NlZF9idWZmZXIpOworKyAgcmMgPSBpbmZsYXRlSW5pdCAoJnN0cm0pOworKyAg d2hpbGUgKHN0cm0uYXZhaWxfaW4gPiAwKQorKyAgICB7CisrICAgICAgaWYgKHJjICE9IFpfT0sp CisrICAgICAgICBlcnJvciAoXygic2V0dGluZyB1cCB1bmNvbXByZXNzaW9uIGluICclcycsIHNl Y3Rpb24gJyVzJzogJWQiKSwKKysgICAgICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZk KSwKKysJICAgICAgIGJmZF9nZXRfc2VjdGlvbl9uYW1lIChhYmZkLCBzZWN0cCksCisrCSAgICAg ICByYyk7CisrICAgICAgc3RybS5uZXh0X291dCA9ICgoQnl0ZWYqKSB1bmNvbXByZXNzZWRfYnVm ZmVyCisrICAgICAgICAgICAgICAgICAgICAgICArICh1bmNvbXByZXNzZWRfc2l6ZSAtIHN0cm0u YXZhaWxfb3V0KSk7CisrICAgICAgcmMgPSBpbmZsYXRlICgmc3RybSwgWl9GSU5JU0gpOworKyAg ICAgIGlmIChyYyAhPSBaX1NUUkVBTV9FTkQpCisrICAgICAgICBlcnJvciAoXygiemxpYiBlcnJv ciB1bmNvbXByZXNzaW5nIGZyb20gJyVzJywgc2VjdGlvbiAnJXMnOiAlZCIpLAorKyAgICAgICAg ICAgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLAorKwkgICAgICAgYmZkX2dldF9zZWN0aW9u X25hbWUgKGFiZmQsIHNlY3RwKSwKKysJICAgICAgIHJjKTsKKysgICAgICByYyA9IGluZmxhdGVS ZXNldCAoJnN0cm0pOworKyAgICB9CisrICByYyA9IGluZmxhdGVFbmQgKCZzdHJtKTsKKysgIGlm IChyYyAhPSBaX09LCisrICAgICAgfHwgc3RybS5hdmFpbF9vdXQgIT0gMCkKKysgICAgZXJyb3Ig KF8oImNvbmNsdWRpbmcgdW5jb21wcmVzc2lvbiBpbiAnJXMnLCBzZWN0aW9uICclcyc6ICVkIiks CisrICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwKKysJICAgYmZkX2dldF9zZWN0 aW9uX25hbWUgKGFiZmQsIHNlY3RwKSwKKysJICAgcmMpOworKworKyAgZGlzY2FyZF9jbGVhbnVw cyAoaW5uZXJfY2xlYW51cCk7CisrICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisrCisrICAvKiBB dHRhY2ggdGhlIGRhdGEgdG8gdGhlIEJGRCBzZWN0aW9uLiAgKi8KKysgIGRlc2NyaXB0b3ItPmRh dGEgPSB1bmNvbXByZXNzZWRfYnVmZmVyOworKyAgZGVzY3JpcHRvci0+c2l6ZSA9IHVuY29tcHJl c3NlZF9zaXplOworKyNlbmRpZgorK30KKysKKysvKiBTZWUgZ2RiX2JmZC5oLiAgKi8KKysKKytj b25zdCBnZGJfYnl0ZSAqCisrZ2RiX2JmZF9tYXBfc2VjdGlvbiAoYXNlY3Rpb24gKnNlY3RwLCBi ZmRfc2l6ZV90eXBlICpzaXplKQorK3sKKysgIGJmZCAqYWJmZDsKKysgIGdkYl9ieXRlICpidWYs ICpyZXRidWY7CisrICB1bnNpZ25lZCBjaGFyIGhlYWRlcls0XTsKKysgIHN0cnVjdCBnZGJfYmZk X3NlY3Rpb25fZGF0YSAqZGVzY3JpcHRvcjsKKysKKysgIGdkYl9hc3NlcnQgKChzZWN0cC0+Zmxh Z3MgJiBTRUNfUkVMT0MpID09IDApOworKyAgZ2RiX2Fzc2VydCAoc2l6ZSAhPSBOVUxMKTsKKysK KysgIGFiZmQgPSBzZWN0cC0+b3duZXI7CisrCisrICBkZXNjcmlwdG9yID0gZ2V0X3NlY3Rpb25f ZGVzY3JpcHRvciAoc2VjdHApOworKworKyAgLyogSWYgdGhlIGRhdGEgd2FzIGFscmVhZHkgcmVh ZCBmb3IgdGhpcyBCRkQsIGp1c3QgcmV1c2UgaXQuICAqLworKyAgaWYgKGRlc2NyaXB0b3ItPmRh dGEgIT0gTlVMTCkKKysgICAgZ290byBkb25lOworKworKyAgLyogQ2hlY2sgaWYgdGhlIGZpbGUg aGFzIGEgNC1ieXRlIGhlYWRlciBpbmRpY2F0aW5nIGNvbXByZXNzaW9uLiAgKi8KKysgIGlmIChi ZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdHApID4gc2l6ZW9mIChoZWFkZXIpCisrICAgICAgJiYg YmZkX3NlZWsgKGFiZmQsIHNlY3RwLT5maWxlcG9zLCBTRUVLX1NFVCkgPT0gMAorKyAgICAgICYm IGJmZF9icmVhZCAoaGVhZGVyLCBzaXplb2YgKGhlYWRlciksIGFiZmQpID09IHNpemVvZiAoaGVh ZGVyKSkKKysgICAgeworKyAgICAgIC8qIFVwb24gZGVjb21wcmVzc2lvbiwgdXBkYXRlIHRoZSBi dWZmZXIgYW5kIGl0cyBzaXplLiAgKi8KKysgICAgICBpZiAoc3RybmNtcCAoaGVhZGVyLCAiWkxJ QiIsIHNpemVvZiAoaGVhZGVyKSkgPT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgemxpYl9k ZWNvbXByZXNzX3NlY3Rpb24gKHNlY3RwLCBkZXNjcmlwdG9yKTsKKysJICBnb3RvIGRvbmU7Cisr ICAgICAgICB9CisrICAgIH0KICsKLSsgIGlmIChnZGJhcmNoX2NvbnZlcnRfcmVnaXN0ZXJfcCAo Z2RiYXJjaCwgcmVnbnVtLCB0eXBlKSkKLSAgICAgewotICAgICAgIGludCBvcHRpbSwgdW5hdmFp bCwgb2s7Ci0gCi1AQCAtNzA5LDcgKzcwMiw3IEBAIHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVj dCB0eXBlICp0eXBlLCBpbnQgcmVnbnVtLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gICAg ICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX3JlZ2lzdGVyOwotICAgICAgIFZBTFVFX0ZSQU1FX0lE ICh2KSA9IGdldF9mcmFtZV9pZCAoZnJhbWUpOwotICAgICAgIFZBTFVFX1JFR05VTSAodikgPSBy ZWdudW07Ci0tICAgICAgb2sgPSBnZGJhcmNoX3JlZ2lzdGVyX3RvX3ZhbHVlIChnZGJhcmNoLCBm cmFtZSwgcmVnbnVtLCB0eXBlMSwKLSsgICAgICBvayA9IGdkYmFyY2hfcmVnaXN0ZXJfdG9fdmFs dWUgKGdkYmFyY2gsIGZyYW1lLCByZWdudW0sIHR5cGUsCi0gCQkJCSAgICAgIHZhbHVlX2NvbnRl bnRzX3JhdyAodiksICZvcHRpbSwKLSAJCQkJICAgICAgJnVuYXZhaWwpOwotIAotZGlmZiAtLWdp dCBhL2dkYi9nZGItZ2RiLmdkYi5pbiBiL2dkYi9nZGItZ2RiLmdkYi5pbgotaW5kZXggZmZiN2Y1 My4uYTJlN2U5NCAxMDA2NDQKLS0tLSBhL2dkYi9nZGItZ2RiLmdkYi5pbgotKysrIGIvZ2RiL2dk Yi1nZGIuZ2RiLmluCi1AQCAtMSw1ICsxLDE1IEBACi0gZWNobyBTZXR0aW5nIHVwIHRoZSBlbnZp cm9ubWVudCBmb3IgZGVidWdnaW5nIGdkYi5cbgotIAotKyMgU2V0IHVwIHRoZSBQeXRob24gbGli cmFyeSBhbmQgInJlcXVpcmUiIGNvbW1hbmQuCi0rcHl0aG9uCi0rZnJvbSBvcy5wYXRoIGltcG9y dCBhYnNwYXRoCi0rZ2RiLmRhdGFkaXIgPSBhYnNwYXRoICgnQHNyY2RpckAvcHl0aG9uL2xpYicp Ci0rZ2RiLnB5dGhvbmxpYmRpciA9IGdkYi5kYXRhZGlyCi0rZ2RiLl9fcGF0aF9fID0gW2dkYi5k YXRhZGlyICsgJy9nZGInXQotK3N5cy5wYXRoLmluc2VydCgwLCBnZGIuZGF0YWRpcikKLStlbmQK LStzb3VyY2UgQHNyY2RpckAvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKKysjaWZkZWYgSEFW RV9NTUFQCisrICB7CisrICAgIC8qIFRoZSBwYWdlIHNpemUsIHVzZWQgd2hlbiBtbWFwcGluZy4g ICovCisrICAgIHN0YXRpYyBpbnQgcGFnZXNpemU7CiArCi0gc2V0IGNvbXBsYWludHMgMQotIAot IGIgaW50ZXJuYWxfZXJyb3IKKysgICAgaWYgKHBhZ2VzaXplID09IDApCisrICAgICAgcGFnZXNp emUgPSBnZXRwYWdlc2l6ZSAoKTsKKysKKysgICAgLyogT25seSB0cnkgdG8gbW1hcCBzZWN0aW9u cyB3aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50CisrICAgICAgIHRvIHdhc3Rl IHNwYWNlIGR1ZSB0byBmcmFnbWVudGF0aW9uLiAgKi8KKysKKysgICAgaWYgKGJmZF9nZXRfc2Vj dGlvbl9zaXplIChzZWN0cCkgPiA0ICogcGFnZXNpemUpCisrICAgICAgeworKwlkZXNjcmlwdG9y LT5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKKysJZGVzY3JpcHRvci0+ZGF0 YSA9IGJmZF9tbWFwIChhYmZkLCAwLCBkZXNjcmlwdG9yLT5zaXplLCBQUk9UX1JFQUQsCisrCQkJ CSAgICAgTUFQX1BSSVZBVEUsIHNlY3RwLT5maWxlcG9zLAorKwkJCQkgICAgICZkZXNjcmlwdG9y LT5tYXBfYWRkciwKKysJCQkJICAgICAmZGVzY3JpcHRvci0+bWFwX2xlbik7CisrCisrCWlmICgo Y2FkZHJfdClkZXNjcmlwdG9yLT5kYXRhICE9IE1BUF9GQUlMRUQpCisrCSAgeworKyNpZiBIQVZF X1BPU0lYX01BRFZJU0UKKysJICAgIHBvc2l4X21hZHZpc2UgKGRlc2NyaXB0b3ItPm1hcF9hZGRy LCBkZXNjcmlwdG9yLT5tYXBfbGVuLAorKwkJCSAgIFBPU0lYX01BRFZfV0lMTE5FRUQpOworKyNl bmRpZgorKwkgICAgZ290byBkb25lOworKwkgIH0KKysKKysJLyogT24gZmFpbHVyZSwgY2xlYXIg b3V0IHRoZSBzZWN0aW9uIGRhdGEgYW5kIHRyeSBhZ2Fpbi4gICovCisrCW1lbXNldCAoZGVzY3Jp cHRvciwgMCwgc2l6ZW9mICgqZGVzY3JpcHRvcikpOworKyAgICAgIH0KKysgIH0KKysjZW5kaWYg LyogSEFWRV9NTUFQICovCisrCisrICAvKiBJZiB3ZSBnZXQgaGVyZSwgd2UgYXJlIGEgbm9ybWFs LCBub3QtY29tcHJlc3NlZCBzZWN0aW9uLiAgKi8KKysKKysgIGRlc2NyaXB0b3ItPnNpemUgPSBi ZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdHApOworKyAgZGVzY3JpcHRvci0+ZGF0YSA9IHhtYWxs b2MgKGRlc2NyaXB0b3ItPnNpemUpOworKworKyAgaWYgKGJmZF9zZWVrIChhYmZkLCBzZWN0cC0+ ZmlsZXBvcywgU0VFS19TRVQpICE9IDAKKysgICAgICB8fCBiZmRfYnJlYWQgKGRlc2NyaXB0b3It PmRhdGEsIGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCksCisrCQkgICAgYWJmZCkgIT0gYmZk X2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKSkKKysgICAgeworKyAgICAgIHhmcmVlIChkZXNjcmlw dG9yLT5kYXRhKTsKKysgICAgICBkZXNjcmlwdG9yLT5kYXRhID0gTlVMTDsKKysgICAgICBlcnJv ciAoXygiQ2FuJ3QgcmVhZCBkYXRhIGZvciBzZWN0aW9uICclcyciKSwKKysJICAgICBiZmRfZ2V0 X2ZpbGVuYW1lIChhYmZkKSk7CisrICAgIH0KKysKKysgZG9uZToKKysgIGdkYl9hc3NlcnQgKGRl c2NyaXB0b3ItPmRhdGEgIT0gTlVMTCk7CisrICAqc2l6ZSA9IGRlc2NyaXB0b3ItPnNpemU7Cisr ICByZXR1cm4gZGVzY3JpcHRvci0+ZGF0YTsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYl9iZmQu aCBiL2dkYi9nZGJfYmZkLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4x ZGQ4MmMzCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvZ2RiX2JmZC5oCitAQCAtMCwwICsxLDYx IEBACisrLyogRGVmaW5pdGlvbnMgZm9yIEJGRCB3cmFwcGVycyB1c2VkIGJ5IEdEQi4KKysKKysg ICBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisrCisrICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpZm5kZWYgR0RCX0JGRF9ICisrI2Rl ZmluZSBHREJfQkZEX0gKKysKKysvKiBNYWtlIGEgY29weSBBQkZEJ3MgZmlsZW5hbWUgdXNpbmcg YmZkX2FsbG9jLCBhbmQgcmVhc3NpZ24gaXQgdG8gdGhlCisrICAgQkZELiAgVGhpcyBlbnN1cmVz IHRoYXQgdGhlIEJGRCdzIGZpbGVuYW1lIGhhcyB0aGUgc2FtZSBsaWZldGltZSBhcworKyAgIHRo ZSBCRkQgaXRzZWxmLiAgKi8KKysKKyt2b2lkIGdkYl9iZmRfc3Rhc2hfZmlsZW5hbWUgKHN0cnVj dCBiZmQgKmFiZmQpOworKworKy8qIE9wZW4gYSByZWFkLW9ubHkgKEZPUEVOX1JCKSBCRkQgZ2l2 ZW4gYXJndW1lbnRzIGxpa2UgYmZkX2ZvcGVuLgorKyAgIFJldHVybnMgTlVMTCBvbiBlcnJvci4g IE9uIHN1Y2Nlc3MsIHJldHVybnMgYSBuZXcgcmVmZXJlbmNlIHRvIHRoZQorKyAgIEJGRCwgd2hp Y2ggbXVzdCBiZSBmcmVlZCB3aXRoIGdkYl9iZmRfdW5yZWYuICBCRkRzIHJldHVybmVkIGJ5IHRo aXMKKysgICBjYWxsIGFyZSBzaGFyZWQgYW1vbmcgYWxsIGNhbGxlcnMgb3BlbmluZyB0aGUgc2Ft ZSBmaWxlLiAgSWYgRkQgaXMKKysgICBub3QgLTEsIHRoZW4gYWZ0ZXIgdGhpcyBjYWxsIGl0IGlz IG93bmVkIGJ5IEJGRC4gICovCisrCisrc3RydWN0IGJmZCAqZ2RiX2JmZF9vcGVuIChjb25zdCBj aGFyICpuYW1lLCBjb25zdCBjaGFyICp0YXJnZXQsIGludCBmZCk7CisrCisrLyogQWNxdWlyZSBh IG5ldyByZWZlcmVuY2UgdG8gQUJGRC4gIFJldHVybnMgQUJGRCBmb3IgY29udmVuaWVuY2UuCisr ICAgSXQgaXMgZmluZSBmb3IgQUJGRCB0byBiZSBOVUxMOyBpbiB0aGlzIGNhc2UgdGhlIGZ1bmN0 aW9uIGRvZXMKKysgICBub3RoaW5nIGFuZCByZXR1cm5zIE5VTEwuICAqLworKworK3N0cnVjdCBi ZmQgKmdkYl9iZmRfcmVmIChzdHJ1Y3QgYmZkICphYmZkKTsKKysKKysvKiBSZWxlYXNlIGEgcmVm ZXJlbmNlIHRvIEFCRkQuICBJZiB0aGlzIGlzIHRoZSBsYXN0IHJlZmVyZW5jZSwgQUJGRAorKyAg IHdpbGwgYmUgZnJlZWQuICBJZiBBQkZEIGlzIE5VTEwsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3Ro aW5nLiAgKi8KKysKKyt2b2lkIGdkYl9iZmRfdW5yZWYgKHN0cnVjdCBiZmQgKmFiZmQpOworKwor Ky8qIFRyeSB0byByZWFkIG9yIG1hcCB0aGUgY29udGVudHMgb2YgdGhlIHNlY3Rpb24gU0VDVC4g IElmCisrICAgc3VjY2Vzc2Z1bCwgdGhlIHNlY3Rpb24gZGF0YSBpcyByZXR1cm5lZCBhbmQgKlNJ WkUgaXMgc2V0IHRvIHRoZQorKyAgIHNpemUgb2YgdGhlIHNlY3Rpb24gZGF0YTsgdGhpcyBtYXkg bm90IGJlIHRoZSBzYW1lIGFzIHRoZSBzaXplCisrICAgYWNjb3JkaW5nIHRvIGJmZF9nZXRfc2Vj dGlvbl9zaXplIGlmIHRoZSBzZWN0aW9uIHdhcyBjb21wcmVzc2VkLgorKyAgIFRoZSByZXR1cm5l ZCBzZWN0aW9uIGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBCRkQgYW5kIHdpbGwgYmUKKysg ICBkZXN0cm95ZWQgd2hlbiB0aGUgQkZEIGlzIGRlc3Ryb3llZC4gIFRoZXJlIGlzIG5vIG90aGVy IHdheSB0byBmcmVlCisrICAgaXQ7IGZvciB0ZW1wb3JhcnkgdXNlcyBvZiBzZWN0aW9uIGRhdGEs IHNlZQorKyAgIGJmZF9tYWxsb2NfYW5kX2dldF9zZWN0aW9uLiAgU0VDVCBtYXkgbm90IGhhdmUg cmVsb2NhdGlvbnMuICBUaGlzCisrICAgZnVuY3Rpb24gd2lsbCB0aHJvdyBvbiBlcnJvci4gICov CisrCisrY29uc3QgZ2RiX2J5dGUgKmdkYl9iZmRfbWFwX3NlY3Rpb24gKGFzZWN0aW9uICpzZWN0 aW9uLCBiZmRfc2l6ZV90eXBlICpzaXplKTsKKysKKysjZW5kaWYgLyogR0RCX0JGRF9IICovCiBk aWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYwotaW5kZXggZTNkYjFl ZC4uOWEzNDZlNiAxMDA2NDQKK2luZGV4IDBlZWM4NzQuLjcyMTc2MzkgMTAwNjQ0CiAtLS0gYS9n ZGIvZ2RidHlwZXMuYwogKysrIGIvZ2RiL2dkYnR5cGVzLmMKIEBAIC0zNyw2ICszNyw5IEBACkBA IC0zMzI4LDEwICs2MTkzLDEwIEBAIGluZGV4IGUzZGIxZWQuLjlhMzQ2ZTYgMTAwNjQ0CiAgCiAg ICBhZGRfc2V0c2hvd196aW50ZWdlcl9jbWQgKCJvdmVybG9hZCIsIG5vX2NsYXNzLCAmb3Zlcmxv YWRfZGVidWcsCiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmggYi9nZGIvZ2RidHlwZXMuaAot aW5kZXggODg3ZGZkYi4uNmU5NzJkMSAxMDA2NDQKK2luZGV4IGNmN2QzOTguLmEwZjViMTcgMTAw NjQ0CiAtLS0gYS9nZGIvZ2RidHlwZXMuaAogKysrIGIvZ2RiL2dkYnR5cGVzLmgKLUBAIC0yMTMs NiArMjEzLDExIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCitAQCAtMjE0LDYgKzIx NCwxMSBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQogIAogICNkZWZpbmUgVFlQRV9U QVJHRVRfU1RVQih0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX3RhcmdldF9zdHViKQogIApA QCAtMzM0Myw3ICs2MjA4LDcgQEAgaW5kZXggODg3ZGZkYi4uNmU5NzJkMSAxMDA2NDQKICAvKiBT dGF0aWMgdHlwZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGhhZCAK ICAgICBhIHN0YXRpYyBtb2RpZmllci4KICAgICBOb3RlOiBUaGlzIG1heSBiZSB1bm5lY2Vzc2Fy eSwgc2luY2Ugc3RhdGljIGRhdGEgbWVtYmVycwotQEAgLTI5Niw2ICszMDEsNTAgQEAgZW51bSB0 eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKK0BAIC0yOTcsNiArMzAyLDUwIEBAIGVudW0gdHlwZV9p bnN0YW5jZV9mbGFnX3ZhbHVlCiAgCiAgI2RlZmluZSBUWVBFX0ZMQUdfRU5VTSh0KSAoVFlQRV9N QUlOX1RZUEUgKHQpLT5mbGFnX2ZsYWdfZW51bSkKICAKQEAgLTMzOTQsNyArNjI1OSw3IEBAIGlu ZGV4IDg4N2RmZGIuLjZlOTcyZDEgMTAwNjQ0CiAgLyogQ29uc3RhbnQgdHlwZS4gIElmIHRoaXMg aXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGhhcyBhCiAgICAgY29uc3QgbW9kaWZpZXIu ICAqLwogIAotQEAgLTQwNiw2ICs0NTUsMTUgQEAgc3RydWN0IG1haW5fdHlwZQorQEAgLTQwNyw2 ICs0NTYsMTUgQEAgc3RydWN0IG1haW5fdHlwZQogICAgLyogVHJ1ZSBpZiB0aGlzIHR5cGUgd2Fz IGRlY2xhcmVkIHdpdGggImNsYXNzIiByYXRoZXIgdGhhbgogICAgICAgInN0cnVjdCIuICAqLwog ICAgdW5zaWduZWQgaW50IGZsYWdfZGVjbGFyZWRfY2xhc3MgOiAxOwpAQCAtMzQxMCw3ICs2Mjc1 LDcgQEAgaW5kZXggODg3ZGZkYi4uNmU5NzJkMSAxMDA2NDQKICAKICAgIC8qIFRydWUgaWYgdGhp cyBpcyBhbiBlbnVtIHR5cGUgd2l0aCBkaXNqb2ludCB2YWx1ZXMuICBUaGlzIGFmZmVjdHMKICAg ICAgIGhvdyB0aGUgZW51bSBpcyBwcmludGVkLiAgKi8KLUBAIC00ODYsNiArNTQ0LDIwIEBAIHN0 cnVjdCBtYWluX3R5cGUKK0BAIC00ODcsNiArNTQ1LDIwIEBAIHN0cnVjdCBtYWluX3R5cGUKICAK ICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZTsKICAKQEAgLTM0MzEsNyArNjI5Niw3IEBAIGlu ZGV4IDg4N2RmZGIuLjZlOTcyZDEgMTAwNjQ0CiAgICAvKiBGb3Igc3RydWN0dXJlIGFuZCB1bmlv biB0eXBlcywgYSBkZXNjcmlwdGlvbiBvZiBlYWNoIGZpZWxkLgogICAgICAgRm9yIHNldCBhbmQg cGFzY2FsIGFycmF5IHR5cGVzLCB0aGVyZSBpcyBvbmUgImZpZWxkIiwKICAgICAgIHdob3NlIHR5 cGUgaXMgdGhlIGRvbWFpbiB0eXBlIG9mIHRoZSBzZXQgb3IgYXJyYXkuCi1AQCAtNTY4LDEzICs2 NDAsMzQgQEAgc3RydWN0IG1haW5fdHlwZQorQEAgLTU2OSwxMyArNjQxLDM0IEBAIHN0cnVjdCBt YWluX3R5cGUKICAKICAgICAgc3RydWN0IHJhbmdlX2JvdW5kcwogICAgICB7CkBAIC0zNDcxLDcg KzYzMzYsNyBAQCBpbmRleCA4ODdkZmRiLi42ZTk3MmQxIDEwMDY0NAogIAogICAgICAgIC8qIEZs YWdzIGluZGljYXRpbmcgd2hldGhlciB0aGUgdmFsdWVzIG9mIGxvdyBhbmQgaGlnaCBhcmUKICAg ICAgICAgICB2YWxpZC4gIFdoZW4gdHJ1ZSwgdGhlIHJlc3BlY3RpdmUgcmFuZ2UgdmFsdWUgaXMK LUBAIC0xMDE2LDkgKzExMDksOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBl IChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC0xMDQwLDkgKzExMzMsOSBAQCBleHRlcm4gdm9pZCBhbGxv Y2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAjZGVmaW5lIFRZUEVfUE9JTlRF Ul9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5wb2ludGVyX3R5cGUKICAjZGVmaW5lIFRZUEVf UkVGRVJFTkNFX1RZUEUodGhpc3R5cGUpICh0aGlzdHlwZSktPnJlZmVyZW5jZV90eXBlCiAgI2Rl ZmluZSBUWVBFX0NIQUlOKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5jaGFpbgpAQCAtMzQ4NCw3ICs2 MzQ5LDcgQEAgaW5kZXggODg3ZGZkYi4uNmU5NzJkMSAxMDA2NDQKICAgICBjYWxscyBjaGVja190 eXBlZGVmLCBUWVBFX0xFTkdUSCAoVkFMVUVfVFlQRSAoWCkpIGlzIHNhZmUuICAqLwogICNkZWZp bmUgVFlQRV9MRU5HVEgodGhpc3R5cGUpICh0aGlzdHlwZSktPmxlbmd0aAogIC8qIE5vdGUgdGhh dCBUWVBFX0NPREUgY2FuIGJlIFRZUEVfQ09ERV9UWVBFREVGLCBzbyBpZiB5b3Ugd2FudCB0aGUg cmVhbAotQEAgLTEwMjYsMTEgKzExMTksMTYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9h dXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CitAQCAtMTA1MCwxMSArMTE0MywxNiBAQCBleHRlcm4g dm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAjZGVmaW5lIFRZ UEVfQ09ERSh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5jb2RlCiAgI2RlZmlu ZSBUWVBFX05GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+bmZpZWxk cwogICNkZWZpbmUgVFlQRV9GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBl KS0+Zmxkc19ibmRzLmZpZWxkcwpAQCAtMzUwMyw3ICs2MzY4LDcgQEAgaW5kZXggODg3ZGZkYi4u NmU5NzJkMSAxMDA2NDQKICAjZGVmaW5lIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRChyYW5nZV90 eXBlKSBcCiAgICAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5sb3dfdW5kZWZpbmVkCiAg I2RlZmluZSBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEKHJhbmdlX3R5cGUpIFwKLUBAIC0xMDQ3 LDcgKzExNDUsMTQgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0 IHR5cGUgKik7CitAQCAtMTA3MSw3ICsxMTY5LDE0IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2du YXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwogICAgIChUWVBFX0hJR0hfQk9VTkQoVFlQRV9J TkRFWF9UWVBFKChhcnJheXR5cGUpKSkpCiAgCiAgI2RlZmluZSBUWVBFX0FSUkFZX0xPV0VSX0JP VU5EX1ZBTFVFKGFycmF5dHlwZSkgXApAQCAtMzUxOSw3ICs2Mzg0LDcgQEAgaW5kZXggODg3ZGZk Yi4uNmU5NzJkMSAxMDA2NDQKICAKICAvKiBDKysgKi8KICAKLUBAIC0xNDg5LDYgKzE1OTQsMTgg QEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwg c3RydWN0IHR5cGUgKiwKK0BAIC0xNTEzLDYgKzE2MTgsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBl ICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKICAJCQkJ ICAgICAgIHN0cnVjdCB0eXBlICopOwogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3VwX2FycmF5 X3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKICAKQEAgLTM1MzgsNyArNjQw Myw3IEBAIGluZGV4IDg4N2RmZGIuLjZlOTcyZDEgMTAwNjQ0CiAgZXh0ZXJuIHN0cnVjdCB0eXBl ICpjcmVhdGVfc3RyaW5nX3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCiAgCQkJ CQlzdHJ1Y3QgdHlwZSAqKTsKICBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9zdHJpbmdfcmFu Z2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOwotQEAgLTE1MzQsNiArMTY1MSwxMCBA QCBleHRlcm4gaW50IGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5 cGUgKik7CitAQCAtMTU1OCw2ICsxNjc1LDEwIEBAIGV4dGVybiBpbnQgaXNfcHVibGljX2FuY2Vz dG9yIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqKTsKICAKICBleHRlcm4gaW50IGlzX3Vu aXF1ZV9hbmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHZhbHVlICopOwogIApAQCAtMzU0 OSw3ICs2NDE0LDcgQEAgaW5kZXggODg3ZGZkYi4uNmU5NzJkMSAxMDA2NDQKICAvKiBPdmVybG9h ZCByZXNvbHV0aW9uICovCiAgCiAgI2RlZmluZSBMRU5HVEhfTUFUQ0goYnYpICgoYnYpLT5yYW5r WzBdKQotQEAgLTE2MDksMTAgKzE3MzAsMTMgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2VfcHJp bnRfdHlwZSAoY2hhciAqLCBpbnQpOworQEAgLTE2MzMsMTAgKzE3NTQsMTMgQEAgZXh0ZXJuIHZv aWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOwogIAogIGV4dGVybiBodGFi X3QgY3JlYXRlX2NvcGllZF90eXBlc19oYXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiAg CkBAIC0zNTY1LDggKzY0MzAsMjg3IEBAIGluZGV4IDg4N2RmZGIuLjZlOTcyZDEgMTAwNjQ0CiAr I2VuZGlmCiArCiAgI2VuZGlmIC8qIEdEQlRZUEVTX0ggKi8KK2RpZmYgLS1naXQgYS9nZGIvaml0 LmMgYi9nZGIvaml0LmMKK2luZGV4IDU2OGQxN2IuLjY0NzgzOTcgMTAwNjQ0CistLS0gYS9nZGIv aml0LmMKKysrKyBiL2dkYi9qaXQuYworQEAgLTM4LDYgKzM4LDcgQEAKKyAjaW5jbHVkZSAiZ2Ri LWRsZmNuLmgiCisgI2luY2x1ZGUgImdkYl9zdGF0LmgiCisgI2luY2x1ZGUgImV4Y2VwdGlvbnMu aCIKKysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorIHN0YXRpYyBjb25zdCBjaGFyICpqaXRfcmVh ZGVyX2RpciA9IE5VTEw7CisgCitAQCAtMTMyLDEyICsxMzMsMTEgQEAgbWVtX2JmZF9pb3ZlY19z dGF0IChzdHJ1Y3QgYmZkICphYmZkLCB2b2lkICpzdHJlYW0sIHN0cnVjdCBzdGF0ICpzYikKKyBz dGF0aWMgc3RydWN0IGJmZCAqCisgYmZkX29wZW5fZnJvbV90YXJnZXRfbWVtb3J5IChDT1JFX0FE RFIgYWRkciwgVUxPTkdFU1Qgc2l6ZSwgY2hhciAqdGFyZ2V0KQorIHsKKy0gIGNvbnN0IGNoYXIg KmZpbGVuYW1lID0geHN0cmR1cCAoIjxpbi1tZW1vcnk+Iik7CisgICBzdHJ1Y3QgdGFyZ2V0X2J1 ZmZlciAqYnVmZmVyID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgdGFyZ2V0X2J1ZmZlcikpOwor IAorICAgYnVmZmVyLT5iYXNlID0gYWRkcjsKKyAgIGJ1ZmZlci0+c2l6ZSA9IHNpemU7CistICBy ZXR1cm4gYmZkX29wZW5yX2lvdmVjIChmaWxlbmFtZSwgdGFyZ2V0LAorKyAgcmV0dXJuIGJmZF9v cGVucl9pb3ZlYyAoIjxpbi1tZW1vcnk+IiwgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWVtX2JmZF9pb3ZlY19vcGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVm ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtX2JmZF9pb3ZlY19wcmVhZCwKK0BA IC04NjEsNiArODYxLDcgQEAgaml0X2JmZF90cnlfcmVhZF9zeW10YWIgKHN0cnVjdCBqaXRfY29k ZV9lbnRyeSAqY29kZV9lbnRyeSwKKyAgICAgICBwdXRzX3VuZmlsdGVyZWQgKF8oIkVycm9yIG9w ZW5pbmcgSklUZWQgc3ltYm9sIGZpbGUsIGlnbm9yaW5nIGl0LlxuIikpOworICAgICAgIHJldHVy bjsKKyAgICAgfQorKyAgbmJmZCA9IGdkYl9iZmRfcmVmIChuYmZkKTsKKyAKKyAgIC8qIENoZWNr IHRoZSBmb3JtYXQuICBOT1RFOiBUaGlzIGluaXRpYWxpemVzIGltcG9ydGFudCBkYXRhIHRoYXQg R0RCIHVzZXMhCisgICAgICBXZSB3b3VsZCBzZWdmYXVsdCBsYXRlciB3aXRob3V0IHRoaXMgbGlu ZS4gICovCitAQCAtODY4LDcgKzg2OSw3IEBAIGppdF9iZmRfdHJ5X3JlYWRfc3ltdGFiIChzdHJ1 Y3Qgaml0X2NvZGVfZW50cnkgKmNvZGVfZW50cnksCisgICAgIHsKKyAgICAgICBwcmludGZfdW5m aWx0ZXJlZCAoXygiXAorIEpJVGVkIHN5bWJvbCBmaWxlIGlzIG5vdCBhbiBvYmplY3QgZmlsZSwg aWdub3JpbmcgaXQuXG4iKSk7CistICAgICAgYmZkX2Nsb3NlIChuYmZkKTsKKysgICAgICBnZGJf YmZkX3VucmVmIChuYmZkKTsKKyAgICAgICByZXR1cm47CisgICAgIH0KKyAKK2RpZmYgLS1naXQg YS9nZGIvbTMyci1yb20uYyBiL2dkYi9tMzJyLXJvbS5jCitpbmRleCA3NmU0YmYxLi5mZmRhNmY5 IDEwMDY0NAorLS0tIGEvZ2RiL20zMnItcm9tLmMKKysrKyBiL2dkYi9tMzJyLXJvbS5jCitAQCAt NDAsNiArNDAsNyBAQAorICNpbmNsdWRlICJpbmZlcmlvci5oIgorICNpbmNsdWRlIDxjdHlwZS5o PgorICNpbmNsdWRlICJyZWdjYWNoZS5oIgorKyNpbmNsdWRlICJnZGJfYmZkLmgiCisgCisgLyoK KyAgKiBBbGwgdGhpcyBzdHVmZiBqdXN0IHRvIGdldCBteSBob3N0IGNvbXB1dGVyJ3MgSVAgYWRk cmVzcyEKK0BAIC0xMjQsMTMgKzEyNSwxNSBAQCBtMzJyX2xvYWQgKGNoYXIgKmZpbGVuYW1lLCBp bnQgZnJvbV90dHkpCisgICBiZmQgKmFiZmQ7CisgICB1bnNpZ25lZCBpbnQgZGF0YV9jb3VudCA9 IDA7CisgICBzdHJ1Y3QgdGltZXZhbCBzdGFydF90aW1lLCBlbmRfdGltZTsKKysgIHN0cnVjdCBj bGVhbnVwICpjbGVhbnVwOworIAorICAgaWYgKGZpbGVuYW1lID09IE5VTEwgfHwgZmlsZW5hbWVb MF0gPT0gMCkKKyAgICAgZmlsZW5hbWUgPSBnZXRfZXhlY19maWxlICgxKTsKKyAKKy0gIGFiZmQg PSBiZmRfb3BlbnIgKGZpbGVuYW1lLCAwKTsKKysgIGFiZmQgPSBnZGJfYmZkX3JlZiAoYmZkX29w ZW5yIChmaWxlbmFtZSwgMCkpOworICAgaWYgKCFhYmZkKQorICAgICBlcnJvciAoXygiVW5hYmxl IHRvIG9wZW4gZmlsZSAlcy4iKSwgZmlsZW5hbWUpOworKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51 cF9iZmRfdW5yZWYgKGFiZmQpOworICAgaWYgKGJmZF9jaGVja19mb3JtYXQgKGFiZmQsIGJmZF9v YmplY3QpID09IDApCisgICAgIGVycm9yIChfKCJGaWxlIGlzIG5vdCBhbiBvYmplY3QgZmlsZS4i KSk7CisgICBnZXR0aW1lb2ZkYXkgKCZzdGFydF90aW1lLCBOVUxMKTsKK0BAIC0xODgsNiArMTkx LDcgQEAgbTMycl9sb2FkIChjaGFyICpmaWxlbmFtZSwgaW50IGZyb21fdHR5KQorICAgICAgY29u ZnVzZWQuLi4gICovCisgCisgICBjbGVhcl9zeW10YWJfdXNlcnMgKDApOworKyAgZG9fY2xlYW51 cHMgKGNsZWFudXApOworIH0KKyAKKyBzdGF0aWMgdm9pZAorQEAgLTQzNCw2ICs0MzgsNyBAQCBt MzJyX3VwbG9hZF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgICBjaGFyIGJ1 ZlsxMDI0XTsKKyAgIHN0cnVjdCBob3N0ZW50ICpob3N0ZW50OworICAgc3RydWN0IGluX2FkZHIg aW5ldF9hZGRyOworKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CisgCisgICAvKiBGaXJzdCBj aGVjayB0byBzZWUgaWYgdGhlcmUncyBhbiBldGhlcm5ldCBwb3J0ISAgKi8KKyAgIG1vbml0b3Jf cHJpbnRmICgidXN0XHIiKTsKK0BAIC01MjQsNyArNTI5LDggQEAgbTMycl91cGxvYWRfY29tbWFu ZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQorICAgICBwcmludGZfZmlsdGVyZWQgKCIgLS0g RXRoZXJuZXQgbG9hZCBjb21wbGV0ZS5cbiIpOworIAorICAgZ2V0dGltZW9mZGF5ICgmZW5kX3Rp bWUsIE5VTEwpOworLSAgYWJmZCA9IGJmZF9vcGVuciAoYXJncywgMCk7CisrICBhYmZkID0gZ2Ri X2JmZF9yZWYgKGJmZF9vcGVuciAoYXJncywgMCkpOworKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51 cF9iZmRfdW5yZWYgKGFiZmQpOworICAgaWYgKGFiZmQgIT0gTlVMTCkKKyAgICAgewkJLyogRG93 bmxvYWQgaXMgZG9uZSAtLSBwcmludCBzZWN0aW9uIHN0YXRpc3RpY3MuICAqLworICAgICAgIGlm IChiZmRfY2hlY2tfZm9ybWF0IChhYmZkLCBiZmRfb2JqZWN0KSA9PSAwKQorQEAgLTU2NSw2ICs1 NzEsNyBAQCBtMzJyX3VwbG9hZF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisg ICAgICBjb25mdXNlZC4uLiAgKi8KKyAKKyAgIGNsZWFyX3N5bXRhYl91c2VycyAoMCk7CisrICBk b19jbGVhbnVwcyAoY2xlYW51cCk7CisgfQorIAorIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8g c2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL21hY2hv cmVhZC5jIGIvZ2RiL21hY2hvcmVhZC5jCitpbmRleCAyMjUzMGFiLi42ZDMwOWJiIDEwMDY0NAor LS0tIGEvZ2RiL21hY2hvcmVhZC5jCisrKysgYi9nZGIvbWFjaG9yZWFkLmMKK0BAIC00NjYsMTQg KzQ2NiwxNCBAQCBtYWNob19hZGRfb3NvX3N5bWZpbGUgKG9zb19lbCAqb3NvLCBiZmQgKmFiZmQs CisgICAgIHsKKyAgICAgICB3YXJuaW5nIChfKCJgJXMnOiBjYW4ndCByZWFkIHN5bWJvbHM6ICVz LiIpLCBvc28tPm5hbWUsCisgICAgICAgICAgICAgICAgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJv ciAoKSkpOworLSAgICAgIGJmZF9jbG9zZSAoYWJmZCk7CisrICAgICAgZ2RiX2JmZF91bnJlZiAo YWJmZCk7CisgICAgICAgcmV0dXJuOworICAgICB9CisgCisgICBpZiAoYWJmZC0+bXlfYXJjaGl2 ZSA9PSBOVUxMICYmIG9zby0+bXRpbWUgIT0gYmZkX2dldF9tdGltZSAoYWJmZCkpCisgICAgIHsK KyAgICAgICB3YXJuaW5nIChfKCJgJXMnOiBmaWxlIHRpbWUgc3RhbXAgbWlzbWF0Y2guIiksIG9z by0+bmFtZSk7CistICAgICAgYmZkX2Nsb3NlIChhYmZkKTsKKysgICAgICBnZGJfYmZkX3VucmVm IChhYmZkKTsKKyAgICAgICByZXR1cm47CisgICAgIH0KKyAKK0BAIC00ODIsNyArNDgyLDcgQEAg bWFjaG9fYWRkX29zb19zeW1maWxlIChvc29fZWwgKm9zbywgYmZkICphYmZkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9zby0+bmJyX3N5bXMpKQorICAgICB7CisgICAgICAgd2Fy bmluZyAoXygiYCVzJzogY2FuJ3QgY3JlYXRlIGhhc2ggdGFibGUiKSwgb3NvLT5uYW1lKTsKKy0g ICAgICBiZmRfY2xvc2UgKGFiZmQpOworKyAgICAgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOworICAg ICAgIHJldHVybjsKKyAgICAgfQorIAorQEAgLTYyOSwxMCArNjI5LDEwIEBAIG1hY2hvX2FkZF9v c29fc3ltZmlsZSAob3NvX2VsICpvc28sIGJmZCAqYWJmZCwKKyAKKyAgIGJmZF9oYXNoX3RhYmxl X2ZyZWUgKCZ0YWJsZSk7CisgCistICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgZmlsZW5hbWUgd2Fz IG1hbGxvYydlZC4gIFRoZSBjdXJyZW50IGZpbGVuYW1lIGNvbWVzCistICAgICBlaXRoZXIgZnJv bSBhbiBPU08gc3ltYm9sIG5hbWUgb3IgZnJvbSBhbiBhcmNoaXZlIG5hbWUuICBNZW1vcnkgZm9y IGJvdGgKKy0gICAgIGlzIG5vdCBtYW5hZ2VkIGJ5IGdkYi4gICovCistICBhYmZkLT5maWxlbmFt ZSA9IHhzdHJkdXAgKGFiZmQtPmZpbGVuYW1lKTsKKysgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBm aWxlbmFtZSBoYXMgdGhlIGNvcnJlY3QgbGlmZXRpbWUuICBUaGUKKysgICAgIGN1cnJlbnQgZmls ZW5hbWUgY29tZXMgZWl0aGVyIGZyb20gYW4gT1NPIHN5bWJvbCBuYW1lIG9yIGZyb20gYW4KKysg ICAgIGFyY2hpdmUgbmFtZS4gIE1lbW9yeSBmb3IgYm90aCBpcyBub3QgbWFuYWdlZCBieSBnZGIu ICAqLworKyAgZ2RiX2JmZF9zdGFzaF9maWxlbmFtZSAoYWJmZCk7CisgCisgICAvKiBXZSBuZWVk IHRvIGNsZWFyIFNZTUZJTEVfTUFJTkxJTkUgdG8gYXZvaWQgaW50ZXJyYWN0aXZlIHF1ZXN0aW9u CisgICAgICBmcm9tIHN5bWZpbGUuYzpzeW1ib2xfZmlsZV9hZGRfd2l0aF9hZGRyc19vcl9vZmZz ZXRzLiAgKi8KK0BAIC02NTEsNiArNjUxLDcgQEAgbWFjaG9fc3ltZmlsZV9yZWFkX2FsbF9vc28g KHN0cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQorICAgaW50 IGl4OworICAgVkVDIChvc29fZWwpICp2ZWM7CisgICBvc29fZWwgKm9zbzsKKysgIHN0cnVjdCBj bGVhbnVwICpjbGVhbnVwID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworIAor ICAgdmVjID0gb3NvX3ZlY3RvcjsKKyAgIG9zb192ZWN0b3IgPSBOVUxMOworQEAgLTY3Nyw2ICs2 NzgsOCBAQCBtYWNob19zeW1maWxlX3JlYWRfYWxsX29zbyAoc3RydWN0IG9iamZpbGUgKm1haW5f b2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCisgCSAgbWVtY3B5IChhcmNoaXZlX25hbWUsIG9z by0+bmFtZSwgcGZ4X2xlbik7CisgCSAgYXJjaGl2ZV9uYW1lW3BmeF9sZW5dID0gJ1wwJzsKKyAK KysJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBhcmNoaXZlX25hbWUpOworKworICAgICAgICAgICAv KiBDb21wdXRlIG51bWJlciBvZiBvc28gZm9yIHRoaXMgYXJjaGl2ZS4gICovCisgICAgICAgICAg IGZvciAobGFzdF9peCA9IGl4OworICAgICAgICAgICAgICAgIFZFQ19pdGVyYXRlIChvc29fZWws IHZlYywgbGFzdF9peCwgb3NvMik7IGxhc3RfaXgrKykKK0BAIC02ODYsNyArNjg5LDcgQEAgbWFj aG9fc3ltZmlsZV9yZWFkX2FsbF9vc28gKHN0cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUsIGlu dCBzeW1maWxlX2ZsYWdzKQorICAgICAgICAgICAgIH0KKyAKKyAJICAvKiBPcGVuIHRoZSBhcmNo aXZlIGFuZCBjaGVjayB0aGUgZm9ybWF0LiAgKi8KKy0JICBhcmNoaXZlX2JmZCA9IGJmZF9vcGVu ciAoYXJjaGl2ZV9uYW1lLCBnbnV0YXJnZXQpOworKwkgIGFyY2hpdmVfYmZkID0gZ2RiX2JmZF9y ZWYgKGJmZF9vcGVuciAoYXJjaGl2ZV9uYW1lLCBnbnV0YXJnZXQpKTsKKyAJICBpZiAoYXJjaGl2 ZV9iZmQgPT0gTlVMTCkKKyAJICAgIHsKKyAJICAgICAgd2FybmluZyAoXygiQ291bGQgbm90IG9w ZW4gT1NPIGFyY2hpdmUgZmlsZSBcIiVzXCIiKSwKK0BAIC02OTgsMTcgKzcwMSwyMSBAQCBtYWNo b19zeW1maWxlX3JlYWRfYWxsX29zbyAoc3RydWN0IG9iamZpbGUgKm1haW5fb2JqZmlsZSwgaW50 IHN5bWZpbGVfZmxhZ3MpCisgCSAgICB7CisgCSAgICAgIHdhcm5pbmcgKF8oIk9TTyBhcmNoaXZl IGZpbGUgXCIlc1wiIG5vdCBhbiBhcmNoaXZlLiIpLAorIAkJICAgICAgIGFyY2hpdmVfbmFtZSk7 CistCSAgICAgIGJmZF9jbG9zZSAoYXJjaGl2ZV9iZmQpOworKwkgICAgICBnZGJfYmZkX3VucmVm IChhcmNoaXZlX2JmZCk7CisgICAgICAgICAgICAgICBpeCA9IGxhc3RfaXg7CisgCSAgICAgIGNv bnRpbnVlOworIAkgICAgfQorLQkgIG1lbWJlcl9iZmQgPSBiZmRfb3BlbnJfbmV4dF9hcmNoaXZl ZF9maWxlIChhcmNoaXZlX2JmZCwgTlVMTCk7CisrCisrCSAgZ2RiX2JmZF9zdGFzaF9maWxlbmFt ZSAoYXJjaGl2ZV9iZmQpOworKworKwkgIG1lbWJlcl9iZmQgPSBnZGJfYmZkX3JlZiAoYmZkX29w ZW5yX25leHRfYXJjaGl2ZWRfZmlsZSAoYXJjaGl2ZV9iZmQsCisrCQkJCQkJCQkgIE5VTEwpKTsK KyAKKyAJICBpZiAobWVtYmVyX2JmZCA9PSBOVUxMKQorIAkgICAgeworIAkgICAgICB3YXJuaW5n IChfKCJDb3VsZCBub3QgcmVhZCBhcmNoaXZlIG1lbWJlcnMgb3V0IG9mICIKKyAJCQkgIk9TTyBh cmNoaXZlIFwiJXNcIiIpLCBhcmNoaXZlX25hbWUpOworLQkgICAgICBiZmRfY2xvc2UgKGFyY2hp dmVfYmZkKTsKKysJICAgICAgZ2RiX2JmZF91bnJlZiAoYXJjaGl2ZV9iZmQpOworICAgICAgICAg ICAgICAgaXggPSBsYXN0X2l4OworIAkgICAgICBjb250aW51ZTsKKyAJICAgIH0KK0BAIC03Mzgs MTIgKzc0NSwxMyBAQCBtYWNob19zeW1maWxlX3JlYWRfYWxsX29zbyAoc3RydWN0IG9iamZpbGUg Km1haW5fb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCisgICAgICAgICAgICAgICAgIH0KKyAK KyAgICAgICAgICAgICAgIHByZXYgPSBtZW1iZXJfYmZkOworLQkgICAgICBtZW1iZXJfYmZkID0g YmZkX29wZW5yX25leHRfYXJjaGl2ZWRfZmlsZQorLQkJKGFyY2hpdmVfYmZkLCBtZW1iZXJfYmZk KTsKKysJICAgICAgbWVtYmVyX2JmZAorKwkJPSBnZGJfYmZkX3JlZiAoYmZkX29wZW5yX25leHRf YXJjaGl2ZWRfZmlsZSAoYXJjaGl2ZV9iZmQsCisrCQkJCQkJCSAgICAgbWVtYmVyX2JmZCkpOwor IAorICAgICAgICAgICAgICAgLyogRnJlZSBwcmV2aW91cyBtZW1iZXIgaWYgbm90IHJlZmVyZW5j ZWQgYnkgYW4gb3NvLiAgKi8KKyAgICAgICAgICAgICAgIGlmIChpeDIgPj0gbGFzdF9peCkKKy0g ICAgICAgICAgICAgICAgYmZkX2Nsb3NlIChwcmV2KTsKKysgICAgICAgICAgICAgICAgZ2RiX2Jm ZF91bnJlZiAocHJldik7CisgCSAgICB9CisgICAgICAgICAgIGZvciAoaXgyID0gaXg7IGl4MiA8 IGxhc3RfaXg7IGl4MisrKQorICAgICAgICAgICAgIHsKK0BAIC03NTksNyArNzY3LDcgQEAgbWFj aG9fc3ltZmlsZV9yZWFkX2FsbF9vc28gKHN0cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUsIGlu dCBzeW1maWxlX2ZsYWdzKQorIAl7CisgICAgICAgICAgIGJmZCAqYWJmZDsKKyAKKy0JICBhYmZk ID0gYmZkX29wZW5yIChvc28tPm5hbWUsIGdudXRhcmdldCk7CisrCSAgYWJmZCA9IGdkYl9iZmRf cmVmIChiZmRfb3BlbnIgKG9zby0+bmFtZSwgZ251dGFyZ2V0KSk7CisgCSAgaWYgKCFhYmZkKQor ICAgICAgICAgICAgIHdhcm5pbmcgKF8oImAlcyc6IGNhbid0IG9wZW4gdG8gcmVhZCBzeW1ib2xz OiAlcy4iKSwgb3NvLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIGJmZF9lcnJtc2cgKGJm ZF9nZXRfZXJyb3IgKCkpKTsKK0BAIC03NzEsNiArNzc5LDcgQEAgbWFjaG9fc3ltZmlsZV9yZWFk X2FsbF9vc28gKHN0cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUsIGludCBzeW1maWxlX2ZsYWdz KQorICAgICB9CisgCisgICBWRUNfZnJlZSAob3NvX2VsLCB2ZWMpOworKyAgZG9fY2xlYW51cHMg KGNsZWFudXApOworIH0KKyAKKyAvKiBEU1lNIChkZWJ1ZyBzeW1ib2xzKSBmaWxlcyBjb250YWlu IHRoZSBkZWJ1ZyBpbmZvIG9mIGFuIGV4ZWN1dGFibGUuCitAQCAtODA4LDIwICs4MTcsMTggQEAg bWFjaG9fY2hlY2tfZHN5bSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgICAgICAgd2Fybmlu ZyAoXygiY2FuJ3QgZmluZCBVVUlEIGluICVzIiksIG9iamZpbGUtPm5hbWUpOworICAgICAgIHJl dHVybiBOVUxMOworICAgICB9CistICBkc3ltX2ZpbGVuYW1lID0geHN0cmR1cCAoZHN5bV9maWxl bmFtZSk7CistICBkc3ltX2JmZCA9IGJmZF9vcGVuciAoZHN5bV9maWxlbmFtZSwgZ251dGFyZ2V0 KTsKKysgIGRzeW1fYmZkID0gZ2RiX2JmZF9yZWYgKGJmZF9vcGVuciAoZHN5bV9maWxlbmFtZSwg Z251dGFyZ2V0KSk7CisgICBpZiAoZHN5bV9iZmQgPT0gTlVMTCkKKyAgICAgeworICAgICAgIHdh cm5pbmcgKF8oImNhbid0IG9wZW4gZHN5bSBmaWxlICVzIiksIGRzeW1fZmlsZW5hbWUpOworLSAg ICAgIHhmcmVlIChkc3ltX2ZpbGVuYW1lKTsKKyAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgfQor KyAgZ2RiX2JmZF9zdGFzaF9maWxlbmFtZSAoZHN5bV9maWxlbmFtZSk7CisgCisgICBpZiAoIWJm ZF9jaGVja19mb3JtYXQgKGRzeW1fYmZkLCBiZmRfb2JqZWN0KSkKKyAgICAgeworLSAgICAgIGJm ZF9jbG9zZSAoZHN5bV9iZmQpOworKyAgICAgIGdkYl9iZmRfdW5yZWYgKGRzeW1fYmZkKTsKKyAg ICAgICB3YXJuaW5nIChfKCJiYWQgZHN5bSBmaWxlIGZvcm1hdDogJXMiKSwgYmZkX2Vycm1zZyAo YmZkX2dldF9lcnJvciAoKSkpOworLSAgICAgIHhmcmVlIChkc3ltX2ZpbGVuYW1lKTsKKyAgICAg ICByZXR1cm4gTlVMTDsKKyAgICAgfQorIAorQEAgLTgyOSwxNiArODM2LDE0IEBAIG1hY2hvX2No ZWNrX2RzeW0gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEJGRF9NQUNIX09fTENfVVVJRCwgJmRzeW1fdXVpZCkgPT0gMCkKKyAgICAg eworICAgICAgIHdhcm5pbmcgKF8oImNhbid0IGZpbmQgVVVJRCBpbiAlcyIpLCBkc3ltX2ZpbGVu YW1lKTsKKy0gICAgICBiZmRfY2xvc2UgKGRzeW1fYmZkKTsKKy0gICAgICB4ZnJlZSAoZHN5bV9m aWxlbmFtZSk7CisrICAgICAgZ2RiX2JmZF91bnJlZiAoZHN5bV9iZmQpOworICAgICAgIHJldHVy biBOVUxMOworICAgICB9CisgICBpZiAobWVtY21wIChkc3ltX3V1aWQtPmNvbW1hbmQudXVpZC51 dWlkLCBtYWluX3V1aWQtPmNvbW1hbmQudXVpZC51dWlkLAorICAgICAgICAgICAgICAgc2l6ZW9m IChtYWluX3V1aWQtPmNvbW1hbmQudXVpZC51dWlkKSkpCisgICAgIHsKKyAgICAgICB3YXJuaW5n IChfKCJkc3ltIGZpbGUgVVVJRCBkb2Vzbid0IG1hdGNoIHRoZSBvbmUgaW4gJXMiKSwgb2JqZmls ZS0+bmFtZSk7CistICAgICAgYmZkX2Nsb3NlIChkc3ltX2JmZCk7CistICAgICAgeGZyZWUgKGRz eW1fZmlsZW5hbWUpOworKyAgICAgIGdkYl9iZmRfdW5yZWYgKGRzeW1fYmZkKTsKKyAgICAgICBy ZXR1cm4gTlVMTDsKKyAgICAgfQorICAgcmV0dXJuIGRzeW1fYmZkOwogZGlmZiAtLWdpdCBhL2dk Yi9tYWluLmMgYi9nZGIvbWFpbi5jCi1pbmRleCAzMTQ4ZDcyLi5jNWI0ODI2IDEwMDY0NAoraW5k ZXggMDI1YmJlMC4uYThjMWE5NyAxMDA2NDQKIC0tLSBhL2dkYi9tYWluLmMKICsrKyBiL2dkYi9t YWluLmMKIEBAIC0zNyw2ICszNyw3IEBACkBAIC0zNzE2LDYgKzY4NjAsMTIxIEBAIGluZGV4IDMx NDhkNzIuLmM1YjQ4MjYgMTAwNjQ0CiAgICAtLXF1aWV0ICAgICAgICAgICAgRG8gbm90IHByaW50 IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJlYWRub3cgICAgICAgICAgRnVs bHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXAogICIpLCBzdHJlYW0pOwor ZGlmZiAtLWdpdCBhL2dkYi9vYmpmaWxlcy5jIGIvZ2RiL29iamZpbGVzLmMKK2luZGV4IGY1ZTVj NzUuLjVmZjBlYjIgMTAwNjQ0CistLS0gYS9nZGIvb2JqZmlsZXMuYworKysrIGIvZ2RiL29iamZp bGVzLmMKK0BAIC01Myw2ICs1Myw3IEBACisgI2luY2x1ZGUgImNvbXBsYWludHMuaCIKKyAjaW5j bHVkZSAicHN5bXRhYi5oIgorICNpbmNsdWRlICJzb2xpc3QuaCIKKysjaW5jbHVkZSAiZ2RiX2Jm ZC5oIgorIAorIC8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucyAqLworIAorQEAgLTE5 Myw5ICsxOTQsOSBAQCBhbGxvY2F0ZV9vYmpmaWxlIChiZmQgKmFiZmQsIGludCBmbGFncykKKyAK KyAgIC8qIFVwZGF0ZSB0aGUgcGVyLW9iamZpbGUgaW5mb3JtYXRpb24gdGhhdCBjb21lcyBmcm9t IHRoZSBiZmQsIGVuc3VyaW5nCisgICAgICB0aGF0IGFueSBkYXRhIHRoYXQgaXMgcmVmZXJlbmNl IGlzIHNhdmVkIGluIHRoZSBwZXItb2JqZmlsZSBkYXRhCistICAgICByZWdpb24uICAqLworKyAg ICAgcmVnaW9uLiAgTm90ZSB0aGF0IHdlIHN0ZWFsIGEgcmVmZXJlbmNlIHRvIEFCRkQuICAqLwor IAorLSAgb2JqZmlsZS0+b2JmZCA9IGdkYl9iZmRfcmVmIChhYmZkKTsKKysgIG9iamZpbGUtPm9i ZmQgPSBhYmZkOworICAgaWYgKGFiZmQgIT0gTlVMTCkKKyAgICAgeworICAgICAgIC8qIExvb2sg dXAgdGhlIGdkYmFyY2ggYXNzb2NpYXRlZCB3aXRoIHRoZSBCRkQuICAqLworQEAgLTE0NTYsNzUg KzE0NTcsNiBAQCBvYmpmaWxlc19jaGFuZ2VkICh2b2lkKQorICAgZ2V0X29iamZpbGVfcHNwYWNl X2RhdGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSktPm9iamZpbGVzX2NoYW5nZWRfcCA9IDE7Cisg fQorIAorLS8qIENsb3NlIEFCRkQsIGFuZCB3YXJuIGlmIHRoYXQgZmFpbHMuICAqLworLQorLWlu dAorLWdkYl9iZmRfY2xvc2Vfb3Jfd2FybiAoc3RydWN0IGJmZCAqYWJmZCkKKy17CistICBpbnQg cmV0OworLSAgY2hhciAqbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpOworLQorLSAgcmV0 ID0gYmZkX2Nsb3NlIChhYmZkKTsKKy0KKy0gIGlmICghcmV0KQorLSAgICB3YXJuaW5nIChfKCJj YW5ub3QgY2xvc2UgXCIlc1wiOiAlcyIpLAorLQkgICAgIG5hbWUsIGJmZF9lcnJtc2cgKGJmZF9n ZXRfZXJyb3IgKCkpKTsKKy0KKy0gIHJldHVybiByZXQ7CistfQorLQorLS8qIEFkZCByZWZlcmVu Y2UgdG8gQUJGRC4gIFJldHVybnMgQUJGRC4gICovCistc3RydWN0IGJmZCAqCistZ2RiX2JmZF9y ZWYgKHN0cnVjdCBiZmQgKmFiZmQpCisteworLSAgaW50ICpwX3JlZmNvdW50OworLQorLSAgaWYg KGFiZmQgPT0gTlVMTCkKKy0gICAgcmV0dXJuIE5VTEw7CistCistICBwX3JlZmNvdW50ID0gYmZk X3VzcmRhdGEgKGFiZmQpOworLQorLSAgaWYgKHBfcmVmY291bnQgIT0gTlVMTCkKKy0gICAgewor LSAgICAgICpwX3JlZmNvdW50ICs9IDE7CistICAgICAgcmV0dXJuIGFiZmQ7CistICAgIH0KKy0K Ky0gIHBfcmVmY291bnQgPSB4bWFsbG9jIChzaXplb2YgKCpwX3JlZmNvdW50KSk7CistICAqcF9y ZWZjb3VudCA9IDE7CistICBiZmRfdXNyZGF0YSAoYWJmZCkgPSBwX3JlZmNvdW50OworLQorLSAg cmV0dXJuIGFiZmQ7CistfQorLQorLS8qIFVucmVmZXJlbmNlIGFuZCBwb3NzaWJseSBjbG9zZSBB QkZELiAgKi8KKy12b2lkCistZ2RiX2JmZF91bnJlZiAoc3RydWN0IGJmZCAqYWJmZCkKKy17Cist ICBpbnQgKnBfcmVmY291bnQ7CistICBjaGFyICpuYW1lOworLQorLSAgaWYgKGFiZmQgPT0gTlVM TCkKKy0gICAgcmV0dXJuOworLQorLSAgcF9yZWZjb3VudCA9IGJmZF91c3JkYXRhIChhYmZkKTsK Ky0KKy0gIC8qIFZhbGlkIHJhbmdlIGZvciBwX3JlZmNvdW50OiBhIHBvaW50ZXIgdG8gaW50IGNv dW50ZXIsIHdoaWNoIGhhcyBhCistICAgICB2YWx1ZSBvZiAxIChzaW5nbGUgb3duZXIpIG9yIDIg KHNoYXJlZCkuICAqLworLSAgZ2RiX2Fzc2VydCAoKnBfcmVmY291bnQgPT0gMSB8fCAqcF9yZWZj b3VudCA9PSAyKTsKKy0KKy0gICpwX3JlZmNvdW50IC09IDE7CistICBpZiAoKnBfcmVmY291bnQg PiAwKQorLSAgICByZXR1cm47CistCistICB4ZnJlZSAocF9yZWZjb3VudCk7CistICBiZmRfdXNy ZGF0YSAoYWJmZCkgPSBOVUxMOyAgLyogUGFyYW5vaWEuICAqLworLQorLSAgbmFtZSA9IGJmZF9n ZXRfZmlsZW5hbWUgKGFiZmQpOworLSAgZ2RiX2JmZF9jbG9zZV9vcl93YXJuIChhYmZkKTsKKy0g IHhmcmVlIChuYW1lKTsKKy19CistCisgLyogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9y IHRoZSAiaXRlcmF0ZV9vdmVyX29iamZpbGVzX2luX3NlYXJjaF9vcmRlciIKKyAgICBnZGJhcmNo IG1ldGhvZC4gIEl0IGlzIGVxdWl2YWxlbnQgdG8gdXNlIHRoZSBBTExfT0JKRklMRVMgbWFjcm8s CisgICAgc2VhcmNoaW5nIHRoZSBvYmpmaWxlcyBpbiB0aGUgb3JkZXIgdGhleSBhcmUgc3RvcmVk IGludGVybmFsbHksCitkaWZmIC0tZ2l0IGEvZ2RiL29iamZpbGVzLmggYi9nZGIvb2JqZmlsZXMu aAoraW5kZXggMDFjM2FlYS4uMGRmNTc5OCAxMDA2NDQKKy0tLSBhL2dkYi9vYmpmaWxlcy5oCisr KysgYi9nZGIvb2JqZmlsZXMuaAorQEAgLTUyMiwxMCArNTIyLDYgQEAgZXh0ZXJuIHZvaWQgc2V0 X29iamZpbGVfZGF0YSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgZXh0ZXJuIHZvaWQgKm9i amZpbGVfZGF0YSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCQkJICAgY29uc3Qgc3RydWN0 IG9iamZpbGVfZGF0YSAqZGF0YSk7CisgCistZXh0ZXJuIHN0cnVjdCBiZmQgKmdkYl9iZmRfcmVm IChzdHJ1Y3QgYmZkICphYmZkKTsKKy1leHRlcm4gdm9pZCBnZGJfYmZkX3VucmVmIChzdHJ1Y3Qg YmZkICphYmZkKTsKKy1leHRlcm4gaW50IGdkYl9iZmRfY2xvc2Vfb3Jfd2FybiAoc3RydWN0IGJm ZCAqYWJmZCk7CistCisgZXh0ZXJuIHZvaWQgZGVmYXVsdF9pdGVyYXRlX292ZXJfb2JqZmlsZXNf aW5fc2VhcmNoX29yZGVyCisgICAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgaXRlcmF0 ZV9vdmVyX29iamZpbGVzX2luX3NlYXJjaF9vcmRlcl9jYl9mdHlwZSAqY2IsCiBkaWZmIC0tZ2l0 IGEvZ2RiL3AtdmFscHJpbnQuYyBiL2dkYi9wLXZhbHByaW50LmMKIGluZGV4IGI4NDM0ZWQuLjk4 YTA3NmQgMTAwNjQ0CiAtLS0gYS9nZGIvcC12YWxwcmludC5jCkBAIC0zNzk3LDEwICs3MDU2LDEw IEBAIGluZGV4IGI4NDM0ZWQuLjk4YTA3NmQgMTAwNjQ0CiAgDAogIHZvaWQKIGRpZmYgLS1naXQg YS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5jCi1pbmRleCBmNTRjNmYyLi43MGU5YTA1IDEwMDY0 NAoraW5kZXggYzM3MmY0MC4uNjcwN2M5YSAxMDA2NDQKIC0tLSBhL2dkYi9wYXJzZS5jCiArKysg Yi9nZGIvcGFyc2UuYwotQEAgLTE1MTYsNiArMTUxNiw3IEBAIHBhcnNlcl9mcHJpbnRmIChGSUxF ICp4LCBjb25zdCBjaGFyICp5LCAuLi4pCitAQCAtMTU4NCw2ICsxNTg0LDcgQEAgcGFyc2VyX2Zw cmludGYgKEZJTEUgKngsIGNvbnN0IGNoYXIgKnksIC4uLikKICAKICBpbnQKICBvcGVyYXRvcl9j aGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKQEAgLTM4MDgs NyArNzA2Nyw3IEBAIGluZGV4IGY1NGM2ZjIuLjcwZTlhMDUgMTAwNjQ0CiAgCQkJIGludCAoKm9i amZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkJCQkJICAgICAgdm9pZCAq ZGF0YSksCiAgCQkJIHZvaWQgKmRhdGEpCi1AQCAtMTU1Nyw3ICsxNTU4LDcgQEAgb3BlcmF0b3Jf Y2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCitAQCAtMTYy NSw3ICsxNjI2LDcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCBwb3MsCiAgCSAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGVsdHNbcG9zICsgMiAr IGFyZ10udHlwZTsKICAJICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxF ICh0eXBlKTsKICAKQEAgLTM4MTcsNyArNzA3Niw3IEBAIGluZGV4IGY1NGM2ZjIuLjcwZTlhMDUg MTAwNjQ0CiAgCSAgICAgIHJldHVybiAxOwogIAkgIH0KICAgICAgICB9Ci1AQCAtMTU3NSw3ICsx NTc2LDggQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAs IGludCBwb3MsCitAQCAtMTY0Myw3ICsxNjQ0LDggQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQg KHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCiAgCiAgCS8qIENoZWNrIG9iamZpbGUg d2hlcmUgdGhlIHZhcmlhYmxlIGl0c2VsZiBpcyBwbGFjZWQuCiAgCSAgIFNZTUJPTF9PQkpfU0VD VElPTiAoc3ltYm9sKSBtYXkgYmUgTlVMTC4gICovCkBAIC0zODI3LDcgKzcwODYsNyBAQCBpbmRl eCBmNTRjNmYyLi43MGU5YTA1IDEwMDY0NAogIAkgIHJldHVybiAxOwogIAogIAkvKiBDaGVjayBv YmpmaWxlIHdoZXJlIGlzIHBsYWNlZCB0aGUgY29kZSB0b3VjaGluZyB0aGUgdmFyaWFibGUuICAq LwotQEAgLTE1ODgsMjQgKzE1OTAsMjcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCitAQCAtMTY1NiwyNCArMTY1OCwyNyBAQCBvcGVy YXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAK ICAgIC8qIEludm9rZSBjYWxsYmFja3MgZm9yIFRZUEUgYW5kIE9CSkZJTEUgaWYgdGhleSB3ZXJl IHNldCBhcyBub24tTlVMTC4gICovCiAgCkBAIC0zODYzLDcgKzcxMjIsNyBAQCBpbmRleCBmNTRj NmYyLi43MGU5YTA1IDEwMDY0NAogIAkgICAgIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKICAJICAgICB2b2lkICpkYXRhKQogIHsKLUBA IC0xNjIwLDcgKzE2MjUsOSBAQCBleHBfaXRlcmF0ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwK K0BAIC0xNjg4LDcgKzE2OTMsOSBAQCBleHBfaXRlcmF0ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwKICAKICAgICAgICBwb3MgPSBlbmRwb3MgLSBvcGxlbjsKICAgICAgICBpZiAoZXhwLT5sYW5n dWFnZV9kZWZuLT5sYV9leHBfZGVzYy0+b3BlcmF0b3JfY2hlY2sgKGV4cCwgcG9zLApAQCAtMzg3 NCw3ICs3MTMzLDcgQEAgaW5kZXggZjU0YzZmMi4uNzBlOWEwNSAxMDA2NDQKICAJcmV0dXJuIDE7 CiAgCiAgICAgICAgZW5kcG9zID0gcG9zOwotQEAgLTE2NTEsOCArMTY1OCwyOSBAQCBleHBfdXNl c19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSkKK0BAIC0xNzE5LDggKzE3MjYsMjkgQEAgZXhwX3VzZXNfb2JqZmlsZSAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiAgewogICAgZ2RiX2Fzc2VydCAo b2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluayA9PSBOVUxMKTsKICAKQEAg LTM5MDYsMTAgKzcxNjUsMTAgQEAgaW5kZXggZjU0YzZmMi4uNzBlOWEwNSAxMDA2NDQKICB2b2lk CiAgX2luaXRpYWxpemVfcGFyc2UgKHZvaWQpCiBkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlci1kZWZz LmggYi9nZGIvcGFyc2VyLWRlZnMuaAotaW5kZXggNzJiOWUyZi4uNzE5YTY1MiAxMDA2NDQKK2lu ZGV4IGFhNjAwYTEuLjU1NGMyNzIgMTAwNjQ0CiAtLS0gYS9nZGIvcGFyc2VyLWRlZnMuaAogKysr IGIvZ2RiL3BhcnNlci1kZWZzLmgKLUBAIC0yMTUsNiArMjE1LDggQEAgZXh0ZXJuIHZvaWQgb3Bl cmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsIGlu dCAqLAorQEAgLTIxNyw2ICsyMTcsOCBAQCBleHRlcm4gdm9pZCBvcGVyYXRvcl9sZW5ndGhfc3Rh bmRhcmQgKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICosIGludCwgaW50ICosCiAgCQkJCSAgICAg IGludCAqKTsKICAKICBleHRlcm4gaW50IG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3Qg ZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLApAQCAtMzkxOCw3ICs3MTc3LDcgQEAgaW5kZXggNzJi OWUyZi4uNzE5YTY1MiAxMDA2NDQKICAJCQkJICAgIGludCAoKm9iamZpbGVfZnVuYykKICAJCQkJ ICAgICAgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKICAJCQkJICAgIHZv aWQgKmRhdGEpOwotQEAgLTMwMSw2ICszMDMsNyBAQCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IKK0BA IC0zMDMsNiArMzA1LDcgQEAgc3RydWN0IGV4cF9kZXNjcmlwdG9yCiAgICAgICAgIHZhbHVlIHNo b3VsZCBiZSBpbW1lZGlhdGVseSByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgT3RoZXJ3aXNlIHpl cm8KICAgICAgICAgc2hvdWxkIGJlIHJldHVybmVkLiAgKi8KICAgICAgaW50ICgqb3BlcmF0b3Jf Y2hlY2spIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLApAQCAtMzkyNiw3ICs3MTg1 LDcgQEAgaW5kZXggNzJiOWUyZi4uNzE5YTY1MiAxMDA2NDQKICAJCQkgICBpbnQgKCpvYmpmaWxl X2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJCQkJCQl2b2lkICpkYXRhKSwKICAJ CQkgICB2b2lkICpkYXRhKTsKLUBAIC0zMzksNCArMzQyLDEwIEBAIGV4dGVybiB2b2lkIHBhcnNl cl9mcHJpbnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKSBBVFRSSUJVVEVfUFJJTlRGICgy LCAzKTsKK0BAIC0zNDEsNCArMzQ0LDEwIEBAIGV4dGVybiB2b2lkIHBhcnNlcl9mcHJpbnRmIChG SUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKSBBVFRSSUJVVEVfUFJJTlRGICgyLCAzKTsKICAKICBl eHRlcm4gaW50IGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlKTsKICAKQEAgLTM5MzgsMTggKzcxOTcsMTggQEAgaW5kZXggNzJi OWUyZi4uNzE5YTY1MiAxMDA2NDQKICsKICAjZW5kaWYgLyogUEFSU0VSX0RFRlNfSCAqLwogZGlm ZiAtLWdpdCBhL2dkYi9wcmludGNtZC5jIGIvZ2RiL3ByaW50Y21kLmMKLWluZGV4IDAzMGE0ZjIu LjMwNmJlMTggMTAwNjQ0CitpbmRleCAyYTBhODg2Li5jMTNhMDQ0IDEwMDY0NAogLS0tIGEvZ2Ri L3ByaW50Y21kLmMKICsrKyBiL2dkYi9wcmludGNtZC5jCi1AQCAtNDksNiArNDksNyBAQAotICNp bmNsdWRlICJjaGFyc2V0LmgiCitAQCAtNTAsNiArNTAsNyBAQAogICNpbmNsdWRlICJhcmNoLXV0 aWxzLmgiCiAgI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKKyAjaW5jbHVkZSAiZm9ybWF0Lmgi CiArI2luY2x1ZGUgImR3YXJmMmxvYy5oIgogIAogICNpZmRlZiBUVUkKICAjaW5jbHVkZSAidHVp L3R1aS5oIgkJLyogRm9yIHR1aV9hY3RpdmUgZXQgYWwuICAgKi8KLUBAIC05NzQsNiArOTc1LDEx IEBAIHByaW50X2NvbW1hbmRfMSAoY2hhciAqZXhwLCBpbnQgaW5zcGVjdCwgaW50IHZvaWRwcmlu dCkKK0BAIC05NjgsNiArOTY5LDExIEBAIHByaW50X2NvbW1hbmRfMSAoY2hhciAqZXhwLCBpbnQg aW5zcGVjdCwgaW50IHZvaWRwcmludCkKICAgIGVsc2UKICAgICAgdmFsID0gYWNjZXNzX3ZhbHVl X2hpc3RvcnkgKDApOwogIApAQCAtMzk2MSw3ICs3MjIwLDcgQEAgaW5kZXggMDMwYTRmMi4uMzA2 YmUxOCAxMDA2NDQKICAgIGlmICh2b2lkcHJpbnQgfHwgKHZhbCAmJiB2YWx1ZV90eXBlICh2YWwp ICYmCiAgCQkgICAgVFlQRV9DT0RFICh2YWx1ZV90eXBlICh2YWwpKSAhPSBUWVBFX0NPREVfVk9J RCkpCiAgICAgIHsKLUBAIC0xMDYyLDYgKzEwNjgsOSBAQCBvdXRwdXRfY29tbWFuZCAoY2hhciAq ZXhwLCBpbnQgZnJvbV90dHkpCitAQCAtMTA1Niw2ICsxMDYyLDkgQEAgb3V0cHV0X2NvbW1hbmQg KGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQogIAogICAgdmFsID0gZXZhbHVhdGVfZXhwcmVzc2lv biAoZXhwcik7CiAgCkBAIC0zOTcxLDcgKzcyMzAsNyBAQCBpbmRleCAwMzBhNGYyLi4zMDZiZTE4 IDEwMDY0NAogICAgYW5ub3RhdGVfdmFsdWVfYmVnaW4gKHZhbHVlX3R5cGUgKHZhbCkpOwogIAog ICAgZ2V0X2Zvcm1hdHRlZF9wcmludF9vcHRpb25zICgmb3B0cywgZm9ybWF0KTsKLUBAIC0xNDkx LDYgKzE1MDAsMjQgQEAgeF9jb21tYW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKK0BAIC0x NDg1LDYgKzE0OTQsMjQgQEAgeF9jb21tYW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKICAJ c2V0X2ludGVybmFsdmFyIChsb29rdXBfaW50ZXJuYWx2YXIgKCJfXyIpLCBsYXN0X2V4YW1pbmVf dmFsdWUpOwogICAgICB9CiAgfQpAQCAtMzk5Niw3ICs3MjU1LDcgQEAgaW5kZXggMDMwYTRmMi4u MzA2YmUxOCAxMDA2NDQKICAMCiAgCiAgLyogQWRkIGFuIGV4cHJlc3Npb24gdG8gdGhlIGF1dG8t ZGlzcGxheSBjaGFpbi4KLUBAIC0xOTg2LDYgKzIwMTMsMTAgQEAgcHJpbnRfdmFyaWFibGVfYW5k X3ZhbHVlIChjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgc3ltYm9sICp2YXIsCitAQCAtMTk4MCw2 ICsyMDA3LDEwIEBAIHByaW50X3ZhcmlhYmxlX2FuZF92YWx1ZSAoY29uc3QgY2hhciAqbmFtZSwg c3RydWN0IHN5bWJvbCAqdmFyLAogICAgICAgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9w dHM7CiAgCiAgICAgICAgdmFsID0gcmVhZF92YXJfdmFsdWUgKHZhciwgZnJhbWUpOwpAQCAtNDAw Nyw3ICs3MjY2LDcgQEAgaW5kZXggMDMwYTRmMi4uMzA2YmUxOCAxMDA2NDQKICAgICAgICBnZXRf dXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7CiAgICAgICAgb3B0cy5kZXJlZl9yZWYgPSAxOwog ICAgICAgIGNvbW1vbl92YWxfcHJpbnQgKHZhbCwgc3RyZWFtLCBpbmRlbnQsICZvcHRzLCBjdXJy ZW50X2xhbmd1YWdlKTsKLUBAIC0yODk5LDQgKzI5MzAsOCBAQCBTaG93IHByaW50aW5nIG9mIHNv dXJjZSBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgd2l0aCA8c3ltYm9sPi4iKSwgTlVMTCwKK0BA IC0yNjIwLDQgKzI2NTEsOCBAQCBTaG93IHByaW50aW5nIG9mIHNvdXJjZSBmaWxlbmFtZSBhbmQg bGluZSBudW1iZXIgd2l0aCA8c3ltYm9sPi4iKSwgTlVMTCwKICAgIGFkZF9jb20gKCJldmFsIiwg bm9fY2xhc3MsIGV2YWxfY29tbWFuZCwgXygiXAogIENvbnZlcnQgXCJwcmludGYgZm9ybWF0IHN0 cmluZ1wiLCBhcmcxLCBhcmcyLCBhcmczLCAuLi4sIGFyZ24gdG9cblwKICBhIGNvbW1hbmQgbGlu ZSwgYW5kIGNhbGwgaXQuIikpOwpAQCAtNDAxNiw2ICs3Mjc1LDQ2IEBAIGluZGV4IDAzMGE0ZjIu LjMwNmJlMTggMTAwNjQ0CiArICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChwcmludF90eXBl c19tYXJrX3VzZWQpOwogKyNlbmRpZgogIH0KK2RpZmYgLS1naXQgYS9nZGIvcHJvY2ZzLmMgYi9n ZGIvcHJvY2ZzLmMKK2luZGV4IDc3NGRmMmUuLjMyY2I0NjggMTAwNjQ0CistLS0gYS9nZGIvcHJv Y2ZzLmMKKysrKyBiL2dkYi9wcm9jZnMuYworQEAgLTM0ODYsNyArMzQ4Niw3IEBAIGluc2VydF9k YnhfbGlua19icHRfaW5fZmlsZSAoaW50IGZkLCBDT1JFX0FERFIgaWdub3JlZCkKKyAgIGxvbmcg c3RvcmFnZV9uZWVkZWQ7CisgICBDT1JFX0FERFIgc3ltX2FkZHI7CisgCistICBhYmZkID0gYmZk X2Zkb3BlbnIgKCJ1bmFtZWQiLCAwLCBmZCk7CisrICBhYmZkID0gZ2RiX2JmZF9yZWYgKGJmZF9m ZG9wZW5yICgidW5hbWVkIiwgMCwgZmQpKTsKKyAgIGlmIChhYmZkID09IE5VTEwpCisgICAgIHsK KyAgICAgICB3YXJuaW5nIChfKCJGYWlsZWQgdG8gY3JlYXRlIGEgYmZkOiAlcy4iKSwgYmZkX2Vy cm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworQEAgLTM0OTcsNyArMzQ5Nyw3IEBAIGluc2VydF9k YnhfbGlua19icHRfaW5fZmlsZSAoaW50IGZkLCBDT1JFX0FERFIgaWdub3JlZCkKKyAgICAgewor ICAgICAgIC8qIE5vdCB0aGUgY29ycmVjdCBmb3JtYXQsIHNvIHdlIGNhbiBub3QgcG9zc2libHkg ZmluZCB0aGUgZGJ4X2xpbmsKKyAJIHN5bWJvbCBpbiBpdC4JKi8KKy0gICAgICBiZmRfY2xvc2Ug KGFiZmQpOworKyAgICAgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOworICAgICAgIHJldHVybiAwOwor ICAgICB9CisgCitAQCAtMzUxMSwxNCArMzUxMSwxNCBAQCBpbnNlcnRfZGJ4X2xpbmtfYnB0X2lu X2ZpbGUgKGludCBmZCwgQ09SRV9BRERSIGlnbm9yZWQpCisgICAgICAgaWYgKGRieF9saW5rX2Jw dCA9PSBOVUxMKQorIAl7CisgCSAgd2FybmluZyAoXygiRmFpbGVkIHRvIGluc2VydCBkYnhfbGlu ayBicmVha3BvaW50LiIpKTsKKy0JICBiZmRfY2xvc2UgKGFiZmQpOworKwkgIGdkYl9iZmRfdW5y ZWYgKGFiZmQpOworIAkgIHJldHVybiAwOworIAl9CistICAgICAgYmZkX2Nsb3NlIChhYmZkKTsK KysgICAgICBnZGJfYmZkX3VucmVmIChhYmZkKTsKKyAgICAgICByZXR1cm4gMTsKKyAgICAgfQor IAorLSAgYmZkX2Nsb3NlIChhYmZkKTsKKysgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOworICAgcmV0 dXJuIDA7CisgfQorIAogZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0ZXJh dG9yLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkKIG5ldyBmaWxlIG1v ZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi41NjU0NTQ2CkBAIC01MDIwLDcgKzgzMTksNyBAQCBp bmRleCA2ZjY3YmRiLi41ZGRkNmJjIDEwMDY0NAogIAogIAwKIGRpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL3B5dGhvbi5jIGIvZ2RiL3B5dGhvbi9weXRob24uYwotaW5kZXggMTllYjdiNS4uMGU3MjU2 ZSAxMDA2NDQKK2luZGV4IGM2NmVmZTQuLjAyMTFmY2IgMTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9u L3B5dGhvbi5jCiArKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCiBAQCAtNjYsMTAgKzY2LDEzIEBA IHN0YXRpYyBjb25zdCBjaGFyICpnZGJweV9zaG91bGRfcHJpbnRfc3RhY2sgPSBweXRob25fZXhj cF9tZXNzYWdlOwpAQCAtNTAzNyw3ICs4MzM2LDcgQEAgaW5kZXggMTllYjdiNS4uMGU3MjU2ZSAx MDA2NDQKICAKICBzdGF0aWMgUHlNZXRob2REZWYgR2RiTWV0aG9kc1tdOwogIAotQEAgLTk3NCw2 ICs5NzcsNTMgQEAgZ2RicHlfcHJpbnRfc3RhY2sgKHZvaWQpCitAQCAtOTc5LDYgKzk4Miw1MyBA QCBnZGJweV9wcmludF9zdGFjayAodm9pZCkKICAKICAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgUHJv Z3NwYWNlLgogICAgIFRoZXJlIGFsd2F5cyBpcyBvbmUuICAqLwpAQCAtNTA5MSw3ICs4MzkwLDcg QEAgaW5kZXggMTllYjdiNS4uMGU3MjU2ZSAxMDA2NDQKICAKICBzdGF0aWMgUHlPYmplY3QgKgog IGdkYnB5X2dldF9jdXJyZW50X3Byb2dzcGFjZSAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0 ICp1bnVzZWQyKQotQEAgLTE0MTUsNiArMTQ2NSw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJN ZXRob2RzW10gPQorQEAgLTE0MjAsNiArMTQ3MCw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJN ZXRob2RzW10gPQogICAgICAiR2V0IGEgdmFsdWUgZnJvbSBoaXN0b3J5IiB9LAogICAgeyAiZXhl Y3V0ZSIsIChQeUNGdW5jdGlvbikgZXhlY3V0ZV9nZGJfY29tbWFuZCwgTUVUSF9WQVJBUkdTIHwg TUVUSF9LRVlXT1JEUywKICAgICAgIkV4ZWN1dGUgYSBnZGIgY29tbWFuZCIgfSwKQEAgLTUxMTMs OCArODQxMiw2MjcgQEAgaW5kZXggZGQ3MDY2Zi4uZjBmNmU5MCAxMDA2NDQKICBpbnQgYXBwbHlf dmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZh bGFkZHIsCiAgCQkJICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3Ms CiAgCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCitkaWZmIC0t Z2l0IGEvZ2RiL3JlY29yZC5jIGIvZ2RiL3JlY29yZC5jCitpbmRleCBiYjBmZTUyLi5lYzQyYWFj IDEwMDY0NAorLS0tIGEvZ2RiL3JlY29yZC5jCisrKysgYi9nZGIvcmVjb3JkLmMKK0BAIC0zMiw2 ICszMiw3IEBACisgI2luY2x1ZGUgImdjb3JlLmgiCisgI2luY2x1ZGUgImV2ZW50LWxvb3AuaCIK KyAjaW5jbHVkZSAiaW5mLWxvb3AuaCIKKysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorICNpbmNs dWRlIDxzaWduYWwuaD4KKyAKK0BAIC0yNjM4LDcgKzI2MzksNyBAQCByZWNvcmRfc2F2ZV9jbGVh bnVwcyAodm9pZCAqZGF0YSkKKyAgIGJmZCAqb2JmZCA9IGRhdGE7CisgICBjaGFyICpwYXRobmFt ZSA9IHhzdHJkdXAgKGJmZF9nZXRfZmlsZW5hbWUgKG9iZmQpKTsKKyAKKy0gIGJmZF9jbG9zZSAo b2JmZCk7CisrICBnZGJfYmZkX3VucmVmIChvYmZkKTsKKyAgIHVubGluayAocGF0aG5hbWUpOwor ICAgeGZyZWUgKHBhdGhuYW1lKTsKKyB9CitAQCAtMjg1NCw3ICsyODU1LDcgQEAgY21kX3JlY29y ZF9zYXZlIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgICAgIH0KKyAKKyAgIGRvX2NsZWFu dXBzIChzZXRfY2xlYW51cHMpOworLSAgYmZkX2Nsb3NlIChvYmZkKTsKKysgIGdkYl9iZmRfdW5y ZWYgKG9iZmQpOworICAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKKyAKKyAgIC8q IFN1Y2NlZWRlZC4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jIGIvZ2Ri L3JlbW90ZS1tMzJyLXNkaS5jCitpbmRleCA0N2Y0NDA1Li5iNGI3MzI0IDEwMDY0NAorLS0tIGEv Z2RiL3JlbW90ZS1tMzJyLXNkaS5jCisrKysgYi9nZGIvcmVtb3RlLW0zMnItc2RpLmMKK0BAIC0z OSw2ICszOSw3IEBACisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisgI2luY2x1ZGUgPHNpZ25hbC5o PgorICNpbmNsdWRlIDx0aW1lLmg+CisrI2luY2x1ZGUgImdkYl9iZmQuaCIKKyAKKyAKKyAjaW5j bHVkZSAic2VyaWFsLmgiCitAQCAtMTI1NywxMyArMTI1OCwxMyBAQCBtMzJyX2xvYWQgKGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0eSkKKyAgIGlmICghZmlsZW5hbWUpCisgICAgIGZpbGVuYW1lID0g Z2V0X2V4ZWNfZmlsZSAoMSk7CisgCistICBwYmZkID0gYmZkX29wZW5yIChmaWxlbmFtZSwgZ251 dGFyZ2V0KTsKKysgIHBiZmQgPSBnZGJfYmZkX3JlZiAoYmZkX29wZW5yIChmaWxlbmFtZSwgZ251 dGFyZ2V0KSk7CisgICBpZiAocGJmZCA9PSBOVUxMKQorICAgICB7CisgICAgICAgcGVycm9yX3dp dGhfbmFtZSAoZmlsZW5hbWUpOworICAgICAgIHJldHVybjsKKyAgICAgfQorLSAgb2xkX2NoYWlu ID0gbWFrZV9jbGVhbnVwX2JmZF9jbG9zZSAocGJmZCk7CisrICBvbGRfY2hhaW4gPSBtYWtlX2Ns ZWFudXBfYmZkX3VucmVmIChwYmZkKTsKKyAKKyAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAocGJm ZCwgYmZkX29iamVjdCkpCisgICAgIGVycm9yIChfKCJcIiVzXCIgaXMgbm90IGFuIG9iamVjdCBm aWxlOiAlcyIpLCBmaWxlbmFtZSwKK2RpZmYgLS1naXQgYS9nZGIvcmVtb3RlLW1pcHMuYyBiL2dk Yi9yZW1vdGUtbWlwcy5jCitpbmRleCBiYWJiZjE5Li5iNDYzMjVmIDEwMDY0NAorLS0tIGEvZ2Ri L3JlbW90ZS1taXBzLmMKKysrKyBiL2dkYi9yZW1vdGUtbWlwcy5jCitAQCAtMzYsNiArMzYsNyBA QAorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlICJtaXBzLXRkZXAuaCIKKyAjaW5jbHVk ZSAiZ2RidGhyZWFkLmgiCisrI2luY2x1ZGUgImdkYl9iZmQuaCIKKyAMCisgCisgLyogQnJlYWtw b2ludCB0eXBlcy4gIFZhbHVlcyAwLCAxLCBhbmQgMiBtdXN0IGFncmVlIHdpdGggdGhlIHdhdGNo CitAQCAtMjc4MywyMCArMjc4NCwyMyBAQCBtaXBzX2xvYWRfc3JlYyAoY2hhciAqYXJncykKKyAg IHVuc2lnbmVkIGludCBpOworICAgdW5zaWduZWQgaW50IHNyZWNfZnJhbWUgPSAyMDA7CisgICBp bnQgcmVjbGVuOworKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CisgICBzdGF0aWMgaW50IGhh c2htYXJrID0gMTsKKyAKKyAgIGJ1ZmZlciA9IGFsbG9jYSAoc3JlY19mcmFtZSAqIDIgKyAyNTYp OworIAorLSAgYWJmZCA9IGJmZF9vcGVuciAoYXJncywgMCk7CisrICBhYmZkID0gZ2RiX2JmZF9y ZWYgKGJmZF9vcGVuciAoYXJncywgMCkpOworICAgaWYgKCFhYmZkKQorICAgICB7CisgICAgICAg cHJpbnRmX2ZpbHRlcmVkICgiVW5hYmxlIHRvIG9wZW4gZmlsZSAlc1xuIiwgYXJncyk7CisgICAg ICAgcmV0dXJuOworICAgICB9CisgCisrICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX2JmZF91bnJl ZiAoYWJmZCk7CisgICBpZiAoYmZkX2NoZWNrX2Zvcm1hdCAoYWJmZCwgYmZkX29iamVjdCkgPT0g MCkKKyAgICAgeworICAgICAgIHByaW50Zl9maWx0ZXJlZCAoIkZpbGUgaXMgbm90IGFuIG9iamVj dCBmaWxlXG4iKTsKKysgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisgICAgICAgcmV0dXJu OworICAgICB9CisgCitAQCAtMjg1MCw2ICsyODU0LDcgQEAgbWlwc19sb2FkX3NyZWMgKGNoYXIg KmFyZ3MpCisgICBzZW5kX3NyZWMgKHNyZWMsIHJlY2xlbiwgYWJmZC0+c3RhcnRfYWRkcmVzcyk7 CisgCisgICBzZXJpYWxfZmx1c2hfaW5wdXQgKG1pcHNfZGVzYyk7CisrICBkb19jbGVhbnVwcyAo Y2xlYW51cCk7CisgfQorIAorIC8qCitAQCAtMzM2NiwyMCArMzM3MSwyMyBAQCBwbW9uX2xvYWRf ZmFzdCAoY2hhciAqZmlsZSkKKyAgIGludCBiaW50b3RhbCA9IDA7CisgICBpbnQgZmluYWwgPSAw OworICAgaW50IGZpbmlzaGVkID0gMDsKKysgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOworIAor ICAgYnVmZmVyID0gKGNoYXIgKikgeG1hbGxvYyAoTUFYUkVDU0laRSArIDEpOworICAgYmluYnVm ID0gKHVuc2lnbmVkIGNoYXIgKikgeG1hbGxvYyAoQklOQ0hVTkspOworIAorLSAgYWJmZCA9IGJm ZF9vcGVuciAoZmlsZSwgMCk7CisrICBhYmZkID0gZ2RiX2JmZF9yZWYgKGJmZF9vcGVuciAoZmls ZSwgMCkpOworICAgaWYgKCFhYmZkKQorICAgICB7CisgICAgICAgcHJpbnRmX2ZpbHRlcmVkICgi VW5hYmxlIHRvIG9wZW4gZmlsZSAlc1xuIiwgZmlsZSk7CisgICAgICAgcmV0dXJuOworICAgICB9 CisrICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoYWJmZCk7CisgCisgICBpZiAo YmZkX2NoZWNrX2Zvcm1hdCAoYWJmZCwgYmZkX29iamVjdCkgPT0gMCkKKyAgICAgeworICAgICAg IHByaW50Zl9maWx0ZXJlZCAoIkZpbGUgaXMgbm90IGFuIG9iamVjdCBmaWxlXG4iKTsKKysgICAg ICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisgICAgICAgcmV0dXJuOworICAgICB9CisgCitAQCAt MzUwMyw2ICszNTExLDcgQEAgcG1vbl9sb2FkX2Zhc3QgKGNoYXIgKmZpbGUpCisgICAgICAgcG1v bl9lbmRfZG93bmxvYWQgKGZpbmFsLCBiaW50b3RhbCk7CisgICAgIH0KKyAKKysgIGRvX2NsZWFu dXBzIChjbGVhbnVwKTsKKyAgIHJldHVybjsKKyB9CisgCitkaWZmIC0tZ2l0IGEvZ2RiL3JlbW90 ZS5jIGIvZ2RiL3JlbW90ZS5jCitpbmRleCAxYzkzNjdkLi42Y2NhYjU0IDEwMDY0NAorLS0tIGEv Z2RiL3JlbW90ZS5jCisrKysgYi9nZGIvcmVtb3RlLmMKK0BAIC00Miw2ICs0Miw3IEBACisgI2lu Y2x1ZGUgImNsaS9jbGktZGVjb2RlLmgiCisgI2luY2x1ZGUgImNsaS9jbGktc2V0c2hvdy5oIgor ICNpbmNsdWRlICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgiCisrI2luY2x1ZGUgImdkYl9iZmQuaCIK KyAKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KK0BAIC05ODIz LDExICs5ODI0LDE1IEBAIHJlbW90ZV9maWxlbmFtZV9wIChjb25zdCBjaGFyICpmaWxlbmFtZSkK KyBiZmQgKgorIHJlbW90ZV9iZmRfb3BlbiAoY29uc3QgY2hhciAqcmVtb3RlX2ZpbGUsIGNvbnN0 IGNoYXIgKnRhcmdldCkKKyB7CistICByZXR1cm4gYmZkX29wZW5yX2lvdmVjIChyZW1vdGVfZmls ZSwgdGFyZ2V0LAorLQkJCSAgcmVtb3RlX2JmZF9pb3ZlY19vcGVuLCBOVUxMLAorLQkJCSAgcmVt b3RlX2JmZF9pb3ZlY19wcmVhZCwKKy0JCQkgIHJlbW90ZV9iZmRfaW92ZWNfY2xvc2UsCistCQkJ ICByZW1vdGVfYmZkX2lvdmVjX3N0YXQpOworKyAgYmZkICphYmZkID0gYmZkX29wZW5yX2lvdmVj IChyZW1vdGVfZmlsZSwgdGFyZ2V0LAorKwkJCSAgICAgICByZW1vdGVfYmZkX2lvdmVjX29wZW4s IE5VTEwsCisrCQkJICAgICAgIHJlbW90ZV9iZmRfaW92ZWNfcHJlYWQsCisrCQkJICAgICAgIHJl bW90ZV9iZmRfaW92ZWNfY2xvc2UsCisrCQkJICAgICAgIHJlbW90ZV9iZmRfaW92ZWNfc3RhdCk7 CisrCisrICBpZiAoYWJmZCAhPSBOVUxMKQorKyAgICBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lIChh YmZkKTsKKysgIHJldHVybiBhYmZkOworIH0KKyAKKyB2b2lkCitkaWZmIC0tZ2l0IGEvZ2RiL3Jz NjAwMC1uYXQuYyBiL2dkYi9yczYwMDAtbmF0LmMKK2luZGV4IDBhMjAwMGEuLjAxN2U5OTcgMTAw NjQ0CistLS0gYS9nZGIvcnM2MDAwLW5hdC5jCisrKysgYi9nZGIvcnM2MDAwLW5hdC5jCitAQCAt NzMwLDcgKzczMCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgdm1hcCAqCisgYWRkX3ZtYXAgKExkSW5mbyAq bGRpKQorIHsKKyAgIGJmZCAqYWJmZCwgKmxhc3Q7CistICBjaGFyICptZW0sICpvYmpuYW1lLCAq ZmlsZW5hbWU7CisrICBjaGFyICptZW0sICpmaWxlbmFtZTsKKyAgIHN0cnVjdCBvYmpmaWxlICpv Ymo7CisgICBzdHJ1Y3Qgdm1hcCAqdnA7CisgICBpbnQgZmQ7CitAQCAtNzQzLDIxICs3NDMsMjIg QEAgYWRkX3ZtYXAgKExkSW5mbyAqbGRpKQorICAgZmlsZW5hbWUgPSBMRElfRklMRU5BTUUgKGxk aSwgYXJjaDY0KTsKKyAgIG1lbSA9IGZpbGVuYW1lICsgc3RybGVuIChmaWxlbmFtZSkgKyAxOwor ICAgbWVtID0geHN0cmR1cCAobWVtKTsKKy0gIG9iam5hbWUgPSB4c3RyZHVwIChmaWxlbmFtZSk7 CisgCisgICBmZCA9IExESV9GRCAobGRpLCBhcmNoNjQpOworICAgaWYgKGZkIDwgMCkKKyAgICAg LyogTm90ZSB0aGF0IHRoaXMgb3BlbnMgaXQgb25jZSBmb3IgZXZlcnkgbWVtYmVyOyBhIHBvc3Np YmxlCisgICAgICAgIGVuaGFuY2VtZW50IHdvdWxkIGJlIHRvIG9ubHkgb3BlbiBpdCBvbmNlIGZv ciBldmVyeSBvYmplY3QuICAqLworLSAgICBhYmZkID0gYmZkX29wZW5yIChvYmpuYW1lLCBnbnV0 YXJnZXQpOworKyAgICBhYmZkID0gYmZkX29wZW5yIChmaWxlbmFtZSwgZ251dGFyZ2V0KTsKKyAg IGVsc2UKKy0gICAgYWJmZCA9IGJmZF9mZG9wZW5yIChvYmpuYW1lLCBnbnV0YXJnZXQsIGZkKTsK KysgICAgYWJmZCA9IGJmZF9mZG9wZW5yIChmaWxlbmFtZSwgZ251dGFyZ2V0LCBmZCk7CisrICBh YmZkID0gZ2RiX2JmZF9yZWYgKGFiZmQpOworICAgaWYgKCFhYmZkKQorICAgICB7CisgICAgICAg d2FybmluZyAoXygiQ291bGQgbm90IG9wZW4gYCVzJyBhcyBhbiBleGVjdXRhYmxlIGZpbGU6ICVz IiksCistCSAgICAgICBvYmpuYW1lLCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Cisr CSAgICAgICBmaWxlbmFtZSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworICAgICAg IHJldHVybiBOVUxMOworICAgICB9CisrICBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lIChhYmZkKTsK KyAKKyAgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIG9iamVjdCBmaWxlLiAgKi8KKyAKK0BAIC03 NjgsMjMgKzc2OSwyMyBAQCBhZGRfdm1hcCAoTGRJbmZvICpsZGkpCisgICAgIHsKKyAgICAgICBs YXN0ID0gMDsKKyAgICAgICAvKiBGSVhNRT8/PyBhbSBJIHRvc3NpbmcgQkZEcz8gIGJmZD8gICov CistICAgICAgd2hpbGUgKChsYXN0ID0gYmZkX29wZW5yX25leHRfYXJjaGl2ZWRfZmlsZSAoYWJm ZCwgbGFzdCkpKQorKyAgICAgIHdoaWxlICgobGFzdCA9IGdkYl9iZmRfcmVmIChiZmRfb3BlbnJf bmV4dF9hcmNoaXZlZF9maWxlIChhYmZkLCBsYXN0KSkpKQorIAlpZiAoc3RyY21wIChtZW0sIGxh c3QtPmZpbGVuYW1lKSA9PSAwKQorIAkgIGJyZWFrOworIAorICAgICAgIGlmICghbGFzdCkKKyAJ eworLQkgIHdhcm5pbmcgKF8oIlwiJXNcIjogbWVtYmVyIFwiJXNcIiBtaXNzaW5nLiIpLCBvYmpu YW1lLCBtZW0pOworLQkgIGJmZF9jbG9zZSAoYWJmZCk7CisrCSAgd2FybmluZyAoXygiXCIlc1wi OiBtZW1iZXIgXCIlc1wiIG1pc3NpbmcuIiksIGZpbGVuYW1lLCBtZW0pOworKwkgIGdkYl9iZmRf dW5yZWYgKGFiZmQpOworIAkgIHJldHVybiBOVUxMOworIAl9CisgCisgICAgICAgaWYgKCFiZmRf Y2hlY2tfZm9ybWF0IChsYXN0LCBiZmRfb2JqZWN0KSkKKyAJeworIAkgIHdhcm5pbmcgKF8oIlwi JXNcIjogbWVtYmVyIFwiJXNcIiBub3QgaW4gZXhlY3V0YWJsZSBmb3JtYXQ6ICVzLiIpLAorLQkJ ICAgb2JqbmFtZSwgbWVtLCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7CistCSAgYmZk X2Nsb3NlIChsYXN0KTsKKy0JICBiZmRfY2xvc2UgKGFiZmQpOworKwkJICAgZmlsZW5hbWUsIG1l bSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworKwkgIGdkYl9iZmRfdW5yZWYgKGxh c3QpOworKwkgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOworIAkgIHJldHVybiBOVUxMOworIAl9Cisg CitAQCAtNzkzLDExICs3OTQsMTEgQEAgYWRkX3ZtYXAgKExkSW5mbyAqbGRpKQorICAgZWxzZQor ICAgICB7CisgICAgICAgd2FybmluZyAoXygiXCIlc1wiOiBub3QgaW4gZXhlY3V0YWJsZSBmb3Jt YXQ6ICVzLiIpLAorLQkgICAgICAgb2JqbmFtZSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAo KSkpOworLSAgICAgIGJmZF9jbG9zZSAoYWJmZCk7CisrCSAgICAgICBmaWxlbmFtZSwgYmZkX2Vy cm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworKyAgICAgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOwor ICAgICAgIHJldHVybiBOVUxMOworICAgICB9CistICBvYmogPSBhbGxvY2F0ZV9vYmpmaWxlICh2 cC0+YmZkLCAwKTsKKysgIG9iaiA9IGFsbG9jYXRlX29iamZpbGUgKGdkYl9iZmRfcmVmICh2cC0+ YmZkKSwgMCk7CisgICB2cC0+b2JqZmlsZSA9IG9iajsKKyAKKyAgIC8qIEFsd2F5cyBhZGQgc3lt Ym9scyBmb3IgdGhlIG1haW4gb2JqZmlsZS4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLWRh cndpbi5jIGIvZ2RiL3NvbGliLWRhcndpbi5jCitpbmRleCBkNTJmYjQ2Li43MTA5ZWFkIDEwMDY0 NAorLS0tIGEvZ2RiL3NvbGliLWRhcndpbi5jCisrKysgYi9nZGIvc29saWItZGFyd2luLmMKK0BA IC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgImluZmVyaW9yLmgiCisgI2luY2x1ZGUgInJlZ2Nh Y2hlLmgiCisgI2luY2x1ZGUgImdkYnRocmVhZC5oIgorKyNpbmNsdWRlICJnZGJfYmZkLmgiCisg CisgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKyAKK0BAIC0zNTYsNiArMzU3LDcgQEAgZGFyd2lu X3NvbGliX2dldF9hbGxfaW1hZ2VfaW5mb19hZGRyX2F0X2luaXQgKHN0cnVjdCBkYXJ3aW5faW5m byAqaW5mbykKKyAgIGdkYl9ieXRlICppbnRlcnBfbmFtZTsKKyAgIENPUkVfQUREUiBsb2FkX2Fk ZHIgPSAwOworICAgYmZkICpkeWxkX2JmZCA9IE5VTEw7CisrICBzdHJ1Y3QgY2xlYW51cCAqY2xl YW51cDsKKyAKKyAgIC8qIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgd29yayB3aXRoIGFuIGF0dGFjaGVk IHByb2Nlc3MuICAqLworICAgaWYgKGN1cnJlbnRfaW5mZXJpb3IgKCktPmF0dGFjaF9mbGFnKQor QEAgLTM2NiwyNCArMzY4LDMwIEBAIGRhcndpbl9zb2xpYl9nZXRfYWxsX2ltYWdlX2luZm9fYWRk cl9hdF9pbml0IChzdHJ1Y3QgZGFyd2luX2luZm8gKmluZm8pCisgICBpZiAoIWludGVycF9uYW1l KQorICAgICByZXR1cm47CisgCisrICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFu dXAsIE5VTEwpOworKworICAgLyogQ3JlYXRlIGEgYmZkIGZvciB0aGUgaW50ZXJwcmV0ZXIuICAq LworLSAgZHlsZF9iZmQgPSBiZmRfb3BlbnIgKGludGVycF9uYW1lLCBnbnV0YXJnZXQpOworKyAg ZHlsZF9iZmQgPSBnZGJfYmZkX3JlZiAoYmZkX29wZW5yIChpbnRlcnBfbmFtZSwgZ251dGFyZ2V0 KSk7CisgICBpZiAoZHlsZF9iZmQpCisgICAgIHsKKyAgICAgICBiZmQgKnN1YjsKKyAKKysgICAg ICBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChkeWxkX2JmZCk7CisgICAgICAgc3ViID0gYmZkX21h Y2hfb19mYXRfZXh0cmFjdCAoZHlsZF9iZmQsIGJmZF9vYmplY3QsCisgCQkJCSAgICBnZGJhcmNo X2JmZF9hcmNoX2luZm8gKHRhcmdldF9nZGJhcmNoKSk7CisgICAgICAgaWYgKHN1YikKKy0JZHls ZF9iZmQgPSBzdWI7CistICAgICAgZWxzZQorIAl7CistCSAgYmZkX2Nsb3NlIChkeWxkX2JmZCk7 CistCSAgZHlsZF9iZmQgPSBOVUxMOworKwkgIGR5bGRfYmZkID0gZ2RiX2JmZF9yZWYgKHN1Yik7 CisrCSAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoc3ViKTsKKyAJfQorKyAgICAgIGVsc2UKKysJ ZHlsZF9iZmQgPSBOVUxMOworICAgICB9CisgICBpZiAoIWR5bGRfYmZkKQorLSAgICByZXR1cm47 CisrICAgIHsKKysgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisrICAgICAgcmV0dXJuOwor KyAgICB9CisgCisgICAvKiBXZSBmaW5kIHRoZSBkeW5hbWljIGxpbmtlcidzIGJhc2UgYWRkcmVz cyBieSBleGFtaW5pbmcKKyAgICAgIHRoZSBjdXJyZW50IHBjICh3aGljaCBzaG91bGQgcG9pbnQg YXQgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUKK0BAIC0zOTUsNyArNDAzLDcgQEAgZGFyd2luX3Nv bGliX2dldF9hbGxfaW1hZ2VfaW5mb19hZGRyX2F0X2luaXQgKHN0cnVjdCBkYXJ3aW5faW5mbyAq aW5mbykKKyAgIGluZm8tPmFsbF9pbWFnZV9hZGRyID0KKyAgICAgbG9va3VwX3N5bWJvbF9mcm9t X2JmZCAoZHlsZF9iZmQsICJfZHlsZF9hbGxfaW1hZ2VfaW5mb3MiKTsKKyAKKy0gIGJmZF9jbG9z ZSAoZHlsZF9iZmQpOworKyAgZG9fY2xlYW51cHMgKGNsZWFudXApOworIAorICAgaWYgKGluZm8t PmFsbF9pbWFnZV9hZGRyID09IDApCisgICAgIHJldHVybjsKK0BAIC01MDksMTcgKzUxNywxMCBA QCBkYXJ3aW5fYmZkX29wZW4gKGNoYXIgKnBhdGhuYW1lKQorIAkJCQlnZGJhcmNoX2JmZF9hcmNo X2luZm8gKHRhcmdldF9nZGJhcmNoKSk7CisgICBpZiAoIXJlcykKKyAgICAgeworLSAgICAgIGJm ZF9jbG9zZSAoYWJmZCk7CistICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZm91bmRfcGF0aG5h bWUpOworKyAgICAgIG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKGFiZmQpOworICAgICAgIGVycm9y IChfKCJgJXMnOiBub3QgYSBzaGFyZWQtbGlicmFyeTogJXMiKSwKKy0JICAgICBmb3VuZF9wYXRo bmFtZSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworKwkgICAgIGJmZF9nZXRfZmls ZW5hbWUgKGFiZmQpLCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7CisgICAgIH0KKy0K Ky0gIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaWxlbmFtZSBpcyBtYWxsb2MnZWQuICBUaGUgY3Vy cmVudCBmaWxlbmFtZQorLSAgICAgZm9yIGZhdC1iaW5hcmllcyBCRkRzIGlzIGEgbmFtZSB0aGF0 IHdhcyBnZW5lcmF0ZWQgYnkgQkZELCB1c3VhbGx5CistICAgICBhIHN0YXRpYyBzdHJpbmcgY29u dGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgYXJjaGl0ZWN0dXJlLiAgKi8KKy0gIHJlcy0+ZmlsZW5h bWUgPSB4c3RyZHVwIChwYXRobmFtZSk7CistCisgICByZXR1cm4gcmVzOworIH0KKyAKK2RpZmYg LS1naXQgYS9nZGIvc29saWItZHNidC5jIGIvZ2RiL3NvbGliLWRzYnQuYworaW5kZXggMjUwMGMx Zi4uZmNjMDFhOCAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpYi1kc2J0LmMKKysrKyBiL2dkYi9zb2xp Yi1kc2J0LmMKK0BAIC0zMCw2ICszMCw3IEBACisgI2luY2x1ZGUgImdkYmNtZC5oIgorICNpbmNs dWRlICJlbGYtYmZkLmgiCisgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKysjaW5jbHVkZSAiZ2Ri X2JmZC5oIgorIAorICNkZWZpbmUgR09UX01PRFVMRV9PRkZTRVQgNAorIAorQEAgLTg5OSw3ICs5 MDAsNyBAQCBlbmFibGVfYnJlYWsyICh2b2lkKQorIAl7CisgCSAgd2FybmluZyAoXygiQ291bGQg bm90IGZpbmQgc3ltYm9sIF9kbF9kZWJ1Z19hZGRyIGluIGR5bmFtaWMgbGlua2VyIikpOworIAkg IGVuYWJsZV9icmVha19mYWlsdXJlX3dhcm5pbmcgKCk7CistCSAgYmZkX2Nsb3NlICh0bXBfYmZk KTsKKysJICBnZGJfYmZkX3VucmVmICh0bXBfYmZkKTsKKyAJICByZXR1cm4gMDsKKyAJfQorIAor QEAgLTk0OCwxMyArOTQ5LDEzIEBAIGVuYWJsZV9icmVhazIgKHZvaWQpCisgCQkgICAgICIoYXQg YWRkcmVzcyAlcykgZnJvbSBkeW5hbWljIGxpbmtlciIpLAorIAkgICAgICAgICAgIGhleF9zdHJp bmdfY3VzdG9tIChhZGRyICsgOCwgOCkpOworIAkgIGVuYWJsZV9icmVha19mYWlsdXJlX3dhcm5p bmcgKCk7CistCSAgYmZkX2Nsb3NlICh0bXBfYmZkKTsKKysJICBnZGJfYmZkX3VucmVmICh0bXBf YmZkKTsKKyAJICByZXR1cm4gMDsKKyAJfQorICAgICAgIGFkZHIgPSBleHRyYWN0X3Vuc2lnbmVk X2ludGVnZXIgKGFkZHJfYnVmLCBzaXplb2YgYWRkcl9idWYsIGJ5dGVfb3JkZXIpOworIAorICAg ICAgIC8qIFdlJ3JlIGRvbmUgd2l0aCB0aGUgdGVtcG9yYXJ5IGJmZC4gICovCistICAgICAgYmZk X2Nsb3NlICh0bXBfYmZkKTsKKysgICAgICBnZGJfYmZkX3VucmVmICh0bXBfYmZkKTsKKyAKKyAg ICAgICAvKiBXZSdyZSBhbHNvIGRvbmUgd2l0aCB0aGUgbG9hZG1hcC4gICovCisgICAgICAgeGZy ZWUgKGxkbSk7CitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLWZydi5jIGIvZ2RiL3NvbGliLWZydi5j CitpbmRleCAyZjJjOGIwLi4wZjU5NTM1IDEwMDY0NAorLS0tIGEvZ2RiL3NvbGliLWZydi5jCisr KysgYi9nZGIvc29saWItZnJ2LmMKK0BAIC0zMSw2ICszMSw3IEBACisgI2luY2x1ZGUgImdkYmNt ZC5oIgorICNpbmNsdWRlICJlbGYvZnJ2LmgiCisgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKysj aW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorIC8qIEZsYWcgd2hpY2ggaW5kaWNhdGVzIHdoZXRoZXIg aW50ZXJuYWwgZGVidWcgbWVzc2FnZXMgc2hvdWxkIGJlIHByaW50ZWQuICAqLworIHN0YXRpYyBp bnQgc29saWJfZnJ2X2RlYnVnOworQEAgLTU3NCw3ICs1NzUsNyBAQCBlbmFibGVfYnJlYWsyICh2 b2lkKQorIAl7CisgCSAgd2FybmluZyAoXygiVW5hYmxlIHRvIGRldGVybWluZSBkeW5hbWljIGxp bmtlciBsb2FkbWFwIGFkZHJlc3MuIikpOworIAkgIGVuYWJsZV9icmVha19mYWlsdXJlX3dhcm5p bmcgKCk7CistCSAgYmZkX2Nsb3NlICh0bXBfYmZkKTsKKysJICBnZGJfYmZkX3VucmVmICh0bXBf YmZkKTsKKyAJICByZXR1cm4gMDsKKyAJfQorIAorQEAgLTU4OSw3ICs1OTAsNyBAQCBlbmFibGVf YnJlYWsyICh2b2lkKQorIAkgIHdhcm5pbmcgKF8oIlVuYWJsZSB0byBsb2FkIGR5bmFtaWMgbGlu a2VyIGxvYWRtYXAgYXQgYWRkcmVzcyAlcy4iKSwKKyAJICAgICAgICAgICBoZXhfc3RyaW5nX2N1 c3RvbSAoaW50ZXJwX2xvYWRtYXBfYWRkciwgOCkpOworIAkgIGVuYWJsZV9icmVha19mYWlsdXJl X3dhcm5pbmcgKCk7CistCSAgYmZkX2Nsb3NlICh0bXBfYmZkKTsKKysJICBnZGJfYmZkX3VucmVm ICh0bXBfYmZkKTsKKyAJICByZXR1cm4gMDsKKyAJfQorIAorQEAgLTYyMyw3ICs2MjQsNyBAQCBl bmFibGVfYnJlYWsyICh2b2lkKQorIAkgIHdhcm5pbmcgKF8oIkNvdWxkIG5vdCBmaW5kIHN5bWJv bCBfZGxfZGVidWdfYWRkciAiCisgCQkgICAgICJpbiBkeW5hbWljIGxpbmtlciIpKTsKKyAJICBl bmFibGVfYnJlYWtfZmFpbHVyZV93YXJuaW5nICgpOworLQkgIGJmZF9jbG9zZSAodG1wX2JmZCk7 CisrCSAgZ2RiX2JmZF91bnJlZiAodG1wX2JmZCk7CisgCSAgcmV0dXJuIDA7CisgCX0KKyAKK0BA IC02NzQsNyArNjc1LDcgQEAgZW5hYmxlX2JyZWFrMiAodm9pZCkKKyAJCSAgICAgIihhdCBhZGRy ZXNzICVzKSBmcm9tIGR5bmFtaWMgbGlua2VyIiksCisgCSAgICAgICAgICAgaGV4X3N0cmluZ19j dXN0b20gKGFkZHIgKyA4LCA4KSk7CisgCSAgZW5hYmxlX2JyZWFrX2ZhaWx1cmVfd2FybmluZyAo KTsKKy0JICBiZmRfY2xvc2UgKHRtcF9iZmQpOworKwkgIGdkYl9iZmRfdW5yZWYgKHRtcF9iZmQp OworIAkgIHJldHVybiAwOworIAl9CisgICAgICAgYWRkciA9IGV4dHJhY3RfdW5zaWduZWRfaW50 ZWdlciAoYWRkcl9idWYsIHNpemVvZiBhZGRyX2J1ZiwgYnl0ZV9vcmRlcik7CitAQCAtNjg2LDEz ICs2ODcsMTMgQEAgZW5hYmxlX2JyZWFrMiAodm9pZCkKKyAJCSAgICAgIihhdCBhZGRyZXNzICVz KSBmcm9tIGR5bmFtaWMgbGlua2VyIiksCisgCSAgICAgICAgICAgaGV4X3N0cmluZ19jdXN0b20g KGFkZHIsIDgpKTsKKyAJICBlbmFibGVfYnJlYWtfZmFpbHVyZV93YXJuaW5nICgpOworLQkgIGJm ZF9jbG9zZSAodG1wX2JmZCk7CisrCSAgZ2RiX2JmZF91bnJlZiAodG1wX2JmZCk7CisgCSAgcmV0 dXJuIDA7CisgCX0KKyAgICAgICBhZGRyID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChhZGRy X2J1Ziwgc2l6ZW9mIGFkZHJfYnVmLCBieXRlX29yZGVyKTsKKyAKKyAgICAgICAvKiBXZSdyZSBk b25lIHdpdGggdGhlIHRlbXBvcmFyeSBiZmQuICAqLworLSAgICAgIGJmZF9jbG9zZSAodG1wX2Jm ZCk7CisrICAgICAgZ2RiX2JmZF91bnJlZiAodG1wX2JmZCk7CisgCisgICAgICAgLyogV2UncmUg YWxzbyBkb25lIHdpdGggdGhlIGxvYWRtYXAuICAqLworICAgICAgIHhmcmVlIChsZG0pOworZGlm ZiAtLWdpdCBhL2dkYi9zb2xpYi1wYTY0LmMgYi9nZGIvc29saWItcGE2NC5jCitpbmRleCAyYjhk MDYxLi5iNTViNjdjIDEwMDY0NAorLS0tIGEvZ2RiL3NvbGliLXBhNjQuYworKysrIGIvZ2RiL3Nv bGliLXBhNjQuYworQEAgLTM2Miw3ICszNjIsNyBAQCBtYW5wYWdlIGZvciBtZXRob2RzIHRvIHBy aXZhdGVseSBtYXAgc2hhcmVkIGxpYnJhcnkgdGV4dC4iKSk7CisgCSB0byBmaW5kIGFueSBtYWdp YyBmb3JtdWxhIHRvIGZpbmQgaXQgZm9yIFNvbGFyaXMgKGFwcGVhcnMgdG8KKyAJIGJlIHRyaXZp YWwgb24gR05VL0xpbnV4KS4gIFRoZXJlZm9yZSwgd2UgaGF2ZSB0byB0cnkgYW4gYWx0ZXJuYXRl CisgCSBtZWNoYW5pc20gdG8gZmluZCB0aGUgZHluYW1pYyBsaW5rZXIncyBiYXNlIGFkZHJlc3Mu ICAqLworLSAgICAgIHRtcF9iZmQgPSBiZmRfb3BlbnIgKGJ1ZiwgZ251dGFyZ2V0KTsKKysgICAg ICB0bXBfYmZkID0gZ2RiX2JmZF9yZWYgKGJmZF9vcGVuciAoYnVmLCBnbnV0YXJnZXQpKTsKKyAg ICAgICBpZiAodG1wX2JmZCA9PSBOVUxMKQorIAlyZXR1cm47CisgCitAQCAtMzcxLDcgKzM3MSw3 IEBAIG1hbnBhZ2UgZm9yIG1ldGhvZHMgdG8gcHJpdmF0ZWx5IG1hcCBzaGFyZWQgbGlicmFyeSB0 ZXh0LiIpKTsKKyAJeworIAkgIHdhcm5pbmcgKF8oIlVuYWJsZSB0byBncm9rIGR5bmFtaWMgbGlu a2VyICVzIGFzIGFuIG9iamVjdCBmaWxlIiksCisgCQkgICBidWYpOworLQkgIGJmZF9jbG9zZSAo dG1wX2JmZCk7CisrCSAgZ2RiX2JmZF91bnJlZiAodG1wX2JmZCk7CisgCSAgcmV0dXJuOworIAl9 CisgCitAQCAtNDAxLDcgKzQwMSw3IEBAIG1hbnBhZ2UgZm9yIG1ldGhvZHMgdG8gcHJpdmF0ZWx5 IG1hcCBzaGFyZWQgbGlicmFyeSB0ZXh0LiIpKTsKKyAgICAgICB9CisgCisgICAgICAgLyogV2Un cmUgZG9uZSB3aXRoIHRoZSB0ZW1wb3JhcnkgYmZkLiAgKi8KKy0gICAgICBiZmRfY2xvc2UgKHRt cF9iZmQpOworKyAgICAgIGdkYl9iZmRfdW5yZWYgKHRtcF9iZmQpOworICAgICB9CisgfQorIAor ZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zcHUuYyBiL2dkYi9zb2xpYi1zcHUuYworaW5kZXggYjU0 NTRlNy4uNWVlYWU2MiAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpYi1zcHUuYworKysrIGIvZ2RiL3Nv bGliLXNwdS5jCitAQCAtMzYsNiArMzYsNyBAQAorICNpbmNsdWRlICJicmVha3BvaW50LmgiCisg I2luY2x1ZGUgImdkYnRocmVhZC5oIgorICNpbmNsdWRlICJleGNlcHRpb25zLmgiCisrI2luY2x1 ZGUgImdkYl9iZmQuaCIKKyAKKyAjaW5jbHVkZSAic3B1LXRkZXAuaCIKKyAKK0BAIC0zMjUsMTkg KzMyNiwyMCBAQCBzcHVfYmZkX2ZvcGVuIChjaGFyICpuYW1lLCBDT1JFX0FERFIgYWRkcikKKyAg IENPUkVfQUREUiAqb3Blbl9jbG9zdXJlID0geG1hbGxvYyAoc2l6ZW9mIChDT1JFX0FERFIpKTsK KyAgICpvcGVuX2Nsb3N1cmUgPSBhZGRyOworIAorLSAgbmJmZCA9IGJmZF9vcGVucl9pb3ZlYyAo eHN0cmR1cCAobmFtZSksICJlbGYzMi1zcHUiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg c3B1X2JmZF9pb3ZlY19vcGVuLCBvcGVuX2Nsb3N1cmUsCistICAgICAgICAgICAgICAgICAgICAg ICAgICBzcHVfYmZkX2lvdmVjX3ByZWFkLCBzcHVfYmZkX2lvdmVjX2Nsb3NlLAorLQkJCSAgc3B1 X2JmZF9pb3ZlY19zdGF0KTsKKysgIG5iZmQgPSBnZGJfYmZkX3JlZiAoYmZkX29wZW5yX2lvdmVj IChuYW1lLCAiZWxmMzItc3B1IiwKKysJCQkJICAgICAgIHNwdV9iZmRfaW92ZWNfb3Blbiwgb3Bl bl9jbG9zdXJlLAorKwkJCQkgICAgICAgc3B1X2JmZF9pb3ZlY19wcmVhZCwgc3B1X2JmZF9pb3Zl Y19jbG9zZSwKKysJCQkJICAgICAgIHNwdV9iZmRfaW92ZWNfc3RhdCkpOworICAgaWYgKCFuYmZk KQorICAgICByZXR1cm4gTlVMTDsKKyAKKyAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAobmJmZCwg YmZkX29iamVjdCkpCisgICAgIHsKKy0gICAgICBiZmRfY2xvc2UgKG5iZmQpOworKyAgICAgIGdk Yl9iZmRfdW5yZWYgKG5iZmQpOworICAgICAgIHJldHVybiBOVUxMOworICAgICB9CisgCisrICBn ZGJfYmZkX3N0YXNoX2ZpbGVuYW1lIChuYmZkKTsKKyAgIHJldHVybiBuYmZkOworIH0KKyAKK2Rp ZmYgLS1naXQgYS9nZGIvc29saWIuYyBiL2dkYi9zb2xpYi5jCitpbmRleCA5MDQzOWJhLi4wZmQ5 NTVkIDEwMDY0NAorLS0tIGEvZ2RiL3NvbGliLmMKKysrKyBiL2dkYi9zb2xpYi5jCitAQCAtNDYs NiArNDYsNyBAQAorICNpbmNsdWRlICJzb2xpYi5oIgorICNpbmNsdWRlICJpbnRlcnBzLmgiCisg I2luY2x1ZGUgImZpbGVzeXN0ZW0uaCIKKysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorIC8qIEFy Y2hpdGVjdHVyZS1zcGVjaWZpYyBvcGVyYXRpb25zLiAgKi8KKyAKK0BAIC0zNjAsOSArMzYxLDkg QEAgc29saWJfZmluZCAoY2hhciAqaW5fcGF0aG5hbWUsIGludCAqZmQpCisgICAgaXQgaXMgdXNl ZCBhcyBmaWxlIGhhbmRsZSB0byBvcGVuIHRoZSBmaWxlLiAgVGhyb3dzIGFuIGVycm9yIGlmIHRo ZSBmaWxlCisgICAgY291bGQgbm90IGJlIG9wZW5lZC4gIEhhbmRsZXMgYm90aCBsb2NhbCBhbmQg cmVtb3RlIGZpbGUgYWNjZXNzLgorIAorLSAgIFBBVEhOQU1FIG11c3QgYmUgbWFsbG9jJ2VkIGJ5 IHRoZSBjYWxsZXIuICBJZiBzdWNjZXNzZnVsLCB0aGUgbmV3IEJGRCdzCistICAgbmFtZSB3aWxs IHBvaW50IHRvIGl0LiAgSWYgdW5zdWNjZXNzZnVsLCBQQVRITkFNRSB3aWxsIGJlIGZyZWVkIGFu ZCB0aGUKKy0gICBGRCB3aWxsIGJlIGNsb3NlZCAodW5sZXNzIEZEIHdhcyAtMSkuICAqLworKyAg IFBBVEhOQU1FIG11c3QgYmUgbWFsbG9jJ2VkIGJ5IHRoZSBjYWxsZXIuICBJdCB3aWxsIGJlIGZy ZWVkIGJ5IHRoaXMKKysgICBmdW5jdGlvbi4gIElmIHVuc3VjY2Vzc2Z1bCwgdGhlIEZEIHdpbGwg YmUgY2xvc2VkICh1bmxlc3MgRkQgd2FzCisrICAgLTEpLiAgKi8KKyAKKyBiZmQgKgorIHNvbGli X2JmZF9mb3BlbiAoY2hhciAqcGF0aG5hbWUsIGludCBmZCkKK0BAIC0zODksNyArMzkwLDEwIEBA IHNvbGliX2JmZF9mb3BlbiAoY2hhciAqcGF0aG5hbWUsIGludCBmZCkKKyAJICAgICBwYXRobmFt ZSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworICAgICB9CisgCistICByZXR1cm4g YWJmZDsKKysgIGdkYl9iZmRfc3Rhc2hfZmlsZW5hbWUgKGFiZmQpOworKyAgeGZyZWUgKHBhdGhu YW1lKTsKKysKKysgIHJldHVybiBnZGJfYmZkX3JlZiAoYWJmZCk7CisgfQorIAorIC8qIEZpbmQg c2hhcmVkIGxpYnJhcnkgUEFUSE5BTUUgYW5kIG9wZW4gYSBCRkQgZm9yIGl0LiAgKi8KK0BAIC00 MjAsMTcgKzQyNCwxNiBAQCBzb2xpYl9iZmRfb3BlbiAoY2hhciAqcGF0aG5hbWUpCisgICAvKiBD aGVjayBiZmQgZm9ybWF0LiAgKi8KKyAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAoYWJmZCwgYmZk X29iamVjdCkpCisgICAgIHsKKy0gICAgICBiZmRfY2xvc2UgKGFiZmQpOworLSAgICAgIG1ha2Vf Y2xlYW51cCAoeGZyZWUsIGZvdW5kX3BhdGhuYW1lKTsKKysgICAgICBtYWtlX2NsZWFudXBfYmZk X3VucmVmIChhYmZkKTsKKyAgICAgICBlcnJvciAoXygiYCVzJzogbm90IGluIGV4ZWN1dGFibGUg Zm9ybWF0OiAlcyIpLAorLQkgICAgIGZvdW5kX3BhdGhuYW1lLCBiZmRfZXJybXNnIChiZmRfZ2V0 X2Vycm9yICgpKSk7CisrCSAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksIGJmZF9lcnJtc2cg KGJmZF9nZXRfZXJyb3IgKCkpKTsKKyAgICAgfQorIAorICAgLyogQ2hlY2sgYmZkIGFyY2guICAq LworICAgYiA9IGdkYmFyY2hfYmZkX2FyY2hfaW5mbyAodGFyZ2V0X2dkYmFyY2gpOworICAgaWYg KCFiLT5jb21wYXRpYmxlIChiLCBiZmRfZ2V0X2FyY2hfaW5mbyAoYWJmZCkpKQorICAgICB3YXJu aW5nIChfKCJgJXMnOiBTaGFyZWQgbGlicmFyeSBhcmNoaXRlY3R1cmUgJXMgaXMgbm90IGNvbXBh dGlibGUgIgorLSAgICAgICAgICAgICAgICJ3aXRoIHRhcmdldCBhcmNoaXRlY3R1cmUgJXMuIiks IGZvdW5kX3BhdGhuYW1lLAorKyAgICAgICAgICAgICAgICJ3aXRoIHRhcmdldCBhcmNoaXRlY3R1 cmUgJXMuIiksIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLAorICAgICAgICAgICAgICBiZmRfZ2V0 X2FyY2hfaW5mbyAoYWJmZCktPnByaW50YWJsZV9uYW1lLCBiLT5wcmludGFibGVfbmFtZSk7Cisg CisgICByZXR1cm4gYWJmZDsKK0BAIC00NjYsNyArNDY5LDcgQEAgc29saWJfbWFwX3NlY3Rpb25z IChzdHJ1Y3Qgc29fbGlzdCAqc28pCisgICAgIHJldHVybiAwOworIAorICAgLyogTGVhdmUgYmZk IG9wZW4sIGNvcmVfeGZlcl9tZW1vcnkgYW5kICJpbmZvIGZpbGVzIiBuZWVkIGl0LiAgKi8KKy0g IHNvLT5hYmZkID0gZ2RiX2JmZF9yZWYgKGFiZmQpOworKyAgc28tPmFiZmQgPSBhYmZkOworIAor ICAgLyogY29weSBmdWxsIHBhdGggbmFtZSBpbnRvIHNvX25hbWUsIHNvIHRoYXQgbGF0ZXIgc3lt Ym9sX2ZpbGVfYWRkCisgICAgICBjYW4gZmluZCBpdC4gICovCitAQCAtNjA4LDcgKzYxMSw3IEBA IHNvbGliX3JlYWRfc3ltYm9scyAoc3RydWN0IHNvX2xpc3QgKnNvLCBpbnQgZmxhZ3MpCisgCisg CSAgc2FwID0gYnVpbGRfc2VjdGlvbl9hZGRyX2luZm9fZnJvbV9zZWN0aW9uX3RhYmxlIChzby0+ c2VjdGlvbnMsCisgCQkJCQkJCSAgICBzby0+c2VjdGlvbnNfZW5kKTsKKy0JICBzby0+b2JqZmls ZSA9IHN5bWJvbF9maWxlX2FkZF9mcm9tX2JmZCAoc28tPmFiZmQsCisrCSAgc28tPm9iamZpbGUg PSBzeW1ib2xfZmlsZV9hZGRfZnJvbV9iZmQgKGdkYl9iZmRfcmVmIChzby0+YWJmZCksCisgCQkJ CQkJICBmbGFncywgc2FwLCBPQkpGX1NIQVJFRCwKKyAJCQkJCQkgIE5VTEwpOworIAkgIHNvLT5v YmpmaWxlLT5hZGRyX2xvdyA9IHNvLT5hZGRyX2xvdzsKK0BAIC0xMjMzLDcgKzEyMzYsNyBAQCBy ZWxvYWRfc2hhcmVkX2xpYnJhcmllc18xIChpbnQgZnJvbV90dHkpCisgCXsKKyAJICBmb3VuZF9w YXRobmFtZSA9IHhzdHJkdXAgKGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsKKyAJICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBmb3VuZF9wYXRobmFtZSk7CistCSAgZ2RiX2JmZF9jbG9zZV9vcl93YXJu IChhYmZkKTsKKysJICBnZGJfYmZkX3VucmVmIChhYmZkKTsKKyAJfQorIAorICAgICAgIC8qIElm IHRoaXMgc2hhcmVkIGxpYnJhcnkgaXMgbm8gbG9uZ2VyIGFzc29jaWF0ZWQgd2l0aCBpdHMgcHJl dmlvdXMKK2RpZmYgLS1naXQgYS9nZGIvc3B1LWxpbnV4LW5hdC5jIGIvZ2RiL3NwdS1saW51eC1u YXQuYworaW5kZXggMmRmZWM4Yy4uMTJmODIxMSAxMDA2NDQKKy0tLSBhL2dkYi9zcHUtbGludXgt bmF0LmMKKysrKyBiL2dkYi9zcHUtbGludXgtbmF0LmMKK0BAIC0zMTUsMTYgKzMxNSwxNyBAQCBz cHVfYmZkX29wZW4gKFVMT05HRVNUIGFkZHIpCisgICBVTE9OR0VTVCAqb3Blbl9jbG9zdXJlID0g eG1hbGxvYyAoc2l6ZW9mIChVTE9OR0VTVCkpOworICAgKm9wZW5fY2xvc3VyZSA9IGFkZHI7Cisg CistICBuYmZkID0gYmZkX29wZW5yX2lvdmVjICh4c3RyZHVwICgiPGluLW1lbW9yeT4iKSwgImVs ZjMyLXNwdSIsCisrICBuYmZkID0gYmZkX29wZW5yX2lvdmVjICgiPGluLW1lbW9yeT4iLCAiZWxm MzItc3B1IiwKKyAJCQkgIHNwdV9iZmRfaW92ZWNfb3Blbiwgb3Blbl9jbG9zdXJlLAorIAkJCSAg c3B1X2JmZF9pb3ZlY19wcmVhZCwgc3B1X2JmZF9pb3ZlY19jbG9zZSwKKyAJCQkgIHNwdV9iZmRf aW92ZWNfc3RhdCk7CisgICBpZiAoIW5iZmQpCisgICAgIHJldHVybiBOVUxMOworKyAgbmJmZCA9 IGdkYl9iZmRfcmVmIChuYmZkKTsKKyAKKyAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAobmJmZCwg YmZkX29iamVjdCkpCisgICAgIHsKKy0gICAgICBiZmRfY2xvc2UgKG5iZmQpOworKyAgICAgIGdk Yl9iZmRfdW5yZWYgKG5iZmQpOworICAgICAgIHJldHVybiBOVUxMOworICAgICB9CisgCiBkaWZm IC0tZ2l0IGEvZ2RiL3N0YWNrLmMgYi9nZGIvc3RhY2suYwotaW5kZXggMDJlMzZjYS4uMDY2NDA3 ZiAxMDA2NDQKK2luZGV4IDI1MjBlMmMuLjA0NzI0NzUgMTAwNjQ0CiAtLS0gYS9nZGIvc3RhY2su YwogKysrIGIvZ2RiL3N0YWNrLmMKIEBAIC01MDksNiArNTA5LDEwIEBAIHByaW50X2ZyYW1lX2Fy Z3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKQEAgLTUx MjgsNiArOTA0NiwyMTQgQEAgaW5kZXggMDJlMzZjYS4uMDY2NDA3ZiAxMDA2NDQKICAgIGlmIChm dW5jKQogICAgICB7CiAgICAgICAgc3RydWN0IGJsb2NrICpiID0gU1lNQk9MX0JMT0NLX1ZBTFVF IChmdW5jKTsKK2RpZmYgLS1naXQgYS9nZGIvc3ltZmlsZS1tZW0uYyBiL2dkYi9zeW1maWxlLW1l bS5jCitpbmRleCBlODBmZDI1Li5hZDg3YWJkIDEwMDY0NAorLS0tIGEvZ2RiL3N5bWZpbGUtbWVt LmMKKysrKyBiL2dkYi9zeW1maWxlLW1lbS5jCitAQCAtNTQsNiArNTQsNyBAQAorICNpbmNsdWRl ICJvYnNlcnZlci5oIgorICNpbmNsdWRlICJhdXh2LmgiCisgI2luY2x1ZGUgImVsZi9jb21tb24u aCIKKysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorIC8qIFZlcmlmeSBwYXJhbWV0ZXJzIG9mIHRh cmdldF9yZWFkX21lbW9yeV9iZmQgYW5kIHRhcmdldF9yZWFkX21lbW9yeSBhcmUKKyAgICBjb21w YXRpYmxlLiAgKi8KK0BAIC0xMDAsMTcgKzEwMSwxOSBAQCBzeW1ib2xfZmlsZV9hZGRfZnJvbV9t ZW1vcnkgKHN0cnVjdCBiZmQgKnRlbXBsLCBDT1JFX0FERFIgYWRkciwgY2hhciAqbmFtZSwKKyAg IGlmIChuYmZkID09IE5VTEwpCisgICAgIGVycm9yIChfKCJGYWlsZWQgdG8gcmVhZCBhIHZhbGlk IG9iamVjdCBmaWxlIGltYWdlIGZyb20gbWVtb3J5LiIpKTsKKyAKKysgIGdkYl9iZmRfcmVmIChu YmZkKTsKKyAgIGlmIChuYW1lID09IE5VTEwpCistICAgIG5iZmQtPmZpbGVuYW1lID0geHN0cmR1 cCAoInNoYXJlZCBvYmplY3QgcmVhZCBmcm9tIHRhcmdldCBtZW1vcnkiKTsKKysgICAgbmJmZC0+ ZmlsZW5hbWUgPSAic2hhcmVkIG9iamVjdCByZWFkIGZyb20gdGFyZ2V0IG1lbW9yeSI7CisgICBl bHNlCistICAgIG5iZmQtPmZpbGVuYW1lID0gbmFtZTsKKysgICAgeworKyAgICAgIG5iZmQtPmZp bGVuYW1lID0gbmFtZTsKKysgICAgICBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lIChuYmZkKTsKKysg ICAgICB4ZnJlZSAobmFtZSk7CisrICAgIH0KKyAKKyAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAo bmJmZCwgYmZkX29iamVjdCkpCisgICAgIHsKKy0gICAgICAvKiBGSVhNRTogc2hvdWxkIGJlIGNo ZWNraW5nIGZvciBlcnJvcnMgZnJvbSBiZmRfY2xvc2UgKGZvciBvbmUgdGhpbmcsCistICAgICAg ICAgb24gZXJyb3IgaXQgZG9lcyBub3QgZnJlZSBhbGwgdGhlIHN0b3JhZ2UgYXNzb2NpYXRlZCB3 aXRoIHRoZQorLSAgICAgICAgIGJmZCkuICAqLworLSAgICAgIGJmZF9jbG9zZSAobmJmZCk7Cisr ICAgICAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAobmJmZCk7CisgICAgICAgZXJyb3IgKF8oIkdv dCBvYmplY3QgZmlsZSBmcm9tIG1lbW9yeSBidXQgY2FuJ3QgcmVhZCBzeW1ib2xzOiAlcy4iKSwK KyAJICAgICBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7CisgICAgIH0KK2RpZmYgLS1n aXQgYS9nZGIvc3ltZmlsZS5jIGIvZ2RiL3N5bWZpbGUuYworaW5kZXggMDEyNTJlMi4uYzkwNDAx MSAxMDA2NDQKKy0tLSBhL2dkYi9zeW1maWxlLmMKKysrKyBiL2dkYi9zeW1maWxlLmMKK0BAIC01 NSw2ICs1NSw3IEBACisgI2luY2x1ZGUgInNvbGliLmgiCisgI2luY2x1ZGUgInJlbW90ZS5oIgor ICNpbmNsdWRlICJzdGFjay5oIgorKyNpbmNsdWRlICJnZGJfYmZkLmgiCisgCisgI2luY2x1ZGUg PHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxmY250bC5oPgorQEAgLTEwNzQsNyArMTA3NSw3IEBA IHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMgKGJmZCAqYWJmZCwKKyAgICAg ICBhZGRfZmxhZ3MgJj0gflNZTUZJTEVfTk9fUkVBRDsKKyAgICAgfQorIAorLSAgbXlfY2xlYW51 cHMgPSBtYWtlX2NsZWFudXBfYmZkX2Nsb3NlIChhYmZkKTsKKysgIG15X2NsZWFudXBzID0gbWFr ZV9jbGVhbnVwX2JmZF91bnJlZiAoYWJmZCk7CisgCisgICAvKiBHaXZlIHVzZXIgYSBjaGFuY2Ug dG8gYnVycCBpZiB3ZSdkIGJlCisgICAgICBpbnRlcmFjdGl2ZWx5IHdpcGluZyBvdXQgYW55IGV4 aXN0aW5nIHN5bWJvbHMuICAqLworQEAgLTEzNzIsNyArMTM3Myw3IEBAIHNlcGFyYXRlX2RlYnVn X2ZpbGVfZXhpc3RzIChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBsb25nIGNyYywKKyAgICAg ICBpZiAoYWJmZF9zdGF0LnN0X2RldiA9PSBwYXJlbnRfc3RhdC5zdF9kZXYKKyAJICAmJiBhYmZk X3N0YXQuc3RfaW5vID09IHBhcmVudF9zdGF0LnN0X2lubykKKyAJeworLQkgIGJmZF9jbG9zZSAo YWJmZCk7CisrCSAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7CisgCSAgcmV0dXJuIDA7CisgCX0KKyAg ICAgICB2ZXJpZmllZF9hc19kaWZmZXJlbnQgPSAxOworQEAgLTEzODIsNyArMTM4Myw3IEBAIHNl cGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBsb25n IGNyYywKKyAKKyAgIGZpbGVfY3JjX3AgPSBnZXRfZmlsZV9jcmMgKGFiZmQsICZmaWxlX2NyYyk7 CisgCistICBiZmRfY2xvc2UgKGFiZmQpOworKyAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7CisgCisg ICBpZiAoIWZpbGVfY3JjX3ApCisgICAgIHJldHVybiAwOworQEAgLTE2OTAsMTUgKzE2OTEsMjIg QEAgc2V0X2luaXRpYWxfbGFuZ3VhZ2UgKHZvaWQpCisgfQorIAorIC8qIElmIE5BTUUgaXMgYSBy ZW1vdGUgbmFtZSBvcGVuIHRoZSBmaWxlIHVzaW5nIHJlbW90ZSBwcm90b2NvbCwgb3RoZXJ3aXNl CistICAgb3BlbiBpdCBub3JtYWxseS4gICovCisrICAgb3BlbiBpdCBub3JtYWxseS4gIFJldHVy bnMgYSBuZXcgcmVmZXJlbmNlIHRvIHRoZSBCRkQuICBPbiBlcnJvciwKKysgICByZXR1cm5zIE5V TEwgd2l0aCB0aGUgQkZEIGVycm9yIHNldC4gICovCisgCisgYmZkICoKKyBiZmRfb3Blbl9tYXli ZV9yZW1vdGUgKGNvbnN0IGNoYXIgKm5hbWUpCisgeworICAgaWYgKHJlbW90ZV9maWxlbmFtZV9w IChuYW1lKSkKKy0gICAgcmV0dXJuIHJlbW90ZV9iZmRfb3BlbiAobmFtZSwgZ251dGFyZ2V0KTsK KysgICAgcmV0dXJuIGdkYl9iZmRfcmVmIChyZW1vdGVfYmZkX29wZW4gKG5hbWUsIGdudXRhcmdl dCkpOworICAgZWxzZQorLSAgICByZXR1cm4gYmZkX29wZW5yIChuYW1lLCBnbnV0YXJnZXQpOwor KyAgICB7CisrICAgICAgYmZkICpyZXN1bHQgPSBnZGJfYmZkX3JlZiAoYmZkX29wZW5yIChuYW1l LCBnbnV0YXJnZXQpKTsKKysKKysgICAgICBpZiAocmVzdWx0ICE9IE5VTEwpCisrCWdkYl9iZmRf c3Rhc2hfZmlsZW5hbWUgKHJlc3VsdCk7CisrICAgICAgcmV0dXJuIHJlc3VsdDsKKysgICAgfQor IH0KKyAKKyAKK0BAIC0xNzE2LDE5ICsxNzI0LDE0IEBAIHN5bWZpbGVfYmZkX29wZW4gKGNoYXIg Km5hbWUpCisgCisgICBpZiAocmVtb3RlX2ZpbGVuYW1lX3AgKG5hbWUpKQorICAgICB7CistICAg ICAgbmFtZSA9IHhzdHJkdXAgKG5hbWUpOworLSAgICAgIHN5bV9iZmQgPSByZW1vdGVfYmZkX29w ZW4gKG5hbWUsIGdudXRhcmdldCk7CisrICAgICAgc3ltX2JmZCA9IGdkYl9iZmRfcmVmIChyZW1v dGVfYmZkX29wZW4gKG5hbWUsIGdudXRhcmdldCkpOworICAgICAgIGlmICghc3ltX2JmZCkKKy0J eworLQkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIG5hbWUpOworLQkgIGVycm9yIChfKCJgJXMnOiBj YW4ndCBvcGVuIHRvIHJlYWQgc3ltYm9sczogJXMuIiksIG5hbWUsCistCQkgYmZkX2Vycm1zZyAo YmZkX2dldF9lcnJvciAoKSkpOworLQl9CisrCWVycm9yIChfKCJgJXMnOiBjYW4ndCBvcGVuIHRv IHJlYWQgc3ltYm9sczogJXMuIiksIG5hbWUsCisrCSAgICAgICBiZmRfZXJybXNnIChiZmRfZ2V0 X2Vycm9yICgpKSk7CisgCisgICAgICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChzeW1fYmZkLCBi ZmRfb2JqZWN0KSkKKyAJeworLQkgIGJmZF9jbG9zZSAoc3ltX2JmZCk7CistCSAgbWFrZV9jbGVh bnVwICh4ZnJlZSwgbmFtZSk7CisrCSAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoc3ltX2JmZCk7 CisgCSAgZXJyb3IgKF8oImAlcyc6IGNhbid0IHJlYWQgc3ltYm9sczogJXMuIiksIG5hbWUsCisg CQkgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworIAl9CitAQCAtMTc1NywxMiArMTc2 MCwxMSBAQCBzeW1maWxlX2JmZF9vcGVuIChjaGFyICpuYW1lKQorICAgICAgIHBlcnJvcl93aXRo X25hbWUgKG5hbWUpOworICAgICB9CisgCistICAvKiBGcmVlIDFzdCBuZXcgbWFsbG9jJ2QgY29w eSwgYnV0IGtlZXAgdGhlIDJuZCBtYWxsb2MnZCBjb3B5IGluCistICAgICBiZmQuICBJdCdsbCBi ZSBmcmVlZCBpbiBmcmVlX29iamZpbGUoKS4gICovCisgICB4ZnJlZSAobmFtZSk7CisgICBuYW1l ID0gYWJzb2x1dGVfbmFtZTsKKysgIG1ha2VfY2xlYW51cCAoeGZyZWUsIG5hbWUpOworIAorLSAg c3ltX2JmZCA9IGJmZF9mb3BlbiAobmFtZSwgZ251dGFyZ2V0LCBGT1BFTl9SQiwgZGVzYyk7Cisr ICBzeW1fYmZkID0gZ2RiX2JmZF9yZWYgKGJmZF9mb3BlbiAobmFtZSwgZ251dGFyZ2V0LCBGT1BF Tl9SQiwgZGVzYykpOworICAgaWYgKCFzeW1fYmZkKQorICAgICB7CisgICAgICAgbWFrZV9jbGVh bnVwICh4ZnJlZSwgbmFtZSk7CitAQCAtMTc3MywxNyArMTc3NSwxMiBAQCBzeW1maWxlX2JmZF9v cGVuIChjaGFyICpuYW1lKQorIAorICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChzeW1fYmZkLCBi ZmRfb2JqZWN0KSkKKyAgICAgeworLSAgICAgIC8qIEZJWE1FOiBzaG91bGQgYmUgY2hlY2tpbmcg Zm9yIGVycm9ycyBmcm9tIGJmZF9jbG9zZSAoZm9yIG9uZQorLSAgICAgICAgIHRoaW5nLCBvbiBl cnJvciBpdCBkb2VzIG5vdCBmcmVlIGFsbCB0aGUgc3RvcmFnZSBhc3NvY2lhdGVkCistICAgICAg ICAgd2l0aCB0aGUgYmZkKS4gICovCistICAgICAgYmZkX2Nsb3NlIChzeW1fYmZkKTsJLyogVGhp cyBhbHNvIGNsb3NlcyBkZXNjLiAgKi8KKy0gICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBuYW1l KTsKKysgICAgICBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChzeW1fYmZkKTsKKyAgICAgICBlcnJv ciAoXygiYCVzJzogY2FuJ3QgcmVhZCBzeW1ib2xzOiAlcy4iKSwgbmFtZSwKKyAJICAgICBiZmRf ZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7CisgICAgIH0KKyAKKy0gIC8qIGJmZF91c3JkYXRh IGV4aXN0cyBmb3IgYXBwbGljYXRpb25zIGFuZCBsaWJiZmQgbXVzdCBub3QgdG91Y2ggaXQuICAq LworLSAgZ2RiX2Fzc2VydCAoYmZkX3VzcmRhdGEgKHN5bV9iZmQpID09IE5VTEwpOworKyAgZ2Ri X2JmZF9zdGFzaF9maWxlbmFtZSAoc3ltX2JmZCk7CisgCisgICByZXR1cm4gc3ltX2JmZDsKKyB9 CitAQCAtMjEwOSwxNyArMjEwNiwxNCBAQCBnZW5lcmljX2xvYWQgKGNoYXIgKmFyZ3MsIGludCBm cm9tX3R0eSkKKyAgICAgfQorIAorICAgLyogT3BlbiB0aGUgZmlsZSBmb3IgbG9hZGluZy4gICov CistICBsb2FkZmlsZV9iZmQgPSBiZmRfb3BlbnIgKGZpbGVuYW1lLCBnbnV0YXJnZXQpOworKyAg bG9hZGZpbGVfYmZkID0gZ2RiX2JmZF9yZWYgKGJmZF9vcGVuciAoZmlsZW5hbWUsIGdudXRhcmdl dCkpOworICAgaWYgKGxvYWRmaWxlX2JmZCA9PSBOVUxMKQorICAgICB7CisgICAgICAgcGVycm9y X3dpdGhfbmFtZSAoZmlsZW5hbWUpOworICAgICAgIHJldHVybjsKKyAgICAgfQorIAorLSAgLyog RklYTUU6IHNob3VsZCBiZSBjaGVja2luZyBmb3IgZXJyb3JzIGZyb20gYmZkX2Nsb3NlIChmb3Ig b25lIHRoaW5nLAorLSAgICAgb24gZXJyb3IgaXQgZG9lcyBub3QgZnJlZSBhbGwgdGhlIHN0b3Jh Z2UgYXNzb2NpYXRlZCB3aXRoIHRoZQorLSAgICAgYmZkKS4gICovCistICBtYWtlX2NsZWFudXBf YmZkX2Nsb3NlIChsb2FkZmlsZV9iZmQpOworKyAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAobG9h ZGZpbGVfYmZkKTsKKyAKKyAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAobG9hZGZpbGVfYmZkLCBi ZmRfb2JqZWN0KSkKKyAgICAgeworQEAgLTI1MTgsMTUgKzI1MTIsMTggQEAgcmVyZWFkX3N5bWJv bHMgKHZvaWQpCisgCSAgLyogQ2xlYW4gdXAgYW55IHN0YXRlIEJGRCBoYXMgc2l0dGluZyBhcm91 bmQuICBXZSBkb24ndCBuZWVkCisgCSAgICAgdG8gY2xvc2UgdGhlIGRlc2NyaXB0b3IgYnV0IEJG RCBsYWNrcyBhIHdheSBvZiBjbG9zaW5nIHRoZQorIAkgICAgIEJGRCB3aXRob3V0IGNsb3Npbmcg dGhlIGRlc2NyaXB0b3IuICAqLworLQkgIG9iZmRfZmlsZW5hbWUgPSBiZmRfZ2V0X2ZpbGVuYW1l IChvYmpmaWxlLT5vYmZkKTsKKy0JICBpZiAoIWJmZF9jbG9zZSAob2JqZmlsZS0+b2JmZCkpCist CSAgICBlcnJvciAoXygiQ2FuJ3QgY2xvc2UgQkZEIGZvciAlczogJXMiKSwgb2JqZmlsZS0+bmFt ZSwKKy0JCSAgIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKKy0JICBvYmpmaWxlLT5v YmZkID0gYmZkX29wZW5fbWF5YmVfcmVtb3RlIChvYmZkX2ZpbGVuYW1lKTsKKysJICB7CisrCSAg ICBzdHJ1Y3QgYmZkICpvYmZkID0gb2JqZmlsZS0+b2JmZDsKKysKKysJICAgIG9iZmRfZmlsZW5h bWUgPSBiZmRfZ2V0X2ZpbGVuYW1lIChvYmpmaWxlLT5vYmZkKTsKKysJICAgIC8qIE9wZW4gdGhl IG5ldyBCRkQgYmVmb3JlIGZyZWVpbmcgdGhlIG9sZCBvbmUsIHNvIHRoYXQKKysJICAgICAgIHRo ZSBmaWxlbmFtZSByZW1haW5zIGxpdmUuICAqLworKwkgICAgb2JqZmlsZS0+b2JmZCA9IGJmZF9v cGVuX21heWJlX3JlbW90ZSAob2JmZF9maWxlbmFtZSk7CisrCSAgICBnZGJfYmZkX3VucmVmIChv YmZkKTsKKysJICB9CisrCisgCSAgaWYgKG9iamZpbGUtPm9iZmQgPT0gTlVMTCkKKyAJICAgIGVy cm9yIChfKCJDYW4ndCBvcGVuICVzIHRvIHJlYWQgc3ltYm9scy4iKSwgb2JqZmlsZS0+bmFtZSk7 CistCSAgZWxzZQorLQkgICAgb2JqZmlsZS0+b2JmZCA9IGdkYl9iZmRfcmVmIChvYmpmaWxlLT5v YmZkKTsKKyAJICAvKiBiZmRfb3BlbnIgc2V0cyBjYWNoZWFibGUgdG8gdHJ1ZSwgd2hpY2ggaXMg d2hhdCB3ZSB3YW50LiAgKi8KKyAJICBpZiAoIWJmZF9jaGVja19mb3JtYXQgKG9iamZpbGUtPm9i ZmQsIGJmZF9vYmplY3QpKQorIAkgICAgZXJyb3IgKF8oIkNhbid0IHJlYWQgc3ltYm9scyBmcm9t ICVzOiAlcy4iKSwgb2JqZmlsZS0+bmFtZSwKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5hZGEvcGFja2VkX2FycmF5LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJy YXkuZXhwCiBpbmRleCA2Nzg2MzljLi40N2EyMjAyIDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYWRhL3BhY2tlZF9hcnJheS5leHAKQEAgLTg2MDEsNyArMTI3MjcsNyBAQCBpbmRleCAw MDAwMDAwLi4yOTU2MDJkCiArICB3cml0ZWxuKHMpOyB7IHNldCBicmVha3BvaW50IDIgaGVyZSB9 CiArZW5kLgogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCi1pbmRleCA4M2ZmOGZl Li5iZGRiZjlmIDEwMDY0NAoraW5kZXggOTkzZTc3NC4uNTJkYmQxNyAxMDA2NDQKIC0tLSBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1mcmFtZS5leHAKIEBAIC03NCw4ICs3NCw2IEBAIGdkYl90ZXN0ICJweXRo b24gcHJpbnQgYmZyYW1lID09IGdkYi5uZXdlc3RfZnJhbWUoKSIgVHJ1ZSBcCkBAIC04NjIwLDEw ICsxMjc0NiwxMCBAQCBpbmRleCA4M2ZmOGZlLi5iZGRiZjlmIDEwMDY0NAogKwogK2dkYl90ZXN0 ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAuYmxvY2sgKCkiICI8Z2RiLkJsb2NrIG9iamVj dCBhdCAweFxbXFs6eGRpZ2l0OlxdXF0rPiIgInRlc3QgRnJhbWUuYmxvY2siCiBkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS12YWx1ZS5leHAKLWluZGV4IGM5ZDhjOTcuLjQzMjRkYjAgMTAwNjQ0Citp bmRleCBhY2ZkODliLi5jNzdkOWMyIDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LXZhbHVlLmV4cAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVl LmV4cAotQEAgLTM2MCw2ICszNjAsMTUgQEAgcHJvYyB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoIHt9 IHsKK0BAIC0zNTgsNiArMzU4LDE1IEBAIHByb2MgdGVzdF92YWx1ZV9hZnRlcl9kZWF0aCB7fSB7 CiAgICAgICJwcmludCB2YWx1ZSdzIHR5cGUiCiAgfQogIApAQCAtODYzOSw3ICsxMjc2NSw3IEBA IGluZGV4IGM5ZDhjOTcuLjQzMjRkYjAgMTAwNjQ0CiAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGlu dmFsaWQgc3Vic2NyaXB0IG9wZXJhdGlvbnMuICBUaGUgYnVnIHdhcyB0aGF0CiAgIyB0aGUgdHlw ZSBvZiB0aGUgdmFsdWUgd2FzIG5vdCBiZWluZyBjaGVja2VkIGJlZm9yZSBhbGxvd2luZyBhCiAg IyBzdWJzY3JpcHQgb3BlcmF0aW9uIHRvIHByb2NlZWQuCi1AQCAtNDk2LDYgKzUwNSw3IEBAIHRl c3RfdmFsdWVfaW5faW5mZXJpb3IKK0BAIC00OTQsNiArNTAzLDcgQEAgdGVzdF92YWx1ZV9pbl9p bmZlcmlvcgogIHRlc3RfaW5mZXJpb3JfZnVuY3Rpb25fY2FsbAogIHRlc3RfbGF6eV9zdHJpbmdz CiAgdGVzdF92YWx1ZV9hZnRlcl9kZWF0aApAQCAtODY0OCw3ICsxMjc3NCw3IEBAIGluZGV4IGM5 ZDhjOTcuLjQzMjRkYjAgMTAwNjQ0CiAgIyBUZXN0IGVpdGhlciBDIG9yIEMrKyB2YWx1ZXMuIAog IHRlc3Rfc3Vic2NyaXB0X3JlZ3Jlc3Npb24gIiR7YmluZmlsZX0iICJjIgogZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1p bmRleCAxZGZlNTY0Li4xODZmOWQ3IDEwMDY0NAoraW5kZXggMjg5ZDRkOC4uZGEwZDA4OSAxMDA2 NDQKIC0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUv bGliL2dkYi5leHAKIEBAIC0xNDIsNiArMTQyLDExIEBAIHByb2MgZ2RiX3VubG9hZCB7fSB7CkBA IC04NzcwLDEwICsxMjg5NiwzMiBAQCBpbmRleCBjMjVlNzA1Li40OTg5NThhIDEwMDY0NAogIAog IHN0YXRpYyB2b2lkCiBkaWZmIC0tZ2l0IGEvZ2RiL3V0aWxzLmMgYi9nZGIvdXRpbHMuYwotaW5k ZXggMmQ2MDdlZi4uZDY3ZTdkZCAxMDA2NDQKK2luZGV4IDU1NjYxNDkuLjZlMWFhMzQgMTAwNjQ0 CiAtLS0gYS9nZGIvdXRpbHMuYwogKysrIGIvZ2RiL3V0aWxzLmMKLUBAIC0xNzM3LDYgKzE3Mzcs MzYgQEAgc2V0X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAo dm9pZCkKK0BAIC0yNyw2ICsyNyw3IEBACisgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKyAjaW5j bHVkZSAiZ2RidGhyZWFkLmgiCisgI2luY2x1ZGUgImZubWF0Y2guaCIKKysjaW5jbHVkZSAiZ2Ri X2JmZC5oIgorICNpZmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICisgI2luY2x1ZGUgPHN5cy9yZXNv dXJjZS5oPgorICNlbmRpZiAvKiBIQVZFX1NZU19SRVNPVVJDRV9IICovCitAQCAtMTk4LDExICsx OTksMTEgQEAgbWFrZV9jbGVhbnVwX2R5bl9zdHJpbmdfZGVsZXRlIChkeW5fc3RyaW5nX3QgYXJn KQorIHN0YXRpYyB2b2lkCisgZG9fYmZkX2Nsb3NlX2NsZWFudXAgKHZvaWQgKmFyZykKKyB7Cist ICBiZmRfY2xvc2UgKGFyZyk7CisrICBnZGJfYmZkX3VucmVmIChhcmcpOworIH0KKyAKKyBzdHJ1 Y3QgY2xlYW51cCAqCistbWFrZV9jbGVhbnVwX2JmZF9jbG9zZSAoYmZkICphYmZkKQorK21ha2Vf Y2xlYW51cF9iZmRfdW5yZWYgKGJmZCAqYWJmZCkKKyB7CisgICByZXR1cm4gbWFrZV9jbGVhbnVw IChkb19iZmRfY2xvc2VfY2xlYW51cCwgYWJmZCk7CisgfQorQEAgLTE3MzgsNiArMTczOSwzNiBA QCBzZXRfYmF0Y2hfZmxhZ19hbmRfbWFrZV9jbGVhbnVwX3Jlc3RvcmVfcGFnZV9pbmZvICh2b2lk KQogICAgcmV0dXJuIGJhY2tfdG87CiAgfQogIApAQCAtODgxMSw3ICsxMjk1OSw3IEBAIGluZGV4 IDJkNjA3ZWYuLmQ2N2U3ZGQgMTAwNjQ0CiAgCiAgc3RhdGljIHZvaWQKIGRpZmYgLS1naXQgYS9n ZGIvdmFsYXJpdGguYyBiL2dkYi92YWxhcml0aC5jCi1pbmRleCAwMjI1MzM5Li5mNzc1YmZjIDEw MDY0NAoraW5kZXggOTZkNTQxMS4uMzdiZDQ2NCAxMDA2NDQKIC0tLSBhL2dkYi92YWxhcml0aC5j CiArKysgYi9nZGIvdmFsYXJpdGguYwogQEAgLTE5Nyw3ICsxOTcsMTAgQEAgdmFsdWVfc3Vic2Ny aXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNUIGluZGV4LCBpbnQgbG93 ZXJib3VuZCkKQEAgLTg4MzgsNyArMTI5ODYsNyBAQCBpbmRleCAwMjI1MzM5Li5mNzc1YmZjIDEw MDY0NAogIH0KICAKIGRpZmYgLS1naXQgYS9nZGIvdmFsb3BzLmMgYi9nZGIvdmFsb3BzLmMKLWlu ZGV4IGZlYjQ3ZjUuLjZkMTRlZWUgMTAwNjQ0CitpbmRleCA5N2Q4ODliLi42YWU3N2I4IDEwMDY0 NAogLS0tIGEvZ2RiL3ZhbG9wcy5jCiArKysgYi9nZGIvdmFsb3BzLmMKIEBAIC00NSw2ICs0NSw3 IEBACkBAIC04OTU1LDcgKzEzMTAzLDcgQEAgaW5kZXggZmViNDdmNS4uNmQxNGVlZSAxMDA2NDQK ICAgICAgfQogICAgZWxzZSBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX3JlZ2lzdGVyKQog ICAgICB7Ci1AQCAtMTUzMiw3ICsxNjA1LDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0cnVj dCBzeW1ib2wgKnZhciwgc3RydWN0IGJsb2NrICpiKQorQEAgLTE1MzAsNyArMTYwMywxOCBAQCBh ZGRyZXNzX29mX3ZhcmlhYmxlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBibG9jayAqYikK ICAgIGlmICgoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSAmJiB2YWx1ZV9sYXp5ICh2 YWwpKQogICAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMpCiAgICAg IHsKQEAgLTg5NzUsNyArMTMxMjMsNyBAQCBpbmRleCBmZWI0N2Y1Li42ZDE0ZWVlIDEwMDY0NAog IAogICAgICAgIHJldHVybiB2YWx1ZV9mcm9tX3BvaW50ZXIgKGxvb2t1cF9wb2ludGVyX3R5cGUg KHR5cGUpLCBhZGRyKTsKICAgICAgfQotQEAgLTE2MzksNiArMTcyMyw3IEBAIHN0cnVjdCB2YWx1 ZSAqCitAQCAtMTYzNyw2ICsxNzIxLDcgQEAgc3RydWN0IHZhbHVlICoKICB2YWx1ZV9jb2VyY2Vf YXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkKICB7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNo ZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKQEAgLTg5ODMsNyArMTMxMzEsNyBAQCBp bmRleCBmZWI0N2Y1Li42ZDE0ZWVlIDEwMDY0NAogIAogICAgLyogSWYgdGhlIHVzZXIgdHJpZXMg dG8gZG8gc29tZXRoaW5nIHJlcXVpcmluZyBhIHBvaW50ZXIgd2l0aCBhbgogICAgICAgYXJyYXkg dGhhdCBoYXMgbm90IHlldCBiZWVuIHB1c2hlZCB0byB0aGUgdGFyZ2V0LCB0aGVuIHRoaXMgd291 bGQKLUBAIC0xNjQ4LDggKzE3MzMsMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFs dWUgKmFyZzEpCitAQCAtMTY0Niw4ICsxNzMxLDEyIEBAIHZhbHVlX2NvZXJjZV9hcnJheSAoc3Ry dWN0IHZhbHVlICphcmcxKQogICAgaWYgKFZBTFVFX0xWQUwgKGFyZzEpICE9IGx2YWxfbWVtb3J5 KQogICAgICBlcnJvciAoXygiQXR0ZW1wdCB0byB0YWtlIGFkZHJlc3Mgb2YgdmFsdWUgbm90IGxv Y2F0ZWQgaW4gbWVtb3J5LiIpKTsKICAKQEAgLTg5OTcsNyArMTMxNDUsNyBAQCBpbmRleCBmZWI0 N2Y1Li42ZDE0ZWVlIDEwMDY0NAogIH0KICAKICAvKiBHaXZlbiBhIHZhbHVlIHdoaWNoIGlzIGEg ZnVuY3Rpb24sIHJldHVybiBhIHZhbHVlIHdoaWNoIGlzIGEgcG9pbnRlcgotQEAgLTM3NzIsNiAr Mzg2MSw4IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93Ym91bmQs IGludCBsZW5ndGgpCitAQCAtMzc2OSw2ICszODU4LDggQEAgdmFsdWVfc2xpY2UgKHN0cnVjdCB2 YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCkKICAJCQkJCVRZUEVfVEFSR0VU X1RZUEUgKHJhbmdlX3R5cGUpLAogIAkJCQkJbG93Ym91bmQsIAogIAkJCQkJbG93Ym91bmQgKyBs ZW5ndGggLSAxKTsKQEAgLTkwODAsNyArMTMyMjgsNyBAQCBpbmRleCBmYzU5NDJkLi44MzMzZWI0 IDEwMDY0NAogIAogIC8qIFJlYWQgTEVOIGJ5dGVzIG9mIHRhcmdldCBtZW1vcnkgYXQgYWRkcmVz cyBNRU1BRERSLCBwbGFjaW5nIHRoZQogZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5jIGIvZ2RiL3Zh bHVlLmMKLWluZGV4IGM2NGU1NWIuLmNkMDhhMGIgMTAwNjQ0CitpbmRleCBhNmJiNzE4Li43YjA4 ZDFmIDEwMDY0NAogLS0tIGEvZ2RiL3ZhbHVlLmMKICsrKyBiL2dkYi92YWx1ZS5jCiBAQCAtNDIs NiArNDIsNyBAQApAQCAtOTE1Miw3ICsxMzMwMCw3IEBAIGluZGV4IGM2NGU1NWIuLmNkMDhhMGIg MTAwNjQ0CiAgDAogIC8qIEludGVybmFsIHZhcmlhYmxlcy4gIFRoZXNlIGFyZSB2YXJpYWJsZXMg d2l0aGluIHRoZSBkZWJ1Z2dlcgogICAgIHRoYXQgaG9sZCB2YWx1ZXMgYXNzaWduZWQgYnkgZGVi dWdnZXIgY29tbWFuZHMuCi1AQCAtMjA5NSw2ICsyMTMwLDM4IEBAIGNhbGxfaW50ZXJuYWxfZnVu Y3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTIxMTgsNiArMjE1MywzOCBAQCBj YWxsX2ludGVybmFsX2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgIHJldHVy biAoKmlmbi0+aGFuZGxlcikgKGdkYmFyY2gsIGxhbmd1YWdlLCBpZm4tPmNvb2tpZSwgYXJnYywg YXJndik7CiAgfQogIApAQCAtOTE5MSw3ICsxMzMzOSw3IEBAIGluZGV4IGM2NGU1NWIuLmNkMDhh MGIgMTAwNjQ0CiAgLyogVGhlICdmdW5jdGlvbicgY29tbWFuZC4gIFRoaXMgZG9lcyBub3RoaW5n IC0tIGl0IGlzIGp1c3QgYQogICAgIHBsYWNlaG9sZGVyIHRvIGxldCAiaGVscCBmdW5jdGlvbiBO QU1FIiB3b3JrLiAgVGhpcyBpcyBhbHNvIHVzZWQgYXMKICAgICB0aGUgaW1wbGVtZW50YXRpb24g b2YgdGhlIHN1Yi1jb21tYW5kIHRoYXQgaXMgY3JlYXRlZCB3aGVuCi1AQCAtMjE0MiwxMSArMjIw OSwxMCBAQCBwcmVzZXJ2ZV9vbmVfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAorQEAgLTIxNjUsMTEgKzIyMzIsMTAgQEAgcHJlc2VydmVfb25lX3Zh bHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJCSAg ICBodGFiX3QgY29waWVkX3R5cGVzKQogIHsKICAgIGlmIChUWVBFX09CSkZJTEUgKHZhbHVlLT50 eXBlKSA9PSBvYmpmaWxlKQpAQCAtOTIwNSw3ICsxMzM1Myw3IEBAIGluZGV4IGM2NGU1NWIuLmNk MDhhMGIgMTAwNjQ0CiAgCQkJCQkJIGNvcGllZF90eXBlcyk7CiAgfQogIAotQEAgLTIxNjEsNyAr MjIyNyw3IEBAIHByZXNlcnZlX29uZV9pbnRlcm5hbHZhciAoc3RydWN0IGludGVybmFsdmFyICp2 YXIsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTIxODQsNyArMjI1MCw3IEBAIHByZXNl cnZlX29uZV9pbnRlcm5hbHZhciAoc3RydWN0IGludGVybmFsdmFyICp2YXIsIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAogICAgICBjYXNlIElOVEVSTkFMVkFSX0lOVEVHRVI6CiAgICAgICAgaWYg KHZhci0+dS5pbnRlZ2VyLnR5cGUgJiYgVFlQRV9PQkpGSUxFICh2YXItPnUuaW50ZWdlci50eXBl KSA9PSBvYmpmaWxlKQogIAl2YXItPnUuaW50ZWdlci50eXBlCkBAIC05MjE0LDcgKzEzMzYyLDcg QEAgaW5kZXggYzY0ZTU1Yi4uY2QwOGEwYiAxMDA2NDQKICAgICAgICBicmVhazsKICAKICAgICAg Y2FzZSBJTlRFUk5BTFZBUl9WQUxVRToKLUBAIC0zMjUzLDEwICszMzE5LDI3IEBAIHJlYWRqdXN0 X2luZGlyZWN0X3ZhbHVlX3R5cGUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCB0eXBlICpl bmNfdHlwZSwKK0BAIC0zMjc2LDEwICszMzQyLDI3IEBAIHJlYWRqdXN0X2luZGlyZWN0X3ZhbHVl X3R5cGUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCB0eXBlICplbmNfdHlwZSwKICBzdHJ1 Y3QgdmFsdWUgKgogIGNvZXJjZV9yZWYgKHN0cnVjdCB2YWx1ZSAqYXJnKQogIHsKQEAgLTkyNDMs NyArMTMzOTEsNyBAQCBpbmRleCBjNjRlNTViLi5jZDA4YTBiIDEwMDY0NAogICAgcmV0dmFsID0g Y29lcmNlX3JlZl9pZl9jb21wdXRlZCAoYXJnKTsKICAgIGlmIChyZXR2YWwpCiAgICAgIHJldHVy biByZXR2YWw7Ci1AQCAtMzM2Myw0ICszNDQ2LDEwIEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5p dGlhbGl6ZWQuIikpOworQEAgLTMzODYsNCArMzQ2OSwxMCBAQCBWQVJJQUJMRSBpcyBhbHJlYWR5 IGluaXRpYWxpemVkLiIpKTsKICAgIGFkZF9wcmVmaXhfY21kICgiZnVuY3Rpb24iLCBub19jbGFz cywgZnVuY3Rpb25fY29tbWFuZCwgXygiXAogIFBsYWNlaG9sZGVyIGNvbW1hbmQgZm9yIHNob3dp bmcgaGVscCBvbiBjb252ZW5pZW5jZSBmdW5jdGlvbnMuIiksCiAgCQkgICZmdW5jdGlvbmxpc3Qs ICJmdW5jdGlvbiAiLCAwLCAmY21kbGlzdCk7CkBAIC05MjU1LDcgKzEzNDAzLDcgQEAgaW5kZXgg YzY0ZTU1Yi4uY2QwOGEwYiAxMDA2NDQKICsjZW5kaWYKICB9CiBkaWZmIC0tZ2l0IGEvZ2RiL3Zh bHVlLmggYi9nZGIvdmFsdWUuaAotaW5kZXggYjYzMGZjNy4uMmY5NWRiMiAxMDA2NDQKK2luZGV4 IGQ4YjE1N2YuLmY0OWU4MjcgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsdWUuaAogKysrIGIvZ2RiL3Zh bHVlLmgKIEBAIC01MzMsNiArNTMzLDEwIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zy b21fZGVjZmxvYXQgKHN0cnVjdCB0eXBlICp0eXBlLApAQCAtOTI2OSwzICsxMzQxNywzNCBAQCBp bmRleCBiNjMwZmM3Li4yZjk1ZGIyIDEwMDY0NAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVl X2F0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHIpOwogIGV4dGVybiBzdHJ1Y3Qg dmFsdWUgKnZhbHVlX2F0X2xhenkgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7 CiAgCitkaWZmIC0tZ2l0IGEvZ2RiL3dpbmRvd3MtbmF0LmMgYi9nZGIvd2luZG93cy1uYXQuYwor aW5kZXggZjE2NTg4YS4uNmJhOTJkOSAxMDA2NDQKKy0tLSBhL2dkYi93aW5kb3dzLW5hdC5jCisr KysgYi9nZGIvd2luZG93cy1uYXQuYworQEAgLTc1Miw3ICs3NTIsNyBAQCB3aW5kb3dzX21ha2Vf c28gKGNvbnN0IGNoYXIgKm5hbWUsIExQVk9JRCBsb2FkX2FkZHIpCisgICAgICAgYXNlY3Rpb24g KnRleHQgPSBOVUxMOworICAgICAgIENPUkVfQUREUiB0ZXh0X3ZtYTsKKyAKKy0gICAgICBhYmZk ID0gYmZkX29wZW5yIChzby0+c29fbmFtZSwgInBlaS1pMzg2Iik7CisrICAgICAgYWJmZCA9IGdk Yl9iZmRfcmVmIChiZmRfb3BlbnIgKHNvLT5zb19uYW1lLCAicGVpLWkzODYiKSk7CisgCisgICAg ICAgaWYgKCFhYmZkKQorIAlyZXR1cm4gc287CitAQCAtNzYyLDcgKzc2Miw3IEBAIHdpbmRvd3Nf bWFrZV9zbyAoY29uc3QgY2hhciAqbmFtZSwgTFBWT0lEIGxvYWRfYWRkcikKKyAKKyAgICAgICBp ZiAoIXRleHQpCisgCXsKKy0JICBiZmRfY2xvc2UgKGFiZmQpOworKwkgIGdkYl9iZmRfdW5yZWYg KGFiZmQpOworIAkgIHJldHVybiBzbzsKKyAJfQorIAorQEAgLTc3Myw3ICs3NzMsNyBAQCB3aW5k b3dzX21ha2Vfc28gKGNvbnN0IGNoYXIgKm5hbWUsIExQVk9JRCBsb2FkX2FkZHIpCisgCQkJCQkJ ICAgbG9hZF9hZGRyICsgMHgxMDAwKTsKKyAgICAgICBjeWd3aW5fbG9hZF9lbmQgPSBjeWd3aW5f bG9hZF9zdGFydCArIGJmZF9zZWN0aW9uX3NpemUgKGFiZmQsIHRleHQpOworIAorLSAgICAgIGJm ZF9jbG9zZSAoYWJmZCk7CisrICAgICAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7CisgICAgIH0KKyAj ZW5kaWYKKyAKCmRpZmYgLS1naXQgYS9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTRvZjUucGF0 Y2ggYi9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTRvZjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGRmYTEyMmEuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTkyMDMxLXNpZ2lu Zm8tbG9zdC00b2Y1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTk0ICswLDAgQEAKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwMzYwLmh0bWwKLVN1 YmplY3Q6IFtwYXRjaCAzLzRdIzMgbGludXgtbmF0OiBEbyBub3QgcmVzcGF3biBzaWduYWxzCi0K LUhpLAotCi1saW51eC1uYXQuYyBpcyBmaXhlZCB0byBuZXZlciByZXNwYXduIHNpZ25hbHM7IHBv c3NpYmx5IGtlZXBpbmcgU0lHU1RPUAotcGVuZGluZywgYXMgaXMgZG9uZSBpbiBjdXJyZW50IGlu IEZTRiBnZGJzZXJ2ZXIgYW5kIGFzIHN1Z2dlc3RlZCBieSBQZWRybzoKLQlodHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wOC9tc2cwMDU0NC5odG1sCi0KLVRoZSBsYXN0 IGxpbnV4LW5hdC5jIHJlbW92ZWQgcGF0Y2ggY2h1bmsgY29tZXMgZnJvbSB0aGUgaW5pdGlhbCBp bXBsZW1lbnRhdGlvbgotYnkgTWFyayBLZXR0ZW5pczoKLQlbUEFUQ0hdIE5ldyBMaW51eCB0aHJl YWRzIHN1cHBvcnQKLQlodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwMC0w OS9tc2cwMDAyMC5odG1sCi0JOTIyODBhNzVlMDE3NjgzYmY4ZTRmMzM5ZjRmODU2NDBiMDcwMDUw OQotSXQgZ2V0cyBpbiBwYXJ0IHJlaW1wbGVtZW50ZWQgaW50byB0aGUgbmV3IHN0b3Bfd2FpdF9j YWxsYmFjayA8aWYgKGxwLT5zdGVwKT4KLXBhcnQgYW5kIHBhcnRpYWxseSBqdXN0IG5vdCBuZWVk ZWQgYXMgY3VycmVudGx5IEdEQiBuZXZlciBkcm9wcyB0aGUgc2lnbmFscyBhcwotaXQgZG9lcyBu b3QgUFRSQUNFX0NPTlQgdGhlIHRocmVhZDsgc2lnbmFsIGlzIGtlcHQgZm9yIHByb2Nlc3Npbmc6 Ci0JIlJDOiBOb3QgcmVzdW1pbmcgc2libGluZyAlcyAoaGFzIHBlbmRpbmcpXG4iCi0KLUluIHN0 b3Bfd2FpdF9jYWxsYmFjayBJIGJlbGlldmUgYnJlYWtwb2ludHMgY2FuY2VsbGF0aW9uIGlzIG5v dCBuZWVkZWQgaGVyZSwKLWl0IHdvdWxkIGJlIGRvbmUgbGF0ZXIuCi0KLQotVGhlIHRlc3RjYXNl IHNpZ3N0ZXAtdGhyZWFkcy5leHAgd2FzIHdyaXR0ZW4gdG8gY2F0Y2ggYSByZWdyZXNzaW9uLWxp a2UKLWFwcGVhcmFuY2UgdGhlbiB0aGUgbmV3IDxpZiAobHAtPnN0ZXApPiBwYXJ0IG9mIHN0b3Bf d2FpdF9jYWxsYmFjayBnZXRzCi1yZW1vdmVkLiAgU3RpbGwgdGhlIHRlY2FzZSBmYWlscyBldmVu IHdpdGggRlNGIEhFQUQ6Ci0KLTMyICAgICAgICB2YXIrKzsgICAgICAgICAgICAgICAgLyogc3Rl cC0xICovCi0oZ2RiKSBzdGVwCi1Qcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdVU1IxLCBVc2Vy IGRlZmluZWQgc2lnbmFsIDEuCi1Qcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdVU1IxLCBVc2Vy IGRlZmluZWQgc2lnbmFsIDEuCi0zMSAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0 ZXAtMCAqLwotCi1UaGVyZSBpcyBubyByZWFzb24gd2h5IGl0IHNob3VsZG4ndCBzdG9wIG9uIGxp bmUgMzMsIGJldHdlZW4gbGluZSAzMiBhbmQgbGluZQotMzMgbm8gc2lnbmFsIHdvdWxkIG9jY3Vy LiAgU3RlcHBpbmcgb2YgdGhlIGN1cnJlbnQgdGhyZWFkIHNob3VsZCBub3QgYmUKLWFmZmVjdGVk IGJ5IHdoYXRldmVyIGhhcHBlbnMgaW4gdGhlIG90aGVyIHRocmVhZHMgYXMgc2VsZWN0X2V2ZW50 X2x3cCBoYXM6Ci0gIC8qIEdpdmUgcHJlZmVyZW5jZSB0byBhbnkgTFdQIHRoYXQgaXMgYmVpbmcg c2luZ2xlLXN0ZXBwZWQuICAqLwotCi1UaGVyZSBpcyBhIHByb2JsZW0gdGhhdCB3aXRoIEZTRiBI RUFEIEdEQiBkb2VzIFBUUkFDRV9TSU5HTEVTVEVQIGZvciB0aHJlYWQgQSwKLVBUUkFDRV9DT05U IGZvciB0aHJlYWQgQiAoYmVjYXVzZSBvZiBzZXQgc2NoZWR1bGVyLWxvY2tpbmcgb2ZmKSwgdGhy ZWFkIEIgaGl0cwotU0lHVVNSMSwgc28gR0RCIHRraWxscyB0aHJlYWQgQSB3aXRoIFNJR1NUT1Ag YW5kIGl0IGNhbiByZWNlaXZlIFNJR1NUT1AgZm9yCi10aHJlYWQgQSBiZWZvcmUgdGhlIFNJR1RS QVAgZm9yIGNvbXBsZXRlZCBQVFJBQ0VfU0lOR0xFU1RFUC4gIEF0IHRoYXQgbW9tZW50Ci1zZWxl Y3RfZXZlbnRfbHdwLiBmb3JnZXRzIGl0IHdhcyBzdGVwcGluZyB0aHJlYWQgQSBiZWNhdXNlIHRo ZXJlIGlzIG5vIHBlbmRpbmcKLVNJR1RSQVAgZXZlbnQuICBjdXJyZW50bHlfc3RlcHBpbmcgc3Rp bGwgcmVtZW1iZXJzIHRocmVhZCBBIHdhcyBzdGVwcGluZyBzbyBpdAotd2lsbCBsYXRlciBzdG9w IGJ1dCBhcyB0aHJlYWQgQSB3YXMgUFRSQUNFX0NPTlQtZWQgaW4gdGhlIG1lYW50aW1lIGl0IGlz IHRvbwotbGF0ZS4KLQotVGhlcmUgaXMgdGhlIG5ldyA8aWYgKGxwLT5zdGVwKT4gcGFydCBvZiBz dG9wX3dhaXRfY2FsbGJhY2sgdG8gYWx3YXlzIHRyYWNrCi10aHJlYWQgQSBpcyBzdGVwcGluZy4g IER1ZSB0byBkaWZmZXJlbnQgc2NoZWR1bGluZyB3aXRob3V0IHRoaXMgcGFydCB0aGUKLWNoYW5n ZWQgR0RCIHdvdWxkIHZlcnkgcmFyZWx5IHN0b3AgaW4gdGhpcyB0ZXN0Y2FzZSBvdGhlcndpc2Us IG1ha2luZyBpdCBsb29rCi1hcyBhIHJlZ3Jlc3Npb24uCi0KLUkgaGF2ZSBzb21lIGFub3RoZXIg cGF0Y2ggSSBtYXkgcG9zdCBzZXBhcmF0ZWx5IGFzIGlmIG11bHRpcGxlIHNpZ25hbHMgaGFwcGVu Ci1iZXNpZGVzIFNJR1RSQVAgR0RCIHN0aWxsIG1heSBzd2l0Y2ggZnJvbSB0aHJlYWQgQSBhd2F5 IChhcyBub3QgY29uc2lkZXJpbmcgaXQKLXN0ZXBwaW5nKSB0byB0aHJlYWQgQiBmb3IgU0lHVVNS IGFuZCBhY2NpZGVudGFsbHkgUFRSQUNFX0NPTlQgdGhyZWFkIEEuCi1CdXQgSSBkbyBub3QgZmlu ZCB0aGlzIGFzIGEgcHJlcmVxdWlzaXRlIGZvciB0aGlzIHBhdGNoc2V0LgotCi0KLQotVGhhbmtz LAotSmFuCi0KLQotZ2RiLwotMjAxMC0wOS0yMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotCi0JKiBsaW51eC1uYXQuYyAoc3RvcF93YWl0X2NhbGxiYWNrKTog TmV3IGdkYl9hc3NlcnQuICBSZW1vdmUgc2lnbmFscwotCXJlc3Bhd25pbmc7IGtlZXAgVFAgd2l0 aCBTSUdOQUxMRUQuICBOZXcgZGVidWdnaW5nIG1lc3NhZ2UgIlNXQzoKLQlEZWxheWVkIFNJR1NU T1AgY2F1Z2h0IGZvciAlcy4iLiAgQ2F0Y2ggbmV4dCBzaWduYWwgaWYgU0lHU1RPUCBoYXMKLQli ZWVuIGNhdWdodCBhbmQgTFAtPlNURVAgaXMgc2V0LgotCShsaW51eF9uYXRfd2FpdF8xKSA8bHAg JiYgbHAtPnNpZ25hbGxlZD46IFJlbW92ZS4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTAtMDktMjAg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLnRo cmVhZHMvc2lnaW5mby10aHJlYWRzLmV4cDogTmV3IGZpbGUuCi0JKiBnZGIudGhyZWFkcy9zaWdp bmZvLXRocmVhZHMuYzogTmV3IGZpbGUuCi0JKiBnZGIudGhyZWFkcy9zaWdzdGVwLXRocmVhZHMu ZXhwOiBOZXcgZmlsZS4KLQkqIGdkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5jOiBOZXcgZmls ZS4KLQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4LW5hdC5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEyLTA2 LTAyIDIxOjM0OjUxLjk5OTUxNzUxMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L2xpbnV4LW5hdC5jCTIwMTItMDYtMDIgMjE6MzU6NTkuOTMwNDkxNTc3ICswMjAwCi1AQCAtMjg1 Niw2ICsyODU2LDggQEAgc3RvcF93YWl0X2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLAot ICAgICB7Ci0gICAgICAgaW50IHN0YXR1czsKLSAKLSsgICAgICBnZGJfYXNzZXJ0IChscC0+cmVz dW1lZCk7Ci0rCi0gICAgICAgc3RhdHVzID0gd2FpdF9sd3AgKGxwKTsKLSAgICAgICBpZiAoc3Rh dHVzID09IDApCi0gCXJldHVybiAwOwotQEAgLTI4ODEsMTEwICsyODgzLDYxIEBAIHN0b3Bfd2Fp dF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwKLSAKLSAgICAgICBpZiAoV1NUT1BTSUcg KHN0YXR1cykgIT0gU0lHU1RPUCkKLSAJewotLQkgIGlmIChsaW51eF9uYXRfc3RhdHVzX2lzX2V2 ZW50IChzdGF0dXMpKQotLQkgICAgewotLQkgICAgICAvKiBJZiBhIExXUCBvdGhlciB0aGFuIHRo ZSBMV1AgdGhhdCB3ZSdyZSByZXBvcnRpbmcgYW4KLS0JICAgICAgICAgZXZlbnQgZm9yIGhhcyBo aXQgYSBHREIgYnJlYWtwb2ludCAoYXMgb3Bwb3NlZCB0bwotLQkgICAgICAgICBzb21lIHJhbmRv bSB0cmFwIHNpZ25hbCksIHRoZW4ganVzdCBhcnJhbmdlIGZvciBpdCB0bwotLQkgICAgICAgICBo aXQgaXQgYWdhaW4gbGF0ZXIuICBXZSBkb24ndCBrZWVwIHRoZSBTSUdUUkFQIHN0YXR1cwotLQkg ICAgICAgICBhbmQgZG9uJ3QgZm9yd2FyZCB0aGUgU0lHVFJBUCBzaWduYWwgdG8gdGhlIExXUC4g IFdlCi0tCSAgICAgICAgIHdpbGwgaGFuZGxlIHRoZSBjdXJyZW50IGV2ZW50LCBldmVudHVhbGx5 IHdlIHdpbGwKLS0JICAgICAgICAgcmVzdW1lIGFsbCBMV1BzLCBhbmQgdGhpcyBvbmUgd2lsbCBn ZXQgaXRzIGJyZWFrcG9pbnQKLS0JICAgICAgICAgdHJhcCBhZ2Fpbi4KLS0KLS0JICAgICAgICAg SWYgd2UgZG8gbm90IGRvIHRoaXMsIHRoZW4gd2UgcnVuIHRoZSByaXNrIHRoYXQgdGhlCi0tCSAg ICAgICAgIHVzZXIgd2lsbCBkZWxldGUgb3IgZGlzYWJsZSB0aGUgYnJlYWtwb2ludCwgYnV0IHRo ZQotLQkgICAgICAgICB0aHJlYWQgd2lsbCBoYXZlIGFscmVhZHkgdHJpcHBlZCBvbiBpdC4gICov Ci0tCi0tCSAgICAgIC8qIFNhdmUgdGhlIHRyYXAncyBzaWdpbmZvIGluIGNhc2Ugd2UgbmVlZCBp dCBsYXRlci4gICovCi0tCSAgICAgIHNhdmVfc2lnaW5mbyAobHApOwotLQotLQkgICAgICBzYXZl X3NpZ3RyYXAgKGxwKTsKLS0KLS0JICAgICAgLyogTm93IHJlc3VtZSB0aGlzIExXUCBhbmQgZ2V0 IHRoZSBTSUdTVE9QIGV2ZW50LiAgKi8KLS0JICAgICAgZXJybm8gPSAwOwotLQkgICAgICBwdHJh Y2UgKFBUUkFDRV9DT05ULCBHRVRfTFdQIChscC0+cHRpZCksIDAsIDApOwotLQkgICAgICBpZiAo ZGVidWdfbGludXhfbmF0KQotLQkJewotLQkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csCi0tCQkJCSAgICAgICJQVFJBQ0VfQ09OVCAlcywgMCwgMCAoJXMpXG4iLAotLQkJCQkgICAg ICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpLAotLQkJCQkgICAgICBlcnJubyA/IHNhZmVf c3RyZXJyb3IgKGVycm5vKSA6ICJPSyIpOwotLQotLQkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csCi0tCQkJCSAgICAgICJTV0M6IENhbmRpZGF0ZSBTSUdUUkFQIGV2ZW50IGluICVz XG4iLAotLQkJCQkgICAgICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpKTsKLS0JCX0KLS0J ICAgICAgLyogSG9sZCB0aGlzIGV2ZW50L3dhaXRzdGF0dXMgd2hpbGUgd2UgY2hlY2sgdG8gc2Vl IGlmCi0tCQkgdGhlcmUgYXJlIGFueSBtb3JlICh3ZSBzdGlsbCB3YW50IHRvIGdldCB0aGF0IFNJ R1NUT1ApLiAgKi8KLS0JICAgICAgc3RvcF93YWl0X2NhbGxiYWNrIChscCwgTlVMTCk7Ci0rCSAg LyogVGhlIHRocmVhZCB3YXMgc3RvcHBlZCB3aXRoIGEgc2lnbmFsIG90aGVyIHRoYW4gU0lHU1RP UC4gICovCi0gCi0tCSAgICAgIC8qIEhvbGQgdGhlIFNJR1RSQVAgZm9yIGhhbmRsaW5nIGJ5IGxp bnV4X25hdF93YWl0LiAgSWYKLS0JCSB0aGVyZSdzIGFub3RoZXIgZXZlbnQsIHRocm93IGl0IGJh Y2sgaW50byB0aGUKLS0JCSBxdWV1ZS4gICovCi0tCSAgICAgIGlmIChscC0+c3RhdHVzKQotLQkJ ewotLQkJICBpZiAoZGVidWdfbGludXhfbmF0KQotLQkJICAgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKLS0JCQkJCSJTV0M6IGtpbGwgJXMsICVzXG4iLAotLQkJCQkJdGFyZ2V0X3Bp ZF90b19zdHIgKGxwLT5wdGlkKSwKLS0JCQkJCXN0YXR1c190b19zdHIgKChpbnQpIHN0YXR1cykp OwotLQkJICBraWxsX2x3cCAoR0VUX0xXUCAobHAtPnB0aWQpLCBXU1RPUFNJRyAobHAtPnN0YXR1 cykpOwotLQkJfQotLQotLQkgICAgICAvKiBTYXZlIHRoZSBzaWd0cmFwIGV2ZW50LiAgKi8KLS0J ICAgICAgbHAtPnN0YXR1cyA9IHN0YXR1czsKLS0JICAgICAgcmV0dXJuIDA7Ci0tCSAgICB9Ci0t CSAgZWxzZQotLQkgICAgewotLQkgICAgICAvKiBUaGUgdGhyZWFkIHdhcyBzdG9wcGVkIHdpdGgg YSBzaWduYWwgb3RoZXIgdGhhbgotLQkgICAgICAgICBTSUdTVE9QLCBhbmQgZGlkbid0IGFjY2lk ZW50YWxseSB0cmlwIGEgYnJlYWtwb2ludC4gICovCi0rCSAgLyogU2F2ZSB0aGUgdHJhcCdzIHNp Z2luZm8gaW4gY2FzZSB3ZSBuZWVkIGl0IGxhdGVyLiAgKi8KLSsJICBzYXZlX3NpZ2luZm8gKGxw KTsKLSAKLS0JICAgICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLS0JCXsKLS0JCSAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotLQkJCQkgICAgICAiU1dDOiBQZW5kaW5nIGV2ZW50ICVz IGluICVzXG4iLAotLQkJCQkgICAgICBzdGF0dXNfdG9fc3RyICgoaW50KSBzdGF0dXMpLAotLQkJ CQkgICAgICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpKTsKLS0JCX0KLS0JICAgICAgLyog Tm93IHJlc3VtZSB0aGlzIExXUCBhbmQgZ2V0IHRoZSBTSUdTVE9QIGV2ZW50LiAgKi8KLS0JICAg ICAgZXJybm8gPSAwOwotLQkgICAgICBwdHJhY2UgKFBUUkFDRV9DT05ULCBHRVRfTFdQIChscC0+ cHRpZCksIDAsIDApOwotLQkgICAgICBpZiAoZGVidWdfbGludXhfbmF0KQotLQkJZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotLQkJCQkgICAgIlNXQzogUFRSQUNFX0NPTlQgJXMsIDAs IDAgKCVzKVxuIiwKLS0JCQkJICAgIHRhcmdldF9waWRfdG9fc3RyIChscC0+cHRpZCksCi0tCQkJ CSAgICBlcnJubyA/IHNhZmVfc3RyZXJyb3IgKGVycm5vKSA6ICJPSyIpOwotKwkgIHNhdmVfc2ln dHJhcCAobHApOwotIAotLQkgICAgICAvKiBIb2xkIHRoaXMgZXZlbnQvd2FpdHN0YXR1cyB3aGls ZSB3ZSBjaGVjayB0byBzZWUgaWYKLS0JICAgICAgICAgdGhlcmUgYXJlIGFueSBtb3JlICh3ZSBz dGlsbCB3YW50IHRvIGdldCB0aGF0IFNJR1NUT1ApLiAgKi8KLS0JICAgICAgc3RvcF93YWl0X2Nh bGxiYWNrIChscCwgTlVMTCk7Ci0rCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLSsJICAgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJIlNXQzogUGVuZGluZyBldmVudCAlcyBp biAlc1xuIiwKLSsJCQkJc3RhdHVzX3RvX3N0ciAoKGludCkgc3RhdHVzKSwKLSsJCQkJdGFyZ2V0 X3BpZF90b19zdHIgKGxwLT5wdGlkKSk7Ci0gCi0tCSAgICAgIC8qIElmIHRoZSBscC0+c3RhdHVz IGZpZWxkIGlzIHN0aWxsIGVtcHR5LCB1c2UgaXQgdG8KLS0JCSBob2xkIHRoaXMgZXZlbnQuICBJ ZiBub3QsIHRoZW4gdGhpcyBldmVudCBtdXN0IGJlCi0tCQkgcmV0dXJuZWQgdG8gdGhlIGV2ZW50 IHF1ZXVlIG9mIHRoZSBMV1AuICAqLwotLQkgICAgICBpZiAobHAtPnN0YXR1cykKLS0JCXsKLS0J CSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLS0JCSAgICB7Ci0tCQkgICAgICBmcHJpbnRmX3VuZmls dGVyZWQgKGdkYl9zdGRsb2csCi0tCQkJCQkgICJTV0M6IGtpbGwgJXMsICVzXG4iLAotLQkJCQkJ ICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpLAotLQkJCQkJICBzdGF0dXNfdG9fc3RyICgo aW50KSBzdGF0dXMpKTsKLS0JCSAgICB9Ci0tCQkgIGtpbGxfbHdwIChHRVRfTFdQIChscC0+cHRp ZCksIFdTVE9QU0lHIChzdGF0dXMpKTsKLS0JCX0KLS0JICAgICAgZWxzZQotLQkJbHAtPnN0YXR1 cyA9IHN0YXR1czsKLS0JICAgICAgcmV0dXJuIDA7Ci0tCSAgICB9Ci0rCSAgLyogU2F2ZSB0aGUg c2lndHJhcCBldmVudC4gICovCi0rCSAgbHAtPnN0YXR1cyA9IHN0YXR1czsKLSsJICBnZGJfYXNz ZXJ0ICghIGxwLT5zdG9wcGVkKTsKLSsJICBnZGJfYXNzZXJ0IChscC0+c2lnbmFsbGVkKTsKLSsJ ICBscC0+c3RvcHBlZCA9IDE7Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsKLSAJICAvKiBXZSBjYXVn aHQgdGhlIFNJR1NUT1AgdGhhdCB3ZSBpbnRlbmRlZCB0byBjYXRjaCwgc28KLSAJICAgICB0aGVy ZSdzIG5vIFNJR1NUT1AgcGVuZGluZy4gICovCi0tCSAgbHAtPnN0b3BwZWQgPSAxOwotKwotKwkg IGlmIChkZWJ1Z19saW51eF9uYXQpCi0rCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csCi0rCQkJCSJTV0M6IERlbGF5ZWQgU0lHU1RPUCBjYXVnaHQgZm9yICVzLlxuIiwKLSsJCQkJ dGFyZ2V0X3BpZF90b19zdHIgKGxwLT5wdGlkKSk7Ci0rCi0rCSAgaWYgKGxwLT5zdGVwKQotKwkg ICAgewotKwkgICAgICAvKiBMUC0+U1RBVFVTIGlzIDAgaGVyZS4gIFRoYXQgbWVhbnMgU0lHVFJB UCBmcm9tCi0rCQkgUFRSQUNFX1NJTkdMRVNURVAgc3RpbGwgaGFzIHRvIGJlIGRlbGl2ZXJlZCBm b3IgdGhpcyBpbmZlcmlvcgotKwkJIHN0b3AuICBDYXRjaGluZyB0aGUgU0lHVFJBUCBldmVudCBp cyBpbXBvcnRhbnQgdG8gcHJldmVudAotKwkJIHN0YXJ2YXRpb24gaW4gc2VsZWN0X2V2ZW50X2x3 cC4gICovCi0rCi0rCSAgICAgIHJlZ2lzdGVyc19jaGFuZ2VkICgpOwotKwkgICAgICBsaW51eF9v cHMtPnRvX3Jlc3VtZSAobGludXhfb3BzLCBwaWRfdG9fcHRpZCAoR0VUX0xXUCAobHAtPnB0aWQp KSwKLSsJCQkJICAgIDEsIEdEQl9TSUdOQUxfMCk7Ci0rCSAgICAgIGlmIChkZWJ1Z19saW51eF9u YXQpCi0rCQlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCSAgICAiU1dDOiAl cyAlcywgMCwgMCAoZGlzY2FyZCBTSUdTVE9QKVxuIiwKLSsJCQkJICAgICJQVFJBQ0VfU0lOR0xF U1RFUCIsCi0rCQkJCSAgICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpKTsKLSsKLSsJICAg ICAgbHAtPnN0b3BwZWQgPSAwOwotKwkgICAgICBnZGJfYXNzZXJ0IChscC0+cmVzdW1lZCk7Ci0r CSAgICAgIHN0b3Bfd2FpdF9jYWxsYmFjayAobHAsIE5VTEwpOwotKwkgICAgICBnZGJfYXNzZXJ0 IChscC0+c3RvcHBlZCk7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgbHAtPnN0b3BwZWQgPSAx OwotKwotKwkgIC8qIFJlc2V0IFNJR05BTExFRCBvbmx5IGFmdGVyIHRoZSBzdG9wX3dhaXRfY2Fs bGJhY2sgY2FsbCBhYm92ZSBhcwotKwkgICAgIGl0IGRvZXMgZ2RiX2Fzc2VydCBvbiBTSUdOQUxM RUQuICAqLwotIAkgIGxwLT5zaWduYWxsZWQgPSAwOwotIAl9Ci0gICAgIH0KLUBAIC0zNjE2LDU0 ICszNTY5LDYgQEAgcmV0cnk6Ci0gCWxwID0gTlVMTDsKLSAgICAgfQotIAotLSAgaWYgKGxwICYm IGxwLT5zaWduYWxsZWQgJiYgbHAtPmxhc3RfcmVzdW1lX2tpbmQgIT0gcmVzdW1lX3N0b3ApCi0t ICAgIHsKLS0gICAgICAvKiBBIHBlbmRpbmcgU0lHU1RPUCBtYXkgaW50ZXJmZXJlIHdpdGggdGhl IG5vcm1hbCBzdHJlYW0gb2YKLS0gICAgICAgICBldmVudHMuICBJbiBhIHR5cGljYWwgY2FzZSB3 aGVyZSBpbnRlcmZlcmVuY2UgaXMgYSBwcm9ibGVtLAotLSAgICAgICAgIHdlIGhhdmUgYSBTSUdT VE9QIHNpZ25hbCBwZW5kaW5nIGZvciBMV1AgQSB3aGlsZQotLSAgICAgICAgIHNpbmdsZS1zdGVw cGluZyBpdCwgZW5jb3VudGVyIGFuIGV2ZW50IGluIExXUCBCLCBhbmQgdGFrZSB0aGUKLS0gICAg ICAgICBwZW5kaW5nIFNJR1NUT1Agd2hpbGUgdHJ5aW5nIHRvIHN0b3AgTFdQIEEuICBBZnRlciBw cm9jZXNzaW5nCi0tICAgICAgICAgdGhlIGV2ZW50IGluIExXUCBCLCBMV1AgQSBpcyBjb250aW51 ZWQsIGFuZCB3ZSdsbCBuZXZlciBzZWUKLS0gICAgICAgICB0aGUgU0lHVFJBUCBhc3NvY2lhdGVk IHdpdGggdGhlIGxhc3QgdGltZSB3ZSB3ZXJlCi0tICAgICAgICAgc2luZ2xlLXN0ZXBwaW5nIExX UCBBLiAgKi8KLS0KLS0gICAgICAvKiBSZXN1bWUgdGhlIHRocmVhZC4gIEl0IHNob3VsZCBoYWx0 IGltbWVkaWF0ZWx5IHJldHVybmluZyB0aGUKLS0gICAgICAgICBwZW5kaW5nIFNJR1NUT1AuICAq LwotLSAgICAgIHJlZ2lzdGVyc19jaGFuZ2VkICgpOwotLSAgICAgIGlmIChsaW51eF9uYXRfcHJl cGFyZV90b19yZXN1bWUgIT0gTlVMTCkKLS0JbGludXhfbmF0X3ByZXBhcmVfdG9fcmVzdW1lIChs cCk7Ci0tICAgICAgbGludXhfb3BzLT50b19yZXN1bWUgKGxpbnV4X29wcywgcGlkX3RvX3B0aWQg KEdFVF9MV1AgKGxwLT5wdGlkKSksCi0tCQkJICAgIGxwLT5zdGVwLCBHREJfU0lHTkFMXzApOwot LSAgICAgIGlmIChkZWJ1Z19saW51eF9uYXQpCi0tCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywKLS0JCQkgICAgIkxMVzogJXMgJXMsIDAsIDAgKGV4cGVjdCBTSUdTVE9QKVxuIiwKLS0J CQkgICAgbHAtPnN0ZXAgPyAiUFRSQUNFX1NJTkdMRVNURVAiIDogIlBUUkFDRV9DT05UIiwKLS0J CQkgICAgdGFyZ2V0X3BpZF90b19zdHIgKGxwLT5wdGlkKSk7Ci0tICAgICAgbHAtPnN0b3BwZWQg PSAwOwotLSAgICAgIGdkYl9hc3NlcnQgKGxwLT5yZXN1bWVkKTsKLS0KLS0gICAgICAvKiBDYXRj aCB0aGUgcGVuZGluZyBTSUdTVE9QLiAgKi8KLS0gICAgICBzdGF0dXMgPSBscC0+c3RhdHVzOwot LSAgICAgIGxwLT5zdGF0dXMgPSAwOwotLQotLSAgICAgIHN0b3Bfd2FpdF9jYWxsYmFjayAobHAs IE5VTEwpOwotLQotLSAgICAgIC8qIElmIHRoZSBscC0+c3RhdHVzIGZpZWxkIGlzbid0IGVtcHR5 LCB3ZSBjYXVnaHQgYW5vdGhlciBzaWduYWwKLS0JIHdoaWxlIGZsdXNoaW5nIHRoZSBTSUdTVE9Q LiAgUmV0dXJuIGl0IGJhY2sgdG8gdGhlIGV2ZW50Ci0tCSBxdWV1ZSBvZiB0aGUgTFdQLCBhcyB3 ZSBhbHJlYWR5IGhhdmUgYW4gZXZlbnQgdG8gaGFuZGxlLiAgKi8KLS0gICAgICBpZiAobHAtPnN0 YXR1cykKLS0JewotLQkgIGlmIChkZWJ1Z19saW51eF9uYXQpCi0tCSAgICBmcHJpbnRmX3VuZmls dGVyZWQgKGdkYl9zdGRsb2csCi0tCQkJCSJMTFc6IGtpbGwgJXMsICVzXG4iLAotLQkJCQl0YXJn ZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpLAotLQkJCQlzdGF0dXNfdG9fc3RyIChscC0+c3RhdHVz KSk7Ci0tCSAga2lsbF9sd3AgKEdFVF9MV1AgKGxwLT5wdGlkKSwgV1NUT1BTSUcgKGxwLT5zdGF0 dXMpKTsKLS0JfQotLQotLSAgICAgIGxwLT5zdGF0dXMgPSBzdGF0dXM7Ci0tICAgIH0KLS0KLSAg IGlmICghdGFyZ2V0X2Nhbl9hc3luY19wICgpKQotICAgICB7Ci0gICAgICAgLyogQ2F1c2VzIFNJ R0lOVCB0byBiZSBwYXNzZWQgb24gdG8gdGhlIGF0dGFjaGVkIHByb2Nlc3MuICAqLwotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRo cmVhZHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuYwkyMDEyLTA2LTAyIDIxOjM1OjQwLjI2ODQ5OTA2MCAr MDIwMAotQEAgLTAsMCArMSw0NDcgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0r ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KLSsKLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0rI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSsj aW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0rI2luY2x1ZGUgPGVycm5v Lmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVk ZSA8YXNzZXJ0Lmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzaWduYWwu aD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4KLSsKLSsj ZGVmaW5lIGdldHRpZCgpIHN5c2NhbGwgKF9fTlJfZ2V0dGlkKQotKyNkZWZpbmUgdGdraWxsKHRn aWQsIHRpZCwgc2lnKSBzeXNjYWxsIChfX05SX3Rna2lsbCwgdGdpZCwgdGlkLCBzaWcpCi0rCi0r LyogVGVybWluYXRlIGFsd2F5cyBpbiB0aGUgbWFpbiB0YXNrLCBpdCBjYW4gbG9jayB1cCB3aXRo IFNJR1NUT1BwZWQgR0RCCi0rICAgb3RoZXJ3aXNlLiAgKi8KLSsjZGVmaW5lIFRJTUVPVVQgKGdl dHRpZCAoKSA9PSBnZXRwaWQoKSA/IDEwIDogMTUpCi0rCi0rc3RhdGljIHBpZF90IHRocmVhZDFf dGlkOwotK3N0YXRpYyBwdGhyZWFkX2NvbmRfdCB0aHJlYWQxX3RpZF9jb25kID0gUFRIUkVBRF9D T05EX0lOSVRJQUxJWkVSOwotK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgdGhyZWFkMV90aWRfbXV0 ZXggPSBQVEhSRUFEX0VSUk9SQ0hFQ0tfTVVURVhfSU5JVElBTElaRVJfTlA7Ci0rc3RhdGljIGlu dCB0aHJlYWQxX3NpZ3VzcjFfaGl0OwotK3N0YXRpYyBpbnQgdGhyZWFkMV9zaWd1c3IyX2hpdDsK LSsKLStzdGF0aWMgcGlkX3QgdGhyZWFkMl90aWQ7Ci0rc3RhdGljIHB0aHJlYWRfY29uZF90IHRo cmVhZDJfdGlkX2NvbmQgPSBQVEhSRUFEX0NPTkRfSU5JVElBTElaRVI7Ci0rc3RhdGljIHB0aHJl YWRfbXV0ZXhfdCB0aHJlYWQyX3RpZF9tdXRleCA9IFBUSFJFQURfRVJST1JDSEVDS19NVVRFWF9J TklUSUFMSVpFUl9OUDsKLStzdGF0aWMgaW50IHRocmVhZDJfc2lndXNyMV9oaXQ7Ci0rc3RhdGlj IGludCB0aHJlYWQyX3NpZ3VzcjJfaGl0OwotKwotK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgdGVy bWluYXRlX211dGV4ID0gUFRIUkVBRF9FUlJPUkNIRUNLX01VVEVYX0lOSVRJQUxJWkVSX05QOwot KwotKy8qIERvIG5vdCB1c2UgYWxhcm0gYXMgaXQgd291bGQgY3JlYXRlIGEgcHRyYWNlIGV2ZW50 IHdoaWNoIHdvdWxkIGhhbmcgdXAgdXMgaWYKLSsgICB3ZSBhcmUgYmVpbmcgdHJhY2VkIGJ5IEdE QiB3aGljaCB3ZSBzdG9wcGVkIG91cnNlbHZlcy4gICovCi0rCi0rc3RhdGljIHZvaWQgdGltZWRf bXV0ZXhfbG9jayAocHRocmVhZF9tdXRleF90ICptdXRleCkKLSt7Ci0rICBpbnQgaTsKLSsgIHN0 cnVjdCB0aW1lc3BlYyBzdGFydCwgbm93OwotKwotKyAgaSA9IGNsb2NrX2dldHRpbWUgKENMT0NL X01PTk9UT05JQywgJnN0YXJ0KTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIGRvCi0rICAg IHsKLSsgICAgICBpID0gcHRocmVhZF9tdXRleF90cnlsb2NrIChtdXRleCk7Ci0rICAgICAgaWYg KGkgPT0gMCkKLSsJcmV0dXJuOwotKyAgICAgIGFzc2VydCAoaSA9PSBFQlVTWSk7Ci0rCi0rICAg ICAgaSA9IGNsb2NrX2dldHRpbWUgKENMT0NLX01PTk9UT05JQywgJm5vdyk7Ci0rICAgICAgYXNz ZXJ0IChpID09IDApOwotKyAgICAgIGFzc2VydCAobm93LnR2X3NlYyA+PSBzdGFydC50dl9zZWMp OwotKyAgICB9Ci0rICB3aGlsZSAobm93LnR2X3NlYyAtIHN0YXJ0LnR2X3NlYyA8IFRJTUVPVVQp OwotKwotKyAgZnByaW50ZiAoc3RkZXJyLCAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGludGVybmFs IGxvY2shXG4iKTsKLSsgIGV4aXQgKEVYSVRfRkFJTFVSRSk7Ci0rfQotKwotK3N0YXRpYyB2b2lk Ci0raGFuZGxlciAoaW50IHNpZ25vLCBzaWdpbmZvX3QgKnNpZ2luZm8sIHZvaWQgKmV4Y2VwdGlv bikKLSt7Ci0rICBpbnQgKnZhcnA7Ci0rCi0rICBhc3NlcnQgKHNpZ2luZm8tPnNpX3NpZ25vID09 IHNpZ25vKTsKLSsgIGFzc2VydCAoc2lnaW5mby0+c2lfY29kZSA9PSBTSV9US0lMTCk7Ci0rICBh c3NlcnQgKHNpZ2luZm8tPnNpX3BpZCA9PSBnZXRwaWQgKCkpOwotKwotKyAgaWYgKGdldHRpZCAo KSA9PSB0aHJlYWQxX3RpZCkKLSsgICAgewotKyAgICAgIGlmIChzaWdubyA9PSBTSUdVU1IxKQot Kwl2YXJwID0gJnRocmVhZDFfc2lndXNyMV9oaXQ7Ci0rICAgICAgZWxzZSBpZiAoc2lnbm8gPT0g U0lHVVNSMikKLSsJdmFycCA9ICZ0aHJlYWQxX3NpZ3VzcjJfaGl0OwotKyAgICAgIGVsc2UKLSsJ YXNzZXJ0ICgwKTsKLSsgICAgfQotKyAgZWxzZSBpZiAoZ2V0dGlkICgpID09IHRocmVhZDJfdGlk KQotKyAgICB7Ci0rICAgICAgaWYgKHNpZ25vID09IFNJR1VTUjEpCi0rCXZhcnAgPSAmdGhyZWFk Ml9zaWd1c3IxX2hpdDsKLSsgICAgICBlbHNlIGlmIChzaWdubyA9PSBTSUdVU1IyKQotKwl2YXJw ID0gJnRocmVhZDJfc2lndXNyMl9oaXQ7Ci0rICAgICAgZWxzZQotKwlhc3NlcnQgKDApOwotKyAg ICB9Ci0rICBlbHNlCi0rICAgIGFzc2VydCAoMCk7Ci0rCi0rICBpZiAoKnZhcnApCi0rICAgIHsK LSsgICAgICBmcHJpbnRmIChzdGRlcnIsICJTaWduYWwgJWQgZm9yIFRJRCAlbHUgaGFzIGJlZW4g YWxyZWFkeSBoaXQhXG4iLCBzaWdubywKLSsJICAgICAgICh1bnNpZ25lZCBsb25nKSBnZXR0aWQg KCkpOwotKyAgICAgIGV4aXQgKEVYSVRfRkFJTFVSRSk7Ci0rICAgIH0KLSsgICp2YXJwID0gMTsK LSt9Ci0rCi0rc3RhdGljIHZvaWQgKgotK3RocmVhZDFfZnVuYyAodm9pZCAqdW51c2VkKQotK3sK LSsgIGludCBpOwotKwotKyAgdGltZWRfbXV0ZXhfbG9jayAoJnRocmVhZDFfdGlkX211dGV4KTsK LSsKLSsgIC8qIFRIUkVBRDFfVElEX01VVEVYIG11c3QgYmUgYWxyZWFkeSBsb2NrZWQgdG8gYXZv aWQgcmFjZS4gICovCi0rICB0aHJlYWQxX3RpZCA9IGdldHRpZCAoKTsKLSsKLSsgIGkgPSBwdGhy ZWFkX2NvbmRfc2lnbmFsICgmdGhyZWFkMV90aWRfY29uZCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7 Ci0rICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0aHJlYWQxX3RpZF9tdXRleCk7Ci0rICBh c3NlcnQgKGkgPT0gMCk7Ci0rCi0rICAvKiBCZSBzdXJlIHRoZSAidCAodHJhY2luZyBzdG9wKSIg dGVzdCBjYW4gcHJvY2VlZCBmb3IgYm90aCB0aHJlYWRzLiAgKi8KLSsgIHRpbWVkX211dGV4X2xv Y2sgKCZ0ZXJtaW5hdGVfbXV0ZXgpOwotKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGVy bWluYXRlX211dGV4KTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIGlmICghIHRocmVhZDFf c2lndXNyMV9oaXQpCi0rICAgIHsKLSsgICAgICBmcHJpbnRmIChzdGRlcnIsICJUaHJlYWQgMSBz aWduYWwgU0lHVVNSMSBub3QgaGl0IVxuIik7Ci0rICAgICAgZXhpdCAoRVhJVF9GQUlMVVJFKTsK LSsgICAgfQotKyAgaWYgKCEgdGhyZWFkMV9zaWd1c3IyX2hpdCkKLSsgICAgewotKyAgICAgIGZw cmludGYgKHN0ZGVyciwgIlRocmVhZCAxIHNpZ25hbCBTSUdVU1IyIG5vdCBoaXQhXG4iKTsKLSsg ICAgICBleGl0IChFWElUX0ZBSUxVUkUpOwotKyAgICB9Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9 Ci0rCi0rc3RhdGljIHZvaWQgKgotK3RocmVhZDJfZnVuYyAodm9pZCAqdW51c2VkKQotK3sKLSsg IGludCBpOwotKwotKyAgdGltZWRfbXV0ZXhfbG9jayAoJnRocmVhZDJfdGlkX211dGV4KTsKLSsK LSsgIC8qIFRIUkVBRDJfVElEX01VVEVYIG11c3QgYmUgYWxyZWFkeSBsb2NrZWQgdG8gYXZvaWQg cmFjZS4gICovCi0rICB0aHJlYWQyX3RpZCA9IGdldHRpZCAoKTsKLSsKLSsgIGkgPSBwdGhyZWFk X2NvbmRfc2lnbmFsICgmdGhyZWFkMl90aWRfY29uZCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0r ICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0aHJlYWQyX3RpZF9tdXRleCk7Ci0rICBhc3Nl cnQgKGkgPT0gMCk7Ci0rCi0rICAvKiBCZSBzdXJlIHRoZSAidCAodHJhY2luZyBzdG9wKSIgdGVz dCBjYW4gcHJvY2VlZCBmb3IgYm90aCB0aHJlYWRzLiAgKi8KLSsgIHRpbWVkX211dGV4X2xvY2sg KCZ0ZXJtaW5hdGVfbXV0ZXgpOwotKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGVybWlu YXRlX211dGV4KTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIGlmICghIHRocmVhZDJfc2ln dXNyMV9oaXQpCi0rICAgIHsKLSsgICAgICBmcHJpbnRmIChzdGRlcnIsICJUaHJlYWQgMiBzaWdu YWwgU0lHVVNSMSBub3QgaGl0IVxuIik7Ci0rICAgICAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKLSsg ICAgfQotKyAgaWYgKCEgdGhyZWFkMl9zaWd1c3IyX2hpdCkKLSsgICAgewotKyAgICAgIGZwcmlu dGYgKHN0ZGVyciwgIlRocmVhZCAyIHNpZ25hbCBTSUdVU1IyIG5vdCBoaXQhXG4iKTsKLSsgICAg ICBleGl0IChFWElUX0ZBSUxVUkUpOwotKyAgICB9Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9Ci0r Ci0rc3RhdGljIGNvbnN0IGNoYXIgKgotK3Byb2Nfc3RyaW5nIChjb25zdCBjaGFyICpmaWxlbmFt ZSwgY29uc3QgY2hhciAqbGluZSkKLSt7Ci0rICBGSUxFICpmOwotKyAgc3RhdGljIGNoYXIgYnVm W0xJTkVfTUFYXTsKLSsgIHNpemVfdCBsaW5lX2xlbiA9IHN0cmxlbiAobGluZSk7Ci0rCi0rICBm ID0gZm9wZW4gKGZpbGVuYW1lLCAiciIpOwotKyAgaWYgKGYgPT0gTlVMTCkKLSsgICAgewotKyAg ICAgIGZwcmludGYgKHN0ZGVyciwgImZvcGVuIChcIiVzXCIpIGZvciBcIiVzXCI6ICVzXG4iLCBm aWxlbmFtZSwgbGluZSwKLSsJICAgICAgIHN0cmVycm9yIChlcnJubykpOwotKyAgICAgIGV4aXQg KEVYSVRfRkFJTFVSRSk7Ci0rICAgIH0KLSsgIHdoaWxlIChlcnJubyA9IDAsIGZnZXRzIChidWYs IHNpemVvZiAoYnVmKSwgZikpCi0rICAgIHsKLSsgICAgICBjaGFyICpzOwotKwotKyAgICAgIHMg PSBzdHJjaHIgKGJ1ZiwgJ1xuJyk7Ci0rICAgICAgYXNzZXJ0IChzICE9IE5VTEwpOwotKyAgICAg ICpzID0gMDsKLSsKLSsgICAgICBpZiAoc3RybmNtcCAoYnVmLCBsaW5lLCBsaW5lX2xlbikgIT0g MCkKLSsJY29udGludWU7Ci0rCi0rICAgICAgaWYgKGZjbG9zZSAoZikpCi0rCXsKLSsJICBmcHJp bnRmIChzdGRlcnIsICJmY2xvc2UgKFwiJXNcIikgZm9yIFwiJXNcIjogJXNcbiIsIGZpbGVuYW1l LCBsaW5lLAotKwkJICAgc3RyZXJyb3IgKGVycm5vKSk7Ci0rCSAgZXhpdCAoRVhJVF9GQUlMVVJF KTsKLSsJfQotKwotKyAgICAgIHJldHVybiAmYnVmW2xpbmVfbGVuXTsKLSsgICAgfQotKyAgaWYg KGVycm5vICE9IDApCi0rICAgIHsKLSsgICAgICBmcHJpbnRmIChzdGRlcnIsICJmZ2V0cyAoXCIl c1wiOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9yIChlcnJubykpOwotKyAgICAgIGV4aXQgKEVY SVRfRkFJTFVSRSk7Ci0rICAgIH0KLSsgIGZwcmludGYgKHN0ZGVyciwgIlwiJXNcIjogTm8gbGlu ZSBcIiVzXCIgZm91bmQuXG4iLCBmaWxlbmFtZSwgbGluZSk7Ci0rICBleGl0IChFWElUX0ZBSUxV UkUpOwotK30KLSsKLStzdGF0aWMgdW5zaWduZWQgbG9uZwotK3Byb2NfdWxvbmcgKGNvbnN0IGNo YXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpsaW5lKQotK3sKLSsgIGNvbnN0IGNoYXIgKnMgPSBw cm9jX3N0cmluZyAoZmlsZW5hbWUsIGxpbmUpOwotKyAgbG9uZyByZXR2YWw7Ci0rICBjaGFyICpl bmQ7Ci0rCi0rICBlcnJubyA9IDA7Ci0rICByZXR2YWwgPSBzdHJ0b2wgKHMsICZlbmQsIDEwKTsK LSsgIGlmIChyZXR2YWwgPCAwIHx8IHJldHZhbCA+PSBMT05HX01BWCB8fCAoZW5kICYmICplbmQp KQotKyAgICB7Ci0rICAgICAgZnByaW50ZiAoc3RkZXJyLCAiXCIlc1wiOlwiJXNcIjogJWxkLCAl c1xuIiwgZmlsZW5hbWUsIGxpbmUsIHJldHZhbCwKLSsJICAgICAgIHN0cmVycm9yIChlcnJubykp OwotKyAgICAgIGV4aXQgKEVYSVRfRkFJTFVSRSk7Ci0rICAgIH0KLSsgIHJldHVybiByZXR2YWw7 Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rc3RhdGVfd2FpdCAocGlkX3QgcHJvY2VzcywgY29uc3Qg Y2hhciAqd2FudGVkKQotK3sKLSsgIGNoYXIgKmZpbGVuYW1lOwotKyAgaW50IGk7Ci0rICBzdHJ1 Y3QgdGltZXNwZWMgc3RhcnQsIG5vdzsKLSsgIGNvbnN0IGNoYXIgKnN0YXRlOwotKwotKyAgaSA9 IGFzcHJpbnRmICgmZmlsZW5hbWUsICIvcHJvYy8lbHUvc3RhdHVzIiwgKHVuc2lnbmVkIGxvbmcp IHByb2Nlc3MpOwotKyAgYXNzZXJ0IChpID4gMCk7Ci0rCi0rICBpID0gY2xvY2tfZ2V0dGltZSAo Q0xPQ0tfTU9OT1RPTklDLCAmc3RhcnQpOwotKyAgYXNzZXJ0IChpID09IDApOwotKwotKyAgZG8K LSsgICAgewotKyAgICAgIHN0YXRlID0gcHJvY19zdHJpbmcgKGZpbGVuYW1lLCAiU3RhdGU6XHQi KTsKLSsKLSsgICAgICAvKiB0b3J2YWxkcy9saW51eC0yLjYuZ2l0IDQ2NDc2M2NmMWM2ZGY2MzJk Y2NjOGYyZjRjN2U1MDE2MzE1NGEyYzAKLSsJIGhhcyBjaGFuZ2VkICJUICh0cmFjaW5nIHN0b3Ap IiB0byAidCAodHJhY2luZyBzdG9wKSIuICBNYWtlIHRoZSBHREIKLSsJIHRlc3RjYXNlIGJhY2t3 YXJkIGNvbXBhdGlibGUgd2l0aCBvbGRlciBMaW51eCBrZXJuZWxzLiAgKi8KLSsgICAgICBpZiAo c3RyY21wIChzdGF0ZSwgIlQgKHRyYWNpbmcgc3RvcCkiKSA9PSAwKQotKwlzdGF0ZSA9ICJ0ICh0 cmFjaW5nIHN0b3ApIjsKLSsKLSsgICAgICBpZiAoc3RyY21wIChzdGF0ZSwgd2FudGVkKSA9PSAw KQotKwl7Ci0rCSAgZnJlZSAoZmlsZW5hbWUpOwotKwkgIHJldHVybjsKLSsJfQotKwotKyAgICAg IGlmIChzY2hlZF95aWVsZCAoKSkKLSsJewotKwkgIHBlcnJvciAoInNjaGVkX3lpZWxkKCkiKTsK LSsJICBleGl0IChFWElUX0ZBSUxVUkUpOwotKwl9Ci0rCi0rICAgICAgaSA9IGNsb2NrX2dldHRp bWUgKENMT0NLX01PTk9UT05JQywgJm5vdyk7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOwotKyAg ICAgIGFzc2VydCAobm93LnR2X3NlYyA+PSBzdGFydC50dl9zZWMpOwotKyAgICB9Ci0rICB3aGls ZSAobm93LnR2X3NlYyAtIHN0YXJ0LnR2X3NlYyA8IFRJTUVPVVQpOwotKwotKyAgZnByaW50ZiAo c3RkZXJyLCAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIFBJRCAlbHUgXCIlc1wiIChub3cgaXQgaXMg XCIlc1wiKSFcbiIsCi0rCSAgICh1bnNpZ25lZCBsb25nKSBwcm9jZXNzLCB3YW50ZWQsIHN0YXRl KTsKLSsgIGV4aXQgKEVYSVRfRkFJTFVSRSk7Ci0rfQotKwotK3N0YXRpYyB2b2xhdGlsZSBwaWRf dCB0cmFjZXIgPSAwOwotK3N0YXRpYyBwdGhyZWFkX3QgdGhyZWFkMSwgdGhyZWFkMjsKLSsKLStz dGF0aWMgdm9pZAotK2NsZWFudXAgKHZvaWQpCi0rewotKyAgcHJpbnRmICgiUmVzdW1pbmcgR0RC IFBJRCAlbHUuXG4iLCAodW5zaWduZWQgbG9uZykgdHJhY2VyKTsKLSsKLSsgIGlmICh0cmFjZXIp Ci0rICAgIHsKLSsgICAgICBpbnQgaTsKLSsgICAgICBpbnQgdHJhY2VyX3NhdmUgPSB0cmFjZXI7 Ci0rCi0rICAgICAgdHJhY2VyID0gMDsKLSsKLSsgICAgICBpID0ga2lsbCAodHJhY2VyX3NhdmUs IFNJR0NPTlQpOwotKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKLSsgICAgfQotK30KLSsKLStpbnQK LSttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewotKyAgaW50IGk7Ci0rICBpbnQgc3Rh bmRhbG9uZSA9IDA7Ci0rICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdDsKLSsKLSsgIGlmIChhcmdjID09 IDIgJiYgc3RyY21wIChhcmd2WzFdLCAiLXMiKSA9PSAwKQotKyAgICBzdGFuZGFsb25lID0gMTsK LSsgIGVsc2UKLSsgICAgYXNzZXJ0IChhcmdjID09IDEpOwotKwotKyAgc2V0YnVmIChzdGRvdXQs IE5VTEwpOwotKwotKyAgdGltZWRfbXV0ZXhfbG9jayAoJnRocmVhZDFfdGlkX211dGV4KTsKLSsg IHRpbWVkX211dGV4X2xvY2sgKCZ0aHJlYWQyX3RpZF9tdXRleCk7Ci0rCi0rICB0aW1lZF9tdXRl eF9sb2NrICgmdGVybWluYXRlX211dGV4KTsKLSsKLSsgIGVycm5vID0gMDsKLSsgIG1lbXNldCAo JmFjdCwgMCwgc2l6ZW9mIChhY3QpKTsKLSsgIGFjdC5zYV9zaWdhY3Rpb24gPSBoYW5kbGVyOwot KyAgYWN0LnNhX2ZsYWdzID0gU0FfUkVTVEFSVCB8IFNBX1NJR0lORk87Ci0rICBpID0gc2lnZW1w dHlzZXQgKCZhY3Quc2FfbWFzayk7Ci0rICBhc3NlcnRfcGVycm9yIChlcnJubyk7Ci0rICBhc3Nl cnQgKGkgPT0gMCk7Ci0rICBpID0gc2lnYWN0aW9uIChTSUdVU1IxLCAmYWN0LCBOVUxMKTsKLSsg IGFzc2VydF9wZXJyb3IgKGVycm5vKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsgIGkgPSBzaWdh Y3Rpb24gKFNJR1VTUjIsICZhY3QsIE5VTEwpOwotKyAgYXNzZXJ0X3BlcnJvciAoZXJybm8pOwot KyAgYXNzZXJ0IChpID09IDApOwotKwotKyAgaSA9IHB0aHJlYWRfY3JlYXRlICgmdGhyZWFkMSwg TlVMTCwgdGhyZWFkMV9mdW5jLCBOVUxMKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIGkg PSBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZDIsIE5VTEwsIHRocmVhZDJfZnVuYywgTlVMTCk7Ci0r ICBhc3NlcnQgKGkgPT0gMCk7Ci0rCi0rICBpZiAoIXN0YW5kYWxvbmUpCi0rICAgIHsKLSsgICAg ICB0cmFjZXIgPSBwcm9jX3Vsb25nICgiL3Byb2Mvc2VsZi9zdGF0dXMiLCAiVHJhY2VyUGlkOlx0 Iik7Ci0rICAgICAgaWYgKHRyYWNlciA9PSAwKQotKwl7Ci0rCSAgZnByaW50ZiAoc3RkZXJyLCAi VGhlIHRlc3RjYXNlIG11c3QgYmUgcnVuIGJ5IEdEQiFcbiIpOwotKwkgIGV4aXQgKEVYSVRfRkFJ TFVSRSk7Ci0rCX0KLSsgICAgICBpZiAodHJhY2VyICE9IGdldHBwaWQgKCkpCi0rCXsKLSsJICBm cHJpbnRmIChzdGRlcnIsICJUaGUgdGVzdGNhc2UgcGFyZW50IG11c3QgYmUgb3VyIEdEQiB0cmFj ZXIhXG4iKTsKLSsJICBleGl0IChFWElUX0ZBSUxVUkUpOwotKwl9Ci0rICAgIH0KLSsKLSsgIC8q IFNJR0NPTlQgb3VyIGRlYnVnZ2VyIGluIHRoZSBjYXNlIG9mIG91ciBjcmFzaCBhcyB3ZSB3b3Vs ZCBkZWFkbG9jawotKyAgICAgb3RoZXJ3aXNlLiAgKi8KLSsKLSsgIGF0ZXhpdCAoY2xlYW51cCk7 Ci0rCi0rICBwcmludGYgKCJTdG9wcGluZyBHREIgUElEICVsdS5cbiIsICh1bnNpZ25lZCBsb25n KSB0cmFjZXIpOwotKwotKyAgaWYgKHRyYWNlcikKLSsgICAgewotKyAgICAgIGkgPSBraWxsICh0 cmFjZXIsIFNJR1NUT1ApOwotKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKLSsgICAgICBzdGF0ZV93 YWl0ICh0cmFjZXIsICJUIChzdG9wcGVkKSIpOwotKyAgICB9Ci0rCi0rICAvKiBUaHJlYWRzIGFy ZSBub3cgd2FpdGluZyBhdCB0aW1lZF9tdXRleF9sb2NrICh0aHJlYWQxX3RpZF9tdXRleCkgYW5k IHNvCi0rICAgICB0aGV5IGNvdWxkIG5vdCB0cmlnZ2VyIHRoZSBzaWduYWxzIGJlZm9yZSBHREIg Z2V0cyB1bnN0b3BwZWQgbGF0ZXIuCi0rICAgICBUaHJlYWRzIGdldCByZXN1bWVkIGF0IHB0aHJl YWRfY29uZF93YWl0IGJlbG93LiAgVXNlIGB3aGlsZScgbG9vcHMgZm9yCi0rICAgICBwcm90ZWN0 aW9uIGFnYWluc3Qgc3B1cmlvdXMgcHRocmVhZF9jb25kX3dhaXQgd2FrZXVwcy4gICovCi0rCi0r ICBwcmludGYgKCJXYWl0aW5nIHRpbGwgdGhlIHRocmVhZHMgaW5pdGlhbGl6ZSB0aGVpciBUSURz LlxuIik7Ci0rCi0rICB3aGlsZSAodGhyZWFkMV90aWQgPT0gMCkKLSsgICAgewotKyAgICAgIGkg PSBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZDFfdGlkX2NvbmQsICZ0aHJlYWQxX3RpZF9tdXRl eCk7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOwotKyAgICB9Ci0rCi0rICB3aGlsZSAodGhyZWFk Ml90aWQgPT0gMCkKLSsgICAgewotKyAgICAgIGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVh ZDJfdGlkX2NvbmQsICZ0aHJlYWQyX3RpZF9tdXRleCk7Ci0rICAgICAgYXNzZXJ0IChpID09IDAp OwotKyAgICB9Ci0rCi0rICBwcmludGYgKCJUaHJlYWQgMSBUSUQgPSAlbHUsIHRocmVhZCAyIFRJ RCA9ICVsdSwgUElEID0gJWx1LlxuIiwKLSsJICAodW5zaWduZWQgbG9uZykgdGhyZWFkMV90aWQs ICh1bnNpZ25lZCBsb25nKSB0aHJlYWQyX3RpZCwKLSsJICAodW5zaWduZWQgbG9uZykgZ2V0cGlk ICgpKTsKLSsKLSsgIGVycm5vID0gMDsKLSsgIGkgPSB0Z2tpbGwgKGdldHBpZCAoKSwgdGhyZWFk MV90aWQsIFNJR1VTUjEpOwotKyAgYXNzZXJ0X3BlcnJvciAoZXJybm8pOwotKyAgYXNzZXJ0IChp ID09IDApOwotKyAgaSA9IHRna2lsbCAoZ2V0cGlkICgpLCB0aHJlYWQxX3RpZCwgU0lHVVNSMik7 Ci0rICBhc3NlcnRfcGVycm9yIChlcnJubyk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rICBpID0g dGdraWxsIChnZXRwaWQgKCksIHRocmVhZDJfdGlkLCBTSUdVU1IxKTsKLSsgIGFzc2VydF9wZXJy b3IgKGVycm5vKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsgIGkgPSB0Z2tpbGwgKGdldHBpZCAo KSwgdGhyZWFkMl90aWQsIFNJR1VTUjIpOwotKyAgYXNzZXJ0X3BlcnJvciAoZXJybm8pOwotKyAg YXNzZXJ0IChpID09IDApOwotKwotKyAgcHJpbnRmICgiV2FpdGluZyB0aWxsIHRoZSB0aHJlYWRz IGdldCB0cmFwcGVkIGJ5IHRoZSBzaWduYWxzLlxuIik7Ci0rCi0rICBpZiAodHJhY2VyKQotKyAg ICB7Ci0rICAgICAgLyogczM5MHgtdW5rbm93bi1saW51eC1nbnUgd2lsbCBmYWlsIHdpdGggIlIg KHJ1bm5pbmcpIi4gICovCi0rCi0rICAgICAgc3RhdGVfd2FpdCAodGhyZWFkMV90aWQsICJ0ICh0 cmFjaW5nIHN0b3ApIik7Ci0rCi0rICAgICAgc3RhdGVfd2FpdCAodGhyZWFkMl90aWQsICJ0ICh0 cmFjaW5nIHN0b3ApIik7Ci0rICAgIH0KLSsKLSsgIGNsZWFudXAgKCk7Ci0rCi0rICBwcmludGYg KCJKb2luaW5nIHRoZSB0aHJlYWRzLlxuIik7Ci0rCi0rICBpID0gcHRocmVhZF9tdXRleF91bmxv Y2sgKCZ0ZXJtaW5hdGVfbXV0ZXgpOwotKyAgYXNzZXJ0IChpID09IDApOwotKwotKyAgaSA9IHB0 aHJlYWRfam9pbiAodGhyZWFkMSwgTlVMTCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rCi0rICBp ID0gcHRocmVhZF9qb2luICh0aHJlYWQyLCBOVUxMKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsK LSsgIHByaW50ZiAoIkV4aXRpbmcuXG4iKTsJLyogYnJlYWstYXQtZXhpdCAqLwotKwotKyAgcmV0 dXJuIEVYSVRfU1VDQ0VTUzsKLSt9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5leHAKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40 LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRzLmV4 cAkyMDEyLTA2LTAyIDIxOjM1OjQwLjI5NjQ5OTA1MCArMDIwMAotQEAgLTAsMCArMSw5NCBAQAot KyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3NldCB0ZXN0ZmlsZSAic2lnaW5mby10aHJl YWRzIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0raWYge1tnZGJfY29tcGlsZV9wdGhyZWFkcyAiJHtzcmNk aXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAke2JpbmZpbGV9IGV4ZWN1dGFibGUgW2xpc3QgZGVi dWcgYWRkaXRpb25hbF9mbGFncz0tbHJ0XV0gIT0gIiIgfSB7Ci0rICAgIHJldHVybiAtMQotK30K LSsKLStjbGVhbl9yZXN0YXJ0ICR0ZXN0ZmlsZQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAg ICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBgbm9zdG9wIG5vcHJpbnQgcGFzcycgY291bGQgaW4gc29t ZSBjYXNlcyByZXBvcnQgZmFsc2UgUEFTUyBkdWUgdG8gdGhlCi0rIyAocHJlZW1wdCAnaGFuZGxl JykgY29kZSBwYXRoLgotKwotK2dkYl90ZXN0ICJoYW5kbGUgU0lHVVNSMSBzdG9wIHByaW50IHBh c3MiICJTaWduYWxcWyBcdFxdK1N0b3BcWyBcdFxdK1ByaW50XFsgXHRcXStQYXNzIHRvIHByb2dy YW1cWyBcdFxdK0Rlc2NyaXB0aW9uXHJcblNJR1VTUjFcWyBcdFxdK1llc1xbIFx0XF0rWWVzXFsg XHRcXStZZXNcWyBcdFxdLioiCi0rZ2RiX3Rlc3QgImhhbmRsZSBTSUdVU1IyIHN0b3AgcHJpbnQg cGFzcyIgIlNpZ25hbFxbIFx0XF0rU3RvcFxbIFx0XF0rUHJpbnRcWyBcdFxdK1Bhc3MgdG8gcHJv Z3JhbVxbIFx0XF0rRGVzY3JpcHRpb25cclxuU0lHVVNSMlxbIFx0XF0rWWVzXFsgXHRcXStZZXNc WyBcdFxdK1llc1xbIFx0XF0uKiIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAiYnJlYWstYXQtZXhpdCJdCi0rCi0rc2V0IHRlc3QgImdldCBwaWQiCi0rZ2RiX3Rlc3Rf bXVsdGlwbGUgInAgZ2V0cGlkICgpIiAkdGVzdCB7Ci0rICAgIC1yZSAiID0gKFxbMC05XF0rKVxy XG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXNldCBwaWQgJGV4cGVjdF9vdXQoMSxzdHJpbmcpCi0rCXBh c3MgJHRlc3QKLSsgICAgfQotK30KLSsKLStmb3Ige3NldCBzaWdjb3VudCAwfSB7JHNpZ2NvdW50 IDwgNH0ge2luY3Igc2lnY291bnR9IHsKLSsgICAgc2V0IHRlc3QgImNhdGNoIHNpZ25hbCAkc2ln Y291bnQiCi0rICAgIHNldCBzaWd1c3IgIiIKLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImNvbnRp bnVlIiAkdGVzdCB7Ci0rCS1yZSAiUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lHVVNSKFxbMTJc XSksIFVzZXIgZGVmaW5lZCBzaWduYWwgXFsxMlxdXFwuXHJcbi4qXHJcbiRnZGJfcHJvbXB0ICQi IHsKLSsJICAgIHNldCBzaWd1c3IgJGV4cGVjdF9vdXQoMSxzdHJpbmcpCi0rCSAgICBwYXNzICR0 ZXN0Ci0rCX0KLSsgICAgfQotKyAgICBpZiB7JHNpZ3VzciA9PSAiIn0gewotKwlyZXR1cm4gLTEK LSsgICAgfQotKwotKyAgICBzZXQgdGVzdCAic2lnbmFsICRzaWdjb3VudCBzaV9zaWdubyIKLSsg ICAgaWYgeyRzaWd1c3IgPT0gMX0gewotKwlzZXQgc2lnbm8gMTAKLSsgICAgfSBlbHNlIHsKLSsJ c2V0IHNpZ25vIDEyCi0rICAgIH0KLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUge3AgJF9zaWdpbmZv LnNpX3NpZ25vfSAkdGVzdCB7Ci0rCS1yZSAiID0gJHNpZ25vXHJcbiRnZGJfcHJvbXB0ICQiIHsK LSsJICAgIHBhc3MgJHRlc3QKLSsJfQotKwktcmUgIkF0dGVtcHQgdG8gZXh0cmFjdCBhIGNvbXBv bmVudCBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGEgc3RydWN0dXJlXFwuXHJcbiRnZGJfcHJvbXB0 ICQiIHsKLSsJICAgIHVuc3VwcG9ydGVkICR0ZXN0Ci0rCX0KLSsgICAgfQotKwotKyAgICBzZXQg dGVzdCAic2lnbmFsICRzaWdjb3VudCBzaV9jb2RlIGlzIFNJX1RLSUxMIgotKyAgICBnZGJfdGVz dF9tdWx0aXBsZSB7cCAkX3NpZ2luZm8uc2lfY29kZX0gJHRlc3QgewotKwktcmUgIiA9IC02XHJc biRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsJfQotKwktcmUgIkF0dGVtcHQg dG8gZXh0cmFjdCBhIGNvbXBvbmVudCBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGEgc3RydWN0dXJl XFwuXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHVuc3VwcG9ydGVkICR0ZXN0Ci0rCX0KLSsg ICAgfQotKwotKyAgICBzZXQgdGVzdCAic2lnbmFsICRzaWdjb3VudCBzaV9waWQiCi0rICAgIGdk Yl90ZXN0X211bHRpcGxlIHtwICRfc2lnaW5mby5fc2lmaWVsZHMuX2tpbGwuc2lfcGlkfSAkdGVz dCB7Ci0rCS1yZSAiID0gJHBpZFxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICBwYXNzICR0ZXN0 Ci0rCX0KLSsJLXJlICJBdHRlbXB0IHRvIGV4dHJhY3QgYSBjb21wb25lbnQgb2YgYSB2YWx1ZSB0 aGF0IGlzIG5vdCBhIHN0cnVjdHVyZVxcLlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICB1bnN1 cHBvcnRlZCAkdGVzdAotKwl9Ci0rICAgIH0KLSt9Ci0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgYnJlYWstYXQtZXhpdCAiLipicmVhay1hdC1leGl0LioiCi1JbmRleDogZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Np Z3N0ZXAtdGhyZWFkcy5jCTIwMTItMDYtMDIgMjE6MzU6NDAuMjk3NDk5MDUwICswMjAwCi1AQCAt MCwwICsxLDU0IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK LSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0r I2luY2x1ZGUgPHB0aHJlYWQuaD4KLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rI2luY2x1ZGUgPHNp Z25hbC5oPgotKwotKyNpbmNsdWRlIDxhc20vdW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHVuaXN0ZC5o PgotKyNkZWZpbmUgdGdraWxsKHRnaWQsIHRpZCwgc2lnKSBzeXNjYWxsIChfX05SX3Rna2lsbCwg KHRnaWQpLCAodGlkKSwgKHNpZykpCi0rI2RlZmluZSBnZXR0aWQoKSBzeXNjYWxsIChfX05SX2dl dHRpZCkKLSsKLStzdGF0aWMgdm9sYXRpbGUgaW50IHZhcjsKLSsKLStzdGF0aWMgdm9pZAotK2hh bmRsZXIgKGludCBzaWdubykJLyogc3RlcC0wICovCi0rewkJCS8qIHN0ZXAtMCAqLwotKyAgdmFy Kys7CQkvKiBzdGVwLTEgKi8KLSsgIHRna2lsbCAoZ2V0cGlkICgpLCBnZXR0aWQgKCksIFNJR1VT UjEpOwkvKiBzdGVwLTIgKi8KLSt9Ci0rCi0rc3RhdGljIHZvaWQgKgotK3N0YXJ0ICh2b2lkICph cmcpCi0rewotKyAgc2lnbmFsIChTSUdVU1IxLCBoYW5kbGVyKTsKLSsgIHRna2lsbCAoZ2V0cGlk ICgpLCBnZXR0aWQgKCksIFNJR1VTUjEpOwotKyAgYXNzZXJ0ICgwKTsKLSsKLSsgIHJldHVybiBO VUxMOwotK30KLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIHB0aHJlYWRfdCB0aHJlYWQ7 Ci0rCi0rICBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZCwgTlVMTCwgc3RhcnQsIE5VTEwpOwotKyAg c3RhcnQgKE5VTEwpOwkvKiBtYWluLXN0YXJ0ICovCi0rICByZXR1cm4gMDsKLSt9Ci1JbmRleDog Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhy ZWFkcy5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmV4cAkyMDEyLTA2LTAyIDIxOjM1OjQwLjI5NzQ5OTA1 MCArMDIwMAotQEAgLTAsMCArMSw3NCBAQAotKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwot K3NldCB0ZXN0ZmlsZSBzaWdzdGVwLXRocmVhZHMKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5j Ci0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtz dWJkaXJ9LyR7ZXhlY3V0YWJsZX0KLSsKLStpZiB7IFtnZGJfY29tcGlsZV9wdGhyZWFkcyAiJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVi dWd9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhwCi0rICAgIHJldHVy biAtMQotK30KLSsKLStjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCi0rCi0raWYgIVtydW50b19t YWluXSB7Ci0rICAgIHJldHVybiAtMTsKLSt9Ci0rCi0rIyBgbm9wcmludCcgd291bGQgbm90IHRl c3QgdGhlIGZ1bGwgbG9naWMgb2YgR0RCLgotK2dkYl90ZXN0ICJoYW5kbGUgU0lHVVNSMSBub3N0 b3AgcHJpbnQgcGFzcyIgIlxyXG5TSUdVU1IxXFsgXHRcXStOb1xbIFx0XF0rWWVzXFsgXHRcXStZ ZXNcWyBcdFxdLioiCi0rCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgc2NoZWR1bGVyLWxvY2tp bmcgb2ZmIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzdGVwLTEi XQotK2dkYl90ZXN0X25vX291dHB1dCB7c2V0ICRzdGVwMT0kYnBudW19Ci0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgInN0ZXAtMSIgIi4qIHN0ZXAtMSAuKiIKLStnZGJfdGVzdF9ub19vdXRw dXQge2Rpc2FibGUgJHN0ZXAxfQotKwotKyMgMSBhcyB3ZSBhcmUgbm93IHN0b3BwZWQgYXQgdGhl IGBzdGVwLTEnIGxhYmVsLgotK3NldCBzdGVwX2F0IDEKLStmb3Ige3NldCBpIDB9IHskaSA8IDEw MH0ge2luY3IgaX0gewotKyAgICBzZXQgdGVzdCAic3RlcCAkaSIKLSsgICAgIyBQcmVzdW1lIHRo aXMgc3RlcCBmYWlsZWQgLSBhcyBpbiB0aGUgY2FzZSBvZiBhIHRpbWVvdXQuCi0rICAgIHNldCBm YWlsZWQgMQotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAic3RlcCIgJHRlc3QgewotKwktcmUgIlxy XG5Qcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdVU1IxLCBVc2VyIGRlZmluZWQgc2lnbmFsIDEu XHJcbiIgewotKwkgICAgZXhwX2NvbnRpbnVlIC1jb250aW51ZV90aW1lcgotKwl9Ci0rCS1yZSAi c3RlcC0oXFswMTJcXSkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICBzZXQgbm93ICRleHBl Y3Rfb3V0KDEsc3RyaW5nKQotKwkgICAgaWYgeyRzdGVwX2F0ID09IDIgJiYgJG5vdyA9PSAxfSB7 Ci0rCQlzZXQgZmFpbGVkIDAKLSsJICAgIH0gZWxzZWlmIHskc3RlcF9hdCA9PSAxICYmICRub3cg PT0gMn0gewotKwkJc2V0IGZhaWxlZCAwCi0rCQkjIENvbnRpbnVlIG92ZXIgdGhlIHJlLXNpZ25h bGxpbmcgYmFjayB0byB0aGUgaGFuZGxlIGVudHJ5LgotKwkJZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtl bmFibGUgJHN0ZXAxfSAiIgotKwkJZ2RiX3Rlc3QgImNvbnRpbnVlIiAiIHN0ZXAtMSAuKiIgIiIK LSsJCXNldCBub3cgMQotKwkJZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtkaXNhYmxlICRzdGVwMX0gIiIK LSsJICAgIH0gZWxzZSAgewotKwkJZmFpbCAkdGVzdAotKwkgICAgfQotKwkgICAgc2V0IHN0ZXBf YXQgJG5vdwotKwl9Ci0rICAgIH0KLSsgICAgaWYgJGZhaWxlZCB7Ci0rCXJldHVybgotKyAgICB9 Ci0rfQotKyMgV2UgY2FuIG5ldmVyIHJlbGlhYmx5IHNheSB0aGUgcmFjeSBwcm9ibGVtYXRpYyBj YXNlIGhhcyBiZWVuIHRlc3RlZC4KLStwYXNzICJzdGVwIgoKZGlmZiAtLWdpdCBhL2dkYi1iejU5 MjAzMS1zaWdpbmZvLWxvc3QtNW9mNS5wYXRjaCBiL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3Qt NW9mNS5wYXRjaAppbmRleCBiOWZlMThmLi40NmNiZGJjIDEwMDY0NAotLS0gYS9nZGItYno1OTIw MzEtc2lnaW5mby1sb3N0LTVvZjUucGF0Y2gKKysrIGIvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9z dC01b2Y1LnBhdGNoCkBAIC0yNiwxOSArMjYsMTkgQEAgZ2RiLwogCShsaW51eF9uYXRfc2V0X3Np Z2luZm9fZml4dXApOiBVc2UgUFRSQUNFX0dFVFNJR0lORk8uCiAJKiBsaW51eC1uYXQuaCAoc3Ry dWN0IGx3cF9pbmZvKSA8c2lnaW5mbz46IFJlbW92ZS4KIAotSW5kZXg6IGdkYi03LjQuNTAuMjAx MjA2MDIvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvbGlu dXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2xp bnV4LW5hdC5jCTIwMTItMDYtMDIgMjE6MzY6MjEuMDY3NDgzNDY2ICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvbGludXgtbmF0LmMJMjAxMi0wNi0wMiAyMTozNzo1NS4zNDU0NDc0 MDIgKzAyMDAKLUBAIC0xOTI5LDcgKzE5MjksNiBAQCByZXN1bWVfbHdwIChzdHJ1Y3QgbHdwX2lu Zm8gKmxwLCBpbnQgc3RlCi0gCQkJCXN0ZXAsIEdEQl9TSUdOQUxfMCk7CistLS0gZ2RiLTcuNC41 MC4yMDEyMDcwMy5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEyLTA3LTAzIDE3OjMzOjAyLjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2xpbnV4LW5hdC5jCTIwMTIt MDctMDMgMTc6Mzg6MzYuNzM4MTQyNTA5ICswMjAwCitAQCAtMTkzMyw3ICsxOTMzLDYgQEAgcmVz dW1lX2x3cCAoc3RydWN0IGx3cF9pbmZvICpscCwgaW50IHN0ZQorIAkJCQlzdGVwLCBzaWdubyk7 CiAgCSAgbHAtPnN0b3BwZWQgPSAwOwogIAkgIGxwLT5zdGVwID0gc3RlcDsKIC0JICBtZW1zZXQg KCZscC0+c2lnaW5mbywgMCwgc2l6ZW9mIChscC0+c2lnaW5mbykpOwogIAkgIGxwLT5zdG9wcGVk X2J5X3dhdGNocG9pbnQgPSAwOwogIAl9CiAgICAgICAgZWxzZQotQEAgLTIwNzEsNyArMjA3MCw2 IEBAIGxpbnV4X25hdF9yZXN1bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMKK0BAIC0yMDkyLDcg KzIwOTEsNiBAQCBsaW51eF9uYXRfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCiAgICBp ZiAobGludXhfbmF0X3ByZXBhcmVfdG9fcmVzdW1lICE9IE5VTEwpCiAgICAgIGxpbnV4X25hdF9w cmVwYXJlX3RvX3Jlc3VtZSAobHApOwogICAgbGludXhfb3BzLT50b19yZXN1bWUgKGxpbnV4X29w cywgcHRpZCwgc3RlcCwgc2lnbm8pOwpAQCAtNDYsNyArNDYsNyBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvbGludXgtbmF0LmMKICAgIGxwLT5zdG9wcGVkX2J5X3dhdGNocG9pbnQg PSAwOwogIAogICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLUBAIC0yNjI1LDIyICsyNjIzLDYgQEAg d2FpdF9sd3AgKHN0cnVjdCBsd3BfaW5mbyAqbHApCitAQCAtMjY0NiwyMiArMjY0NCw2IEBAIHdh aXRfbHdwIChzdHJ1Y3QgbHdwX2luZm8gKmxwKQogICAgcmV0dXJuIHN0YXR1czsKICB9CiAgCkBA IC02OSw3ICs2OSw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQu YwogIC8qIFNlbmQgYSBTSUdTVE9QIHRvIExQLiAgKi8KICAKICBzdGF0aWMgaW50Ci1AQCAtMjg4 NSw5ICsyODY3LDYgQEAgc3RvcF93YWl0X2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLAor QEAgLTI5MDQsOSArMjg4Niw2IEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZv ICpscCwKICAJewogIAkgIC8qIFRoZSB0aHJlYWQgd2FzIHN0b3BwZWQgd2l0aCBhIHNpZ25hbCBv dGhlciB0aGFuIFNJR1NUT1AuICAqLwogIApAQCAtNzksNyArNzksNyBAQCBJbmRleDogZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvbGludXgtbmF0LmMKICAJICBzYXZlX3NpZ3RyYXAgKGxwKTsKICAK ICAJICBpZiAoZGVidWdfbGludXhfbmF0KQotQEAgLTMyOTEsMTIgKzMyNzAsNyBAQCBsaW51eF9u YXRfZmlsdGVyX2V2ZW50IChpbnQgbHdwaWQsIGludCBzCitAQCAtMzI4OCwxMiArMzI2Nyw3IEBA IGxpbnV4X25hdF9maWx0ZXJfZXZlbnQgKGludCBsd3BpZCwgaW50IHMKICAgICAgfQogIAogICAg aWYgKGxpbnV4X25hdF9zdGF0dXNfaXNfZXZlbnQgKHN0YXR1cykpCkBAIC05Myw3ICs5Myw3IEBA IEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYwogIAogICAgLyogQ2hl Y2sgaWYgdGhlIHRocmVhZCBoYXMgZXhpdGVkLiAgKi8KICAgIGlmICgoV0lGRVhJVEVEIChzdGF0 dXMpIHx8IFdJRlNJR05BTEVEIChzdGF0dXMpKQotQEAgLTM5NTAsNyArMzkyNCw2IEBAIHJlc3Vt ZV9zdG9wcGVkX3Jlc3VtZWRfbHdwcyAoc3RydWN0IGx3cF8KK0BAIC0zOTQ3LDcgKzM5MjEsNiBA QCByZXN1bWVfc3RvcHBlZF9yZXN1bWVkX2x3cHMgKHN0cnVjdCBsd3BfCiAgICAgICAgbGludXhf b3BzLT50b19yZXN1bWUgKGxpbnV4X29wcywgcGlkX3RvX3B0aWQgKEdFVF9MV1AgKGxwLT5wdGlk KSksCiAgCQkJICAgIGxwLT5zdGVwLCBHREJfU0lHTkFMXzApOwogICAgICAgIGxwLT5zdG9wcGVk ID0gMDsKQEAgLTEwMSw3ICsxMDEsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIv bGludXgtbmF0LmMKICAgICAgICBscC0+c3RvcHBlZF9ieV93YXRjaHBvaW50ID0gMDsKICAgICAg fQogIAotQEAgLTUyMjcsMTEgKzUyMDAsMTkgQEAgbGludXhfbmF0X3NldF9wcmVwYXJlX3RvX3Jl c3VtZSAoc3RydWN0CitAQCAtNTIyNCwxMSArNTE5NywxOSBAQCBsaW51eF9uYXRfc2V0X3ByZXBh cmVfdG9fcmVzdW1lIChzdHJ1Y3QKICBzaWdpbmZvX3QgKgogIGxpbnV4X25hdF9nZXRfc2lnaW5m byAocHRpZF90IHB0aWQpCiAgewpAQCAtMTI0LDEwICsxMjQsMTAgQEAgSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL2xpbnV4LW5hdC5jCiAgfQogIAogIC8qIFByb3ZpZGUgYSBwcm90b3R5 cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCi1JbmRleDogZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvbGludXgtbmF0LmgKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dk Yi9saW51eC1uYXQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9n ZGIvbGludXgtbmF0LmgJMjAxMi0wNi0wMiAyMTozNjoyMS4wNjc0ODM0NjYgKzAyMDAKLSsrKyBn ZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuaAkyMDEyLTA2LTAyIDIxOjM2OjI3LjE0 MDQ4MTE0NCArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvbGludXgtbmF0 LmgJMjAxMi0wNy0wMyAxNzozMDowOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIw MTIwNzAzL2dkYi9saW51eC1uYXQuaAkyMDEyLTA3LTAzIDE3OjM4OjEzLjUwMTE3MDI0NyArMDIw MAogQEAgLTc2LDEwICs3Niw2IEBAIHN0cnVjdCBsd3BfaW5mbwogICAgLyogVGhlIGtpbmQgb2Yg c3RlcHBpbmcgb2YgdGhpcyBMV1AuICAqLwogICAgZW51bSByZXN1bWVfc3RlcCBzdGVwOwoKZGlm ZiAtLWdpdCBhL2dkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBhdGNoIGIvZ2RiLWNvcmUtb3Bl bi12ZHNvLXdhcm5pbmcucGF0Y2gKaW5kZXggZDQ3MjRiYS4uYmRlNGU0MCAxMDA2NDQKLS0tIGEv Z2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKKysrIGIvZ2RiLWNvcmUtb3Blbi12ZHNv LXdhcm5pbmcucGF0Y2gKQEAgLTMsMTEgKzMsMTEgQEAgU3ViamVjdDogW3BhdGNoXSBGaXggR05V L0xpbnV4IGNvcmUgb3BlbjogQ2FuJ3QgcmVhZCBwYXRobmFtZSBmb3IgbG9hZCBtYXA6ICBJbnAK IAogWyBOZXcgcGF0Y2ggdmFyaWFudC4gIF0KIAotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zdnI0 LmMgYi9nZGIvc29saWItc3ZyNC5jCi1pbmRleCAzMDdlNDgzLi5iYTcwNzY0IDEwMDY0NAotLS0t IGEvZ2RiL3NvbGliLXN2cjQuYwotKysrIGIvZ2RiL3NvbGliLXN2cjQuYwotQEAgLTEyMjEsOCAr MTIyMSwxNyBAQCBzdnI0X3JlYWRfc29fbGlzdCAoQ09SRV9BRERSIGxtLCBzdHJ1Y3Qgc29fbGlz dCAqKipsaW5rX3B0cl9wdHIsCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvc29saWIt c3ZyNC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9zb2xp Yi1zdnI0LmMJMjAxMi0wNy0wMyAxNzozNDoxOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwNzAzL2dkYi9zb2xpYi1zdnI0LmMJMjAxMi0wNy0wMyAxNzozNDozNS42MTQ0MzIx NzQgKzAyMDAKK0BAIC0xMjIxLDggKzEyMjEsMTcgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVf QUREUiBsbSwgc3RydWN0CiAgCQkJICBTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAxLCAmZXJyY29k ZSk7CiAgICAgICAgaWYgKGVycmNvZGUgIT0gMCkKICAJewpAQCAtMjcsMTEgKzI3LDExIEBAIGlu ZGV4IDMwN2U0ODMuLmJhNzA3NjQgMTAwNjQ0CiAgCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7 CiAgCSAgY29udGludWU7CiAgCX0KLWRpZmYgLS1naXQgYS9nZGIvc29saWIuYyBiL2dkYi9zb2xp Yi5jCi1pbmRleCA5MDQzOWJhLi4zNmU0ZDJhIDEwMDY0NAotLS0tIGEvZ2RiL3NvbGliLmMKLSsr KyBiL2dkYi9zb2xpYi5jCi1AQCAtNjY5LDcgKzY2OSw3IEBAIHNvbGliX3VzZWQgKGNvbnN0IHN0 cnVjdCBzb19saXN0ICpjb25zdCBrbm93bikKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dk Yi9zb2xpYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9z b2xpYi5jCTIwMTItMDctMDMgMTc6MzA6MDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41 MC4yMDEyMDcwMy9nZGIvc29saWIuYwkyMDEyLTA3LTAzIDE3OjM0OjM1LjYxNjQzMjE3MiArMDIw MAorQEAgLTY3Miw3ICs2NzIsNyBAQCBzb2xpYl91c2VkIChjb25zdCBzdHJ1Y3Qgc29fbGlzdCAq Y29uc3QKICAgICBwcm9jZXNzZXMgd2UndmUganVzdCBhdHRhY2hlZCB0bywgc28gdGhhdCdzIG9r YXkuICAqLwogIAogIHN0YXRpYyB2b2lkCkBAIC00MCw3ICs0MCw3IEBAIGluZGV4IDkwNDM5YmEu LjM2ZTRkMmEgMTAwNjQ0CiAgewogICAgc3RydWN0IHRhcmdldF9zb19vcHMgKm9wcyA9IHNvbGli X29wcyAodGFyZ2V0X2dkYmFyY2gpOwogICAgc3RydWN0IHNvX2xpc3QgKmluZmVyaW9yID0gb3Bz LT5jdXJyZW50X3NvcygpOwotQEAgLTg0MCw2ICs4NDAsMjEgQEAgRG8geW91IG5lZWQgXCJzZXQg c29saWItc2VhcmNoLXBhdGhcIiBvciBcInNldCBzeXNyb290XCI/IiksCitAQCAtODQzLDYgKzg0 MywyMSBAQCBEbyB5b3UgbmVlZCBcInNldCBzb2xpYi1zZWFyY2gtcGF0aFwiIG9yCiAgICAgIH0K ICB9CiAgCkBAIC02MiwxMCArNjIsMTAgQEAgaW5kZXggOTA0MzliYS4uMzZlNGQyYSAxMDA2NDQK ICAKICAvKiBSZXR1cm4gbm9uLXplcm8gaWYgTkFNRSBpcyB0aGUgbGlicHRocmVhZCBzaGFyZWQg bGlicmFyeS4KICAKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxl LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCi1pbmRleCAwMjdlYjJj Li5hYjY4NmYwIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5l eHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCitJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2NvcmVmaWxlLmV4cAkyMDEyLTA2LTIxIDIyOjQ2OjIxLjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAJ MjAxMi0wNy0wMyAxNzozNDozNS42MTc0MzIxNzEgKzAyMDAKIEBAIC0yNTYsMyArMjU2LDE4IEBA IGlmICFbaXNfcmVtb3RlIHRhcmdldF0gewogIAogICAgICBnZGJfZXhpdApAQCAtODUsMTEgKzg1 LDExIEBAIGluZGV4IDAyN2ViMmMuLmFiNjg2ZjAgMTAwNjQ0CiArCXBhc3MgJHRlc3QKICsgICAg fQogK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAKLWluZGV4IDNjMDMz MTcuLjBmYzM4ZDkgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5 bWJvbC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc29saWItc3ltYm9sLmV4cAot QEAgLTI3LDcgKzI3LDggQEAgc2V0IGxpYl9mbGFncyBbbGlzdCBkZWJ1ZyBsZGZsYWdzPS1XbCwt QnN5bWJvbGljXQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9zb2xpYi1zeW1ib2wuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDcw My5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc29saWItc3ltYm9sLmV4cAkyMDEyLTA2LTIx IDIyOjQ2OjIyLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9zb2xpYi1zeW1ib2wuZXhwCTIwMTItMDctMDMgMTc6MzY6MDYuNTIw MzIyODIwICswMjAwCitAQCAtMjcsNyArMjcsOCBAQCBzZXQgbGliX2ZsYWdzIFtsaXN0IGRlYnVn IGxkZmxhZ3M9LVdsLC1CCiAgIyBCaW5hcnkgZmlsZS4KICBzZXQgdGVzdGZpbGUgInNvbGliLXN5 bWJvbC1tYWluIgogIHNldCBzcmNmaWxlICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0u YwpAQCAtOTgsNyArOTgsNyBAQCBpbmRleCAzYzAzMzE3Li4wZmMzOGQ5IDEwMDY0NAogK3NldCBi aW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQogIHNldCBiaW5fZmxhZ3Mg W2xpc3QgZGVidWcgc2hsaWI9JHtiaW5maWxlX2xpYn1dCiAgCi0gaWYgW2dldF9jb21waWxlcl9p bmZvICR7YmluZmlsZX1dIHsKKyBpZiBbZ2V0X2NvbXBpbGVyX2luZm9dIHsKIEBAIC03Miw4ICs3 MywyNiBAQCBnZGJfdGVzdCAiYnIgZm9vMiIgXAogIAkgIkJyZWFrcG9pbnQuKjogZm9vMi4gLjIg bG9jYXRpb25zLi4qIiBcCiAgCSAiZm9vMiBpbiBtZGxpYiIKCmRpZmYgLS1naXQgYS9nZGItZGVq YWdudS1nby5wYXRjaCBiL2dkYi1kZWphZ251LWdvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBkZGFjMDdiLi4wMDAwMDAwCi0tLSBhL2dkYi1kZWphZ251LWdvLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1wYXRjaGVzLzIwMTItMDYvbXNnMDAwNTAuaHRtbAotU3ViamVjdDogW3BhdGNoXSBkZWphZ251 IGNvbXBhdC4gLSBtaXNzaW5nIGZpbmRfZ29fbGlua2VyICBbUmU6IFtwYXRjaCwgZG9jIFJGQV0g R28gbGFuZ3VhZ2Ugc3VwcG9ydF0KLQotT24gV2VkLCAyNSBBcHIgMjAxMiAwNDoxNzozNSArMDIw MCwgRG91ZyBFdmFucyB3cm90ZToKLT4gK2lmIHtbaW5mbyBwcm9jcyBmaW5kX2dvX2xpbmtlcl0g PT0gIiJ9IHsKLT4gKyAgICByZW5hbWUgZ2RiX2ZpbmRfZ28gZmluZF9nbwotPiArICAgIHJlbmFt ZSBnZGJfZmluZF9nb19saW5rZXIgZmluZF9nb19saW5rZXIKLT4gKyAgICAjIE5vIG5lZWQgdG8g c2V0IHVzZV9nZGJfY29tcGlsZS4KLT4gK30KLQotSXMgdGhlcmUgYSByZWFzb24gZm9yIGl0PyAg V2l0aCByZWNlbnQgRmVkb3JhIDE3IHVwZGF0ZQotCWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNv bS9zaG93X2J1Zy5jZ2k/aWQ9NjM1NjUxCi0KLWRlamFnbnUgaGFzIHN0YXJ0ZWQgdG8gc3VwcG9y dCAnZmluZF9nZm9ydHJhbicuICBCdXQgaXQgc3RpbGwgZG9lcyBub3Qgc3VwcG9ydAotJ2ZpbmRf Z29fbGlua2VyJy4gIFRoaXMgaGFzIHJlc3VsdGVkIGluIHJlZ3Jlc3Npb24gZmFpbGluZyB0byBj b21waWxlIGFueQotZ2RiLmdvLyouZXhwIGZpbGVzLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdk Yi90ZXN0c3VpdGUvCi0yMDEyLTA2LTAyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0KLQkqIGxpYi9mdXR1cmUuZXhwOiBTZXQgJHVzZV9nZGJfY29tcGlsZSBl dmVuIGlmIG9ubHkgZmluZF9nb19saW5rZXIgaXMKLQltaXNzaW5nLgotCi1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9saWIvZnV0dXJlLmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2Z1dHVyZS5l eHAKLWluZGV4IDQwNDU2YzAuLmJmNDc5ODggMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2xp Yi9mdXR1cmUuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9mdXR1cmUuZXhwCi1AQCAtNTE0 LDcgKzUxNCw3IEBAIGlmIHtbaW5mbyBwcm9jcyBmaW5kX2dmb3J0cmFuXSA9PSAiIn0gewotIGlm IHtbaW5mbyBwcm9jcyBmaW5kX2dvX2xpbmtlcl0gPT0gIiJ9IHsKLSAgICAgcmVuYW1lIGdkYl9m aW5kX2dvIGZpbmRfZ28KLSAgICAgcmVuYW1lIGdkYl9maW5kX2dvX2xpbmtlciBmaW5kX2dvX2xp bmtlcgotLSAgICAjIE5vIG5lZWQgdG8gc2V0IHVzZV9nZGJfY29tcGlsZS4KLSsgICAgc2V0IHVz ZV9nZGJfY29tcGlsZSAxCi0gfQotIAotIGlmIHskdXNlX2dkYl9jb21waWxlfSB7Ci0KCmRpZmYg LS1naXQgYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtdGVzdC5wYXRjaCBiL2dkYi1kbG9wZW4tc3Rh cC1wcm9iZS10ZXN0LnBhdGNoCmluZGV4IGJlNWU3NmYuLjE1ZjFjMzEgMTAwNjQ0Ci0tLSBhL2dk Yi1kbG9wZW4tc3RhcC1wcm9iZS10ZXN0LnBhdGNoCisrKyBiL2dkYi1kbG9wZW4tc3RhcC1wcm9i ZS10ZXN0LnBhdGNoCkBAIC00LDEwICs0LDEwIEBAIERhdGU6ICAgTW9uIEF1ZyA4IDEyOjA4OjUz IDIwMTEgKzAyMDAKIAogICAgICt0ZXN0Y2FzZQogCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLWxpYi5jCitJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1s aWJwdGhyZWFkLWxpYi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLWxpYi5jCTIwMTItMDYtMDIgMjA6MDM6 NDIuNzExMzkzNzc2ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLWxpYi5jCTIwMTItMDctMDMgMTc6NDQ6NDUu Nzk3Njk4NjU2ICswMjAwCiBAQCAtMCwwICsxLDQwIEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBw YXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTQ5LDEwICs0OSwxMCBAQCBJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1s aWJwdGhyZWFkLWxpYi5jCiArICBpID0gcHRocmVhZF9qb2luICh0LCBOVUxMKTsKICsgIGFzc2Vy dCAoaSA9PSAwKTsKICt9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIw NzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4t bGlicHRocmVhZC5jCTIwMTItMDYtMDIgMjA6MDM6NDIuNzEyMzkzNzc1ICswMjAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhy ZWFkLmMJMjAxMi0wNy0wMyAxNzo0NDo0NS43OTg2OTg2NTUgKzAyMDAKIEBAIC0wLDAgKzEsNDYg QEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgog KwpAQCAtMTAwLDEwICsxMDAsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5jCiArCiArICByZXR1cm4gMDsK ICt9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L2Rsb3Blbi1saWJwdGhyZWFkLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJl YWQuZXhwCTIwMTItMDYtMDIgMjA6MDM6NDIuNzI0MzkzNzcxICswMjAwCisrKysgZ2RiLTcuNC41 MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmV4 cAkyMDEyLTA3LTAzIDE3OjQ0OjQ1Ljc5ODY5ODY1NSArMDIwMAogQEAgLTAsMCArMSw3NCBAQAog KyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIwpAQCAt MTc5LDE1ICsxNzksMTUgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0 ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5leHAKICtnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAibm90aWZ5IiAiLiogbm90aWZ5LWhlcmUgLioiCiArCiArZ2RiX3Rlc3QgImluZm8g c2hhcmVkbGlicmFyeSIgey9saWJwdGhyZWFkXC5zby4qfSAibGlicHRocmVhZC5zbyBmb3VuZCIK LUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ri LmV4cAkyMDEyLTA2LTAyIDE5OjExOjU2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEyLTA2LTAyIDIwOjAzOjQyLjcy NzM5Mzc3MCArMDIwMAotQEAgLTM2OTMsMzAgKzM2OTMsNDkgQEAgcHJvYyBidWlsZF9leGVjdXRh YmxlIHsgdGVzdG5hbWUgZXhlY3V0YQorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIv dGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTItMDctMDMgMTc6MzQ6MTguMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTIt MDctMDMgMTc6NDY6NDQuMzE2NTE0MDc2ICswMjAwCitAQCAtMzc1OCwyMyArMzc1OCw3IEBAIHBy b2MgYnVpbGRfZXhlY3V0YWJsZSB7IHRlc3RuYW1lIGV4ZWN1dGEKICAgICAgICAgIHNldCBzb3Vy Y2VzICR7ZXhlY3V0YWJsZX0uYwogICAgICB9CiAgCi0tICAgIHNldCBiaW5maWxlICR7b2JqZGly fS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQorLSAgICBzZXQgYmluZmlsZSBbc3RhbmRhcmRfb3V0 cHV0X2ZpbGUgJGV4ZWN1dGFibGVdCiAtCiAtICAgIHNldCBvYmplY3RzIHt9CiAtICAgIGZvciB7 c2V0IGkgMH0gIlwkaTxbbGxlbmd0aCAkc291cmNlc10iIHtpbmNyIGl9IHsKQEAgLTE5NywyOSAr MTk3LDI5IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvbGliL2dk Yi5leHAKIC0gICAgICAgICAgICByZXR1cm4gLTEKIC0gICAgICAgIH0KIC0gICAgICAgIGxhcHBl bmQgb2JqZWN0cyAiJHtiaW5maWxlfSR7aX0ubyIKLSsgICAgIyBnZXRfY29tcGlsZXJfaW5mbyBi eSBnZGJfY29tcGlsZV9zaGxpYiBhbmQgZ2RiX2NvbXBpbGVfc2hsaWJfcHRocmVhZHMuCi0rICAg IHNldCBpbmZvX29wdGlvbnMgIiIKLSsgICAgaWYgeyBbbHNlYXJjaCAtZXhhY3QgJG9wdGlvbnMg ImMrKyJdID49IDAgfSB7Ci0rCXNldCBpbmZvX29wdGlvbnMgImMrKyIKLSAgICAgfQorLSAgICB9 CiAtICAgIAogLSAgICBpZiAgeyBbZ2RiX2NvbXBpbGUgJG9iamVjdHMgIiR7YmluZmlsZX0iIGV4 ZWN1dGFibGUgJG9wdGlvbnNdICE9ICIiIH0gewogLSAgICAgICAgdW50ZXN0ZWQgJHRlc3RuYW1l Ci0rICAgIGlmIFtnZXRfY29tcGlsZXJfaW5mbyBiaW5maWxlX3VudXNlZCAke2luZm9fb3B0aW9u c31dIHsKKy0gICAgICAgIHJldHVybiAtMQorLSAgICB9CistCisrICAgICMgZ2V0X2NvbXBpbGVy X2luZm8gYnkgZ2RiX2NvbXBpbGVfc2hsaWIgYW5kIGdkYl9jb21waWxlX3NobGliX3B0aHJlYWRz LgorICAgICBzZXQgaW5mb19vcHRpb25zICIiCisgICAgIGlmIHsgW2xzZWFyY2ggLWV4YWN0ICRv cHRpb25zICJjKysiXSA+PSAwIH0geworIAlzZXQgaW5mb19vcHRpb25zICJjKysiCitAQCAtMzc4 Miw2ICszNzY2LDQxIEBAIHByb2MgYnVpbGRfZXhlY3V0YWJsZSB7IHRlc3RuYW1lIGV4ZWN1dGEK KyAgICAgaWYgW2dldF9jb21waWxlcl9pbmZvICR7aW5mb19vcHRpb25zfV0gewogICAgICAgICAg cmV0dXJuIC0xCiAgICAgIH0KLSAKLS0gICAgc2V0IGluZm9fb3B0aW9ucyAiIgotLSAgICBpZiB7 IFtsc2VhcmNoIC1leGFjdCAkb3B0aW9ucyAiYysrIl0gPj0gMCB9IHsKLS0Jc2V0IGluZm9fb3B0 aW9ucyAiYysrIgotKyAgICBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0 YWJsZX0KKysKKysgICAgc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICRleGVjdXRh YmxlXQogKwogKyAgICBzZXQgZnVuYyBnZGJfY29tcGlsZQogKyAgICBzZXQgZnVuY19pbmRleCBb bHNlYXJjaCAtcmVnZXhwICRvcHRpb25zIHteKHB0aHJlYWRzfHNobGlifHNobGliX3B0aHJlYWRz KSR9XQogKyAgICBpZiB7JGZ1bmNfaW5kZXggIT0gLTF9IHsKICsJc2V0IGZ1bmMgIiR7ZnVuY31f W2xpbmRleCAkb3B0aW9ucyAkZnVuY19pbmRleF0iCi0gICAgIH0KLS0gICAgaWYgW2dldF9jb21w aWxlcl9pbmZvICR7YmluZmlsZX0gJHtpbmZvX29wdGlvbnN9XSB7CisrICAgIH0KICsKICsgICAg IyBnZGJfY29tcGlsZV9zaGxpYiBhbmQgZ2RiX2NvbXBpbGVfc2hsaWJfcHRocmVhZHMgZG8gbm90 IHVzZSB0aGUgM3JkCiArICAgICMgcGFyYW1ldGVyLiAgVGhleSBhbHNvIHJlcXVpcmVzICRzb3Vy Y2VzIHdoaWxlIGdkYl9jb21waWxlIGFuZApAQCAtMjQ0LDE2ICsyNDQsMTYgQEAgSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogKyAgICB9CiArICAg IGlmICB7ICRyZXQgIT0gIiIgfSB7CiArICAgICAgICB1bnRlc3RlZCAkdGVzdG5hbWUKLSAgICAg ICAgIHJldHVybiAtMQotICAgICB9CisrICAgICAgICByZXR1cm4gLTEKKysgICAgfQogKwogICAg ICByZXR1cm4gMAogIH0KICAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3Vp dGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dk Yi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4 cAkyMDEyLTAxLTA0IDA5OjI3OjU2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAx MjA2MDIvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAkyMDEyLTA2LTAyIDIw OjAzOjQyLjczMzM5Mzc2OCArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIv dGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTItMDEtMDQgMDk6Mjc6NTYuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2xpYi9w cmVsaW5rLXN1cHBvcnQuZXhwCTIwMTItMDctMDMgMTc6NDQ6NDUuODAzNjk4NjQ4ICswMjAwCiBA QCAtOTUsOCArOTUsOSBAQCBwcm9jIGZpbGVfY29weSB7c3JjIGRlc3R9IHsKICAjIFdyYXAgZnVu Y3Rpb24gYnVpbGRfZXhlY3V0YWJsZSBzbyB0aGF0IHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSBp cyBmdWxseQogICMgc2VsZi1zdWZmaWNpZW50ICh3aXRob3V0IGRlcGVuZGVuY2llcyBvbiBzeXN0 ZW0gbGlicmFyaWVzKS4gIFBhcmFtZXRlcgpAQCAtMzA2LDEwICszMDYsMTAgQEAgSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAog ICAgICByZXR1cm4gJHByZWxpbmtfYXJncwogIH0KICAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAorSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEyLTAyLTI0IDE1OjA5OjA4LjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1p bnRlcnAuZXhwCTIwMTItMDYtMDIgMjA6MDQ6NTYuMTM1MzY5Njg3ICswMjAwCistLS0gZ2RiLTcu NC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4 cAkyMDEyLTA2LTIxIDIyOjQ2OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAx MjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTItMDctMDMg MTc6NDQ6NDUuODA0Njk4NjQ3ICswMjAwCiBAQCAtMTA5LDE0ICsxMDksMjEgQEAgcHJvYyBzdHJp cF9kZWJ1ZyB7ZGVzdH0gewogICAgICB9CiAgfQoKZGlmZiAtLWdpdCBhL2dkYi1lcnJuby1mdW5j LWRhdGF0eXBlLXJldmVydC5wYXRjaCBiL2dkYi1lcnJuby1mdW5jLWRhdGF0eXBlLXJldmVydC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDdkNzZmCi0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLWVycm5vLWZ1bmMtZGF0YXR5cGUtcmV2ZXJ0LnBhdGNoCkBAIC0wLDAg KzEsMjM2IEBACitSZWdyZXNzaW9uOiBJbnZhbGlkIGRhdGEgdHlwZSBmb3IgZnVuY3Rpb24gdG8g YmUgY2FsbGVkLiBbUmU6IEZZSTogZml4IFBSIDk1MTRdCitodHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLXBhdGNoZXMvMjAxMi0wNy9tc2cwMDA0My5odG1sCisKK3JldmVydGVkOgoraHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNi9tc2cwMDE0OC5odG1sCisKK2RpZmYg LWR1cCAtcnVwIGdkYi03LjQuNTAuMjAxMjA3MDMtb3JpZy9nZGIvYy1leHAueSBnZGItNy40LjUw LjIwMTIwNzAzL2dkYi9jLWV4cC55CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy1vcmlnL2dkYi9j LWV4cC55CTIwMTItMDctMDMgMjA6MDg6MTUuOTc2NDE4NDIwICswMjAwCisrKysgZ2RiLTcuNC41 MC4yMDEyMDcwMy9nZGIvYy1leHAueQkyMDEyLTA3LTAzIDIwOjA4OjM1LjkzNTM5MDI4MiArMDIw MAorQEAgLTE3MiwxMCArMTcyLDkgQEAgc3RhdGljIHN0cnVjdCBzdG9rZW4gb3BlcmF0b3Jfc3Rv a2VuIChjbworIC8qICV0eXBlIDxidmFsPiBibG9jayAqLworIAorIC8qIEZhbmN5IHR5cGUgcGFy c2luZy4gICovCistJXR5cGUgPHZvaWR2YWw+IGZ1bmNfbW9kIGRpcmVjdF9hYnNfZGVjbCBhYnNf ZGVjbCBwdHJfb3BlcmF0b3IKKysldHlwZSA8dm9pZHZhbD4gZnVuY19tb2QgZGlyZWN0X2Fic19k ZWNsIGFic19kZWNsCisgJXR5cGUgPHR2YWw+IHB0eXBlCisgJXR5cGUgPGx2YWw+IGFycmF5X21v ZAorLSV0eXBlIDx0dmFsPiBjb252ZXJzaW9uX3R5cGVfaWQKKyAKKyAldG9rZW4gPHR5cGVkX3Zh bF9pbnQ+IElOVAorICV0b2tlbiA8dHlwZWRfdmFsX2Zsb2F0PiBGTE9BVAorQEAgLTkzMiw3ICs5 MzEsOSBAQCB2YXJpYWJsZToJbmFtZV9ub3RfdHlwZW5hbWUKKyAJOworIAorIHNwYWNlX2lkZW50 aWZpZXIgOiAnQCcgTkFNRQorLQkJeyBpbnNlcnRfdHlwZV9hZGRyZXNzX3NwYWNlIChjb3B5X25h bWUgKCQyLnN0b2tlbikpOyB9CisrCQl7IHB1c2hfdHlwZV9hZGRyZXNzX3NwYWNlIChjb3B5X25h bWUgKCQyLnN0b2tlbikpOworKwkJICBwdXNoX3R5cGUgKHRwX3NwYWNlX2lkZW50aWZpZXIpOwor KwkJfQorIAk7CisgCisgY29uc3Rfb3Jfdm9sYXRpbGU6IGNvbnN0X29yX3ZvbGF0aWxlX25vb3B0 CitAQCAtOTUxLDIzICs5NTIsMTQgQEAgY29uc3Rfb3Jfdm9sYXRpbGVfb3Jfc3BhY2VfaWRlbnRp ZmllcjoKKyAJfAorIAk7CisgCistcHRyX29wZXJhdG9yOgorLQkJcHRyX29wZXJhdG9yICcqJwor LQkJCXsgaW5zZXJ0X3R5cGUgKHRwX3BvaW50ZXIpOyB9CistCQljb25zdF9vcl92b2xhdGlsZV9v cl9zcGFjZV9pZGVudGlmaWVyCistCQkJeyAkJCA9IDA7IH0KKy0JfAknKicgCistCQkJeyBpbnNl cnRfdHlwZSAodHBfcG9pbnRlcik7IH0KKy0JCWNvbnN0X29yX3ZvbGF0aWxlX29yX3NwYWNlX2lk ZW50aWZpZXIKKy0JCQl7ICQkID0gMDsgfQorK2Fic19kZWNsOgknKicKKysJCQl7IHB1c2hfdHlw ZSAodHBfcG9pbnRlcik7ICQkID0gMDsgfQorKwl8CScqJyBhYnNfZGVjbAorKwkJCXsgcHVzaF90 eXBlICh0cF9wb2ludGVyKTsgJCQgPSAkMjsgfQorIAl8CScmJworLQkJCXsgaW5zZXJ0X3R5cGUg KHRwX3JlZmVyZW5jZSk7ICQkID0gMDsgfQorLQl8CScmJyBwdHJfb3BlcmF0b3IKKy0JCQl7IGlu c2VydF90eXBlICh0cF9yZWZlcmVuY2UpOyAkJCA9IDA7IH0KKy0JOworLQorLWFic19kZWNsOglw dHJfb3BlcmF0b3IgZGlyZWN0X2Fic19kZWNsCistCXwJcHRyX29wZXJhdG9yCisrCQkJeyBwdXNo X3R5cGUgKHRwX3JlZmVyZW5jZSk7ICQkID0gMDsgfQorKwl8CScmJyBhYnNfZGVjbAorKwkJCXsg cHVzaF90eXBlICh0cF9yZWZlcmVuY2UpOyAkJCA9ICQyOyB9CisgCXwJZGlyZWN0X2Fic19kZWNs CisgCTsKKyAKK0BAIC0xMjExLDMwICsxMjAzLDIyIEBAIG5vbmVtcHR5X3R5cGVsaXN0CisgCTsK KyAKKyBwdHlwZQk6CXR5cGViYXNlCistCXwJcHR5cGUgYWJzX2RlY2wKKy0JCXsgJCQgPSBmb2xs b3dfdHlwZXMgKCQxKTsgfQorLQk7CistCistY29udmVyc2lvbl90eXBlX2lkOiB0eXBlYmFzZSBj b252ZXJzaW9uX2RlY2xhcmF0b3IKKysJfAlwdHlwZSBjb25zdF9vcl92b2xhdGlsZV9vcl9zcGFj ZV9pZGVudGlmaWVyIGFic19kZWNsIGNvbnN0X29yX3ZvbGF0aWxlX29yX3NwYWNlX2lkZW50aWZp ZXIKKyAJCXsgJCQgPSBmb2xsb3dfdHlwZXMgKCQxKTsgfQorIAk7CisgCistY29udmVyc2lvbl9k ZWNsYXJhdG9yOiAgLyogTm90aGluZy4gICovCistCXwgcHRyX29wZXJhdG9yIGNvbnZlcnNpb25f ZGVjbGFyYXRvcgorLQk7CistCisgY29uc3RfYW5kX3ZvbGF0aWxlOiAJQ09OU1RfS0VZV09SRCBW T0xBVElMRV9LRVlXT1JECisgCXwgCQlWT0xBVElMRV9LRVlXT1JEIENPTlNUX0tFWVdPUkQKKyAJ OworIAorIGNvbnN0X29yX3ZvbGF0aWxlX25vb3B0OiAgCWNvbnN0X2FuZF92b2xhdGlsZSAKKy0J CQl7IGluc2VydF90eXBlICh0cF9jb25zdCk7CistCQkJICBpbnNlcnRfdHlwZSAodHBfdm9sYXRp bGUpOyAKKysJCQl7IHB1c2hfdHlwZSAodHBfY29uc3QpOworKwkJCSAgcHVzaF90eXBlICh0cF92 b2xhdGlsZSk7IAorIAkJCX0KKyAJfCAJCUNPTlNUX0tFWVdPUkQKKy0JCQl7IGluc2VydF90eXBl ICh0cF9jb25zdCk7IH0KKysJCQl7IHB1c2hfdHlwZSAodHBfY29uc3QpOyB9CisgCXwgCQlWT0xB VElMRV9LRVlXT1JECistCQkJeyBpbnNlcnRfdHlwZSAodHBfdm9sYXRpbGUpOyB9CisrCQkJeyBw dXNoX3R5cGUgKHRwX3ZvbGF0aWxlKTsgfQorIAk7CisgCisgb3BlcmF0b3I6CU9QRVJBVE9SIE5F VworQEAgLTEzNDEsNyArMTMyNSw3IEBAIG9wZXJhdG9yOglPUEVSQVRPUiBORVcKKyAJCQl7ICQk ID0gb3BlcmF0b3Jfc3Rva2VuICgiKCkiKTsgfQorIAl8CU9QRVJBVE9SICdbJyAnXScKKyAJCQl7 ICQkID0gb3BlcmF0b3Jfc3Rva2VuICgiW10iKTsgfQorLQl8CU9QRVJBVE9SIGNvbnZlcnNpb25f dHlwZV9pZAorKwl8CU9QRVJBVE9SIHB0eXBlCisgCQkJeyBjaGFyICpuYW1lOworIAkJCSAgbG9u ZyBsZW5ndGg7CisgCQkJICBzdHJ1Y3QgdWlfZmlsZSAqYnVmID0gbWVtX2ZpbGVvcGVuICgpOwor ZGlmZiAtZHVwIC1ydXAgZ2RiLTcuNC41MC4yMDEyMDcwMy1vcmlnL2dkYi9wYXJzZS5jIGdkYi03 LjQuNTAuMjAxMjA3MDMvZ2RiL3BhcnNlLmMKKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLW9yaWcv Z2RiL3BhcnNlLmMJMjAxMi0wNy0wMyAyMDowODoxNS45Nzk0MTg0MTUgKzAyMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwNzAzL2dkYi9wYXJzZS5jCTIwMTItMDctMDMgMjA6MDg6MzUuOTM4MzkwMjc3 ICswMjAwCitAQCAtMTM3MCw0OSArMTM3MCw2IEBAIGNoZWNrX3R5cGVfc3RhY2tfZGVwdGggKHZv aWQpCisgICAgIH0KKyB9CisgCistLyogQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGluc2VydF90eXBl IGFuZCBpbnNlcnRfdHlwZV9hZGRyZXNzX3NwYWNlLgorLSAgIFRoaXMgZG9lcyB3b3JrIG9mIGV4 cGFuZGluZyB0aGUgdHlwZSBzdGFjayBhbmQgaW5zZXJ0aW5nIHRoZSBuZXcKKy0gICBlbGVtZW50 LCBFTEVNRU5ULCBpbnRvIHRoZSBzdGFjayBhdCBsb2NhdGlvbiBTTE9ULiAgKi8KKy0KKy1zdGF0 aWMgdm9pZAorLWluc2VydF9pbnRvX3R5cGVfc3RhY2sgKGludCBzbG90LCB1bmlvbiB0eXBlX3N0 YWNrX2VsdCBlbGVtZW50KQorLXsKKy0gIGNoZWNrX3R5cGVfc3RhY2tfZGVwdGggKCk7CistCist ICBpZiAoc2xvdCA8IHR5cGVfc3RhY2tfZGVwdGgpCistICAgIG1lbW1vdmUgKCZ0eXBlX3N0YWNr W3Nsb3QgKyAxXSwgJnR5cGVfc3RhY2tbc2xvdF0sCistCSAgICAgKHR5cGVfc3RhY2tfZGVwdGgg LSBzbG90KSAqIHNpemVvZiAodW5pb24gdHlwZV9zdGFja19lbHQpKTsKKy0gIHR5cGVfc3RhY2tb c2xvdF0gPSBlbGVtZW50OworLSAgKyt0eXBlX3N0YWNrX2RlcHRoOworLX0KKy0KKy0vKiBJbnNl cnQgYSBuZXcgdHlwZSwgVFAsIGF0IHRoZSBib3R0b20gb2YgdGhlIHR5cGUgc3RhY2suICBJZiBU UCBpcworLSAgIHRwX3BvaW50ZXIgb3IgdHBfcmVmZXJlbmNlLCBpdCBpcyBpbnNlcnRlZCBhdCB0 aGUgYm90dG9tLiAgSWYgVFAgaXMKKy0gICBhIHF1YWxpZmllciwgaXQgaXMgaW5zZXJ0ZWQgYXQg c2xvdCAxIChqdXN0IGFib3ZlIGEgcHJldmlvdXMKKy0gICB0cF9wb2ludGVyKSBpZiB0aGVyZSBp cyBhbnl0aGluZyBvbiB0aGUgc3RhY2ssIG9yIHNpbXBseSBwdXNoZWQgaWYKKy0gICB0aGUgc3Rh Y2sgaXMgZW1wdHkuICBPdGhlciB2YWx1ZXMgZm9yIFRQIGFyZSBpbnZhbGlkLiAgKi8KKy0KKy12 b2lkCistaW5zZXJ0X3R5cGUgKGVudW0gdHlwZV9waWVjZXMgdHApCisteworLSAgdW5pb24gdHlw ZV9zdGFja19lbHQgZWxlbWVudDsKKy0gIGludCBzbG90OworLQorLSAgZ2RiX2Fzc2VydCAodHAg PT0gdHBfcG9pbnRlciB8fCB0cCA9PSB0cF9yZWZlcmVuY2UKKy0JICAgICAgfHwgdHAgPT0gdHBf Y29uc3QgfHwgdHAgPT0gdHBfdm9sYXRpbGUpOworLQorLSAgLyogSWYgdGhlcmUgaXMgYW55dGhp bmcgb24gdGhlIHN0YWNrICh3ZSBrbm93IGl0IHdpbGwgYmUgYQorLSAgICAgdHBfcG9pbnRlciks IGluc2VydCB0aGUgcXVhbGlmaWVyIGFib3ZlIGl0LiAgT3RoZXJ3aXNlLCBzaW1wbHkKKy0gICAg IHB1c2ggdGhpcyBvbiB0aGUgdG9wIG9mIHRoZSBzdGFjay4gICovCistICBpZiAodHlwZV9zdGFj a19kZXB0aCAmJiAodHAgPT0gdHBfY29uc3QgfHwgdHAgPT0gdHBfdm9sYXRpbGUpKQorLSAgICBz bG90ID0gMTsKKy0gIGVsc2UKKy0gICAgc2xvdCA9IDA7CistCistICBlbGVtZW50LnBpZWNlID0g dHA7CistICBpbnNlcnRfaW50b190eXBlX3N0YWNrIChzbG90LCBlbGVtZW50KTsKKy19CistCisg dm9pZAorIHB1c2hfdHlwZSAoZW51bSB0eXBlX3BpZWNlcyB0cCkKKyB7CitAQCAtMTQyNywzMiAr MTM4NCwxMCBAQCBwdXNoX3R5cGVfaW50IChpbnQgbikKKyAgIHR5cGVfc3RhY2tbdHlwZV9zdGFj a19kZXB0aCsrXS5pbnRfdmFsID0gbjsKKyB9CisgCistLyogSW5zZXJ0IGEgdHBfc3BhY2VfaWRl bnRpZmllciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYWRkcmVzcyBzcGFjZQorLSAgIHZhbHVlIGlu dG8gdGhlIHN0YWNrLiAgU1RSSU5HIGlzIHRoZSBuYW1lIG9mIGFuIGFkZHJlc3Mgc3BhY2UsIGFz CistICAgcmVjb2duaXplZCBieSBhZGRyZXNzX3NwYWNlX25hbWVfdG9faW50LiAgSWYgdGhlIHN0 YWNrIGlzIGVtcHR5LAorLSAgIHRoZSBuZXcgZWxlbWVudHMgYXJlIHNpbXBseSBwdXNoZWQuICBJ ZiB0aGUgc3RhY2sgaXMgbm90IGVtcHR5LAorLSAgIHRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0 IHRoZSBmaXJzdCBpdGVtIG9uIHRoZSBzdGFjayBpcyBhCistICAgdHBfcG9pbnRlciwgYW5kIHRo ZSBuZXcgdmFsdWVzIGFyZSBpbnNlcnRlZCBhYm92ZSB0aGUgZmlyc3QKKy0gICBpdGVtLiAgKi8K Ky0KKyB2b2lkCistaW5zZXJ0X3R5cGVfYWRkcmVzc19zcGFjZSAoY2hhciAqc3RyaW5nKQorK3B1 c2hfdHlwZV9hZGRyZXNzX3NwYWNlIChjaGFyICpzdHJpbmcpCisgeworLSAgdW5pb24gdHlwZV9z dGFja19lbHQgZWxlbWVudDsKKy0gIGludCBzbG90OworLQorLSAgLyogSWYgdGhlcmUgaXMgYW55 dGhpbmcgb24gdGhlIHN0YWNrICh3ZSBrbm93IGl0IHdpbGwgYmUgYQorLSAgICAgdHBfcG9pbnRl ciksIGluc2VydCB0aGUgYWRkcmVzcyBzcGFjZSBxdWFsaWZpZXIgYWJvdmUgaXQuCistICAgICBP dGhlcndpc2UsIHNpbXBseSBwdXNoIHRoaXMgb24gdGhlIHRvcCBvZiB0aGUgc3RhY2suICAqLwor LSAgaWYgKHR5cGVfc3RhY2tfZGVwdGgpCistICAgIHNsb3QgPSAxOworLSAgZWxzZQorLSAgICBz bG90ID0gMDsKKy0KKy0gIGVsZW1lbnQucGllY2UgPSB0cF9zcGFjZV9pZGVudGlmaWVyOworLSAg aW5zZXJ0X2ludG9fdHlwZV9zdGFjayAoc2xvdCwgZWxlbWVudCk7CistICBlbGVtZW50LmludF92 YWwgPSBhZGRyZXNzX3NwYWNlX25hbWVfdG9faW50IChwYXJzZV9nZGJhcmNoLCBzdHJpbmcpOwor LSAgaW5zZXJ0X2ludG9fdHlwZV9zdGFjayAoc2xvdCwgZWxlbWVudCk7CisrICBwdXNoX3R5cGVf aW50IChhZGRyZXNzX3NwYWNlX25hbWVfdG9faW50IChwYXJzZV9nZGJhcmNoLCBzdHJpbmcpKTsK KyB9CisgCisgZW51bSB0eXBlX3BpZWNlcworT25seSBpbiBnZGItNy40LjUwLjIwMTIwNzAzLW9y aWcvZ2RiOiBwYXJzZS5jLm9yaWcKK2RpZmYgLWR1cCAtcnVwIGdkYi03LjQuNTAuMjAxMjA3MDMt b3JpZy9nZGIvcGFyc2VyLWRlZnMuaCBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9wYXJzZXItZGVm cy5oCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy1vcmlnL2dkYi9wYXJzZXItZGVmcy5oCTIwMTIt MDctMDMgMjA6MDg6MTUuOTgwNDE4NDE0ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9n ZGIvcGFyc2VyLWRlZnMuaAkyMDEyLTA3LTAzIDIwOjA4OjM1LjkzOTM5MDI3NSArMDIwMAorQEAg LTE5MiwxMyArMTkyLDExIEBAIGV4dGVybiBpbnQgZW5kX2FyZ2xpc3QgKHZvaWQpOworIAorIGV4 dGVybiBjaGFyICpjb3B5X25hbWUgKHN0cnVjdCBzdG9rZW4pOworIAorLWV4dGVybiB2b2lkIGlu c2VydF90eXBlIChlbnVtIHR5cGVfcGllY2VzKTsKKy0KKyBleHRlcm4gdm9pZCBwdXNoX3R5cGUg KGVudW0gdHlwZV9waWVjZXMpOworIAorIGV4dGVybiB2b2lkIHB1c2hfdHlwZV9pbnQgKGludCk7 CisgCistZXh0ZXJuIHZvaWQgaW5zZXJ0X3R5cGVfYWRkcmVzc19zcGFjZSAoY2hhciAqKTsKKytl eHRlcm4gdm9pZCBwdXNoX3R5cGVfYWRkcmVzc19zcGFjZSAoY2hhciAqKTsKKyAKKyBleHRlcm4g ZW51bSB0eXBlX3BpZWNlcyBwb3BfdHlwZSAodm9pZCk7CisgCitkaWZmIC1kdXAgLXJ1cCBnZGIt Ny40LjUwLjIwMTIwNzAzLW9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93aGF0aXMuZXhwIGdk Yi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93aGF0aXMuZXhwCistLS0g Z2RiLTcuNC41MC4yMDEyMDcwMy1vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2hhdGlzLmV4 cAkyMDEyLTA3LTAzIDIwOjA4OjE1Ljk4MTQxODQxMyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAx MjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93aGF0aXMuZXhwCTIwMTItMDctMDMgMjA6MDg6 MzUuOTQwMzkwMjczICswMjAwCitAQCAtNDY1LDE3ICs0NjUsMyBAQCBnZGJfdGVzdCAid2hhdGlz IGNoYXJfYWRkciIgXAorIGdkYl90ZXN0ICJ3aGF0aXMgYV9jaGFyX2FkZHIiIFwKKyAgICAgInR5 cGUgPSBjaGFyX2FkZHIiIFwKKyAgICAgIndoYXRpcyBhcHBsaWVkIHRvIHZhcmlhYmxlIGRlZmlu ZWQgYnkgdHlwZWRlZiIKKy0KKy0jIFJlZ3Jlc3Npb24gdGVzdHMgZm9yIFBSIDk1MTQuCistCist Z2RiX3Rlc3QgIndoYXRpcyB2b2lkICgqKikoKSIgXAorLSAgInR5cGUgPSB2b2lkIFxcKFxcKlxc KlxcKVxcKFxcKSIgXAorLSAgIndoYXRpcyBhcHBsaWVkIHRvIHBvaW50ZXIgdG8gcG9pbnRlciB0 byBmdW5jdGlvbiIKKy0KKy1nZGJfdGVzdCAid2hhdGlzIHZvaWQgKCoqIGNvbnN0KSgpIiBcCist ICAidHlwZSA9IHZvaWQgXFwoXFwqXFwqIGNvbnN0XFwpXFwoXFwpIiBcCistICAid2hhdGlzIGFw cGxpZWQgdG8gY29uc3QgcG9pbnRlciB0byBwb2ludGVyIHRvIGZ1bmN0aW9uIgorLQorLWdkYl90 ZXN0ICJ3aGF0aXMgdm9pZCAoKiBjb25zdCAqKSgpIiBcCistICAidHlwZSA9IHZvaWQgXFwoXFwq IGNvbnN0IFxcKlxcKVxcKFxcKSIgXAorLSAgIndoYXRpcyBhcHBsaWVkIHRvIHBvaW50ZXIgdG8g Y29uc3QgcG9pbnRlciB0byBmdW5jdGlvbiIKCmRpZmYgLS1naXQgYS9nZGItb2JqZmlsZS1vcmRl ci5wYXRjaCBiL2dkYi1vYmpmaWxlLW9yZGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBhZmQ0NmU3Li4wMDAwMDAwCi0tLSBhL2dkYi1vYmpmaWxlLW9yZGVyLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDEyLTA1L21zZzAxMTA1Lmh0bWwKLVN1YmplY3Q6IFtSRkEvY29tbWl0IDEv M10gUmV2ZXJ0ICJTZWFyY2ggZ2xvYmFsIHN5bWJvbHMgZnJvbSB0aGUgZXhwcmVzc2lvbidzIGJs b2NrIG9iamZpbGUgZmlyc3QuIgotCi1UaGUgc2VhcmNoIG9yZGVyIHVzZWQgaW4gdGhpcyBwYXRj aCBicmVha3MgZ2xvYmFsIHN5bWJvbCBsb29rdXBzCi1mb3IgY2VydGFpbiBzeW1ib2xzIHdoZW4g Y29weS1yZWxvY2F0aW9uIGlzIHVzZWQuICBBIHNsaWdodGx5IGRpZmZlcmVudAotc2VhcmNoIG9y ZGVyIHdpbGwgYmUgaW1wbGVtZW50ZWQgbGF0ZXIuCi0KLWdkYi9DaGFuZ2VMb2c6Ci0KLSAgICAg ICAgUmV2ZXJ0IHRoZSBmb2xsb3dpbmcgcGF0Y2g6Ci0gICAgICAgICogZmluZHZhci5jIChkZWZh dWx0X3JlYWRfdmFyX3ZhbHVlKTogRm9yIExPQ19VTlJFU09MVkVEIHN5bWJvbHMsCi0gICAgICAg IHRyeSBsb2NhdGluZyB0aGUgc3ltYm9sIGluIHRoZSBzeW1ib2wncyBvd24gb2JqZmlsZSBmaXJz dCwgYmVmb3JlCi0gICAgICAgIGV4dGVuZGluZyB0aGUgc2VhcmNoIHRvIGFsbCBvYmpmaWxlcy4K LSAgICAgICAgKiBzeW10YWIuYyAobG9va3VwX3N5bWJvbF9hdXhfb2JqZmlsZSk6IE5ldyBmdW5j dGlvbiwgZXh0cmFjdGVkCi0gICAgICAgIG91dCBvZiBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJz LgotICAgICAgICAobG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyk6IEFkZCBuZXcgcGFyYW1ldGVy ICJleGNsdWRlX29iamZpbGUiLgotICAgICAgICBSZXBsYWNlIGV4dHJhY3RlZC1vdXQgY29kZSBi eSBjYWxsIHRvIGxvb2t1cF9zeW1ib2xfYXV4X29iamZpbGUuCi0gICAgICAgIERvIG5vdCBzZWFy Y2ggRVhDTFVERV9PQkpGSUxFLgotICAgICAgICAobG9va3VwX3N0YXRpY19zeW1ib2xfYXV4KTog VXBkYXRlIGNhbGwgdG8gbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicy4KLSAgICAgICAgKGxvb2t1 cF9zeW1ib2xfZ2xvYmFsKTogU2VhcmNoIGZvciBtYXRjaGVzIGluIHRoZSBibG9jaydzIG9iamZp bGUKLSAgICAgICAgZmlyc3QsIGJlZm9yZSBzZWFyY2hpbmcgYWxsIG90aGVyIG9iamZpbGVzLgot Ci1XaWxsIGNvbW1pdCBpZiBwYXRjaGVzICMyICYgIzMgYXJlIE9LLgotCi0tLS0KLSBnZGIvZmlu ZHZhci5jIHwgICAxMCArLS0tLS0KLSBnZGIvc3ltdGFiLmMgIHwgIDEwOCArKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNo YW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDg1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEv Z2RiL2ZpbmR2YXIuYyBiL2dkYi9maW5kdmFyLmMKLWluZGV4IGVkNzkwM2MuLjkwMDllNmYgMTAw NjQ0Ci0tLS0gYS9nZGIvZmluZHZhci5jCi0rKysgYi9nZGIvZmluZHZhci5jCi1AQCAtNTYyLDE1 ICs1NjIsNyBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAJc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltOwot IAlzdHJ1Y3Qgb2JqX3NlY3Rpb24gKm9ial9zZWN0aW9uOwotIAotLQkvKiBGaXJzdCwgdHJ5IGxv Y2F0aW5nIHRoZSBhc3NvY2lhdGVkIG1pbmltYWwgc3ltYm9sIHdpdGhpbgotLQkgICB0aGUgc2Ft ZSBvYmpmaWxlLiAgVGhpcyBwcmV2ZW50cyB1cyBmcm9tIHNlbGVjdGluZyBhbm90aGVyCi0tCSAg IHN5bWJvbCB3aXRoIHRoZSBzYW1lIG5hbWUgYnV0IGxvY2F0ZWQgaW4gYSBkaWZmZXJlbnQgb2Jq ZmlsZS4gICovCi0tCW1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKFNZTUJPTF9MSU5LQUdF X05BTUUgKHZhciksIE5VTEwsCi0tCQkJCSAgICAgIFNZTUJPTF9TWU1UQUIgKHZhciktPm9iamZp bGUpOwotLQkvKiBJZiB0aGUgbG9va3VwIGZhaWxlZCwgdHJ5IGV4cGFuZGluZyB0aGUgc2VhcmNo IHRvIGFsbAotLQkgICBvYmpmaWxlcy4gICovCi0tCWlmIChtc3ltID09IE5VTEwpCi0tCSAgbXN5 bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoU1lNQk9MX0xJTktBR0VfTkFNRSAodmFyKSwgTlVM TCwgTlVMTCk7Ci0rCW1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKFNZTUJPTF9MSU5LQUdF X05BTUUgKHZhciksIE5VTEwsIE5VTEwpOwotIAlpZiAobXN5bSA9PSBOVUxMKQotIAkgIGVycm9y IChfKCJObyBnbG9iYWwgc3ltYm9sIFwiJXNcIi4iKSwgU1lNQk9MX0xJTktBR0VfTkFNRSAodmFy KSk7Ci0gCWlmIChvdmVybGF5X2RlYnVnZ2luZykKLWRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmMg Yi9nZGIvc3ltdGFiLmMKLWluZGV4IDg1ZGRkMWQuLjM5ZDhjNmYgMTAwNjQ0Ci0tLS0gYS9nZGIv c3ltdGFiLmMKLSsrKyBiL2dkYi9zeW10YWIuYwotQEAgLTk1LDggKzk1LDcgQEAgc3RydWN0IHN5 bWJvbCAqbG9va3VwX3N5bWJvbF9hdXhfbG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0gc3RhdGlj Ci0gc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2lu ZGV4LAotIAkJCQkJICBjb25zdCBjaGFyICpuYW1lLAotLQkJCQkJICBjb25zdCBkb21haW5fZW51 bSBkb21haW4sCi0tCQkJCQkgIHN0cnVjdCBvYmpmaWxlICpleGNsdWRlX29iamZpbGUpOwotKwkJ CQkJICBjb25zdCBkb21haW5fZW51bSBkb21haW4pOwotIAotIHN0YXRpYwotIHN0cnVjdCBzeW1i b2wgKmxvb2t1cF9zeW1ib2xfYXV4X3F1aWNrIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLUBA IC0xMzYwLDcgKzEzNTksNyBAQCBsb29rdXBfc3RhdGljX3N5bWJvbF9hdXggKGNvbnN0IGNoYXIg Km5hbWUsIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSAgIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlOwotICAgc3RydWN0IHN5bWJvbCAqc3ltOwotIAotLSAgc3ltID0gbG9va3VwX3N5bWJvbF9h dXhfc3ltdGFicyAoU1RBVElDX0JMT0NLLCBuYW1lLCBkb21haW4sIE5VTEwpOwotKyAgc3ltID0g bG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoU1RBVElDX0JMT0NLLCBuYW1lLCBkb21haW4pOwot ICAgaWYgKHN5bSAhPSBOVUxMKQotICAgICByZXR1cm4gc3ltOwotIAotQEAgLTE0OTksNjEgKzE0 OTgsNDAgQEAgbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qg b2JqZmlsZSAqbWFpbl9vYmpmaWxlLAotICAgcmV0dXJuIE5VTEw7Ci0gfQotIAotLS8qIENoZWNr IHRvIHNlZSBpZiB0aGUgc3ltYm9sIGlzIGRlZmluZWQgaW4gb25lIG9mIHRoZSBPQkpGSUxFJ3MK LS0gICBzeW10YWJzLiAgQkxPQ0tfSU5ERVggc2hvdWxkIGJlIGVpdGhlciBHTE9CQUxfQkxPQ0sg b3IgU1RBVElDX0JMT0NLLAotKy8qIENoZWNrIHRvIHNlZSBpZiB0aGUgc3ltYm9sIGlzIGRlZmlu ZWQgaW4gb25lIG9mIHRoZSBzeW10YWJzLgotKyAgIEJMT0NLX0lOREVYIHNob3VsZCBiZSBlaXRo ZXIgR0xPQkFMX0JMT0NLIG9yIFNUQVRJQ19CTE9DSywKLSAgICBkZXBlbmRpbmcgb24gd2hldGhl ciBvciBub3Qgd2Ugd2FudCB0byBzZWFyY2ggZ2xvYmFsIHN5bWJvbHMgb3IKLSAgICBzdGF0aWMg c3ltYm9scy4gICovCi0gCi0gc3RhdGljIHN0cnVjdCBzeW1ib2wgKgotLWxvb2t1cF9zeW1ib2xf YXV4X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgYmxvY2tfaW5kZXgsCi0t CQkJICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotLXsKLS0g IHN0cnVjdCBzeW1ib2wgKnN5bSA9IE5VTEw7Ci0tICBzdHJ1Y3QgYmxvY2t2ZWN0b3IgKmJ2Owot LSAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jazsKLS0gIHN0cnVjdCBzeW10YWIgKnM7Ci0tCi0t ICBpZiAob2JqZmlsZS0+c2YpCi0tICAgIG9iamZpbGUtPnNmLT5xZi0+cHJlX2V4cGFuZF9zeW10 YWJzX21hdGNoaW5nIChvYmpmaWxlLCBibG9ja19pbmRleCwKLS0JCQkJCQkgIG5hbWUsIGRvbWFp bik7Ci0tCi0tICBBTExfT0JKRklMRV9TWU1UQUJTIChvYmpmaWxlLCBzKQotLSAgICBpZiAocy0+ cHJpbWFyeSkKLS0gICAgICB7Ci0tCWJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwotLQlibG9jayA9IEJM T0NLVkVDVE9SX0JMT0NLIChidiwgYmxvY2tfaW5kZXgpOwotLQlzeW0gPSBsb29rdXBfYmxvY2tf c3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKLS0JaWYgKHN5bSkKLS0JICB7Ci0tCSAgICBi bG9ja19mb3VuZCA9IGJsb2NrOwotLQkgICAgcmV0dXJuIGZpeHVwX3N5bWJvbF9zZWN0aW9uIChz eW0sIG9iamZpbGUpOwotLQkgIH0KLS0gICAgICB9Ci0tCi0tICByZXR1cm4gTlVMTDsKLS19Ci0t Ci0tLyogU2FtZSBhcyBsb29rdXBfc3ltYm9sX2F1eF9vYmpmaWxlLCBleGNlcHQgdGhhdCBpdCBz ZWFyY2hlcyBhbGwKLS0gICBvYmpmaWxlcyBleGNlcHQgZm9yIEVYQ0xVREVfT0JKRklMRS4gIFJl dHVybiB0aGUgZmlyc3QgbWF0Y2ggZm91bmQuCi0tCi0tICAgSWYgRVhDTFVERV9PQkpGSUxFIGlz IE5VTEwsIHRoZW4gYWxsIG9iamZpbGVzIGFyZSBzZWFyY2hlZC4gICovCi0tCi0tc3RhdGljIHN0 cnVjdCBzeW1ib2wgKgotIGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRl eCwgY29uc3QgY2hhciAqbmFtZSwKLS0JCQkgICBjb25zdCBkb21haW5fZW51bSBkb21haW4sCi0t CQkJICAgc3RydWN0IG9iamZpbGUgKmV4Y2x1ZGVfb2JqZmlsZSkKLSsJCQkgICBjb25zdCBkb21h aW5fZW51bSBkb21haW4pCi0gewotICAgc3RydWN0IHN5bWJvbCAqc3ltOwotICAgc3RydWN0IG9i amZpbGUgKm9iamZpbGU7Ci0rICBzdHJ1Y3QgYmxvY2t2ZWN0b3IgKmJ2OwotKyAgY29uc3Qgc3Ry dWN0IGJsb2NrICpibG9jazsKLSsgIHN0cnVjdCBzeW10YWIgKnM7Ci0gCi0gICBBTExfT0JKRklM RVMgKG9iamZpbGUpCi0gICB7Ci0tICAgIGlmIChvYmpmaWxlICE9IGV4Y2x1ZGVfb2JqZmlsZSkK LS0gICAgICB7Ci0tCXN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X29iamZpbGUgKG9iamZpbGUsIGJs b2NrX2luZGV4LCBuYW1lLCBkb21haW4pOwotLQlpZiAoc3ltKQotLQkgIHJldHVybiBzeW07Ci0t ICAgICAgfQotKyAgICBpZiAob2JqZmlsZS0+c2YpCi0rICAgICAgb2JqZmlsZS0+c2YtPnFmLT5w cmVfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcgKG9iamZpbGUsCi0rCQkJCQkJICAgIGJsb2NrX2lu ZGV4LAotKwkJCQkJCSAgICBuYW1lLCBkb21haW4pOwotKwotKyAgICBBTExfT0JKRklMRV9TWU1U QUJTIChvYmpmaWxlLCBzKQotKyAgICAgIGlmIChzLT5wcmltYXJ5KQotKwl7Ci0rCSAgYnYgPSBC TE9DS1ZFQ1RPUiAocyk7Ci0rCSAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2Nr X2luZGV4KTsKLSsJICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9t YWluKTsKLSsJICBpZiAoc3ltKQotKwkgICAgewotKwkgICAgICBibG9ja19mb3VuZCA9IGJsb2Nr OwotKwkgICAgICByZXR1cm4gZml4dXBfc3ltYm9sX3NlY3Rpb24gKHN5bSwgb2JqZmlsZSk7Ci0r CSAgICB9Ci0rCX0KLSAgIH0KLSAKLSAgIHJldHVybiBOVUxMOwotQEAgLTE2NzksNDYgKzE2NTcs MjQgQEAgbG9va3VwX3N5bWJvbF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0gCQkgICAgICBj b25zdCBkb21haW5fZW51bSBkb21haW4pCi0gewotICAgc3RydWN0IHN5bWJvbCAqc3ltID0gTlVM TDsKLS0gIHN0cnVjdCBvYmpmaWxlICpibG9ja19vYmpmaWxlID0gTlVMTDsKLSAgIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlID0gTlVMTDsKLSAKLSAgIC8qIENhbGwgbGlicmFyeS1zcGVjaWZpYyBs b29rdXAgcHJvY2VkdXJlLiAgKi8KLS0gIGJsb2NrX29iamZpbGUgPSBsb29rdXBfb2JqZmlsZV9m cm9tX2Jsb2NrIChibG9jayk7Ci0tICBpZiAoYmxvY2tfb2JqZmlsZSAhPSBOVUxMKQotLSAgICBz eW0gPSBzb2xpYl9nbG9iYWxfbG9va3VwIChibG9ja19vYmpmaWxlLCBuYW1lLCBkb21haW4pOwot KyAgb2JqZmlsZSA9IGxvb2t1cF9vYmpmaWxlX2Zyb21fYmxvY2sgKGJsb2NrKTsKLSsgIGlmIChv YmpmaWxlICE9IE5VTEwpCi0rICAgIHN5bSA9IHNvbGliX2dsb2JhbF9sb29rdXAgKG9iamZpbGUs IG5hbWUsIGRvbWFpbik7Ci0gICBpZiAoc3ltICE9IE5VTEwpCi0gICAgIHJldHVybiBzeW07Ci0g Ci0tICAvKiBJZiBCTE9DS19PQkpGSUxFIGlzIG5vdCBOVUxMLCB0aGVuIHNlYXJjaCB0aGlzIG9i amZpbGUgZmlyc3QuCi0tICAgICBJbiBjYXNlIHRoZSBnbG9iYWwgc3ltYm9sIGlzIGRlZmluZWQg aW4gbXVsdGlwbGUgb2JqZmlsZXMsCi0tICAgICB3ZSBoYXZlIGEgYmV0dGVyIGNoYW5jZSBvZiBm aW5kaW5nIHRoZSBtb3N0IHJlbGV2YW50IHN5bWJvbC4gICovCi0tCi0tICBpZiAoYmxvY2tfb2Jq ZmlsZSAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfb2Jq ZmlsZSAoYmxvY2tfb2JqZmlsZSwgR0xPQkFMX0JMT0NLLAotLQkJCQkgICAgICAgbmFtZSwgZG9t YWluKTsKLS0gICAgICBpZiAoc3ltID09IE5VTEwpCi0tCXN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4 X3F1aWNrIChibG9ja19vYmpmaWxlLCBHTE9CQUxfQkxPQ0ssCi0tCQkJCSAgICAgICBuYW1lLCBk b21haW4pOwotLSAgICAgIGlmIChzeW0gIT0gTlVMTCkKLS0JcmV0dXJuIHN5bTsKLS0gICAgfQot LQotLSAgLyogU3ltYm9sIG5vdCBmb3VuZCBpbiB0aGUgQkxPQ0tfT0JKRklMRSwgc28gdHJ5IGFs bCB0aGUgb3RoZXIKLS0gICAgIG9iamZpbGVzLCBzdGFydGluZyB3aXRoIHN5bXRhYnMgZmlyc3Qs IGFuZCB0aGVuIHBhcnRpYWwgc3ltdGFicy4gICovCi0tCi0tICBzeW0gPSBsb29rdXBfc3ltYm9s X2F1eF9zeW10YWJzIChHTE9CQUxfQkxPQ0ssIG5hbWUsIGRvbWFpbiwgYmxvY2tfb2JqZmlsZSk7 Ci0rICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChHTE9CQUxfQkxPQ0ssIG5hbWUs IGRvbWFpbik7Ci0gICBpZiAoc3ltICE9IE5VTEwpCi0gICAgIHJldHVybiBzeW07Ci0gCi0gICBB TExfT0JKRklMRVMgKG9iamZpbGUpCi0gICB7Ci0tICAgIGlmIChvYmpmaWxlICE9IGJsb2NrX29i amZpbGUpCi0tICAgICAgewotLQlzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9xdWljayAob2JqZmls ZSwgR0xPQkFMX0JMT0NLLCBuYW1lLCBkb21haW4pOwotLQlpZiAoc3ltKQotLQkgIHJldHVybiBz eW07Ci0tICAgICAgfQotKyAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9xdWljayAob2JqZmls ZSwgR0xPQkFMX0JMT0NLLCBuYW1lLCBkb21haW4pOwotKyAgICBpZiAoc3ltKQotKyAgICAgIHJl dHVybiBzeW07Ci0gICB9Ci0gCi0gICByZXR1cm4gTlVMTDsKLS0tIAotMS43LjEKLQoKZGlmZiAt LWdpdCBhL2dkYi1wYXJhbWV0ZXJyZWYtMW9mMi5wYXRjaCBiL2dkYi1wYXJhbWV0ZXJyZWYtMW9m Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI5ZTZmOS4uMDAwMDAwMAot LS0gYS9nZGItcGFyYW1ldGVycmVmLTFvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MTYg KzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDYvbXNn MDA0NTguaHRtbAotU3ViamVjdDogW3BhdGNoIDEvMl0gR2VuZXJhbGl6ZSBjYWxsX3NpdGUucGFy YW1ldGVyIGtleSAoImNvZGUgY2xlYW51cCIpCi0KLUhpLAotCi1wcmV2aW91c2x5IHBhcmFtZXRl ciBjb3VsZCBiZSBpZGVudGlmaWVkIGVpdGhlciB2aWEgRFdfT1BfcmVnIG9yIHZpYQotRFdfT1Bf ZmJyZWcgKGJvdGggaW4gRFdfQVRfbG9jYXRpb24pLiAgQXMgW3BhdGNoIDIvMl0gYWRkcyBuZXcg aWRlbnRpZmljYXRpb24KLXZpYSBEV19BVF9hYnN0cmFjdF9vcmlnaW4gZ2VuZXJhbGl6ZSB0aGlz IHR3byBzdGF0ZSBkZWNpZGluZyBpbnRvIG1vcmUgZ2VuZXJhbAotZW51bS4KLQotCi1UaGFua3Ms Ci1KYW4KLQotCi1nZGIvCi0yMDEyLTA2LTE0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0KLQlDb2RlIGNsZWFudXA6IEdlbmVyYWxpemUgY2FsbF9zaXRlLnBh cmFtZXRlciBrZXkuCi0JKiBkd2FyZjJleHByLmMgKGV4ZWN1dGVfc3RhY2tfb3ApIDxEV19PUF9H TlVfZW50cnlfdmFsdWU+OiBSZW1vdmUKLQl2YXJpYWJsZSBkd2FyZl9yZWcuICBOZXcgdmFyaWFi bGUga2luZF91LiAgVXBkYXRlIHBhcmFtZXRlcnMgdG8KLQlwdXNoX2R3YXJmX3JlZ19lbnRyeV92 YWx1ZS4KLQkoY3R4X25vX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlKTogVXBkYXRlIHBhcmFt ZXRlcnMuCi0JKiBkd2FyZjJleHByLmggKGVudW0gY2FsbF9zaXRlX3BhcmFtZXRlcl9raW5kKQot CSh1bmlvbiBjYWxsX3NpdGVfcGFyYW1ldGVyX3UpOiBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KLQko c3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9mdW5jcyk6IFVwZGF0ZSBwYXJhbWV0ZXJzIGFuZCB0 aGVpcgotCWRlc2NyaXB0aW9uIGZvciBwdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZS4KLQkoY3R4 X25vX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlKTogVXBkYXRlIHBhcmFtZXRlcnMuCi0JKiBk d2FyZjJsb2MuYyAoY2FsbF9zaXRlX3BhcmFtZXRlcl9tYXRjaGVzKTogTmV3IGZ1bmN0aW9uLgot CShkd2FyZl9leHByX3JlZ190b19lbnRyeV9wYXJhbWV0ZXIpOiBVcGRhdGUgcGFyYW1ldGVycyBh bmQgdGhlaXIKLQlkZXNjcmlwdGlvbi4gIFVzZSBjYWxsX3NpdGVfcGFyYW1ldGVyX21hdGNoZXMu Ci0JKGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUsIHZhbHVlX29mX2R3YXJm X3JlZ19lbnRyeSk6Ci0JVXBkYXRlIHBhcmFtZXRlcnMgYW5kIHRoZWlyIGRlc2NyaXB0aW9uLgot CSh2YWx1ZV9vZl9kd2FyZl9ibG9ja19lbnRyeSk6IFJlbW92ZSB2YXJpYWJsZXMgZHdhcmZfcmVn IGFuZCBmYl9vZmZzZXQuCi0JTmV3IHZhcmlhYmxlIGtpbmRfdS4gIEFkanVzdCB0aGUgY2FsbGVy IGZvciB1cGRhdGVkIHBhcmFtZXRlcnMuCi0JKG5lZWRzX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSk6 IFVwZGF0ZSBwYXJhbWV0ZXJzLgotCSogZHdhcmYycmVhZC5jIChyZWFkX2NhbGxfc2l0ZV9zY29w ZSk6IE5ldyB2YXJpYWJsZSBsb2MuICBVc2UgaXQKLQlpbnN0ZWFkIG9mIGF0dHIuICBVcGRhdGUg Zm9yIHRoZSBjaGFuZ2VkIGZpZWxkcyBvZiBzdHJ1Y3QKLQljYWxsX3NpdGVfcGFyYW1ldGVyLgot CSogZ2RidHlwZXMuaDogSW5jbHVkZSBkd2FyZjJleHByLmguCi0JKGVudW0gY2FsbF9zaXRlX3Bh cmFtZXRlcl9raW5kKTogTmV3LgotCShzdHJ1Y3QgY2FsbF9zaXRlLnBhcmFtZXRlcik6IE5ldyBm aWVsZCBraW5kLiAgV3JhcCBkd2FyZl9yZWcgYW5kCi0JZmJfb2Zmc2V0IGludG8gbmV3IHVuaW9u IHUuCi0KLS0tLSBhL2dkYi9kd2FyZjJleHByLmMKLSsrKyBiL2dkYi9kd2FyZjJleHByLmMKLUBA IC0xMzU1LDMzICsxMzU1LDM1IEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHBy X2NvbnRleHQgKmN0eCwKLSAJY2FzZSBEV19PUF9HTlVfZW50cnlfdmFsdWU6Ci0gCSAgewotIAkg ICAgdWludDY0X3QgbGVuOwotLQkgICAgaW50IGR3YXJmX3JlZzsKLSAJICAgIENPUkVfQUREUiBk ZXJlZl9zaXplOwotKwkgICAgdW5pb24gY2FsbF9zaXRlX3BhcmFtZXRlcl91IGtpbmRfdTsKLSAK LSAJICAgIG9wX3B0ciA9IHNhZmVfcmVhZF91bGViMTI4IChvcF9wdHIsIG9wX2VuZCwgJmxlbik7 Ci0gCSAgICBpZiAob3BfcHRyICsgbGVuID4gb3BfZW5kKQotIAkgICAgICBlcnJvciAoXygiRFdf T1BfR05VX2VudHJ5X3ZhbHVlOiB0b28gZmV3IGJ5dGVzIGF2YWlsYWJsZS4iKSk7Ci0gCi0tCSAg ICBkd2FyZl9yZWcgPSBkd2FyZl9ibG9ja190b19kd2FyZl9yZWcgKG9wX3B0ciwgb3BfcHRyICsg bGVuKTsKLS0JICAgIGlmIChkd2FyZl9yZWcgIT0gLTEpCi0rCSAgICBraW5kX3UuZHdhcmZfcmVn ID0gZHdhcmZfYmxvY2tfdG9fZHdhcmZfcmVnIChvcF9wdHIsIG9wX3B0ciArIGxlbik7Ci0rCSAg ICBpZiAoa2luZF91LmR3YXJmX3JlZyAhPSAtMSkKLSAJICAgICAgewotIAkJb3BfcHRyICs9IGxl bjsKLS0JCWN0eC0+ZnVuY3MtPnB1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlIChjdHgsIGR3YXJm X3JlZywKLS0JCQkJCQkJMCAvKiB1bnVzZWQgKi8sCi0rCQljdHgtPmZ1bmNzLT5wdXNoX2R3YXJm X3JlZ19lbnRyeV92YWx1ZSAoY3R4LAotKwkJCQkJCSAgQ0FMTF9TSVRFX1BBUkFNRVRFUl9EV0FS Rl9SRUcsCi0rCQkJCQkJCWtpbmRfdSwKLSAJCQkJCQkJLTEgLyogZGVyZWZfc2l6ZSAqLyk7Ci0g CQlnb3RvIG5vX3B1c2g7Ci0gCSAgICAgIH0KLSAKLS0JICAgIGR3YXJmX3JlZyA9IGR3YXJmX2Js b2NrX3RvX2R3YXJmX3JlZ19kZXJlZiAob3BfcHRyLCBvcF9wdHIgKyBsZW4sCi0tCQkJCQkJCSZk ZXJlZl9zaXplKTsKLS0JICAgIGlmIChkd2FyZl9yZWcgIT0gLTEpCi0rCSAgICBraW5kX3UuZHdh cmZfcmVnID0gZHdhcmZfYmxvY2tfdG9fZHdhcmZfcmVnX2RlcmVmIChvcF9wdHIsCi0rCQkJCQkJ CSAgICAgICBvcF9wdHIgKyBsZW4sCi0rCQkJCQkJCSAgICAgICAmZGVyZWZfc2l6ZSk7Ci0rCSAg ICBpZiAoa2luZF91LmR3YXJmX3JlZyAhPSAtMSkKLSAJICAgICAgewotIAkJaWYgKGRlcmVmX3Np emUgPT0gLTEpCi0gCQkgIGRlcmVmX3NpemUgPSBjdHgtPmFkZHJfc2l6ZTsKLSAJCW9wX3B0ciAr PSBsZW47Ci0tCQljdHgtPmZ1bmNzLT5wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoY3R4LCBk d2FyZl9yZWcsCi0tCQkJCQkJCTAgLyogdW51c2VkICovLAotLQkJCQkJCQlkZXJlZl9zaXplKTsK LSsJCWN0eC0+ZnVuY3MtPnB1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlIChjdHgsCi0rCQkJCQkJ ICBDQUxMX1NJVEVfUEFSQU1FVEVSX0RXQVJGX1JFRywKLSsJCQkJCQkJa2luZF91LCBkZXJlZl9z aXplKTsKLSAJCWdvdG8gbm9fcHVzaDsKLSAJICAgICAgfQotIAotQEAgLTE1MzMsNyArMTUzNSw4 IEBAIGN0eF9ub19nZXRfYmFzZV90eXBlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgs IGN1X29mZnNldCBkaWUpCi0gCi0gdm9pZAotIGN0eF9ub19wdXNoX2R3YXJmX3JlZ19lbnRyeV92 YWx1ZSAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAotLQkJCQkgICBpbnQgZHdhcmZf cmVnLCBDT1JFX0FERFIgZmJfb2Zmc2V0LAotKwkJCQkgICBlbnVtIGNhbGxfc2l0ZV9wYXJhbWV0 ZXJfa2luZCBraW5kLAotKwkJCQkgICB1bmlvbiBjYWxsX3NpdGVfcGFyYW1ldGVyX3Uga2luZF91 LAotIAkJCQkgICBpbnQgZGVyZWZfc2l6ZSkKLSB7Ci0gICBpbnRlcm5hbF9lcnJvciAoX19GSUxF X18sIF9fTElORV9fLAotLS0tIGEvZ2RiL2R3YXJmMmV4cHIuaAotKysrIGIvZ2RiL2R3YXJmMmV4 cHIuaAotQEAgLTI2LDYgKzI2LDggQEAKLSAjaW5jbHVkZSAibGViMTI4LmgiCi0gCi0gc3RydWN0 IGR3YXJmX2V4cHJfY29udGV4dDsKLStlbnVtIGNhbGxfc2l0ZV9wYXJhbWV0ZXJfa2luZDsKLSt1 bmlvbiBjYWxsX3NpdGVfcGFyYW1ldGVyX3U7Ci0gCi0gLyogT2Zmc2V0IHJlbGF0aXZlIHRvIHRo ZSBzdGFydCBvZiBpdHMgY29udGFpbmluZyBDVSAoY29tcGlsYXRpb24gdW5pdCkuICAqLwotIHR5 cGVkZWYgc3RydWN0Ci1AQCAtNzcsMTQgKzc5LDEyIEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRl eHRfZnVuY3MKLSAgIHN0cnVjdCB0eXBlICooKmdldF9iYXNlX3R5cGUpIChzdHJ1Y3QgZHdhcmZf ZXhwcl9jb250ZXh0ICpjdHgsIGN1X29mZnNldCBkaWUpOwotIAotICAgLyogUHVzaCBvbiBEV0FS RiBzdGFjayBhbiBlbnRyeSBldmFsdWF0ZWQgZm9yIERXX1RBR19HTlVfY2FsbF9zaXRlJ3MKLS0g ICAgIERXQVJGX1JFRy9GQl9PRkZTRVQgYXQgdGhlIGNhbGxlciBvZiBzcGVjaWZpZWQgQkFUT04u ICBJZiBEV0FSRiByZWdpc3RlcgotLSAgICAgbnVtYmVyIERXQVJGX1JFRyBzcGVjaWZ5aW5nIHRo ZSBwdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSBwYXJhbWV0ZXIgaXMKLS0gICAgIG5vdCAtMSBG Ql9PRkZTRVQgaXMgaWdub3JlZC4gIE90aGVyd2lzZSBGQl9PRkZTRVQgc3BlY2lmaWVzIHN0YWNr Ci0tICAgICBwYXJhbWV0ZXIgb2Zmc2V0IGFnYWluc3QgY2FsbGVyJ3Mgc3RhY2sgcG9pbnRlciAo d2hpY2ggZXF1YWxzIHRoZSBjYWxsZWUncwotLSAgICAgZnJhbWUgYmFzZSkuICBJZiBERVJFRl9T SVpFIGlzIG5vdCAtMSB0aGVuIHVzZQotLSAgICAgRFdfQVRfR05VX2NhbGxfc2l0ZV9kYXRhX3Zh bHVlIGluc3RlYWQgb2YgRFdfQVRfR05VX2NhbGxfc2l0ZV92YWx1ZS4gICovCi0rICAgICBwYXJh bWV0ZXIgbWF0Y2hpbmcgS0lORCBhbmQgS0lORF9VIGF0IHRoZSBjYWxsZXIgb2Ygc3BlY2lmaWVk IEJBVE9OLgotKyAgICAgSWYgREVSRUZfU0laRSBpcyBub3QgLTEgdGhlbiB1c2UgRFdfQVRfR05V X2NhbGxfc2l0ZV9kYXRhX3ZhbHVlIGluc3RlYWQgb2YKLSsgICAgIERXX0FUX0dOVV9jYWxsX3Np dGVfdmFsdWUuICAqLwotICAgdm9pZCAoKnB1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlKSAoc3Ry dWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAotLQkJCQkgICAgICBpbnQgZHdhcmZfcmVnLCBD T1JFX0FERFIgZmJfb2Zmc2V0LAotKwkJCQkgICAgICBlbnVtIGNhbGxfc2l0ZV9wYXJhbWV0ZXJf a2luZCBraW5kLAotKwkJCQkgICAgICB1bmlvbiBjYWxsX3NpdGVfcGFyYW1ldGVyX3Uga2luZF91 LAotIAkJCQkgICAgICBpbnQgZGVyZWZfc2l6ZSk7Ci0gCi0gICAvKiBSZXR1cm4gdGhlIGFkZHJl c3MgaW5kZXhlZCBieSBEV19PUF9HTlVfYWRkcl9pbmRleC4KLUBAIC0yODksNyArMjg5LDggQEAg dm9pZCBjdHhfbm9fZHdhcmZfY2FsbCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LCBj dV9vZmZzZXQgZGllX29mZnNldCk7Ci0gc3RydWN0IHR5cGUgKmN0eF9ub19nZXRfYmFzZV90eXBl IChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCi0gCQkJCSAgIGN1X29mZnNldCBkaWUp OwotIHZvaWQgY3R4X25vX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlIChzdHJ1Y3QgZHdhcmZf ZXhwcl9jb250ZXh0ICpjdHgsCi0tCQkJCQlpbnQgZHdhcmZfcmVnLCBDT1JFX0FERFIgZmJfb2Zm c2V0LAotKwkJCQkJZW51bSBjYWxsX3NpdGVfcGFyYW1ldGVyX2tpbmQga2luZCwKLSsJCQkJCXVu aW9uIGNhbGxfc2l0ZV9wYXJhbWV0ZXJfdSBraW5kX3UsCi0gCQkJCQlpbnQgZGVyZWZfc2l6ZSk7 Ci0gQ09SRV9BRERSIGN0eF9ub19nZXRfYWRkcl9pbmRleCAodm9pZCAqYmF0b24sIHVuc2lnbmVk IGludCBpbmRleCk7Ci0gCi0tLS0gYS9nZGIvZHdhcmYybG9jLmMKLSsrKyBiL2dkYi9kd2FyZjJs b2MuYwotQEAgLTkyOSwxNiArOTI5LDM0IEBAIGNhbGxfc2l0ZV9maW5kX2NoYWluIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGNhbGxlcl9wYywKLSAgIHJldHVybiByZXR2YWw7 Ci0gfQotIAotLS8qIEZldGNoIGNhbGxfc2l0ZV9wYXJhbWV0ZXIgZnJvbSBjYWxsZXIgbWF0Y2hp bmcgdGhlIHBhcmFtZXRlcnMuICBGUkFNRSBpcyBmb3IKLS0gICBjYWxsZWUuICBTZWUgRFdBUkZf UkVHIGFuZCBGQl9PRkZTRVQgZGVzY3JpcHRpb24gYXQgc3RydWN0Ci0tICAgZHdhcmZfZXhwcl9j b250ZXh0X2Z1bmNzLT5wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZS4KLSsvKiBSZXR1cm4gMSBp ZiBLSU5EIGFuZCBLSU5EX1UgbWF0Y2ggUEFSQU1FVEVSLiAgUmV0dXJuIDAgb3RoZXJ3aXNlLiAg Ki8KLSsKLStzdGF0aWMgaW50Ci0rY2FsbF9zaXRlX3BhcmFtZXRlcl9tYXRjaGVzIChzdHJ1Y3Qg Y2FsbF9zaXRlX3BhcmFtZXRlciAqcGFyYW1ldGVyLAotKwkJCSAgICAgZW51bSBjYWxsX3NpdGVf cGFyYW1ldGVyX2tpbmQga2luZCwKLSsJCQkgICAgIHVuaW9uIGNhbGxfc2l0ZV9wYXJhbWV0ZXJf dSBraW5kX3UpCi0rewotKyAgaWYgKGtpbmQgPT0gcGFyYW1ldGVyLT5raW5kKQotKyAgICBzd2l0 Y2ggKGtpbmQpCi0rICAgICAgewotKyAgICAgIGNhc2UgQ0FMTF9TSVRFX1BBUkFNRVRFUl9EV0FS Rl9SRUc6Ci0rCXJldHVybiBraW5kX3UuZHdhcmZfcmVnID09IHBhcmFtZXRlci0+dS5kd2FyZl9y ZWc7Ci0rICAgICAgY2FzZSBDQUxMX1NJVEVfUEFSQU1FVEVSX0ZCX09GRlNFVDoKLSsJcmV0dXJu IGtpbmRfdS5mYl9vZmZzZXQgPT0gcGFyYW1ldGVyLT51LmZiX29mZnNldDsKLSsgICAgICB9Ci0r ICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogRmV0Y2ggY2FsbF9zaXRlX3BhcmFtZXRlciBmcm9tIGNh bGxlciBtYXRjaGluZyBLSU5EIGFuZCBLSU5EX1UuCi0rICAgRlJBTUUgaXMgZm9yIGNhbGxlZS4K LSAKLSAgICBGdW5jdGlvbiBhbHdheXMgcmV0dXJucyBub24tTlVMTCwgaXQgdGhyb3dzIE5PX0VO VFJZX1ZBTFVFX0VSUk9SCi0gICAgb3RoZXJ3aXNlLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IGNh bGxfc2l0ZV9wYXJhbWV0ZXIgKgotLWR3YXJmX2V4cHJfcmVnX3RvX2VudHJ5X3BhcmFtZXRlciAo c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQgZHdhcmZfcmVnLAotLQkJCQkgICBDT1JFX0FE RFIgZmJfb2Zmc2V0LAotK2R3YXJmX2V4cHJfcmVnX3RvX2VudHJ5X3BhcmFtZXRlciAoc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lLAotKwkJCQkgICBlbnVtIGNhbGxfc2l0ZV9wYXJhbWV0ZXJfa2lu ZCBraW5kLAotKwkJCQkgICB1bmlvbiBjYWxsX3NpdGVfcGFyYW1ldGVyX3Uga2luZF91LAotIAkJ CQkgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICoqcGVyX2N1X3JldHVybikKLSB7Ci0gICBD T1JFX0FERFIgZnVuY19hZGRyID0gZ2V0X2ZyYW1lX2Z1bmMgKGZyYW1lKTsKLUBAIC0xMDAxLDEy ICsxMDE5LDcgQEAgZHdhcmZfZXhwcl9yZWdfdG9fZW50cnlfcGFyYW1ldGVyIChzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUsIGludCBkd2FyZl9yZWcsCi0gICBmb3IgKGlwYXJhbXMgPSAwOyBpcGFy YW1zIDwgY2FsbF9zaXRlLT5wYXJhbWV0ZXJfY291bnQ7IGlwYXJhbXMrKykKLSAgICAgewotICAg ICAgIHBhcmFtZXRlciA9ICZjYWxsX3NpdGUtPnBhcmFtZXRlcltpcGFyYW1zXTsKLS0gICAgICBp ZiAocGFyYW1ldGVyLT5kd2FyZl9yZWcgPT0gLTEgJiYgZHdhcmZfcmVnID09IC0xKQotLQl7Ci0t CSAgaWYgKHBhcmFtZXRlci0+ZmJfb2Zmc2V0ID09IGZiX29mZnNldCkKLS0JICAgIGJyZWFrOwot LQl9Ci0tICAgICAgZWxzZSBpZiAocGFyYW1ldGVyLT5kd2FyZl9yZWcgPT0gZHdhcmZfcmVnKQot KyAgICAgIGlmIChjYWxsX3NpdGVfcGFyYW1ldGVyX21hdGNoZXMgKHBhcmFtZXRlciwga2luZCwg a2luZF91KSkKLSAJYnJlYWs7Ci0gICAgIH0KLSAgIGlmIChpcGFyYW1zID09IGNhbGxfc2l0ZS0+ cGFyYW1ldGVyX2NvdW50KQotQEAgLTEwNjMsMTcgKzEwNzYsMTcgQEAgZHdhcmZfZW50cnlfcGFy YW1ldGVyX3RvX3ZhbHVlIChzdHJ1Y3QgY2FsbF9zaXRlX3BhcmFtZXRlciAqcGFyYW1ldGVyLAot ICAgcmV0dXJuIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAodHlwZSwgY2FsbGVyX2ZyYW1lLCBk YXRhLCBzaXplICsgMSwgcGVyX2N1KTsKLSB9Ci0gCi0tLyogRXhlY3V0ZSBjYWxsX3NpdGVfcGFy YW1ldGVyJ3MgRFdBUkYgYmxvY2sgbWF0Y2hpbmcgREVSRUZfU0laRSBmb3IgY2FsbGVyIG9mCi0t ICAgdGhlIENUWCdzIGZyYW1lLiAgQ1RYIG11c3QgYmUgb2YgZHdhcmZfZXhwcl9jdHhfZnVuY3Mg a2luZC4gIFNlZSBEV0FSRl9SRUcKLS0gICBhbmQgRkJfT0ZGU0VUIGRlc2NyaXB0aW9uIGF0IHN0 cnVjdAotLSAgIGR3YXJmX2V4cHJfY29udGV4dF9mdW5jcy0+cHVzaF9kd2FyZl9yZWdfZW50cnlf dmFsdWUuCi0rLyogRXhlY3V0ZSBEV0FSRiBibG9jayBvZiBjYWxsX3NpdGVfcGFyYW1ldGVyIHdo aWNoIG1hdGNoZXMgS0lORCBhbmQgS0lORF9VLgotKyAgIENob29zZSBERVJFRl9TSVpFIHZhbHVl IG9mIHRoYXQgcGFyYW1ldGVyLiAgU2VhcmNoIGNhbGxlciBvZiB0aGUgQ1RYJ3MKLSsgICBmcmFt ZS4gIENUWCBtdXN0IGJlIG9mIGR3YXJmX2V4cHJfY3R4X2Z1bmNzIGtpbmQuCi0gCi0gICAgVGhl IENUWCBjYWxsZXIgY2FuIGJlIGZyb20gYSBkaWZmZXJlbnQgQ1UgLSBwZXJfY3VfZHdhcmZfY2Fs bCBpbXBsZW1lbnRhdGlvbgotICAgIGNhbiBiZSBtb3JlIHNpbXBsZSBhcyBpdCBkb2VzIG5vdCBz dXBwb3J0IGNyb3NzLUNVIERXQVJGIGV4ZWN1dGlvbnMuICAqLwotIAotIHN0YXRpYyB2b2lkCi0g ZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoc3RydWN0IGR3YXJmX2V4cHJf Y29udGV4dCAqY3R4LAotLQkJCQkgICAgICAgaW50IGR3YXJmX3JlZywgQ09SRV9BRERSIGZiX29m ZnNldCwKLSsJCQkJICAgICAgIGVudW0gY2FsbF9zaXRlX3BhcmFtZXRlcl9raW5kIGtpbmQsCi0r CQkJCSAgICAgICB1bmlvbiBjYWxsX3NpdGVfcGFyYW1ldGVyX3Uga2luZF91LAotIAkJCQkgICAg ICAgaW50IGRlcmVmX3NpemUpCi0gewotICAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24gKmRlYmF0 b247Ci1AQCAtMTA5MCw3ICsxMTAzLDcgQEAgZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19lbnRy eV92YWx1ZSAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAotICAgZnJhbWUgPSBkZWJh dG9uLT5mcmFtZTsKLSAgIGNhbGxlcl9mcmFtZSA9IGdldF9wcmV2X2ZyYW1lIChmcmFtZSk7Ci0g Ci0tICBwYXJhbWV0ZXIgPSBkd2FyZl9leHByX3JlZ190b19lbnRyeV9wYXJhbWV0ZXIgKGZyYW1l LCBkd2FyZl9yZWcsIGZiX29mZnNldCwKLSsgIHBhcmFtZXRlciA9IGR3YXJmX2V4cHJfcmVnX3Rv X2VudHJ5X3BhcmFtZXRlciAoZnJhbWUsIGtpbmQsIGtpbmRfdSwKLSAJCQkJCQkgJmNhbGxlcl9w ZXJfY3UpOwotICAgZGF0YV9zcmMgPSBkZXJlZl9zaXplID09IC0xID8gcGFyYW1ldGVyLT52YWx1 ZSA6IHBhcmFtZXRlci0+ZGF0YV92YWx1ZTsKLSAgIHNpemUgPSBkZXJlZl9zaXplID09IC0xID8g cGFyYW1ldGVyLT52YWx1ZV9zaXplIDogcGFyYW1ldGVyLT5kYXRhX3ZhbHVlX3NpemU7Ci1AQCAt MTE4NywxNyArMTIwMCwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGx2YWxfZnVuY3MgZW50cnlf ZGF0YV92YWx1ZV9mdW5jcyA9Ci0gICBlbnRyeV9kYXRhX3ZhbHVlX2ZyZWVfY2xvc3VyZQotIH07 Ci0gCi0tLyogUmVhZCBwYXJhbWV0ZXIgb2YgVFlQRSBhdCAoY2FsbGVlKSBGUkFNRSdzIGZ1bmN0 aW9uIGVudHJ5LiAgRFdBUkZfUkVHIGFuZAotLSAgIEZCX09GRlNFVCBhcmUgdXNlZCB0byBtYXRj aCBEV19BVF9sb2NhdGlvbiBhdCB0aGUgY2FsbGVyJ3MKLS0gICBEV19UQUdfR05VX2NhbGxfc2l0 ZV9wYXJhbWV0ZXIuICBTZWUgRFdBUkZfUkVHIGFuZCBGQl9PRkZTRVQgZGVzY3JpcHRpb24gYXQK LS0gICBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0X2Z1bmNzLT5wdXNoX2R3YXJmX3JlZ19lbnRy eV92YWx1ZS4KLSsvKiBSZWFkIHBhcmFtZXRlciBvZiBUWVBFIGF0IChjYWxsZWUpIEZSQU1FJ3Mg ZnVuY3Rpb24gZW50cnkuICBLSU5EIGFuZCBLSU5EX1UKLSsgICBhcmUgdXNlZCB0byBtYXRjaCBE V19BVF9sb2NhdGlvbiBhdCB0aGUgY2FsbGVyJ3MKLSsgICBEV19UQUdfR05VX2NhbGxfc2l0ZV9w YXJhbWV0ZXIuCi0gCi0gICAgRnVuY3Rpb24gYWx3YXlzIHJldHVybnMgbm9uLU5VTEwgdmFsdWUu ICBJdCB0aHJvd3MgTk9fRU5UUllfVkFMVUVfRVJST1IgaWYgaXQKLSAgICBjYW5ub3QgcmVzb2x2 ZSB0aGUgcGFyYW1ldGVyIGZvciBhbnkgcmVhc29uLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IHZh bHVlICoKLSB2YWx1ZV9vZl9kd2FyZl9yZWdfZW50cnkgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0tCQkJICBpbnQgZHdhcmZfcmVnLCBDT1JFX0FERFIgZmJf b2Zmc2V0KQotKwkJCSAgZW51bSBjYWxsX3NpdGVfcGFyYW1ldGVyX2tpbmQga2luZCwKLSsJCQkg IHVuaW9uIGNhbGxfc2l0ZV9wYXJhbWV0ZXJfdSBraW5kX3UpCi0gewotICAgc3RydWN0IHR5cGUg KmNoZWNrZWRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwotICAgc3RydWN0IHR5cGUgKnRh cmdldF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoY2hlY2tlZF90eXBlKTsKLUBAIC0xMjA3LDcg KzEyMjAsNyBAQCB2YWx1ZV9vZl9kd2FyZl9yZWdfZW50cnkgKHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0gICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpj YWxsZXJfcGVyX2N1OwotICAgQ09SRV9BRERSIGFkZHI7Ci0gCi0tICBwYXJhbWV0ZXIgPSBkd2Fy Zl9leHByX3JlZ190b19lbnRyeV9wYXJhbWV0ZXIgKGZyYW1lLCBkd2FyZl9yZWcsIGZiX29mZnNl dCwKLSsgIHBhcmFtZXRlciA9IGR3YXJmX2V4cHJfcmVnX3RvX2VudHJ5X3BhcmFtZXRlciAoZnJh bWUsIGtpbmQsIGtpbmRfdSwKLSAJCQkJCQkgJmNhbGxlcl9wZXJfY3UpOwotIAotICAgb3V0ZXJf dmFsID0gZHdhcmZfZW50cnlfcGFyYW1ldGVyX3RvX3ZhbHVlIChwYXJhbWV0ZXIsIC0xIC8qIGRl cmVmX3NpemUgKi8sCi1AQCAtMTI1OSwxNSArMTI3MiwxNiBAQCBzdGF0aWMgc3RydWN0IHZhbHVl ICoKLSB2YWx1ZV9vZl9kd2FyZl9ibG9ja19lbnRyeSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSwKLSAJCQkgICAgY29uc3QgZ2RiX2J5dGUgKmJsb2NrLCBzaXpl X3QgYmxvY2tfbGVuKQotIHsKLS0gIGludCBkd2FyZl9yZWc7Ci0tICBDT1JFX0FERFIgZmJfb2Zm c2V0OwotKyAgdW5pb24gY2FsbF9zaXRlX3BhcmFtZXRlcl91IGtpbmRfdTsKLSAKLS0gIGR3YXJm X3JlZyA9IGR3YXJmX2Jsb2NrX3RvX2R3YXJmX3JlZyAoYmxvY2ssIGJsb2NrICsgYmxvY2tfbGVu KTsKLS0gIGlmIChkd2FyZl9yZWcgIT0gLTEpCi0tICAgIHJldHVybiB2YWx1ZV9vZl9kd2FyZl9y ZWdfZW50cnkgKHR5cGUsIGZyYW1lLCBkd2FyZl9yZWcsIDAgLyogdW51c2VkICovKTsKLSsgIGtp bmRfdS5kd2FyZl9yZWcgPSBkd2FyZl9ibG9ja190b19kd2FyZl9yZWcgKGJsb2NrLCBibG9jayAr IGJsb2NrX2xlbik7Ci0rICBpZiAoa2luZF91LmR3YXJmX3JlZyAhPSAtMSkKLSsgICAgcmV0dXJu IHZhbHVlX29mX2R3YXJmX3JlZ19lbnRyeSAodHlwZSwgZnJhbWUsIENBTExfU0lURV9QQVJBTUVU RVJfRFdBUkZfUkVHLAotKwkJCQkgICAgIGtpbmRfdSk7Ci0gCi0tICBpZiAoZHdhcmZfYmxvY2tf dG9fZmJfb2Zmc2V0IChibG9jaywgYmxvY2sgKyBibG9ja19sZW4sICZmYl9vZmZzZXQpKQotLSAg ICByZXR1cm4gdmFsdWVfb2ZfZHdhcmZfcmVnX2VudHJ5ICh0eXBlLCBmcmFtZSwgLTEsIGZiX29m ZnNldCk7Ci0rICBpZiAoZHdhcmZfYmxvY2tfdG9fZmJfb2Zmc2V0IChibG9jaywgYmxvY2sgKyBi bG9ja19sZW4sICZraW5kX3UuZmJfb2Zmc2V0KSkKLSsgICAgcmV0dXJuIHZhbHVlX29mX2R3YXJm X3JlZ19lbnRyeSAodHlwZSwgZnJhbWUsIENBTExfU0lURV9QQVJBTUVURVJfRkJfT0ZGU0VULAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kX3UpOwotIAotICAgLyog VGhpcyBjYW4gbm9ybWFsbHkgaGFwcGVuIC0gdGhyb3cgTk9fRU5UUllfVkFMVUVfRVJST1IgdG8g Z2V0IHRoZSBtZXNzYWdlCi0gICAgICBzdXBwcmVzc2VkIGR1cmluZyBub3JtYWwgb3BlcmF0aW9u LiAgVGhlIGV4cHJlc3Npb24gY2FuIGJlIGFyYml0cmFyeSBpZgotQEAgLTIzNTgsNyArMjM3Miw4 IEBAIG5lZWRzX2ZyYW1lX2R3YXJmX2NhbGwgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0 eCwgY3Vfb2Zmc2V0IGRpZV9vZmZzZXQpCi0gCi0gc3RhdGljIHZvaWQKLSBuZWVkc19kd2FyZl9y ZWdfZW50cnlfdmFsdWUgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKLS0JCQkgICAg IGludCBkd2FyZl9yZWcsIENPUkVfQUREUiBmYl9vZmZzZXQsIGludCBkZXJlZl9zaXplKQotKwkJ CSAgICAgZW51bSBjYWxsX3NpdGVfcGFyYW1ldGVyX2tpbmQga2luZCwKLSsJCQkgICAgIHVuaW9u IGNhbGxfc2l0ZV9wYXJhbWV0ZXJfdSBraW5kX3UsIGludCBkZXJlZl9zaXplKQotIHsKLSAgIHN0 cnVjdCBuZWVkc19mcmFtZV9iYXRvbiAqbmZfYmF0b24gPSBjdHgtPmJhdG9uOwotIAotLS0tIGEv Z2RiL2R3YXJmMnJlYWQuYwotKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAgLTc4MTYsNiArNzgx Niw3IEBAIHJlYWRfY2FsbF9zaXRlX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCi0gICAgICAgIGNoaWxkX2RpZSA9IHNpYmxpbmdfZGllIChjaGlsZF9k aWUpKQotICAgICB7Ci0gICAgICAgc3RydWN0IGNhbGxfc2l0ZV9wYXJhbWV0ZXIgKnBhcmFtZXRl cjsKLSsgICAgICBzdHJ1Y3QgYXR0cmlidXRlICpsb2M7Ci0gCi0gICAgICAgaWYgKGNoaWxkX2Rp ZS0+dGFnICE9IERXX1RBR19HTlVfY2FsbF9zaXRlX3BhcmFtZXRlcikKLSAJewotQEAgLTc4Mjks OCArNzgzMCw4IEBAIHJlYWRfY2FsbF9zaXRlX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgICAgLyogRFdfQVRfbG9jYXRpb24gc3BlY2lmaWVz IHRoZSByZWdpc3RlciBudW1iZXIuICBWYWx1ZSBvZiB0aGUgZGF0YQotIAkgYXNzdW1lZCBmb3Ig dGhlIHJlZ2lzdGVyIGlzIGNvbnRhaW5lZCBpbiBEV19BVF9HTlVfY2FsbF9zaXRlX3ZhbHVlLiAg Ki8KLSAKLS0gICAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGNoaWxkX2RpZSwgRFdfQVRfbG9jYXRp b24sIGN1KTsKLS0gICAgICBpZiAoIWF0dHIgfHwgIWF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikp Ci0rICAgICAgbG9jID0gZHdhcmYyX2F0dHIgKGNoaWxkX2RpZSwgRFdfQVRfbG9jYXRpb24sIGN1 KTsKLSsgICAgICBpZiAobG9jID09IE5VTEwgfHwgIWF0dHJfZm9ybV9pc19ibG9jayAobG9jKSkK LSAJewotIAkgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSAJCSAgICAgXygiTm8g RFdfRk9STV9ibG9jayogRFdfQVRfbG9jYXRpb24gZm9yICIKLUBAIC03ODM4LDE5ICs3ODM5LDI2 IEBAIHJlYWRfY2FsbF9zaXRlX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCi0gCQkgICAgIGNoaWxkX2RpZS0+b2Zmc2V0LnNlY3Rfb2ZmLCBvYmpmaWxl LT5uYW1lKTsKLSAJICBjb250aW51ZTsKLSAJfQotLSAgICAgIHBhcmFtZXRlci0+ZHdhcmZfcmVn ID0gZHdhcmZfYmxvY2tfdG9fZHdhcmZfcmVnIChEV19CTE9DSyAoYXR0ciktPmRhdGEsCi0tCQkJ CSAmRFdfQkxPQ0sgKGF0dHIpLT5kYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0pOwotLSAgICAg IGlmIChwYXJhbWV0ZXItPmR3YXJmX3JlZyA9PSAtMQotLQkgICYmICFkd2FyZl9ibG9ja190b19z cF9vZmZzZXQgKGdkYmFyY2gsIERXX0JMT0NLIChhdHRyKS0+ZGF0YSwKLS0JCQkJICAmRFdfQkxP Q0sgKGF0dHIpLT5kYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0sCi0tCQkJCQkmcGFyYW1ldGVy LT5mYl9vZmZzZXQpKQotKyAgICAgIGVsc2UKLSAJewotLQkgIGNvbXBsYWludCAoJnN5bWZpbGVf Y29tcGxhaW50cywKLS0JCSAgICAgXygiT25seSBzaW5nbGUgRFdfT1BfcmVnIG9yIERXX09QX2Zi cmVnIGlzIHN1cHBvcnRlZCAiCi0tCQkgICAgICAgImZvciBEV19GT1JNX2Jsb2NrKiBEV19BVF9s b2NhdGlvbiBmb3IgIgotLQkJICAgICAgICJEV19UQUdfR05VX2NhbGxfc2l0ZSBjaGlsZCBESUUg MHgleCBbaW4gbW9kdWxlICVzXSIpLAotLQkJICAgICBjaGlsZF9kaWUtPm9mZnNldC5zZWN0X29m Ziwgb2JqZmlsZS0+bmFtZSk7Ci0tCSAgY29udGludWU7Ci0rCSAgcGFyYW1ldGVyLT51LmR3YXJm X3JlZyA9IGR3YXJmX2Jsb2NrX3RvX2R3YXJmX3JlZwotKwkgICAgKERXX0JMT0NLIChsb2MpLT5k YXRhLCAmRFdfQkxPQ0sgKGxvYyktPmRhdGFbRFdfQkxPQ0sgKGxvYyktPnNpemVdKTsKLSsJICBp ZiAocGFyYW1ldGVyLT51LmR3YXJmX3JlZyAhPSAtMSkKLSsJICAgIHBhcmFtZXRlci0+a2luZCA9 IENBTExfU0lURV9QQVJBTUVURVJfRFdBUkZfUkVHOwotKwkgIGVsc2UgaWYgKGR3YXJmX2Jsb2Nr X3RvX3NwX29mZnNldCAoZ2RiYXJjaCwgRFdfQkxPQ0sgKGxvYyktPmRhdGEsCi0rCQkJCSAgICAm RFdfQkxPQ0sgKGxvYyktPmRhdGFbRFdfQkxPQ0sgKGxvYyktPnNpemVdLAotKwkJCQkJICAgICAm cGFyYW1ldGVyLT51LmZiX29mZnNldCkpCi0rCSAgICBwYXJhbWV0ZXItPmtpbmQgPSBDQUxMX1NJ VEVfUEFSQU1FVEVSX0ZCX09GRlNFVDsKLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIGNvbXBs YWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCQkgXygiT25seSBzaW5nbGUgRFdfT1BfcmVn IG9yIERXX09QX2ZicmVnIGlzIHN1cHBvcnRlZCAiCi0rCQkJICAgImZvciBEV19GT1JNX2Jsb2Nr KiBEV19BVF9sb2NhdGlvbiBpcyBzdXBwb3J0ZWQgZm9yICIKLSsJCQkgICAiRFdfVEFHX0dOVV9j YWxsX3NpdGUgY2hpbGQgRElFIDB4JXggIgotKwkJCSAgICJbaW4gbW9kdWxlICVzXSIpLAotKwkJ CSBjaGlsZF9kaWUtPm9mZnNldC5zZWN0X29mZiwgb2JqZmlsZS0+bmFtZSk7Ci0rCSAgICAgIGNv bnRpbnVlOwotKwkgICAgfQotIAl9Ci0gCi0gICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChjaGls ZF9kaWUsIERXX0FUX0dOVV9jYWxsX3NpdGVfdmFsdWUsIGN1KTsKLS0tLSBhL2dkYi9nZGJ0eXBl cy5oCi0rKysgYi9nZGIvZ2RidHlwZXMuaAotQEAgLTIzLDYgKzIzLDcgQEAKLSAjZGVmaW5lIEdE QlRZUEVTX0ggMQotIAotICNpbmNsdWRlICJoYXNodGFiLmgiCi0rI2luY2x1ZGUgImR3YXJmMmV4 cHIuaCIKLSAKLSAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyBmb3IgcHJvdG90eXBlcy4gICovCi0g c3RydWN0IGZpZWxkOwotQEAgLTkxNSw2ICs5MTYsMTcgQEAgc3RydWN0IGZ1bmNfdHlwZQotICAg ICBzdHJ1Y3QgY2FsbF9zaXRlICp0YWlsX2NhbGxfbGlzdDsKLSAgIH07Ci0gCi0rLyogc3RydWN0 IGNhbGxfc2l0ZV9wYXJhbWV0ZXIgY2FuIGJlIHJlZmVyZW5jZWQgaW4gY2FsbGVlcyBieSBzZXZl cmFsIHdheXMuICAqLwotKwotK2VudW0gY2FsbF9zaXRlX3BhcmFtZXRlcl9raW5kCi0rewotKyAg LyogVXNlIGZpZWxkIGNhbGxfc2l0ZV9wYXJhbWV0ZXIudS5kd2FyZl9yZWcuICAqLwotKyAgQ0FM TF9TSVRFX1BBUkFNRVRFUl9EV0FSRl9SRUcsCi0rCi0rICAvKiBVc2UgZmllbGQgY2FsbF9zaXRl X3BhcmFtZXRlci51LmZiX29mZnNldC4gICovCi0rICBDQUxMX1NJVEVfUEFSQU1FVEVSX0ZCX09G RlNFVAotK307Ci0rCi0gLyogQSBwbGFjZSB3aGVyZSBhIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGZy b20sIHJlcHJlc2VudGVkIGJ5Ci0gICAgRFdfVEFHX0dOVV9jYWxsX3NpdGUuICBJdCBjYW4gYmUg bG9va2VkIHVwIGZyb20gc3ltdGFiLT5jYWxsX3NpdGVfaHRhYi4gICovCi0gCi1AQCAtOTQ4LDE1 ICs5NjAsMTkgQEAgc3RydWN0IGNhbGxfc2l0ZQotICAgICAvKiBEZXNjcmliZSBEV19UQUdfR05V X2NhbGxfc2l0ZSdzIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyLiAgKi8KLSAgICAgc3RydWN0IGNh bGxfc2l0ZV9wYXJhbWV0ZXIKLSAgICAgICB7Ci0tCS8qIERXX1RBR19mb3JtYWxfcGFyYW1ldGVy J3MgRFdfQVRfbG9jYXRpb24ncyBEV19PUF9yZWdYIGFzIERXQVJGCi0tCSAgIHJlZ2lzdGVyIG51 bWJlciwgZm9yIHJlZ2lzdGVyIHBhc3NlZCBwYXJhbWV0ZXJzLiAgSWYgLTEgdGhlbiB1c2UKLS0J ICAgZmJfb2Zmc2V0LiAgKi8KLS0JaW50IGR3YXJmX3JlZzsKLS0KLS0JLyogT2Zmc2V0IGZyb20g dGhlIGNhbGxlZSdzIGZyYW1lIGJhc2UsIGZvciBzdGFjayBwYXNzZWQgcGFyYW1ldGVycy4KLS0J ICAgVGhpcyBlcXVhbHMgb2Zmc2V0IGZyb20gdGhlIGNhbGxlcidzIHN0YWNrIHBvaW50ZXIuICBW YWxpZCBvbmx5IGlmCi0tCSAgIERXQVJGX1JFR05VTSBpcyAtMS4gICovCi0tCUNPUkVfQUREUiBm Yl9vZmZzZXQ7Ci0rCUVOVU1fQklURklFTEQgKGNhbGxfc2l0ZV9wYXJhbWV0ZXJfa2luZCkga2lu ZCA6IDI7Ci0rCi0rCXVuaW9uIGNhbGxfc2l0ZV9wYXJhbWV0ZXJfdQotKwkgIHsKLSsJICAgIC8q IERXX1RBR19mb3JtYWxfcGFyYW1ldGVyJ3MgRFdfQVRfbG9jYXRpb24ncyBEV19PUF9yZWdYIGFz IERXQVJGCi0rCSAgICAgICByZWdpc3RlciBudW1iZXIsIGZvciByZWdpc3RlciBwYXNzZWQgcGFy YW1ldGVycy4gICovCi0rCSAgICBpbnQgZHdhcmZfcmVnOwotKwotKwkgICAgLyogT2Zmc2V0IGZy b20gdGhlIGNhbGxlZSdzIGZyYW1lIGJhc2UsIGZvciBzdGFjayBwYXNzZWQgcGFyYW1ldGVycy4K LSsJICAgICAgIFRoaXMgZXF1YWxzIG9mZnNldCBmcm9tIHRoZSBjYWxsZXIncyBzdGFjayBwb2lu dGVyLiAgKi8KLSsJICAgIENPUkVfQUREUiBmYl9vZmZzZXQ7Ci0rCSAgfQotKwl1OwotIAotIAkv KiBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcidzIERXX0FUX0dOVV9jYWxsX3NpdGVfdmFsdWUuICBJ dCBpcyBuZXZlcgotIAkgICBOVUxMLiAgKi8KLQoKZGlmZiAtLWdpdCBhL2dkYi1wYXJhbWV0ZXJy ZWYtMm9mMi5wYXRjaCBiL2dkYi1wYXJhbWV0ZXJyZWYtMm9mMi5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggODVlMzdhZi4uMDAwMDAwMAotLS0gYS9nZGItcGFyYW1ldGVycmVm LTJvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NjQgKzAsMCBAQAotaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDYvbXNnMDA0NTkuaHRtbAotU3ViamVjdDog W3BhdGNoIDIvMl0gU3VwcG9ydCBnY2MtNC43IERXX09QX0dOVV9wYXJhbWV0ZXJfcmVmCi0KLUhp LAotCi10aGlzIGFkZC1vbiB0byBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS5leHAgaGFzIGJl ZW4gc29tZWhvdyBmb3Jnb3R0ZW46Ci0JW1BBVENIXSBJbXByb3ZlIGRlYnVnIGluZm8gZm9yIElQ QS1TUkEgb3B0aW1pemVkIGNvZGUgLSBhZGQgRFdfT1BfR05VX3BhcmFtZXRlcl9yZWYgc3VwcG9y dCAoUFIgZGVidWcvNDc4NTgpCi0JaHR0cDovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIw MTEtMDYvbXNnMDA2NDkuaHRtbAotCi1BbmQgZm9yIGdjYy00LjcrIC1PMiAtZyBjb2RlIEdEQiBt YXkgcHJpbnQgKGluc3RlYWQgb2YgdGhlIGNhbGN1bGF0ZWQgdmFsdWUpOgotCShnZGIpIHAgeQot CVVuaGFuZGxlZCBkd2FyZiBleHByZXNzaW9uIG9wY29kZSAweGZhCi0KLVRoZSBzdXBwb3J0IGlz IHByZXR0eSBzaW1wbGUsIHRoZXJlIGlzIGp1c3Qgbm93IHRoaXJkIGtpbmQgb2YgYmluZGluZyBi ZXR3ZWVuCi1jYWxsZXJzIGFuZCBjYWxsZWVzIHBhcmFtZXRlciB2YWx1ZXMuCi0KLU5vIHJlZ3Jl c3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRvcmExNy1saW51eC1nbnUuCi0K LQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMi0wNi0xNCAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBkd2FyZjJleHByLmMgKGV4ZWN1dGVfc3Rh Y2tfb3ApOiBTdXBwb3J0IERXX09QX0dOVV9wYXJhbWV0ZXJfcmVmLgotCSogZHdhcmYybG9jLmMg KGNhbGxfc2l0ZV9wYXJhbWV0ZXJfbWF0Y2hlcyk6IFN1cHBvcnQKLQlDQUxMX1NJVEVfUEFSQU1F VEVSX1BBUkFNX09GRlNFVC4KLQkobmVlZHNfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlKTogUHVzaCBz dHViIHZhbHVlLgotCSogZHdhcmYycmVhZC5jIChyZWFkX2NhbGxfc2l0ZV9zY29wZSk6IE5ldyB2 YXJpYWJsZSBvcmlnaW4uICBTdXBwb3J0Ci0JQ0FMTF9TSVRFX1BBUkFNRVRFUl9QQVJBTV9PRkZT RVQgYW5kIGl0cyBEV19BVF9hYnN0cmFjdF9vcmlnaW4uCi0JKiBnZGJ0eXBlcy5oIChlbnVtIGNh bGxfc2l0ZV9wYXJhbWV0ZXJfa2luZCk6IE5ldyBpdGVtCi0JQ0FMTF9TSVRFX1BBUkFNRVRFUl9Q QVJBTV9PRkZTRVQuCi0JKHN0cnVjdCBjYWxsX3NpdGUucGFyYW1ldGVyLnUpOiBOZXcgZmllbGQg cGFyYW1fb2Zmc2V0LgotCi1nZGIvdGVzdHN1aXRlLwotMjAxMi0wNi0xNCAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuYXJjaC9hbWQ2NC1lbnRy eS12YWx1ZS1wYXJhbS5TOiBOZXcgZmlsZS4KLQkqIGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVl LXBhcmFtLmM6IE5ldyBmaWxlLgotCSogZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtcGFyYW0u ZXhwOiBOZXcgZmlsZS4KLQotLS0tIGEvZ2RiL2R3YXJmMmV4cHIuYwotKysrIGIvZ2RiL2R3YXJm MmV4cHIuYwotQEAgLTEzOTIsNiArMTM5MiwyMSBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1Y3Qg ZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCi0gCQkgICAgICJvciBmb3IgRFdfT1BfYnJlZyooMCkr RFdfT1BfZGVyZWYqIikpOwotIAkgIH0KLSAKLSsJY2FzZSBEV19PUF9HTlVfcGFyYW1ldGVyX3Jl ZjoKLSsJICB7Ci0rCSAgICBjdV9vZmZzZXQgb2Zmc2V0OwotKwkgICAgdW5pb24gY2FsbF9zaXRl X3BhcmFtZXRlcl91IGtpbmRfdTsKLSsKLSsJICAgIGtpbmRfdS5wYXJhbV9vZmZzZXQuY3Vfb2Zm ID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChvcF9wdHIsIDQsCi0rCQkJCQkJCQkgICBieXRl X29yZGVyKTsKLSsJICAgIG9wX3B0ciArPSA0OwotKwkgICAgY3R4LT5mdW5jcy0+cHVzaF9kd2Fy Zl9yZWdfZW50cnlfdmFsdWUgKGN0eCwKLSsJCQkJCSAgICAgICBDQUxMX1NJVEVfUEFSQU1FVEVS X1BBUkFNX09GRlNFVCwKLSsJCQkJCQkgICAga2luZF91LAotKwkJCQkJCSAgICAtMSAvKiBkZXJl Zl9zaXplICovKTsKLSsJICB9Ci0rCSAgZ290byBub19wdXNoOwotKwotIAljYXNlIERXX09QX0dO VV9jb25zdF90eXBlOgotIAkgIHsKLSAJICAgIGN1X29mZnNldCB0eXBlX2RpZTsKLS0tLSBhL2dk Yi9kd2FyZjJsb2MuYwotKysrIGIvZ2RiL2R3YXJmMmxvYy5jCi1AQCAtOTQzLDYgKzk0Myw4IEBA IGNhbGxfc2l0ZV9wYXJhbWV0ZXJfbWF0Y2hlcyAoc3RydWN0IGNhbGxfc2l0ZV9wYXJhbWV0ZXIg KnBhcmFtZXRlciwKLSAJcmV0dXJuIGtpbmRfdS5kd2FyZl9yZWcgPT0gcGFyYW1ldGVyLT51LmR3 YXJmX3JlZzsKLSAgICAgICBjYXNlIENBTExfU0lURV9QQVJBTUVURVJfRkJfT0ZGU0VUOgotIAly ZXR1cm4ga2luZF91LmZiX29mZnNldCA9PSBwYXJhbWV0ZXItPnUuZmJfb2Zmc2V0OwotKyAgICAg IGNhc2UgQ0FMTF9TSVRFX1BBUkFNRVRFUl9QQVJBTV9PRkZTRVQ6Ci0rCXJldHVybiBraW5kX3Uu cGFyYW1fb2Zmc2V0LmN1X29mZiA9PSBwYXJhbWV0ZXItPnUucGFyYW1fb2Zmc2V0LmN1X29mZjsK LSAgICAgICB9Ci0gICByZXR1cm4gMDsKLSB9Ci1AQCAtMjM3OCw2ICsyMzgwLDkgQEAgbmVlZHNf ZHdhcmZfcmVnX2VudHJ5X3ZhbHVlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCi0g ICBzdHJ1Y3QgbmVlZHNfZnJhbWVfYmF0b24gKm5mX2JhdG9uID0gY3R4LT5iYXRvbjsKLSAKLSAg IG5mX2JhdG9uLT5uZWVkc19mcmFtZSA9IDE7Ci0rCi0rICAvKiBUaGUgZXhwcmVzc2lvbiBtYXkg cmVxdWlyZSBzb21lIHN0dWIgdmFsdWVzIG9uIERXQVJGIHN0YWNrLiAgKi8KLSsgIGR3YXJmX2V4 cHJfcHVzaF9hZGRyZXNzIChjdHgsIDAsIDApOwotIH0KLSAKLSAvKiBEV19PUF9HTlVfYWRkcl9p bmRleCBkb2Vzbid0IHJlcXVpcmUgYSBmcmFtZS4gICovCi0tLS0gYS9nZGIvZHdhcmYycmVhZC5j Ci0rKysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAtNzgxNiw3ICs3ODE2LDcgQEAgcmVhZF9jYWxs X3NpdGVfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK LSAgICAgICAgY2hpbGRfZGllID0gc2libGluZ19kaWUgKGNoaWxkX2RpZSkpCi0gICAgIHsKLSAg ICAgICBzdHJ1Y3QgY2FsbF9zaXRlX3BhcmFtZXRlciAqcGFyYW1ldGVyOwotLSAgICAgIHN0cnVj dCBhdHRyaWJ1dGUgKmxvYzsKLSsgICAgICBzdHJ1Y3QgYXR0cmlidXRlICpsb2MsICpvcmlnaW47 Ci0gCi0gICAgICAgaWYgKGNoaWxkX2RpZS0+dGFnICE9IERXX1RBR19HTlVfY2FsbF9zaXRlX3Bh cmFtZXRlcikKLSAJewotQEAgLTc4MjcsMTEgKzc4MjcsMjMgQEAgcmVhZF9jYWxsX3NpdGVfc2Nv cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICBn ZGJfYXNzZXJ0IChjYWxsX3NpdGUtPnBhcmFtZXRlcl9jb3VudCA8IG5wYXJhbXMpOwotICAgICAg IHBhcmFtZXRlciA9ICZjYWxsX3NpdGUtPnBhcmFtZXRlcltjYWxsX3NpdGUtPnBhcmFtZXRlcl9j b3VudF07Ci0gCi0tICAgICAgLyogRFdfQVRfbG9jYXRpb24gc3BlY2lmaWVzIHRoZSByZWdpc3Rl ciBudW1iZXIuICBWYWx1ZSBvZiB0aGUgZGF0YQotLQkgYXNzdW1lZCBmb3IgdGhlIHJlZ2lzdGVy IGlzIGNvbnRhaW5lZCBpbiBEV19BVF9HTlVfY2FsbF9zaXRlX3ZhbHVlLiAgKi8KLSsgICAgICAv KiBEV19BVF9sb2NhdGlvbiBzcGVjaWZpZXMgdGhlIHJlZ2lzdGVyIG51bWJlciBvciBEV19BVF9h YnN0cmFjdF9vcmlnaW4KLSsJIHNwZWNpZmllcyBEV19UQUdfZm9ybWFsX3BhcmFtZXRlci4gIFZh bHVlIG9mIHRoZSBkYXRhIGFzc3VtZWQgZm9yIHRoZQotKwkgcmVnaXN0ZXIgaXMgY29udGFpbmVk IGluIERXX0FUX0dOVV9jYWxsX3NpdGVfdmFsdWUuICAqLwotIAotICAgICAgIGxvYyA9IGR3YXJm Ml9hdHRyIChjaGlsZF9kaWUsIERXX0FUX2xvY2F0aW9uLCBjdSk7Ci0tICAgICAgaWYgKGxvYyA9 PSBOVUxMIHx8ICFhdHRyX2Zvcm1faXNfYmxvY2sgKGxvYykpCi0rICAgICAgb3JpZ2luID0gZHdh cmYyX2F0dHIgKGNoaWxkX2RpZSwgRFdfQVRfYWJzdHJhY3Rfb3JpZ2luLCBjdSk7Ci0rICAgICAg aWYgKGxvYyA9PSBOVUxMICYmIG9yaWdpbiAhPSBOVUxMICYmIGlzX3JlZl9hdHRyIChvcmlnaW4p KQotKwl7Ci0rCSAgc2VjdF9vZmZzZXQgb2Zmc2V0OwotKwotKwkgIHBhcmFtZXRlci0+a2luZCA9 IENBTExfU0lURV9QQVJBTUVURVJfUEFSQU1fT0ZGU0VUOwotKwkgIG9mZnNldCA9IGR3YXJmMl9n ZXRfcmVmX2RpZV9vZmZzZXQgKG9yaWdpbik7Ci0rCSAgZ2RiX2Fzc2VydCAob2Zmc2V0LnNlY3Rf b2ZmID49IGN1LT5oZWFkZXIub2Zmc2V0LnNlY3Rfb2ZmKTsKLSsJICBwYXJhbWV0ZXItPnUucGFy YW1fb2Zmc2V0LmN1X29mZiA9IChvZmZzZXQuc2VjdF9vZmYKLSsJICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtIGN1LT5oZWFkZXIub2Zmc2V0LnNlY3Rfb2ZmKTsKLSsJfQot KyAgICAgIGVsc2UgaWYgKGxvYyA9PSBOVUxMIHx8IG9yaWdpbiAhPSBOVUxMIHx8ICFhdHRyX2Zv cm1faXNfYmxvY2sgKGxvYykpCi0gCXsKLSAJICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWlu dHMsCi0gCQkgICAgIF8oIk5vIERXX0ZPUk1fYmxvY2sqIERXX0FUX2xvY2F0aW9uIGZvciAiCi0t LS0gYS9nZGIvZ2RidHlwZXMuaAotKysrIGIvZ2RiL2dkYnR5cGVzLmgKLUBAIC05MjQsNyArOTI0 LDEwIEBAIGVudW0gY2FsbF9zaXRlX3BhcmFtZXRlcl9raW5kCi0gICBDQUxMX1NJVEVfUEFSQU1F VEVSX0RXQVJGX1JFRywKLSAKLSAgIC8qIFVzZSBmaWVsZCBjYWxsX3NpdGVfcGFyYW1ldGVyLnUu ZmJfb2Zmc2V0LiAgKi8KLS0gIENBTExfU0lURV9QQVJBTUVURVJfRkJfT0ZGU0VUCi0rICBDQUxM X1NJVEVfUEFSQU1FVEVSX0ZCX09GRlNFVCwKLSsKLSsgIC8qIFVzZSBmaWVsZCBjYWxsX3NpdGVf cGFyYW1ldGVyLnUucGFyYW1fb2Zmc2V0LiAgKi8KLSsgIENBTExfU0lURV9QQVJBTUVURVJfUEFS QU1fT0ZGU0VUCi0gfTsKLSAKLSAvKiBBIHBsYWNlIHdoZXJlIGEgZnVuY3Rpb24gZ2V0cyBjYWxs ZWQgZnJvbSwgcmVwcmVzZW50ZWQgYnkKLUBAIC05NzEsNiArOTc0LDExIEBAIHN0cnVjdCBjYWxs X3NpdGUKLSAJICAgIC8qIE9mZnNldCBmcm9tIHRoZSBjYWxsZWUncyBmcmFtZSBiYXNlLCBmb3Ig c3RhY2sgcGFzc2VkIHBhcmFtZXRlcnMuCi0gCSAgICAgICBUaGlzIGVxdWFscyBvZmZzZXQgZnJv bSB0aGUgY2FsbGVyJ3Mgc3RhY2sgcG9pbnRlci4gICovCi0gCSAgICBDT1JFX0FERFIgZmJfb2Zm c2V0OwotKwotKwkgICAgLyogT2Zmc2V0IHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGlzIFBF Ul9DVSB0bwotKwkgICAgICAgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIgd2hpY2ggaXMgcmVmZXJl bmNlZCBieSBib3RoIGNhbGxlciBhbmQKLSsJICAgICAgIHRoZSBjYWxsZWUuICAqLwotKwkgICAg Y3Vfb2Zmc2V0IHBhcmFtX29mZnNldDsKLSAJICB9Ci0gCXU7Ci0gCi0tLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFtLlMKLUBA IC0wLDAgKzEsNjExIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdO VSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0r Ci0rLyogVGhpcyBmaWxlIGlzIGNvbXBpbGVkIGZyb20gZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFs dWUtcGFyYW0uYwotKyAgIHVzaW5nIC1nIC1kQSAtUyAtTzIuICAqLwotKwotKwkuZmlsZQkiYW1k NjQtZW50cnktdmFsdWUtcGFyYW0uYyIKLSsJLnRleHQKLSsuTHRleHQwOgotKwkucDJhbGlnbiA0 LCwxNQotKwkudHlwZQlmb28uaXNyYS4wLmNvbnN0cHJvcC4yLCBAZnVuY3Rpb24KLStmb28uaXNy YS4wLmNvbnN0cHJvcC4yOgotKy5MRkI0OgotKwkuZmlsZSAxICJnZGIuYXJjaC9hbWQ2NC1lbnRy eS12YWx1ZS1wYXJhbS5jIgotKwkvKiBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJhbS5j OjIxICovCi0rCS5sb2MgMSAyMSAwCi0rCS5jZmlfc3RhcnRwcm9jCi0rLkxWTDA6Ci0rLyogQkxP Q0sgMiBmcmVxOjEwMDAwIHNlcTowICovCi0rLyogUFJFRDogRU5UUlkgWzEwMC4wJV0gIChmYWxs dGhydSkgKi8KLSsJLyogZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtcGFyYW0uYzoyNiAqLwot KwkubG9jIDEgMjYgMAotKwltb3ZsCXZ2KCVyaXApLCAlZWF4Ci0rCWFkZGwJJDEsICVlYXgKLSsJ bW92bAklZWF4LCB2diglcmlwKQotKwkvKiBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJh bS5jOjI3ICovCi0rCS5sb2MgMSAyNyAwCi0rCWxlYWwJMyglcmRpKSwgJWVheAotKy8qIFNVQ0M6 IEVYSVQgWzEwMC4wJV0gICovCi0rCS8qIGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFt LmM6MjggKi8KLSsJLmxvYyAxIDI4IDAKLSsJcmV0Ci0rCS5jZmlfZW5kcHJvYwotKy5MRkU0Ogot Kwkuc2l6ZQlmb28uaXNyYS4wLmNvbnN0cHJvcC4yLCAuLWZvby5pc3JhLjAuY29uc3Rwcm9wLjIK LSsJLnAyYWxpZ24gNCwsMTUKLSsJLnR5cGUJYmFyLmNvbnN0cHJvcC4xLCBAZnVuY3Rpb24KLSti YXIuY29uc3Rwcm9wLjE6Ci0rLkxGQjU6Ci0rCS8qIGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVl LXBhcmFtLmM6MzEgKi8KLSsJLmxvYyAxIDMxIDAKLSsJLmNmaV9zdGFydHByb2MKLSsvKiBCTE9D SyAyIGZyZXE6MTAwMDAgc2VxOjAgKi8KLSsvKiBQUkVEOiBFTlRSWSBbMTAwLjAlXSAgKGZhbGx0 aHJ1KSAqLwotKy5MVkwxOgotKwlwdXNocQklcmJ4Ci0rLkxDRkkwOgotKwkuY2ZpX2RlZl9jZmFf b2Zmc2V0IDE2Ci0rCS5jZmlfb2Zmc2V0IDMsIC0xNgotKwkvKiBnZGIuYXJjaC9hbWQ2NC1lbnRy eS12YWx1ZS1wYXJhbS5jOjMzICovCi0rCS5sb2MgMSAzMyAwCi0rCW1vdmwJJDEwLCAlZWRpCi0r CWNhbGwJZm9vLmlzcmEuMC5jb25zdHByb3AuMgotKy5MVkwyOgotKwltb3ZsCSQxMCwgJWVkaQot Kwltb3ZsCSVlYXgsICVlYngKLSsJY2FsbAlmb28uaXNyYS4wLmNvbnN0cHJvcC4yCi0rLkxWTDM6 Ci0rCW1vdmwJJDE2LCAlZWRpCi0rCWFkZGwJJWVheCwgJWVieAotKwljYWxsCWZvby5pc3JhLjAu Y29uc3Rwcm9wLjIKLSsuTFZMNDoKLSsJbGVhbAkxMCglcmJ4LCVyYXgpLCAlZWF4Ci0rCS8qIGdk Yi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFtLmM6MzQgKi8KLSsJLmxvYyAxIDM0IDAKLSsJ cG9wcQklcmJ4Ci0rLkxDRkkxOgotKwkuY2ZpX2RlZl9jZmFfb2Zmc2V0IDgKLSsvKiBTVUNDOiBF WElUIFsxMDAuMCVdICAqLwotKwlyZXQKLSsJLmNmaV9lbmRwcm9jCi0rLkxGRTU6Ci0rCS5zaXpl CWJhci5jb25zdHByb3AuMSwgLi1iYXIuY29uc3Rwcm9wLjEKLSsJLnNlY3Rpb24JLnRleHQuc3Rh cnR1cCwiYXgiLEBwcm9nYml0cwotKwkucDJhbGlnbiA0LCwxNQotKwkuZ2xvYmwJbWFpbgotKwku dHlwZQltYWluLCBAZnVuY3Rpb24KLSttYWluOgotKy5MRkIyOgotKwkvKiBnZGIuYXJjaC9hbWQ2 NC1lbnRyeS12YWx1ZS1wYXJhbS5jOjM4ICovCi0rCS5sb2MgMSAzOCAwCi0rCS5jZmlfc3RhcnRw cm9jCi0rLyogQkxPQ0sgMiBmcmVxOjEwMDAwIHNlcTowICovCi0rLyogUFJFRDogRU5UUlkgWzEw MC4wJV0gIChmYWxsdGhydSkgKi8KLSsJLyogZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtcGFy YW0uYzozOSAqLwotKwkubG9jIDEgMzkgMAotKwlqbXAJYmFyLmNvbnN0cHJvcC4xCi0rLyogU1VD QzogRVhJVCBbMTAwLjAlXSAgKGFiLHNpYmNhbGwpICovCi0rLkxWTDU6Ci0rCS5jZmlfZW5kcHJv YwotKy5MRkUyOgotKwkuc2l6ZQltYWluLCAuLW1haW4KLSsJLmNvbW0JdnYsNCw0Ci0rCS50ZXh0 Ci0rLkxldGV4dDA6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZvLCIiLEBwcm9nYml0cwotKy5MZGVi dWdfaW5mbzA6Ci0rCS40Ynl0ZQkweDFiNwkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCBJ bmZvICovCi0rCS4yYnl0ZQkweDIJLyogRFdBUkYgdmVyc2lvbiBudW1iZXIgKi8KLSsJLjRieXRl CS5MZGVidWdfYWJicmV2MAkvKiBPZmZzZXQgSW50byBBYmJyZXYuIFNlY3Rpb24gKi8KLSsJLmJ5 dGUJMHg4CS8qIFBvaW50ZXIgU2l6ZSAoaW4gYnl0ZXMpICovCi0rCS51bGViMTI4IDB4MQkvKiAo RElFICgweGIpIERXX1RBR19jb21waWxlX3VuaXQpICovCi0rCS40Ynl0ZQkuTEFTRjAJLyogRFdf QVRfcHJvZHVjZXI6ICJHTlUgQyA0LjcuMSAyMDEyMDYxMiAocHJlcmVsZWFzZSkiICovCi0rCS5i eXRlCTB4MQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwkuNGJ5dGUJLkxBU0YxCS8qIERXX0FUX25h bWU6ICJnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJhbS5jIiAqLwotKwkuNGJ5dGUJLkxB U0YyCS8qIERXX0FUX2NvbXBfZGlyOiAiIiAqLwotKwkuNGJ5dGUJLkxkZWJ1Z19yYW5nZXMwKzAJ LyogRFdfQVRfcmFuZ2VzICovCi0rCS5xdWFkCTAJLyogRFdfQVRfbG93X3BjICovCi0rCS5xdWFk CTAJLyogRFdfQVRfZW50cnlfcGMgKi8KLSsJLjRieXRlCS5MZGVidWdfbGluZTAJLyogRFdfQVRf c3RtdF9saXN0ICovCi0rCS51bGViMTI4IDB4MgkvKiAoRElFICgweDMxKSBEV19UQUdfc3VicHJv Z3JhbSkgKi8KLSsJLmFzY2lpICJmb29cMCIJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkweDEJ LyogRFdfQVRfZGVjbF9maWxlIChnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJhbS5jKSAq LwotKwkuYnl0ZQkweDE1CS8qIERXX0FUX2RlY2xfbGluZSAqLwotKwkuYnl0ZQkweDEJLyogRFdf QVRfcHJvdG90eXBlZCAqLwotKwkuNGJ5dGUJMHg3OQkvKiBEV19BVF90eXBlICovCi0rCS5ieXRl CTAJLyogRFdfQVRfaW5saW5lICovCi0rCS40Ynl0ZQkweDc5CS8qIERXX0FUX3NpYmxpbmcgKi8K LSsJLnVsZWIxMjggMHgzCS8qIChESUUgKDB4NDIpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKSAq LwotKwkuYXNjaWkgInhcMCIJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRf ZGVjbF9maWxlIChnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJhbS5jKSAqLwotKwkuYnl0 ZQkweDE1CS8qIERXX0FUX2RlY2xfbGluZSAqLwotKwkuNGJ5dGUJMHg3OQkvKiBEV19BVF90eXBl ICovCi0rCS51bGViMTI4IDB4MwkvKiAoRElFICgweDRiKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRl cikgKi8KLSsJLmFzY2lpICJ5XDAiCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJMHgxCS8qIERX X0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtcGFyYW0uYykgKi8KLSsJ LmJ5dGUJMHgxNQkvKiBEV19BVF9kZWNsX2xpbmUgKi8KLSsJLjRieXRlCTB4NzkJLyogRFdfQVRf dHlwZSAqLwotKwkudWxlYjEyOCAweDMJLyogKERJRSAoMHg1NCkgRFdfVEFHX2Zvcm1hbF9wYXJh bWV0ZXIpICovCi0rCS5hc2NpaSAielwwIgkvKiBEV19BVF9uYW1lICovCi0rCS5ieXRlCTB4MQkv KiBEV19BVF9kZWNsX2ZpbGUgKGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFtLmMpICov Ci0rCS5ieXRlCTB4MTUJLyogRFdfQVRfZGVjbF9saW5lICovCi0rCS40Ynl0ZQkweDc5CS8qIERX X0FUX3R5cGUgKi8KLSsJLnVsZWIxMjggMHg0CS8qIChESUUgKDB4NWQpIERXX1RBR192YXJpYWJs ZSkgKi8KLSsJLmFzY2lpICJhXDAiCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJMHgxCS8qIERX X0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtcGFyYW0uYykgKi8KLSsJ LmJ5dGUJMHgxNwkvKiBEV19BVF9kZWNsX2xpbmUgKi8KLSsJLjRieXRlCTB4NzkJLyogRFdfQVRf dHlwZSAqLwotKwkudWxlYjEyOCAweDQJLyogKERJRSAoMHg2NikgRFdfVEFHX3ZhcmlhYmxlKSAq LwotKwkuYXNjaWkgImJcMCIJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRf ZGVjbF9maWxlIChnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJhbS5jKSAqLwotKwkuYnl0 ZQkweDE4CS8qIERXX0FUX2RlY2xfbGluZSAqLwotKwkuNGJ5dGUJMHg3OQkvKiBEV19BVF90eXBl ICovCi0rCS51bGViMTI4IDB4NAkvKiAoRElFICgweDZmKSBEV19UQUdfdmFyaWFibGUpICovCi0r CS5hc2NpaSAiY1wwIgkvKiBEV19BVF9uYW1lICovCi0rCS5ieXRlCTB4MQkvKiBEV19BVF9kZWNs X2ZpbGUgKGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFtLmMpICovCi0rCS5ieXRlCTB4 MTkJLyogRFdfQVRfZGVjbF9saW5lICovCi0rCS40Ynl0ZQkweDc5CS8qIERXX0FUX3R5cGUgKi8K LSsJLmJ5dGUJMAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MzEgKi8KLSsJLnVsZWIxMjgg MHg1CS8qIChESUUgKDB4NzkpIERXX1RBR19iYXNlX3R5cGUpICovCi0rCS5ieXRlCTB4NAkvKiBE V19BVF9ieXRlX3NpemUgKi8KLSsJLmJ5dGUJMHg1CS8qIERXX0FUX2VuY29kaW5nICovCi0rCS5h c2NpaSAiaW50XDAiCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjggMHgyCS8qIChESUUgKDB4 ODApIERXX1RBR19zdWJwcm9ncmFtKSAqLwotKwkuYXNjaWkgImJhclwwIgkvKiBEV19BVF9uYW1l ICovCi0rCS5ieXRlCTB4MQkvKiBEV19BVF9kZWNsX2ZpbGUgKGdkYi5hcmNoL2FtZDY0LWVudHJ5 LXZhbHVlLXBhcmFtLmMpICovCi0rCS5ieXRlCTB4MWYJLyogRFdfQVRfZGVjbF9saW5lICovCi0r CS5ieXRlCTB4MQkvKiBEV19BVF9wcm90b3R5cGVkICovCi0rCS40Ynl0ZQkweDc5CS8qIERXX0FU X3R5cGUgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX0FUX2lubGluZSAqLwotKwkuNGJ5dGUJMHg5Ygkv KiBEV19BVF9zaWJsaW5nICovCi0rCS51bGViMTI4IDB4MwkvKiAoRElFICgweDkxKSBEV19UQUdf Zm9ybWFsX3BhcmFtZXRlcikgKi8KLSsJLmFzY2lpICJ4XDAiCS8qIERXX0FUX25hbWUgKi8KLSsJ LmJ5dGUJMHgxCS8qIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUt cGFyYW0uYykgKi8KLSsJLmJ5dGUJMHgxZgkvKiBEV19BVF9kZWNsX2xpbmUgKi8KLSsJLjRieXRl CTB4NzkJLyogRFdfQVRfdHlwZSAqLwotKwkuYnl0ZQkwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBE SUUgMHg4MCAqLwotKwkudWxlYjEyOCAweDYJLyogKERJRSAoMHg5YikgRFdfVEFHX3N1YnByb2dy YW0pICovCi0rCS40Ynl0ZQkweDMxCS8qIERXX0FUX2Fic3RyYWN0X29yaWdpbiAqLwotKwkucXVh ZAkuTEZCNAkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLnF1YWQJLkxGRTQJLyogRFdfQVRfaGlnaF9w YyAqLwotKwkuYnl0ZQkweDIJLyogRFdfQVRfZnJhbWVfYmFzZSAqLwotKwkuYnl0ZQkweDc3CS8q IERXX09QX2JyZWc3ICovCi0rCS5zbGViMTI4IDgKLSsJLmJ5dGUJMHgxCS8qIERXX0FUX0dOVV9h bGxfY2FsbF9zaXRlcyAqLwotKwkuNGJ5dGUJMHhmMQkvKiBEV19BVF9zaWJsaW5nICovCi0rCS51 bGViMTI4IDB4NwkvKiAoRElFICgweGI4KSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikgKi8KLSsJ LjRieXRlCTB4NDIJLyogRFdfQVRfYWJzdHJhY3Rfb3JpZ2luICovCi0rCS5ieXRlCTB4MQkvKiBE V19BVF9sb2NhdGlvbiAqLwotKwkuYnl0ZQkweDU1CS8qIERXX09QX3JlZzUgKi8KLSsJLnVsZWIx MjggMHg3CS8qIChESUUgKDB4YmYpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKSAqLwotKwkuNGJ5 dGUJMHg0YgkvKiBEV19BVF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJLmJ5dGUJMHg2CS8qIERXX0FU X2xvY2F0aW9uICovCi0rCS5ieXRlCTB4ZmEJLyogRFdfT1BfR05VX3BhcmFtZXRlcl9yZWYgKi8K LSsJLjRieXRlCTB4NGIKLSsJLmJ5dGUJMHg5ZgkvKiBEV19PUF9zdGFja192YWx1ZSAqLwotKwku dWxlYjEyOCAweDgJLyogKERJRSAoMHhjYikgRFdfVEFHX3ZhcmlhYmxlKSAqLwotKwkuNGJ5dGUJ MHg1ZAkvKiBEV19BVF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJLmJ5dGUJMHg1CS8qIERXX0FUX2xv Y2F0aW9uICovCi0rCS5ieXRlCTB4NzUJLyogRFdfT1BfYnJlZzUgKi8KLSsJLnNsZWIxMjggMAot KwkuYnl0ZQkweDMxCS8qIERXX09QX2xpdDEgKi8KLSsJLmJ5dGUJMHgyNAkvKiBEV19PUF9zaGwg Ki8KLSsJLmJ5dGUJMHg5ZgkvKiBEV19PUF9zdGFja192YWx1ZSAqLwotKwkudWxlYjEyOCAweDgJ LyogKERJRSAoMHhkNikgRFdfVEFHX3ZhcmlhYmxlKSAqLwotKwkuNGJ5dGUJMHg2NgkvKiBEV19B VF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJLmJ5dGUJMHg4CS8qIERXX0FUX2xvY2F0aW9uICovCi0r CS5ieXRlCTB4ZmEJLyogRFdfT1BfR05VX3BhcmFtZXRlcl9yZWYgKi8KLSsJLjRieXRlCTB4NGIK LSsJLmJ5dGUJMHgzMQkvKiBEV19PUF9saXQxICovCi0rCS5ieXRlCTB4MjQJLyogRFdfT1Bfc2hs ICovCi0rCS5ieXRlCTB4OWYJLyogRFdfT1Bfc3RhY2tfdmFsdWUgKi8KLSsJLnVsZWIxMjggMHg5 CS8qIChESUUgKDB4ZTQpIERXX1RBR192YXJpYWJsZSkgKi8KLSsJLjRieXRlCTB4NmYJLyogRFdf QVRfYWJzdHJhY3Rfb3JpZ2luICovCi0rCS5ieXRlCTB4NgkvKiBEV19BVF9jb25zdF92YWx1ZSAq LwotKwkudWxlYjEyOCAweGEJLyogKERJRSAoMHhlYSkgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIp ICovCi0rCS40Ynl0ZQkweDU0CS8qIERXX0FUX2Fic3RyYWN0X29yaWdpbiAqLwotKwkuYnl0ZQkw eDMJLyogRFdfQVRfY29uc3RfdmFsdWUgKi8KLSsJLmJ5dGUJMAkvKiBlbmQgb2YgY2hpbGRyZW4g b2YgRElFIDB4OWIgKi8KLSsJLnVsZWIxMjggMHhiCS8qIChESUUgKDB4ZjEpIERXX1RBR19zdWJw cm9ncmFtKSAqLwotKwkuNGJ5dGUJMHg4MAkvKiBEV19BVF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJ LnF1YWQJLkxGQjUJLyogRFdfQVRfbG93X3BjICovCi0rCS5xdWFkCS5MRkU1CS8qIERXX0FUX2hp Z2hfcGMgKi8KLSsJLjRieXRlCS5MTFNUMAkvKiBEV19BVF9mcmFtZV9iYXNlICovCi0rCS5ieXRl CTB4MQkvKiBEV19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMgKi8KLSsJLjRieXRlCTB4MTZjCS8qIERX X0FUX3NpYmxpbmcgKi8KLSsJLnVsZWIxMjggMHhhCS8qIChESUUgKDB4MTBmKSBEV19UQUdfZm9y bWFsX3BhcmFtZXRlcikgKi8KLSsJLjRieXRlCTB4OTEJLyogRFdfQVRfYWJzdHJhY3Rfb3JpZ2lu ICovCi0rCS5ieXRlCTB4YQkvKiBEV19BVF9jb25zdF92YWx1ZSAqLwotKwkudWxlYjEyOCAweGMJ LyogKERJRSAoMHgxMTUpIERXX1RBR19HTlVfY2FsbF9zaXRlKSAqLwotKwkucXVhZAkuTFZMMgkv KiBEV19BVF9sb3dfcGMgKi8KLSsJLjRieXRlCTB4OWIJLyogRFdfQVRfYWJzdHJhY3Rfb3JpZ2lu ICovCi0rCS40Ynl0ZQkweDEzMwkvKiBEV19BVF9zaWJsaW5nICovCi0rCS51bGViMTI4IDB4ZAkv KiAoRElFICgweDEyNikgRFdfVEFHX0dOVV9jYWxsX3NpdGVfcGFyYW1ldGVyKSAqLwotKwkuYnl0 ZQkweDEJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsJLmJ5dGUJMHg1NQkvKiBEV19PUF9yZWc1ICov Ci0rCS5ieXRlCTB4MQkvKiBEV19BVF9HTlVfY2FsbF9zaXRlX3ZhbHVlICovCi0rCS5ieXRlCTB4 M2EJLyogRFdfT1BfbGl0MTAgKi8KLSsJLnVsZWIxMjggMHhlCS8qIChESUUgKDB4MTJiKSBEV19U QUdfR05VX2NhbGxfc2l0ZV9wYXJhbWV0ZXIpICovCi0rCS40Ynl0ZQkweDRiCS8qIERXX0FUX2Fi c3RyYWN0X29yaWdpbiAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfR05VX2NhbGxfc2l0ZV92YWx1 ZSAqLwotKwkuYnl0ZQkweDMyCS8qIERXX09QX2xpdDIgKi8KLSsJLmJ5dGUJMAkvKiBlbmQgb2Yg Y2hpbGRyZW4gb2YgRElFIDB4MTE1ICovCi0rCS51bGViMTI4IDB4YwkvKiAoRElFICgweDEzMykg RFdfVEFHX0dOVV9jYWxsX3NpdGUpICovCi0rCS5xdWFkCS5MVkwzCS8qIERXX0FUX2xvd19wYyAq LwotKwkuNGJ5dGUJMHg5YgkvKiBEV19BVF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJLjRieXRlCTB4 MTUxCS8qIERXX0FUX3NpYmxpbmcgKi8KLSsJLnVsZWIxMjggMHhkCS8qIChESUUgKDB4MTQ0KSBE V19UQUdfR05VX2NhbGxfc2l0ZV9wYXJhbWV0ZXIpICovCi0rCS5ieXRlCTB4MQkvKiBEV19BVF9s b2NhdGlvbiAqLwotKwkuYnl0ZQkweDU1CS8qIERXX09QX3JlZzUgKi8KLSsJLmJ5dGUJMHgxCS8q IERXX0FUX0dOVV9jYWxsX3NpdGVfdmFsdWUgKi8KLSsJLmJ5dGUJMHgzYQkvKiBEV19PUF9saXQx MCAqLwotKwkudWxlYjEyOCAweGUJLyogKERJRSAoMHgxNDkpIERXX1RBR19HTlVfY2FsbF9zaXRl X3BhcmFtZXRlcikgKi8KLSsJLjRieXRlCTB4NGIJLyogRFdfQVRfYWJzdHJhY3Rfb3JpZ2luICov Ci0rCS5ieXRlCTB4MQkvKiBEV19BVF9HTlVfY2FsbF9zaXRlX3ZhbHVlICovCi0rCS5ieXRlCTB4 MzQJLyogRFdfT1BfbGl0NCAqLwotKwkuYnl0ZQkwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUg MHgxMzMgKi8KLSsJLnVsZWIxMjggMHhmCS8qIChESUUgKDB4MTUxKSBEV19UQUdfR05VX2NhbGxf c2l0ZSkgKi8KLSsJLnF1YWQJLkxWTDQJLyogRFdfQVRfbG93X3BjICovCi0rCS40Ynl0ZQkweDli CS8qIERXX0FUX2Fic3RyYWN0X29yaWdpbiAqLwotKwkudWxlYjEyOCAweGQJLyogKERJRSAoMHgx NWUpIERXX1RBR19HTlVfY2FsbF9zaXRlX3BhcmFtZXRlcikgKi8KLSsJLmJ5dGUJMHgxCS8qIERX X0FUX2xvY2F0aW9uICovCi0rCS5ieXRlCTB4NTUJLyogRFdfT1BfcmVnNSAqLwotKwkuYnl0ZQkw eDEJLyogRFdfQVRfR05VX2NhbGxfc2l0ZV92YWx1ZSAqLwotKwkuYnl0ZQkweDQwCS8qIERXX09Q X2xpdDE2ICovCi0rCS51bGViMTI4IDB4ZQkvKiAoRElFICgweDE2MykgRFdfVEFHX0dOVV9jYWxs X3NpdGVfcGFyYW1ldGVyKSAqLwotKwkuNGJ5dGUJMHg0YgkvKiBEV19BVF9hYnN0cmFjdF9vcmln aW4gKi8KLSsJLmJ5dGUJMHgxCS8qIERXX0FUX0dOVV9jYWxsX3NpdGVfdmFsdWUgKi8KLSsJLmJ5 dGUJMHgzYQkvKiBEV19PUF9saXQxMCAqLwotKwkuYnl0ZQkwCS8qIGVuZCBvZiBjaGlsZHJlbiBv ZiBESUUgMHgxNTEgKi8KLSsJLmJ5dGUJMAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4ZjEg Ki8KLSsJLnVsZWIxMjggMHgxMAkvKiAoRElFICgweDE2YykgRFdfVEFHX3N1YnByb2dyYW0pICov Ci0rCS5ieXRlCTB4MQkvKiBEV19BVF9leHRlcm5hbCAqLwotKwkuNGJ5dGUJLkxBU0YzCS8qIERX X0FUX25hbWU6ICJtYWluIiAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfZGVjbF9maWxlIChnZGIu YXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJhbS5jKSAqLwotKwkuYnl0ZQkweDI1CS8qIERXX0FU X2RlY2xfbGluZSAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfcHJvdG90eXBlZCAqLwotKwkuNGJ5 dGUJMHg3OQkvKiBEV19BVF90eXBlICovCi0rCS5xdWFkCS5MRkIyCS8qIERXX0FUX2xvd19wYyAq LwotKwkucXVhZAkuTEZFMgkvKiBEV19BVF9oaWdoX3BjICovCi0rCS5ieXRlCTB4MgkvKiBEV19B VF9mcmFtZV9iYXNlICovCi0rCS5ieXRlCTB4NzcJLyogRFdfT1BfYnJlZzcgKi8KLSsJLnNsZWIx MjggOAotKwkuYnl0ZQkweDEJLyogRFdfQVRfR05VX2FsbF9jYWxsX3NpdGVzICovCi0rCS40Ynl0 ZQkweDFhMAkvKiBEV19BVF9zaWJsaW5nICovCi0rCS51bGViMTI4IDB4MTEJLyogKERJRSAoMHgx OTEpIERXX1RBR19HTlVfY2FsbF9zaXRlKSAqLwotKwkucXVhZAkuTFZMNQkvKiBEV19BVF9sb3df cGMgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX0FUX0dOVV90YWlsX2NhbGwgKi8KLSsJLjRieXRlCTB4 ZjEJLyogRFdfQVRfYWJzdHJhY3Rfb3JpZ2luICovCi0rCS5ieXRlCTAJLyogZW5kIG9mIGNoaWxk cmVuIG9mIERJRSAweDE2YyAqLwotKwkudWxlYjEyOCAweDEyCS8qIChESUUgKDB4MWEwKSBEV19U QUdfdmFyaWFibGUpICovCi0rCS5hc2NpaSAidnZcMCIJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0 ZQkweDEJLyogRFdfQVRfZGVjbF9maWxlIChnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJh bS5jKSAqLwotKwkuYnl0ZQkweDEyCS8qIERXX0FUX2RlY2xfbGluZSAqLwotKwkuNGJ5dGUJMHgx YjUJLyogRFdfQVRfdHlwZSAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfZXh0ZXJuYWwgKi8KLSsJ LmJ5dGUJMHg5CS8qIERXX0FUX2xvY2F0aW9uICovCi0rCS5ieXRlCTB4MwkvKiBEV19PUF9hZGRy ICovCi0rCS5xdWFkCXZ2Ci0rCS51bGViMTI4IDB4MTMJLyogKERJRSAoMHgxYjUpIERXX1RBR192 b2xhdGlsZV90eXBlKSAqLwotKwkuNGJ5dGUJMHg3OQkvKiBEV19BVF90eXBlICovCi0rCS5ieXRl CTAJLyogZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweGIgKi8KLSsJLnNlY3Rpb24JLmRlYnVnX2Fi YnJldiwiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2FiYnJldjA6Ci0rCS51bGViMTI4IDB4MQkvKiAo YWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4IDB4MTEJLyogKFRBRzogRFdfVEFHX2NvbXBpbGVf dW5pdCkgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOCAw eDI1CS8qIChEV19BVF9wcm9kdWNlcikgKi8KLSsJLnVsZWIxMjggMHhlCS8qIChEV19GT1JNX3N0 cnApICovCi0rCS51bGViMTI4IDB4MTMJLyogKERXX0FUX2xhbmd1YWdlKSAqLwotKwkudWxlYjEy OCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0rCS51bGViMTI4IDB4MwkvKiAoRFdfQVRfbmFt ZSkgKi8KLSsJLnVsZWIxMjggMHhlCS8qIChEV19GT1JNX3N0cnApICovCi0rCS51bGViMTI4IDB4 MWIJLyogKERXX0FUX2NvbXBfZGlyKSAqLwotKwkudWxlYjEyOCAweGUJLyogKERXX0ZPUk1fc3Ry cCkgKi8KLSsJLnVsZWIxMjggMHg1NQkvKiAoRFdfQVRfcmFuZ2VzKSAqLwotKwkudWxlYjEyOCAw eDYJLyogKERXX0ZPUk1fZGF0YTQpICovCi0rCS51bGViMTI4IDB4MTEJLyogKERXX0FUX2xvd19w YykgKi8KLSsJLnVsZWIxMjggMHgxCS8qIChEV19GT1JNX2FkZHIpICovCi0rCS51bGViMTI4IDB4 NTIJLyogKERXX0FUX2VudHJ5X3BjKSAqLwotKwkudWxlYjEyOCAweDEJLyogKERXX0ZPUk1fYWRk cikgKi8KLSsJLnVsZWIxMjggMHgxMAkvKiAoRFdfQVRfc3RtdF9saXN0KSAqLwotKwkudWxlYjEy OCAweDYJLyogKERXX0ZPUk1fZGF0YTQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxl YjEyOCAweDIJLyogKGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweDJlCS8qIChUQUc6IERX X1RBR19zdWJwcm9ncmFtKSAqLwotKwkuYnl0ZQkweDEJLyogRFdfY2hpbGRyZW5feWVzICovCi0r CS51bGViMTI4IDB4MwkvKiAoRFdfQVRfbmFtZSkgKi8KLSsJLnVsZWIxMjggMHg4CS8qIChEV19G T1JNX3N0cmluZykgKi8KLSsJLnVsZWIxMjggMHgzYQkvKiAoRFdfQVRfZGVjbF9maWxlKSAqLwot KwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0rCS51bGViMTI4IDB4M2IJLyog KERXX0FUX2RlY2xfbGluZSkgKi8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAq LwotKwkudWxlYjEyOCAweDI3CS8qIChEV19BVF9wcm90b3R5cGVkKSAqLwotKwkudWxlYjEyOCAw eGMJLyogKERXX0ZPUk1fZmxhZykgKi8KLSsJLnVsZWIxMjggMHg0OQkvKiAoRFdfQVRfdHlwZSkg Ki8KLSsJLnVsZWIxMjggMHgxMwkvKiAoRFdfRk9STV9yZWY0KSAqLwotKwkudWxlYjEyOCAweDIw CS8qIChEV19BVF9pbmxpbmUpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkg Ki8KLSsJLnVsZWIxMjggMHgxCS8qIChEV19BVF9zaWJsaW5nKSAqLwotKwkudWxlYjEyOCAweDEz CS8qIChEV19GT1JNX3JlZjQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAw eDMJLyogKGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweDUJLyogKFRBRzogRFdfVEFHX2Zv cm1hbF9wYXJhbWV0ZXIpICovCi0rCS5ieXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVs ZWIxMjggMHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZPUk1f c3RyaW5nKSAqLwotKwkudWxlYjEyOCAweDNhCS8qIChEV19BVF9kZWNsX2ZpbGUpICovCi0rCS51 bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjggMHgzYgkvKiAoRFdf QVRfZGVjbF9saW5lKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0r CS51bGViMTI4IDB4NDkJLyogKERXX0FUX3R5cGUpICovCi0rCS51bGViMTI4IDB4MTMJLyogKERX X0ZPUk1fcmVmNCkgKi8KLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4NAkvKiAo YWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4IDB4MzQJLyogKFRBRzogRFdfVEFHX3ZhcmlhYmxl KSAqLwotKwkuYnl0ZQkwCS8qIERXX2NoaWxkcmVuX25vICovCi0rCS51bGViMTI4IDB4MwkvKiAo RFdfQVRfbmFtZSkgKi8KLSsJLnVsZWIxMjggMHg4CS8qIChEV19GT1JNX3N0cmluZykgKi8KLSsJ LnVsZWIxMjggMHgzYQkvKiAoRFdfQVRfZGVjbF9maWxlKSAqLwotKwkudWxlYjEyOCAweGIJLyog KERXX0ZPUk1fZGF0YTEpICovCi0rCS51bGViMTI4IDB4M2IJLyogKERXX0FUX2RlY2xfbGluZSkg Ki8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkudWxlYjEyOCAweDQ5 CS8qIChEV19BVF90eXBlKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChEV19GT1JNX3JlZjQpICov Ci0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDUJLyogKGFiYnJldiBjb2RlKSAq LwotKwkudWxlYjEyOCAweDI0CS8qIChUQUc6IERXX1RBR19iYXNlX3R5cGUpICovCi0rCS5ieXRl CTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19BVF9ieXRlX3Np emUpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjgg MHgzZQkvKiAoRFdfQVRfZW5jb2RpbmcpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9k YXRhMSkgKi8KLSsJLnVsZWIxMjggMHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAw eDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIx MjggMHg2CS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgyZQkvKiAoVEFHOiBEV19U QUdfc3VicHJvZ3JhbSkgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwku dWxlYjEyOCAweDMxCS8qIChEV19BVF9hYnN0cmFjdF9vcmlnaW4pICovCi0rCS51bGViMTI4IDB4 MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8KLSsJLnVsZWIxMjggMHgxMQkvKiAoRFdfQVRfbG93X3Bj KSAqLwotKwkudWxlYjEyOCAweDEJLyogKERXX0ZPUk1fYWRkcikgKi8KLSsJLnVsZWIxMjggMHgx MgkvKiAoRFdfQVRfaGlnaF9wYykgKi8KLSsJLnVsZWIxMjggMHgxCS8qIChEV19GT1JNX2FkZHIp ICovCi0rCS51bGViMTI4IDB4NDAJLyogKERXX0FUX2ZyYW1lX2Jhc2UpICovCi0rCS51bGViMTI4 IDB4YQkvKiAoRFdfRk9STV9ibG9jazEpICovCi0rCS51bGViMTI4IDB4MjExNwkvKiAoRFdfQVRf R05VX2FsbF9jYWxsX3NpdGVzKSAqLwotKwkudWxlYjEyOCAweGMJLyogKERXX0ZPUk1fZmxhZykg Ki8KLSsJLnVsZWIxMjggMHgxCS8qIChEV19BVF9zaWJsaW5nKSAqLwotKwkudWxlYjEyOCAweDEz CS8qIChEV19GT1JNX3JlZjQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAw eDcJLyogKGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweDUJLyogKFRBRzogRFdfVEFHX2Zv cm1hbF9wYXJhbWV0ZXIpICovCi0rCS5ieXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVs ZWIxMjggMHgzMQkvKiAoRFdfQVRfYWJzdHJhY3Rfb3JpZ2luKSAqLwotKwkudWxlYjEyOCAweDEz CS8qIChEV19GT1JNX3JlZjQpICovCi0rCS51bGViMTI4IDB4MgkvKiAoRFdfQVRfbG9jYXRpb24p ICovCi0rCS51bGViMTI4IDB4YQkvKiAoRFdfRk9STV9ibG9jazEpICovCi0rCS5ieXRlCTAKLSsJ LmJ5dGUJMAotKwkudWxlYjEyOCAweDgJLyogKGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAw eDM0CS8qIChUQUc6IERXX1RBR192YXJpYWJsZSkgKi8KLSsJLmJ5dGUJMAkvKiBEV19jaGlsZHJl bl9ubyAqLwotKwkudWxlYjEyOCAweDMxCS8qIChEV19BVF9hYnN0cmFjdF9vcmlnaW4pICovCi0r CS51bGViMTI4IDB4MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8KLSsJLnVsZWIxMjggMHgyCS8qIChE V19BVF9sb2NhdGlvbikgKi8KLSsJLnVsZWIxMjggMHhhCS8qIChEV19GT1JNX2Jsb2NrMSkgKi8K LSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4OQkvKiAoYWJicmV2IGNvZGUpICov Ci0rCS51bGViMTI4IDB4MzQJLyogKFRBRzogRFdfVEFHX3ZhcmlhYmxlKSAqLwotKwkuYnl0ZQkw CS8qIERXX2NoaWxkcmVuX25vICovCi0rCS51bGViMTI4IDB4MzEJLyogKERXX0FUX2Fic3RyYWN0 X29yaWdpbikgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiAoRFdfRk9STV9yZWY0KSAqLwotKwkudWxl YjEyOCAweDFjCS8qIChEV19BVF9jb25zdF92YWx1ZSkgKi8KLSsJLnVsZWIxMjggMHhiCS8qIChE V19GT1JNX2RhdGExKSAqLwotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHhhCS8q IChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHg1CS8qIChUQUc6IERXX1RBR19mb3JtYWxf cGFyYW1ldGVyKSAqLwotKwkuYnl0ZQkwCS8qIERXX2NoaWxkcmVuX25vICovCi0rCS51bGViMTI4 IDB4MzEJLyogKERXX0FUX2Fic3RyYWN0X29yaWdpbikgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiAo RFdfRk9STV9yZWY0KSAqLwotKwkudWxlYjEyOCAweDFjCS8qIChEV19BVF9jb25zdF92YWx1ZSkg Ki8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkuYnl0ZQkwCi0rCS5i eXRlCTAKLSsJLnVsZWIxMjggMHhiCS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgy ZQkvKiAoVEFHOiBEV19UQUdfc3VicHJvZ3JhbSkgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX2NoaWxk cmVuX3llcyAqLwotKwkudWxlYjEyOCAweDMxCS8qIChEV19BVF9hYnN0cmFjdF9vcmlnaW4pICov Ci0rCS51bGViMTI4IDB4MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8KLSsJLnVsZWIxMjggMHgxMQkv KiAoRFdfQVRfbG93X3BjKSAqLwotKwkudWxlYjEyOCAweDEJLyogKERXX0ZPUk1fYWRkcikgKi8K LSsJLnVsZWIxMjggMHgxMgkvKiAoRFdfQVRfaGlnaF9wYykgKi8KLSsJLnVsZWIxMjggMHgxCS8q IChEV19GT1JNX2FkZHIpICovCi0rCS51bGViMTI4IDB4NDAJLyogKERXX0FUX2ZyYW1lX2Jhc2Up ICovCi0rCS51bGViMTI4IDB4NgkvKiAoRFdfRk9STV9kYXRhNCkgKi8KLSsJLnVsZWIxMjggMHgy MTE3CS8qIChEV19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMpICovCi0rCS51bGViMTI4IDB4YwkvKiAo RFdfRk9STV9mbGFnKSAqLwotKwkudWxlYjEyOCAweDEJLyogKERXX0FUX3NpYmxpbmcpICovCi0r CS51bGViMTI4IDB4MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8KLSsJLmJ5dGUJMAotKwkuYnl0ZQkw Ci0rCS51bGViMTI4IDB4YwkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4IDB4NDEwOQkv KiAoVEFHOiBEV19UQUdfR05VX2NhbGxfc2l0ZSkgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX2NoaWxk cmVuX3llcyAqLwotKwkudWxlYjEyOCAweDExCS8qIChEV19BVF9sb3dfcGMpICovCi0rCS51bGVi MTI4IDB4MQkvKiAoRFdfRk9STV9hZGRyKSAqLwotKwkudWxlYjEyOCAweDMxCS8qIChEV19BVF9h YnN0cmFjdF9vcmlnaW4pICovCi0rCS51bGViMTI4IDB4MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8K LSsJLnVsZWIxMjggMHgxCS8qIChEV19BVF9zaWJsaW5nKSAqLwotKwkudWxlYjEyOCAweDEzCS8q IChEV19GT1JNX3JlZjQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweGQJ LyogKGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweDQxMGEJLyogKFRBRzogRFdfVEFHX0dO VV9jYWxsX3NpdGVfcGFyYW1ldGVyKSAqLwotKwkuYnl0ZQkwCS8qIERXX2NoaWxkcmVuX25vICov Ci0rCS51bGViMTI4IDB4MgkvKiAoRFdfQVRfbG9jYXRpb24pICovCi0rCS51bGViMTI4IDB4YQkv KiAoRFdfRk9STV9ibG9jazEpICovCi0rCS51bGViMTI4IDB4MjExMQkvKiAoRFdfQVRfR05VX2Nh bGxfc2l0ZV92YWx1ZSkgKi8KLSsJLnVsZWIxMjggMHhhCS8qIChEV19GT1JNX2Jsb2NrMSkgKi8K LSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4ZQkvKiAoYWJicmV2IGNvZGUpICov Ci0rCS51bGViMTI4IDB4NDEwYQkvKiAoVEFHOiBEV19UQUdfR05VX2NhbGxfc2l0ZV9wYXJhbWV0 ZXIpICovCi0rCS5ieXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHgzMQkv KiAoRFdfQVRfYWJzdHJhY3Rfb3JpZ2luKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChEV19GT1JN X3JlZjQpICovCi0rCS51bGViMTI4IDB4MjExMQkvKiAoRFdfQVRfR05VX2NhbGxfc2l0ZV92YWx1 ZSkgKi8KLSsJLnVsZWIxMjggMHhhCS8qIChEV19GT1JNX2Jsb2NrMSkgKi8KLSsJLmJ5dGUJMAot KwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4ZgkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4 IDB4NDEwOQkvKiAoVEFHOiBEV19UQUdfR05VX2NhbGxfc2l0ZSkgKi8KLSsJLmJ5dGUJMHgxCS8q IERXX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOCAweDExCS8qIChEV19BVF9sb3dfcGMpICov Ci0rCS51bGViMTI4IDB4MQkvKiAoRFdfRk9STV9hZGRyKSAqLwotKwkudWxlYjEyOCAweDMxCS8q IChEV19BVF9hYnN0cmFjdF9vcmlnaW4pICovCi0rCS51bGViMTI4IDB4MTMJLyogKERXX0ZPUk1f cmVmNCkgKi8KLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4MTAJLyogKGFiYnJl diBjb2RlKSAqLwotKwkudWxlYjEyOCAweDJlCS8qIChUQUc6IERXX1RBR19zdWJwcm9ncmFtKSAq LwotKwkuYnl0ZQkweDEJLyogRFdfY2hpbGRyZW5feWVzICovCi0rCS51bGViMTI4IDB4M2YJLyog KERXX0FUX2V4dGVybmFsKSAqLwotKwkudWxlYjEyOCAweGMJLyogKERXX0ZPUk1fZmxhZykgKi8K LSsJLnVsZWIxMjggMHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweGUJLyogKERX X0ZPUk1fc3RycCkgKi8KLSsJLnVsZWIxMjggMHgzYQkvKiAoRFdfQVRfZGVjbF9maWxlKSAqLwot KwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0rCS51bGViMTI4IDB4M2IJLyog KERXX0FUX2RlY2xfbGluZSkgKi8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAq LwotKwkudWxlYjEyOCAweDI3CS8qIChEV19BVF9wcm90b3R5cGVkKSAqLwotKwkudWxlYjEyOCAw eGMJLyogKERXX0ZPUk1fZmxhZykgKi8KLSsJLnVsZWIxMjggMHg0OQkvKiAoRFdfQVRfdHlwZSkg Ki8KLSsJLnVsZWIxMjggMHgxMwkvKiAoRFdfRk9STV9yZWY0KSAqLwotKwkudWxlYjEyOCAweDEx CS8qIChEV19BVF9sb3dfcGMpICovCi0rCS51bGViMTI4IDB4MQkvKiAoRFdfRk9STV9hZGRyKSAq LwotKwkudWxlYjEyOCAweDEyCS8qIChEV19BVF9oaWdoX3BjKSAqLwotKwkudWxlYjEyOCAweDEJ LyogKERXX0ZPUk1fYWRkcikgKi8KLSsJLnVsZWIxMjggMHg0MAkvKiAoRFdfQVRfZnJhbWVfYmFz ZSkgKi8KLSsJLnVsZWIxMjggMHhhCS8qIChEV19GT1JNX2Jsb2NrMSkgKi8KLSsJLnVsZWIxMjgg MHgyMTE3CS8qIChEV19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMpICovCi0rCS51bGViMTI4IDB4Ywkv KiAoRFdfRk9STV9mbGFnKSAqLwotKwkudWxlYjEyOCAweDEJLyogKERXX0FUX3NpYmxpbmcpICov Ci0rCS51bGViMTI4IDB4MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8KLSsJLmJ5dGUJMAotKwkuYnl0 ZQkwCi0rCS51bGViMTI4IDB4MTEJLyogKGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweDQx MDkJLyogKFRBRzogRFdfVEFHX0dOVV9jYWxsX3NpdGUpICovCi0rCS5ieXRlCTAJLyogRFdfY2hp bGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHgxMQkvKiAoRFdfQVRfbG93X3BjKSAqLwotKwkudWxl YjEyOCAweDEJLyogKERXX0ZPUk1fYWRkcikgKi8KLSsJLnVsZWIxMjggMHgyMTE1CS8qIChEV19B VF9HTlVfdGFpbF9jYWxsKSAqLwotKwkudWxlYjEyOCAweGMJLyogKERXX0ZPUk1fZmxhZykgKi8K LSsJLnVsZWIxMjggMHgzMQkvKiAoRFdfQVRfYWJzdHJhY3Rfb3JpZ2luKSAqLwotKwkudWxlYjEy OCAweDEzCS8qIChEV19GT1JNX3JlZjQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxl YjEyOCAweDEyCS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgzNAkvKiAoVEFHOiBE V19UQUdfdmFyaWFibGUpICovCi0rCS5ieXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVs ZWIxMjggMHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZPUk1f c3RyaW5nKSAqLwotKwkudWxlYjEyOCAweDNhCS8qIChEV19BVF9kZWNsX2ZpbGUpICovCi0rCS51 bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjggMHgzYgkvKiAoRFdf QVRfZGVjbF9saW5lKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0r CS51bGViMTI4IDB4NDkJLyogKERXX0FUX3R5cGUpICovCi0rCS51bGViMTI4IDB4MTMJLyogKERX X0ZPUk1fcmVmNCkgKi8KLSsJLnVsZWIxMjggMHgzZgkvKiAoRFdfQVRfZXh0ZXJuYWwpICovCi0r CS51bGViMTI4IDB4YwkvKiAoRFdfRk9STV9mbGFnKSAqLwotKwkudWxlYjEyOCAweDIJLyogKERX X0FUX2xvY2F0aW9uKSAqLwotKwkudWxlYjEyOCAweGEJLyogKERXX0ZPUk1fYmxvY2sxKSAqLwot KwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHgxMwkvKiAoYWJicmV2IGNvZGUpICov Ci0rCS51bGViMTI4IDB4MzUJLyogKFRBRzogRFdfVEFHX3ZvbGF0aWxlX3R5cGUpICovCi0rCS5i eXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHg0OQkvKiAoRFdfQVRfdHlw ZSkgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiAoRFdfRk9STV9yZWY0KSAqLwotKwkuYnl0ZQkwCi0r CS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkuc2VjdGlvbgkuZGVidWdfbG9jLCIiLEBwcm9nYml0cwot Ky5MZGVidWdfbG9jMDoKLSsuTExTVDA6Ci0rCS5xdWFkCS5MRkI1CS8qIExvY2F0aW9uIGxpc3Qg YmVnaW4gYWRkcmVzcyAoKi5MTFNUMCkgKi8KLSsJLnF1YWQJLkxDRkkwCS8qIExvY2F0aW9uIGxp c3QgZW5kIGFkZHJlc3MgKCouTExTVDApICovCi0rCS4yYnl0ZQkweDIJLyogTG9jYXRpb24gZXhw cmVzc2lvbiBzaXplICovCi0rCS5ieXRlCTB4NzcJLyogRFdfT1BfYnJlZzcgKi8KLSsJLnNsZWIx MjggOAotKwkucXVhZAkuTENGSTAJLyogTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxM U1QwKSAqLwotKwkucXVhZAkuTENGSTEJLyogTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5M TFNUMCkgKi8KLSsJLjJieXRlCTB4MgkvKiBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUgKi8KLSsJ LmJ5dGUJMHg3NwkvKiBEV19PUF9icmVnNyAqLwotKwkuc2xlYjEyOCAxNgotKwkucXVhZAkuTENG STEJLyogTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QwKSAqLwotKwkucXVhZAku TEZFNQkvKiBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QwKSAqLwotKwkuMmJ5dGUJ MHgyCS8qIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZSAqLwotKwkuYnl0ZQkweDc3CS8qIERXX09Q X2JyZWc3ICovCi0rCS5zbGViMTI4IDgKLSsJLnF1YWQJMAkvKiBMb2NhdGlvbiBsaXN0IHRlcm1p bmF0b3IgYmVnaW4gKCouTExTVDApICovCi0rCS5xdWFkCTAJLyogTG9jYXRpb24gbGlzdCB0ZXJt aW5hdG9yIGVuZCAoKi5MTFNUMCkgKi8KLSsJLnNlY3Rpb24JLmRlYnVnX2FyYW5nZXMsIiIsQHBy b2diaXRzCi0rCS40Ynl0ZQkweDNjCS8qIExlbmd0aCBvZiBBZGRyZXNzIFJhbmdlcyBJbmZvICov Ci0rCS4yYnl0ZQkweDIJLyogRFdBUkYgVmVyc2lvbiAqLwotKwkuNGJ5dGUJLkxkZWJ1Z19pbmZv MAkvKiBPZmZzZXQgb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvICovCi0rCS5ieXRlCTB4OAkvKiBT aXplIG9mIEFkZHJlc3MgKi8KLSsJLmJ5dGUJMAkvKiBTaXplIG9mIFNlZ21lbnQgRGVzY3JpcHRv ciAqLwotKwkuMmJ5dGUJMAkvKiBQYWQgdG8gMTYgYnl0ZSBib3VuZGFyeSAqLwotKwkuMmJ5dGUJ MAotKwkucXVhZAkuTHRleHQwCS8qIEFkZHJlc3MgKi8KLSsJLnF1YWQJLkxldGV4dDAtLkx0ZXh0 MAkvKiBMZW5ndGggKi8KLSsJLnF1YWQJLkxGQjIJLyogQWRkcmVzcyAqLwotKwkucXVhZAkuTEZF Mi0uTEZCMgkvKiBMZW5ndGggKi8KLSsJLnF1YWQJMAotKwkucXVhZAkwCi0rCS5zZWN0aW9uCS5k ZWJ1Z19yYW5nZXMsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19yYW5nZXMwOgotKwkucXVhZAkuTHRl eHQwCS8qIE9mZnNldCAwICovCi0rCS5xdWFkCS5MZXRleHQwCi0rCS5xdWFkCS5MRkIyCS8qIE9m ZnNldCAweDEwICovCi0rCS5xdWFkCS5MRkUyCi0rCS5xdWFkCTAKLSsJLnF1YWQJMAotKwkuc2Vj dGlvbgkuZGVidWdfbGluZSwiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xpbmUwOgotKwkuc2VjdGlv bgkuZGVidWdfc3RyLCJNUyIsQHByb2diaXRzLDEKLSsuTEFTRjE6Ci0rCS5zdHJpbmcJImdkYi5h cmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFtLmMiCi0rLkxBU0YzOgotKwkuc3RyaW5nCSJtYWlu IgotKy5MQVNGMjoKLSsJLnN0cmluZwkiIgotKy5MQVNGMDoKLSsJLnN0cmluZwkiR05VIEMgNC43 LjEgMjAxMjA2MTIgKHByZXJlbGVhc2UpIgotKwkuaWRlbnQJIkdDQzogKEdOVSkgNC43LjEgMjAx MjA2MTIgKHByZXJlbGVhc2UpIgotKwkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsQHByb2di aXRzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0LWVu dHJ5LXZhbHVlLXBhcmFtLmMKLUBAIC0wLDAgKzEsNDAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlz IHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KLSsKLSt2b2xhdGlsZSBpbnQgdnY7Ci0rCi0rc3RhdGljIF9fYXR0 cmlidXRlX18oKG5vaW5saW5lKSkgaW50Ci0rZm9vIChpbnQgeCwgaW50IHksIGludCB6KQotK3sK LSsgIGludCBhID0geCAqIDI7Ci0rICBpbnQgYiA9IHkgKiAyOwotKyAgaW50IGMgPSB6ICogMjsK LSsgIHZ2Kys7IC8qIGJyZWFrLWhlcmUgKi8KLSsgIHJldHVybiB4ICsgejsKLSt9Ci0rCi0rc3Rh dGljIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgaW50Ci0rYmFyIChpbnQgeCkKLSt7Ci0rICBy ZXR1cm4gZm9vICh4LCAyLCAzKSArIGZvbyAoeCwgNCwgMykgKyBmb28gKHggKyA2LCB4LCAzKSAr IHg7Ci0rfQotKwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAgcmV0dXJuIGJhciAoMTApOwot K30KLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtZW50 cnktdmFsdWUtcGFyYW0uZXhwCi1AQCAtMCwwICsxLDUxIEBACi0rIyBDb3B5cmlnaHQgKEMpIDIw MTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgYW1kNjQtZW50cnktdmFsdWUtcGFyYW0KLStz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5TCi0rc2V0IGNzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStz ZXQgb3B0cyB7fQotKwotK2lmIFtpbmZvIGV4aXN0cyBDT01QSUxFXSB7Ci0rICAgICMgbWFrZSBj aGVjayBSVU5URVNURkxBR1M9ImdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFtLmV4cCBD T01QSUxFPTEiCi0rICAgIHNldCBzcmNmaWxlICR7Y3NyY2ZpbGV9Ci0rICAgIGxhcHBlbmQgb3B0 cyBkZWJ1ZyBvcHRpbWl6ZT0tTzIKLSt9IGVsc2VpZiB7ICFbaXN0YXJnZXQgeDg2XzY0LSotKiBd IHx8ICFbaXNfbHA2NF90YXJnZXRdIH0gewotKyAgICB2ZXJib3NlICJTa2lwcGluZyBhbWQ2NC1l bnRyeS12YWx1ZS1wYXJhbS4iCi0rICAgIHJldHVybgotK30KLSsKLStpZiB7IFtwcmVwYXJlX2Zv cl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9ICRvcHRzXSB9 IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICByZXR1 cm4gLTEKLSt9Ci0rCi0rc2V0IHNyY2ZpbGUgJGNzcmNmaWxlCi0rZ2RiX2JyZWFrcG9pbnQgW2dk Yl9nZXRfbGluZV9udW1iZXIgImJyZWFrLWhlcmUiXQotKwotK2dkYl9jb250aW51ZV90b19icmVh a3BvaW50ICJicmVhay1oZXJlIiAiLiogYnJlYWstaGVyZSAuKiIKLStnZGJfdGVzdCAicCB5IiAi ID0gMiIKLStnZGJfdGVzdCAicCBiIiAiID0gNCIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAiYnJlYWstaGVyZSIgIi4qIGJyZWFrLWhlcmUgLioiCi0rZ2RiX3Rlc3QgInAgeSIgIiA9 IDQiCi0rZ2RiX3Rlc3QgInAgYiIgIiA9IDgiCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImJyZWFrLWhlcmUiICIuKiBicmVhay1oZXJlIC4qIgotK2dkYl90ZXN0ICJwIHkiICIgPSAx MCIKLStnZGJfdGVzdCAicCBiIiAiID0gMjAiCi0KCmRpZmYgLS1naXQgYS9nZGItcmhlbDUtZ2Nj NDQucGF0Y2ggYi9nZGItcmhlbDUtZ2NjNDQucGF0Y2gKaW5kZXggY2NiYjMwYS4uMjQxNzk1YSAx MDA2NDQKLS0tIGEvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoCisrKyBiL2dkYi1yaGVsNS1nY2M0NC5w YXRjaApAQCAtMSwxMCArMSwxMCBAQAogU29tZSBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZSBv biBSSEVMLTUuNCsgb25seSB3aXRoIGdjYzQ0IGFuZCBnZm9ydHJhbjQ0IGFzCiB0aGUgZGVmYXVs dCBnY2MgYW5kIGdmb3J0cmFuIGJpbmFyaWVzIGFyZSBmcm9tIGdjYy00LjEuCiAKLUluZGV4OiBn ZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAorSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvdmxhLmV4cAkyMDExLTEyLTE4IDIzOjM1OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCTIwMTEtMTItMTkg MDI6Mjc6MTYuNzQ1MzI3ODQ0ICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDEyLTA3LTAzIDE3OjMwOjA3LjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92 bGEuZXhwCTIwMTItMDctMDMgMTc6NTA6NTcuOTk5MjA3NTQwICswMjAwCiBAQCAtMTYsNyArMTYs MjUgQEAKICBzZXQgdGVzdGZpbGUgdmxhCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwpAQCAt MzIsMTEgKzMyLDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvdmxhLmV4cAogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHBy b2dyYW0iCiAgICAgIHJldHVybiAtMQogIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAorSW5kZXg6IGdkYi03LjQuNTAu MjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YnJlYWstaW50ZXJwLmV4cAkyMDExLTEyLTE5IDAyOjIxOjU2LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAu ZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ1MzI3ODQ0ICswMTAwCi1AQCAtMzQsOSArMzQsMjkg QEAgaWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZV9saWJ9XSB7CistLS0gZ2RiLTcuNC41 MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAky MDEyLTA3LTAzIDE3OjQ0OjQ1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3 MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTItMDctMDMgMTc6 NTA6NTguMDAwMjA3NTM5ICswMjAwCitAQCAtMzQsOSArMzQsMjkgQEAgaWYgW2dldF9jb21waWxl cl9pbmZvXSB7CiAgICAgIHJldHVybiAtMQogIH0KICAKQEAgLTY3LDEwICs2NywxMCBAQCBJbmRl eDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVy cC5leHAKICAgICAgcmV0dXJuIC0xCiAgfQogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMTEtMTItMTkgMDE6MzE6MjQuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2NvbW1vbi1ibG9jay5leHAJMjAxMS0xMi0xOSAwMjoyNzoxNi43NDYzMjc4NDAgKzAxMDAKKy0t LSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21t b24tYmxvY2suZXhwCTIwMTItMDctMDMgMTc6MzY6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5l eHAJMjAxMi0wNy0wMyAxNzo1MDo1OC4wMDEyMDc1MzcgKzAyMDAKIEBAIC0yMCw3ICsyMCwyNSBA QCBzZXQgdGVzdGZpbGUgImNvbW1vbi1ibG9jayIKICBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5m OTAKICBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CkBAIC05OCwx MCArOTgsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9jb21tb24tYmxvY2suZXhwCiAgICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxl ICR7c3JjZmlsZX0iCiAgICAgIHJldHVybiAtMQogIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTEx MjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAorSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUu ZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAkyMDExLTEyLTE4IDIzOjM1OjIzLjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9kd2FyZi1zdHJpZGUuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ2MzI3ODQwICswMTAw CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v ZHdhcmYtc3RyaWRlLmV4cAkyMDEyLTA3LTAzIDE3OjMwOjA3LjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJp ZGUuZXhwCTIwMTItMDctMDMgMTc6NTA6NTguMDAyMjA3NTM1ICswMjAwCiBAQCAtMjcsNyArMjcs MjUgQEAKICBzZXQgdGVzdGZpbGUgZHdhcmYtc3RyaWRlCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0Zmls ZX0uZjkwCkBAIC0xMjksMTAgKzEyOSwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAKICAgICAgcmV0dXJuIC0x CiAgfQogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9keW5hbWljLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAx MTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTEtMTIt MTggMjM6MzU6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ2 MzI3ODQwICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vZHluYW1pYy5leHAJMjAxMi0wNy0wMyAxNzozMDowNy4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHlu YW1pYy5leHAJMjAxMi0wNy0wMyAxNzo1MDo1OC4wMDIyMDc1MzUgKzAyMDAKIEBAIC0yNSw3ICsy NSwyNSBAQCBzZXQgdGVzdGZpbGUgImR5bmFtaWMiCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u ZjkwCiAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQpAQCAtMTYw LDE1ICsxNjAsMTUgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9keW5hbWljLmV4cAogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAk e3NyY2ZpbGV9IgogICAgICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAorSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVs ZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAJMjAxMS0xMS0zMCAwOToyNDozMi4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCTIwMTEtMTItMTkgMDI6MzE6MTAuOTkxMzE4MDI2 ICswMTAwCi1AQCAtMjUsMTYgKzI1LDM0IEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mbyBub3QtdXNl ZF0geworLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2xpYnJhcnktbW9kdWxlLmV4cAkyMDEyLTA2LTI1IDIyOjUxOjM1LjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJy YXJ5LW1vZHVsZS5leHAJMjAxMi0wNy0wMyAxNzo1Mjo1Ny42NjYwNjI5ODEgKzAyMDAKK0BAIC0y MywxNiArMjMsMzQgQEAgaWYgW2dldF9jb21waWxlcl9pbmZvXSB7CiAgICAgcmV0dXJuIC0xCiAg fQogIAotLWlmICB7IFtnZGJfY29tcGlsZV9zaGxpYiAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Ny Y2xpYmZpbGV9IiAkb2JqZGlyLyRzdWJkaXIvJGxpYmZpbGUge2RlYnVnIGY5MH1dICE9ICIiIH0g eworLWlmICB7IFtnZGJfY29tcGlsZV9zaGxpYiAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2xp YmZpbGV9IiAkbGliZmlsZSB7ZGVidWcgZjkwfV0gIT0gIiIgfSB7CiAtICAgIHVudGVzdGVkICJD b3VsZG4ndCBjb21waWxlICR7c3JjbGliZmlsZX0iCiAtICAgIHJldHVybiAtMQogKyMgVGVtcG9y YXJpbHkgcHJvdmlkZSBmOTBjb21waWxlcj1nZm9ydHJhbjQ0IHNhdmluZyB0aGUgb3JpZ2luYWwg dmFsdWUgYXJvdW5kLgpAQCAtMTg2LDkgKzE4Niw5IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTEx MjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCiAgIyBqdXN0 IGZvciB0aGUgbGlua2luZyBwaGFzZSAoYW5kIG5vdCB0aGUgc291cmNlIGNvbXBpbGF0aW9uIHBo YXNlKS4gIEFuZCBhbnkKICAjIHdhcm5pbmdzIG9uIGlnbm9yZWQgJGxpYmZpbGUgYWJvcnQgdGhl IHByb2Nlc3MuCiAgCi0taWYgIHsgW2dkYl9jb21waWxlICRzcmNkaXIvJHN1YmRpci8kc3JjZmls ZSAkb2JqZGlyLyRzdWJkaXIvJGJpbmZpbGUgZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBmOTAgc2hs aWI9JG9iamRpci8kc3ViZGlyLyRsaWJmaWxlXV0gIT0gIiIgfSB7Ci0rc2V0IGVycjEgW2dkYl9j b21waWxlX3NobGliICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjbGliZmlsZX0iICRvYmpkaXIv JHN1YmRpci8kbGliZmlsZSB7ZGVidWcgZjkwfV0KLStzZXQgZXJyMiBbZ2RiX2NvbXBpbGUgJHNy Y2Rpci8kc3ViZGlyLyRzcmNmaWxlICRvYmpkaXIvJHN1YmRpci8kYmluZmlsZSBleGVjdXRhYmxl IFtsaXN0IGRlYnVnIGY5MCBzaGxpYj0kb2JqZGlyLyRzdWJkaXIvJGxpYmZpbGVdXQorLWlmICB7 IFtnZGJfY29tcGlsZSAkc3JjZGlyLyRzdWJkaXIvJHNyY2ZpbGUgJGJpbmZpbGUgZXhlY3V0YWJs ZSBbbGlzdCBkZWJ1ZyBmOTAgc2hsaWI9JGxpYmZpbGVdXSAhPSAiIiB9IHsKKytzZXQgZXJyMSBb Z2RiX2NvbXBpbGVfc2hsaWIgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNsaWJmaWxlfSIgJGxp YmZpbGUge2RlYnVnIGY5MH1dCisrc2V0IGVycjIgW2dkYl9jb21waWxlICRzcmNkaXIvJHN1YmRp ci8kc3JjZmlsZSAkYmluZmlsZSBleGVjdXRhYmxlIFtsaXN0IGRlYnVnIGY5MCBzaGxpYj0kbGli ZmlsZV1dCiArCiArdW5zZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlcgogK2lmIFtpbmZvIGV4aXN0 cyBvbGRfZjkwY29tcGlsZXJdIHsKQEAgLTIwMywxMyArMjAzLDEzIEBAIEluZGV4OiBnZGItNy40 LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhw CiAgICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCiAgICAgIHJldHVy biAtMQogIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vbW9kdWxlLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEx MTIxOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAkyMDExLTA2LTMw IDAwOjA1OjE2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ3MzI3 ODM2ICswMTAwCi1AQCAtMTYsNyArMTYsMjUgQEAKLSBzZXQgdGVzdGZpbGUgIm1vZHVsZSIKLSBz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCTIwMTItMDYtMjUgMjI6NTE6MzUu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL21vZHVsZS5leHAJMjAxMi0wNy0wMyAxNzo1Mzo1Ni40NjQ5OTIwODYgKzAyMDAK K0BAIC0xNSw3ICsxNSwyNSBAQAorIAorIHN0YW5kYXJkX3Rlc3RmaWxlIC5mOTAKICAKIC1pZiB7 IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtk ZWJ1ZyBmOTB9XSB9IHsKICsjIFRlbXBvcmFyaWx5IHByb3ZpZGUgZjkwY29tcGlsZXI9Z2ZvcnRy YW40NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KQEAgLTIzNCwxMCArMjM0LDEw IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v bW9kdWxlLmV4cAogICAgICByZXR1cm4gLTEKICB9CiAgCi1JbmRleDogZ2RiLTcuNC41MC4yMDEx MTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3N0cmluZy5leHAJMjAxMS0xMi0xOCAyMzozNToyMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAky MDExLTEyLTE5IDAyOjI3OjE2Ljc0NzMyNzgzNiArMDEwMAorLS0tIGdkYi03LjQuNTAuMjAxMjA3 MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAJMjAxMi0wNy0wMyAx NzozMDowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAkyMDEyLTA3LTAzIDE3OjUwOjU4LjAwNTIwNzUz MiArMDIwMAogQEAgLTIzLDcgKzIzLDI1IEBAIHNldCB0ZXN0ZmlsZSAic3RyaW5nIgogIHNldCBz cmNmaWxlICR7dGVzdGZpbGV9LmY5MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0v JHt0ZXN0ZmlsZX0KQEAgLTI2NSwxMCArMjY1LDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTEx MjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAogICAgICB1bnRlc3RlZCAi Q291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogICAgICByZXR1cm4gLTEKICB9Ci1JbmRleDog Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4 cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9v bXAtc3RlcC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMS0xMi0xOSAwMTozMToyNC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vb21wLXN0ZXAuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ4MzI3ODMyICswMTAw CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v b21wLXN0ZXAuZXhwCTIwMTItMDctMDMgMTc6MzY6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAky MDEyLTA3LTAzIDE3OjUwOjU4LjAwNjIwNzUzMSArMDIwMAogQEAgLTE1LDcgKzE1LDI2IEBACiAg CiAgc2V0IHRlc3RmaWxlICJvbXAtc3RlcCIKQEAgLTI5NywxNiArMjk3LDE1IEBAIEluZGV4OiBn ZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhw CiAgICAgIHJldHVybiAtMQogIH0KICAKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZGVyaXZlZC10eXBlLmV4cAorSW5kZXg6IGdkYi03LjQuNTAu MjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vZGVyaXZlZC10eXBlLmV4cAkyMDExLTA2LTI5IDE5OjUwOjQ3LjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJp dmVkLXR5cGUuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ4MzI3ODMyICswMTAwCi1AQCAtMjgs OCArMjgsMjYgQEAgc2V0IHRlc3RmaWxlICJkZXJpdmVkLXR5cGUiCi0gc2V0IHNyY2ZpbGUgJHt0 ZXN0ZmlsZX0uZjkwCi0gc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxl fQorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2Rlcml2ZWQtdHlwZS5leHAJMjAxMi0wNi0yNSAyMjo1MTozNS4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZGVyaXZlZC10 eXBlLmV4cAkyMDEyLTA3LTAzIDE3OjU1OjQ2LjU4Mzg1ODg0OSArMDIwMAorQEAgLTIyLDcgKzIy LDI1IEBAIGlmIHsgW3NraXBfZm9ydHJhbl90ZXN0c10gfSB7IHJldHVybiAtMQorIAorIHN0YW5k YXJkX3Rlc3RmaWxlIC5mOTAKICAKLS1pZiB7W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJk aXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBcCi0tCSBleGVjdXRhYmxlIHtkZWJ1ZyBmOTB9 XSAhPSAiIn0geworLWlmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0 ZmlsZSAkc3JjZmlsZSB7ZGVidWcgZjkwfV19IHsKICsjIFRlbXBvcmFyaWx5IHByb3ZpZGUgZjkw Y29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KICsK ICtzZXQgYm9hcmQgW3RhcmdldF9pbmZvIG5hbWVdCkBAIC0zMTgsMjggKzMxNywyNiBAQCBJbmRl eDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQt dHlwZS5leHAKICt9CiArc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgZ2ZvcnRyYW40NAogKwot K3NldCBlcnIgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIk e2JpbmZpbGV9IiBcCi0rCSBleGVjdXRhYmxlIHtkZWJ1ZyBmOTB9XQorK3NldCBlcnIgW3ByZXBh cmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGUge2RlYnVnIGY5 MH1dCiArCiArdW5zZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlcgogK2lmIFtpbmZvIGV4aXN0cyBv bGRfZjkwY29tcGlsZXJdIHsKICsgICAgc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgJG9sZF9m OTBjb21waWxlcgogK30KICsKLStpZiB7ICRlcnIgIT0gIiIgfSB7CisraWYgJGVyciB7CiAgICAg IHJldHVybiAtMQogIH0KICAKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5 LmV4cAkyMDExLTA2LTI5IDE5OjUwOjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAJMjAxMS0xMi0x OSAwMjoyNzoxNi43NDgzMjc4MzIgKzAxMDAKLUBAIC0yOCw4ICsyOCwyNiBAQCBzZXQgdGVzdGZp bGUgInN1YmFycmF5IgotIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmYKLSBzZXQgYmluZmlsZSAk e29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5v cmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCTIwMTItMDYtMjUgMjI6 NTE6MzUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAkyMDEyLTA3LTAzIDE3OjU2OjIwLjQ1NDgxODE5 OCArMDIwMAorQEAgLTIyLDcgKzIyLDI1IEBAIGlmIHsgW3NraXBfZm9ydHJhbl90ZXN0c10gfSB7 IHJldHVybiAtMQorIAorIHN0YW5kYXJkX3Rlc3RmaWxlIC5mCiAgCi0taWYge1tnZGJfY29tcGls ZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgXAotLQlleGVj dXRhYmxlIHtkZWJ1ZyBmOTB9XSAhPSAiIn0geworLWlmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAk dGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVidWcgZjkwfV19IHsKICsjIFRlbXBv cmFyaWx5IHByb3ZpZGUgZjkwY29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFs IHZhbHVlIGFyb3VuZC4KICsKICtzZXQgYm9hcmQgW3RhcmdldF9pbmZvIG5hbWVdCkBAIC0zNTEs MjIgKzM0OCwyMSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3N1YmFycmF5LmV4cAogK30KICtzZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlciBn Zm9ydHJhbjQ0CiArCi0rc2V0IGVyciBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0v JHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIFwKLSsJZXhlY3V0YWJsZSB7ZGVidWcgZjkwfV0KKytz ZXQgZXJyIFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNm aWxlIHtkZWJ1ZyBmOTB9XQogKwogK3Vuc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKICtpZiBb aW5mbyBleGlzdHMgb2xkX2Y5MGNvbXBpbGVyXSB7CiArICAgIHNldF9ib2FyZF9pbmZvIGY5MGNv bXBpbGVyICRvbGRfZjkwY29tcGlsZXIKICt9CiArCi0raWYgeyAkZXJyICE9ICIiIH0geworK2lm ICRlcnIgewogICAgICByZXR1cm4gLTEKICB9CiAgCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4 cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAJMjAxMS0xMi0xOSAwMDoyODoxMS4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVh ZHMvdGxzLXNlcGRlYnVnLmV4cAkyMDExLTEyLTE5IDAyOjI3OjE2Ljc0ODMyNzgzMiArMDEwMAor LS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rs cy1zZXBkZWJ1Zy5leHAJMjAxMi0wNy0wMyAxNzozMjowNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVn LmV4cAkyMDEyLTA3LTAzIDE3OjUwOjU4LjAwNzIwNzUzMCArMDIwMAogQEAgLTMyLDcgKzMyLDI1 IEBAIHNldCBiaW5zaGFyZWRkZWJ1Z2ZpbGUgJHtvYmpkaXJ9LyR7c3ViZGkKICAKICAjIEZJWE1F OiBnY2MgZGVwZW5kZW5jeSAoLVdsLC1zb25hbWUpLgpAQCAtMzk0LDEwICszOTAsMTAgQEAgSW5k ZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy90bHMtc2Vw ZGVidWcuZXhwCiAgICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgbGlicmFyeSIK ICAgICAgcmV0dXJuIC0xCiAgfQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3Rz dWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMv Z2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQu ZXhwCTIwMTEtMTItMTkgMDI6MjE6NTYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTEtMTItMTkg MDI6Mjc6MTYuNzQ5MzI3ODI4ICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dk Yi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAJMjAxMi0wNy0wMyAxNzo0NDo0NS4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvbGli L3ByZWxpbmstc3VwcG9ydC5leHAJMjAxMi0wNy0wMyAxNzo1MDo1OC4wMDgyMDc1MjkgKzAyMDAK IEBAIC0xMTksOSArMTE5LDMxIEBAIHByb2MgZmlsZV9jb3B5IHtzcmMgZGVzdH0gewogIHByb2Mg YnVpbGRfZXhlY3V0YWJsZV9vd25fbGlicyB7dGVzdG5hbWUgZXhlY3V0YWJsZSBzb3VyY2VzIG9w dGlvbnMge2ludGVycCAiIn0ge2RpciAiIn19IHsKICAgICAgZ2xvYmFsIG9iamRpciBzdWJkaXIK CmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0ucGF0Y2ggYi9nZGItdXBzdHJlYW0ucGF0Y2gKaW5k ZXggNjRlZTcyZS4uZTY5ZGUyOSAxMDA2NDQKLS0tIGEvZ2RiLXVwc3RyZWFtLnBhdGNoCisrKyBi L2dkYi11cHN0cmVhbS5wYXRjaApAQCAtMSwyOTMgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDYvbXNnMDAwNjUuaHRtbAotU3ViamVjdDogW2NvbW1p dCAxLzJdIHRlc3RzdWl0ZTogY29kZV9lbGltLmV4cDogdW5pcXVlIG5hbWVzCi0KLUhpLAotCi10 aGlzIGlzIGp1c3QgcmVtb3ZhbCBvZiBub24tdW5pcXVlIHRlc3QgbmFtZXMgYW5kIG9uZSBzbWFs bCBzaW1wbGlmaWNhdGlvbi4KLQotQ2hlY2tlZCBpbi4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1o dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA2L21zZzAwMDExLmh0bWwKLQot IyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEyLzA1LzI4IDIwOjM3OjI5CTEuMzIw OQotIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEyLzA2LzAzIDE3OjA2OjA0CTEu MzIxMAotIyMgLTEsMyArMSwxNiBAQAotKzIwMTItMDYtMDMgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIuYmFzZS9jb2RlX2VsaW0uZXhwIChh ZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTF9IDB4MTAwMDAwKToKLSsJU2ltcGxpZnkgaXQgdG8g Li4uCi0rCShzeW1ib2wtZmlsZSAke3Rlc3RmaWxlMX0pOiAuLi4gaGVyZS4KLSsJKHRlc3QgZWxp bWluYXRlZCB2YXIgbXlfZ2xvYmFsX3N5bWJvbCkKLSsJKHRlc3QgZWxpbWluYXRlZCB2YXIgbXlf c3RhdGljX3N5bWJvbCkKLSsJKHRlc3QgZWxpbWluYXRlZCB2YXIgbXlfZ2xvYmFsX2Z1bmMsIGdl dCBhZGRyZXNzIG9mIG1haW4pOiBXcmFwIHRoZW0gdG8KLSsJJ3NpbmdsZSBwc3ltdGFicycgYW5k ICdzaW5nbGUgc3ltdGFicycKLSsJKGdldCBhZGRyZXNzIG9mIG15X2dsb2JhbF9zeW1ib2wsIGdl dCBhZGRyZXNzIG9mIG15X3N0YXRpY19zeW1ib2wpCi0rCShnZXQgYWRkcmVzcyBvZiBteV9nbG9i YWxfZnVuYywgZ2V0IGFkZHJlc3Mgb2YgbWFpbik6IFdyYXAgdGhlbSB0bwotKwknb3JkZXIxJyBh bmQgJ29yZGVyMicuCi0rCi0gMjAxMi0wNS0yOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotIAotIAkqIGdkYi5zZXJ2ZXIvc29saWItbGlzdC1saWIuYzogTmV3 IGZpbGUuCi0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29kZV9lbGltLmV4cAkyMDEy LzAxLzE2IDE2OjIxOjQ0CTEuNAotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvZGVf ZWxpbS5leHAJMjAxMi8wNi8wMyAxNzowNjowNAkxLjUKLUBAIC05NSwxNiArOTUsMTYgQEAKLSBn ZGJfZXhpdAotIGdkYl9zdGFydAotIAotLWdkYl90ZXN0ICJhZGQtc3ltYm9sLWZpbGUgJHtiaW5m aWxlMX0gMHgxMDAwMDAiIFwKLStnZGJfdGVzdCAic3ltYm9sLWZpbGUgJHtiaW5maWxlMX0iIFwK LSAJIlJlYWRpbmcgc3ltYm9scyBmcm9tIC4qJHt0ZXN0ZmlsZTF9XFwuXFwuXFwuZG9uZVxcLih8 XHJcblVzaW5nIGhvc3QgbGlidGhyZWFkX2RiIGxpYnJhcnkgLipsaWJ0aHJlYWRfZGIuc28uKlxc LikiIFwKLS0JImFkZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxlMX0gMHgxMDAwMDAiIFwKLS0JImFk ZCBzeW1ib2wgdGFibGUgZnJvbSBmaWxlIFwiLioke3Rlc3RmaWxlMX1cIiBhdFxbIFx0XHJcblxd K1wudGV4dF9hZGRyID0gMHgxMDAwMDBcW1xyXG5cXStcXCh5IG9yIG5cXCkgIiBcCi0tCSJ5Igot Kwkic3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTF9IgotIAotLXRlc3RfZWxpbWluYXRlZF92YXIgbXlf Z2xvYmFsX3N5bWJvbAotLXRlc3RfZWxpbWluYXRlZF92YXIgbXlfc3RhdGljX3N5bWJvbAotLXRl c3RfZWxpbWluYXRlZF92YXIgbXlfZ2xvYmFsX2Z1bmMKLS1ub3RfbnVsbF92YXJfYWRkcmVzcyBt YWluCi0rd2l0aF90ZXN0X3ByZWZpeCAic2luZ2xlIHBzeW10YWJzIiB7Ci0rICAgIHRlc3RfZWxp bWluYXRlZF92YXIgbXlfZ2xvYmFsX3N5bWJvbAotKyAgICB0ZXN0X2VsaW1pbmF0ZWRfdmFyIG15 X3N0YXRpY19zeW1ib2wKLSsgICAgdGVzdF9lbGltaW5hdGVkX3ZhciBteV9nbG9iYWxfZnVuYwot KyAgICBub3RfbnVsbF92YXJfYWRkcmVzcyBtYWluCi0rfQotIAotICMgU2FtZSB0aGluZyBmb3Ig c3ltdGFicwotIAotQEAgLTExNSwxMCArMTE1LDEyIEBACi0gZ2RiX3N0YXJ0Ci0gc2V0IEdEQkZM QUdTICRzYXZlZF9nZGJmbGFncwotIAotLXRlc3RfZWxpbWluYXRlZF92YXIgbXlfZ2xvYmFsX3N5 bWJvbAotLXRlc3RfZWxpbWluYXRlZF92YXIgbXlfc3RhdGljX3N5bWJvbAotLXRlc3RfZWxpbWlu YXRlZF92YXIgbXlfZ2xvYmFsX2Z1bmMKLS1ub3RfbnVsbF92YXJfYWRkcmVzcyBtYWluCi0rd2l0 aF90ZXN0X3ByZWZpeCAic2luZ2xlIHN5bXRhYnMiIHsKLSsgICAgdGVzdF9lbGltaW5hdGVkX3Zh ciBteV9nbG9iYWxfc3ltYm9sCi0rICAgIHRlc3RfZWxpbWluYXRlZF92YXIgbXlfc3RhdGljX3N5 bWJvbAotKyAgICB0ZXN0X2VsaW1pbmF0ZWRfdmFyIG15X2dsb2JhbF9mdW5jCi0rICAgIG5vdF9u dWxsX3Zhcl9hZGRyZXNzIG1haW4KLSt9Ci0gCi0gIyBiaW5maWxlMiBjb250YWlucyB0aGUgc3lt Ym9scyB0aGF0IGhhdmUgYmVlbiBlbGltaW5hdGVkIGluIGJpbmZpbGUxLiBDaGVjawotICMgdGhl IGVsaW1pbmF0ZWQgc3ltYm9scyBkb2VzIG5vdCBoaWRlIHRoZXNlIHZhbGlkIG9uZXMuCi1AQCAt MTM4LDEwICsxNDAsMTIgQEAKLSAJImFkZCBzeW1ib2wgdGFibGUgZnJvbSBmaWxlIFwiLioke3Rl c3RmaWxlMn1cIiBhdFxbIFx0XHJcblxdK1wudGV4dF9hZGRyID0gMHgyMDAwMDBcW1xyXG5cXStc XCh5IG9yIG5cXCkgIiBcCi0gCSJ5IgotIAotLW5vdF9udWxsX3Zhcl9hZGRyZXNzIG15X2dsb2Jh bF9zeW1ib2wKLS1ub3RfbnVsbF92YXJfYWRkcmVzcyBteV9zdGF0aWNfc3ltYm9sCi0tbm90X251 bGxfdmFyX2FkZHJlc3MgbXlfZ2xvYmFsX2Z1bmMKLS1ub3RfbnVsbF92YXJfYWRkcmVzcyBtYWlu Ci0rd2l0aF90ZXN0X3ByZWZpeCAib3JkZXIxIiB7Ci0rICAgIG5vdF9udWxsX3Zhcl9hZGRyZXNz IG15X2dsb2JhbF9zeW1ib2wKLSsgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbXlfc3RhdGljX3N5 bWJvbAotKyAgICBub3RfbnVsbF92YXJfYWRkcmVzcyBteV9nbG9iYWxfZnVuYwotKyAgICBub3Rf bnVsbF92YXJfYWRkcmVzcyBtYWluCi0rfQotIAotICMgU2FtZSB0aGluZywgYnV0IGxvYWRpbmcg YmluZmlsZTIgYmVmb3JlIGJpbmZpbGUxLgotIAotQEAgLTE2MCw5ICsxNjQsOSBAQAotIAkiYWRk IHN5bWJvbCB0YWJsZSBmcm9tIGZpbGUgXCIuKiR7dGVzdGZpbGUxfVwiIGF0XFsgXHRcclxuXF0r XC50ZXh0X2FkZHIgPSAweDEwMDAwMFxbXHJcblxdK1xcKHkgb3IgblxcKSAiIFwKLSAJInkiCi0g Ci0tbm90X251bGxfdmFyX2FkZHJlc3MgbXlfZ2xvYmFsX3N5bWJvbAotLW5vdF9udWxsX3Zhcl9h ZGRyZXNzIG15X3N0YXRpY19zeW1ib2wKLS1ub3RfbnVsbF92YXJfYWRkcmVzcyBteV9nbG9iYWxf ZnVuYwotLW5vdF9udWxsX3Zhcl9hZGRyZXNzIG1haW4KLS0KLS0KLSt3aXRoX3Rlc3RfcHJlZml4 ICJvcmRlcjIiIHsKLSsgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbXlfZ2xvYmFsX3N5bWJvbAot KyAgICBub3RfbnVsbF92YXJfYWRkcmVzcyBteV9zdGF0aWNfc3ltYm9sCi0rICAgIG5vdF9udWxs X3Zhcl9hZGRyZXNzIG15X2dsb2JhbF9mdW5jCi0rICAgIG5vdF9udWxsX3Zhcl9hZGRyZXNzIG1h aW4KLSt9Ci0KLQotCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0w Ni9tc2cwMDA2Ni5odG1sCi1TdWJqZWN0OiBbY29tbWl0IDIvMl0gdGVzdHN1aXRlOiBjb2RlX2Vs aW0uZXhwOiBGaXggZmFsc2UgRkFJTAotCi1IaSwKLQotd2l0aCBGZWRvcmEgMTggeDg2XzY0IChS YXdoaWRlKSB0aGVyZSBpcyBhIGZhbHNlIEZBSWwgc2luY2U6Ci0yMTY3OTMxY2Y3MGY5MTIwNmVm YjhiMDFlODQ4YTU1ZDgyYTM0N2NlIGlzIHRoZSBmaXJzdCBiYWQgY29tbWl0Ci1BdXRob3I6IFRv bSBUcm9tZXkgPHRyb21leUByZWRoYXQuY29tPgotRGF0ZTogICBGcmkgTWF5IDE4IDE1OjMxOjM5 IDIwMTIgKzAwMDAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/ aWQ9MTM5MDcKLQotIHByaW50ICZteV9nbG9iYWxfc3ltYm9sCi0tJDEgPSAoaW50ICopIDB4ODA0 YTAwNAotLShnZGIpIFBBU1M6IGdkYi5iYXNlL2NvZGVfZWxpbS5leHA6IGdldCBhZGRyZXNzIG9m IG15X2dsb2JhbF9zeW1ib2wKLSskMSA9IChpbnQgKikgMHg4MDRhMDA0IDxjb21wbGV0ZWQuNTcz Mj4KLSsoZ2RiKSBGQUlMOiBnZGIuYmFzZS9jb2RlX2VsaW0uZXhwOiBnZXQgYWRkcmVzcyBvZiBt eV9nbG9iYWxfc3ltYm9sCi0KLU5vdGhpbmcgcmVhbGx5IGNoYW5nZWQsIGp1c3QgR0RCIG5vdyBw cmludHMgPGNvbXBsZXRlZC41NzMyPiBhbmQgdGhlIHRlc3RjYXNlCi1leHBlY3RzIGVpdGhlciBu b25lIG9yIDxteV9nbG9iYWxfc3ltYm9sPiBzdWZmaXguCi0KLVRoaXMgaXMgYmVjYXVzZSB0aGUg dHdvIHN5bWJvbCBmaWxlcyAodGhlaXIgc2VjdGlvbnMgLmRhdGEvLmJzcykgaGF2ZQotb3Zlcmxh cHBlZCBzbyBHREIgY2hvb3NlcyByYW5kb21seSB3aGljaCBzeW1ib2wgdG8gZGlzcGxheS4gIEFu ZCBzaW5jZQotRmVkb3JhIDE4IEdDQyBwdXRzIHRoZXJlIHRoYXQgImNvbXBsZXRlZC41NzMyIiBz eW1ib2wuCi0KLVRoaXMgbWF5IGJlIGJlY2F1c2UgYWRkLXN5bWJvbC1maWxlIEZJTEUgQUREUiBy ZWxvY2F0ZXMgdG8gQUREUiBvbiB0aGUgLnRleHQKLXNlY3Rpb24gYW5kIGxlYXZlcyBvdGhlciBz ZWN0aW9ucyBhdCB0aGVpciBvcmlnaW5hbCBwbGFjZSwgd2hpY2ggaXMgSU1PIGEgYml0Ci11bmV4 cGVjdGVkOyBpdCBpcyBhIEZBUSBwZW9wbGUgZXhwZWN0IG1vcmUgQUREUiB0byBiZSByZWxvY2F0 aW9uIGRpc3BsYWNlbWVudAotKGFuZCBub3QgcmVsYXRpdmUgdG8gLnRleHQgYW5kIG5vdCBsaW1p dGVkIHRvIC50ZXh0KS4gIEJ1dCB0aGlzIGlzIHJlYWxseQotb3V0c2lkZSBvZiB0aGUgc2NvcGUg b2YgdGhpcyB0ZXN0Y2FzZSBmYWxzZSBGQUlMLgotCi1DaGVja2VkIGluLgotCi0KLVRoYW5rcywK LUphbgotCi0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDYvbXNnMDAw MTIuaHRtbAotCi0jIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTIvMDYvMDMgMTc6 MDY6MDQJMS4zMjEwCi0jIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTIvMDYvMDMg MTc6MTA6MjgJMS4zMjExCi0jIyAtMTEsNiArMTEsMTYgQEAKLSAJKGdldCBhZGRyZXNzIG9mIG15 X2dsb2JhbF9mdW5jLCBnZXQgYWRkcmVzcyBvZiBtYWluKTogV3JhcCB0aGVtIHRvCi0gCSdvcmRl cjEnIGFuZCAnb3JkZXIyJy4KLSAKLSsJKiBnZGIuYmFzZS9jb2RlX2VsaW0uZXhwCi0rCShhZGQt c3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTF9IDB4MTAwMDAwKQotKwkoYWRkLXN5bWJvbC1maWxlICR7 dGVzdGZpbGUyfSAweDIwMDAwMCk6IFdyYXAgdGhlbSB0byAnb3JkZXIxJyBhbmQKLSsJJ29yZGVy MicuCi0rCShvcmRlcjE6IGFkZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxlMX0gMHgxMDAwMDApCi0r CShvcmRlcjE6IGFkZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxlMn0gMHgyMDAwMDApCi0rCShvcmRl cjI6IGFkZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxlMn0gMHgyMDAwMDApCi0rCShvcmRlcjI6IGFk ZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxlMX0gMHgxMDAwMDApOiBBZGQgLXMgLmRhdGEgYW5kIC1z Ci0rCS5ic3MgYXMgYXBwcm9wcmlhdGUuCi0rCi0gMjAxMi0wNS0yOCAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAkqIGdkYi5zZXJ2ZXIvc29saWItbGlz dC1saWIuYzogTmV3IGZpbGUuCi0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29kZV9l bGltLmV4cAkyMDEyLzA2LzAzIDE3OjA2OjA0CTEuNQotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2NvZGVfZWxpbS5leHAJMjAxMi8wNi8wMyAxNzoxMDoyOAkxLjYKLUBAIC0xMjgsMTkg KzEyOCwxOSBAQAotIGdkYl9leGl0Ci0gZ2RiX3N0YXJ0Ci0gCi0tZ2RiX3Rlc3QgImFkZC1zeW1i b2wtZmlsZSAke2JpbmZpbGUxfSAweDEwMDAwMCIgXAotLQkiUmVhZGluZyBzeW1ib2xzIGZyb20g Lioke3Rlc3RmaWxlMX1cXC5cXC5cXC5kb25lXFwuIiBcCi0tCSJhZGQtc3ltYm9sLWZpbGUgJHt0 ZXN0ZmlsZTF9IDB4MTAwMDAwIiBcCi0tCSJhZGQgc3ltYm9sIHRhYmxlIGZyb20gZmlsZSBcIi4q JHt0ZXN0ZmlsZTF9XCIgYXRcWyBcdFxyXG5cXStcLnRleHRfYWRkciA9IDB4MTAwMDAwXFtcclxu XF0rXFwoeSBvciBuXFwpICIgXAotLQkieSIKLS0KLS1nZGJfdGVzdCAiYWRkLXN5bWJvbC1maWxl ICR7YmluZmlsZTJ9IDB4MjAwMDAwIiBcCi0tCSJSZWFkaW5nIHN5bWJvbHMgZnJvbSAuKiR7dGVz dGZpbGUyfVxcLlxcLlxcLmRvbmVcXC4iIFwKLS0JImFkZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxl Mn0gMHgyMDAwMDAiIFwKLS0JImFkZCBzeW1ib2wgdGFibGUgZnJvbSBmaWxlIFwiLioke3Rlc3Rm aWxlMn1cIiBhdFxbIFx0XHJcblxdK1wudGV4dF9hZGRyID0gMHgyMDAwMDBcW1xyXG5cXStcXCh5 IG9yIG5cXCkgIiBcCi0tCSJ5IgotLQotIHdpdGhfdGVzdF9wcmVmaXggIm9yZGVyMSIgewotKyAg ICBnZGJfdGVzdCAiYWRkLXN5bWJvbC1maWxlICR7YmluZmlsZTF9IDB4MTAwMDAwIC1zIC5ic3Mg MHgxMjAwMDAiIFwKLSsJICAgICJSZWFkaW5nIHN5bWJvbHMgZnJvbSAuKiR7dGVzdGZpbGUxfVxc LlxcLlxcLmRvbmVcXC4iIFwKLSsJICAgICJhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTF9IDB4 MTAwMDAwIiBcCi0rCSAgICAiYWRkIHN5bWJvbCB0YWJsZSBmcm9tIGZpbGUgXCIuKiR7dGVzdGZp bGUxfVwiIGF0LipcXCh5IG9yIG5cXCkgIiBcCi0rCSAgICAieSIKLSsKLSsgICAgZ2RiX3Rlc3Qg ImFkZC1zeW1ib2wtZmlsZSAke2JpbmZpbGUyfSAweDIwMDAwMCAtcyAuZGF0YSAweDIxMDAwMCAt cyAuYnNzIDB4MjIwMDAwIiBcCi0rCSAgICAiUmVhZGluZyBzeW1ib2xzIGZyb20gLioke3Rlc3Rm aWxlMn1cXC5cXC5cXC5kb25lXFwuIiBcCi0rCSAgICAiYWRkLXN5bWJvbC1maWxlICR7dGVzdGZp bGUyfSAweDIwMDAwMCIgXAotKwkgICAgImFkZCBzeW1ib2wgdGFibGUgZnJvbSBmaWxlIFwiLiok e3Rlc3RmaWxlMn1cIiBhdC4qXFwoeSBvciBuXFwpICIgXAotKwkgICAgInkiCi0rCi0gICAgIG5v dF9udWxsX3Zhcl9hZGRyZXNzIG15X2dsb2JhbF9zeW1ib2wKLSAgICAgbm90X251bGxfdmFyX2Fk ZHJlc3MgbXlfc3RhdGljX3N5bWJvbAotICAgICBub3RfbnVsbF92YXJfYWRkcmVzcyBteV9nbG9i YWxfZnVuYwotQEAgLTE1MiwxOSArMTUyLDE5IEBACi0gZ2RiX2V4aXQKLSBnZGJfc3RhcnQKLSAK LS1nZGJfdGVzdCAiYWRkLXN5bWJvbC1maWxlICR7YmluZmlsZTJ9IDB4MjAwMDAwIiBcCi0tCSJS ZWFkaW5nIHN5bWJvbHMgZnJvbSAuKiR7dGVzdGZpbGUyfVxcLlxcLlxcLmRvbmVcXC4iIFwKLS0J ImFkZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxlMn0gMHgyMDAwMDAiIFwKLS0JImFkZCBzeW1ib2wg dGFibGUgZnJvbSBmaWxlIFwiLioke3Rlc3RmaWxlMn1cIiBhdFxbIFx0XHJcblxdK1wudGV4dF9h ZGRyID0gMHgyMDAwMDBcW1xyXG5cXStcXCh5IG9yIG5cXCkgIiBcCi0tCSJ5IgotLQotLWdkYl90 ZXN0ICJhZGQtc3ltYm9sLWZpbGUgJHtiaW5maWxlMX0gMHgxMDAwMDAiIFwKLS0JIlJlYWRpbmcg c3ltYm9scyBmcm9tIC4qJHt0ZXN0ZmlsZTF9XFwuXFwuXFwuZG9uZVxcLiIgXAotLQkiYWRkLXN5 bWJvbC1maWxlICR7dGVzdGZpbGUxfSAweDEwMDAwMCIgXAotLQkiYWRkIHN5bWJvbCB0YWJsZSBm cm9tIGZpbGUgXCIuKiR7dGVzdGZpbGUxfVwiIGF0XFsgXHRcclxuXF0rXC50ZXh0X2FkZHIgPSAw eDEwMDAwMFxbXHJcblxdK1xcKHkgb3IgblxcKSAiIFwKLS0JInkiCi0tCi0gd2l0aF90ZXN0X3By ZWZpeCAib3JkZXIyIiB7Ci0rICAgIGdkYl90ZXN0ICJhZGQtc3ltYm9sLWZpbGUgJHtiaW5maWxl Mn0gMHgyMDAwMDAgLXMgLmRhdGEgMHgyMTAwMDAgLXMgLmJzcyAweDIyMDAwMCIgXAotKwkgICAg IlJlYWRpbmcgc3ltYm9scyBmcm9tIC4qJHt0ZXN0ZmlsZTJ9XFwuXFwuXFwuZG9uZVxcLiIgXAot KwkgICAgImFkZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxlMn0gMHgyMDAwMDAiIFwKLSsJICAgICJh ZGQgc3ltYm9sIHRhYmxlIGZyb20gZmlsZSBcIi4qJHt0ZXN0ZmlsZTJ9XCIgYXQuKlxcKHkgb3Ig blxcKSAiIFwKLSsJICAgICJ5IgotKwotKyAgICBnZGJfdGVzdCAiYWRkLXN5bWJvbC1maWxlICR7 YmluZmlsZTF9IDB4MTAwMDAwIC1zIC5ic3MgMHgxMjAwMDAiIFwKLSsJICAgICJSZWFkaW5nIHN5 bWJvbHMgZnJvbSAuKiR7dGVzdGZpbGUxfVxcLlxcLlxcLmRvbmVcXC4iIFwKLSsJICAgICJhZGQt c3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTF9IDB4MTAwMDAwIiBcCi0rCSAgICAiYWRkIHN5bWJvbCB0 YWJsZSBmcm9tIGZpbGUgXCIuKiR7dGVzdGZpbGUxfVwiIGF0LipcXCh5IG9yIG5cXCkgIiBcCi0r CSAgICAieSIKLSsKLSAgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbXlfZ2xvYmFsX3N5bWJvbAot ICAgICBub3RfbnVsbF92YXJfYWRkcmVzcyBteV9zdGF0aWNfc3ltYm9sCi0gICAgIG5vdF9udWxs X3Zhcl9hZGRyZXNzIG15X2dsb2JhbF9mdW5jCi0KLQotCi1odHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLWN2cy8yMDEyLTA2L21zZzAwMDQ3Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9n CTIwMTIvMDYvMDYgMDY6MDQ6NDIJMS4xNDMzMAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIv MDYvMDYgMTY6NTc6MzQJMS4xNDMzMQotIyMgLTEsMyArMSw4IEBACi0rMjAxMi0wNi0wNiAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIGNvbmZpZ3Vy ZS5hYzogTW92ZSBkZXZlbG9wbWVudD10cnVlIGJlbG93IEFDX0lOSVQuCi0rCSogY29uZmlndXJl OiBSZWdlbmVyYXRlLgotKwotIDIwMTItMDYtMDUgIFN0YW4gU2hlYnMgIDxzdGFuQGNvZGVzb3Vy Y2VyeS5jb20+Ci0gCi0gCSogbWkvbWktaW50ZXJwLmMgKG1pX2ludGVycHJldGVyX2luaXQpOiBT ZXQgcmF3X3N0ZG91dCBmcm9tCi0tLS0gc3JjL2dkYi9jb25maWd1cmUJMjAxMi8wNi8wMSAxODoy MDoxOAkxLjM2NgotKysrIHNyYy9nZGIvY29uZmlndXJlCTIwMTIvMDYvMDYgMTY6NTc6MzYJMS4z NjcKLUBAIC0yNjgzLDYgKzI2ODMsMTEgQEAKLSAKLSAKLSAKLSsjIFByb3ZpZGUgbW9yZSB0aG9y b3VnaCB0ZXN0aW5nIGJ5IC1sbWNoZWNrLgotKyMgU2V0IGl0IHRvICd0cnVlJyBmb3IgZGV2ZWxv cG1lbnQgc25hcHNob3RzLCAnZmFsc2UnIGZvciByZWxlYXNlcyBvcgotKyMgcHJlLXJlbGVhc2Vz LgotK2RldmVsb3BtZW50PXRydWUKLSsKLSBhY19leHQ9YwotIGFjX2NwcD0nJENQUCAkQ1BQRkxB R1MnCi0gYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19l eHQgPiY1JwotLS0tIHNyYy9nZGIvY29uZmlndXJlLmFjCTIwMTIvMDYvMDEgMTg6MjA6MTgJMS4x NzcKLSsrKyBzcmMvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLzA2LzA2IDE2OjU3OjM4CTEuMTc4Ci1A QCAtMTgsMTYgKzE4LDE2IEBACi0gCi0gZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2Nv bmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCi0gCi0tZG5sIFByb3ZpZGUgbW9yZSB0 aG9yb3VnaCB0ZXN0aW5nIGJ5IC1sbWNoZWNrLgotLWRubCBTZXQgaXQgdG8gJ3RydWUnIGZvciBk ZXZlbG9wbWVudCBzbmFwc2hvdHMsICdmYWxzZScgZm9yIHJlbGVhc2VzIG9yCi0tZG5sIHByZS1y ZWxlYXNlcy4KLS1kZXZlbG9wbWVudD10cnVlCi0tCi0gQUNfUFJFUkVRKDIuNTkpZG5sCi0gQUNf SU5JVChtYWluLmMpCi0gQUNfQ09ORklHX0hFQURFUihjb25maWcuaDpjb25maWcuaW4pCi0gQU1f TUFJTlRBSU5FUl9NT0RFCi0gCi0rIyBQcm92aWRlIG1vcmUgdGhvcm91Z2ggdGVzdGluZyBieSAt bG1jaGVjay4KLSsjIFNldCBpdCB0byAndHJ1ZScgZm9yIGRldmVsb3BtZW50IHNuYXBzaG90cywg J2ZhbHNlJyBmb3IgcmVsZWFzZXMgb3IKLSsjIHByZS1yZWxlYXNlcy4KLStkZXZlbG9wbWVudD10 cnVlCi0rCi0gQUNfUFJPR19DQwotIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUwotIEFDWF9MQVJH RUZJTEUKCmRpZmYgLS1naXQgYS9nZGIteDg2LW9uc3RhY2stMW9mMi5wYXRjaCBiL2dkYi14ODYt b25zdGFjay0xb2YyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDc1NTZj Li4wMDAwMDAwCi0tLSBhL2dkYi14ODYtb25zdGFjay0xb2YyLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMTE5ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEyLTAzL21zZzAwMzU3Lmh0bWwKLVN1YmplY3Q6IFtwYXRjaCAxLzJdIEZpeCBnZGIuY3AvZ2Ri MjQ5NS5leHAgcmVncmVzc2lvbiB3aXRoIGdjYy00LjcgIzUKLQotSGksCi0KLXBvc3RlZCBhcyBh IG5ldyB0aHJlYWQuCi0KLUFzIGRlc2NyaWJlZCBpbgotCWNhbmNlbDogW3BhdGNoXSBGaXggZ2Ri LmNwL2dkYjI0OTUuZXhwIHJlZ3Jlc3Npb24gd2l0aCBnY2MtNC43ICM0IFtSZTogW3JldmVydF0g UmVncmVzc2lvbiBvbiBQb3dlclBDXQotCWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDEyLTAzL21zZzAwMzIyLmh0bWwKLWp1c3QgT05fU1RBQ0sgaGFkIHNvbWUgcmVncmVz c2lvbnMuCi0KLVRoZSBleHBlY3RhdGlvbnMgaW4gdGhhdCBtYWlsIHdlcmUgd3JvbmcgKGF0IGxl YXN0IHRoYXQgY2xlYW51cC9maXggaXMgbm90Ci1yZXF1aXJlZCBmb3IgZ2RiLmNwL2dkYjI0OTUu ZXhwKS4KLQotVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgaW5mZXJpb3IgY2FsbCByZXR1cm4gcGFk IGJyZWFrcG9pbnQgaW5zdHJ1Y3Rpb24gaXMKLW5ldmVyIHJlbW92ZWQgZXZlbiBhZnRlciBpbmZl cmlvciBjYWxsIGZpbmlzaGVzLiAgSXQgaXMgZXZlbiBzdGlsbCB2aXNpYmxlIGluCi0ibWFpbnRl bmFuY2UgaW5mbyBicmVha3BvaW50cyIuICBUaGlzIGRvZXMgbm90IG1hdHRlciBtdWNoIGZvciBB VF9FTlRSWV9QT0lOVAotYnV0IGZvciBPTl9TVEFDSyBpdCBqdXN0IGNvcnJ1cHRzIHN0YWNrLgot Ci1ObyByZWdyZXNzaW9ucyBvbgote3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYSgxNS1y YXdoaWRlKS9yaGVsKDUtNiktbGludXgtZ251IGFuZCBmb3IKLWdkYnNldmVyIG5vbi1leHRlbmRl ZCBtb2RlLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIwMTItMDMtMDkgIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCVJlbW92ZSBtb21lbnRhcnkg YnJlYWtwb2ludHMgZm9yIGNvbXBsZXRlZCBpbmZlcmlvciBjYWxscy4KLQkqIGR1bW15LWZyYW1l LmM6IEluY2x1ZGUgZ2RidGhyZWFkLmguCi0JKHBvcF9kdW1teV9mcmFtZV9icHQpOiBOZXcgZnVu Y3Rpb24uCi0JKHBvcF9kdW1teV9mcmFtZSk6IEluaXRpYWxpZSBEVU1NWSBlYXJsaWVyLiAgQ2Fs bCBwb3BfZHVtbXlfZnJhbWVfYnB0LgotCi1nZGIvdGVzdHN1aXRlLwotMjAxMi0wMy0wOSAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JUmVtb3ZlIG1vbWVu dGFyeSBicmVha3BvaW50cyBmb3IgY29tcGxldGVkIGluZmVyaW9yIGNhbGxzLgotCSogZ2RiLmJh c2UvY2FsbC1zaWduYWwtcmVzdW1lLmV4cCAobWFpbnRlbmFuY2UgcHJpbnQgZHVtbXktZnJhbWVz KQotCShtYWludGVuYW5jZSBpbmZvIGJyZWFrcG9pbnRzKTogTmV3IHRlc3RzLgotCi1JbmRleDog Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZHVtbXktZnJhbWUuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZHVtbXktZnJhbWUuYwkyMDEyLTAxLTA0IDA5OjE3 OjAwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2R1bW15LWZy YW1lLmMJMjAxMi0wNi0wMiAyMDo0Mjo0MC45MDc3MjAzMjcgKzAyMDAKLUBAIC0yOSw2ICsyOSw3 IEBACi0gI2luY2x1ZGUgImdkYmNtZC5oIgotICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi0gI2lu Y2x1ZGUgIm9ic2VydmVyLmgiCi0rI2luY2x1ZGUgImdkYnRocmVhZC5oIgotIAotIC8qIER1bW15 IGZyYW1lLiAgVGhpcyBzYXZlcyB0aGUgcHJvY2Vzc29yIHN0YXRlIGp1c3QgcHJpb3IgdG8gc2V0 dGluZwotICAgIHVwIHRoZSBpbmZlcmlvciBmdW5jdGlvbiBjYWxsLiAgT2xkZXIgdGFyZ2V0cyBz YXZlIHRoZSByZWdpc3RlcnMKLUBAIC0xMDgsMTkgKzEwOSwzNiBAQCByZW1vdmVfZHVtbXlfZnJh bWUgKHN0cnVjdCBkdW1teV9mcmFtZSAqCi0gICB4ZnJlZSAoZHVtbXkpOwotIH0KLSAKLSsvKiBE ZWxldGUgYW55IGJyZWFrcG9pbnQgQiB3aGljaCBpcyBhIG1vbWVudGFyeSBicmVha3BvaW50IGZv ciByZXR1cm4gZnJvbQotKyAgIGluZmVyaW9yIGNhbGwgbWF0Y2hpbmcgRFVNTVlfVk9JRFAuICAq LwotKwotK3N0YXRpYyBpbnQKLStwb3BfZHVtbXlfZnJhbWVfYnB0IChzdHJ1Y3QgYnJlYWtwb2lu dCAqYiwgdm9pZCAqZHVtbXlfdm9pZHApCi0rewotKyAgc3RydWN0IGR1bW15X2ZyYW1lICpkdW1t eSA9IGR1bW15X3ZvaWRwOwotKwotKyAgaWYgKGItPmRpc3Bvc2l0aW9uID09IGRpc3BfZGVsICYm IGZyYW1lX2lkX2VxIChiLT5mcmFtZV9pZCwgZHVtbXktPmlkKQotKyAgICAgICYmIGItPnRocmVh ZCA9PSBwaWRfdG9fdGhyZWFkX2lkIChpbmZlcmlvcl9wdGlkKSkKLSsgICAgZGVsZXRlX2JyZWFr cG9pbnQgKGIpOwotKwotKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4gICovCi0rICByZXR1 cm4gMDsKLSt9Ci0rCi0gLyogUG9wICpEVU1NWV9QVFIsIHJlc3RvcmluZyBwcm9ncmFtIHN0YXRl IHRvIHRoYXQgYmVmb3JlIHRoZQotICAgIGZyYW1lIHdhcyBjcmVhdGVkLiAgKi8KLSAKLSBzdGF0 aWMgdm9pZAotIHBvcF9kdW1teV9mcmFtZSAoc3RydWN0IGR1bW15X2ZyYW1lICoqZHVtbXlfcHRy KQotIHsKLS0gIHN0cnVjdCBkdW1teV9mcmFtZSAqZHVtbXk7Ci0rICBzdHJ1Y3QgZHVtbXlfZnJh bWUgKmR1bW15ID0gKmR1bW15X3B0cjsKLSsKLSsgIHJlc3RvcmVfaW5mY2FsbF9zdXNwZW5kX3N0 YXRlIChkdW1teS0+Y2FsbGVyX3N0YXRlKTsKLSAKLS0gIHJlc3RvcmVfaW5mY2FsbF9zdXNwZW5k X3N0YXRlICgoKmR1bW15X3B0ciktPmNhbGxlcl9zdGF0ZSk7Ci0rICBpdGVyYXRlX292ZXJfYnJl YWtwb2ludHMgKHBvcF9kdW1teV9mcmFtZV9icHQsIGR1bW15KTsKLSAKLSAgIC8qIHJlc3RvcmVf aW5mY2FsbF9jb250cm9sX3N0YXRlIGZyZWVzIGluZl9zdGF0ZSwKLSAgICAgIGFsbCB0aGF0IHJl bWFpbnMgaXMgdG8gcG9wICpkdW1teV9wdHIuICAqLwotLSAgZHVtbXkgPSAqZHVtbXlfcHRyOwot ICAgKmR1bW15X3B0ciA9IGR1bW15LT5uZXh0OwotICAgeGZyZWUgKGR1bW15KTsKLSAKLUluZGV4 OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY2FsbC1zaWduYWwt cmVzdW1lLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2NhbGwtc2lnbmFsLXJlc3VtZS5leHAJMjAxMi0wMS0yMyAxODox MTo1MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvY2FsbC1zaWduYWwtcmVzdW1lLmV4cAkyMDEyLTA2LTAyIDIwOjQzOjEwLjUy MzcwOTA1MiArMDIwMAotQEAgLTEwMSw2ICsxMDEsMTggQEAgZ2RiX3Rlc3QgImZyYW1lICRmcmFt ZV9udW1iZXIiICIuKiIKLSBnZGJfdGVzdF9ub19vdXRwdXQgInNldCBjb25maXJtIG9mZiIKLSBn ZGJfdGVzdCAicmV0dXJuIiAiIgotIAotKyMgVmVyaWZ5IHRoZXJlIGFyZSBubyByZW1haW5zIG9m IHRoZSBkdW1teSBmcmFtZS4KLStnZGJfdGVzdF9ub19vdXRwdXQgIm1haW50ZW5hbmNlIHByaW50 IGR1bW15LWZyYW1lcyIKLStzZXQgdGVzdCAibWFpbnRlbmFuY2UgaW5mbyBicmVha3BvaW50cyIK LStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rICAgIC1yZSAiY2FsbCBkdW1teS4q XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJZmFpbCAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAiXHJc biRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotKwotICMgUmVzdW1l IGV4ZWN1dGlvbiwgdGhlIHByb2dyYW0gc2hvdWxkIGNvbnRpbnVlIHdpdGhvdXQgYW55IHNpZ25h bC4KLSAKLSBnZGJfdGVzdCAiYnJlYWsgc3RvcF90d28iICJCcmVha3BvaW50IFxbMC05XF0qIGF0 IC4qIgoKZGlmZiAtLWdpdCBhL2dkYi14ODYtb25zdGFjay0yb2YyLnBhdGNoIGIvZ2RiLXg4Ni1v bnN0YWNrLTJvZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0OTkwNGEu LjAwMDAwMDAKLS0tIGEvZ2RiLXg4Ni1vbnN0YWNrLTJvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxNjYgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MTItMDMvbXNnMDAzNTguaHRtbAotU3ViamVjdDogW3BhdGNoIDIvMl0gRml4IGdkYi5jcC9nZGIy NDk1LmV4cCByZWdyZXNzaW9uIHdpdGggZ2NjLTQuNyAjNQotCi1IaSwKLQotaGVyZSBpcyB0aGUg T05fU1RBQ0sgY29kZSBhZ2Fpbiwgd2l0aCBmaXhlZCBhbGlnbm1lbnQgZm9yIGkzODYgU1NFLgot Ci1JdCBpcyBnZW5lcmFsaXplZCBmb3IgYWxsIE9TZXMgb24gaTM4Ni9hbWQ2NC4gIEkgY2FuIG1v dmUgaXQgdG8KLXtpMzg2LGFtZDY0KS1saW51eC10ZGVwLmMgYnV0IEkgZmluZCB0aGlzIGNvZGUg bXVjaCBtb3JlIGxpZ2h0d2VpZ2h0IHRoYW4KLWkzODZfcHVzaF9kdW1teV9jYWxsIHdoaWNoIGlz IGFscmVhZHkgcHJlc2VudCBpbiBpMzg2LXRkZXAuCi0KLU5vIHJlZ3Jlc3Npb25zIG9uCi17eDg2 XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhKDE1LXJhd2hpZGUpL3JoZWwoNS02KS1saW51eC1n bnUgYW5kIGZvcgotZ2Ric2V2ZXIgbm9uLWV4dGVuZGVkIG1vZGUuCi0KLUZvciB4ODZfNjQtZmVk b3JhMTctbGludXgtZ251IGl0IGZpeGVzOgotLUZBSUw6IGdkYi5jcC9nZGIyNDk1LmV4cDogQ2Fs bCBhIGZ1bmN0aW9uIHRoYXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aXRob3V0IGEgaGFuZGxlci4K LS1GQUlMOiBnZGIuY3AvZ2RiMjQ5NS5leHA6IGJ0IGFmdGVyIHJldHVybmluZyBmcm9tIGEgcG9w cGVkIGZyYW1lCi0rUEFTUzogZ2RiLmNwL2dkYjI0OTUuZXhwOiBDYWxsIGEgZnVuY3Rpb24gdGhh dCByYWlzZXMgYW4gZXhjZXB0aW9uIHdpdGhvdXQgYSBoYW5kbGVyLgotK1BBU1M6IGdkYi5jcC9n ZGIyNDk1LmV4cDogYnQgYWZ0ZXIgcmV0dXJuaW5nIGZyb20gYSBwb3BwZWQgZnJhbWUKLQotCi1U aGFua3MsCi1KYW4KLQotCi1nZGIvCi0yMDEyLTAzLTA5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGFtZDY0LWRpY29zLXRkZXAuYyAoYW1kNjRfZGlj b3NfcHVzaF9kdW1teV9jb2RlKTogUmVtb3ZlLgotCShhbWQ2NF9kaWNvc19pbml0X2FiaSk6IFJl bW92ZSBpdHMgaW5zdGFsbG1lbnQuCi0JKiBkaWNvcy10ZGVwLmMgKGRpY29zX2luaXRfYWJpKTog UmVtb3ZlIHRoZQotCXNldF9nZGJhcmNoX2NhbGxfZHVtbXlfbG9jYXRpb24gY2FsbC4gIFVwZGF0 ZSB0aGUgY29tbWVudCBoZXJlLgotCSogaTM4Ni1kaWNvcy10ZGVwLmMgKGkzODZfZGljb3NfcHVz aF9kdW1teV9jb2RlKTogUmVtb3ZlLgotCShpMzg2X2RpY29zX2luaXRfYWJpKTogUmVtb3ZlIGl0 cyBpbnN0YWxsbWVudC4KLQkqIGkzODYtdGRlcC5jIChpMzg2X3B1c2hfZHVtbXlfY29kZSk6IE5l dyBmdW5jdGlvbi4KLQkoaTM4Nl9nZGJhcmNoX2luaXQpOiBDYWxsIHNldF9nZGJhcmNoX2NhbGxf ZHVtbXlfbG9jYXRpb24sIGluc3RhbGwKLQlpMzg2X3B1c2hfZHVtbXlfY29kZS4KLQotLS0tIGEv Z2RiL2FtZDY0LWRpY29zLXRkZXAuYwotKysrIGIvZ2RiL2FtZDY0LWRpY29zLXRkZXAuYwotQEAg LTIzLDI0ICsyMyw2IEBACi0gI2luY2x1ZGUgImFtZDY0LXRkZXAuaCIKLSAjaW5jbHVkZSAiZGlj b3MtdGRlcC5oIgotIAotLXN0YXRpYyBDT1JFX0FERFIKLS1hbWQ2NF9kaWNvc19wdXNoX2R1bW15 X2NvZGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotLQkJCSAgICAgQ09SRV9BRERSIHNwLCBD T1JFX0FERFIgZnVuYWRkciwKLS0JCQkgICAgIHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJn cywKLS0JCQkgICAgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlLAotLQkJCSAgICAgQ09SRV9BRERS ICpyZWFsX3BjLCBDT1JFX0FERFIgKmJwX2FkZHIsCi0tCQkJICAgICBzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlKQotLXsKLS0gIGludCBicGxlbjsKLS0gIENPUkVfQUREUiBicHBjID0gc3A7Ci0t Ci0tICBnZGJhcmNoX2JyZWFrcG9pbnRfZnJvbV9wYyAoZ2RiYXJjaCwgJmJwcGMsICZicGxlbik7 Ci0tICAqYnBfYWRkciA9IHNwIC0gYnBsZW47Ci0tICAqcmVhbF9wYyA9IGZ1bmFkZHI7Ci0tCi0t ICByZXR1cm4gKmJwX2FkZHI7Ci0tfQotLQotIHN0YXRpYyB2b2lkCi0gYW1kNjRfZGljb3NfaW5p dF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gp Ci0gewotQEAgLTQ5LDggKzMxLDYgQEAgYW1kNjRfZGljb3NfaW5pdF9hYmkgKHN0cnVjdCBnZGJh cmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gICBhbWQ2NF9pbml0X2Fi aSAoaW5mbywgZ2RiYXJjaCk7Ci0gCi0gICBkaWNvc19pbml0X2FiaSAoZ2RiYXJjaCk7Ci0tCi0t ICBzZXRfZ2RiYXJjaF9wdXNoX2R1bW15X2NvZGUgKGdkYmFyY2gsIGFtZDY0X2RpY29zX3B1c2hf ZHVtbXlfY29kZSk7Ci0gfQotIAotIHN0YXRpYyBlbnVtIGdkYl9vc2FiaQotLS0tIGEvZ2RiL2Rp Y29zLXRkZXAuYwotKysrIGIvZ2RiL2RpY29zLXRkZXAuYwotQEAgLTQzLDggKzQzLDggQEAgZGlj b3NfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotIAotICAgLyogVGhlcmUncyBu byAoc3RhbmRhcmQgZGVmaW5pdGlvbiBvZikgZW50cnkgcG9pbnQgb3IgYSBndWFyYW50ZWVkCi0g ICAgICB0ZXh0IGxvY2F0aW9uIHdpdGggYSBzeW1ib2wgd2hlcmUgdG8gcGxhY2UgdGhlIGNhbGwg ZHVtbXksIHNvIHdlCi0tICAgICBwdXQgaXQgb24gdGhlIHN0YWNrLiAgKi8KLS0gIHNldF9nZGJh cmNoX2NhbGxfZHVtbXlfbG9jYXRpb24gKGdkYmFyY2gsIE9OX1NUQUNLKTsKLSsgICAgIG5lZWQg aXQgb24gdGhlIHN0YWNrLiAgUmVseSBvbiBpMzg2X2dkYmFyY2hfaW5pdCB1c2VkIGFsc28gZm9y Ci0rICAgICBhbWQ2NCB0byBzZXQgdXAgT05fU1RBQ0sgaW5mZXJpb3IgY2FsbHMuICAqLwotIAot ICAgLyogRElDT1MgcmV3aW5kcyB0aGUgUEMgaXRzZWxmLiAgKi8KLSAgIHNldF9nZGJhcmNoX2Rl Y3JfcGNfYWZ0ZXJfYnJlYWsgKGdkYmFyY2gsIDApOwotLS0tIGEvZ2RiL2kzODYtZGljb3MtdGRl cC5jCi0rKysgYi9nZGIvaTM4Ni1kaWNvcy10ZGVwLmMKLUBAIC0yMiwzMiArMjIsMTIgQEAKLSAj aW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotICNpbmNsdWRlICJkaWNvcy10ZGVwLmgiCi0gCi0tc3Rh dGljIENPUkVfQUREUgotLWkzODZfZGljb3NfcHVzaF9kdW1teV9jb2RlIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwKLS0JCQkgICAgQ09SRV9BRERSIHNwLCBDT1JFX0FERFIgZnVuYWRkciwKLS0J CQkgICAgc3RydWN0IHZhbHVlICoqYXJncywgaW50IG5hcmdzLAotLQkJCSAgICBzdHJ1Y3QgdHlw ZSAqdmFsdWVfdHlwZSwKLS0JCQkgICAgQ09SRV9BRERSICpyZWFsX3BjLCBDT1JFX0FERFIgKmJw X2FkZHIsCi0tCQkJICAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCi0tewotLSAgaW50IGJw bGVuOwotLSAgQ09SRV9BRERSIGJwcGMgPSBzcDsKLS0KLS0gIGdkYmFyY2hfYnJlYWtwb2ludF9m cm9tX3BjIChnZGJhcmNoLCAmYnBwYywgJmJwbGVuKTsKLS0gICpicF9hZGRyID0gc3AgLSBicGxl bjsKLS0gICpyZWFsX3BjID0gZnVuYWRkcjsKLS0KLS0gIHJldHVybiAqYnBfYWRkcjsKLS19Ci0t Ci0gc3RhdGljIHZvaWQKLSBpMzg2X2RpY29zX2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZv IGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotIHsKLSAgIHN0cnVjdCBnZGJhcmNoX3Rk ZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotIAotICAgZGljb3NfaW5pdF9hYmkg KGdkYmFyY2gpOwotLQotLSAgc2V0X2dkYmFyY2hfcHVzaF9kdW1teV9jb2RlIChnZGJhcmNoLCBp Mzg2X2RpY29zX3B1c2hfZHVtbXlfY29kZSk7Ci0gfQotIAotIHN0YXRpYyBlbnVtIGdkYl9vc2Fi aQotLS0tIGEvZ2RiL2kzODYtdGRlcC5jCi0rKysgYi9nZGIvaTM4Ni10ZGVwLmMKLUBAIC0yMzI2 LDYgKzIzMjYsMzAgQEAgaTM4Nl8xNl9ieXRlX2FsaWduX3AgKHN0cnVjdCB0eXBlICp0eXBlKQot ICAgcmV0dXJuIDA7Ci0gfQotIAotKy8qIEltcGxlbWVudGF0aW9uIGZvciBzZXRfZ2RiYXJjaF9w dXNoX2R1bW15X2NvZGUuICAqLwotKwotK3N0YXRpYyBDT1JFX0FERFIKLStpMzg2X3B1c2hfZHVt bXlfY29kZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBzcCwgQ09SRV9BRERS IGZ1bmFkZHIsCi0rCQkgICAgICBzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsIHN0cnVj dCB0eXBlICp2YWx1ZV90eXBlLAotKwkJICAgICAgQ09SRV9BRERSICpyZWFsX3BjLCBDT1JFX0FE RFIgKmJwX2FkZHIsCi0rCQkgICAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQotK3sKLSsg IGludCBicGxlbjsKLSsgIENPUkVfQUREUiBicHBjID0gc3A7Ci0rCi0rICBnZGJhcmNoX2JyZWFr cG9pbnRfZnJvbV9wYyAoZ2RiYXJjaCwgJmJwcGMsICZicGxlbik7Ci0rICBzcCAtPSBicGxlbjsK LSsKLSsgIC8qIGFtZDY0X3B1c2hfZHVtbXlfY2FsbCBkb2VzIGFsaWdubWVudCBvbiBpdHMgb3du IGJ1dCBpMzg2X3B1c2hfZHVtbXlfY2FsbAotKyAgICAgZG9lcyBub3QuICBBQkkgcmVxdWlyZXMg c3RhY2sgYWxpZ25tZW50IGZvciBleGVjdXRhYmxlcyB1c2luZyBTU0UuICAqLwotKyAgaWYgKGdk YmFyY2hfZnJhbWVfYWxpZ25fcCAoZ2RiYXJjaCkpCi0rICAgIHNwID0gZ2RiYXJjaF9mcmFtZV9h bGlnbiAoZ2RiYXJjaCwgc3ApOwotKwotKyAgKmJwX2FkZHIgPSBzcDsKLSsgICpyZWFsX3BjID0g ZnVuYWRkcjsKLSsgIHJldHVybiBzcDsKLSt9Ci0rCi0gc3RhdGljIENPUkVfQUREUgotIGkzODZf cHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHZhbHVlICpm dW5jdGlvbiwKLSAJCSAgICAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIENPUkVfQUREUiBi cF9hZGRyLCBpbnQgbmFyZ3MsCi1AQCAtNzM3Miw2ICs3Mzk2LDggQEAgaTM4Nl9nZGJhcmNoX2lu aXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVz KQotICAgc2V0X2dkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0IChnZGJhcmNoLCBpMzg2X2dldF9s b25nam1wX3RhcmdldCk7Ci0gCi0gICAvKiBDYWxsIGR1bW15IGNvZGUuICAqLwotKyAgc2V0X2dk YmFyY2hfY2FsbF9kdW1teV9sb2NhdGlvbiAoZ2RiYXJjaCwgT05fU1RBQ0spOwotKyAgc2V0X2dk YmFyY2hfcHVzaF9kdW1teV9jb2RlIChnZGJhcmNoLCBpMzg2X3B1c2hfZHVtbXlfY29kZSk7Ci0g ICBzZXRfZ2RiYXJjaF9wdXNoX2R1bW15X2NhbGwgKGdkYmFyY2gsIGkzODZfcHVzaF9kdW1teV9j YWxsKTsKLSAgIHNldF9nZGJhcmNoX2ZyYW1lX2FsaWduIChnZGJhcmNoLCBpMzg2X2ZyYW1lX2Fs aWduKTsKLSAKLQoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggMjRiNzZj OC4uMTMzYmEyMiAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTMwLDEy ICszMCwxMiBAQCBOYW1lOiAlez9zY2xfcHJlZml4fWdkYgogIyBTZXQgdmVyc2lvbiB0byBjb250 ZW50cyBvZiBnZGIvdmVyc2lvbi5pbi4KICMgTk9URTogdGhlIEZTRiBnZGIgdmVyc2lvbnMgYXJl IG51bWJlcmVkIE4uTSBmb3Igb2ZmaWNpYWwgcmVsZWFzZXMsIGxpa2UgNi4zCiAjIGFuZCwgc2lu Y2UgSmFudWFyeSAyMDA1LCBYLlkuWi5kYXRlIGZvciBkYWlseSBzbmFwc2hvdHMsIGxpa2UgNi4z LjUwLjIwMDUwMTEyICMgKGRhaWx5IHNuYXBzaG90IGZyb20gbWFpbGluZSksIG9yIDYuMy4wLjIw MDQwMTEyIChoZWFkIG9mIHRoZSByZWxlYXNlIGJyYW5jaCkuCi0lZ2xvYmFsIHNuYXAgMjAxMjA2 MDMKKyVnbG9iYWwgc25hcCAyMDEyMDcwMwogVmVyc2lvbjogNy40LjUwLiV7c25hcH0KIAogIyBU aGUgcmVsZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3Rh cnQgaXQgYXQgMS4KICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5 IGZ1bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxl YXNlOiA3JXs/ZGlzdH0KK1JlbGVhc2U6IDglez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5k IEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0 aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluCiBHcm91 cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC00ODEsOCArNDgxLDYgQEAgUGF0Y2g1MDQ6IGdk Yi1iejYyMzc0OS1nY29yZS1yZWxyby5wYXRjaAogCiAjIEZpeCBsb3N0IHNpZ2luZm9fdCBpbiBs aW51eC1uYXQgKEJaIDU5MjAzMSkuCiAjPXB1c2gKLVBhdGNoNTEwOiBnZGItYno1OTIwMzEtc2ln aW5mby1sb3N0LTRvZjUucGF0Y2gKLSM9cHVzaAogUGF0Y2g1MTE6IGdkYi1iejU5MjAzMS1zaWdp bmZvLWxvc3QtNW9mNS5wYXRjaAogCiAjIFZlcmlmeSBHREIgUHl0aG9uIGJ1aWx0LWluIGZ1bmN0 aW9uIGdkYi5zb2xpYl9hZGRyZXNzIGV4aXN0cyAoQlogIyA2MzQxMDgpLgpAQCAtNTQyLDM2ICs1 NDAsMjIgQEAgUGF0Y2g2NTM6IGdkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2gKICM9 ZmVkb3JhCiBQYXRjaDY1NzogZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtNW9mNWNvbmZpZ3VyZS5w YXRjaAogCi0jIEZpeCBpbmZlcmlvciBjYWxscywgcGFydGljdWxhcmx5IHVuY2F1Z2h0IHRocm93 biBleGNlcHRpb25zIChCWiA3OTk1MzEpLgotIz1wdXNoK3dvcmsKLVBhdGNoNjU0OiBnZGIteDg2 LW9uc3RhY2stMW9mMi5wYXRjaAotUGF0Y2g2NTg6IGdkYi14ODYtb25zdGFjay0yb2YyLnBhdGNo Ci0KICMgV29ya2Fyb3VuZCBjcmFzaGVzIGZyb20gc3RhbGUgZnJhbWVfaW5mbyBwb2ludGVyIChC WiA4MDQyNTYpLgotIz1wdXNoK3dvcmsKKyM9ZmVkb3JhCiBQYXRjaDY2MTogZ2RiLXN0YWxlLWZy YW1lX2luZm8ucGF0Y2gKIAogIyBXb3JrYXJvdW5kIFBSIGxpYmMvMTQxNjYgZm9yIGluZmVyaW9y IGNhbGxzIG9mIHN0cnN0ci4KICM9cHVzaCt3b3JrOiBCdXQgcHVzaCBpdCB0byBnbGliYy4KIFBh dGNoNjkwOiBnZGItZ2xpYmMtc3Ryc3RyLXdvcmthcm91bmQucGF0Y2gKIAotIyBGaXggZGVqYWdu dS0xLjUtNC5mYzE3IGNvbXBhdGliaWxpdHkgZm9yIEdvIChmb3IgQlogNjM1NjUxKS4KLSM9ZmVk b3JhdGVzdAotUGF0Y2g2OTI6IGdkYi1kZWphZ251LWdvLnBhdGNoCi0KLSMgUmV2ZXJ0IHJlY2Vu dCBicmVha2FnZSBvZiBVTklYIG9iamZpbGVzIG9yZGVyIGZvciBzeW1ib2xzIGxvb2t1cC4KLVBh dGNoNjkzOiBnZGItb2JqZmlsZS1vcmRlci5wYXRjaAotCiAjIERpc2FibGUgLWxtY2hlY2sgaW4g dGhlIGRldmVsb3BtZW50IGJ1aWxkcy4KKyM9ZmVkb3JhCiBQYXRjaDY5NDogZ2RiLWRpc2FibGUt bWNoZWNrLnBhdGNoCiAKICMgRml4IGFzc2VydGlvbiBvbiBzb21lIGZpbGVzIGFzIGdsaWJjLTIu MTUuOTAtOC5mYzE4IChEb3VnIEV2YW5zKS4KKyM9cHVzaAogUGF0Y2g2OTU6IGdkYi1pbmRleC1h c3NlcnQucGF0Y2gKIAotIyBTdXBwb3J0IERXX09QX0dOVV9wYXJhbWV0ZXJfcmVmIGZvciAtTzIg LWcgaW5mZXJpb3JzIChCWiA4MjczNzUpLgotUGF0Y2g2OTY6IGdkYi1wYXJhbWV0ZXJyZWYtMW9m Mi5wYXRjaAotUGF0Y2g2OTc6IGdkYi1wYXJhbWV0ZXJyZWYtMm9mMi5wYXRjaAotCiAjIEluY2x1 ZGUgdGVzdGNhc2UgZm9yIGBVbmFibGUgdG8gc2VlIGEgdmFyaWFibGUgaW5zaWRlIGEgbW9kdWxl IChYTEYpJyAoQlogODIzNzg5KS4KICM9ZmVkb3JhdGVzdAogIytwcGMKQEAgLTU4MSw2ICs1NjUs MTAgQEAgUGF0Y2g2OTg6IGdkYi1yaGVsNS45LXRlc3RjYXNlLXhsZi12YXItaW5zaWRlLW1vZC5w YXRjaAogIz1mZWRvcmF0ZXN0CiBQYXRjaDcwMzogZ2RiLXJoYnotODE4MzQzLXNldC1zb2xpYi1h YnNvbHV0ZS1wcmVmaXgtdGVzdGNhc2UucGF0Y2gKIAorIyBSZXZlcnQgZnVuY3Rpb24gcmV0dXJu aW5nIHBvaW50ZXIgZml4IChQUiA5NTE0KSByZWdyZXNzaW5nIEZlZG9yYSBlcnJubyBwYXRjaC4K KyM9cHVzaAorUGF0Y2g3MTU6IGdkYi1lcnJuby1mdW5jLWRhdGF0eXBlLXJldmVydC5wYXRjaAor CiAlaWYgMCV7IT9yaGVsOjF9IHx8IDAlez9yaGVsfSA+IDYKICMgUkxfU1RBVEVfRkVET1JBX0dE QiB3b3VsZCBub3QgYmUgZm91bmQgZm9yOgogIyBQYXRjaDY0MjogZ2RiLXJlYWRsaW5lNjItYXNr LW1vcmUtcmgucGF0Y2gKQEAgLTY1MSw4ICs2MzksMTEgQEAgQnVpbGRSZXF1aXJlczogcHJlbGlu awogJWVuZGlmCiAlZW5kaWYKICVpZiAwJXshP3JoZWw6MX0KKyMgRmVkb3JhIGFybSBkb2VzIG5v dCB5ZXQgaGF2ZSBmcGMgYnVpbHQuCislaWZuYXJjaCAle2FybX0KIEJ1aWxkUmVxdWlyZXM6IGZw YwogJWVuZGlmCislZW5kaWYKICVpZiAwJXs/ZWw1OjF9CiBCdWlsZFJlcXVpcmVzOiBnY2M0NCBn Y2M0NC1nZm9ydHJhbgogJWVuZGlmCkBAIC03NTgsNiArNzQ5LDcgQEAgcm0gLWYgZ2RiL2p2LWV4 cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoMiAtcDEK IAogJXBhdGNoMjMyIC1wMQorJXBhdGNoNzE1IC1wMQogJXBhdGNoMzQ5IC1wMQogJXBhdGNoMSAt cDEKICVwYXRjaDMgLXAxCkBAIC04NDcsNyArODM5LDYgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdk Yi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoNDkxIC1wMQogJXBh dGNoNDk2IC1wMQogJXBhdGNoNTA0IC1wMQotJXBhdGNoNTEwIC1wMQogJXBhdGNoNTExIC1wMQog JXBhdGNoNTI2IC1wMQogJXBhdGNoNTQyIC1wMQpAQCAtODYxLDE2ICs4NTIsMTAgQEAgcm0gLWYg Z2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBh dGNoNjQzIC1wMQogJXBhdGNoNjUzIC1wMQogJXBhdGNoNjU3IC1wMQotJXBhdGNoNjU0IC1wMQot JXBhdGNoNjU4IC1wMQogJXBhdGNoNjYxIC1wMQogJXBhdGNoNjkwIC1wMQotJXBhdGNoNjkyIC1w MQotJXBhdGNoNjkzIC1wMQogJXBhdGNoNjk0IC1wMQogJXBhdGNoNjk1IC1wMQotJXBhdGNoNjk2 IC1wMQotJXBhdGNoNjk3IC1wMQogJXBhdGNoNjk4IC1wMQogJXBhdGNoNzAzIC1wMQogCkBAIC0x MzYyLDYgKzEzNDcsMTIgQEAgZmkKICVlbmRpZiAjIDAleyE/ZWw1OjF9IHx8ICIle190YXJnZXRf Y3B1fSIgPT0gIm5vYXJjaCIKIAogJWNoYW5nZWxvZworKiBUdWUgSnVsICAzIDIwMTIgSmFuIEty YXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy40LjUwLjIwMTIwNzAzLTgu ZmMxOAorLSBSZWJhc2UgdG8gRlNGIEdEQiA3LjQuNTAuMjAxMjA3MDMuCistIFthcmNoZXItdHJv bWV5LWR3ei1tdWx0aWZpbGUtcmViYXNlXSBNZXJnZSBuZXcgYnJhbmNoIChUb20gVHJvbWV5KS4K Ky0gW2FybV0gPC0td2l0aCB0ZXN0c3VpdGU+OiBEaXNhYmxlIGZwYyBCdWlsZFJlcXVpcmVzIGFz IGl0IGlzIG5vdCB5ZXQgYnVpbHQuCistIFJldmVydCBmdW5jdGlvbiByZXR1cm5pbmcgcG9pbnRl ciBmaXggKFBSIDk1MTQpIHJlZ3Jlc3NpbmcgRmVkb3JhIGVycm5vIHBhdGNoLgorCiAqIFRodSBK dW4gMjEgMjAxMiBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2RqQHJlZGhhdC5jb20+IC0g Ny40LjUwLjIwMTIwNjAzLTcuZmMxOAogLSBJbmNsdWRlIHRlc3RjYXNlIGZvciBCWiA4MTgzNDMu CiAKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCBmZDgzZTZmLi4wOWZjNjU0 IDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEsMiArMSwyIEBACiAwNGU1 YzRiMWI5ZTYzMzQyMmNjNDg5OTBmZTYxOTU4ZCAgbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4 LnRhci5iejIKLWQ2NzY2YzNlYzQ0NDRmMzM3Y2IwZDdhMDI2NTEzMGY5ICBnZGItNy40LjUwLjIw MTIwNjAzLnRhci5iejIKKzkxMjkwZDEwMzQwMTNkYjFmZTAzNWMwODFhZGRlNTE0ICBnZGItNy40 LjUwLjIwMTIwNzAzLnRhci5iejIK