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.2.90.20110411 (which is a 7.3 pre-release). Date: Sat, 27 Jun 2026 23:55:07 GMT Message-ID: <178260450779.1.1698943664232570465.rpms-gdb-09dd7775ebcb@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 09dd7775ebcb29c9c757b3fe0ca9ec2a789058aa ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogMDlkZDc3NzVlYmNiMjljOWM3NTdiM2ZlMGNhOWVjMmE3ODkw NThhYQogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMS0wNC0xMVQyMjo0ODoxMyswMjow MAogICAgICAgICAgICBTdGF0cyAgOiArODI1Ly0yNDAzIGluIDEyIGZpbGUocykKICAgICAgICAg ICAgVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nZGIvYy8wOWRk Nzc3NWViY2IyOWM5Yzc1N2IzZmUwY2E5ZWMyYTc4OTA1OGFhP2JyYW5jaD1nZGItMTcuMi1yZWJh c2UtZjQ0CgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIFJlYmFzZSB0byBGU0YgR0RCIDcu Mi45MC4yMDExMDQxMSAod2hpY2ggaXMgYSA3LjMgcHJlLXJlbGVhc2UpLgpJbmNsdWRlIHRoZSBw cm9wZXIgZml4IGZvciBhbm9ueW1vdXMgc3RydWN0IHR5cGVkZWZzIChUb20gVHJvbWV5LCBCWiA2 NzIyMzApLgoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCBi MWRhMzA3Li5iMDAyYmYzIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUK QEAgLTEsMiArMSwyIEBACiAvbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKLS9n ZGItNy4yLjUwLjIwMTEwMzI4LnRhci5iejIKKy9nZGItNy4yLjkwLjIwMTEwNDExLnRhci5iejIK CmRpZmYgLS1naXQgYS9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaCBiL2dkYi02LjMt cmVhZG5ldmVyLTIwMDUwOTA3LnBhdGNoCmluZGV4IGQ3M2NkODYuLjE2NzE1NDYgMTAwNjQ0Ci0t LSBhL2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3LnBhdGNoCisrKyBiL2dkYi02LjMtcmVhZG5l dmVyLTIwMDUwOTA3LnBhdGNoCkBAIC0xMSwxMCArMTEsMTAgQEAKIAogICAgICAgICAqIGdkYi50 ZXhpbmZvIChGaWxlIE9wdGlvbnMpOiBEb2N1bWVudCAtLXJlYWRuZXZlci4KIAotSW5kZXg6IGdk Yi03LjIuNTAuMjAxMTAxMTcvZ2RiL2RvYy9nZGIudGV4aW5mbworSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA0MTEvZ2RiL2RvYy9nZGIudGV4aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAu MjAxMTAxMTcub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDEtMTcgMTU6NDc6MzcuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTEtMDEtMTcgMTU6NTA6NDEuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi45MC4yMDEx MDQxMS5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wNC0xMSAxOToxMTo1NS4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAx MS0wNC0xMSAxOToxNTo1MS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0xMDA3LDYgKzEwMDcsMTIgQEAg UmVhZCBlYWNoIHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJvbCB0YQogIHRoZSBkZWZhdWx0LCB3 aGljaCBpcyB0byByZWFkIGl0IGluY3JlbWVudGFsbHkgYXMgaXQgaXMgbmVlZGVkLgogIFRoaXMg bWFrZXMgc3RhcnR1cCBzbG93ZXIsIGJ1dCBtYWtlcyBmdXR1cmUgb3BlcmF0aW9ucyBmYXN0ZXIu CkBAIC0yOCwxMSArMjgsMTEgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2RvYy9n ZGIudGV4aW5mbwogIEBlbmQgdGFibGUKICAKICBAbm9kZSBNb2RlIE9wdGlvbnMKLUluZGV4OiBn ZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9tYWluLmMKK0luZGV4OiBnZGItNy4yLjkwLjIwMTEwNDEx L2dkYi9tYWluLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2Ri L21haW4uYwkyMDExLTAxLTE3IDE1OjUwOjIxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIu NTAuMjAxMTAxMTcvZ2RiL21haW4uYwkyMDExLTAxLTE3IDE1OjUwOjQxLjAwMDAwMDAwMCArMDEw MAotQEAgLTM5NSw2ICszOTUsNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorLS0tIGdk Yi03LjIuOTAuMjAxMTA0MTEub3JpZy9nZGIvbWFpbi5jCTIwMTEtMDQtMTEgMTk6MTE6NTYuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvbWFpbi5jCTIwMTEtMDQt MTEgMTk6MTU6NTEuMDAwMDAwMDAwICswMjAwCitAQCAtMzk4LDYgKzM5OCw3IEBAIGNhcHR1cmVk X21haW4gKHZvaWQgKmRhdGEpCiAgICAgICAgeyJ4ZGIiLCBub19hcmd1bWVudCwgJnhkYl9jb21t YW5kcywgMX0sCiAgICAgICAgeyJkYngiLCBub19hcmd1bWVudCwgJmRieF9jb21tYW5kcywgMX0s CiAgICAgICAgeyJyZWFkbm93Iiwgbm9fYXJndW1lbnQsICZyZWFkbm93X3N5bWJvbF9maWxlcywg MX0sCkBAIC00MCw3ICs0MCw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9tYWlu LmMKICAgICAgICB7InIiLCBub19hcmd1bWVudCwgJnJlYWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwK ICAgICAgICB7InF1aWV0Iiwgbm9fYXJndW1lbnQsICZxdWlldCwgMX0sCiAgICAgICAgeyJxIiwg bm9fYXJndW1lbnQsICZxdWlldCwgMX0sCi1AQCAtMTA2MSw2ICsxMDYyLDcgQEAgT3B0aW9uczpc blxuXAorQEAgLTEwNjQsNiArMTA2NSw3IEBAIE9wdGlvbnM6XG5cblwKICAgIGZwdXRzX3VuZmls dGVyZWQgKF8oIlwKICAgIC0tcXVpZXQgICAgICAgICAgICBEbyBub3QgcHJpbnQgdmVyc2lvbiBu dW1iZXIgb24gc3RhcnR1cC5cblwKICAgIC0tcmVhZG5vdyAgICAgICAgICBGdWxseSByZWFkIHN5 bWJvbCBmaWxlcyBvbiBmaXJzdCBhY2Nlc3MuXG5cCkBAIC00OCwxMCArNDgsMTAgQEAgSW5kZXg6 IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL21haW4uYwogICIpLCBzdHJlYW0pOwogICAgZnB1dHNf dW5maWx0ZXJlZCAoXygiXAogICAgLS1zZT1GSUxFICAgICAgICAgIFVzZSBGSUxFIGFzIHN5bWJv bCBmaWxlIGFuZCBleGVjdXRhYmxlIGZpbGUuXG5cCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDEx Ny9nZGIvc3ltZmlsZS5jCitJbmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvc3ltZmlsZS5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDExNy5vcmlnL2dkYi9zeW1maWxlLmMJ MjAxMS0wMS0xMSAyMjo1MzoyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEw MTE3L2dkYi9zeW1maWxlLmMJMjAxMS0wMS0xNyAxNTo1MDo1My4wMDAwMDAwMDAgKzAxMDAKKy0t LSBnZGItNy4yLjkwLjIwMTEwNDExLm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDExLTAzLTIzIDE5OjIz OjU1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3N5bWZpbGUu YwkyMDExLTA0LTExIDE5OjE1OjUxLjAwMDAwMDAwMCArMDIwMAogQEAgLTgxLDYgKzgxLDcgQEAg c3RhdGljIHZvaWQgY2xlYXJfc3ltdGFiX3VzZXJzX2NsZWFudXAgKAogIAogIC8qIEdsb2JhbCB2 YXJpYWJsZXMgb3duZWQgYnkgdGhpcyBmaWxlLiAgKi8KQEAgLTYwLDE5ICs2MCwxOSBAQCBJbmRl eDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvc3ltZmlsZS5jCiAgCiAgLyogRXh0ZXJuYWwgdmFy aWFibGVzIGFuZCBmdW5jdGlvbnMgcmVmZXJlbmNlZC4gICovCiAgCi1JbmRleDogZ2RiLTcuMi41 MC4yMDExMDExNy9nZGIvZHdhcmYycmVhZC5jCitJbmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9n ZGIvZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDExNy5vcmln L2dkYi9kd2FyZjJyZWFkLmMJMjAxMS0wMS0xNyAxNTo0NzozNy4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9kd2FyZjJyZWFkLmMJMjAxMS0wMS0xNyAxNTo1MDo0 MS4wMDAwMDAwMDAgKzAxMDAKLUBAIC01Nyw2ICs1Nyw3IEBACi0gI2luY2x1ZGUgInZlYy5oIgor LS0tIGdkYi03LjIuOTAuMjAxMTA0MTEub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDQtMTEg MTk6MTE6NTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvZHdh cmYycmVhZC5jCTIwMTEtMDQtMTEgMTk6MTY6MDEuMDAwMDAwMDAwICswMjAwCitAQCAtNTgsNiAr NTgsNyBAQAogICNpbmNsdWRlICJjLWxhbmcuaCIKICAjaW5jbHVkZSAidmFscHJpbnQuaCIKKyAj aW5jbHVkZSA8Y3R5cGUuaD4KICsjaW5jbHVkZSAidG9wLmgiCiAgCiAgI2luY2x1ZGUgPGZjbnRs Lmg+CiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC0xMzUwLDggKzEzNTEsOSBAQCBkd2Fy ZjJfaGFzX2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCitAQCAtMTM1MSw4ICsxMzUyLDkg QEAgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQogICAgICAgIGJmZF9t YXBfb3Zlcl9zZWN0aW9ucyAob2JqZmlsZS0+b2JmZCwgZHdhcmYyX2xvY2F0ZV9zZWN0aW9ucywg TlVMTCk7CiAgICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlID0gb2JqZmlsZTsKICAg ICAgfQpAQCAtODQsMTAgKzg0LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9k d2FyZjJyZWFkLmMKICB9CiAgCiAgLyogV2hlbiBsb2FkaW5nIHNlY3Rpb25zLCB3ZSBjYW4gZWl0 aGVyIGxvb2sgZm9yICIuPG5hbWU+Iiwgb3IgZm9yCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDEx Ny9nZGIvdG9wLmgKK0luZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi90b3AuaAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIvdG9wLmgJMjAxMS0wMS0wMSAx NjozMzoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi90b3Au aAkyMDExLTAxLTE3IDE1OjUwOjQxLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjIuOTAuMjAx MTA0MTEub3JpZy9nZGIvdG9wLmgJMjAxMS0wMS0wMSAxNjozMzoxOC4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi90b3AuaAkyMDExLTA0LTExIDE5OjE1OjUxLjAw MDAwMDAwMCArMDIwMAogQEAgLTYxLDYgKzYxLDcgQEAgZXh0ZXJuIHZvaWQgc2V0X3Byb21wdCAo Y2hhciAqKTsKICAKICAvKiBGcm9tIHJhbmRvbSBwbGFjZXMuICAqLwoKZGlmZiAtLWdpdCBhL2dk Yi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNo CmluZGV4IDhjZTVmMDIuLmU3NDQ3NGEgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2Nh dGUucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaApAQCAtMSw3ICsxLDcg QEAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9jb3JlbG93LmMKK0luZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNDExL2dkYi9jb3JlbG93LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUw LjIwMTEwMzI4Lm9yaWcvZ2RiL2NvcmVsb3cuYwkyMDExLTAyLTI2IDAzOjA3OjA3LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL2NvcmVsb3cuYwkyMDExLTAzLTI4 IDE4OjQxOjIwLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuOTAuMjAxMTA0MTEub3JpZy9n ZGIvY29yZWxvdy5jCTIwMTEtMDItMjYgMDM6MDc6MDcuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMi45MC4yMDExMDQxMS9nZGIvY29yZWxvdy5jCTIwMTEtMDQtMTEgMTk6MTY6MTUuMDAwMDAw MDAwICswMjAwCiBAQCAtNDcsNiArNDcsOSBAQAogICNpbmNsdWRlICJmaWxlbmFtZXMuaCIKICAj aW5jbHVkZSAicHJvZ3NwYWNlLmgiCkBAIC05MCwxMSArOTAsMTEgQEAgSW5kZXg6IGdkYi03LjIu NTAuMjAxMTAzMjgvZ2RiL2NvcmVsb3cuYwogKwkJCSAgIE5VTEwsIE5VTEwsIE5VTEwsCiArCQkJ ICAgJnNldGxpc3QsICZzaG93bGlzdCk7CiAgfQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjgv Z2RiL2RvYy9nZGIudGV4aW5mbworSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL2RvYy9n ZGIudGV4aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAzMjgub3JpZy9nZGIv ZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDMtMjggMTg6NDA6MTUuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMi41MC4yMDExMDMyOC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDMtMjggMTg6NDE6 MjAuMDAwMDAwMDAwICswMjAwCi1AQCAtMTUzNDYsNiArMTUzNDYsMjcgQEAgaW5mb3JtYXRpb24g ZmlsZXMuCistLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8J MjAxMS0wNC0xMSAxOToxNTo1MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjkwLjIwMTEw NDExL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wNC0xMSAxOToxNjoxNS4wMDAwMDAwMDAgKzAy MDAKK0BAIC0xNTM1Niw2ICsxNTM1NiwyNyBAQCBpbmZvcm1hdGlvbiBmaWxlcy4KICAKICBAZW5k IHRhYmxlCiAgCkBAIC0xMjIsMTAgKzEyMiwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMy OC9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGNpbmRleCBAY29kZXsuZ251X2RlYnVnbGlua30gc2Vj dGlvbnMKICBAY2luZGV4IGRlYnVnIGxpbmsgc2VjdGlvbnMKICBBIGRlYnVnIGxpbmsgaXMgYSBz cGVjaWFsIHNlY3Rpb24gb2YgdGhlIGV4ZWN1dGFibGUgZmlsZSBuYW1lZAotSW5kZXg6IGdkYi03 LjIuNTAuMjAxMTAzMjgvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0 MTEvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAzMjgu b3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTEtMDMtMjggMTg6NDA6MTQuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvc29saWItc3ZyNC5jCTIwMTEtMDMtMjggMTg6 NDE6MjAuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dkYi9z b2xpYi1zdnI0LmMJMjAxMS0wNC0xMSAxOToxMTo1NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4yLjkwLjIwMTEwNDExL2dkYi9zb2xpYi1zdnI0LmMJMjAxMS0wNC0xMSAxOToxNjoxNS4wMDAw MDAwMDAgKzAyMDAKIEBAIC0xMTc5LDkgKzExNzksNDkgQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9p ZCkKICAJCSAgICAgc2FmZV9zdHJlcnJvciAoZXJyY29kZSkpOwogIAkgIGVsc2UKQEAgLTE3OSwx NCArMTc5LDE0IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9zb2xpYi1zdnI0LmMK ICAJICAgIH0KICAJICB4ZnJlZSAoYnVmZmVyKTsKICAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEw MzI4L2dkYi9lbGZyZWFkLmMKK0luZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9lbGZyZWFk LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMzI4Lm9yaWcvZ2RiL2VsZnJlYWQu YwkyMDExLTAzLTI4IDE4OjQwOjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuNTAuMjAx MTAzMjgvZ2RiL2VsZnJlYWQuYwkyMDExLTAzLTI4IDE4OjQ1OjM5LjAwMDAwMDAwMCArMDIwMAot QEAgLTQ1LDYgKzQ1LDEwIEBACistLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dkYi9lbGZy ZWFkLmMJMjAxMS0wNC0xMSAxOToxMTo1NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjkw LjIwMTEwNDExL2dkYi9lbGZyZWFkLmMJMjAxMS0wNC0xMSAxOToxNzo0MC4wMDAwMDAwMDAgKzAy MDAKK0BAIC00OSw2ICs0OSwxMCBAQAorICNpbmNsdWRlICJpbmZjYWxsLmgiCisgI2luY2x1ZGUg ImdkYnRocmVhZC5oIgogICNpbmNsdWRlICJyZWdjYWNoZS5oIgotICNpbmNsdWRlICJzdGFwLXBy b2JlLmgiCi0gI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKICsjaW5jbHVkZSAibGliYmZkLmgiCiAr I2luY2x1ZGUgImdkYmNvcmUuaCIKICsjaW5jbHVkZSAiZ2RiY21kLmgiCkBAIC0xOTQsMTMgKzE5 NCwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvZWxmcmVhZC5jCiAgCiAgZXh0 ZXJuIHZvaWQgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCk7CiAgCi1AQCAtMTA3MiwxNiArMTA3 Niw2NSBAQCBlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIChzdHJ1Ci0gICB1cGRh dGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKGIsIHNhbHMpOworQEAgLTEwNzcsMTYgKzEwODEsNjUg QEAgZWxmX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCAoc3RydQorICAgdXBkYXRlX2Jy ZWFrcG9pbnRfbG9jYXRpb25zIChiLCBzYWxzLCBzYWxzX2VuZCk7CiAgfQogIAotKy8qIExvY2F0 ZSBOVF9HTlVfQlVJTERfSUQgYW5kIHJldHVybiBpdHMgbWF0Y2hpbmcgZGVidWcgZmlsZW5hbWUu Ci0rICAgRklYTUU6IE5PVEUgZGVjb2Rpbmcgc2hvdWxkIGJlIHVuaWZpZWQgd2l0aCB0aGUgQkZE IGNvcmUgbm90ZXMgZGVjb2RpbmcuICAqLwotKwogKyNkZWZpbmUgQlVJTERfSURfVkVSQk9TRV9O T05FIDAKICsjZGVmaW5lIEJVSUxEX0lEX1ZFUkJPU0VfRklMRU5BTUVTIDEKICsjZGVmaW5lIEJV SUxEX0lEX1ZFUkJPU0VfQklOQVJZX1BBUlNFIDIKQEAgLTIyMCw2ICsyMTcsOSBAQCBJbmRleDog Z2RiLTcuMi41MC4yMDExMDMyOC9nZGIvZWxmcmVhZC5jCiAgICB9OwogIAogLS8qIExvY2F0ZSBO VF9HTlVfQlVJTERfSUQgZnJvbSBBQkZEIGFuZCByZXR1cm4gaXRzIGNvbnRlbnQuICAqLworKy8q IExvY2F0ZSBOVF9HTlVfQlVJTERfSUQgYW5kIHJldHVybiBpdHMgbWF0Y2hpbmcgZGVidWcgZmls ZW5hbWUuCisrICAgRklYTUU6IE5PVEUgZGVjb2Rpbmcgc2hvdWxkIGJlIHVuaWZpZWQgd2l0aCB0 aGUgQkZEIGNvcmUgbm90ZXMgZGVjb2RpbmcuICAqLworKwogK3N0cnVjdCBidWlsZF9pZCAqCiAr YnVpbGRfaWRfYnVmX2dldCAoYmZkICp0ZW1wbCwgZ2RiX2J5dGUgKmJ1ZiwgYmZkX3NpemVfdHlw ZSBzaXplKQogK3sKQEAgLTI2Miw3ICsyNjIsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMy OC9nZGIvZWxmcmVhZC5jCiAgewogICAgc3RydWN0IGJ1aWxkX2lkICpyZXR2YWw7CiAgCi1AQCAt MTA5Nyw2ICsxMTUwLDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQpCitAQCAtMTEw Miw2ICsxMTU1LDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQpCiAgICByZXR1cm4g cmV0dmFsOwogIH0KICAKQEAgLTYxMSw3ICs2MTEsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEx MDMyOC9nZGIvZWxmcmVhZC5jCiAgLyogUmV0dXJuIGlmIEZJTEVOQU1FIGhhcyBOVF9HTlVfQlVJ TERfSUQgbWF0Y2hpbmcgdGhlIENIRUNLIHZhbHVlLiAgKi8KICAKICBzdGF0aWMgaW50Ci1AQCAt MTExMSw3ICsxNTA2LDcgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFyICpmaWxlbmFtZSwg cworQEAgLTExMTYsNyArMTUxMSw3IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3QgY2hhciAqZmls ZW5hbWUsIHMKICAgIGlmIChhYmZkID09IE5VTEwpCiAgICAgIHJldHVybiAwOwogIApAQCAtNjIw LDcgKzYyMCw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9lbGZyZWFkLmMKICAK ICAgIGlmIChmb3VuZCA9PSBOVUxMKQogICAgICB3YXJuaW5nIChfKCJGaWxlIFwiJXNcIiBoYXMg bm8gYnVpbGQtaWQsIGZpbGUgc2tpcHBlZCIpLCBmaWxlbmFtZSk7Ci1AQCAtMTEyOSwxNCArMTUy NCwxNiBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCitAQCAtMTEz NCwxNCArMTUyOSwxNiBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBz CiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTY0MSw3ICs2NDEsNyBAQCBJbmRleDogZ2Ri LTcuMi41MC4yMDExMDMyOC9nZGIvZWxmcmVhZC5jCiAgCiAgICAvKiBLZWVwIGJhY2t3YXJkIGNv bXBhdGliaWxpdHkgc28gdGhhdCBERUJVR19GSUxFX0RJUkVDVE9SWSBiZWluZyAiIiB3aWxsCiAg ICAgICBjYXVzZSAiLy5idWlsZC1pZC8uLi4iIGxvb2t1cHMuICAqLwotQEAgLTExNjcsNyArMTU2 NCwxMCBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCitAQCAtMTE3 Miw3ICsxNTY5LDEwIEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQK ICAJKnMrKyA9ICcvJzsKICAgICAgICB3aGlsZSAoc2l6ZS0tID4gMCkKICAJcyArPSBzcHJpbnRm IChzLCAiJTAyeCIsICh1bnNpZ25lZCkgKmRhdGErKyk7CkBAIC02NTMsNyArNjUzLDcgQEAgSW5k ZXg6IGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL2VsZnJlYWQuYwogIAogICAgICAgIC8qIGxyZWFs cGF0aCgpIGlzIGV4cGVuc2l2ZSBldmVuIGZvciB0aGUgdXN1YWxseSBub24tZXhpc3RlbnQgZmls ZXMuICAqLwogICAgICAgIGlmIChhY2Nlc3MgKGxpbmssIEZfT0spID09IDApCi1AQCAtMTE4MCwy NiArMTU4MCwyMDEgQEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBidWlsZAor QEAgLTExODUsMjYgKzE1ODUsMjAxIEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1 Y3QgYnVpbGQKICAJfQogIAogICAgICAgIGlmIChyZXR2YWwgIT0gTlVMTCkKQEAgLTg1OSw3ICs4 NTksNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvZWxmcmVhZC5jCiAgICAgICAg eGZyZWUgKGJ1aWxkX2lkKTsKICAgICAgICAvKiBQcmV2ZW50IGxvb3Bpbmcgb24gYSBzdHJpcHBl ZCAuZGVidWcgZmlsZS4gICovCiAgICAgICAgaWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVMTAotQEAg LTEyMTAsNyArMTc4NSw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChz dHIKK0BAIC0xMjE1LDcgKzE3OTAsNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVp bGRpZCAoc3RyCiAgCSAgeGZyZWUgKGJ1aWxkX2lkX25hbWUpOwogIAl9CiAgICAgICAgZWxzZSBp ZiAoYnVpbGRfaWRfbmFtZSAhPSBOVUxMKQpAQCAtODY4LDcgKzg2OCw3IEBAIEluZGV4OiBnZGIt Ny4yLjUwLjIwMTEwMzI4L2dkYi9lbGZyZWFkLmMKICAgICAgfQogICAgcmV0dXJuIE5VTEw7CiAg fQotQEAgLTE0MDgsOSArMTk4MywxMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsCitAQCAtMTQxMyw5ICsxOTg4LDEwIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWwKICAgICAgIGAubm90ZS5nbnUuYnVpbGQtaWQnLiAgKi8KICAgIGVs c2UgaWYgKCFvYmpmaWxlX2hhc19wYXJ0aWFsX3N5bWJvbHMgKG9iamZpbGUpKQogICAgICB7CkBA IC04ODEsNyArODgxLDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL2VsZnJlYWQu YwogIAogICAgICAgIGlmIChkZWJ1Z2ZpbGUgPT0gTlVMTCkKICAJZGVidWdmaWxlID0gZmluZF9z ZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2RlYnVnbGluayAob2JqZmlsZSk7Ci1AQCAtMTQyMiw2ICsx OTk4LDEyIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKK0BAIC0x NDI3LDYgKzIwMDMsMTIgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZp bAogIAkgIHN5bWJvbF9maWxlX2FkZF9zZXBhcmF0ZSAoYWJmZCwgc3ltZmlsZV9mbGFncywgb2Jq ZmlsZSk7CiAgCSAgeGZyZWUgKGRlYnVnZmlsZSk7CiAgCX0KQEAgLTg5NCw3ICs4OTQsNyBAQCBJ bmRleDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvZWxmcmVhZC5jCiAgICAgIH0KICB9CiAgCi1A QCAtMTg3Myw0ICsyNDU1LDE2IEBAIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpCitAQCAtMTkw Niw0ICsyNDg4LDE2IEBAIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpCiAgCiAgICBlbGZfb2Jq ZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YSA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAoKTsKICAg IGdudV9pZnVuY19mbnNfcCA9ICZlbGZfZ251X2lmdW5jX2ZuczsKQEAgLTkxMSwxMCArOTExLDEw IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9lbGZyZWFkLmMKICsKICsgIG9ic2Vy dmVyX2F0dGFjaF9leGVjdXRhYmxlX2NoYW5nZWQgKGRlYnVnX3ByaW50X2V4ZWN1dGFibGVfY2hh bmdlZCk7CiAgfQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL3N5bWZpbGUuaAorSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3N5bWZpbGUuaAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuNTAuMjAxMTAzMjgub3JpZy9nZGIvc3ltZmlsZS5oCTIwMTEtMDMtMjggMTg6NDA6MTQu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvc3ltZmlsZS5oCTIw MTEtMDMtMjggMTg6NDE6MjAuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi45MC4yMDExMDQx MS5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMS0wNC0xMSAxOToxMTo1NS4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9zeW1maWxlLmgJMjAxMS0wNC0xMSAxOToxNjox NS4wMDAwMDAwMDAgKzAyMDAKIEBAIC02MTEsNiArNjExLDEzIEBAIHZvaWQgZnJlZV9zeW1maWxl X3NlZ21lbnRfZGF0YSAoc3RydWN0IHMKICAKICBleHRlcm4gc3RydWN0IGNsZWFudXAgKmluY3Jl bWVudF9yZWFkaW5nX3N5bXRhYiAodm9pZCk7CkBAIC05MjksMTAgKzkyOSwxMCBAQCBJbmRleDog Z2RiLTcuMi41MC4yMDExMDMyOC9nZGIvc3ltZmlsZS5oCiAgLyogRnJvbSBkd2FyZjJyZWFkLmMg Ki8KICAKICBleHRlcm4gaW50IGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKik7Ci1J bmRleDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCitJbmRl eDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDMyOC5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5l eHAJMjAxMS0wMy0yOCAxODo0MDoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIw MTEwMzI4L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wMy0yOCAxODo0MToyMC4wMDAw MDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjkwLjIwMTEwNDExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9s aWIvZ2RiLmV4cAkyMDExLTA0LTExIDE5OjExOjU1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjIuOTAuMjAxMTA0MTEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTA0LTExIDE5OjE2 OjE1LjAwMDAwMDAwMCArMDIwMAogQEAgLTEzODEsNiArMTM4MSwxNiBAQCBwcm9jIGRlZmF1bHRf Z2RiX3N0YXJ0IHsgfSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdpZHRoIHRv IDAuIgogIAl9CkBAIC05NTAsMTAgKzk1MCwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMy OC9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiAgICAgIHJldHVybiAwOwogIH0KICAKLUluZGV4 OiBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCitJ bmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4 cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAzMjgub3JpZy9nZGIvdGVzdHN1aXRl L2xpYi9taS1zdXBwb3J0LmV4cAkyMDExLTAzLTA3IDE3OjAzOjA0LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJ MjAxMS0wMy0yOCAxODo0MToyMC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjkwLjIwMTEw NDExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMS0wMy0wNyAxNzow MzowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi90ZXN0c3Vp dGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTEtMDQtMTEgMTk6MTY6MTUuMDAwMDAwMDAwICswMjAw CiBAQCAtMjIxLDYgKzIyMSwxNiBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsgYXJncyB9 IHsKICAJICAgIH0KICAgICAgCX0KQEAgLTk3MSwxMCArOTcxLDEwIEBAIEluZGV4OiBnZGItNy4y LjUwLjIwMTEwMzI4L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCiAgCiAgICAgIGRl dGVjdF9hc3luYwogIAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL29iamZpbGVzLmgK K0luZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9vYmpmaWxlcy5oCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi41MC4yMDExMDMyOC5vcmlnL2dkYi9vYmpmaWxlcy5oCTIwMTEtMDMtMDcgMTc6 MTc6MjkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvb2JqZmls ZXMuaAkyMDExLTAzLTI4IDE4OjQxOjIwLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuOTAu MjAxMTA0MTEub3JpZy9nZGIvb2JqZmlsZXMuaAkyMDExLTAzLTA3IDE3OjE3OjI5LjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL29iamZpbGVzLmgJMjAxMS0wNC0x MSAxOToxNjoxNS4wMDAwMDAwMDAgKzAyMDAKIEBAIC00NDEsNiArNDQxLDEwIEBAIHN0cnVjdCBv YmpmaWxlCiAgCiAgI2RlZmluZSBPQkpGX1BTWU1UQUJTX1JFQUQgKDEgPDwgNCkKCmRpZmYgLS1n aXQgYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaCBiL2dkYi1hcmNo ZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCmluZGV4IDUwZDk0YTMuLmEwM2Q1MGMg MTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCisr KyBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCkBAIC0xLDkgKzEs OSBAQAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL2JyZWFrcG9pbnQuYworSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL2JyZWFrcG9pbnQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuNTAuMjAxMTAzMjgub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTEtMDMtMjggMTg6NDA6 MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvYnJlYWtwb2lu dC5jCTIwMTEtMDMtMjggMTg6NDU6NTcuMDAwMDAwMDAwICswMjAwCi1AQCAtMTA3MDcsNiArMTA3 MDcsNTAgQEAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYQotICAgdXBk YXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0ICgxKTsKKy0tLSBnZGItNy4yLjkwLjIwMTEwNDExLm9y aWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDExLTA0LTExIDE5OjExOjU1LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL2JyZWFrcG9pbnQuYwkyMDExLTA0LTExIDE5OjE4 OjEwLjAwMDAwMDAwMCArMDIwMAorQEAgLTExMjMzLDYgKzExMjMzLDUwIEBAIHJlX3NldF9icmVh a3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7 CiAgfQogIAogK3ZvaWQKQEAgLTUzLDExICs1MywxMSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEx MDMyOC9nZGIvYnJlYWtwb2ludC5jCiAgLyogUmVzZXQgYSBicmVha3BvaW50IGdpdmVuIGl0J3Mg c3RydWN0IGJyZWFrcG9pbnQgKiBCSU5ULgogICAgIFRoZSB2YWx1ZSB3ZSByZXR1cm4gZW5kcyB1 cCBiZWluZyB0aGUgcmV0dXJuIHZhbHVlIGZyb20gY2F0Y2hfZXJyb3JzLgogICAgIFVudXNlZCBp biB0aGlzIGNhc2UuICAqLwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL2JyZWFrcG9p bnQuaAorSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL2JyZWFrcG9pbnQuaAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAzMjgub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIwMTEt MDMtMjggMTg6NDA6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMyOC9n ZGIvYnJlYWtwb2ludC5oCTIwMTEtMDMtMjggMTg6NDY6MDcuMDAwMDAwMDAwICswMjAwCi1AQCAt MTIxOSw0ICsxMjE5LDcgQEAgZXh0ZXJuIGludCB1c2VyX2JyZWFrcG9pbnRfcCAoc3RydWN0IGJy ZQorLS0tIGdkYi03LjIuOTAuMjAxMTA0MTEub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIwMTEtMDQt MTEgMTk6MTE6NTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIv YnJlYWtwb2ludC5oCTIwMTEtMDQtMTEgMTk6MTc6NTMuMDAwMDAwMDAwICswMjAwCitAQCAtMTI0 NSw0ICsxMjQ1LDcgQEAgZXh0ZXJuIGludCB1c2VyX2JyZWFrcG9pbnRfcCAoc3RydWN0IGJyZQog IAogIGV4dGVybiB2b2lkIG1vZGlmeV9zZW1hcGhvcmUgKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9j YXRpb24sIGludCBzZXQpOwogIApAQCAtNjUsMTAgKzY1LDEwIEBAIEluZGV4OiBnZGItNy4yLjUw LjIwMTEwMzI4L2dkYi9icmVha3BvaW50LmgKICsJCQkJICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRz ICpkZWx0YSk7CiArCiAgI2VuZGlmIC8qICFkZWZpbmVkIChCUkVBS1BPSU5UX0gpICovCi1JbmRl eDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvb2JqZmlsZXMuYworSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA0MTEvZ2RiL29iamZpbGVzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEw MzI4Lm9yaWcvZ2RiL29iamZpbGVzLmMJMjAxMS0wMy0yOCAxODo0MDoxNC4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9vYmpmaWxlcy5jCTIwMTEtMDMtMjggMTg6 NDU6NTcuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dkYi9v YmpmaWxlcy5jCTIwMTEtMDQtMTEgMTk6MTE6NTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu Mi45MC4yMDExMDQxMS9nZGIvb2JqZmlsZXMuYwkyMDExLTA0LTExIDE5OjE3OjUzLjAwMDAwMDAw MCArMDIwMAogQEAgLTg1MSw2ICs4NTEsMTEgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBv YmpmaWxlICpvYmpmaQogICAgICBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+c3ltX3JlbG9j YXRlX3Byb2JlIChvYmpmaWxlLAogIAkJCQkJCSAgICBuZXdfb2Zmc2V0cywgZGVsdGEpOwoKZGlm ZiAtLWdpdCBhL2dkYi1hcmNoZXIucGF0Y2ggYi9nZGItYXJjaGVyLnBhdGNoCmluZGV4IGEyZGQx ZjguLjk4ODYyZjIgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXIucGF0Y2gKKysrIGIvZ2RiLWFyY2hl ci5wYXRjaApAQCAtMiwyNCArMiwyNSBAQCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kv UHJvamVjdEFyY2hlcgogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5j aE1hbmFnZW1lbnQKIAogR0lUIHNuYXBzaG90OgotY29tbWl0IDE2ZjM1YTJjNTU1NTY5NzBlZDEx MTQxOTIwMjMwNTc4MmEwZjc5ZWMKK2NvbW1pdCA0MmZiYzg5ZmQzYTc5N2RhOTg4MGVjYmM0Njdj MzJmMjgyYWNmMzFmCiAKIGJyYW5jaCBgYXJjaGVyJyAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoK IGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYQogYXJjaGVyLWphbmtyYXRvY2h2aWwtd2F0Y2hwb2lu dDMKLWFyY2hlci1qYW5rcmF0b2NodmlsLWlmdW5jCiBhcmNoZXItdHJvbWV5LXB5dGhvbgotYXJj aGVyLXNlcmdpb2RqLXN0YXAKK2FyY2hlci1zZXJnaW9kai1zdGFwLWZlZG9yYTE1amsKIAogCiBk aWZmIC0tZ2l0IGEvYmZkL2VsZi1iZmQuaCBiL2JmZC9lbGYtYmZkLmgKLWluZGV4IDIxZWMzOGYu LjUwYzEyNzIgMTAwNjQ0CitpbmRleCAyMWVjMzhmLi5kNTA4MjNhIDEwMDY0NAogLS0tIGEvYmZk L2VsZi1iZmQuaAogKysrIGIvYmZkL2VsZi1iZmQuaAotQEAgLTE0NzYsNiArMTQ3NiwxMyBAQCBl bnVtCitAQCAtMTQ3Niw2ICsxNDc2LDE1IEBAIGVudW0KICAgIFRhZ19jb21wYXRpYmlsaXR5ID0g MzIKICB9OwogIAorKy8qIFRoZSBmb2xsb3dpbmcgc3RydWN0IHN0b3JlcyBpbmZvcm1hdGlvbiBh Ym91dCBldmVyeSBTeXN0ZW1UYXAgc2VjdGlvbgorKyAgIGZvdW5kIGluIHRoZSBvYmplY3QgZmls ZS4gICovCiArc3RydWN0IHNkdF9ub3RlCiArewogKyAgc3RydWN0IHNkdF9ub3RlICpuZXh0OwpA QCAtMzAsMTAgKzMxLDEzIEBAIGluZGV4IDIxZWMzOGYuLjUwYzEyNzIgMTAwNjQ0CiAgLyogU29t ZSBwcml2YXRlIGRhdGEgaXMgc3Rhc2hlZCBhd2F5IGZvciBmdXR1cmUgdXNlIHVzaW5nIHRoZSB0 ZGF0YSBwb2ludGVyCiAgICAgaW4gdGhlIGJmZCBzdHJ1Y3R1cmUuICAqLwogIAotQEAgLTE2MzMs NiArMTY0MCw4IEBAIHN0cnVjdCBlbGZfb2JqX3RkYXRhCitAQCAtMTYzMyw2ICsxNjQyLDExIEBA IHN0cnVjdCBlbGZfb2JqX3RkYXRhCiAgICBiZmRfc2l6ZV90eXBlIGJ1aWxkX2lkX3NpemU7CiAg ICBiZmRfYnl0ZSAqYnVpbGRfaWQ7CiAgCisrICAvKiBMaW5rZWQtbGlzdCBjb250YWluaW5nIGlu Zm9ybWF0aW9uIGFib3V0IGV2ZXJ5IFN5c3RlbXRhcCBzZWN0aW9uCisrICAgICBmb3VuZCBpbiB0 aGUgb2JqZWN0IGZpbGUuICBFYWNoIHNlY3Rpb24gY29ycmVzcG9uZHMgdG8gb25lIGVudHJ5Cisr ICAgICBpbiB0aGUgbGlzdC4gICovCiArICBzdHJ1Y3Qgc2R0X25vdGUgKnNkdF9ub3RlX2hlYWQ7 CiArCiAgICAvKiBUcnVlIGlmIHRoZSBiZmQgY29udGFpbnMgc3ltYm9scyB0aGF0IGhhdmUgdGhl IFNUVF9HTlVfSUZVTkMKQEAgLTk1LDEwICs5OSwxMCBAQCBpbmRleCBmNjlhYmYyLi4zYzAzOGVi IDEwMDY0NAogIAl9CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2Vm aWxlLmluCi1pbmRleCA0ODliMWU5Li5jMzMyYjFiIDEwMDY0NAoraW5kZXggNmFiZDg3YS4uOTNk OGRhZSAxMDA2NDQKIC0tLSBhL2dkYi9NYWtlZmlsZS5pbgogKysrIGIvZ2RiL01ha2VmaWxlLmlu Ci1AQCAtNzE2LDggKzcxNiw4IEBAIFNGSUxFUyA9IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10 eXBlcHJpbnQuYyBhZGEtdmFscHJpbnQuYyBhZGEtdGFza3MuYyBcCitAQCAtNzIxLDggKzcyMSw4 IEBAIFNGSUxFUyA9IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHJpbnQuYyBhZGEtdmFs cHJpbnQuYyBhZGEtdGFza3MuYyBcCiAgCXNlbnRpbmVsLWZyYW1lLmMgXAogIAlzZXJpYWwuYyBz ZXItYmFzZS5jIHNlci11bml4LmMgXAogIAlzb2xpYi5jIHNvbGliLXRhcmdldC5jIHNvdXJjZS5j IFwKQEAgLTEwOSwxNyArMTEzLDE2IEBAIGluZGV4IDQ4OWIxZTkuLmMzMzJiMWIgMTAwNjQ0CiAg CXRhcmdldC5jIHRhcmdldC1kZXNjcmlwdGlvbnMuYyB0YXJnZXQtbWVtb3J5LmMgXAogIAl0aHJl YWQuYyB0b3AuYyB0cmFjZXBvaW50LmMgXAogIAl0cmFkLWZyYW1lLmMgXAotQEAgLTgwMSw3ICs4 MDEsOCBAQCBhbm5vdGF0ZS5oIHNpbS1yZWduby5oIGRpY3Rpb25hcnkuaCBkZnAuaCBtYWluLmgg ZnJhbWUtdW53aW5kLmgJXAotIHJlbW90ZS1maWxlaW8uaCBpMzg2LWxpbnV4LXRkZXAuaCB2YXgt dGRlcC5oIG9iamMtbGFuZy5oIFwKLSBzZW50aW5lbC1mcmFtZS5oIGJjYWNoZS5oIHN5bWZpbGUu aCB3aW5kb3dzLXRkZXAuaCBsaW51eC10ZGVwLmggXAotIGdkYl91c2xlZXAuaCBqaXQuaCB4bWwt c3lzY2FsbC5oIG1pY3JvYmxhemUtdGRlcC5oIFwKLS1wc3ltdGFiLmggcHN5bXByaXYuaCBwcm9n c3BhY2UuaCBiZmluLXRkZXAuaCBpYTY0LWhwdXgtdGRlcC5oCi0rcHN5bXRhYi5oIHBzeW1wcml2 LmggcHJvZ3NwYWNlLmggYmZpbi10ZGVwLmggaWE2NC1ocHV4LXRkZXAuaCBcCi0rcHl0aG9uL3B5 dGhvbi5oIHB5dGhvbi9weXRob24taW50ZXJuYWwuaAorQEAgLTgxNCw3ICs4MTQsNyBAQCBvc2Rh dGEuaCBwcm9jZnMuaCBweXRob24vcHktZXZlbnQuaCBweXRob24vcHktZXZlbnRzLmggcHl0aG9u L3B5LXN0b3BldmVudC5oIFwKKyBweXRob24vcHl0aG9uLWludGVybmFsLmggcHl0aG9uL3B5dGhv bi5oIHJhdmVuc2Nhci10aHJlYWQuaCByZWNvcmQuaCBcCisgc29saWItZGFyd2luLmggc29saWIt aWE2NC1ocHV4Lmggc29saWItc3B1Lmggd2luZG93cy1uYXQuaCB4Y29mZnJlYWQuaCBcCisgZ251 bGliL2V4dHJhL2FyZy1ub25udWxsLmggZ251bGliL2V4dHJhL2MrK2RlZnMuaCBnbnVsaWIvZXh0 cmEvd2Fybi1vbi11c2UuaCBcCistZ251bGliL3N0ZGRlZi5pbi5oIGlubGluZS1mcmFtZS5oCisr Z251bGliL3N0ZGRlZi5pbi5oIGlubGluZS1mcmFtZS5oIHN0YXAtcHJvYmUuaAogIAogICMgSGVh ZGVyIGZpbGVzIHRoYXQgYWxyZWFkeSBoYXZlIHNyY2RpciBpbiB0aGVtLCBvciB3aGljaCBhcmUg aW4gb2JqZGlyLgogIAotQEAgLTg4Niw3ICs4ODcsNyBAQCBDT01NT05fT0JTID0gJChERVBGSUxF UykgJChDT05GSUdfT0JTKSAkKFlZT0JKKSBcCitAQCAtODk5LDcgKzg5OSw3IEBAIENPTU1PTl9P QlMgPSAkKERFUEZJTEVTKSAkKENPTkZJR19PQlMpICQoWVlPQkopIFwKICAJcHJvbG9ndWUtdmFs dWUubyBtZW1vcnktbWFwLm8gbWVtcmFuZ2UubyB4bWwtc3VwcG9ydC5vIHhtbC1zeXNjYWxsLm8g XAogIAl0YXJnZXQtZGVzY3JpcHRpb25zLm8gdGFyZ2V0LW1lbW9yeS5vIHhtbC10ZGVzYy5vIHht bC1idWlsdGluLm8gXAogIAlpbmZlcmlvci5vIG9zZGF0YS5vIGdkYl91c2xlZXAubyByZWNvcmQu byBnY29yZS5vIFwKQEAgLTEyOCw3ICsxMzEsNyBAQCBpbmRleCA0ODliMWU5Li5jMzMyYjFiIDEw MDY0NAogIAogIFRTT0JTID0gaW5mbG93Lm8KICAKLUBAIC0xMzA3LDYgKzEzMDgsMTIgQEAgc3Rh bXAtaDogJChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdHVzCitAQCAtMTMyMCw2ICsxMzIw LDEyIEBAIHN0YW1wLWg6ICQoc3JjZGlyKS9jb25maWcuaW4gY29uZmlnLnN0YXR1cwogIAkgIENP TkZJR19MSU5LUz0gXAogIAkgICQoU0hFTEwpIGNvbmZpZy5zdGF0dXMKICAKQEAgLTE0Miw3ICsx NDUsNyBAQCBpbmRleCA0ODliMWU5Li5jMzMyYjFiIDEwMDY0NAogIAkkKFNIRUxMKSBjb25maWcu c3RhdHVzIC0tcmVjaGVjawogIAogZGlmZiAtLWdpdCBhL2dkYi9ORVdTIGIvZ2RiL05FV1MKLWlu ZGV4IDIyODg0OTcuLjZkZjk4NjggMTAwNjQ0CitpbmRleCA4NjkyZTJmLi5jMjJiZjBkIDEwMDY0 NAogLS0tIGEvZ2RiL05FV1MKICsrKyBiL2dkYi9ORVdTCiBAQCAtMzYsNiArMzYsMTAgQEAKQEAg LTE1NywxMCArMTYwLDEwIEBAIGluZGV4IDIyODg0OTcuLjZkZjk4NjggMTAwNjQ0CiAgCiAgICAq KiBUaGUgZnVuY3Rpb24gZ2RiLldyaXRlIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsIGtleXdvcmQg J3N0cmVhbScuCiBkaWZmIC0tZ2l0IGEvZ2RiL2FkYS1sYW5nLmMgYi9nZGIvYWRhLWxhbmcuYwot aW5kZXggNTcyOGFjOC4uNzQ0ZDJmYSAxMDA2NDQKK2luZGV4IDBhMGIwOWYuLjQ1NDZlOTMgMTAw NjQ0CiAtLS0gYS9nZGIvYWRhLWxhbmcuYwogKysrIGIvZ2RiL2FkYS1sYW5nLmMKLUBAIC0xMTM5 MSw2ICsxMTM5MSw3IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVjdCBleHByZXNz aW9uICpleHAsIGludCBwYywgaW50ICpvcGxlbnAsCitAQCAtMTE0MjIsNiArMTE0MjIsNyBAQCBh ZGFfb3BlcmF0b3JfbGVuZ3RoIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcGMs IGludCAqb3BsZW5wLAogIAogIHN0YXRpYyBpbnQKICBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCkBAIC0xNjgsNyArMTcxLDcgQEAgaW5kZXggNTcy OGFjOC4uNzQ0ZDJmYSAxMDA2NDQKICAJCSAgICBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0YSksCiAgCQkgICAgdm9pZCAqZGF0YSkKICB7Ci1A QCAtMTE0MDUsMTIgKzExNDA2LDE1IEBAIGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0xMTQzNiwxMiArMTE0MzcsMTUgQEAgYWRhX29wZXJh dG9yX2NoZWNrIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAogIAlicmVhazsKICAK ICAgICAgICBkZWZhdWx0OgpAQCAtNDY4LDEwMiArNDcxLDggQEAgaW5kZXggMDdkNWJjNy4uZmFk ODliMSAxMDA2NDQKICtleHRlcm4gc3RydWN0IG9iamZpbGUgKmJsb2NrX29iamZpbGUgKGNvbnN0 IHN0cnVjdCBibG9jayAqYmxvY2spOwogKwogICNlbmRpZiAvKiBCTE9DS19IICovCi1kaWZmIC0t Z2l0IGEvZ2RiL2Jsb2NrZnJhbWUuYyBiL2dkYi9ibG9ja2ZyYW1lLmMKLWluZGV4IDViYzU5MzAu LjNiNTQ2YTcgMTAwNjQ0Ci0tLS0gYS9nZGIvYmxvY2tmcmFtZS5jCi0rKysgYi9nZGIvYmxvY2tm cmFtZS5jCi1AQCAtMTYzLDYgKzE2Myw3IEBAIHN0YXRpYyBDT1JFX0FERFIgY2FjaGVfcGNfZnVu Y3Rpb25fbG93ID0gMDsKLSBzdGF0aWMgQ09SRV9BRERSIGNhY2hlX3BjX2Z1bmN0aW9uX2hpZ2gg PSAwOwotIHN0YXRpYyBjaGFyICpjYWNoZV9wY19mdW5jdGlvbl9uYW1lID0gMDsKLSBzdGF0aWMg c3RydWN0IG9ial9zZWN0aW9uICpjYWNoZV9wY19mdW5jdGlvbl9zZWN0aW9uID0gTlVMTDsKLStz dGF0aWMgaW50IGNhY2hlX3BjX2Z1bmN0aW9uX2lzX2dudV9pZnVuYyA9IDA7Ci0gCi0gLyogQ2xl YXIgY2FjaGUsIGUuZy4gd2hlbiBzeW1ib2wgdGFibGUgaXMgZGlzY2FyZGVkLiAgKi8KLSAKLUBA IC0xNzMsNiArMTc0LDcgQEAgY2xlYXJfcGNfZnVuY3Rpb25fY2FjaGUgKHZvaWQpCi0gICBjYWNo ZV9wY19mdW5jdGlvbl9oaWdoID0gMDsKLSAgIGNhY2hlX3BjX2Z1bmN0aW9uX25hbWUgPSAoY2hh ciAqKSAwOwotICAgY2FjaGVfcGNfZnVuY3Rpb25fc2VjdGlvbiA9IE5VTEw7Ci0rICBjYWNoZV9w Y19mdW5jdGlvbl9pc19nbnVfaWZ1bmMgPSAwOwotIH0KLSAKLSAvKiBGaW5kcyB0aGUgImZ1bmN0 aW9uIiAodGV4dCBzeW1ib2wpIHRoYXQgaXMgc21hbGxlciB0aGFuIFBDIGJ1dAotQEAgLTE4MCwx NyArMTgyLDE5IEBAIGNsZWFyX3BjX2Z1bmN0aW9uX2NhY2hlICh2b2lkKQotICAgICpOQU1FIGFu ZC9vciAqQUREUkVTUyBjb25kaXRpb25hbGx5IGlmIHRoYXQgcG9pbnRlciBpcyBub24tbnVsbC4K LSAgICBJZiBFTkRBRERSIGlzIG5vbi1udWxsLCB0aGVuIHNldCAqRU5EQUREUiB0byBiZSB0aGUg ZW5kIG9mIHRoZQotICAgIGZ1bmN0aW9uIChleGNsdXNpdmUpLCBidXQgcGFzc2luZyBFTkRBRERS IGFzIG5vbi1udWxsIG1lYW5zIHRoYXQKLS0gICB0aGUgZnVuY3Rpb24gbWlnaHQgY2F1c2Ugc3lt Ym9scyB0byBiZSByZWFkLiAgVGhpcyBmdW5jdGlvbiBlaXRoZXIKLS0gICBzdWNjZWVkcyBvciBm YWlscyAobm90IGhhbGZ3YXkgc3VjY2VlZHMpLiAgSWYgaXQgc3VjY2VlZHMsIGl0IHNldHMKLS0g ICAqTkFNRSwgKkFERFJFU1MsIGFuZCAqRU5EQUREUiB0byByZWFsIGluZm9ybWF0aW9uIGFuZCBy ZXR1cm5zIDEuCi0tICAgSWYgaXQgZmFpbHMsIGl0IHNldHMgKk5BTUUsICpBRERSRVNTLCBhbmQg KkVOREFERFIgdG8gemVybyBhbmQKLS0gICByZXR1cm5zIDAuICAqLwotKyAgIHRoZSBmdW5jdGlv biBtaWdodCBjYXVzZSBzeW1ib2xzIHRvIGJlIHJlYWQuICBJZiBJU19HTlVfSUZVTkNfUCBpcyBw cm92aWRlZAotKyAgICpJU19HTlVfSUZVTkNfUCBpcyBzZXQgdG8gMSBvbiByZXR1cm4gaWYgdGhl IGZ1bmN0aW9uIGlzIFNUVF9HTlVfSUZVTkMuCi0rICAgVGhpcyBmdW5jdGlvbiBlaXRoZXIgc3Vj Y2VlZHMgb3IgZmFpbHMgKG5vdCBoYWxmd2F5IHN1Y2NlZWRzKS4gIElmIGl0Ci0rICAgc3VjY2Vl ZHMsIGl0IHNldHMgKk5BTUUsICpBRERSRVNTLCBhbmQgKkVOREFERFIgdG8gcmVhbCBpbmZvcm1h dGlvbiBhbmQKLSsgICByZXR1cm5zIDEuICBJZiBpdCBmYWlscywgaXQgc2V0cyAqTkFNRSwgKkFE RFJFU1MsICpFTkRBRERSIGFuZAotKyAgICpJU19HTlVfSUZVTkNfUCB0byB6ZXJvIGFuZCByZXR1 cm5zIDAuICAqLwotIAotIC8qIEJhY2t3YXJkIGNvbXBhdGliaWxpdHksIG5vIHNlY3Rpb24gYXJn dW1lbnQuICAqLwotIAotIGludAotLWZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAoQ09SRV9BRERS IHBjLCBjaGFyICoqbmFtZSwgQ09SRV9BRERSICphZGRyZXNzLAotLQkJCSAgQ09SRV9BRERSICpl bmRhZGRyKQotK2ZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbl9nbnVfaWZ1bmMgKENPUkVfQUREUiBw YywgY2hhciAqKm5hbWUsCi0rCQkJCSAgICBDT1JFX0FERFIgKmFkZHJlc3MsIENPUkVfQUREUiAq ZW5kYWRkciwKLSsJCQkJICAgIGludCAqaXNfZ251X2lmdW5jX3ApCi0gewotICAgc3RydWN0IG9i al9zZWN0aW9uICpzZWN0aW9uOwotICAgc3RydWN0IHN5bWJvbCAqZjsKLUBAIC0yNDAsNiArMjQ0 LDcgQEAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1l LCBDT1JFX0FERFIgKmFkZHJlc3MsCi0gCSAgY2FjaGVfcGNfZnVuY3Rpb25faGlnaCA9IEJMT0NL X0VORCAoU1lNQk9MX0JMT0NLX1ZBTFVFIChmKSk7Ci0gCSAgY2FjaGVfcGNfZnVuY3Rpb25fbmFt ZSA9IFNZTUJPTF9MSU5LQUdFX05BTUUgKGYpOwotIAkgIGNhY2hlX3BjX2Z1bmN0aW9uX3NlY3Rp b24gPSBzZWN0aW9uOwotKwkgIGNhY2hlX3BjX2Z1bmN0aW9uX2lzX2dudV9pZnVuYyA9IFRZUEVf R05VX0lGVU5DIChTWU1CT0xfVFlQRSAoZikpOwotIAkgIGdvdG8gcmV0dXJuX2NhY2hlZF92YWx1 ZTsKLSAJfQotICAgICB9Ci1AQCAtMjYyLDEyICsyNjcsMTUgQEAgZmluZF9wY19wYXJ0aWFsX2Z1 bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLCBDT1JFX0FERFIgKmFkZHJlc3MsCi0g CSphZGRyZXNzID0gMDsKLSAgICAgICBpZiAoZW5kYWRkciAhPSBOVUxMKQotIAkqZW5kYWRkciA9 IDA7Ci0rICAgICAgaWYgKGlzX2dudV9pZnVuY19wICE9IE5VTEwpCi0rCSppc19nbnVfaWZ1bmNf cCA9IDA7Ci0gICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAKLSAgIGNhY2hlX3BjX2Z1bmN0aW9u X2xvdyA9IFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKTsKLSAgIGNhY2hlX3BjX2Z1bmN0 aW9uX25hbWUgPSBTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKTsKLSAgIGNhY2hlX3BjX2Z1 bmN0aW9uX3NlY3Rpb24gPSBzZWN0aW9uOwotKyAgY2FjaGVfcGNfZnVuY3Rpb25faXNfZ251X2lm dW5jID0gTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmM7Ci0gCi0g ICAvKiBJZiB0aGUgbWluaW1hbCBzeW1ib2wgaGFzIGEgc2l6ZSwgdXNlIGl0IGZvciB0aGUgY2Fj aGUuCi0gICAgICBPdGhlcndpc2UgdXNlIHRoZSBsZXNzZXIgb2YgdGhlIG5leHQgbWluaW1hbCBz eW1ib2wgaW4gdGhlIHNhbWUKLUBAIC0zMzAsOSArMzM4LDIyIEBAIGZpbmRfcGNfcGFydGlhbF9m dW5jdGlvbiAoQ09SRV9BRERSIHBjLCBjaGFyICoqbmFtZSwgQ09SRV9BRERSICphZGRyZXNzLAot IAkqZW5kYWRkciA9IGNhY2hlX3BjX2Z1bmN0aW9uX2hpZ2g7Ci0gICAgIH0KLSAKLSsgIGlmIChp c19nbnVfaWZ1bmNfcCkKLSsgICAgKmlzX2dudV9pZnVuY19wID0gY2FjaGVfcGNfZnVuY3Rpb25f aXNfZ251X2lmdW5jOwotKwotICAgcmV0dXJuIDE7Ci0gfQotIAotKy8qIFNlZSBmaW5kX3BjX3Bh cnRpYWxfZnVuY3Rpb25fZ251X2lmdW5jLCBvbmx5IHRoZSBJU19HTlVfSUZVTkNfUCBwYXJhbWV0 ZXIKLSsgICBpcyBvbWl0dGVkIGhlcmUgZm9yIGJhY2t3YXJkIEFQSSBjb21wYXRpYmlsaXR5LiAg Ki8KLSsKLStpbnQKLStmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKENPUkVfQUREUiBwYywgY2hh ciAqKm5hbWUsIENPUkVfQUREUiAqYWRkcmVzcywKLSsJCQkgIENPUkVfQUREUiAqZW5kYWRkcikK LSt7Ci0rICByZXR1cm4gZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uX2dudV9pZnVuYyAocGMsIG5h bWUsIGFkZHJlc3MsIGVuZGFkZHIsIE5VTEwpOwotK30KLSsKLSAvKiBSZXR1cm4gdGhlIGlubmVy bW9zdCBzdGFjayBmcmFtZSBleGVjdXRpbmcgaW5zaWRlIG9mIEJMT0NLLCBvciBOVUxMCi0gICAg aWYgdGhlcmUgaXMgbm8gc3VjaCBmcmFtZS4gIElmIEJMT0NLIGlzIE5VTEwsIGp1c3QgcmV0dXJu IE5VTEwuICAqLwotIAogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtw b2ludC5jCi1pbmRleCBkYmQ5NTg4Li5kNTUxZGRkIDEwMDY0NAoraW5kZXggMmEyNWM4ZC4uZThj NzcxYyAxMDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmMKICsrKyBiL2dkYi9icmVha3BvaW50 LmMKIEBAIC02Myw2ICs2Myw4IEBACkBAIC01ODUsNDEgKzQ5NCw3IEBAIGluZGV4IGRiZDk1ODgu LmQ1NTFkZGQgMTAwNjQ0CiAgLyogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGluIGdkYnRrIHNvdXJj ZXMgYW5kIHRodXMgY2FuIG5vdCBiZSBtYWRlCiAgICAgc3RhdGljLiAgKi8KICBzdHJ1Y3QgYnJl YWtwb2ludCAqc2V0X3Jhd19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLUBA IC0xMTU5LDYgKzExNjQsMjUgQEAgd2F0Y2hwb2ludF9pbl90aHJlYWRfc2NvcGUgKHN0cnVjdCBi cmVha3BvaW50ICpiKQotIAkgICAgICAmJiAhaXNfZXhlY3V0aW5nIChpbmZlcmlvcl9wdGlkKSkp OwotIH0KLSAKLSsvKiBTZXQgd2F0Y2hwb2ludCBCIHRvIGRpc3BfZGVsX2F0X25leHRfc3RvcCwg ZXZlbiBpbmNsdWRpbmcgaXRzIHBvc3NpYmxlCi0rICAgYXNzb2NpYXRlZCBicF93YXRjaHBvaW50 X3Njb3BlIGJyZWFrcG9pbnQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rd2F0Y2hwb2ludF9kZWxf YXRfbmV4dF9zdG9wIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKLSt7Ci0rICBnZGJfYXNzZXJ0IChp c193YXRjaHBvaW50IChiKSk7Ci0rCi0rICBpZiAoYi0+cmVsYXRlZF9icmVha3BvaW50ICE9IGIp Ci0rICAgIHsKLSsgICAgICBnZGJfYXNzZXJ0IChiLT5yZWxhdGVkX2JyZWFrcG9pbnQtPnR5cGUg PT0gYnBfd2F0Y2hwb2ludF9zY29wZSk7Ci0rICAgICAgZ2RiX2Fzc2VydCAoYi0+cmVsYXRlZF9i cmVha3BvaW50LT5yZWxhdGVkX2JyZWFrcG9pbnQgPT0gYik7Ci0rICAgICAgYi0+cmVsYXRlZF9i cmVha3BvaW50LT5kaXNwb3NpdGlvbiA9IGRpc3BfZGVsX2F0X25leHRfc3RvcDsKLSsgICAgICBi LT5yZWxhdGVkX2JyZWFrcG9pbnQtPnJlbGF0ZWRfYnJlYWtwb2ludCA9IGItPnJlbGF0ZWRfYnJl YWtwb2ludDsKLSsgICAgICBiLT5yZWxhdGVkX2JyZWFrcG9pbnQgPSBiOwotKyAgICB9Ci0rICBi LT5kaXNwb3NpdGlvbiA9IGRpc3BfZGVsX2F0X25leHRfc3RvcDsKLSt9Ci0rCi0gLyogQXNzdW1p bmcgdGhhdCBCIGlzIGEgd2F0Y2hwb2ludDoKLSAgICAtIFJlcGFyc2Ugd2F0Y2hwb2ludCBleHBy ZXNzaW9uLCBpZiBSRVBBUlNFIGlzIG5vbi16ZXJvCi0gICAgLSBFdmFsdWF0ZSBleHByZXNzaW9u IGFuZCBzdG9yZSB0aGUgcmVzdWx0IGluIEItPnZhbAotQEAgLTEyMTgsMTIgKzEyNDIsMTcgQEAg dXBkYXRlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLCBpbnQgcmVwYXJzZSkKLSAg IHN0cnVjdCBmcmFtZV9pZCBzYXZlZF9mcmFtZV9pZDsKLSAgIGludCBmcmFtZV9zYXZlZDsKLSAK LSsgIGdkYl9hc3NlcnQgKGlzX3dhdGNocG9pbnQgKGIpKTsKLSsKLSAgIC8qIElmIHRoaXMgaXMg YSBsb2NhbCB3YXRjaHBvaW50LCB3ZSBvbmx5IHdhbnQgdG8gY2hlY2sgaWYgdGhlCi0gICAgICB3 YXRjaHBvaW50IGZyYW1lIGlzIGluIHNjb3BlIGlmIHRoZSBjdXJyZW50IHRocmVhZCBpcyB0aGUg dGhyZWFkCi0gICAgICB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgd2F0Y2hwb2ludC4gICov CitAQCAtMTI0OSw2ICsxMjU0LDkgQEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3Bv aW50ICpiLCBpbnQgcmVwYXJzZSkKICAgIGlmICghd2F0Y2hwb2ludF9pbl90aHJlYWRfc2NvcGUg KGIpKQogICAgICByZXR1cm47CiAgCkBAIC02MjksMjIgKzUwNCw3IEBAIGluZGV4IGRiZDk1ODgu LmQ1NTFkZGQgMTAwNjQ0CiAgICBpZiAoYi0+ZGlzcG9zaXRpb24gPT0gZGlzcF9kZWxfYXRfbmV4 dF9zdG9wKQogICAgICByZXR1cm47CiAgIAotQEAgLTE0NTMsMTMgKzE0ODIsNyBAQCB1cGRhdGVf d2F0Y2hwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsIGludCByZXBhcnNlKQotIFdhdGNocG9p bnQgJWQgZGVsZXRlZCBiZWNhdXNlIHRoZSBwcm9ncmFtIGhhcyBsZWZ0IHRoZSBibG9ja1xuXAot IGluIHdoaWNoIGl0cyBleHByZXNzaW9uIGlzIHZhbGlkLlxuIiksCi0gCQkgICAgICAgYi0+bnVt YmVyKTsKLS0gICAgICBpZiAoYi0+cmVsYXRlZF9icmVha3BvaW50KQotLQl7Ci0tCSAgYi0+cmVs YXRlZF9icmVha3BvaW50LT5kaXNwb3NpdGlvbiA9IGRpc3BfZGVsX2F0X25leHRfc3RvcDsKLS0J ICBiLT5yZWxhdGVkX2JyZWFrcG9pbnQtPnJlbGF0ZWRfYnJlYWtwb2ludCA9IE5VTEw7Ci0tCSAg Yi0+cmVsYXRlZF9icmVha3BvaW50PSBOVUxMOwotLQl9Ci0tICAgICAgYi0+ZGlzcG9zaXRpb24g PSBkaXNwX2RlbF9hdF9uZXh0X3N0b3A7Ci0rICAgICAgd2F0Y2hwb2ludF9kZWxfYXRfbmV4dF9z dG9wIChiKTsKLSAgICAgfQotIAotICAgLyogUmVzdG9yZSB0aGUgc2VsZWN0ZWQgZnJhbWUuICAq LwotQEAgLTE1MDEsNiArMTUyNCw0MCBAQCBzaG91bGRfYmVfaW5zZXJ0ZWQgKHN0cnVjdCBicF9s b2NhdGlvbiAqYmwpCitAQCAtMTUyMCw2ICsxNTI4LDQwIEBAIHNob3VsZF9iZV9pbnNlcnRlZCAo c3RydWN0IGJwX2xvY2F0aW9uICpibCkKICAgIHJldHVybiAxOwogIH0KICAKQEAgLTY4NSw3ICs1 NDUsNyBAQCBpbmRleCBkYmQ5NTg4Li5kNTUxZGRkIDEwMDY0NAogIC8qIEluc2VydCBhIGxvdy1s ZXZlbCAiYnJlYWtwb2ludCIgb2Ygc29tZSB0eXBlLiAgQkwgaXMgdGhlIGJyZWFrcG9pbnQKICAg ICBsb2NhdGlvbi4gIEFueSBlcnJvciBtZXNzYWdlcyBhcmUgcHJpbnRlZCB0byBUTVBfRVJST1Jf U1RSRUFNOyBhbmQKICAgICBESVNBQkxFRF9CUkVBS1MsIGFuZCBIV19CUkVBS1BPSU5UX0VSUk9S IGFyZSB1c2VkIHRvIHJlcG9ydCBwcm9ibGVtcy4KLUBAIC0xNTk2LDYgKzE2NTMsOCBAQCBpbnNl cnRfYnBfbG9jYXRpb24gKHN0cnVjdCBicF9sb2NhdGlvbiAqYmwsCitAQCAtMTYxNiw2ICsxNjU4 LDggQEAgaW5zZXJ0X2JwX2xvY2F0aW9uIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsLAogIAkgIGVs c2UKICAJICAgIHZhbCA9IHRhcmdldF9pbnNlcnRfYnJlYWtwb2ludCAoYmwtPmdkYmFyY2gsCiAg CQkJCQkgICAgJmJsLT50YXJnZXRfaW5mbyk7CkBAIC02OTQsNyArNTU0LDcgQEAgaW5kZXggZGJk OTU4OC4uZDU1MWRkZCAxMDA2NDQKICAJfQogICAgICAgIGVsc2UKICAJewotQEAgLTE4NTAsNiAr MTkwOSw3IEBAIGluc2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKK0BAIC0xODcwLDYg KzE5MTQsNyBAQCBpbnNlcnRfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHZvaWQpCiAgICBpbnQgdmFs ID0gMDsKICAgIGludCBkaXNhYmxlZF9icmVha3MgPSAwOwogICAgaW50IGh3X2JyZWFrcG9pbnRf ZXJyb3IgPSAwOwpAQCAtNzAyLDcgKzU2Miw3IEBAIGluZGV4IGRiZDk1ODguLmQ1NTFkZGQgMTAw NjQ0CiAgCiAgICBzdHJ1Y3QgdWlfZmlsZSAqdG1wX2Vycm9yX3N0cmVhbSA9IG1lbV9maWxlb3Bl biAoKTsKICAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwcyA9IG1ha2VfY2xlYW51cF91aV9maWxl X2RlbGV0ZSAodG1wX2Vycm9yX3N0cmVhbSk7Ci1AQCAtMTg3Nyw5ICsxOTM3LDEzIEBAIGluc2Vy dF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKK0BAIC0xODk3LDkgKzE5NDIsMTMgQEAgaW5z ZXJ0X2JyZWFrcG9pbnRfbG9jYXRpb25zICh2b2lkKQogICAgICAgIC8qIEZvciB0YXJnZXRzIHRo YXQgc3VwcG9ydCBnbG9iYWwgYnJlYWtwb2ludHMsIHRoZXJlJ3Mgbm8gbmVlZAogIAkgdG8gc2Vs ZWN0IGFuIGluZmVyaW9yIHRvIGluc2VydCBicmVha3BvaW50IHRvLiAgSW4gZmFjdCwgZXZlbgog IAkgaWYgd2UgYXJlbid0IGF0dGFjaGVkIHRvIGFueSBwcm9jZXNzIHlldCwgd2Ugc2hvdWxkIHN0 aWxsCkBAIC03MTgsNyArNTc4LDcgQEAgaW5kZXggZGJkOTU4OC4uZDU1MWRkZCAxMDA2NDQKICAJ Y29udGludWU7CiAgCiAgICAgICAgdmFsID0gaW5zZXJ0X2JwX2xvY2F0aW9uIChibCwgdG1wX2Vy cm9yX3N0cmVhbSwgJmRpc2FibGVkX2JyZWFrcywKLUBAIC0xOTAzLDEzICsxOTY3LDE5IEBAIGlu c2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKK0BAIC0xOTIzLDEzICsxOTcyLDE5IEBA IGluc2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKICAKICAgICAgICBpZiAoYnB0LT5k aXNwb3NpdGlvbiA9PSBkaXNwX2RlbF9hdF9uZXh0X3N0b3ApCiAgCWNvbnRpbnVlOwpAQCAtNzQ0 LDcgKzYwNCw3IEBAIGluZGV4IGRiZDk1ODguLmQ1NTFkZGQgMTAwNjQ0CiAgICAgICAgaWYgKHNv bWVfZmFpbGVkKQogIAl7CiAgCSAgZm9yIChsb2MgPSBicHQtPmxvYzsgbG9jOyBsb2MgPSBsb2Mt Pm5leHQpCi1AQCAtMjA5MSwxNSArMjE2MSwyNCBAQCBzdHJ1Y3QgYnJlYWtwb2ludF9vYmpmaWxl X2RhdGEKK0BAIC0yMTExLDE1ICsyMTY2LDI0IEBAIHN0cnVjdCBicmVha3BvaW50X29iamZpbGVf ZGF0YQogICAgLyogTWluaW1hbCBzeW1ib2wocykgZm9yICJsb25nam1wIiwgInNpZ2xvbmdqbXAi LCBldGMuIChpZiBhbnkpLiAgKi8KICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9uZ2ptcF9t c3ltW05VTV9MT05HSk1QX05BTUVTXTsKICAKQEAgLTc2OSw3ICs2MjksNyBAQCBpbmRleCBkYmQ5 NTg4Li5kNTUxZGRkIDEwMDY0NAogIC8qIE1pbmltYWwgc3ltYm9sIG5vdCBmb3VuZCBzZW50aW5l bC4gICovCiAgc3RhdGljIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCBtc3ltX25vdF9mb3VuZDsKICAK LUBAIC0yMjA3LDYgKzIyODYsMjkgQEAgY3JlYXRlX2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQg KHZvaWQpCitAQCAtMjIyNyw2ICsyMjkxLDI5IEBAIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVh a3BvaW50ICh2b2lkKQogIAogICAgICAgIGJwX29iamZpbGVfZGF0YSA9IGdldF9icmVha3BvaW50 X29iamZpbGVfZGF0YSAob2JqZmlsZSk7CiAgCkBAIC03OTksNyArNjU5LDcgQEAgaW5kZXggZGJk OTU4OC4uZDU1MWRkZCAxMDA2NDQKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTlVNX0xPTkdKTVBf TkFNRVM7IGkrKykKICAJewogIAkgIHN0cnVjdCBicmVha3BvaW50ICpiOwotQEAgLTIzMTUsNiAr MjQxNywzMSBAQCBjcmVhdGVfZXhjZXB0aW9uX21hc3Rlcl9icmVha3BvaW50ICh2b2lkKQorQEAg LTIzMzUsNiArMjQyMiwzMSBAQCBjcmVhdGVfZXhjZXB0aW9uX21hc3Rlcl9icmVha3BvaW50ICh2 b2lkKQogIAogICAgICAgIGJwX29iamZpbGVfZGF0YSA9IGdldF9icmVha3BvaW50X29iamZpbGVf ZGF0YSAob2JqZmlsZSk7CiAgCkBAIC04MzEsNyArNjkxLDcgQEAgaW5kZXggZGJkOTU4OC4uZDU1 MWRkZCAxMDA2NDQKICAgICAgICBpZiAobXN5bV9ub3RfZm91bmRfcCAoYnBfb2JqZmlsZV9kYXRh LT5leGNlcHRpb25fbXN5bSkpCiAgCWNvbnRpbnVlOwogIAotQEAgLTI1MzMsNiArMjY2MCw4IEBA IHJlbW92ZV9icmVha3BvaW50XzEgKHN0cnVjdCBicF9sb2NhdGlvbiAqYmwsIGluc2VydGlvbl9z dGF0ZV90IGlzKQorQEAgLTI1NTMsNiArMjY2NSw4IEBAIHJlbW92ZV9icmVha3BvaW50XzEgKHN0 cnVjdCBicF9sb2NhdGlvbiAqYmwsIGluc2VydGlvbl9zdGF0ZV90IGlzKQogIAkgICAgdmFsID0g dGFyZ2V0X3JlbW92ZV9od19icmVha3BvaW50IChibC0+Z2RiYXJjaCwgJmJsLT50YXJnZXRfaW5m byk7CiAgCSAgZWxzZQogIAkgICAgdmFsID0gdGFyZ2V0X3JlbW92ZV9icmVha3BvaW50IChibC0+ Z2RiYXJjaCwgJmJsLT50YXJnZXRfaW5mbyk7CkBAIC04NDAsMjMxICs3MDAsNyBAQCBpbmRleCBk YmQ5NTg4Li5kNTUxZGRkIDEwMDY0NAogIAl9CiAgICAgICAgZWxzZQogIAl7Ci1AQCAtMzQ4OSw2 ICszNjE4LDggQEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJzKQotICAgICBjYXNlIGJwX3Ry YWNlcG9pbnQ6Ci0gICAgIGNhc2UgYnBfZmFzdF90cmFjZXBvaW50OgotICAgICBjYXNlIGJwX2pp dF9ldmVudDoKLSsgICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6Ci0rICAgIGNhc2UgYnBf Z251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKLSAgICAgZGVmYXVsdDoKLSAgICAgICByZXN1bHQg PSBQUklOVF9VTktOT1dOOwotICAgICAgIGJyZWFrOwotQEAgLTM3MTQsNiArMzg0NSw4IEBAIHdh dGNocG9pbnRfY2hlY2sgKHZvaWQgKnApCi0gICBnZGJfYXNzZXJ0IChicy0+YnJlYWtwb2ludF9h dCAhPSBOVUxMKTsKLSAgIGIgPSBicy0+YnJlYWtwb2ludF9hdDsKLSAKLSsgIGdkYl9hc3NlcnQg KGlzX3dhdGNocG9pbnQgKGIpKTsKLSsKLSAgIC8qIElmIHRoaXMgaXMgYSBsb2NhbCB3YXRjaHBv aW50LCB3ZSBvbmx5IHdhbnQgdG8gY2hlY2sgaWYgdGhlCi0gICAgICB3YXRjaHBvaW50IGZyYW1l IGlzIGluIHNjb3BlIGlmIHRoZSBjdXJyZW50IHRocmVhZCBpcyB0aGUgdGhyZWFkCi0gICAgICB0 aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgd2F0Y2hwb2ludC4gICovCi1AQCAtMzgyMywxMyAr Mzk1Niw3IEBAIHdhdGNocG9pbnRfY2hlY2sgKHZvaWQgKnApCi0gCQkgICAiIGRlbGV0ZWQgYmVj YXVzZSB0aGUgcHJvZ3JhbSBoYXMgbGVmdCB0aGUgYmxvY2sgaW5cblwKLSB3aGljaCBpdHMgZXhw cmVzc2lvbiBpcyB2YWxpZC5cbiIpOyAgICAgCi0gCi0tICAgICAgaWYgKGItPnJlbGF0ZWRfYnJl YWtwb2ludCkKLS0JewotLQkgIGItPnJlbGF0ZWRfYnJlYWtwb2ludC0+ZGlzcG9zaXRpb24gPSBk aXNwX2RlbF9hdF9uZXh0X3N0b3A7Ci0tCSAgYi0+cmVsYXRlZF9icmVha3BvaW50LT5yZWxhdGVk X2JyZWFrcG9pbnQgPSBOVUxMOwotLQkgIGItPnJlbGF0ZWRfYnJlYWtwb2ludCA9IE5VTEw7Ci0t CX0KLS0gICAgICBiLT5kaXNwb3NpdGlvbiA9IGRpc3BfZGVsX2F0X25leHRfc3RvcDsKLSsgICAg ICB3YXRjaHBvaW50X2RlbF9hdF9uZXh0X3N0b3AgKGIpOwotIAotICAgICAgIHJldHVybiBXUF9E RUxFVEVEOwotICAgICB9Ci1AQCAtNDAzNCw5ICs0MTYxLDcgQEAgYnBzdGF0X2NoZWNrX3dhdGNo cG9pbnQgKGJwc3RhdCBicykKLSAJICAgIGNhc2UgMDoKLSAJICAgICAgLyogRXJyb3IgZnJvbSBj YXRjaF9lcnJvcnMuICAqLwotIAkgICAgICBwcmludGZfZmlsdGVyZWQgKF8oIldhdGNocG9pbnQg JWQgZGVsZXRlZC5cbiIpLCBiLT5udW1iZXIpOwotLQkgICAgICBpZiAoYi0+cmVsYXRlZF9icmVh a3BvaW50KQotLQkJYi0+cmVsYXRlZF9icmVha3BvaW50LT5kaXNwb3NpdGlvbiA9IGRpc3BfZGVs X2F0X25leHRfc3RvcDsKLS0JICAgICAgYi0+ZGlzcG9zaXRpb24gPSBkaXNwX2RlbF9hdF9uZXh0 X3N0b3A7Ci0rCSAgICAgIHdhdGNocG9pbnRfZGVsX2F0X25leHRfc3RvcCAoYik7Ci0gCSAgICAg IC8qIFdlJ3ZlIGFscmVhZHkgcHJpbnRlZCB3aGF0IG5lZWRzIHRvIGJlIHByaW50ZWQuICAqLwot IAkgICAgICBicy0+cHJpbnRfaXQgPSBwcmludF9pdF9kb25lOwotIAkgICAgICBicmVhazsKLUBA IC00MjQ3LDcgKzQzNzIsNyBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3Nw YWNlICphc3BhY2UsCi0gCSAgICAgd2F0Y2hwb2ludCBhcyB0cmlnZ2VyZWQgc28gdGhhdCB3ZSB3 aWxsIGhhbmRsZSB0aGUKLSAJICAgICBvdXQtb2Ytc2NvcGUgZXZlbnQuICBXZSdsbCBnZXQgdG8g dGhlIHdhdGNocG9pbnQgbmV4dAotIAkgICAgIGl0ZXJhdGlvbi4gICovCi0tCSAgaWYgKGItPnR5 cGUgPT0gYnBfd2F0Y2hwb2ludF9zY29wZSkKLSsJICBpZiAoYi0+dHlwZSA9PSBicF93YXRjaHBv aW50X3Njb3BlICYmIGItPnJlbGF0ZWRfYnJlYWtwb2ludCAhPSBiKQotIAkgICAgYi0+cmVsYXRl ZF9icmVha3BvaW50LT53YXRjaHBvaW50X3RyaWdnZXJlZCA9IHdhdGNoX3RyaWdnZXJlZF95ZXM7 Ci0gCX0KLSAgICAgfQotQEAgLTQzNjksNyArNDQ5NCw3IEBAIGhhbmRsZV9qaXRfZXZlbnQgKHZv aWQpCi0gLyogRGVjaWRlIHdoYXQgaW5mcnVuIG5lZWRzIHRvIGRvIHdpdGggdGhpcyBicHN0YXQu ICAqLwotIAotIHN0cnVjdCBicHN0YXRfd2hhdAotLWJwc3RhdF93aGF0IChicHN0YXQgYnMpCi0r YnBzdGF0X3doYXQgKGJwc3RhdCBic19oZWFkKQotIHsKLSAgIHN0cnVjdCBicHN0YXRfd2hhdCBy ZXR2YWw7Ci0gICAvKiBXZSBuZWVkIHRvIGRlZmVyIGNhbGxpbmcgYHNvbGliX2FkZCcsIGFzIGFk ZGluZyBuZXcgc3ltYm9scwotQEAgLTQzNzcsMTIgKzQ1MDIsMTMgQEAgYnBzdGF0X3doYXQgKGJw c3RhdCBicykKLSAgICAgIGFuZCBoZW5jZSBtYXkgY2xlYXIgdW5wcm9jZXNzZWQgZW50cmllcyBp biB0aGUgQlMgY2hhaW4uICAqLwotICAgaW50IHNobGliX2V2ZW50ID0gMDsKLSAgIGludCBqaXRf ZXZlbnQgPSAwOwotKyAgYnBzdGF0IGJzOwotIAotICAgcmV0dmFsLm1haW5fYWN0aW9uID0gQlBT VEFUX1dIQVRfS0VFUF9DSEVDS0lORzsKLSAgIHJldHZhbC5jYWxsX2R1bW15ID0gU1RPUF9OT05F OwotICAgcmV0dmFsLmlzX2xvbmdqbXAgPSAwOwotIAotLSAgZm9yICg7IGJzICE9IE5VTEw7IGJz ID0gYnMtPm5leHQpCi0rICBmb3IgKGJzID0gYnNfaGVhZDsgYnMgIT0gTlVMTDsgYnMgPSBicy0+ bmV4dCkKLSAgICAgewotICAgICAgIC8qIEV4dHJhY3QgdGhpcyBCUydzIGFjdGlvbi4gIEFmdGVy IHByb2Nlc3NpbmcgZWFjaCBCUywgd2UgY2hlY2sKLSAJIGlmIGl0cyBhY3Rpb24gb3ZlcnJpZGVz IGFsbCB3ZSd2ZSBzZWVtIHNvIGZhci4gICovCi1AQCAtNDUxMiw2ICs0NjM4LDE2IEBAIGJwc3Rh dF93aGF0IChicHN0YXQgYnMpCi0gCSAgICAgb3V0IGFscmVhZHkuICAqLwotIAkgIGludGVybmFs X2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCi0gCQkJICBfKCJicHN0YXRfd2hhdDogdHJhY2Vw b2ludCBlbmNvdW50ZXJlZCIpKTsKLSsJICBicmVhazsKLSsJY2FzZSBicF9nbnVfaWZ1bmNfcmVz b2x2ZXI6Ci0rCSAgLyogU3RlcCBvdmVyIGl0IChhbmQgaW5zZXJ0IGJwX2dudV9pZnVuY19yZXNv bHZlcl9yZXR1cm4pLiAgKi8KLSsJICB0aGlzX2FjdGlvbiA9IEJQU1RBVF9XSEFUX1NJTkdMRTsK LSsJICBicmVhazsKLSsJY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgotKwkgIC8q IFRoZSBicmVha3BvaW50IHdpbGwgYmUgcmVtb3ZlZCwgZXhlY3V0aW9uIHdpbGwgcmVzdGFydCBm cm9tIHRoZQotKwkgICAgIFBDIG9mIHRoZSBmb3JtZXIgYnJlYWtwb2ludC4gICovCi0rCSAgdGhp c19hY3Rpb24gPSBCUFNUQVRfV0hBVF9LRUVQX0NIRUNLSU5HOwotKwkgIGJyZWFrOwotIAlkZWZh dWx0OgotIAkgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCi0gCQkJICBfKCJi cHN0YXRfd2hhdDogdW5oYW5kbGVkIGJwdHlwZSAlZCIpLCAoaW50KSBicHR5cGUpOwotQEAgLTQ1 MjAsNiArNDY1Niw5IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCi0gICAgICAgcmV0dmFsLm1h aW5fYWN0aW9uID0gbWF4IChyZXR2YWwubWFpbl9hY3Rpb24sIHRoaXNfYWN0aW9uKTsKLSAgICAg fQotIAotKyAgLyogVGhlc2Ugb3BlcmF0aW9ucyBtYXkgYWZmZWN0IHRoZSBicy0+YnJlYWtwb2lu dF9hdCBzdGF0ZSBzbyB0aGV5IGFyZQotKyAgICAgZGVsYXllZCBhZnRlciBNQUlOX0FDVElPTiBp cyBkZWNpZGVkIGFib3ZlLiAgKi8KLSsKLSAgIGlmIChzaGxpYl9ldmVudCkKLSAgICAgewotICAg ICAgIGlmIChkZWJ1Z19pbmZydW4pCi1AQCAtNDU0OSw2ICs0Njg4LDIzIEBAIGJwc3RhdF93aGF0 IChicHN0YXQgYnMpCi0gICAgICAgaGFuZGxlX2ppdF9ldmVudCAoKTsKLSAgICAgfQotIAotKyAg Zm9yIChicyA9IGJzX2hlYWQ7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQpCi0rICAgIHsKLSsg ICAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYiA9IGJzLT5icmVha3BvaW50X2F0OwotKwotKyAgICAg IGlmIChiID09IE5VTEwpCi0rCWNvbnRpbnVlOwotKyAgICAgIHN3aXRjaCAoYi0+dHlwZSkKLSsJ ewotKwljYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoKLSsJICBnbnVfaWZ1bmNfcmVzb2x2ZXJf c3RvcCAoYik7Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVy bjoKLSsJICBnbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuX3N0b3AgKGIpOwotKwkgIGJyZWFrOwot Kwl9Ci0rICAgIH0KLSsKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAotQEAgLTQ3MDYsNiArNDg2 Miw4IEBAIGJwdHlwZV9zdHJpbmcgKGVudW0gYnB0eXBlIHR5cGUpCi0gICAgIHticF9mYXN0X3Ry YWNlcG9pbnQsICJmYXN0IHRyYWNlcG9pbnQifSwKLSAgICAge2JwX3N0YXRpY190cmFjZXBvaW50 LCAic3RhdGljIHRyYWNlcG9pbnQifSwKLSAgICAge2JwX2ppdF9ldmVudCwgImppdCBldmVudHMi fSwKLSsgICAge2JwX2dudV9pZnVuY19yZXNvbHZlciwgIlNUVF9HTlVfSUZVTkMgcmVzb2x2ZXIi fSwKLSsgICAge2JwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4sICJTVFRfR05VX0lGVU5DIHJl c29sdmVyIHJldHVybiJ9LAotICAgfTsKLSAKLSAgIGlmICgoKGludCkgdHlwZSA+PSAoc2l6ZW9m IChicHR5cGVzKSAvIHNpemVvZiAoYnB0eXBlc1swXSkpKQotQEAgLTQ4NDAsNiArNDk5OCw4IEBA IHByaW50X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKLSAg ICAgICBjYXNlIGJwX2Zhc3RfdHJhY2Vwb2ludDoKLSAgICAgICBjYXNlIGJwX3N0YXRpY190cmFj ZXBvaW50OgotICAgICAgIGNhc2UgYnBfaml0X2V2ZW50OgotKyAgICAgIGNhc2UgYnBfZ251X2lm dW5jX3Jlc29sdmVyOgotKyAgICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoK LSAJaWYgKG9wdHMuYWRkcmVzc3ByaW50KQotIAkgIHsKLSAJICAgIGFubm90YXRlX2ZpZWxkICg0 KTsKLUBAIC01MTE1LDcgKzUyNzUsOCBAQCB1c2VyX3NldHRhYmxlX2JyZWFrcG9pbnQgKGNvbnN0 IHN0cnVjdCBicmVha3BvaW50ICpiKQotIAkgIHx8IGItPnR5cGUgPT0gYnBfY2F0Y2hwb2ludAot IAkgIHx8IGItPnR5cGUgPT0gYnBfaGFyZHdhcmVfYnJlYWtwb2ludAotIAkgIHx8IGlzX3RyYWNl cG9pbnQgKGIpCi0tCSAgfHwgaXNfd2F0Y2hwb2ludCAoYikpOwotKwkgIHx8IGlzX3dhdGNocG9p bnQgKGIpCi0rCSAgfHwgYi0+dHlwZSA9PSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIpOwotIH0KLSAK LSAvKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGJyZWFrcG9pbnQgd2FzIHNldCBieSB0aGUgdXNlciwg ZmFsc2UgaWYgaXQgaXMKLUBAIC01NjExLDYgKzU3NzIsOCBAQCBhbGxvY2F0ZV9icF9sb2NhdGlv biAoc3RydWN0IGJyZWFrcG9pbnQgKmJwdCkKLSAgICAgY2FzZSBicF9sb25nam1wX21hc3RlcjoK LSAgICAgY2FzZSBicF9zdGRfdGVybWluYXRlX21hc3RlcjoKLSAgICAgY2FzZSBicF9leGNlcHRp b25fbWFzdGVyOgotKyAgICBjYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoKLSsgICAgY2FzZSBi cF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgotICAgICAgIGxvYy0+bG9jX3R5cGUgPSBicF9s b2Nfc29mdHdhcmVfYnJlYWtwb2ludDsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBicF9oYXJk d2FyZV9icmVha3BvaW50OgotQEAgLTU3MDAsNiArNTg2Myw3IEBAIHNldF9yYXdfYnJlYWtwb2lu dF93aXRob3V0X2xvY2F0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAgIGItPm9wcyA9 IE5VTEw7Ci0gICBiLT5jb25kaXRpb25fbm90X3BhcnNlZCA9IDA7Ci0gICBiLT5weV9icF9vYmpl Y3QgPSBOVUxMOwotKyAgYi0+cmVsYXRlZF9icmVha3BvaW50ID0gYjsKLSAKLSAgIC8qIEFkZCB0 aGlzIGJyZWFrcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgY2hhaW4gc28gdGhhdCBhIGxpc3Qgb2YK LSAgICAgIGJyZWFrcG9pbnRzIHdpbGwgY29tZSBvdXQgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyBu dW1iZXJzLiAgKi8KLUBAIC01NzE2LDkgKzU4ODAsMTIgQEAgc2V0X3Jhd19icmVha3BvaW50X3dp dGhvdXRfbG9jYXRpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgcmV0dXJuIGI7Ci0g fQotIAotLS8qIEluaXRpYWxpemUgbG9jLT5mdW5jdGlvbl9uYW1lLiAgKi8KLSsvKiBJbml0aWFs aXplIGxvYy0+ZnVuY3Rpb25fbmFtZS4gIEVYUExJQ0lUX0xPQyBzYXlzIG5vIGluZGlyZWN0IGZ1 bmN0aW9uCi0rICAgcmVzb2x1dGlvbnMgc2hvdWxkIGJlIG1hZGUgYXMgdGhlIHVzZXIgc3BlY2lm aWVkIHRoZSBsb2NhdGlvbiBleHBsaWNpdGx5Ci0rICAgZW5vdWdoLiAgKi8KLSsKLSBzdGF0aWMg dm9pZAotLXNldF9icmVha3BvaW50X2xvY2F0aW9uX2Z1bmN0aW9uIChzdHJ1Y3QgYnBfbG9jYXRp b24gKmxvYykKLStzZXRfYnJlYWtwb2ludF9sb2NhdGlvbl9mdW5jdGlvbiAoc3RydWN0IGJwX2xv Y2F0aW9uICpsb2MsIGludCBleHBsaWNpdF9sb2MpCi0gewotICAgZ2RiX2Fzc2VydCAobG9jLT5v d25lciAhPSBOVUxMKTsKLSAKLUBAIC01NzI2LDggKzU4OTMsMzMgQEAgc2V0X2JyZWFrcG9pbnRf bG9jYXRpb25fZnVuY3Rpb24gKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jKQotICAgICAgIHx8IGxv Yy0+b3duZXItPnR5cGUgPT0gYnBfaGFyZHdhcmVfYnJlYWtwb2ludAotICAgICAgIHx8IGlzX3Ry YWNlcG9pbnQgKGxvYy0+b3duZXIpKQotICAgICB7Ci0tICAgICAgZmluZF9wY19wYXJ0aWFsX2Z1 bmN0aW9uIChsb2MtPmFkZHJlc3MsICYobG9jLT5mdW5jdGlvbl9uYW1lKSwgCi0tCQkJCU5VTEws IE5VTEwpOwotKyAgICAgIGludCBpc19nbnVfaWZ1bmM7Ci0rCi0rICAgICAgZmluZF9wY19wYXJ0 aWFsX2Z1bmN0aW9uX2dudV9pZnVuYyAobG9jLT5hZGRyZXNzLCAmbG9jLT5mdW5jdGlvbl9uYW1l LAotKwkJCQkJICBOVUxMLCBOVUxMLCAmaXNfZ251X2lmdW5jKTsKLSsKLSsgICAgICBpZiAoaXNf Z251X2lmdW5jICYmICFleHBsaWNpdF9sb2MpCi0rCXsKLSsJICBzdHJ1Y3QgYnJlYWtwb2ludCAq YiA9IGxvYy0+b3duZXI7Ci0rCi0rCSAgZ2RiX2Fzc2VydCAobG9jLT5wc3BhY2UgPT0gY3VycmVu dF9wcm9ncmFtX3NwYWNlKTsKLSsJICBpZiAoZ251X2lmdW5jX3Jlc29sdmVfbmFtZSAobG9jLT5m dW5jdGlvbl9uYW1lLAotKwkJCQkgICAgICAmbG9jLT5yZXF1ZXN0ZWRfYWRkcmVzcykpCi0rCSAg ICB7Ci0rCSAgICAgIC8qIFJlY2FsY3VsYXRlIEFERFJFU1MgYmFzZWQgb24gbmV3IFJFUVVFU1RF RF9BRERSRVNTLiAgKi8KLSsJICAgICAgbG9jLT5hZGRyZXNzID0gYWRqdXN0X2JyZWFrcG9pbnRf YWRkcmVzcyAobG9jLT5nZGJhcmNoLAotKwkJCQkJCQlsb2MtPnJlcXVlc3RlZF9hZGRyZXNzLAot KwkJCQkJCQliLT50eXBlKTsKLSsJICAgIH0KLSsJICBlbHNlIGlmIChiLT50eXBlID09IGJwX2Jy ZWFrcG9pbnQgJiYgYi0+bG9jID09IGxvYwotKwkgICAgICAgICAgICYmIGxvYy0+bmV4dCA9PSBO VUxMICYmIGItPnJlbGF0ZWRfYnJlYWtwb2ludCA9PSBiKQotKwkgICAgewotKwkgICAgICAvKiBD cmVhdGUgb25seSB0aGUgd2hvbGUgbmV3IGJyZWFrcG9pbnQgb2YgdGhpcyB0eXBlIGJ1dCBkbyBu b3QKLSsJCSBtZXNzIG1vcmUgY29tcGxpY2F0ZWQgYnJlYWtwb2ludHMgd2l0aCBtdWx0aXBsZSBs b2NhdGlvbnMuICAqLwotKwkgICAgICBiLT50eXBlID0gYnBfZ251X2lmdW5jX3Jlc29sdmVyOwot KwkgICAgfQotKwl9Ci0rCi0gICAgICAgaWYgKGxvYy0+ZnVuY3Rpb25fbmFtZSkKLSAJbG9jLT5m dW5jdGlvbl9uYW1lID0geHN0cmR1cCAobG9jLT5mdW5jdGlvbl9uYW1lKTsKLSAgICAgfQotQEAg LTU3OTAsNiArNTk4Miw3IEBAIHNldF9yYXdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsCitAQCAtNTkwMiw2ICs2MDE2LDcgQEAgc2V0X3Jhd19icmVha3BvaW50IChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwKICAgIGItPmxvYy0+cmVxdWVzdGVkX2FkZHJlc3MgPSBzYWwucGM7 CiAgICBiLT5sb2MtPmFkZHJlc3MgPSBhZGp1c3RlZF9hZGRyZXNzOwogICAgYi0+bG9jLT5wc3Bh Y2UgPSBzYWwucHNwYWNlOwpAQCAtMTA3MiwyNSArNzA4LDcgQEAgaW5kZXggZGJkOTU4OC4uZDU1 MWRkZCAxMDA2NDQKICAKICAgIC8qIFN0b3JlIHRoZSBwcm9ncmFtIHNwYWNlIHRoYXQgd2FzIHVz ZWQgdG8gc2V0IHRoZSBicmVha3BvaW50LCBmb3IKICAgICAgIGJyZWFrcG9pbnQgcmVzZXR0aW5n LiAgKi8KLUBAIC01ODAyLDcgKzU5OTUsOCBAQCBzZXRfcmF3X2JyZWFrcG9pbnQgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLAotICAgYi0+bG9jLT5zZWN0aW9uID0gc2FsLnNlY3Rpb247Ci0gICBi LT5saW5lX251bWJlciA9IHNhbC5saW5lOwotIAotLSAgc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25f ZnVuY3Rpb24gKGItPmxvYyk7Ci0rICBzZXRfYnJlYWtwb2ludF9sb2NhdGlvbl9mdW5jdGlvbiAo Yi0+bG9jLAotKwkJCQkgICAgc2FsLmV4cGxpY2l0X3BjIHx8IHNhbC5leHBsaWNpdF9saW5lKTsK LSAKLSAgIGJyZWFrcG9pbnRzX2NoYW5nZWQgKCk7Ci0gCi1AQCAtNjkxOSwxMyArNzExMywxNCBA QCBjbG9uZV9tb21lbnRhcnlfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKm9yaWcpCi0g Ci0gICBjb3B5ID0gc2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKG9yaWctPmdk YmFyY2gsIG9yaWctPnR5cGUpOwotICAgY29weS0+bG9jID0gYWxsb2NhdGVfYnBfbG9jYXRpb24g KGNvcHkpOwotLSAgc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24gKGNvcHktPmxvYyk7 Ci0rICBzZXRfYnJlYWtwb2ludF9sb2NhdGlvbl9mdW5jdGlvbiAoY29weS0+bG9jLCAxKTsKLSAK LSAgIGNvcHktPmxvYy0+Z2RiYXJjaCA9IG9yaWctPmxvYy0+Z2RiYXJjaDsKLSAgIGNvcHktPmxv Yy0+cmVxdWVzdGVkX2FkZHJlc3MgPSBvcmlnLT5sb2MtPnJlcXVlc3RlZF9hZGRyZXNzOworQEAg LTcwNTcsNiArNzE3Miw3IEBAIGNsb25lX21vbWVudGFyeV9icmVha3BvaW50IChzdHJ1Y3QgYnJl YWtwb2ludCAqb3JpZykKICAgIGNvcHktPmxvYy0+YWRkcmVzcyA9IG9yaWctPmxvYy0+YWRkcmVz czsKICAgIGNvcHktPmxvYy0+c2VjdGlvbiA9IG9yaWctPmxvYy0+c2VjdGlvbjsKICAgIGNvcHkt PmxvYy0+cHNwYWNlID0gb3JpZy0+bG9jLT5wc3BhY2U7CkBAIC0xMDk4LDMyICs3MTYsNyBAQCBp bmRleCBkYmQ5NTg4Li5kNTUxZGRkIDEwMDY0NAogIAogICAgaWYgKG9yaWctPnNvdXJjZV9maWxl ID09IE5VTEwpCiAgICAgIGNvcHktPnNvdXJjZV9maWxlID0gTlVMTDsKLUBAIC03MDE5LDYgKzcy MTQsNyBAQCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKLSAJZG9fY2xlYW51cHMgKHVp X291dF9jaGFpbik7Ci0gCWJyZWFrOwotICAgICAgIGNhc2UgYnBfYnJlYWtwb2ludDoKLSsgICAg ICBjYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoKLSAJaWYgKHVpX291dF9pc19taV9saWtlX3Ag KHVpb3V0KSkKLSAJICB7Ci0gCSAgICBzYXlfd2hlcmUgPSAwOwotQEAgLTcwMjksNiArNzIyNSw4 IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQotIAllbHNlCi0gCSAgcHJpbnRmX2Zp bHRlcmVkIChfKCJCcmVha3BvaW50IikpOwotIAlwcmludGZfZmlsdGVyZWQgKF8oIiAlZCIpLCBi LT5udW1iZXIpOwotKwlpZiAoYi0+dHlwZSA9PSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIpCi0rCSAg cHJpbnRmX2ZpbHRlcmVkIChfKCIgYXQgZ251LWluZGlyZWN0LWZ1bmN0aW9uIHJlc29sdmVyIikp OwotIAlzYXlfd2hlcmUgPSAxOwotIAlicmVhazsKLSAgICAgICBjYXNlIGJwX2hhcmR3YXJlX2Jy ZWFrcG9pbnQ6Ci1AQCAtNzA4OCw2ICs3Mjg2LDcgQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9p bnQgKmIpCi0gICAgICAgY2FzZSBicF9sb25nam1wX21hc3RlcjoKLSAgICAgICBjYXNlIGJwX3N0 ZF90ZXJtaW5hdGVfbWFzdGVyOgotICAgICAgIGNhc2UgYnBfZXhjZXB0aW9uX21hc3RlcjoKLSsg ICAgICBjYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm46Ci0gCWJyZWFrOwotICAgICAg IH0KLSAKLUBAIC03MTQ1LDEwICs3MzQ0LDEyIEBAIGFkZF9sb2NhdGlvbl90b19icmVha3BvaW50 IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC03MjgwLDYgKzczOTYsNyBAQCBhZGRfbG9jYXRp b25fdG9fYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgICBsb2MtPmFkZHJlc3Mg PSBhZGp1c3RfYnJlYWtwb2ludF9hZGRyZXNzIChsb2MtPmdkYmFyY2gsCiAgCQkJCQkgICAgbG9j LT5yZXF1ZXN0ZWRfYWRkcmVzcywgYi0+dHlwZSk7CiAgICBsb2MtPnBzcGFjZSA9IHNhbC0+cHNw YWNlOwpAQCAtMTEzMSwxMyArNzI0LDcgQEAgaW5kZXggZGJkOTU4OC4uZDU1MWRkZCAxMDA2NDQK ICAgIGdkYl9hc3NlcnQgKGxvYy0+cHNwYWNlICE9IE5VTEwpOwogICAgbG9jLT5zZWN0aW9uID0g c2FsLT5zZWN0aW9uOwogIAotLSAgc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24gKGxv Yyk7Ci0rICBzZXRfYnJlYWtwb2ludF9sb2NhdGlvbl9mdW5jdGlvbiAobG9jLAotKwkJCQkgICAg c2FsLT5leHBsaWNpdF9wYyB8fCBzYWwtPmV4cGxpY2l0X2xpbmUpOwotICAgcmV0dXJuIGxvYzsK LSB9Ci0gDAotQEAgLTc0OTMsNiArNzY5NCwxNiBAQCBjcmVhdGVfYnJlYWtwb2ludHNfc2FsIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC03NjI5LDYgKzc3NDYsMTYgQEAgY3JlYXRlX2Jy ZWFrcG9pbnRzX3NhbCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgewogICAgaW50IGk7CiAg CkBAIC0xMTU0LDcgKzc0MSw3IEBAIGluZGV4IGRiZDk1ODguLmQ1NTFkZGQgMTAwNjQ0CiAgICBm b3IgKGkgPSAwOyBpIDwgc2Fscy5uZWx0czsgKytpKQogICAgICB7CiAgICAgICAgc3RydWN0IHN5 bXRhYnNfYW5kX2xpbmVzIGV4cGFuZGVkID0gCi1AQCAtODAxOCw3ICs4MjI5LDcgQEAgY3JlYXRl X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTgxNTQsNyArODI4MSw3 IEBAIGNyZWF0ZV9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgICAgICAg IG1lbnRpb24gKGIpOwogICAgICB9CiAgICAKQEAgLTExNjMsNyArNzUwLDcgQEAgaW5kZXggZGJk OTU4OC4uZDU1MWRkZCAxMDA2NDQKICAgICAgewogICAgICAgIHdhcm5pbmcgKF8oIk11bHRpcGxl IGJyZWFrcG9pbnRzIHdlcmUgc2V0LlxuVXNlIHRoZSAiCiAgCQkgIlwiZGVsZXRlXCIgY29tbWFu ZCB0byBkZWxldGUgdW53YW50ZWQgYnJlYWtwb2ludHMuIikpOwotQEAgLTg1ODYsNiArODc5Nyw3 IEBAIHdhdGNoX2NvbW1hbmRfMSAoY2hhciAqYXJnLCBpbnQgYWNjZXNzZmxhZywgaW50IGZyb21f dHR5LAorQEAgLTkwMjYsNiArOTE1Myw3IEBAIHdhdGNoX2NvbW1hbmRfMSAoY2hhciAqYXJnLCBp bnQgYWNjZXNzZmxhZywgaW50IGZyb21fdHR5LAogICAgYiA9IHNldF9yYXdfYnJlYWtwb2ludF93 aXRob3V0X2xvY2F0aW9uIChOVUxMLCBicF90eXBlKTsKICAgIHNldF9icmVha3BvaW50X251bWJl ciAoaW50ZXJuYWwsIGIpOwogICAgYi0+dGhyZWFkID0gdGhyZWFkOwpAQCAtMTE3MSw3ICs3NTgs NyBAQCBpbmRleCBkYmQ5NTg4Li5kNTUxZGRkIDEwMDY0NAogICAgYi0+ZGlzcG9zaXRpb24gPSBk aXNwX2RvbnR0b3VjaDsKICAgIGItPmV4cCA9IGV4cDsKICAgIGItPmV4cF92YWxpZF9ibG9jayA9 IGV4cF92YWxpZF9ibG9jazsKLUBAIC05NzQ3LDYgKzk5NTksOSBAQCB1cGRhdGVfZ2xvYmFsX2xv Y2F0aW9uX2xpc3QgKGludCBzaG91bGRfaW5zZXJ0KQorQEAgLTEwMTg4LDYgKzEwMzE2LDkgQEAg dXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkKICAgICAgICBp bnQga2VlcF9pbl90YXJnZXQgPSAwOwogICAgICAgIGludCByZW1vdmVkID0gMDsKICAKQEAgLTEx ODEsMTQ1ICs3NjgsOTMgQEAgaW5kZXggZGJkOTU4OC4uZDU1MWRkZCAxMDA2NDQKICAgICAgICAv KiBTa2lwIExPQ1AgZW50cmllcyB3aGljaCB3aWxsIGRlZmluaXRlbHkgbmV2ZXIgYmUgbmVlZGVk LgogIAkgU3RvcCBlaXRoZXIgYXQgb3IgYmVpbmcgdGhlIG9uZSBtYXRjaGluZyBPTERfTE9DLiAg Ki8KICAgICAgICB3aGlsZSAobG9jcCA8IGJwX2xvY2F0aW9uICsgYnBfbG9jYXRpb25fY291bnQK LUBAIC0xMDA2MywxMiArMTAyNzgsMjAgQEAgZGVsZXRlX2JyZWFrcG9pbnQgKHN0cnVjdCBicmVh a3BvaW50ICpicHQpCi0gCi0gICAvKiBBdCBsZWFzdCBhdm9pZCB0aGlzIHN0YWxlIHJlZmVyZW5j ZSB1bnRpbCB0aGUgcmVmZXJlbmNlIGNvdW50aW5nCi0gICAgICBvZiBicmVha3BvaW50cyBnZXRz IHJlc29sdmVkLiAgKi8KLS0gIGlmIChicHQtPnJlbGF0ZWRfYnJlYWtwb2ludCAhPSBOVUxMKQot KyAgaWYgKGJwdC0+cmVsYXRlZF9icmVha3BvaW50ICE9IGJwdCkKLSAgICAgewotLSAgICAgIGdk Yl9hc3NlcnQgKGJwdC0+cmVsYXRlZF9icmVha3BvaW50LT5yZWxhdGVkX2JyZWFrcG9pbnQgPT0g YnB0KTsKLS0gICAgICBicHQtPnJlbGF0ZWRfYnJlYWtwb2ludC0+ZGlzcG9zaXRpb24gPSBkaXNw X2RlbF9hdF9uZXh0X3N0b3A7Ci0tICAgICAgYnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQtPnJlbGF0 ZWRfYnJlYWtwb2ludCA9IE5VTEw7Ci0tICAgICAgYnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQgPSBO VUxMOwotKyAgICAgIHN0cnVjdCBicmVha3BvaW50ICpyZWxhdGVkOwotKwotKyAgICAgIGlmIChi cHQtPnR5cGUgPT0gYnBfd2F0Y2hwb2ludF9zY29wZSkKLSsJd2F0Y2hwb2ludF9kZWxfYXRfbmV4 dF9zdG9wIChicHQtPnJlbGF0ZWRfYnJlYWtwb2ludCk7Ci0rICAgICAgZWxzZSBpZiAoYnB0LT5y ZWxhdGVkX2JyZWFrcG9pbnQtPnR5cGUgPT0gYnBfd2F0Y2hwb2ludF9zY29wZSkKLSsJd2F0Y2hw b2ludF9kZWxfYXRfbmV4dF9zdG9wIChicHQpOwotKwotKyAgICAgIC8qIFVubGluayBicHQgZnJv bSB0aGUgYnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQgcmluZy4gICovCi0rICAgICAgZm9yIChyZWxh dGVkID0gYnB0OyByZWxhdGVkLT5yZWxhdGVkX2JyZWFrcG9pbnQgIT0gYnB0OwotKwkgICByZWxh dGVkID0gcmVsYXRlZC0+cmVsYXRlZF9icmVha3BvaW50KTsKLSsgICAgICByZWxhdGVkLT5yZWxh dGVkX2JyZWFrcG9pbnQgPSBicHQtPnJlbGF0ZWRfYnJlYWtwb2ludDsKLSsgICAgICBicHQtPnJl bGF0ZWRfYnJlYWtwb2ludCA9IGJwdDsKLSAgICAgfQotIAotICAgb2JzZXJ2ZXJfbm90aWZ5X2Jy ZWFrcG9pbnRfZGVsZXRlZCAoYnB0LT5udW1iZXIpOwotQEAgLTEwMzgxLDcgKzEwNjA0LDcgQEAg dXBkYXRlX3N0YXRpY190cmFjZXBvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgc3RydWN0IHN5 bXRhYl9hbmRfbGluZSBzYWwpCi0gICByZXR1cm4gc2FsOwotIH0KK0BAIC0xMDk1MiwxMiArMTEw ODMsMTQgQEAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYWtwb2ludCAq YiwKKyAgICBPbiByZXR1cm4sIEZPVU5EIHdpbGwgYmUgMSBpZiBhbnkgU2FMIHdhcyBmb3VuZCwg emVybyBvdGhlcndpc2UuICAqLwogIAotLXN0YXRpYyB2b2lkCi0rdm9pZAotIHVwZGF0ZV9icmVh a3BvaW50X2xvY2F0aW9ucyAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCi0gCQkJICAgICBzdHJ1Y3Qg c3ltdGFic19hbmRfbGluZXMgc2FscykKKyBzdGF0aWMgc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVz CistYWRkcl9zdHJpbmdfdG9fc2FscyAoc3RydWN0IGJyZWFrcG9pbnQgKmIsIGNoYXIgKmFkZHJf c3RyaW5nLCBpbnQgKmZvdW5kKQorK2FkZHJfc3RyaW5nX3RvX3NhbHMgKHN0cnVjdCBicmVha3Bv aW50ICpiLCBjaGFyICphZGRyX3N0cmluZywgaW50ICpmb3VuZCwKKysJCSAgICAgaW50ICpwcmVf ZXhwYW5kZWQpCiAgewotQEAgLTEwNTAxLDYgKzEwNzI0LDcgQEAgYnJlYWtwb2ludF9yZV9zZXRf b25lICh2b2lkICpiaW50KQorICAgY2hhciAqczsKKyAgIGludCBtYXJrZXJfc3BlYywgbm90X2Zv dW5kOworICAgc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzIHNhbHMgPSB7MH07CiAgICBzdHJ1Y3Qg Z2RiX2V4Y2VwdGlvbiBlOwotICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzID0gbWFrZV9jbGVh bnVwIChudWxsX2NsZWFudXAsIE5VTEwpOwotICAgaW50IG1hcmtlcl9zcGVjID0gMDsKLSsgIGlu dCBwcmVfZXhwYW5kZWQgPSAwOworKyAgaW50IG15X3ByZV9leHBhbmRlZCA9IDA7CiAgCi0gICBz d2l0Y2ggKGItPnR5cGUpCi0gICAgIHsKLUBAIC0xMDUxMyw2ICsxMDczNyw3IEBAIGJyZWFrcG9p bnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAgICAgY2FzZSBicF90cmFjZXBvaW50OgotICAg ICBjYXNlIGJwX2Zhc3RfdHJhY2Vwb2ludDoKLSAgICAgY2FzZSBicF9zdGF0aWNfdHJhY2Vwb2lu dDoKLSsgICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6Ci0gICAgICAgLyogRG8gbm90IGF0 dGVtcHQgdG8gcmUtc2V0IGJyZWFrcG9pbnRzIGRpc2FibGVkIGR1cmluZyBzdGFydHVwLiAgKi8K LSAgICAgICBpZiAoYi0+ZW5hYmxlX3N0YXRlID09IGJwX3N0YXJ0dXBfZGlzYWJsZWQpCi0gCXJl dHVybiAwOwotQEAgLTEwNTQ3LDggKzEwNzcyLDI1IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAo dm9pZCAqYmludCkKLSAJCWVycm9yIChfKCJtYXJrZXIgJXMgbm90IGZvdW5kIiksIGItPnN0YXRp Y190cmFjZV9tYXJrZXJfaWQpOwotIAkgICAgfQotIAkgIGVsc2UKLS0JICAgIHNhbHMgPSBkZWNv ZGVfbGluZV8xICgmcywgMSwgKHN0cnVjdCBzeW10YWIgKikgTlVMTCwgMCwKLS0JCQkJICBOVUxM LCBub3RfZm91bmRfcHRyKTsKLSsJICAgIHsKLSsJICAgICAgc3RydWN0IGxpbmVzcGVjX3Jlc3Vs dCBjYW5vbmljYWw7Ci0rCi0rCSAgICAgIGluaXRfbGluZXNwZWNfcmVzdWx0ICgmY2Fub25pY2Fs KTsKLSsJICAgICAgc2FscyA9IGRlY29kZV9saW5lXzEgKCZzLCAxLCAoc3RydWN0IHN5bXRhYiAq KSBOVUxMLCAwLAotKwkJCQkgICAgJmNhbm9uaWNhbCwgbm90X2ZvdW5kX3B0cik7CisgICBzID0g YWRkcl9zdHJpbmc7CisgICBtYXJrZXJfc3BlYyA9IGItPnR5cGUgPT0gYnBfc3RhdGljX3RyYWNl cG9pbnQgJiYgaXNfbWFya2VyX3NwZWMgKHMpOworQEAgLTEwOTc2LDggKzExMTA5LDI3IEBAIGFk ZHJfc3RyaW5nX3RvX3NhbHMgKHN0cnVjdCBicmVha3BvaW50ICpiLCBjaGFyICphZGRyX3N0cmlu ZywgaW50ICpmb3VuZCkKKyAJICAgIGVycm9yIChfKCJtYXJrZXIgJXMgbm90IGZvdW5kIiksIGIt PnN0YXRpY190cmFjZV9tYXJrZXJfaWQpOworIAl9CisgICAgICAgZWxzZQorLQlzYWxzID0gZGVj b2RlX2xpbmVfMSAoJnMsIDEsIChzdHJ1Y3Qgc3ltdGFiICopIE5VTEwsIDAsCistCQkJICAgICAg TlVMTCwgJm5vdF9mb3VuZCk7CisrCXsKKysJICBzdHJ1Y3QgbGluZXNwZWNfcmVzdWx0IGNhbm9u aWNhbDsKICsKLSsJICAgICAgLyogV2UgZG9uJ3QgbmVlZCB0aGUgY29udGVudHMuICAqLwotKwkg ICAgICBpZiAoY2Fub25pY2FsLmNhbm9uaWNhbCkKLSsJCXsKLSsJCSAgaW50IGk7CisrCSAgaW5p dF9saW5lc3BlY19yZXN1bHQgKCZjYW5vbmljYWwpOworKwkgIHNhbHMgPSBkZWNvZGVfbGluZV8x ICgmcywgMSwgKHN0cnVjdCBzeW10YWIgKikgTlVMTCwgMCwKKysJCQkJJmNhbm9uaWNhbCwgJm5v dF9mb3VuZCk7CiArCi0rCQkgIGZvciAoaSA9IDA7IGkgPCBzYWxzLm5lbHRzOyArK2kpCi0rCQkg ICAgeGZyZWUgKGNhbm9uaWNhbC5jYW5vbmljYWxbaV0pOwotKwkJICB4ZnJlZSAoY2Fub25pY2Fs LmNhbm9uaWNhbCk7Ci0rCQl9CisrCSAgLyogV2UgZG9uJ3QgbmVlZCB0aGUgY29udGVudHMuICAq LworKwkgIGlmIChjYW5vbmljYWwuY2Fub25pY2FsKQorKwkgICAgeworKwkgICAgICBpbnQgaTsK ICsKLSsJICAgICAgcHJlX2V4cGFuZGVkID0gY2Fub25pY2FsLnByZV9leHBhbmRlZDsKKysJICAg ICAgZm9yIChpID0gMDsgaSA8IHNhbHMubmVsdHM7ICsraSkKKysJCXhmcmVlIChjYW5vbmljYWwu Y2Fub25pY2FsW2ldKTsKKysJICAgICAgeGZyZWUgKGNhbm9uaWNhbC5jYW5vbmljYWwpOwogKwkg ICAgfQotIAl9Ci0gICAgICAgaWYgKGUucmVhc29uIDwgMCkKLSAJewotQEAgLTEwNTgxLDcgKzEw ODIzLDcgQEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQotIAotICAgICAgIGlm ICghbm90X2ZvdW5kKQotIAl7Ci0tCSAgZ2RiX2Fzc2VydCAoc2Fscy5uZWx0cyA9PSAxKTsKLSsJ ICBnZGJfYXNzZXJ0IChwcmVfZXhwYW5kZWQgfHwgc2Fscy5uZWx0cyA9PSAxKTsKKysKKysJICBt eV9wcmVfZXhwYW5kZWQgPSBjYW5vbmljYWwucHJlX2V4cGFuZGVkOworKwkgIGlmIChwcmVfZXhw YW5kZWQpCisrCSAgICAqcHJlX2V4cGFuZGVkID0gbXlfcHJlX2V4cGFuZGVkOworKwl9CisgICAg IH0KKyAgIGlmIChlLnJlYXNvbiA8IDApCisgICAgIHsKK0BAIC0xMTAxMCw3ICsxMTE2Miw3IEBA IGFkZHJfc3RyaW5nX3RvX3NhbHMgKHN0cnVjdCBicmVha3BvaW50ICpiLCBjaGFyICphZGRyX3N0 cmluZywgaW50ICpmb3VuZCkKICAKLSAJICByZXNvbHZlX3NhbF9wYyAoJnNhbHMuc2Fsc1swXSk7 Ci0gCSAgaWYgKGItPmNvbmRpdGlvbl9ub3RfcGFyc2VkICYmIHMgJiYgc1swXSkKLUBAIC0xMDYw Miw3ICsxMDg0NCwxMCBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCi0gCSAg aWYgKGItPnR5cGUgPT0gYnBfc3RhdGljX3RyYWNlcG9pbnQgJiYgIW1hcmtlcl9zcGVjKQotIAkg ICAgc2Fscy5zYWxzWzBdID0gdXBkYXRlX3N0YXRpY190cmFjZXBvaW50IChiLCBzYWxzLnNhbHNb MF0pOworICAgaWYgKCFub3RfZm91bmQpCisgICAgIHsKKy0gICAgICBnZGJfYXNzZXJ0IChzYWxz Lm5lbHRzID09IDEpOworKyAgICAgIGdkYl9hc3NlcnQgKG15X3ByZV9leHBhbmRlZCB8fCBzYWxz Lm5lbHRzID09IDEpOworIAorICAgICAgIHJlc29sdmVfc2FsX3BjICgmc2Fscy5zYWxzWzBdKTsK KyAgICAgICBpZiAoYi0+Y29uZGl0aW9uX25vdF9wYXJzZWQgJiYgcyAmJiBzWzBdKQorQEAgLTEx MDQ5LDIyICsxMTIwMSwyNyBAQCByZV9zZXRfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQg KmIpCisgICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgZXhwYW5kZWQgPSB7MH07CisgICBzdHJ1 Y3Qgc3ltdGFic19hbmRfbGluZXMgZXhwYW5kZWRfZW5kID0gezB9OworICAgc3RydWN0IGNsZWFu dXAgKmNsZWFudXBzID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworKyAgaW50 IHByZV9leHBhbmRlZCA9IDA7CiAgCi0tCSAgZXhwYW5kZWQgPSBleHBhbmRfbGluZV9zYWxfbWF5 YmUgKHNhbHMuc2Fsc1swXSk7Ci0rCSAgaWYgKHByZV9leHBhbmRlZCkKLSsJICAgIGV4cGFuZGVk ID0gc2FsczsKLSsJICBlbHNlCi0rCSAgICBleHBhbmRlZCA9IGV4cGFuZF9saW5lX3NhbF9tYXli ZSAoc2Fscy5zYWxzWzBdKTsKLSAJfQorICAgaW5wdXRfcmFkaXggPSBiLT5pbnB1dF9yYWRpeDsK KyAgIHNhdmVfY3VycmVudF9zcGFjZV9hbmRfdGhyZWFkICgpOworICAgc3dpdGNoX3RvX3Byb2dy YW1fc3BhY2VfYW5kX3RocmVhZCAoYi0+cHNwYWNlKTsKKyAgIHNldF9sYW5ndWFnZSAoYi0+bGFu Z3VhZ2UpOwogIAorLSAgc2FscyA9IGFkZHJfc3RyaW5nX3RvX3NhbHMgKGIsIGItPmFkZHJfc3Ry aW5nLCAmZm91bmQpOworKyAgc2FscyA9IGFkZHJfc3RyaW5nX3RvX3NhbHMgKGIsIGItPmFkZHJf c3RyaW5nLCAmZm91bmQsICZwcmVfZXhwYW5kZWQpOworICAgaWYgKGZvdW5kKQorICAgICB7CiAg ICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgc2Fscy5zYWxzKTsKLUBAIC0xMDY4Myw2ICsxMDky OCw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAgICAgY2FzZSBicF9l eGNlcHRpb246Ci0gICAgIGNhc2UgYnBfZXhjZXB0aW9uX3Jlc3VtZToKLSAgICAgY2FzZSBicF9q aXRfZXZlbnQ6Ci0rICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKLSAgICAg ICBicmVhazsKKy0gICAgICBleHBhbmRlZCA9IGV4cGFuZF9saW5lX3NhbF9tYXliZSAoc2Fscy5z YWxzWzBdKTsKKysgICAgICBpZiAocHJlX2V4cGFuZGVkKQorKwlleHBhbmRlZCA9IHNhbHM7Cisr ICAgICAgZWxzZQorKwlleHBhbmRlZCA9IGV4cGFuZF9saW5lX3NhbF9tYXliZSAoc2Fscy5zYWxz WzBdKTsKICAgICAgfQogIAotQEAgLTEwODQ5LDExICsxMTA5NSwyNSBAQCBtYXBfYnJlYWtwb2lu dF9udW1iZXJzIChjaGFyICphcmdzLCB2b2lkICgqZnVuY3Rpb24pIChzdHJ1Y3QgYnJlYWtwb2lu dCAqLAotIAkgIEFMTF9CUkVBS1BPSU5UU19TQUZFIChiLCB0bXApCi0gCSAgICBpZiAoYi0+bnVt YmVyID09IG51bSkKLSAJICAgICAgewotLQkJc3RydWN0IGJyZWFrcG9pbnQgKnJlbGF0ZWRfYnJl YWtwb2ludCA9IGItPnJlbGF0ZWRfYnJlYWtwb2ludDsKLSsJCXN0cnVjdCBicmVha3BvaW50ICpy ZWxhdGVkX2JyZWFrcG9pbnQ7Ci0rCi0gCQltYXRjaCA9IDE7Ci0tCQlmdW5jdGlvbiAoYiwgZGF0 YSk7Ci0tCQlpZiAocmVsYXRlZF9icmVha3BvaW50KQotLQkJICBmdW5jdGlvbiAocmVsYXRlZF9i cmVha3BvaW50LCBkYXRhKTsKLSsJCXJlbGF0ZWRfYnJlYWtwb2ludCA9IGI7Ci0rCQlkbwotKwkJ ICB7Ci0rCQkgICAgc3RydWN0IGJyZWFrcG9pbnQgKm5leHRfcmVsYXRlZF9iOwotKwotKwkJICAg IC8qIEZVTkNUSU9OIGNhbiBiZSBhbHNvIGRlbGV0ZV9icmVha3BvaW50LiAgKi8KLSsJCSAgICBu ZXh0X3JlbGF0ZWRfYiA9IHJlbGF0ZWRfYnJlYWtwb2ludC0+cmVsYXRlZF9icmVha3BvaW50Owot KwkJICAgIGZ1bmN0aW9uIChyZWxhdGVkX2JyZWFrcG9pbnQsIGRhdGEpOwotKwotKwkJICAgIC8q IEZvciBkZWxldGVfYnJlYWtwb2ludCBvZiB0aGUgbGFzdCBlbnRyeSBvZiB0aGUgcmluZyB3ZQot KwkJICAgICAgIHdlcmUgdHJhdmVyc2luZyB3ZSB3b3VsZCBuZXZlciBnZXQgYmFjayB0byBCLiAg Ki8KLSsJCSAgICBpZiAobmV4dF9yZWxhdGVkX2IgPT0gcmVsYXRlZF9icmVha3BvaW50KQotKwkJ ICAgICAgYnJlYWs7Ci0rCQkgICAgcmVsYXRlZF9icmVha3BvaW50ID0gbmV4dF9yZWxhdGVkX2I7 Ci0rCQkgIH0KLSsJCXdoaWxlIChyZWxhdGVkX2JyZWFrcG9pbnQgIT0gYik7Ci0gCQlicmVhazsK LSAJICAgICAgfQotIAkgIGlmIChtYXRjaCA9PSAwKQotQEAgLTExOTg0LDYgKzEyMjQ0LDI0IEBA IGFsbF90cmFjZXBvaW50cyAodm9pZCkKKyAgIGlmIChiLT5hZGRyX3N0cmluZ19yYW5nZV9lbmQp CisgICAgIHsKKy0gICAgICBzYWxzX2VuZCA9IGFkZHJfc3RyaW5nX3RvX3NhbHMgKGIsIGItPmFk ZHJfc3RyaW5nX3JhbmdlX2VuZCwgJmZvdW5kKTsKKysgICAgICBzYWxzX2VuZCA9IGFkZHJfc3Ry aW5nX3RvX3NhbHMgKGIsIGItPmFkZHJfc3RyaW5nX3JhbmdlX2VuZCwgJmZvdW5kLAorKwkJCQkg ICAgICBOVUxMKTsKKyAgICAgICBpZiAoZm91bmQpCisgCXsKKyAJICBtYWtlX2NsZWFudXAgKHhm cmVlLCBzYWxzX2VuZC5zYWxzKTsKK0BAIC0xMjUwMSw2ICsxMjY1OCwyNCBAQCBhbGxfdHJhY2Vw b2ludHMgKHZvaWQpCiAgICByZXR1cm4gdHBfdmVjOwogIH0KICAKQEAgLTEzNDQsNyArODc5LDcg QEAgaW5kZXggZGJkOTU4OC4uZDU1MWRkZCAxMDA2NDQKICAMCiAgLyogVGhpcyBoZWxwIHN0cmlu ZyBpcyB1c2VkIGZvciB0aGUgYnJlYWssIGhicmVhaywgdGJyZWFrIGFuZCB0aGJyZWFrCiAgICAg Y29tbWFuZHMuICBJdCBpcyBkZWZpbmVkIGFzIGEgbWFjcm8gdG8gcHJldmVudCBkdXBsaWNhdGlv bi4KLUBAIC0xMjYwMyw0ICsxMjg4MSw3IEBAIGluZmVyaW9yIGluIGFsbC1zdG9wIG1vZGUsIGdk YiBiZWhhdmVzIGFzIGlmIGFsd2F5cy1pbnNlcnRlZCBtb2RlIGlzIG9mZi4iKSwKK0BAIC0xMzEz Niw0ICsxMzMxMSw3IEBAIHJhbmdlIChpbmNsdWRpbmcgU1RBUlQtTE9DQVRJT04gYW5kIEVORC1M T0NBVElPTikuIikpOwogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0gMTsKICAK ICAgIG9ic2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fib3V0X3Rv X3Byb2NlZWQpOwpAQCAtMTM1MywzMCArODg4LDEwIEBAIGluZGV4IGRiZDk1ODguLmQ1NTFkZGQg MTAwNjQ0CiArI2VuZGlmCiAgfQogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmggYi9nZGIv YnJlYWtwb2ludC5oCi1pbmRleCBkNWFmOTI4Li5jOGEzMTYxIDEwMDY0NAoraW5kZXggN2E5YzJk NC4uOGE5MTAxOSAxMDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmgKICsrKyBiL2dkYi9icmVh a3BvaW50LmgKLUBAIC0xNDksNiArMTQ5LDE5IEBAIGVudW0gYnB0eXBlCi0gCi0gICAgIC8qIEV2 ZW50IGZvciBKSVQgY29tcGlsZWQgY29kZSBnZW5lcmF0aW9uIG9yIGRlbGV0aW9uLiAgKi8KLSAg ICAgYnBfaml0X2V2ZW50LAotKwotKyAgICAvKiBCcmVha3BvaW50IGlzIHBsYWNlZCBhdCB0aGUg U1RUX0dOVV9JRlVOQyByZXNvbHZlci4gIFdoZW4gaGl0IEdEQgotKyAgICAgICBpbnNlcnRzIG5l dyBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuIGF0IHRoZSBjYWxsZXIuCi0rICAgICAgIGJw X2dudV9pZnVuY19yZXNvbHZlciBpcyBzdGlsbCBiZWluZyBrZXB0IGhlcmUgYXMgYSBkaWZmZXJl bnQgdGhyZWFkCi0rICAgICAgIG1heSBzdGlsbCBoaXQgaXQgYmVmb3JlIGJwX2dudV9pZnVuY19y ZXNvbHZlcl9yZXR1cm4gaXMgaGl0IGJ5IHRoZQotKyAgICAgICBvcmlnaW5hbCB0aHJlYWQuICAq LwotKyAgICBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIsCi0rCi0rICAgIC8qIE9uIGl0cyBoaXQgR0RC IG5vdyBrbm93IHRoZSByZXNvbHZlZCBhZGRyZXNzIG9mIHRoZSB0YXJnZXQKLSsgICAgICAgU1RU X0dOVV9JRlVOQyBmdW5jdGlvbi4gIEFzc29jaWF0ZWQgYnBfZ251X2lmdW5jX3Jlc29sdmVyIGNh biBiZQotKyAgICAgICBkZWxldGVkIG5vdyBhbmQgdGhlIGJyZWFrcG9pbnQgbW92ZWQgdG8gdGhl IHRhcmdldCBmdW5jdGlvbiBlbnRyeQotKyAgICAgICBwb2ludC4gICovCi0rICAgIGJwX2dudV9p ZnVuY19yZXNvbHZlcl9yZXR1cm4sCi0gICB9OwotIAotIC8qIFN0YXRlcyBvZiBlbmFibGVtZW50 IG9mIGJyZWFrcG9pbnQuICAqLwotQEAgLTM0NSw2ICszNTgsMTEgQEAgc3RydWN0IGJwX2xvY2F0 aW9uCitAQCAtMzYzLDYgKzM2MywxMSBAQCBzdHJ1Y3QgYnBfbG9jYXRpb24KICAgICAgIHByb2Nl c3NvcidzIGFyY2hpdGVjdHVhbCBjb25zdHJhaW50cy4gICovCiAgICBDT1JFX0FERFIgcmVxdWVz dGVkX2FkZHJlc3M7CiAgCkBAIC0xMzg4LDE3ICs5MDMsNyBAQCBpbmRleCBkNWFmOTI4Li5jOGEz MTYxIDEwMDY0NAogICAgY2hhciAqZnVuY3Rpb25fbmFtZTsKICAKICAgIC8qIERldGFpbHMgb2Yg dGhlIHBsYWNlZCBicmVha3BvaW50LCB3aGVuIGluc2VydGVkLiAgKi8KLUBAIC04OTAsNiArOTA4 LDkgQEAgZXh0ZXJuIGludCBicmVha3BvaW50X3RocmVhZF9tYXRjaCAoc3RydWN0IGFkZHJlc3Nf c3BhY2UgKiwKLSAKLSBleHRlcm4gdm9pZCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICosIGlu dCwgaW50KTsKLSAKLStleHRlcm4gdm9pZCB1cGRhdGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHN0 cnVjdCBicmVha3BvaW50ICpiLAotKwkJCQkJIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBzYWxz KTsKLSsKLSBleHRlcm4gdm9pZCBicmVha3BvaW50X3JlX3NldCAodm9pZCk7Ci0gCi0gZXh0ZXJu IHZvaWQgYnJlYWtwb2ludF9yZV9zZXRfdGhyZWFkIChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsKLUBA IC0xMTkxLDQgKzEyMTIsMTEgQEAgZXh0ZXJuIHN0cnVjdCBicmVha3BvaW50ICppdGVyYXRlX292 ZXJfYnJlYWtwb2ludHMgKGludCAoKikgKHN0cnVjdCBicmVha3BvaW50ICoKK0BAIC0xMjM3LDQg KzEyNDIsMTEgQEAgZXh0ZXJuIHN0cnVjdCBicmVha3BvaW50ICppdGVyYXRlX292ZXJfYnJlYWtw b2ludHMgKGludCAoKikgKHN0cnVjdCBicmVha3BvaW50ICoKICAKICBleHRlcm4gaW50IHVzZXJf YnJlYWtwb2ludF9wIChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsKICAKQEAgLTE0MzIsNiArOTM3LDU5 IEBAIGluZGV4IDJlMjNkZDcuLmFlZmM4MDcgMTAwNjQ0CiAgCWZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIl0iKTsKICAKICAJY190eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSwgc3RyZWFtLAorZGlmZiAtLWdpdCBhL2dkYi9jbGkvY2xpLXV0aWxzLmMg Yi9nZGIvY2xpL2NsaS11dGlscy5jCitpbmRleCA2MmEyZjEyLi5kZDI4MjRmIDEwMDY0NAorLS0t IGEvZ2RiL2NsaS9jbGktdXRpbHMuYworKysrIGIvZ2RiL2NsaS9jbGktdXRpbHMuYworQEAgLTI0 NSwzICsyNDUsMzIgQEAgcmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2UgKGNvbnN0IGNoYXIgKnN0 YXJ0LCBjaGFyICpzKQorIAorICAgcmV0dXJuIHM7CisgfQorKworKy8qIFNlZSBkb2N1bWVudGF0 aW9uIGluIGNsaS11dGlscy5oLiAgKi8KKysKKytjaGFyICoKKytleHRyYWN0X2FyZyAoY2hhciAq KmFyZykKKyt7CisrICBjaGFyICpyZXN1bHQsICpjb3B5OworKworKyAgaWYgKCEqYXJnKQorKyAg ICByZXR1cm4gTlVMTDsKKysKKysgIC8qIEZpbmQgdGhlIHN0YXJ0IG9mIHRoZSBhcmd1bWVudC4g ICovCisrICAqYXJnID0gc2tpcF9zcGFjZXMgKCphcmcpOworKyAgaWYgKCEgKiphcmcpCisrICAg IHJldHVybiBOVUxMOworKyAgcmVzdWx0ID0gKmFyZzsKKysKKysgIC8qIEZpbmQgdGhlIGVuZCBv ZiB0aGUgYXJndW1lbnQuICAqLworKyAgKmFyZyA9IHNraXBfdG9fc3BhY2UgKCphcmcgKyAxKTsK KysKKysgIGlmIChyZXN1bHQgPT0gKmFyZykKKysgICAgcmV0dXJuIE5VTEw7CisrCisrICBjb3B5 ID0geG1hbGxvYyAoKmFyZyAtIHJlc3VsdCArIDEpOworKyAgbWVtY3B5IChjb3B5LCByZXN1bHQs ICphcmcgLSByZXN1bHQpOworKyAgY29weVsqYXJnIC0gcmVzdWx0XSA9ICdcMCc7CisrCisrICBy ZXR1cm4gY29weTsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL2NsaS9jbGktdXRpbHMuaCBiL2dkYi9j bGkvY2xpLXV0aWxzLmgKK2luZGV4IDhhNmU1YjMuLmVkMWE2M2UgMTAwNjQ0CistLS0gYS9nZGIv Y2xpL2NsaS11dGlscy5oCisrKysgYi9nZGIvY2xpL2NsaS11dGlscy5oCitAQCAtMTAzLDQgKzEw MywxMSBAQCBleHRlcm4gY2hhciAqc2tpcF90b19zcGFjZSAoY2hhciAqaW5wKTsKKyAgICBTVEFS VC4gICovCisgCisgZXh0ZXJuIGNoYXIgKnJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlIChjb25z dCBjaGFyICpzdGFydCwgY2hhciAqcyk7CisrCisrLyogQSBoZWxwZXIgZnVuY3Rpb24gdG8gZXh0 cmFjdCBhbiBhcmd1bWVudCBmcm9tICpBUkcuICBBbiBhcmd1bWVudCBpcworKyAgIGRlbGltaXRl ZCBieSB3aGl0ZXNwYWNlLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgTlVMTCBpZiBubwor KyAgIGFyZ3VtZW50IHdhcyBmb3VuZCwgb3IgYW4geG1hbGxvYydkIHN0cmluZy4gICovCisrCisr ZXh0ZXJuIGNoYXIgKmV4dHJhY3RfYXJnIChjaGFyICoqYXJnKTsKKysKKyAjZW5kaWYgLyogQ0xJ X1VUSUxTX0ggKi8KIGRpZmYgLS1naXQgYS9nZGIvY29mZnJlYWQuYyBiL2dkYi9jb2ZmcmVhZC5j CiBpbmRleCBiMTFkZDczLi4wODY4YTc5IDEwMDY0NAogLS0tIGEvZ2RiL2NvZmZyZWFkLmMKQEAg LTE0OTYsNyArMTA1NCw3IEBAIGluZGV4IDUxZGRkOWQuLmE1OWFlMTAgMTAwNjQ0CiAgfTsKICAK IGRpZmYgLS1naXQgYS9nZGIvZGVmcy5oIGIvZ2RiL2RlZnMuaAotaW5kZXggOTQwOWRkZS4uZjBm YTRjNyAxMDA2NDQKK2luZGV4IDk1MzFjNWEuLmI5OTQ2NDUgMTAwNjQ0CiAtLS0gYS9nZGIvZGVm cy5oCiArKysgYi9nZGIvZGVmcy5oCiBAQCAtMzk4LDYgKzM5OCw4IEBAIGV4dGVybiBzdHJ1Y3Qg Y2xlYW51cCAqbWFrZV9jbGVhbnVwX3Jlc3RvcmVfcGFnZV9pbmZvICh2b2lkKTsKQEAgLTE1MDks NyArMTA2Nyw3IEBAIGluZGV4IDk0MDlkZGUuLmYwZmE0YzcgMTAwNjQ0CiAgZXh0ZXJuIGNoYXIg KnhmdWxscGF0aCAoY29uc3QgY2hhciAqKTsKICAKIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50 ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotaW5kZXggZTAyMzA1OC4uYmY1NGU5YSAxMDA2 NDQKK2luZGV4IGM3MWQ2NjQuLmI2NmU0MjYgMTAwNjQ0CiAtLS0gYS9nZGIvZG9jL2dkYi50ZXhp bmZvCiArKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCiBAQCAtMTE3Nyw2ICsxMTc3LDE2IEBAIGZv ciByZW1vdGUgZGVidWdnaW5nLgpAQCAtMTU0Nyw3ICsxMTA1LDcgQEAgaW5kZXggZTAyMzA1OC4u YmY1NGU5YSAxMDA2NDQKICtAY2luZGV4IFN5c3RlbVRhcCBzdGF0aWMgcHJvYmUgcG9pbnQKICtA Y2luZGV4IHNkdC1wcm9iZQogK1RoZSBAc2N7Z251fS9MaW51eCB0b29sIEBjb2Rle1N5c3RlbVRh cH0gcHJvdmlkZXMgYSB3YXkgZm9yCi0rYXBwbGljYXRpb25zIHRvIGVtYmVkIHN0YXRpYyBwcm9i ZXMsIHVzaW5nIEBmaWxle3NkdC5ofS4gIEB2YWx1ZXtHREJOfQorK2FwcGxpY2F0aW9ucyB0byBl bWJlZCBzdGF0aWMgcHJvYmVzLCB1c2luZyBAZmlsZXtzeXMvc2R0Lmh9LiAgQHZhbHVle0dEQk59 CiArY2FuIGxpc3QgdGhlIGF2YWlsYWJsZSBwcm9iZXMsIGFuZCB5b3UgY2FuIHB1dCBicmVha3Bv aW50cyBhdCB0aGUKICtwcm9iZSBwb2ludHMgKEBweHJlZntTcGVjaWZ5IExvY2F0aW9ufSkuCiAr CkBAIC0xNjI5LDcgKzExODcsMjQgQEAgaW5kZXggZTAyMzA1OC4uYmY1NGU5YSAxMDA2NDQKICBA aXRlbSAkX3NkYXRhCiAgQHZpbmRleCAkX3NkYXRhQHJ7LCBpbnNwZWN0LCBjb252ZW5pZW5jZSB2 YXJpYWJsZX0KICBUaGUgdmFyaWFibGUgQGNvZGV7JF9zZGF0YX0gY29udGFpbnMgZXh0cmEgY29s bGVjdGVkIHN0YXRpYyB0cmFjZXBvaW50Ci1AQCAtMjA2OTIsOCArMjA3NzQsNiBAQCBjb250YWlu aW5nIEBjb2Rle2VuZH0uICBGb3IgZXhhbXBsZToKK0BAIC0xMDIxOSw2ICsxMDMwMSwxNiBAQCBD b2xsZWN0IGFsbCBmdW5jdGlvbiBhcmd1bWVudHMuCisgQGl0ZW0gJGxvY2FscworIENvbGxlY3Qg YWxsIGxvY2FsIHZhcmlhYmxlcy4KKyAKKytAaXRlbSAkX3Byb2JlX2FyZ2MKKytDb2xsZWN0cyB0 aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBmcm9tIHRoZSBAY29kZXtTeXN0ZW1UYXB9IHByb2JlIGF0 Cisrd2hpY2ggdGhlIHRyYWNlcG9pbnQgaXMgbG9jYXRlZC4KKytAeHJlZntTdGF0aWMgUHJvYmUg UG9pbnRzLCxTdGF0aWMgUHJvYmUgUG9pbnRzfQorKworK0BpdGVtICRfcHJvYmVfYXJnQHZhcntO fQorK1doZXJlIEB2YXJ7Tn0gdmFyaWVzIGZyb20gMCB0byA5LiAgQ29sbGVjdHMgdGhlIEB2YXJ7 Tn10aCBhcmd1bWVudAorK2Zyb20gdGhlIEBjb2Rle1N5c3RlbVRhcH0gcHJvYmUgYXQgd2hpY2gg dGhlIHRyYWNlcG9pbnQgaXMgbG9jYXRlZC4KKytAeHJlZntTdGF0aWMgUHJvYmUgUG9pbnRzLCxT dGF0aWMgUHJvYmUgUG9pbnRzfQorKworIEBpdGVtICRfc2RhdGEKKyBAdmluZGV4ICRfc2RhdGFA cnssIGNvbGxlY3R9CisgQ29sbGVjdCBzdGF0aWMgdHJhY2Vwb2ludCBtYXJrZXIgc3BlY2lmaWMg ZGF0YS4gIE9ubHkgYXZhaWxhYmxlIGZvcgorQEAgLTIwNzEwLDggKzIwODAyLDYgQEAgY29udGFp bmluZyBAY29kZXtlbmR9LiAgRm9yIGV4YW1wbGU6CiAgCiAgQHNtYWxsZXhhbXBsZQogIChAdmFs dWV7R0RCUH0pIHB5dGhvbgpAQCAtMTYzOCw3ICsxMjEzLDcgQEAgaW5kZXggZTAyMzA1OC4uYmY1 NGU5YSAxMDA2NDQKICA+cHJpbnQgMjMKICA+ZW5kCiAgMjMKLUBAIC0yMDcwNiw2ICsyMDc4Niwx NCBAQCBpbiBhIFB5dGhvbiBzY3JpcHQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nIEBj b2Rle21haW50IHNldAorQEAgLTIwNzI0LDYgKzIwODE0LDE0IEBAIGluIGEgUHl0aG9uIHNjcmlw dC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgdXNpbmcgQGNvZGV7bWFpbnQgc2V0CiAgcHl0aG9u IHByaW50LXN0YWNrfTogaWYgQGNvZGV7b259LCB0aGUgZGVmYXVsdCwgdGhlbiBQeXRob24gc3Rh Y2sKICBwcmludGluZyBpcyBlbmFibGVkOyBpZiBAY29kZXtvZmZ9LCB0aGVuIFB5dGhvbiBzdGFj ayBwcmludGluZyBpcwogIGRpc2FibGVkLgpAQCAtMTY1Myw3ICsxMjI4LDcgQEAgaW5kZXggZTAy MzA1OC4uYmY1NGU5YSAxMDA2NDQKICBAZW5kIHRhYmxlCiAgCiAgSXQgaXMgYWxzbyBwb3NzaWJs ZSB0byBleGVjdXRlIGEgUHl0aG9uIHNjcmlwdCBmcm9tIHRoZSBAdmFsdWV7R0RCTn0KLUBAIC0y MDcyNyw2ICsyMDgxNSwxNCBAQCBhbmQgdGh1cyBpcyBhbHdheXMgYXZhaWxhYmxlLgorQEAgLTIw NzQ1LDYgKzIwODQzLDE0IEBAIGFuZCB0aHVzIGlzIGFsd2F5cyBhdmFpbGFibGUuCiAgQGNpbmRl eCBweXRob24gYXBpCiAgQGNpbmRleCBwcm9ncmFtbWluZyBpbiBweXRob24KICAKQEAgLTIyMzAs NyArMTgwNSw3IEBAIGluZGV4IDk2YTQ5MGUuLmIwZWJiMDYgMTAwNjQ0CiAgLyogQ29tcGlsZSBh IERXQVJGIGxvY2F0aW9uIGV4cHJlc3Npb24gdG8gYW4gYWdlbnQgZXhwcmVzc2lvbi4KICAgICAK IGRpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwotaW5kZXgg MGNjNWNhMC4uYjdmZWIwOSAxMDA2NDQKK2luZGV4IGNhNmM5OGIuLmQxNzY2MjQgMTAwNjQ0CiAt LS0gYS9nZGIvZHdhcmYycmVhZC5jCiArKysgYi9nZGIvZHdhcmYycmVhZC5jCiBAQCAtMTIxMSw2 ICsxMjExLDkgQEAgc3RhdGljIHZvaWQgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdh cmYyX2N1ICpjdSwKQEAgLTIyNjMsNyArMTgzOCw3IEBAIGluZGV4IDBjYzVjYTAuLmI3ZmViMDkg MTAwNjQ0CiAgc3RhdGljIHZvaWQgZHdhcmYyX3JlbGVhc2VfcXVldWUgKHZvaWQgKmR1bW15KTsK ICAKICBzdGF0aWMgdm9pZCBxdWV1ZV9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2Rh dGEgKnBlcl9jdSwKLUBAIC03MzE1LDYgKzczMjQsMjkgQEAgcHJvY2Vzc19lbnVtZXJhdGlvbl9z Y29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTcz NDIsNiArNzM1MSwyOSBAQCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBuZXdfc3ltYm9sIChkaWUsIHRoaXNf dHlwZSwgY3UpOwogIH0KICAKQEAgLTIyOTMsNyArMTg2OCw3IEBAIGluZGV4IDBjYzVjYTAuLmI3 ZmViMDkgMTAwNjQ0CiAgLyogRXh0cmFjdCBhbGwgaW5mb3JtYXRpb24gZnJvbSBhIERXX1RBR19h cnJheV90eXBlIERJRSBhbmQgcHV0IGl0IGluCiAgICAgdGhlIERJRSdzIHR5cGUgZmllbGQuICBG b3Igbm93LCB0aGlzIG9ubHkgaGFuZGxlcyBvbmUgZGltZW5zaW9uYWwKICAgICBhcnJheXMuICAq LwotQEAgLTczMjgsNyArNzM2MCw3IEBAIHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTczNTUsNyArNzM4Nyw3IEBAIHJlYWRf YXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQog ICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBlOwog ICAgc3RydWN0IHR5cGUgKipyYW5nZV90eXBlcyA9IE5VTEw7CiAgICBzdHJ1Y3QgYXR0cmlidXRl ICphdHRyOwpAQCAtMjMwMiw3ICsxODc3LDcgQEAgaW5kZXggMGNjNWNhMC4uYjdmZWIwOSAxMDA2 NDQKICAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwogICAgY2hhciAqbmFtZTsKICAKLUBAIC03 MzgxLDE3ICs3NDEzLDE5IEBAIHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTc0MDgsMTcgKzc0NDAsMTkgQEAgcmVhZF9hcnJh eV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICB0 eXBlID0gZWxlbWVudF90eXBlOwogIAogICAgaWYgKHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3Up ID09IERXX09SRF9jb2xfbWFqb3IpCkBAIC0yMzMzLDcgKzE5MDgsNyBAQCBpbmRleCAwY2M1Y2Ew Li5iN2ZlYjA5IDEwMDY0NAogIAogICAgLyogVW5kZXJzdGFuZCBEd2FyZjIgc3VwcG9ydCBmb3Ig dmVjdG9yIHR5cGVzIChsaWtlIHRoZXkgb2NjdXIgb24KICAgICAgIHRoZSBQb3dlclBDIHcvIEFs dGlWZWMpLiAgR2NjIGp1c3QgYWRkcyBhbm90aGVyIGF0dHJpYnV0ZSB0byB0aGUKLUBAIC03ODg0 LDI5ICs3OTE4LDExNCBAQCByZWFkX3RhZ19zdHJpbmdfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTc5MTEsMjkgKzc5NDUsMTE0IEBAIHJlYWRf dGFnX3N0cmluZ190eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZp bGUpOwogICAgc3RydWN0IHR5cGUgKnR5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZSwgKmNo YXJfdHlwZTsKICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CkBAIC0yNDYyLDcgKzIwMzcsNyBA QCBpbmRleCAwY2M1Y2EwLi5iN2ZlYjA5IDEwMDY0NAogICAgY2hhcl90eXBlID0gbGFuZ3VhZ2Vf c3RyaW5nX2NoYXJfdHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwogICAgdHlwZSA9 IGNyZWF0ZV9zdHJpbmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBlKTsKICAKLUBA IC04MTkxLDggKzgzMTAsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04MjE4LDggKzgzMzcsNyBAQCByZWFkX3N1 YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK ICAgIHN0cnVjdCB0eXBlICpiYXNlX3R5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsK ICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CkBAIC0yNDcyLDcgKzIwNDcsNyBAQCBpbmRleCAw Y2M1Y2EwLi5iN2ZlYjA5IDEwMDY0NAogICAgY2hhciAqbmFtZTsKICAgIExPTkdFU1QgbmVnYXRp dmVfbWFzazsKICAKLUBAIC04MjA1LDUzICs4MzIzLDEyNiBAQCByZWFkX3N1YnJhbmdlX3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04MjMyLDUz ICs4MzUwLDEyNiBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIGlmIChyYW5nZV90eXBlKQogICAgICByZXR1cm4gcmFu Z2VfdHlwZTsKICAKQEAgLTI2MzQsNyArMjIwOSw3IEBAIGluZGV4IDBjYzVjYTAuLmI3ZmViMDkg MTAwNjQ0CiAgICAgIH0KICAKICAgIC8qIER3YXJmLTIgc3BlY2lmaWNhdGlvbnMgZXhwbGljaXRs eSBhbGxvd3MgdG8gY3JlYXRlIHN1YnJhbmdlIHR5cGVzCi1AQCAtODI5MiwyNCArODQ4Myw0MSBA QCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKK0BAIC04MzE5LDI0ICs4NTEwLDQxIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAl9CiAgICAgIH0KICAK QEAgLTI2OTIsNyArMjI2Nyw3IEBAIGluZGV4IDBjYzVjYTAuLmI3ZmViMDkgMTAwNjQ0CiAgCiAg ICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwogICAgaWYgKG5hbWUpCi1AQCAtMTA4MzUs MTAgKzExMDQzLDEyIEBAIHZhcl9kZWNvZGVfbG9jYXRpb24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0 dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKK0BAIC0xMDg4MSwxMCArMTEwODksMTIgQEAgdmFyX2Rl Y29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3lt LAogICAgICAgKGkuZS4gd2hlbiB0aGUgdmFsdWUgb2YgYSByZWdpc3RlciBvciBtZW1vcnkgbG9j YXRpb24gaXMKICAgICAgIHJlZmVyZW5jZWQsIG9yIGEgdGhyZWFkLWxvY2FsIGJsb2NrLCBldGMu KS4gIFRoZW4gYWdhaW4sIGl0IG1pZ2h0CiAgICAgICBub3QgYmUgd29ydGh3aGlsZS4gIEknbSBh c3N1bWluZyB0aGF0IGl0IGlzbid0IHVubGVzcyBwZXJmb3JtYW5jZQpAQCAtMjcwNyw3ICsyMjgy LDcgQEAgaW5kZXggMGNjNWNhMC4uYjdmZWIwOSAxMDA2NDQKICB9CiAgCiAgLyogR2l2ZW4gYSBw b2ludGVyIHRvIGEgRFdBUkYgaW5mb3JtYXRpb24gZW50cnksIGZpZ3VyZSBvdXQgaWYgd2UgbmVl ZAotQEAgLTEwODc2LDYgKzExMDg2LDggQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorQEAgLTEw OTIyLDYgKzExMTMyLDggQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogICAgICAgIGVsc2UKICAJ c3ltID0gT0JTVEFDS19aQUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBz eW1ib2wpOwogICAgICAgIE9CSlNUQVQgKG9iamZpbGUsIG5fc3ltcysrKTsKQEAgLTI3MTYsNyAr MjI5MSw3IEBAIGluZGV4IDBjYzVjYTAuLmI3ZmViMDkgMTAwNjQ0CiAgCiAgICAgICAgLyogQ2Fj aGUgdGhpcyBzeW1ib2wncyBuYW1lIGFuZCB0aGUgbmFtZSdzIGRlbWFuZ2xlZCBmb3JtIChpZiBh bnkpLiAgKi8KICAgICAgICBTWU1CT0xfU0VUX0xBTkdVQUdFIChzeW0sIGN1LT5sYW5ndWFnZSk7 Ci1AQCAtMTE2NDgsNiArMTE4NjAsOSBAQCByZWFkX3R5cGVfZGllXzEgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xMTY5NCw2ICsxMTkwNiw5IEBAIHJl YWRfdHlwZV9kaWVfMSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQogICAgICAgIGJyZWFrOwogICAgICB9CiAgCkBAIC0yNzI2LDcgKzIzMDEsNyBAQCBpbmRleCAw Y2M1Y2EwLi5iN2ZlYjA5IDEwMDY0NAogICAgcmV0dXJuIHRoaXNfdHlwZTsKICB9CiAgCi1AQCAt MTQ0NjgsNjEgKzE0NjgzLDk5IEBAIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGR3YXJm Ml9jdSAqY3UsCitAQCAtMTQ1NDgsNjEgKzE0NzYzLDk5IEBAIGZpbGxfaW5fbG9jbGlzdF9iYXRv biAoc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAgICBiYXRvbi0+YmFzZV9hZGRyZXNzID0gY3UtPmJh c2VfYWRkcmVzczsKICB9CiAgCkBAIC0yODY5LDcgKzI0NDQsNyBAQCBpbmRleCAwY2M1Y2EwLi5i N2ZlYjA5IDEwMDY0NAogICAgICB9CiAgfQogIAotQEAgLTE0ODY4LDYgKzE1MTIxLDI1IEBAIG9m ZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1f cmhzKQorQEAgLTE0OTUxLDYgKzE1MjA0LDI1IEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qg dm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQogICAgcmV0dXJuIG9mc19saHMt Pm9mZnNldCA9PSBvZnNfcmhzLT5vZmZzZXQ7CiAgfQogIApAQCAtMjg5Miw1NzMgKzI0NjcsNjQg QEAgaW5kZXggMGNjNWNhMC4uYjdmZWIwOSAxMDA2NDQKICsgIGdkYl9hc3NlcnQgKCFUWVBFX05P VF9BU1NPQ0lBVEVEICh0eXBlKSk7CiArfQogKwotIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVk IHdpdGggRElFIHRvIFRZUEUuICBTYXZlIGl0IGluIENVJ3MgaGFzaAotICAgIHRhYmxlIGlmIG5l Y2Vzc2FyeS4gIEZvciBjb252ZW5pZW5jZSwgcmV0dXJuIFRZUEUuCi0gCi1AQCAtMTQ4OTMsNiAr MTUxNjUsOCBAQCBzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlw ZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSA9IGN1LT5vYmpmaWxlOwotICAgaHRhYl90ICp0eXBlX2hhc2hfcHRyOwotIAotKyAgZmV0Y2hf ZGllX3R5cGVfYXR0cnMgKGRpZSwgdHlwZSwgY3UpOwotKwotICAgLyogRm9yIEFkYSB0eXBlcywg bWFrZSBzdXJlIHRoYXQgdGhlIGduYXQtc3BlY2lmaWMgZGF0YSBpcyBhbHdheXMKLSAgICAgIGlu aXRpYWxpemVkIChpZiBub3QgYWxyZWFkeSBzZXQpLiAgVGhlcmUgYXJlIGEgZmV3IHR5cGVzIHdo ZXJlCi0gICAgICB3ZSBzaG91bGQgbm90IGJlIGRvaW5nIHNvLCBiZWNhdXNlIHRoZSB0eXBlLXNw ZWNpZmljIGFyZWEgaXMKLWRpZmYgLS1naXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJlYWQu YwotaW5kZXggZGFjYzZmMC4uZjc5Njg1MSAxMDA2NDQKLS0tLSBhL2dkYi9lbGZyZWFkLmMKLSsr KyBiL2dkYi9lbGZyZWFkLmMKLUBAIC0zOCw2ICszOCwxMyBAQAotICNpbmNsdWRlICJkZW1hbmds ZS5oIgotICNpbmNsdWRlICJwc3ltcHJpdi5oIgotICNpbmNsdWRlICJmaWxlbmFtZXMuaCIKLSsj aW5jbHVkZSAiZ2RidHlwZXMuaCIKLSsjaW5jbHVkZSAidmFsdWUuaCIKLSsjaW5jbHVkZSAiaW5m Y2FsbC5oIgotKyNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKLSsjaW5jbHVkZSAicmVnY2FjaGUuaCIK LSsjaW5jbHVkZSAic3RhcC1wcm9iZS5oIgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0gCi0g ZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCk7Ci0gCi1AQCAtNTYsOCArNjMs MzAgQEAgc3RydWN0IGVsZmluZm8KLSAgICAgYXNlY3Rpb24gKm1kZWJ1Z3NlY3Q7CS8qIFNlY3Rp b24gcG9pbnRlciBmb3IgLm1kZWJ1ZyBzZWN0aW9uICovCi0gICB9OwotIAotKy8qIFBlci1vYmpm aWxlIGRhdGEgZm9yIFN5c3RlbXRhcCBwcm9iZSBpbmZvLiAgKi8KLSsKLStzdGF0aWMgY29uc3Qg c3RydWN0IG9iamZpbGVfZGF0YSAqc3RhcF9wcm9iZV9rZXkgPSBOVUxMOwotKwotKy8qIFBlci1v YmpmaWxlIGRhdGEgYWJvdXQgU3lzdGVtdGFwIHByb2Jlcy4gICovCi0rCi0rc3RydWN0IHN0YXBf cHJvYmVfcGVyX29iamZpbGUKLSsgIHsKLSsgICAgLyogVGhlIG51bWJlciBvZiBwcm9iZXMgaW4g dGhpcyBvYmpmaWxlLiAgKi8KLSsgICAgaW50IHN0YXBfbnVtX3Byb2JlczsKLSsKLSsgICAgLyog VGhlIHByb2JlcyB0aGVtc2VsdmVzLiAgKi8KLSsgICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2Jl czsKLSsgIH07Ci0rCi0gc3RhdGljIHZvaWQgZnJlZV9lbGZpbmZvICh2b2lkICopOwotIAotKy8q IE1pbmltYWwgc3ltYm9scyBsb2NhdGVkIGF0IHRoZSBHT1QgZW50cmllcyBmb3IgLnBsdCAtIHRo YXQgaXMgdGhlIHJlYWwKLSsgICBwb2ludGVyIHdoZXJlIHRoZSBnaXZlbiBlbnRyeSB3aWxsIGp1 bXAgdG8uICBJdCBnZXRzIHVwZGF0ZWQgYnkgdGhlIHJlYWwKLSsgICBmdW5jdGlvbiBhZGRyZXNz IGR1cmluZyBsYXp5IGxkLnNvIHJlc29sdmluZyBpbiB0aGUgaW5mZXJpb3IuICBUaGVzZQotKyAg IG1pbmltYWwgc3ltYm9scyBhcmUgaW5kZXhlZCBmb3IgPHRhYj4tY29tcGxldGlvbi4gICovCi0r Ci0rI2RlZmluZSBTWU1CT0xfR09UX1BMVF9TVUZGSVggIkBnb3QucGx0IgotKwotIC8qIExvY2F0 ZSB0aGUgc2VnbWVudHMgaW4gQUJGRC4gICovCi0gCi0gc3RhdGljIHN0cnVjdCBzeW1maWxlX3Nl Z21lbnRfZGF0YSAqCi1AQCAtMTg1LDcgKzIxNCw4IEBAIHJlY29yZF9taW5pbWFsX3N5bWJvbCAo Y29uc3QgY2hhciAqbmFtZSwgaW50IG5hbWVfbGVuLCBpbnQgY29weV9uYW1lLAotIHsKLSAgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7Ci0gCi0t ICBpZiAobXNfdHlwZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3RleHQpCi0r ICBpZiAobXNfdHlwZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3RleHQKLSsg ICAgICB8fCBtc190eXBlID09IG1zdF90ZXh0X2dudV9pZnVuYykKLSAgICAgYWRkcmVzcyA9IGdk YmFyY2hfc21hc2hfdGV4dF9hZGRyZXNzIChnZGJhcmNoLCBhZGRyZXNzKTsKLSAKLSAgIHJldHVy biBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbF9mdWxsIChuYW1lLCBuYW1lX2xlbiwgY29weV9u YW1lLCBhZGRyZXNzLAotQEAgLTM5NCw3ICs0MjQsMTAgQEAgZWxmX3N5bXRhYl9yZWFkIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IHR5cGUsCi0gCSAgICB7Ci0gCSAgICAgIGlmIChzeW0t PmZsYWdzICYgKEJTRl9HTE9CQUwgfCBCU0ZfV0VBSykpCi0gCQl7Ci0tCQkgIG1zX3R5cGUgPSBt c3RfdGV4dDsKLSsJCSAgaWYgKHN5bS0+ZmxhZ3MgJiBCU0ZfR05VX0lORElSRUNUX0ZVTkNUSU9O KQotKwkJICAgIG1zX3R5cGUgPSBtc3RfdGV4dF9nbnVfaWZ1bmM7Ci0rCQkgIGVsc2UKLSsJCSAg ICBtc190eXBlID0gbXN0X3RleHQ7Ci0gCQl9Ci0gCSAgICAgIGVsc2UgaWYgKChzeW0tPm5hbWVb MF0gPT0gJy4nICYmIHN5bS0+bmFtZVsxXSA9PSAnTCcpCi0gCQkgICAgICAgfHwgKChzeW0tPmZs YWdzICYgQlNGX0xPQ0FMKQotQEAgLTU3OCw2ICs2MTEsNDY3IEBAIGVsZl9zeW10YWJfcmVhZCAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCB0eXBlLAotICAgZG9fY2xlYW51cHMgKGJhY2tf dG8pOwotIH0KLSAKLSsvKiBCdWlsZCBtaW5pbWFsIHN5bWJvbHMgbmFtZWQgYGZ1bmN0aW9uQGdv dC5wbHQnIChzZWUgU1lNQk9MX0dPVF9QTFRfU1VGRklYKQotKyAgIGZvciBsYXRlciBsb29rIHVw cyBvZiB3aGljaCBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdXNlciByZXF1ZXN0cwotKyAgIGEgU1RU X0dOVV9JRlVOQyBmdW5jdGlvbi4gIEFzIHRoZSBTVFRfR05VX0lGVU5DIHR5cGUgaXMgZm91bmQg YXQgdGhlIHRhcmdldAotKyAgIGxpYnJhcnkgZGVmaW5pbmcgYGZ1bmN0aW9uJyB3ZSBjYW5ub3Qg eWV0IGtub3cgd2hpbGUgcmVhZGluZyBPQkpGSUxFIHdoaWNoCi0rICAgb2YgdGhlIFNZTUJPTF9H T1RfUExUX1NVRkZJWCBlbnRyaWVzIHdpbGwgYmUgbmVlZGVkIGFuZCBsYXRlcgotKyAgIERZTl9T WU1CT0xfVEFCTEUgaXMgbm8gbG9uZ2VyIGVhc2lseSBhdmFpbGFibGUgZm9yIE9CSkZJTEUuICAq LwotKwotK3N0YXRpYyB2b2lkCi0rZWxmX3JlbF9wbHRfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIGFzeW1ib2wgKipkeW5fc3ltYm9sX3RhYmxlKQotK3sKLSsgIGJmZCAqb2JmZCA9IG9i amZpbGUtPm9iZmQ7Ci0rICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkID0gZ2V0 X2VsZl9iYWNrZW5kX2RhdGEgKG9iZmQpOwotKyAgYXNlY3Rpb24gKnBsdCwgKnJlbHBsdCwgKmdv dF9wbHQ7Ci0rICB1bnNpZ25lZCB1OwotKyAgaW50IHBsdF9lbGZfaWR4OwotKyAgYmZkX3NpemVf dHlwZSByZWxvY19jb3VudCwgcmVsb2M7Ci0rICBjaGFyICpzdHJpbmdfYnVmZmVyID0gTlVMTDsK LSsgIHNpemVfdCBzdHJpbmdfYnVmZmVyX3NpemUgPSAwOwotKyAgc3RydWN0IGNsZWFudXAgKmJh Y2tfdG87Ci0rICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IG9iamZpbGUtPmdkYmFyY2g7Ci0r ICBzdHJ1Y3QgdHlwZSAqcHRyX3R5cGUgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGlu X2RhdGFfcHRyOwotKyAgc2l6ZV90IHB0cl9zaXplID0gVFlQRV9MRU5HVEggKHB0cl90eXBlKTsK LSsKLSsgIGlmIChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rKQotKyAg ICByZXR1cm47Ci0rCi0rICBwbHQgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAob2JmZCwgIi5w bHQiKTsKLSsgIGlmIChwbHQgPT0gTlVMTCkKLSsgICAgcmV0dXJuOwotKyAgcGx0X2VsZl9pZHgg PSBlbGZfc2VjdGlvbl9kYXRhIChwbHQpLT50aGlzX2lkeDsKLSsKLSsgIGdvdF9wbHQgPSBiZmRf Z2V0X3NlY3Rpb25fYnlfbmFtZSAob2JmZCwgIi5nb3QucGx0Iik7Ci0rICBpZiAoZ290X3BsdCA9 PSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0rICAvKiBUaGlzIHNlYXJjaCBhbGdvcml0aG0gaXMg ZnJvbSBfYmZkX2VsZl9jYW5vbmljYWxpemVfZHluYW1pY19yZWxvYy4gICovCi0rICBmb3IgKHJl bHBsdCA9IG9iZmQtPnNlY3Rpb25zOyByZWxwbHQgIT0gTlVMTDsgcmVscGx0ID0gcmVscGx0LT5u ZXh0KQotKyAgICBpZiAoZWxmX3NlY3Rpb25fZGF0YSAocmVscGx0KS0+dGhpc19oZHIuc2hfaW5m byA9PSBwbHRfZWxmX2lkeAotKwkmJiAoZWxmX3NlY3Rpb25fZGF0YSAocmVscGx0KS0+dGhpc19o ZHIuc2hfdHlwZSA9PSBTSFRfUkVMCi0rCSAgICB8fCBlbGZfc2VjdGlvbl9kYXRhIChyZWxwbHQp LT50aGlzX2hkci5zaF90eXBlID09IFNIVF9SRUxBKSkKLSsgICAgICBicmVhazsKLSsgIGlmIChy ZWxwbHQgPT0gTlVMTCkKLSsgICAgcmV0dXJuOwotKwotKyAgaWYgKCEgYmVkLT5zLT5zbHVycF9y ZWxvY190YWJsZSAob2JmZCwgcmVscGx0LCBkeW5fc3ltYm9sX3RhYmxlLCBUUlVFKSkKLSsgICAg cmV0dXJuOwotKwotKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRl bnRzLCAmc3RyaW5nX2J1ZmZlcik7Ci0rCi0rICByZWxvY19jb3VudCA9IHJlbHBsdC0+c2l6ZSAv IGVsZl9zZWN0aW9uX2RhdGEgKHJlbHBsdCktPnRoaXNfaGRyLnNoX2VudHNpemU7Ci0rICBmb3Ig KHJlbG9jID0gMDsgcmVsb2MgPCByZWxvY19jb3VudDsgcmVsb2MrKykKLSsgICAgewotKyAgICAg IGNvbnN0IGNoYXIgKm5hbWUsICpuYW1lX2dvdF9wbHQ7Ci0rICAgICAgc3RydWN0IG1pbmltYWxf c3ltYm9sICptc3ltOwotKyAgICAgIENPUkVfQUREUiBhZGRyZXNzOwotKyAgICAgIGNvbnN0IHNp emVfdCBnb3Rfc3VmZml4X2xlbiA9IHN0cmxlbiAoU1lNQk9MX0dPVF9QTFRfU1VGRklYKTsKLSsg ICAgICBzaXplX3QgbmFtZV9sZW47Ci0rCi0rICAgICAgbmFtZSA9IGJmZF9hc3ltYm9sX25hbWUg KCpyZWxwbHQtPnJlbG9jYXRpb25bcmVsb2NdLnN5bV9wdHJfcHRyKTsKLSsgICAgICBuYW1lX2xl biA9IHN0cmxlbiAobmFtZSk7Ci0rICAgICAgYWRkcmVzcyA9IHJlbHBsdC0+cmVsb2NhdGlvblty ZWxvY10uYWRkcmVzczsKLSsKLSsgICAgICAvKiBEb2VzIHRoZSBwb2ludGVyIHJlc2lkZSBpbiB0 aGUgLmdvdC5wbHQgc2VjdGlvbj8gICovCi0rICAgICAgaWYgKCEoYmZkX2dldF9zZWN0aW9uX3Zt YSAob2JmZCwgZ290X3BsdCkgPD0gYWRkcmVzcwotKyAgICAgICAgICAgICYmIGFkZHJlc3MgPCBi ZmRfZ2V0X3NlY3Rpb25fdm1hIChvYmZkLCBnb3RfcGx0KQotKwkJCSArIGJmZF9nZXRfc2VjdGlv bl9zaXplIChnb3RfcGx0KSkpCi0rCWNvbnRpbnVlOwotKwotKyAgICAgIC8qIFdlIGNhbm5vdCBj aGVjayBpZiBOQU1FIGlzIGEgcmVmZXJlbmNlIHRvIG1zdF90ZXh0X2dudV9pZnVuYyBhcyBpbgot KwkgT0JKRklMRSB0aGUgc3ltYm9sIGlzIHVuZGVmaW5lZCBhbmQgdGhlIG9iamZpbGUgaGF2aW5n IE5BTUUgZGVmaW5lZAotKwkgbWF5IG5vdCB5ZXQgaGF2ZSBiZWVuIGxvYWRlZC4gICovCi0rCi0r ICAgICAgaWYgKHN0cmluZ19idWZmZXJfc2l6ZSA8IG5hbWVfbGVuICsgZ290X3N1ZmZpeF9sZW4p Ci0rCXsKLSsJICBzdHJpbmdfYnVmZmVyX3NpemUgPSAyICogKG5hbWVfbGVuICsgZ290X3N1ZmZp eF9sZW4pOwotKwkgIHN0cmluZ19idWZmZXIgPSB4cmVhbGxvYyAoc3RyaW5nX2J1ZmZlciwgc3Ry aW5nX2J1ZmZlcl9zaXplKTsKLSsJfQotKyAgICAgIG1lbWNweSAoc3RyaW5nX2J1ZmZlciwgbmFt ZSwgbmFtZV9sZW4pOwotKyAgICAgIG1lbWNweSAoJnN0cmluZ19idWZmZXJbbmFtZV9sZW5dLCBT WU1CT0xfR09UX1BMVF9TVUZGSVgsCi0rCSAgICAgIGdvdF9zdWZmaXhfbGVuKTsKLSsKLSsgICAg ICBtc3ltID0gcmVjb3JkX21pbmltYWxfc3ltYm9sIChzdHJpbmdfYnVmZmVyLCBuYW1lX2xlbiAr IGdvdF9zdWZmaXhfbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEs IGFkZHJlc3MsIG1zdF9zbG90X2dvdF9wbHQsIGdvdF9wbHQsCi0rCQkJCSAgICBvYmpmaWxlKTsK LSsgICAgICBpZiAobXN5bSkKLSsJTVNZTUJPTF9TSVpFIChtc3ltKSA9IHB0cl9zaXplOwotKyAg ICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0rfQotKwotKy8qIFRoZSBkYXRhIHBv aW50ZXIgaXMgaHRhYl90IGZvciBnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlX3VuY2hlY2tlZC4gICov Ci0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBvYmpmaWxlX2RhdGEgKmVsZl9vYmpmaWxlX2dudV9p ZnVuY19jYWNoZV9kYXRhOwotKwotKy8qIE1hcCBmdW5jdGlvbiBuYW1lcyB0byBDT1JFX0FERFIg aW4gZWxmX29iamZpbGVfZ251X2lmdW5jX2NhY2hlX2RhdGEuICAqLwotKwotK3N0cnVjdCBlbGZf Z251X2lmdW5jX2NhY2hlCi0rewotKyAgLyogVGhpcyBpcyBhbHdheXMgYSBmdW5jdGlvbiBlbnRy eSBhZGRyZXNzLCBub3QgYSBmdW5jdGlvbiBkZXNjcmlwdG9yLiAgKi8KLSsgIENPUkVfQUREUiBh ZGRyOwotKwotKyAgY2hhciBuYW1lWzFdOwotK307Ci0rCi0rLyogaHRhYl9oYXNoIGZvciBlbGZf b2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YS4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAot K2VsZl9nbnVfaWZ1bmNfY2FjaGVfaGFzaCAoY29uc3Qgdm9pZCAqYV92b2lkcCkKLSt7Ci0rICBj b25zdCBzdHJ1Y3QgZWxmX2dudV9pZnVuY19jYWNoZSAqYSA9IGFfdm9pZHA7Ci0rCi0rICByZXR1 cm4gaHRhYl9oYXNoX3N0cmluZyAoYS0+bmFtZSk7Ci0rfQotKwotKy8qIGh0YWJfZXEgZm9yIGVs Zl9vYmpmaWxlX2dudV9pZnVuY19jYWNoZV9kYXRhLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rZWxm X2dudV9pZnVuY19jYWNoZV9lcSAoY29uc3Qgdm9pZCAqYV92b2lkcCwgY29uc3Qgdm9pZCAqYl92 b2lkcCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgZWxmX2dudV9pZnVuY19jYWNoZSAqYSA9IGFfdm9p ZHA7Ci0rICBjb25zdCBzdHJ1Y3QgZWxmX2dudV9pZnVuY19jYWNoZSAqYiA9IGJfdm9pZHA7Ci0r Ci0rICByZXR1cm4gc3RyY21wIChhLT5uYW1lLCBiLT5uYW1lKSA9PSAwOwotK30KLSsKLSsvKiBS ZWNvcmQgdGhlIHRhcmdldCBmdW5jdGlvbiBhZGRyZXNzIG9mIGEgU1RUX0dOVV9JRlVOQyBmdW5j dGlvbiBOQU1FIGlzIHRoZQotKyAgIGZ1bmN0aW9uIGVudHJ5IGFkZHJlc3MgQUREUi4gIFJldHVy biAxIGlmIE5BTUUgYW5kIEFERFIgYXJlIGNvbnNpZGVyZWQgYXMKLSsgICB2YWxpZCBhbmQgdGhl cmVmb3JlIHRoZXkgd2VyZSBzdWNjZXNzZnVsbHkgcmVjb3JkZWQsIHJldHVybiAwIG90aGVyd2lz ZS4KLSsKLSsgICBGdW5jdGlvbiBkb2VzIG5vdCBleHBlY3QgYSBkdXBsaWNhdGUgZW50cnkuICBV c2UKLSsgICBlbGZfZ251X2lmdW5jX3Jlc29sdmVfYnlfY2FjaGUgZmlyc3QgdG8gY2hlY2sgaWYg dGhlIGVudHJ5IGZvciBOQU1FIGFscmVhZHkKLSsgICBleGlzdHMuICAqLwotKwotK3N0YXRpYyBp bnQKLStlbGZfZ251X2lmdW5jX3JlY29yZF9jYWNoZSAoY29uc3QgY2hhciAqbmFtZSwgQ09SRV9B RERSIGFkZHIpCi0rewotKyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltOwotKyAgYXNlY3Rp b24gKnNlY3Q7Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsgIGh0YWJfdCBodGFiOwot KyAgc3RydWN0IGVsZl9nbnVfaWZ1bmNfY2FjaGUgZW50cnlfbG9jYWwsICplbnRyeV9wOwotKyAg dm9pZCAqKnNsb3Q7Ci0rCi0rICBtc3ltID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChh ZGRyKTsKLSsgIGlmIChtc3ltID09IE5VTEwpCi0rICAgIHJldHVybiAwOwotKyAgaWYgKFNZTUJP TF9WQUxVRV9BRERSRVNTIChtc3ltKSAhPSBhZGRyKQotKyAgICByZXR1cm4gMDsKLSsgIC8qIG1p bmltYWwgc3ltYm9scyBoYXZlIGFsd2F5cyBTWU1CT0xfT0JKX1NFQ1RJT04gbm9uLU5VTEwuICAq LwotKyAgc2VjdCA9IFNZTUJPTF9PQkpfU0VDVElPTiAobXN5bSktPnRoZV9iZmRfc2VjdGlvbjsK LSsgIG9iamZpbGUgPSBTWU1CT0xfT0JKX1NFQ1RJT04gKG1zeW0pLT5vYmpmaWxlOwotKwotKyAg LyogSWYgLnBsdCBqdW1wcyBiYWNrIHRvIC5wbHQgdGhlIHN5bWJvbCBpcyBzdGlsbCBkZWZlcnJl ZCBmb3IgbGF0ZXIKLSsgICAgIHJlc29sdXRpb24gYW5kIGl0IGhhcyBubyB1c2UgZm9yIEdEQi4g IEJlc2lkZXMgIi50ZXh0IiB0aGlzIHN5bWJvbCBjYW4KLSsgICAgIHJlc2lkZSBhbHNvIGluICIu b3BkIiBmb3IgcHBjNjQgZnVuY3Rpb24gZGVzY3JpcHRvci4gICovCi0rICBpZiAoc3RyY21wIChi ZmRfZ2V0X3NlY3Rpb25fbmFtZSAob2JqZmlsZS0+b2JmZCwgc2VjdCksICIucGx0IikgPT0gMCkK LSsgICAgcmV0dXJuIDA7Ci0rCi0rICBodGFiID0gb2JqZmlsZV9kYXRhIChvYmpmaWxlLCBlbGZf b2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YSk7Ci0rICBpZiAoaHRhYiA9PSBOVUxMKQotKyAg ICB7Ci0rICAgICAgaHRhYiA9IGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCBlbGZfZ251X2lmdW5j X2NhY2hlX2hhc2gsCi0rCQkJCSAgIGVsZl9nbnVfaWZ1bmNfY2FjaGVfZXEsCi0rCQkJCSAgIE5V TEwsICZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0rCQkJCSAgIGhhc2h0YWJfb2JzdGFja19h bGxvY2F0ZSwKLSsJCQkJICAgZHVtbXlfb2JzdGFja19kZWFsbG9jYXRlKTsKLSsgICAgICBzZXRf b2JqZmlsZV9kYXRhIChvYmpmaWxlLCBlbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YSwg aHRhYik7Ci0rICAgIH0KLSsKLSsgIGVudHJ5X2xvY2FsLmFkZHIgPSBhZGRyOwotKyAgb2JzdGFj a19ncm93ICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCAmZW50cnlfbG9jYWwsCi0rCQlvZmZz ZXRvZiAoc3RydWN0IGVsZl9nbnVfaWZ1bmNfY2FjaGUsIG5hbWUpKTsKLSsgIG9ic3RhY2tfZ3Jv d19zdHIwICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBuYW1lKTsKLSsgIGVudHJ5X3AgPSBv YnN0YWNrX2ZpbmlzaCAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0rCi0rICBzbG90ID0g aHRhYl9maW5kX3Nsb3QgKGh0YWIsIGVudHJ5X3AsIElOU0VSVCk7Ci0rICBpZiAoKnNsb3QgIT0g TlVMTCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBlbGZfZ251X2lmdW5jX2NhY2hlICplbnRyeV9m b3VuZF9wID0gKnNsb3Q7Ci0rICAgICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBvYmpmaWxl LT5nZGJhcmNoOwotKwotKyAgICAgIGlmIChlbnRyeV9mb3VuZF9wLT5hZGRyICE9IGFkZHIpCi0r CXsKLSsJICAvKiBUaGlzIGNhc2UgaW5kaWNhdGVzIGJ1Z2d5IGluZmVyaW9yIHByb2dyYW0sIHRo ZSByZXNvbHZlZCBhZGRyZXNzCi0rCSAgICAgc2hvdWxkIG5ldmVyIGNoYW5nZS4gICovCi0rCi0r CSAgICB3YXJuaW5nIChfKCJnbnUtaW5kaXJlY3QtZnVuY3Rpb24gXCIlc1wiIGhhcyBjaGFuZ2Vk IGl0cyByZXNvbHZlZCAiCi0rCQkgICAgICAgImZ1bmN0aW9uX2FkZHJlc3MgZnJvbSAlcyB0byAl cyIpLAotKwkJICAgICBuYW1lLCBwYWRkcmVzcyAoZ2RiYXJjaCwgZW50cnlfZm91bmRfcC0+YWRk ciksCi0rCQkgICAgIHBhZGRyZXNzIChnZGJhcmNoLCBhZGRyKSk7Ci0rCX0KLSsKLSsgICAgICAv KiBOZXcgRU5UUllfUCBpcyBoZXJlIGxlYWtlZC9kdXBsaWNhdGUgaW4gdGhlIE9CSkZJTEUgb2Jz dGFjay4gICovCi0rICAgIH0KLSsgICpzbG90ID0gZW50cnlfcDsKLSsKLSsgIHJldHVybiAxOwot K30KLSsKLSsvKiBUcnkgdG8gZmluZCB0aGUgdGFyZ2V0IHJlc29sdmVkIGZ1bmN0aW9uIGVudHJ5 IGFkZHJlc3Mgb2YgYSBTVFRfR05VX0lGVU5DCi0rICAgZnVuY3Rpb24gTkFNRS4gIElmIHRoZSBh ZGRyZXNzIGlzIGZvdW5kIGl0IGlzIHN0b3JlZCB0byAqQUREUl9QIChpZiBBRERSX1AKLSsgICBp cyBub3QgTlVMTCkgYW5kIHRoZSBmdW5jdGlvbiByZXR1cm5zIDEuICBJdCByZXR1cm5zIDAgb3Ro ZXJ3aXNlLgotKwotKyAgIE9ubHkgdGhlIGVsZl9vYmpmaWxlX2dudV9pZnVuY19jYWNoZV9kYXRh IGhhc2ggdGFibGUgaXMgc2VhcmNoZWQgYnkgdGhpcwotKyAgIGZ1bmN0aW9uLiAgKi8KLSsKLStz dGF0aWMgaW50Ci0rZWxmX2dudV9pZnVuY19yZXNvbHZlX2J5X2NhY2hlIChjb25zdCBjaGFyICpu YW1lLCBDT1JFX0FERFIgKmFkZHJfcCkKLSt7Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsK LSsKLSsgIEFMTF9QU1BBQ0VfT0JKRklMRVMgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSwgb2JqZmls ZSkKLSsgICAgewotKyAgICAgIGh0YWJfdCBodGFiOwotKyAgICAgIHN0cnVjdCBlbGZfZ251X2lm dW5jX2NhY2hlICplbnRyeV9wOwotKyAgICAgIHZvaWQgKipzbG90OwotKwotKyAgICAgIGh0YWIg PSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIGVsZl9vYmpmaWxlX2dudV9pZnVuY19jYWNoZV9kYXRh KTsKLSsgICAgICBpZiAoaHRhYiA9PSBOVUxMKQotKwljb250aW51ZTsKLSsKLSsgICAgICBlbnRy eV9wID0gYWxsb2NhIChzaXplb2YgKCplbnRyeV9wKSArIHN0cmxlbiAobmFtZSkpOwotKyAgICAg IHN0cmNweSAoZW50cnlfcC0+bmFtZSwgbmFtZSk7Ci0rCi0rICAgICAgc2xvdCA9IGh0YWJfZmlu ZF9zbG90IChodGFiLCBlbnRyeV9wLCBOT19JTlNFUlQpOwotKyAgICAgIGlmIChzbG90ID09IE5V TEwpCi0rCWNvbnRpbnVlOwotKyAgICAgIGVudHJ5X3AgPSAqc2xvdDsKLSsgICAgICBnZGJfYXNz ZXJ0IChlbnRyeV9wICE9IE5VTEwpOwotKwotKyAgICAgIGlmIChhZGRyX3ApCi0rCSphZGRyX3Ag PSBlbnRyeV9wLT5hZGRyOwotKyAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICByZXR1cm4g MDsKLSt9Ci0rCi0rLyogVHJ5IHRvIGZpbmQgdGhlIHRhcmdldCByZXNvbHZlZCBmdW5jdGlvbiBl bnRyeSBhZGRyZXNzIG9mIGEgU1RUX0dOVV9JRlVOQwotKyAgIGZ1bmN0aW9uIE5BTUUuICBJZiB0 aGUgYWRkcmVzcyBpcyBmb3VuZCBpdCBpcyBzdG9yZWQgdG8gKkFERFJfUCAoaWYgQUREUl9QCi0r ICAgaXMgbm90IE5VTEwpIGFuZCB0aGUgZnVuY3Rpb24gcmV0dXJucyAxLiAgSXQgcmV0dXJucyAw IG90aGVyd2lzZS4KLSsKLSsgICBPbmx5IHRoZSBTWU1CT0xfR09UX1BMVF9TVUZGSVggbG9jYXRp b25zIGFyZSBzZWFyY2hlZCBieSB0aGlzIGZ1bmN0aW9uLgotKyAgIGVsZl9nbnVfaWZ1bmNfcmVz b2x2ZV9ieV9jYWNoZSBtdXN0IGhhdmUgYmVlbiBhbHJlYWR5IGNhbGxlZCBmb3IgTkFNRSB0bwot KyAgIHByZXZlbnQgY2FjaGUgZW50cmllcyBkdXBsaWNhdGVzLiAgKi8KLSsKLStzdGF0aWMgaW50 Ci0rZWxmX2dudV9pZnVuY19yZXNvbHZlX2J5X2dvdCAoY29uc3QgY2hhciAqbmFtZSwgQ09SRV9B RERSICphZGRyX3ApCi0rewotKyAgY2hhciAqbmFtZV9nb3RfcGx0OwotKyAgc3RydWN0IG9iamZp bGUgKm9iamZpbGU7Ci0rICBjb25zdCBzaXplX3QgZ290X3N1ZmZpeF9sZW4gPSBzdHJsZW4gKFNZ TUJPTF9HT1RfUExUX1NVRkZJWCk7Ci0rCi0rICBuYW1lX2dvdF9wbHQgPSBhbGxvY2EgKHN0cmxl biAobmFtZSkgKyBnb3Rfc3VmZml4X2xlbiArIDEpOwotKyAgc3ByaW50ZiAobmFtZV9nb3RfcGx0 LCAiJXMiIFNZTUJPTF9HT1RfUExUX1NVRkZJWCwgbmFtZSk7Ci0rCi0rICBBTExfUFNQQUNFX09C SkZJTEVTIChjdXJyZW50X3Byb2dyYW1fc3BhY2UsIG9iamZpbGUpCi0rICAgIHsKLSsgICAgICBi ZmQgKm9iZmQgPSBvYmpmaWxlLT5vYmZkOwotKyAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo ID0gb2JqZmlsZS0+Z2RiYXJjaDsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqcHRyX3R5cGUgPSBidWls dGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOwotKyAgICAgIHNpemVfdCBwdHJf c2l6ZSA9IFRZUEVfTEVOR1RIIChwdHJfdHlwZSk7Ci0rICAgICAgQ09SRV9BRERSIHBvaW50ZXJf YWRkcmVzcywgYWRkcjsKLSsgICAgICBhc2VjdGlvbiAqcGx0OwotKyAgICAgIGdkYl9ieXRlICpi dWYgPSBhbGxvY2EgKHB0cl9zaXplKTsKLSsgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1z eW07Ci0rCi0rICAgICAgbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAobmFtZV9nb3RfcGx0 LCBOVUxMLCBvYmpmaWxlKTsKLSsgICAgICBpZiAobXN5bSA9PSBOVUxMKQotKwljb250aW51ZTsK LSsgICAgICBpZiAoTVNZTUJPTF9UWVBFIChtc3ltKSAhPSBtc3Rfc2xvdF9nb3RfcGx0KQotKwlj b250aW51ZTsKLSsgICAgICBwb2ludGVyX2FkZHJlc3MgPSBTWU1CT0xfVkFMVUVfQUREUkVTUyAo bXN5bSk7Ci0rCi0rICAgICAgcGx0ID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKG9iZmQsICIu cGx0Iik7Ci0rICAgICAgaWYgKHBsdCA9PSBOVUxMKQotKwljb250aW51ZTsKLSsKLSsgICAgICBp ZiAoTVNZTUJPTF9TSVpFIChtc3ltKSAhPSBwdHJfc2l6ZSkKLSsJY29udGludWU7Ci0rICAgICAg aWYgKHRhcmdldF9yZWFkX21lbW9yeSAocG9pbnRlcl9hZGRyZXNzLCBidWYsIHB0cl9zaXplKSAh PSAwKQotKwljb250aW51ZTsKLSsgICAgICBhZGRyID0gZXh0cmFjdF90eXBlZF9hZGRyZXNzIChi dWYsIHB0cl90eXBlKTsKLSsgICAgICBhZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19w dHJfYWRkciAoZ2RiYXJjaCwgYWRkciwKLSsJCQkJCQkgJmN1cnJlbnRfdGFyZ2V0KTsKLSsKLSsg ICAgICBpZiAoYWRkcl9wKQotKwkqYWRkcl9wID0gYWRkcjsKLSsgICAgICBpZiAoZWxmX2dudV9p ZnVuY19yZWNvcmRfY2FjaGUgKG5hbWUsIGFkZHIpKQotKwlyZXR1cm4gMTsKLSsgICAgfQotKwot KyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIFRyeSB0byBmaW5kIHRoZSB0YXJnZXQgcmVzb2x2ZWQg ZnVuY3Rpb24gZW50cnkgYWRkcmVzcyBvZiBhIFNUVF9HTlVfSUZVTkMKLSsgICBmdW5jdGlvbiBO QU1FLiAgSWYgdGhlIGFkZHJlc3MgaXMgZm91bmQgaXQgaXMgc3RvcmVkIHRvICpBRERSX1AgKGlm IEFERFJfUAotKyAgIGlzIG5vdCBOVUxMKSBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgMS4gIEl0 IHJldHVybnMgMCBvdGhlcndpc2UuCi0rCi0rICAgQm90aCB0aGUgZWxmX29iamZpbGVfZ251X2lm dW5jX2NhY2hlX2RhdGEgaGFzaCB0YWJsZSBhbmQKLSsgICBTWU1CT0xfR09UX1BMVF9TVUZGSVgg bG9jYXRpb25zIGFyZSBzZWFyY2hlZCBieSB0aGlzIGZ1bmN0aW9uLiAgKi8KLSsKLStzdGF0aWMg aW50Ci0rZWxmX2dudV9pZnVuY19yZXNvbHZlX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVf QUREUiAqYWRkcl9wKQotK3sKLSsgIGlmIChlbGZfZ251X2lmdW5jX3Jlc29sdmVfYnlfY2FjaGUg KG5hbWUsIGFkZHJfcCkpCi0rICAgIHJldHVybiAxOwotKyAgCi0rICBpZiAoZWxmX2dudV9pZnVu Y19yZXNvbHZlX2J5X2dvdCAobmFtZSwgYWRkcl9wKSkKLSsgICAgcmV0dXJuIDE7Ci0rCi0rICBy ZXR1cm4gMDsKLSt9Ci0rCi0rLyogQ2FsbCBTVFRfR05VX0lGVU5DIC0gYSBmdW5jdGlvbiByZXR1 cm5pbmcgYWRkcmVzc3Mgb2YgYSByZWFsIGZ1bmN0aW9uIHRvCi0rICAgY2FsbC4gIFBDIGlzIHRo ZVNUVF9HTlVfSUZVTkMgcmVzb2x2aW5nIGZ1bmN0aW9uIGVudHJ5LiAgVGhlIHZhbHVlIHJldHVy bmVkCi0rICAgaXMgdGhlIGVudHJ5IHBvaW50IG9mIHRoZSByZXNvbHZlZCBTVFRfR05VX0lGVU5D IHRhcmdldCBmdW5jdGlvbiB0byBjYWxsLgotKyAgICovCi0rCi0rc3RhdGljIENPUkVfQUREUgot K2VsZl9nbnVfaWZ1bmNfcmVzb2x2ZV9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09S RV9BRERSIHBjKQotK3sKLSsgIGNoYXIgKm5hbWVfYXRfcGM7Ci0rICBDT1JFX0FERFIgc3RhcnRf YXRfcGMsIGFkZHJlc3M7Ci0rICBzdHJ1Y3QgdHlwZSAqZnVuY19mdW5jX3R5cGUgPSBidWlsdGlu X3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2Z1bmNfZnVuYzsKLSsgIHN0cnVjdCB2YWx1ZSAqZnVu Y3Rpb24sICphZGRyZXNzX3ZhbDsKLSsKLSsgIC8qIFRyeSBmaXJzdCBhbnkgbm9uLWludHJ1c2l2 ZSBtZXRob2RzIHdpdGhvdXQgYW4gaW5mZXJpb3IgY2FsbC4gICovCi0rCi0rICBpZiAoZmluZF9w Y19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWVfYXRfcGMsICZzdGFydF9hdF9wYywgTlVMTCkK LSsgICAgICAmJiBzdGFydF9hdF9wYyA9PSBwYykKLSsgICAgewotKyAgICAgIGlmIChlbGZfZ251 X2lmdW5jX3Jlc29sdmVfbmFtZSAobmFtZV9hdF9wYywgJmFkZHJlc3MpKQotKwlyZXR1cm4gYWRk cmVzczsKLSsgICAgfQotKyAgZWxzZQotKyAgICBuYW1lX2F0X3BjID0gTlVMTDsKLSsKLSsgIGZ1 bmN0aW9uID0gYWxsb2NhdGVfdmFsdWUgKGZ1bmNfZnVuY190eXBlKTsKLSsgIHNldF92YWx1ZV9h ZGRyZXNzIChmdW5jdGlvbiwgcGMpOwotKwotKyAgLyogU1RUX0dOVV9JRlVOQyByZXNvbHZlciBm dW5jdGlvbnMgaGF2ZSBubyBwYXJhbWV0ZXJzLiAgRlVOQ1RJT04gaXMgdGhlCi0rICAgICBmdW5j dGlvbiBlbnRyeSBhZGRyZXNzLiAgQUREUkVTUyBtYXkgYmUgYSBmdW5jdGlvbiBkZXNjcmlwdG9y LiAgKi8KLSsKLSsgIGFkZHJlc3NfdmFsID0gY2FsbF9mdW5jdGlvbl9ieV9oYW5kIChmdW5jdGlv biwgMCwgTlVMTCk7Ci0rICBhZGRyZXNzID0gdmFsdWVfYXNfYWRkcmVzcyAoYWRkcmVzc192YWwp OwotKyAgYWRkcmVzcyA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFy Y2gsIGFkZHJlc3MsCi0rCQkJCQkJJmN1cnJlbnRfdGFyZ2V0KTsKLSsKLSsgIGlmIChuYW1lX2F0 X3BjKQotKyAgICBlbGZfZ251X2lmdW5jX3JlY29yZF9jYWNoZSAobmFtZV9hdF9wYywgYWRkcmVz cyk7Ci0rCi0rICByZXR1cm4gYWRkcmVzczsKLSt9Ci0rCi0rLyogSGFuZGxlIGluZmVyaW9yIGhp dCBvZiBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIsIHNlZSBpdHMgZGVmaW5pdGlvbi4gICovCi0rCi0r c3RhdGljIHZvaWQKLStlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3N0b3AgKHN0cnVjdCBicmVha3Bv aW50ICpiKQotK3sKLSsgIHN0cnVjdCBicmVha3BvaW50ICpiX3JldHVybjsKLSsgIHN0cnVjdCBm cmFtZV9pbmZvICpwcmV2X2ZyYW1lID0gZ2V0X3ByZXZfZnJhbWUgKGdldF9jdXJyZW50X2ZyYW1l ICgpKTsKLSsgIHN0cnVjdCBmcmFtZV9pZCBwcmV2X2ZyYW1lX2lkID0gZ2V0X3N0YWNrX2ZyYW1l X2lkIChwcmV2X2ZyYW1lKTsKLSsgIENPUkVfQUREUiBwcmV2X3BjID0gZ2V0X2ZyYW1lX3BjIChw cmV2X2ZyYW1lKTsKLSsgIGludCB0aHJlYWRfaWQgPSBwaWRfdG9fdGhyZWFkX2lkIChpbmZlcmlv cl9wdGlkKTsKLSsKLSsgIGdkYl9hc3NlcnQgKGItPnR5cGUgPT0gYnBfZ251X2lmdW5jX3Jlc29s dmVyKTsKLSsKLSsgIGZvciAoYl9yZXR1cm4gPSBiLT5yZWxhdGVkX2JyZWFrcG9pbnQ7IGJfcmV0 dXJuICE9IGI7Ci0rICAgICAgIGJfcmV0dXJuID0gYl9yZXR1cm4tPnJlbGF0ZWRfYnJlYWtwb2lu dCkKLSsgICAgewotKyAgICAgIGdkYl9hc3NlcnQgKGJfcmV0dXJuLT50eXBlID09IGJwX2dudV9p ZnVuY19yZXNvbHZlcl9yZXR1cm4pOwotKyAgICAgIGdkYl9hc3NlcnQgKGJfcmV0dXJuLT5sb2Mg IT0gTlVMTCAmJiBiX3JldHVybi0+bG9jLT5uZXh0ID09IE5VTEwpOwotKyAgICAgIGdkYl9hc3Nl cnQgKGZyYW1lX2lkX3AgKGJfcmV0dXJuLT5mcmFtZV9pZCkpOwotKwotKyAgICAgIGlmIChiX3Jl dHVybi0+dGhyZWFkID09IHRocmVhZF9pZAotKwkgICYmIGJfcmV0dXJuLT5sb2MtPnJlcXVlc3Rl ZF9hZGRyZXNzID09IHByZXZfcGMKLSsJICAmJiBmcmFtZV9pZF9lcSAoYl9yZXR1cm4tPmZyYW1l X2lkLCBwcmV2X2ZyYW1lX2lkKSkKLSsJYnJlYWs7Ci0rICAgIH0KLSsKLSsgIGlmIChiX3JldHVy biA9PSBiKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7Ci0rCi0r ICAgICAgLyogTm8gbmVlZCB0byBjYWxsIGZpbmRfcGNfbGluZSBmb3Igc3ltYm9scyByZXNvbHZp bmcgYXMgdGhpcyBpcyBvbmx5Ci0rCSBhIGhlbHBlciBicmVha3BvaW50ZXIgbmV2ZXIgc2hvd24g dG8gdGhlIHVzZXIuICAqLwotKwotKyAgICAgIGluaXRfc2FsICgmc2FsKTsKLSsgICAgICBzYWwu cHNwYWNlID0gY3VycmVudF9pbmZlcmlvciAoKS0+cHNwYWNlOwotKyAgICAgIHNhbC5wYyA9IHBy ZXZfcGM7Ci0rICAgICAgc2FsLnNlY3Rpb24gPSBmaW5kX3BjX292ZXJsYXkgKHNhbC5wYyk7Ci0r ICAgICAgc2FsLmV4cGxpY2l0X3BjID0gMTsKLSsgICAgICBiX3JldHVybiA9IHNldF9tb21lbnRh cnlfYnJlYWtwb2ludCAoZ2V0X2ZyYW1lX2FyY2ggKHByZXZfZnJhbWUpLCBzYWwsCi0rCQkJCQkg ICBwcmV2X2ZyYW1lX2lkLAotKwkJCQkJICAgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybik7 Ci0rCi0rICAgICAgLyogQWRkIG5ldyBiX3JldHVybiB0byB0aGUgcmluZyBsaXN0IGItPnJlbGF0 ZWRfYnJlYWtwb2ludC4gICovCi0rICAgICAgZ2RiX2Fzc2VydCAoYl9yZXR1cm4tPnJlbGF0ZWRf YnJlYWtwb2ludCA9PSBiX3JldHVybik7Ci0rICAgICAgYl9yZXR1cm4tPnJlbGF0ZWRfYnJlYWtw b2ludCA9IGItPnJlbGF0ZWRfYnJlYWtwb2ludDsKLSsgICAgICBiLT5yZWxhdGVkX2JyZWFrcG9p bnQgPSBiX3JldHVybjsKLSsgICAgfQotK30KLSsKLSsvKiBIYW5kbGUgaW5mZXJpb3IgaGl0IG9m IGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4sIHNlZSBpdHMgZGVmaW5pdGlvbi4gICovCi0r Ci0rc3RhdGljIHZvaWQKLStlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIChzdHJ1 Y3QgYnJlYWtwb2ludCAqYikKLSt7Ci0rICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9m cmFtZV9hcmNoIChnZXRfY3VycmVudF9mcmFtZSAoKSk7Ci0rICBzdHJ1Y3QgdHlwZSAqZnVuY19m dW5jX3R5cGUgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2Z1bmNfZnVuYzsKLSsg IHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoZnVuY19mdW5jX3R5 cGUpOwotKyAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUg KGluZmVyaW9yX3B0aWQpOwotKyAgc3RydWN0IHZhbHVlICp2YWx1ZTsKLSsgIENPUkVfQUREUiBy ZXNvbHZlZF9hZGRyZXNzLCByZXNvbHZlZF9wYzsKLSsgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUg c2FsOwotKyAgc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzIHNhbHM7Ci0rCi0rICBnZGJfYXNzZXJ0 IChiLT50eXBlID09IGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4pOwotKwotKyAgdmFsdWUg PSBhbGxvY2F0ZV92YWx1ZSAodmFsdWVfdHlwZSk7Ci0rICBnZGJhcmNoX3JldHVybl92YWx1ZSAo Z2RiYXJjaCwgZnVuY19mdW5jX3R5cGUsIHZhbHVlX3R5cGUsIHJlZ2NhY2hlLAotKwkJCXZhbHVl X2NvbnRlbnRzX3JhdyAodmFsdWUpLCBOVUxMKTsKLSsgIHJlc29sdmVkX2FkZHJlc3MgPSB2YWx1 ZV9hc19hZGRyZXNzICh2YWx1ZSk7Ci0rICByZXNvbHZlZF9wYyA9IGdkYmFyY2hfY29udmVydF9m cm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCi0rCQkJCQkJICAgIHJlc29sdmVkX2FkZHJlc3Ms Ci0rCQkJCQkJICAgICZjdXJyZW50X3RhcmdldCk7Ci0rCi0rICB3aGlsZSAoYi0+cmVsYXRlZF9i cmVha3BvaW50ICE9IGIpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYl9uZXh0 ID0gYi0+cmVsYXRlZF9icmVha3BvaW50OworIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdp dGggRElFIHRvIFRZUEUuICBTYXZlIGl0IGluIENVJ3MgaGFzaAorICAgIHRhYmxlIGlmIG5lY2Vz c2FyeS4gIEZvciBjb252ZW5pZW5jZSwgcmV0dXJuIFRZUEUuCisgCitAQCAtMTQ5NzYsNiArMTUy NDgsOCBAQCBzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9 IGN1LT5vYmpmaWxlOworICAgaHRhYl90ICp0eXBlX2hhc2hfcHRyOworIAorKyAgZmV0Y2hfZGll X3R5cGVfYXR0cnMgKGRpZSwgdHlwZSwgY3UpOwogKwotKyAgICAgIHN3aXRjaCAoYi0+dHlwZSkK LSsJewotKwljYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoKLSsJICBicmVhazsKLSsJY2FzZSBi cF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgotKwkgIGRlbGV0ZV9icmVha3BvaW50IChiKTsK LSsJICBicmVhazsKLSsJZGVmYXVsdDoKLSsJICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9f TElORV9fLAotKwkJCSAgXygiaGFuZGxlX2luZmVyaW9yX2V2ZW50OiBJbnZhbGlkICIKLSsJCQkg ICAgImdudS1pbmRpcmVjdC1mdW5jdGlvbiBicmVha3BvaW50IHR5cGUgJWQiKSwKLSsJCQkgIChp bnQpIGItPnR5cGUpOwotKwl9Ci0rICAgICAgYiA9IGJfbmV4dDsKLSsgICAgfQotKyAgZ2RiX2Fz c2VydCAoYi0+dHlwZSA9PSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIpOworICAgLyogRm9yIEFkYSB0 eXBlcywgbWFrZSBzdXJlIHRoYXQgdGhlIGduYXQtc3BlY2lmaWMgZGF0YSBpcyBhbHdheXMKKyAg ICAgIGluaXRpYWxpemVkIChpZiBub3QgYWxyZWFkeSBzZXQpLiAgVGhlcmUgYXJlIGEgZmV3IHR5 cGVzIHdoZXJlCisgICAgICB3ZSBzaG91bGQgbm90IGJlIGRvaW5nIHNvLCBiZWNhdXNlIHRoZSB0 eXBlLXNwZWNpZmljIGFyZWEgaXMKK2RpZmYgLS1naXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2Vs ZnJlYWQuYworaW5kZXggYjljZmExMy4uZmVkNjNmNSAxMDA2NDQKKy0tLSBhL2dkYi9lbGZyZWFk LmMKKysrKyBiL2dkYi9lbGZyZWFkLmMKK0BAIC00Myw2ICs0MywxMiBAQAorICNpbmNsdWRlICJp bmZjYWxsLmgiCisgI2luY2x1ZGUgImdkYnRocmVhZC5oIgorICNpbmNsdWRlICJyZWdjYWNoZS5o IgorKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCisrI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKysj aW5jbHVkZSAidmFsdWUuaCIKKysjaW5jbHVkZSAiaW5mY2FsbC5oIgorKyNpbmNsdWRlICJnZGJ0 aHJlYWQuaCIKKysjaW5jbHVkZSAicmVnY2FjaGUuaCIKKyAKKyBleHRlcm4gdm9pZCBfaW5pdGlh bGl6ZV9lbGZyZWFkICh2b2lkKTsKKyAKK0BAIC02MSw2ICs2NywyMSBAQCBzdHJ1Y3QgZWxmaW5m bworICAgICBhc2VjdGlvbiAqbWRlYnVnc2VjdDsJLyogU2VjdGlvbiBwb2ludGVyIGZvciAubWRl YnVnIHNlY3Rpb24gKi8KKyAgIH07CisgCisrLyogUGVyLW9iamZpbGUgZGF0YSBmb3IgU3lzdGVt VGFwIHByb2JlIGluZm8uICAqLwogKwotKyAgZ2RiX2Fzc2VydCAoY3VycmVudF9wcm9ncmFtX3Nw YWNlID09IGItPnBzcGFjZSk7Ci0rICBlbGZfZ251X2lmdW5jX3JlY29yZF9jYWNoZSAoYi0+YWRk cl9zdHJpbmcsIHJlc29sdmVkX3BjKTsKKytzdGF0aWMgY29uc3Qgc3RydWN0IG9iamZpbGVfZGF0 YSAqc3RhcF9wcm9iZV9rZXkgPSBOVUxMOwogKwotKyAgc2FsID0gZmluZF9wY19saW5lIChyZXNv bHZlZF9wYywgMCk7Ci0rICBzYWxzLm5lbHRzID0gMTsKLSsgIHNhbHMuc2FscyA9ICZzYWw7Cisr LyogUGVyLW9iamZpbGUgZGF0YSBhYm91dCBTeXN0ZW1UYXAgcHJvYmVzLiAgKi8KICsKLSsgIGIt PnR5cGUgPSBicF9icmVha3BvaW50OwotKyAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChi LCBzYWxzKTsKLSt9Cisrc3RydWN0IHN0YXBfcHJvYmVfcGVyX29iamZpbGUKKysgIHsKKysgICAg LyogVGhlIG51bWJlciBvZiBwcm9iZXMgaW4gdGhpcyBvYmpmaWxlLiAgKi8KKysgICAgaW50IHN0 YXBfbnVtX3Byb2JlczsKICsKLSBzdHJ1Y3QgYnVpbGRfaWQKLSAgIHsKLSAgICAgc2l6ZV90IHNp emU7Ci1AQCAtODE5LDYgKzEzMTMsOCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCi0gCSAgICAgICBiZmRfZXJybXNnIChiZmRf Z2V0X2Vycm9yICgpKSk7Ci0gCi0gICAgICAgZWxmX3N5bXRhYl9yZWFkIChvYmpmaWxlLCBTVF9E WU5BTUlDLCBkeW5zeW1jb3VudCwgZHluX3N5bWJvbF90YWJsZSwgMCk7CisrICAgIC8qIFRoZSBw cm9iZXMgdGhlbXNlbHZlcy4gICovCisrICAgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZXM7Cisr ICB9OwogKwotKyAgICAgIGVsZl9yZWxfcGx0X3JlYWQgKG9iamZpbGUsIGR5bl9zeW1ib2xfdGFi bGUpOwotICAgICB9Cisgc3RhdGljIHZvaWQgZnJlZV9lbGZpbmZvICh2b2lkICopOwogIAotICAg LyogQWRkIHN5bnRoZXRpYyBzeW1ib2xzIC0gZm9yIGluc3RhbmNlLCBuYW1lcyBmb3IgYW55IFBM VCBlbnRyaWVzLiAgKi8KLUBAIC0xMDcxLDcgKzE1NjcsMjM4IEBAIGVsZnN0YWJfb2Zmc2V0X3Nl Y3Rpb25zIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpw c3QpCisgLyogTWluaW1hbCBzeW1ib2xzIGxvY2F0ZWQgYXQgdGhlIEdPVCBlbnRyaWVzIGZvciAu cGx0IC0gdGhhdCBpcyB0aGUgcmVhbAorQEAgLTE1NTEsNyArMTU3MiwyNjYgQEAgZWxmc3RhYl9v ZmZzZXRfc2VjdGlvbnMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgcGFydGlhbF9z eW10YWIgKnBzdCkKICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAogIAkgICAg ICAgXygiZWxmL3N0YWIgc2VjdGlvbiBpbmZvcm1hdGlvbiBtaXNzaW5nIGZvciAlcyIpLCBmaWxl bmFtZSk7CiAgfQogKwogKy8qIEhlbHBlciBmdW5jdGlvbiB0aGF0IHBhcnNlcyB0aGUgaW5mb3Jt YXRpb24gY29udGFpbmVkIGluIGEKLSsgICBTeXN0ZW10YXAncyBwcm9iZS4gIEJhc2ljYWxseSwg dGhlIGluZm9ybWF0aW9uIGNvbnNpc3RzIGluOgorKyAgIFN5c3RlbVRhcCdzIHByb2JlLiAgQmFz aWNhbGx5LCB0aGUgaW5mb3JtYXRpb24gY29uc2lzdHMgaW46CiArCiArICAgLSBQcm9iZSdzIFBD IGFkZHJlc3M7CiArICAgLSBMaW5rLXRpbWUgc2VjdGlvbiBhZGRyZXNzIG9mIGAuc3RhcHNkdC5i YXNlJyBzZWN0aW9uOwpAQCAtMzUyNyw4ICsyNTkzLDE0IEBAIGluZGV4IGRhY2M2ZjAuLmY3OTY4 NTEgMTAwNjQ0CiArICAgIHJldC0+YXJncyA9IE5VTEw7CiArfQogKworKy8qIFRoZSBuYW1lIG9m IHRoZSBTeXN0ZW1UYXAgc2VjdGlvbiB3aGVyZSB3ZSB3aWxsIGZpbmQgaW5mb3JtYXRpb24gYWJv dXQKKysgICB0aGUgcHJvYmVzLiAgKi8KKysKICsjZGVmaW5lIFNUQVBfQkFTRV9TRUNUSU9OX05B TUUgIi5zdGFwc2R0LmJhc2UiCiArCisrLyogSGVscGVyIGZ1bmN0aW9uIHdoaWNoIHRyaWVzIHRv IGZpbmQgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgU3lzdGVtVGFwCisrICAgYmFzZSBzZWN0aW9u IG5hbWVkIFNUQVBfQkFTRV9TRUNUSU9OX05BTUUuICAqLworKwogK3N0YXRpYyB2b2lkCiArZ2V0 X2Jhc2VfYWRkcmVzc18xIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0LCB2b2lkICpvYmopCiAr ewpAQCAtMzU0MCw2ICsyNjEyLDEwIEBAIGluZGV4IGRhY2M2ZjAuLmY3OTY4NTEgMTAwNjQ0CiAr ICAgICpiYXNlID0gc2VjdC0+dm1hOwogK30KICsKKysvKiBIZWxwZXIgZnVuY3Rpb24gd2hpY2gg aXRlcmF0ZXMgb3ZlciBldmVyeSBzZWN0aW9uIGluIHRoZSBCRkQgZmlsZSwKKysgICB0cnlpbmcg dG8gZmluZCB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBTeXN0ZW1UYXAgYmFzZSBzZWN0aW9uLgor KyAgIFJldHVybnMgdGhlIHNlY3Rpb24gYWRkcmVzcyBpZiBmb3VuZCwgb3IgLTEgb3RoZXJ3aXNl LiAgKi8KKysKICtzdGF0aWMgYmZkX3ZtYQogK2dldF9iYXNlX2FkZHJlc3MgKGJmZCAqb2JmZCkK ICt7CkBAIC0zNTUwLDYgKzI2MjYsOCBAQCBpbmRleCBkYWNjNmYwLi5mNzk2ODUxIDEwMDY0NAog KyAgcmV0dXJuIGJhc2U7CiArfQogKworKy8qIEltcGxlbWVudGF0aW9uIG9mIGBzeW1fZ2V0X3By b2JlcycsIGFzIGRvY3VtZW50ZWQgaW4gc3ltZmlsZS5oLiAgKi8KKysKICtzdGF0aWMgY29uc3Qg c3RydWN0IHN0YXBfcHJvYmUgKgogK2VsZl9nZXRfcHJvYmVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgaW50ICpudW1fcHJvYmVzKQogK3sKQEAgLTM2MTIsNiArMjY5MCw5IEBAIGluZGV4IGRh Y2M2ZjAuLmY3OTY4NTEgMTAwNjQ0CiArICByZXR1cm4gcmV0OwogK30KICsKKysvKiBJbXBsZW1l bnRhdGlvbiBvZiBgc3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCcsIGFzIGRvY3VtZW50ZWQg aW4KKysgICBzeW1maWxlLmguICAqLworKwogK3N0YXRpYyBpbnQKICtlbGZfZ2V0X3Byb2JlX2Fy Z3VtZW50X2NvdW50IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICsJCQkgICAgICBjb25zdCBz dHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUpCkBAIC0zNjI1LDYgKzI3MDYsOSBAQCBpbmRleCBkYWNj NmYwLi5mNzk2ODUxIDEwMDY0NAogKyAgcmV0dXJuIHN0YXBfZ2V0X3Byb2JlX2FyZ3VtZW50X2Nv dW50IChwcm9iZSk7CiArfQogKworKy8qIEltcGxlbWVudGF0aW9uIG9mIGBzeW1fZXZhbHVhdGVf cHJvYmVfYXJndW1lbnQnLCBhcyBkb2N1bWVudGVkIGluCisrICAgc3ltZmlsZS5oLiAgKi8KKysK ICtzdGF0aWMgc3RydWN0IHZhbHVlICoKICtlbGZfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogKwkJCSAgICAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUg KnByb2JlLApAQCAtMzYzNCw2ICsyNzE4LDggQEAgaW5kZXggZGFjYzZmMC4uZjc5Njg1MSAxMDA2 NDQKICsgIHJldHVybiBzdGFwX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChvYmpmaWxlLCBwcm9i ZSwgZnJhbWUsIG4pOwogK30KICsKKysvKiBJbXBsZW1lbnRhdGlvbiBvZiBgc3ltX2NvbXBpbGVf dG9fYXgnLCBhcyBkb2N1bWVudGVkIGluIHN5bWZpbGUuaC4gICovCisrCiArc3RhdGljIHZvaWQK ICtlbGZfY29tcGlsZV90b19heCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiArCQkgICBjb25z dCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUsCkBAIC0zNjQ0LDYgKzI3MzAsOCBAQCBpbmRleCBk YWNjNmYwLi5mNzk2ODUxIDEwMDY0NAogKyAgc3RhcF9jb21waWxlX3RvX2F4IChvYmpmaWxlLCBw cm9iZSwgZXhwciwgdmFsdWUsIG4pOwogK30KICsKKysvKiBJbXBsZW1lbnRhdGlvbiBvZiBgc3lt X3JlbG9jYXRlX3Byb2JlJywgYXMgZG9jdW1lbnRlZCBpbiBzeW1maWxlLmguICAqLworKwogK3N0 YXRpYyB2b2lkCiArZWxmX3N5bWZpbGVfcmVsb2NhdGVfcHJvYmUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAogKwkJCSAgICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cywKQEAg LTM2NjYsNiArMjc1NCw5IEBAIGluZGV4IGRhY2M2ZjAuLmY3OTY4NTEgMTAwNjQ0CiArICAgIH0K ICt9CiArCisrLyogSGVscGVyIGZ1bmN0aW9uIHVzZWQgdG8gZnJlZSB0aGUgc3BhY2UgYWxsb2Nh dGVkIGZvciBzdG9yaW5nIFN5c3RlbVRhcAorKyAgIHByb2JlIGluZm9ybWF0aW9uLiAgKi8KKysK ICtzdGF0aWMgdm9pZAogK3N0YXBfcHJvYmVfa2V5X2ZyZWUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCB2b2lkICpkKQogK3sKQEAgLTM2NzksNiArMjc3MCw5IEBAIGluZGV4IGRhY2M2ZjAuLmY3 OTY4NTEgMTAwNjQ0CiArfQogKwogIAwKKysKKysvKiBJbXBsZW1lbnRhdGlvbiBgc3ltX3Byb2Jl X2ZucycsIGFzIGRvY3VtZW50ZWQgaW4gc3ltZmlsZS5oLiAgKi8KKysKICtzdGF0aWMgY29uc3Qg c3RydWN0IHN5bV9wcm9iZV9mbnMgZWxmX3Byb2JlX2ZucyA9CiArewogKyAgZWxmX2dldF9wcm9i ZXMsCQkvKiBzeW1fZ2V0X3Byb2JlcyAqLwpAQCAtMzY5MSw3ICsyNzg1LDcgQEAgaW5kZXggZGFj YzZmMC4uZjc5Njg1MSAxMDA2NDQKICAvKiBSZWdpc3RlciB0aGF0IHdlIGFyZSBhYmxlIHRvIGhh bmRsZSBFTEYgb2JqZWN0IGZpbGUgZm9ybWF0cy4gICovCiAgCiAgc3RhdGljIGNvbnN0IHN0cnVj dCBzeW1fZm5zIGVsZl9zeW1fZm5zID0KLUBAIC0xMDg2LDYgKzE4MTMsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnMgPQorQEAgLTE1NjYsNiArMTg0Niw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2ZucyA9CiAgICBlbGZfc3ltZmlsZV9z ZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KICAg IE5VTEwsCiAgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcg c2VjdGlvbi4gICovCkBAIC0zNjk5LDcgKzI3OTMsNyBAQCBpbmRleCBkYWNjNmYwLi5mNzk2ODUx IDEwMDY0NAogICAgJnBzeW1fZnVuY3Rpb25zCiAgfTsKICAKLUBAIC0xMTA0LDYgKzE4MzIsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnNfbGF6eV9wc3ltcyA9CitA QCAtMTU4NCw2ICsxODY1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIGVsZl9zeW1f Zm5zX2xhenlfcHN5bXMgPQogICAgZWxmX3N5bWZpbGVfc2VnbWVudHMsCQkvKiBHZXQgc2VnbWVu dCBpbmZvcm1hdGlvbiBmcm9tIGEgZmlsZS4gICovCiAgICBOVUxMLAogICAgZGVmYXVsdF9zeW1m aWxlX3JlbG9jYXRlLAkvKiBSZWxvY2F0ZSBhIGRlYnVnIHNlY3Rpb24uICAqLwpAQCAtMzcwNyw3 ICsyODAxLDcgQEAgaW5kZXggZGFjYzZmMC4uZjc5Njg1MSAxMDA2NDQKICAgICZwc3ltX2Z1bmN0 aW9ucwogIH07CiAgCi1AQCAtMTEyMSwxMSArMTg1MCwyNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IHN5bV9mbnMgZWxmX3N5bV9mbnNfZ2RiX2luZGV4ID0KK0BAIC0xNjAxLDYgKzE4ODMsNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnNfZ2RiX2luZGV4ID0KICAgIGVs Zl9zeW1maWxlX3NlZ21lbnRzLAkJLyogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZp bGUuICAqLwogICAgTlVMTCwKICAgIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogUmVsb2Nh dGUgYSBkZWJ1ZyBzZWN0aW9uLiAgKi8KQEAgLTM3MTUsMjggKzI4MDksMTcgQEAgaW5kZXggZGFj YzZmMC4uZjc5Njg1MSAxMDA2NDQKICAgICZkd2FyZjJfZ2RiX2luZGV4X2Z1bmN0aW9ucwogIH07 CiAgCi0rLyogU1RUX0dOVV9JRlVOQyByZXNvbHZlciB2ZWN0b3IgdG8gYmUgaW5zdGFsbGVkIHRv IGdudV9pZnVuY19mbnNfcC4gICovCi0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBnbnVfaWZ1bmNf Zm5zIGVsZl9nbnVfaWZ1bmNfZm5zID0KLSt7Ci0rICBlbGZfZ251X2lmdW5jX3Jlc29sdmVfYWRk ciwKLSsgIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZV9uYW1lLAotKyAgZWxmX2dudV9pZnVuY19yZXNv bHZlcl9zdG9wLAotKyAgZWxmX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcAotK307Ci0r CitAQCAtMTYxNyw2ICsxOTAwLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnbnVfaWZ1bmNfZm5z IGVsZl9nbnVfaWZ1bmNfZm5zID0KICB2b2lkCiAgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCkK ICB7CiArICBzdGFwX3Byb2JlX2tleQogKyAgICA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YV93aXRo X2NsZWFudXAgKE5VTEwsIHN0YXBfcHJvYmVfa2V5X2ZyZWUpOwogICAgYWRkX3N5bXRhYl9mbnMg KCZlbGZfc3ltX2Zucyk7Ci0rCi0rICBlbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YSA9 IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAoKTsKLSsgIGdudV9pZnVuY19mbnNfcCA9ICZlbGZfZ251 X2lmdW5jX2ZuczsKLSB9CisgCisgICBlbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YSA9 IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAoKTsKIGRpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2Ri L2V2YWwuYwotaW5kZXggMDliNDFhMC4uN2MwYThmOSAxMDA2NDQKK2luZGV4IGJiYzdiOGEuLjdj MGE4ZjkgMTAwNjQ0CiAtLS0gYS9nZGIvZXZhbC5jCiArKysgYi9nZGIvZXZhbC5jCiBAQCAtNDQs NiArNDQsNyBAQApAQCAtMzk4OSwxNiArMzA3Miw3IEBAIGluZGV4IDA5YjQxYTAuLjdjMGE4Zjkg MTAwNjQ0CiAgCiAgICBwYyA9ICgqcG9zKSsrOwogICAgb3AgPSBleHAtPmVsdHNbcGNdLm9wY29k ZTsKLUBAIC0xODMyLDYgKzIwMjQsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVj dCB0eXBlICpleHBlY3RfdHlwZSwKLSAJICAgICAgcmV0dXJuIHZhbHVlX3plcm8gKGJ1aWx0aW5f dHlwZSAoZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCi0gCQkJCSBub3RfbHZhbCk7Ci0gCSAg ICB9Ci0rCSAgZWxzZSBpZiAoVFlQRV9HTlVfSUZVTkMgKGZ0eXBlKSkKLSsJICAgIHJldHVybiBh bGxvY2F0ZV92YWx1ZSAoVFlQRV9UQVJHRVRfVFlQRSAoVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUp KSk7Ci0gCSAgZWxzZSBpZiAoVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpKQotIAkgICAgcmV0dXJu IGFsbG9jYXRlX3ZhbHVlIChUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSkpOwotIAkgIGVsc2UKLUBA IC0xODYwLDYgKzIwNTQsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBl ICpleHBlY3RfdHlwZSwKK0BAIC0xODYyLDYgKzIwNTQsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3Rh bmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAKICAgICAgICAvKiBGaXJzdCBkZXRl cm1pbmUgdGhlIHR5cGUgY29kZSB3ZSBhcmUgZGVhbGluZyB3aXRoLiAgKi8KICAgICAgICBhcmcx ID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpOwpAQCAtNDAw Nyw3ICszMDgxLDcgQEAgaW5kZXggMDliNDFhMC4uN2MwYThmOSAxMDA2NDQKICAgICAgICB0eXBl ID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwogICAgICAgIGNvZGUgPSBUWVBF X0NPREUgKHR5cGUpOwogIAotQEAgLTE4ODAsMjMgKzIwNzYsMTMgQEAgZXZhbHVhdGVfc3ViZXhw X3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMTg4MiwyMyArMjA3Niwx MyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwK ICAJICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CiAgCSAgICB9CiAgCX0gCkBAIC00MDMz LDcgKzMxMDcsNyBAQCBpbmRleCAwOWI0MWEwLi43YzBhOGY5IDEwMDY0NAogIAogIAljYXNlIFRZ UEVfQ09ERV9QVFI6CiAgCWNhc2UgVFlQRV9DT0RFX0ZVTkM6Ci1AQCAtMjMzNSw0OSArMjUyMSw2 IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAor QEAgLTIzMzcsNDkgKzI1MjEsNiBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0 eXBlICpleHBlY3RfdHlwZSwKICAJfQogICAgICAgIHJldHVybiAoYXJnMSk7CiAgCkBAIC00MDgz LDcgKzMxNTcsNyBAQCBpbmRleCAwOWI0MWEwLi43YzBhOGY5IDEwMDY0NAogICAgICBjYXNlIEJJ Tk9QX0xPR0lDQUxfQU5EOgogICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQ RSwgZXhwLCBwb3MsIG5vc2lkZSk7CiAgICAgICAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCi1A QCAtMjYwOSwxNSArMjc1MiwyMyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0 eXBlICpleHBlY3RfdHlwZSwKK0BAIC0yNjExLDE1ICsyNzUyLDIzIEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogICAgICAgIGlmIChleHBlY3Rf dHlwZSAmJiBUWVBFX0NPREUgKGV4cGVjdF90eXBlKSA9PSBUWVBFX0NPREVfUFRSKQogIAlleHBl Y3RfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGNoZWNrX3R5cGVkZWYgKGV4cGVjdF90eXBlKSk7 CiAgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoZXhwZWN0X3R5cGUsIGV4cCwgcG9zLCBu b3NpZGUpOwpAQCAtNDEwOSw3ICszMTgzLDcgQEAgaW5kZXggMDliNDFhMC4uN2MwYThmOSAxMDA2 NDQKICAgICAgICBlbHNlIGlmIChub3NpZGUgPT0gRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpCiAg CXsKICAJICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotQEAgLTI2 MjYsMTIgKzI3NzcsMTggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAq ZXhwZWN0X3R5cGUsCitAQCAtMjYyOCwxMiArMjc3NywxOCBAQCBldmFsdWF0ZV9zdWJleHBfc3Rh bmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJICAvKiBJbiBDIHlvdSBjYW4gZGVy ZWZlcmVuY2UgYW4gYXJyYXkgdG8gZ2V0IHRoZSAxc3QgZWx0LiAgKi8KICAJICAgICAgfHwgVFlQ RV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKICAJICAgICkKQEAgLTQxMzMsNyArMzIw Nyw3IEBAIGluZGV4IDA5YjQxYTAuLjdjMGE4ZjkgMTAwNjQ0CiAgCSAgZWxzZQogIAkgICAgZXJy b3IgKF8oIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZhbHVlLiIp KTsKICAJfQotQEAgLTI2NDEsOSArMjc5OCwxNCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQg KHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0yNjQzLDkgKzI3OTgsMTQgQEAgZXZhbHVh dGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCSBkby4gICJs b25nIGxvbmciIHZhcmlhYmxlcyBhcmUgcmFyZSBlbm91Z2ggdGhhdAogIAkgQlVJTFRJTl9UWVBF X0xPTkdFU1Qgd291bGQgc2VlbSB0byBiZSBhIG1pc3Rha2UuICAqLwogICAgICAgIGlmIChUWVBF X0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQpCkBAIC00MTUxLDcgKzMyMjUsNyBAQCBpbmRl eCAwOWI0MWEwLi43YzBhOGY5IDEwMDY0NAogIAogICAgICBjYXNlIFVOT1BfQUREUjoKICAgICAg ICAvKiBDKys6IGNoZWNrIGZvciBhbmQgaGFuZGxlIHBvaW50ZXIgdG8gbWVtYmVycy4gICovCi1A QCAtMjk4OSw3ICszMTUxLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVj dCBleHByZXNzaW9uICpleHAsCitAQCAtMjk5MSw3ICszMTUxLDcgQEAgZXZhbHVhdGVfc3ViZXhw X3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCiAgewogICAgZW51bSBleHBf b3Bjb2RlIG9wOwogICAgaW50IHBjOwpAQCAtNDE2MCw3ICszMjM0LDcgQEAgaW5kZXggMDliNDFh MC4uN2MwYThmOSAxMDA2NDQKICAgIHN0cnVjdCBzeW1ib2wgKnZhcjsKICAgIHN0cnVjdCB0eXBl ICp0eXBlOwogIAotQEAgLTMwMDAsMTMgKzMxNjIsMTggQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhf Y29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAtMzAwMiwxMyArMzE2MiwxOCBA QCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwK ICAgICAgewogICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICB2YXIgPSBleHAtPmVsdHNb cGMgKyAyXS5zeW1ib2w7CkBAIC00MTgwLDcgKzMyNTQsNyBAQCBpbmRleCAwOWI0MWEwLi43YzBh OGY5IDEwMDY0NAogIAkgIHJldHVybiB2YWx1ZV9jYXN0IChsb29rdXBfcG9pbnRlcl90eXBlIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCiAgCQkJICAgICB2YWwpOwogIAl9Ci1AQCAtMzA1OCw5 ICszMjI1LDEzIEBAIGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLCBpbnQgKnBvcykKK0BAIC0zMDYwLDkgKzMyMjUsMTMgQEAgZXZhbHVhdGVfc3ViZXhw X2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zKQogIAogICAgICBj YXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICAoKnBvcykgKz0gNDsKQEAgLTQxOTcsNyArMzI3MSw3 IEBAIGluZGV4IDA5YjQxYTAuLjdjMGE4ZjkgMTAwNjQ0CiAgCiAgICAgIGRlZmF1bHQ6CiAgICAg ICAgdmFsID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBFVkFMX0FWT0lE X1NJREVfRUZGRUNUUyk7Ci1AQCAtMzA5MSwxOCArMzI2MiwyNSBAQCBwYXJzZV9hbmRfZXZhbF90 eXBlIChjaGFyICpwLCBpbnQgbGVuZ3RoKQorQEAgLTMwOTMsMTggKzMyNjIsMjUgQEAgcGFyc2Vf YW5kX2V2YWxfdHlwZSAoY2hhciAqcCwgaW50IGxlbmd0aCkKICBpbnQKICBjYWxjX2Y3N19hcnJh eV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSkKICB7CkBAIC00NjQwLDcgKzM3MTQsNyBA QCBpbmRleCBmZmI3ZjUzLi5hMmU3ZTk0IDEwMDY0NAogIAogIGIgaW50ZXJuYWxfZXJyb3IKIGRp ZmYgLS1naXQgYS9nZGIvZ2RidHlwZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCi1pbmRleCA5MWZhZmEy Li5lZGEyNTA2IDEwMDY0NAoraW5kZXggM2I0NTkzMS4uZWRhMjUwNiAxMDA2NDQKIC0tLSBhL2dk Yi9nZGJ0eXBlcy5jCiArKysgYi9nZGIvZ2RidHlwZXMuYwogQEAgLTM5LDYgKzM5LDkgQEAKQEAg LTQ5NzMsMTYgKzQwNDcsNyBAQCBpbmRleCA5MWZhZmEyLi5lZGEyNTA2IDEwMDY0NAogICAgICB9 CiAgCiAgICB0eXBlID0gbWFrZV9xdWFsaWZpZWRfdHlwZSAodHlwZSwgaW5zdGFuY2VfZmxhZ3Ms IE5VTEwpOwotQEAgLTE5MDIsNiArMjA0Miw4IEBAIGluaXRfdHlwZSAoZW51bSB0eXBlX2NvZGUg Y29kZSwgaW50IGxlbmd0aCwgaW50IGZsYWdzLAotICAgICBUWVBFX1NUVUJfU1VQUE9SVEVEICh0 eXBlKSA9IDE7Ci0gICBpZiAoZmxhZ3MgJiBUWVBFX0ZMQUdfRklYRURfSU5TVEFOQ0UpCi0gICAg IFRZUEVfRklYRURfSU5TVEFOQ0UgKHR5cGUpID0gMTsKLSsgIGlmIChmbGFncyAmIFRZUEVfRkxB R19HTlVfSUZVTkMpCi0rICAgIFRZUEVfR05VX0lGVU5DICh0eXBlKSA9IDE7Ci0gCi0gICBpZiAo bmFtZSkKLSAgICAgVFlQRV9OQU1FICh0eXBlKSA9IG9ic2F2ZXN0cmluZyAobmFtZSwgc3RybGVu IChuYW1lKSwKLUBAIC0zMjY0LDMzICszNDA2LDQyIEBAIHR5cGVfcGFpcl9lcSAoY29uc3Qgdm9p ZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQorQEAgLTMyNjYsMzMgKzM0MDYsNDIg QEAgdHlwZV9wYWlyX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9y aHMpCiAgfQogIAogIC8qIEFsbG9jYXRlIHRoZSBoYXNoIHRhYmxlIHVzZWQgYnkgY29weV90eXBl X3JlY3Vyc2l2ZSB0byB3YWxrCkBAIC01MDQwLDcgKzQxMDUsNyBAQCBpbmRleCA5MWZhZmEyLi5l ZGEyNTA2IDEwMDY0NAogICAgICByZXR1cm4gdHlwZTsKICAKICAgIC8qIFRoaXMgdHlwZSBzaG91 bGRuJ3QgYmUgcG9pbnRpbmcgdG8gYW55IHR5cGVzIGluIG90aGVyIG9iamZpbGVzOwotQEAgLTMz MDUsOSArMzQ1NiwxMCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKK0BAIC0zMzA3LDkgKzM0NTYsMTAgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsCiAgICBuZXdfdHlwZSA9IGFsbG9jX3R5cGVfYXJjaCAoZ2V0X3R5 cGVfYXJjaCAodHlwZSkpOwogIAogICAgLyogV2UgbXVzdCBhZGQgdGhlIG5ldyB0eXBlIHRvIHRo ZSBoYXNoIHRhYmxlIGltbWVkaWF0ZWx5LCBpbiBjYXNlCkBAIC01MDU0LDcgKzQxMTksNyBAQCBp bmRleCA5MWZhZmEyLi5lZGEyNTA2IDEwMDY0NAogICAgc3RvcmVkLT5vbGQgPSB0eXBlOwogICAg c3RvcmVkLT5uZXcgPSBuZXdfdHlwZTsKICAgICpzbG90ID0gc3RvcmVkOwotQEAgLTMzMTgsNiAr MzQ3MCwyMSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwK K0BAIC0zMzIwLDYgKzM0NzAsMjEgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsCiAgICBUWVBFX09CSkZJTEVfT1dORUQgKG5ld190eXBlKSA9IDA7CiAgICBU WVBFX09XTkVSIChuZXdfdHlwZSkuZ2RiYXJjaCA9IGdldF90eXBlX2FyY2ggKHR5cGUpOwogIApA QCAtNTA3Niw3ICs0MTQxLDcgQEAgaW5kZXggOTFmYWZhMi4uZWRhMjUwNiAxMDA2NDQKICAgIGlm IChUWVBFX05BTUUgKHR5cGUpKQogICAgICBUWVBFX05BTUUgKG5ld190eXBlKSA9IHhzdHJkdXAg KFRZUEVfTkFNRSAodHlwZSkpOwogICAgaWYgKFRZUEVfVEFHX05BTUUgKHR5cGUpKQotQEAgLTMz MjYsMTIgKzM0OTMsNDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCitAQCAtMzMyOCwxMiArMzQ5Myw0OCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgIFRZUEVfSU5TVEFOQ0VfRkxBR1MgKG5ld190eXBlKSA9 IFRZUEVfSU5TVEFOQ0VfRkxBR1MgKHR5cGUpOwogICAgVFlQRV9MRU5HVEggKG5ld190eXBlKSA9 IFRZUEVfTEVOR1RIICh0eXBlKTsKICAKQEAgLTUxMjUsNyArNDE5MCw3IEBAIGluZGV4IDkxZmFm YTIuLmVkYTI1MDYgMTAwNjQ0CiAgICAgICAgVFlQRV9GSUVMRFMgKG5ld190eXBlKSA9IFhDQUxM T0MgKG5maWVsZHMsIHN0cnVjdCBmaWVsZCk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IG5maWVs ZHM7IGkrKykKICAJewotQEAgLTMzNDAsOCArMzU0Myw4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTMzNDIsOCArMzU0Myw4IEBAIGNvcHlfdHlw ZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkgIFRZUEVfRklFTERfQklU U0laRSAobmV3X3R5cGUsIGkpID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBpKTsKICAJICBp ZiAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSkKICAJICAgIFRZUEVfRklFTERfVFlQRSAobmV3 X3R5cGUsIGkpCkBAIC01MTM2LDcgKzQyMDEsNyBAQCBpbmRleCA5MWZhZmEyLi5lZGEyNTA2IDEw MDY0NAogIAkgIGlmIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpKQogIAkgICAgVFlQRV9GSUVM RF9OQU1FIChuZXdfdHlwZSwgaSkgPSAKICAJICAgICAgeHN0cmR1cCAoVFlQRV9GSUVMRF9OQU1F ICh0eXBlLCBpKSk7Ci1AQCAtMzM2OCwyNCArMzU3MSwxODQgQEAgY29weV90eXBlX3JlY3Vyc2l2 ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzM3MCwyNCArMzU3MSwxODQgQEAgY29w eV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCX0KICAgICAgfQog IApAQCAtNTMyOCw3ICs0MzkzLDcgQEAgaW5kZXggOTFmYWZhMi4uZWRhMjUwNiAxMDA2NDQKICAg IC8qIE1heWJlIGNvcHkgdGhlIHR5cGVfc3BlY2lmaWMgYml0cy4KICAKICAgICAgIE5PVEUgZHJv dy8yMDA1LTEyLTA5OiBXZSBkbyBub3QgY29weSB0aGUgQysrLXNwZWNpZmljIGJpdHMgbGlrZQot QEAgLTM0MDIsNiArMzc2NSwxNyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwKK0BAIC0zNDA0LDYgKzM3NjUsMTcgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgICByZXR1cm4gbmV3X3R5cGU7CiAgfQogIApAQCAt NTM0Niw3ICs0NDExLDcgQEAgaW5kZXggOTFmYWZhMi4uZWRhMjUwNiAxMDA2NDQKICAvKiBNYWtl IGEgY29weSBvZiB0aGUgZ2l2ZW4gVFlQRSwgZXhjZXB0IHRoYXQgdGhlIHBvaW50ZXIgJiByZWZl cmVuY2UKICAgICB0eXBlcyBhcmUgbm90IHByZXNlcnZlZC4KICAgICAKLUBAIC0zNDI0LDYgKzM3 OTgsMjAxIEBAIGNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCitAQCAtMzQyNiw2 ICszNzk4LDIwMSBAQCBjb3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKQogICAgcmV0 dXJuIG5ld190eXBlOwogIH0KICAKQEAgLTU1NDgsMzUgKzQ2MTMsNyBAQCBpbmRleCA5MWZhZmEy Li5lZGEyNTA2IDEwMDY0NAogIAogIC8qIEhlbHBlciBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBh cmNoaXRlY3R1cmUtc3BlY2lmaWMgdHlwZXMuICAqLwogIAotQEAgLTM3NzIsNiArNDM0MSw4IEBA IGdkYnR5cGVzX3Bvc3RfaW5pdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gICAgID0gbG9v a3VwX3BvaW50ZXJfdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQpOwotICAgYnVpbHRp bl90eXBlLT5idWlsdGluX2Z1bmNfcHRyCi0gICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAobG9v a3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lkKSk7Ci0rICBidWls dGluX3R5cGUtPmJ1aWx0aW5fZnVuY19mdW5jCi0rICAgID0gbG9va3VwX2Z1bmN0aW9uX3R5cGUg KGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cik7Ci0gCi0gICAvKiBUaGlzIHR5cGUgcmVw cmVzZW50cyBhIEdEQiBpbnRlcm5hbCBmdW5jdGlvbi4gICovCi0gICBidWlsdGluX3R5cGUtPmlu dGVybmFsX2ZuCi1AQCAtMzg4NSw2ICs0NDU2LDE4IEBAIG9iamZpbGVfdHlwZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUpCi0gCQkgIjx0ZXh0IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsIG9i amZpbGUpOwotICAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRf c3ltYm9sKQotICAgICA9IG9iamZpbGVfdHlwZS0+YnVpbHRpbl9pbnQ7Ci0rICBvYmpmaWxlX3R5 cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sCi0rICAgID0gaW5pdF90eXBlIChUWVBF X0NPREVfRlVOQywgMSwgVFlQRV9GTEFHX0dOVV9JRlVOQywKLSsJCSAiPHRleHQgZ251LWluZGly ZWN0LWZ1bmN0aW9uIHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsCi0rCQkgb2JqZmlsZSk7Ci0r ICBUWVBFX1RBUkdFVF9UWVBFIChvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNf c3ltYm9sKQotKyAgICA9IG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJvbDsKLSsgIG9i amZpbGVfdHlwZS0+bm9kZWJ1Z19nb3RfcGx0X3N5bWJvbAotKyAgICA9IGluaXRfdHlwZSAoVFlQ RV9DT0RFX1BUUiwgZ2RiYXJjaF9hZGRyX2JpdCAoZ2RiYXJjaCkgLyA4LCAwLAotKwkJICI8dGV4 dCBmcm9tIGp1bXAgc2xvdCBpbiAuZ290LnBsdCwgbm8gZGVidWcgaW5mbz4iLAotKwkJIG9iamZp bGUpOwotKyAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX2dvdF9wbHRf c3ltYm9sKQotKyAgICA9IG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJvbDsKLSAgIG9i amZpbGVfdHlwZS0+bm9kZWJ1Z19kYXRhX3N5bWJvbAotICAgICA9IGluaXRfdHlwZSAoVFlQRV9D T0RFX0lOVCwKLSAJCSBnZGJhcmNoX2ludF9iaXQgKGdkYmFyY2gpIC8gSE9TVF9DSEFSX0JJVCwg MCwKLUBAIC0zOTM5LDYgKzQ1MjIsMTMgQEAgdm9pZAorQEAgLTM5NTUsNiArNDUyMiwxMyBAQCB2 b2lkCiAgX2luaXRpYWxpemVfZ2RidHlwZXMgKHZvaWQpCiAgewogICAgZ2RidHlwZXNfZGF0YSA9 IGdkYmFyY2hfZGF0YV9yZWdpc3Rlcl9wb3N0X2luaXQgKGdkYnR5cGVzX3Bvc3RfaW5pdCk7CkBA IC01NTkxLDE4ICs0NjI4LDEwIEBAIGluZGV4IDkxZmFmYTIuLmVkYTI1MDYgMTAwNjQ0CiAgCiAg ICBhZGRfc2V0c2hvd196aW50ZWdlcl9jbWQgKCJvdmVybG9hZCIsIG5vX2NsYXNzLCAmb3Zlcmxv YWRfZGVidWcsCiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmggYi9nZGIvZ2RidHlwZXMuaAot aW5kZXggNWY4OWZlYy4uNGI0NzIwYSAxMDA2NDQKK2luZGV4IDM5Y2ExYjQuLjRiNDcyMGEgMTAw NjQ0CiAtLS0gYS9nZGIvZ2RidHlwZXMuaAogKysrIGIvZ2RiL2dkYnR5cGVzLmgKLUBAIC0xNzAs NiArMTcwLDcgQEAgZW51bSB0eXBlX2ZsYWdfdmFsdWUKLSAgIFRZUEVfRkxBR19WRUNUT1IgPSAo MSA8PCAxNSksCi0gICBUWVBFX0ZMQUdfRklYRURfSU5TVEFOQ0UgPSAoMSA8PCAxNiksCi0gICBU WVBFX0ZMQUdfU1RVQl9TVVBQT1JURUQgPSAoMSA8PCAxNyksCi0rICBUWVBFX0ZMQUdfR05VX0lG VU5DID0gKDEgPDwgMTgpLAotIAotICAgLyogVXNlZCBmb3IgZXJyb3ItY2hlY2tpbmcuICAqLwot ICAgVFlQRV9GTEFHX01JTiA9IFRZUEVfRkxBR19VTlNJR05FRAotQEAgLTIxNCw2ICsyMTUsMTEg QEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKK0BAIC0yMTUsNiArMjE1LDExIEBAIGVu dW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCiAgCiAgI2RlZmluZSBUWVBFX1RBUkdFVF9TVFVC KHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfdGFyZ2V0X3N0dWIpCiAgCkBAIC01NjE0LDIw ICs0NjQzLDcgQEAgaW5kZXggNWY4OWZlYy4uNGI0NzIwYSAxMDA2NDQKICAvKiBTdGF0aWMgdHlw ZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGhhZCAKICAgICBhIHN0 YXRpYyBtb2RpZmllci4KICAgICBOb3RlOiBUaGlzIG1heSBiZSB1bm5lY2Vzc2FyeSwgc2luY2Ug c3RhdGljIGRhdGEgbWVtYmVycwotQEAgLTI3MSw2ICsyNzcsMTIgQEAgZW51bSB0eXBlX2luc3Rh bmNlX2ZsYWdfdmFsdWUKLSAKLSAjZGVmaW5lIFRZUEVfTk9UVEVYVCh0KQkoVFlQRV9JTlNUQU5D RV9GTEFHUyAodCkgJiBUWVBFX0lOU1RBTkNFX0ZMQUdfTk9UVEVYVCkKLSAKLSsvKiBVc2VkIG9u bHkgZm9yIFRZUEVfQ09ERV9GVU5DIHdoZXJlIGl0IHNwZWNpZmllcyB0aGUgcmVhbCBmdW5jdGlv bgotKyAgIGFkZHJlc3MgaXMgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBjYWxsLiAgVFlQRV9U QVJHRVRfVFlQRSBkZXRlcm1pbmVzIHRoZQotKyAgIGZpbmFsIHJldHVybmVkIGZ1bmN0aW9uIHR5 cGUgdG8gYmUgcHJlc2VudGVkIHRvIHVzZXIuICAqLwotKwotKyNkZWZpbmUgVFlQRV9HTlVfSUZV TkModCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19nbnVfaWZ1bmMpCi0rCi0gLyogVHlwZSBv d25lci4gIElmIFRZUEVfT0JKRklMRV9PV05FRCBpcyB0cnVlLCB0aGUgdHlwZSBpcyBvd25lZCBi eQotICAgIHRoZSBvYmpmaWxlIHJldHJpZXZlZCBhcyBUWVBFX09CSkZJTEUuICBPdGhlcndlaXNl LCB0aGUgdHlwZSBpcwotICAgIG93bmVkIGJ5IGFuIGFyY2hpdGVjdHVyZTsgVFlQRV9PQkpGSUxF IGlzIE5VTEwgaW4gdGhpcyBjYXNlLiAgKi8KLUBAIC0yODUsNiArMjk3LDUwIEBAIGVudW0gdHlw ZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCitAQCAtMjkyLDYgKzI5Nyw1MCBAQCBlbnVtIHR5cGVfaW5z dGFuY2VfZmxhZ192YWx1ZQogIAogICNkZWZpbmUgVFlQRV9ERUNMQVJFRF9DTEFTUyh0KSAoVFlQ RV9NQUlOX1RZUEUgKHQpLT5mbGFnX2RlY2xhcmVkX2NsYXNzKQogIApAQCAtNTY3OCwxMyArNDY5 NCw3IEBAIGluZGV4IDVmODlmZWMuLjRiNDcyMGEgMTAwNjQ0CiAgLyogQ29uc3RhbnQgdHlwZS4g IElmIHRoaXMgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGhhcyBhCiAgICAgY29uc3Qg bW9kaWZpZXIuICAqLwogIAotQEAgLTM4NywxMSArNDQzLDIxIEBAIHN0cnVjdCBtYWluX3R5cGUK LSAgIHVuc2lnbmVkIGludCBmbGFnX3ZhcmFyZ3MgOiAxOwotICAgdW5zaWduZWQgaW50IGZsYWdf dmVjdG9yIDogMTsKLSAgIHVuc2lnbmVkIGludCBmbGFnX3N0dWJfc3VwcG9ydGVkIDogMTsKLSsg IHVuc2lnbmVkIGludCBmbGFnX2dudV9pZnVuYyA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19m aXhlZF9pbnN0YW5jZSA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19vYmpmaWxlX293bmVkIDog MTsKK0BAIC00MDAsNiArNDQ5LDE1IEBAIHN0cnVjdCBtYWluX3R5cGUKICAgIC8qIFRydWUgaWYg dGhpcyB0eXBlIHdhcyBkZWNsYXJlZCB3aXRoICJjbGFzcyIgcmF0aGVyIHRoYW4KICAgICAgICJz dHJ1Y3QiLiAgKi8KICAgIHVuc2lnbmVkIGludCBmbGFnX2RlY2xhcmVkX2NsYXNzIDogMTsKQEAg LTU3MDAsNyArNDcxMCw3IEBAIGluZGV4IDVmODlmZWMuLjRiNDcyMGEgMTAwNjQ0CiAgCiAgICAv KiBBIGRpc2NyaW1pbmFudCB0ZWxsaW5nIHVzIHdoaWNoIGZpZWxkIG9mIHRoZSB0eXBlX3NwZWNp ZmljIHVuaW9uCiAgICAgICBpcyBiZWluZyB1c2VkIGZvciB0aGlzIHR5cGUsIGlmIGFueS4gICov Ci1AQCAtNDY1LDYgKzUzMSwyMCBAQCBzdHJ1Y3QgbWFpbl90eXBlCitAQCAtNDczLDYgKzUzMSwy MCBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCiAgICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7CiAg CkBAIC01NzIxLDcgKzQ3MzEsNyBAQCBpbmRleCA1Zjg5ZmVjLi40YjQ3MjBhIDEwMDY0NAogICAg LyogRm9yIHN0cnVjdHVyZSBhbmQgdW5pb24gdHlwZXMsIGEgZGVzY3JpcHRpb24gb2YgZWFjaCBm aWVsZC4KICAgICAgIEZvciBzZXQgYW5kIHBhc2NhbCBhcnJheSB0eXBlcywgdGhlcmUgaXMgb25l ICJmaWVsZCIsCiAgICAgICB3aG9zZSB0eXBlIGlzIHRoZSBkb21haW4gdHlwZSBvZiB0aGUgc2V0 IG9yIGFycmF5LgotQEAgLTUzOSwxMyArNjE5LDM0IEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC01 NDcsMTMgKzYxOSwzNCBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCiAgICAgIHN0cnVjdCByYW5nZV9i b3VuZHMKICAgICAgewpAQCAtNTc2MSw3ICs0NzcxLDcgQEAgaW5kZXggNWY4OWZlYy4uNGI0NzIw YSAxMDA2NDQKICAKICAgICAgICAvKiBGbGFncyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHZhbHVl cyBvZiBsb3cgYW5kIGhpZ2ggYXJlCiAgICAgICAgICAgdmFsaWQuICBXaGVuIHRydWUsIHRoZSBy ZXNwZWN0aXZlIHJhbmdlIHZhbHVlIGlzCi1AQCAtOTE4LDkgKzEwMTksOSBAQCBleHRlcm4gdm9p ZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC05MjYsOSArMTAx OSw5IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICop OwogICNkZWZpbmUgVFlQRV9QT0lOVEVSX1RZUEUodGhpc3R5cGUpICh0aGlzdHlwZSktPnBvaW50 ZXJfdHlwZQogICNkZWZpbmUgVFlQRV9SRUZFUkVOQ0VfVFlQRSh0aGlzdHlwZSkgKHRoaXN0eXBl KS0+cmVmZXJlbmNlX3R5cGUKICAjZGVmaW5lIFRZUEVfQ0hBSU4odGhpc3R5cGUpICh0aGlzdHlw ZSktPmNoYWluCkBAIC01Nzc0LDcgKzQ3ODQsNyBAQCBpbmRleCA1Zjg5ZmVjLi40YjQ3MjBhIDEw MDY0NAogICAgIGNhbGxzIGNoZWNrX3R5cGVkZWYsIFRZUEVfTEVOR1RIIChWQUxVRV9UWVBFIChY KSkgaXMgc2FmZS4gICovCiAgI2RlZmluZSBUWVBFX0xFTkdUSCh0aGlzdHlwZSkgKHRoaXN0eXBl KS0+bGVuZ3RoCiAgLyogTm90ZSB0aGF0IFRZUEVfQ09ERSBjYW4gYmUgVFlQRV9DT0RFX1RZUEVE RUYsIHNvIGlmIHlvdSB3YW50IHRoZSByZWFsCi1AQCAtOTI4LDExICsxMDI5LDE2IEBAIGV4dGVy biB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOworQEAgLTkzNiwx MSArMTAyOSwxNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3Qg dHlwZSAqKTsKICAjZGVmaW5lIFRZUEVfQ09ERSh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhp c3R5cGUpLT5jb2RlCiAgI2RlZmluZSBUWVBFX05GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9U WVBFKHRoaXN0eXBlKS0+bmZpZWxkcwogICNkZWZpbmUgVFlQRV9GSUVMRFModGhpc3R5cGUpIFRZ UEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Zmxkc19ibmRzLmZpZWxkcwpAQCAtNTc5Myw3ICs0ODAz LDcgQEAgaW5kZXggNWY4OWZlYy4uNGI0NzIwYSAxMDA2NDQKICAjZGVmaW5lIFRZUEVfTE9XX0JP VU5EX1VOREVGSU5FRChyYW5nZV90eXBlKSBcCiAgICAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5 cGUpLT5sb3dfdW5kZWZpbmVkCiAgI2RlZmluZSBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEKHJh bmdlX3R5cGUpIFwKLUBAIC05NDksNyArMTA1NSwxNCBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9n bmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC05NTcsNyArMTA1NSwxNCBAQCBleHRl cm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAgICAoVFlQ RV9ISUdIX0JPVU5EKFRZUEVfSU5ERVhfVFlQRSgoYXJyYXl0eXBlKSkpKQogIAogICNkZWZpbmUg VFlQRV9BUlJBWV9MT1dFUl9CT1VORF9WQUxVRShhcnJheXR5cGUpIFwKQEAgLTU4MDksMjcgKzQ4 MTksNyBAQCBpbmRleCA1Zjg5ZmVjLi40YjQ3MjBhIDEwMDY0NAogIAogIC8qIEMrKyAqLwogIAot QEAgLTExNzgsNiArMTI5MSwxMCBAQCBzdHJ1Y3QgYnVpbHRpbl90eXBlCi0gICAgICAoKikgKCkg Y2FuIHNlcnZlciBhcyBhIGdlbmVyaWMgZnVuY3Rpb24gcG9pbnRlci4gICovCi0gICBzdHJ1Y3Qg dHlwZSAqYnVpbHRpbl9mdW5jX3B0cjsKLSAKLSsgIC8qIGBmdW5jdGlvbiByZXR1cm5pbmcgcG9p bnRlciB0byBmdW5jdGlvbiAocmV0dXJuaW5nIHZvaWQpJyB0eXBlLgotKyAgICAgVGhlIGZpbmFs IHZvaWQgcmV0dXJuIHR5cGUgaXMgbm90IHNpZ25pZmljYW50IGZvciBpdC4gICovCi0rICBzdHJ1 Y3QgdHlwZSAqYnVpbHRpbl9mdW5jX2Z1bmM7Ci0rCi0gCi0gICAvKiBTcGVjaWFsLXB1cnBvc2Ug dHlwZXMuICAqLwotIAotQEAgLTEyMTgsNiArMTMzNSw4IEBAIHN0cnVjdCBvYmpmaWxlX3R5cGUK LSAKLSAgIC8qIFR5cGVzIHVzZWQgZm9yIHN5bWJvbHMgd2l0aCBubyBkZWJ1ZyBpbmZvcm1hdGlv bi4gICovCi0gICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190ZXh0X3N5bWJvbDsKLSsgIHN0cnVjdCB0 eXBlICpub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbDsKLSsgIHN0cnVjdCB0eXBlICpub2Rl YnVnX2dvdF9wbHRfc3ltYm9sOwotICAgc3RydWN0IHR5cGUgKm5vZGVidWdfZGF0YV9zeW1ib2w7 Ci0gICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z191bmtub3duX3N5bWJvbDsKLSAgIHN0cnVjdCB0eXBl ICpub2RlYnVnX3Rsc19zeW1ib2w7Ci1AQCAtMTM2NSw2ICsxNDg0LDE4IEBAIGV4dGVybiBzdHJ1 Y3QgdHlwZSAqY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICos CitAQCAtMTM3OSw2ICsxNDg0LDE4IEBAIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX2FycmF5 X3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCiAgCQkJCSAgICAgICBzdHJ1Y3Qg dHlwZSAqKTsKICBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9hcnJheV9yYW5nZV90eXBlIChz dHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7CiAgCkBAIC01ODQ4LDcgKzQ4MzgsNyBAQCBpbmRleCA1 Zjg5ZmVjLi40YjQ3MjBhIDEwMDY0NAogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX3N0cmlu Z190eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAogIAkJCQkJc3RydWN0IHR5cGUg Kik7CiAgZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBfc3RyaW5nX3JhbmdlX3R5cGUgKHN0cnVj dCB0eXBlICosIGludCwgaW50KTsKLUBAIC0xNDEwLDYgKzE1NDEsMTAgQEAgZXh0ZXJuIGludCBp c19wdWJsaWNfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICopOworQEAgLTE0 MjQsNiArMTU0MSwxMCBAQCBleHRlcm4gaW50IGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5 cGUgKiwgc3RydWN0IHR5cGUgKik7CiAgCiAgZXh0ZXJuIGludCBpc191bmlxdWVfYW5jZXN0b3Ig KHN0cnVjdCB0eXBlICosIHN0cnVjdCB2YWx1ZSAqKTsKICAKQEAgLTU4NTksNyArNDg0OSw3IEBA IGluZGV4IDVmODlmZWMuLjRiNDcyMGEgMTAwNjQ0CiAgLyogT3ZlcmxvYWQgcmVzb2x1dGlvbiAq LwogIAogICNkZWZpbmUgTEVOR1RIX01BVENIKGJ2KSAoKGJ2KS0+cmFua1swXSkKLUBAIC0xNDgy LDEwICsxNjE3LDEzIEBAIGV4dGVybiB2b2lkIG1haW50ZW5hbmNlX3ByaW50X3R5cGUgKGNoYXIg KiwgaW50KTsKK0BAIC0xNDk2LDEwICsxNjE3LDEzIEBAIGV4dGVybiB2b2lkIG1haW50ZW5hbmNl X3ByaW50X3R5cGUgKGNoYXIgKiwgaW50KTsKICAKICBleHRlcm4gaHRhYl90IGNyZWF0ZV9jb3Bp ZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwogIApAQCAtNjQ3MSw4NyAr NTQ2MSw4IEBAIGluZGV4IDgxOWM2YjguLmJlZjhhMzUgMTAwNjQ0CiAgLyogVXNlIHRoaXMgZnVu Y3Rpb24gdG8gc2V0IGkzODZfZHJfbG93IGRlYnVnX3JlZ2lzdGVyX2xlbmd0aCBmaWVsZAogICAg IHJhdGhlciB0aGFuIHNldHRpbmcgaXQgZGlyZWN0bHkgdG8gY2hlY2sgdGhhdCB0aGUgbGVuZ3Ro IGlzIG9ubHkKICAgICBzZXQgb25jZS4gIEl0IGFsc28gZW5hYmxlcyB0aGUgJ21haW50IHNldC9z aG93IHNob3ctZGVidWctcmVncycgCi1kaWZmIC0tZ2l0IGEvZ2RiL2luZmNhbGwuYyBiL2dkYi9p bmZjYWxsLmMKLWluZGV4IGQ0MjI0OGUuLmNhMjM3MDQgMTAwNjQ0Ci0tLS0gYS9nZGIvaW5mY2Fs bC5jCi0rKysgYi9nZGIvaW5mY2FsbC5jCi1AQCAtMjI4LDYgKzIyOCwyMSBAQCB2YWx1ZV9hcmdf Y29lcmNlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHZhbHVlICphcmcsCi0gICBy ZXR1cm4gdmFsdWVfY2FzdCAodHlwZSwgYXJnKTsKLSB9Ci0gCi0rLyogUmV0dXJuIHRoZSByZXR1 cm4gdHlwZSBvZiBhIGZ1bmN0aW9uIHdpdGggaXRzIGZpcnN0IGluc3RydWN0aW9uIGV4YWN0bHkg YXQKLSsgICB0aGUgUEMgYWRkcmVzcy4gIFJldHVybiBOVUxMIG90aGVyd2lzZS4gICovCi0rCi0r c3RhdGljIHN0cnVjdCB0eXBlICoKLStmaW5kX2Z1bmN0aW9uX3JldHVybl90eXBlIChDT1JFX0FE RFIgcGMpCi0rewotKyAgc3RydWN0IHN5bWJvbCAqc3ltID0gZmluZF9wY19mdW5jdGlvbiAocGMp OwotKwotKyAgaWYgKHN5bSAhPSBOVUxMICYmIEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFM VUUgKHN5bSkpID09IHBjCi0rICAgICAgJiYgU1lNQk9MX1RZUEUgKHN5bSkgIT0gTlVMTCkKLSsg ICAgcmV0dXJuIFRZUEVfVEFSR0VUX1RZUEUgKFNZTUJPTF9UWVBFIChzeW0pKTsKLSsKLSsgIHJl dHVybiBOVUxMOwotK30KLSsKLSAvKiBEZXRlcm1pbmUgYSBmdW5jdGlvbidzIGFkZHJlc3MgYW5k IGl0cyByZXR1cm4gdHlwZSBmcm9tIGl0cyB2YWx1ZS4KLSAgICBDYWxscyBlcnJvcigpIGlmIHRo ZSBmdW5jdGlvbiBpcyBub3QgdmFsaWQgZm9yIGNhbGxpbmcuICAqLwotIAotQEAgLTIzNiw3ICsy NTEsNiBAQCBmaW5kX2Z1bmN0aW9uX2FkZHIgKHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24sIHN0cnVj dCB0eXBlICoqcmV0dmFsX3R5cGUpCi0gewotICAgc3RydWN0IHR5cGUgKmZ0eXBlID0gY2hlY2tf dHlwZWRlZiAodmFsdWVfdHlwZSAoZnVuY3Rpb24pKTsKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoID0gZ2V0X3R5cGVfYXJjaCAoZnR5cGUpOwotLSAgZW51bSB0eXBlX2NvZGUgY29kZSA9IFRZ UEVfQ09ERSAoZnR5cGUpOwotICAgc3RydWN0IHR5cGUgKnZhbHVlX3R5cGUgPSBOVUxMOwotICAg Q09SRV9BRERSIGZ1bmFkZHI7Ci0gCi1AQCAtMjQ0LDI0ICsyNTgsMzQgQEAgZmluZF9mdW5jdGlv bl9hZGRyIChzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCBzdHJ1Y3QgdHlwZSAqKnJldHZhbF90eXBl KQotICAgICAgcGFydCBvZiBpdC4gICovCi0gCi0gICAvKiBEZXRlcm1pbmUgYWRkcmVzcyB0byBj YWxsLiAgKi8KLS0gIGlmIChjb2RlID09IFRZUEVfQ09ERV9GVU5DIHx8IGNvZGUgPT0gVFlQRV9D T0RFX01FVEhPRCkKLS0gICAgewotLSAgICAgIGZ1bmFkZHIgPSB2YWx1ZV9hZGRyZXNzIChmdW5j dGlvbik7Ci0tICAgICAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBlKTsKLS0g ICAgfQotLSAgZWxzZSBpZiAoY29kZSA9PSBUWVBFX0NPREVfUFRSKQotKyAgaWYgKFRZUEVfQ09E RSAoZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCi0rICAgICAgfHwgVFlQRV9DT0RFIChmdHlwZSkg PT0gVFlQRV9DT0RFX01FVEhPRCkKLSsgICAgZnVuYWRkciA9IHZhbHVlX2FkZHJlc3MgKGZ1bmN0 aW9uKTsKLSsgIGVsc2UgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9QVFIpCi0g ICAgIHsKLSAgICAgICBmdW5hZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAoZnVuY3Rpb24pOwotICAg ICAgIGZ0eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpKTsKLSAg ICAgICBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMKLSAJICB8fCBUWVBF X0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EKQotKwlmdW5hZGRyID0gZ2RiYXJjaF9j b252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgZnVuYWRkciwKLSsJCQkJCQkgICAg ICAmY3VycmVudF90YXJnZXQpOwotKyAgICB9Ci0rICBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0g VFlQRV9DT0RFX0ZVTkMKLSsgICAgICB8fCBUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVf TUVUSE9EKQotKyAgICB7Ci0rICAgICAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ0 eXBlKTsKLSsKLSsgICAgICBpZiAoVFlQRV9HTlVfSUZVTkMgKGZ0eXBlKSkKLSAJewotLQkgIGZ1 bmFkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBmdW5h ZGRyLAotLQkJCQkJCQkmY3VycmVudF90YXJnZXQpOwotLQkgIHZhbHVlX3R5cGUgPSBUWVBFX1RB UkdFVF9UWVBFIChmdHlwZSk7Ci0rCSAgZnVuYWRkciA9IGdudV9pZnVuY19yZXNvbHZlX2FkZHIg KGdkYmFyY2gsIGZ1bmFkZHIpOwotKwotKwkgIC8qIFNraXAgcXVlcnlpbmcgdGhlIGZ1bmN0aW9u IHN5bWJvbCBpZiBubyBSRVRWQUxfVFlQRSBoYXMgYmVlbgotKwkgICAgIGFza2VkIGZvci4gICov Ci0rCSAgaWYgKHJldHZhbF90eXBlKQotKwkgICAgdmFsdWVfdHlwZSA9IGZpbmRfZnVuY3Rpb25f cmV0dXJuX3R5cGUgKGZ1bmFkZHIpOwotIAl9Ci0gICAgIH0KLS0gIGVsc2UgaWYgKGNvZGUgPT0g VFlQRV9DT0RFX0lOVCkKLSsgIGVsc2UgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09E RV9JTlQpCi0gICAgIHsKLSAgICAgICAvKiBIYW5kbGUgdGhlIGNhc2Ugb2YgZnVuY3Rpb25zIGxh Y2tpbmcgZGVidWdnaW5nIGluZm8uCi0gICAgICAgICAgVGhlaXIgdmFsdWVzIGFyZSBjaGFyYWN0 ZXJzIHNpbmNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgY2hhci4gICovCiBkaWZmIC0tZ2l0IGEvZ2Ri L2luZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCi1pbmRleCA3Y2VlN2M4Li43NTFjOWVmIDEwMDY0NAor aW5kZXggN2NlZTdjOC4uYjk0YzExYSAxMDA2NDQKIC0tLSBhL2dkYi9pbmZydW4uYwogKysrIGIv Z2RiL2luZnJ1bi5jCiBAQCAtNTQsNiArNTQsOCBAQApAQCAtNjYwNyw3ICs1NTE4LDcgQEAgaW5k ZXggN2NlZTdjOC4uNzUxYzllZiAxMDA2NDQKICAJa2VlcF9nb2luZyAoZWNzKTsKICAJcmV0dXJu OwogIAotQEAgLTUyNjMsMTUgKzUyNjgsNjQgQEAgaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfYnJl YWtwb2ludCAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwKK0BAIC01MjYzLDE1ICs1MjY4LDY1IEBA IGluc2VydF9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCB0aHJlYWRfaW5mbyAq dHAsCiAgICAgIH0KICB9CiAgCkBAIC02NjMyLDggKzU1NDMsOSBAQCBpbmRleCA3Y2VlN2M4Li43 NTFjOWVmIDEwMDY0NAogKwogKyAgaWYgKGRlYnVnX2luZnJ1bikKICsgICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCSJpbmZydW46IGV4Y2VwdGlvbiByZXN1bWUgYXQgJWx4 XG4iLAotKwkJCSh1bnNpZ25lZCBsb25nKSBoYW5kbGVyKTsKKysJCQkiaW5mcnVuOiBleGNlcHRp b24gcmVzdW1lIGF0ICVzXG4iLAorKwkJCXBhZGRyZXNzIChnZXRfb2JqZmlsZV9hcmNoIChvYmpm aWxlKSwKKysJCQkJICBoYW5kbGVyKSk7CiArCiArICBicCA9IHNldF9tb21lbnRhcnlfYnJlYWtw b2ludF9hdF9wYyAoZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwKICsJCQkJICAgICAgIGhhbmRsZXIs IGJwX2V4Y2VwdGlvbl9yZXN1bWUpOwpAQCAtNjY3Myw3ICs1NTg1LDcgQEAgaW5kZXggN2NlZTdj OC4uNzUxYzllZiAxMDA2NDQKICAKICAgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfRVJST1Ip CiAgICAgIHsKLUBAIC02MjUzLDcgKzYzMDcsOCBAQCBzdGF0aWMgc3RydWN0IGx2YWxfZnVuY3Mg c2lnaW5mb192YWx1ZV9mdW5jcyA9CitAQCAtNjI1Myw3ICs2MzA4LDggQEAgc3RhdGljIHN0cnVj dCBsdmFsX2Z1bmNzIHNpZ2luZm9fdmFsdWVfZnVuY3MgPQogICAgIGlmIHRoZXJlJ3Mgbm8gb2Jq ZWN0IGF2YWlsYWJsZS4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBAIC02NjgzLDEw ICs1NTk1LDEyIEBAIGluZGV4IDdjZWU3YzguLjc1MWM5ZWYgMTAwNjQ0CiAgewogICAgaWYgKHRh cmdldF9oYXNfc3RhY2sKICAgICAgICAmJiAhcHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgbnVs bF9wdGlkKQotQEAgLTY4MjYsNiArNjg4MSwxMyBAQCBzaG93X3NjaGVkdWxlX211bHRpcGxlIChz dHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorQEAgLTY4MjYsNiArNjg4MiwxNSBA QCBzaG93X3NjaGVkdWxlX211bHRpcGxlIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21f dHR5LAogIAkJCSAgICAib2YgYWxsIHByb2Nlc3NlcyBpcyAlcy5cbiIpLCB2YWx1ZSk7CiAgfQog IAorKy8qIEltcGxlbWVudGF0aW9uIG9mIGBzaWdpbmZvJyB2YXJpYWJsZS4gICovCisrCiArc3Rh dGljIGNvbnN0IHN0cnVjdCBpbnRlcm5hbHZhcl9mdW5jcyBzaWdpbmZvX2Z1bmNzID0KICt7CiAr ICBzaWdpbmZvX21ha2VfdmFsdWUsCkBAIC02Njk3LDcgKzU2MTEsNyBAQCBpbmRleCA3Y2VlN2M4 Li43NTFjOWVmIDEwMDY0NAogIHZvaWQKICBfaW5pdGlhbGl6ZV9pbmZydW4gKHZvaWQpCiAgewot QEAgLTcwOTgsNyArNzE2MCw3IEBAIFRlbGxzIGdkYiB3aGV0aGVyIHRvIGRldGFjaCB0aGUgY2hp bGQgb2YgYSBmb3JrLiIpLAorQEAgLTcwOTgsNyArNzE2Myw3IEBAIFRlbGxzIGdkYiB3aGV0aGVy IHRvIGRldGFjaCB0aGUgY2hpbGQgb2YgYSBmb3JrLiIpLAogICAgICAgdmFsdWUgd2l0aCBhIHZv aWQgdHlwZWQgdmFsdWUsIGFuZCB3aGVuIHdlIGdldCBoZXJlLCBnZGJhcmNoCiAgICAgICBpc24n dCBpbml0aWFsaXplZCB5ZXQuICBBdCB0aGlzIHBvaW50LCB3ZSdyZSBxdWl0ZSBzdXJlIHRoZXJl CiAgICAgICBpc24ndCBhbm90aGVyIGNvbnZlbmllbmNlIHZhcmlhYmxlIG9mIHRoZSBzYW1lIG5h bWUuICAqLwpAQCAtNjcwNyw3ICs1NjIxLDcgQEAgaW5kZXggN2NlZTdjOC4uNzUxYzllZiAxMDA2 NDQKICAgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgib2JzZXJ2ZXIiLCBub19jbGFzcywKICAJ CQkgICAmb2JzZXJ2ZXJfbW9kZV8xLCBfKCJcCiBkaWZmIC0tZ2l0IGEvZ2RiL2xpbmVzcGVjLmMg Yi9nZGIvbGluZXNwZWMuYwotaW5kZXggNzBkZjNjYS4uYWY1M2Y5NyAxMDA2NDQKK2luZGV4IDcw ZGYzY2EuLjUzMzgxNjEgMTAwNjQ0CiAtLS0gYS9nZGIvbGluZXNwZWMuYwogKysrIGIvZ2RiL2xp bmVzcGVjLmMKIEBAIC00Myw2ICs0Myw3IEBACkBAIC02NzMxLDcgKzU2NDUsNyBAQCBpbmRleCA3 MGRmM2NhLi5hZjUzZjk3IDEwMDY0NAogICAgICByZXR1cm4gZGVjb2RlX2luZGlyZWN0IChhcmdw dHIpOwogIAogKyAgaWYgKHN0cm5jbXAgKCphcmdwdHIsICJwcm9iZToiLCA2KSA9PSAwKQotKyAg ICByZXR1cm4gcGFyc2Vfc3RhcF9wcm9iZSAoYXJncHRyLCBjYW5vbmljYWwsIG5vdF9mb3VuZF9w dHIpOworKyAgICByZXR1cm4gcGFyc2Vfc3RhcF9wcm9iZSAoYXJncHRyLCBjYW5vbmljYWwpOwog KwogICAgaXNfcXVvdGVkID0gKHN0cmNociAoZ2V0X2dkYl9jb21wbGV0ZXJfcXVvdGVfY2hhcmFj dGVycyAoKSwKICAJCSAgICAgICAqKmFyZ3B0cikgIT0gTlVMTCk7CkBAIC03MDExLDExMCArNTky NSw2IEBAIGluZGV4IGE0MDE4NDYuLjI2ZGNhOGMgMTAwNjQ0CiAgICAgICAgc3RydWN0IHZhcm9i aiAqdmFyID0gdmFyb2JqX2dldF9oYW5kbGUgKG5hbWUpOwogIAogICAgICAgIHZhcm9ial91cGRh dGVfb25lICh2YXIsIHByaW50X3ZhbHVlcywgMSAvKiBleHBsaWNpdCAqLyk7Ci1kaWZmIC0tZ2l0 IGEvZ2RiL21pbnN5bXMuYyBiL2dkYi9taW5zeW1zLmMKLWluZGV4IDQ1NTFiMDcuLmIwNTRlM2Yg MTAwNjQ0Ci0tLS0gYS9nZGIvbWluc3ltcy5jCi0rKysgYi9nZGIvbWluc3ltcy5jCi1AQCAtMzM0 LDggKzMzNCw5IEBAIGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0IChjb25zdCBjaGFyICpuYW1l LCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZikKLSAJICAgICAgIG1zeW1ib2wgPSBtc3ltYm9sLT5oYXNo X25leHQpCi0gCSAgICB7Ci0gCSAgICAgIGlmIChzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUg KG1zeW1ib2wpLCBuYW1lKSA9PSAwICYmCi0tCQkgIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09 IG1zdF90ZXh0IHx8Ci0tCQkgICBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF9maWxlX3Rl eHQpKQotKwkJICAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAotKwkJICAgfHwg TVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMKLSsJCSAgIHx8IE1T WU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X2ZpbGVfdGV4dCkpCi0gCQl7Ci0gCQkgIHN3aXRj aCAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSkKLSAJCSAgICB7Ci1AQCAtNjk3LDYgKzY5OCw2OSBA QCBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUiBwYykKLSAgIHJldHVybiBs b29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAocGMsIE5VTEwpOwotIH0KLSAKLSsv KiBSZXR1cm4gbm9uLXplcm8gaWZmIFBDIGlzIGluIGFuIFNUVF9HTlVfSUZVTkMgZnVuY3Rpb24g cmVzb2x2ZXIuICAqLwotKwotK2ludAotK2luX2dudV9pZnVuY19zdHViIChDT1JFX0FERFIgcGMp Ci0rewotKyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sID0gbG9va3VwX21pbmltYWxf c3ltYm9sX2J5X3BjIChwYyk7Ci0rCi0rICByZXR1cm4gbXN5bWJvbCAmJiBNU1lNQk9MX1RZUEUg KG1zeW1ib2wpID09IG1zdF90ZXh0X2dudV9pZnVuYzsKLSt9Ci0rCi0rLyogU2VlIGVsZl9nbnVf aWZ1bmNfcmVzb2x2ZV9hZGRyIGZvciBpdHMgcmVhbCBpbXBsZW1lbnRhdGlvbi4gICovCi0rCi0r c3RhdGljIENPUkVfQUREUgotK3N0dWJfZ251X2lmdW5jX3Jlc29sdmVfYWRkciAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYykKLSt7Ci0rICBlcnJvciAoXygiR0RCIGNhbm5v dCByZXNvbHZlIFNUVF9HTlVfSUZVTkMgc3ltYm9sIGF0IGFkZHJlc3MgJXMgd2l0aG91dCAiCi0r CSAgICJ0aGUgRUxGIHN1cHBvcnQgY29tcGlsZWQgaW4uIiksCi0rCSBwYWRkcmVzcyAoZ2RiYXJj aCwgcGMpKTsKLSt9Ci0rCi0rLyogU2VlIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZV9uYW1lIGZvciBp dHMgcmVhbCBpbXBsZW1lbnRhdGlvbi4gICovCi0rCi0rc3RhdGljIGludAotK3N0dWJfZ251X2lm dW5jX3Jlc29sdmVfbmFtZSAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKLSsJCQkgICAgIENP UkVfQUREUiAqZnVuY3Rpb25fYWRkcmVzc19wKQotK3sKLSsgIGVycm9yIChfKCJHREIgY2Fubm90 IHJlc29sdmUgU1RUX0dOVV9JRlVOQyBzeW1ib2wgXCIlc1wiIHdpdGhvdXQgIgotKwkgICAidGhl IEVMRiBzdXBwb3J0IGNvbXBpbGVkIGluLiIpLAotKwkgZnVuY3Rpb25fbmFtZSk7Ci0rfQotKwot Ky8qIFNlZSBlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3N0b3AgZm9yIGl0cyByZWFsIGltcGxlbWVu dGF0aW9uLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3N0dWJfZ251X2lmdW5jX3Jlc29sdmVyX3N0 b3AgKHN0cnVjdCBicmVha3BvaW50ICpiKQotK3sKLSsgIGludGVybmFsX2Vycm9yIChfX0ZJTEVf XywgX19MSU5FX18sCi0rCQkgIF8oImVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCBjYW5ub3Qg YmUgcmVhY2hlZC4iKSk7Ci0rfQotKwotKy8qIFNlZSBlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3Jl dHVybl9zdG9wIGZvciBpdHMgcmVhbCBpbXBsZW1lbnRhdGlvbi4gICovCi0rCi0rc3RhdGljIHZv aWQKLStzdHViX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCAoc3RydWN0IGJyZWFrcG9p bnQgKmIpCi0rewotKyAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAg XygiZWxmX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCBjYW5ub3QgYmUgcmVhY2hlZC4i KSk7Ci0rfQotKwotKy8qIFNlZSBlbGZfZ251X2lmdW5jX2ZucyBmb3IgaXRzIHJlYWwgaW1wbGVt ZW50YXRpb24uICAqLwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ251X2lmdW5jX2ZucyBzdHVi X2dudV9pZnVuY19mbnMgPQotK3sKLSsgIHN0dWJfZ251X2lmdW5jX3Jlc29sdmVfYWRkciwKLSsg IHN0dWJfZ251X2lmdW5jX3Jlc29sdmVfbmFtZSwKLSsgIHN0dWJfZ251X2lmdW5jX3Jlc29sdmVy X3N0b3AsCi0rICBzdHViX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCwKLSt9OwotKwot Ky8qIEEgcGxhY2Vob2xkZXIgZm9yICZlbGZfZ251X2lmdW5jX2Zucy4gICovCi0rCi0rY29uc3Qg c3RydWN0IGdudV9pZnVuY19mbnMgKmdudV9pZnVuY19mbnNfcCA9ICZzdHViX2dudV9pZnVuY19m bnM7Ci0rCi0gLyogRmluZCB0aGUgbWluaW1hbCBzeW1ib2wgbmFtZWQgTkFNRSwgYW5kIHJldHVy biBib3RoIHRoZSBtaW5zeW0KLSAgICBzdHJ1Y3QgYW5kIGl0cyBvYmpmaWxlLiAgVGhpcyBvbmx5 IGNoZWNrcyB0aGUgbGlua2FnZSBuYW1lLiAgU2V0cwotICAgICpPQkpGSUxFX1AgYW5kIHJldHVy bnMgdGhlIG1pbmltYWwgc3ltYm9sLCBpZiBpdCBpcyBmb3VuZC4gIElmIGl0Ci1AQCAtNzY2LDYg KzgzMCw3IEBAIHByaW1fcmVjb3JkX21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBD T1JFX0FERFIgYWRkcmVzcywKLSAgIHN3aXRjaCAobXNfdHlwZSkKLSAgICAgewotICAgICBjYXNl IG1zdF90ZXh0OgotKyAgICBjYXNlIG1zdF90ZXh0X2dudV9pZnVuYzoKLSAgICAgY2FzZSBtc3Rf ZmlsZV90ZXh0OgotICAgICBjYXNlIG1zdF9zb2xpYl90cmFtcG9saW5lOgotICAgICAgIHNlY3Rp b24gPSBTRUNUX09GRl9URVhUIChvYmpmaWxlKTsKLUBAIC0xMjMxLDcgKzEyOTYsOCBAQCBmaW5k X3NvbGliX3RyYW1wb2xpbmVfdGFyZ2V0IChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIENPUkVf QUREUiBwYykKLSAgICAgewotICAgICAgIEFMTF9NU1lNQk9MUyAob2JqZmlsZSwgbXN5bWJvbCkK LSAgICAgICB7Ci0tCWlmIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0Ci0rCWlm ICgoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAotKwkgICAgfHwgTVNZTUJPTF9U WVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMpCi0gCSAgICAmJiBzdHJjbXAgKFNZ TUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpLAotIAkJICAgICAgIFNZTUJPTF9MSU5LQUdFX05B TUUgKHRzeW1ib2wpKSA9PSAwKQotIAkgIHJldHVybiBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5 bWJvbCk7CiBkaWZmIC0tZ2l0IGEvZ2RiL21pcHNyZWFkLmMgYi9nZGIvbWlwc3JlYWQuYwogaW5k ZXggNzRkNzk1ZC4uN2UwNTMxNyAxMDA2NDQKIC0tLSBhL2dkYi9taXBzcmVhZC5jCkBAIC03MTI4 LDE0ICs1OTM4LDE0IEBAIGluZGV4IDc0ZDc5NWQuLjdlMDUzMTcgMTAwNjQ0CiAgfTsKICAKIGRp ZmYgLS1naXQgYS9nZGIvb2JqZmlsZXMuYyBiL2dkYi9vYmpmaWxlcy5jCi1pbmRleCBmMzI1OWRk Li4xMzA5Y2RiIDEwMDY0NAoraW5kZXggZjMyNTlkZC4uNGNiM2JlZCAxMDA2NDQKIC0tLSBhL2dk Yi9vYmpmaWxlcy5jCiArKysgYi9nZGIvb2JqZmlsZXMuYwogQEAgLTg0Niw2ICs4NDYsMTEgQEAg b2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkJCQlvYmpfc2Vj dGlvbl9hZGRyIChzKSk7CiAgICAgIH0KICAKLSsgIC8qIFJlbG9jYXRpbmcgU3lzdGVtdGFwIHBy b2Jlcy4gICovCisrICAvKiBSZWxvY2F0aW5nIFN5c3RlbVRhcCBwcm9iZXMuICAqLwogKyAgaWYg KG9iamZpbGUtPnNmICYmIG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zKQogKyAgICBvYmpmaWxl LT5zZi0+c3ltX3Byb2JlX2Zucy0+c3ltX3JlbG9jYXRlX3Byb2JlIChvYmpmaWxlLAogKwkJCQkJ CSAgICBuZXdfb2Zmc2V0cywgZGVsdGEpOwpAQCAtNzIyNCw1NyArNjAzNCwxMCBAQCBpbmRleCBk MmVmYTViLi5kOThiM2E0IDEwMDY0NAogIH0KICAMCiBkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlLmMg Yi9nZGIvcGFyc2UuYwotaW5kZXggMDJhN2Q4OS4uODFmM2YwYyAxMDA2NDQKK2luZGV4IDQ4MTU4 NTQuLjgxZjNmMGMgMTAwNjQ0CiAtLS0gYS9nZGIvcGFyc2UuYwogKysrIGIvZ2RiL3BhcnNlLmMK LUBAIC00ODcsOSArNDg3LDIyIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3QgbWluaW1hbF9z eW1ib2wgKm1zeW1ib2wpCi0gICBwYyA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2Fk ZHIgKGdkYmFyY2gsIGFkZHIsICZjdXJyZW50X3RhcmdldCk7Ci0gICBpZiAocGMgIT0gYWRkcikK LSAgICAgewotKyAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqaWZ1bmNfbXN5bSA9IGxvb2t1 cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAocGMpOwotKwotICAgICAgIC8qIEluIHRoaXMgY2FzZSwg YXNzdW1lIHdlIGhhdmUgYSBjb2RlIHN5bWJvbCBpbnN0ZWFkIG9mCi0gCSBhIGRhdGEgc3ltYm9s LiAgKi8KLS0gICAgICB0eXBlID0gbXN0X3RleHQ7Ci0rCi0rICAgICAgaWYgKGlmdW5jX21zeW0g IT0gTlVMTCAmJiBNU1lNQk9MX1RZUEUgKGlmdW5jX21zeW0pID09IG1zdF90ZXh0X2dudV9pZnVu YwotKwkgICYmIFNZTUJPTF9WQUxVRV9BRERSRVNTIChpZnVuY19tc3ltKSA9PSBwYykKLSsJewot KwkgIC8qIEEgZnVuY3Rpb24gZGVzY3JpcHRvciBoYXMgYmVlbiByZXNvbHZlZCBidXQgUEMgaXMg c3RpbGwgaW4gdGhlCi0rCSAgICAgU1RUX0dOVV9JRlVOQyByZXNvbHZlciBib2R5IChzdWNoIGFz IGJlY2F1c2UgaW5mZXJpb3IgZG9lcyBub3QKLSsJICAgICBydW4gdG8gYmUgYWJsZSB0byBjYWxs IGl0KS4gICovCi0rCi0rCSAgdHlwZSA9IG1zdF90ZXh0X2dudV9pZnVuYzsKLSsJfQotKyAgICAg IGVsc2UKLSsJdHlwZSA9IG1zdF90ZXh0OwotICAgICAgIHNlY3Rpb24gPSBOVUxMOwotICAgICAg IGFkZHIgPSBwYzsKLSAgICAgfQotQEAgLTUyMSw2ICs1MzQsMTEgQEAgd3JpdGVfZXhwX21zeW1i b2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCkKLSAgICAgICB3cml0ZV9leHBfZWx0 X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfdGV4dF9zeW1ib2wpOwotICAg ICAgIGJyZWFrOwotIAotKyAgICBjYXNlIG1zdF90ZXh0X2dudV9pZnVuYzoKLSsgICAgICB3cml0 ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSkKLSsJCQkJCSAgICAgICAtPm5v ZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sKTsKLSsgICAgICBicmVhazsKLSsKLSAgICAgY2Fz ZSBtc3RfZGF0YToKLSAgICAgY2FzZSBtc3RfZmlsZV9kYXRhOgotICAgICBjYXNlIG1zdF9ic3M6 Ci1AQCAtNTI4LDYgKzU0NiwxMCBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxf c3ltYm9sICptc3ltYm9sKQotICAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBl IChvYmpmaWxlKS0+bm9kZWJ1Z19kYXRhX3N5bWJvbCk7Ci0gICAgICAgYnJlYWs7Ci0gCi0rICAg IGNhc2UgbXN0X3Nsb3RfZ290X3BsdDoKLSsgICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZp bGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfZ290X3BsdF9zeW1ib2wpOwotKyAgICAgIGJyZWFr OwotKwotICAgICBkZWZhdWx0OgotICAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90 eXBlIChvYmpmaWxlKS0+bm9kZWJ1Z191bmtub3duX3N5bWJvbCk7Ci0gICAgICAgYnJlYWs7Ci1A QCAtMTQ4MCw2ICsxNTAyLDcgQEAgcGFyc2VyX2ZwcmludGYgKEZJTEUgKngsIGNvbnN0IGNoYXIg KnksIC4uLikKK0BAIC0xNTAyLDYgKzE1MDIsNyBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwg Y29uc3QgY2hhciAqeSwgLi4uKQogIAogIGludAogIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLApAQCAtNzI4Miw3ICs2MDQ1LDcgQEAgaW5k ZXggMDJhN2Q4OS4uODFmM2YwYyAxMDA2NDQKICAJCQkgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCQkJCQkgICAgICB2b2lkICpkYXRhKSwKICAJCQkgdm9p ZCAqZGF0YSkKLUBAIC0xNTIxLDcgKzE1NDQsNyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAo c3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0xNTQzLDcgKzE1NDQsNyBAQCBv cGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywK ICAJICAgIHN0cnVjdCB0eXBlICp0eXBlID0gZWx0c1twb3MgKyAyICsgYXJnXS50eXBlOwogIAkg ICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBUWVBFX09CSkZJTEUgKHR5cGUpOwogIApAQCAt NzI5MSw3ICs2MDU0LDcgQEAgaW5kZXggMDJhN2Q4OS4uODFmM2YwYyAxMDA2NDQKICAJICAgICAg cmV0dXJuIDE7CiAgCSAgfQogICAgICAgIH0KLUBAIC0xNTM5LDcgKzE1NjIsOCBAQCBvcGVyYXRv cl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0x NTYxLDcgKzE1NjIsOCBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Np b24gKmV4cCwgaW50IHBvcywKICAKICAJLyogQ2hlY2sgb2JqZmlsZSB3aGVyZSB0aGUgdmFyaWFi bGUgaXRzZWxmIGlzIHBsYWNlZC4KICAJICAgU1lNQk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1h eSBiZSBOVUxMLiAgKi8KQEAgLTczMDEsNyArNjA2NCw3IEBAIGluZGV4IDAyYTdkODkuLjgxZjNm MGMgMTAwNjQ0CiAgCSAgcmV0dXJuIDE7CiAgCiAgCS8qIENoZWNrIG9iamZpbGUgd2hlcmUgaXMg cGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2YXJpYWJsZS4gICovCi1AQCAtMTU1MiwyNCAr MTU3NiwyNyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwgaW50IHBvcywKK0BAIC0xNTc0LDI0ICsxNTc2LDI3IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5k YXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAogIAogICAgLyogSW52b2tlIGNh bGxiYWNrcyBmb3IgVFlQRSBhbmQgT0JKRklMRSBpZiB0aGV5IHdlcmUgc2V0IGFzIG5vbi1OVUxM LiAgKi8KICAKQEAgLTczMzcsNyArNjEwMCw3IEBAIGluZGV4IDAyYTdkODkuLjgxZjNmMGMgMTAw NjQ0CiAgCSAgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IHZvaWQgKmRhdGEpLAogIAkgICAgIHZvaWQgKmRhdGEpCiAgewotQEAgLTE1ODQsNyArMTYxMSw5 IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorQEAgLTE2MDYsNyArMTYx MSw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAogIAogICAgICAgIHBv cyA9IGVuZHBvcyAtIG9wbGVuOwogICAgICAgIGlmIChleHAtPmxhbmd1YWdlX2RlZm4tPmxhX2V4 cF9kZXNjLT5vcGVyYXRvcl9jaGVjayAoZXhwLCBwb3MsCkBAIC03MzQ4LDcgKzYxMTEsNyBAQCBp bmRleCAwMmE3ZDg5Li44MWYzZjBjIDEwMDY0NAogIAlyZXR1cm4gMTsKICAKICAgICAgICBlbmRw b3MgPSBwb3M7Ci1AQCAtMTYxNSw4ICsxNjQ0LDI5IEBAIGV4cF91c2VzX29iamZpbGUgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorQEAgLTE2MzcsOCAr MTY0NCwyOSBAQCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICB7CiAgICBnZGJfYXNzZXJ0IChvYmpmaWxlLT5zZXBhcmF0 ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IE5VTEwpOwogIApAQCAtNzQxMiwxMCArNjE3NSwx MCBAQCBpbmRleCAzZjc0M2QxLi4zYjk0MmM0IDEwMDY0NAogKwogICNlbmRpZiAvKiBQQVJTRVJf REVGU19IICovCiBkaWZmIC0tZ2l0IGEvZ2RiL3BwYy1saW51eC1uYXQuYyBiL2dkYi9wcGMtbGlu dXgtbmF0LmMKLWluZGV4IDA0OWNkZTguLmYzZDM1ZWMgMTAwNjQ0CitpbmRleCBmMGM3ZjYxLi41 NGNhY2JiIDEwMDY0NAogLS0tIGEvZ2RiL3BwYy1saW51eC1uYXQuYwogKysrIGIvZ2RiL3BwYy1s aW51eC1uYXQuYwotQEAgLTE2MzcsMTIgKzE2MzcsMTggQEAgYm9va2VfcmVtb3ZlX3BvaW50IChz dHJ1Y3QgcHBjX2h3X2JyZWFrcG9pbnQgKmIsIGludCB0aWQpCitAQCAtMTYzNyw2ICsxNjM3LDE0 IEBAIGJvb2tlX3JlbW92ZV9wb2ludCAoc3RydWN0IHBwY19od19icmVha3BvaW50ICpiLCBpbnQg dGlkKQogICAgaHdfYnJlYWtzW2ldLmh3X2JyZWFrID0gTlVMTDsKICB9CiAgCkBAIC03NDI3LDcg KzYxOTAsMTAgQEAgaW5kZXggMDQ5Y2RlOC4uZjNkMzVlYyAxMDA2NDQKICsgIGJvb2tlX2luc2Vy dF9wb2ludCAocHAsIHRpZCk7CiArfQogKworIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIHJlZ2lz dGVycyBuZWVkZWQgZm9yIGEgcmFuZ2VkIGJyZWFrcG9pbnQuICAqLworIAogIHN0YXRpYyBpbnQK K0BAIC0xNjU0LDggKzE2NjIsNiBAQCBzdGF0aWMgaW50CiAgcHBjX2xpbnV4X2luc2VydF9od19i cmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAJCQkJICBzdHJ1Y3QgYnBfdGFy Z2V0X2luZm8gKmJwX3RndCkKICB7CkBAIC03NDM2LDkgKzYyMDIsOSBAQCBpbmRleCAwNDljZGU4 Li5mM2QzNWVjIDEwMDY0NAogICAgc3RydWN0IHBwY19od19icmVha3BvaW50IHA7CiAgCiAgICBp ZiAoIWhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFjZSAoKSkKLUBAIC0xNjU2LDE4ICsxNjYyLDIz IEBAIHBwY19saW51eF9pbnNlcnRfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsCi0gICBwLmFkZHIyID0gMDsKLSAgIHAuY29uZGl0aW9uX3ZhbHVlID0gMDsKK0BAIC0xNjgx LDE4ICsxNjg3LDIzIEBAIHBwY19saW51eF9pbnNlcnRfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCisgICAgICAgcC5hZGRyMiA9IDA7CisgICAgIH0KICAKIC0gIEFMTF9M V1BTIChscCwgcHRpZCkKIC0gICAgYm9va2VfaW5zZXJ0X3BvaW50ICgmcCwgVElER0VUIChwdGlk KSk7CkBAIC03NDY0LDkgKzYyMzAsOSBAQCBpbmRleCAwNDljZGU4Li5mM2QzNWVjIDEwMDY0NAog ICAgc3RydWN0IHBwY19od19icmVha3BvaW50IHA7CiAgCiAgICBpZiAoIWhhdmVfcHRyYWNlX2Jv b2tlX2ludGVyZmFjZSAoKSkKLUBAIC0xNjgxLDggKzE2OTIsNyBAQCBwcGNfbGludXhfcmVtb3Zl X2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgcC5hZGRyMiA9IDA7 Ci0gICBwLmNvbmRpdGlvbl92YWx1ZSA9IDA7CitAQCAtMTcxOCw4ICsxNzI5LDcgQEAgcHBjX2xp bnV4X3JlbW92ZV9od19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgICAg ICBwLmFkZHIyID0gMDsKKyAgICAgfQogIAogLSAgQUxMX0xXUFMgKGxwLCBwdGlkKQogLSAgICBi b29rZV9yZW1vdmVfcG9pbnQgKCZwLCBUSURHRVQgKHB0aWQpKTsKQEAgLTc0NzQsNyArNjI0MCw3 IEBAIGluZGV4IDA0OWNkZTguLmYzZDM1ZWMgMTAwNjQ0CiAgCiAgICByZXR1cm4gMDsKICB9Ci1A QCAtMTg5Niw2ICsxOTA2LDE1IEBAIHBwY19saW51eF9jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25k aXRpb24gKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCitAQCAtMTkzMyw2ICsxOTQz LDE1IEBAIHBwY19saW51eF9jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24gKENPUkVfQURE UiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCiAgCSAgJiYgY2hlY2tfY29uZGl0aW9uIChhZGRyLCBj b25kLCAmZGF0YV92YWx1ZSkpOwogIH0KICAKQEAgLTc0OTAsNyArNjI1Niw3IEBAIGluZGV4IDA0 OWNkZTguLmYzZDM1ZWMgMTAwNjQ0CiAgLyogU2V0IHVwIFAgd2l0aCB0aGUgcGFyYW1ldGVycyBu ZWNlc3NhcnkgdG8gcmVxdWVzdCBhIHdhdGNocG9pbnQgY292ZXJpbmcKICAgICBMRU4gYnl0ZXMg c3RhcnRpbmcgYXQgQUREUiBhbmQgaWYgcG9zc2libGUgd2l0aCBjb25kaXRpb24gZXhwcmVzc2lv biBDT05ECiAgICAgZXZhbHVhdGVkIGJ5IGhhcmR3YXJlLiAgSU5TRVJUIHRlbGxzIGlmIHdlIGFy ZSBjcmVhdGluZyBhIHJlcXVlc3QgZm9yCi1AQCAtMTk0OSw4ICsxOTY4LDYgQEAgc3RhdGljIGlu dAorQEAgLTE5ODYsOCArMjAwNSw2IEBAIHN0YXRpYyBpbnQKICBwcGNfbGludXhfaW5zZXJ0X3dh dGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCiAgCQkJICAgICBzdHJ1 Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CkBAIC03NDk5LDcgKzYyNjUsNyBAQCBpbmRleCAwNDlj ZGU4Li5mM2QzNWVjIDEwMDY0NAogICAgaW50IHJldCA9IC0xOwogIAogICAgaWYgKGhhdmVfcHRy YWNlX2Jvb2tlX2ludGVyZmFjZSAoKSkKLUBAIC0xOTU5LDggKzE5NzYsNyBAQCBwcGNfbGludXhf aW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCitAQCAt MTk5Niw4ICsyMDEzLDcgQEAgcHBjX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIg YWRkciwgaW50IGxlbiwgaW50IHJ3LAogIAogICAgICAgIGNyZWF0ZV93YXRjaHBvaW50X3JlcXVl c3QgKCZwLCBhZGRyLCBsZW4sIHJ3LCBjb25kLCAxKTsKICAKQEAgLTc1MDksNyArNjI3NSw3IEBA IGluZGV4IDA0OWNkZTguLmYzZDM1ZWMgMTAwNjQ0CiAgCiAgICAgICAgcmV0ID0gMDsKICAgICAg fQotQEAgLTIwMDMsMTIgKzIwMTksOCBAQCBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCitAQCAtMjA0MCwxMiArMjA1Niw4IEBAIHBw Y19saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBy dywKICAKICAgICAgICBzYXZlZF9kYWJyX3ZhbHVlID0gZGFicl92YWx1ZTsKICAKQEAgLTc1MjMs NyArNjI4OSw3IEBAIGluZGV4IDA0OWNkZTguLmYzZDM1ZWMgMTAwNjQ0CiAgICAgIH0KICAKICAg IHJldHVybiByZXQ7Ci1AQCAtMjAxOCw4ICsyMDMwLDYgQEAgc3RhdGljIGludAorQEAgLTIwNTUs OCArMjA2Nyw2IEBAIHN0YXRpYyBpbnQKICBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCiAgCQkJICAgICBzdHJ1Y3QgZXhwcmVzc2lv biAqY29uZCkKICB7CkBAIC03NTMyLDcgKzYyOTgsNyBAQCBpbmRleCAwNDljZGU4Li5mM2QzNWVj IDEwMDY0NAogICAgaW50IHJldCA9IC0xOwogIAogICAgaWYgKGhhdmVfcHRyYWNlX2Jvb2tlX2lu dGVyZmFjZSAoKSkKLUBAIC0yMDI4LDIwICsyMDM4LDE2IEBAIHBwY19saW51eF9yZW1vdmVfd2F0 Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywKK0BAIC0yMDY1LDIwICsy MDc1LDE2IEBAIHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGlu dCBsZW4sIGludCBydywKICAKICAgICAgICBjcmVhdGVfd2F0Y2hwb2ludF9yZXF1ZXN0ICgmcCwg YWRkciwgbGVuLCBydywgY29uZCwgMCk7CiAgCkBAIC04NzY1LDIwICs3NTMxLDYgQEAgaW5kZXgg Y2UwZWIzNS4uMTQ1NzJmNCAxMDA2NDQKICBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCQkJICAgICAgaW50 IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCiAgCQkJICAgICAgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCi1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2cjQu YyBiL2dkYi9zb2xpYi1zdnI0LmMKLWluZGV4IDQzMmRhOTkuLjc4YzZiMWMgMTAwNjQ0Ci0tLS0g YS9nZGIvc29saWItc3ZyNC5jCi0rKysgYi9nZGIvc29saWItc3ZyNC5jCi1AQCAtMTI3Niw3ICsx Mjc2LDggQEAgc3ZyNF9pbl9keW5zeW1fcmVzb2x2ZV9jb2RlIChDT1JFX0FERFIgcGMpCi0gCSAg ICYmIHBjIDwgaW5mby0+aW50ZXJwX3RleHRfc2VjdF9oaWdoKQotIAkgIHx8IChwYyA+PSBpbmZv LT5pbnRlcnBfcGx0X3NlY3RfbG93Ci0gCSAgICAgICYmIHBjIDwgaW5mby0+aW50ZXJwX3BsdF9z ZWN0X2hpZ2gpCi0tCSAgfHwgaW5fcGx0X3NlY3Rpb24gKHBjLCBOVUxMKSk7Ci0rCSAgfHwgaW5f cGx0X3NlY3Rpb24gKHBjLCBOVUxMKQotKwkgIHx8IGluX2dudV9pZnVuY19zdHViIChwYykpOwot IH0KLSAKLSAvKiBHaXZlbiBhbiBleGVjdXRhYmxlJ3MgQUJGRCBhbmQgdGFyZ2V0LCBjb21wdXRl IHRoZSBlbnRyeS1wb2ludAogZGlmZiAtLWdpdCBhL2dkYi9zb21yZWFkLmMgYi9nZGIvc29tcmVh ZC5jCiBpbmRleCA3MDgzMWEwLi5iYWY2OGVhIDEwMDY0NAogLS0tIGEvZ2RiL3NvbXJlYWQuYwpA QCAtODgxOSwxMSArNzU3MSwxMSBAQCBpbmRleCAwODg4YjY5Li5jM2VmZDViIDEwMDY0NAogIAkg ICAgICBlbHNlCiBkaWZmIC0tZ2l0IGEvZ2RiL3N0YXAtcHJvYmUuYyBiL2dkYi9zdGFwLXByb2Jl LmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lMjUxYmQzCitpbmRleCAw MDAwMDAwLi44MzZkOTA0CiAtLS0gL2Rldi9udWxsCiArKysgYi9nZGIvc3RhcC1wcm9iZS5jCi1A QCAtMCwwICsxLDIwMzEgQEAKLSsvKiBTeXN0ZW10YXAgcHJvYmUgc3VwcG9ydCBmb3IgR0RCLgor QEAgLTAsMCArMSwyMDQxIEBACisrLyogU3lzdGVtVGFwIHByb2JlIHN1cHBvcnQgZm9yIEdEQi4K ICsKICsgICBDb3B5cmlnaHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CiArCkBAIC04ODYyLDYgKzc2MTQsMjIgQEAgaW5kZXggMDAwMDAwMC4uZTI1MWJkMwogKwogKyNp bmNsdWRlIDxjdHlwZS5oPgogKworKy8qIFRoaXMgZGVmaW5lIGlzIHVzZWQgdG8gaW5mb3JtIHdo ZXRoZXIgd2UgYXJlIGNvbXBpbGluZyBhbiBhZ2VudAorKyAgIGV4cHJlc3Npb24gb3Igbm90LiAg Ki8KKysKKysjZGVmaW5lIFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUChldmFsX2luZm8pIFwK KysgIChldmFsX2luZm8tPmFleHByICE9IE5VTEwpCisrCisrLyogVGhlIHZhcmlvdXMgcG9zc2li aWxpdGllcyBvZiBiaXRuZXNzIGRlZmluZWQgZm9yIGEgcHJvYmUncyBhcmd1bWVudC4KKysKKysg ICBUaGUgcmVsYXRpb25zaGlwIGlzOgorKworKyAgIC0gU1RBUF9BUkdfQklUTkVTU19VTkRFRklO RUQ6ICBUaGUgdXNlciBoYXNuJ3Qgc3BlY2lmaWVkIHRoZSBiaXRuZXNzLgorKyAgIC0gU1RBUF9B UkdfQklUTkVTU18zMkJJVF9VTlNJR05FRDogIGFyZ3VtZW50IHN0cmluZyBzdGFydHMgd2l0aCBg NEAnLgorKyAgIC0gU1RBUF9BUkdfQklUTkVTU18zMkJJVF9TSUdORUQ6ICBhcmd1bWVudCBzdHJp bmcgc3RhcnRzIHdpdGggYC00QCcuCisrICAgLSBTVEFQX0FSR19CSVRORVNTXzY0QklUX1VOU0lH TkVEOiAgYXJndW1lbnQgc3RyaW5nIHN0YXJ0cyB3aXRoIGA4QCcuCisrICAgLSBTVEFQX0FSR19C SVRORVNTXzY0QklUX1NJR05FRDogIGFyZ3VtZW50IHN0cmluZyBzdGFydHMgd2l0aCBgLThAJy4g ICovCisrCiArZW51bSBzdGFwX2FyZ19iaXRuZXNzCiArewogKyAgU1RBUF9BUkdfQklUTkVTU19V TkRFRklORUQsCkBAIC04ODcxLDYgKzc2MzksOCBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiAr ICBTVEFQX0FSR19CSVRORVNTXzY0QklUX1NJR05FRCwKICt9OwogKworKy8qIFRoZSBmb2xsb3dp bmcgc3RydWN0dXJlIHJlcHJlc2VudHMgYSBzaW5nbGUgYXJndW1lbnQgZm9yIHRoZSBwcm9iZS4g ICovCisrCiArc3RydWN0IHN0YXBfcHJvYmVfYXJnCiArewogKyAgLyogVGhlIGJpdG5lc3Mgb2Yg dGhpcyBhcmd1bWVudC4gICovCkBAIC04ODgwLDggKzc2NTAsMTMgQEAgaW5kZXggMDAwMDAwMC4u ZTI1MWJkMwogKyAgY2hhciAqYXJnX3N0cjsKICt9OwogKworKy8qIFRoZSBtYXhpbXVtIG51bWJl ciBvZiBhcmd1bWVudHMgdGhhdCBhIHByb2JlIGNhbiBoYXZlLAorKyAgIGFzIGRlZmluZWQgaW4g PHN5cy9zZHQuaD4uICAqLworKwogKyNkZWZpbmUgU1RBUF9NQVhfQVJHUyAxMAogKworKy8qIFN0 cnVjdHVyZSB0aGF0IGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IGFsbCBhcmd1bWVudHMgb2YgYSBw cm9iZS4gICovCisrCiArc3RydWN0IHN0YXBfYXJnc19pbmZvCiArewogKyAgLyogVGhlIG51bWJl ciBvZiB2YWxpZCBwYXJzZWQgYXJndW1lbnRzLiAgKi8KQEAgLTg4OTQsNyArNzY2OSw3IEBAIGlu ZGV4IDAwMDAwMDAuLmUyNTFiZDMKICsgIHN0cnVjdCBzdGFwX3Byb2JlX2FyZyAqYXJnOwogK307 CiArCi0rLyogU3RydWN0IHRoYXQgY29udGFpbnMgYWxsIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRp b24gdG8gZXZhbHVhdGUKKysvKiBTdHJ1Y3R1cmUgdGhhdCBjb250YWlucyBhbGwgdGhlIG5lY2Vz c2FyeSBpbmZvcm1hdGlvbiB0byBldmFsdWF0ZQogKyAgIGFuIGV4cHJlc3Npb24uICAqLwogKwog K3N0cnVjdCBzdGFwX2V2YWx1YXRpb25faW5mbwpAQCAtODkxOCw5ICs3NjkzLDYgQEAgaW5kZXgg MDAwMDAwMC4uZTI1MWJkMwogKyAgLyogVGhlIGJpdG5lc3Mgc3BlY2lmaWVkIGZvciB0aGlzIGFy Z3VtZW50LiAgKi8KICsgIGVudW0gc3RhcF9hcmdfYml0bmVzcyBiaXRuZXNzOwogKwotKyAgLyog RmxhZyB0byBpbmRpY2F0ZSBpZiB3ZSBhcmUgY29tcGlsaW5nIGFuIGFnZW50IGV4cHJlc3Npb24u ICAqLwotKyAgaW50IGNvbXBpbGluZ19wOwotKwogKyAgLyogSWYgdGhlIGFib3ZlIGZsYWcgaXMg dHJ1ZSAob25lKSwgdGhpcyBmaWVsZCB3aWxsIGNvbnRhaW4gdGhlCiArICAgICBwb2ludGVyIHRv IHRoZSBhZ2VudCBleHByZXNzaW9uLiAgKi8KICsgIHN0cnVjdCBhZ2VudF9leHByICphZXhwcjsK QEAgLTg5MzYsMjUgKzc3MDgsMTggQEAgaW5kZXggMDAwMDAwMC4uZTI1MWJkMwogK3N0YXRpYyBz dHJ1Y3Qgc3RhcF9hcmdzX2luZm8gZHVtbXlfc3RhcF9hcmdzX2luZm8gPQogKyAgeyAwLCBOVUxM LCBOVUxMIH07CiArCi0rLyogRXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgcHJvYmUncyBhcmd1bWVu dCBleHByZXNzaW9ucy4gIExIUyByZXByZXNlbnRzCi0rICAgdGhlIGxlZnQgc2lkZSBvZiB0aGUg ZXhwcmVzc2lvbiwgYW5kIFBSRUMgaXMgdGhlIHByZWNlZGVuY2Ugb2YgdGhlCi0rICAgbGFzdCBv cGVyYXRvciBpZGVudGlmaWVkIGJlZm9yZSBjYWxsaW5nIHRoZSBmdW5jdGlvbi4gICovCi0rCiAr c3RhdGljIHN0cnVjdCB2YWx1ZSAqc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudF8yCiArICAo c3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvICpldmFsX2luZm8sCiArICAgc3RydWN0IHZhbHVl ICpsaHMsIGludCBwcmVjKTsKICsKLSsvKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZv ciBjaGVja2luZyB0aGUgbmVjZXNzYXJ5IHR5cGUgb2YgZXZhbHVhdGlvbgotKyAgIGRlcGVuZGlu ZyBvbiB3aGF0IGlzIHRoZSBuZXh0ICJ0aGluZyIgaW4gdGhlIGJ1ZmZlci4gIFZhbGlkIHZhbHVl cyBhcmU6Ci0rCi0rICAgLSBVbmFyeSBvcGVyYXRvcnM7Ci0rICAgLSBJbnRlZ2VyIGNvbnN0YW50 czsKLSsgICAtIFJlZ2lzdGVyIGRpc3BsYWNlbWVudCwgaW5kaXJlY3Rpb24sIGFuZCBkaXJlY3Qg YWNjZXNzOwotKyAgIC0gUGFyZW50aGVzaXplZCBvcGVyYW5kLiAgKi8KLSsKICtzdGF0aWMgc3Ry dWN0IHZhbHVlICpzdGFwX2V2YWx1YXRlX2NvbmRpdGlvbmFsbHkKICsgIChzdHJ1Y3Qgc3RhcF9l dmFsdWF0aW9uX2luZm8gKmV2YWxfaW5mbyk7CiArCisrLyogSGVscGVyIGZ1bmN0aW9uIHdoaWNo IGRlY2lkZXMgdG8gc2tpcCB3aGl0ZXNwYWNlcyBvciBub3QgaW4gYSBwcm9iZSdzCisrICAgYXJn dW1lbnQgc3RyaW5nLiAgQmFzaWNhbGx5LCBpZiB3ZSBhcmUgaW5zaWRlIGEgcGFyZW50aGVzaXMg ZXhwcmVzc2lvbgorKyAgIChpLmUuLCBpbnNpZGUgYSBzdWJleHByZXNzaW9uKSwgd2UgY2FuIHNr aXAgd2hpdGVzcGFjZXM7IG90aGVyd2lzZSB3ZQorKyAgIGNhbm5vdC4gICovCisrCiArc3RhdGlj IHZvaWQKICtzdGFwX3NraXBfd2hpdGVzcGFjZV9jb25kIChjaGFyICoqcywgaW50IGluc2lkZV9w YXJlbikKICt7CkBAIC04OTYyLDYgKzc3MjcsMTAgQEAgaW5kZXggMDAwMDAwMC4uZTI1MWJkMwog KyAgICAqcyA9IHNraXBfc3BhY2VzICgqcyk7CiArfQogKworKy8qIEhlbHBlciBmdW5jdGlvbiB3 aGljaCBwYXJzZXMgYSBzaW5nbGUgYXJndW1lbnQgaW4gYSBwcm9iZSdzIGFyZ3VtZW50CisrICAg c3RyaW5nLCBiYXNlZCBvbiB2YXJpb3VzIHJ1bGVzICh3aGljaCBjYW4gYmUgbGVhcm5lZCBmcm9t IHRoZSBgZ2FzJworKyAgIG1hbnVhbCkuICBJdCByZXR1cm5zIDEgb24gc3VjY2Vzcywgb3IgMCBv dGhlcndpc2UuICAqLworKwogK3N0YXRpYyBpbnQKICtzdGFwX3BhcnNlX2FyZyAoY29uc3QgY2hh ciAqKnApCiArewpAQCAtOTE1MywyOCArNzkyMiw0OCBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQz CiArICByZXR1cm4gMTsKICt9CiArCisrLyogSGVscGVyIGZ1bmN0aW9uIHdoaWNoIGlzIHJlc3Bv bnNpYmxlIGZvciBmcmVlaW5nIHRoZSBzcGFjZSBhbGxvY2F0ZWQgdG8KKysgICBob2xkIGluZm9y bWF0aW9uIGFib3V0IGEgcHJvYmUncyBhcmd1bWVudHMuICAqLworKwogK3N0YXRpYyB2b2lkCiAr c3RhcF9mcmVlX2FyZ3NfaW5mbyAodm9pZCAqYXJnc19pbmZvX3B0cikKICt7CiArICBzdHJ1Y3Qg c3RhcF9hcmdzX2luZm8gKmEgPSAoc3RydWN0IHN0YXBfYXJnc19pbmZvICopIGFyZ3NfaW5mb19w dHI7CiArICBpbnQgaTsKICsKLSsgIGZvciAoaSA9IDA7IGkgPCBTVEFQX01BWF9BUkdTOyBpKysp CisrICBmb3IgKGkgPSAwOyBpIDwgYS0+bl9hcmdzOyBpKyspCiArICAgIHsKLSsgICAgICB4ZnJl ZSAoYS0+YXJnLT5hcmdfc3RyKTsKKysgICAgICB4ZnJlZSAoYS0+YXJnW2ldLmFyZ19zdHIpOwog KyAgICB9CiArCiArICB4ZnJlZSAoYS0+YXJnKTsKICsgIHhmcmVlIChhKTsKICt9CiArCi0rdm9p ZAorKy8qIEZ1bmN0aW9uIHdoaWNoIHBhcnNlcyBhbiBhcmd1bWVudCBzdHJpbmcgZnJvbSBQUk9C RSwgY29ycmVjdGx5IHNwbGl0dGluZworKyAgIHRoZSBhcmd1bWVudHMgYW5kIHN0b3JpbmcgdGhl aXIgaW5mb3JtYXRpb24gaW4gcHJvcGVybHkgd2F5cy4gIFRoaXMgZnVuY3Rpb24KKysgICBvbmx5 IHNlcGFyYXRlcyB0aGUgYXJndW1lbnRzLCBidXQgZG9lcyBub3QgZXZhbHVhdGUgdGhlbS4KKysK KysgICBDb25zaWRlciB0aGUgZm9sbG93aW5nIGFyZ3VtZW50IHN0cmluZzoKKysKKysgICBgNEAl ZWF4IDRAJDEwJworKworKyAgIFdlIGhhdmUgdHdvIGFyZ3VtZW50cywgYCVlYXgnIGFuZCBgJDEw JywgYm90aCB3aXRoIDMyLWJpdCB1bnNpZ25lZCBiaXRuZXNzLgorKyAgIFRoaXMgZnVuY3Rpb24g YmFzaWNhbGx5IGhhbmRsZXMgdGhlbSwgcHJvcGVybHkgZmlsbGluZyBzb21lIHN0cnVjdHVyZXMg d2l0aAorKyAgIHRoaXMgaW5mb3JtYXRpb24uICAqLworKworK3N0YXRpYyB2b2lkCiArc3RhcF9w YXJzZV9wcm9iZV9hcmd1bWVudHMgKHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSkKICt7CiArICBz dHJ1Y3Qgc3RhcF9hcmdzX2luZm8gKmFyZ3NfaW5mbzsKICsgIHN0cnVjdCBjbGVhbnVwICpiYWNr X3RvOwogKyAgY29uc3QgY2hhciAqY3VyID0gcHJvYmUtPmFyZ3M7CiArICBpbnQgY3VycmVudF9h cmcgPSAtMTsKKysgIC8qIFRoaXMgaXMgYSBzdGF0ZS1tYWNoaW5lIHBhcnNlciwgd2hpY2ggbWVh bnMgd2Ugd2lsbCBhbHdheXMgYmUKKysgICAgIGluIGEga25vd24gc3RhdGUgd2hlbiBwYXJzaW5n IGFuIGFyZ3VtZW50LiAgVGhlIHN0YXRlIGNvdWxkIGJlCisrICAgICBlaXRoZXIgYE5FV19BUkcn IGlmIHdlIGFyZSBwYXJzaW5nIGEgbmV3IGFyZ3VtZW50LCBgQklUTkVTUycgaWYKKysgICAgIHdl IGFyZSBwYXJzaW5nIHRoZSBiaXRuZXNzLWRlZmluaXRpb24gcGFydCAoaS5lLiwgYDRAJyksIG9y CisrICAgICBgUEFSU0VfQVJHJyBpZiB3ZSBhcmUgYWN0dWFsbHkgcGFyc2luZyB0aGUgYXJndW1l bnQgcGFydC4gICovCiArICBlbnVtCiArICAgIHsKICsgICAgICBORVdfQVJHLApAQCAtOTMxMiw2 ICs4MTAxLDggQEAgaW5kZXggMDAwMDAwMC4uZTI1MWJkMwogKyAgZGlzY2FyZF9jbGVhbnVwcyAo YmFja190byk7CiArfQogKworKy8qIFNlZSBkZWZpbml0aW9uIGluIHN0YXAtcHJvYmUuaC4gICov CisrCiAraW50CiArc3RhcF9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKGNvbnN0IHN0cnVjdCBz dGFwX3Byb2JlICpwcm9iZSkKICt7CkBAIC05NjExLDggKzg0MDIsNyBAQCBpbmRleCAwMDAwMDAw Li5lMjUxYmQzCiArICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGV2YWxfaW5mby0+Z2RiYXJj aDsKICsgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSA9IGV2YWxfaW5mby0+ZnJhbWU7CiArICBl bnVtIHN0YXBfYXJnX2JpdG5lc3MgYml0bmVzcyA9IGV2YWxfaW5mby0+Yml0bmVzczsKLSsjZGVm aW5lIFJFR19OQU1FX01BWF9TSVpFIDIwCi0rICBjaGFyIHJlZ25hbWVbUkVHX05BTUVfTUFYX1NJ WkUgKyAxXTsKKysgIGNoYXIgKnJlZ25hbWU7CiArICBpbnQgbGVuLCByZWdudW0sIGluZGlyZWN0 X3AgPSAwOwogKyAgc3RydWN0IHZhbHVlICpyZXQgPSBOVUxMOwogKyAgCkBAIC05NjIwLDcgKzg0 MTAsNyBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArICAgICBidWZmZXIgd2FzIGVtcHR5LiAg Ki8KICsgIGdkYl9hc3NlcnQgKHMgJiYgKnMpOwogKwotKyAgaWYgKGV2YWxfaW5mby0+Y29tcGls aW5nX3ApCisrICBpZiAoU1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8pKQog KyAgICAvKiBJZiB3ZSBhcmUgY29tcGlsaW5nLCB3ZSBjYW5ub3QgcmV0dXJuIE5VTEwgYmVjYXVz ZSB0aGF0IHdvdWxkCiArICAgICAgIGxlYWQgdG8gZXJyb3JzIGluIGZ1dHVyZSBldmFsdWF0aW9u cy4gIFRoYXQncyB3aHkgd2UganVzdCBtYWtlCiArICAgICAgIHRoaXMgZHVtbXkgdmFsdWUsIHJl cHJlc2VudGluZyB0aGF0IHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcwpAQCAtOTY3MCwxMCArODQ2 MCw3IEBAIGluZGV4IDAwMDAwMDAuLmUyNTFiZDMKICsgIGlmIChpbmRpcmVjdF9wICYmICpzID09 ICcpJykKICsgICAgKytzOwogKwotKyAgaWYgKGxlbiA+PSBSRUdfTkFNRV9NQVhfU0laRSkKLSsg ICAgZXJyb3IgKF8oIlRoZSByZWdpc3RlciBuYW1lIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3VwcG9y dGVkIHNpemUgIgotKwkgICAgICJvbiBleHByZXNzaW9uIGAlcycuIiksIGV2YWxfaW5mby0+c2F2 ZWRfZXhwcik7Ci0rCisrICByZWduYW1lID0gYWxsb2NhIChsZW4gKyAxKTsKICsgIHN0cm5jcHkg KHJlZ25hbWUsIHN0YXJ0LCBsZW4pOwogKyAgcmVnbmFtZVtsZW5dID0gJ1wwJzsKICsKQEAgLTk2 ODQsNyArODQ3MSw3IEBAIGluZGV4IDAwMDAwMDAuLmUyNTFiZDMKICsgICAgZXJyb3IgKF8oIklu dmFsaWQgcmVnaXN0ZXIgbmFtZSBgJXMnIG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKICsJICAgcmVn bmFtZSwgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKICsKLSsgIGlmIChldmFsX2luZm8tPmNvbXBp bGluZ19wKQorKyAgaWYgKFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkK ICsgICAgYXhfcmVnIChldmFsX2luZm8tPmFleHByLCByZWdudW0pOwogKyAgZWxzZQogKyAgICBy ZXQgPSB2YWx1ZV9vZl9yZWdpc3RlciAocmVnbnVtLCBmcmFtZSk7CkBAIC05NzAzLDcgKzg0OTAs NyBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArICAgICAgc3dpdGNoIChiaXRuZXNzKQogKwl7 CiArCWNhc2UgU1RBUF9BUkdfQklUTkVTU19VTkRFRklORUQ6Ci0rCSAgaWYgKGV2YWxfaW5mby0+ Y29tcGlsaW5nX3ApCisrCSAgaWYgKFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9p bmZvKSkKICsJICAgIHsKICsJICAgICAgaWYgKGdkYmFyY2hfYWRkcl9iaXQgKGdkYmFyY2gpID09 IDMyKQogKwkJYW9wID0gYW9wX3JlZjMyOwpAQCAtOTcyMiw3ICs4NTA5LDcgQEAgaW5kZXggMDAw MDAwMC4uZTI1MWJkMwogKwkgIGJyZWFrOwogKwogKwljYXNlIFNUQVBfQVJHX0JJVE5FU1NfMzJC SVRfU0lHTkVEOgotKwkgIGlmIChldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKwkgIGlmIChTVEFQ X0NPTVBJTElOR19BR0VOVF9FWFBSX1AgKGV2YWxfaW5mbykpCiArCSAgICBhb3AgPSBhb3BfcmVm MzI7CiArCSAgZWxzZQogKwkgICAgdCA9IGxvb2t1cF9wb2ludGVyX3R5cGUKQEAgLTk3MzAsNyAr ODUxNyw3IEBAIGluZGV4IDAwMDAwMDAuLmUyNTFiZDMKICsJICBicmVhazsKICsKICsJY2FzZSBT VEFQX0FSR19CSVRORVNTXzMyQklUX1VOU0lHTkVEOgotKwkgIGlmIChldmFsX2luZm8tPmNvbXBp bGluZ19wKQorKwkgIGlmIChTVEFQX0NPTVBJTElOR19BR0VOVF9FWFBSX1AgKGV2YWxfaW5mbykp CiArCSAgICBhb3AgPSBhb3BfcmVmMzI7CiArCSAgZWxzZQogKwkgICAgdCA9IGxvb2t1cF9wb2lu dGVyX3R5cGUKQEAgLTk3MzgsNyArODUyNSw3IEBAIGluZGV4IDAwMDAwMDAuLmUyNTFiZDMKICsJ ICBicmVhazsKICsKICsJY2FzZSBTVEFQX0FSR19CSVRORVNTXzY0QklUX1NJR05FRDoKLSsJICBp ZiAoZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJICBpZiAoU1RBUF9DT01QSUxJTkdfQUdFTlRf RVhQUl9QIChldmFsX2luZm8pKQogKwkgICAgYW9wID0gYW9wX3JlZjY0OwogKwkgIGVsc2UKICsJ ICAgIHQgPSBsb29rdXBfcG9pbnRlcl90eXBlCkBAIC05NzQ2LDcgKzg1MzMsNyBAQCBpbmRleCAw MDAwMDAwLi5lMjUxYmQzCiArCSAgYnJlYWs7CiArCiArCWNhc2UgU1RBUF9BUkdfQklUTkVTU182 NEJJVF9VTlNJR05FRDoKLSsJICBpZiAoZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJICBpZiAo U1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8pKQogKwkgICAgYW9wID0gYW9w X3JlZjY0OwogKwkgIGVsc2UKICsJICAgIHQgPSBsb29rdXBfcG9pbnRlcl90eXBlCkBAIC05NzYx LDcgKzg1NDgsNyBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArCiArICAgICAgaWYgKGRpc3Bs YWNlbWVudCkKICsJewotKwkgIGlmIChldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKwkgIGlmIChT VEFQX0NPTVBJTElOR19BR0VOVF9FWFBSX1AgKGV2YWxfaW5mbykpCiArCSAgICB7CiArCSAgICAg IGF4X2NvbnN0X2wgKGV2YWxfaW5mby0+YWV4cHIsIHZhbHVlX2FzX2xvbmcgKGRpc3BsYWNlbWVu dCkpOwogKwkgICAgICBheF9zaW1wbGUgKGV2YWxfaW5mby0+YWV4cHIsIGFvcF9hZGQpOwpAQCAt OTc3MCw3ICs4NTU3LDcgQEAgaW5kZXggMDAwMDAwMC4uZTI1MWJkMwogKwkgICAgcmV0ID0gdmFs dWVfcHRyYWRkIChyZXQsIHZhbHVlX2FzX2xvbmcgKGRpc3BsYWNlbWVudCkpOwogKwl9CiArCi0r ICAgICAgaWYgKGV2YWxfaW5mby0+Y29tcGlsaW5nX3ApCisrICAgICAgaWYgKFNUQVBfQ09NUElM SU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKICsJewogKwkgIGlmICh0cmFjZV9rbHVkZ2Up CiArCSAgICB7CkBAIC05ODA5LDcgKzg1OTYsNyBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiAr ICBlbnVtIHN0YXBfYXJnX2JpdG5lc3MgYml0bmVzcyA9IGV2YWxfaW5mby0+Yml0bmVzczsKICsg IHN0cnVjdCB2YWx1ZSAqcmVzID0gTlVMTDsKICsKLSsgIGlmIChldmFsX2luZm8tPmNvbXBpbGlu Z19wKQorKyAgaWYgKFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKICsg ICAgLyogSWYgd2UgYXJlIGNvbXBpbGluZywgd2UgY2Fubm90IHJldHVybiBOVUxMIGJlY2F1c2Ug dGhhdCB3b3VsZAogKyAgICAgICBsZWFkIHRvIGVycm9ycyBpbiBmdXR1cmUgZXZhbHVhdGlvbnMu ICBUaGF0J3Mgd2h5IHdlIGp1c3QgbWFrZQogKyAgICAgICB0aGlzIGR1bW15IHZhbHVlLCByZXBy ZXNlbnRpbmcgdGhhdCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMKQEAgLTk4NTQsNyArODY0MSw3 IEBAIGluZGV4IDAwMDAwMDAuLmUyNTFiZDMKICsKICsJICAgICAgaWYgKGMgPT0gJy0nKQogKwkJ ewotKwkJICBpZiAoZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJCSAgaWYgKFNUQVBfQ09NUElM SU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKICsJCSAgICB7CiArCQkgICAgICAvKiBXZSBo YXZlIHRvIGFkZCBgLTEnIHRvIHRoZSBzdGFjaywgYW5kIG11bHRpcGx5CiArCQkJIHRoZSB0d28g dmFsdWVzLiAgKi8KQEAgLTk4NjYsNyArODY1Myw3IEBAIGluZGV4IDAwMDAwMDAuLmUyNTFiZDMK ICsJCX0KICsJICAgICAgZWxzZQogKwkJewotKwkJICBpZiAoZXZhbF9pbmZvLT5jb21waWxpbmdf cCkKKysJCSAgaWYgKFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKICsJ CSAgICBheF9zaW1wbGUgKGV2YWxfaW5mby0+YWV4cHIsIGFvcF9iaXRfbm90KTsKICsJCSAgZWxz ZQogKwkJICAgIHJlcyA9IHZhbHVlX2NvbXBsZW1lbnQgKHRtcF9yZXMpOwpAQCAtOTkxMSwyNiAr ODY5OCwyNSBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArCSAgICAgIG51bWJlciA9IHN0cnRv bCAoZXZhbF9pbmZvLT5leHBfYnVmLAogKwkJCSAgICAgICAmZXZhbF9pbmZvLT5leHBfYnVmLCAw KTsKICsKLSsJICAgICAgaWYgKCFldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKwkgICAgICBpZiAo IVNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKICsJCXJlcwogKwkJICA9 IHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9pbnQs CiArCQkJCQludW1iZXIpOwotKwotKwkgICAgICBpZiAoZXZhbF9pbmZvLT5jb21waWxpbmdfcCkK KysJICAgICAgZWxzZQogKwkJYXhfY29uc3RfbCAoZXZhbF9pbmZvLT5hZXhwciwgbnVtYmVyKTsK ICsKICsJICAgICAgZXZhbF9pbmZvLT5leHBfYnVmID0gc2tpcF9zcGFjZXMgKGV2YWxfaW5mby0+ ZXhwX2J1Zik7CiArCiArCSAgICAgIGlmIChjID09ICctJykKICsJCXsKLSsJCSAgaWYgKGV2YWxf aW5mby0+Y29tcGlsaW5nX3ApCisrCQkgIGlmIChTVEFQX0NPTVBJTElOR19BR0VOVF9FWFBSX1Ag KGV2YWxfaW5mbykpCiArCQkgICAgYXhfc2ltcGxlIChldmFsX2luZm8tPmFleHByLCBhb3BfbG9n X25vdCk7CiArCQkgIGVsc2UKICsJCSAgICByZXMgPSB2YWx1ZV9uZWcgKHJlcyk7CiArCQl9CiAr CSAgICAgIGVsc2UKICsJCXsKLSsJCSAgaWYgKGV2YWxfaW5mby0+Y29tcGlsaW5nX3ApCisrCQkg IGlmIChTVEFQX0NPTVBJTElOR19BR0VOVF9FWFBSX1AgKGV2YWxfaW5mbykpCiArCQkgICAgYXhf c2ltcGxlIChldmFsX2luZm8tPmFleHByLCBhb3BfYml0X25vdCk7CiArCQkgIGVsc2UKICsJCSAg ICByZXMgPSB2YWx1ZV9jb21wbGVtZW50IChyZXMpOwpAQCAtOTk3Myw3ICs4NzU5LDcgQEAgaW5k ZXggMDAwMDAwMC4uZTI1MWJkMwogKwogKwludW1iZXIgPSBzdHJ0b2wgKGV2YWxfaW5mby0+ZXhw X2J1ZiwgJmV2YWxfaW5mby0+ZXhwX2J1ZiwgMCk7CiArCi0rCWlmIChldmFsX2luZm8tPmNvbXBp bGluZ19wKQorKwlpZiAoU1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8pKQog KwkgIGF4X2NvbnN0X2wgKGV2YWxfaW5mby0+YWV4cHIsIG51bWJlcik7CiArCWVsc2UKICsJICBy ZXMgPSB2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5f aW50LApAQCAtMTAwMDEsNiArODc4NywxNCBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArICBy ZXR1cm4gcmVzOwogK30KICsKKysvKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBj aGVja2luZyB0aGUgbmVjZXNzYXJ5IHR5cGUgb2YgZXZhbHVhdGlvbgorKyAgIGRlcGVuZGluZyBv biB3aGF0IGlzIHRoZSBuZXh0ICJ0aGluZyIgaW4gdGhlIGJ1ZmZlci4gIFZhbGlkIHZhbHVlcyBh cmU6CisrCisrICAgLSBVbmFyeSBvcGVyYXRvcnM7CisrICAgLSBJbnRlZ2VyIGNvbnN0YW50czsK KysgICAtIFJlZ2lzdGVyIGRpc3BsYWNlbWVudCwgaW5kaXJlY3Rpb24sIGFuZCBkaXJlY3QgYWNj ZXNzOworKyAgIC0gUGFyZW50aGVzaXplZCBvcGVyYW5kLiAgKi8KKysKICtzdGF0aWMgc3RydWN0 IHZhbHVlICoKICtzdGFwX2V2YWx1YXRlX2NvbmRpdGlvbmFsbHkgKHN0cnVjdCBzdGFwX2V2YWx1 YXRpb25faW5mbyAqZXZhbF9pbmZvKQogK3sKQEAgLTEwMDM5LDEyICs4ODMzLDE2IEBAIGluZGV4 IDAwMDAwMDAuLmUyNTFiZDMKICsgIHJldHVybiByZXQ7CiArfQogKworKy8qIEV2YWx1YXRpb24g ZnVuY3Rpb24gZm9yIHByb2JlJ3MgYXJndW1lbnQgZXhwcmVzc2lvbnMuICBMSFMgcmVwcmVzZW50 cworKyAgIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGV4cHJlc3Npb24sIGFuZCBQUkVDIGlzIHRoZSBw cmVjZWRlbmNlIG9mIHRoZQorKyAgIGxhc3Qgb3BlcmF0b3IgaWRlbnRpZmllZCBiZWZvcmUgY2Fs bGluZyB0aGUgZnVuY3Rpb24uICAqLworKwogK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgogK3N0YXBf ZXZhbHVhdGVfcHJvYmVfYXJndW1lbnRfMiAoc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvICpl dmFsX2luZm8sCiArCQkJCXN0cnVjdCB2YWx1ZSAqbGhzLCBpbnQgcHJlYykKICt7CiArICBzdHJ1 Y3QgdmFsdWUgKnJocyA9IE5VTEw7Ci0rICBpbnQgY29tcGlsaW5nX3AgPSBldmFsX2luZm8tPmNv bXBpbGluZ19wOworKyAgaW50IGNvbXBpbGluZ19wID0gU1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQ Ul9QIChldmFsX2luZm8pOwogKwogKyAgLyogVGhpcyBpcyBhbiBvcGVyYXRvci1wcmVjZWRlbmNl IHBhcnNlciBhbmQgZXZhbHVhdG9yLgogKwpAQCAtMTAxMzcsNyArODkzNSw2IEBAIGluZGV4IDAw MDAwMDAuLmUyNTFiZDMKICsvKiBUaGlzIGZ1bmN0aW9uIGZpbGxzIHRoZSBuZWNlc3NhcnkgYXJn dW1lbnRzIGZvciB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbgogKyAgIHRvIHdvcmsuICAqLwogKwot KyNkZWZpbmUgVEVTVCAwCiArc3RhdGljIHN0cnVjdCB2YWx1ZSAqCiArc3RhcF9ldmFsdWF0ZV9w cm9iZV9hcmd1bWVudF8xIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICsJCQkJY29uc3Qgc3Ry dWN0IHN0YXBfcHJvYmUgKnByb2JlLApAQCAtMTAxNDcsMTMgKzg5NDQsNiBAQCBpbmRleCAwMDAw MDAwLi5lMjUxYmQzCiArICBzdHJ1Y3Qgc3RhcF9ldmFsdWF0aW9uX2luZm8gZXZhbF9pbmZvOwog KyAgY2hhciAqcyA9IChjaGFyICopIHByb2JlLT5wYXJzZWRfYXJncy0+YXJnW25dLmFyZ19zdHI7 CiArICBzdHJ1Y3QgdmFsdWUgKnJlcywgKnZzWzRdOwotKyNpZiBURVNUIC8qVEVTVElORyovCi0r ICBjb25zdCBjaGFyICphcmdzWzRdID0geyAiJDIiLAotKyAgICAgICIkMiArICQzICogJDQgKyAk NSIsCi0rICAgICAgIi0oJDIgKyAkMykiLAotKyAgICAgICIofigkMikgKiAkMykgLyAoJDEgKyAk MSkiIH07Ci0rICBpbnQgaTsKLSsjZW5kaWYKICsKICsgIC8qIEZpbGxpbmcgbmVjZXNzYXJ5IGlu Zm9ybWF0aW9uIGZvciBldmFsdWF0aW9uIGZ1bmN0aW9uLiAgKi8KICsgIGV2YWxfaW5mby5zYXZl ZF9leHByID0gczsKQEAgLTEwMTYyLDIzICs4OTUyLDExIEBAIGluZGV4IDAwMDAwMDAuLmUyNTFi ZDMKICsgIGV2YWxfaW5mby5mcmFtZSA9IGZyYW1lOwogKyAgZXZhbF9pbmZvLmJpdG5lc3MgPSBw cm9iZS0+cGFyc2VkX2FyZ3MtPmFyZ1tuXS5iaXRuZXNzOwogKyAgLyogV2UgYXJlIG5vdCBjb21w aWxpbmcgdG8gYW4gYWdlbnQgZXhwcmVzc2lvbi4gICovCi0rICBldmFsX2luZm8uY29tcGlsaW5n X3AgPSAwOwogKyAgZXZhbF9pbmZvLmFleHByID0gTlVMTDsKICsgIGV2YWxfaW5mby5hdmFsdWUg PSBOVUxMOwogKwogKyAgcmVzID0gc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudF8yICgmZXZh bF9pbmZvLAogKwkJCQkJLypsaHM9Ki9OVUxMLCAvKnByZWM9Ki8wKTsKLSsjaWYgVEVTVCAvKiBU RVNUSU5HICovCi0rICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQotKyAgICB7Ci0rICAgICAgZXZh bF9pbmZvLnNhdmVkX2V4cHIgPSAoY29uc3QgY2hhciAqKSBhcmdzW2ldOwotKyAgICAgIGV2YWxf aW5mby5leHBfYnVmID0gKGNoYXIgKikgYXJnc1tpXTsKLSsgICAgICB2c1tpXSA9IHN0YXBfZXZh bHVhdGVfcHJvYmVfYXJndW1lbnRfMiAoJmV2YWxfaW5mbywKLSsJCQkJCSAgICAgIC8qbGhzPSov TlVMTCwgLypwcmVjPSovMCk7Ci0rCi0rICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk b3V0LCAiJWxkXG4iLCB2YWx1ZV9hc19sb25nICh2c1tpXSkpOwotKyAgICB9Ci0rI2VuZGlmCiAr CiArICBpZiAoIXJlcykKICsgICAgZXJyb3IgKF8oIkNvdWxkIG5vdCBldmFsdWF0ZSBleHByZXNz aW9uIGAlcycuIiksCkBAIC0xMDE4Nyw2ICs4OTY1LDggQEAgaW5kZXggMDAwMDAwMC4uZTI1MWJk MwogKyAgcmV0dXJuIHJlczsKICt9CiArCisrLyogU2VlIGRlZmluaXRpb24gaW4gc3RhcC1wcm9i ZS5oLiAgKi8KKysKICtzdHJ1Y3QgdmFsdWUgKgogK3N0YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1l bnQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBzdGFw X3Byb2JlICpwcm9iZSwKQEAgLTEwMjAzLDYgKzg5ODMsOSBAQCBpbmRleCAwMDAwMDAwLi5lMjUx YmQzCiArICByZXR1cm4gc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudF8xIChvYmpmaWxlLCBw cm9iZSwgZnJhbWUsIG4pOwogK30KICsKKysvKiBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggY29tcGls ZXMgdGhlIHByb2JlJ3MgYXJndW1lbnQgTiBpbnRvIGFuCisrICAgYWdlbnQgZXhwcmVzc2lvbiwg c3VpdGFibGUgZm9yIHVzaW5nIHdpdGggdHJhY2Vwb2ludHMuICAqLworKwogK3N0YXRpYyB2b2lk CiArc3RhcF9jb21waWxlX3RvX2F4XzEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogKwkJICAg ICAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLApAQCAtMTAyMjEsNyArOTAwNCw2IEBA IGluZGV4IDAwMDAwMDAuLmUyNTFiZDMKICsgIGV2YWxfaW5mby5mcmFtZSA9IE5VTEw7CiArICBl dmFsX2luZm8uYml0bmVzcyA9IHByb2JlLT5wYXJzZWRfYXJncy0+YXJnW25dLmJpdG5lc3M7CiAr ICAvKiBXZSBhcmUgY29tcGlsaW5nIHRvIGFuIGFnZW50IGV4cHJlc3Npb24uICAqLwotKyAgZXZh bF9pbmZvLmNvbXBpbGluZ19wID0gMTsKICsgIGV2YWxfaW5mby5hZXhwciA9IGV4cHI7CiArICBl dmFsX2luZm8uYXZhbHVlID0gdmFsdWU7CiArCkBAIC0xMDI2NCw2ICs5MDQ2LDggQEAgaW5kZXgg MDAwMDAwMC4uZTI1MWJkMwogKwkJCQkgIC8qbGhzPSovTlVMTCwgLypwcmVjPSovMCk7CiArfQog KworKy8qIFNlZSBkZWZpbml0aW9uIGluIHN0YXAtcHJvYmUuaC4gICovCisrCiArdm9pZAogK3N0 YXBfY29tcGlsZV90b19heCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiArCQkgICAgY29uc3Qg c3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLApAQCAtMTAyODEsOCArOTA2NSw2IEBAIGluZGV4IDAw MDAwMDAuLmUyNTFiZDMKICsgIHN0YXBfY29tcGlsZV90b19heF8xIChvYmpmaWxlLCBwcm9iZSwg ZXhwciwgdmFsdWUsIG4pOwogK30KICsKLSsvKiBTZWUgZG9jdW1lbnRhdGlvbiBpbiBzdGFwLXBy b2JlLmguICAqLwotKwogK3N0cnVjdCB2YWx1ZSAqCiArc3RhcF9zYWZlX2V2YWx1YXRlX2F0X3Bj IChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGludCBuKQogK3sKQEAgLTEwMzA3LDQ3ICs5MDg5 LDIzIEBAIGluZGV4IDAwMDAwMDAuLmUyNTFiZDMKICsJCQkJCQkJCSAgbik7CiArfQogKwotK3Zv aWQKLStzdGFwX2ZyZWVfcGFyc2VkX2FyZ3MgKHN0cnVjdCBzdGFwX2FyZ3NfaW5mbyAqcGFyc2Vk X2FyZ3MpCi0rewotKyAgaWYgKCFwYXJzZWRfYXJncwotKyAgICAgIHx8IHBhcnNlZF9hcmdzID09 ICZkdW1teV9zdGFwX2FyZ3NfaW5mbwotKyAgICAgIHx8IHBhcnNlZF9hcmdzLT5uX2FyZ3MgPT0g MCkKLSsgICAgcmV0dXJuOwotKwotKyAgeGZyZWUgKHBhcnNlZF9hcmdzLT5hcmcpOwotKyAgeGZy ZWUgKHBhcnNlZF9hcmdzKTsKLSt9Ci0rCi0rLyogQSBoZWxwZXIgZnVuY3Rpb24gdG8gZXh0cmFj dCBhbiBhcmd1bWVudCBmcm9tICpBUkcuICBBbiBhcmd1bWVudCBpcwotKyAgIGRlbGltaXRlZCBi eSB3aGl0ZXNwYWNlLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgTlVMTCBpZiBubwotKyAg IGFyZ3VtZW50IHdhcyBmb3VuZCwgb3IgYW4geG1hbGxvYydkIHN0cmluZy4gICovCi0rCi0rc3Rh dGljIGNoYXIgKgotK2V4dHJhY3RfYXJnIChjaGFyICoqYXJnKQotK3sKLSsgIGNoYXIgKnJlc3Vs dCwgKmNvcHk7Ci0rCi0rICBpZiAoISphcmcpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgLyog RmluZCB0aGUgc3RhcnQgb2YgdGhlIGFyZ3VtZW50LiAgKi8KLSsgICphcmcgPSBza2lwX3NwYWNl cyAoKmFyZyk7Ci0rICBpZiAoISAqKmFyZykKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICByZXN1bHQg PSAqYXJnOworKy8qIFRoaXMgZnVuY3Rpb24gZnJlZXMgdGhlIHNwYWNlIGFsbG9jYXRlZCB0byBo b2xkIGluZm9ybWF0aW9uIGFib3V0CisrICAgdGhlIHByb2JlJ3MgcGFyc2VkIGFyZ3VtZW50cy4g ICovCiArCi0rICAvKiBGaW5kIHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50LiAgKi8KLSsgICphcmcg PSBza2lwX3RvX3NwYWNlICgqYXJnICsgMSk7Cisrdm9pZAorK3N0YXBfZnJlZV9wYXJzZWRfYXJn cyAoc3RydWN0IHN0YXBfYXJnc19pbmZvICpwYXJzZWRfYXJncykKKyt7CisrICBpbnQgaTsKICsK LSsgIGlmIChyZXN1bHQgPT0gKmFyZykKLSsgICAgcmV0dXJuIE5VTEw7CisrICBpZiAoIXBhcnNl ZF9hcmdzCisrICAgICAgfHwgcGFyc2VkX2FyZ3MgPT0gJmR1bW15X3N0YXBfYXJnc19pbmZvCisr ICAgICAgfHwgcGFyc2VkX2FyZ3MtPm5fYXJncyA9PSAwKQorKyAgICByZXR1cm47CiArCi0rICBj b3B5ID0geG1hbGxvYyAoKmFyZyAtIHJlc3VsdCArIDEpOwotKyAgbWVtY3B5IChjb3B5LCByZXN1 bHQsICphcmcgLSByZXN1bHQpOwotKyAgY29weVsqYXJnIC0gcmVzdWx0XSA9ICdcMCc7CisrICBm b3IgKGkgPSAwOyBpIDwgcGFyc2VkX2FyZ3MtPm5fYXJnczsgaSsrKQorKyAgICB4ZnJlZSAocGFy c2VkX2FyZ3MtPmFyZyk7CiArCi0rICByZXR1cm4gY29weTsKKysgIHhmcmVlIChwYXJzZWRfYXJn cyk7CiArfQogKwogKy8qIEEgdXRpbGl0eSBzdHJ1Y3R1cmUuICBBIFZFQyBvZiB0aGVzZSBpcyBi dWlsdCB3aGVuIGhhbmRsaW5nICJpbmZvCkBAIC0xMDU1MCw2ICs5MzA4LDggQEAgaW5kZXggMDAw MDAwMC4uZTI1MWJkMwogKwogKwwKICsKKysvKiBTZWUgZGVmaW5pdGlvbiBpbiBzdGFwLXByb2Jl LmguICAqLworKwogK2NvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICoKICtmaW5kX3Byb2JlX2luX29i amZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogKwkJICAgICAgIGNvbnN0IGNoYXIgKnBy b3ZpZGVyLApAQCAtMTA1NzYsOSArOTMzNiwxMCBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiAr ICByZXR1cm4gTlVMTDsKICt9CiArCisrLyogU2VlIGRlZmluaXRpb24gaW4gc3RhcC1wcm9iZS5o LiAgKi8KKysKICtzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMKLStwYXJzZV9zdGFwX3Byb2JlIChj aGFyICoqYXJncHRyLCBzdHJ1Y3QgbGluZXNwZWNfcmVzdWx0ICpjYW5vbmljYWwsCi0rCQkgIGlu dCAqbm90X2ZvdW5kX3B0cikKKytwYXJzZV9zdGFwX3Byb2JlIChjaGFyICoqYXJncHRyLCBzdHJ1 Y3QgbGluZXNwZWNfcmVzdWx0ICpjYW5vbmljYWwpCiArewogKyAgY2hhciAqZnVsbF9hcmcgPSBl eHRyYWN0X2FyZyAoYXJncHRyKTsKICsgIGNoYXIgKmFyZyA9IHhzdHJkdXAgKGZ1bGxfYXJnKTsK QEAgLTEwNjgzLDggKzk0NDQsNiBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArCiArICBpZiAo cmVzdWx0Lm5lbHRzID09IDApCiArICAgIHsKLSsgICAgICBpZiAobm90X2ZvdW5kX3B0cikKLSsJ Km5vdF9mb3VuZF9wdHIgPSAxOwogKyAgICAgIHRocm93X2Vycm9yIChOT1RfRk9VTkRfRVJST1Is CiArCQkgICBfKCJObyBwcm9iZSBtYXRjaGluZyBvYmpmaWxlPWAlcycsIHByb3ZpZGVyPWAlcycs IG5hbWU9YCVzJyIpLAogKwkJICAgb2JqZmlsZV9uYW1lID8gb2JqZmlsZV9uYW1lIDogXygiPGFu eT4iKSwKQEAgLTEwNzA1LDYgKzk0NjQsOCBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArCiAr DAogKworKy8qIFNlZSBkZWZpbml0aW9uIGluIHN0YXAtcHJvYmUuaC4gICovCisrCiArY29uc3Qg c3RydWN0IHN0YXBfcHJvYmUgKgogK2ZpbmRfcHJvYmVfYnlfcGMgKENPUkVfQUREUiBwYywgc3Ry dWN0IG9iamZpbGUgKipvYmpmaWxlX291dCkKICt7CkBAIC0xMDc0OSw3ICs5NTEwLDcgQEAgaW5k ZXggMDAwMDAwMC4uZTI1MWJkMwogKyAgaW50IG5fcHJvYmVzOwogKwogKyAgLyogU0VMPT0xMCBt ZWFucyAiX3Byb2JlX2FyZ2MiLiAgKi8KLSsgIGdkYl9hc3NlcnQgKHNlbCA+PSAwICYmIHNlbCA8 PSAxMCk7CisrICBnZGJfYXNzZXJ0IChzZWwgPj0gMCAmJiBzZWwgPD0gU1RBUF9NQVhfQVJHUyk7 CiArCiArICBwY19wcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKHBjLCAmb2JqZmlsZSk7CiArICBp ZiAocGNfcHJvYmUgPT0gTlVMTCkKQEAgLTEwNzYxLDcgKzk1MjIsNiBAQCBpbmRleCAwMDAwMDAw Li5lMjUxYmQzCiArICBpZiAoc2VsID09IDEwKQogKyAgICByZXR1cm4gdmFsdWVfZnJvbV9sb25n ZXN0IChidWlsdGluX3R5cGUgKGFyY2gpLT5idWlsdGluX2ludCwgbl9wcm9iZXMpOwogKwotKyAg Z2RiX2Fzc2VydCAoc2VsID49IDApOwogKyAgaWYgKHNlbCA+PSBuX3Byb2JlcykKICsgICAgZXJy b3IgKF8oIkludmFsaWQgcHJvYmUgYXJndW1lbnQgJWQgLS0gcHJvYmUgaGFzICVkIGFyZ3VtZW50 cyBhdmFpbGFibGUiKSwKICsJICAgc2VsLCBuX3Byb2Jlcyk7CkBAIC0xMDgxMyw2ICs5NTczLDgg QEAgaW5kZXggMDAwMDAwMC4uZTI1MWJkMwogKwogKwwKICsKKysvKiBJbXBsZW1lbnRhdGlvbiBv ZiBgJF9wcm9iZV9hcmcqJyBzZXQgb2YgdmFyaWFibGVzLiAgKi8KKysKICtzdGF0aWMgY29uc3Qg c3RydWN0IGludGVybmFsdmFyX2Z1bmNzIHByb2JlX2Z1bmNzID0KICt7CiArICBjb21wdXRlX3By b2JlX2FyZywKQEAgLTEwODU2LDExICs5NjE4LDExIEBAIGluZGV4IDAwMDAwMDAuLmUyNTFiZDMK ICt9CiBkaWZmIC0tZ2l0IGEvZ2RiL3N0YXAtcHJvYmUuaCBiL2dkYi9zdGFwLXByb2JlLmgKIG5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kNzAwYjE5CitpbmRleCAwMDAwMDAw Li4zOTFkOTZmCiAtLS0gL2Rldi9udWxsCiArKysgYi9nZGIvc3RhcC1wcm9iZS5oCi1AQCAtMCww ICsxLDExMyBAQAotKy8qIFN5c3RlbXRhcCBwcm9iZSBzdXBwb3J0IGZvciBHREIuCitAQCAtMCww ICsxLDEwOSBAQAorKy8qIFN5c3RlbVRhcCBwcm9iZSBzdXBwb3J0IGZvciBHREIuCiArCiArICAg Q29weXJpZ2h0IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAt MTA4ODYsNiArOTY0OCw4IEBAIGluZGV4IDAwMDAwMDAuLmQ3MDBiMTkKICtzdHJ1Y3QgYXhzX3Zh bHVlOwogK3N0cnVjdCBsaW5lc3BlY19yZXN1bHQ7CiArCisrLyogTWFpbiBzdHJ1Y3R1cmUgd2hp Y2ggaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgYSBTeXN0ZW1UYXAgcHJvYmUuICAqLworKwogK3N0 cnVjdCBzdGFwX3Byb2JlCiArewogKyAgLyogVGhlIHByb3ZpZGVyIG9mIHRoaXMgcHJvYmUuICAq LwpAQCAtMTA5MTcsOCArOTY4MSw3IEBAIGluZGV4IDAwMDAwMDAuLmQ3MDBiMTkKICsgICBlcnJv ci4gICovCiArCiArZXh0ZXJuIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBwYXJzZV9zdGFwX3By b2JlIChjaGFyICoqYXJncHRyLAotKwkJCQkJCSAgc3RydWN0IGxpbmVzcGVjX3Jlc3VsdCAqY2Fu b24sCi0rCQkJCQkJICBpbnQgKm5vdF9mb3VuZF9wdHIpOworKwkJCQkJCSAgc3RydWN0IGxpbmVz cGVjX3Jlc3VsdCAqY2Fub24pOwogKwogKy8qIFNlYXJjaCBPQkpGSUxFIGZvciBhIHByb2JlIHdp dGggdGhlIGdpdmVuIFBST1ZJREVSIGFuZCBOQU1FLiAgSWYgYQogKyAgIHByb2JlIGlzIGZvdW5k LCByZXR1cm4gaXQuICBJZiBubyBwcm9iZSBpcyBmb3VuZCwgcmV0dXJuIE5VTEwuICAqLwpAQCAt MTA5MzQsMTEgKzk2OTcsNiBAQCBpbmRleCAwMDAwMDAwLi5kNzAwYjE5CiArZXh0ZXJuIGNvbnN0 IHN0cnVjdCBzdGFwX3Byb2JlICpmaW5kX3Byb2JlX2J5X3BjIChDT1JFX0FERFIgcGMsCiArCQkJ CQkJICBzdHJ1Y3Qgb2JqZmlsZSAqKm9iamZpbGVfb3V0KTsKICsKLSsvKiBHaXZlbiBQUk9CRSwg dGhpcyBmdW5jdGlvbiB3aWxsIHBhcnNlIGl0cyBhcmd1bWVudHMgYW5kIGZpbGwgdGhlCi0rICAg YHN0cnVjdCBzdGFwX2FyZ3NfaW5mbycgd2l0aCBwcm9wZXIgaW5mb3JtYXRpb24gYWJvdXQgdGhl bS4gICovCi0rCi0rZXh0ZXJuIHZvaWQgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHN0cnVj dCBzdGFwX3Byb2JlICpwcm9iZSk7Ci0rCiArLyogR2l2ZW4gUFJPQkUsIHJldHVybnMgdGhlIG51 bWJlciBvZiBhcmd1bWVudHMgcHJlc2VudCBpbiB0aGF0IHByb2JlJ3MKICsgICBhcmd1bWVudCBz dHJpbmcuICAqLwogKwpAQCAtMTEwNTMsMjIgKzk4MTEsOCBAQCBpbmRleCBhMDE1MWVhLi43NTJj NDZhIDEwMDY0NAogICAgLyogVGhlICJxdWljayIgKGFrYSBwYXJ0aWFsKSBzeW1ib2wgZnVuY3Rp b25zIGZvciB0aGlzIHN5bWJvbAogICAgICAgcmVhZGVyLiAgKi8KICAgIGNvbnN0IHN0cnVjdCBx dWlja19zeW1ib2xfZnVuY3Rpb25zICpxZjsKLWRpZmYgLS1naXQgYS9nZGIvc3ltbWlzYy5jIGIv Z2RiL3N5bW1pc2MuYwotaW5kZXggNzRlNDk0MS4uNjZjMmYwNSAxMDA2NDQKLS0tLSBhL2dkYi9z eW1taXNjLmMKLSsrKyBiL2dkYi9zeW1taXNjLmMKLUBAIC0yNjUsNiArMjY1LDkgQEAgZHVtcF9t c3ltYm9scyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCB1aV9maWxlICpvdXRmaWxl KQotIAljYXNlIG1zdF90ZXh0OgotIAkgIG1zX3R5cGUgPSAnVCc7Ci0gCSAgYnJlYWs7Ci0rCWNh c2UgbXN0X3RleHRfZ251X2lmdW5jOgotKwkgIG1zX3R5cGUgPSAnaSc7Ci0rCSAgYnJlYWs7Ci0g CWNhc2UgbXN0X3NvbGliX3RyYW1wb2xpbmU6Ci0gCSAgbXNfdHlwZSA9ICdTJzsKLSAJICBicmVh azsKIGRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKLWluZGV4IDMwNjFm M2MuLjBiY2JiZjcgMTAwNjQ0CitpbmRleCA4YWE2OTJkLi4wYmNiYmY3IDEwMDY0NAogLS0tIGEv Z2RiL3N5bXRhYi5jCiArKysgYi9nZGIvc3ltdGFiLmMKIEBAIC03NzAsNiArNzcwLDcgQEAgaW5p dF9zYWwgKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbCkKQEAgLTExMDc5LDc4ICs5ODIzLDEx IEBAIGluZGV4IDMwNjFmM2MuLjBiY2JiZjcgMTAwNjQ0CiAgfQogIAwKICAKLUBAIC0zMDA2LDcg KzMwMDcsNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51bSBraW5k LCBpbnQgbmZpbGVzLCBjaGFyICpmaWxlc1tdLAotICAgc3RhdGljIGNvbnN0IGVudW0gbWluaW1h bF9zeW1ib2xfdHlwZSB0eXBlczNbXQotICAgICA9IHttc3RfZmlsZV9kYXRhLCBtc3Rfc29saWJf dHJhbXBvbGluZSwgbXN0X2FicywgbXN0X3Vua25vd259OwotICAgc3RhdGljIGNvbnN0IGVudW0g bWluaW1hbF9zeW1ib2xfdHlwZSB0eXBlczRbXQotLSAgICA9IHttc3RfZmlsZV9ic3MsIG1zdF90 ZXh0LCBtc3RfYWJzLCBtc3RfdW5rbm93bn07Ci0rICAgID0ge21zdF9maWxlX2JzcywgbXN0X3Rl eHRfZ251X2lmdW5jLCBtc3RfYWJzLCBtc3RfdW5rbm93bn07Ci0gICBlbnVtIG1pbmltYWxfc3lt Ym9sX3R5cGUgb3VydHlwZTsKLSAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBlMjsK LSAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBlMzsKIGRpZmYgLS1naXQgYS9nZGIv c3ltdGFiLmggYi9nZGIvc3ltdGFiLmgKLWluZGV4IGU5NDZjNjUuLjYyMzlmN2YgMTAwNjQ0Citp bmRleCBhYmU1ZTg2Li42MjM5ZjdmIDEwMDY0NAogLS0tIGEvZ2RiL3N5bXRhYi5oCiArKysgYi9n ZGIvc3ltdGFiLmgKLUBAIC0yOTAsNiArMjkwLDkgQEAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBl Ci0gewotICAgbXN0X3Vua25vd24gPSAwLAkJLyogVW5rbm93biB0eXBlLCB0aGUgZGVmYXVsdCAq LwotICAgbXN0X3RleHQsCQkJLyogR2VuZXJhbGx5IGV4ZWN1dGFibGUgaW5zdHJ1Y3Rpb25zICov Ci0rICBtc3RfdGV4dF9nbnVfaWZ1bmMsCQkvKiBFeGVjdXRhYmxlIGNvZGUgcmV0dXJuaW5nIGFk ZHJlc3MKLSsJCQkJICAgb2YgZXhlY3V0YWJsZSBjb2RlICovCi0rICBtc3Rfc2xvdF9nb3RfcGx0 LAkJLyogR09UIGVudHJpZXMgZm9yIC5wbHQgc2VjdGlvbnMgKi8KLSAgIG1zdF9kYXRhLAkJCS8q IEdlbmVyYWxseSBpbml0aWFsaXplZCBkYXRhICovCi0gICBtc3RfYnNzLAkJCS8qIEdlbmVyYWxs eSB1bmluaXRpYWxpemVkIGRhdGEgKi8KLSAgIG1zdF9hYnMsCQkJLyogR2VuZXJhbGx5IGFic29s dXRlIChub25yZWxvY2F0YWJsZSkgKi8KLUBAIC05NTMsNiArOTU2LDExIEBAIGV4dGVybiBzdHJ1 Y3Qgc3ltYm9sICpmaW5kX3BjX2Z1bmN0aW9uIChDT1JFX0FERFIpOwotIAotIGV4dGVybiBzdHJ1 Y3Qgc3ltYm9sICpmaW5kX3BjX3NlY3RfZnVuY3Rpb24gKENPUkVfQUREUiwgc3RydWN0IG9ial9z ZWN0aW9uICopOwotIAotK2V4dGVybiBpbnQgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uX2dudV9p ZnVuYyAoQ09SRV9BRERSIHBjLCBjaGFyICoqbmFtZSwKLSsJCQkJCSAgICAgICBDT1JFX0FERFIg KmFkZHJlc3MsCi0rCQkJCQkgICAgICAgQ09SRV9BRERSICplbmRhZGRyLAotKwkJCQkJICAgICAg IGludCAqaXNfZ251X2lmdW5jX3ApOwotKwotIC8qIGxvb2t1cCBmdW5jdGlvbiBmcm9tIGFkZHJl c3MsIHJldHVybiBuYW1lLCBzdGFydCBhZGRyIGFuZCBlbmQgYWRkci4gICovCi0gCi0gZXh0ZXJu IGludCBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKENPUkVfQUREUiwgY2hhciAqKiwgQ09SRV9B RERSICosCi1AQCAtMTAzNCw2ICsxMDQyLDM1IEBAIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1i b2wgKmxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wY19uYW1lCi0gCi0gZXh0ZXJuIHN0cnVjdCBt aW5pbWFsX3N5bWJvbCAqbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIpOwot IAotK2V4dGVybiBpbnQgaW5fZ251X2lmdW5jX3N0dWIgKENPUkVfQUREUiBwYyk7Ci0rCi0rLyog RnVuY3Rpb25zIGZvciByZXNvbHZpbmcgU1RUX0dOVV9JRlVOQyBzeW1ib2xzIHdoaWNoIGFyZSBp bXBsZW1lbnRlZCBvbmx5Ci0rICAgZm9yIEVMRiBzeW1ib2wgZmlsZXMuICAqLwotKwotK3N0cnVj dCBnbnVfaWZ1bmNfZm5zCi0rewotKyAgLyogU2VlIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZV9hZGRy IGZvciBpdHMgcmVhbCBpbXBsZW1lbnRhdGlvbi4gICovCi0rICBDT1JFX0FERFIgKCpnbnVfaWZ1 bmNfcmVzb2x2ZV9hZGRyKSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYyk7 Ci0rCi0rICAvKiBTZWUgZWxmX2dudV9pZnVuY19yZXNvbHZlX25hbWUgZm9yIGl0cyByZWFsIGlt cGxlbWVudGF0aW9uLiAgKi8KLSsgIGludCAoKmdudV9pZnVuY19yZXNvbHZlX25hbWUpIChjb25z dCBjaGFyICpmdW5jdGlvbl9uYW1lLAotKwkJCQkgQ09SRV9BRERSICpmdW5jdGlvbl9hZGRyZXNz X3ApOwotKwotKyAgLyogU2VlIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCBmb3IgaXRzIHJl YWwgaW1wbGVtZW50YXRpb24uICAqLwotKyAgdm9pZCAoKmdudV9pZnVuY19yZXNvbHZlcl9zdG9w KSAoc3RydWN0IGJyZWFrcG9pbnQgKmIpOwotKwotKyAgLyogU2VlIGVsZl9nbnVfaWZ1bmNfcmVz b2x2ZXJfcmV0dXJuX3N0b3AgZm9yIGl0cyByZWFsIGltcGxlbWVudGF0aW9uLiAgKi8KLSsgIHZv aWQgKCpnbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuX3N0b3ApIChzdHJ1Y3QgYnJlYWtwb2ludCAq Yik7Ci0rfTsKLSsKLSsjZGVmaW5lIGdudV9pZnVuY19yZXNvbHZlX2FkZHIgZ251X2lmdW5jX2Zu c19wLT5nbnVfaWZ1bmNfcmVzb2x2ZV9hZGRyCi0rI2RlZmluZSBnbnVfaWZ1bmNfcmVzb2x2ZV9u YW1lIGdudV9pZnVuY19mbnNfcC0+Z251X2lmdW5jX3Jlc29sdmVfbmFtZQotKyNkZWZpbmUgZ251 X2lmdW5jX3Jlc29sdmVyX3N0b3AgZ251X2lmdW5jX2Zuc19wLT5nbnVfaWZ1bmNfcmVzb2x2ZXJf c3RvcAotKyNkZWZpbmUgZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIFwKLSsgIGdudV9p ZnVuY19mbnNfcC0+Z251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wCi0rCi0rZXh0ZXJuIGNv bnN0IHN0cnVjdCBnbnVfaWZ1bmNfZm5zICpnbnVfaWZ1bmNfZm5zX3A7Ci0rCi0gZXh0ZXJuIHN0 cnVjdCBtaW5pbWFsX3N5bWJvbCAqCi0gICAgIGxvb2t1cF9taW5pbWFsX3N5bWJvbF9hbmRfb2Jq ZmlsZSAoY29uc3QgY2hhciAqLAotIAkJCQkgICAgICAgc3RydWN0IG9iamZpbGUgKiopOwotQEAg LTEwNzIsNiArMTEwOSwxMCBAQCBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lCitAQCAtMTEwOSw2ICsx MTA5LDEwIEBAIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUKICAgIENPUkVfQUREUiBlbmQ7CiAgICBp bnQgZXhwbGljaXRfcGM7CiAgICBpbnQgZXhwbGljaXRfbGluZTsKQEAgLTEyMzgzLDI2NCArMTEw NjAsNiBAQCBpbmRleCBkNThjNTE5Li5hYmIxYjA1IDEwMDY0NAogICAgICB9CiAgCiAgI3Rlc3Qg c2hvdyBkaXJlY3RvcmllcwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251 LWlmdW5jLWxpYi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtbGliLmMKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kYzY3MTBlCi0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy1saWIuYwotQEAgLTAsMCAr MSwzMyBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdn ZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LwotKwotK2V4dGVybiB2b2xhdGlsZSBpbnQgZ251X2lmdW5jX2luaXRpYWxpemVkOwotK2V4dGVy biBpbnQgaW5pdF9zdHViIChpbnQgYXJnKTsKLStleHRlcm4gaW50IGZpbmFsIChpbnQgYXJnKTsK LSsKLSt0eXBlZGVmIGludCAoKmZpbmFsX3QpIChpbnQgYXJnKTsKLSsKLSthc20gKCIudHlwZSBn bnVfaWZ1bmMsIEBnbnVfaW5kaXJlY3RfZnVuY3Rpb24iKTsKLSsKLStmaW5hbF90Ci0rZ251X2lm dW5jICh2b2lkKQotK3sKLSsgIGlmICghIGdudV9pZnVuY19pbml0aWFsaXplZCkKLSsgICAgcmV0 dXJuIGluaXRfc3R1YjsKLSsgIGVsc2UKLSsgICAgcmV0dXJuIGZpbmFsOwotK30KLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5jIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9nbnUtaWZ1bmMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAu LjBlZTc0MWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251 LWlmdW5jLmMKLUBAIC0wLDAgKzEsNjEgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2Yg R0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5LCAyMDEwLCAyMDEx IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rCi0raW50Ci0r aW5pdF9zdHViIChpbnQgYXJnKQotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLStpbnQKLStmaW5h bCAoaW50IGFyZykKLSt7Ci0rICByZXR1cm4gYXJnICsgMTsKLSt9Ci0rCi0rLyogTWFrZSBkaWZm ZXJlbnRpYXRpb24gb2YgaG93IHRoZSBnbnVfaWZ1bmMgY2FsbCByZXNvbHZlcyBiZWZvcmUgYW5k IGFmdGVyCi0rICAgY2FsbGluZyBnbnVfaWZ1bmNfcHJlLiAgVGhpcyBlbnN1cmVzIHRoZSByZXNv bHZlZCBmdW5jdGlvbiBhZGRyZXNzIGlzIG5vdAotKyAgIGJlaW5nIGNhY2hlZCBhbnl3aGVyZSBm b3IgdGhlIGRlYnVnZ2luZyBwdXJwb3Nlcy4gICovCi0rCi0rdm9sYXRpbGUgaW50IGdudV9pZnVu Y19pbml0aWFsaXplZDsKLSsKLStzdGF0aWMgdm9pZAotK2dudV9pZnVuY19wcmUgKHZvaWQpCi0r ewotKyAgYXNzZXJ0ICghZ251X2lmdW5jX2luaXRpYWxpemVkKTsKLSsKLSsgIGdudV9pZnVuY19p bml0aWFsaXplZCA9IDE7Ci0rfQotKwotK2V4dGVybiBpbnQgZ251X2lmdW5jIChpbnQgYXJnKTsK LSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIGludCBpOwotKwotKyAgZ251X2lmdW5jX3By ZSAoKTsKLSsgIAotKyAgaSA9IGdudV9pZnVuYyAoMSk7CS8qIGJyZWFrLWF0LWNhbGwgKi8KLSsg IGFzc2VydCAoaSA9PSAyKTsKLSsKLSsgIGdudV9pZnVuYyAoMik7CS8qIGJyZWFrLWF0LW5leHRj YWxsICovCi0rCi0rICByZXR1cm4gMDsJLyogYnJlYWstYXQtZXhpdCAqLwotK30KLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2dudS1pZnVuYy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwLi40ZmNjM2JmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2dudS1pZnVuYy5leHAKLUBAIC0wLDAgKzEsMTQ2IEBACi0rIyBDb3B5cmlnaHQgKEMpIDIwMDks IDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgotKwotK2lmIHtbc2tpcF9zaGxpYl90ZXN0c119IHsKLSsgICAg cmV0dXJuIDAKLSt9Ci0rCi0rc2V0IHRlc3RmaWxlICJnbnUtaWZ1bmMiCi0rc2V0IGV4ZWN1dGFi bGUgJHt0ZXN0ZmlsZX0KLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUg JHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1dGFibGV9Ci0rc2V0IHN0YXRpY2V4ZWN1dGFibGUg JHtleGVjdXRhYmxlfS1zdGF0aWMKLStzZXQgc3RhdGljYmluZmlsZSAke29iamRpcn0vJHtzdWJk aXJ9LyR7c3RhdGljZXhlY3V0YWJsZX0KLSsKLStzZXQgbGliZmlsZSAiJHt0ZXN0ZmlsZX0tbGli IgotK3NldCBsaWJzcmMgJHtsaWJmaWxlfS5jCi0rc2V0IGxpYl9zbyAke29iamRpcn0vJHtzdWJk aXJ9LyR7bGliZmlsZX0uc28KLSsjICRsaWJfbyBtdXN0IG5vdCBoYXZlIHtkZWJ1Z30sIGl0IHdv dWxkIG92ZXJyaWRlIHRoZSBTVFRfR05VX0lGVU5DIEVMRiBtYXJrZXJzLgotK3NldCBsaWJfbyAk e29iamRpcn0vJHtzdWJkaXJ9LyR7bGliZmlsZX0ubwotKwotKyMgV2UgbmVlZCBEV0FSRiBmb3Ig dGhlICJmaW5hbCIgZnVuY3Rpb24gYXMgd2UgInN0ZXAiIGludG8gdGhlIGZ1bmN0aW9uIGFuZCBH REIKLSsjIHdvdWxkIHN0ZXAtb3ZlciB0aGUgImZpbmFsIiBmdW5jdGlvbiBpZiB0aGVyZSB3b3Vs ZCBiZSBubyBsaW5lIG51bWJlciBkZWJ1ZwotKyMgaW5mb3JtYXRpb24gKERXQVJGKSBhdmFpbGFi bGUuCi0rIwotKyMgV2UgbXVzdCBub3QgaGF2ZSBEV0FSRiBmb3IgdGhlICJnbnVfaWZ1bmMiIGZ1 bmN0aW9uIGFzIERXQVJGIGhhcyBubyB3YXkgdG8KLSsjIGV4cHJlc3MgdGhlIFNUVF9HTlVfSUZV TkMgdHlwZSBhbmQgaXQgd291bGQgYmUgY29uc2lkZXJlZCBhcyBhIHJlZ3VsYXIKLSsjIGZ1bmN0 aW9uIGR1ZSB0byBEV0FSRiBieSBHREIuICBJbiBFTEYgZ251LWlmdW5jIGlzIGV4cHJlc3NlZCBi eSB0aGUKLSsjIFNUVF9HTlVfSUZVTkMgdHlwZS4KLSsjCi0rIyBCb3RoIGZ1bmN0aW9ucyBuZWVk IHRvIGJlIGluIHRoZSBzYW1lIHNoYXJlZCBsaWJyYXJ5IGZpbGUgYnV0Ci0rIyBnZGJfY29tcGls ZV9zaGxpYiBoYXMgbm8gd2F5IHRvIHNwZWNpZnkgc291cmNlLXNwZWNpZmljIGNvbXBpbGF0aW9u IG9wdGlvbnMuCi0rIwotKyMgVGhlcmVmb3JlICRsaWJmaWxlIGNvbnRhaW5zIG9ubHkgdGhlIFNU VF9HTlVfSUZVTkMgZnVuY3Rpb24gd2l0aCBubyBEV0FSRgotKyMgcmVmZXJlbmNpbmcgYWxsIHRo ZSBvdGhlciBwYXJ0cyBmcm9tIHRoZSBtYWluIGV4ZWN1dGFibGUgd2l0aCBEV0FSRi4KLSsKLStz ZXQgbGliX29wdHMge30KLStzZXQgZXhlY19vcHRzIFtsaXN0IGRlYnVnIHNobGliPSRsaWJfc29d Ci0rCi0raWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsKLSsgICAgcmV0dXJuIC0x Ci0rfQotKwotK2lmIHsgW2dkYl9jb21waWxlX3NobGliICR7c3JjZGlyfS8ke3N1YmRpcn0vJGxp YnNyYyAkbGliX3NvICRsaWJfb3B0c10gIT0gIiIKLSsgICAgIHx8IFtnZGJfY29tcGlsZSAke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyRzcmNmaWxlICRiaW5maWxlIGV4ZWN1dGFibGUgJGV4ZWNfb3B0c10g IT0gIiJ9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlIGR5bmFtaWMgZXhlY3V0 YWJsZSAkYmluZmlsZS4iCi0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIFN0YXJ0IHdpdGggYSBm cmVzaCBnZGIuCi0rCi0rY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQotK2dkYl9sb2FkX3NobGli cyAke2xpYl9zb30KLSsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAgICBmYWlsICJDYW4n dCBydW4gdG8gbWFpbiIKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotKyMgVGhlICJpZiIgY29uZGl0 aW9uIGlzIGFydGlmaWNhbCB0byB0ZXN0IHJlZ3Jlc3Npb24gb2YgYSBmb3JtZXIgcGF0Y2guCi0r Z2RiX2JyZWFrcG9pbnQgIltnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1hdC1uZXh0Y2FsbCJd IGlmIGkgJiYgZ251X2lmdW5jIChpKSAhPSA0MiIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAiYnJlYWstYXQtY2FsbCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImJyZWFrLWF0LWNhbGwiICIuKmJyZWFrLWF0LWNhbGwuKiIKLSsKLSsjIFRlc3QgR0RCIHdp bGwgYXV0b21hdGljYWxseSBpbmRpcmVjdCB0aGUgY2FsbC4KLSsKLStnZGJfdGVzdCAicCBnbnVf aWZ1bmMgKDMpIiAiID0gNCIKLSsKLSsjIFRlc3QgR0RCIHdpbGwgc2tpcCB0aGUgZ251X2lmdW5j IHJlc29sdmVyIG9uIGZpcnN0IGNhbGwuCi0rCi0rZ2RiX3Rlc3QgInN0ZXAiICJcclxuZmluYWwg LioiCi0rCi0rIyBUZXN0IEdEQiB3aWxsIG5vdCBicmVhayBiZWZvcmUgdGhlIGZpbmFsIGNob3Nl biBpbXBsZW1lbnRhdGlvbi4KLSsKLSsjIEFsc28gdGVzdCBhIGZvcm1lciBwYXRjaCByZWdyZXNz aW9uOgotKyMgQ29udGludWluZy4KLSsjIEVycm9yIGluIHRlc3RpbmcgYnJlYWtwb2ludCBjb25k aXRpb246Ci0rIyBBdHRlbXB0IHRvIHRha2UgYWRkcmVzcyBvZiB2YWx1ZSBub3QgbG9jYXRlZCBp biBtZW1vcnkuCi0rIyAKLSsjIEJyZWFrcG9pbnQgMiwgbWFpbiAoKSBhdCAuL2dkYi5iYXNlL2du dS1pZnVuYy5jOjMzCi0rCi0rZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQ29udGludWluZy5cclxuXHJc bkJyZWFrcG9pbnQgLiogKGF0fGluKSAuKmJyZWFrLWF0LW5leHRjYWxsLioiIFwKLSsJICJjb250 aW51ZSB0byBicmVhay1hdC1uZXh0Y2FsbCIKLSsKLStnZGJfYnJlYWtwb2ludCAiZ251X2lmdW5j IgotKwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJuZXh0Y2FsbCBnbnVfaWZ1bmMiCi0r Ci0rZ2RiX3Rlc3QgImZyYW1lIiAiIzAgKygweFxbMC05YS1mXF0rIGluICspP2ZpbmFsIFxcKC4q IiAibmV4dGNhbGwgZ251X2lmdW5jIHNraXBwZWQiCi0rCi0rCi0rIyBDaGVjayBhbnkgY29tbWFu ZHMgbm90IGRvaW5nIGFuIGluZmVyaW9yIGNhbGwgYWNjZXNzIHRoZSBhZGRyZXNzIG9mIHRoZQot KyMgU1RUX0dOVV9JRlVOQyByZXNvbHZlciwgbm90IHRoZSB0YXJnZXQgZnVuY3Rpb24uCi0rCi0r aWYge1tpc3RhcmdldCBwb3dlcnBjNjQtKl0gJiYgW2lzX2xwNjRfdGFyZ2V0XX0gewotKyAgICAj IFdpdGggb25seSBtaW5pbWFsIHN5bWJvbHMgR0RCIHByb3ZpZGVzIHRoZSBmdW5jdGlvbiBkZXNj cmlwdG9ycy4gIFdpdGgKLSsgICAgIyBmdWxsIGRlYnVnIGluZm8gdGhlIGZ1bmN0aW9uIGNvZGUg d291bGQgYmUgZGlzcGxheWVkLgotKyAgICBzZXQgZnVuY19wcmVmaXgge1wufQotK30gZWxzZSB7 Ci0rICAgIHNldCBmdW5jX3ByZWZpeCB7fQotK30KLSsKLStnZGJfdGVzdCAicCBnbnVfaWZ1bmMi ICIgPSB7PHRleHQgZ251LWluZGlyZWN0LWZ1bmN0aW9uIHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZv Pn0gMHhcWzAtOWEtZlxdKyA8JHtmdW5jX3ByZWZpeH1nbnVfaWZ1bmM+IiAicCBnbnVfaWZ1bmMg ZXhlY3V0aW5nIgotK2dkYl90ZXN0ICJpbmZvIHN5bSBnbnVfaWZ1bmMiICJnbnVfaWZ1bmMgaW4g c2VjdGlvbiAuKiIgImluZm8gc3ltIGdudV9pZnVuYyBleGVjdXRpbmciCi0rCi0rc2V0IHRlc3Qg ImluZm8gYWRkciBnbnVfaWZ1bmMiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3Qgewot KyAgICAtcmUgIlN5bWJvbCBcImdudV9pZnVuY1wiIGlzIGF0ICgweFxbMC05YS1mXF0rKSBpbiAu KiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotK2dkYl90ZXN0ICJp bmZvIHN5bSAkZXhwZWN0X291dCgxLHN0cmluZykiICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIg ImluZm8gc3ltIDxnbnVfaWZ1bmMtYWRkcmVzcz4iCi0rCi0rCi0rIyBUZXN0IHN0YXRpY2FsbHkg bGlua2VkIGlmdW5jIHJlc29sdmluZyBkdXJpbmcgaW5mZXJpb3Igc3RhcnQuCi0rIyBodHRwczov L2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTYyNDk2NwotKwotK2lmICFbdGFy Z2V0X2luZm8gZXhpc3RzIGdkYl9zdHViXSB7Ci0rCi0rICAgICMgQ29tcGlsZSAkc3RhdGljYmlu ZmlsZSBzZXBhcmF0ZWx5IGFzIGl0IG1heSBleGl0IG9uIGVycm9yIChsZC8xMjU5NSkuCi0rCi0r ICAgIGlmIHsgW2dkYl9jb21waWxlICR7c3JjZGlyfS8ke3N1YmRpcn0vJGxpYnNyYyAkbGliX28g b2JqZWN0IHt9XSAhPSAiIgotKwkgfHwgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9 LyRzcmNmaWxlICRsaWJfbyIgJHN0YXRpY2JpbmZpbGUgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAi IiB9IHsKLSsJdW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlIHN0YXRpYyBleGVjdXRhYmxlICRz dGF0aWNiaW5maWxlLiIKLSsJcmV0dXJuIC0xCi0rICAgIH0KLSsKLSsgICAgY2xlYW5fcmVzdGFy dCAkc3RhdGljZXhlY3V0YWJsZQotKwotKyAgICBnZGJfYnJlYWtwb2ludCAiZ251X2lmdW5jIgot KyAgICBnZGJfYnJlYWtwb2ludCAibWFpbiIKLSsgICAgZ2RiX3J1bl9jbWQKLSsgICAgZ2RiX3Rl c3QgIiIgIkJyZWFrcG9pbnQgXFswLTlcXSosIG1haW4gLioiICJzdGF0aWMgZ251X2lmdW5jIgot K30KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVs ZC1hZGRyZXNzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1h ZGRyZXNzLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi5lZWI3Yjg1CkBA IC0xMzEzMiw4OSArMTE1NTEsNiBAQCBpbmRleCAwMDAwMDAwLi41ZGE3Mzc4CiArZ2RiX3Rlc3Qg InAgdGVtcDEiICIgPSAnMScgPHJlcGVhdHMgNzggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1w MSIKICtnZGJfdGVzdCAicCB0ZW1wMiIgIiA9ICcyJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNv bmQ6IHByaW50IHRlbXAyIgogK2dkYl90ZXN0ICJwIHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4 IHRpbWVzPiIgInNlY29uZDogcHJpbnQgdGVtcDMiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93 YXRjaHBvaW50LWRlbGV0ZS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4u MjBjOTkyOQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRj aHBvaW50LWRlbGV0ZS5jCi1AQCAtMCwwICsxLDMzIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBw YXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMCwgMjAx MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rdm9pZAotK2Z1bmMgKHZvaWQpCi0rewotKyAgdm9s YXRpbGUgaW50IHggPSAwOwotKwotKyAgeCsrOwkvKiBicmVhay1oZXJlICovCi0rICB4Kys7Ci0r fQotKwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAgZnVuYyAoKTsKLSsKLSsgIHJldHVybiAw OwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtZGVs ZXRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxldGUuZXhwCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uN2FhZGY0ZQotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5leHAKLUBA IC0wLDAgKzEsMzggQEAKLSsjIENvcHlyaWdodCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQg dGVzdGZpbGUgIndhdGNocG9pbnQtZGVsZXRlIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMK LStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYgeyBb cHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxl fV0gfSB7Ci0rICAgIHVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0rIyBJdCBpcyBtb3JlIGNvbXBhdGlibGUgdGhpcyB3YXkuCi0rZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgY2FuLXVzZS1ody13YXRjaHBvaW50cyAwIgotKwotK2lmICFbcnVudG9fbWFpbl0g ewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBFbnN1cmUgdGhlcmUgaXMgYSBwYXJlbnQgZnJh bWUgdG8gY3JlYXRlIHJlbGF0ZWQgYnBfd2F0Y2hwb2ludF9zY29wZS4KLStnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstaGVyZSJdCi0rZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgImJyZWFrLWhlcmUiICIuKiBicmVhay1oZXJlIC4qIgotKwotK2dkYl90ZXN0ICJ3 YXRjaCB4IiB7V2F0Y2hwb2ludCBbMC05XSs6IHh9Ci0rCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtk ZWxldGUgJGJwbnVtfQogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25leHRvdmVy dGhyb3cuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmV4dG92ZXJ0aHJvdy5leHAKIGluZGV4 IDg5YzAyZDYuLmE5NzBiYjkgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0 b3ZlcnRocm93LmV4cApAQCAtMTYwNDMsNyArMTQzNzksNyBAQCBpbmRleCA4OTFkYTM3Li4yMzZj NWNhIDEwMDY0NAogICAgICBzZXQgcGFzY2FsX2luaXRfZG9uZSAxCiAgfSAgIAogZGlmZiAtLWdp dCBhL2dkYi90aHJlYWQuYyBiL2dkYi90aHJlYWQuYwotaW5kZXggNmFkMTgwNy4uOTFmZTA1NiAx MDA2NDQKK2luZGV4IDZhZDE4MDcuLmFlZjlkY2UgMTAwNjQ0CiAtLS0gYS9nZGIvdGhyZWFkLmMK ICsrKyBiL2dkYi90aHJlYWQuYwogQEAgLTE0MzgsNyArMTQzOCw4IEBAIHVwZGF0ZV90aHJlYWRf bGlzdCAodm9pZCkKQEAgLTE2MDU2LDEwICsxNDM5MiwxMiBAQCBpbmRleCA2YWQxODA3Li45MWZl MDU2IDEwMDY0NAogIHsKICAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBmaW5kX3RocmVhZF9w dGlkIChpbmZlcmlvcl9wdGlkKTsKICAKLUBAIC0xNDQ5LDYgKzE0NTAsMTMgQEAgdGhyZWFkX2lk X21ha2VfdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2YXIg KnZhcikKK0BAIC0xNDQ5LDYgKzE0NTAsMTUgQEAgdGhyZWFkX2lkX21ha2VfdmFsdWUgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhcikKICAvKiBDb21tYW5k cyB3aXRoIGEgcHJlZml4IG9mIGB0aHJlYWQnLiAgKi8KICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqdGhyZWFkX2NtZF9saXN0ID0gTlVMTDsKICAKKysvKiBJbXBsZW1lbnRhdGlvbiBvZiBgdGhy ZWFkJyB2YXJpYWJsZS4gICovCisrCiArc3RhdGljIHN0cnVjdCBpbnRlcm5hbHZhcl9mdW5jcyB0 aHJlYWRfZnVuY3MgPQogK3sKICsgIHRocmVhZF9pZF9tYWtlX3ZhbHVlLApAQCAtMTYwNzAsNyAr MTQ0MDgsNyBAQCBpbmRleCA2YWQxODA3Li45MWZlMDU2IDEwMDY0NAogIHZvaWQKICBfaW5pdGlh bGl6ZV90aHJlYWQgKHZvaWQpCiAgewotQEAgLTE0OTQsNSArMTUwMiw1IEBAIFNob3cgcHJpbnRp bmcgb2YgdGhyZWFkIGV2ZW50cyAoc3VjaCBhcyB0aHJlYWQgc3RhcnQgYW5kIGV4aXQpLiIpLCBO VUxMLAorQEAgLTE0OTQsNSArMTUwNCw1IEBAIFNob3cgcHJpbnRpbmcgb2YgdGhyZWFkIGV2ZW50 cyAoc3VjaCBhcyB0aHJlYWQgc3RhcnQgYW5kIGV4aXQpLiIpLCBOVUxMLAogICAgICAgICAgIHNo b3dfcHJpbnRfdGhyZWFkX2V2ZW50cywKICAgICAgICAgICAmc2V0cHJpbnRsaXN0LCAmc2hvd3By aW50bGlzdCk7CiAgCkBAIC0xNjA5Miw3ICsxNDQzMCw3IEBAIGluZGV4IGEyNTU1MGYuLjg3ZjBi NDEgMTAwNjQ0CiAgICAvKiBXaXRoIG11bHRpcGxlIHRocmVhZHMgcnVubmluZyB3aGlsZSB0aGUg b25lIHdlJ3JlIGV4YW1pbmluZyBpcwogICAgICAgc3RvcHBlZCwgdGhlIGRjYWNoZSBjYW4gZ2V0 IHN0YWxlIHdpdGhvdXQgdXMgYmVpbmcgYWJsZSB0byBkZXRlY3QKIGRpZmYgLS1naXQgYS9nZGIv dHJhY2Vwb2ludC5jIGIvZ2RiL3RyYWNlcG9pbnQuYwotaW5kZXggM2FlMzVkMC4uZDNjZDU5MyAx MDA2NDQKK2luZGV4IDNhZTM1ZDAuLjFjYjM5ZWEgMTAwNjQ0CiAtLS0gYS9nZGIvdHJhY2Vwb2lu dC5jCiArKysgYi9nZGIvdHJhY2Vwb2ludC5jCiBAQCAtMTYwMCw2ICsxNjAwLDggQEAgc3RhcnRf dHJhY2luZyAodm9pZCkKQEAgLTE2MTUzLDEwICsxNDQ5MSwxMiBAQCBpbmRleCAzYWUzNWQwLi5k M2NkNTkzIDEwMDY0NAogIHsKICAgIExPTkdFU1Qgc2l6ZTsKICAgIGdkYl9ieXRlICpidWY7Ci1A QCAtNDY3Niw2ICs0NzAzLDEzIEBAIHRyYWNlZnJhbWVfYXZhaWxhYmxlX21lbW9yeSAoVkVDKG1l bV9yYW5nZV9zKSAqKnJlc3VsdCwKK0BAIC00Njc2LDYgKzQ3MDMsMTUgQEAgdHJhY2VmcmFtZV9h dmFpbGFibGVfbWVtb3J5IChWRUMobWVtX3JhbmdlX3MpICoqcmVzdWx0LAogICAgcmV0dXJuIDA7 CiAgfQogIAorKy8qIEltcGxlbWVudGF0aW9uIG9mIGBzZGF0YScgdmFyaWFibGUuICAqLworKwog K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZXJuYWx2YXJfZnVuY3Mgc2RhdGFfZnVuY3MgPQogK3sK ICsgIHNkYXRhX21ha2VfdmFsdWUsCkBAIC0xNjE2Nyw3ICsxNDUwNyw3IEBAIGluZGV4IDNhZTM1 ZDAuLmQzY2Q1OTMgMTAwNjQ0CiAgLyogbW9kdWxlIGluaXRpYWxpemF0aW9uICovCiAgdm9pZAog IF9pbml0aWFsaXplX3RyYWNlcG9pbnQgKHZvaWQpCi1AQCAtNDY4Niw3ICs0NzIwLDcgQEAgX2lu aXRpYWxpemVfdHJhY2Vwb2ludCAodm9pZCkKK0BAIC00Njg2LDcgKzQ3MjIsNyBAQCBfaW5pdGlh bGl6ZV90cmFjZXBvaW50ICh2b2lkKQogICAgICAgdmFsdWUgd2l0aCBhIHZvaWQgdHlwZWQgdmFs dWUsIGFuZCB3aGVuIHdlIGdldCBoZXJlLCBnZGJhcmNoCiAgICAgICBpc24ndCBpbml0aWFsaXpl ZCB5ZXQuICBBdCB0aGlzIHBvaW50LCB3ZSdyZSBxdWl0ZSBzdXJlIHRoZXJlCiAgICAgICBpc24n dCBhbm90aGVyIGNvbnZlbmllbmNlIHZhcmlhYmxlIG9mIHRoZSBzYW1lIG5hbWUuICAqLwpAQCAt MTYyMzQsNyArMTQ1NzQsNyBAQCBpbmRleCAwM2U2MzMyLi5jZTZkMWUwIDEwMDY0NAogIAogIHN0 YXRpYyB2b2lkCiBkaWZmIC0tZ2l0IGEvZ2RiL3V0aWxzLmMgYi9nZGIvdXRpbHMuYwotaW5kZXgg ZTY4OGQxOS4uZjFmYzUwNyAxMDA2NDQKK2luZGV4IDUxZDMyYjcuLjVmZWU4MDkgMTAwNjQ0CiAt LS0gYS9nZGIvdXRpbHMuYwogKysrIGIvZ2RiL3V0aWxzLmMKIEBAIC0yMjQzLDYgKzIyNDMsMzYg QEAgc2V0X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9p ZCkKQEAgLTE2MzAyLDcgKzE0NjQyLDcgQEAgaW5kZXggNjhmNjQ5Zi4uYWFhNDQ4NyAxMDA2NDQK ICB9CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3ZhbG9wcy5jCi1pbmRleCBi OWY1NTA4Li4xYjdlZDc2IDEwMDY0NAoraW5kZXggOTkxMTViNy4uZGMyNzY0NCAxMDA2NDQKIC0t LSBhL2dkYi92YWxvcHMuYwogKysrIGIvZ2RiL3ZhbG9wcy5jCiBAQCAtNDcsNiArNDcsNyBAQApA QCAtMTY0NDcsNyArMTQ3ODcsNyBAQCBpbmRleCBiOWY1NTA4Li4xYjdlZDc2IDEwMDY0NAogIH0K ICAKICAvKiBHaXZlbiBhIHZhbHVlIHdoaWNoIGlzIGEgZnVuY3Rpb24sIHJldHVybiBhIHZhbHVl IHdoaWNoIGlzIGEgcG9pbnRlcgotQEAgLTM2ODgsNiArMzc3Miw4IEBAIHZhbHVlX3NsaWNlIChz dHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgpCitAQCAtMzY5NSw2 ICszNzc5LDggQEAgdmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3Vu ZCwgaW50IGxlbmd0aCkKICAJCQkJCVRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAogIAkJ CQkJbG93Ym91bmQsIAogIAkJCQkJbG93Ym91bmQgKyBsZW5ndGggLSAxKTsKQEAgLTE2NTMwLDcg KzE0ODcwLDcgQEAgaW5kZXggMjg2ZWY5ZS4uMWZlNThiMSAxMDA2NDQKICAKICAvKiBSZWFkIExF TiBieXRlcyBvZiB0YXJnZXQgbWVtb3J5IGF0IGFkZHJlc3MgTUVNQUREUiwgcGxhY2luZyB0aGUK IGRpZmYgLS1naXQgYS9nZGIvdmFsdWUuYyBiL2dkYi92YWx1ZS5jCi1pbmRleCAyYWNiMWRmLi5j ZjhkZGEwIDEwMDY0NAoraW5kZXggMmFjYjFkZi4uNjc0NGI3NiAxMDA2NDQKIC0tLSBhL2dkYi92 YWx1ZS5jCiArKysgYi9nZGIvdmFsdWUuYwogQEAgLTQzLDYgKzQzLDcgQEAKQEAgLTE2NjE4LDcg KzE0OTU4LDcgQEAgaW5kZXggMmFjYjFkZi4uY2Y4ZGRhMCAxMDA2NDQKICAKICAgICAgICAvKiBU aGUgaW50ZXJuYWwgZnVuY3Rpb24gdXNlZCB3aXRoIElOVEVSTkFMVkFSX0ZVTkNUSU9OLiAgKi8K ICAgICAgICBzdHJ1Y3QKLUBAIC0xNjI5LDE4ICsxNjcxLDM3IEBAIGNyZWF0ZV9pbnRlcm5hbHZh ciAoY29uc3QgY2hhciAqbmFtZSkKK0BAIC0xNjI5LDE4ICsxNjcxLDM5IEBAIGNyZWF0ZV9pbnRl cm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSkKICAvKiBDcmVhdGUgYW4gaW50ZXJuYWwgdmFyaWFi bGUgd2l0aCBuYW1lIE5BTUUgYW5kIHJlZ2lzdGVyIEZVTiBhcyB0aGUKICAgICBmdW5jdGlvbiB0 aGF0IHZhbHVlX29mX2ludGVybmFsdmFyIHVzZXMgdG8gY3JlYXRlIGEgdmFsdWUgd2hlbmV2ZXIK ICAgICB0aGlzIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQuICBOQU1FIHNob3VsZCBub3Qgbm9ybWFs bHkgaW5jbHVkZSBhCkBAIC0xNjY0Miw2ICsxNDk4Miw4IEBAIGluZGV4IDJhY2IxZGYuLmNmOGRk YTAgMTAwNjQ0CiAgICByZXR1cm4gdmFyOwogIH0KICAKKysvKiBTZWUgZG9jdW1lbnRhdGlvbiBp biB2YWx1ZS5oLiAgKi8KKysKICtpbnQKICtjb21waWxlX2ludGVybmFsdmFyX3RvX2F4IChzdHJ1 Y3QgaW50ZXJuYWx2YXIgKnZhciwKICsJCQkgICBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKQEAg LTE2NjU5LDcgKzE1MDAxLDcgQEAgaW5kZXggMmFjYjFkZi4uY2Y4ZGRhMCAxMDA2NDQKICAvKiBM b29rIHVwIGFuIGludGVybmFsIHZhcmlhYmxlIHdpdGggbmFtZSBOQU1FLiAgTkFNRSBzaG91bGQg bm90CiAgICAgbm9ybWFsbHkgaW5jbHVkZSBhIGRvbGxhciBzaWduLgogIAotQEAgLTE3MTMsNyAr MTc3NCw4IEBAIHZhbHVlX29mX2ludGVybmFsdmFyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg c3RydWN0IGludGVybmFsdmFyICp2YXIpCitAQCAtMTcxMyw3ICsxNzc2LDggQEAgdmFsdWVfb2Zf aW50ZXJuYWx2YXIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2YXIg KnZhcikKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9NQUtFX1ZBTFVF OgpAQCAtMTY2NjksNyArMTUwMTEsNyBAQCBpbmRleCAyYWNiMWRmLi5jZjhkZGEwIDEwMDY0NAog ICAgICAgIGJyZWFrOwogIAogICAgICBkZWZhdWx0OgotQEAgLTE5MDksNiArMTk3MSwxMSBAQCBj bGVhcl9pbnRlcm5hbHZhciAoc3RydWN0IGludGVybmFsdmFyICp2YXIpCitAQCAtMTkwOSw2ICsx OTczLDExIEBAIGNsZWFyX2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhcikKICAg ICAgICB4ZnJlZSAodmFyLT51LnN0cmluZyk7CiAgICAgICAgYnJlYWs7CiAgCkBAIC0xNjY4MSw3 ICsxNTAyMyw3IEBAIGluZGV4IDJhY2IxZGYuLmNmOGRkYTAgMTAwNjQ0CiAgICAgIGRlZmF1bHQ6 CiAgICAgICAgYnJlYWs7CiAgICAgIH0KLUBAIC0xOTYzLDYgKzIwMzAsMzggQEAgY2FsbF9pbnRl cm5hbF9mdW5jdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtMTk2Myw2ICsyMDMy LDM4IEBAIGNhbGxfaW50ZXJuYWxfZnVuY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAog ICAgcmV0dXJuICgqaWZuLT5oYW5kbGVyKSAoZ2RiYXJjaCwgbGFuZ3VhZ2UsIGlmbi0+Y29va2ll LCBhcmdjLCBhcmd2KTsKICB9CiAgCkBAIC0xNjcyMCw3ICsxNTA2Miw3IEBAIGluZGV4IDJhY2Ix ZGYuLmNmOGRkYTAgMTAwNjQ0CiAgLyogVGhlICdmdW5jdGlvbicgY29tbWFuZC4gIFRoaXMgZG9l cyBub3RoaW5nIC0tIGl0IGlzIGp1c3QgYQogICAgIHBsYWNlaG9sZGVyIHRvIGxldCAiaGVscCBm dW5jdGlvbiBOQU1FIiB3b3JrLiAgVGhpcyBpcyBhbHNvIHVzZWQgYXMKICAgICB0aGUgaW1wbGVt ZW50YXRpb24gb2YgdGhlIHN1Yi1jb21tYW5kIHRoYXQgaXMgY3JlYXRlZCB3aGVuCi1AQCAtMjAx MCwxMSArMjEwOSwxMCBAQCBwcmVzZXJ2ZV9vbmVfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUs IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTIwMTAsMTEgKzIxMTEsMTAgQEAgcHJlc2Vy dmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKICAJCSAgICBodGFiX3QgY29waWVkX3R5cGVzKQogIHsKICAgIGlmIChUWVBFX09CSkZJTEUg KHZhbHVlLT50eXBlKSA9PSBvYmpmaWxlKQpAQCAtMTY3MzQsNyArMTUwNzYsNyBAQCBpbmRleCAy YWNiMWRmLi5jZjhkZGEwIDEwMDY0NAogIAkJCQkJCSBjb3BpZWRfdHlwZXMpOwogIH0KICAKLUBA IC0yMDI5LDcgKzIxMjcsNyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRl cm5hbHZhciAqdmFyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yMDI5LDcgKzIxMjks NyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyLCBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9JTlRFR0VSOgog ICAgICAgIGlmICh2YXItPnUuaW50ZWdlci50eXBlICYmIFRZUEVfT0JKRklMRSAodmFyLT51Lmlu dGVnZXIudHlwZSkgPT0gb2JqZmlsZSkKICAJdmFyLT51LmludGVnZXIudHlwZQpAQCAtMTY3NDMs NyArMTUwODUsNyBAQCBpbmRleCAyYWNiMWRmLi5jZjhkZGEwIDEwMDY0NAogICAgICAgIGJyZWFr OwogIAogICAgICBjYXNlIElOVEVSTkFMVkFSX1ZBTFVFOgotQEAgLTIwODAsMTQgKzIxNzgsMjIg QEAgc2hvd19jb252ZW5pZW5jZSAoY2hhciAqaWdub3JlLCBpbnQgZnJvbV90dHkpCitAQCAtMjA4 MCwxNCArMjE4MCwyMiBAQCBzaG93X2NvbnZlbmllbmNlIChjaGFyICppZ25vcmUsIGludCBmcm9t X3R0eSkKICAgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKICAgIGZvciAodmFyID0g aW50ZXJuYWx2YXJzOyB2YXI7IHZhciA9IHZhci0+bmV4dCkKICAgICAgewpAQCAtMTY3NjksNyAr MTUxMTEsNyBAQCBpbmRleCAyYWNiMWRmLi5jZjhkZGEwIDEwMDY0NAogICAgICB9CiAgICBpZiAo IXZhcnNlZW4pCiAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJObyBkZWJ1Z2dlciBjb252ZW5p ZW5jZSB2YXJpYWJsZXMgbm93IGRlZmluZWQuXG4iCi1AQCAtMzA0Nyw3ICszMTUzLDI0IEBAIHZh bHVlX2Zyb21faGlzdG9yeV9yZWYgKGNoYXIgKmgsIGNoYXIgKiplbmRwKQorQEAgLTMwNDcsNyAr MzE1NSwyNCBAQCB2YWx1ZV9mcm9tX2hpc3RvcnlfcmVmIChjaGFyICpoLCBjaGFyICoqZW5kcCkK ICBzdHJ1Y3QgdmFsdWUgKgogIGNvZXJjZV9yZWYgKHN0cnVjdCB2YWx1ZSAqYXJnKQogIHsKQEAg LTE2Nzk1LDcgKzE1MTM3LDcgQEAgaW5kZXggMmFjYjFkZi4uY2Y4ZGRhMCAxMDA2NDQKICAKICAg IGlmIChUWVBFX0NPREUgKHZhbHVlX3R5cGVfYXJnX3RtcCkgPT0gVFlQRV9DT0RFX1JFRikKICAg ICAgYXJnID0gdmFsdWVfYXRfbGF6eSAoVFlQRV9UQVJHRVRfVFlQRSAodmFsdWVfdHlwZV9hcmdf dG1wKSwKLUBAIC0zMTQ1LDQgKzMyNjgsMTAgQEAgVkFSSUFCTEUgaXMgYWxyZWFkeSBpbml0aWFs aXplZC4iKSk7CitAQCAtMzE0NSw0ICszMjcwLDEwIEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5p dGlhbGl6ZWQuIikpOwogICAgYWRkX3ByZWZpeF9jbWQgKCJmdW5jdGlvbiIsIG5vX2NsYXNzLCBm dW5jdGlvbl9jb21tYW5kLCBfKCJcCiAgUGxhY2Vob2xkZXIgY29tbWFuZCBmb3Igc2hvd2luZyBo ZWxwIG9uIGNvbnZlbmllbmNlIGZ1bmN0aW9ucy4iKSwKICAJCSAgJmZ1bmN0aW9ubGlzdCwgImZ1 bmN0aW9uICIsIDAsICZjbWRsaXN0KTsKQEAgLTE2ODc4LDcgKzE1MjIwLDcgQEAgaW5kZXggMDg4 OWNlZi4uNGI1MWE0YSAxMDA2NDQKICBleHRlcm4gc3RydWN0IGludGVybmFsdmFyICpsb29rdXBf aW50ZXJuYWx2YXIgKGNvbnN0IGNoYXIgKm5hbWUpOwogIAogZGlmZiAtLWdpdCBhL2dkYi93aW5k b3dzLXRkZXAuYyBiL2dkYi93aW5kb3dzLXRkZXAuYwotaW5kZXggMzFkZGQxNC4uYjM2ZTRjYSAx MDA2NDQKK2luZGV4IDMxZGRkMTQuLmIzMTkyNTAgMTAwNjQ0CiAtLS0gYS9nZGIvd2luZG93cy10 ZGVwLmMKICsrKyBiL2dkYi93aW5kb3dzLXRkZXAuYwogQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0 aWMgc3RydWN0IGx2YWxfZnVuY3MgdGxiX3ZhbHVlX2Z1bmNzID0KQEAgLTE2ODkwLDEwICsxNTIz MiwxMiBAQCBpbmRleCAzMWRkZDE0Li5iMzZlNGNhIDEwMDY0NAogIHsKICAgIGlmICh0YXJnZXRf aGFzX3N0YWNrICYmICFwdGlkX2VxdWFsIChpbmZlcmlvcl9wdGlkLCBudWxsX3B0aWQpKQogICAg ICB7Ci1AQCAtNDI1LDYgKzQyNSwxMyBAQCBpbml0X3czMl9jb21tYW5kX2xpc3QgKHZvaWQpCitA QCAtNDI1LDYgKzQyNSwxNSBAQCBpbml0X3czMl9jb21tYW5kX2xpc3QgKHZvaWQpCiAgICAgIH0K ICB9CiAgCisrLyogSW1wbGVtZW50YXRpb24gb2YgYHRsYicgdmFyaWFibGUuICAqLworKwogK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZXJuYWx2YXJfZnVuY3MgdGxiX2Z1bmNzID0KICt7CiArICB0 bGJfbWFrZV92YWx1ZSwKQEAgLTE2OTA0LDcgKzE1MjQ4LDcgQEAgaW5kZXggMzFkZGQxNC4uYjM2 ZTRjYSAxMDA2NDQKICB2b2lkCiAgX2luaXRpYWxpemVfd2luZG93c190ZGVwICh2b2lkKQogIHsK LUBAIC00NTEsNSArNDU4LDUgQEAgZXZlbiBpZiB0aGVpciBtZWFuaW5nIGlzIHVua25vd24uIiks CitAQCAtNDUxLDUgKzQ2MCw1IEBAIGV2ZW4gaWYgdGhlaXIgbWVhbmluZyBpcyB1bmtub3duLiIp LAogICAgICAgdmFsdWUgd2l0aCBhIHZvaWQgdHlwZWQgdmFsdWUsIGFuZCB3aGVuIHdlIGdldCBo ZXJlLCBnZGJhcmNoCiAgICAgICBpc24ndCBpbml0aWFsaXplZCB5ZXQuICBBdCB0aGlzIHBvaW50 LCB3ZSdyZSBxdWl0ZSBzdXJlIHRoZXJlCiAgICAgICBpc24ndCBhbm90aGVyIGNvbnZlbmllbmNl IHZhcmlhYmxlIG9mIHRoZSBzYW1lIG5hbWUuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1iejUzOTU5 MC1nbnUtaWZ1bmMtZml4LWNvbmQucGF0Y2ggYi9nZGItYno1Mzk1OTAtZ251LWlmdW5jLWZpeC1j b25kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGJmNWMwLi4wMDAwMDAw Ci0tLSBhL2dkYi1iejUzOTU5MC1nbnUtaWZ1bmMtZml4LWNvbmQucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwxNCArMCwwIEBACi0tLS0gLi9nZGIvYnJlYWtwb2ludC5jCTIwMTAtMDQtMjYgMDI6 MzU6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvYnJlYWtwb2ludC5jCTIwMTAtMDQtMjYg MDI6MzM6MjYuMDAwMDAwMDAwICswMjAwCi1AQCAtODQ5OSw2ICs4NDk5LDExIEBAIHVwZGF0ZV9i cmVha3BvaW50X2xvY2F0aW9ucyAoc3RydWN0IGJyZWEKLSAJewotIAkgIHN0cnVjdCBnZGJfZXhj ZXB0aW9uIGU7Ci0gCi0rCSAgLyogVGVtcG9yYXJ5IHdvcmthcm91bmQgYmVmb3JlIHRoZSBub24t aW50cnVzaXZlIGlmdW5jIHBhdGNoIGdldHMgaW4uCi0rCSAgICAgZXhwIHBhcnNpbmcgY2FuIG5v dyBjYWxsIGluZmVyaW9yIGZ1bmN0aW9uIGludmFsaWRhdGluZwotKwkgICAgIEVYSVNUSU5HX0xP Q0FUSU9OUy4gICovCi0rCSAgZXhpc3RpbmdfbG9jYXRpb25zID0gTlVMTDsKLSsKLSAJICBzID0g Yi0+Y29uZF9zdHJpbmc7Ci0gCSAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19FUlJPUikKLSAJ ICAgIHsKCmRpZmYgLS1naXQgYS9nZGItZHdhcmYzLWFjY2Vzc2liaWxpdHkucGF0Y2ggYi9nZGIt ZHdhcmYzLWFjY2Vzc2liaWxpdHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGQ1NGRjMzQuLjAwMDAwMDAKLS0tIGEvZ2RiLWR3YXJmMy1hY2Nlc3NpYmlsaXR5LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1wYXRjaGVzLzIwMTEtMDEvbXNnMDA1MDcuaHRtbAotU3ViamVjdDogW3BhdGNoXSBGaXggRFdB UkYtMysgRFdfQVRfYWNjZXNzaWJpbGl0eSBkZWZhdWx0IGFzc3VtcHRpb24KLQotSGksCi0KLUdE QiByZWdyZXNzZXMgb24gZGVmYXVsdCBjb21waWxlciBvcHRpb24gLWdkd2FyZi0zIG9uIGdjYy00 LjYrIGFzIHRoaXMgZ2NjCi1zdGFydGVkIHRvIG9taXQgRFdfQVRfYWNjZXNzaWJpbGl0eSBmb3Ig dGhlIGRlZmF1bHQgdmFsdWUgY2FzZS4gIE5vcm1hbAotdXBzdHJlYW0gZ2NjIHN0aWxsIGhhcyAt Z2R3YXJmLTIgZGVmYXVsdCAoRmVkb3JhIHVzZXMgLWdkd2FyZi0zIGRlZmF1bHQpLgotCi1ObyBy ZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTUtbGludXgtZ251 LgotKFRoZXJlIGFyZSBvdGhlciByZWdyZXNzaW9ucyB0byBiZSBmaXhlZCBkdWUgdG8gZ2NjNDUt PmdjYzQ2LikKLQotSSB3aWxsIGNoZWNrIGl0IGluIGluIHNvbWUgdGltZS4KLQotCi1UaGFua3Ms Ci1KYW4KLQotCi0tRkFJTDogZ2RiLmNwL2Nhc3RzLmV4cDogZHluYW1pY19jYXN0IHNpbXBsZSBk b3duY2FzdAotLUZBSUw6IGdkYi5jcC9jYXN0cy5leHA6IGR5bmFtaWNfY2FzdCBzaW1wbGUgZG93 bmNhc3QgdG8gaW50ZXJtZWRpYXRlIGNsYXNzCi0tRkFJTDogZ2RiLmNwL2Nhc3RzLmV4cDogZHlu YW1pY19jYXN0IHVuaXF1ZSBkb3duY2FzdAotLUZBSUw6IGdkYi5jcC9jYXN0cy5leHA6IGR5bmFt aWNfY2FzdCB0byBzaWJsaW5nCi0tRkFJTDogZ2RiLmNwL2NsYXNzZXMuZXhwOiBwdHlwZSBjbGFz cyBkZWZhdWx0X3ByaXZhdGVfY2xhc3MgLy8gd3JvbmcgYWNjZXNzIHNwZWNpZmllciBmb3IgZmll bGQ6IHB1YmxpYwotLUZBSUw6IGdkYi5jcC9jbGFzc2VzLmV4cDogcHR5cGUgY2xhc3MgZXhwbGlj aXRfcHJpdmF0ZV9jbGFzcyAvLyB3cm9uZyBhY2Nlc3Mgc3BlY2lmaWVyIGZvciBmaWVsZDogcHVi bGljCi0tRkFJTDogZ2RiLmNwL2NsYXNzZXMuZXhwOiBwdHlwZSBjbGFzcyBtaXhlZF9wcm90ZWN0 aW9uX2NsYXNzIC8vIHdyb25nIGFjY2VzcyBzcGVjaWZpZXIgZm9yIGZpZWxkOiBwdWJsaWMKLS1G QUlMOiBnZGIuY3AvdmlydGZ1bmMuZXhwOiBwdHlwZSBBIC8vIHdyb25nIGFjY2VzcyBzcGVjaWZp ZXIgZm9yIGZpZWxkOiBwdWJsaWMKLS1GQUlMOiBnZGIuY3AvdmlydGZ1bmMuZXhwOiBwdHlwZSBC IC8vIHdyb25nIGFjY2VzcyBzcGVjaWZpZXIgZm9yIGZpZWxkOiBwdWJsaWMKLS1GQUlMOiBnZGIu Y3AvdmlydGZ1bmMuZXhwOiBwdHlwZSBhIC8vIHdyb25nIGFjY2VzcyBzcGVjaWZpZXIgZm9yIGZp ZWxkOiBwdWJsaWMKLS1GQUlMOiBnZGIuY3AvdmlydGZ1bmMuZXhwOiBwdHlwZSBiIC8vIHdyb25n IGFjY2VzcyBzcGVjaWZpZXIgZm9yIGZpZWxkOiBwdWJsaWMKLS1GQUlMOiBnZGIuY3AvdmlydGZ1 bmMuZXhwOiBwdHlwZSBwQWEgLy8gd3JvbmcgYWNjZXNzIHNwZWNpZmllciBmb3IgZmllbGQ6IHB1 YmxpYwotLUZBSUw6IGdkYi5jcC92aXJ0ZnVuYy5leHA6IHB0eXBlIHBBZSAvLyB3cm9uZyBhY2Nl c3Mgc3BlY2lmaWVyIGZvciBmaWVsZDogcHVibGljCi0tRkFJTDogZ2RiLmNwL3ZpcnRmdW5jLmV4 cDogcHR5cGUgcEJlIC8vIHdyb25nIGFjY2VzcyBzcGVjaWZpZXIgZm9yIGZpZWxkOiBwdWJsaWMK LS1GQUlMOiBnZGIubWkvZ2RiNzkyLmV4cDogbGlzdCBjaGlsZHJlbiBvZiBjbGFzcyBBCi0tRkFJ TDogZ2RiLm1pL2dkYjc5Mi5leHA6IGxpc3QgY2hpbGRyZW4gb2YgQS5wdWJsaWMKLS1GQUlMOiBn ZGIubWkvZ2RiNzkyLmV4cDogbGlzdCBjaGlsZHJlbiBvZiBBLnByaXZhdGUKLS1GQUlMOiBnZGIu bWkvZ2RiNzkyLmV4cDogbGlzdCBjaGlsZHJlbiBvZiBBLnByb3RlY3RlZAotLUZBSUw6IGdkYi5t aS9nZGI3OTIuZXhwOiBsaXN0IGNoaWxkcmVuIG9mIEEucHJvdGVjdGVkLmIKLS1GQUlMOiBnZGIu bWkvZ2RiNzkyLmV4cDogbGlzdCBjaGlsZHJlbiBvZiBBLnByb3RlY3RlZC5iLnB1YmxpYwotLUZB SUw6IGdkYi5taS9nZGI3OTIuZXhwOiBsaXN0IGNoaWxkcmVuIG9mIEEucHJvdGVjdGVkLmIucHJp dmF0ZQotLUZBSUw6IGdkYi5taS9nZGI3OTIuZXhwOiBsaXN0IGNoaWxkcmVuIG9mIGNsYXNzIEMK LS1GQUlMOiBnZGIucHl0aG9uL3B5LXZhbHVlLmV4cDogcHl0aG9uIHByaW50IGJvb2woZ2RiLnBh cnNlX2FuZF9ldmFsKCdiYXNlJykuZHluYW1pY19jYXN0KGdkYi5sb29rdXBfdHlwZSgnRGVyaXZl ZCcpLnBvaW50ZXIoKSkpCi0KLQotZ2RiLwotMjAxMS0wMS0yNSAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JRml4IERXQVJGLTMrIERXX0FUX2FjY2Vzc2li aWxpdHkgZGVmYXVsdCBhc3N1bXB0aW9uLgotCSogZHdhcmYycmVhZC5jIChkd2FyZjJfYWRkX2Zp ZWxkKTogRml4IG5ld19maWVsZC0+YWNjZXNzaWJpbGl0eSBmb3IKLQljdS0+aGVhZGVyLnZlcnNp b24gPj0gMy4KLQotLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwotKysrIGIvZ2RiL2R3YXJmMnJlYWQu YwotQEAgLTYxODYsMTMgKzYxODYsMjUgQEAgZHdhcmYyX2FkZF9maWVsZCAoc3RydWN0IGZpZWxk X2luZm8gKmZpcCwgc3RydWN0IGRpZV9pbmZvICpkaWUsCi0gICAgIH0KLSAgIGZpcC0+bmZpZWxk cysrOwotIAotLSAgLyogSGFuZGxlIGFjY2Vzc2liaWxpdHkgYW5kIHZpcnR1YWxpdHkgb2YgZmll bGQuCi0tICAgICBUaGUgZGVmYXVsdCBhY2Nlc3NpYmlsaXR5IGZvciBtZW1iZXJzIGlzIHB1Ymxp YywgdGhlIGRlZmF1bHQKLS0gICAgIGFjY2Vzc2liaWxpdHkgZm9yIGluaGVyaXRhbmNlIGlzIHBy aXZhdGUuICAqLwotLSAgaWYgKGRpZS0+dGFnICE9IERXX1RBR19pbmhlcml0YW5jZSkKLS0gICAg bmV3X2ZpZWxkLT5hY2Nlc3NpYmlsaXR5ID0gRFdfQUNDRVNTX3B1YmxpYzsKLSsgIGlmIChjdS0+ aGVhZGVyLnZlcnNpb24gPCAzKQotKyAgICB7Ci0rICAgICAgLyogVGhlIGRlZmF1bHQgRFdBUkYg MiBhY2Nlc3NpYmlsaXR5IGZvciBtZW1iZXJzIGlzIHB1YmxpYywgdGhlIGRlZmF1bHQKLSsJIGFj Y2Vzc2liaWxpdHkgZm9yIGluaGVyaXRhbmNlIGlzIHByaXZhdGUuICAqLwotKwotKyAgICAgIGlm IChkaWUtPnRhZyAhPSBEV19UQUdfaW5oZXJpdGFuY2UpCi0rCW5ld19maWVsZC0+YWNjZXNzaWJp bGl0eSA9IERXX0FDQ0VTU19wdWJsaWM7Ci0rICAgICAgZWxzZQotKwluZXdfZmllbGQtPmFjY2Vz c2liaWxpdHkgPSBEV19BQ0NFU1NfcHJpdmF0ZTsKLSsgICAgfQotICAgZWxzZQotLSAgICBuZXdf ZmllbGQtPmFjY2Vzc2liaWxpdHkgPSBEV19BQ0NFU1NfcHJpdmF0ZTsKLSsgICAgewotKyAgICAg IC8qIERXQVJGIDMgc3BlY2lmaWVzIHRoZSBkZWZhdWx0IGFjY2Vzc2liaWxpdHkgZXhwbGljaXRs eS4gICovCi0rCi0rICAgICAgaWYgKGRpZS0+cGFyZW50LT50YWcgPT0gRFdfVEFHX2NsYXNzX3R5 cGUpCi0rCW5ld19maWVsZC0+YWNjZXNzaWJpbGl0eSA9IERXX0FDQ0VTU19wcml2YXRlOwotKyAg ICAgIGVsc2UKLSsJbmV3X2ZpZWxkLT5hY2Nlc3NpYmlsaXR5ID0gRFdfQUNDRVNTX3B1YmxpYzsK LSsgICAgfQotICAgbmV3X2ZpZWxkLT52aXJ0dWFsaXR5ID0gRFdfVklSVFVBTElUWV9ub25lOwot IAotICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2FjY2Vzc2liaWxpdHksIGN1KTsK LQoKZGlmZiAtLWdpdCBhL2dkYi1mYWxzZS1nY2Mtd2FybmluZy5wYXRjaCBiL2dkYi1mYWxzZS1n Y2Mtd2FybmluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJhZDA4Yy4u MDAwMDAwMAotLS0gYS9nZGItZmFsc2UtZ2NjLXdhcm5pbmcucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxMSArMCwwIEBACi0tLS0gZ2RiLTcuMS45MC4yMDEwMDgwNi9nZGIvaW5mY2FsbC5jLm9y aWcJMjAxMC0wOC0xMCAwMDozNDoxMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIw MTAwODA2L2dkYi9pbmZjYWxsLmMJMjAxMC0wOC0xMCAwMDozNjowMy4wMDAwMDAwMDAgKzAyMDAK LUBAIC0yODQsNyArMjg0LDcgQEAgZmluZF9mdW5jdGlvbl9hZGRyIChzdHJ1Y3QgdmFsdWUgKmZ1 bmN0aQotICAgc3RydWN0IHR5cGUgKmZ0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAo ZnVuY3Rpb24pKTsKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAo ZnR5cGUpOwotICAgc3RydWN0IHR5cGUgKnZhbHVlX3R5cGUgPSBOVUxMOwotLSAgQ09SRV9BRERS IGZ1bmFkZHI7Ci0rICBDT1JFX0FERFIgZnVuYWRkciA9IDA7CS8qIEdDQyBmYWxzZSAtZnByb2Zp bGUtdXNlIHdhcm5pbmcuICAqLwotIAotICAgLyogSWYgaXQncyBhIG1lbWJlciBmdW5jdGlvbiwg anVzdCBsb29rIGF0IHRoZSBmdW5jdGlvbgotICAgICAgcGFydCBvZiBpdC4gICovCgpkaWZmIC0t Z2l0IGEvZ2RiLWdjYzQ2LXR5cGVkZWYucGF0Y2ggYi9nZGItZ2NjNDYtdHlwZWRlZi5wYXRjaApp bmRleCA4YzQzZDIzLi4yOTg4ZGY5IDEwMDY0NAotLS0gYS9nZGItZ2NjNDYtdHlwZWRlZi5wYXRj aAorKysgYi9nZGItZ2NjNDYtdHlwZWRlZi5wYXRjaApAQCAtMSwxNyArMSwyMTggQEAKLWludGVy bmFsLWVycm9yOiBjb3VsZCBub3QgZmluZCBwYXJ0aWFsIERJRQotaHR0cHM6Ly9idWd6aWxsYS5y ZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02NzIyMzAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItcGF0Y2hlcy8yMDExLTA0L21zZzAwMTU0Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gV29y a2Fyb3VuZCBidWdneSBHQ0MgUFIgNDc1MTAgcHJvZHVjZWQgY29kZQorCitIaSwKKworR0NDIFBS IGRlYnVnLzQ3NTEwIGlzIGFscmVhZHkgZml4ZWQgYW5kIEdEQiBoYXMgdGhlIHByb3BlciBzdXBw b3J0IGZvciBpdDoKKwlSRkM6IHVwZGF0ZSBmb3IgR0NDIFBSIDQ3NTEwCisJaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTEtMDMvbXNnMDA5MTYuaHRtbAorCitTdGlsbCBG U0YgR0RCIEhFQUQgd2lsbCBjcmFzaCBvbiBhIGJpbmFyeSBwcm9kdWNlZCBieSBvbGRlci9idWdn eSBHQ0M6CisJUmVhZGluZyBzeW1ib2xzIGZyb20gLi4uL2djYzQ2Lm8uLi5kd2FyZjJyZWFkLmM6 OTMyOTogaW50ZXJuYWwtZXJyb3I6IGNvdWxkIG5vdCBmaW5kIHBhcnRpYWwgRElFIDB4OWEgaW4g Y2FjaGUgW2Zyb20gbW9kdWxlIC4uLi9nY2M0Ni5vXQorCitXaGljaCBtYXkgbm90IGdpdmUgbXVj aCBjbHVlIHRvIHRoZSB1c2VyLgorCitUaGUgcHJvcG9zZWQgcGF0Y2ggY291bGQgbWFrZSBmYWxz ZSB3YXJuaW5ncyBpZiBhbnkgY29kZSBvdXQgdGhlcmUgaGFzCitEV19UQUdfdHlwZWRlZiB3aXRo IGNoaWxkcmVuLCBpdCBkb2VzIG5vdCBjaGVjayBmb3Igc3BlY2lmaWMgR0NDIHZlcnNpb25zLgor U3RpbGwgc3VjaCBEV0FSRiBpcyBpbnZhbGlkLCBhbHRob3VnaCBpbiBzdWNoIGNhc2UgY29tcGxh aW50KCkgd291bGQgYmUgbW9yZQorYXBwcm9wcmlhdGUgdGhhbiB3YXJuaW5nKCkuICBEb2VzIGl0 IG1ha2Ugc2Vuc2UgdG8gZGlmZmVyZW50aWF0ZSBpdD8KKworTm8gcmVncmVzc2lvbnMgb24ge3g4 Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTE1LWxpbnV4LWdudS4KKworCitUaGFua3MsCitK YW4KKworCitnZGIvCisyMDExLTA0LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+CisKKwkqIGR3YXJmMnJlYWQuYyAoc3RydWN0IGR3YXJmMl9wZXJfb2JqZmls ZSk6IE5ldyBmaWVsZAorCXR5cGVkZWZfY2hpbGRyZW5fd2FybmluZ19wcmludGVkLgorCShsb2Fk X3BhcnRpYWxfZGllcyk6IFJlYWQgaW4gYW55IGNoaWxkcmVuIG9mIERXX1RBR190eXBlZGVmIHdp dGgKKwlhIHdhcm5pbmcgaW4gc3VjaCBjYXNlLgorCitnZGIvdGVzdHN1aXRlLworMjAxMS0wNC0x MSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBnZGIu ZHdhcmYyL2R3Mi10eXBlZGVmLWNoaWxkcmVuLlM6IE5ldyBmaWxlLgorCSogZ2RiLmR3YXJmMi9k dzItdHlwZWRlZi1jaGlsZHJlbi5leHA6IE5ldyBmaWxlLgogCi1kaWZmIC0tZ2l0IGEvZ2RiL2R3 YXJmMnJlYWQuYyBiL2dkYi9kd2FyZjJyZWFkLmMKLWluZGV4IDZhOThkNTcuLmYzM2EzMjcgMTAw NjQ0CiAtLS0gYS9nZGIvZHdhcmYycmVhZC5jCiArKysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAt ODc5Niw4ICs4Nzk2LDcgQEAgbG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUg KmJ1ZmZlciwgZ2RiX2J5dGUgKmluZm9fcHRyLAorQEAgLTIwOSw2ICsyMDksOSBAQCBzdHJ1Y3Qg ZHdhcmYyX3Blcl9vYmpmaWxlCisgICAgICBvciB3ZSBhcmUgZmFraW5nIGl0IGZvciBPQkpGX1JF QUROT1cncyBzYWtlLiAgKi8KKyAgIHVuc2lnbmVkIGNoYXIgdXNpbmdfaW5kZXg7CisgCisrICAv KiBQcmludCB0aGUgR0NDIFBSIGRlYnVnLzQ3NTEwIHdhcm5pbmcgb25seSBvbmNlIHBlciBvYmpm aWxlLiAgKi8KKysgIHVuc2lnbmVkIHR5cGVkZWZfY2hpbGRyZW5fd2FybmluZ19wcmludGVkIDog MTsKKysKKyAgIC8qIFRoZSBtYXBwZWQgaW5kZXgsIG9yIE5VTEwgaWYgLmdkYl9pbmRleCBpcyBt aXNzaW5nIG9yIG5vdCBiZWluZyB1c2VkLiAgKi8KKyAgIHN0cnVjdCBtYXBwZWRfaW5kZXggKmlu ZGV4X3RhYmxlOworIAorQEAgLTg5NTEsNyArODk1NCw3IEBAIGxvYWRfcGFydGlhbF9kaWVzIChi ZmQgKmFiZmQsIGdkYl9ieXRlICpidWZmZXIsIGdkYl9ieXRlICppbmZvX3B0ciwKICAgICAgICBp ZiAocGFyZW50X2RpZSA9PSBOVUxMCiAgCSAgJiYgcGFydF9kaWUtPmhhc19zcGVjaWZpY2F0aW9u ID09IDAKICAJICAmJiBwYXJ0X2RpZS0+aXNfZGVjbGFyYXRpb24gPT0gMAogLQkgICYmIChwYXJ0 X2RpZS0+dGFnID09IERXX1RBR190eXBlZGVmCi0tCSAgICAgIHx8IHBhcnRfZGllLT50YWcgPT0g RFdfVEFHX2Jhc2VfdHlwZQotKwkgICYmIChwYXJ0X2RpZS0+dGFnID09IERXX1RBR19iYXNlX3R5 cGUKKysJICAmJiAoKHBhcnRfZGllLT50YWcgPT0gRFdfVEFHX3R5cGVkZWYgJiYgIXBhcnRfZGll LT5oYXNfY2hpbGRyZW4pCisgCSAgICAgIHx8IHBhcnRfZGllLT50YWcgPT0gRFdfVEFHX2Jhc2Vf dHlwZQogIAkgICAgICB8fCBwYXJ0X2RpZS0+dGFnID09IERXX1RBR19zdWJyYW5nZV90eXBlKSkK ICAJewotIAkgIGlmIChidWlsZGluZ19wc3ltdGFiICYmIHBhcnRfZGllLT5uYW1lICE9IE5VTEwp CitAQCAtODk2NCw2ICs4OTY3LDIwIEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdk Yl9ieXRlICpidWZmZXIsIGdkYl9ieXRlICppbmZvX3B0ciwKKyAJICBjb250aW51ZTsKKyAJfQor IAorKyAgICAgIC8qIFRoZSBleGNlcHRpb24gZm9yIERXX1RBR190eXBlZGVmIHdpdGggaGFzX2No aWxkcmVuIGFib3ZlIGlzCisrCSBhIHdvcmthcm91bmQgb2YgR0NDIFBSIGRlYnVnLzQ3NTEwLiAg R0RCIGNyYXNoZWQgb24gYnJva2VuIEdDQyBvdXRwdXQKKysJIGFzIGl0IHNraXBwZWQgY2hpbGRy ZW4gb2YgRFdfVEFHX3R5cGVkZWYgYnkgdGhlIHNob3J0Y3V0IGFib3ZlIGFuZAorKwkgdGhlbiBp dCBjb3VsZCBub3QgZmluZCB0aGUgY2hpbGQgRElFcyByZWZlcmVuY2VkIGxhdGVyLiAgKi8KKysK KysgICAgICBpZiAoIWR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZWRlZl9jaGlsZHJlbl93YXJuaW5n X3ByaW50ZWQKKysJICAmJiBwYXJ0X2RpZS0+dGFnID09IERXX1RBR190eXBlZGVmICYmIHBhcnRf ZGllLT5oYXNfY2hpbGRyZW4pCisrCXsKKysJICB3YXJuaW5nIChfKCJEV19UQUdfdHlwZWRlZiBo YXMgY2hpbGRlbiAtIEdDQyBQUiBkZWJ1Zy80NzUxMCBidWcgIgorKwkJICAgICAiLSBESUUgYXQg MHgleCBbaW4gbW9kdWxlICVzXSIpLAorKwkJICAgcGFydF9kaWUtPm9mZnNldCwgY3UtPm9iamZp bGUtPm5hbWUpOworKwkgIGR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZWRlZl9jaGlsZHJlbl93YXJu aW5nX3ByaW50ZWQgPSAxOworKwl9CisrCisgICAgICAgLyogSWYgd2UncmUgYXQgdGhlIHNlY29u ZCBsZXZlbCwgYW5kIHdlJ3JlIGFuIGVudW1lcmF0b3IsIGFuZAorIAkgb3VyIHBhcmVudCBoYXMg bm8gc3BlY2lmaWNhdGlvbiAobWVhbmluZyBwb3NzaWJseSBsaXZlcyBpbiBhCisgCSBuYW1lc3Bh Y2UgZWxzZXdoZXJlKSwgdGhlbiB3ZSBjYW4gYWRkIHRoZSBwYXJ0aWFsIHN5bWJvbCBub3cKKy0t LSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItdHlwZWRlZi1j aGlsZHJlbi5TCitAQCAtMCwwICsxLDkyIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9m IEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor KworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCisrCisrLyogRGVidWcgaW5mb3JtYXRpb24gKi8KKysKKysJLnNlY3Rpb24gLmRl YnVnX2luZm8KKysuTGN1MV9iZWdpbjoKKysJLyogQ1UgaGVhZGVyICovCisrCS40Ynl0ZQkuTGN1 MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KKysu TGN1MV9zdGFydDoKKysJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLworKwkuNGJ5dGUJ LkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KKysJLmJ5 dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KKysKKysJLyogQ1UgZGllICovCisrCS51bGViMTI4 IDEJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5hc2NpaQkiZmlsZTEu dHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLworKwkuYXNjaWkJIkdOVSBDIDMuMy4zXDAiCQkJLyog RFdfQVRfcHJvZHVjZXIgKi8KKysJLmJ5dGUJMQkJCQkvKiBEV19BVF9sYW5ndWFnZSAoQykgKi8K KysKKysuTHR5cGVfaW50OgorKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYmFzZV90 eXBlICovCisrCS5hc2NpaQkJImludFwwIgkJCS8qIERXX0FUX25hbWUgKi8KKysJLmJ5dGUJCTQJ CQkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLmJ5dGUJCTUJCQkvKiBEV19BVF9lbmNvZGluZyAq LworKworKwkudWxlYjEyOAkweDMJCQkvKiAoRElFICgweDM4KSBEV19UQUdfdHlwZWRlZikgKi8K KysJLmFzY2lpCQkibmV3XDAiCQkJLyogRFdfQVRfbmFtZSAqLworKwkubG9uZwkJLkx0eXBlX2lu dCAtIC5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KKysKKysJLnVsZWIxMjgJMgkJCS8qIEFi YnJldjogRFdfVEFHX2Jhc2VfdHlwZSAqLworKwkuYXNjaWkJCSJpbnRcMCIJCQkvKiBEV19BVF9u YW1lICovCisrCS5ieXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCisrCS5ieXRlCQk1CQkJ LyogRFdfQVRfZW5jb2RpbmcgKi8KKysKKysJLnVsZWIxMjgJMAkJCS8qIEVuZCBvZiBEV19UQUdf dHlwZWRlZiAqLworKwkudWxlYjEyOAkwCQkJLyogRW5kIG9mIERXX1RBR19jb21waWxlX3VuaXQg Ki8KKysuTGN1MV9lbmQ6CisrCisrLyogQWJicmV2IHRhYmxlICovCisrCS5zZWN0aW9uIC5kZWJ1 Z19hYmJyZXYKKysuTGFiYnJldjFfYmVnaW46CisrCS51bGViMTI4CTEJCQkvKiBBYmJyZXYgY29k ZSAqLworKwkudWxlYjEyOAkweDExCQkJLyogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLworKwkuYnl0 ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1l ICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4 MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0 cmluZyAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIx MjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkyCQkJ LyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19iYXNlX3R5cGUg Ki8KKysJLmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyog RFdfQVRfbmFtZSAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwku dWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyog RFdfRk9STV9kYXRhMSAqLworKwkudWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5jb2RpbmcgKi8K KysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxl YjEyOAkweDMJCQkvKiAoYWJicmV2IGNvZGUpICovCisrCS51bGViMTI4CTB4MTYJCQkvKiAoVEFH OiBEV19UQUdfdHlwZWRlZikgKi8KKysJLmJ5dGUJCTB4MQkJCS8qIERXX2NoaWxkcmVuX3llcyAq LworKwkudWxlYjEyOAkweDMJCQkvKiAoRFdfQVRfbmFtZSkgKi8KKysJLnVsZWIxMjgJMHg4CQkJ LyogKERXX0ZPUk1fc3RyaW5nKSAqLworKwkudWxlYjEyOAkweDQ5CQkJLyogKERXX0FUX3R5cGUp ICovCisrCS51bGViMTI4CTB4MTMJCQkvKiAoRFdfRk9STV9yZWY0KSAqLworKwkuYnl0ZQkJMHgw CisrCS5ieXRlCQkweDAKKysKKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9kdzItdHlwZWRlZi1jaGlsZHJlbi5leHAKK0BAIC0wLDAgKzEsMzcg QEAKKysjIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKwor KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMK KysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKytsb2FkX2xpYiBkd2FyZi5leHAKKysKKysj IE5vdGU6IEluc3BpcmVkIGZyb20gZHcyLWJhc2ljLmV4cC4KKysKKysjIFRoaXMgdGVzdCBjYW4g b25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMu CisraWYgeyFbZHdhcmYyX3N1cHBvcnRdfSB7CisrICAgIHJldHVybiAwCisrfQorKworK3NldCB0 ZXN0ZmlsZSAiZHcyLXR5cGVkZWYtY2hpbGRyZW4iCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u UworK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0ueAorKworK2lm ICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5m aWxlfSIgb2JqZWN0IHtub2RlYnVnfV0gIT0gIiIgfSB7CisrICAgIHJldHVybiAtMQorK30KKysK KytnZGJfZXhpdAorK2dkYl9zdGFydAorKworK2dkYl90ZXN0ICJmaWxlICRiaW5maWxlIiBcCisr CSAid2FybmluZzogRFdfVEFHX3R5cGVkZWYgaGFzIGNoaWxkZW4gLSBHQ0MgUFIgZGVidWcvNDc1 MTAgYnVnIC0gRElFIGF0IC4qIiBcCisrCSAid2FybmluZyBtZXNzYWdlIgorCgpkaWZmIC0tZ2l0 IGEvZ2RiLXRlc3QtcHAtaGludC1lcnJvci5wYXRjaCBiL2dkYi10ZXN0LXBwLWhpbnQtZXJyb3Iu cGF0Y2gKaW5kZXggZjcyN2VjYS4uOGZlY2U4NSAxMDA2NDQKLS0tIGEvZ2RiLXRlc3QtcHAtaGlu dC1lcnJvci5wYXRjaAorKysgYi9nZGItdGVzdC1wcC1oaW50LWVycm9yLnBhdGNoCkBAIC0yNywx MCArMjcsMTAgQEAgZ2RiL3Rlc3RzdWl0ZS8KIAkqIGdkYi5weXRob24vcHktcHJldHR5cHJpbnQu cHkgKGNsYXNzIHBwX2hpbnRfZXJyb3IpOiBOZXcuCiAJKHJlZ2lzdGVyX3ByZXR0eV9wcmludGVy cyk6IFJlZ2lzdGVyIGl0LgogCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuYworSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0 MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LXByZXR0eXByaW50LmMJMjAxMS0wMS0wMSAxNjozMzo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4yLjUwLjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmlu dC5jCTIwMTEtMDEtMTcgMTY6MDg6MTYuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi45MC4y MDExMDQxMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5jCTIw MTEtMDMtMzEgMjE6NTk6MjYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi45MC4yMDExMDQx MS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuYwkyMDExLTA0LTExIDE5 OjQyOjEwLjAwMDAwMDAwMCArMDIwMAogQEAgLTQ0LDYgKzQ0LDEwIEBAIHN0cnVjdCBsYXp5c3Ry aW5nIHsKICAgIGNvbnN0IGNoYXIgKmxhenlfc3RyOwogIH07CkBAIC00MywxNyArNDMsMTcgQEAg SW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXBy ZXR0eXByaW50LmMKICBzdHJ1Y3QgUyA6IHB1YmxpYyBzIHsKICAgIGludCB6czsKIEBAIC0yMTUs NiArMjE5LDcgQEAgbWFpbiAoKQotICAgbm9zdHJpbmdfdHlwZSBuc3R5cGU7CisgICBub3N0cmlu Z190eXBlIG5zdHlwZSwgbnN0eXBlMjsKICAgIHN0cnVjdCBucyBucywgbnMyOwogICAgc3RydWN0 IGxhenlzdHJpbmcgZXN0cmluZywgZXN0cmluZzI7CiArICBzdHJ1Y3QgaGludF9lcnJvciBoaW50 X2Vycm9yOwogIAogICAgbnN0eXBlLmVsZW1lbnRzID0gbmFycmF5OwogICAgbnN0eXBlLmxlbiA9 IDA7Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktcHJldHR5cHJpbnQuZXhwCitJbmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi41MC4yMDExMDExNy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmlu dC5leHAJMjAxMS0wMS0wMSAxNjozMzo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUw LjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAJMjAx MS0wMS0xNyAxNjowODozMy4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4yLjkwLjIwMTEwNDEx Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cAkyMDExLTAz LTA3IDE3OjAzOjAzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cAkyMDExLTA0LTExIDE5OjQx OjU2LjAwMDAwMDAwMCArMDIwMAogQEAgLTk3LDYgKzk3LDggQEAgcHJvYyBydW5fbGFuZ190ZXN0 cyB7bGFuZ30gewogICAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBwcF9sc19lbmNvZGlu ZyA9ICdVVEYtOCciCiAgICAgIGdkYl90ZXN0ICJwcmludCBlc3RyaW5nMiIgIlwiZW1iZWRkZWQg XCIsIDxpbmNvbXBsZXRlIHNlcXVlbmNlIFxcXFwzMDI+IgpAQCAtNjMsMTEgKzYzLDExIEBAIElu ZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0 dHlwcmludC5leHAKICAgICAgZ2RiX3Rlc3QgInByaW50IGMiICIgPSBjb250YWluZXIgXCJjb250 YWluZXJcIiB3aXRoIDIgZWxlbWVudHMgPSB7JG5sICouMC4gPSAyMywkbmwgKi4xLiA9IDcyJG5s fSIKICAKICAgICAgZ2RiX3Rlc3QgInByaW50IG5zdHlwZSIgIiA9IHskbmwgKi4wLiA9IDcsJG5s ICouMS4gPSA0MiRubH0iCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktcHJldHR5cHJpbnQucHkKK0luZGV4OiBnZGItNy4yLjkwLjIwMTEwNDEx L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5weQogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt cHJldHR5cHJpbnQucHkJMjAxMS0wMS0wMSAxNjozMzo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4yLjUwLjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmlu dC5weQkyMDExLTAxLTE3IDE2OjA4OjE2LjAwMDAwMDAwMCArMDEwMAotQEAgLTE1Niw2ICsxNTYs MTggQEAgY2xhc3MgcHBfbHM6CistLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5weQkyMDExLTAzLTMxIDIxOjU5OjI2LjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXByZXR0eXByaW50LnB5CTIwMTEtMDQtMTEgMTk6NDE6NTYuMDAwMDAwMDAwICsw MjAwCitAQCAtMTYxLDYgKzE2MSwxOCBAQCBjbGFzcyBwcF9sczoKICAgICAgZGVmIGRpc3BsYXlf aGludCAoc2VsZik6CiAgICAgICAgICByZXR1cm4gJ3N0cmluZycKICAKQEAgLTg2LDcgKzg2LDcg QEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LXByZXR0eXByaW50LnB5CiAgY2xhc3MgcHBfb3V0ZXI6CiAgICAgICJQcmludCBzdHJ1Y3Qgb3V0 ZXIiCiAgCi1AQCAtMjQxLDYgKzI1Myw5IEBAIGRlZiByZWdpc3Rlcl9wcmV0dHlfcHJpbnRlcnMg KCk6CitAQCAtMjQ2LDYgKzI1OCw5IEBAIGRlZiByZWdpc3Rlcl9wcmV0dHlfcHJpbnRlcnMgKCk6 CiAgICAgIHByZXR0eV9wcmludGVyc19kaWN0W3JlLmNvbXBpbGUgKCdec3RydWN0IG91dGVyc3Ry dWN0JCcpXSAgPSBwcF9vdXRlcgogICAgICBwcmV0dHlfcHJpbnRlcnNfZGljdFtyZS5jb21waWxl ICgnXm91dGVyc3RydWN0JCcpXSAgPSBwcF9vdXRlcgogIAoKZGlmZiAtLWdpdCBhL2dkYi5zcGVj IGIvZ2RiLnNwZWMKaW5kZXggMGY0YTYyYy4uZWJmNjk5YiAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMK KysrIGIvZ2RiLnNwZWMKQEAgLTIzLDExICsyMywxMSBAQCBOYW1lOiBnZGIlez9fd2l0aF9kZWJ1 ZzotZGVidWd9CiAjIFNldCB2ZXJzaW9uIHRvIGNvbnRlbnRzIG9mIGdkYi92ZXJzaW9uLmluLgog IyBOT1RFOiB0aGUgRlNGIGdkYiB2ZXJzaW9ucyBhcmUgbnVtYmVyZWQgTi5NIGZvciBvZmZpY2lh bCByZWxlYXNlcywgbGlrZSA2LjMKICMgYW5kLCBzaW5jZSBKYW51YXJ5IDIwMDUsIFguWS5aLmRh dGUgZm9yIGRhaWx5IHNuYXBzaG90cywgbGlrZSA2LjMuNTAuMjAwNTAxMTIgIyAoZGFpbHkgc25h cHNob3QgZnJvbSBtYWlsaW5lKSwgb3IgNi4zLjAuMjAwNDAxMTIgKGhlYWQgb2YgdGhlIHJlbGVh c2UgYnJhbmNoKS4KLVZlcnNpb246IDcuMi41MC4yMDExMDMyOAorVmVyc2lvbjogNy4yLjkwLjIw MTEwNDExCiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZl ZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBg bmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0 ZXN0aW5nLgotUmVsZWFzZTogMzMlez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19JXs/ZGlzdH0K K1JlbGVhc2U6IDM0JXs/X3dpdGhfdXBzdHJlYW06LnVwc3RyZWFtfSV7P2Rpc3R9CiAKIExpY2Vu c2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFuZCBHUEx2 Misgd2l0aCBleGNlcHRpb25zIGFuZCBHUEwrIGFuZCBMR1BMdjIrIGFuZCBCU0QgYW5kIFB1Ymxp YyBEb21haW4KIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKQEAgLTQ2OCwxMCArNDY4LDYg QEAgUGF0Y2g0MTI6IGdkYi11bnVzZWQtcmV2ZXJ0LnBhdGNoCiAjPXB1c2grd29yazogSXQgc2hv dWxkIGJlIGZpeGVkIHByb3Blcmx5IGluc3RlYWQuCiBQYXRjaDQxNzogZ2RiLWJ6NTQxODY2LXJ3 YXRjaC1iZWZvcmUtcnVuLnBhdGNoCiAKLSMgRml4IGNyYXNoIHdoZW4gdXNpbmcgR05VIElGVU5D IGNhbGwgZnJvbSBicmVha3BvaW50IGNvbmRpdGlvbi4KLSM9ZHJvcDogQWZ0ZXIgYXJjaGVyLWph bmtyYXRvY2h2aWwtaWZ1bmMgZ2V0cyBpbiB0aGlzIG9uZSBnZXRzIG9ic29sZXRlZC4KLVBhdGNo NDU0OiBnZGItYno1Mzk1OTAtZ251LWlmdW5jLWZpeC1jb25kLnBhdGNoCi0KICMgV29ya2Fyb3Vu ZCBub24tc3RvcCBtb3JpYnVuZCBsb2NhdGlvbnMgZXhwbG9pdGVkIGJ5IGtlcm5lbCB1dHJhY2Ug KEJaIDU5MDYyMykuCiAjPXB1c2grd29yazogQ3VycmVudGx5IGl0IGlzIHN0aWxsIG5vdCBmdWxs eSBzYWZlLgogUGF0Y2g0NTk6IGdkYi1tb3JpYnVuZC11dHJhY2Utd29ya2Fyb3VuZC5wYXRjaApA QCAtNTAyLDEwICs0OTgsNiBAQCBQYXRjaDQ5MTogZ2RiLWdkYi1hZGQtaW5kZXgtc2NyaXB0LnBh dGNoCiAjPWRyb3Ard29yazogSW5mZXJpb3Igb2JqZWN0cyBzaG91bGQgYmUgcmVhZCBpbiBwYXJ0 cywgdGhlbiB0aGlzIHBhdGNoIGdldHMgb2Jzb2xldGVkLgogUGF0Y2g0OTY6IGdkYi1iejU2ODI0 OC1vb20taXMtZXJyb3IucGF0Y2gKIAotIyBXb3JrYXJvdW5kIGZhbHNlIEdDQyB3YXJuaW5nKHMp LgotIz1wdXNoCi1QYXRjaDQ5NzogZ2RiLWZhbHNlLWdjYy13YXJuaW5nLnBhdGNoCi0KICMgRml4 IGdjb3JlIHdyaXRlciBmb3IgLVdsLC16LHJlbHJvIChQUiBjb3JlZmlsZXMvMTE4MDQpLgogIz1w dXNoOiBUaGVyZSBpcyBkaWZmZXJlbnQgcGF0Y2ggb24gZ2RiLXBhdGNoZXMsIHdhaXRpbmcgbm93 IGZvciByZXNvbHV0aW9uIGluIGtlcm5lbC4KIFBhdGNoNTA0OiBnZGItYno2MjM3NDktZ2NvcmUt cmVscm8ucGF0Y2gKQEAgLTUzNiwxMCArNTI4LDYgQEAgUGF0Y2g1NDc6IGdkYi10ZXN0LWR3Mi1h cmFuZ2VzLnBhdGNoCiAjID1mZWRvcmF0ZXN0CiBQYXRjaDU0ODogZ2RiLXRlc3QtZXhwci1jdW11 bGF0aXZlLWFyY2hlci5wYXRjaAogCi0jIEZpeCBEV0FSRi0zKyBEV19BVF9hY2Nlc3NpYmlsaXR5 IGRlZmF1bHQgYXNzdW1wdGlvbiBmb3IgRjE1IGdjYy00LjYuCi0jID1wdXNoCi1QYXRjaDU1NDog Z2RiLWR3YXJmMy1hY2Nlc3NpYmlsaXR5LnBhdGNoCi0KICMgVGVtcG9yYXJ5IGZpeCBvZiBGMTUg Z2NjLTQuNiBjaGlsZCBESUVzIG9mIERXX1RBR190eXBlZGVmIChCWiA2NzIyMzApLgogIyA9cHVz aAogUGF0Y2g1NTU6IGdkYi1nY2M0Ni10eXBlZGVmLnBhdGNoCkBAIC04MTQsNyArODAyLDYgQEAg cm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAu YwogJXBhdGNoNDA4IC1wMQogJXBhdGNoNDEyIC1wMQogJXBhdGNoNDE3IC1wMQotJXBhdGNoNDU0 IC1wMQogJXBhdGNoNDU5IC1wMQogJXBhdGNoNDcwIC1wMQogJXBhdGNoNDc1IC1wMQpAQCAtODI0 LDcgKzgxMSw2IEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhw LmMgZ2RiL3AtZXhwLmMKICVwYXRjaDQ5MCAtcDEKICVwYXRjaDQ5MSAtcDEKICVwYXRjaDQ5NiAt cDEKLSVwYXRjaDQ5NyAtcDEKICVwYXRjaDUwNCAtcDEKICVwYXRjaDUxMCAtcDEKICVwYXRjaDUx MSAtcDEKQEAgLTgzMywxMyArODE5LDEzIEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhw LmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKICVwYXRjaDU0MiAtcDEKICVwYXRjaDU0NyAt cDEKICVwYXRjaDU0OCAtcDEKLSVwYXRjaDU1NCAtcDEKICVwYXRjaDU1NSAtcDEKICVwYXRjaDU1 NiAtcDEKICVwYXRjaDU3MSAtcDEKICVwYXRjaDU3MiAtcDEKICVwYXRjaDU3MyAtcDEKICVwYXRj aDU3NCAtcDEKKyVwYXRjaDU3OSAtcDEKIAogJXBhdGNoMzkwIC1wMQogJXBhdGNoMzkzIC1wMQpA QCAtODU3LDggKzg0Myw2IEBAIGZpCiAlcGF0Y2g0ODcgLXAxCiAlZW5kaWYgIyAwJXs/cmhlbDox fQogCi0lcGF0Y2g1NzkgLXAxCi0KIGZpbmQgLW5hbWUgIioub3JpZyIgfCB4YXJncyBybSAtZgog ISBmaW5kIC1uYW1lICIqLnJlaiIgIyBTaG91bGQgbm90IGhhcHBlbi4KIApAQCAtMTI3MCw2ICsx MjU0LDEwIEBAIGZpCiAle19pbmZvZGlyfS9nZGIuaW5mbyoKIAogJWNoYW5nZWxvZworKiBNb24g QXByIDExIDIwMTEgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0g Ny4yLjkwLjIwMTEwNDExLTM0LmZjMTUKKy0gUmViYXNlIHRvIEZTRiBHREIgNy4yLjkwLjIwMTEw NDExICh3aGljaCBpcyBhIDcuMyBwcmUtcmVsZWFzZSkuCistIEluY2x1ZGUgdGhlIHByb3BlciBm aXggZm9yIGFub255bW91cyBzdHJ1Y3QgdHlwZWRlZnMgKFRvbSBUcm9tZXksIEJaIDY3MjIzMCku CisKICogV2VkIE1hciAzMCAyMDExIEZhYmlvIE0uIERpIE5pdHRvIDxmZGluaXR0b0ByZWRoYXQu Y29tPiAtIDcuMi41MC4yMDExMDMyOC0zMy5mYzE1CiAtIENsZWFudXAgc3BlYyBmaWxlIHRvIGFk ZCBzcGFyY3xzcGFyY3Y5fHNwYXJjNjQuCiAtIEFkZCBzcGFyYyBzcGVjaWZpYyB3b3JrYXJvdW5k cyB0byB0b29sY2hhaW4gYmFkbmVzczoKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwpp bmRleCBlN2Y1YmE3Li5mZjI3NTU3IDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMK QEAgLTEsMiArMSwyIEBACiAwNGU1YzRiMWI5ZTYzMzQyMmNjNDg5OTBmZTYxOTU4ZCAgbGlic3Rk YysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKLWI1OTBlMGMxMmE1MDYwMTFlZjJjMjdmNjc3 YWE2OWY3ICBnZGItNy4yLjUwLjIwMTEwMzI4LnRhci5iejIKKzcwOTVmM2Y0MTJlMjdhNzNjMzlk ZjRhYTczN2EzODZhICBnZGItNy4yLjkwLjIwMTEwNDExLnRhci5iejIK