From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Rebase to FSF GDB 7.3.50.20110722. Date: Thu, 23 Jul 2026 18:30:00 GMT Message-ID: <178483140020.1.13576634487666448575.rpms-gdb-3b55f7833b4f@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 3b55f7833b4f6a84b0950fefa0ba9f505fa23f37 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogM2I1NWY3ODMzYjRmNmE4NGIwOTUwZmVmYTBiYTlmNTA1ZmEyM2YzNwog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMS0wNy0yM1QwMDo0MTo1NiswMjowMAogICAg ICAgICAgICBTdGF0cyAgOiArMTk1Ny8tMjUyNjAgaW4gMzcgZmlsZShzKQogICAgICAgICAgICBV UkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jLzNiNTVmNzgz M2I0ZjZhODRiMDk1MGZlZmEwYmE5ZjUwNWZhMjNmMzc/YnJhbmNoPWZpeC1kdXAtcGF0Y2gKCiAg ICAgICAgICAgIExvZzoKICAgICAgICAgICAgUmViYXNlIHRvIEZTRiBHREIgNy4zLjUwLjIwMTEw NzIyLgpJbXByb3ZlIGdjYy00LjYgc3RkYXJnIGZhbHNlIHByb2xvZ3VlIGVuZCB3b3JrYXJvdW5k IChHREIgUFIgMTI0MzUgKyBHQ0MgUFIgNDc0NzEpLgoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdu b3JlIGIvLmdpdGlnbm9yZQppbmRleCBjMTY0M2NmLi41OWY3NzA5IDEwMDY0NAotLS0gYS8uZ2l0 aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTEsMiArMSwyIEBACiAvbGlic3RkYysrLXYzLXB5 dGhvbi1yMTU1OTc4LnRhci5iejIKLS9nZGItNy4yLjkwLjIwMTEwNzAzLnRhci5iejIKKy9nZGIt Ny4zLjUwLjIwMTEwNzIyLnRhci5iejIKCmRpZmYgLS1naXQgYS9nZGItNi4zLWlhNjQtc2lnaWxs LTIwMDUxMTE1LnBhdGNoIGIvZ2RiLTYuMy1pYTY0LXNpZ2lsbC0yMDA1MTExNS5wYXRjaAppbmRl eCA4NGQ4M2NlLi5iZjhhMWYxIDEwMDY0NAotLS0gYS9nZGItNi4zLWlhNjQtc2lnaWxsLTIwMDUx MTE1LnBhdGNoCisrKyBiL2dkYi02LjMtaWE2NC1zaWdpbGwtMjAwNTExMTUucGF0Y2gKQEAgLTEy LDEwICsxMiwxMCBAQCBnZGIvdGVzdHN1aXRlOgogCSogZ2RiLmFyY2gvaWE2NC1zaWdpbGwuYzog TmV3IHRlc3QuCiAJKiBnZGIuYXJjaC9pYTY0LXNpZ2lsbC5leHA6IERpdHRvLgogCi1JbmRleDog Z2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2lhNjQtc2lnaWxsLmV4 cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9pYTY0 LXNpZ2lsbC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0c3VpdGUv Z2RiLmFyY2gvaWE2NC1zaWdpbGwuZXhwCTIwMTEtMDEtMDEgMDA6NTU6MDQuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2lhNjQt c2lnaWxsLmV4cAkyMDExLTA3LTIyIDE5OjE2OjEzLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCAr MSw0OSBAQAogKyMgICBDb3B5cmlnaHQgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KICsKQEAgLTY2LDEwICs2NiwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIv dGVzdHN1aXRlL2dkYi5hcmNoL2lhNjQtc2lnaWxsLmV4cAogK2dkYl90ZXN0ICJoYW5kbGUgU0lH SUxMIG5vc3RvcCBub3ByaW50IiAiU0lHSUxMLipOby4qTm8uKlllcy4qIiAiaGFuZGxlIHNpZ2ls bCIKICtnZGJfdGVzdCAicnVuIiAiU3RhcnRpbmcgcHJvZ3JhbS4qaWE2NC1zaWdpbGwuKlxbTmV3 IHRocmVhZC4qXF0uKmhlbGxvIHdvcmxkLipQcm9ncmFtIGV4aXRlZCBub3JtYWxseS4iICJydW4g dG8gZXhpdCIKICsgCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dk Yi5hcmNoL2lhNjQtc2lnaWxsLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gvaWE2NC1zaWdpbGwuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMDEy MzEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9pYTY0LXNpZ2lsbC5jCTIwMTEtMDEtMDEgMDA6NTU6 MDQuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL2lhNjQtc2lnaWxsLmMJMjAxMS0wNy0yMiAxOToxNjoxMy4wMDAwMDAwMDAgKzAy MDAKIEBAIC0wLDAgKzEsOCBAQAogKyNpbmNsdWRlIDxzdGRpby5oPgogKwpAQCAtNzksMTEgKzc5 LDExIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv aWE2NC1zaWdpbGwuYwogKyAgcmV0dXJuIDA7CiArfQogKwotSW5kZXg6IGdkYi03LjIuNTAuMjAx MDEyMzEvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbGlu dXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMjMxLm9yaWcvZ2RiL2xp bnV4LW5hdC5jCTIwMTEtMDEtMDEgMDA6NTQ6MDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu Mi41MC4yMDEwMTIzMS9nZGIvbGludXgtbmF0LmMJMjAxMS0wMS0wMSAwMDo1NTo1OC4wMDAwMDAw MDAgKzAxMDAKLUBAIC0zNjUyLDcgKzM2NTIsOCBAQCByZXRyeToKKy0tLSBnZGItNy4zLjUwLjIw MTEwNzIyLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMDctMjIgMTk6MTU6MDUuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbGludXgtbmF0LmMJMjAxMS0wNy0y MiAxOToxNjoxMy4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zNzMzLDcgKzM3MzMsOCBAQCByZXRyeToK ICAgICAgIHRocmVhZHMgY2FuIGJlIGEgYml0IHRpbWUtY29uc3VtaW5nIHNvIGlmIHdlIHdhbnQg ZGVjZW50CiAgICAgICBwZXJmb3JtYW5jZSB3aXRoIGhlYXZpbHkgbXVsdGktdGhyZWFkZWQgcHJv Z3JhbXMsIGVzcGVjaWFsbHkgd2hlbgogICAgICAgdGhleSdyZSB1c2luZyBhIGhpZ2ggZnJlcXVl bmN5IHRpbWVyLCB3ZSdkIGJldHRlciBhdm9pZCBpdCBpZiB3ZQpAQCAtOTMsMTQgKzkzLDMgQEAg SW5kZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2xpbnV4LW5hdC5jCiAgCiAgICBpZiAoV0lG U1RPUFBFRCAoc3RhdHVzKSkKICAgICAgewotQEAgLTM2NzAsNyArMzY3MSw5IEBAIHJldHJ5Ogot IAkgICYmIGluZi0+Y29udHJvbC5zdG9wX3Nvb24gPT0gTk9fU1RPUF9RVUlFVExZCi0gCSAgJiYg c2lnbmFsX3N0b3Bfc3RhdGUgKHNpZ25vKSA9PSAwCi0gCSAgJiYgc2lnbmFsX3ByaW50X3N0YXRl IChzaWdubykgPT0gMAotLQkgICYmIHNpZ25hbF9wYXNzX3N0YXRlIChzaWdubykgPT0gMSkKLSsJ ICAmJiBzaWduYWxfcGFzc19zdGF0ZSAoc2lnbm8pID09IDEKLSsJICAmJiBzaWdubyAhPSBUQVJH RVRfU0lHTkFMX0lMTAotKwkgICYmIHNpZ25vICE9IFRBUkdFVF9TSUdOQUxfVFJBUCkKLSAJewot IAkgIC8qIEZJTVhFOiBrZXR0ZW5pcy8yMDAxLTA2LTA2OiBTaG91bGQgd2UgcmVzdW1lIGFsbCB0 aHJlYWRzCi0gCSAgICAgaGVyZT8gIEl0IGlzIG5vdCBjbGVhciB3ZSBzaG91bGQuICBHREIgbWF5 IG5vdCBleHBlY3QKCmRpZmYgLS1naXQgYS9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRj aCBiL2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3LnBhdGNoCmluZGV4IDE2NzE1NDYuLmYzMjcw NTEgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3LnBhdGNoCisrKyBiL2dk Yi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3LnBhdGNoCkBAIC0xMSwxMSArMTEsMTEgQEAKIAogICAg ICAgICAqIGdkYi50ZXhpbmZvIChGaWxlIE9wdGlvbnMpOiBEb2N1bWVudCAtLXJlYWRuZXZlci4K IAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL2RvYy9nZGIudGV4aW5mbworSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9nZGIudGV4aW5mbwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjIuOTAuMjAxMTA0MTEub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDQtMTEg MTk6MTE6NTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvZG9j L2dkYi50ZXhpbmZvCTIwMTEtMDQtMTEgMTk6MTU6NTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTAw Nyw2ICsxMDA3LDEyIEBAIFJlYWQgZWFjaCBzeW1ib2wgZmlsZSdzIGVudGlyZSBzeW1ib2wgdGEK Ky0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDExLTA3 LTIyIDE5OjA4OjE5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDExLTA3LTIyIDE5OjE1OjEzLjAwMDAwMDAwMCArMDIwMAorQEAg LTEwMDUsNiArMTAwNSwxMiBAQCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUncyBlbnRpcmUgc3ltYm9s IHRhCiAgdGhlIGRlZmF1bHQsIHdoaWNoIGlzIHRvIHJlYWQgaXQgaW5jcmVtZW50YWxseSBhcyBp dCBpcyBuZWVkZWQuCiAgVGhpcyBtYWtlcyBzdGFydHVwIHNsb3dlciwgYnV0IG1ha2VzIGZ1dHVy ZSBvcGVyYXRpb25zIGZhc3Rlci4KICAKQEAgLTI4LDExICsyOCwxMSBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDQxMS9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJsZQogIAogIEBub2Rl IE1vZGUgT3B0aW9ucwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL21haW4uYworSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIuOTAuMjAxMTA0MTEub3JpZy9nZGIvbWFpbi5jCTIwMTEtMDQtMTEgMTk6MTE6NTYuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvbWFpbi5jCTIwMTEtMDQtMTEg MTk6MTU6NTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMzk4LDYgKzM5OCw3IEBAIGNhcHR1cmVkX21h aW4gKHZvaWQgKmRhdGEpCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9tYWluLmMJ MjAxMS0wNy0yMiAxOToxNDoyNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9tYWluLmMJMjAxMS0wNy0yMiAxOToxNToxMy4wMDAwMDAwMDAgKzAyMDAKK0BAIC0z OTksNiArMzk5LDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgICAgICB7InhkYiIs IG5vX2FyZ3VtZW50LCAmeGRiX2NvbW1hbmRzLCAxfSwKICAgICAgICB7ImRieCIsIG5vX2FyZ3Vt ZW50LCAmZGJ4X2NvbW1hbmRzLCAxfSwKICAgICAgICB7InJlYWRub3ciLCBub19hcmd1bWVudCwg JnJlYWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwKQEAgLTQwLDcgKzQwLDcgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA0MTEvZ2RiL21haW4uYwogICAgICAgIHsiciIsIG5vX2FyZ3VtZW50LCAmcmVh ZG5vd19zeW1ib2xfZmlsZXMsIDF9LAogICAgICAgIHsicXVpZXQiLCBub19hcmd1bWVudCwgJnF1 aWV0LCAxfSwKICAgICAgICB7InEiLCBub19hcmd1bWVudCwgJnF1aWV0LCAxfSwKLUBAIC0xMDY0 LDYgKzEwNjUsNyBAQCBPcHRpb25zOlxuXG5cCitAQCAtMTA2NSw2ICsxMDY2LDcgQEAgT3B0aW9u czpcblxuXAogICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAogICAgLS1xdWlldCAgICAgICAgICAg IERvIG5vdCBwcmludCB2ZXJzaW9uIG51bWJlciBvbiBzdGFydHVwLlxuXAogICAgLS1yZWFkbm93 ICAgICAgICAgIEZ1bGx5IHJlYWQgc3ltYm9sIGZpbGVzIG9uIGZpcnN0IGFjY2Vzcy5cblwKQEAg LTQ4LDEwICs0OCwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvbWFpbi5jCiAg IiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCiAgICAtLXNlPUZJTEUgICAg ICAgICAgVXNlIEZJTEUgYXMgc3ltYm9sIGZpbGUgYW5kIGV4ZWN1dGFibGUgZmlsZS5cblwKLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9zeW1maWxlLmMKK0luZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9zeW1maWxlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEw NDExLm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDExLTAzLTIzIDE5OjIzOjU1LjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3N5bWZpbGUuYwkyMDExLTA0LTExIDE5OjE1 OjUxLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc3lt ZmlsZS5jCTIwMTEtMDUtMTEgMDY6NTY6MDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvc3ltZmlsZS5jCTIwMTEtMDctMjIgMTk6MTU6MTMuMDAwMDAwMDAwICsw MjAwCiBAQCAtODEsNiArODEsNyBAQCBzdGF0aWMgdm9pZCBjbGVhcl9zeW10YWJfdXNlcnNfY2xl YW51cCAoCiAgCiAgLyogR2xvYmFsIHZhcmlhYmxlcyBvd25lZCBieSB0aGlzIGZpbGUuICAqLwpA QCAtNjAsMTAgKzYwLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9zeW1maWxl LmMKICAKICAvKiBFeHRlcm5hbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyByZWZlcmVuY2VkLiAg Ki8KICAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjkwLjIwMTEwNDExLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA0LTExIDE5OjEx OjU1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL2R3YXJmMnJl YWQuYwkyMDExLTA0LTExIDE5OjE2OjAxLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMjIgMTk6MDg6MTkuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYycmVhZC5jCTIwMTEt MDctMjIgMTk6MTU6NDEuMDAwMDAwMDAwICswMjAwCiBAQCAtNTgsNiArNTgsNyBAQAogICNpbmNs dWRlICJjLWxhbmcuaCIKICAjaW5jbHVkZSAidmFscHJpbnQuaCIKQEAgLTcyLDggKzcyLDggQEAg SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL2R3YXJmMnJlYWQuYwogIAogICNpbmNsdWRl IDxmY250bC5oPgogICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtMTM1MSw4ICsxMzUyLDkg QEAgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQotICAgICAgIGJmZF9t YXBfb3Zlcl9zZWN0aW9ucyAob2JqZmlsZS0+b2JmZCwgZHdhcmYyX2xvY2F0ZV9zZWN0aW9ucywg TlVMTCk7CitAQCAtMTM4OCw4ICsxMzg5LDkgQEAgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgbmFt ZXMpOwogICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSA9IG9iamZpbGU7CiAgICAg IH0KIC0gIHJldHVybiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvLmFzZWN0aW9uICE9IE5VTEwK QEAgLTgzLDEyICs4MywxMiBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvZHdhcmYy cmVhZC5jCiArCSAgICAgICYmIGR3YXJmMl9wZXJfb2JqZmlsZS0+YWJicmV2LmFzZWN0aW9uICE9 IE5VTEwpKTsKICB9CiAgCi0gLyogV2hlbiBsb2FkaW5nIHNlY3Rpb25zLCB3ZSBjYW4gZWl0aGVy IGxvb2sgZm9yICIuPG5hbWU+Iiwgb3IgZm9yCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9n ZGIvdG9wLmgKKyAvKiBXaGVuIGxvYWRpbmcgc2VjdGlvbnMsIHdlIGxvb2sgZWl0aGVyIGZvciB1 bmNvbXByZXNzZWQgc2VjdGlvbiBvciBmb3IKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90b3AuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0MTEub3JpZy9nZGIvdG9w LmgJMjAxMS0wMS0wMSAxNjozMzoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIw MTEwNDExL2dkYi90b3AuaAkyMDExLTA0LTExIDE5OjE1OjUxLjAwMDAwMDAwMCArMDIwMAotQEAg LTYxLDYgKzYxLDcgQEAgZXh0ZXJuIHZvaWQgc2V0X3Byb21wdCAoY2hhciAqKTsKKy0tLSBnZGIt Ny4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3RvcC5oCTIwMTEtMDctMjEgMTM6MDM6NDUuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdG9wLmgJMjAxMS0wNy0yMiAx OToxNToxMy4wMDAwMDAwMDAgKzAyMDAKK0BAIC01OSw2ICs1OSw3IEBAIGV4dGVybiB2b2lkIHNl dF9wcm9tcHQgKGNvbnN0IGNoYXIgKik7CiAgCiAgLyogRnJvbSByYW5kb20gcGxhY2VzLiAgKi8K ICBleHRlcm4gaW50IHJlYWRub3dfc3ltYm9sX2ZpbGVzOwoKZGlmZiAtLWdpdCBhL2dkYi02LjMt c2VjdXJpdHktZXJyYXRhLTIwMDUwNjEwLnBhdGNoIGIvZ2RiLTYuMy1zZWN1cml0eS1lcnJhdGEt MjAwNTA2MTAucGF0Y2gKaW5kZXggMGZlNjhkZi4uMzc2MzMzMiAxMDA2NDQKLS0tIGEvZ2RiLTYu My1zZWN1cml0eS1lcnJhdGEtMjAwNTA2MTAucGF0Y2gKKysrIGIvZ2RiLTYuMy1zZWN1cml0eS1l cnJhdGEtMjAwNTA2MTAucGF0Y2gKQEAgLTE5LDEwICsxOSwxMCBAQCBQcm9wb3NlZCB1cHN0cmVh bSBidXQgbmV2ZXIgY29tbWl0dGVkIHVwc3RyZWFtLgogICAgICAgICAoc291cmNlX2NvbW1hbmQp OiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4gIENoZWNrIHBlcm1pc3Npb25zIGlmCiAgICAgICAgIEZS T01fVFRZIGlzIC0xLgogCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvY2xpL2NsaS1j bWRzLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jbGkvY2xpLWNtZHMuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvY2xpL2NsaS1jbWRzLmMJ MjAxMC0xMi0yOSAwMzoxMTowNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAx MjMxL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDExLTAxLTAxIDAwOjUzOjUxLjAwMDAwMDAwMCArMDEw MAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMS0w Ni0wNyAxOToyNjo0Ni4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9jbGkvY2xpLWNtZHMuYwkyMDExLTA3LTIyIDE5OjE0OjI1LjAwMDAwMDAwMCArMDIwMAogQEAg LTM5LDYgKzM5LDcgQEAKICAjaW5jbHVkZSAic291cmNlLmgiCiAgI2luY2x1ZGUgImRpc2FzbS5o IgpAQCAtMzEsNyArMzEsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvY2xpL2Ns aS1jbWRzLmMKICAKICAjaW5jbHVkZSAidWktb3V0LmgiCiAgCi1AQCAtNDg4LDcgKzQ4OSw3IEBA IFNjcmlwdCBmaWxlbmFtZSBleHRlbnNpb24gcmVjb2duaXRpb24gaXMKK0BAIC00ODksNyArNDkw LDcgQEAgc2hvd19zY3JpcHRfZXh0X21vZGUgKHN0cnVjdCB1aV9maWxlICpmaQogIAogIGludAog IGZpbmRfYW5kX29wZW5fc2NyaXB0IChjb25zdCBjaGFyICpzY3JpcHRfZmlsZSwgaW50IHNlYXJj aF9wYXRoLApAQCAtNDAsNyArNDAsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIv Y2xpL2NsaS1jbWRzLmMKICB7CiAgICBjaGFyICpmaWxlOwogICAgaW50IGZkOwotQEAgLTUxNCw2 ICs1MTUsMzIgQEAgZmluZF9hbmRfb3Blbl9zY3JpcHQgKGNvbnN0IGNoYXIgKnNjcmlwdAorQEAg LTUxNSw2ICs1MTYsMzIgQEAgZmluZF9hbmRfb3Blbl9zY3JpcHQgKGNvbnN0IGNoYXIgKnNjcmlw dAogICAgICAgIHJldHVybiAwOwogICAgICB9CiAgCkBAIC03Myw3ICs3Myw3IEBAIEluZGV4OiBn ZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9jbGkvY2xpLWNtZHMuYwogICAgZG9fY2xlYW51cHMgKG9s ZF9jbGVhbnVwcyk7CiAgCiAgICAqc3RyZWFtcCA9IGZkb3BlbiAoZmQsIEZPUEVOX1JUKTsKLUBA IC01NzMsMTMgKzYwMCwxNCBAQCBzb3VyY2Vfc2NyaXB0X3dpdGhfc2VhcmNoIChjb25zdCBjaGFy ICpmCitAQCAtNTc0LDEzICs2MDEsMTQgQEAgc291cmNlX3NjcmlwdF93aXRoX3NlYXJjaCAoY29u c3QgY2hhciAqZgogICAgaWYgKGZpbGUgPT0gTlVMTCB8fCAqZmlsZSA9PSAwKQogICAgICBlcnJv ciAoXygic291cmNlIGNvbW1hbmQgcmVxdWlyZXMgZmlsZSBuYW1lIG9mIGZpbGUgdG8gc291cmNl LiIpKTsKICAKQEAgLTkwLDEwICs5MCwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9n ZGIvY2xpL2NsaS1jbWRzLmMKICAJcGVycm9yX3dpdGhfbmFtZSAoZmlsZSk7CiAgICAgICAgZWxz ZQogIAlyZXR1cm47Ci1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2dkYmluaXQuZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCTIwMTEtMDEtMDEgMDA6NTM6MDkuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2dkYmluaXQuZXhwCTIwMTEtMDctMjIgMTk6MTQ6MjUuMDAwMDAwMDAwICswMjAwCiBAQCAt MCwwICsxLDkxIEBACiArIyAgIENvcHlyaWdodCAyMDA1CiArIyAgIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgpAQCAtMTg2LDE3ICsxODYsMTcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAx MDEyMzEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAogK30KICsKICtyZW1vdGVf ZXhlYyBidWlsZCAicm0gLmdkYmluaXQiCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxlCitJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxlCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAt LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxlCTIw MTEtMDEtMDEgMDA6NTM6MDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxlCTIwMTEtMDctMjIgMTk6MTQ6 MjUuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxIEBACiArZWNobyAiXG5pbiBnZGJpbml0Igot SW5kZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL21haW4uYworSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEu b3JpZy9nZGIvbWFpbi5jCTIwMTAtMTItMjkgMDE6NTg6MTQuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvbWFpbi5jCTIwMTEtMDEtMDEgMDA6NTM6MDkuMDAwMDAw MDAwICswMTAwCi1AQCAtODA1LDcgKzgwNSw3IEBAIEV4Y2VzcyBjb21tYW5kIGxpbmUgYXJndW1l bnRzIGlnbm9yZWQuICgKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL21haW4uYwky MDExLTA3LTIyIDE5OjA4OjE5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL21haW4uYwkyMDExLTA3LTIyIDE5OjE0OjI1LjAwMDAwMDAwMCArMDIwMAorQEAgLTg0 OSw3ICs4NDksNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogICAgICAgZGVidWdnaW5n IG9yIHdoYXQgZGlyZWN0b3J5IHlvdSBhcmUgaW4uICAqLwogIAogICAgaWYgKGhvbWVfZ2RiaW5p dCAmJiAhaW5oaWJpdF9nZGJpbml0KQpAQCAtMjA1LDcgKzIwNSw3IEBAIEluZGV4OiBnZGItNy4y LjUwLjIwMTAxMjMxL2dkYi9tYWluLmMKICAKICAgIC8qIE5vdyBwZXJmb3JtIGFsbCB0aGUgYWN0 aW9ucyBpbmRpY2F0ZWQgYnkgdGhlIGFyZ3VtZW50cy4gICovCiAgICBpZiAoY2RhcmcgIT0gTlVM TCkKLUBAIC04ODAsNyArODgwLDcgQEAgQ2FuJ3QgYXR0YWNoIHRvIHByb2Nlc3MgYW5kIHNwZWNp ZnkgYSBjbworQEAgLTkyOCw3ICs5MjgsNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQog ICAgLyogUmVhZCB0aGUgLmdkYmluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnksICpp ZiogaXQgaXNuJ3QKICAgICAgIHRoZSBzYW1lIGFzIHRoZSAkSE9NRS8uZ2RiaW5pdCBmaWxlIChp dCBzaG91bGQgZXhpc3QsIGFsc28pLiAgKi8KICAgIGlmIChsb2NhbF9nZGJpbml0ICYmICFpbmhp Yml0X2dkYmluaXQpCkBAIC0yMTQsMjQgKzIxNCwyNCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEw MTIzMS9nZGIvbWFpbi5jCiAgCiAgICAvKiBOb3cgdGhhdCBhbGwgLmdkYmluaXQncyBoYXZlIGJl ZW4gcmVhZCBhbmQgYWxsIC1kIG9wdGlvbnMgaGF2ZSBiZWVuCiAgICAgICBwcm9jZXNzZWQsIHdl IGNhbiByZWFkIGFueSBzY3JpcHRzIG1lbnRpb25lZCBpbiBTWU1BUkcuCi1JbmRleDogZ2RiLTcu Mi41MC4yMDEwMTIzMS9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCitJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMi41MC4yMDEwMTIzMS5vcmlnL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMC0xMi0x NSAxODoyNzo1OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9w eXRob24vcHktYXV0by1sb2FkLmMJMjAxMS0wMS0wMSAwMDo1MzowOS4wMDAwMDAwMDAgKzAxMDAK LUBAIC0yMjQsNyArMjI0LDcgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZp bGUgKgorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9h ZC5jCTIwMTEtMDUtMTYgMTg6MzM6NTcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTEtMDctMjIgMTk6MTQ6NTQuMDAw MDAwMDAwICswMjAwCitAQCAtMjg0LDcgKzI4NCw3IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMg KHN0cnVjdCBvYmpmaWxlICoKICAJfQogIAogICAgICAgIG9wZW5lZCA9IGZpbmRfYW5kX29wZW5f c2NyaXB0IChmaWxlLCAxIC8qc2VhcmNoX3BhdGgqLywKIC0JCQkJICAgICAmc3RyZWFtLCAmZnVs bF9wYXRoKTsKICsJCQkJICAgICAmc3RyZWFtLCAmZnVsbF9wYXRoLCAxIC8qIGZyb21fdHR5ICov KTsKICAKLSAgICAgICAvKiBJZiB0aGUgZmlsZSBpcyBub3QgZm91bmQsIHdlIHN0aWxsIHJlY29y ZCB0aGUgZmlsZSBpbiB0aGUgaGFzaCB0YWJsZSwKLSAJIHdlIG9ubHkgd2FudCB0byBwcmludCBh biBlcnJvciBtZXNzYWdlIG9uY2UuCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvY2xp L2NsaS1jbWRzLmgKKyAgICAgICAvKiBJZiBvbmUgc2NyaXB0IGlzbid0IGZvdW5kIGl0J3Mgbm90 IHVuY29tbW9uIGZvciBtb3JlIHRvIG5vdCBiZQorIAkgZm91bmQgZWl0aGVyLiAgV2UgZG9uJ3Qg d2FudCB0byBwcmludCBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoCitJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvY2xpL2NsaS1jbWRzLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUw LjIwMTAxMjMxLm9yaWcvZ2RiL2NsaS9jbGktY21kcy5oCTIwMTAtMTItMjkgMDM6MTE6MDQuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvY2xpL2NsaS1jbWRzLmgJ MjAxMS0wMS0wMSAwMDo1MzowOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMjYsNyArMTI2LDggQEAg ZXh0ZXJuIHZvaWQgc291cmNlX3NjcmlwdCAoY2hhciAqLCBpbnQpOworLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvY2xpL2NsaS1jbWRzLmgJMjAxMS0wMS0wMSAxNjozMzoyMC4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jbGkvY2xpLWNtZHMuaAky MDExLTA3LTIyIDE5OjE0OjI1LjAwMDAwMDAwMCArMDIwMAorQEAgLTEyNyw3ICsxMjcsOCBAQCBl eHRlcm4gdm9pZCBzb3VyY2Vfc2NyaXB0IChjaGFyICosIGludCk7CiAgLyogRXhwb3J0ZWQgdG8g b2JqZmlsZXMuYy4gICovCiAgCiAgZXh0ZXJuIGludCBmaW5kX2FuZF9vcGVuX3NjcmlwdCAoY29u c3QgY2hhciAqZmlsZSwgaW50IHNlYXJjaF9wYXRoLAoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVp bGRpZC1sb2NhdGUtcnBtLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gK aW5kZXggMzgwMmJhMC4uODIxMGQxOCAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0 ZS1ycG0ucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKQEAgLTEs MTYgKzEsMTYgQEAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9ldmVudC10b3AuYwor SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2ZW50LXRvcC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi45MC4yMDExMDQyOS5vcmlnL2dkYi9ldmVudC10b3AuYwkyMDExLTAzLTE2IDE2 OjE4OjU4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2V2ZW50 LXRvcC5jCTIwMTEtMDUtMDMgMDU6MjE6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMzMsNiArMzMs NyBAQAotICNpbmNsdWRlICJjbGkvY2xpLXNjcmlwdC5oIiAgICAgLyogZm9yIHJlc2V0X2NvbW1h bmRfbmVzdF9kZXB0aCAqLwotICNpbmNsdWRlICJtYWluLmgiCi0gI2luY2x1ZGUgImdkYnRocmVh ZC5oIgotKyNpbmNsdWRlICJzeW1maWxlLmgiCi0gCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5v cmlnL2dkYi9ldmVudC10b3AuYwkyMDExLTA3LTIxIDEzOjAzOjQ1LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2ZW50LXRvcC5jCTIwMTEtMDctMjIgMTk6Mjg6 NDkuMDAwMDAwMDAwICswMjAwCitAQCAtMzYsNiArMzYsNyBAQAorICNpbmNsdWRlICJvYnNlcnZl ci5oIgorICNpbmNsdWRlICJjb250aW51YXRpb25zLmgiCiAgI2luY2x1ZGUgImdkYmNtZC5oIgkJ LyogZm9yIGRvbnRfcmVwZWF0KCkgKi8KKysjaW5jbHVkZSAic3ltZmlsZS5oIgogIAotQEAgLTE5 Miw2ICsxOTMsOCBAQCBjbGlfY29tbWFuZF9sb29wICh2b2lkKQorIC8qIHJlYWRsaW5lIGluY2x1 ZGUgZmlsZXMuICAqLworICNpbmNsdWRlICJyZWFkbGluZS9yZWFkbGluZS5oIgorQEAgLTE5Myw2 ICsxOTQsOCBAQCBjbGlfY29tbWFuZF9sb29wICh2b2lkKQogICAgICAgIGNoYXIgKmFfcHJvbXB0 OwogICAgICAgIGNoYXIgKmdkYl9wcm9tcHQgPSBnZXRfcHJvbXB0ICgpOwogIApAQCAtMTksNyAr MTksNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvZXZlbnQtdG9wLmMKICAgICAg ICAvKiBUZWxsIHJlYWRsaW5lIHdoYXQgdGhlIHByb21wdCB0byBkaXNwbGF5IGlzIGFuZCB3aGF0 IGZ1bmN0aW9uCiAgICAgICAgICAgaXQgd2lsbCBuZWVkIHRvIGNhbGwgYWZ0ZXIgYSB3aG9sZSBs aW5lIGlzIHJlYWQuICBUaGlzIGFsc28KICAgICAgICAgICBkaXNwbGF5cyB0aGUgZmlyc3QgcHJv bXB0LiAgKi8KLUBAIC0yNjMsNiArMjY2LDggQEAgZGlzcGxheV9nZGJfcHJvbXB0IChjaGFyICpu ZXdfcHJvbXB0KQorQEAgLTI2NCw2ICsyNjcsOCBAQCBkaXNwbGF5X2dkYl9wcm9tcHQgKGNoYXIg Km5ld19wcm9tcHQpCiAgICAvKiBSZXNldCB0aGUgbmVzdGluZyBkZXB0aCB1c2VkIHdoZW4gdHJh Y2UtY29tbWFuZHMgaXMgc2V0LiAgKi8KICAgIHJlc2V0X2NvbW1hbmRfbmVzdF9kZXB0aCAoKTsK ICAKQEAgLTI4LDExICsyOCwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvZXZl bnQtdG9wLmMKICAgIC8qIEVhY2ggaW50ZXJwcmV0ZXIgaGFzIGl0cyBvd24gcnVsZXMgb24gZGlz cGxheWluZyB0aGUgY29tbWFuZAogICAgICAgcHJvbXB0LiAgKi8KICAgIGlmICghY3VycmVudF9p bnRlcnBfZGlzcGxheV9wcm9tcHRfcCAoKSkKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dk Yi9lbGZyZWFkLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEx LTA1LTAzIDA1OjE5OjI3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0Mjkv Z2RiL2VsZnJlYWQuYwkyMDExLTA1LTAzIDA1OjIxOjIyLjAwMDAwMDAwMCArMDIwMAotQEAgLTUz LDYgKzUzLDcgQEAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2VsZnJlYWQuYwky MDExLTA3LTIyIDE5OjI2OjQ2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2VsZnJlYWQuYwkyMDExLTA3LTIyIDE5OjI4OjM0LjAwMDAwMDAwMCArMDIwMAorQEAg LTQ5LDYgKzQ5LDcgQEAKICAjaW5jbHVkZSAiZ2RiY29yZS5oIgogICNpbmNsdWRlICJnZGJjbWQu aCIKICAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKQEAgLTQwLDcgKzQwLDcgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA0MjkvZ2RiL2VsZnJlYWQuYwogICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogIAog IGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpOwotQEAgLTE2NTUsOCArMTY1 NiwzNjEgQEAgYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYgorQEAgLTE2 NTIsOCArMTY1MywzNjEgQEAgYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAq YgogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCkBAIC00MDMsNyArNDAzLDcgQEAgSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA0MjkvZ2RiL2VsZnJlYWQuYwogICAgIGF2b2lkYW5jZS4gICovCiAgCiAg c3RydWN0IG1pc3NpbmdfZmlsZXBhaXIKLUBAIC0xNzEwLDExICsyMDY0LDE3IEBAIG1pc3Npbmdf ZmlsZXBhaXJfY2hhbmdlICh2b2lkKQorQEAgLTE3MDcsMTEgKzIwNjEsMTcgQEAgbWlzc2luZ19m aWxlcGFpcl9jaGFuZ2UgKHZvaWQpCiAgICAgICAgLyogQWxsIHRoZWlyIG1lbW9yeSBjYW1lIGp1 c3QgZnJvbSBtaXNzaW5nX2ZpbGVwYWlyX09CU1RBQ0suICAqLwogICAgICAgIG1pc3NpbmdfZmls ZXBhaXJfaGFzaCA9IE5VTEw7CiAgICAgIH0KQEAgLTQyMSw3ICs0MjEsNyBAQCBJbmRleDogZ2Ri LTcuMi45MC4yMDExMDQyOS9nZGIvZWxmcmVhZC5jCiAgICBtaXNzaW5nX2ZpbGVwYWlyX2NoYW5n ZSAoKTsKICB9CiAgCi1AQCAtMTc4MSwxNCArMjE0MSwzNSBAQCBkZWJ1Z19wcmludF9taXNzaW5n IChjb25zdCBjaGFyICpiaW5hcnksCitAQCAtMTc3OCwxNCArMjEzOCwzNSBAQCBkZWJ1Z19wcmlu dF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksCiAgCiAgICAqc2xvdCA9IG1pc3NpbmdfZmls ZXBhaXI7CiAgCkBAIC00NjQsMTEgKzQ2NCwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQy OS9nZGIvZWxmcmVhZC5jCiAgfQogIAogIHN0YXRpYyBjaGFyICoKLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNDI5L2dkYi9zeW1maWxlLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9z eW1maWxlLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL3N5 bWZpbGUuaAkyMDExLTA1LTAzIDA1OjE0OjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIu OTAuMjAxMTA0MjkvZ2RiL3N5bWZpbGUuaAkyMDExLTA1LTAzIDA1OjIxOjExLjAwMDAwMDAwMCAr MDIwMAotQEAgLTYxMSw2ICs2MTEsOCBAQCBleHRlcm4gc3RydWN0IGJ1aWxkX2lkICpidWlsZF9p ZF9hZGRyX2dlCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9zeW1maWxlLmgJMjAx MS0wNy0yMiAxOToyNzowNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9zeW1maWxlLmgJMjAxMS0wNy0yMiAxOToyODozNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC02 MTUsNiArNjE1LDggQEAgZXh0ZXJuIHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWRfYWRkcl9nZQog IGV4dGVybiBjaGFyICpidWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpidWls ZF9pZCwKICAJCQkJICAgY2hhciAqKmxpbmtfcmV0dXJuLCBpbnQgYWRkX2RlYnVnX3N1ZmZpeCk7 CiAgZXh0ZXJuIHZvaWQgZGVidWdfcHJpbnRfbWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LCBj b25zdCBjaGFyICpkZWJ1Zyk7CkBAIC00NzcsMTEgKzQ3NywxMSBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDQyOS9nZGIvc3ltZmlsZS5oCiAgCiAgLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8KICAK LUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKK0lu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ri LmV4cAkyMDExLTA1LTAzIDA1OjE0OjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAu MjAxMTA0MjkvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTA1LTAzIDA1OjIxOjExLjAw MDAwMDAwMCArMDIwMAotQEAgLTEzODEsNyArMTM4MSw3IEBAIHByb2MgZGVmYXVsdF9nZGJfc3Rh cnQgeyB9IHsKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAkyMDExLTA3LTIyIDE5OjI2OjQ2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTA3LTIyIDE5OjI4OjM0 LjAwMDAwMDAwMCArMDIwMAorQEAgLTEzOTAsNyArMTM5MCw3IEBAIHByb2MgZGVmYXVsdF9nZGJf c3RhcnQgeyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4i CiAgCX0KICAgICAgfQpAQCAtNDkwLDExICs0OTAsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA0MjkvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogICAgICBzZW5kX2dkYiAic2V0IGJ1aWxk LWlkLXZlcmJvc2UgMFxuIgogICAgICBnZGJfZXhwZWN0IDEwIHsKICAJLXJlICIkZ2RiX3Byb21w dCAkIiB7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvdGVzdHN1aXRlL2xpYi9taS1z dXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIv bWktc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcv Z2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMS0wNS0wMyAwNToxNDo1Ny4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi90ZXN0c3VpdGUvbGliL21p LXN1cHBvcnQuZXhwCTIwMTEtMDUtMDMgMDU6MjE6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMjIx LDcgKzIyMSw3IEBAIHByb2MgZGVmYXVsdF9taV9nZGJfc3RhcnQgeyBhcmdzIH0geworLS0tIGdk Yi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAky MDExLTA3LTIyIDE5OjI2OjQ2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMS0wNy0yMiAxOToyODozNC4w MDAwMDAwMDAgKzAyMDAKK0BAIC0yMjIsNyArMjIyLDcgQEAgcHJvYyBkZWZhdWx0X21pX2dkYl9z dGFydCB7IGFyZ3MgfSB7CiAgCSAgICB9CiAgICAgIAl9CiAgICAgIH0KQEAgLTUwMywxMCArNTAz LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1 cHBvcnQuZXhwCiAgICAgIHNlbmRfZ2RiICIxOTAtZ2RiLXNldCBidWlsZC1pZC12ZXJib3NlIDBc biIKICAgICAgZ2RiX2V4cGVjdCAxMCB7CiAgCS1yZSAiLioxOTAtZ2RiLXNldCBidWlsZC1pZC12 ZXJib3NlIDBcclxuMTkwXFxcXmRvbmVcclxuJG1pX2dkYl9wcm9tcHQkIiB7Ci1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDQyOS9nZGIvdHVpL3R1aS1pbnRlcnAuYworSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3R1aS90dWktaW50ZXJwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkw LjIwMTEwNDI5Lm9yaWcvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMS0wMS0wMSAxNjozMzo1Mi4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi90dWkvdHVpLWludGVy cC5jCTIwMTEtMDUtMDMgMDU6MjE6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4y MDExMDcyMi5vcmlnL2dkYi90dWkvdHVpLWludGVycC5jCTIwMTEtMDEtMDEgMTY6MzM6NTIuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdHVpL3R1aS1pbnRlcnAu YwkyMDExLTA3LTIyIDE5OjI4OjM0LjAwMDAwMDAwMCArMDIwMAogQEAgLTMxLDYgKzMxLDcgQEAK ICAjaW5jbHVkZSAidHVpL3R1aS5oIgogICNpbmNsdWRlICJ0dWkvdHVpLWlvLmgiCkBAIC01MjQs MTAgKzUyNCwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvdHVpL3R1aS1pbnRl cnAuYwogICAgICAgIC8qIFRlbGwgcmVhZGxpbmUgd2hhdCB0aGUgcHJvbXB0IHRvIGRpc3BsYXkg aXMgYW5kIHdoYXQgZnVuY3Rpb24KICAgICAgICAgICBpdCB3aWxsIG5lZWQgdG8gY2FsbCBhZnRl ciBhIHdob2xlIGxpbmUgaXMgcmVhZC4gVGhpcyBhbHNvCiAgICAgICAgICAgZGlzcGxheXMgdGhl IGZpcnN0IHByb21wdC4gICovCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvYWNsb2Nh bC5tNAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2FjbG9jYWwubTQKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL2FjbG9jYWwubTQJMjAxMS0wMi0x NSAyMjowNTo1My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9h Y2xvY2FsLm00CTIwMTEtMDUtMDMgMDU6MjE6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcu My41MC4yMDExMDcyMi5vcmlnL2dkYi9hY2xvY2FsLm00CTIwMTEtMDItMTUgMjI6MDU6NTMuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYWNsb2NhbC5tNAkyMDEx LTA3LTIyIDE5OjI4OjM0LjAwMDAwMDAwMCArMDIwMAogQEAgLTE5LDYgKzE5LDE2MiBAQCBZb3Ug aGF2ZSBhbm90aGVyIHZlcnNpb24gb2YgYXV0b2NvbmYuICBJCiAgSWYgeW91IGhhdmUgcHJvYmxl bXMsIHlvdSBtYXkgbmVlZCB0byByZWdlbmVyYXRlIHRoZSBidWlsZCBzeXN0ZW0gZW50aXJlbHku CiAgVG8gZG8gc28sIHVzZSB0aGUgcHJvY2VkdXJlIGRvY3VtZW50ZWQgYnkgdGhlIHBhY2thZ2Us IHR5cGljYWxseSBgYXV0b3JlY29uZicuXSldKQpAQCAtNjkxLDEwICs2OTEsMTAgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2FjbG9jYWwubTQKICAjIENvcHlyaWdodCAoQykgMjAw MiwgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCiAgIwogICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9jb25maWcuaW4K K0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWcuaW4KID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDExLTAzLTE3IDE0OjE5 OjA5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2NvbmZpZy5p bgkyMDExLTA1LTAzIDA1OjIxOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAx MTA3MjIub3JpZy9nZGIvY29uZmlnLmluCTIwMTEtMDUtMTIgMDE6Mzg6MzguMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY29uZmlnLmluCTIwMTEtMDctMjIgMTk6 Mjg6MzQuMDAwMDAwMDAwICswMjAwCiBAQCAtNDYsNiArNDYsOSBAQAogIC8qIERlZmluZSB0byBC RkQncyBkZWZhdWx0IHRhcmdldCB2ZWN0b3IuICovCiAgI3VuZGVmIERFRkFVTFRfQkZEX1ZFQwpA QCAtNzE1LDEwICs3MTUsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2NvbmZp Zy5pbgogIC8qIERlZmluZSBpZiBsaWJ1bndpbmQgbGlicmFyeSBpcyBiZWluZyB1c2VkLiAqLwog ICN1bmRlZiBIQVZFX0xJQlVOV0lORAogIAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2Ri L2NvbmZpZ3VyZQorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZ3VyZQogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0Mjkub3JpZy9nZGIvY29uZmlndXJlCTIwMTEt MDQtMDMgMTg6MzI6NDAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDQyOS9n ZGIvY29uZmlndXJlCTIwMTEtMDUtMDMgMDU6MjE6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2Ri LTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9jb25maWd1cmUJMjAxMS0wNS0xMiAwMTozODozOC4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWd1cmUJMjAx MS0wNy0yMiAxOToyODozNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC02ODIsNiArNjgyLDkgQEAgUkVQ T1JUX0JVR1NfVE8KICBQS0dWRVJTSU9OCiAgVEFSR0VUX09CUwpAQCAtNzM3LDcgKzczNyw3IEBA IEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9jb25maWd1cmUKICBlbmFibGVfdGFyZ2V0 cwogIGVuYWJsZV82NF9iaXRfYmZkCiAgZW5hYmxlX2dkYmNsaQotQEAgLTk4OSw2ICs5OTMsOSBA QCBMREZMQUdTCitAQCAtOTkwLDYgKzk5NCw5IEBAIExERkxBR1MKICBMSUJTCiAgQ1BQRkxBR1MK ICBDUFAKQEAgLTc0Nyw3ICs3NDcsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIv Y29uZmlndXJlCiAgWUFDQwogIFlGTEFHUwogIFhNS01GJwotQEAgLTE2NTIsNiArMTY1OSw4IEBA IE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE2NTMsNiArMTY2MCw4IEBAIE9wdGlvbmFsIFBhY2th Z2VzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RBVEFESVIvZ2RiXQogICAgLS13aXRo LXJlbG9jYXRlZC1zb3VyY2VzPVBBVEgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9t YXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXRoIGZvciBzb3VyY2UgZmlsZXMKQEAgLTc1Niw3ICs3 NTYsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvY29uZmlndXJlCiAgICAtLXdp dGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBzdXBwb3J0 CiAgICAtLXdpdGgtY3Vyc2VzICAgICAgICAgICB1c2UgdGhlIGN1cnNlcyBsaWJyYXJ5IGluc3Rl YWQgb2YgdGhlIHRlcm1jYXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKLUBA IC0xNjg3LDYgKzE2OTYsOSBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxl czoKK0BAIC0xNjg5LDYgKzE2OTgsOSBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZh cmlhYmxlczoKICAgIENQUEZMQUdTICAgIEMvQysrL09iamVjdGl2ZSBDIHByZXByb2Nlc3NvciBm bGFncywgZS5nLiAtSTxpbmNsdWRlIGRpcj4gaWYKICAgICAgICAgICAgICAgIHlvdSBoYXZlIGhl YWRlcnMgaW4gYSBub25zdGFuZGFyZCBkaXJlY3RvcnkgPGluY2x1ZGUgZGlyPgogICAgQ1BQICAg ICAgICAgQyBwcmVwcm9jZXNzb3IKQEAgLTc2Niw3ICs3NjYsNyBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDQyOS9nZGIvY29uZmlndXJlCiAgICBZQUNDICAgICAgICBUaGUgYFlldCBBbm90aGVy IEMgQ29tcGlsZXInIGltcGxlbWVudGF0aW9uIHRvIHVzZS4gRGVmYXVsdHMgdG8KICAgICAgICAg ICAgICAgIHRoZSBmaXJzdCBwcm9ncmFtIGZvdW5kIG91dCBvZjogYGJpc29uIC15JywgYGJ5YWNj JywgYHlhY2MnLgogICAgWUZMQUdTICAgICAgVGhlIGxpc3Qgb2YgYXJndW1lbnRzIHRoYXQgd2ls bCBiZSBwYXNzZWQgYnkgZGVmYXVsdCB0byAkWUFDQy4KLUBAIC03ODg0LDYgKzc4OTYsNDg2IEBA IF9BQ0VPRgorQEAgLTc4ODYsNiArNzg5OCw0ODYgQEAgX0FDRU9GCiAgZmkKICAKICAKQEAgLTEy NTMsMTAgKzEyNTMsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2NvbmZpZ3Vy ZQogIAogIAogIHN1YmRpcnM9IiRzdWJkaXJzIHRlc3RzdWl0ZSIKLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNDI5L2dkYi9jb25maWd1cmUuYWMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcv Z2RiL2NvbmZpZ3VyZS5hYwkyMDExLTA0LTAzIDE4OjMyOjQwLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTA1LTAzIDA1OjIxOjEx LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvY29uZmln dXJlLmFjCTIwMTEtMDUtMTIgMDE6Mzg6MzguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvY29uZmlndXJlLmFjCTIwMTEtMDctMjIgMTk6Mjg6MzQuMDAwMDAwMDAw ICswMjAwCiBAQCAtMTA4LDYgKzEwOCwxOTkgQEAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1yZWxv Y2F0ZWQtc291cmNlcwogICAgICAgICAgICAgICAgW1JlbG9jYXRlZCBkaXJlY3RvcnkgZm9yIHNv dXJjZSBmaWxlcy4gXSkKICBdKQpAQCAtMTQ1NywxMCArMTQ1NywxMCBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDQyOS9nZGIvY29uZmlndXJlLmFjCiAgQUNfQ09ORklHX1NVQkRJUlModGVzdHN1 aXRlKQogIAogICMgQ2hlY2sgd2hldGhlciB0byBzdXBwb3J0IGFsdGVybmF0aXZlIHRhcmdldCBj b25maWd1cmF0aW9ucwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2FjaW5jbHVkZS5t NAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2FjaW5jbHVkZS5tNAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0Mjkub3JpZy9nZGIvYWNpbmNsdWRlLm00CTIwMTAtMDUt MjcgMDU6NDA6NDUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIv YWNpbmNsdWRlLm00CTIwMTEtMDUtMDMgMDU6MjE6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2Ri LTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9hY2luY2x1ZGUubTQJMjAxMC0wNS0yNyAwNTo0MDo0 NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9hY2luY2x1ZGUu bTQJMjAxMS0wNy0yMiAxOToyODozNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC0xLDMgKzEsNSBAQAog KyMgc2VyaWFsIDEKICsKQEAgLTE0NzYsMTEgKzE0NzYsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA0MjkvZ2RiL2FjaW5jbHVkZS5tNAogICMgQGRlZm1hYyBBQ19QUk9HX0NDX1NUREMKICAj IEBtYWluZGV4IFBST0dfQ0NfU1REQwogICMgQG92aW5kZXggQ0MKLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNDI5L2dkYi9jb3JlbG93LmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9j b3JlbG93LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL2Nv cmVsb3cuYwkyMDExLTA1LTAzIDA1OjE0OjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIu OTAuMjAxMTA0MjkvZ2RiL2NvcmVsb3cuYwkyMDExLTA1LTAzIDA1OjIxOjExLjAwMDAwMDAwMCAr MDIwMAotQEAgLTMyMCw3ICszMjAsNyBAQCBidWlsZF9pZF9sb2NhdGVfZXhlYyAoaW50IGZyb21f dHR5KQorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvY29yZWxvdy5jCTIwMTEtMDct MjIgMTk6Mjc6MjYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv Y29yZWxvdy5jCTIwMTEtMDctMjIgMTk6Mjg6MzQuMDAwMDAwMDAwICswMjAwCitAQCAtMzIxLDcg KzMyMSw3IEBAIGJ1aWxkX2lkX2xvY2F0ZV9leGVjIChpbnQgZnJvbV90dHkpCiAgICAgICAgICBz eW1maWxlX29iamZpbGUtPmZsYWdzIHw9IE9CSkZfQlVJTERfSURfQ09SRV9MT0FERUQ7CiAgICAg IH0KICAgIGVsc2UKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoIGIv Z2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAppbmRleCA1MDQ1NjM3Li4wMjJkMGNhIDEwMDY0 NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCisrKyBiL2dkYi02LjYtYnVpbGRp ZC1sb2NhdGUucGF0Y2gKQEAgLTEsMTggKzEsMTggQEAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEw NDI5L2dkYi9jb3JlbG93LmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb3JlbG93 LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL2NvcmVsb3cu YwkyMDExLTAyLTI2IDAzOjA3OjA3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAx MTA0MjkvZ2RiL2NvcmVsb3cuYwkyMDExLTA1LTAzIDA1OjE0OjU3LjAwMDAwMDAwMCArMDIwMAot QEAgLTQ3LDYgKzQ3LDkgQEAKLSAjaW5jbHVkZSAiZmlsZW5hbWVzLmgiCistLS0gZ2RiLTcuMy41 MC4yMDExMDcyMi5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMS0wNy0yMiAyMDoxMjo0MC4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb3JlbG93LmMJMjAxMS0wNy0y MiAyMDoxMzowMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00OCw2ICs0OCw5IEBACiAgI2luY2x1ZGUg InByb2dzcGFjZS5oIgogICNpbmNsdWRlICJvYmpmaWxlcy5oIgorICNpbmNsdWRlICJ3cmFwcGVy LmgiCiArI2luY2x1ZGUgImF1eHYuaCIKICsjaW5jbHVkZSAiZWxmL2NvbW1vbi5oIgogKyNpbmNs dWRlICJnZGJjbWQuaCIKICAKICAKICAjaWZuZGVmIE9fTEFSR0VGSUxFCi1AQCAtMjc4LDYgKzI4 MSw1MiBAQCBhZGRfdG9fdGhyZWFkX2xpc3QgKGJmZCAqYWJmZCwgYXNlY3Rpb24gCitAQCAtMjc5 LDYgKzI4Miw1MiBAQCBhZGRfdG9fdGhyZWFkX2xpc3QgKGJmZCAqYWJmZCwgYXNlY3Rpb24gCiAg ICAgIGluZmVyaW9yX3B0aWQgPSBwdGlkOwkJCS8qIFllcywgbWFrZSBpdCBjdXJyZW50LiAgKi8K ICB9CiAgCkBAIC02NSw3ICs2NSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9j b3JlbG93LmMKICAvKiBUaGlzIHJvdXRpbmUgb3BlbnMgYW5kIHNldHMgdXAgdGhlIGNvcmUgZmls ZSBiZmQuICAqLwogIAogIHN0YXRpYyB2b2lkCi1AQCAtMzc5LDYgKzQyOCwxMiBAQCBjb3JlX29w ZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCitAQCAtMzgwLDYgKzQyOSwxMiBAQCBj b3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCiAgICBwdXNoX3RhcmdldCAo JmNvcmVfb3BzKTsKICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgCkBAIC03OCw3 ICs3OCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9jb3JlbG93LmMKICAgIC8q IERvIHRoaXMgYmVmb3JlIGFja25vd2xlZGdpbmcgdGhlIGluZmVyaW9yLCBzbyBpZgogICAgICAg cG9zdF9jcmVhdGVfaW5mZXJpb3IgdGhyb3dzIChjYW4gaGFwcGVuIGVhc2lsbHkgaWYgeW91J3Jl IGxvYWRpbmcKICAgICAgIGEgY29yZSBmaWxlIHdpdGggdGhlIHdyb25nIGV4ZWMpLCB3ZSBhcmVu J3QgbGVmdCB3aXRoIHRocmVhZHMKLUBAIC05MzIsNCArOTg3LDExIEBAIF9pbml0aWFsaXplX2Nv cmVsb3cgKHZvaWQpCitAQCAtOTMzLDQgKzk4OCwxMSBAQCBfaW5pdGlhbGl6ZV9jb3JlbG93ICh2 b2lkKQogICAgaW5pdF9jb3JlX29wcyAoKTsKICAKICAgIGFkZF90YXJnZXQgKCZjb3JlX29wcyk7 CkBAIC05MCwxMSArOTAsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2NvcmVs b3cuYwogKwkJCSAgIE5VTEwsIE5VTEwsIE5VTEwsCiArCQkJICAgJnNldGxpc3QsICZzaG93bGlz dCk7CiAgfQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2RvYy9nZGIudGV4aW5mbwor SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9nZGIudGV4aW5mbwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0Mjkub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEt MDUtMDMgMDU6MTQ6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDQyOS9n ZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDUtMDMgMDU6MTQ6NTcuMDAwMDAwMDAwICswMjAwCi1A QCAtMTUzNTYsNiArMTUzNTYsMjcgQEAgaW5mb3JtYXRpb24gZmlsZXMuCistLS0gZ2RiLTcuMy41 MC4yMDExMDcyMi5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wNy0yMiAyMDoxMjo0MC4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMS0wNy0yMiAyMDoxMzowMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xNTQwMiw2ICsxNTQw MiwyNyBAQCBpbmZvcm1hdGlvbiBmaWxlcy4KICAKICBAZW5kIHRhYmxlCiAgCkBAIC0xMjIsMTEg KzEyMiwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvZG9jL2dkYi50ZXhpbmZv CiAgQGNpbmRleCBAY29kZXsuZ251X2RlYnVnbGlua30gc2VjdGlvbnMKICBAY2luZGV4IGRlYnVn IGxpbmsgc2VjdGlvbnMKICBBIGRlYnVnIGxpbmsgaXMgYSBzcGVjaWFsIHNlY3Rpb24gb2YgdGhl IGV4ZWN1dGFibGUgZmlsZSBuYW1lZAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL3Nv bGliLXN2cjQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3NvbGliLXN2cjQuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0Mjkub3JpZy9nZGIvc29saWItc3ZyNC5j CTIwMTEtMDUtMDMgMDU6MTQ6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDEx MDQyOS9nZGIvc29saWItc3ZyNC5jCTIwMTEtMDUtMDMgMDU6MTQ6NTcuMDAwMDAwMDAwICswMjAw Ci1AQCAtMTE3OSw5ICsxMTc5LDQ5IEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCistLS0gZ2Ri LTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxMS0wNy0yMiAyMDoxMjo0 MC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zb2xpYi1zdnI0 LmMJMjAxMS0wNy0yMiAyMDoxNjoxMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMjAxLDkgKzEyMDEs NDkgQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKICAJCSAgICAgc2FmZV9zdHJlcnJvciAoZXJy Y29kZSkpOwogIAkgIGVsc2UKICAJICAgIHsKQEAgLTE0MCw3ICsxNDAsNyBAQCBJbmRleDogZ2Ri LTcuMi45MC4yMDExMDQyOS9nZGIvc29saWItc3ZyNC5jCiArCSAgICAgIC8qIE1heSBnZXQgb3Zl cndyaXR0ZW4gYmVsb3cuICAqLwogKwkgICAgICBzdHJjcHkgKG5ldy0+c29fbmFtZSwgbmV3LT5z b19vcmlnaW5hbF9uYW1lKTsKICsKLSsJICAgICAgYnVpbGRfaWQgPSBidWlsZF9pZF9hZGRyX2dl dCAoTE1fRFlOQU1JQ19GUk9NX0xJTktfTUFQIChuZXcpKTsKKysJICAgICAgYnVpbGRfaWQgPSBi dWlsZF9pZF9hZGRyX2dldCAobG1fZHluYW1pY19mcm9tX2xpbmtfbWFwIChuZXcpKTsKICsJICAg ICAgaWYgKGJ1aWxkX2lkICE9IE5VTEwpCiArCQl7CiArCQkgIGNoYXIgKm5hbWUsICpidWlsZF9p ZF9maWxlbmFtZTsKQEAgLTE3OSwxMSArMTc5LDExIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEw NDI5L2dkYi9zb2xpYi1zdnI0LmMKICAJICAgIH0KICAJICB4ZnJlZSAoYnVmZmVyKTsKICAKLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9lbGZyZWFkLmMKK0luZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEw NDI5Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDExLTA1LTAzIDA1OjE0OjU2LjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2VsZnJlYWQuYwkyMDExLTA1LTAzIDA1OjE5 OjI3LjAwMDAwMDAwMCArMDIwMAotQEAgLTQ5LDYgKzQ5LDExIEBACistLS0gZ2RiLTcuMy41MC4y MDExMDcyMi5vcmlnL2dkYi9lbGZyZWFkLmMJMjAxMS0wNy0yMiAyMDoxMjo0MC4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMJMjAxMS0wNy0yMiAy MDoxMzowMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00NSw2ICs0NSwxMSBAQAogICNpbmNsdWRlICJp bmZjYWxsLmgiCiAgI2luY2x1ZGUgImdkYnRocmVhZC5oIgogICNpbmNsdWRlICJyZWdjYWNoZS5o IgpAQCAtMTk1LDcgKzE5NSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9lbGZy ZWFkLmMKICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKTsKICAKLUBA IC0xMDc3LDE2ICsxMDgyLDY1IEBAIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuX3N0b3Ag KHN0cnUKK0BAIC0xMDc0LDE2ICsxMDc5LDY1IEBAIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0 dXJuX3N0b3AgKHN0cnUKICAgIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoYiwgc2Fscywg c2Fsc19lbmQpOwogIH0KICAKQEAgLTI2Myw3ICsyNjMsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4y MDExMDQyOS9nZGIvZWxmcmVhZC5jCiAgewogICAgc3RydWN0IGJ1aWxkX2lkICpyZXR2YWw7CiAg Ci1AQCAtMTEwMiw2ICsxMTU2LDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQpCitA QCAtMTA5OSw2ICsxMTUzLDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQpCiAgICBy ZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTYxMiw3ICs2MTIsNyBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDQyOS9nZGIvZWxmcmVhZC5jCiAgLyogUmV0dXJuIGlmIEZJTEVOQU1FIGhhcyBOVF9H TlVfQlVJTERfSUQgbWF0Y2hpbmcgdGhlIENIRUNLIHZhbHVlLiAgKi8KICAKICBzdGF0aWMgaW50 Ci1AQCAtMTExNiw3ICsxNTEyLDcgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFyICpmaWxl bmFtZSwgcworQEAgLTExMTMsNyArMTUwOSw3IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3QgY2hh ciAqZmlsZW5hbWUsIHMKICAgIGlmIChhYmZkID09IE5VTEwpCiAgICAgIHJldHVybiAwOwogIApA QCAtNjIxLDcgKzYyMSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9lbGZyZWFk LmMKICAKICAgIGlmIChmb3VuZCA9PSBOVUxMKQogICAgICB3YXJuaW5nIChfKCJGaWxlIFwiJXNc IiBoYXMgbm8gYnVpbGQtaWQsIGZpbGUgc2tpcHBlZCIpLCBmaWxlbmFtZSk7Ci1AQCAtMTEzNCwx NCArMTUzMCwxNSBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCitA QCAtMTEzMSwxNCArMTUyNywxNSBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVu YW1lLCBzCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTY0MSw3ICs2NDEsNyBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvZWxmcmVhZC5jCiAgCiAgICAvKiBLZWVwIGJhY2t3 YXJkIGNvbXBhdGliaWxpdHkgc28gdGhhdCBERUJVR19GSUxFX0RJUkVDVE9SWSBiZWluZyAiIiB3 aWxsCiAgICAgICBjYXVzZSAiLy5idWlsZC1pZC8uLi4iIGxvb2t1cHMuICAqLwotQEAgLTExNTIs NiArMTU0OSw4IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKK0BA IC0xMTQ5LDYgKzE1NDYsOCBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1 aWxkCiAgICAgICAgY2hhciAqcywgKmRlYnVnZGlyX2VuZDsKICAgICAgICBnZGJfYnl0ZSAqZGF0 YSA9IGJ1aWxkX2lkLT5kYXRhOwogICAgICAgIHNpemVfdCBzaXplID0gYnVpbGRfaWQtPnNpemU7 CkBAIC02NTAsNyArNjUwLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2VsZnJl YWQuYwogIAogICAgICAgIHdoaWxlICgqZGVidWdkaXIgPT0gRElSTkFNRV9TRVBBUkFUT1IpCiAg CWRlYnVnZGlyKys7Ci1AQCAtMTE3MiwzOSArMTU3MSwyNDIgQEAgYnVpbGRfaWRfdG9fZGVidWdf ZmlsZW5hbWUgKHN0cnVjdCBidWlsZAorQEAgLTExNjksMzkgKzE1NjgsMjQyIEBAIGJ1aWxkX2lk X3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKICAJKnMrKyA9ICcvJzsKICAgICAgICB3 aGlsZSAoc2l6ZS0tID4gMCkKICAJcyArPSBzcHJpbnRmIChzLCAiJTAyeCIsICh1bnNpZ25lZCkg KmRhdGErKyk7CkBAIC05MDUsNyArOTA1LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0Mjkv Z2RiL2VsZnJlYWQuYwogICAgICAgIHhmcmVlIChidWlsZF9pZCk7CiAgICAgICAgLyogUHJldmVu dCBsb29waW5nIG9uIGEgc3RyaXBwZWQgLmRlYnVnIGZpbGUuICAqLwogICAgICAgIGlmIChidWls ZF9pZF9uYW1lICE9IE5VTEwKLUBAIC0xMjE1LDcgKzE4MTcsNyBAQCBmaW5kX3NlcGFyYXRlX2Rl YnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3RyCitAQCAtMTIxMiw3ICsxODE0LDcgQEAgZmluZF9zZXBh cmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cgogIAkgIHhmcmVlIChidWlsZF9pZF9uYW1l KTsKICAJfQogICAgICAgIGVsc2UgaWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVMTCkKQEAgLTkxNCw3 ICs5MTQsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvZWxmcmVhZC5jCiAgICAg IH0KICAgIHJldHVybiBOVUxMOwogIH0KLUBAIC0xNDE4LDkgKzIwMjAsMTAgQEAgZWxmX3N5bWZp bGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAorQEAgLTE0MzIsOSArMjAzNCwxMCBAQCBl bGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCiAgICAgICBgLm5vdGUuZ251 LmJ1aWxkLWlkJy4gICovCiAgICBlbHNlIGlmICghb2JqZmlsZV9oYXNfcGFydGlhbF9zeW1ib2xz IChvYmpmaWxlKSkKICAgICAgewpAQCAtOTI3LDcgKzkyNyw3IEBAIEluZGV4OiBnZGItNy4yLjkw LjIwMTEwNDI5L2dkYi9lbGZyZWFkLmMKICAKICAgICAgICBpZiAoZGVidWdmaWxlID09IE5VTEwp CiAgCWRlYnVnZmlsZSA9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9kZWJ1Z2xpbmsgKG9i amZpbGUpOwotQEAgLTE0MzIsNiArMjAzNSwxMiBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsCitAQCAtMTQ0Niw2ICsyMDQ5LDEyIEBAIGVsZl9zeW1maWxlX3JlYWQg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKICAJICBzeW1ib2xfZmlsZV9hZGRfc2VwYXJhdGUgKGFi ZmQsIHN5bWZpbGVfZmxhZ3MsIG9iamZpbGUpOwogIAkgIHhmcmVlIChkZWJ1Z2ZpbGUpOwogIAl9 CkBAIC05NDAsNyArOTQwLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2VsZnJl YWQuYwogICAgICB9CiAgfQogIAotQEAgLTE5MTEsNCArMjUyMCwxNiBAQCBfaW5pdGlhbGl6ZV9l bGZyZWFkICh2b2lkKQorQEAgLTE5MjUsNCArMjUzNCwxNiBAQCBfaW5pdGlhbGl6ZV9lbGZyZWFk ICh2b2lkKQogIAogICAgZWxmX29iamZpbGVfZ251X2lmdW5jX2NhY2hlX2RhdGEgPSByZWdpc3Rl cl9vYmpmaWxlX2RhdGEgKCk7CiAgICBnbnVfaWZ1bmNfZm5zX3AgPSAmZWxmX2dudV9pZnVuY19m bnM7CkBAIC05NTcsMTEgKzk1NywxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIv ZWxmcmVhZC5jCiArCiArICBvYnNlcnZlcl9hdHRhY2hfZXhlY3V0YWJsZV9jaGFuZ2VkIChkZWJ1 Z19wcmludF9leGVjdXRhYmxlX2NoYW5nZWQpOwogIH0KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEw NDI5L2dkYi9zeW1maWxlLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zeW1maWxl LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL3N5bWZpbGUu aAkyMDExLTA1LTAzIDA1OjE0OjU2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAx MTA0MjkvZ2RiL3N5bWZpbGUuaAkyMDExLTA1LTAzIDA1OjE0OjU3LjAwMDAwMDAwMCArMDIwMAot QEAgLTYwNSw2ICs2MDUsMTMgQEAgdm9pZCBmcmVlX3N5bWZpbGVfc2VnbWVudF9kYXRhIChzdHJ1 Y3QgcworLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc3ltZmlsZS5oCTIwMTEtMDct MjIgMjA6MTI6NDAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv c3ltZmlsZS5oCTIwMTEtMDctMjIgMjA6MTM6MDAuMDAwMDAwMDAwICswMjAwCitAQCAtNjA5LDYg KzYwOSwxMyBAQCB2b2lkIGZyZWVfc3ltZmlsZV9zZWdtZW50X2RhdGEgKHN0cnVjdCBzCiAgCiAg ZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICppbmNyZW1lbnRfcmVhZGluZ19zeW10YWIgKHZvaWQpOwog IApAQCAtOTc0LDEyICs5NzQsMTIgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL3N5 bWZpbGUuaAogKwogIC8qIEZyb20gZHdhcmYycmVhZC5jICovCiAgCi0gZXh0ZXJuIGludCBkd2Fy ZjJfaGFzX2luZm8gKHN0cnVjdCBvYmpmaWxlICopOwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0 MjkvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAorIC8qIE5hbWVzIGZvciBhIGR3YXJmMiBkZWJ1 Z2dpbmcgc2VjdGlvbi4gIFRoZSBmaWVsZCBOT1JNQUwgaXMgdGhlIG5vcm1hbAorSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuOTAuMjAxMTA0Mjkub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIw MTEtMDUtMDMgMDU6MTQ6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDQy OS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTEtMDUtMDMgMDU6MTQ6NTcuMDAwMDAwMDAw ICswMjAwCi1AQCAtMTM4MSw2ICsxMzgxLDE2IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9 IHsKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4 cAkyMDExLTA3LTIyIDIwOjEyOjQwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTA3LTIyIDIwOjEzOjAwLjAwMDAw MDAwMCArMDIwMAorQEAgLTEzOTAsNiArMTM5MCwxNiBAQCBwcm9jIGRlZmF1bHRfZ2RiX3N0YXJ0 IHsgfSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdpZHRoIHRvIDAuIgogIAl9 CiAgICAgIH0KQEAgLTk5NiwxMSArOTk2LDExIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5 L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAgICAgcmV0dXJuIDA7CiAgfQogIAotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKK0lu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhw CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDQyOS5vcmlnL2dkYi90ZXN0c3VpdGUv bGliL21pLXN1cHBvcnQuZXhwCTIwMTEtMDMtMDcgMTc6MDM6MDQuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAky MDExLTA1LTAzIDA1OjE0OjU3LjAwMDAwMDAwMCArMDIwMAotQEAgLTIyMSw2ICsyMjEsMTYgQEAg cHJvYyBkZWZhdWx0X21pX2dkYl9zdGFydCB7IGFyZ3MgfSB7CistLS0gZ2RiLTcuMy41MC4yMDEx MDcyMi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTEtMDctMjIgMjA6 MTI6NDAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1 aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDExLTA3LTIyIDIwOjEzOjAwLjAwMDAwMDAwMCArMDIw MAorQEAgLTIyMiw2ICsyMjIsMTYgQEAgcHJvYyBkZWZhdWx0X21pX2dkYl9zdGFydCB7IGFyZ3Mg fSB7CiAgCSAgICB9CiAgICAgIAl9CiAgICAgIH0KQEAgLTEwMTcsMTEgKzEwMTcsMTEgQEAgSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAK ICAKICAgICAgZGV0ZWN0X2FzeW5jCiAgCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIv b2JqZmlsZXMuaAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL29iamZpbGVzLmgKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL29iamZpbGVzLmgJMjAx MS0wMy0wNyAxNzoxNzoyOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNDI5 L2dkYi9vYmpmaWxlcy5oCTIwMTEtMDUtMDMgMDU6MTQ6NTcuMDAwMDAwMDAwICswMjAwCi1AQCAt NDQxLDYgKzQ0MSwxMCBAQCBzdHJ1Y3Qgb2JqZmlsZQorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIu b3JpZy9nZGIvb2JqZmlsZXMuaAkyMDExLTA3LTIyIDIwOjEyOjQwLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL29iamZpbGVzLmgJMjAxMS0wNy0yMiAyMDoxMzow MC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00MzQsNiArNDM0LDEwIEBAIHN0cnVjdCBvYmpmaWxlCiAg CiAgI2RlZmluZSBPQkpGX1BTWU1UQUJTX1JFQUQgKDEgPDwgNCkKICAKCmRpZmYgLS1naXQgYS9n ZGItNi42LWJ6MjQ3MzU0LWxlYWRlci1leGl0LWZpeC5wYXRjaCBiL2dkYi02LjYtYnoyNDczNTQt bGVhZGVyLWV4aXQtZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2M2 MWRkLi4wMDAwMDAwCi0tLSBhL2dkYi02LjYtYnoyNDczNTQtbGVhZGVyLWV4aXQtZml4LnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLTIwMDctMDctMDggIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogbGludXgtbmF0LmMgKGxpbnV4 X2x3cF9pc196b21iaWUpOiBOZXcgZnVuY3Rpb24uCi0JKHdhaXRfbHdwKTogRml4IGxvY2t1cCBv biBleGl0IG9mIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyLgotCShsaW51eF94ZmVyX3BhcnRpYWwp OiBSZW5hbWVkIHRvIC4uLgotCShsaW51eF94ZmVyX3BhcnRpYWxfbHdwKTogLi4uIGhlcmUuCi0J KGxpbnV4X3hmZXJfcGFydGlhbCk6IE5ldyBmdW5jdGlvbiB3cmFwcGluZyBMSU5VWF9YRkVSX1BB UlRJQUxfTFdQLgotCi0yMDA4LTAyLTI0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0KLQlQb3J0IHRvIEdEQi02LjhwcmUuCi0KLUluZGV4OiBnZGItNi44LjUw LjIwMDgxMjA5L2dkYi9saW51eC1uYXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAw ODEyMDkub3JpZy9nZGIvbGludXgtbmF0LmMJMjAwOC0xMi0xMCAwMToyNzozNC4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNi44LjUwLjIwMDgxMjA5L2dkYi9saW51eC1uYXQuYwkyMDA4LTEyLTEw IDAxOjI4OjE0LjAwMDAwMDAwMCArMDEwMAotQEAgLTE5ODEsNiArMTk4MSwzMSBAQCBsaW51eF9o YW5kbGVfZXh0ZW5kZWRfd2FpdCAoc3RydWN0IGx3cF9pCi0gCQkgIF8oInVua25vd24gcHRyYWNl IGV2ZW50ICVkIiksIGV2ZW50KTsKLSB9Ci0gCi0rc3RhdGljIGludAotK2xpbnV4X2x3cF9pc196 b21iaWUgKGxvbmcgbHdwKQotK3sKLSsgIGNoYXIgYnVmZmVyW01BWFBBVEhMRU5dOwotKyAgRklM RSAqcHJvY2ZpbGU7Ci0rICBpbnQgcmV0dmFsID0gMDsKLSsKLSsgIHNwcmludGYgKGJ1ZmZlciwg Ii9wcm9jLyVsZC9zdGF0dXMiLCBsd3ApOwotKyAgcHJvY2ZpbGUgPSBmb3BlbiAoYnVmZmVyLCAi ciIpOwotKyAgaWYgKHByb2NmaWxlID09IE5VTEwpCi0rICAgIHsKLSsgICAgICB3YXJuaW5nIChf KCJ1bmFibGUgdG8gb3BlbiAvcHJvYyBmaWxlICclcyciKSwgYnVmZmVyKTsKLSsgICAgICByZXR1 cm4gMDsKLSsgICAgfQotKyAgd2hpbGUgKGZnZXRzIChidWZmZXIsIHNpemVvZiAoYnVmZmVyKSwg cHJvY2ZpbGUpICE9IE5VTEwpCi0rICAgIGlmIChzdHJjbXAgKGJ1ZmZlciwgIlN0YXRlOlx0WiAo em9tYmllKVxuIikgPT0gMCkKLSsgICAgICB7Ci0rCXJldHZhbCA9IDE7Ci0rCWJyZWFrOwotKyAg ICAgIH0KLSsgIGZjbG9zZSAocHJvY2ZpbGUpOwotKwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0r Ci0gLyogV2FpdCBmb3IgTFAgdG8gc3RvcC4gIFJldHVybnMgdGhlIHdhaXQgc3RhdHVzLCBvciAw IGlmIHRoZSBMV1AgaGFzCi0gICAgZXhpdGVkLiAgKi8KLSAKLUBAIC0xOTg4LDE2ICsyMDEzLDMx IEBAIHN0YXRpYyBpbnQKLSB3YWl0X2x3cCAoc3RydWN0IGx3cF9pbmZvICpscCkKLSB7Ci0gICBw aWRfdCBwaWQ7Ci0tICBpbnQgc3RhdHVzOwotKyAgaW50IHN0YXR1cyA9IDA7Ci0gICBpbnQgdGhy ZWFkX2RlYWQgPSAwOwotIAotICAgZ2RiX2Fzc2VydCAoIWxwLT5zdG9wcGVkKTsKLSAgIGdkYl9h c3NlcnQgKGxwLT5zdGF0dXMgPT0gMCk7Ci0gCi0tICBwaWQgPSBteV93YWl0cGlkIChHRVRfTFdQ IChscC0+cHRpZCksICZzdGF0dXMsIDApOwotLSAgaWYgKHBpZCA9PSAtMSAmJiBlcnJubyA9PSBF Q0hJTEQpCi0rICAvKiBUaHJlYWQgZ3JvdXAgbGVhZGVyIG1heSBoYXZlIGV4aXRlZCBidXQgd2Ug d291bGQgbG9jayB1cCBieSBXQUlUUElEIGFzIGl0Ci0rICAgICB3YWl0cyBvbiBhbGwgaXRzIHRo cmVhZHM7IF9fV0NMT05FIGlzIG5vdCBhcHBsaWNhYmxlIGZvciB0aGUgbGVhZGVyLgotKyAgICAg VGhlIHRocmVhZCBsZWFkZXIgcmVzdHJpY3Rpb25zIGlzIG9ubHkgYSBwZXJmb3JtYW5jZSBvcHRp bWl6YXRpb24gaGVyZS4KLSsgICAgIExJTlVYX05BVF9USFJFQURfQUxJVkUgY2Fubm90IGJlIHVz ZWQgaGVyZSBhcyBpdCByZXF1aXJlcyBhIFNUT1BQRUQKLSsgICAgIHByb2Nlc3M7IGl0IGdldHMg RVNSQ0ggYm90aCBmb3IgdGhlIHpvbWJpZSBhbmQgZm9yIHJ1bm5pbmcgcHJvY2Vzc2VzLiAgKi8K LSsgIGlmIChpc19sd3AgKGxwLT5wdGlkKSAmJiBHRVRfUElEIChscC0+cHRpZCkgPT0gR0VUX0xX UCAobHAtPnB0aWQpCi0rICAgICAgJiYgbGludXhfbHdwX2lzX3pvbWJpZSAoR0VUX0xXUCAobHAt PnB0aWQpKSkKLSsgICAgewotKyAgICAgIHRocmVhZF9kZWFkID0gMTsKLSsgICAgICBpZiAoZGVi dWdfbGludXhfbmF0KQotKwlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJXTDogVGhy ZWFkcyBsZWFkZXIgJXMgdmFuaXNoZWQuXG4iLAotKwkJCSAgICB0YXJnZXRfcGlkX3RvX3N0ciAo bHAtPnB0aWQpKTsKLSsgICAgfQotKwotKyAgaWYgKCF0aHJlYWRfZGVhZCkKLSAgICAgewotLSAg ICAgIHBpZCA9IG15X3dhaXRwaWQgKEdFVF9MV1AgKGxwLT5wdGlkKSwgJnN0YXR1cywgX19XQ0xP TkUpOwotKyAgICAgIHBpZCA9IG15X3dhaXRwaWQgKEdFVF9MV1AgKGxwLT5wdGlkKSwgJnN0YXR1 cywgMCk7Ci0rICAgICAgaWYgKHBpZCA9PSAtMSAmJiBlcnJubyA9PSBFQ0hJTEQpCi0rCXBpZCA9 IG15X3dhaXRwaWQgKEdFVF9MV1AgKGxwLT5wdGlkKSwgJnN0YXR1cywgX19XQ0xPTkUpOwotICAg ICAgIGlmIChwaWQgPT0gLTEgJiYgZXJybm8gPT0gRUNISUxEKQotIAl7Ci0gCSAgLyogVGhlIHRo cmVhZCBoYXMgcHJldmlvdXNseSBleGl0ZWQuICBXZSBuZWVkIHRvIGRlbGV0ZSBpdAotQEAgLTQx NTMsOCArNDE5MywxMCBAQCBsaW51eF9uYXRfeGZlcl9vc2RhdGEgKHN0cnVjdCB0YXJnZXRfb3Bz Ci0gICByZXR1cm4gbGVuOwotIH0KLSAKLSsvKiBUcmFuc2ZlciBmcm9tIHRoZSBzcGVjaWZpYyBM V1AgY3VycmVudGx5IHNldCBieSBQSUQgb2YgSU5GRVJJT1JfUFRJRC4gICovCi0rCi0gc3RhdGlj IExPTkdFU1QKLS1saW51eF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIGVu dW0gdGFyZ2V0X29iamVjdCBvYmplY3QsCi0rbGludXhfeGZlcl9wYXJ0aWFsX2x3cCAoc3RydWN0 IHRhcmdldF9vcHMgKm9wcywgZW51bSB0YXJnZXRfb2JqZWN0IG9iamVjdCwKLSAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKmFubmV4LCBnZGJfYnl0ZSAqcmVhZGJ1ZiwKLSAJCSAgICBj b25zdCBnZGJfYnl0ZSAqd3JpdGVidWYsIFVMT05HRVNUIG9mZnNldCwgTE9OR0VTVCBsZW4pCi0g ewotQEAgLTQyMDEsNiArNDI0Myw0NSBAQCBsaW51eF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJn ZXRfb3BzICpvCi0gCQkJICAgICBvZmZzZXQsIGxlbik7Ci0gfQotIAotKy8qIG5wdGxfZGIgZXhw ZWN0cyBiZWluZyBhYmxlIHRvIHRyYW5zZmVyIG1lbW9yeSBqdXN0IGJ5IHNwZWNpZnlpbmcgUElE LgotKyAgIEFmdGVyIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyIGV4aXN0cyB0aGUgTGludXgga2Vy bmVsIHR1cm5zIHRoZSB0YXNrCi0rICAgaW50byB6b21iaWUgbm8gbG9uZ2VyIHBlcm1pdHRpbmcg YWNjZXNzZXMgdG8gaXRzIG1lbW9yeS4KLSsgICBUcmFuc2ZlciB0aGUgbWVtb3J5IGZyb20gYW4g YXJiaXRyYXJ5IExXUF9MSVNUIGVudHJ5IGluIHN1Y2ggY2FzZS4gICovCi0rCi0rc3RhdGljIExP TkdFU1QKLStsaW51eF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIGVudW0g dGFyZ2V0X29iamVjdCBvYmplY3QsCi0rICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICph bm5leCwgZ2RiX2J5dGUgKnJlYWRidWYsCi0rCQkgICAgY29uc3QgZ2RiX2J5dGUgKndyaXRlYnVm LCBVTE9OR0VTVCBvZmZzZXQsIExPTkdFU1QgbGVuKQotK3sKLSsgIExPTkdFU1QgeGZlcjsKLSsg IHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci0rICAvKiBOb3QgdXNpbmcgU0FWRV9JTkZFUklPUl9QVElE IGFscmVhZHkgaGVyZSBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLiAgKi8KLSsgIHN0cnVjdCBjbGVh bnVwICpvbGRfY2hhaW4gPSBOVUxMOwotKyAgcHRpZF90IGluZmVyaW9yX3B0aWRfb3JpZyA9IGlu ZmVyaW9yX3B0aWQ7Ci0rCi0rICBlcnJubyA9IDA7Ci0rICB4ZmVyID0gbGludXhfeGZlcl9wYXJ0 aWFsX2x3cCAob3BzLCBvYmplY3QsIGFubmV4LCByZWFkYnVmLCB3cml0ZWJ1ZiwKLSsJCQkJIG9m ZnNldCwgbGVuKTsKLSsKLSsgIGZvciAobHAgPSBsd3BfbGlzdDsgeGZlciA9PSAwICYmIChlcnJu byA9PSBFQUNDRVMgfHwgZXJybm8gPT0gRVNSQ0gpCi0rCQkgICAgICAmJiBscCAhPSBOVUxMOyBs cCA9IGxwLT5uZXh0KQotKyAgICB7Ci0rICAgICAgaWYgKCFpc19sd3AgKGxwLT5wdGlkKSB8fCBw dGlkX2VxdWFsIChscC0+cHRpZCwgaW5mZXJpb3JfcHRpZF9vcmlnKSkKLSsgICAgICAgIGNvbnRp bnVlOwotKyAgICAgIAotKyAgICAgIGlmIChvbGRfY2hhaW4gPT0gTlVMTCkKLSsJb2xkX2NoYWlu ID0gc2F2ZV9pbmZlcmlvcl9wdGlkICgpOwotKyAgICAgIGluZmVyaW9yX3B0aWQgPSBCVUlMRF9M V1AgKEdFVF9MV1AgKGxwLT5wdGlkKSwgR0VUX0xXUCAobHAtPnB0aWQpKTsKLSsgICAgICBlcnJu byA9IDA7Ci0rICAgICAgeGZlciA9IGxpbnV4X3hmZXJfcGFydGlhbF9sd3AgKG9wcywgb2JqZWN0 LCBhbm5leCwgcmVhZGJ1Ziwgd3JpdGVidWYsCi0rCQkJCSAgICAgb2Zmc2V0LCBsZW4pOwotKyAg ICB9Ci0rCi0rICBpZiAob2xkX2NoYWluICE9IE5VTEwpCi0rICAgIGRvX2NsZWFudXBzIChvbGRf Y2hhaW4pOwotKyAgcmV0dXJuIHhmZXI7Ci0rfQotKwotIC8qIENyZWF0ZSBhIHByb3RvdHlwZSBn ZW5lcmljIEdOVS9MaW51eCB0YXJnZXQuICBUaGUgY2xpZW50IGNhbiBvdmVycmlkZQotICAgIGl0 IHdpdGggbG9jYWwgbWV0aG9kcy4gICovCi0gCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1iejI0NzM1 NC1sZWFkZXItZXhpdC10ZXN0LnBhdGNoIGIvZ2RiLTYuNi1iejI0NzM1NC1sZWFkZXItZXhpdC10 ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDI2Nzg5Li4wMDAwMDAw Ci0tLSBhL2dkYi02LjYtYnoyNDczNTQtbGVhZGVyLWV4aXQtdGVzdC5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDEyMSArMCwwIEBACi0yMDA3LTA3LTA3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi50aHJlYWRzL2xlYWRlci1leGl0LmMsIGdk Yi50aHJlYWRzL2xlYWRlci1leGl0LmV4cDogTmV3IGZpbGVzLgotCi0tLS0gL2Rldi9udWxsCTEg SmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKLSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv bGVhZGVyLWV4aXQuYwk3IEp1bCAyMDA3IDE1OjIxOjU3IC0wMDAwCi1AQCAtMCwwICsxLDQ3IEBA Ci0rLyogQ2xlYW4gZXhpdCBvZiB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlciBzaG91bGQgbm90IGJy ZWFrIEdEQi4KLSsKLSsgICBDb3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBT dWl0ZSAzMzAsCi0rICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKwotKyNpbmNs dWRlIDxwdGhyZWFkLmg+Ci0rI2luY2x1ZGUgPGFzc2VydC5oPgotKyNpbmNsdWRlIDx1bmlzdGQu aD4KLSsKLStzdGF0aWMgdm9pZCAqc3RhcnQgKHZvaWQgKmFyZykKLSt7Ci0rICBmb3IgKDs7KQot KyAgICBwYXVzZSAoKTsKLSsgIC8qIE5PVFJFQUNIRUQgKi8KLSsgIGFzc2VydCAoMCk7Ci0rICBy ZXR1cm4gYXJnOwotK30KLSsKLStpbnQgbWFpbiAodm9pZCkKLSt7Ci0rICBwdGhyZWFkX3QgdGhy ZWFkOwotKyAgaW50IGk7Ci0rCi0rICBpID0gcHRocmVhZF9jcmVhdGUgKCZ0aHJlYWQsIE5VTEws IHN0YXJ0LCBOVUxMKTsJLyogY3JlYXRlMSAqLwotKyAgYXNzZXJ0IChpID09IDApOwotKwotKyAg cHRocmVhZF9leGl0IChOVUxMKTsKLSsgIC8qIE5PVFJFQUNIRUQgKi8KLSsgIGFzc2VydCAoMCk7 Ci0rICByZXR1cm4gMDsKLSt9Ci0tLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAw MDAKLSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvbGVhZGVyLWV4aXQuZXhwCTcgSnVs IDIwMDcgMTU6MjE6NTcgLTAwMDAKLUBAIC0wLDAgKzEsNjQgQEAKLSsjIENvcHlyaWdodCAoQykg MjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rIyAKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIyAKLSsjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0r IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQotKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAotKwotKyMgRXhpdCBvZiB0aGUgdGhyZWFkIGdy b3VwIGxlYWRlciBzaG91bGQgbm90IGJyZWFrIEdEQi4KLSsKLSsjIFRoaXMgZmlsZSB3YXMgd3Jp dHRlbiBieSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0rCi0r aWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rCXN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKLStzZXQg dGVzdGZpbGUgImxlYWRlci1leGl0IgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQg YmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYge1tnZGJfY29t cGlsZV9wdGhyZWFkcyAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxl fSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwot K2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3Vi ZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotK2dkYl9ydW5fY21kCi0rCi0rcHJvYyBzdG9wX3By b2Nlc3MgeyBkZXNjcmlwdGlvbiB9IHsKLSsgIGdsb2JhbCBnZGJfcHJvbXB0Ci0rCi0rICAjIEZv ciB0aGlzIHRvIHdvcmsgd2UgbXVzdCBiZSBzdXJlIHRvIGNvbnN1bWUgdGhlICJDb250aW51aW5n LiIKLSsgICMgbWVzc2FnZSBmaXJzdCwgb3IgR0RCJ3Mgc2lnbmFsIGhhbmRsZXIgbWF5IG5vdCBi ZSBpbiBwbGFjZS4KLSsgIGFmdGVyIDEwMDAge3NlbmRfZ2RiICJcMDAzIn0KLSsgIGdkYl9leHBl Y3QgewotKyAgICAtcmUgIlByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR0lOVC4qJGdkYl9wcm9t cHQgJCIKLSsgICAgICB7Ci0rCXBhc3MgJGRlc2NyaXB0aW9uCi0rICAgICAgfQotKyAgICB0aW1l b3V0Ci0rICAgICAgewotKwlmYWlsICIkZGVzY3JpcHRpb24gKHRpbWVvdXQpIgotKyAgICAgIH0K LSsgIH0KLSt9Ci0rCi0rIyBQcmV2ZW50IHJhY2VzLgotK3NsZWVwIDgKLSsKLStzdG9wX3Byb2Nl c3MgIlRocmVhZHMgY291bGQgYmUgc3RvcHBlZCIKLSsKLStnZGJfdGVzdCAiaW5mbyB0aHJlYWRz IiBcCi0rICAgICAgICAgIlxcKiAyIFRocmVhZCBcW15cclxuXF0qIGluIFxbXlxyXG5cXSoiIFwK LSsgICAgICAgICAiU2luZ2xlIHRocmVhZCBoYXMgYmVlbiBsZWZ0IgoKZGlmZiAtLWdpdCBhL2dk Yi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1pcy1kZWZhdWx0LnBhdGNoIGIvZ2RiLTYuNi1z Y2hlZHVsZXJfbG9ja2luZy1zdGVwLWlzLWRlZmF1bHQucGF0Y2gKaW5kZXggNDI4MTAyYy4uNTBh Zjc5NiAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLWlzLWRlZmF1 bHQucGF0Y2gKKysrIGIvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLWlzLWRlZmF1bHQu cGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvaW5m cnVuLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4uYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvaW5mcnVuLmMJMjAxMC0wNy0xMiAx MDowNToyNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9pbmZy dW4uYwkyMDEwLTA3LTEyIDEwOjU4OjU2LjAwMDAwMDAwMCArMDIwMAotQEAgLTE0OTEsNyArMTQ5 MSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpzY2hlZHVsZXJfZW51bXNbXSA9IHsKKy0tLSBnZGIt Ny4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTEtMDctMjIgMTk6MTI6NTYuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMJMjAxMS0w Ny0yMiAxOToxNzowNi4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xNTQ5LDcgKzE1NDksNyBAQCBzdGF0 aWMgY29uc3QgY2hhciAqc2NoZWR1bGVyX2VudW1zW10gPSB7CiAgICBzY2hlZGxvY2tfc3RlcCwK ICAgIE5VTEwKICB9OwpAQCAtMTEsMTAgKzExLDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi9pbmZydW4uYwogIHN0YXRpYyB2b2lkCiAgc2hvd19zY2hlZHVsZXJfbW9kZSAoc3Ry dWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKICAJCSAgICAgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY29uc29sZS5leHAKK0luZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhwCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNv bnNvbGUuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jb25zb2xlLmV4cAkyMDEwLTA3 LTEyIDEwOjU4OjU2LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jb25zb2xlLmV4cAkyMDExLTAxLTAxIDE2OjMzOjQ3 LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9n ZGIubWkvbWktY29uc29sZS5leHAJMjAxMS0wNy0yMiAxOToxNzowNi4wMDAwMDAwMDAgKzAyMDAK IEBAIC00Nyw2ICs0Nyw5IEBAIGlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGly fS8KICAKICBtaV9ydW5fdG9fbWFpbgpAQCAtMjUsMTAgKzI1LDEwIEBAIEluZGV4OiBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhwCiAgIyBOZXh0 IG92ZXIgdGhlIGhlbGxvKCkgY2FsbCB3aGljaCB3aWxsIHByb2R1Y2UgbG90cyBvZiBvdXRwdXQK ICBtaV9nZGJfdGVzdCAiMjIwLWV4ZWMtbmV4dCIgXAogIAkgICAgIjIyMFxcXnJ1bm5pbmcoXHJc blxcKnJ1bm5pbmcsdGhyZWFkLWlkPVwiYWxsXCIpPyIgXAotSW5kZXg6IGdkYi03LjEuOTAuMjAx MDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLWNvbnNvbGUuZXhwCitJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItY29uc29sZS5leHAKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkv bWkyLWNvbnNvbGUuZXhwCTIwMTAtMDUtMjYgMjA6MTI6MTMuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItY29uc29sZS5leHAJ MjAxMC0wNy0xMiAxMDo1OToxNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEw NzIyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLWNvbnNvbGUuZXhwCTIwMTEtMDYtMjMg MTE6NDA6NTAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVz dHN1aXRlL2dkYi5taS9taTItY29uc29sZS5leHAJMjAxMS0wNy0yMiAxOToxNzoyNy4wMDAwMDAw MDAgKzAyMDAKIEBAIC00Nyw2ICs0Nyw5IEBAIGlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9 LyR7c3ViZGlyfS8KICAKICBtaV9ydW5fdG9fbWFpbgpAQCAtMzcsMTIgKzM3LDEyIEBAIEluZGV4 OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi1jb25zb2xlLmV4 cAogK21pX2dkYl90ZXN0ICIyMTAtZ2RiLXNldCBzY2hlZHVsZXItbG9ja2luZyBvZmYiICIyMTBc XF5kb25lIiAic2V0IHNjaGVkdWxlci1sb2NraW5nIG9mZiIKICsKICAjIE5leHQgb3ZlciB0aGUg aGVsbG8oKSBjYWxsIHdoaWNoIHdpbGwgcHJvZHVjZSBsb3RzIG9mIG91dHB1dAotIGdkYl90ZXN0 X211bHRpcGxlICIyMjAtZXhlYy1uZXh0IiAiU3RhcnRlZCBzdGVwIG92ZXIgaGVsbG8iIHsKLSAg ICAgLXJlICIyMjBcXF5ydW5uaW5nXHJcbihcXCpydW5uaW5nLHRocmVhZC1pZD1cImFsbFwiXHJc bik/JG1pX2dkYl9wcm9tcHQiIHsKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0 c3VpdGUvZ2RiLm1pL21pLWNsaS5leHAKKyBtaV9nZGJfdGVzdCAiMjIwLWV4ZWMtbmV4dCIgIjIy MFxcXnJ1bm5pbmcoXHJcbik/KFxcKnJ1bm5pbmcsdGhyZWFkLWlkPVwiYWxsXCIpPyIgXAorIAki U3RhcnRlZCBzdGVwIG92ZXIgaGVsbG8iCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4y MDEwMDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNsaS5leHAJMjAxMC0wMS0xOSAw OTowMDozOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0 c3VpdGUvZ2RiLm1pL21pLWNsaS5leHAJMjAxMC0wNy0xMiAxMDo1ODo1Ni4wMDAwMDAwMDAgKzAy MDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkt Y2xpLmV4cAkyMDExLTA0LTI3IDEyOjE3OjM4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY2xpLmV4cAkyMDExLTA3LTIyIDE5 OjE3OjA2LjAwMDAwMDAwMCArMDIwMAogQEAgLTE3Niw3ICsxNzYsNyBAQCBtaV9leGVjdXRlX3Rv ICJleGVjLWNvbnRpbnVlIiAiYnJlYWtwb2luCiAgIyBUZXN0IHRoYXQgdGhlIHRva2VuIGlzIG91 dHB1dCBldmVuIGZvciBDTEkgY29tbWFuZHMKICAjIEFsc28gdGVzdCB0aGF0ICpzdG9wcGVkIGlu Y2x1ZGVzIGZyYW1lIGluZm9ybWF0aW9uLgoKZGlmZiAtLWdpdCBhL2dkYi02LjYtc2NoZWR1bGVy X2xvY2tpbmctc3RlcC1zdy13YXRjaHBvaW50czIucGF0Y2ggYi9nZGItNi42LXNjaGVkdWxlcl9s b2NraW5nLXN0ZXAtc3ctd2F0Y2hwb2ludHMyLnBhdGNoCmluZGV4IDcxZjJkYzEuLjY3MWI0NTcg MTAwNjQ0Ci0tLSBhL2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1zdy13YXRjaHBvaW50 czIucGF0Y2gKKysrIGIvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9p bnRzMi5wYXRjaApAQCAtMjEsMTEgKzIxLDExIEBACiAKIAlQb3J0IHRvIEdEQi02LjhwcmUuCiAK LUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9pbmZlcmlvci5oCitJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvaW5mZXJpb3IuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAu MjAxMTAxMTcub3JpZy9nZGIvaW5mZXJpb3IuaAkyMDExLTAxLTA5IDA0OjA4OjU2LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2luZmVyaW9yLmgJMjAxMS0wMS0x NyAxNTo0ODozOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xODYsNyArMTg2LDE1IEBAIGV4dGVybiB2 b2lkIHJlb3Blbl9leGVjX2ZpbGUgKHZvaWQpOworLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3Jp Zy9nZGIvaW5mZXJpb3IuaAkyMDExLTA3LTIyIDAxOjQ2OjA4LjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2luZmVyaW9yLmgJMjAxMS0wNy0yMiAxOToxMzozMC4w MDAwMDAwMDAgKzAyMDAKK0BAIC0xNTgsNyArMTU4LDE1IEBAIGV4dGVybiB2b2lkIHJlb3Blbl9l eGVjX2ZpbGUgKHZvaWQpOwogIC8qIFRoZSBgcmVzdW1lJyByb3V0aW5lIHNob3VsZCBvbmx5IGJl IGNhbGxlZCBpbiBzcGVjaWFsIGNpcmN1bXN0YW5jZXMuCiAgICAgTm9ybWFsbHksIHVzZSBgcHJv Y2VlZCcsIHdoaWNoIGhhbmRsZXMgYSBsb3Qgb2YgYm9va2tlZXBpbmcuICAqLwogIApAQCAtNDAs MTMgKzQwLDEzIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9pbmZlcmlvci5oCiAr CiArZXh0ZXJuIHZvaWQgcmVzdW1lIChlbnVtIHJlc3VtZV9zdGVwLCBlbnVtIHRhcmdldF9zaWdu YWwpOwogIAotIC8qIEZyb20gbWlzYyBmaWxlcyAqLworIGV4dGVybiBwdGlkX3QgdXNlcl92aXNp YmxlX3Jlc3VtZV9wdGlkIChpbnQgc3RlcCk7CiAgCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDEx Ny9nZGIvaW5mcnVuLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4uYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIvaW5mcnVuLmMJMjAx MS0wMS0wOSAwNDowODo1Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3 L2dkYi9pbmZydW4uYwkyMDExLTAxLTE3IDE1OjQ5OjQwLjAwMDAwMDAwMCArMDEwMAotQEAgLTc2 LDcgKzc2LDcgQEAgc3RhdGljIGludCBmb2xsb3dfZm9yayAodm9pZCk7CistLS0gZ2RiLTcuMy41 MC4yMDExMDcyMi5vcmlnL2dkYi9pbmZydW4uYwkyMDExLTA3LTIyIDE5OjA4OjE5LjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2luZnJ1bi5jCTIwMTEtMDctMjIg MTk6MTI6NTYuMDAwMDAwMDAwICswMjAwCitAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgaW50IGZv bGxvd19mb3JrICh2b2lkKTsKICBzdGF0aWMgdm9pZCBzZXRfc2NoZWRsb2NrX2Z1bmMgKGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0eSwKICAJCQkJc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpOwog IApAQCAtNTUsNyArNTUsMTcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2luZnJ1 bi5jCiAgCiAgc3RhdGljIGludCBjdXJyZW50bHlfc3RlcHBpbmdfb3JfbmV4dGluZ19jYWxsYmFj ayAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwKICAJCQkJCQkgICB2b2lkICpkYXRhKTsKLUBAIC0x NTc3LDcgKzE1NzcsNyBAQCBtYXliZV9zb2Z0d2FyZV9zaW5nbGVzdGVwIChzdHJ1Y3QgZ2RiYXJj CitAQCAtMTYzMCw3ICsxNjMwLDggQEAgdXNlcl92aXNpYmxlX3Jlc3VtZV9wdGlkIChpbnQgc3Rl cCkKKyAgICAgfQorICAgZWxzZSBpZiAoKHNjaGVkdWxlcl9tb2RlID09IHNjaGVkbG9ja19vbikK KyAJICAgfHwgKHNjaGVkdWxlcl9tb2RlID09IHNjaGVkbG9ja19zdGVwCistCSAgICAgICAmJiAo c3RlcCB8fCBzaW5nbGVzdGVwX2JyZWFrcG9pbnRzX2luc2VydGVkX3ApKSkKKysJICAgICAgICYm IChzdGVwID09IFJFU1VNRV9TVEVQX1VTRVIKKysJCSAgIHx8IHNpbmdsZXN0ZXBfYnJlYWtwb2lu dHNfaW5zZXJ0ZWRfcCkpKQorICAgICB7CisgICAgICAgLyogVXNlci1zZXR0YWJsZSAnc2NoZWR1 bGVyJyBtb2RlIHJlcXVpcmVzIHNvbG8gdGhyZWFkIHJlc3VtZS4gICovCisgICAgICAgcmVzdW1l X3B0aWQgPSBpbmZlcmlvcl9wdGlkOworQEAgLTE2NDgsNyArMTY0OSw3IEBAIHVzZXJfdmlzaWJs ZV9yZXN1bWVfcHRpZCAoaW50IHN0ZXApCiAgICAgU1RFUCBub256ZXJvIGlmIHdlIHNob3VsZCBz dGVwICh6ZXJvIHRvIGNvbnRpbnVlIGluc3RlYWQpLgogICAgIFNJRyBpcyB0aGUgc2lnbmFsIHRv IGdpdmUgdGhlIGluZmVyaW9yICh6ZXJvIGZvciBub25lKS4gICovCiAgdm9pZApAQCAtNjQsMzcg Kzc0LDIzIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9pbmZydW4uYwogIHsKICAg IGludCBzaG91bGRfcmVzdW1lID0gMTsKICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51cHMg PSBtYWtlX2NsZWFudXAgKHJlc3VtZV9jbGVhbnVwcywgMCk7Ci1AQCAtMTYwOSwxMCArMTYwOSwx MiBAQCByZXN1bWUgKGludCBzdGVwLCBlbnVtIHRhcmdldF9zaWduYWwgc2lnCi0gICAgIH0KK0BA IC0xNjgxLDkgKzE2ODIsMTMgQEAgcmVzdW1lIChpbnQgc3RlcCwgZW51bSB0YXJnZXRfc2lnbmFs IHNpZwogIAogICAgaWYgKGRlYnVnX2luZnJ1bikKLS0gICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAorICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCiAtICAgICAg ICAgICAgICAgICAgICAgICAgImluZnJ1bjogcmVzdW1lIChzdGVwPSVkLCBzaWduYWw9JWQpLCAi Ci0tCQkJInRyYXBfZXhwZWN0ZWQ9JWRcbiIsCi0tIAkJCXN0ZXAsIHNpZywgdHAtPmNvbnRyb2wu dHJhcF9leHBlY3RlZCk7Ci0rICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImlu ZnJ1bjogcmVzdW1lIChzdGVwPSVzLCBzaWduYWw9JWQpLCAiCi0rCQkJCSAgICAidHJhcF9leHBl Y3RlZD0lZFxuIiwKLSsJCQkoc3RlcCA9PSBSRVNVTUVfU1RFUF9DT05USU5VRSA/ICJSRVNVTUVf U1RFUF9DT05USU5VRSIKLSsJCQk6IChzdGVwID09IFJFU1VNRV9TVEVQX1VTRVIgPyAiUkVTVU1F X1NURVBfVVNFUiIKLSsJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiUkVTVU1FX1NU RVBfTkVFREVEIikpLAotKwkJCXNpZywgdHAtPmNvbnRyb2wudHJhcF9leHBlY3RlZCk7Ci0gCi0g ICAvKiBOb3JtYWxseSwgYnkgdGhlIHRpbWUgd2UgcmVhY2ggYHJlc3VtZScsIHRoZSBicmVha3Bv aW50cyBhcmUgZWl0aGVyCi0gICAgICByZW1vdmVkIG9yIGluc2VydGVkLCBhcyBhcHByb3ByaWF0 ZS4gIFRoZSBleGNlcHRpb24gaXMgaWYgd2UncmUgc2l0dGluZwotQEAgLTE3MzAsOSArMTczMiwx MCBAQCBhIGNvbW1hbmQgbGlrZSBgcmV0dXJuJyBvciBganVtcCcgdG8gY29uCi0gCSAgICAgaW5k aXZpZHVhbGx5LiAgKi8KLSAJICByZXN1bWVfcHRpZCA9IGluZmVyaW9yX3B0aWQ7Ci0gCX0KLS0g ICAgICBlbHNlIGlmICgoc2NoZWR1bGVyX21vZGUgPT0gc2NoZWRsb2NrX29uKQotKyAgICAgIGVs c2UgaWYgKHNjaGVkdWxlcl9tb2RlID09IHNjaGVkbG9ja19vbgotIAkgICAgICAgfHwgKHNjaGVk dWxlcl9tb2RlID09IHNjaGVkbG9ja19zdGVwCi0tCQkgICAmJiAoc3RlcCB8fCBzaW5nbGVzdGVw X2JyZWFrcG9pbnRzX2luc2VydGVkX3ApKSkKLSsJCSAgICYmIChzdGVwID09IFJFU1VNRV9TVEVQ X1VTRVIKLSsJCSAgICAgICB8fCBzaW5nbGVzdGVwX2JyZWFrcG9pbnRzX2luc2VydGVkX3ApKSkK LSAJewotIAkgIC8qIFVzZXItc2V0dGFibGUgJ3NjaGVkdWxlcicgbW9kZSByZXF1aXJlcyBzb2xv IHRocmVhZCByZXN1bWUuICAqLwotIAkgIHJlc3VtZV9wdGlkID0gaW5mZXJpb3JfcHRpZDsKLUBA IC0xOTQxLDcgKzE5NDQsNyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJnZXRf c2lnCisrICAgICAgICAgICAgICAgICAgICAgICAgImluZnJ1bjogcmVzdW1lIChzdGVwPSVzLCBz aWduYWw9JWQpLCAiCisgCQkJInRyYXBfZXhwZWN0ZWQ9JWQsIGN1cnJlbnQgdGhyZWFkIFslc10g YXQgJXNcbiIsCistIAkJCXN0ZXAsIHNpZywgdHAtPmNvbnRyb2wudHJhcF9leHBlY3RlZCwKKysJ CQkoc3RlcCA9PSBSRVNVTUVfU1RFUF9DT05USU5VRQorKwkJCSA/ICJSRVNVTUVfU1RFUF9DT05U SU5VRSIKKysJCQkgOiAoc3RlcCA9PSBSRVNVTUVfU1RFUF9VU0VSID8gIlJFU1VNRV9TVEVQX1VT RVIiCisrCQkJCQkJICAgICA6ICJSRVNVTUVfU1RFUF9ORUVERUQiKSksCisrIAkJCXNpZywgdHAt PmNvbnRyb2wudHJhcF9leHBlY3RlZCwKKyAJCQl0YXJnZXRfcGlkX3RvX3N0ciAoaW5mZXJpb3Jf cHRpZCksCisgCQkJcGFkZHJlc3MgKGdkYmFyY2gsIHBjKSk7CisgCitAQCAtMjA1Niw3ICsyMDYx LDcgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZwogICAgc3RydWN0 IHRocmVhZF9pbmZvICp0cDsKICAgIENPUkVfQUREUiBwYzsKICAgIHN0cnVjdCBhZGRyZXNzX3Nw YWNlICphc3BhY2U7CkBAIC0xMDMsNyArOTksNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDEx Ny9nZGIvaW5mcnVuLmMKICAKICAgIC8qIElmIHdlJ3JlIHN0b3BwZWQgYXQgYSBmb3JrL3Zmb3Jr LCBmb2xsb3cgdGhlIGJyYW5jaCBzZXQgYnkgdGhlCiAgICAgICAic2V0IGZvbGxvdy1mb3JrLW1v ZGUiIGNvbW1hbmQ7IG90aGVyd2lzZSwgd2UnbGwganVzdCBwcm9jZWVkCi1AQCAtMTk3NiwxMyAr MTk3OSwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJnZXRfc2lnCitAQCAt MjA5NiwxMyArMjEwMSwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJnZXRf c2lnCiAgCSAgIGFjdHVhbGx5IGJlIGV4ZWN1dGluZyB0aGUgYnJlYWtwb2ludCBpbnNuIGFueXdh eS4KICAJICAgV2UnbGwgYmUgKHVuLSlleGVjdXRpbmcgdGhlIHByZXZpb3VzIGluc3RydWN0aW9u LiAgKi8KICAKQEAgLTExOSw3ICsxMTUsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9n ZGIvaW5mcnVuLmMKICAgICAgfQogICAgZWxzZQogICAgICB7Ci1AQCAtMjAyMywxMyArMjAyNiwx MyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJnZXRfc2lnCitAQCAtMjEzMywx MyArMjEzOCwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJnZXRfc2lnCiAg CSBpcyByZXF1aXJlZCBpdCByZXR1cm5zIFRSVUUgYW5kIHNldHMgdGhlIGN1cnJlbnQgdGhyZWFk IHRvCiAgCSB0aGUgb2xkIHRocmVhZC4gICovCiAgICAgICAgaWYgKHByZXBhcmVfdG9fcHJvY2Vl ZCAoc3RlcCkpCkBAIC0xMzUsNyArMTMxLDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcv Z2RiL2luZnJ1bi5jCiAgICAgIHsKICAgICAgICB0cC0+Y29udHJvbC50cmFwX2V4cGVjdGVkID0g MTsKICAgICAgICAvKiBJZiBkaXNwbGFjZWQgc3RlcHBpbmcgaXMgZW5hYmxlZCwgd2UgY2FuIHN0 ZXAgb3ZlciB0aGUKLUBAIC0yMTE2LDggKzIxMTksMTMgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFk ZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTIyMjYsOCArMjIzMSwxMyBAQCBwcm9jZWVkIChDT1JF X0FERFIgYWRkciwgZW51bSB0YXJnZXRfc2lnCiAgICAvKiBSZXNldCB0byBub3JtYWwgc3RhdGUu ICAqLwogICAgaW5pdF9pbmZ3YWl0X3N0YXRlICgpOwogIApAQCAtMTUwLDcgKzE0Niw3IEBAIElu ZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9pbmZydW4uYwogIAogICAgLyogV2FpdCBmb3Ig aXQgdG8gc3RvcCAoaWYgbm90IHN0YW5kYWxvbmUpCiAgICAgICBhbmQgaW4gYW55IGNhc2UgZGVj b2RlIHdoeSBpdCBzdG9wcGVkLCBhbmQgYWN0IGFjY29yZGluZ2x5LiAgKi8KLUBAIC00OTU3LDE0 ICs0OTY1LDE5IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgorQEAgLTUxMjMsMTQgKzUxMzMs MTkgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CiAgCiAgLyogSXMgdGhyZWFkIFRQIGluIHRo ZSBtaWRkbGUgb2Ygc2luZ2xlLXN0ZXBwaW5nPyAgKi8KICAKQEAgLTE3NiwxMSArMTcyLDExIEBA IEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9pbmZydW4uYwogIH0KICAKICAvKiBSZXR1 cm5zIHRydWUgaWYgYW55IHRocmVhZCAqYnV0KiB0aGUgb25lIHBhc3NlZCBpbiAiZGF0YSIgaXMg aW4gdGhlCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvbGludXgtbmF0LmMKK0luZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMS0wMS0xNyAxNTo0Nzoz Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9saW51eC1uYXQu YwkyMDExLTAxLTE3IDE1OjQ4OjM5LjAwMDAwMDAwMCArMDEwMAotQEAgLTI5MjgsNyArMjkyOCwx MCBAQCBjb3VudF9ldmVudHNfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqCistLS0gZ2RiLTcu My41MC4yMDExMDcyMi5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDExLTA3LTIyIDE5OjA4OjE5LjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xpbnV4LW5hdC5jCTIw MTEtMDctMjIgMTk6MTA6MjQuMDAwMDAwMDAwICswMjAwCitAQCAtMjk4Niw3ICsyOTg2LDEwIEBA IGNvdW50X2V2ZW50c19jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICoKICBzdGF0aWMgaW50CiAg c2VsZWN0X3NpbmdsZXN0ZXBfbHdwX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLCB2b2lk ICpkYXRhKQogIHsKQEAgLTE5MiwxMCArMTg4LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEw MTE3L2dkYi9saW51eC1uYXQuYwogICAgICByZXR1cm4gMTsKICAgIGVsc2UKICAgICAgcmV0dXJu IDA7Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvbGludXgtbmF0LmgKK0luZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9saW51eC1uYXQuaAogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIvbGludXgtbmF0LmgJMjAxMS0wMS0xNyAxNTo0NzozNy4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9saW51eC1uYXQuaAky MDExLTAxLTE3IDE1OjQ4OjM5LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3 MjIub3JpZy9nZGIvbGludXgtbmF0LmgJMjAxMS0wNy0yMiAxOTowODoxOS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9saW51eC1uYXQuaAkyMDExLTA3LTIyIDE5 OjEwOjI0LjAwMDAwMDAwMCArMDIwMAogQEAgLTU1LDggKzU1LDggQEAgc3RydWN0IGx3cF9pbmZv CiAgICAvKiBJZiBub24temVybywgYSBwZW5kaW5nIHdhaXQgc3RhdHVzLiAgKi8KICAgIGludCBz dGF0dXM7CgpkaWZmIC0tZ2l0IGEvZ2RiLTcuMi41MC1zcGFyYy1hZGQtd29ya2Fyb3VuZC10by1i cm9rZW4tZGVidWctZmlsZXMucGF0Y2ggYi9nZGItNy4yLjUwLXNwYXJjLWFkZC13b3JrYXJvdW5k LXRvLWJyb2tlbi1kZWJ1Zy1maWxlcy5wYXRjaAppbmRleCAxOWZkY2MzLi5iMDExNjU4IDEwMDY0 NAotLS0gYS9nZGItNy4yLjUwLXNwYXJjLWFkZC13b3JrYXJvdW5kLXRvLWJyb2tlbi1kZWJ1Zy1m aWxlcy5wYXRjaAorKysgYi9nZGItNy4yLjUwLXNwYXJjLWFkZC13b3JrYXJvdW5kLXRvLWJyb2tl bi1kZWJ1Zy1maWxlcy5wYXRjaApAQCAtMSw2ICsxLDggQEAKLS0tLSBnZGItNy4yLjUwLjIwMTEw MzI4Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTAzLTMwIDEyOjUyOjIwLjM5NTQ1MDAwMSAr MDIwMAotKysrIGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTAzLTMw IDEzOjQxOjU1LjQ4NTQ1MDAwNiArMDIwMAotQEAgLTY2LDEyICs2NiwxNCBAQAorSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMjIgMTk6Mzc6MTUu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYycmVhZC5j CTIwMTEtMDctMjIgMTk6NDQ6NDIuMDAwMDAwMDAwICswMjAwCitAQCAtNjcsMTIgKzY3LDE0IEBA CiAgI2lmZGVmIEhBVkVfWkxJQl9ICiAgI2luY2x1ZGUgPHpsaWIuaD4KICAjZW5kaWYKQEAgLTE1 LDcgKzE3LDcgQEAKICAKICB0eXBlZGVmIHN0cnVjdCBzeW1ib2wgKnN5bWJvbHA7CiAgREVGX1ZF Q19QIChzeW1ib2xwKTsKLUBAIC0xNTYzLDYgKzE1NjUsNyBAQAorQEAgLTE2MTgsNiArMTYyMCw3 IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmoKICAgICAgICAgIH0K ICAgICAgfQogIApAQCAtMjMsNyArMjUsNyBAQAogICNpZmRlZiBIQVZFX01NQVAKICAgIGlmIChw YWdlc2l6ZSA9PSAwKQogICAgICBwYWdlc2l6ZSA9IGdldHBhZ2VzaXplICgpOwotQEAgLTE1ODks NiArMTU5Miw3IEBACitAQCAtMTY0MSw2ICsxNjQ0LDcgQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAo c3RydWN0IG9iamZpbGUgKm9iagogIAl9CiAgICAgIH0KICAjZW5kaWYKQEAgLTMxLDE1ICszMywx NSBAQAogIAogICAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlIGFyZSBhIG5vcm1hbCwgbm90LWNvbXBy ZXNzZWQgc2VjdGlvbi4gICovCiAgICBpbmZvLT5idWZmZXIgPSBidWYKLUBAIC0xNTQzOSw2ICsx NTQ0Myw3IEBACitAQCAtMTU5ODMsNiArMTU5ODcsNyBAQCBtdW5tYXBfc2VjdGlvbl9idWZmZXIg KHN0cnVjdCBkd2FyZjJfc2VjCiAgewotICAgaWYgKGluZm8tPndhc19tbWFwcGVkKQorICAgaWYg KGluZm8tPm1hcF9hZGRyICE9IE5VTEwpCiAgICAgIHsKICsjaWZuZGVmIF9fc3BhcmNfXwogICNp ZmRlZiBIQVZFX01NQVAKLSAgICAgICBpbnRwdHJfdCBiZWdpbiA9IChpbnRwdHJfdCkgaW5mby0+ YnVmZmVyOwotICAgICAgIGludHB0cl90IG1hcF9iZWdpbiA9IGJlZ2luICYgfihwYWdlc2l6ZSAt IDEpOwotQEAgLTE1NDQ5LDYgKzE1NDU0LDcgQEAKKyAgICAgICBpbnQgcmVzOworIAorQEAgLTE1 OTkyLDYgKzE1OTk3LDcgQEAgbXVubWFwX3NlY3Rpb25fYnVmZmVyIChzdHJ1Y3QgZHdhcmYyX3Nl YwogICAgICAgIC8qIFdpdGhvdXQgSEFWRV9NTUFQLCB3ZSBzaG91bGQgbmV2ZXIgYmUgaGVyZSB0 byBiZWdpbiB3aXRoLiAgKi8KICAgICAgICBnZGJfYXNzZXJ0X25vdF9yZWFjaGVkICgibm8gbW1h cCBzdXBwb3J0Iik7CiAgI2VuZGlmCgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci1waWUtYWRkb25z LWtlZXAtZGlzYWJsZWQucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxl ZC5wYXRjaAppbmRleCBhMDNkNTBjLi5kMmI2YzcxIDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLXBp ZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaAorKysgYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMt a2VlcC1kaXNhYmxlZC5wYXRjaApAQCAtMSwxMSArMSwxMiBAQAotSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA0MTEvZ2RiL2JyZWFrcG9pbnQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2JyZWFrcG9pbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0MTEub3JpZy9n ZGIvYnJlYWtwb2ludC5jCTIwMTEtMDQtMTEgMTk6MTE6NTUuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMi45MC4yMDExMDQxMS9nZGIvYnJlYWtwb2ludC5jCTIwMTEtMDQtMTEgMTk6MTg6MTAu MDAwMDAwMDAwICswMjAwCi1AQCAtMTEyMzMsNiArMTEyMzMsNTAgQEAgcmVfc2V0X2JyZWFrcG9p bnQgKHN0cnVjdCBicmVha3BvaW50ICpiKQotICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKLSB9 CistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMS0wNy0y MiAxOTowODoxOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9i cmVha3BvaW50LmMJMjAxMS0wNy0yMiAxOTozMjowNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMzE5 NSw2ICsxMzE5NSw1MCBAQCBpdGVyYXRlX292ZXJfYnJlYWtwb2ludHMgKGludCAoKmNhbGxiYWNr CiAgCisgICByZXR1cm4gTlVMTDsKKyB9CisrIAogK3ZvaWQKICticmVha3BvaW50c19yZWxvY2F0 ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKmRlbHRh KQogK3sKQEAgLTQ5LDE1ICs1MCwxNCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIv YnJlYWtwb2ludC5jCiArICAgIHFzb3J0IChicF9sb2NhdGlvbiwgYnBfbG9jYXRpb25fY291bnQs IHNpemVvZiAoKmJwX2xvY2F0aW9uKSwKICsJICAgYnBfbG9jYXRpb25fY29tcGFyZSk7CiArfQot KwotIC8qIFJlc2V0IGEgYnJlYWtwb2ludCBnaXZlbiBpdCdzIHN0cnVjdCBicmVha3BvaW50ICog QklOVC4KLSAgICBUaGUgdmFsdWUgd2UgcmV0dXJuIGVuZHMgdXAgYmVpbmcgdGhlIHJldHVybiB2 YWx1ZSBmcm9tIGNhdGNoX2Vycm9ycy4KLSAgICBVbnVzZWQgaW4gdGhpcyBjYXNlLiAgKi8KLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9icmVha3BvaW50LmgKKyAKKyB2b2lkCisgX2lu aXRpYWxpemVfYnJlYWtwb2ludCAodm9pZCkKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9icmVha3BvaW50LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDExLm9yaWcv Z2RiL2JyZWFrcG9pbnQuaAkyMDExLTA0LTExIDE5OjExOjU1LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL2JyZWFrcG9pbnQuaAkyMDExLTA0LTExIDE5OjE3OjUz LjAwMDAwMDAwMCArMDIwMAotQEAgLTEyNDUsNCArMTI0NSw3IEBAIGV4dGVybiBpbnQgdXNlcl9i cmVha3BvaW50X3AgKHN0cnVjdCBicmUKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2Ri L2JyZWFrcG9pbnQuaAkyMDExLTA3LTIyIDE5OjA4OjE5LjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQuaAkyMDExLTA3LTIyIDE5OjMxOjIyLjAw MDAwMDAwMCArMDIwMAorQEAgLTEzMjgsNCArMTMyOCw3IEBAIGV4dGVybiBpbnQgdXNlcl9icmVh a3BvaW50X3AgKHN0cnVjdCBicmUKICAKICBleHRlcm4gdm9pZCBtb2RpZnlfc2VtYXBob3JlIChz dHJ1Y3QgYnBfbG9jYXRpb24gKmxvY2F0aW9uLCBpbnQgc2V0KTsKICAKQEAgLTY1LDExICs2NSwx MSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvYnJlYWtwb2ludC5oCiArCQkJCSAg c3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpOwogKwogICNlbmRpZiAvKiAhZGVmaW5lZCAo QlJFQUtQT0lOVF9IKSAqLwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL29iamZpbGVz LmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9vYmpmaWxlcy5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dkYi9vYmpmaWxlcy5jCTIwMTEtMDQtMTEg MTk6MTE6NTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvb2Jq ZmlsZXMuYwkyMDExLTA0LTExIDE5OjE3OjUzLjAwMDAwMDAwMCArMDIwMAotQEAgLTg1MSw2ICs4 NTEsMTEgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQorLS0tIGdk Yi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvb2JqZmlsZXMuYwkyMDExLTA3LTIyIDE5OjA4OjE5 LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL29iamZpbGVzLmMJ MjAxMS0wNy0yMiAxOTozMToyMi4wMDAwMDAwMDAgKzAyMDAKK0BAIC04NDcsNiArODQ3LDExIEBA IG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKICAgICAgb2JqZmlsZS0+ c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9yZWxvY2F0ZV9wcm9iZSAob2JqZmlsZSwKICAJCQkJCQkg ICAgbmV3X29mZnNldHMsIGRlbHRhKTsKICAKCmRpZmYgLS1naXQgYS9nZGItYXJjaGVyLXBpZS1h ZGRvbnMucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2gKaW5kZXggYTU2ODcwYi4u MzZkYzgxYSAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoCisrKyBiL2dk Yi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNy4y LjkwLjIwMTEwNTI1L2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNTI1Lm9y aWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA1LTI1IDE3OjEwOjQ2LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA1LTI1IDE3OjEy OjM1LjAwMDAwMDAwMCArMDIwMAotQEAgLTc2NzUsNyArNzY3NSwxMiBAQCByZWFkX2NvbW1vbl9i bG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmln L2dkYi9kd2FyZjJyZWFkLmMJMjAxMS0wNy0yMiAxOTozMDoxMS4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMJMjAxMS0wNy0yMiAxOTozMDo0 NC4wMDAwMDAwMDAgKzAyMDAKK0BAIC03OTc5LDcgKzc5NzksMTIgQEAgcmVhZF9jb21tb25fYmxv Y2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAogIHsKICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7 CiAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CkBAIC0xNiw3ICsxNiw3IEBAIEluZGV4OiBnZGItNy4y LjkwLjIwMTEwNTI1L2dkYi9kd2FyZjJyZWFkLmMKICAKICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAo ZGllLCBEV19BVF9sb2NhdGlvbiwgY3UpOwogICAgaWYgKGF0dHIpCi1AQCAtNzY4NCw2ICs3Njg5 LDcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTc5ODgs NiArNzk5Myw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAg ICAgICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKICAgICAgICAgIHsKICAgICAgICAg ICAgYmFzZSA9IGRlY29kZV9sb2NkZXNjIChEV19CTE9DSyAoYXR0ciksIGN1KTsKQEAgLTI0LDcg KzI0LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2R3YXJmMnJlYWQuYwogICAg ICAgICAgfQogICAgICAgIGVsc2UgaWYgKGF0dHJfZm9ybV9pc19zZWN0aW9uX29mZnNldCAoYXR0 cikpCiAgICAgICAgICB7Ci1AQCAtNzczNiwxMiArNzc0MiwxNSBAQCByZWFkX2NvbW1vbl9ibG9j ayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCitAQCAtODA0MCwxMiArODA0NiwxNSBAQCByZWFkX2Nv bW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCiAgCSAgaWYgKHN5bSAhPSBOVUxMCiAg CSAgICAgICYmIGhhbmRsZV9kYXRhX21lbWJlcl9sb2NhdGlvbiAoY2hpbGRfZGllLCBjdSwgJm9m ZnNldCkpCiAgCSAgICB7CkBAIC00Miw3ICs0Miw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEw NTI1L2dkYi9kd2FyZjJyZWFkLmMKICAJICBlbHNlCiAgCSAgICBTRVRfRklFTERfUEhZU05BTUUg KCpmaWVsZCwgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSk7CiAgCSAgRklFTERfVFlQRSAoKmZp ZWxkKSA9IFNZTUJPTF9UWVBFIChzeW0pOwotQEAgLTc3NTUsNyArNzc2NCw3IEBAIHJlYWRfY29t bW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC04MDU5LDcgKzgwNjgsNyBAQCBy ZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCiAgCiAgICAgICAgc3ltID0g bmV3X3N5bWJvbCAoZGllLCB0eXBlLCBjdSk7CiAgICAgICAgLyogU1lNQk9MX1ZBTFVFX0FERFJF U1MgbmV2ZXIgZ2V0cyB1c2VkIGFzIGFsbCBpdHMgZmllbGRzIGFyZSBzdGF0aWMuICAqLwpAQCAt NTEsMTAgKzUxLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9kd2FyZjJyZWFk LmMKICAKICAgICAgICBzZXRfZGllX3R5cGUgKGRpZSwgdHlwZSwgY3UpOwogICAgICB9Ci1JbmRl eDogZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvZ2RidHlwZXMuaAorSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEw NTI1Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMS0wNS0yNSAxNzowNToyMS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9nZGJ0eXBlcy5oCTIwMTEtMDUtMjUgMTc6 MTE6MTAuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9n ZGJ0eXBlcy5oCTIwMTEtMDctMjIgMTk6MDg6MTkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuaAkyMDExLTA3LTIyIDE5OjMxOjA4LjAwMDAwMDAw MCArMDIwMAogQEAgLTM5Niw2ICszOTYsNyBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1 ZQogIGVudW0gZmllbGRfbG9jX2tpbmQKICAgIHsKQEAgLTY5LDkgKzY5LDkgQEAgSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA1MjUvZ2RiL2dkYnR5cGVzLmgKICAKICsJLyogVGhpcyBhZGRyZXNzIGlz IHVucmVsb2NhdGVkIGJ5IHRoZSBvYmpmaWxlJ3MgQU5PRkZTRVQuICAqLwogIAlDT1JFX0FERFIg cGh5c2FkZHI7Ci0gCWNoYXIgKnBoeXNuYW1lOworIAljb25zdCBjaGFyICpwaHlzbmFtZTsKICAg ICAgICB9Ci1AQCAtMTEwNiw2ICsxMTA4LDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9h dXhfdHlwZSAoc3RydQorQEAgLTExMTAsNiArMTExMiw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRl X2duYXRfYXV4X3R5cGUgKHN0cnUKICAjZGVmaW5lIEZJRUxEX0xPQ19LSU5EKHRoaXNmbGQpICgo dGhpc2ZsZCkubG9jX2tpbmQpCiAgI2RlZmluZSBGSUVMRF9CSVRQT1ModGhpc2ZsZCkgKCh0aGlz ZmxkKS5sb2MuYml0cG9zKQogICNkZWZpbmUgRklFTERfU1RBVElDX1BIWVNOQU1FKHRoaXNmbGQp ICgodGhpc2ZsZCkubG9jLnBoeXNuYW1lKQpAQCAtNzksNyArNzksNyBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDUyNS9nZGIvZ2RidHlwZXMuaAogICNkZWZpbmUgRklFTERfU1RBVElDX1BIWVNB RERSKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLnBoeXNhZGRyKQogICNkZWZpbmUgU0VUX0ZJRUxE X0JJVFBPUyh0aGlzZmxkLCBiaXRwb3MpCQkJXAogICAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxk KSA9IEZJRUxEX0xPQ19LSU5EX0JJVFBPUywJCVwKLUBAIC0xMTEzLDYgKzExMTYsNyBAQCBleHRl cm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAtMTExNyw2ICsxMTIwLDcg QEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQogICNkZWZpbmUgU0VU X0ZJRUxEX1BIWVNOQU1FKHRoaXNmbGQsIG5hbWUpCQkJXAogICAgKEZJRUxEX0xPQ19LSU5EICh0 aGlzZmxkKSA9IEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1FLAkJXAogICAgIEZJRUxEX1NUQVRJQ19Q SFlTTkFNRSAodGhpc2ZsZCkgPSAobmFtZSkpCkBAIC04Nyw3ICs4Nyw3IEBAIEluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNTI1L2dkYi9nZGJ0eXBlcy5oCiAgI2RlZmluZSBTRVRfRklFTERfUEhZU0FE RFIodGhpc2ZsZCwgYWRkcikJCQlcCiAgICAoRklFTERfTE9DX0tJTkQgKHRoaXNmbGQpID0gRklF TERfTE9DX0tJTkRfUEhZU0FERFIsCQlcCiAgICAgRklFTERfU1RBVElDX1BIWVNBRERSICh0aGlz ZmxkKSA9IChhZGRyKSkKLUBAIC0xMTI1LDYgKzExMjksNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0 ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAtMTEyOSw2ICsxMTMzLDcgQEAgZXh0ZXJuIHZvaWQg YWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQogICNkZWZpbmUgVFlQRV9GSUVMRF9MT0NfS0lO RCh0aGlzdHlwZSwgbikgRklFTERfTE9DX0tJTkQgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkK ICAjZGVmaW5lIFRZUEVfRklFTERfQklUUE9TKHRoaXN0eXBlLCBuKSBGSUVMRF9CSVRQT1MgKFRZ UEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfU1RBVElDX1BIWVNO QU1FKHRoaXN0eXBlLCBuKSBGSUVMRF9TVEFUSUNfUEhZU05BTUUgKFRZUEVfRklFTEQgKHRoaXN0 eXBlLCBuKSkKQEAgLTk1LDExICs5NSwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDUyNS9n ZGIvZ2RidHlwZXMuaAogICNkZWZpbmUgVFlQRV9GSUVMRF9TVEFUSUNfUEhZU0FERFIodGhpc3R5 cGUsIG4pIEZJRUxEX1NUQVRJQ19QSFlTQUREUiAoVFlQRV9GSUVMRCAodGhpc3R5cGUsIG4pKQog ICNkZWZpbmUgVFlQRV9GSUVMRF9BUlRJRklDSUFMKHRoaXN0eXBlLCBuKSBGSUVMRF9BUlRJRklD SUFMKFRZUEVfRklFTEQodGhpc3R5cGUsbikpCiAgI2RlZmluZSBUWVBFX0ZJRUxEX0JJVFNJWkUo dGhpc3R5cGUsIG4pIEZJRUxEX0JJVFNJWkUoVFlQRV9GSUVMRCh0aGlzdHlwZSxuKSkKLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9qdi1sYW5nLmMKK0luZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9qdi1sYW5nLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNTI1 Lm9yaWcvZ2RiL2p2LWxhbmcuYwkyMDExLTAzLTAyIDAxOjQyOjUzLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2p2LWxhbmcuYwkyMDExLTA1LTI1IDE3OjExOjEw LjAwMDAwMDAwMCArMDIwMAotQEAgLTQxNCw3ICs0MTQsOCBAQCBqYXZhX2xpbmtfY2xhc3NfdHlw ZSAoc3RydWN0IGdkYmFyY2ggKmdkCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9q di1sYW5nLmMJMjAxMS0wNy0wMSAyMDoyODo1Mi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9qdi1sYW5nLmMJMjAxMS0wNy0yMiAxOTozMDo0NC4wMDAwMDAwMDAg KzAyMDAKK0BAIC00MzAsNyArNDMwLDggQEAgamF2YV9saW5rX2NsYXNzX3R5cGUgKHN0cnVjdCBn ZGJhcmNoICpnZAogIAogICAgZmllbGRzID0gTlVMTDsKICAgIG5maWVsZHMtLTsJCQkvKiBGaXJz dCBzZXQgdXAgZHVtbXkgImNsYXNzIiBmaWVsZC4gICovCkBAIC0xMDksNyArMTA5LDcgQEAgSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2p2LWxhbmcuYwogICAgVFlQRV9GSUVMRF9OQU1F ICh0eXBlLCBuZmllbGRzKSA9ICJjbGFzcyI7CiAgICBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIG5m aWVsZHMpID0gdmFsdWVfdHlwZSAoY2xhcyk7CiAgICBTRVRfVFlQRV9GSUVMRF9QUklWQVRFICh0 eXBlLCBuZmllbGRzKTsKLUBAIC00NjIsNyArNDYzLDggQEAgamF2YV9saW5rX2NsYXNzX3R5cGUg KHN0cnVjdCBnZGJhcmNoICpnZAorQEAgLTQ3OCw3ICs0NzksOCBAQCBqYXZhX2xpbmtfY2xhc3Nf dHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkCiAgCSAgU0VUX1RZUEVfRklFTERfUFJPVEVDVEVEICh0 eXBlLCBpKTsKICAJfQogICAgICAgIGlmIChhY2NmbGFncyAmIDB4MDAwOCkJLyogQUNDX1NUQVRJ QyAqLwpAQCAtMTE5LDExICsxMTksMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2Ri L2p2LWxhbmcuYwogICAgICAgIGVsc2UKICAJVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpID0g OCAqIGJvZmZzZXQ7CiAgICAgICAgaWYgKGFjY2ZsYWdzICYgMHg4MDAwKQkvKiBGSUVMRF9VTlJF U09MVkVEX0ZMQUcgKi8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi92YWx1ZS5jCitJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuOTAuMjAxMTA1MjUub3JpZy9nZGIvdmFsdWUuYwkyMDExLTA1LTI1IDE3OjA1OjIxLjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3ZhbHVlLmMJMjAxMS0w NS0yNSAxNzoxMToxMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNDkyLDcgKzI0OTIsOCBAQCB2YWx1 ZV9zdGF0aWNfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBpCistLS0gZ2RiLTcuMy41MC4yMDEx MDcyMi5vcmlnL2dkYi92YWx1ZS5jCTIwMTEtMDctMjIgMTk6MDg6MTkuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwkyMDExLTA3LTIyIDE5OjMwOjQ0 LjAwMDAwMDAwMCArMDIwMAorQEAgLTI1MDcsNyArMjUwNyw4IEBAIHZhbHVlX3N0YXRpY19maWVs ZCAoc3RydWN0IHR5cGUgKnR5cGUsIGkKICAgICAgewogICAgICBjYXNlIEZJRUxEX0xPQ19LSU5E X1BIWVNBRERSOgogICAgICAgIHJldHZhbCA9IHZhbHVlX2F0X2xhenkgKFRZUEVfRklFTERfVFlQ RSAodHlwZSwgZmllbGRubyksCgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci5wYXRjaCBiL2dkYi1h cmNoZXIucGF0Y2gKaW5kZXggNzhiNGU1YS4uNmUxZjllNCAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hl ci5wYXRjaAorKysgYi9nZGItYXJjaGVyLnBhdGNoCkBAIC0yLDEwNyArMiwyMCBAQCBodHRwOi8v c291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hlcgogaHR0cDovL3NvdXJjZXdhcmUu b3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQKIAogR0lUIHNuYXBzaG90OgotY29t bWl0IDQyZmJjODlmZDNhNzk3ZGE5ODgwZWNiYzQ2N2MzMmYyODJhY2YzMWYKK2NvbW1pdCBhZDhl NGU4MjJjODU1NjQ1YmY5MzhjYTgyZDA0YjRlZDlmODNhODNiCiAKIGJyYW5jaCBgYXJjaGVyJyAt IHRoZSBtZXJnZSBvZiBicmFuY2hlczoKIGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYQogYXJjaGVy LWphbmtyYXRvY2h2aWwtd2F0Y2hwb2ludDMKIGFyY2hlci10cm9tZXktcHl0aG9uCi1hcmNoZXIt c2VyZ2lvZGotc3RhcC1mZWRvcmExNWprCithcmNoZXItc2VyZ2lvZGotc3RhcC1wYXRjaC1zcGxp dAogCiAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2JmZC9lbGYtYmZkLmgKK0luZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9NYWtlZmlsZS5pbgogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIuOTAuMjAxMTA3MDMub3JpZy9iZmQvZWxmLWJmZC5oCTIwMTEtMDMtMTQgMTY6NTQ6NTcuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9iZmQvZWxmLWJmZC5oCTIwMTEt MDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTQ3Niw2ICsxNDc2LDE1IEBAIGVu dW0KLSAgIFRhZ19jb21wYXRpYmlsaXR5ID0gMzIKLSB9OwotIAotKy8qIFRoZSBmb2xsb3dpbmcg c3RydWN0IHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCBldmVyeSBTeXN0ZW1UYXAgc2VjdGlvbgot KyAgIGZvdW5kIGluIHRoZSBvYmplY3QgZmlsZS4gICovCi0rc3RydWN0IHNkdF9ub3RlCi0rewot KyAgc3RydWN0IHNkdF9ub3RlICpuZXh0OwotKyAgYmZkX3NpemVfdHlwZSBzaXplOwotKyAgYmZk X2J5dGUgZGF0YVsxXTsKLSt9OwotKwotIC8qIFNvbWUgcHJpdmF0ZSBkYXRhIGlzIHN0YXNoZWQg YXdheSBmb3IgZnV0dXJlIHVzZSB1c2luZyB0aGUgdGRhdGEgcG9pbnRlcgotICAgIGluIHRoZSBi ZmQgc3RydWN0dXJlLiAgKi8KLSAKLUBAIC0xNjMzLDYgKzE2NDIsMTEgQEAgc3RydWN0IGVsZl9v YmpfdGRhdGEKLSAgIGJmZF9zaXplX3R5cGUgYnVpbGRfaWRfc2l6ZTsKLSAgIGJmZF9ieXRlICpi dWlsZF9pZDsKLSAKLSsgIC8qIExpbmtlZC1saXN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJv dXQgZXZlcnkgU3lzdGVtdGFwIHNlY3Rpb24KLSsgICAgIGZvdW5kIGluIHRoZSBvYmplY3QgZmls ZS4gIEVhY2ggc2VjdGlvbiBjb3JyZXNwb25kcyB0byBvbmUgZW50cnkKLSsgICAgIGluIHRoZSBs aXN0LiAgKi8KLSsgIHN0cnVjdCBzZHRfbm90ZSAqc2R0X25vdGVfaGVhZDsKLSsKLSAgIC8qIFRy dWUgaWYgdGhlIGJmZCBjb250YWlucyBzeW1ib2xzIHRoYXQgaGF2ZSB0aGUgU1RUX0dOVV9JRlVO QwotICAgICAgc3ltYm9sIHR5cGUuICBVc2VkIHRvIHNldCB0aGUgb3NhYmkgZmllbGQgaW4gdGhl IEVMRiBoZWFkZXIKLSAgICAgIHN0cnVjdHVyZS4gICovCi1JbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9iZmQvZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcv YmZkL2VsZi5jCTIwMTEtMDMtMTQgMTY6NTQ6NTguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9iZmQvZWxmLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAy MDAKLUBAIC04NDE2LDYgKzg0MTYsMzcgQEAgZWxmb2JqX2dyb2tfZ251X25vdGUgKGJmZCAqYWJm ZCwgRWxmX0ludAotICAgICB9Ci0gfQotIAotKyNkZWZpbmUgU0RUX05PVEVfVFlQRSAzCi0rCi0r c3RhdGljIGJmZF9ib29sZWFuCi0rZWxmb2JqX2dyb2tfc3RhcHNkdF9ub3RlXzEgKGJmZCAqYWJm ZCwgRWxmX0ludGVybmFsX05vdGUgKm5vdGUpCi0rewotKyAgc3RydWN0IHNkdF9ub3RlICpjdXIg PQotKyAgICAoc3RydWN0IHNkdF9ub3RlICopIGJmZF9hbGxvYyAoYWJmZCwgc2l6ZW9mIChzdHJ1 Y3Qgc2R0X25vdGUpCi0rCQkJCSAgICsgbm90ZS0+ZGVzY3N6KTsKLSsKLSsgIGN1ci0+bmV4dCA9 IChzdHJ1Y3Qgc2R0X25vdGUgKikgKGVsZl90ZGF0YSAoYWJmZCkpLT5zZHRfbm90ZV9oZWFkOwot KyAgY3VyLT5zaXplID0gKGJmZF9zaXplX3R5cGUpIG5vdGUtPmRlc2NzejsKLSsgIG1lbWNweSAo Y3VyLT5kYXRhLCBub3RlLT5kZXNjZGF0YSwgbm90ZS0+ZGVzY3N6KTsKLSsKLSsgIGVsZl90ZGF0 YSAoYWJmZCktPnNkdF9ub3RlX2hlYWQgPSBjdXI7Ci0rCi0rICByZXR1cm4gVFJVRTsKLSt9Ci0r Ci0rc3RhdGljIGJmZF9ib29sZWFuCi0rZWxmb2JqX2dyb2tfc3RhcHNkdF9ub3RlIChiZmQgKmFi ZmQsIEVsZl9JbnRlcm5hbF9Ob3RlICpub3RlKQotK3sKLSsgIHN3aXRjaCAobm90ZS0+dHlwZSkK LSsgICAgewotKyAgICBjYXNlIFNEVF9OT1RFX1RZUEU6Ci0rICAgICAgcmV0dXJuIGVsZm9ial9n cm9rX3N0YXBzZHRfbm90ZV8xIChhYmZkLCBub3RlKTsKLSsKLSsgICAgZGVmYXVsdDoKLSsgICAg ICByZXR1cm4gVFJVRTsKLSsgICAgfQotK30KLSsKLSBzdGF0aWMgYmZkX2Jvb2xlYW4KLSBlbGZj b3JlX25ldGJzZF9nZXRfbHdwaWQgKEVsZl9JbnRlcm5hbF9Ob3RlICpub3RlLCBpbnQgKmx3cGlk cCkKLSB7Ci1AQCAtOTE4OSw2ICs5MjIwLDEyIEBAIGVsZl9wYXJzZV9ub3RlcyAoYmZkICphYmZk LCBjaGFyICpidWYsIHMKLSAJICAgICAgaWYgKCEgZWxmb2JqX2dyb2tfZ251X25vdGUgKGFiZmQs ICZpbikpCi0gCQlyZXR1cm4gRkFMU0U7Ci0gCSAgICB9Ci0rCSAgZWxzZSBpZiAoaW4ubmFtZXN6 ID09IHNpemVvZiAic3RhcHNkdCIKLSsJCSAgICYmIHN0cmNtcCAoaW4ubmFtZWRhdGEsICJzdGFw c2R0IikgPT0gMCkKLSsJICAgIHsKLSsJICAgICAgaWYgKCEgZWxmb2JqX2dyb2tfc3RhcHNkdF9u b3RlIChhYmZkLCAmaW4pKQotKwkJcmV0dXJuIEZBTFNFOwotKwkgICAgfQotIAkgIGJyZWFrOwot IAl9Ci0gCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvTWFrZWZpbGUuaW4KLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL01ha2VmaWxlLmluCTIwMTEt MDMtMzAgMDg6NTU6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvTWFrZWZpbGUuaW4JMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC03 MjEsOCArNzIxLDggQEAgU0ZJTEVTID0gYWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcgor LS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvTWFrZWZpbGUuaW4JMjAxMS0wNy0yMiAw MTo0NjowOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9NYWtl ZmlsZS5pbgkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTcyMCw4ICs3 MjAsOCBAQCBTRklMRVMgPSBhZGEtZXhwLnkgYWRhLWxhbmcuYyBhZGEtdHlwZXByCiAgCXNlbnRp bmVsLWZyYW1lLmMgXAogIAlzZXJpYWwuYyBzZXItYmFzZS5jIHNlci11bml4LmMgXAogIAlzb2xp Yi5jIHNvbGliLXRhcmdldC5jIHNvdXJjZS5jIFwKQEAgLTExMywyNSArMjYsMjUgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL01ha2VmaWxlLmluCiAgCXRhcmdldC5jIHRhcmdldC1k ZXNjcmlwdGlvbnMuYyB0YXJnZXQtbWVtb3J5LmMgXAogIAl0aHJlYWQuYyB0b3AuYyB0cmFjZXBv aW50LmMgXAogIAl0cmFkLWZyYW1lLmMgXAotQEAgLTgxNCw3ICs4MTQsNyBAQCBvc2RhdGEuaCBw cm9jZnMuaCBweXRob24vcHktZXZlbnQuaCBweXRoCitAQCAtODE4LDcgKzgxOCw3IEBAIG9zZGF0 YS5oIHByb2Nmcy5oIHB5dGhvbi9weS1ldmVudC5oIHB5dGgKICBweXRob24vcHl0aG9uLWludGVy bmFsLmggcHl0aG9uL3B5dGhvbi5oIHJhdmVuc2Nhci10aHJlYWQuaCByZWNvcmQuaCBcCiAgc29s aWItZGFyd2luLmggc29saWItaWE2NC1ocHV4Lmggc29saWItc3B1Lmggd2luZG93cy1uYXQuaCB4 Y29mZnJlYWQuaCBcCiAgZ251bGliL2V4dHJhL2FyZy1ub25udWxsLmggZ251bGliL2V4dHJhL2Mr K2RlZnMuaCBnbnVsaWIvZXh0cmEvd2Fybi1vbi11c2UuaCBcCi0tZ251bGliL3N0ZGRlZi5pbi5o IGlubGluZS1mcmFtZS5oCi0rZ251bGliL3N0ZGRlZi5pbi5oIGlubGluZS1mcmFtZS5oIHN0YXAt cHJvYmUuaAotIAotICMgSGVhZGVyIGZpbGVzIHRoYXQgYWxyZWFkeSBoYXZlIHNyY2RpciBpbiB0 aGVtLCBvciB3aGljaCBhcmUgaW4gb2JqZGlyLgorLWdudWxpYi9zdGRkZWYuaW4uaCBpbmxpbmUt ZnJhbWUuaCBcCisrZ251bGliL3N0ZGRlZi5pbi5oIGlubGluZS1mcmFtZS5oIHN0YXAtcHJvYmUu aCBcCisgY29tbW9uL2NvbW1vbi11dGlscy5oIGNvbW1vbi94bWwtdXRpbHMuaCBjb21tb24vYnVm ZmVyLmggY29tbW9uL3B0aWQuaCBcCisgY29tbW9uL2xpbnV4LW9zZGF0YS5oCiAgCi1AQCAtODk5 LDcgKzg5OSw3IEBAIENPTU1PTl9PQlMgPSAkKERFUEZJTEVTKSAkKENPTkZJR19PQlMpICQKLSAJ cHJvbG9ndWUtdmFsdWUubyBtZW1vcnktbWFwLm8gbWVtcmFuZ2UubyB4bWwtc3VwcG9ydC5vIHht bC1zeXNjYWxsLm8gXAorQEAgLTkwNiw3ICs5MDYsNyBAQCBDT01NT05fT0JTID0gJChERVBGSUxF UykgJChDT05GSUdfT0JTKSAkCisgCXhtbC1zdXBwb3J0Lm8geG1sLXN5c2NhbGwubyB4bWwtdXRp bHMubyBcCiAgCXRhcmdldC1kZXNjcmlwdGlvbnMubyB0YXJnZXQtbWVtb3J5Lm8geG1sLXRkZXNj Lm8geG1sLWJ1aWx0aW4ubyBcCiAgCWluZmVyaW9yLm8gb3NkYXRhLm8gZ2RiX3VzbGVlcC5vIHJl Y29yZC5vIGdjb3JlLm8gXAotLQlqaXQubyBwcm9nc3BhY2UubwotKwlqaXQubyBwcm9nc3BhY2Uu byBzdGFwLXByb2JlLm8KKy0Jaml0Lm8gcHJvZ3NwYWNlLm8gXAorKwlqaXQubyBwcm9nc3BhY2Uu byBzdGFwLXByb2JlLm8gXAorIAljb21tb24tdXRpbHMubyBidWZmZXIubyBwdGlkLm8KICAKICBU U09CUyA9IGluZmxvdy5vCi0gCi1AQCAtMTMyMCw2ICsxMzIwLDEyIEBAIHN0YW1wLWg6ICQoc3Jj ZGlyKS9jb25maWcuaW4gY29uZmlnLnN0YXQKK0BAIC0xMzI4LDYgKzEzMjgsMTIgQEAgc3RhbXAt aDogJChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdAogIAkgIENPTkZJR19MSU5LUz0gXAog IAkgICQoU0hFTEwpIGNvbmZpZy5zdGF0dXMKICAKQEAgLTE0NCwxMSArNTcsMTEgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL01ha2VmaWxlLmluCiAgY29uZmlnLnN0YXR1czogJChz cmNkaXIpL2NvbmZpZ3VyZSBjb25maWd1cmUudGd0IGNvbmZpZ3VyZS5ob3N0CiAgCSQoU0hFTEwp IGNvbmZpZy5zdGF0dXMgLS1yZWNoZWNrCiAgCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvTkVXUworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL05FV1MKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL05FV1MJMjAxMS0wMy0zMSAxNjozMjo0 OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9ORVdTCTIwMTEt MDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMzYsNiArMzYsMTAgQEAKKy0tLSBn ZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL05FV1MJMjAxMS0wNy0yMSAxOToyMzo1NS4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9ORVdTCTIwMTEtMDctMjIg MjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMTA5LDYgKzEwOSwxMCBAQCBRVERpc2FibGUK ICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIE9wZW5DTCBDIGxhbmd1YWdlIChodHRwOi8vd3d3 Lmtocm9ub3Mub3JnL29wZW5jbCkKICAgIGhhcyBiZWVuIGludGVncmF0ZWQgaW50byBHREIuCiAg CkBAIC0xNTksMTEgKzcyLDExIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9ORVdT CiAgKiBQeXRob24gc2NyaXB0aW5nCiAgCiAgICAqKiBUaGUgZnVuY3Rpb24gZ2RiLldyaXRlIG5v dyBhY2NlcHRzIGFuIG9wdGlvbmFsIGtleXdvcmQgJ3N0cmVhbScuCi1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvYWRhLWxhbmcuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2FkYS1sYW5nLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2Ri L2FkYS1sYW5nLmMJMjAxMS0wNS0xNyAyMzoyNjowOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi9hZGEtbGFuZy5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAw MDAwICswMjAwCi1AQCAtMTE0MjEsNiArMTE0MjEsNyBAQCBhZGFfb3BlcmF0b3JfbGVuZ3RoIChj b25zdCBzdHJ1Y3QgZXhwcmVzCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9hZGEt bGFuZy5jCTIwMTEtMDctMDUgMDY6MzQ6NTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvYWRhLWxhbmcuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCAr MDIwMAorQEAgLTExODYyLDYgKzExODYyLDcgQEAgYWRhX29wZXJhdG9yX2xlbmd0aCAoY29uc3Qg c3RydWN0IGV4cHJlcwogIAogIHN0YXRpYyBpbnQKICBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCkBAIC0xNzEsNyArODQsNyBAQCBJbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvYWRhLWxhbmcuYwogIAkJICAgIGludCAoKm9iamZpbGVfZnVu YykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKICAJCSAgICB2b2lkICpk YXRhKQogIHsKLUBAIC0xMTQzNSwxMiArMTE0MzYsMTUgQEAgYWRhX29wZXJhdG9yX2NoZWNrIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZQorQEAgLTExODc2LDEyICsxMTg3NywxNSBAQCBhZGFfb3BlcmF0 b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICplCiAgCWJyZWFrOwogIAogICAgICAgIGRlZmF1 bHQ6CkBAIC0xODksMTAgKzEwMiwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv YWRhLWxhbmcuYwogICAgICAgICYmICgqb2JqZmlsZV9mdW5jKSAoVFlQRV9PQkpGSUxFICh0eXBl KSwgZGF0YSkpCiAgICAgIHJldHVybiAxOwogIAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL2FtZDY0LWxpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYW1k NjQtbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcv Z2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTEtMDEtMDcgMjA6MzY6MTUuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYW1kNjQtbGludXgtbmF0LmMJMjAxMS0wNy0w MyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcv Z2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTEtMDEtMDcgMjA6MzY6MTUuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYW1kNjQtbGludXgtbmF0LmMJMjAxMS0wNy0y MiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0yNjUsMTggKzI2NSwxMSBAQCBhbWQ2NF9s aW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0CiAgDAogIC8qIFN1cHBvcnQgZm9yIGRl YnVnIHJlZ2lzdGVycy4gICovCkBAIC00MTEsMTAgKzMyNCwxMCBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvYW1kNjQtbGludXgtbmF0LmMKICB9CiAgDAogIAotSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL2F4LWdkYi5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvYXgtZ2RiLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2Ri L2F4LWdkYi5jCTIwMTEtMDItMjQgMDg6Mzk6NDcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvYXgtZ2RiLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAg KzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2F4LWdkYi5jCTIwMTEtMDYt MTcgMjI6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv YXgtZ2RiLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0yMDAxLDcg KzIwMDEsOCBAQCBnZW5fZXhwciAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgdW5pb24gCiAgCiAg ICAgIGNhc2UgT1BfSU5URVJOQUxWQVI6CkBAIC00MzQsMTAgKzM0NywxMCBAQCBJbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvYXgtZ2RiLmMKICAJICBlcnJvciAoXygiJCVzIGlzIG5vdCBh IHRyYWNlIHN0YXRlIHZhcmlhYmxlOyBHREIgYWdlbnQgIgogIAkJICAgImV4cHJlc3Npb25zIGNh bm5vdCB1c2UgY29udmVuaWVuY2UgdmFyaWFibGVzLiIpLCBuYW1lKTsKICAgICAgICB9Ci1JbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYmxvY2suYworSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2Jsb2NrLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9y aWcvZ2RiL2Jsb2NrLmMJMjAxMS0wMS0wMSAxNjozMjo1Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9ibG9jay5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAw MDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9ibG9jay5jCTIwMTEt MDEtMDEgMTY6MzI6NTcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvYmxvY2suYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTMyMiwz ICszMjIsMjEgQEAgYWxsb2NhdGVfYmxvY2sgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKQogIAog ICAgcmV0dXJuIGJsOwpAQCAtNDYwLDIxICszNzMsMjEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL2Jsb2NrLmMKICsKICsgIHJldHVybiBTWU1CT0xfU1lNVEFCIChmdW5jKS0+b2Jq ZmlsZTsKICt9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYmxvY2suaAorSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Jsb2NrLmgKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2Jsb2NrLmgJMjAxMS0wMS0wMSAxNjozMjo1Ny4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9ibG9jay5oCTIwMTEtMDctMDMg MTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTY3LDQgKzE2Nyw2IEBAIGV4dGVybiBjb25z dCBzdHJ1Y3QgYmxvY2sgKmJsb2NrX2dsb2JhbF8KKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9y aWcvZ2RiL2Jsb2NrLmgJMjAxMS0wNC0wNCAxNjoxMDoxMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9ibG9jay5oCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAw MDAwICswMjAwCitAQCAtMTYzLDQgKzE2Myw2IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmxvY2sg KmJsb2NrX2dsb2JhbF8KICAKICBleHRlcm4gc3RydWN0IGJsb2NrICphbGxvY2F0ZV9ibG9jayAo c3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwogIAogK2V4dGVybiBzdHJ1Y3Qgb2JqZmlsZSAqYmxv Y2tfb2JqZmlsZSAoY29uc3Qgc3RydWN0IGJsb2NrICpibG9jayk7CiArCiAgI2VuZGlmIC8qIEJM T0NLX0ggKi8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9icmVha3BvaW50LmMKK0lu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9icmVha3BvaW50LmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDExLTA3LTAyIDIx OjMzOjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFr cG9pbnQuYwkyMDExLTA3LTAzIDEwOjM1OjA5LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMu NTAuMjAxMTA3MjIub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTEtMDctMDUgMDY6MzQ6NTUuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYnJlYWtwb2ludC5jCTIw MTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtNjMsNiArNjMsOCBAQAogICNp bmNsdWRlICJqaXQuaCIKICAjaW5jbHVkZSAieG1sLXN5c2NhbGwuaCIKQEAgLTQ4MiwxOSArMzk1 LDkgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9pbnQuYwogKyNpbmNs dWRlICJnZGJfcmVnZXguaCIKICsjaW5jbHVkZSAic3RhcC1wcm9iZS5oIgogICNpbmNsdWRlICJj bGkvY2xpLXV0aWxzLmgiCisgI2luY2x1ZGUgImNvbnRpbnVhdGlvbnMuaCIKICAKLSAvKiByZWFk bGluZSBpbmNsdWRlIGZpbGVzICovCi1AQCAtMTA3LDYgKzEwOSw5IEBAIHN0YXRpYyB2b2lkIGJy ZWFrX2NvbW1hbmRfMSAoY2hhciAqLCBpbnQKLSAKLSBzdGF0aWMgdm9pZCBtZW50aW9uIChzdHJ1 Y3QgYnJlYWtwb2ludCAqKTsKLSAKLStzdGF0aWMgc3RydWN0IGJwX2xvY2F0aW9uICphZGRfbG9j YXRpb25fdG9fYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCi0rCQkJCQkgICAgIGNv bnN0IHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbCk7Ci0rCi0gLyogVGhpcyBmdW5jdGlvbiBp cyB1c2VkIGluIGdkYnRrIHNvdXJjZXMgYW5kIHRodXMgY2FuIG5vdCBiZSBtYWRlCi0gICAgc3Rh dGljLiAgKi8KLSBzdHJ1Y3QgYnJlYWtwb2ludCAqc2V0X3Jhd19icmVha3BvaW50IChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwKLUBAIC0xMjQ5LDYgKzEyNTQsOSBAQCB1cGRhdGVfd2F0Y2hwb2lu dCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCitAQCAtMTI0OCw2ICsxMjUwLDkgQEAgdXBkYXRlX3dh dGNocG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLAogICAgaWYgKCF3YXRjaHBvaW50X2luX3Ro cmVhZF9zY29wZSAoYikpCiAgICAgIHJldHVybjsKICAKQEAgLTUwNCw3ICs0MDcsNyBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgICBpZiAoYi0+ZGlzcG9z aXRpb24gPT0gZGlzcF9kZWxfYXRfbmV4dF9zdG9wKQogICAgICByZXR1cm47CiAgIAotQEAgLTE1 MjAsNiArMTUyOCw0MCBAQCBzaG91bGRfYmVfaW5zZXJ0ZWQgKHN0cnVjdCBicF9sb2NhdGlvbiAq CitAQCAtMTUzMiw2ICsxNTM3LDQwIEBAIHNob3VsZF9iZV9pbnNlcnRlZCAoc3RydWN0IGJwX2xv Y2F0aW9uICoKICAgIHJldHVybiAxOwogIH0KICAKQEAgLTU0NSw3ICs0NDgsNyBAQCBJbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgLyogSW5zZXJ0IGEgbG93LWxl dmVsICJicmVha3BvaW50IiBvZiBzb21lIHR5cGUuICBCTCBpcyB0aGUgYnJlYWtwb2ludAogICAg IGxvY2F0aW9uLiAgQW55IGVycm9yIG1lc3NhZ2VzIGFyZSBwcmludGVkIHRvIFRNUF9FUlJPUl9T VFJFQU07IGFuZAogICAgIERJU0FCTEVEX0JSRUFLUywgYW5kIEhXX0JSRUFLUE9JTlRfRVJST1Ig YXJlIHVzZWQgdG8gcmVwb3J0IHByb2JsZW1zLgotQEAgLTE2MTYsNiArMTY1OCw4IEBAIGluc2Vy dF9icF9sb2NhdGlvbiAoc3RydWN0IGJwX2xvY2F0aW9uICoKK0BAIC0xNjI4LDYgKzE2NjcsOCBA QCBpbnNlcnRfYnBfbG9jYXRpb24gKHN0cnVjdCBicF9sb2NhdGlvbiAqCiAgCSAgZWxzZQogIAkg ICAgdmFsID0gdGFyZ2V0X2luc2VydF9icmVha3BvaW50IChibC0+Z2RiYXJjaCwKICAJCQkJCSAg ICAmYmwtPnRhcmdldF9pbmZvKTsKQEAgLTU1NCw3ICs0NTcsNyBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgCX0KICAgICAgICBlbHNlCiAgCXsKLUBAIC0x ODcwLDYgKzE5MTQsNyBAQCBpbnNlcnRfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHZvaWQpCitAQCAt MTg4Myw2ICsxOTI0LDcgQEAgaW5zZXJ0X2JyZWFrcG9pbnRfbG9jYXRpb25zICh2b2lkKQogICAg aW50IHZhbCA9IDA7CiAgICBpbnQgZGlzYWJsZWRfYnJlYWtzID0gMDsKICAgIGludCBod19icmVh a3BvaW50X2Vycm9yID0gMDsKQEAgLTU2Miw3ICs0NjUsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgCiAgICBzdHJ1Y3QgdWlfZmlsZSAqdG1wX2Vycm9y X3N0cmVhbSA9IG1lbV9maWxlb3BlbiAoKTsKICAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwcyA9 IG1ha2VfY2xlYW51cF91aV9maWxlX2RlbGV0ZSAodG1wX2Vycm9yX3N0cmVhbSk7Ci1AQCAtMTg5 Nyw5ICsxOTQyLDEzIEBAIGluc2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKK0BAIC0x OTEwLDkgKzE5NTIsMTMgQEAgaW5zZXJ0X2JyZWFrcG9pbnRfbG9jYXRpb25zICh2b2lkKQogICAg ICAgIC8qIEZvciB0YXJnZXRzIHRoYXQgc3VwcG9ydCBnbG9iYWwgYnJlYWtwb2ludHMsIHRoZXJl J3Mgbm8gbmVlZAogIAkgdG8gc2VsZWN0IGFuIGluZmVyaW9yIHRvIGluc2VydCBicmVha3BvaW50 IHRvLiAgSW4gZmFjdCwgZXZlbgogIAkgaWYgd2UgYXJlbid0IGF0dGFjaGVkIHRvIGFueSBwcm9j ZXNzIHlldCwgd2Ugc2hvdWxkIHN0aWxsCkBAIC01NzgsNyArNDgxLDcgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9pbnQuYwogIAljb250aW51ZTsKICAKICAgICAgICB2 YWwgPSBpbnNlcnRfYnBfbG9jYXRpb24gKGJsLCB0bXBfZXJyb3Jfc3RyZWFtLCAmZGlzYWJsZWRf YnJlYWtzLAotQEAgLTE5MjMsMTMgKzE5NzIsMTkgQEAgaW5zZXJ0X2JyZWFrcG9pbnRfbG9jYXRp b25zICh2b2lkKQorQEAgLTE5MzYsMTMgKzE5ODIsMTkgQEAgaW5zZXJ0X2JyZWFrcG9pbnRfbG9j YXRpb25zICh2b2lkKQogIAogICAgICAgIGlmIChicHQtPmRpc3Bvc2l0aW9uID09IGRpc3BfZGVs X2F0X25leHRfc3RvcCkKICAJY29udGludWU7CkBAIC02MDQsMTIgKzUwNywxNSBAQCBJbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgICAgICAgaWYgKHNvbWVfZmFp bGVkKQogIAl7CiAgCSAgZm9yIChsb2MgPSBicHQtPmxvYzsgbG9jOyBsb2MgPSBsb2MtPm5leHQp Ci1AQCAtMjExMSwxNSArMjE2NiwyNCBAQCBzdHJ1Y3QgYnJlYWtwb2ludF9vYmpmaWxlX2RhdGEK K0BAIC0yMTEwLDExICsyMTYyLDIzIEBAIHN0cnVjdCBicmVha3BvaW50X29iamZpbGVfZGF0YQog ICAgLyogTWluaW1hbCBzeW1ib2wocykgZm9yICJsb25nam1wIiwgInNpZ2xvbmdqbXAiLCBldGMu IChpZiBhbnkpLiAgKi8KICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9uZ2ptcF9tc3ltW05V TV9MT05HSk1QX05BTUVTXTsKICAKLSsgIC8qIFN5c3RlbVRhcCBwcm9iZSBwb2ludCBmb3IgbG9u Z2ptcCAoaWYgYW55KS4gICovCi0rICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqbG9uZ2ptcF9w cm9iZTsKKysgIC8qIFRydWUgaWYgd2UgaGF2ZSBsb29rZWQgZm9yIGxvbmdqbXAgcHJvYmVzLiAg Ki8KKysgIGludCBsb25nam1wX3NlYXJjaGVkOworKworKyAgLyogU3lzdGVtVGFwIHByb2JlIHBv aW50cyBmb3IgbG9uZ2ptcCAoaWYgYW55KS4gICovCisrICBWRUMgKHN0YXBfcHJvYmVfcCkgKmxv bmdqbXBfcHJvYmVzOwogKwogICAgLyogTWluaW1hbCBzeW1ib2wgZm9yICJzdGQ6OnRlcm1pbmF0 ZSgpIiAoaWYgYW55KS4gICovCiAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKnRlcm1pbmF0ZV9t c3ltOwpAQCAtNjE3LDczICs1MjMsMTAwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9icmVha3BvaW50LmMKICAgIC8qIE1pbmltYWwgc3ltYm9sIGZvciAiX1Vud2luZF9EZWJ1Z0hv b2siIChpZiBhbnkpLiAgKi8KICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqZXhjZXB0aW9uX21z eW07CiArCi0rICAvKiBTeXN0ZW1UYXAgcHJvYmUgcG9pbnQgZm9yIHVud2luZGluZyAoaWYgYW55 KS4gICovCi0rICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqZXhjZXB0aW9uX3Byb2JlOworKyAg LyogVHJ1ZSBpZiB3ZSBoYXZlIGxvb2tlZCBmb3IgZXhjZXB0aW9uIHByb2Jlcy4gICovCisrICBp bnQgZXhjZXB0aW9uX3NlYXJjaGVkOworKworKyAgLyogU3lzdGVtVGFwIHByb2JlIHBvaW50cyBm b3IgdW53aW5kaW5nIChpZiBhbnkpLiAgKi8KKysgIFZFQyAoc3RhcF9wcm9iZV9wKSAqZXhjZXB0 aW9uX3Byb2JlczsKICB9OwogIAogIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZmlsZV9kYXRhICpi cmVha3BvaW50X29iamZpbGVfa2V5OworQEAgLTIxNTEsNiArMjIxNSwxNSBAQCBnZXRfYnJlYWtw b2ludF9vYmpmaWxlX2RhdGEgKHN0cnVjdCBvYmpmCisgfQogIAotKy8qIFN5c3RlbVRhcCBwcm9i ZSBub3QgZm91bmQgc2VudGluZWwuICAqLwotK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9i ZSBwcm9iZV9ub3RfZm91bmQ7Cisgc3RhdGljIHZvaWQKKytmcmVlX2JyZWFrcG9pbnRfcHJvYmVz IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqLCB2b2lkICpkYXRhKQorK3sKKysgIHN0cnVjdCBicmVha3Bv aW50X29iamZpbGVfZGF0YSAqYnBfb2JqZmlsZV9kYXRhID0gZGF0YTsKICsKLSAvKiBNaW5pbWFs IHN5bWJvbCBub3QgZm91bmQgc2VudGluZWwuICAqLwotIHN0YXRpYyBzdHJ1Y3QgbWluaW1hbF9z eW1ib2wgbXN5bV9ub3RfZm91bmQ7Ci0gCi1AQCAtMjIyNyw2ICsyMjkxLDI5IEBAIGNyZWF0ZV9s b25nam1wX21hc3Rlcl9icmVha3BvaW50ICh2b2lkKQorKyAgVkVDX2ZyZWUgKHN0YXBfcHJvYmVf cCwgYnBfb2JqZmlsZV9kYXRhLT5sb25nam1wX3Byb2Jlcyk7CisrICBWRUNfZnJlZSAoc3RhcF9w cm9iZV9wLCBicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9wcm9iZXMpOworK30KKysKKytzdGF0 aWMgdm9pZAorIGNyZWF0ZV9vdmVybGF5X2V2ZW50X2JyZWFrcG9pbnQgKHZvaWQpCisgeworICAg c3RydWN0IG9iamZpbGUgKm9iamZpbGU7CitAQCAtMjIyNiw2ICsyMjk5LDM2IEBAIGNyZWF0ZV9s b25nam1wX21hc3Rlcl9icmVha3BvaW50ICh2b2lkKQogIAogICAgICAgIGJwX29iamZpbGVfZGF0 YSA9IGdldF9icmVha3BvaW50X29iamZpbGVfZGF0YSAob2JqZmlsZSk7CiAgCi0rICAgICAgaWYg KGJwX29iamZpbGVfZGF0YS0+bG9uZ2ptcF9wcm9iZSAhPSAmcHJvYmVfbm90X2ZvdW5kKQorKyAg ICAgIGlmICghYnBfb2JqZmlsZV9kYXRhLT5sb25nam1wX3NlYXJjaGVkKQogKwl7Ci0rCSAgaWYg KGJwX29iamZpbGVfZGF0YS0+bG9uZ2ptcF9wcm9iZSA9PSBOVUxMKQotKwkgICAgYnBfb2JqZmls ZV9kYXRhLT5sb25nam1wX3Byb2JlCi0rCSAgICAgID0gZmluZF9wcm9iZV9pbl9vYmpmaWxlIChv YmpmaWxlLCAibGliYyIsICJsb25nam1wIik7CisrCSAgYnBfb2JqZmlsZV9kYXRhLT5sb25nam1w X3Byb2JlcworKwkgICAgPSBmaW5kX3Byb2Jlc19pbl9vYmpmaWxlIChvYmpmaWxlLCAibGliYyIs ICJsb25nam1wIik7CisrCSAgYnBfb2JqZmlsZV9kYXRhLT5sb25nam1wX3NlYXJjaGVkID0gMTsK KysJfQogKwotKwkgIGlmIChicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmUpCisrICAgICAg aWYgKGJwX29iamZpbGVfZGF0YS0+bG9uZ2ptcF9wcm9iZXMgIT0gTlVMTCkKKysJeworKwkgIGlu dCBpOworKwkgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZTsKKysJICBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworKworKwkgIGZvciAo aSA9IDA7CisrCSAgICAgICBWRUNfaXRlcmF0ZSAoc3RhcF9wcm9iZV9wLAorKwkJCSAgICBicF9v YmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmVzLAorKwkJCSAgICBpLCBwcm9iZSk7CisrCSAgICAg ICArK2kpCiArCSAgICB7CiArCSAgICAgIHN0cnVjdCBicmVha3BvaW50ICpiOwotKwkgICAgICBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotKwot KwkgICAgICBiID0gY3JlYXRlX2ludGVybmFsX2JyZWFrcG9pbnQgKGdkYmFyY2gsCi0rCQkJCQkg ICAgICBicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmUtPmFkZHJlc3MsCisrCSAgICAgICAK KysJICAgICAgYiA9IGNyZWF0ZV9pbnRlcm5hbF9icmVha3BvaW50IChnZGJhcmNoLCBwcm9iZS0+ YWRkcmVzcywKICsJCQkJCSAgICAgIGJwX2xvbmdqbXBfbWFzdGVyKTsKICsJICAgICAgYi0+YWRk cl9zdHJpbmcgPSB4c3RyZHVwICgicHJvYmU6bGliYzpsb25nam1wIik7CiArCSAgICAgIGItPmVu YWJsZV9zdGF0ZSA9IGJwX2Rpc2FibGVkOwotKwotKwkgICAgICBjb250aW51ZTsKICsJICAgIH0K LSsJICBlbHNlCi0rCSAgICBicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmUgPSAmcHJvYmVf bm90X2ZvdW5kOworKworKwkgIGNvbnRpbnVlOwogKwl9CiArCiAgICAgICAgZm9yIChpID0gMDsg aSA8IE5VTV9MT05HSk1QX05BTUVTOyBpKyspCiAgCXsKICAJICBzdHJ1Y3QgYnJlYWtwb2ludCAq YjsKLUBAIC0yMzM1LDYgKzI0MjIsMzEgQEAgY3JlYXRlX2V4Y2VwdGlvbl9tYXN0ZXJfYnJlYWtw b2ludCAodm9pZAorQEAgLTIzMzQsNiArMjQzNywzOSBAQCBjcmVhdGVfZXhjZXB0aW9uX21hc3Rl cl9icmVha3BvaW50ICh2b2lkCiAgCiAgICAgICAgYnBfb2JqZmlsZV9kYXRhID0gZ2V0X2JyZWFr cG9pbnRfb2JqZmlsZV9kYXRhIChvYmpmaWxlKTsKICAKICsgICAgICAvKiBXZSBwcmVmZXIgdGhl IFN5c3RlbVRhcCBwcm9iZSBwb2ludCBpZiBpdCBleGlzdHMuICAqLwotKyAgICAgIGlmIChicF9v YmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9wcm9iZSAhPSAmcHJvYmVfbm90X2ZvdW5kKQorKyAgICAg IGlmICghYnBfb2JqZmlsZV9kYXRhLT5leGNlcHRpb25fc2VhcmNoZWQpCiArCXsKLSsJICBpZiAo YnBfb2JqZmlsZV9kYXRhLT5leGNlcHRpb25fcHJvYmUgPT0gTlVMTCkKLSsJICAgIGJwX29iamZp bGVfZGF0YS0+ZXhjZXB0aW9uX3Byb2JlCi0rCSAgICAgID0gZmluZF9wcm9iZV9pbl9vYmpmaWxl IChvYmpmaWxlLCAibGliZ2NjIiwgInVud2luZCIpOworKwkgIGJwX29iamZpbGVfZGF0YS0+ZXhj ZXB0aW9uX3Byb2JlcworKwkgICAgPSBmaW5kX3Byb2Jlc19pbl9vYmpmaWxlIChvYmpmaWxlLCAi bGliZ2NjIiwgInVud2luZCIpOworKwkgIGJwX29iamZpbGVfZGF0YS0+ZXhjZXB0aW9uX3NlYXJj aGVkID0gMTsKKysJfQogKwotKwkgIGlmIChicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9wcm9i ZSkKKysgICAgICBpZiAoYnBfb2JqZmlsZV9kYXRhLT5leGNlcHRpb25fcHJvYmVzICE9IE5VTEwp CisrCXsKKysJICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9i amZpbGUpOworKwkgIGludCBpOworKwkgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZTsK KysKKysJICBmb3IgKGkgPSAwOworKwkgICAgICAgVkVDX2l0ZXJhdGUgKHN0YXBfcHJvYmVfcCwK KysJCQkgICAgYnBfb2JqZmlsZV9kYXRhLT5leGNlcHRpb25fcHJvYmVzLAorKwkJCSAgICBpLCBw cm9iZSk7CisrCSAgICAgICArK2kpCiArCSAgICB7CiArCSAgICAgIHN0cnVjdCBicmVha3BvaW50 ICpiOwotKwkgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2gg KG9iamZpbGUpOwogKwotKwkgICAgICBiID0gY3JlYXRlX2ludGVybmFsX2JyZWFrcG9pbnQgKGdk YmFyY2gsCi0rCQkJCQkgICAgICBicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9wcm9iZS0+YWRk cmVzcywKKysJICAgICAgYiA9IGNyZWF0ZV9pbnRlcm5hbF9icmVha3BvaW50IChnZGJhcmNoLCBw cm9iZS0+YWRkcmVzcywKICsJCQkJCSAgICAgIGJwX2V4Y2VwdGlvbl9tYXN0ZXIpOwogKwkgICAg ICBiLT5hZGRyX3N0cmluZyA9IHhzdHJkdXAgKCJwcm9iZTpsaWJnY2M6dW53aW5kIik7CiArCSAg ICAgIGItPmVuYWJsZV9zdGF0ZSA9IGJwX2Rpc2FibGVkOwotKwkgICAgICBjb250aW51ZTsKICsJ ICAgIH0KLSsJICBlbHNlCi0rCSAgICBicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9wcm9iZSA9 ICZwcm9iZV9ub3RfZm91bmQ7CisrCisrCSAgY29udGludWU7CiArCX0KICsKICsgICAgICAvKiBP dGhlcndpc2UsIHRyeSB0aGUgaG9vayBmdW5jdGlvbi4gICovCkBAIC02OTEsNyArNjI0LDcgQEAg SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9pbnQuYwogICAgICAgIGlmICht c3ltX25vdF9mb3VuZF9wIChicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9tc3ltKSkKICAJY29u dGludWU7CiAgCi1AQCAtMjU1Myw2ICsyNjY1LDggQEAgcmVtb3ZlX2JyZWFrcG9pbnRfMSAoc3Ry dWN0IGJwX2xvY2F0aW9uIAorQEAgLTI1NTIsNiArMjY4OCw4IEBAIHJlbW92ZV9icmVha3BvaW50 XzEgKHN0cnVjdCBicF9sb2NhdGlvbiAKICAJICAgIHZhbCA9IHRhcmdldF9yZW1vdmVfaHdfYnJl YWtwb2ludCAoYmwtPmdkYmFyY2gsICZibC0+dGFyZ2V0X2luZm8pOwogIAkgIGVsc2UKICAJICAg IHZhbCA9IHRhcmdldF9yZW1vdmVfYnJlYWtwb2ludCAoYmwtPmdkYmFyY2gsICZibC0+dGFyZ2V0 X2luZm8pOwpAQCAtNzAwLDcgKzYzMyw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9icmVha3BvaW50LmMKICAJfQogICAgICAgIGVsc2UKICAJewotQEAgLTU5MDIsNiArNjAxNiw3 IEBAIHNldF9yYXdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmEKK0BAIC01OTU3LDYg KzYwOTUsNyBAQCBpbml0X3Jhd19icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqCiAgICBi LT5sb2MtPnJlcXVlc3RlZF9hZGRyZXNzID0gc2FsLnBjOwogICAgYi0+bG9jLT5hZGRyZXNzID0g YWRqdXN0ZWRfYWRkcmVzczsKICAgIGItPmxvYy0+cHNwYWNlID0gc2FsLnBzcGFjZTsKQEAgLTcw OCw3ICs2NDEsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5j CiAgCiAgICAvKiBTdG9yZSB0aGUgcHJvZ3JhbSBzcGFjZSB0aGF0IHdhcyB1c2VkIHRvIHNldCB0 aGUgYnJlYWtwb2ludCwgZm9yCiAgICAgICBicmVha3BvaW50IHJlc2V0dGluZy4gICovCi1AQCAt NzA1Niw2ICs3MTcxLDcgQEAgY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKHN0cnVjdCBicmVh aworQEAgLTcyMjYsNiArNzM2NSw3IEBAIGNsb25lX21vbWVudGFyeV9icmVha3BvaW50IChzdHJ1 Y3QgYnJlYWsKICAgIGNvcHktPmxvYy0+YWRkcmVzcyA9IG9yaWctPmxvYy0+YWRkcmVzczsKICAg IGNvcHktPmxvYy0+c2VjdGlvbiA9IG9yaWctPmxvYy0+c2VjdGlvbjsKICAgIGNvcHktPmxvYy0+ cHNwYWNlID0gb3JpZy0+bG9jLT5wc3BhY2U7CkBAIC03MTYsNyArNjQ5LDcgQEAgSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9pbnQuYwogIAogICAgaWYgKG9yaWctPnNvdXJj ZV9maWxlID09IE5VTEwpCiAgICAgIGNvcHktPnNvdXJjZV9maWxlID0gTlVMTDsKLUBAIC03Mjc5 LDYgKzczOTUsNyBAQCBhZGRfbG9jYXRpb25fdG9fYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrCitA QCAtNzQ0NCw2ICs3NTg0LDcgQEAgYWRkX2xvY2F0aW9uX3RvX2JyZWFrcG9pbnQgKHN0cnVjdCBi cmVhawogICAgbG9jLT5hZGRyZXNzID0gYWRqdXN0X2JyZWFrcG9pbnRfYWRkcmVzcyAobG9jLT5n ZGJhcmNoLAogIAkJCQkJICAgIGxvYy0+cmVxdWVzdGVkX2FkZHJlc3MsIGItPnR5cGUpOwogICAg bG9jLT5wc3BhY2UgPSBzYWwtPnBzcGFjZTsKQEAgLTcyNCw3ICs2NTcsNyBAQCBJbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgICBnZGJfYXNzZXJ0IChsb2MtPnBz cGFjZSAhPSBOVUxMKTsKICAgIGxvYy0+c2VjdGlvbiA9IHNhbC0+c2VjdGlvbjsKICAKLUBAIC03 NjI4LDYgKzc3NDUsMTYgQEAgY3JlYXRlX2JyZWFrcG9pbnRzX3NhbCAoc3RydWN0IGdkYmFyY2gg KgorQEAgLTc3OTIsNiArNzkzMywxNiBAQCBjcmVhdGVfYnJlYWtwb2ludHNfc2FsIChzdHJ1Y3Qg Z2RiYXJjaCAqCiAgewogICAgaW50IGk7CiAgCkBAIC03NDEsOCArNjc0LDggQEAgSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9pbnQuYwogICAgZm9yIChpID0gMDsgaSA8IHNh bHMubmVsdHM7ICsraSkKICAgICAgewogICAgICAgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBl eHBhbmRlZCA9IAotQEAgLTgxNDgsNyArODI3NSw3IEBAIGNyZWF0ZV9icmVha3BvaW50IChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXIKLSAgICAgICAgIG1lbnRpb24gKGIpOworQEAgLTgzMDAsNyArODQ1 MSw3IEBAIGNyZWF0ZV9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXIKKyAgICAgICBv YnNlcnZlcl9ub3RpZnlfYnJlYWtwb2ludF9jcmVhdGVkIChiKTsKICAgICAgfQogICAgCiAtICBp ZiAoc2Fscy5uZWx0cyA+IDEpCkBAIC03NTAsMTUgKzY4MywxNSBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgICAgIHsKICAgICAgICB3YXJuaW5nIChfKCJN dWx0aXBsZSBicmVha3BvaW50cyB3ZXJlIHNldC5cblVzZSB0aGUgIgogIAkJICJcImRlbGV0ZVwi IGNvbW1hbmQgdG8gZGVsZXRlIHVud2FudGVkIGJyZWFrcG9pbnRzLiIpKTsKLUBAIC05MDIwLDYg KzkxNDcsNyBAQCB3YXRjaF9jb21tYW5kXzEgKGNoYXIgKmFyZywgaW50IGFjY2Vzc2ZsCitAQCAt OTM5NCw2ICs5NTQ1LDcgQEAgd2F0Y2hfY29tbWFuZF8xIChjaGFyICphcmcsIGludCBhY2Nlc3Nm bAorICAgLyogTm93IHNldCB1cCB0aGUgYnJlYWtwb2ludC4gICovCiAgICBiID0gc2V0X3Jhd19i cmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKE5VTEwsIGJwX3R5cGUpOwotICAgc2V0X2JyZWFr cG9pbnRfbnVtYmVyIChpbnRlcm5hbCwgYik7CiAgICBiLT50aHJlYWQgPSB0aHJlYWQ7CiArICBi LT5wc3BhY2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7CiAgICBiLT5kaXNwb3NpdGlvbiA9IGRp c3BfZG9udHRvdWNoOwogICAgYi0+ZXhwID0gZXhwOwogICAgYi0+ZXhwX3ZhbGlkX2Jsb2NrID0g ZXhwX3ZhbGlkX2Jsb2NrOwotQEAgLTEwMTgyLDYgKzEwMzEwLDkgQEAgdXBkYXRlX2dsb2JhbF9s b2NhdGlvbl9saXN0IChpbnQgc2hvdWxkXworQEAgLTEwNTEyLDYgKzEwNjY0LDkgQEAgdXBkYXRl X2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkXwogICAgICAgIGludCBrZWVwX2luX3Rh cmdldCA9IDA7CiAgICAgICAgaW50IHJlbW92ZWQgPSAwOwogIApAQCAtNzY4LDcgKzcwMSw3IEBA IEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9icmVha3BvaW50LmMKICAgICAgICAvKiBT a2lwIExPQ1AgZW50cmllcyB3aGljaCB3aWxsIGRlZmluaXRlbHkgbmV2ZXIgYmUgbmVlZGVkLgog IAkgU3RvcCBlaXRoZXIgYXQgb3IgYmVpbmcgdGhlIG9uZSBtYXRjaGluZyBPTERfTE9DLiAgKi8K ICAgICAgICB3aGlsZSAobG9jcCA8IGJwX2xvY2F0aW9uICsgYnBfbG9jYXRpb25fY291bnQKLUBA IC0xMDk0NiwxMiArMTEwNzcsMTQgQEAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1 Y3QgYnJlYQorQEAgLTExMzMzLDEyICsxMTQ4OCwxNCBAQCB1cGRhdGVfYnJlYWtwb2ludF9sb2Nh dGlvbnMgKHN0cnVjdCBicmVhCiAgICAgT24gcmV0dXJuLCBGT1VORCB3aWxsIGJlIDEgaWYgYW55 IFNhTCB3YXMgZm91bmQsIHplcm8gb3RoZXJ3aXNlLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHN5 bXRhYnNfYW5kX2xpbmVzCkBAIC03ODQsNyArNzE3LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL2JyZWFrcG9pbnQuYwogIAogICAgcyA9IGFkZHJfc3RyaW5nOwogICAgbWFya2Vy X3NwZWMgPSBiLT50eXBlID09IGJwX3N0YXRpY190cmFjZXBvaW50ICYmIGlzX21hcmtlcl9zcGVj IChzKTsKLUBAIC0xMDk3MCw3ICsxMTEwMywyNyBAQCBhZGRyX3N0cmluZ190b19zYWxzIChzdHJ1 Y3QgYnJlYWtwb2ludCAqCitAQCAtMTEzNTcsNyArMTE1MTQsMjcgQEAgYWRkcl9zdHJpbmdfdG9f c2FscyAoc3RydWN0IGJyZWFrcG9pbnQgKgogIAkgICAgZXJyb3IgKF8oIm1hcmtlciAlcyBub3Qg Zm91bmQiKSwgYi0+c3RhdGljX3RyYWNlX21hcmtlcl9pZCk7CiAgCX0KICAgICAgICBlbHNlCkBA IC04MTMsNyArNzQ2LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9p bnQuYwogICAgICB9CiAgICBpZiAoZS5yZWFzb24gPCAwKQogICAgICB7Ci1AQCAtMTEwMDMsNyAr MTExNTYsNyBAQCBhZGRyX3N0cmluZ190b19zYWxzIChzdHJ1Y3QgYnJlYWtwb2ludCAqCitAQCAt MTEzOTAsNyArMTE1NjcsNyBAQCBhZGRyX3N0cmluZ190b19zYWxzIChzdHJ1Y3QgYnJlYWtwb2lu dCAqCiAgCiAgICBpZiAoZS5yZWFzb24gPT0gMCB8fCBlLmVycm9yICE9IE5PVF9GT1VORF9FUlJP UikKICAgICAgewpAQCAtODIyLDE3ICs3NTUsMTIgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL2JyZWFrcG9pbnQuYwogIAogICAgICAgIHJlc29sdmVfc2FsX3BjICgmc2Fscy5zYWxz WzBdKTsKICAgICAgICBpZiAoYi0+Y29uZGl0aW9uX25vdF9wYXJzZWQgJiYgcyAmJiBzWzBdKQot QEAgLTExMDQ0LDIyICsxMTE5NywyNyBAQCByZV9zZXRfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFr cG9pbnQgKmIpCitAQCAtMTE0MjYsMTcgKzExNjAzLDIyIEBAIGJyZWFrcG9pbnRfcmVfc2V0X2Rl ZmF1bHQgKHN0cnVjdCBicmVha3AKKyAgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBzYWxzLCBz YWxzX2VuZDsKICAgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBleHBhbmRlZCA9IHswfTsKICAg IHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBleHBhbmRlZF9lbmQgPSB7MH07Ci0gICBzdHJ1Y3Qg Y2xlYW51cCAqY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgTlVMTCk7CiAr ICBpbnQgcHJlX2V4cGFuZGVkID0gMDsKICAKLSAgIGlucHV0X3JhZGl4ID0gYi0+aW5wdXRfcmFk aXg7Ci0gICBzYXZlX2N1cnJlbnRfc3BhY2VfYW5kX3RocmVhZCAoKTsKLSAgIHN3aXRjaF90b19w cm9ncmFtX3NwYWNlX2FuZF90aHJlYWQgKGItPnBzcGFjZSk7Ci0gICBzZXRfbGFuZ3VhZ2UgKGIt Pmxhbmd1YWdlKTsKLSAKIC0gIHNhbHMgPSBhZGRyX3N0cmluZ190b19zYWxzIChiLCBiLT5hZGRy X3N0cmluZywgJmZvdW5kKTsKICsgIHNhbHMgPSBhZGRyX3N0cmluZ190b19zYWxzIChiLCBiLT5h ZGRyX3N0cmluZywgJmZvdW5kLCAmcHJlX2V4cGFuZGVkKTsKICAgIGlmIChmb3VuZCkKQEAgLTg1 Myw3ICs3ODEsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5j CiAgICAgICAgaWYgKGZvdW5kKQogIAl7CiAgCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgc2Fsc19l bmQuc2Fscyk7Ci1AQCAtMTI0OTYsNiArMTI2NTQsMjQgQEAgYWxsX3RyYWNlcG9pbnRzICh2b2lk KQorQEAgLTEyOTEzLDYgKzEzMDk1LDI0IEBAIGFsbF90cmFjZXBvaW50cyAodm9pZCkKICAgIHJl dHVybiB0cF92ZWM7CiAgfQogIApAQCAtODc4LDcgKzgwNiwxNyBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgDAogIC8qIFRoaXMgaGVscCBzdHJpbmcgaXMg dXNlZCBmb3IgdGhlIGJyZWFrLCBoYnJlYWssIHRicmVhayBhbmQgdGhicmVhawogICAgIGNvbW1h bmRzLiAgSXQgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIHRvIHByZXZlbnQgZHVwbGljYXRpb24uCi1A QCAtMTMxMzEsNCArMTMzMDcsNyBAQCByYW5nZSAoaW5jbHVkaW5nIFNUQVJULUxPQ0FUSU9OIGFu ZCBFTkQtCitAQCAtMTMwMDUsNyArMTMyMDUsOCBAQCBfaW5pdGlhbGl6ZV9icmVha3BvaW50ICh2 b2lkKQorICAgb2JzZXJ2ZXJfYXR0YWNoX2luZmVyaW9yX2V4aXQgKGNsZWFyX3N5c2NhbGxfY291 bnRzKTsKKyAgIG9ic2VydmVyX2F0dGFjaF9tZW1vcnlfY2hhbmdlZCAoaW52YWxpZGF0ZV9icF92 YWx1ZV9vbl9tZW1vcnlfY2hhbmdlKTsKKyAKKy0gIGJyZWFrcG9pbnRfb2JqZmlsZV9rZXkgPSBy ZWdpc3Rlcl9vYmpmaWxlX2RhdGEgKCk7CisrICBicmVha3BvaW50X29iamZpbGVfa2V5CisrICAg ID0gcmVnaXN0ZXJfb2JqZmlsZV9kYXRhX3dpdGhfY2xlYW51cCAoTlVMTCwgZnJlZV9icmVha3Bv aW50X3Byb2Jlcyk7CisgCisgICBicmVha3BvaW50X2NoYWluID0gMDsKKyAgIC8qIERvbid0IGJv dGhlciB0byBjYWxsIHNldF9icmVha3BvaW50X2NvdW50LiAgJGJwbnVtIGlzbid0IHVzZWZ1bAor QEAgLTEzNTMyLDQgKzEzNzMzLDcgQEAgcmFuZ2UgKGluY2x1ZGluZyBTVEFSVC1MT0NBVElPTiBh bmQgRU5ELQogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0gMTsKICAKICAgIG9i c2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fib3V0X3RvX3Byb2Nl ZWQpOwpAQCAtODg2LDExICs4MjQsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2Ri L2JyZWFrcG9pbnQuYwogKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAoYnJlYWtwb2ludF90 eXBlc19tYXJrX3VzZWQpOwogKyNlbmRpZgogIH0KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi9icmVha3BvaW50LmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9icmVha3Bv aW50LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2JyZWFr cG9pbnQuaAkyMDExLTA1LTE3IDIzOjI1OjU2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9pbnQuaAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAw MCArMDIwMAotQEAgLTM2Myw2ICszNjMsMTEgQEAgc3RydWN0IGJwX2xvY2F0aW9uCistLS0gZ2Ri LTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9icmVha3BvaW50LmgJMjAxMS0wNi0yMiAxOTo1Mzo0 NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9icmVha3BvaW50 LmgJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zODMsNiArMzgzLDEx IEBAIHN0cnVjdCBicF9sb2NhdGlvbgogICAgICAgcHJvY2Vzc29yJ3MgYXJjaGl0ZWN0dWFsIGNv bnN0cmFpbnRzLiAgKi8KICAgIENPUkVfQUREUiByZXF1ZXN0ZWRfYWRkcmVzczsKICAKQEAgLTkw Miw3ICs4NDAsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5o CiAgICBjaGFyICpmdW5jdGlvbl9uYW1lOwogIAogICAgLyogRGV0YWlscyBvZiB0aGUgcGxhY2Vk IGJyZWFrcG9pbnQsIHdoZW4gaW5zZXJ0ZWQuICAqLwotQEAgLTEyMzcsNCArMTI0MiwxMSBAQCBl eHRlcm4gc3RydWN0IGJyZWFrcG9pbnQgKml0ZXJhdGVfb3Zlcl9iCitAQCAtMTMxNiw0ICsxMzIx LDExIEBAIGV4dGVybiBzdHJ1Y3QgYnJlYWtwb2ludCAqaXRlcmF0ZV9vdmVyX2IKICAKICBleHRl cm4gaW50IHVzZXJfYnJlYWtwb2ludF9wIChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsKICAKQEAgLTkx NCwxMCArODUyLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9icmVha3BvaW50 LmgKICtleHRlcm4gdm9pZCBtb2RpZnlfc2VtYXBob3JlIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxv Y2F0aW9uLCBpbnQgc2V0KTsKICsKICAjZW5kaWYgLyogIWRlZmluZWQgKEJSRUFLUE9JTlRfSCkg Ki8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9jLXR5cGVwcmludC5jCitJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYy10eXBlcHJpbnQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvYy10eXBlcHJpbnQuYwkyMDExLTAzLTIyIDE4OjM1 OjIyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2MtdHlwZXBy aW50LmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUw LjIwMTEwNzIyLm9yaWcvZ2RiL2MtdHlwZXByaW50LmMJMjAxMS0wNS0xOCAxODozMDozNC4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jLXR5cGVwcmludC5jCTIw MTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtNjI1LDkgKzYyNSwxNCBAQCBj X3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlCiAgCSAgZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAiKSIpOwogIApAQCAtOTM2LDEwICs4NzQsMTAgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL2MtdHlwZXByaW50LmMKICAJZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAiXSIpOwogIAogIAljX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKFRZUEVfVEFSR0VU X1RZUEUgKHR5cGUpLCBzdHJlYW0sCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvY2xp L2NsaS11dGlscy5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY2xpL2NsaS11dGls cy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9jbGkvY2xp LXV0aWxzLmMJMjAxMS0wMy0xNiAyMjoxMjoxMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi9jbGkvY2xpLXV0aWxzLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAw MDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2NsaS9jbGktdXRp bHMuYwkyMDExLTAzLTE2IDIyOjEyOjEyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2NsaS9jbGktdXRpbHMuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAw MCArMDIwMAogQEAgLTI0NSwzICsyNDUsMzIgQEAgcmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2Ug KGNvbnN0IGNoYXIgKgogIAogICAgcmV0dXJuIHM7CkBAIC05NzMsMTAgKzkxMSwxMCBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvY2xpL2NsaS11dGlscy5jCiArCiArICByZXR1cm4g Y29weTsKICt9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvY2xpL2NsaS11dGlscy5o CitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY2xpL2NsaS11dGlscy5oCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9jbGkvY2xpLXV0aWxzLmgJMjAx MS0wMy0xNiAyMjoxMjoxMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi9jbGkvY2xpLXV0aWxzLmgJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAK Ky0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2NsaS9jbGktdXRpbHMuaAkyMDExLTAz LTE2IDIyOjEyOjEyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2NsaS9jbGktdXRpbHMuaAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAg LTEwMyw0ICsxMDMsMTEgQEAgZXh0ZXJuIGNoYXIgKnNraXBfdG9fc3BhY2UgKGNoYXIgKmlucCk7 CiAgICAgU1RBUlQuICAqLwogIApAQCAtOTg5LDExICs5MjcsMTEgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL2NsaS9jbGktdXRpbHMuaAogK2V4dGVybiBjaGFyICpleHRyYWN0X2Fy ZyAoY2hhciAqKmFyZyk7CiArCiAgI2VuZGlmIC8qIENMSV9VVElMU19IICovCi1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvY29mZnJlYWQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2NvZmZyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9y aWcvZ2RiL2NvZmZyZWFkLmMJMjAxMS0wMy0xNyAxNDoxOToyMy4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9jb2ZmcmVhZC5jCTIwMTEtMDctMDMgMTA6MzM6MTEu MDAwMDAwMDAwICswMjAwCi1AQCAtMjE5Myw2ICsyMTkzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBzeW1fZm5zIGNvZmZfc3ltX2ZucworLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIv Y29mZnJlYWQuYwkyMDExLTA2LTE0IDIwOjUzOjEzLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2NvZmZyZWFkLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAw MDAgKzAyMDAKK0BAIC0yMTk3LDYgKzIxOTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9m bnMgY29mZl9zeW1fZm5zCiAgCiAgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIHN5bV9y ZWxvY2F0ZTogUmVsb2NhdGUgYSBkZWJ1ZwogIAkJCQkgICBzZWN0aW9uLiAgKi8KQEAgLTEwMDEs MTAgKzkzOSwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvY29mZnJlYWQuYwog ICAgJnBzeW1fZnVuY3Rpb25zCiAgfTsKICAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45 MC4yMDExMDcwMy5vcmlnL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgkyMDExLTAyLTA0 IDE5OjM0OjQxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2Rh dGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICsw MjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtl ZmlsZS5pbgkyMDExLTAyLTA0IDE5OjM0OjQxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIwMTEtMDctMjIgMjA6 MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtNTIsMTEgKzUyLDIzIEBAIFNZU0NBTExTX0ZJTEVT ID0gXAogIFBZVEhPTl9ESVIgPSBweXRob24KICBQWVRIT05fSU5TVEFMTF9ESVIgPSAkKERFU1RE SVIpJChHREJfREFUQURJUikvJChQWVRIT05fRElSKQpAQCAtMTAzMiwxOSArOTcwLDExIEBAIElu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgog IAogIEZMQUdTX1RPX1BBU1MgPSBcCiAgCSJwcmVmaXg9JChwcmVmaXgpIiBcCi1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvZGJ4cmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45 MC4yMDExMDcwMy5vcmlnL2dkYi9kYnhyZWFkLmMJMjAxMS0wMy0yMyAxOToyMzo1NC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kYnhyZWFkLmMJMjAxMS0wNy0w MyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDYgKzEsNiBAQAotIC8qIFJlYWQgZGJ4 IHN5bWJvbCB0YWJsZXMgYW5kIGNvbnZlcnQgdG8gaW50ZXJuYWwgZm9ybWF0LCBmb3IgR0RCLgot ICAgIENvcHlyaWdodCAoQykgMTk4NiwgMTk4NywgMTk4OCwgMTk4OSwgMTk5MCwgMTk5MSwgMTk5 MiwgMTk5MywgMTk5NCwgMTk5NSwKLS0gICAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAy MDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA4LCAyMDA5LCAyMDEwLgotKyAgIDE5OTYsIDE5OTcs IDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDgsIDIwMDksIDIw MTAsIDIwMTEuCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0gICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotQEAgLTM1ODcsNiArMzU4Nyw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3Qgc3ltX2ZucyBhb3V0X3N5bV9mbnMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9kYnhyZWFkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcv Z2RiL2RieHJlYWQuYwkyMDExLTA2LTI3IDIxOjIxOjUwLjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RieHJlYWQuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAw MDAwMCArMDIwMAorQEAgLTM1OTAsNiArMzU5MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3lt X2ZucyBhb3V0X3N5bV9mbnMKICAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJLyogR2V0IHNl Z21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUuICAqLwogICAgTlVMTCwKICAgIGRlZmF1bHRf c3ltZmlsZV9yZWxvY2F0ZSwJLyogUmVsb2NhdGUgYSBkZWJ1ZyBzZWN0aW9uLiAgKi8KQEAgLTEw NTIsMTEgKzk4MiwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZGJ4cmVhZC5j CiAgICAmcHN5bV9mdW5jdGlvbnMKICB9OwogIAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL2RlZnMuaAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RlZnMuaAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvZGVmcy5oCTIwMTEtMDMtMzEg MTY6MzI6NDguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZGVm cy5oCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMzk4LDYgKzM5OCw4 IEBAIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3Jlc3QKKy0tLSBnZGItNy4z LjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2RlZnMuaAkyMDExLTA3LTIyIDAxOjQ2OjA4LjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RlZnMuaAkyMDExLTA3LTIyIDIw OjA0OjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTQwNiw2ICs0MDYsOCBAQCBleHRlcm4gc3RydWN0 IGNsZWFudXAgKm1ha2VfY2xlYW51cF9yZXN0CiAgZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICoKICAg IHNldF9iYXRjaF9mbGFnX2FuZF9tYWtlX2NsZWFudXBfcmVzdG9yZV9wYWdlX2luZm8gKHZvaWQp OwogIApAQCAtMTA2NSwxMSArOTk1LDExIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9kZWZzLmgKICBleHRlcm4gY2hhciAqZ2RiX3JlYWxwYXRoIChjb25zdCBjaGFyICopOwogIGV4 dGVybiBjaGFyICp4ZnVsbHBhdGggKGNvbnN0IGNoYXIgKik7CiAgCi1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvZG9jL2dkYi50ZXhpbmZvCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcw My5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wNy0wMiAyMTo1OToyOS4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0w Ny0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMTc3LDYgKzExNzcsMTYgQEAgZm9y IHJlbW90ZSBkZWJ1Z2dpbmcuCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kb2Mv Z2RiLnRleGluZm8JMjAxMS0wNy0yMSAxNzoxMzoyOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wNy0yMiAyMDowNDoyMS4w MDAwMDAwMDAgKzAyMDAKK0BAIC0xMTc1LDYgKzExNzUsMTYgQEAgZm9yIHJlbW90ZSBkZWJ1Z2dp bmcuCiAgUnVuIHVzaW5nIEB2YXJ7ZGV2aWNlfSBmb3IgeW91ciBwcm9ncmFtJ3Mgc3RhbmRhcmQg aW5wdXQgYW5kIG91dHB1dC4KICBAYyBGSVhNRToga2luZ2RvbiB0aGlua3MgdGhlcmUgaXMgbW9y ZSB0byAtdHR5LiAgSW52ZXN0aWdhdGUuCiAgCkBAIC0xMDg2LDcgKzEwMTYsNyBAQCBJbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGMgcmVzb2x2ZSB0aGUg c2l0dWF0aW9uIG9mIHRoZXNlIGV2ZW50dWFsbHkKICBAaXRlbSAtdHVpCiAgQGNpbmRleCBAY29k ZXstLXR1aX0KLUBAIC0zMjg2LDYgKzMyOTYsNyBAQCBhbGwgYnJlYWtwb2ludHMgaW4gdGhhdCBy YW5nZSBhcmUgb3BlcmF0CitAQCAtMzI5NSw2ICszMzA1LDcgQEAgYWxsIGJyZWFrcG9pbnRzIGlu IHRoYXQgcmFuZ2UgYXJlIG9wZXJhdAogICogQ29uZGl0aW9uczo6ICAgICAgICAgICAgICAgICAg QnJlYWsgY29uZGl0aW9ucwogICogQnJlYWsgQ29tbWFuZHM6OiAgICAgICAgICAgICAgQnJlYWtw b2ludCBjb21tYW5kIGxpc3RzCiAgKiBTYXZlIEJyZWFrcG9pbnRzOjogICAgICAgICAgICBIb3cg dG8gc2F2ZSBicmVha3BvaW50cyBpbiBhIGZpbGUKQEAgLTEwOTQsNyArMTAyNCw3IEBAIEluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kb2MvZ2RiLnRleGluZm8KICAqIEVycm9yIGluIEJy ZWFrcG9pbnRzOjogICAgICAgIGBgQ2Fubm90IGluc2VydCBicmVha3BvaW50cycnCiAgKiBCcmVh a3BvaW50LXJlbGF0ZWQgV2FybmluZ3M6OiBgYEJyZWFrcG9pbnQgYWRkcmVzcyBhZGp1c3RlZC4u LicnCiAgQGVuZCBtZW51Ci1AQCAtNDQ5OSw2ICs0NTEwLDUwIEBAIGFuZCByZW1vdmUgdGhlIGJy ZWFrcG9pbnQgZGVmaW5pdGlvbnMgeW8KK0BAIC00NTI1LDYgKzQ1MzYsNTAgQEAgYW5kIHJlbW92 ZSB0aGUgYnJlYWtwb2ludCBkZWZpbml0aW9ucyB5bwogIHRoYXQgY2FuIG5vIGxvbmdlciBiZSBy ZWNyZWF0ZWQuCiAgQGVuZCB0YWJsZQogIApAQCAtMTE0NSw3ICsxMDc1LDcgQEAgSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL2RvYy9nZGIudGV4aW5mbwogIEBjICBAaWZjbGVhciBCQVJF VEFSR0VUCiAgQG5vZGUgRXJyb3IgaW4gQnJlYWtwb2ludHMKICBAc3Vic2VjdGlvbiBgYENhbm5v dCBpbnNlcnQgYnJlYWtwb2ludHMnJwotQEAgLTY0MTQsNiArNjQ2OSwyOSBAQCBzcGVjaWZ5IHRo ZSBmdW5jdGlvbiB1bmFtYmlndW91c2x5LCBlLmcuCitAQCAtNjQ0MCw2ICs2NDk1LDI5IEBAIHNw ZWNpZnkgdGhlIGZ1bmN0aW9uIHVuYW1iaWd1b3VzbHksIGUuZy4KICBmdW5jdGlvbnMgd2l0aCBp ZGVudGljYWwgbmFtZXMgaW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KICBAZW5kIHRhYmxlCiAg CkBAIC0xMTc1LDcgKzExMDUsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZG9j L2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJsZQogIAogIAotQEAgLTg1MDAsNiArODU3OCwxMCBAQCB0 byBtYXRjaCB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBkYXRhIHdhCitAQCAtODUyNiw2ICs4NjA0 LDEwIEBAIHRvIG1hdGNoIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGRhdGEgd2EKICBUaGUgdmFy aWFibGUgQGNvZGV7JF9leGl0Y29kZX0gaXMgYXV0b21hdGljYWxseSBzZXQgdG8gdGhlIGV4aXQg Y29kZSB3aGVuCiAgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgdGVybWluYXRlcy4KICAKQEAg LTExODYsNyArMTExNiw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kb2MvZ2Ri LnRleGluZm8KICBAaXRlbSAkX3NkYXRhCiAgQHZpbmRleCAkX3NkYXRhQHJ7LCBpbnNwZWN0LCBj b252ZW5pZW5jZSB2YXJpYWJsZX0KICBUaGUgdmFyaWFibGUgQGNvZGV7JF9zZGF0YX0gY29udGFp bnMgZXh0cmEgY29sbGVjdGVkIHN0YXRpYyB0cmFjZXBvaW50Ci1AQCAtMTAyMTksNiArMTAzMDEs MTYgQEAgQ29sbGVjdCBhbGwgZnVuY3Rpb24gYXJndW1lbnRzLgorQEAgLTEwMjY0LDYgKzEwMzQ2 LDE2IEBAIENvbGxlY3QgYWxsIGZ1bmN0aW9uIGFyZ3VtZW50cy4KICBAaXRlbSAkbG9jYWxzCiAg Q29sbGVjdCBhbGwgbG9jYWwgdmFyaWFibGVzLgogIApAQCAtMTIwMyw3ICsxMTMzLDcgQEAgSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2RvYy9nZGIudGV4aW5mbwogIEBpdGVtICRfc2Rh dGEKICBAdmluZGV4ICRfc2RhdGFAcnssIGNvbGxlY3R9CiAgQ29sbGVjdCBzdGF0aWMgdHJhY2Vw b2ludCBtYXJrZXIgc3BlY2lmaWMgZGF0YS4gIE9ubHkgYXZhaWxhYmxlIGZvcgotQEAgLTIwNzIw LDggKzIwODEyLDYgQEAgY29udGFpbmluZyBAY29kZXtlbmR9LiAgRm9yIGV4YW1wbGU6CitAQCAt MjA4MDUsOCArMjA4OTcsNiBAQCBjb250YWluaW5nIEBjb2Rle2VuZH0uICBGb3IgZXhhbXBsZToK ICAKICBAc21hbGxleGFtcGxlCiAgKEB2YWx1ZXtHREJQfSkgcHl0aG9uCkBAIC0xMjEyLDkgKzEx NDIsOSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZG9jL2dkYi50ZXhpbmZvCiAg PnByaW50IDIzCiAgPmVuZAogIDIzCi1AQCAtMjA3MzQsNiArMjA4MjQsMTQgQEAgaW4gYSBQeXRo b24gc2NyaXB0LiAgVGhpcyBjYW4gYmUgY29udHJvbAotIHB5dGhvbiBwcmludC1zdGFja306IGlm IEBjb2Rle29ufSwgdGhlIGRlZmF1bHQsIHRoZW4gUHl0aG9uIHN0YWNrCi0gcHJpbnRpbmcgaXMg ZW5hYmxlZDsgaWYgQGNvZGV7b2ZmfSwgdGhlbiBQeXRob24gc3RhY2sgcHJpbnRpbmcgaXMKK0BA IC0yMDgyNCw2ICsyMDkxNCwxNCBAQCBvY2N1cnMgaW4gYSBQeXRob24gc2NyaXB0LiAgVGhpcyBj YW4gYmUgCisgcHl0aG9uIHByaW50LXN0YWNrfTogaWYgQGNvZGV7b259LCB0aGVuIFB5dGhvbiBz dGFjayBwcmludGluZyBpcworIGVuYWJsZWQ7IGlmIEBjb2Rle29mZn0sIHRoZSBkZWZhdWx0LCB0 aGVuIFB5dGhvbiBzdGFjayBwcmludGluZyBpcwogIGRpc2FibGVkLgogKwogK0BraW5kZXggbWFp bnQgc2V0IHB5dGhvbiBhdXRvLWxvYWQKQEAgLTEyMjcsNyArMTE1Nyw3IEBAIEluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi9kb2MvZ2RiLnRleGluZm8KICBAZW5kIHRhYmxlCiAgCiAgSXQg aXMgYWxzbyBwb3NzaWJsZSB0byBleGVjdXRlIGEgUHl0aG9uIHNjcmlwdCBmcm9tIHRoZSBAdmFs dWV7R0RCTn0KLUBAIC0yMDc1NSw2ICsyMDg1MywxNCBAQCBhbmQgdGh1cyBpcyBhbHdheXMgYXZh aWxhYmxlLgorQEAgLTIwODQ1LDYgKzIwOTQzLDE0IEBAIGFuZCB0aHVzIGlzIGFsd2F5cyBhdmFp bGFibGUuCiAgQGNpbmRleCBweXRob24gYXBpCiAgQGNpbmRleCBwcm9ncmFtbWluZyBpbiBweXRo b24KICAKQEAgLTEyNDIsMTAgKzExNzIsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL2RvYy9nZGIudGV4aW5mbwogIEBjaW5kZXggcHl0aG9uIHN0ZG91dAogIEBjaW5kZXggcHl0 aG9uIHBhZ2luYXRpb24KICBBdCBzdGFydHVwLCBAdmFsdWV7R0RCTn0gb3ZlcnJpZGVzIFB5dGhv bidzIEBjb2Rle3N5cy5zdGRvdXR9IGFuZAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2Ri L2RvYy9nZGJpbnQudGV4aW5mbworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9n ZGJpbnQudGV4aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9n ZGIvZG9jL2dkYmludC50ZXhpbmZvCTIwMTEtMDItMDQgMjA6MTA6MTIuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZG9jL2dkYmludC50ZXhpbmZvCTIwMTEtMDct MDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmln L2dkYi9kb2MvZ2RiaW50LnRleGluZm8JMjAxMS0wNC0xOSAyMDowNDowOC4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiaW50LnRleGluZm8JMjAxMS0w Ny0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0yMTA0LDYgKzIxMDQsMTggQEAgdGlt ZSwgYW5kIHNvIHdlIGF0dGVtcHQgdG8gaGFuZGxlIHN5bWJvbAogIHdlIGNyZWF0ZSBAZGZue3Bh cnRpYWwgc3ltYm9sIHRhYmxlc30gY29uc2lzdGluZyBvZiBvbmx5IHNlbGVjdGVkCiAgc3ltYm9s cywgYW5kIG9ubHkgZXhwYW5kIHRoZW0gdG8gZnVsbCBzeW1ib2wgdGFibGVzIHdoZW4gbmVjZXNz YXJ5LgpAQCAtMTM3MSwxMiArMTMwMSwxMiBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvZG9jL2dkYmludC50ZXhpbmZvCiAgCiAgCiAgQG5vZGUgTGFuZ3VhZ2UgU3VwcG9ydAotSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCitJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL29ic2VydmVyLnRleGkKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCTIwMTEtMDEtMDUg MDY6MDk6NTQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZG9j L29ic2VydmVyLnRleGkJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0y MjMsNiArMjIzLDExIEBAIEJ5dGVzIGZyb20gQHZhcntkYXRhfSB0byBAdmFye2RhdGF9ICsgQHYK LSB0byB0aGUgY3VycmVudCBpbmZlcmlvciBhdCBAdmFye2FkZHJ9LgorLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvZG9jL29ic2VydmVyLnRleGkJMjAxMS0wNy0yMSAxMzowMzo0Ny4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kb2Mvb2JzZXJ2ZXIu dGV4aQkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTIyNyw2ICsyMjcs MTEgQEAgQ2FsbGVkIGJlZm9yZSBhIHRvcC1sZXZlbCBwcm9tcHQgaXMgZGlzcAorIHRoZSBjdXJy ZW50IHRvcC1sZXZlbCBwcm9tcHQuCiAgQGVuZCBkZWZ0eXBlZnVuCiAgCiArQGMgQGRlZnR5cGVm dW4gdm9pZCBtYXJrX3VzZWQgKHZvaWQpCkBAIC0xMzg3LDQ5ICsxMzE3LDQ2IEBAIEluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQogIEBkZWZ0eXBlZnVuIHZv aWQgdGVzdF9ub3RpZmljYXRpb24gKGludCBAdmFye3NvbWVhcmd9KQogIFRoaXMgb2JzZXJ2ZXIg aXMgdXNlZCBmb3IgaW50ZXJuYWwgdGVzdGluZy4gIERvIG5vdCB1c2UuICAKICBTZWUgdGVzdHN1 aXRlL2dkYi5nZGIvb2JzZXJ2ZXIuZXhwLgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2Ri L2R3YXJmMmV4cHIuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMmV4cHIu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvZHdhcmYyZXhw ci5jCTIwMTEtMDUtMTMgMjA6NTQ6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvZHdhcmYyZXhwci5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICsw MjAwCi1AQCAtOTEyLDYgKzkxMiwxMyBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1Y3QgZHdhcmZf ZXhwcl9jb250Ci0gCSAgY3R4LT5udW1fcGllY2VzID0gMDsKLSAJICBnb3RvIGFib3J0X2V4cHJl c3Npb247CistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kd2FyZjJleHByLmMJMjAx MS0wNy0xNSAyMjo1NDozMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9kd2FyZjJleHByLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKK0BA IC0xMjU4LDYgKzEyNTgsMTQgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0IGR3YXJmX2V4cHJf Y29udAorIAkgIH0KKyAJICBicmVhazsKICAKICsJY2FzZSBEV19PUF9wdXNoX29iamVjdF9hZGRy ZXNzOgotKwkgIGlmIChjdHgtPmdldF9vYmplY3RfYWRkcmVzcyA9PSBOVUxMKQorKwkgIGlmIChj dHgtPmZ1bmNzLT5nZXRfb2JqZWN0X2FkZHJlc3MgPT0gTlVMTCkKICsJICAgIGVycm9yIChfKCJE V0FSRi0yIGV4cHJlc3Npb24gZXJyb3I6IERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MgbXVzdCAi CiArCSAgICAgICAgICAgImhhdmUgYSB2YWx1ZSB0byBwdXNoLiIpKTsKLSsJICByZXN1bHQgPSAo Y3R4LT5nZXRfb2JqZWN0X2FkZHJlc3MpIChjdHgtPmJhdG9uKTsKKysJICByZXN1bHQgPSAoY3R4 LT5mdW5jcy0+Z2V0X29iamVjdF9hZGRyZXNzKSAoY3R4LT5iYXRvbik7CisrCSAgcmVzdWx0X3Zh bCA9IHZhbHVlX2Zyb21fdWxvbmdlc3QgKGFkZHJlc3NfdHlwZSwgcmVzdWx0KTsKICsJICBicmVh azsKICsKICAJZGVmYXVsdDoKICAJICBlcnJvciAoXygiVW5oYW5kbGVkIGR3YXJmIGV4cHJlc3Np b24gb3Bjb2RlIDB4JXgiKSwgb3ApOwogIAl9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvZHdhcmYyZXhwci5oCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYyZXhw ci5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9kd2FyZjJl eHByLmgJMjAxMS0wMi0yNyAxNzoyNTozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9kd2FyZjJleHByLmgJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAg KzAyMDAKLUBAIC0xMTQsOSArMTE0LDE1IEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQKLSAj aWYgMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZHdhcmYyZXhwci5oCTIwMTEt MDctMTUgMjI6NTQ6MzIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvZHdhcmYyZXhwci5oCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAt NjIsMTIgKzYyLDEwIEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MKKyAgICAgIG1l YW5pbmdmdWwgdG8gc3Vic3RpdHV0ZSBhIHN0dWIgdHlwZSBvZiB0aGUgY29ycmVjdCBzaXplLiAg Ki8KKyAgIHN0cnVjdCB0eXBlICooKmdldF9iYXNlX3R5cGUpIChzdHJ1Y3QgZHdhcmZfZXhwcl9j b250ZXh0ICpjdHgsIHNpemVfdCBkaWUpOworIAorLSNpZiAwCiAgICAvKiBOb3QgeWV0IGltcGxl bWVudGVkLiAgKi8KICAKLSsgIC8qIFJldHVybiB0aGUgbG9jYXRpb24gZXhwcmVzc2lvbiBmb3Ig dGhlIGR3YXJmIGV4cHJlc3Npb24KLSsgICAgIHN1YnJvdXRpbmUgaW4gdGhlIGRpZSBhdCBPRkZT RVQgaW4gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdC4KLSsgICAgIFRoZSByZXN1bHQgbXVz dCBiZSBsaXZlIHVudGlsIHRoZSBjdXJyZW50IGV4cHJlc3Npb24gZXZhbHVhdGlvbgotKyAgICAg aXMgY29tcGxldGUuICAqLwotKyAgdW5zaWduZWQgY2hhciAqKCpnZXRfc3VicikgKHZvaWQgKmJh dG9uLCBvZmZfdCBvZmZzZXQsIHNpemVfdCAqbGVuZ3RoKTsKLSsjZW5kaWYKLSsKICAgIC8qIFJl dHVybiB0aGUgYG9iamVjdCBhZGRyZXNzJyBmb3IgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcy4g ICovCiAgICBDT1JFX0FERFIgKCpnZXRfb2JqZWN0X2FkZHJlc3MpICh2b2lkICpiYXRvbik7CiAt I2VuZGlmCisgfTsKICAKLSAgIC8qIFRoZSBjdXJyZW50IGRlcHRoIG9mIGR3YXJmIGV4cHJlc3Np b24gcmVjdXJzaW9uLCB2aWEgRFdfT1BfY2FsbCosCi0gICAgICBEV19PUF9mYnJlZywgRFdfT1Bf cHVzaF9vYmplY3RfYWRkcmVzcywgZXRjLiwgYW5kIHRoZSBtYXhpbXVtCi1JbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvZHdhcmYybG9jLmMKKyAvKiBUaGUgbG9jYXRpb24gb2YgYSB2YWx1 ZS4gICovCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYybG9jLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2R3YXJmMmxvYy5jCTIwMTEt MDMtMjIgMjI6MDY6MzMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvZHdhcmYybG9jLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBn ZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2R3YXJmMmxvYy5jCTIwMTEtMDctMTkgMjI6Mjg6 NTIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYybG9j LmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0xMzQsNiArMTM0LDkg QEAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24KICB7CiAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWU7CkBAIC0xNDYwLDcgKzEzODcsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv ZHdhcmYybG9jLmMKICsgICAgICBnZGJfYXNzZXJ0IChzeW1iYXRvbiAhPSBOVUxMKTsKICsgICAg ICAqc3RhcnQgPSBzeW1iYXRvbi0+ZGF0YTsKICsgICAgICAqbGVuZ3RoID0gc3ltYmF0b24tPnNp emU7Ci0rICAgIH0KKyAgICAgfQogKyAgZWxzZSBpZiAoU1lNQk9MX0NPTVBVVEVEX09QUyAoZnJh bWVmdW5jKSA9PSAmZHdhcmYyX21pc3NpbmdfZnVuY3MpCiArICAgIHsKICsgICAgICBzdHJ1Y3Qg ZHdhcmYyX2xvY2V4cHJfYmF0b24gKnN5bWJhdG9uOwpAQCAtMTQ2OSw3ICsxMzk2LDcgQEAgSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMmxvYy5jCiArICAgICAgZ2RiX2Fzc2Vy dCAoc3ltYmF0b24gPT0gTlVMTCk7CiArICAgICAgKnN0YXJ0ID0gTlVMTDsKICsgICAgICAqbGVu Z3RoID0gMDsJLyogdW51c2VkICovCi0gICAgIH0KKysgICAgfQogKyAgZWxzZQogKyAgICBpbnRl cm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAogKwkJICAgIF8oIlVuc3VwcG9ydGVkIFNZ TUJPTF9DT01QVVRFRF9PUFMgJXAgZm9yIFwiJXNcIiIpLApAQCAtMTQ4Myw4ICsxNDEwLDggQEAg SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMmxvYy5jCiAgfQogIAogIC8qIEhl bHBlciBmdW5jdGlvbiBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLiAgQ29tcHV0ZXMgdGhl IENGQSBmb3IKLUBAIC0yODYsNiArMjk5LDE3MiBAQCBkd2FyZl9leHByX2R3YXJmX2NhbGwgKHN0 cnVjdCBkd2FyZl9leHByCi0gCQkgICAgIGN0eC0+Z2V0X2ZyYW1lX3BjLCBjdHgtPmJhdG9uKTsK K0BAIC0yOTEsNiArMzA0LDg1IEBAIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCAoc3RydWN0IGR3YXJm X2V4cHIKKyAJCSAgICAgY3R4LT5mdW5jcy0+Z2V0X2ZyYW1lX3BjLCBjdHgtPmJhdG9uKTsKICB9 CiAgCiArc3RhdGljIENPUkVfQUREUgpAQCAtMTUzNywxNiArMTQ2NCw2NyBAQCBJbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYybG9jLmMKICsgIG9iamVjdF9hZGRyZXNzID0gYWRk cmVzczsKICt9CiArCisrLyogRXZhbHVhdGUgRFdBUkYgbG9jYXRpb24gbGlzdCBhdCBETExCQVRP TiBleHBlY3RpbmcgaXQgcHJvZHVjZXMgZXhhY3RseSBvbmUKKysgICBDT1JFX0FERFIgcmVzdWx0 IHN0b3JlZCB0byAqQUREUlAgb24gdGhlIERXQVJGIHN0YWNrIHN0YWNrLiAgSWYgdGhlIHJlc3Vs dAorKyAgIGNvdWxkIG5vdCBiZSBmb3VuZCByZXR1cm4gemVybyBhbmQga2VlcCAqQUREUlAgdW5j aGFuZ2VkLiAgKi8KKysKKytpbnQKKytkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwgKHN0cnVjdCBk d2FyZjJfbG9jbGlzdF9iYXRvbiAqZGxsYmF0b24sCisrCQkJICBzdHJ1Y3QgdHlwZSAqdHlwZSwg Q09SRV9BRERSICphZGRycCkKKyt7CisrICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUgPSBnZXRf c2VsZWN0ZWRfZnJhbWUgKE5VTEwpOworKyAgY29uc3QgZ2RiX2J5dGUgKmRhdGE7CisrICBzaXpl X3Qgc2l6ZTsKKysgIHN0cnVjdCB2YWx1ZSAqdmFsOworKworKyAgaWYgKCFkbGxiYXRvbikKKysg ICAgcmV0dXJuIDA7CisrCisrICBkYXRhID0gZHdhcmYyX2ZpbmRfbG9jYXRpb25fZXhwcmVzc2lv biAoZGxsYmF0b24sICZzaXplLAorKwkJCQkJICBnZXRfZnJhbWVfYWRkcmVzc19pbl9ibG9jayAo ZnJhbWUpKTsKKysgIGlmIChkYXRhID09IE5VTEwpCisrICAgIHJldHVybiAwOworKworKyAgdmFs ID0gZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjICh0eXBlLCBmcmFtZSwgZGF0YSwgc2l6ZSwgZGxs YmF0b24tPnBlcl9jdSk7CisrICBpZiAodmFsdWVfb3B0aW1pemVkX291dCAodmFsKSkKKysgICAg cmV0dXJuIDA7CisrCisrICAqYWRkcnAgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWwpOworKyAgcmV0 dXJuIDE7CisrfQorKworIC8qIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBkd2FyZjJfZXZhbHVhdGVf bG9jX2Rlc2MuICAqLworIAorIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCitAQCAtMzAxLDYgKzM5Myw4 NSBAQCBkd2FyZl9leHByX2dldF9iYXNlX3R5cGUgKHN0cnVjdCBkd2FyZl9lCisgICByZXR1cm4g ZHdhcmYyX2dldF9kaWVfdHlwZSAoZGllX29mZnNldCwgZGViYXRvbi0+cGVyX2N1KTsKKyB9Cisg CisrLyogVmlydHVhbCBtZXRob2QgdGFibGUgZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19m dWxsIGJlbG93LiAgKi8KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4 dF9mdW5jcyBkd2FyZl9leHByX2N0eF9mdW5jcyA9CisreworKyAgZHdhcmZfZXhwcl9yZWFkX3Jl ZywKKysgIGR3YXJmX2V4cHJfcmVhZF9tZW0sCisrICBkd2FyZl9leHByX2ZyYW1lX2Jhc2UsCisr ICBkd2FyZl9leHByX2ZyYW1lX2NmYSwKKysgIGR3YXJmX2V4cHJfZnJhbWVfcGMsCisrICBkd2Fy Zl9leHByX3Rsc19hZGRyZXNzLAorKyAgZHdhcmZfZXhwcl9kd2FyZl9jYWxsLAorKyAgZHdhcmZf ZXhwcl9nZXRfYmFzZV90eXBlLAorKyAgZHdhcmZfZXhwcl9vYmplY3RfYWRkcmVzcworK307Cisr CiArLyogRXZhbHVhdGUgRFdBUkYgZXhwcmVzc2lvbiBhdCBEQVRBIC4uLiBEQVRBICsgU0laRSB3 aXRoIGl0cyByZXN1bHQgcmVhZGFibGUKICsgICBieSBkd2FyZl9leHByX2ZldGNoIChSRVRWQUws IDApLiAgRlJBTUUgcGFyYW1ldGVyIGNhbiBiZSBOVUxMIHRvIGNhbGwKICsgICBnZXRfc2VsZWN0 ZWRfZnJhbWUgdG8gZmluZCBpdC4gIFJldHVybmVkIGR3YXJmX2V4cHJfY29udGV4dCBmcmVlaW5n IGlzCiArICAgcHVzaGVkIG9uIHRoZSBjbGVhbnVwIGNoYWluLiAgKi8KICsKLStzdGF0aWMgc3Ry dWN0IGR3YXJmX2V4cHJfY29udGV4dCAqCi0rZHdhcmZfZXhwcl9wcmVwX2N0eCAoc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lLCBjb25zdCBnZGJfYnl0ZSAqZGF0YSwKLSsJCSAgICAgc2l6ZV90IHNp emUsIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKKytzdGF0aWMgdm9pZAorK2R3 YXJmX2V4cHJfcHJlcF9jdHggKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lLAorKwkJICAgICBjb25zdCBnZGJfYnl0ZSAqZGF0YSwgc2l6ZV90 IHNpemUsCisrCQkgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKICt7Ci0r ICBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHg7CiArICBzdHJ1Y3QgZHdhcmZfZXhwcl9i YXRvbiBiYXRvbjsKICsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gZHdhcmYyX3Blcl9jdV9v YmpmaWxlIChwZXJfY3UpOwogKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXg7CkBA IC0xNTU1LDM4ICsxNTMzLDEzIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2Fy ZjJsb2MuYwogKyAgYmF0b24ucGVyX2N1ID0gcGVyX2N1OwogKyAgYmF0b24ub2JqZWN0X2FkZHJl c3MgPSBvYmplY3RfYWRkcmVzczsKICsKLSsgIGN0eCA9IG5ld19kd2FyZl9leHByX2NvbnRleHQg KCk7Ci0rICBtYWtlX2NsZWFudXBfZnJlZV9kd2FyZl9leHByX2NvbnRleHQgKGN0eCk7Ci0rCiAr ICBjdHgtPmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICsgIGN0eC0+YWRk cl9zaXplID0gZHdhcmYyX3Blcl9jdV9hZGRyX3NpemUgKHBlcl9jdSk7CiArICBjdHgtPm9mZnNl dCA9IGR3YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKHBlcl9jdSk7CiArICBjdHgtPmJhdG9uID0g JmJhdG9uOwotKyAgY3R4LT5yZWFkX3JlZyA9IGR3YXJmX2V4cHJfcmVhZF9yZWc7Ci0rICBjdHgt PnJlYWRfbWVtID0gZHdhcmZfZXhwcl9yZWFkX21lbTsKLSsgIGN0eC0+Z2V0X2ZyYW1lX2Jhc2Ug PSBkd2FyZl9leHByX2ZyYW1lX2Jhc2U7Ci0rICBjdHgtPmdldF9mcmFtZV9jZmEgPSBkd2FyZl9l eHByX2ZyYW1lX2NmYTsKLSsgIGN0eC0+Z2V0X2ZyYW1lX3BjID0gZHdhcmZfZXhwcl9mcmFtZV9w YzsKLSsgIGN0eC0+Z2V0X3Rsc19hZGRyZXNzID0gZHdhcmZfZXhwcl90bHNfYWRkcmVzczsKLSsg IGN0eC0+ZHdhcmZfY2FsbCA9IGR3YXJmX2V4cHJfZHdhcmZfY2FsbDsKLSsgIGN0eC0+Z2V0X29i amVjdF9hZGRyZXNzID0gZHdhcmZfZXhwcl9vYmplY3RfYWRkcmVzczsKLSsKLSsgIFRSWV9DQVRD SCAoZXgsIFJFVFVSTl9NQVNLX0VSUk9SKQotKyAgICB7Ci0rICAgICAgZHdhcmZfZXhwcl9ldmFs IChjdHgsIGRhdGEsIHNpemUpOwotKyAgICB9Ci0rICBpZiAoZXgucmVhc29uIDwgMCkKLSsgICAg ewotKyAgICAgIGlmIChleC5lcnJvciA9PSBOT1RfQVZBSUxBQkxFX0VSUk9SKQotKwlyZXR1cm4g TlVMTDsKLSsgICAgICBlbHNlCi0rCXRocm93X2V4Y2VwdGlvbiAoZXgpOwotKyAgICB9Ci0rCi0r ICAvKiBJdCB3YXMgdXNlZCBvbmx5IGR1cmluZyBkd2FyZl9leHByX2V2YWwuICAqLwotKyAgY3R4 LT5iYXRvbiA9IE5VTEw7CisrICBjdHgtPmZ1bmNzID0gJmR3YXJmX2V4cHJfY3R4X2Z1bmNzOwog KwotKyAgcmV0dXJuIGN0eDsKKysgIGR3YXJmX2V4cHJfZXZhbCAoY3R4LCBkYXRhLCBzaXplKTsK ICt9CiArCiArLyogRXZhbHVhdGUgRFdBUkYgZXhwcmVzc2lvbiBhdCBETEJBVE9OIGV4cGVjdGlu ZyBpdCBwcm9kdWNlcyBleGFjdGx5IG9uZQpAQCAtMTU5NywxNiArMTU1MCwxOCBAQCBJbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYybG9jLmMKICt7CiArICBzdHJ1Y3QgZHdhcmZf ZXhwcl9jb250ZXh0ICpjdHg7CiArICBDT1JFX0FERFIgcmV0dmFsOwotKyAgc3RydWN0IGNsZWFu dXAgKmJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7CisrICBzdHJ1Y3Qg Y2xlYW51cCAqYmFja190bzsKKysKKysgIGN0eCA9IG5ld19kd2FyZl9leHByX2NvbnRleHQgKCk7 CisrICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwX2ZyZWVfZHdhcmZfZXhwcl9jb250ZXh0IChjdHgp OworKworKyAgZHdhcmZfZXhwcl9wcmVwX2N0eCAoY3R4LCBnZXRfc2VsZWN0ZWRfZnJhbWUgKE5V TEwpLCBkbGJhdG9uLT5kYXRhLAorKwkJICAgICAgIGRsYmF0b24tPnNpemUsIGRsYmF0b24tPnBl cl9jdSk7CiArCi0rICBjdHggPSBkd2FyZl9leHByX3ByZXBfY3R4IChnZXRfc2VsZWN0ZWRfZnJh bWUgKE5VTEwpLCBkbGJhdG9uLT5kYXRhLAotKwkJCSAgICAgZGxiYXRvbi0+c2l6ZSwgZGxiYXRv bi0+cGVyX2N1KTsKLSsgIGlmIChjdHggPT0gTlVMTCkKLSsgICAgdGhyb3dfZXJyb3IgKE5PVF9B VkFJTEFCTEVfRVJST1IsIF8oIlZhbHVlIG5vdCBhdmFpbGFibGUiKSk7CiArICBpZiAoY3R4LT5u dW1fcGllY2VzID4gMCkKICsgICAgZXJyb3IgKF8oIkRXX09QXypwaWVjZSBpcyB1bnN1cHBvcnRl ZCBmb3IgRFdfRk9STV9ibG9jayIpKTsKICsKLSsgIHJldHZhbCA9IGR3YXJmX2V4cHJfZmV0Y2gg KGN0eCwgMCk7CisrICByZXR2YWwgPSBkd2FyZl9leHByX2ZldGNoX2FkZHJlc3MgKGN0eCwgMCk7 CiArCiArICBpZiAoY3R4LT5sb2NhdGlvbiA9PSBEV0FSRl9WQUxVRV9SRUdJU1RFUikKICsgICAg ewpAQCAtMTYyNCw5OSArMTU3OSw3NiBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv ZHdhcmYybG9jLmMKICsgIHJldHVybiByZXR2YWw7CiArfQogKwotKy8qIEV2YWx1YXRlIERXQVJG IGxvY2F0aW9uIGxpc3QgYXQgRExMQkFUT04gZXhwZWN0aW5nIGl0IHByb2R1Y2VzIGV4YWN0bHkg b25lCi0rICAgQ09SRV9BRERSIHJlc3VsdCBzdG9yZWQgdG8gKkFERFJQIG9uIHRoZSBEV0FSRiBz dGFjayBzdGFjay4gIElmIHRoZSByZXN1bHQKLSsgICBjb3VsZCBub3QgYmUgZm91bmQgcmV0dXJu IHplcm8gYW5kIGtlZXAgKkFERFJQIHVuY2hhbmdlZC4gICovCi0rCi0raW50Ci0rZHdhcmZfbG9j bGlzdF9iYXRvbl9ldmFsIChzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmRsbGJhdG9uLAot KwkJCSAgc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiAqYWRkcnApCi0rewotKyAgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKTsKLSsgIGNvbnN0 IGdkYl9ieXRlICpkYXRhOwotKyAgc2l6ZV90IHNpemU7Ci0rICBzdHJ1Y3QgdmFsdWUgKnZhbDsK LSsKLSsgIGlmICghZGxsYmF0b24pCi0rICAgIHJldHVybiAwOwotKwotKyAgZGF0YSA9IGR3YXJm Ml9maW5kX2xvY2F0aW9uX2V4cHJlc3Npb24gKGRsbGJhdG9uLCAmc2l6ZSwKLSsJCQkJCSAgZ2V0 X2ZyYW1lX2FkZHJlc3NfaW5fYmxvY2sgKGZyYW1lKSk7Ci0rICBpZiAoZGF0YSA9PSBOVUxMKQot KyAgICByZXR1cm4gMDsKLSsKLSsgIHZhbCA9IGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAodHlw ZSwgZnJhbWUsIGRhdGEsIHNpemUsIGRsbGJhdG9uLT5wZXJfY3UpOwotKyAgaWYgKHZhbHVlX29w dGltaXplZF9vdXQgKHZhbCkpCi0rICAgIHJldHVybiAwOwotKwotKyAgKmFkZHJwID0gdmFsdWVf YXNfYWRkcmVzcyAodmFsKTsKLSsgIHJldHVybiAxOwotK30KLSsKICBzdHJ1Y3QgcGllY2VfY2xv c3VyZQogIHsKICAgIC8qIFJlZmVyZW5jZSBjb3VudC4gICovCi1AQCAtMTA3MiwxMSArMTI1MSw4 IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHkKK0BAIC0xMDgyLDIw ICsxMjUzLDYgQEAgaW52YWxpZF9zeW50aGV0aWNfcG9pbnRlciAodm9pZCkKKyAJICAgInJlZmVy ZW5jZWQgdmlhIHN5bnRoZXRpYyBwb2ludGVyIikpOworIH0KKyAKKy0vKiBWaXJ0dWFsIG1ldGhv ZCB0YWJsZSBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgYmVsb3cuICAqLworLQor LXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0X2Z1bmNzIGR3YXJmX2V4cHJf Y3R4X2Z1bmNzID0KKy17CistICBkd2FyZl9leHByX3JlYWRfcmVnLAorLSAgZHdhcmZfZXhwcl9y ZWFkX21lbSwKKy0gIGR3YXJmX2V4cHJfZnJhbWVfYmFzZSwKKy0gIGR3YXJmX2V4cHJfZnJhbWVf Y2ZhLAorLSAgZHdhcmZfZXhwcl9mcmFtZV9wYywKKy0gIGR3YXJmX2V4cHJfdGxzX2FkZHJlc3Ms CistICBkd2FyZl9leHByX2R3YXJmX2NhbGwsCistICBkd2FyZl9leHByX2dldF9iYXNlX3R5cGUK Ky19OworLQorIC8qIEV2YWx1YXRlIGEgbG9jYXRpb24gZGVzY3JpcHRpb24sIHN0YXJ0aW5nIGF0 IERBVEEgYW5kIHdpdGggbGVuZ3RoCisgICAgU0laRSwgdG8gZmluZCB0aGUgY3VycmVudCBsb2Nh dGlvbiBvZiB2YXJpYWJsZSBvZiBUWVBFIGluIHRoZQorICAgIGNvbnRleHQgb2YgRlJBTUUuICBC WVRFX09GRlNFVCBpcyBhcHBsaWVkIGFmdGVyIHRoZSBjb250ZW50cyBhcmUKK0BAIC0xMTA4LDEw ICsxMjY1LDggQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eQogIAkJ CSAgICAgICBMT05HRVNUIGJ5dGVfb2Zmc2V0KQogIHsKICAgIHN0cnVjdCB2YWx1ZSAqcmV0dmFs OwogLSAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24gYmF0b247CiAgICBzdHJ1Y3QgZHdhcmZfZXhw cl9jb250ZXh0ICpjdHg7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOworICAgc3RydWN0 IGNsZWFudXAgKm9sZF9jaGFpbiwgKnZhbHVlX2NoYWluOwogLSAgc3RydWN0IG9iamZpbGUgKm9i amZpbGUgPSBkd2FyZjJfcGVyX2N1X29iamZpbGUgKHBlcl9jdSk7Ci0tICB2b2xhdGlsZSBzdHJ1 Y3QgZ2RiX2V4Y2VwdGlvbiBleDsKKyAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4 OwogIAogICAgaWYgKGJ5dGVfb2Zmc2V0IDwgMCkKLSAgICAgaW52YWxpZF9zeW50aGV0aWNfcG9p bnRlciAoKTsKLUBAIC0xMDg5LDM4ICsxMjY1LDE0IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVz Y19mdWxsIChzdHJ1Y3QgdHkKLSAgICAgICByZXR1cm4gcmV0dmFsOwotICAgICB9CitAQCAtMTEy MCwyOCArMTI3NSwxOCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5 CisgICBpZiAoc2l6ZSA9PSAwKQorICAgICByZXR1cm4gYWxsb2NhdGVfb3B0aW1pemVkX291dF92 YWx1ZSAodHlwZSk7CiAgCiAtICBiYXRvbi5mcmFtZSA9IGZyYW1lOwogLSAgYmF0b24ucGVyX2N1 ID0gcGVyX2N1OwogLQotLSAgY3R4ID0gbmV3X2R3YXJmX2V4cHJfY29udGV4dCAoKTsKLS0gIG9s ZF9jaGFpbiA9IG1ha2VfY2xlYW51cF9mcmVlX2R3YXJmX2V4cHJfY29udGV4dCAoY3R4KTsKLS0K KyAgIGN0eCA9IG5ld19kd2FyZl9leHByX2NvbnRleHQgKCk7CisgICBvbGRfY2hhaW4gPSBtYWtl X2NsZWFudXBfZnJlZV9kd2FyZl9leHByX2NvbnRleHQgKGN0eCk7CisgICB2YWx1ZV9jaGFpbiA9 IG1ha2VfY2xlYW51cF92YWx1ZV9mcmVlX3RvX21hcmsgKHZhbHVlX21hcmsgKCkpOworIAogLSAg Y3R4LT5nZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7CiAtICBjdHgtPmFkZHJf c2l6ZSA9IGR3YXJmMl9wZXJfY3VfYWRkcl9zaXplIChwZXJfY3UpOwogLSAgY3R4LT5vZmZzZXQg PSBkd2FyZjJfcGVyX2N1X3RleHRfb2Zmc2V0IChwZXJfY3UpOwogLSAgY3R4LT5iYXRvbiA9ICZi YXRvbjsKLS0gIGN0eC0+cmVhZF9yZWcgPSBkd2FyZl9leHByX3JlYWRfcmVnOwotLSAgY3R4LT5y ZWFkX21lbSA9IGR3YXJmX2V4cHJfcmVhZF9tZW07Ci0tICBjdHgtPmdldF9mcmFtZV9iYXNlID0g ZHdhcmZfZXhwcl9mcmFtZV9iYXNlOwotLSAgY3R4LT5nZXRfZnJhbWVfY2ZhID0gZHdhcmZfZXhw cl9mcmFtZV9jZmE7Ci0tICBjdHgtPmdldF9mcmFtZV9wYyA9IGR3YXJmX2V4cHJfZnJhbWVfcGM7 Ci0tICBjdHgtPmdldF90bHNfYWRkcmVzcyA9IGR3YXJmX2V4cHJfdGxzX2FkZHJlc3M7Ci0tICBj dHgtPmR3YXJmX2NhbGwgPSBkd2FyZl9leHByX2R3YXJmX2NhbGw7Ci0rICBvbGRfY2hhaW4gPSBt YWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7Ci0gCi0tICBUUllfQ0FUQ0ggKGV4LCBSRVRV Uk5fTUFTS19FUlJPUikKLS0gICAgewotLSAgICAgIGR3YXJmX2V4cHJfZXZhbCAoY3R4LCBkYXRh LCBzaXplKTsKLS0gICAgfQotLSAgaWYgKGV4LnJlYXNvbiA8IDApCi0rICBjdHggPSBkd2FyZl9l eHByX3ByZXBfY3R4IChmcmFtZSwgZGF0YSwgc2l6ZSwgcGVyX2N1KTsKLSsgIGlmIChjdHggPT0g TlVMTCkKKy0gIGN0eC0+ZnVuY3MgPSAmZHdhcmZfZXhwcl9jdHhfZnVuY3M7CistCisgICBUUllf Q0FUQ0ggKGV4LCBSRVRVUk5fTUFTS19FUlJPUikKICAgICAgewotLSAgICAgIGlmIChleC5lcnJv ciA9PSBOT1RfQVZBSUxBQkxFX0VSUk9SKQotLQl7Ci0tCSAgcmV0dmFsID0gYWxsb2NhdGVfdmFs dWUgKHR5cGUpOwotLQkgIG1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFibGUgKHJldHZhbCwgMCwg VFlQRV9MRU5HVEggKHR5cGUpKTsKLS0JICByZXR1cm4gcmV0dmFsOwotLQl9Ci0tICAgICAgZWxz ZQotLQl0aHJvd19leGNlcHRpb24gKGV4KTsKLSsgICAgICByZXR2YWwgPSBhbGxvY2F0ZV92YWx1 ZSAodHlwZSk7Ci0rICAgICAgbWFya192YWx1ZV9ieXRlc191bmF2YWlsYWJsZSAocmV0dmFsLCAw LCBUWVBFX0xFTkdUSCAodHlwZSkpOwotKyAgICAgIHJldHVybiByZXR2YWw7CistICAgICAgZHdh cmZfZXhwcl9ldmFsIChjdHgsIGRhdGEsIHNpemUpOworKyAgICAgIGR3YXJmX2V4cHJfcHJlcF9j dHggKGN0eCwgZnJhbWUsIGRhdGEsIHNpemUsIHBlcl9jdSk7CiAgICAgIH0KLSAKLSAgIGlmIChj dHgtPm51bV9waWVjZXMgPiAwKQotQEAgLTExNjYsNiArMTMxOCwxNSBAQCBkd2FyZjJfZXZhbHVh dGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5Ci0gCSAgICBDT1JFX0FERFIgYWRkcmVzcyA9IGR3 YXJmX2V4cHJfZmV0Y2hfYWRkcmVzcyAoY3R4LCAwKTsKKyAgIGlmIChleC5yZWFzb24gPCAwKQor ICAgICB7CisgICAgICAgaWYgKGV4LmVycm9yID09IE5PVF9BVkFJTEFCTEVfRVJST1IpCisgCXsK Ky0JICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKyAJICByZXR2YWwgPSBhbGxvY2F0ZV92YWx1 ZSAodHlwZSk7CisgCSAgbWFya192YWx1ZV9ieXRlc191bmF2YWlsYWJsZSAocmV0dmFsLCAwLCBU WVBFX0xFTkdUSCAodHlwZSkpOworIAkgIHJldHVybiByZXR2YWw7CitAQCAtMTE5OCw2ICsxMzQz LDE2IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHkKICAJICAgIGlu dCBpbl9zdGFja19tZW1vcnkgPSBkd2FyZl9leHByX2ZldGNoX2luX3N0YWNrX21lbW9yeSAoY3R4 LCAwKTsKICAKKyAJICAgIGRvX2NsZWFudXBzICh2YWx1ZV9jaGFpbik7CisrCiArCSAgICAvKiBG cmFtZSBtYXkgYmUgbmVlZGVkIGZvciBjaGVja190eXBlZGVmIG9mIFRZUEVfRFlOQU1JQy4gICov CiArCSAgICBtYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAoKTsKICsJICAgIHNl bGVjdF9mcmFtZSAoZnJhbWUpOwpAQCAtMTcyOSw3ICsxNjYxLDcgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL2R3YXJmMmxvYy5jCiAgCSAgICByZXR2YWwgPSBhbGxvY2F0ZV92YWx1 ZV9sYXp5ICh0eXBlKTsKICAJICAgIFZBTFVFX0xWQUwgKHJldHZhbCkgPSBsdmFsX21lbW9yeTsK ICAJICAgIGlmIChpbl9zdGFja19tZW1vcnkpCi1AQCAtMjg1NSwxMSArMzAxNiw1MSBAQCBsb2Ns aXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5bWJvCitAQCAtMjk3NCwxMSArMzEyOSw1 MSBAQCBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5bWJvCiAgCQkJICAgICAg IGRsYmF0b24tPnBlcl9jdSk7CiAgfQogIApAQCAtMTc4MywxMSArMTcxNSwxMSBAQCBJbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYybG9jLmMKICsgIG1pc3NpbmdfZGVzY3JpYmVf bG9jYXRpb24sCiArICBtaXNzaW5nX3RyYWNlcG9pbnRfdmFyX3JlZgogK307Ci1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYybG9jLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9kd2FyZjJsb2MuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMu b3JpZy9nZGIvZHdhcmYybG9jLmgJMjAxMS0wMi0xNyAxNzoyMDo0NC4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2FyZjJsb2MuaAkyMDExLTA3LTAzIDEwOjMz OjExLjAwMDAwMDAwMCArMDIwMAotQEAgLTEwNyw2ICsxMDcsMTUgQEAgc3RydWN0IGR3YXJmMl9s b2NsaXN0X2JhdG9uCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kd2FyZjJsb2Mu aAkyMDExLTA1LTEyIDE5OjQwOjU0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2R3YXJmMmxvYy5oCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAw CitAQCAtMTEwLDYgKzExMCwxNSBAQCBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24KICAKICBl eHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX2xvY2V4cHJfZnVu Y3M7CiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2Ns aXN0X2Z1bmNzOwpAQCAtMTgwMywxMSArMTczNSwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvZHdhcmYybG9jLmgKICAKICAvKiBDb21waWxlIGEgRFdBUkYgbG9jYXRpb24gZXhw cmVzc2lvbiB0byBhbiBhZ2VudCBleHByZXNzaW9uLgogICAgIAotSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9n ZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMDIgMjE6NTk6MjkuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMDMgMTA6MzM6MTEu MDAwMDAwMDAwICswMjAwCi1AQCAtMTIyMiw2ICsxMjIyLDkgQEAgc3RhdGljIHZvaWQgZmlsbF9p bl9sb2NsaXN0X2JhdG9uIChzdHJ1YworLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIv ZHdhcmYycmVhZC5jCTIwMTEtMDctMjAgMTc6MTM6NDkuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAw MDAwMDAwICswMjAwCitAQCAtMTI0NSw2ICsxMjQ1LDkgQEAgc3RhdGljIHZvaWQgZmlsbF9pbl9s b2NsaXN0X2JhdG9uIChzdHJ1YwogIAkJCQkgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24g KmJhdG9uLAogIAkJCQkgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyKTsKICAKQEAgLTE4MTcsNyAr MTc0OSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2FyZjJyZWFkLmMKICBz dGF0aWMgdm9pZCBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIsCiAgCQkJCQkgc3RydWN0IHN5bWJvbCAqc3ltLAogIAkJCQkJIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KTsKLUBAIC0xMjU2LDYgKzEyNTksOSBAQCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2Nv bXBfdW5pdHMgKHZvaWQpCitAQCAtMTI3OSw2ICsxMjgyLDkgQEAgc3RhdGljIHZvaWQgYWdlX2Nh Y2hlZF9jb21wX3VuaXRzICh2b2lkKQogIAogIHN0YXRpYyB2b2lkIGZyZWVfb25lX2NhY2hlZF9j b21wX3VuaXQgKHZvaWQgKik7CiAgCkBAIC0xODI3LDcgKzE3NTksNyBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvZHdhcmYycmVhZC5jCiAgc3RhdGljIHN0cnVjdCB0eXBlICpzZXRf ZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgdHlwZSAqLAogIAkJCQkgIHN0cnVj dCBkd2FyZjJfY3UgKik7CiAgCi1AQCAtMTI4MCw2ICsxMjg2LDkgQEAgc3RhdGljIHN0cnVjdCB0 eXBlICpnZXRfZGllX3R5cGVfYXRfb2ZmcworQEAgLTEzMDMsNiArMTMwOSw5IEBAIHN0YXRpYyBz dHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlX2F0X29mZnMKICAKICBzdGF0aWMgc3RydWN0IHR5cGUg KmdldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KTsKICAKQEAgLTE4MzcsNyArMTc2OSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9kd2FyZjJyZWFkLmMKICBzdGF0aWMgdm9pZCBkd2FyZjJfcmVsZWFzZV9xdWV1ZSAodm9pZCAq ZHVtbXkpOwogIAogIHN0YXRpYyB2b2lkIHF1ZXVlX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9w ZXJfY3VfZGF0YSAqcGVyX2N1LAotQEAgLTc1NDIsNiArNzU1MSwyOSBAQCBwcm9jZXNzX2VudW1l cmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luCitAQCAtNzc1OSw2ICs3NzY4LDI5IEBAIHByb2Nl c3NfZW51bWVyYXRpb25fc2NvcGUgKHN0cnVjdCBkaWVfaW4KICAgIG5ld19zeW1ib2wgKGRpZSwg dGhpc190eXBlLCBjdSk7CiAgfQogIApAQCAtMTg2Nyw3ICsxNzk5LDcgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMnJlYWQuYwogIC8qIEV4dHJhY3QgYWxsIGluZm9ybWF0 aW9uIGZyb20gYSBEV19UQUdfYXJyYXlfdHlwZSBESUUgYW5kIHB1dCBpdCBpbgogICAgIHRoZSBE SUUncyB0eXBlIGZpZWxkLiAgRm9yIG5vdywgdGhpcyBvbmx5IGhhbmRsZXMgb25lIGRpbWVuc2lv bmFsCiAgICAgYXJyYXlzLiAgKi8KLUBAIC03NTU1LDcgKzc1ODcsNyBAQCByZWFkX2FycmF5X3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCitAQCAtNzc3Miw3ICs3ODA0LDcgQEAgcmVhZF9h cnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcwogICAgc3RydWN0IHR5cGUgKmVsZW1l bnRfdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBlOwogICAgc3RydWN0IHR5cGUgKipyYW5n ZV90eXBlcyA9IE5VTEw7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtMTg3Niw3ICsx ODA4LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMnJlYWQuYwogICAg c3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgICBjaGFyICpuYW1lOwogIAotQEAgLTc2MDgsMTcg Kzc2NDAsMTkgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcworQEAg LTc4MjUsMTcgKzc4NTcsMTkgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgcwogICAgdHlwZSA9IGVsZW1lbnRfdHlwZTsKICAKICAgIGlmIChyZWFkX2FycmF5X29yZGVy IChkaWUsIGN1KSA9PSBEV19PUkRfY29sX21ham9yKQpAQCAtMTkwNyw3ICsxODM5LDcgQEAgSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMnJlYWQuYwogIAogICAgLyogVW5kZXJz dGFuZCBEd2FyZjIgc3VwcG9ydCBmb3IgdmVjdG9yIHR5cGVzIChsaWtlIHRoZXkgb2NjdXIgb24K ICAgICAgIHRoZSBQb3dlclBDIHcvIEFsdGlWZWMpLiAgR2NjIGp1c3QgYWRkcyBhbm90aGVyIGF0 dHJpYnV0ZSB0byB0aGUKLUBAIC04MTAyLDI5ICs4MTM2LDExNCBAQCByZWFkX3RhZ19zdHJpbmdf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkCitAQCAtODMxOSwyOSArODM1MywxMTQgQEAgcmVhZF90 YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZAogICAgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICAgIHN0cnVjdCB0eXBlICp0eXBl LCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5cGU7CiAgICBzdHJ1Y3QgYXR0cmli dXRlICphdHRyOwpAQCAtMjAzNSw3ICsxOTY3LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL2R3YXJmMnJlYWQuYwogICAgY2hhcl90eXBlID0gbGFuZ3VhZ2Vfc3RyaW5nX2NoYXJf dHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwogICAgdHlwZSA9IGNyZWF0ZV9zdHJp bmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBlKTsKICAKLUBAIC04NDA5LDggKzg1 MjgsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllCitAQCAtODYz Miw4ICs4NzUxLDcgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZQog ICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZTsKICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwog ICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKQEAgLTIwNDUsNyArMTk3Nyw3IEBAIEluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2FyZjJyZWFkLmMKICAgIGNoYXIgKm5hbWU7CiAgICBM T05HRVNUIG5lZ2F0aXZlX21hc2s7CiAgCi1AQCAtODQyMyw1MyArODU0MSwxMjYgQEAgcmVhZF9z dWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZQorQEAgLTg2NDYsNTMgKzg3NjQsMTI2 IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUKICAgIGlmIChyYW5n ZV90eXBlKQogICAgICByZXR1cm4gcmFuZ2VfdHlwZTsKICAKQEAgLTIxMDMsNyArMjAzNSw3IEBA IEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2FyZjJyZWFkLmMKICsgICAgfQogKyAg ZWxzZQogICAgICB7Ci0tICAgICAgaWYgKGF0dHItPmZvcm0gPT0gRFdfRk9STV9ibG9jazEgfHwg aXNfcmVmX2F0dHIgKGF0dHIpKQorLSAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIp IHx8IGlzX3JlZl9hdHRyIChhdHRyKSkKIC0gICAgICAgIHsKIC0gICAgICAgICAgLyogR0NDIGVu Y29kZXMgYXJyYXlzIHdpdGggdW5zcGVjaWZpZWQgb3IgZHluYW1pYyBsZW5ndGgKIC0gICAgICAg ICAgICAgd2l0aCBhIERXX0ZPUk1fYmxvY2sxIGF0dHJpYnV0ZSBvciBhIHJlZmVyZW5jZSBhdHRy aWJ1dGUuCkBAIC0yMjA1LDcgKzIxMzcsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvZHdhcmYycmVhZC5jCiAgICAgIH0KICAKICAgIC8qIER3YXJmLTIgc3BlY2lmaWNhdGlvbnMg ZXhwbGljaXRseSBhbGxvd3MgdG8gY3JlYXRlIHN1YnJhbmdlIHR5cGVzCi1AQCAtODUxMCwyNCAr ODcwMSw0MSBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllCitAQCAt ODczMywyNCArODkyNCw0MSBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllCiAgCX0KICAgICAgfQogIApAQCAtMjIyMSw3ICsyMTUzLDcgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL2R3YXJmMnJlYWQuYwogLSAgLyogTWFyayBhcnJheXMgd2l0aCBkeW5h bWljIGxlbmd0aCBhdCBsZWFzdCBhcyBhbiBhcnJheSBvZiB1bnNwZWNpZmllZAogLSAgICAgbGVu Z3RoLiAgR0RCIGNvdWxkIGNoZWNrIHRoZSBib3VuZGFyeSBidXQgYmVmb3JlIGl0IGdldHMgaW1w bGVtZW50ZWQgYXQKIC0gICAgIGxlYXN0IGFsbG93IGFjY2Vzc2luZyB0aGUgYXJyYXkgZWxlbWVu dHMuICAqLwotLSAgaWYgKGF0dHIgJiYgYXR0ci0+Zm9ybSA9PSBEV19GT1JNX2Jsb2NrMSkKKy0g IGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCiAtICAgIFRZUEVfSElHSF9C T1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKIC0KIC0gIC8qIEFkYSBleHBlY3RzIGFu IGVtcHR5IGFycmF5IG9uIG5vIGJvdW5kYXJ5IGF0dHJpYnV0ZXMuICAqLwpAQCAtMjI2NSw3ICsy MTk3LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMnJlYWQuYwogIAog ICAgbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKICAgIGlmIChuYW1lKQotQEAgLTExMDcy LDEwICsxMTI4MCwxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9uIChzdHJ1Y3QgYXR0cmlidXRlICph CitAQCAtMTEzMDcsMTMgKzExNTE1LDEyIEBAIHZhcl9kZWNvZGVfbG9jYXRpb24gKHN0cnVjdCBh dHRyaWJ1dGUgKmEKICAgICAgIChpLmUuIHdoZW4gdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgb3Ig bWVtb3J5IGxvY2F0aW9uIGlzCiAgICAgICByZWZlcmVuY2VkLCBvciBhIHRocmVhZC1sb2NhbCBi bG9jaywgZXRjLikuICBUaGVuIGFnYWluLCBpdCBtaWdodAogICAgICAgbm90IGJlIHdvcnRod2hp bGUuICBJJ20gYXNzdW1pbmcgdGhhdCBpdCBpc24ndCB1bmxlc3MgcGVyZm9ybWFuY2UKQEAgLTIy NzYsMTEgKzIyMDgsMTQgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMnJl YWQuYwogIAogLSAgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChhdHRyLCBzeW0sIGN1KTsK ICAgIFNZTUJPTF9DTEFTUyAoc3ltKSA9IExPQ19DT01QVVRFRDsKKy0KKy0gIGlmIChTWU1CT0xf Q09NUFVURURfT1BTIChzeW0pID09ICZkd2FyZjJfbG9jbGlzdF9mdW5jcykKKy0gICAgY3UtPmhh c19sb2NsaXN0ID0gMTsKICsgIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoYXR0ciwgc3lt LCBjdSk7CisgfQogIAotICAgaWYgKFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPT0gJmR3YXJm Ml9sb2NsaXN0X2Z1bmNzKQotICAgICBjdS0+aGFzX2xvY2xpc3QgPSAxOwotQEAgLTExMTE2LDYg KzExMzI2LDggQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcworIC8q IEdpdmVuIGEgcG9pbnRlciB0byBhIERXQVJGIGluZm9ybWF0aW9uIGVudHJ5LCBmaWd1cmUgb3V0 IGlmIHdlIG5lZWQKK0BAIC0xMTM1MSw2ICsxMTU1OCw4IEBAIG5ld19zeW1ib2xfZnVsbCAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHMKICAgICAgICBlbHNlCiAgCXN5bSA9IE9CU1RBQ0tfWkFMTE9D ICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzdHJ1Y3Qgc3ltYm9sKTsKICAgICAgICBPQkpT VEFUIChvYmpmaWxlLCBuX3N5bXMrKyk7CkBAIC0yMjg5LDcgKzIyMjQsNyBAQCBJbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYycmVhZC5jCiAgCiAgICAgICAgLyogQ2FjaGUgdGhp cyBzeW1ib2wncyBuYW1lIGFuZCB0aGUgbmFtZSdzIGRlbWFuZ2xlZCBmb3JtIChpZiBhbnkpLiAg Ki8KICAgICAgICBTWU1CT0xfU0VUX0xBTkdVQUdFIChzeW0sIGN1LT5sYW5ndWFnZSk7Ci1AQCAt MTE4ODgsNiArMTIxMDAsOSBAQCByZWFkX3R5cGVfZGllXzEgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzCitAQCAtMTIxMjMsNiArMTIzMzIsOSBAQCByZWFkX3R5cGVfZGllXzEgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAKQEAgLTIyOTksNyArMjIzNCw3 IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2FyZjJyZWFkLmMKICAgIHJldHVy biB0aGlzX3R5cGU7CiAgfQogIAotQEAgLTE0NzQyLDYxICsxNDk1Nyw5OSBAQCBmaWxsX2luX2xv Y2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgCitAQCAtMTUwMTUsNjEgKzE1MjI3LDEwMCBA QCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgCiAgICBiYXRvbi0+YmFz ZV9hZGRyZXNzID0gY3UtPmJhc2VfYWRkcmVzczsKICB9CiAgCkBAIC0yMzQ2LDcgKzIyODEsNyBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYycmVhZC5jCiArCiArICByZXR1 cm4gYmF0b247CiArfQotIAorKwogK3N0YXRpYyBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24g KgogK2R3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogK3sKQEAgLTIzNTksNyArMjI5NCw3IEBAIEluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2FyZjJyZWFkLmMKICsKICsgIGR3YXJmMl9yZWFkX3Nl Y3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwKICsJCSAgICAgICAmZHdhcmYyX3Bl cl9vYmpmaWxlLT5sb2MpOwotKworIAogKyAgaWYgKCEoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zm c2V0IChhdHRyKQogKwkvKiAiLmRlYnVnX2xvYyIgbWF5IG5vdCBleGlzdCBhdCBhbGwsIG9yIHRo ZSBvZmZzZXQgbWF5IGJlIG91dHNpZGUKICsJICAgdGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0 aHJvdWdoIHRvIHRoZSBjb21wbGFpbnQgaW4gdGhlCkBAIC0yMzk1LDYgKzIzMzAsNyBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYycmVhZC5jCiAgICAgICAgU1lNQk9MX0NP TVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9jbGlzdF9mdW5jczsKIC0gICAgICBTWU1CT0xf TE9DQVRJT05fQkFUT04gKHN5bSkgPSBiYXRvbjsKICsgICAgICBTWU1CT0xfTE9DQVRJT05fQkFU T04gKHN5bSkgPSBsb2NsaXN0X2JhdG9uOworKyAgICAgIGN1LT5oYXNfbG9jbGlzdCA9IDE7CiAr ICAgIH0KICsgIGVsc2UgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCiArICAgIHsKQEAg LTI0NDIsNyArMjM3OCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2FyZjJy ZWFkLmMKICAgICAgfQogIH0KICAKLUBAIC0xNTE0NSw2ICsxNTM5OCwyNSBAQCBvZmZzZXRfYW5k X3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzCitAQCAtMTU0MTgsNiArMTU2NjksMjUgQEAg b2Zmc2V0X2FuZF90eXBlX2VxIChjb25zdCB2b2lkICppdGVtX2xocwogICAgcmV0dXJuIG9mc19s aHMtPm9mZnNldCA9PSBvZnNfcmhzLT5vZmZzZXQ7CiAgfQogIApAQCAtMjQ2OCw3ICsyNDA0LDcg QEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMnJlYWQuYwogIC8qIFNldCB0 aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRvIFRZUEUuICBTYXZlIGl0IGluIENVJ3MgaGFz aAogICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZvciBjb252ZW5pZW5jZSwgcmV0dXJuIFRZUEUu CiAgCi1AQCAtMTUxNzAsNiArMTU0NDIsOCBAQCBzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1CitAQCAtMTU0NDMsNiArMTU3MTMsOCBAQCBzZXRfZGllX3R5cGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1CiAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5v YmpmaWxlOwogICAgaHRhYl90ICp0eXBlX2hhc2hfcHRyOwogIApAQCAtMjQ3NywyNCArMjQxMywy MCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYycmVhZC5jCiAgICAvKiBG b3IgQWRhIHR5cGVzLCBtYWtlIHN1cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZpYyBkYXRhIGlzIGFs d2F5cwogICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBUaGVyZSBhcmUg YSBmZXcgdHlwZXMgd2hlcmUKICAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9pbmcgc28sIGJlY2F1 c2UgdGhlIHR5cGUtc3BlY2lmaWMgYXJlYSBpcwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL2VsZnJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9n ZGIvZWxmcmVhZC5jCTIwMTEtMDUtMDMgMTg6MjU6MjAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvZWxmcmVhZC5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAw MDAwICswMjAwCi1AQCAtNDMsNiArNDMsMTIgQEAKLSAjaW5jbHVkZSAiaW5mY2FsbC5oIgotICNp bmNsdWRlICJnZGJ0aHJlYWQuaCIKLSAjaW5jbHVkZSAicmVnY2FjaGUuaCIKK0luZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4zLjUw LjIwMTEwNzIyLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDExLTA1LTI2IDA5OjQ3OjEwLjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwkyMDExLTA3LTIy IDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTM4LDYgKzM4LDggQEAKKyAjaW5jbHVkZSAi ZGVtYW5nbGUuaCIKKyAjaW5jbHVkZSAicHN5bXByaXYuaCIKKyAjaW5jbHVkZSAiZmlsZW5hbWVz LmgiCiArI2luY2x1ZGUgInN0YXAtcHJvYmUuaCIKICsjaW5jbHVkZSAiYXJjaC11dGlscy5oIgot KyNpbmNsdWRlICJ2YWx1ZS5oIgotKyNpbmNsdWRlICJpbmZjYWxsLmgiCi0rI2luY2x1ZGUgImdk YnRocmVhZC5oIgotKyNpbmNsdWRlICJyZWdjYWNoZS5oIgotIAotIGV4dGVybiB2b2lkIF9pbml0 aWFsaXplX2VsZnJlYWQgKHZvaWQpOwotIAotQEAgLTYxLDYgKzY3LDIxIEBAIHN0cnVjdCBlbGZp bmZvCisgI2luY2x1ZGUgImdkYnR5cGVzLmgiCisgI2luY2x1ZGUgInZhbHVlLmgiCisgI2luY2x1 ZGUgImluZmNhbGwuaCIKK0BAIC02MSw2ICs2MywyMSBAQCBzdHJ1Y3QgZWxmaW5mbwogICAgICBh c2VjdGlvbiAqbWRlYnVnc2VjdDsJLyogU2VjdGlvbiBwb2ludGVyIGZvciAubWRlYnVnIHNlY3Rp b24gKi8KICAgIH07CiAgCkBAIC0yNTE2LDcgKzI0NDgsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvZWxmcmVhZC5jCiAgc3RhdGljIHZvaWQgZnJlZV9lbGZpbmZvICh2b2lkICop OwogIAogIC8qIE1pbmltYWwgc3ltYm9scyBsb2NhdGVkIGF0IHRoZSBHT1QgZW50cmllcyBmb3Ig LnBsdCAtIHRoYXQgaXMgdGhlIHJlYWwKLUBAIC0xNTUzLDcgKzE1NzQsMjY2IEBAIGVsZnN0YWJf b2Zmc2V0X3NlY3Rpb25zIChzdHJ1Y3Qgb2JqZmlsZSAKK0BAIC0xNTc0LDcgKzE1OTEsMjY2IEBA IGVsZnN0YWJfb2Zmc2V0X3NlY3Rpb25zIChzdHJ1Y3Qgb2JqZmlsZSAKICAgICAgY29tcGxhaW50 ICgmc3ltZmlsZV9jb21wbGFpbnRzLAogIAkgICAgICAgXygiZWxmL3N0YWIgc2VjdGlvbiBpbmZv cm1hdGlvbiBtaXNzaW5nIGZvciAlcyIpLCBmaWxlbmFtZSk7CiAgfQpAQCAtMjc4Myw3ICsyNzE1 LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2VsZnJlYWQuYwogIC8qIFJlZ2lz dGVyIHRoYXQgd2UgYXJlIGFibGUgdG8gaGFuZGxlIEVMRiBvYmplY3QgZmlsZSBmb3JtYXRzLiAg Ki8KICAKICBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnMgPQotQEAgLTE1 NjgsNiArMTg0OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2ZucyAK K0BAIC0xNTg5LDYgKzE4NjUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5 bV9mbnMgCiAgICBlbGZfc3ltZmlsZV9zZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9ybWF0 aW9uIGZyb20gYSBmaWxlLiAgKi8KICAgIE5VTEwsCiAgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2Nh dGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICovCkBAIC0yNzkxLDcgKzI3MjMsNyBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZWxmcmVhZC5jCiAgICAmcHN5bV9mdW5j dGlvbnMKICB9OwogIAotQEAgLTE1ODYsNiArMTg2Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg c3ltX2ZucyBlbGZfc3ltX2Zuc18KK0BAIC0xNjA3LDYgKzE4ODQsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnNfCiAgICBlbGZfc3ltZmlsZV9zZWdtZW50cywJCS8q IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KICAgIE5VTEwsCiAgICBk ZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICov CkBAIC0yNzk5LDcgKzI3MzEsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZWxm cmVhZC5jCiAgICAmcHN5bV9mdW5jdGlvbnMKICB9OwogIAotQEAgLTE2MDMsNiArMTg4NSw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2Zuc18KK0BAIC0xNjI0LDYgKzE5 MDIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnNfCiAgICBlbGZf c3ltZmlsZV9zZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxl LiAgKi8KICAgIE5VTEwsCiAgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRl IGEgZGVidWcgc2VjdGlvbi4gICovCkBAIC0yODA3LDcgKzI3MzksNyBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvZWxmcmVhZC5jCiAgICAmZHdhcmYyX2dkYl9pbmRleF9mdW5jdGlv bnMKICB9OwogIAotQEAgLTE2MTksNiArMTkwMiw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ251 X2lmdW5jX2ZucyBlbGZfZ24KK0BAIC0xNjQwLDYgKzE5MTksOCBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGdudV9pZnVuY19mbnMgZWxmX2duCiAgdm9pZAogIF9pbml0aWFsaXplX2VsZnJlYWQgKHZv aWQpCiAgewpAQCAtMjgxNiwxMCArMjc0OCwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvZWxmcmVhZC5jCiAgICBhZGRfc3ltdGFiX2ZucyAoJmVsZl9zeW1fZm5zKTsKICAKICAg IGVsZl9vYmpmaWxlX2dudV9pZnVuY19jYWNoZV9kYXRhID0gcmVnaXN0ZXJfb2JqZmlsZV9kYXRh ICgpOwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2V2YWwuYworSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2V2YWwuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAx MTA3MDMub3JpZy9nZGIvZXZhbC5jCTIwMTEtMDMtMjggMjI6MjE6MDMuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZXZhbC5jCTIwMTEtMDctMDMgMTA6MzM6MTEu MDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9ldmFsLmMJ MjAxMS0wNi0xNyAyMjozNTowOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9ldmFsLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC00 NCw2ICs0NCw3IEBACiAgI2luY2x1ZGUgIm9iamZpbGVzLmgiCiAgI2luY2x1ZGUgInB5dGhvbi9w eXRob24uaCIKQEAgLTMyMjIsNyArMzE1NCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi9ldmFsLmMKICAKICAgICAgY2FzZSBVTk9QX0FERFI6CiAgICAgICAgLyogQysrOiBjaGVj ayBmb3IgYW5kIGhhbmRsZSBwb2ludGVyIHRvIG1lbWJlcnMuICAqLwotQEAgLTI5OTEsNyArMzE1 MSw3IEBAIGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXgKK0BAIC0yOTg3 LDcgKzMxNDcsNyBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4CiAg ewogICAgZW51bSBleHBfb3Bjb2RlIG9wOwogICAgaW50IHBjOwpAQCAtMzIzMSw3ICszMTYzLDcg QEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2V2YWwuYwogICAgc3RydWN0IHN5bWJv bCAqdmFyOwogICAgc3RydWN0IHR5cGUgKnR5cGU7CiAgCi1AQCAtMzAwMiwxMyArMzE2MiwxOCBA QCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4CitAQCAtMjk5OCwxMyAr MzE1OCwxOCBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4CiAgICAg IHsKICAgICAgY2FzZSBPUF9WQVJfVkFMVUU6CiAgICAgICAgdmFyID0gZXhwLT5lbHRzW3BjICsg Ml0uc3ltYm9sOwpAQCAtMzI1MSw3ICszMTgzLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL2V2YWwuYwogIAkgIHJldHVybiB2YWx1ZV9jYXN0IChsb29rdXBfcG9pbnRlcl90eXBl IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCiAgCQkJICAgICB2YWwpOwogIAl9Ci1AQCAtMzA2 MCw5ICszMjI1LDEzIEBAIGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhwcmUK K0BAIC0zMDU2LDkgKzMyMjEsMTMgQEAgZXZhbHVhdGVfc3ViZXhwX2Zvcl9zaXplb2YgKHN0cnVj dCBleHByZQogIAogICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICAoKnBvcykgKz0gNDsK QEAgLTMyNjgsNyArMzIwMCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9ldmFs LmMKICAKICAgICAgZGVmYXVsdDoKICAgICAgICB2YWwgPSBldmFsdWF0ZV9zdWJleHAgKE5VTExf VFlQRSwgZXhwLCBwb3MsIEVWQUxfQVZPSURfU0lERV9FRkZFQ1RTKTsKLUBAIC0zMDkzLDE4ICsz MjYyLDI1IEBAIHBhcnNlX2FuZF9ldmFsX3R5cGUgKGNoYXIgKnAsIGludCBsZW5ndGgKK0BAIC0z MDg5LDE4ICszMjU4LDI1IEBAIHBhcnNlX2FuZF9ldmFsX3R5cGUgKGNoYXIgKnAsIGludCBsZW5n dGgKICBpbnQKICBjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSkK ICB7CkBAIC0zMzA0LDEwICszMjM2LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9ldmFsLmMKIC0gIHJldHVybiBuZGltZW47CiArCiAgfQotSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL2YtZXhwLnkKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLWV4cC55 CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9mLWV4cC55CTIw MTEtMDMtMTggMTQ6NTE6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvZi1leHAueQkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdk Yi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZi1leHAueQkyMDExLTA0LTE5IDIwOjA0OjA3LjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2YtZXhwLnkJMjAxMS0w Ny0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0yOTMsNyArMjkzLDkgQEAgYXJnbGlz dCA6CXN1YnJhbmdlCiAgCQkJeyBhcmdsaXN0X2xlbiA9IDE7IH0KICAJOwpAQCAtMzMxOSwxMCAr MzI1MSwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZi1leHAueQogIAkJCXsg YXJnbGlzdF9sZW4rKzsgfQogIAk7CiAgCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv Zi1sYW5nLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLWxhbmcuaAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvZi1sYW5nLmgJMjAxMS0wMS0w NyAyMDozNjoxNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9m LWxhbmcuaAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMu NTAuMjAxMTA3MjIub3JpZy9nZGIvZi1sYW5nLmgJMjAxMS0wMS0wNyAyMDozNjoxNi4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLWxhbmcuaAkyMDExLTA3LTIy IDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTI4LDYgKzI4LDEwIEBAIGV4dGVybiB2b2lk IGZfZXJyb3IgKGNoYXIgKik7CS8qIERlZmluZWQKICBleHRlcm4gdm9pZCBmX3ByaW50X3R5cGUg KHN0cnVjdCB0eXBlICosIGNvbnN0IGNoYXIgKiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LAogIAkJ CSAgaW50KTsKQEAgLTMzMzQsMTAgKzMyNjYsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL2YtbGFuZy5oCiAgZXh0ZXJuIGludCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKiwg Y29uc3QgZ2RiX2J5dGUgKiwgaW50LCBDT1JFX0FERFIsCiAgCQkJc3RydWN0IHVpX2ZpbGUgKiwg aW50LAogIAkJCWNvbnN0IHN0cnVjdCB2YWx1ZSAqLAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL2YtdHlwZXByaW50LmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLXR5 cGVwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9m LXR5cGVwcmludC5jCTIwMTEtMDEtMDcgMjA6MzY6MTYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvZi10eXBlcHJpbnQuYwkyMDExLTA3LTAzIDEwOjMzOjExLjAw MDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZi10eXBlcHJp bnQuYwkyMDExLTA2LTI5IDE3OjMyOjM5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2YtdHlwZXByaW50LmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAg KzAyMDAKIEBAIC0zMiw3ICszMiw3IEBACiAgI2luY2x1ZGUgImdkYmNvcmUuaCIKICAjaW5jbHVk ZSAidGFyZ2V0LmgiCkBAIC0zNDAyLDEwICszMzM0LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi9mLXR5cGVwcmludC5jCiAgICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCiAg ICAgIHsKICAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6Ci1JbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvZi12YWxwcmludC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi12 YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9m LXZhbHByaW50LmMJMjAxMS0wMi0wNyAxODo0OTozMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi9mLXZhbHByaW50LmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAw MDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2YtdmFscHJpbnQu YwkyMDExLTA2LTI5IDE3OjMyOjM5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2YtdmFscHJpbnQuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIw MAogQEAgLTU0LDE1ICs1NCwxNyBAQCBpbnQgZjc3X2FycmF5X29mZnNldF90YmxbTUFYX0ZPUlRS QU5fRElNCiAgLyogVGhlIGZvbGxvd2luZyBtYWNybyBnaXZlcyB1cyB0aGUgc2l6ZSBvZiB0aGUg bnRoIGRpbWVuc2lvbiwgV2hlcmUgCiAgICAgbiBpcyAxIGJhc2VkLiAgKi8KQEAgLTM1NDEsMTAg KzM0NzMsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2YtdmFscHJpbnQuYwog ICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7CiAgICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCiAg ICAgIHsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9maW5kdmFyLmMKK0luZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9maW5kdmFyLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2ZpbmR2YXIuYwkyMDExLTAzLTE4IDE5OjQyOjQxLjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2ZpbmR2YXIuYwkyMDExLTA3 LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3Jp Zy9nZGIvZmluZHZhci5jCTIwMTEtMDctMTIgMjM6MTY6NDguMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZmluZHZhci5jCTIwMTEtMDctMjIgMjA6MDU6MjEuMDAw MDAwMDAwICswMjAwCiBAQCAtMzUsNiArMzUsNyBAQAogICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIK ICAjaW5jbHVkZSAiYmxvY2suaCIKQEAgLTM2NTUsNyArMzU4Nyw3IEBAIEluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi9maW5kdmFyLmMKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgCi1A QCAtNTg3LDYgKzU3NSwxMCBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBz dHJ1CitAQCAtNTg0LDYgKzU3MiwxMCBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAq dmFyLCBzdHJ1CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAKQEAgLTM2NjYsNyArMzU5OCw3IEBA IEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9maW5kdmFyLmMKICAgIFZBTFVFX0xWQUwg KHYpID0gbHZhbF9tZW1vcnk7CiAgICBzZXRfdmFsdWVfYWRkcmVzcyAodiwgYWRkcik7CiAgICBy ZXR1cm4gdjsKLUBAIC02MjYsMTEgKzYxOCwxMiBAQCBzdHJ1Y3QgdmFsdWUgKgorQEAgLTYyMywx MSArNjE1LDEyIEBAIHN0cnVjdCB2YWx1ZSAqCiAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0 IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICB7CiAg ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7CkBAIC0z NjgxLDcgKzM2MTMsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZmluZHZhci5j CiAgICAgIHsKICAgICAgICAvKiBUaGUgSVNBL0FCSSBuZWVkIHRvIHNvbWV0aGluZyB3ZWlyZCB3 aGVuIG9idGFpbmluZyB0aGUKICAgICAgICAgICBzcGVjaWZpZWQgdmFsdWUgZnJvbSB0aGlzIHJl Z2lzdGVyLiAgSXQgbWlnaHQgbmVlZCB0bwotQEAgLTY0Myw3ICs2MzYsNyBAQCB2YWx1ZV9mcm9t X3JlZ2lzdGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgCitAQCAtNjQwLDcgKzYzMyw3IEBAIHZhbHVl X2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCAKICAgICAgICBWQUxVRV9MVkFMICh2 KSA9IGx2YWxfcmVnaXN0ZXI7CiAgICAgICAgVkFMVUVfRlJBTUVfSUQgKHYpID0gZ2V0X2ZyYW1l X2lkIChmcmFtZSk7CiAgICAgICAgVkFMVUVfUkVHTlVNICh2KSA9IHJlZ251bTsKQEAgLTM2OTAs MTAgKzM2MjIsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2ZpbmR2YXIuYwog IAkJCQkgICAgICB2YWx1ZV9jb250ZW50c19yYXcgKHYpLCAmb3B0aW0sCiAgCQkJCSAgICAgICZ1 bmF2YWlsKTsKICAgICAgfQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2dkYmluaXQu aW4KK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJpbml0LmluCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9nZGJpbml0LmluCTIwMDktMTAtMDUg MTU6NDY6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2Ri aW5pdC5pbgkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMu NTAuMjAxMTA3MjIub3JpZy9nZGIvZ2RiaW5pdC5pbgkyMDA5LTEwLTA1IDE1OjQ2OjUyLjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYmluaXQuaW4JMjAxMS0w Ny0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0xLDUgKzEsMTUgQEAKICBlY2hvIFNl dHRpbmcgdXAgdGhlIGVudmlyb25tZW50IGZvciBkZWJ1Z2dpbmcgZ2RiLlxuCiAgCkBAIC0zNzEw LDEwICszNjQyLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9nZGJpbml0Lmlu CiAgc2V0IGNvbXBsYWludHMgMQogIAogIGIgaW50ZXJuYWxfZXJyb3IKLUluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi9nZGJ0eXBlcy5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvZ2RidHlwZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9n ZGIvZ2RidHlwZXMuYwkyMDExLTAzLTI4IDIyOjIxOjAzLjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL2dkYnR5cGVzLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAw MDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2dkYnR5cGVzLmMJ MjAxMS0wNi0yNCAyMTo0NzozNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9nZGJ0eXBlcy5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBA QCAtMzksNiArMzksOSBAQAogICNpbmNsdWRlICJjcC1hYmkuaCIKICAjaW5jbHVkZSAiZ2RiX2Fz c2VydC5oIgpAQCAtMzg1Niw3ICszNzg4LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL2dkYnR5cGVzLmMKICAKICAgIHJldHVybiByZXN1bHRfdHlwZTsKICB9Ci1AQCAtMTQxMyw2 ICsxNDY4LDEwNSBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCitAQCAtMTQzOSw2ICsx NDk0LDEwNSBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCiAgICBjb21wbGFpbnQgKCZz eW1maWxlX2NvbXBsYWludHMsIF8oInN0dWIgdHlwZSBoYXMgTlVMTCBuYW1lIikpOwogIH0KICAK QEAgLTM5NjIsNyArMzg5NCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9nZGJ0 eXBlcy5jCiAgLyogRmluZCB0aGUgcmVhbCB0eXBlIG9mIFRZUEUuICBUaGlzIGZ1bmN0aW9uIHJl dHVybnMgdGhlIHJlYWwgdHlwZSwKICAgICBhZnRlciByZW1vdmluZyBhbGwgbGF5ZXJzIG9mIHR5 cGVkZWZzLCBhbmQgY29tcGxldGluZyBvcGFxdWUgb3Igc3R1YgogICAgIHR5cGVzLiAgQ29tcGxl dGlvbiBjaGFuZ2VzIHRoZSBUWVBFIGFyZ3VtZW50LCBidXQgc3RyaXBwaW5nIG9mCi1AQCAtMTU3 NSw1MiArMTcyOSwzNyBAQCBjaGVja190eXBlZGVmIChzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC0x NjAxLDUyICsxNzU1LDM3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQogICAg ICAgICAgfQogICAgICB9CiAgCkBAIC00MDM2LDcgKzM5NjgsNyBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuYwogIAkgIFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpID0g MDsKICAJfQogICAgICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JB TkdFKQotQEAgLTE2MjgsNiArMTc2Nyw3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0 eXBlKQorQEAgLTE2NTQsNiArMTc5Myw3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0 eXBlKQogIAkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7 CiAgCSAgVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAwOwogIAl9CkBAIC00MDQ0LDcgKzM5NzYs NyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuYwogICAgICB9CiAg CiAgICB0eXBlID0gbWFrZV9xdWFsaWZpZWRfdHlwZSAodHlwZSwgaW5zdGFuY2VfZmxhZ3MsIE5V TEwpOwotQEAgLTMyNjYsMzMgKzM0MDYsNDIgQEAgdHlwZV9wYWlyX2VxIChjb25zdCB2b2lkICpp dGVtX2xocywgY29ucworQEAgLTMyOTIsMzMgKzM0MzIsNDIgQEAgdHlwZV9wYWlyX2VxIChjb25z dCB2b2lkICppdGVtX2xocywgY29ucwogIH0KICAKICAvKiBBbGxvY2F0ZSB0aGUgaGFzaCB0YWJs ZSB1c2VkIGJ5IGNvcHlfdHlwZV9yZWN1cnNpdmUgdG8gd2FsawpAQCAtNDEwMiw3ICs0MDM0LDcg QEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2dkYnR5cGVzLmMKICAgICAgcmV0dXJu IHR5cGU7CiAgCiAgICAvKiBUaGlzIHR5cGUgc2hvdWxkbid0IGJlIHBvaW50aW5nIHRvIGFueSB0 eXBlcyBpbiBvdGhlciBvYmpmaWxlczsKLUBAIC0zMzA3LDkgKzM0NTYsMTAgQEAgY29weV90eXBl X3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iagorQEAgLTMzMzMsOSArMzQ4MiwxMCBAQCBj b3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCiAgICBuZXdfdHlwZSA9IGFs bG9jX3R5cGVfYXJjaCAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpOwogIAogICAgLyogV2UgbXVzdCBh ZGQgdGhlIG5ldyB0eXBlIHRvIHRoZSBoYXNoIHRhYmxlIGltbWVkaWF0ZWx5LCBpbiBjYXNlCkBA IC00MTE2LDcgKzQwNDgsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlw ZXMuYwogICAgc3RvcmVkLT5vbGQgPSB0eXBlOwogICAgc3RvcmVkLT5uZXcgPSBuZXdfdHlwZTsK ICAgICpzbG90ID0gc3RvcmVkOwotQEAgLTMzMjAsNiArMzQ3MCwyMSBAQCBjb3B5X3R5cGVfcmVj dXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCitAQCAtMzM0Niw2ICszNDk2LDIxIEBAIGNvcHlf dHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmoKICAgIFRZUEVfT0JKRklMRV9PV05F RCAobmV3X3R5cGUpID0gMDsKICAgIFRZUEVfT1dORVIgKG5ld190eXBlKS5nZGJhcmNoID0gZ2V0 X3R5cGVfYXJjaCAodHlwZSk7CiAgCkBAIC00MTM4LDcgKzQwNzAsNyBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuYwogICAgaWYgKFRZUEVfTkFNRSAodHlwZSkpCiAg ICAgIFRZUEVfTkFNRSAobmV3X3R5cGUpID0geHN0cmR1cCAoVFlQRV9OQU1FICh0eXBlKSk7CiAg ICBpZiAoVFlQRV9UQUdfTkFNRSAodHlwZSkpCi1AQCAtMzMyOCwxMiArMzQ5Myw0OCBAQCBjb3B5 X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCitAQCAtMzM1NCwxMiArMzUxOSw0 OCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCiAgICBUWVBFX0lO U1RBTkNFX0ZMQUdTIChuZXdfdHlwZSkgPSBUWVBFX0lOU1RBTkNFX0ZMQUdTICh0eXBlKTsKICAg IFRZUEVfTEVOR1RIIChuZXdfdHlwZSkgPSBUWVBFX0xFTkdUSCAodHlwZSk7CiAgCkBAIC00MTg3 LDcgKzQxMTksNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuYwog ICAgICAgIFRZUEVfRklFTERTIChuZXdfdHlwZSkgPSBYQ0FMTE9DIChuZmllbGRzLCBzdHJ1Y3Qg ZmllbGQpOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZmllbGRzOyBpKyspCiAgCXsKLUBAIC0z MzQyLDggKzM1NDMsOCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq CitAQCAtMzM2OCw4ICszNTY5LDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZp bGUgKm9iagogIAkgIFRZUEVfRklFTERfQklUU0laRSAobmV3X3R5cGUsIGkpID0gVFlQRV9GSUVM RF9CSVRTSVpFICh0eXBlLCBpKTsKICAJICBpZiAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSkK ICAJICAgIFRZUEVfRklFTERfVFlQRSAobmV3X3R5cGUsIGkpCkBAIC00MTk4LDcgKzQxMzAsNyBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuYwogIAkgIGlmIChUWVBF X0ZJRUxEX05BTUUgKHR5cGUsIGkpKQogIAkgICAgVFlQRV9GSUVMRF9OQU1FIChuZXdfdHlwZSwg aSkgPSAKICAJICAgICAgeHN0cmR1cCAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSk7Ci1AQCAt MzM3MCwyNCArMzU3MSwxODQgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUg Km9iagorQEAgLTMzOTYsMjQgKzM1OTcsMTg0IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVj dCBvYmpmaWxlICpvYmoKICAJfQogICAgICB9CiAgCkBAIC00MzkwLDcgKzQzMjIsNyBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuYwogICAgLyogTWF5YmUgY29weSB0 aGUgdHlwZV9zcGVjaWZpYyBiaXRzLgogIAogICAgICAgTk9URSBkcm93LzIwMDUtMTItMDk6IFdl IGRvIG5vdCBjb3B5IHRoZSBDKystc3BlY2lmaWMgYml0cyBsaWtlCi1AQCAtMzQwNCw2ICszNzY1 LDE3IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmoKK0BAIC0zNDMw LDYgKzM3OTEsMTcgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iagog ICAgcmV0dXJuIG5ld190eXBlOwogIH0KICAKQEAgLTQ0MDgsNyArNDM0MCw3IEBAIEluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9nZGJ0eXBlcy5jCiAgLyogTWFrZSBhIGNvcHkgb2YgdGhl IGdpdmVuIFRZUEUsIGV4Y2VwdCB0aGF0IHRoZSBwb2ludGVyICYgcmVmZXJlbmNlCiAgICAgdHlw ZXMgYXJlIG5vdCBwcmVzZXJ2ZWQuCiAgICAgCi1AQCAtMzQyNiw2ICszNzk4LDIwMSBAQCBjb3B5 X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTM0NTIsNiArMzgyNCwyMDEgQEAg Y29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKICAgIHJldHVybiBuZXdfdHlwZTsK ICB9CiAgCkBAIC00NjEwLDcgKzQ1NDIsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvZ2RidHlwZXMuYwogIAogIC8qIEhlbHBlciBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBhcmNo aXRlY3R1cmUtc3BlY2lmaWMgdHlwZXMuICAqLwogIAotQEAgLTM5NTUsNiArNDUyMiwxMyBAQCB2 b2lkCitAQCAtMzk4NCw2ICs0NTUxLDEzIEBAIHZvaWQKICBfaW5pdGlhbGl6ZV9nZGJ0eXBlcyAo dm9pZCkKICB7CiAgICBnZGJ0eXBlc19kYXRhID0gZ2RiYXJjaF9kYXRhX3JlZ2lzdGVyX3Bvc3Rf aW5pdCAoZ2RidHlwZXNfcG9zdF9pbml0KTsKQEAgLTQ2MjQsMTAgKzQ1NTYsMTAgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2dkYnR5cGVzLmMKICAgIG9iamZpbGVfdHlwZV9kYXRh ID0gcmVnaXN0ZXJfb2JqZmlsZV9kYXRhICgpOwogIAogICAgYWRkX3NldHNob3dfemludGVnZXJf Y21kICgib3ZlcmxvYWQiLCBub19jbGFzcywgJm92ZXJsb2FkX2RlYnVnLAotSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL2dkYnR5cGVzLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9nZGJ0eXBlcy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmln L2dkYi9nZGJ0eXBlcy5oCTIwMTEtMDMtMjggMjI6MjE6MDMuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuaAkyMDExLTA3LTAzIDEwOjMzOjExLjAw MDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZ2RidHlwZXMu aAkyMDExLTA3LTA1IDE1OjM2OjQxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2dkYnR5cGVzLmgJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAK IEBAIC0yMTUsNiArMjE1LDExIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCiAgCiAg I2RlZmluZSBUWVBFX1RBUkdFVF9TVFVCKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfdGFy Z2V0X3N0dWIpCkBAIC00NzY4LDcgKzQ3MDAsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvZ2RidHlwZXMuaAogIAogICAgICAgIC8qIEZsYWdzIGluZGljYXRpbmcgd2hldGhlciB0 aGUgdmFsdWVzIG9mIGxvdyBhbmQgaGlnaCBhcmUKICAgICAgICAgICB2YWxpZC4gIFdoZW4gdHJ1 ZSwgdGhlIHJlc3BlY3RpdmUgcmFuZ2UgdmFsdWUgaXMKLUBAIC05MjYsOSArMTAxOSw5IEBAIGV4 dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKK0BAIC05MjksOSArMTAyMiw5 IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAjZGVmaW5lIFRZ UEVfUE9JTlRFUl9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5wb2ludGVyX3R5cGUKICAjZGVm aW5lIFRZUEVfUkVGRVJFTkNFX1RZUEUodGhpc3R5cGUpICh0aGlzdHlwZSktPnJlZmVyZW5jZV90 eXBlCiAgI2RlZmluZSBUWVBFX0NIQUlOKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5jaGFpbgpAQCAt NDc4MSw3ICs0NzEzLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2dkYnR5cGVz LmgKICAgICBjYWxscyBjaGVja190eXBlZGVmLCBUWVBFX0xFTkdUSCAoVkFMVUVfVFlQRSAoWCkp IGlzIHNhZmUuICAqLwogICNkZWZpbmUgVFlQRV9MRU5HVEgodGhpc3R5cGUpICh0aGlzdHlwZSkt Pmxlbmd0aAogIC8qIE5vdGUgdGhhdCBUWVBFX0NPREUgY2FuIGJlIFRZUEVfQ09ERV9UWVBFREVG LCBzbyBpZiB5b3Ugd2FudCB0aGUgcmVhbAotQEAgLTkzNiwxMSArMTAyOSwxNiBAQCBleHRlcm4g dm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAtOTM5LDExICsxMDMyLDE2IEBA IGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAjZGVmaW5lIFRZUEVf Q09ERSh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5jb2RlCiAgI2RlZmluZSBU WVBFX05GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+bmZpZWxkcwog ICNkZWZpbmUgVFlQRV9GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+ Zmxkc19ibmRzLmZpZWxkcwpAQCAtNDgwMCw3ICs0NzMyLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL2dkYnR5cGVzLmgKICAjZGVmaW5lIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5F RChyYW5nZV90eXBlKSBcCiAgICAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5sb3dfdW5k ZWZpbmVkCiAgI2RlZmluZSBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEKHJhbmdlX3R5cGUpIFwK LUBAIC05NTcsNyArMTA1NSwxNCBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBl IChzdHJ1CitAQCAtOTYwLDcgKzEwNTgsMTQgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9h dXhfdHlwZSAoc3RydQogICAgIChUWVBFX0hJR0hfQk9VTkQoVFlQRV9JTkRFWF9UWVBFKChhcnJh eXR5cGUpKSkpCiAgCiAgI2RlZmluZSBUWVBFX0FSUkFZX0xPV0VSX0JPVU5EX1ZBTFVFKGFycmF5 dHlwZSkgXApAQCAtNDgxNiw3ICs0NzQ4LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL2dkYnR5cGVzLmgKICAKICAvKiBDKysgKi8KICAKLUBAIC0xMzc5LDYgKzE0ODQsMTggQEAg ZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAocworQEAgLTEzODUsNiArMTQ5 MCwxOCBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9hcnJheV90eXBlIChzCiAgCQkJCSAg ICAgICBzdHJ1Y3QgdHlwZSAqKTsKICBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9hcnJheV9y YW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7CiAgCkBAIC00ODM1LDcgKzQ3Njcs NyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuaAogIGV4dGVybiBz dHJ1Y3QgdHlwZSAqY3JlYXRlX3N0cmluZ190eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlw ZSAqLAogIAkJCQkJc3RydWN0IHR5cGUgKik7CiAgZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBf c3RyaW5nX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKLUBAIC0xNDI0LDYg KzE1NDEsMTAgQEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0cnVjdCB0eQorQEAg LTE0MzAsNiArMTU0NywxMCBAQCBleHRlcm4gaW50IGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0 IHR5CiAgCiAgZXh0ZXJuIGludCBpc191bmlxdWVfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0 cnVjdCB2YWx1ZSAqKTsKICAKQEAgLTQ4NDYsNyArNDc3OCw3IEBAIEluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9nZGJ0eXBlcy5oCiAgLyogT3ZlcmxvYWQgcmVzb2x1dGlvbiAqLwogIAog ICNkZWZpbmUgTEVOR1RIX01BVENIKGJ2KSAoKGJ2KS0+cmFua1swXSkKLUBAIC0xNDk2LDEwICsx NjE3LDEzIEBAIGV4dGVybiB2b2lkIG1haW50ZW5hbmNlX3ByaW50X3R5cGUgKGNoYXIKK0BAIC0x NTAyLDEwICsxNjIzLDEzIEBAIGV4dGVybiB2b2lkIG1haW50ZW5hbmNlX3ByaW50X3R5cGUgKGNo YXIKICAKICBleHRlcm4gaHRhYl90IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUpOwogIApAQCAtNDg2MiwxMCArNDc5NCwxMCBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuaAogKyNlbmRpZgogKwogICNlbmRpZiAvKiBHREJU WVBFU19IICovCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvaTM4Ni1saW51eC1uYXQu YworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2kzODYtbGludXgtbmF0LmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2kzODYtbGludXgtbmF0LmMJ MjAxMS0wMi0yNyAxNzoyNTozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi9pMzg2LWxpbnV4LW5hdC5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICsw MjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9pMzg2LWxpbnV4LW5hdC5jCTIw MTEtMDItMjcgMTc6MjU6MzcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvaTM4Ni1saW51eC1uYXQuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIw MAogQEAgLTY0OSwyMiArNjQ5LDEzIEBAIGkzODZfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0 ZXJzIChzdHIKICB9CiAgDApAQCAtNTA3MCwxMCArNTAwMiwxMCBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvaTM4Ni1saW51eC1uYXQuYwogIH0KICAMCiAgCi1JbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvaTM4Ni1uYXQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL2kzODYtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcv Z2RiL2kzODYtbmF0LmMJMjAxMS0wMi0yNiAyMzowNDo1MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9pMzg2LW5hdC5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAw MDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9pMzg2LW5hdC5j CTIwMTEtMDItMjYgMjM6MDQ6NTEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvaTM4Ni1uYXQuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAog QEAgLTI1LDYgKzI1LDcgQEAKICAjaW5jbHVkZSAiZ2RiY21kLmgiCiAgI2luY2x1ZGUgInRhcmdl dC5oIgpAQCAtNTQyNSwxMCArNTM1NywxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvaTM4Ni1uYXQuYwogIH0KICAKICB2b2lkCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvaTM4Ni1uYXQuaAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2kzODYtbmF0LmgK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2kzODYtbmF0LmgJ MjAxMS0wMS0wOSAwNDowODo1Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi9pMzg2LW5hdC5oCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCist LS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9pMzg2LW5hdC5oCTIwMTEtMDEtMDkgMDQ6 MDg6NTYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvaTM4Ni1u YXQuaAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTc4LDYgKzc4LDI4 IEBAIHN0cnVjdCBpMzg2X2RyX2xvd190eXBlIAogIAogIGV4dGVybiBzdHJ1Y3QgaTM4Nl9kcl9s b3dfdHlwZSBpMzg2X2RyX2xvdzsKQEAgLTU0NTgsMjkgKzUzOTAsMjkgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL2kzODYtbmF0LmgKICAvKiBVc2UgdGhpcyBmdW5jdGlvbiB0byBz ZXQgaTM4Nl9kcl9sb3cgZGVidWdfcmVnaXN0ZXJfbGVuZ3RoIGZpZWxkCiAgICAgcmF0aGVyIHRo YW4gc2V0dGluZyBpdCBkaXJlY3RseSB0byBjaGVjayB0aGF0IHRoZSBsZW5ndGggaXMgb25seQog ICAgIHNldCBvbmNlLiAgSXQgYWxzbyBlbmFibGVzIHRoZSAnbWFpbnQgc2V0L3Nob3cgc2hvdy1k ZWJ1Zy1yZWdzJyAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9pbmZydW4uYworSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2luZnJ1bi5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9pbmZydW4uYwkyMDExLTA2LTAzIDE3OjMyOjEzLjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2luZnJ1bi5jCTIwMTEt MDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtNTQsNiArNTQsOCBAQAotICNpbmNs dWRlICJpbmxpbmUtZnJhbWUuaCIKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2lu ZnJ1bi5jCTIwMTEtMDctMjIgMDE6NDY6MDkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAy MDAKK0BAIC01NSw2ICs1NSw4IEBACiAgI2luY2x1ZGUgImppdC5oIgogICNpbmNsdWRlICJ0cmFj ZXBvaW50LmgiCisgI2luY2x1ZGUgImNvbnRpbnVhdGlvbnMuaCIKICsjaW5jbHVkZSAic3RhcC1w cm9iZS5oIgogKyNpbmNsdWRlICJvYmpmaWxlcy5oIgogIAogIC8qIFByb3RvdHlwZXMgZm9yIGxv Y2FsIGZ1bmN0aW9ucyAqLwogIAotQEAgLTIyNDcsNyArMjI0OSw3IEBAIHN0YXRpYyB2b2lkIGlu c2VydF9zdGVwX3Jlc3VtZV9icmVha3BvaW4KLSAJCQkJCQkgIHN0cnVjdCBmcmFtZV9pZCk7Ci0g c3RhdGljIHZvaWQgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJh cmNoICosIENPUkVfQUREUik7CitAQCAtMjM0MSw3ICsyMzQzLDcgQEAgc3RhdGljIHZvaWQgaGFu ZGxlX3N0ZXBfaW50b19mdW5jdGlvbiAocworIHN0YXRpYyB2b2lkIGhhbmRsZV9zdGVwX2ludG9f ZnVuY3Rpb25fYmFja3dhcmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorIAkJCQkJCXN0cnVj dCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKTsKICBzdGF0aWMgdm9pZCBjaGVja19leGNl cHRpb25fcmVzdW1lIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKiwKIC0JCQkJICAg IHN0cnVjdCBmcmFtZV9pbmZvICosIHN0cnVjdCBzeW1ib2wgKik7CiArCQkJCSAgICBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqKTsKICAKICBzdGF0aWMgdm9pZCBzdG9wX3N0ZXBwaW5nIChzdHJ1Y3QgZXhl Y3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcyk7CiAgc3RhdGljIHZvaWQgcHJlcGFyZV90b193YWl0 IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcyk7Ci1AQCAtNDE2OSw5ICs0MTcx LDE3IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgorQEAgLTQyODUsOSArNDI4NywxNyBAQCBw cm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKICAKICAJaWYgKHdoYXQuaXNfbG9uZ2ptcCkKICAJICB7 CkBAIC01NTAxLDcgKzU0MzMsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvaW5m cnVuLmMKICAJICAgICAgewogIAkJaWYgKGRlYnVnX2luZnJ1bikKICAJCSAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLAotQEAgLTQxODksMTIgKzQxOTksNyBAQCBwcm9jZXNzX2V2ZW50 X3N0b3BfdGVzdDoKK0BAIC00MzA1LDEyICs0MzE1LDcgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rl c3Q6CiAgCSAgICBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoZ2RiYXJjaCwgam1w X2J1Zl9wYyk7CiAgCSAgfQogIAllbHNlCkBAIC01NTE1LDcgKzU0NDcsNyBAQCBJbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvaW5mcnVuLmMKICAJa2VlcF9nb2luZyAoZWNzKTsKICAJcmV0 dXJuOwogIAotQEAgLTUyNjgsMTUgKzUyNzMsNjUgQEAgaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVf YnJlYWtwb2ludCAoc3RydQorQEAgLTU0MjMsMTUgKzU0MjgsNjUgQEAgaW5zZXJ0X2V4Y2VwdGlv bl9yZXN1bWVfYnJlYWtwb2ludCAoc3RydQogICAgICB9CiAgfQogIApAQCAtNTU4Miw3ICs1NTE0 LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2luZnJ1bi5jCiAgCiAgICBUUllf Q0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0VSUk9SKQogICAgICB7Ci1AQCAtNjI1OCw3ICs2MzEzLDgg QEAgc3RhdGljIHN0cnVjdCBsdmFsX2Z1bmNzIHNpZ2luZm9fdmFsdWVfZgorQEAgLTY0MzQsNyAr NjQ4OSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbHZhbF9mdW5jcyBzaWdpbmZvX3YKICAgICBp ZiB0aGVyZSdzIG5vIG9iamVjdCBhdmFpbGFibGUuICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFs dWUgKgpAQCAtNTU5Miw3ICs1NTI0LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2Ri L2luZnJ1bi5jCiAgewogICAgaWYgKHRhcmdldF9oYXNfc3RhY2sKICAgICAgICAmJiAhcHRpZF9l cXVhbCAoaW5mZXJpb3JfcHRpZCwgbnVsbF9wdGlkKQotQEAgLTY4MjYsNiArNjg4MiwxNSBAQCBz aG93X3NjaGVkdWxlX211bHRpcGxlIChzdHJ1Y3QgdWlfZmlsZSAqCitAQCAtNjkyOSw2ICs2OTg1 LDE1IEBAIHNob3dfc2NoZWR1bGVfbXVsdGlwbGUgKHN0cnVjdCB1aV9maWxlICoKICAJCQkgICAg Im9mIGFsbCBwcm9jZXNzZXMgaXMgJXMuXG4iKSwgdmFsdWUpOwogIH0KICAKQEAgLTU2MDgsNyAr NTU0MCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9pbmZydW4uYwogIHZvaWQK ICBfaW5pdGlhbGl6ZV9pbmZydW4gKHZvaWQpCiAgewotQEAgLTcwOTgsNyArNzE2Myw3IEBAIFRl bGxzIGdkYiB3aGV0aGVyIHRvIGRldGFjaCB0aGUgY2hpbGQgb2YKK0BAIC03MjA0LDcgKzcyNjks NyBAQCBUZWxscyBnZGIgd2hldGhlciB0byBkZXRhY2ggdGhlIGNoaWxkIG9mCiAgICAgICB2YWx1 ZSB3aXRoIGEgdm9pZCB0eXBlZCB2YWx1ZSwgYW5kIHdoZW4gd2UgZ2V0IGhlcmUsIGdkYmFyY2gK ICAgICAgIGlzbid0IGluaXRpYWxpemVkIHlldC4gIEF0IHRoaXMgcG9pbnQsIHdlJ3JlIHF1aXRl IHN1cmUgdGhlcmUKICAgICAgIGlzbid0IGFub3RoZXIgY29udmVuaWVuY2UgdmFyaWFibGUgb2Yg dGhlIHNhbWUgbmFtZS4gICovCkBAIC01NjE3LDE5ICs1NTQ5LDE5IEBAIEluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi9pbmZydW4uYwogIAogICAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQg KCJvYnNlcnZlciIsIG5vX2NsYXNzLAogIAkJCSAgICZvYnNlcnZlcl9tb2RlXzEsIF8oIlwKLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9saW5lc3BlYy5jCitJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvbGluZXNwZWMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAx MTA3MDMub3JpZy9nZGIvbGluZXNwZWMuYwkyMDExLTA3LTAyIDIyOjEzOjA4LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2xpbmVzcGVjLmMJMjAxMS0wNy0wMyAx MDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2Ri L2xpbmVzcGVjLmMJMjAxMS0wNy0wNSAyMjozMDoxOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9saW5lc3BlYy5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAw MDAwICswMjAwCiBAQCAtNDMsNiArNDMsNyBAQAogICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCiAg I2luY2x1ZGUgPGN0eXBlLmg+CiAgI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKICsjaW5jbHVk ZSAic3RhcC1wcm9iZS5oIgogIAotIC8qIFdlIHNoYXJlIHRoaXMgb25lIHdpdGggc3ltdGFiLmMs IGJ1dCBpdCBpcyBub3QgZXhwb3J0ZWQgd2lkZWx5LiAgKi8KKyAvKiBQcm90b3R5cGVzIGZvciBs b2NhbCBmdW5jdGlvbnMuICAqLwogIAotQEAgLTc4Niw2ICs3ODcsNyBAQCBrZWVwX25hbWVfaW5m byAoY2hhciAqcCwgaW50IG9uX2JvdW5kYXJ5CitAQCAtNzgzLDYgKzc4NCw3IEBAIGtlZXBfbmFt ZV9pbmZvIChjaGFyICpwLCBpbnQgb25fYm91bmRhcnkKICAgICBQQyByZXR1cm5lZCBpcyAwLgog ICAgIEZJTEU6RlVOQ1RJT04gLS0gbGlrZXdpc2UsIGJ1dCBwcmVmZXIgZnVuY3Rpb25zIGluIHRo YXQgZmlsZS4KICAgICAqRVhQUiAtLSBsaW5lIGluIHdoaWNoIGFkZHJlc3MgRVhQUiBhcHBlYXJz LgpAQCAtNTYzNyw3ICs1NTY5LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2xp bmVzcGVjLmMKICAKICAgICBUaGlzIG1heSBhbGwgYmUgZm9sbG93ZWQgYnkgYW4gImlmIEVYUFIi LCB3aGljaCB3ZSBpZ25vcmUuCiAgCi1AQCAtODU0LDYgKzg1Niw5IEBAIGRlY29kZV9saW5lXzEg KGNoYXIgKiphcmdwdHIsIGludCBmdW5maXIKK0BAIC04NTEsNiArODUzLDkgQEAgZGVjb2RlX2xp bmVfMSAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcgogICAgaWYgKCoqYXJncHRyID09ICcqJykK ICAgICAgcmV0dXJuIGRlY29kZV9pbmRpcmVjdCAoYXJncHRyKTsKICAKQEAgLTU2NDcsMTAgKzU1 NzksMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2xpbmVzcGVjLmMKICAgIGlz X3F1b3RlZCA9IChzdHJjaHIgKGdldF9nZGJfY29tcGxldGVyX3F1b3RlX2NoYXJhY3RlcnMgKCks CiAgCQkgICAgICAgKiphcmdwdHIpICE9IE5VTEwpOwogIAotSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL2xpbmVzcGVjLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9saW5l c3BlYy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9saW5l c3BlYy5oCTIwMTEtMDctMDIgMjE6MzM6MDkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvbGluZXNwZWMuaAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCAr MDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvbGluZXNwZWMuaAkyMDExLTA0 LTA0IDE5OjQxOjA3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2xpbmVzcGVjLmgJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0zMCw2 ICszMCwxMCBAQCBzdHJ1Y3QgbGluZXNwZWNfcmVzdWx0CiAgICAgICBkaXNwbGF5IG1lY2hhbmlz bSB3b3VsZCBkbyB0aGUgd3JvbmcgdGhpbmcuICAqLwogICAgaW50IHNwZWNpYWxfZGlzcGxheTsK QEAgLTU2NjIsMTEgKzU1OTQsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2xp bmVzcGVjLmgKICAgIC8qIElmIG5vbi1OVUxMLCBhbiBhcnJheSBvZiBjYW5vbmljYWwgbmFtZXMg Zm9yIHJldHVybmVkCiAgICAgICBzeW10YWJfYW5kX2xpbmUgb2JqZWN0cy4gIFRoZSBhcnJheSBo YXMgYXMgbWFueSBlbGVtZW50cyBhcyB0aGUKICAgICAgIGBuZWx0cycgZmllbGQgaW4gdGhlIHN5 bXRhYnNfYW5kX2xpbmUgcmV0dXJuZWQgYnkgZGVjb2RlX2xpbmVfMS4KLUluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi9saW51eC1uYXQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL2xpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmln L2dkYi9saW51eC1uYXQuYwkyMDExLTA0LTI5IDE4OjAyOjEwLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMDctMDMgMTA6MzM6MTEu MDAwMDAwMDAwICswMjAwCi1AQCAtMTI3Miw2ICsxMjcyLDY0IEBAIGl0ZXJhdGVfb3Zlcl9sd3Bz IChwdGlkX3QgZmlsdGVyLAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvbGludXgt bmF0LmMJMjAxMS0wNy0yMiAwMTo0NjowOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9saW51eC1uYXQuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCAr MDIwMAorQEAgLTEyNDEsNiArMTI0MSw2NCBAQCBpdGVyYXRlX292ZXJfbHdwcyAocHRpZF90IGZp bHRlciwKICAgIHJldHVybiBOVUxMOwogIH0KICAKQEAgLTU3MzEsMTAgKzU2NjMsMTAgQEAgSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2xpbnV4LW5hdC5jCiAgLyogVXBkYXRlIG91ciBp bnRlcm5hbCBzdGF0ZSB3aGVuIGNoYW5naW5nIGZyb20gb25lIGNoZWNrcG9pbnQgdG8KICAgICBh bm90aGVyIGluZGljYXRlZCBieSBORVdfUFRJRC4gIFdlIGNhbiBvbmx5IHN3aXRjaCBzaW5nbGUt dGhyZWFkZWQKICAgICBhcHBsaWNhdGlvbnMsIHNvIHdlIG9ubHkgY3JlYXRlIG9uZSBuZXcgTFdQ LCBhbmQgdGhlIHByZXZpb3VzIGxpc3QKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9s aW51eC1uYXQuaAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xpbnV4LW5hdC5oCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9saW51eC1uYXQuaAky MDExLTAxLTA1IDIzOjIyOjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL2xpbnV4LW5hdC5oCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCist LS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9saW51eC1uYXQuaAkyMDExLTAxLTA1IDIz OjIyOjQ5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xpbnV4 LW5hdC5oCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMTQwLDYgKzE0 MCwxMSBAQCBzdHJ1Y3QgbHdwX2luZm8gKml0ZXJhdGVfb3Zlcl9sd3BzIChwdGlkCiAgCQkJCQkJ ICAgICB2b2lkICopLCAKICAJCQkJICAgIHZvaWQgKmRhdGEpOwpAQCAtNTc0NywxMSArNTY3OSwx MSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvbGludXgtbmF0LmgKICAvKiBDcmVh dGUgYSBwcm90b3R5cGUgZ2VuZXJpYyBHTlUvTGludXggdGFyZ2V0LiAgVGhlIGNsaWVudCBjYW4K ICAgICBvdmVycmlkZSBpdCB3aXRoIGxvY2FsIG1ldGhvZHMuICAqLwogIHN0cnVjdCB0YXJnZXRf b3BzICogbGludXhfdGFyZ2V0ICh2b2lkKTsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9tYWNob3JlYWQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL21hY2hvcmVhZC5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9tYWNob3JlYWQu YwkyMDExLTAzLTA3IDE3OjE3OjI5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL21hY2hvcmVhZC5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAw Ci1AQCAtODQ5LDYgKzg0OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBtYWNob19z eW1fZm4KKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL21hY2hvcmVhZC5jCTIwMTEt MDctMDEgMjA6MzY6NDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvbWFjaG9yZWFkLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKK0BAIC04 NDIsNiArODQyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIG1hY2hvX3N5bV9mbgog ICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBm cm9tIGEgZmlsZS4gICovCiAgICBOVUxMLAogICAgbWFjaG9fc3ltZmlsZV9yZWxvY2F0ZSwJLyog UmVsb2NhdGUgYSBkZWJ1ZyBzZWN0aW9uLiAgKi8KQEAgLTU3NTksMTAgKzU2OTEsMTAgQEAgSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL21hY2hvcmVhZC5jCiAgICAmcHN5bV9mdW5jdGlv bnMKICB9OwogIAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL21haW4uYworSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu OTAuMjAxMTA3MDMub3JpZy9nZGIvbWFpbi5jCTIwMTEtMDMtMDcgMTk6MzQ6MzEuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvbWFpbi5jCTIwMTEtMDctMDMgMTA6 MzM6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9t YWluLmMJMjAxMS0wNi0xMyAxMjo1NToyNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9tYWluLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAK IEBAIC0zOSw2ICszOSw3IEBACiAgCiAgI2luY2x1ZGUgImludGVycHMuaCIKQEAgLTU3NzEsNyAr NTcwMyw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9tYWluLmMKICAjaW5jbHVk ZSAic291cmNlLmgiCiAgI2luY2x1ZGUgImNsaS9jbGktY21kcy5oIgogICNpbmNsdWRlICJweXRo b24vcHl0aG9uLmgiCi1AQCAtMjYwLDYgKzI2MSw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRh dGEpCitAQCAtMjYyLDYgKzI2Myw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICBj aGFyICpjZGFyZyA9IE5VTEw7CiAgICBjaGFyICp0dHlhcmcgPSBOVUxMOwogIApAQCAtNTc4MCw3 ICs1NzEyLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL21haW4uYwogICAgLyog VGhlc2UgYXJlIHN0YXRpYyBzbyB0aGF0IHdlIGNhbiB0YWtlIHRoZWlyIGFkZHJlc3MgaW4gYW4K ICAgICAgIGluaXRpYWxpemVyLiAgKi8KICAgIHN0YXRpYyBpbnQgcHJpbnRfaGVscDsKLUBAIC00 NTEsMTAgKzQ1NCwxNCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorQEAgLTQ1MiwxMCAr NDU1LDE0IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICAgICAgeyJhcmdzIiwgbm9f YXJndW1lbnQsICZzZXRfYXJncywgMX0sCiAgICAgICAgeyJsIiwgcmVxdWlyZWRfYXJndW1lbnQs IDAsICdsJ30sCiAgICAgICAgeyJyZXR1cm4tY2hpbGQtcmVzdWx0Iiwgbm9fYXJndW1lbnQsICZy ZXR1cm5fY2hpbGRfcmVzdWx0LCAxfSwKQEAgLTU3OTYsNyArNTcyOCw3IEBAIEluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi9tYWluLmMKICAgICAgICB7CiAgCWludCBvcHRpb25faW5kZXg7 CiAgCi1AQCAtNDcyLDYgKzQ3OSw5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAt NDczLDYgKzQ4MCw5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgCSAgY2FzZSAwOgog IAkgICAgLyogTG9uZyBvcHRpb24gdGhhdCBqdXN0IHNldHMgYSBmbGFnLiAgKi8KICAJICAgIGJy ZWFrOwpAQCAtNTgwNiw3ICs1NzM4LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2Ri L21haW4uYwogIAkgIGNhc2UgT1BUX1NFOgogIAkgICAgc3ltYXJnID0gb3B0YXJnOwogIAkgICAg ZXhlY2FyZyA9IG9wdGFyZzsKLUBAIC02NjcsNyArNjc3LDMxIEBAIGNhcHR1cmVkX21haW4gKHZv aWQgKmRhdGEpCitAQCAtNjY4LDcgKzY3OCwzMSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRh KQogIAogICAgLyogTm93IHRoYXQgZ2RiX2luaXQgaGFzIGNyZWF0ZWQgdGhlIGluaXRpYWwgaW5m ZXJpb3IsIHdlJ3JlIGluCiAgICAgICBwb3NpdGlvbiB0byBzZXQgYXJncyBmb3IgdGhhdCBpbmZl cmlvci4gICovCkBAIC01ODM5LDcgKzU3NzEsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvbWFpbi5jCiAgICAgIHsKICAgICAgICAvKiBUaGUgcmVtYWluaW5nIG9wdGlvbnMgYXJl IHRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyBmb3IgdGhlCiAgCSBpbmZlcmlvci4gIFRoZSBmaXJz dCBvbmUgaXMgdGhlIHN5bS9leGVjIGZpbGUsIGFuZCB0aGUgcmVzdAotQEAgLTkxNiw3ICs5NTAs OCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorQEAgLTkxNyw3ICs5NTEsOCBAQCBjYXB0 dXJlZF9tYWluICh2b2lkICpkYXRhKQogIAogICAgLyogUmVhZCBpbiB0aGUgb2xkIGhpc3Rvcnkg YWZ0ZXIgYWxsIHRoZSBjb21tYW5kIGZpbGVzIGhhdmUgYmVlbgogICAgICAgcmVhZC4gICovCkBA IC01ODQ5LDcgKzU3ODEsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvbWFpbi5j CiAgCiAgICBpZiAoYmF0Y2hfZmxhZykKICAgICAgewotQEAgLTkyNywxMyArOTYyLDI1IEBAIGNh cHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtOTI4LDEzICs5NjMsMjUgQEAgY2FwdHVyZWRf bWFpbiAodm9pZCAqZGF0YSkKICAgIC8qIFNob3cgdGltZSBhbmQvb3Igc3BhY2UgdXNhZ2UuICAq LwogICAgZG9fY2xlYW51cHMgKHByZV9zdGF0X2NoYWluKTsKICAKQEAgLTU4ODEsNyArNTgxMyw3 IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9tYWluLmMKICAgICAgfQogICAgLyog Tm8gZXhpdCAtLSBleGl0IGlzIHRocm91Z2ggcXVpdF9jb21tYW5kLiAgKi8KICB9Ci1AQCAtOTY1 LDcgKzEwMTIsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCitA QCAtOTY2LDcgKzEwMTMsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9maWxlICpzdHJl YW0pCiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCiAgVGhpcyBpcyB0aGUgR05VIGRlYnVnZ2Vy LiAgVXNhZ2U6XG5cblwKICAgICAgZ2RiIFtvcHRpb25zXSBbZXhlY3V0YWJsZS1maWxlIFtjb3Jl LWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCkBAIC01ODk1LDcgKzU4MjcsNyBAQCBJbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvbWFpbi5jCiAgT3B0aW9uczpcblxuXAogICIpLCBzdHJlYW0p OwogICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotQEAgLTEwMDMsNyArMTA1NSwxMyBAQCBPcHRp b25zOlxuXG5cCitAQCAtMTAwNCw3ICsxMDU2LDEzIEBAIE9wdGlvbnM6XG5cblwKICAgIC0tbncJ CSAgICAgRG8gbm90IHVzZSBhIHdpbmRvdyBpbnRlcmZhY2UuXG5cCiAgICAtLW54ICAgICAgICAg ICAgICAgRG8gbm90IHJlYWQgIiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZpbHRlcmVkIChnZGJp bml0LCBzdHJlYW0pOwpAQCAtNTkxMCwxMCArNTg0MiwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvbWFpbi5jCiAgICAtLXF1aWV0ICAgICAgICAgICAgRG8gbm90IHByaW50IHZl cnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJlYWRub3cgICAgICAgICAgRnVsbHkg cmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXAogICIpLCBzdHJlYW0pOwotSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL21pL21pLWNtZC12YXIuYworSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL21pL21pLWNtZC12YXIuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvbWkvbWktY21kLXZhci5jCTIwMTEtMDEtMTIgMjI6MDk6 MzkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvbWkvbWktY21k LXZhci5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41 MC4yMDExMDcyMi5vcmlnL2dkYi9taS9taS1jbWQtdmFyLmMJMjAxMS0wNi0yNyAyMToyMTo1MS4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9taS9taS1jbWQtdmFy LmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC03MDcsNyArNzA3LDYg QEAgbWlfY21kX3Zhcl91cGRhdGUgKGNoYXIgKmNvbW1hbmQsIGNoYXIgKgogICAgICB9CiAgICBl bHNlCkBAIC01OTIyLDEwICs1ODU0LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9taS9taS1jbWQtdmFyLmMKICAgICAgICBzdHJ1Y3QgdmFyb2JqICp2YXIgPSB2YXJvYmpfZ2V0 X2hhbmRsZSAobmFtZSk7CiAgCiAgICAgICAgdmFyb2JqX3VwZGF0ZV9vbmUgKHZhciwgcHJpbnRf dmFsdWVzLCAxIC8qIGV4cGxpY2l0ICovKTsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9taXBzcmVhZC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWlwc3JlYWQuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvbWlwc3JlYWQuYwky MDExLTAzLTA3IDE3OjE3OjI5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL21pcHNyZWFkLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0t LSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL21pcHNyZWFkLmMJMjAxMS0wNC0xOSAyMDow NDowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9taXBzcmVh ZC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtNDAyLDYgKzQwMiw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBlY29mZl9zeW1fZm4KICAgIGRlZmF1bHRf c3ltZmlsZV9zZWdtZW50cywJLyogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUu ICAqLwogICAgTlVMTCwKQEAgLTU5MzQsMTEgKzU4NjYsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL21pcHNyZWFkLmMKICAgICZwc3ltX2Z1bmN0aW9ucwogIH07CiAgCi1JbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvb2JqZmlsZXMuYworSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL29iamZpbGVzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEw NzAzLm9yaWcvZ2RiL29iamZpbGVzLmMJMjAxMS0wNC0yNSAyMzoyNToxOC4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9vYmpmaWxlcy5jCTIwMTEtMDctMDMgMTA6 MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtODQ2LDYgKzg0NiwxMSBAQCBvYmpmaWxlX3JlbG9j YXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZpCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmln L2dkYi9vYmpmaWxlcy5jCTIwMTEtMDYtMTQgMTg6NDk6NDEuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvb2JqZmlsZXMuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAw MDAwMDAwMCArMDIwMAorQEAgLTg0Miw2ICs4NDIsMTEgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaQogIAkJCQlvYmpfc2VjdGlvbl9hZGRyIChzKSk7CiAgICAgIH0K ICAKQEAgLTU5NTAsMTAgKzU4ODIsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2Ri L29iamZpbGVzLmMKICAgIC8qIERhdGEgY2hhbmdlZC4gICovCiAgICByZXR1cm4gMTsKICB9Ci1J bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcC12YWxwcmludC5jCitJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvcC12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45 MC4yMDExMDcwMy5vcmlnL2dkYi9wLXZhbHByaW50LmMJMjAxMS0wMy0xNSAxNzowMDo1Ni4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9wLXZhbHByaW50LmMJMjAx MS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIy Lm9yaWcvZ2RiL3AtdmFscHJpbnQuYwkyMDExLTAzLTE1IDE3OjAwOjU2LjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3AtdmFscHJpbnQuYwkyMDExLTA3LTIyIDIw OjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTM5LDYgKzM5LDcgQEAKICAjaW5jbHVkZSAiY3At YWJpLmgiCiAgI2luY2x1ZGUgImNwLXN1cHBvcnQuaCIKQEAgLTYwMzAsMTEgKzU5NjIsMTEgQEAg SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3AtdmFscHJpbnQuYwogICAgcmV0dXJuICgw KTsKICB9CiAgDAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3BhcnNlLmMKK0luZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wYXJzZS5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi45MC4yMDExMDcwMy5vcmlnL2dkYi9wYXJzZS5jCTIwMTEtMDMtMjggMjI6MjE6MDMuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcGFyc2UuYwkyMDExLTA3LTAz IDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAotQEAgLTE1MDIsNiArMTUwMiw3IEBAIHBhcnNlcl9m cHJpbnRmIChGSUxFICp4LCBjb25zdCBjaGFyICp5LCAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIy Lm9yaWcvZ2RiL3BhcnNlLmMJMjAxMS0wNi0xNyAyMjoyNDoyMi4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wYXJzZS5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAw MDAwMDAwICswMjAwCitAQCAtMTUwMSw2ICsxNTAxLDcgQEAgcGFyc2VyX2ZwcmludGYgKEZJTEUg KngsIGNvbnN0IGNoYXIgKnksIAogIAogIGludAogIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLApAQCAtNjA0Miw3ICs1OTc0LDcgQEAgSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3BhcnNlLmMKICAJCQkgaW50ICgqb2JqZmlsZV9m dW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCQkJCQkgICAgICB2b2lkICpkYXRhKSwK ICAJCQkgdm9pZCAqZGF0YSkKLUBAIC0xNTQzLDcgKzE1NDQsNyBAQCBvcGVyYXRvcl9jaGVja19z dGFuZGFyZCAoc3RydWN0IGV4cHJlc3NpCitAQCAtMTU0Miw3ICsxNTQzLDcgQEAgb3BlcmF0b3Jf Y2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaQogIAkgICAgc3RydWN0IHR5cGUgKnR5cGUg PSBlbHRzW3BvcyArIDIgKyBhcmddLnR5cGU7CiAgCSAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7CiAgCkBAIC02MDUxLDcgKzU5ODMsNyBAQCBJbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcGFyc2UuYwogIAkgICAgICByZXR1cm4gMTsKICAJICB9 CiAgICAgICAgfQotQEAgLTE1NjEsNyArMTU2Miw4IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJk IChzdHJ1Y3QgZXhwcmVzc2kKK0BAIC0xNTYwLDcgKzE1NjEsOCBAQCBvcGVyYXRvcl9jaGVja19z dGFuZGFyZCAoc3RydWN0IGV4cHJlc3NpCiAgCiAgCS8qIENoZWNrIG9iamZpbGUgd2hlcmUgdGhl IHZhcmlhYmxlIGl0c2VsZiBpcyBwbGFjZWQuCiAgCSAgIFNZTUJPTF9PQkpfU0VDVElPTiAoc3lt Ym9sKSBtYXkgYmUgTlVMTC4gICovCkBAIC02MDYxLDcgKzU5OTMsNyBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvcGFyc2UuYwogIAkgIHJldHVybiAxOwogIAogIAkvKiBDaGVjayBv YmpmaWxlIHdoZXJlIGlzIHBsYWNlZCB0aGUgY29kZSB0b3VjaGluZyB0aGUgdmFyaWFibGUuICAq LwotQEAgLTE1NzQsMjQgKzE1NzYsMjcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVj dCBleHByZXNzaQorQEAgLTE1NzMsMjQgKzE1NzUsMjcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRh cmQgKHN0cnVjdCBleHByZXNzaQogIAogICAgLyogSW52b2tlIGNhbGxiYWNrcyBmb3IgVFlQRSBh bmQgT0JKRklMRSBpZiB0aGV5IHdlcmUgc2V0IGFzIG5vbi1OVUxMLiAgKi8KICAKQEAgLTYwOTcs NyArNjAyOSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9wYXJzZS5jCiAgCSAg ICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRh dGEpLAogIAkgICAgIHZvaWQgKmRhdGEpCiAgewotQEAgLTE2MDYsNyArMTYxMSw5IEBAIGV4cF9p dGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorQEAgLTE2MDUsNyArMTYxMCw5IEBAIGV4 cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAogIAogICAgICAgIHBvcyA9IGVuZHBv cyAtIG9wbGVuOwogICAgICAgIGlmIChleHAtPmxhbmd1YWdlX2RlZm4tPmxhX2V4cF9kZXNjLT5v cGVyYXRvcl9jaGVjayAoZXhwLCBwb3MsCkBAIC02MTA4LDcgKzYwNDAsNyBAQCBJbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvcGFyc2UuYwogIAlyZXR1cm4gMTsKICAKICAgICAgICBlbmRw b3MgPSBwb3M7Ci1AQCAtMTYzNyw4ICsxNjQ0LDI5IEBAIGV4cF91c2VzX29iamZpbGUgKHN0cnVj dCBleHByZXNzaW9uICpleHAKK0BAIC0xNjM2LDggKzE2NDMsMjkgQEAgZXhwX3VzZXNfb2JqZmls ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cAogIHsKICAgIGdkYl9hc3NlcnQgKG9iamZpbGUtPnNl cGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVMTCk7CiAgCkBAIC02MTM5LDEwICs2 MDcxLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9wYXJzZS5jCiAgCiAgdm9p ZAogIF9pbml0aWFsaXplX3BhcnNlICh2b2lkKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3BhcnNlci1kZWZzLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wYXJzZXIt ZGVmcy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9wYXJz ZXItZGVmcy5oCTIwMTEtMDEtMTAgMjE6Mzg6NDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvcGFyc2VyLWRlZnMuaAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAw MDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvcGFyc2VyLWRlZnMu aAkyMDExLTAxLTEwIDIxOjM4OjQ5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3BhcnNlci1kZWZzLmgJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAy MDAKIEBAIC0xOTQsNiArMTk0LDggQEAgZXh0ZXJuIHZvaWQgb3BlcmF0b3JfbGVuZ3RoX3N0YW5k YXJkIChjbwogIAkJCQkgICAgICBpbnQgKik7CiAgCkBAIC02MTcxLDEyICs2MTAzLDEyIEBAIElu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9wYXJzZXItZGVmcy5oCiArI2VuZGlmCiArCiAg I2VuZGlmIC8qIFBBUlNFUl9ERUZTX0ggKi8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9wcGMtbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wcGMtbGlu dXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL3Bw Yy1saW51eC1uYXQuYwkyMDExLTA0LTE4IDIzOjI5OjE4LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDExLTA3LTAzIDEwOjMzOjEx LjAwMDAwMDAwMCArMDIwMAotQEAgLTE2MzcsNiArMTYzNywxNCBAQCBib29rZV9yZW1vdmVfcG9p bnQgKHN0cnVjdCBwcGNfaHdfYnJlYWtwCi0gICBod19icmVha3NbaV0uaHdfYnJlYWsgPSBOVUxM OworLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTEt MDUtMDYgMjA6NDY6MzEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitA QCAtMTY0Nyw2ICsxNjQ3LDE0IEBAIHBwY19saW51eF9yYW5nZWRfYnJlYWtfbnVtX3JlZ2lzdGVy cyAoc3QKKyAJICAyIDogLTEpOwogIH0KICAKICtzdGF0aWMgdm9pZApAQCAtNjE4Nyw5ICs2MTE5 LDkgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3BwYy1saW51eC1uYXQuYwogKyAg Ym9va2VfaW5zZXJ0X3BvaW50IChwcCwgdGlkKTsKICt9CiArCi0gLyogUmV0dXJuIHRoZSBudW1i ZXIgb2YgcmVnaXN0ZXJzIG5lZWRlZCBmb3IgYSByYW5nZWQgYnJlYWtwb2ludC4gICovCisgLyog SW5zZXJ0IHRoZSBoYXJkd2FyZSBicmVha3BvaW50IGRlc2NyaWJlZCBieSBCUF9UR1QuICBSZXR1 cm5zIDAgZm9yCisgICAgc3VjY2VzcywgMSBpZiBoYXJkd2FyZSBicmVha3BvaW50cyBhcmUgbm90 IHN1cHBvcnRlZCBvciAtMSBmb3IgZmFpbHVyZS4gICovCiAgCi0gc3RhdGljIGludAogQEAgLTE2 NTQsOCArMTY2Miw2IEBAIHN0YXRpYyBpbnQKICBwcGNfbGludXhfaW5zZXJ0X2h3X2JyZWFrcG9p bnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogIAkJCQkgIHN0cnVjdCBicF90YXJnZXRfaW5m byAqYnBfdGd0KQpAQCAtNjIzNyw3ICs2MTY5LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL3BwYy1saW51eC1uYXQuYwogIAogICAgcmV0dXJuIDA7CiAgfQotQEAgLTE5NDYsNiAr MTk1NiwxNSBAQCBwcGNfbGludXhfY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uCitAQCAt MjAwNCw2ICsyMDE0LDE1IEBAIHBwY19saW51eF9jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRp b24KICAJICAmJiBjaGVja19jb25kaXRpb24gKGFkZHIsIGNvbmQsICZkYXRhX3ZhbHVlLCAmbGVu KSk7CiAgfQogIApAQCAtNjI1Myw3ICs2MTg1LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL3BwYy1saW51eC1uYXQuYwogIC8qIFNldCB1cCBQIHdpdGggdGhlIHBhcmFtZXRlcnMg bmVjZXNzYXJ5IHRvIHJlcXVlc3QgYSB3YXRjaHBvaW50IGNvdmVyaW5nCiAgICAgTEVOIGJ5dGVz IHN0YXJ0aW5nIGF0IEFERFIgYW5kIGlmIHBvc3NpYmxlIHdpdGggY29uZGl0aW9uIGV4cHJlc3Np b24gQ09ORAogICAgIGV2YWx1YXRlZCBieSBoYXJkd2FyZS4gIElOU0VSVCB0ZWxscyBpZiB3ZSBh cmUgY3JlYXRpbmcgYSByZXF1ZXN0IGZvcgotQEAgLTIwMDAsOCArMjAxOSw2IEBAIHN0YXRpYyBp bnQKK0BAIC0yMDU4LDggKzIwNzcsNiBAQCBzdGF0aWMgaW50CiAgcHBjX2xpbnV4X2luc2VydF93 YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAogIAkJCSAgICAgc3Ry dWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewpAQCAtNjI2Miw3ICs2MTk0LDcgQEAgSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL3BwYy1saW51eC1uYXQuYwogICAgaW50IHJldCA9IC0xOwog IAogICAgaWYgKGhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFjZSAoKSkKLUBAIC0yMDEwLDggKzIw MjcsNyBAQCBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhCitAQCAtMjA2 OCw4ICsyMDg1LDcgQEAgcHBjX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYQog IAogICAgICAgIGNyZWF0ZV93YXRjaHBvaW50X3JlcXVlc3QgKCZwLCBhZGRyLCBsZW4sIHJ3LCBj b25kLCAxKTsKICAKQEAgLTYyNzIsNyArNjIwNCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi9wcGMtbGludXgtbmF0LmMKICAKICAgICAgICByZXQgPSAwOwogICAgICB9Ci1AQCAt MjA1NCwxMiArMjA3MCw4IEBAIHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERS IGEKK0BAIC0yMTEyLDEyICsyMTI4LDggQEAgcHBjX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChD T1JFX0FERFIgYQogIAogICAgICAgIHNhdmVkX2RhYnJfdmFsdWUgPSBkYWJyX3ZhbHVlOwogIApA QCAtNjI4Niw3ICs2MjE4LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3BwYy1s aW51eC1uYXQuYwogICAgICB9CiAgCiAgICByZXR1cm4gcmV0OwotQEAgLTIwNjksOCArMjA4MSw2 IEBAIHN0YXRpYyBpbnQKK0BAIC0yMTI3LDggKzIxMzksNiBAQCBzdGF0aWMgaW50CiAgcHBjX2xp bnV4X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAog IAkJCSAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewpAQCAtNjI5NSw3ICs2MjI3LDcg QEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3BwYy1saW51eC1uYXQuYwogICAgaW50 IHJldCA9IC0xOwogIAogICAgaWYgKGhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFjZSAoKSkKLUBA IC0yMDc5LDIwICsyMDg5LDE2IEBAIHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9B RERSIGEKK0BAIC0yMTM3LDIwICsyMTQ3LDE2IEBAIHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2lu dCAoQ09SRV9BRERSIGEKICAKICAgICAgICBjcmVhdGVfd2F0Y2hwb2ludF9yZXF1ZXN0ICgmcCwg YWRkciwgbGVuLCBydywgY29uZCwgMCk7CiAgCkBAIC02MzE4LDEwICs2MjUwLDEwIEBAIEluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9wcGMtbGludXgtbmF0LmMKICAgICAgfQogIAogICAg cmV0dXJuIHJldDsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9wcmludGNtZC5jCitJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHJpbnRjbWQuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvcHJpbnRjbWQuYwkyMDExLTAzLTIyIDE1OjM5 OjQwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ByaW50Y21k LmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIw MTEwNzIyLm9yaWcvZ2RiL3ByaW50Y21kLmMJMjAxMS0wMy0yMiAxNTozOTo0MC4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wcmludGNtZC5jCTIwMTEtMDctMjIg MjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtOTc1LDYgKzk3NSwxMSBAQCBwcmludF9jb21t YW5kXzEgKGNoYXIgKmV4cCwgaW50IGluc3BlY3QsCiAgICBlbHNlCiAgICAgIHZhbCA9IGFjY2Vz c192YWx1ZV9oaXN0b3J5ICgwKTsKQEAgLTYzNjgsMTAgKzYzMDAsMTAgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL3ByaW50Y21kLmMKICsgIG9ic2VydmVyX2F0dGFjaF9tYXJrX3Vz ZWQgKHByaW50X3R5cGVzX21hcmtfdXNlZCk7CiArI2VuZGlmCiAgfQotSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkKK0luZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5CiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVy YXRvci5weQkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkJMjAxMS0wNy0y MiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMzMgQEAKICsjIEl0ZXJhdG9y IG92ZXIgZnJhbWVzLgogKwpAQCAtNjQwNiwxMCArNjMzOCwxMCBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weQogKyAgICAgICAg ICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICsgICAgICAgIHNlbGYuZnJhbWUgPSByZXN1bHQub2xk ZXIgKCkKICsgICAgICAgIHJldHVybiByZXN1bHQKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkKK0luZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkJMjAxMS0w Ny0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAw MDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMTEyIEBACiArIyBXcmFwcGVyIEFQSSBmb3IgZnJhbWVz LgogKwpAQCAtNjUyMywxMCArNjQ1NSwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVXcmFwcGVyLnB5CiArCiArICAgIGRlZiBfX2dldGF0dHJf XyAoc2VsZiwgbmFtZSk6CiArICAgICAgICByZXR1cm4gZ2V0YXR0ciAoc2VsZi5mcmFtZSwgbmFt ZSkKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJh Y2UucHkKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9iYWNr dHJhY2UucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dk Yi9iYWNrdHJhY2UucHkJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkJMjAxMS0w Ny0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNDIgQEAKICsjIEZpbHRl cmluZyBiYWNrdHJhY2UuCiArCkBAIC02NTcwLDEwICs2NTAyLDEwIEBAIEluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkKICsgICAgICAgIHJl dHVybiBpdGVyCiArICAgIHJldHVybiBmcmFtZV9maWx0ZXIgKGl0ZXIpCiArCi1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9hbGlhcy5weQorSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYWxpYXMu cHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9jb21t YW5kL2FsaWFzLnB5CTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9hbGlhcy5weQkyMDEx LTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSw1OSBAQAogKyMgQWxp YXMgY29tbWFuZC4KICsKQEAgLTY2MzQsMTAgKzY1NjYsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYWxpYXMucHkKICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJUaGlzIGNvbW1hbmQgaXMgYW4gYWxpYXMgZm9yICclcycuIiAl IHRhcmdldCkKICsKICtBbGlhc0NvbW1hbmQoKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5CitJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAK LSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2JhY2t0 cmFjZS5weQkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5CTIwMTEt MDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDEwNiBAQAogKyMgTmV3 IGJhY2t0cmFjZSBjb21tYW5kLgogKwpAQCAtNjc0NSwxMCArNjY3NywxMCBAQCBJbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkK ICsgICAgICAgICAgICBwYWlyWzFdLmRlc2NyaWJlIChzeXMuc3Rkb3V0LCBmdWxsKQogKwogK0Zp bHRlcmluZ0JhY2t0cmFjZSgpCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9u L2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5CitJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5CiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVf ZXJyb3JzLnB5CTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5 CTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDM3IEBACiAr IyBJZ25vcmUgZXJyb3JzIGluIHVzZXIgY29tbWFuZHMuCiArCkBAIC02Nzg3LDEwICs2NzE5LDEw IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5k L2lnbm9yZV9lcnJvcnMucHkKICsgICAgICAgICAgICBwYXNzCiArCiArSWdub3JlRXJyb3JzQ29t bWFuZCAoKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3B5dGhvbi9saWIvZ2RiL2Nv bW1hbmQvcGFob2xlLnB5CitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xp Yi9nZGIvY29tbWFuZC9wYWhvbGUucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQkyMDExLTA3LTAzIDEwOjMzOjExLjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2Ri L2NvbW1hbmQvcGFob2xlLnB5CTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBA QCAtMCwwICsxLDc1IEBACiArIyBwYWhvbGUgY29tbWFuZCBmb3IgZ2RiCiArCkBAIC02ODY3LDEw ICs2Nzk5LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dk Yi9jb21tYW5kL3BhaG9sZS5weQogKyAgICAgICAgc2VsZi5wYWhvbGUgKHR5cGUsIDAsICcnKQog KwogK1BhaG9sZSgpCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9n ZGIvY29tbWFuZC9yZXF1aXJlLnB5CitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0 aG9uL2xpYi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5CTIwMTEtMDctMDMgMTA6 MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9u L2xpYi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5CTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAw ICswMjAwCiBAQCAtMCwwICsxLDU3IEBACiArIyBEZW1hbmQtbG9hZGluZyBjb21tYW5kcy4KICsK QEAgLTY5MjksMTAgKzY4NjEsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3B5 dGhvbi9saWIvZ2RiL2NvbW1hbmQvcmVxdWlyZS5weQogK1JlcXVpcmVDb21tYW5kKCkKICtSZXF1 aXJlU3ViY29tbWFuZCgiY29tbWFuZCIpCiArUmVxdWlyZVN1YmNvbW1hbmQoImZ1bmN0aW9uIikK LUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3Vw dG8ucHkKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9jb21t YW5kL3VwdG8ucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGli L2dkYi9jb21tYW5kL3VwdG8ucHkJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3VwdG8u cHkJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMTI5IEBA CiArIyB1cHRvIGNvbW1hbmQuCiArCkBAIC03MDYzLDE2ICs2OTk1LDE2IEBAIEluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3VwdG8ucHkKICtVcHRv U291cmNlQ29tbWFuZCAoKQogK1VwdG9PYmplY3RDb21tYW5kICgpCiArVXB0b1doZXJlQ29tbWFu ZCAoKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0 aW9uL19faW5pdF9fLnB5CitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xp Yi9nZGIvZnVuY3Rpb24vX19pbml0X18ucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9fX2luaXRfXy5weQkyMDExLTA3LTAzIDEwOjMz OjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9s aWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5CTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAw ICswMjAwCiBAQCAtMCwwICsxIEBACiArCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv cHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5CitJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5CiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVy X2lzLnB5CTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5CTIwMTEt MDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDU4IEBACiArIyBDYWxs ZXItaXMgZnVuY3Rpb25zLgogKwpAQCAtNzEzMiwxMCArNzA2NCwxMCBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5CiAr CiArQ2FsbGVySXMoKQogK0NhbGxlck1hdGNoZXMoKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2luX3Njb3BlLnB5CitJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9p bl9zY29wZS5weQkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2luX3Njb3BlLnB5CTIw MTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDQ3IEBACiArIyBJ bi1zY29wZSBmdW5jdGlvbi4KICsKQEAgLTcxODQsMTAgKzcxMTYsMTAgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2luX3Njb3BlLnB5CiAr CXJldHVybiB3YW50ZWQgPT0gZm91bmQKICsKICtJblNjb3BlICgpCi1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvcHl0aG9uL3B5LXR5cGUuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3B5dGhvbi9weS10eXBlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEw NzAzLm9yaWcvZ2RiL3B5dGhvbi9weS10eXBlLmMJMjAxMS0wMS0yNiAyMTo1Mzo0NS4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vcHktdHlwZS5jCTIw MTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcy Mi5vcmlnL2dkYi9weXRob24vcHktdHlwZS5jCTIwMTEtMDYtMjQgMjE6NDc6MzcuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LXR5cGUuYwkyMDEx LTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTI5LDYgKzI5LDggQEAKICAjaW5j bHVkZSAibGFuZ3VhZ2UuaCIKICAjaW5jbHVkZSAidmVjLmgiCkBAIC03MzgyLDEwICs3MzE0LDEw IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vcHktdHlwZS5jCiAgfQog IAogIAwKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vcHktdmFsdWUuYwor SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9weXRob24vcHktdmFsdWUuYwky MDExLTAzLTE4IDE3OjA5OjU3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICsw MjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9weXRob24vcHktdmFsdWUuYwky MDExLTA2LTI3IDIxOjIxOjUxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICsw MjAwCiBAQCAtMjgsNiArMjgsNyBAQAogICNpbmNsdWRlICJpbmZjYWxsLmgiCiAgI2luY2x1ZGUg ImV4cHJlc3Npb24uaCIKQEAgLTczOTQsNyArNzMyNiw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi9weXRob24vcHktdmFsdWUuYwogIAogICNpZmRlZiBIQVZFX1BZVEhPTgogIAot QEAgLTEyMTAsNiArMTIxMSwxOSBAQCBnZGJweV9pc192YWx1ZV9vYmplY3QgKFB5T2JqZWN0ICpv YmopCitAQCAtMTIwOCw2ICsxMjA5LDE5IEBAIGdkYnB5X2lzX3ZhbHVlX29iamVjdCAoUHlPYmpl Y3QgKm9iaikKICAgIHJldHVybiBQeU9iamVjdF9UeXBlQ2hlY2sgKG9iaiwgJnZhbHVlX29iamVj dF90eXBlKTsKICB9CiAgCkBAIC03NDE0LDcgKzczNDYsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKICB2b2lkCiAgZ2RicHlfaW5pdGlhbGl6ZV92 YWx1ZXMgKHZvaWQpCiAgewotQEAgLTEyMjAsNiArMTIzNCwxMCBAQCBnZGJweV9pbml0aWFsaXpl X3ZhbHVlcyAodm9pZCkKK0BAIC0xMjE4LDYgKzEyMzIsMTAgQEAgZ2RicHlfaW5pdGlhbGl6ZV92 YWx1ZXMgKHZvaWQpCiAgICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUsICJWYWx1ZSIs IChQeU9iamVjdCAqKSAmdmFsdWVfb2JqZWN0X3R5cGUpOwogIAogICAgdmFsdWVzX2luX3B5dGhv biA9IE5VTEw7CkBAIC03NDI1LDExICs3MzU3LDExIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi9weXRob24vcHktdmFsdWUuYwogIH0KICAKICAMCi1JbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvcHl0aG9uL3B5dGhvbi5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvcHl0aG9uL3B5dGhvbi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5v cmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMS0wNy0wMiAyMTozMzoxMC4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMS0wNy0w MyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC00OSw4ICs0OSwxMSBAQCBzdGF0aWMgaW50 IGdkYnB5X3Nob3VsZF9wcmludF9zdGFjayA9IDE7CistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5v cmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMS0wNy0yMSAxMzowMzo0Ny4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMS0wNy0y MiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKK0BAIC00OSw5ICs0OSwxMiBAQCBzdGF0aWMgaW50 IGdkYnB5X3Nob3VsZF9wcmludF9zdGFjayA9IDA7CiAgI2luY2x1ZGUgImxpbmVzcGVjLmgiCiAg I2luY2x1ZGUgInNvdXJjZS5oIgogICNpbmNsdWRlICJ2ZXJzaW9uLmgiCkBAIC03NDM3LDExICs3 MzY5LDEyIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vcHl0aG9uLmMK ICsjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCiAgI2luY2x1ZGUgInRhcmdldC5oIgogICNpbmNsdWRl ICJnZGJ0aHJlYWQuaCIKKyAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKICsjaW5jbHVkZSAiZXZlbnQt dG9wLmgiCiAgCiAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXTsKICAKLUBAIC03Njks NiArNzcyLDUzIEBAIGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKQorQEAgLTg0OSw2ICs4NTIsNTMg QEAgZ2RicHlfcHJpbnRfc3RhY2sgKHZvaWQpCiAgCiAgLyogUmV0dXJuIHRoZSBjdXJyZW50IFBy b2dzcGFjZS4KICAgICBUaGVyZSBhbHdheXMgaXMgb25lLiAgKi8KQEAgLTc0OTUsNyArNzQyOCw3 IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vcHl0aG9uLmMKICAKICBz dGF0aWMgUHlPYmplY3QgKgogIGdkYnB5X2dldF9jdXJyZW50X3Byb2dzcGFjZSAoUHlPYmplY3Qg KnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQotQEAgLTExOTQsNiArMTI0NCw4IEBAIHN0YXRp YyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQorQEAgLTEzMzMsNiArMTM4Myw4IEBAIHN0YXRp YyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQogICAgICAiR2V0IGEgdmFsdWUgZnJvbSBoaXN0 b3J5IiB9LAogICAgeyAiZXhlY3V0ZSIsIChQeUNGdW5jdGlvbikgZXhlY3V0ZV9nZGJfY29tbWFu ZCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgIkV4ZWN1dGUgYSBnZGIgY29t bWFuZCIgfSwKQEAgLTc1MDQsMTAgKzc0MzcsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL3B5dGhvbi9weXRob24uYwogICAgeyAicGFyYW1ldGVyIiwgZ2RicHlfcGFyYW1ldGVy LCBNRVRIX1ZBUkFSR1MsCiAgICAgICJSZXR1cm4gYSBnZGIgcGFyYW1ldGVyJ3MgdmFsdWUiIH0s CiAgCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL3B5dGhvbi5oCitJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5dGhvbi5oCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMS0wMy0x NCAxNzowOTo1NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9w eXRob24vcHl0aG9uLmgJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBn ZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDExLTAzLTE0IDE3 OjA5OjU0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhv bi9weXRob24uaAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTMyLDYg KzMyLDggQEAgdm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAocwogIAogIHZv aWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZmlsZSk7 CkBAIC03NTE3LDEwICs3NDUwLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9w eXRob24vcHl0aG9uLmgKICBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCQkJICAgICAgaW50IGVtYmVkZGVk X29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCiAgCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwgaW50IHJlY3Vyc2UsCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvc29tcmVh ZC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc29tcmVhZC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9zb21yZWFkLmMJMjAxMS0wMy0wNyAx NzoxNzoyOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9zb21y ZWFkLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUw LjIwMTEwNzIyLm9yaWcvZ2RiL3NvbXJlYWQuYwkyMDExLTAzLTA3IDE3OjE3OjI5LjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3NvbXJlYWQuYwkyMDExLTA3LTIy IDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTQzOSw2ICs0MzksNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHN5bV9mbnMgc29tX3N5bV9mbnMgCiAgICBkZWZhdWx0X3N5bWZpbGVfc2VnbWVu dHMsCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KICAgIE5VTEws CkBAIC03NTI5LDEwICs3NDYyLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9z b21yZWFkLmMKICAgICZwc3ltX2Z1bmN0aW9ucwogIH07CiAgCi1JbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvc3RhY2suYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N0YWNr LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL3N0YWNrLmMJ MjAxMS0wMy0xOCAxOTo0ODo1Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi9zdGFjay5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCistLS0g Z2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9zdGFjay5jCTIwMTEtMDYtMjcgMjE6MjE6NTAu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhY2suYwkyMDEx LTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTM2Niw2ICszNjYsNyBAQCBwcmlu dF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBzCiAgCSAgICAgICAgewogICAgICAg ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5ndWFnZTsKQEAgLTc1 NTUsMTEgKzc0ODgsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3N0YWNrLmMK ICAJCSAgdWlfb3V0X2ZpZWxkX3N0cmVhbSAodWlvdXQsICJ2YWx1ZSIsIHN0Yik7CiAgCSAgICAg ICAgfQogIAkgICAgICBlbHNlCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvc3RhcC1w cm9iZS5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9iZS5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvc3RhcC1wcm9iZS5jCTIwMTEtMDctMDMgMTA6 MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDIwNDEgQEAKKysrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAg KzAyMDAKK0BAIC0wLDAgKzEsMjA0MiBAQAogKy8qIFN5c3RlbVRhcCBwcm9iZSBzdXBwb3J0IGZv ciBHREIuCiArCiArICAgQ29weXJpZ2h0IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgpAQCAtNzkxNyw5ICs3ODUwLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3N0YXAtcHJvYmUuYwogKyAgaW50IGk7CiArCiArICBmb3IgKGkgPSAwOyBpIDwgYS0+bl9h cmdzOyBpKyspCi0rICAgIHsKLSsgICAgICB4ZnJlZSAoYS0+YXJnW2ldLmFyZ19zdHIpOwotKyAg ICB9CisrICAgIHhmcmVlIChhLT5hcmdbaV0uYXJnX3N0cik7CiArCiArICB4ZnJlZSAoYS0+YXJn KTsKICsgIHhmcmVlIChhKTsKQEAgLTc5NjMsNiArNzg5NCw3IEBAIEluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9zdGFwLXByb2JlLmMKICsgICAgcmV0dXJuOwogKwogKyAgYXJnc19pbmZv ID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8pKTsKKysgIGFyZ3NfaW5m by0+bl9hcmdzID0gMDsKICsgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKHN0YXBfZnJlZV9hcmdz X2luZm8sIGFyZ3NfaW5mbyk7CiArICBhcmdzX2luZm8tPmFyZyA9IHhjYWxsb2MgKFNUQVBfTUFY X0FSR1MsIHNpemVvZiAoc3RydWN0IHN0YXBfcHJvYmVfYXJnKSk7CiArCkBAIC04MDU1LDYgKzc5 ODcsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvc3RhcC1wcm9iZS5jCiArCiAr CSAgICAgIGFyZ3NfaW5mby0+YXJnW2N1cnJlbnRfYXJnXS5hcmdfc3RyCiArCQk9IHNhdmVzdHJp bmcgKHN0YXJ0LCBjdXIgLSBzdGFydCk7CisrCSAgICAgICsrYXJnc19pbmZvLT5uX2FyZ3M7CiAr CSAgICAgIC8qIFN0YXJ0IGl0IG92ZXIgYWdhaW4uICAqLwogKwkgICAgICBjdXIgPSBza2lwX3Nw YWNlcyAoKGNoYXIgKikgY3VyKTsKICsJICAgICAgY3VycmVudF9zdGF0ZSA9IE5FV19BUkc7CkBA IC04MDc1LDcgKzgwMDgsNiBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvc3RhcC1w cm9iZS5jCiArCX0KICsgICAgfQogKwotKyAgYXJnc19pbmZvLT5uX2FyZ3MgPSBjdXJyZW50X2Fy ZyArIDE7CiArICBhcmdzX2luZm8tPmFyZyA9IHhyZWFsbG9jIChhcmdzX2luZm8tPmFyZywKICsJ CQkgICAgICBhcmdzX2luZm8tPm5fYXJncwogKwkJCSAgICAgICogc2l6ZW9mIChzdHJ1Y3Qgc3Rh cF9wcm9iZV9hcmcpKTsKQEAgLTkwODgsOCArOTAyMCw5IEBAIEluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi9zdGFwLXByb2JlLmMKICsgICAgcmV0dXJuOwogKwogKyAgZm9yIChpID0gMDsg aSA8IHBhcnNlZF9hcmdzLT5uX2FyZ3M7IGkrKykKLSsgICAgeGZyZWUgKHBhcnNlZF9hcmdzLT5h cmcpOworKyAgICB4ZnJlZSAocGFyc2VkX2FyZ3MtPmFyZ1tpXS5hcmdfc3RyKTsKICsKKysgIHhm cmVlIChwYXJzZWRfYXJncy0+YXJnKTsKICsgIHhmcmVlIChwYXJzZWRfYXJncyk7CiArfQogKwpA QCAtOTI5NSwxMyArOTIyOCwxNCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvc3Rh cC1wcm9iZS5jCiArCiArLyogU2VlIGRlZmluaXRpb24gaW4gc3RhcC1wcm9iZS5oLiAgKi8KICsK LStjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqCi0rZmluZF9wcm9iZV9pbl9vYmpmaWxlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCSAgICAgICBjb25zdCBjaGFyICpwcm92aWRlciwKLSsJ CSAgICAgICBjb25zdCBjaGFyICpuYW1lKQorK1ZFQyAoc3RhcF9wcm9iZV9wKSAqCisrZmluZF9w cm9iZXNfaW5fb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJY29uc3QgY2hh ciAqcHJvdmlkZXIsCisrCQkJY29uc3QgY2hhciAqbmFtZSkKICt7CiArICBjb25zdCBzdHJ1Y3Qg c3RhcF9wcm9iZSAqcHJvYmVzOwogKyAgaW50IGksIG51bV9wcm9iZXM7CisrICBWRUMgKHN0YXBf cHJvYmVfcCkgKnJlc3VsdCA9IE5VTEw7CiArCiArICBpZiAoISBvYmpmaWxlLT5zZiB8fCAhIG9i amZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zKQogKyAgICByZXR1cm4gTlVMTDsKQEAgLTkzMTUsMTAg KzkyNDksMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3N0YXAtcHJvYmUuYwog KyAgICAgIGlmIChzdHJjbXAgKHByb2Jlc1tpXS5uYW1lLCBuYW1lKSAhPSAwKQogKwljb250aW51 ZTsKICsKLSsgICAgICByZXR1cm4gJnByb2Jlc1tpXTsKKysgICAgICBWRUNfc2FmZV9wdXNoIChz dGFwX3Byb2JlX3AsIHJlc3VsdCwgJnByb2Jlc1tpXSk7CiArICAgIH0KICsKLSsgIHJldHVybiBO VUxMOworKyAgcmV0dXJuIHJlc3VsdDsKICt9CiArCiArLyogU2VlIGRlZmluaXRpb24gaW4gc3Rh cC1wcm9iZS5oLiAgKi8KQEAgLTk0MjEsNyArOTM1NSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi9zdGFwLXByb2JlLmMKICsJaWYgKGNhbm9uaWNhbCkKICsJICB7CiArCSAgICBj YW5vbmljYWwtPmNhbm9uaWNhbCA9IHhyZWFsbG9jIChjYW5vbmljYWwtPmNhbm9uaWNhbCwKLSsJ CQkJCSAgICAgcmVzdWx0Lm5lbHRzICogc2l6ZW9mIChjaGFyICoqKSk7CisrCQkJCQkgICAgIHJl c3VsdC5uZWx0cyAqIHNpemVvZiAoY2hhciAqKSk7CiArCSAgICBjYW5vbmljYWwtPmNhbm9uaWNh bFtyZXN1bHQubmVsdHMgLSAxXSA9IHhzdHJkdXAgKGZ1bGxfYXJnKTsKICsJICB9CiArICAgICAg fQpAQCAtOTYwMSwxMSArOTUzNSwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv c3RhcC1wcm9iZS5jCiArICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2Fy ZzkiLCAmcHJvYmVfZnVuY3MsCiArCQkJCSh2b2lkICopICh1aW50cHRyX3QpIDkpOwogK30KLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9zdGFwLXByb2JlLmgKK0luZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi9zdGFwLXByb2JlLmgJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAK LUBAIC0wLDAgKzEsMTA5IEBACisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9i ZS5oCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMCwwICsxLDExNCBA QAogKy8qIFN5c3RlbVRhcCBwcm9iZSBzdXBwb3J0IGZvciBHREIuCiArCiArICAgQ29weXJpZ2h0 IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtOTYyOCw2ICs5NTYy LDggQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3N0YXAtcHJvYmUuaAogKyNpZiAh ZGVmaW5lZCAoU1RBUF9QUk9CRV9IKQogKyNkZWZpbmUgU1RBUF9QUk9CRV9IIDEKICsKKysjaW5j bHVkZSAidmVjLmgiCisrCiArc3RydWN0IHN0YXBfYXJnc19pbmZvOwogK3N0cnVjdCBheHNfdmFs dWU7CiArc3RydWN0IGxpbmVzcGVjX3Jlc3VsdDsKQEAgLTk2NTksNiArOTU5NSw4IEBAIEluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9zdGFwLXByb2JlLmgKICsgIHN0cnVjdCBzdGFwX2Fy Z3NfaW5mbyAqcGFyc2VkX2FyZ3M7CiArfTsKICsKKyt0eXBlZGVmIGNvbnN0IHN0cnVjdCBzdGFw X3Byb2JlICpzdGFwX3Byb2JlX3A7CisrREVGX1ZFQ19QIChzdGFwX3Byb2JlX3ApOwogKwogKy8q IEEgaGVscGVyIGZvciBsaW5lc3BlYyB0aGF0IGRlY29kZXMgYSBzdGFwIHByb2JlIHNwZWNpZmlj YXRpb24uICBJdAogKyAgIHJldHVybnMgYSBzeW10YWJzX2FuZF9saW5lcyBvYmplY3QgYW5kIHVw ZGF0ZXMgKkFSR1BUUiBvciB0aHJvd3MgYW4KQEAgLTk2NjcsMTIgKzk2MDUsMTMgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3N0YXAtcHJvYmUuaAogK2V4dGVybiBzdHJ1Y3Qgc3lt dGFic19hbmRfbGluZXMgcGFyc2Vfc3RhcF9wcm9iZSAoY2hhciAqKmFyZ3B0ciwKICsJCQkJCQkg IHN0cnVjdCBsaW5lc3BlY19yZXN1bHQgKmNhbm9uKTsKICsKLSsvKiBTZWFyY2ggT0JKRklMRSBm b3IgYSBwcm9iZSB3aXRoIHRoZSBnaXZlbiBQUk9WSURFUiBhbmQgTkFNRS4gIElmIGEKLSsgICBw cm9iZSBpcyBmb3VuZCwgcmV0dXJuIGl0LiAgSWYgbm8gcHJvYmUgaXMgZm91bmQsIHJldHVybiBO VUxMLiAgKi8KKysvKiBTZWFyY2ggT0JKRklMRSBmb3IgYSBwcm9iZSB3aXRoIHRoZSBnaXZlbiBQ Uk9WSURFUiBhbmQgTkFNRS4KKysgICBSZXR1cm4gYSBWRUMgb2YgYWxsIHByb2JlcyB0aGF0IHdl cmUgZm91bmQuICBJZiBubyBtYXRjaGluZyBwcm9iZQorKyAgIGlzIGZvdW5kLCByZXR1cm4gTlVM TC4gIFRoZSBjYWxsZXIgbXVzdCBmcmVlIHRoZSBWRUMuICAqLwogKwotK2V4dGVybiBjb25zdCBz dHJ1Y3Qgc3RhcF9wcm9iZSAqZmluZF9wcm9iZV9pbl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKLSsJCQkJCQkgICAgICAgY29uc3QgY2hhciAqcHJvdmlkZXIsCi0rCQkJCQkJICAg ICAgIGNvbnN0IGNoYXIgKm5hbWUpOworK2V4dGVybiBWRUMgKHN0YXBfcHJvYmVfcCkgKmZpbmRf cHJvYmVzX2luX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCQkJCSAgIGNv bnN0IGNoYXIgKnByb3ZpZGVyLAorKwkJCQkJCSAgIGNvbnN0IGNoYXIgKm5hbWUpOwogKwogKy8q IEdpdmVuIGEgUEMsIGZpbmQgYW4gYXNzb2NpYXRlZCBTeXN0ZW1UYXAgcHJvYmUuICBJZiBhIHBy b2JlIGlzCiArICAgZm91bmQsIHNldCAqT0JKRklMRV9PVVQgdG8gdGhlIHByb2JlJ3Mgb2JqZmls ZSwgYW5kIHJldHVybiB0aGUKQEAgLTk3MTUsMTAgKzk2NTQsMTAgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL3N0YXAtcHJvYmUuaAogKwkJCQkJICAgICAgIGludCBuKTsKICsKICsj ZW5kaWYgLyogIWRlZmluZWQgKFNUQVBfUFJPQkVfSCkgKi8KLUluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi9zeW1maWxlLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zeW1m aWxlLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL3N5bWZp bGUuaAkyMDExLTA0LTI1IDIzOjI1OjE4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL3N5bWZpbGUuaAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIw MAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc3ltZmlsZS5oCTIwMTEtMDYtMTAg MjM6NDg6MDQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3lt ZmlsZS5oCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMzEsNiArMzEs MTEgQEAgc3RydWN0IG9iamZpbGU7CiAgc3RydWN0IG9ial9zZWN0aW9uOwogIHN0cnVjdCBvYnN0 YWNrOwpAQCAtOTczMSw4ICs5NjcwLDggQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2Ri L3N5bWZpbGUuaAogIAogIC8qIENvbXBhcmlzb24gZnVuY3Rpb24gZm9yIHN5bWJvbCBsb29rIHVw cy4gICovCiAgCi1AQCAtMjkwLDYgKzI5NSw1MiBAQCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0 aW9ucwotIAkJCQl2b2lkICpkYXRhKTsKK0BAIC0yOTQsNiArMjk5LDUyIEBAIHN0cnVjdCBxdWlj a19zeW1ib2xfZnVuY3Rpb25zCisgCQkJCXN5bWJvbF9maWxlbmFtZV9mdHlwZSAqZnVuLCB2b2lk ICpkYXRhKTsKICB9OwogIAogKy8qIFN0cnVjdHVyZSBvZiBmdW5jdGlvbnMgdXNlZCBmb3IgU3lz dGVtVGFwIHByb2JlIHN1cHBvcnQuICBJZiBvbmUgb2YKQEAgLTk3ODQsNyArOTcyMyw3IEBAIElu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9zeW1maWxlLmgKICAvKiBTdHJ1Y3R1cmUgdG8g a2VlcCB0cmFjayBvZiBzeW1ib2wgcmVhZGluZyBmdW5jdGlvbnMgZm9yIHZhcmlvdXMKICAgICBv YmplY3QgZmlsZSB0eXBlcy4gICovCiAgCi1AQCAtMzYwLDYgKzQxMSwxMCBAQCBzdHJ1Y3Qgc3lt X2ZucworQEAgLTM2NCw2ICs0MTUsMTAgQEAgc3RydWN0IHN5bV9mbnMKICAKICAgIGJmZF9ieXRl ICooKnN5bV9yZWxvY2F0ZSkgKHN0cnVjdCBvYmpmaWxlICosIGFzZWN0aW9uICpzZWN0cCwgYmZk X2J5dGUgKmJ1Zik7CiAgCkBAIC05Nzk1LDExICs5NzM0LDExIEBAIEluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9zeW1maWxlLmgKICAgIC8qIFRoZSAicXVpY2siIChha2EgcGFydGlhbCkg c3ltYm9sIGZ1bmN0aW9ucyBmb3IgdGhpcyBzeW1ib2wKICAgICAgIHJlYWRlci4gICovCiAgICBj b25zdCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0aW9ucyAqcWY7Ci1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvc3ltdGFiLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9z eW10YWIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvc3lt dGFiLmMJMjAxMS0wNy0wMiAyMjowMzo0My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9zeW10YWIuYwkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIw MAotQEAgLTc3MCw2ICs3NzAsNyBAQCBpbml0X3NhbCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSAq c2FsKQorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc3ltdGFiLmMJMjAxMS0wNy0y MSAxNzoxMzoyOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9z eW10YWIuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTc3Niw2ICs3 NzYsNyBAQCBpbml0X3NhbCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsKQogICAgc2FsLT5l bmQgPSAwOwogICAgc2FsLT5leHBsaWNpdF9wYyA9IDA7CiAgICBzYWwtPmV4cGxpY2l0X2xpbmUg PSAwOwpAQCAtOTgwNywxMSArOTc0NiwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvc3ltdGFiLmMKICB9CiAgDAogIAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3N5 bXRhYi5oCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3ltdGFiLmgKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL3N5bXRhYi5oCTIwMTEtMDUtMDYg MTc6MTM6MzcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvc3lt dGFiLmgJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMTE4LDYgKzEx MTgsMTAgQEAgc3RydWN0IHN5bXRhYl9hbmRfbGluZQorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIu b3JpZy9nZGIvc3ltdGFiLmgJMjAxMS0wNi0zMCAwMDoxOToyNC4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zeW10YWIuaAkyMDExLTA3LTIyIDIwOjA0OjIxLjAw MDAwMDAwMCArMDIwMAorQEAgLTExMTUsNiArMTExNSwxMCBAQCBzdHJ1Y3Qgc3ltdGFiX2FuZF9s aW5lCiAgICBDT1JFX0FERFIgZW5kOwogICAgaW50IGV4cGxpY2l0X3BjOwogICAgaW50IGV4cGxp Y2l0X2xpbmU7CkBAIC05ODIyLDEwICs5NzYxLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi9zeW10YWIuaAogIH07CiAgCiAgZXh0ZXJuIHZvaWQgaW5pdF9zYWwgKHN0cnVjdCBz eW10YWJfYW5kX2xpbmUgKnNhbCk7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVz dHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUworSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9v LlMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv eDg2XzY0LXZsYS1wb2ludGVyLWZvby5TCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82 NC12bGEtcG9pbnRlci1mb28uUwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAog QEAgLTAsMCArMSw0NTcgQEAKICsJLmZpbGUJIng4Nl82NC12bGEtcG9pbnRlci5jIgogKwkuc2Vj dGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cwpAQCAtMTAyODQsMTAgKzEwMjIzLDEwIEBA IEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS1wb2ludGVyLWZvby5TCiArCS5zdHJpbmcJIkdOVSBDIDQuMy4yIDIwMDgxMTA1IChSZWQg SGF0IDQuMy4yLTcpIgogKwkuaWRlbnQJIkdDQzogKEdOVSkgNC4zLjIgMjAwODExMDUgKFJlZCBI YXQgNC4zLjItNykiCiArCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZs YS1wb2ludGVyLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMJMjAxMS0wNy0wMyAx MDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4w MDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNDMgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBh cnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTAzMzIsMTAgKzEwMjcxLDEwIEBA IEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS1wb2ludGVyLmMKICt9CiArCiArI2VuZGlmCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAKK0luZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2lu dGVyLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIu YXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4 Nl82NC12bGEtcG9pbnRlci5leHAJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAK IEBAIC0wLDAgKzEsNjYgQEAKICsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogKwpAQCAtMTA0MDMsMTAgKzEwMzQyLDEwIEBAIEluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmV4cAog KwogK2dkYl90ZXN0ICJ3aGF0aXMgKmFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNl Y29uZDogd2hhdGlzICphcnJheSIKICtnZGJfdGVzdCAicHR5cGUgKmFycmF5IiAidHlwZSA9IGNo YXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgKmFycmF5IgotSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYtZm9vLlMK K0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS10eXBlZGVmLWZvby5TCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVz dHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUwkyMDExLTA3LTAzIDEwOjMz OjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYtZm9vLlMJMjAxMS0wNy0yMiAyMDowNDoyMS4w MDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNDU1IEBACiArCS5maWxlCSJ4ODZfNjQtdmxhLXR5 cGVkZWYuYyIKICsJLnNlY3Rpb24JLmRlYnVnX2FiYnJldiwiIixAcHJvZ2JpdHMKQEAgLTEwODYz LDEwICsxMDgwMiwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUwogKwkuc3RyaW5nCSJHTlUgQyA0LjMu MiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03KSIKICsJLmlkZW50CSJHQ0M6IChHTlUpIDQuMy4y IDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgogKwkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ss IiIsQHByb2diaXRzCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dk Yi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAt LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRl Zi5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jCTIwMTEt MDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDQzIEBACiArLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTEwOTEx LDEwICsxMDg1MCwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jCiArfQogKwogKyNlbmRpZgotSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVk ZWYuZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNo L3g4Nl82NC12bGEtdHlwZWRlZi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAkyMDExLTA3LTAzIDEw OjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwCTIwMTEtMDctMjIgMjA6MDQ6MjEu MDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDY0IEBACiArIyBDb3B5cmlnaHQgMjAwOSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTEwOTgwLDEwICsxMDkxOSwxMCBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12 bGEtdHlwZWRlZi5leHAKICtnZGJfdGVzdCAid2hhdGlzIGFycmF5IiAidHlwZSA9IGFycmF5X3Qi ICJzZWNvbmQ6IHdoYXRpcyBhcnJheSIKICsKICtnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBl ID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSBhcnJheSIKLUluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYworSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvYXJyYXlpZHguYwkyMDExLTAxLTAxIDE2OjMzOjQwLjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCTIwMTEt MDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5v cmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYwkyMDExLTAxLTAxIDE2OjMzOjQw LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9hcnJheWlkeC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBA QCAtMTcsNiArMTcsMTMgQEAKICAKICBpbnQgYXJyYXlbXSA9IHsxLCAyLCAzLCA0fTsKQEAgLTEw OTk4LDEwICsxMDkzNywxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKICBpbnQKICBtYWluICh2b2lkKQogIHsKLUluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCitJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4 LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAkyMDExLTAxLTAxIDE2OjMzOjQwLjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJh eWlkeC5leHAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4z LjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAJMjAx MS0wMS0wMSAxNjozMzo0MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCTIwMTEtMDctMjIgMjA6MDQ6MjEu MDAwMDAwMDAwICswMjAwCiBAQCAtNTcsNCArNTcsMTIgQEAgZ2RiX3Rlc3QgInByaW50IGFycmF5 IiBcCiAgICAgICAgICAgIlxce1xcXFswXFxcXSA9IDEsIFxcXFsxXFxcXSA9IDIsIFxcXFsyXFxc XSA9IDMsIFxcXFszXFxcXSA9IDRcXH0iIFwKICAgICAgICAgICAiUHJpbnQgYXJyYXkgd2l0aCBh cnJheS1pbmRleGVzIG9uIgpAQCAtMTEwMTYsMTAgKzEwOTU1LDEwIEBAIEluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCiArCXVuc3Vw cG9ydGVkICIkdGVzdCAobm8gR0NDKSIKICsgICAgfQogK30KLUluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAKK0luZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9k ZWZhdWx0LmV4cAkyMDExLTAyLTE1IDIyOjE3OjUyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9kZWZhdWx0LmV4cAkyMDExLTA3 LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2RlZmF1bHQuZXhwCTIwMTEtMDUtMjAgMTY6Mzc6MjAu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2RlZmF1bHQuZXhwCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBA QCAtNjA3LDYgKzYwNywxNyBAQCBnZGJfdGVzdF9saXN0X2V4YWN0ICJzaG93IGNvbnZlbmllbmNl IiAiCiAgCXskX3NkYXRhID0gdm9pZH0gXAogIAl7JF9zaWdpbmZvID0gdm9pZH0gXApAQCAtMTEw MzgsMTAgKzEwOTc3LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAKICAgICAgfQogIAogICN0ZXN0IHNob3cgZGlyZWN0b3Jp ZXMKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50 ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZh ci1maWVsZC1hZGRyZXNzLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFy LWZpZWxkLWFkZHJlc3MuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAg LTAsMCArMSwyMCBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCiArCkBAIC0xMTA2MywxMCArMTEwMDIsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVz cy5jCiArc3RydWN0IHsKICsgIGludCBmaWVsZDsKICt9IHN0YXRpY3N0cnVjdCA9IHsgMSB9Owot SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5h bC12YXItZmllbGQtYWRkcmVzcy5leHAKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZh ci1maWVsZC1hZGRyZXNzLmV4cAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12 YXItZmllbGQtYWRkcmVzcy5leHAJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAK IEBAIC0wLDAgKzEsMjYgQEAKICsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogKwpAQCAtMTEwOTQsMTAgKzExMDMzLDEwIEBAIEluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJl c3MuZXhwCiArCiArZ2RiX3Rlc3Qge3NldCAkdmFyc3RydWN0ID0gc3RhdGljc3RydWN0fQogK2dk Yl90ZXN0IHtwICR2YXJzdHJ1Y3QuZmllbGR9ICIgPSAxIgotSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmMKK0luZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUu YwkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmMJMjAxMS0wNy0yMiAyMDow NDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNjkgQEAKICsvKiBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTExNjgsMTAgKzExMTA3 LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv c3RhcC1wcm9iZS5jCiArICBtMSgpOwogKyAgbTIoKTsKICt9Ci1JbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuZXhwCitJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuZXhwCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAt cHJvYmUuZXhwCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuZXhwCTIwMTEt MDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDcyIEBACiArIyBDb3B5 cmlnaHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xMTI0 NSwxMCArMTExODQsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmV4cAogKyAgICByZXR1cm4gLTEKICt9CiArc3RhcF90ZXN0 ICItRFVTRV9QUk9CRVMiCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jCTIwMTEtMDctMDMg MTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAw MDAwICswMjAwCiBAQCAtMCwwICsxLDMwIEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9m IEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTExMjgwLDEwICsxMTIxOSwxMCBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxv dy5jCiArCiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAKK0luZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4cAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysr IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cu ZXhwCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAJMjAxMS0wNy0y MiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMTA5IEBACiArIyBDb3B5cmln aHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTExMzk0LDEwICsx MTMzMywxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3ZsYS1vdmVyZmxvdy5leHAKICtnZGJfdGVzdCAiYnQiICJpbiBcW14gXF0qYWJvcnQgXFwo LiogaW4gbWFpbiBcXCguKiIgIkJhY2t0cmFjZSBhZnRlciBhYm9ydCgpIgogKwogK3ZlcmJvc2Ug LWxvZyAia2JfZm91bmQgaW4gYnQgYWZ0ZXIgYWJvcnQoKSA9IFtleHByIFttZW1vcnlfdl9wYWdl c19nZXRdICogJHBhZ2VzaXplIC8gMTAyNF0iCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3ZsYS5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDU1 IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K ICsKQEAgLTExNDU0LDEwICsxMTM5MywxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5jCiArICBmb28gKDc4KTsKICsgIHJldHVybiAwOwog K30KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvdmxh LmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92 bGEuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAw MDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3ZsYS5leHAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDExLTA3LTIy IDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSw2MiBAQAogKyMgQ29weXJpZ2h0 IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xMTUyMSwxMCArMTE0 NjAsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS92bGEuZXhwCiArZ2RiX3Rlc3QgInAgdGVtcDEiICIgPSAnMScgPHJlcGVhdHMgNzggdGltZXM+ IiAic2Vjb25kOiBwcmludCB0ZW1wMSIKICtnZGJfdGVzdCAicCB0ZW1wMiIgIiA9ICcyJyA8cmVw ZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAyIgogK2dkYl90ZXN0ICJwIHRlbXAz IiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgInNlY29uZDogcHJpbnQgdGVtcDMiCi1JbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0b3ZlcnRocm93 LmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmV4 dG92ZXJ0aHJvdy5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmV4dG92ZXJ0aHJvdy5leHAJMjAxMS0wMS0wMSAxNjozMzo0 NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL25leHRvdmVydGhyb3cuZXhwCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICsw MjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25l eHRvdmVydGhyb3cuZXhwCTIwMTEtMDEtMDEgMTY6MzM6NDQuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0b3ZlcnRocm93LmV4 cAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTUzLDYgKzUzLDE3IEBA IGdkYl90ZXN0X211bHRpcGxlICJwcmludCBfVW53aW5kX0RlYnVnSG8KICAgICAgfQogIH0KQEAg LTExNTQzLDEwICsxMTQ4MiwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVz dHN1aXRlL2dkYi5jcC9uZXh0b3ZlcnRocm93LmV4cAogICAgICB1bnN1cHBvcnRlZCAibmV4dG92 ZXJ0aHJvdy5leHAgY291bGQgbm90IGZpbmQgX1Vud2luZF9EZWJ1Z0hvb2siCiAgICAgIHJldHVy biAtMQogIH0KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuUwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0 LlMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TCTIwMTEt MDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDI0NiBAQAogKy8qIFRo aXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC0xMTc5 NCwxMCArMTE3MzMsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LlMKICsJLnN0cmluZwkJImNoYXIiCiArLkx1 aW50X3N0cjoKICsJLnN0cmluZwkJInVuc2lnbmVkIGludCIKLUluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5leHAKK0lu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91 bmQtbG9jbGlzdC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3Vp dGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5leHAJMjAxMS0wNy0wMyAxMDozMzoxMS4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2Ri LmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5leHAJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAw MDAgKzAyMDAKIEBAIC0wLDAgKzEsNTQgQEAKICsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTE4NTMsMTAgKzExNzkyLDEwIEBAIEluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9j bGlzdC5leHAKICsKICsjIFRoZSByZWdpc3RlciBjb250YWlucyB1bnByZWRpY3RhYmxlIHZhbHVl IC0gdGhlIGFycmF5IHNpemUuCiArZ2RiX3Rlc3QgInB0eXBlIHJlZ19zdHJpbmciIHt0eXBlID0g Y2hhciBcWy0/WzAtOV0rXF19Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1 aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCTIw MTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmMJMjAxMS0wNy0yMiAyMDow NDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNDIgQEAKICsvKiBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTE5MDAsMTAgKzExODM5 LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzItc3RyaXBwZWQuYwogKyAgZnVuYzEgKDEsIDIpOwogKyAgcmV0dXJuIDA7CiArfQotSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJp cHBlZC5leHAKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItc3RyaXBwZWQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmV4cAkyMDExLTA3LTAzIDEwOjMzOjEx LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5leHAJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAg KzAyMDAKIEBAIC0wLDAgKzEsNzkgQEAKICsjIENvcHlyaWdodCAyMDA2IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTE5ODQsMTAgKzExOTIzLDEwIEBAIEluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhw CiArZ2RiX3Rlc3QgInN0ZXAiIFwKICsgICAgICAgICAiZnVuYy4qIFxcKC4qXFwpIGF0IC4qIiBc CiArICAgICAgICAgInN0ZXAiCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1 aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5TCitJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1t ZW1iZXItZGF0YS1sb2NhdGlvbi5TCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5TCTIw MTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlv bi5TCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDgzIEBA CiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsK QEAgLTEyMDcyLDEwICsxMjAxMSwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdAogKwogKwku Ynl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwogKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uZXhwCitJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1s b2NhdGlvbi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLmV4cAkyMDExLTA3LTAz IDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uZXhwCTIw MTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDM3IEBACiArIyBD b3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTEyMTE0 LDEwICsxMjA1MywxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdAogK2NsZWFuX3Jlc3RhcnQg JGJpbmZpbGUKICsKICtnZGJfdGVzdCAicHR5cGUgc3RydWN0IHNvbWVfc3RydWN0IiAidHlwZSA9 IHN0cnVjdCBzb21lX3N0cnVjdCB7XFtcclxuIFx0XF0qdm9pZCBmaWVsZDtcW1xyXG4gXHRcXSp9 IgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9k d2FyZi1zdHJpZGUuZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAkyMDExLTA3LTAz IDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCTIwMTEtMDctMjIgMjA6MDQ6MjEu MDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDQyIEBACiArIyBDb3B5cmlnaHQgMjAwOSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTEyMTQ4LDcgKzEyMDg3LDcgQEAgSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1z dHJpZGUuZXhwCiArc2V0IHRlc3RmaWxlIGR3YXJmLXN0cmlkZQogK3NldCBzcmNmaWxlICR7dGVz dGZpbGV9LmY5MAogKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhw ICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVnIGY3N31dIH0geworK2lmIHsgW3ByZXBhcmVf Zm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVn IGY5MH1dIH0gewogKyAgICByZXR1cm4gLTEKICt9CiArCkBAIC0xMjE2MSwxMCArMTIxMDAsMTAg QEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9k d2FyZi1zdHJpZGUuZXhwCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWhlcmUi ICIuKmJyZWFrLWhlcmUuKiIKICtnZGJfdGVzdCAicCBjNDBwdCgxKSIgIiA9ICcwLWhlbGxvLioi CiArZ2RiX3Rlc3QgInAgYzQwcHQoMikiICIgPSAnMS1oZWxsby4qIgotSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwCitJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJm LXN0cmlkZS5mOTAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmY5MAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9kd2FyZi1zdHJpZGUuZjkwCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBA QCAtMCwwICsxLDQwIEBACiArISBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KICshCkBAIC0xMjIwNiwxMCArMTIxNDUsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwCiArICBw cmludCAqLCBjNDBwdCAgISBicmVhay1oZXJlCiArCiArZW5kIHByb2dyYW0gcmVwcm8KLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1v dGhlci1mcmFtZS1zdHViLmY5MAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0dWIuZjkwCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysg Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3Ro ZXItZnJhbWUtc3R1Yi5mOTAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1v dGhlci1mcmFtZS1zdHViLmY5MAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAog QEAgLTAsMCArMSwyNCBAQAogKyEgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiArIQpAQCAtMTIyMzUsMTAgKzEyMTc0LDEwIEBAIEluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS1z dHViLmY5CiArICByZWFsIDo6IGR1bW15CiArICBkdW1teSA9IDEKICtlbmQgc3Vicm91dGluZSBi YXIKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v ZHluYW1pYy1vdGhlci1mcmFtZS5leHAKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5leHAKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhl ci1mcmFtZS5leHAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1m cmFtZS5leHAJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEs MzcgQEAKICsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgog KwpAQCAtMTIyNjMsOCArMTIyMDIsOCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZXhwCiArc2V0IGV4ZWN1 dGFibGUgJHt0ZXN0ZmlsZX0KICtzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhl Y3V0YWJsZX0KICsKLStpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Ny Y2ZpbGUyfSIgIiR7b2JqZmlsZTJ9IiBvYmplY3Qge2Y3N31dICE9ICIiCi0rICAgICB8fCBbZ2Ri X2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlMX0gJHtvYmpmaWxlMn0iICIk e2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzd9XSAhPSAiIiB9IHsKKytpZiB7IFtnZGJf Y29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGUyfSIgIiR7b2JqZmlsZTJ9IiBv YmplY3Qge2Y5MH1dICE9ICIiCisrICAgICB8fCBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNmaWxlMX0gJHtvYmpmaWxlMn0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtk ZWJ1ZyBmOTB9XSAhPSAiIiB9IHsKICsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtz cmNmaWxlMX0gb3IgJHtzcmNmaWxlMn0iCiArICAgIHJldHVybiAtMQogK30KQEAgLTEyMjc3LDEw ICsxMjIxNiwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZXhwCiArfQogKwogK2dkYl90ZXN0ICJidCIg e2ZvbyBcKHN0cmluZz0naGVsbG8nLip9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZjkwCitJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXIt ZnJhbWUuZjkwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZjkwCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZjkwCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAw MDAwICswMjAwCiBAQCAtMCwwICsxLDM2IEBACiArISBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KICshCkBAIC0xMjMxOCwxMCArMTIyNTcsMTAgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90 aGVyLWZyYW1lLmY5MAogKyAgZW5kIGludGVyZmFjZQogKyAgY2FsbCBmb28gKCdoZWxsbycpCiAr ZW5kCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2R5bmFtaWMuZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2R5bmFtaWMuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R5bmFtaWMuZXhwCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBA QCAtMCwwICsxLDE0NSBAQAogKyMgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiArCkBAIC0xMjM1MCw3ICsxMjI4OSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKICtzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5mOTAKICtzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVz dGZpbGV9CiArCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3Jj ZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XSAhPSAiIiB9 IHsKKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIg IiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY5MCBxdWlldH1dICE9ICIiIH0gewogKyAg ICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogKyAgICByZXR1cm4gLTEK ICt9CkBAIC0xMjQ2OCwxMCArMTI0MDcsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAogK2dkYl90ZXN0ICJwIHZhcnQo Myw4KSIgIlxcJFxbMC05XF0qID0gOSIKICsjIG1hcHMgdG8gZm9vOjp2YXJ5KDEsMykKICtnZGJf dGVzdCAicCB2YXJ0KDIsOSkiICJcXCRcWzAtOVxdKiA9IDEwIgotSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAorSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9k eW5hbWljLmY5MAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAkyMDEx LTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSw5OCBAQAogKyEgQ29w eXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIQpAQCAtMTI1NzEs MTAgKzEyNTEwLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vZHluYW1pYy5mOTAKICsgIGlmICh4ICgxLCAxKSAubmUuIDggLm9yLiB4ICgy LCAyKSAubmUuIDkgLm9yLiB4ICgxLCAyKSAubmUuIDQpIGNhbGwgYWJvcnQKICsgIGlmICh4ICgz LCAxKSAubmUuIDEwKSBjYWxsIGFib3J0CiArZW5kCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAKK0luZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysr IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhw CTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAJMjAxMS0wNy0yMiAyMDow NDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNTkgQEAKICsjIENvcHlyaWdodCAyMDA4 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTI2MDEsNyArMTI1NDAsNyBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0 cmluZy5leHAKICtzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKICtzZXQgYmluZmlsZSAke29i amRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CiArCi0raWYgIHsgW2dkYl9jb21waWxlICIke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1 ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY5MCBx dWlldH1dICE9ICIiIH0gewogKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2Zp bGV9IgogKyAgICByZXR1cm4gLTEKICt9CkBAIC0xMjYzNSwxMCArMTI1NzQsMTAgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhw CiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhci1maW5pc2giCiArZ2RiX3Rlc3QgInAg ZSIgIlxcJFxbMC05XF0qID0gJ2UgICAnIiAicCBlIHJlLXNldCIKICtnZGJfdGVzdCAicCBmIiAi XFwkXFswLTlcXSogPSBcXChcXCggJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAg ICcsICdmICAgJywgJ2YgICAnXFwpIFxcKCAnZjIgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcs ICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdm ICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCkiICJwICpmIHJlLXNldCIKLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5 MAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9z dHJpbmcuZjkwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3N0cmluZy5mOTAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5n LmY5MAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSwzNyBA QAogKyEgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIQpA QCAtMTI2NzcsMTAgKzEyNjE2LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAogKyAgaCA9ICdoJwogKyAgY2FsbCBmb28g KGcsIGgpCiArZW5kCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3N1YnJhbmdlLmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251 bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZXhwCTIwMTEtMDctMDMg MTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmV4cAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAw MDAwMCArMDIwMAogQEAgLTAsMCArMSw2MCBAQAogKyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xMjcwMSw3ICsxMjY0MCw3IEBAIEluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZXhw CiArCiArc2V0IHRlc3RmaWxlICJzdWJyYW5nZSIKICtzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5m OTAKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxl fSAke3NyY2ZpbGV9IHtkZWJ1ZyBmNzd9XSB9IHsKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5n ICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IHtkZWJ1ZyBmOTB9XSB9IHsK ICsgICAgcmV0dXJuIC0xCiArfQogKwpAQCAtMTI3NDIsMTAgKzEyNjgxLDEwIEBAIEluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZXhw CiArZGVsZXRlX2JyZWFrcG9pbnRzCiArZ2RiX3VubG9hZAogK2dkYl90ZXN0IHtwICRhICgzLCAy OjIpfSB7ID0gXCgyM1wpfQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZjkwCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmY5MAkyMDExLTA3 LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAJMjAxMS0wNy0yMiAyMDowNDoyMS4w MDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMjggQEAKICshIENvcHlyaWdodCAyMDExIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKyEKQEAgLTEyNzc1LDEwICsxMjcxNCwxMCBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJh bmdlLmY5MAogKyAgcHRyID0+IGEKICsgIHdyaXRlICgqLCopIGEgICAgICAgICAgICAgICAgICEg YnJlYWstc3RhdGljCiArZW5kCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1 aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45 MC4yMDExMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJMjAxMS0w Ny0wMyAxMDozMzowNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAw MDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZ2RiL3NlbGZ0ZXN0LmV4cAkyMDExLTA3LTIyIDIwOjA0OjEwLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4 cAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTkyLDYgKzkyLDEwIEBA IHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKICAJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBv dmVyIHR0eWFyZyBpbml0aWFsaXphdGlvbiIKICAJCXNldCBjb21tYW5kICJzdGVwIgpAQCAtMTI3 OTAsMTAgKzEyNzI5LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3Vp dGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKICAJICAgIC1yZSAiLipwcmVfc3RhdF9jaGFpbiA9IG1h a2VfY29tbWFuZF9zdGF0c19jbGVhbnVwLiokZ2RiX3Byb21wdCAkIiB7CiAgCQlzZXQgZGVzY3Jp cHRpb24gIm5leHQgb3ZlciBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cCBhbmQgZXZlcnl0aGlu ZyBpdCBjYWxscyIKICAJCXNldCBjb21tYW5kICJuZXh0IgotSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmMKK0luZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3RhbGUtdHlw ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5taS9t aTItdmFyLXN0YWxlLXR5cGUuYwkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFs ZS10eXBlLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEs MjYgQEAKICsvKiBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K ICsKQEAgLTEyODIxLDEwICsxMjc2MCwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuYwogKwogKyAgcmV0dXJuIDA7 CiArfQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWky LXZhci1zdGFsZS10eXBlLmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3Rz dWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmV4cAogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYv bnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmV4cAkyMDEx LTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmV4cAkyMDExLTA3LTIyIDIw OjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSw1NyBAQAogKyMgQ29weXJpZ2h0IDIw MTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIwpAQCAtMTI4ODMsMTAgKzEyODIy LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21p Mi12YXItc3RhbGUtdHlwZS5leHAKICttaV9jcmVhdGVfdmFyb2JqICJ2bGEiICJ2bGEiICJjcmVh dGUgbG9jYWwgdmFyaWFibGUgdmxhIgogKwogK21pX2dkYl90ZXN0ICItdmFyLXVwZGF0ZSAqIiAi XFxeZG9uZSxjaGFuZ2VsaXN0PS4qIiAiLXZhci11cGRhdGUgKiIKLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dhdGNocG9pbnQtbXVsdGkuYworSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2lu dC1tdWx0aS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dk Yi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dh dGNocG9pbnQtbXVsdGkuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAg LTAsMCArMSw1OSBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCiArCkBAIC0xMjk0NywxMCArMTI4ODYsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5jCiArICBt YXJrZXJfZXhpdDIgKCk7CiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmV4cAorSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1t dWx0aS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2Ri Lm11bHRpL3dhdGNocG9pbnQtbXVsdGkuZXhwCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93 YXRjaHBvaW50LW11bHRpLmV4cAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAog QEAgLTAsMCArMSwxMTMgQEAKICsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogKwpAQCAtMTMwNjUsMTAgKzEzMDA0LDEwIEBAIEluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dhdGNocG9pbnQtbXVsdGkuZXhwCiAr ICAgIH0KICt9CiArCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dk Yi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZy b20tcmVnaXN0ZXItZnVuYy5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1y ZWdpc3Rlci1mdW5jLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0w LDAgKzEsMjIgQEAKICsvKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdn ZXIuCiArCkBAIC0xMzA5MiwxMCArMTMwMzEsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jCiArewog KyAgcmV0dXJuIGFyclswXTsKICt9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVz dHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCitJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJv bS1yZWdpc3Rlci5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rl ci5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDI4IEBA CiArLyogVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAt MTMxMjUsMTAgKzEzMDY0LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0 c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmMKICsKICsgIHJldHVybiAwOwogK30K LUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1m cm9tLXJlZ2lzdGVyLmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5leHAJMjAx MS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAkyMDExLTA3LTIy IDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSwzMyBAQAogKyMgQ29weXJpZ2h0 IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIwpAQCAtMTMxNjMsMTAgKzEz MTAyLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLm9w dC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAogKyMgU2VlbiByZWdyZXNzaW9uOgogKyMgQWRkcmVz cyByZXF1ZXN0ZWQgZm9yIGlkZW50aWZpZXIgImFyciIgd2hpY2ggaXMgaW4gcmVnaXN0ZXIgJHJk aQogK2dkYl90ZXN0ICJwIGFyclxbMFxdIiAiXFwkXFswLTlcXSsgPSA0MiIKLUluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwCitJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLmV4 cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2Fs L2FycmF5cy5leHAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwCTIwMTEt MDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDEwNCBAQAogKyMgQ29w eXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIwpAQCAt MTMyNzIsMTAgKzEzMjExLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0 c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwCiArfQogK2dkYl90ZXN0ICJwcmludCBEeW5BcnJD aGFyIiAiLiogPSAnYWJjZGVmZ2hpamtsbSciICJQcmludCBkeW5hbWljIGFycmF5IG9mIGNoYXIi CiArCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwv YXJyYXlzLnBhcworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGFzY2FsL2FycmF5cy5wYXMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0 c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMucGFzCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwv YXJyYXlzLnBhcwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCAr MSw4MiBAQAogK3sKICsgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCkBAIC0xMzM1OSwxMCArMTMyOTgsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5wYXMKICsgIHMgOj0gJ3Rlc3Qn IzAnc3RyaW5nJzsKICsgIHdyaXRlbG4ocyk7IHsgc2V0IGJyZWFrcG9pbnQgMiBoZXJlIH0KICtl bmQuCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktZnJhbWUuZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktZnJhbWUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcw My5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAJMjAxMS0wMi0yNiAx NTowNjoyOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAw MDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LWZyYW1lLmV4cAkyMDExLTAyLTI2IDE1OjA2OjI4LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1l LmV4cAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTc4LDggKzc4LDYg QEAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBiZnJhbWUgPT0gZ2RiLm5ldwogIAogIGdkYl90ZXN0 ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgPT0gZjEiICIgPSBGYWxzZSIgInRlc3QgZXF1 YWxpdHkgY29tcGFyaXNvbiAoZmFsc2UpIgpAQCAtMTMzNzgsMTEgKzEzMzE3LDExIEBAIEluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5l eHAKICBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGdkYi5zZWxlY3RlZF9mcmFt ZSAoKSA9PSBmMSIgIiA9IFRydWUiICJ0ZXN0IGdkYi5zZWxlY3RlZF9mcmFtZSIKICsKICtnZGJf dGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLmJsb2NrICgpIiAiPGdkYi5CbG9jayBv YmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz4iICJ0ZXN0IEZyYW1lLmJsb2NrIgotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4 cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LXZhbHVlLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCTIwMTEtMDEtMDEgMTY6MzM6NDkuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktdmFsdWUuZXhwCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1A QCAtMzE4LDYgKzMxOCwxNSBAQCBwcm9jIHRlc3RfdmFsdWVfYWZ0ZXJfZGVhdGgge30geworLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFs dWUuZXhwCTIwMTEtMDQtMjQgMTE6MDQ6MzguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCTIwMTEtMDct MjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMzE5LDYgKzMxOSwxNSBAQCBwcm9jIHRl c3RfdmFsdWVfYWZ0ZXJfZGVhdGgge30gewogICAgICAicHJpbnQgdmFsdWUncyB0eXBlIgogIH0K ICAKQEAgLTEzMzk4LDcgKzEzMzM3LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAogICMgUmVncmVzc2lvbiB0ZXN0IGZv ciBpbnZhbGlkIHN1YnNjcmlwdCBvcGVyYXRpb25zLiAgVGhlIGJ1ZyB3YXMgdGhhdAogICMgdGhl IHR5cGUgb2YgdGhlIHZhbHVlIHdhcyBub3QgYmVpbmcgY2hlY2tlZCBiZWZvcmUgYWxsb3dpbmcg YQogICMgc3Vic2NyaXB0IG9wZXJhdGlvbiB0byBwcm9jZWVkLgotQEAgLTQ1NSw2ICs0NjQsNyBA QCB0ZXN0X3ZhbHVlX2luX2luZmVyaW9yCitAQCAtNDU2LDYgKzQ2NSw3IEBAIHRlc3RfdmFsdWVf aW5faW5mZXJpb3IKICB0ZXN0X2luZmVyaW9yX2Z1bmN0aW9uX2NhbGwKICB0ZXN0X2xhenlfc3Ry aW5ncwogIHRlc3RfdmFsdWVfYWZ0ZXJfZGVhdGgKQEAgLTEzNDA2LDEwICsxMzM0NSwxMCBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFs dWUuZXhwCiAgCiAgIyBUaGUgZm9sbG93aW5nIHRlc3QgcmVjb21waWxlcyB0aGUgYmluYXJ5IHRv IHRlc3QgZWl0aGVyIEMgb3IgQysrCiAgIyB2YWx1ZXMuIAotSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYwor SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRj aHBvaW50LWZvcmstY2hpbGQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYwkyMDExLTA3LTAzIDEw OjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYwkyMDExLTA3LTIyIDIwOjA0 OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSwxMjcgQEAKICsvKiBUZXN0IGNhc2UgZm9y IGZvcmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vzcy4K ICsKQEAgLTEzNTM4LDEwICsxMzQ3NywxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1jaGlsZC5jCiArICBpID0g c2lnYWN0aW9uIChTSUdVU1IxLCAmb2xkYWN0LCBOVUxMKTsKICsgIGFzc2VydCAoaSA9PSAwKTsK ICt9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L3dhdGNocG9pbnQtZm9yay1tdC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1tdC5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1t dC5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1tdC5jCTIw MTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDE3NCBAQAogKy8q IFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYg b2YgYSBwcm9jZXNzLgogKwpAQCAtMTM3MTcsMTAgKzEzNjU2LDEwIEBAIEluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLW10 LmMKICsgIG1hcmtfZXhpdCAoKTsKICsgIHJldHVybiAwOwogK30KLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLXBhcmVu dC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L3dhdGNocG9pbnQtZm9yay1wYXJlbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcw LTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstcGFyZW50LmMJMjAxMS0w Ny0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLXBhcmVudC5jCTIwMTEtMDct MjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDc0IEBACiArLyogVGVzdCBj YXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHBy b2Nlc3MuCiArCkBAIC0xMzc5NiwxMCArMTM3MzUsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstcGFyZW50LmMK ICsgICAgICBtYXJrZXIgKCk7CiArICAgIH0KICt9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1zdC5jCitJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQt Zm9yay1zdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1zdC5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL3dhdGNocG9pbnQtZm9yay1zdC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICsw MjAwCiBAQCAtMCwwICsxLDYxIEBACiArLyogVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0 Y2hwb2ludHMgYWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHByb2Nlc3MuCiArCkBAIC0xMzg2MiwxMCAr MTM4MDEsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy93YXRjaHBvaW50LWZvcmstc3QuYwogKyAgbWFya19leGl0ICgpOwogKyAgcmV0dXJu IDA7CiArfQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy93YXRjaHBvaW50LWZvcmsuZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3Jr LmV4cAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuZXhwCTIw MTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDE0OSBAQAogKyMg Q29weXJpZ2h0IDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CiArCkBAIC0xNDAxNiwxMCArMTM5NTUsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuZXhwCiArfSBlbHNlIHsK ICsgICAgdW50ZXN0ZWQgImNoaWxkIgogK30KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmgKK0luZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmgK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv d2F0Y2hwb2ludC1mb3JrLmgJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2lu dC1mb3JrLmgJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEs MzIgQEAKICsvKiBUZXN0IGNhc2UgZm9yIGZvcmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBm b3JrKCktb2ZmIG9mIGEgcHJvY2Vzcy4KICsKQEAgLTE0MDUzLDEwICsxMzk5MiwxMCBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9p bnQtZm9yay5oCiArCiArZXh0ZXJuIHZvaWQgbWFya2VyICh2b2lkKTsKICtleHRlcm4gdm9pZCBm b3Jrb2ZmIChpbnQgbnIpOwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0 ZS9nZGIudHJhY2Uvc3RhcC10cmFjZS5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi50cmFjZS9zdGFwLXRyYWNlLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251 bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuYwkyMDExLTA3LTAzIDEw OjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3Rz dWl0ZS9nZGIudHJhY2Uvc3RhcC10cmFjZS5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAw ICswMjAwCiBAQCAtMCwwICsxLDcxIEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTE0MTI5LDEwICsxNDA2OCwxMCBAQCBJbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50cmFjZS9zdGFwLXRyYWNlLmMK ICsKICsgIHJldHVybiAwOwogK30KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0 c3VpdGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdGVzdHN1aXRlL2dkYi50cmFjZS9zdGFwLXRyYWNlLmV4cAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudHJhY2Uvc3RhcC10cmFjZS5leHAJMjAx MS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuZXhwCTIwMTEtMDctMjIgMjA6MDQ6 MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDEyOSBAQAogKyMgQ29weXJpZ2h0IDIwMTEK ICsjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMTQyNjMsMTAgKzE0MjAyLDEw IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0 YXAtdHJhY2UuZXhwCiArCiArIyBGaW5pc2hlZCEKICtnZGJfdGVzdCAidGZpbmQgbm9uZSIgIi4q IiAiIgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4 cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2xp Yi9nZGIuZXhwCTIwMTEtMDMtMjUgMTQ6MDg6MTEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTEtMDctMDMgMTA6MzM6 MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90ZXN0 c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wNy0xNSAxNjoxMToyMi4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wNy0y MiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0xNDEsNiArMTQxLDExIEBAIHByb2MgZ2Ri X3VubG9hZCB7fSB7CiAgCSAgICBzZW5kX2dkYiAieVxuIgogIAkgICAgZXhwX2NvbnRpbnVlCkBA IC0xNDI3OSwxMCArMTQyMTgsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAogIAktcmUgIkRpc2NhcmQgc3ltYm9sIHRhYmxlIGZyb20gLip5 IG9yIG4uKiQiIHsKICAJICAgIHNlbmRfZ2RiICJ5XG4iCiAgCSAgICBleHBfY29udGludWUKLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKK0lu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIv cGFzY2FsLmV4cAkyMDExLTAxLTAxIDE2OjMzOjUyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAkyMDExLTA3LTAzIDEw OjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIv dGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhwCTIwMTEtMDEtMDEgMTY6MzM6NTIuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhw CTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMzcsNiArMzcsOSBAQCBw cm9jIHBhc2NhbF9pbml0IHt9IHsKICAgICAgZ2xvYmFsIHBhc2NhbF9jb21waWxlcl9pc19mcGMK ICAgICAgZ2xvYmFsIGdwY19jb21waWxlcgpAQCAtMTQzMTQsMTEgKzE0MjUzLDExIEBAIEluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKICAgICAg fQogICAgICBzZXQgcGFzY2FsX2luaXRfZG9uZSAxCiAgfSAgIAotSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL3RocmVhZC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGhy ZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL3RocmVh ZC5jCTIwMTEtMDQtMTkgMTc6MjQ6NDkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvdGhyZWFkLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAK LUBAIC0xNDM4LDcgKzE0MzgsOCBAQCB1cGRhdGVfdGhyZWFkX2xpc3QgKHZvaWQpCistLS0gZ2Ri LTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90aHJlYWQuYwkyMDExLTA1LTMwIDIwOjA0OjMyLjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3RocmVhZC5jCTIwMTEt MDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMTQ0MSw3ICsxNDQxLDggQEAgdXBk YXRlX3RocmVhZF9saXN0ICh2b2lkKQogICAgIG5vIHRocmVhZCBpcyBzZWxlY3RlZCwgb3Igbm8g dGhyZWFkcyBleGlzdC4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBAIC0xNDMyOCw3 ICsxNDI2Nyw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90aHJlYWQuYwogIHsK ICAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBmaW5kX3RocmVhZF9wdGlkIChpbmZlcmlvcl9w dGlkKTsKICAKLUBAIC0xNDQ5LDYgKzE0NTAsMTUgQEAgdGhyZWFkX2lkX21ha2VfdmFsdWUgKHN0 cnVjdCBnZGJhcmNoICpnZAorQEAgLTE0NTIsNiArMTQ1MywxNSBAQCB0aHJlYWRfaWRfbWFrZV92 YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkCiAgLyogQ29tbWFuZHMgd2l0aCBhIHByZWZpeCBvZiBg dGhyZWFkJy4gICovCiAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnRocmVhZF9jbWRfbGlzdCA9 IE5VTEw7CiAgCkBAIC0xNDM0NCwzMiArMTQyODMsMzIgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL3RocmVhZC5jCiAgdm9pZAogIF9pbml0aWFsaXplX3RocmVhZCAodm9pZCkKICB7 Ci1AQCAtMTQ5NCw1ICsxNTA0LDUgQEAgU2hvdyBwcmludGluZyBvZiB0aHJlYWQgZXZlbnRzIChz dWNoIGFzIAorQEAgLTE0OTcsNSArMTUwNyw1IEBAIFNob3cgcHJpbnRpbmcgb2YgdGhyZWFkIGV2 ZW50cyAoc3VjaCBhcyAKICAgICAgICAgICBzaG93X3ByaW50X3RocmVhZF9ldmVudHMsCiAgICAg ICAgICAgJnNldHByaW50bGlzdCwgJnNob3dwcmludGxpc3QpOwogIAogLSAgY3JlYXRlX2ludGVy bmFsdmFyX3R5cGVfbGF6eSAoIl90aHJlYWQiLCB0aHJlYWRfaWRfbWFrZV92YWx1ZSk7CiArICBj cmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3RocmVhZCIsICZ0aHJlYWRfZnVuY3MsIE5V TEwpOwogIH0KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90b3AuYworSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3RvcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4y MDExMDcwMy5vcmlnL2dkYi90b3AuYwkyMDExLTAzLTEyIDIzOjU5OjI0LjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3RvcC5jCTIwMTEtMDctMDMgMTA6MzM6MTEu MDAwMDAwMDAwICswMjAwCi1AQCAtMzQzLDYgKzM0Myw5IEBAIHZvaWQKLSBwcmVwYXJlX2V4ZWN1 dGVfY29tbWFuZCAodm9pZCkKLSB7Ci0gICBmcmVlX2FsbF92YWx1ZXMgKCk7CistLS0gZ2RiLTcu My41MC4yMDExMDcyMi5vcmlnL2dkYi90b3AuYwkyMDExLTA3LTIxIDEzOjAzOjQ1LjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3RvcC5jCTIwMTEtMDctMjIgMjA6 MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMzQ3LDYgKzM0Nyw5IEBAIHByZXBhcmVfZXhlY3V0 ZV9jb21tYW5kICh2b2lkKQorIAorICAgbWFyayA9IHZhbHVlX21hcmsgKCk7CisgICBjbGVhbnVw ID0gbWFrZV9jbGVhbnVwX3ZhbHVlX2ZyZWVfdG9fbWFyayAobWFyayk7CiArI2lmIDAKICsgIGZy ZWVfYWxsX3R5cGVzICgpOwogKyNlbmRpZgogIAogICAgLyogV2l0aCBtdWx0aXBsZSB0aHJlYWRz IHJ1bm5pbmcgd2hpbGUgdGhlIG9uZSB3ZSdyZSBleGFtaW5pbmcgaXMKICAgICAgIHN0b3BwZWQs IHRoZSBkY2FjaGUgY2FuIGdldCBzdGFsZSB3aXRob3V0IHVzIGJlaW5nIGFibGUgdG8gZGV0ZWN0 Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdHJhY2Vwb2ludC5jCitJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdHJhY2Vwb2ludC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi45MC4yMDExMDcwMy5vcmlnL2dkYi90cmFjZXBvaW50LmMJMjAxMS0wNy0wMiAyMTozMzoxMC4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90cmFjZXBvaW50LmMJ MjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNjAzLDYgKzE2MDMsOCBA QCBzdGFydF90cmFjaW5nICh2b2lkKQorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIv dHJhY2Vwb2ludC5jCTIwMTEtMDctMDcgMTU6MzI6NTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdHJhY2Vwb2ludC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAw MDAwMDAwICswMjAwCitAQCAtMTYwOSw2ICsxNjA5LDggQEAgc3RhcnRfdHJhY2luZyAodm9pZCkK ICAKICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoYnJlYWtwb2ludF9wLCB0cF92ZWMsIGl4 LCB0KTsgaXgrKykKICAgICAgewpAQCAtMTQzNzgsNyArMTQzMTcsNyBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvdHJhY2Vwb2ludC5jCiAgICAgICAgaWYgKCh0LT50eXBlID09IGJw X2Zhc3RfdHJhY2Vwb2ludAogIAkgICA/ICFtYXlfaW5zZXJ0X2Zhc3RfdHJhY2Vwb2ludHMKICAJ ICAgOiAhbWF5X2luc2VydF90cmFjZXBvaW50cykpCi1AQCAtMTYxMSw2ICsxNjEzLDkgQEAgc3Rh cnRfdHJhY2luZyAodm9pZCkKK0BAIC0xNjE3LDYgKzE2MTksOSBAQCBzdGFydF90cmFjaW5nICh2 b2lkKQogICAgICAgIHQtPm51bWJlcl9vbl90YXJnZXQgPSAwOwogICAgICAgIHRhcmdldF9kb3du bG9hZF90cmFjZXBvaW50ICh0KTsKICAgICAgICB0LT5udW1iZXJfb25fdGFyZ2V0ID0gdC0+bnVt YmVyOwpAQCAtMTQzODgsNyArMTQzMjcsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvdHJhY2Vwb2ludC5jCiAgICAgIH0KICAgIFZFQ19mcmVlIChicmVha3BvaW50X3AsIHRwX3Zl Yyk7CiAgCi1AQCAtMTY3Miw3ICsxNjc3LDI4IEBAIHRyYWNlX3N0b3BfY29tbWFuZCAoY2hhciAq YXJncywgaW50IGZyb20KK0BAIC0xNjc4LDcgKzE2ODMsMjggQEAgdHJhY2Vfc3RvcF9jb21tYW5k IChjaGFyICphcmdzLCBpbnQgZnJvbQogIHZvaWQKICBzdG9wX3RyYWNpbmcgKHZvaWQpCiAgewpA QCAtMTQ0MTcsNyArMTQzNTYsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdHJh Y2Vwb2ludC5jCiAgICAvKiBTaG91bGQgY2hhbmdlIGluIHJlc3BvbnNlIHRvIHJlcGx5PyAgKi8K ICAgIGN1cnJlbnRfdHJhY2Vfc3RhdHVzICgpLT5ydW5uaW5nID0gMDsKICB9Ci1AQCAtNDUxNSw3 ICs0NTQxLDggQEAgaW5mb19zdGF0aWNfdHJhY2Vwb2ludF9tYXJrZXJzX2NvbW1hbmQgKAorQEAg LTQ1MjEsNyArNDU0Nyw4IEBAIGluZm9fc3RhdGljX3RyYWNlcG9pbnRfbWFya2Vyc19jb21tYW5k ICgKICAgICBhdmFpbGFibGUuICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtMTQ0 MjcsNyArMTQzNjYsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdHJhY2Vwb2lu dC5jCiAgewogICAgTE9OR0VTVCBzaXplOwogICAgZ2RiX2J5dGUgKmJ1ZjsKLUBAIC00Njk0LDYg KzQ3MjEsMTUgQEAgdHJhY2VmcmFtZV9hdmFpbGFibGVfbWVtb3J5IChWRUMobWVtX3JhbgorQEAg LTQ3MDAsNiArNDcyNywxNSBAQCB0cmFjZWZyYW1lX2F2YWlsYWJsZV9tZW1vcnkgKFZFQyhtZW1f cmFuCiAgICByZXR1cm4gMDsKICB9CiAgCkBAIC0xNDQ0Myw3ICsxNDM4Miw3IEBAIEluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90cmFjZXBvaW50LmMKICAvKiBtb2R1bGUgaW5pdGlhbGl6 YXRpb24gKi8KICB2b2lkCiAgX2luaXRpYWxpemVfdHJhY2Vwb2ludCAodm9pZCkKLUBAIC00NzA0 LDcgKzQ3NDAsNyBAQCBfaW5pdGlhbGl6ZV90cmFjZXBvaW50ICh2b2lkKQorQEAgLTQ3MTAsNyAr NDc0Niw3IEBAIF9pbml0aWFsaXplX3RyYWNlcG9pbnQgKHZvaWQpCiAgICAgICB2YWx1ZSB3aXRo IGEgdm9pZCB0eXBlZCB2YWx1ZSwgYW5kIHdoZW4gd2UgZ2V0IGhlcmUsIGdkYmFyY2gKICAgICAg IGlzbid0IGluaXRpYWxpemVkIHlldC4gIEF0IHRoaXMgcG9pbnQsIHdlJ3JlIHF1aXRlIHN1cmUg dGhlcmUKICAgICAgIGlzbid0IGFub3RoZXIgY29udmVuaWVuY2UgdmFyaWFibGUgb2YgdGhlIHNh bWUgbmFtZS4gICovCkBAIC0xNDQ1MiwxMCArMTQzOTEsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL3RyYWNlcG9pbnQuYwogIAogICAgdHJhY2VmcmFtZV9udW1iZXIgPSAtMTsK ICAgIHRyYWNlcG9pbnRfbnVtYmVyID0gLTE7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvdHlwZXByaW50LmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90eXBlcHJpbnQu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvdHlwZXByaW50 LmMJMjAxMS0wMS0xMSAyMjo1MzoyNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi90eXBlcHJpbnQuYwkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIw MAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdHlwZXByaW50LmMJMjAxMS0wMS0x MSAyMjo1MzoyNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90 eXBlcHJpbnQuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTM2LDYg KzM2LDcgQEAKICAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgogICNpbmNsdWRlICJleGNlcHRpb25z LmgiCkBAIC0xNDUwOSwxMSArMTQ0NDgsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3R5cGVwcmludC5jCiAgfQogIAogIHN0YXRpYyB2b2lkCi1JbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvdXRpbHMuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3V0aWxz LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL3V0aWxzLmMJ MjAxMS0wNS0xNyAyMzoyNjoyOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi91dGlscy5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAt MjI0Myw2ICsyMjQzLDM2IEBAIHNldF9iYXRjaF9mbGFnX2FuZF9tYWtlX2NsZWFudXBfcmVzdG9y ZV8KKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3V0aWxzLmMJMjAxMS0wNy0yMiAw MTo0NjowOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi91dGls cy5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMTg3NCw2ICsxODc0 LDM2IEBAIHNldF9iYXRjaF9mbGFnX2FuZF9tYWtlX2NsZWFudXBfcmVzdG9yZV8KICAgIHJldHVy biBiYWNrX3RvOwogIH0KICAKQEAgLTE0NTUwLDEwICsxNDQ4OSwxMCBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvdXRpbHMuYwogIC8qIFNldCB0aGUgc2NyZWVuIHNpemUgYmFzZWQg b24gTElORVNfUEVSX1BBR0UgYW5kIENIQVJTX1BFUl9MSU5FLiAgKi8KICAKICBzdGF0aWMgdm9p ZAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbGFyaXRoLmMKK0luZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi92YWxhcml0aC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45 MC4yMDExMDcwMy5vcmlnL2dkYi92YWxhcml0aC5jCTIwMTEtMDItMTggMjA6MTA6NDYuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdmFsYXJpdGguYwkyMDExLTA3 LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3Jp Zy9nZGIvdmFsYXJpdGguYwkyMDExLTAyLTE4IDIwOjEwOjQ2LjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbGFyaXRoLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4w MDAwMDAwMDAgKzAyMDAKIEBAIC0xOTgsNyArMTk4LDEwIEBAIHZhbHVlX3N1YnNjcmlwdGVkX3J2 YWx1ZSAoc3RydWN0IHZhbHVlICoKICAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hlY2tf dHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKICAgIHN0cnVjdCB0eXBlICplbHRfdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKQEAgLTE0NTc3 LDEwICsxNDUxNiwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdmFsYXJpdGgu YwogICAgcmV0dXJuIGJpbm9wX3R5cGVzX3VzZXJfZGVmaW5lZF9wIChvcCwgdmFsdWVfdHlwZSAo YXJnMSksIHZhbHVlX3R5cGUgKGFyZzIpKTsKICB9CiAgCi1JbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvdmFsb3BzLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWxvcHMu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvdmFsb3BzLmMJ MjAxMS0wMy0yOSAxOTowNDozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi92YWxvcHMuYwkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdmFsb3BzLmMJMjAxMS0wNy0xNCAxNzowMDoy MC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWxvcHMuYwky MDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTQ3LDYgKzQ3LDcgQEAKICAj aW5jbHVkZSAib2JqZmlsZXMuaCIKICAjaW5jbHVkZSAic3ltdGFiLmgiCkBAIC0xNDcyMyw3ICsx NDY2Miw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi92YWxvcHMuYwogIH0KICAK ICAvKiBHaXZlbiBhIHZhbHVlIHdoaWNoIGlzIGEgZnVuY3Rpb24sIHJldHVybiBhIHZhbHVlIHdo aWNoIGlzIGEgcG9pbnRlcgotQEAgLTM2OTUsNiArMzc3OSw4IEBAIHZhbHVlX3NsaWNlIChzdHJ1 Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG8KK0BAIC0zNjc2LDYgKzM3NjAsOCBAQCB2YWx1ZV9zbGlj ZSAoc3RydWN0IHZhbHVlICphcnJheSwgaW50IGxvCiAgCQkJCQlUWVBFX1RBUkdFVF9UWVBFIChy YW5nZV90eXBlKSwKICAJCQkJCWxvd2JvdW5kLCAKICAJCQkJCWxvd2JvdW5kICsgbGVuZ3RoIC0g MSk7CkBAIC0xNDczMiwxOSArMTQ2NzEsMTkgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3ZhbG9wcy5jCiAgICBpZiAoVFlQRV9DT0RFIChhcnJheV90eXBlKSA9PSBUWVBFX0NPREVf QklUU1RSSU5HKQogICAgICB7CiAgICAgICAgaW50IGk7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbHBy aW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL3ZhbHBy aW50LmMJMjAxMS0wNC0yOSAyMToyMzowNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi92YWxwcmludC5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICsw MjAwCi1AQCAtMzYsNiArMzYsNyBAQAotICNpbmNsdWRlICJkZnAuaCIKLSAjaW5jbHVkZSAicHl0 aG9uL3B5dGhvbi5oIgotICNpbmNsdWRlICJhZGEtbGFuZy5oIgorLS0tIGdkYi03LjMuNTAuMjAx MTA3MjIub3JpZy9nZGIvdmFscHJpbnQuYwkyMDExLTA2LTI5IDE3OjMyOjM5LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbHByaW50LmMJMjAxMS0wNy0yMiAy MDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zOSw2ICszOSw3IEBACisgI2luY2x1ZGUgImdk Yl9vYnN0YWNrLmgiCisgI2luY2x1ZGUgImNoYXJzZXQuaCIKKyAjaW5jbHVkZSA8Y3R5cGUuaD4K ICsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCiAgCiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgCi1AQCAt MjM5LDcgKzI0MCw2IEBAIHNjYWxhcl90eXBlX3AgKHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTI0 Miw3ICsyNDMsNiBAQCBzY2FsYXJfdHlwZV9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkKICAgICAgY2Fz ZSBUWVBFX0NPREVfU1RSVUNUOgogICAgICBjYXNlIFRZUEVfQ09ERV9VTklPTjoKICAgICAgY2Fz ZSBUWVBFX0NPREVfU0VUOgpAQCAtMTQ3NTIsNyArMTQ2OTEsNyBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvdmFscHJpbnQuYwogICAgICBjYXNlIFRZUEVfQ09ERV9CSVRTVFJJTkc6 CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIGRlZmF1bHQ6Ci1AQCAtMTE5Myw2ICsxMTkzLDcgQEAg dmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdAorQEAgLTExOTYsNiArMTE5 Niw3IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnQKICB7CiAgICB1 bnNpZ25lZCBpbnQgdGhpbmdzX3ByaW50ZWQgPSAwOwogICAgdW5zaWduZWQgbGVuOwpAQCAtMTQ3 NjAsNyArMTQ2OTksNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdmFscHJpbnQu YwogICAgc3RydWN0IHR5cGUgKmVsdHR5cGUsICppbmRleF90eXBlOwogICAgdW5zaWduZWQgZWx0 bGVuOwogICAgLyogUG9zaXRpb24gb2YgdGhlIGFycmF5IGVsZW1lbnQgd2UgYXJlIGV4YW1pbmlu ZyB0byBzZWUKLUBAIC0xMjAxLDkgKzEyMDIsMzMgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRz IChzdHJ1Y3QgdHlwZSAqdAorQEAgLTEyMDQsOSArMTIwNSwzMyBAQCB2YWxfcHJpbnRfYXJyYXlf ZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0CiAgICAvKiBOdW1iZXIgb2YgcmVwZXRpdGlvbnMgd2Ug aGF2ZSBkZXRlY3RlZCBzbyBmYXIuICAqLwogICAgdW5zaWduZWQgaW50IHJlcHM7CiAgICBMT05H RVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKQEAgLTE0Nzk2LDcgKzE0NzM1LDcgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbHByaW50LmMKICAgIGluZGV4X3R5cGUgPSBUWVBF X0lOREVYX1RZUEUgKHR5cGUpOwogIAogICAgaWYgKGdldF9hcnJheV9ib3VuZHMgKHR5cGUsICZs b3dfYm91bmQsICZoaWdoX2JvdW5kKSkKLUBAIC0xMjkwLDYgKzEzMTUsOCBAQCB2YWxfcHJpbnRf YXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0CitAQCAtMTI5Myw2ICsxMzE4LDggQEAgdmFs X3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdAogICAgICB7CiAgICAgICAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7CiAgICAgIH0KQEAgLTE0ODA1LDEwICsxNDc0 NCwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdmFscHJpbnQuYwogIH0KICAK ICAvKiBSZWFkIExFTiBieXRlcyBvZiB0YXJnZXQgbWVtb3J5IGF0IGFkZHJlc3MgTUVNQUREUiwg cGxhY2luZyB0aGUKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi92YWx1ZS5jCitJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvdmFsdWUuYwkyMDExLTAyLTI3IDIxOjU3OjE1LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbHVlLmMJMjAxMS0wNy0w MyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcv Z2RiL3ZhbHVlLmMJMjAxMS0wNy0xNCAxNzowMDoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi92YWx1ZS5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAw ICswMjAwCiBAQCAtNDMsNiArNDMsNyBAQAogICNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCiAg I2luY2x1ZGUgPGN0eXBlLmg+CkBAIC0xNDgxNyw3ICsxNDc1Niw3IEBAIEluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi92YWx1ZS5jCiAgCiAgLyogUHJvdG90eXBlcyBmb3IgZXhwb3J0ZWQg ZnVuY3Rpb25zLiAgKi8KICAKLUBAIC0xMzM5LDEyICsxMzQwLDE1IEBAIHZvaWQKK0BAIC0xMzU0 LDEyICsxMzU1LDE1IEBAIHZvaWQKICBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1 Y3QgdmFsdWUgKmNvbXBvbmVudCwKICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKndob2xl KQogIHsKQEAgLTE0ODMyLDggKzE0NzcxLDggQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3ZhbHVlLmMKICsKICAgIGlmICh3aG9sZS0+bHZhbCA9PSBsdmFsX2NvbXB1dGVkKQogICAg ICB7Ci0gICAgICAgc3RydWN0IGx2YWxfZnVuY3MgKmZ1bmNzID0gd2hvbGUtPmxvY2F0aW9uLmNv bXB1dGVkLmZ1bmNzOwotQEAgLTEzNTIsNiArMTM1NiwxMiBAQCBzZXRfdmFsdWVfY29tcG9uZW50 X2xvY2F0aW9uIChzdHJ1Y3QgdmFsCisgICAgICAgY29uc3Qgc3RydWN0IGx2YWxfZnVuY3MgKmZ1 bmNzID0gd2hvbGUtPmxvY2F0aW9uLmNvbXB1dGVkLmZ1bmNzOworQEAgLTEzNjcsNiArMTM3MSwx MiBAQCBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFsCiAgICAgICAgaWYg KGZ1bmNzLT5jb3B5X2Nsb3N1cmUpCiAgICAgICAgICBjb21wb25lbnQtPmxvY2F0aW9uLmNvbXB1 dGVkLmNsb3N1cmUgPSBmdW5jcy0+Y29weV9jbG9zdXJlICh3aG9sZSk7CiAgICAgIH0KQEAgLTE0 ODQ2LDcgKzE0Nzg1LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbHVlLmMK ICB9CiAgCiAgDAotQEAgLTE0ODUsNiArMTQ5NSwzMSBAQCBzaG93X3ZhbHVlcyAoY2hhciAqbnVt X2V4cCwgaW50IGZyb21fdHR5CitAQCAtMTUwMCw2ICsxNTEwLDMxIEBAIHNob3dfdmFsdWVzIChj aGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkKICAgICAgICBudW1fZXhwWzFdID0gJ1wwJzsKICAg ICAgfQogIH0KQEAgLTE0ODc4LDcgKzE0ODE3LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL3ZhbHVlLmMKICAMCiAgLyogSW50ZXJuYWwgdmFyaWFibGVzLiAgVGhlc2UgYXJlIHZh cmlhYmxlcyB3aXRoaW4gdGhlIGRlYnVnZ2VyCiAgICAgdGhhdCBob2xkIHZhbHVlcyBhc3NpZ25l ZCBieSBkZWJ1Z2dlciBjb21tYW5kcy4KLUBAIC0xNTMwLDcgKzE1NjUsMTQgQEAgc3RydWN0IGlu dGVybmFsdmFyCitAQCAtMTU0NSw3ICsxNTgwLDE0IEBAIHN0cnVjdCBpbnRlcm5hbHZhcgogICAg ICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWU7CiAgCiAgICAgICAgLyogVGhlIGNhbGwtYmFjayByb3V0 aW5lIHVzZWQgd2l0aCBJTlRFUk5BTFZBUl9NQUtFX1ZBTFVFLiAgKi8KQEAgLTE0ODk0LDcgKzE0 ODMzLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbHVlLmMKICAKICAgICAg ICAvKiBUaGUgaW50ZXJuYWwgZnVuY3Rpb24gdXNlZCB3aXRoIElOVEVSTkFMVkFSX0ZVTkNUSU9O LiAgKi8KICAgICAgICBzdHJ1Y3QKLUBAIC0xNjI5LDE4ICsxNjcxLDM5IEBAIGNyZWF0ZV9pbnRl cm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSkKK0BAIC0xNjQ0LDE4ICsxNjg2LDM5IEBAIGNyZWF0 ZV9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSkKICAvKiBDcmVhdGUgYW4gaW50ZXJuYWwg dmFyaWFibGUgd2l0aCBuYW1lIE5BTUUgYW5kIHJlZ2lzdGVyIEZVTiBhcyB0aGUKICAgICBmdW5j dGlvbiB0aGF0IHZhbHVlX29mX2ludGVybmFsdmFyIHVzZXMgdG8gY3JlYXRlIGEgdmFsdWUgd2hl bmV2ZXIKICAgICB0aGlzIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQuICBOQU1FIHNob3VsZCBub3Qg bm9ybWFsbHkgaW5jbHVkZSBhCkBAIC0xNDkzNyw3ICsxNDg3Niw3IEBAIEluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi92YWx1ZS5jCiAgLyogTG9vayB1cCBhbiBpbnRlcm5hbCB2YXJpYWJs ZSB3aXRoIG5hbWUgTkFNRS4gIE5BTUUgc2hvdWxkIG5vdAogICAgIG5vcm1hbGx5IGluY2x1ZGUg YSBkb2xsYXIgc2lnbi4KICAKLUBAIC0xNzEzLDcgKzE3NzYsOCBAQCB2YWx1ZV9vZl9pbnRlcm5h bHZhciAoc3RydWN0IGdkYmFyY2ggKmdkCitAQCAtMTcyOCw3ICsxNzkxLDggQEAgdmFsdWVfb2Zf aW50ZXJuYWx2YXIgKHN0cnVjdCBnZGJhcmNoICpnZAogICAgICAgIGJyZWFrOwogIAogICAgICBj YXNlIElOVEVSTkFMVkFSX01BS0VfVkFMVUU6CkBAIC0xNDk0Nyw3ICsxNDg4Niw3IEBAIEluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi92YWx1ZS5jCiAgICAgICAgYnJlYWs7CiAgCiAgICAg IGRlZmF1bHQ6Ci1AQCAtMTkwOSw2ICsxOTczLDExIEBAIGNsZWFyX2ludGVybmFsdmFyIChzdHJ1 Y3QgaW50ZXJuYWx2YXIgKnYKK0BAIC0xOTI0LDYgKzE5ODgsMTEgQEAgY2xlYXJfaW50ZXJuYWx2 YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdgogICAgICAgIHhmcmVlICh2YXItPnUuc3RyaW5nKTsK ICAgICAgICBicmVhazsKICAKQEAgLTE0OTU5LDcgKzE0ODk4LDcgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL3ZhbHVlLmMKICAgICAgZGVmYXVsdDoKICAgICAgICBicmVhazsKICAg ICAgfQotQEAgLTE5NjMsNiArMjAzMiwzOCBAQCBjYWxsX2ludGVybmFsX2Z1bmN0aW9uIChzdHJ1 Y3QgZ2RiYXJjaCAqCitAQCAtMTk3OCw2ICsyMDQ3LDM4IEBAIGNhbGxfaW50ZXJuYWxfZnVuY3Rp b24gKHN0cnVjdCBnZGJhcmNoICoKICAgIHJldHVybiAoKmlmbi0+aGFuZGxlcikgKGdkYmFyY2gs IGxhbmd1YWdlLCBpZm4tPmNvb2tpZSwgYXJnYywgYXJndik7CiAgfQogIApAQCAtMTQ5OTgsNyAr MTQ5MzcsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdmFsdWUuYwogIC8qIFRo ZSAnZnVuY3Rpb24nIGNvbW1hbmQuICBUaGlzIGRvZXMgbm90aGluZyAtLSBpdCBpcyBqdXN0IGEK ICAgICBwbGFjZWhvbGRlciB0byBsZXQgImhlbHAgZnVuY3Rpb24gTkFNRSIgd29yay4gIFRoaXMg aXMgYWxzbyB1c2VkIGFzCiAgICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdWItY29tbWFu ZCB0aGF0IGlzIGNyZWF0ZWQgd2hlbgotQEAgLTIwMTAsMTEgKzIxMTEsMTAgQEAgcHJlc2VydmVf b25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLAorQEAgLTIwMjUsMTEgKzIxMjYsMTAgQEAg cHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLAogIAkJICAgIGh0YWJfdCBj b3BpZWRfdHlwZXMpCiAgewogICAgaWYgKFRZUEVfT0JKRklMRSAodmFsdWUtPnR5cGUpID09IG9i amZpbGUpCkBAIC0xNTAxMiw3ICsxNDk1MSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi92YWx1ZS5jCiAgCQkJCQkJIGNvcGllZF90eXBlcyk7CiAgfQogIAotQEAgLTIwMjksNyAr MjEyOSw3IEBAIHByZXNlcnZlX29uZV9pbnRlcm5hbHZhciAoc3RydWN0IGludGVybmEKK0BAIC0y MDQ0LDcgKzIxNDQsNyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5h CiAgICAgIGNhc2UgSU5URVJOQUxWQVJfSU5URUdFUjoKICAgICAgICBpZiAodmFyLT51LmludGVn ZXIudHlwZSAmJiBUWVBFX09CSkZJTEUgKHZhci0+dS5pbnRlZ2VyLnR5cGUpID09IG9iamZpbGUp CiAgCXZhci0+dS5pbnRlZ2VyLnR5cGUKQEAgLTE1MDIxLDcgKzE0OTYwLDcgQEAgSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbHVlLmMKICAgICAgICBicmVhazsKICAKICAgICAgY2Fz ZSBJTlRFUk5BTFZBUl9WQUxVRToKLUBAIC0yMDgwLDE0ICsyMTgwLDIyIEBAIHNob3dfY29udmVu aWVuY2UgKGNoYXIgKmlnbm9yZSwgaW50IGZyb20KK0BAIC0yMDk1LDE0ICsyMTk1LDIyIEBAIHNo b3dfY29udmVuaWVuY2UgKGNoYXIgKmlnbm9yZSwgaW50IGZyb20KICAgIGdldF91c2VyX3ByaW50 X29wdGlvbnMgKCZvcHRzKTsKICAgIGZvciAodmFyID0gaW50ZXJuYWx2YXJzOyB2YXI7IHZhciA9 IHZhci0+bmV4dCkKICAgICAgewpAQCAtMTUwNDcsNyArMTQ5ODYsNyBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvdmFsdWUuYwogICAgICB9CiAgICBpZiAoIXZhcnNlZW4pCiAgICAg IHByaW50Zl91bmZpbHRlcmVkIChfKCJObyBkZWJ1Z2dlciBjb252ZW5pZW5jZSB2YXJpYWJsZXMg bm93IGRlZmluZWQuXG4iCi1AQCAtMzA0Nyw3ICszMTU1LDI0IEBAIHZhbHVlX2Zyb21faGlzdG9y eV9yZWYgKGNoYXIgKmgsIGNoYXIgKioKK0BAIC0zMDc1LDcgKzMxODMsMjQgQEAgdmFsdWVfZnJv bV9oaXN0b3J5X3JlZiAoY2hhciAqaCwgY2hhciAqKgogIHN0cnVjdCB2YWx1ZSAqCiAgY29lcmNl X3JlZiAoc3RydWN0IHZhbHVlICphcmcpCiAgewpAQCAtMTUwNzMsNyArMTUwMTIsNyBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdmFsdWUuYwogIAogICAgaWYgKFRZUEVfQ09ERSAo dmFsdWVfdHlwZV9hcmdfdG1wKSA9PSBUWVBFX0NPREVfUkVGKQogICAgICBhcmcgPSB2YWx1ZV9h dF9sYXp5IChUWVBFX1RBUkdFVF9UWVBFICh2YWx1ZV90eXBlX2FyZ190bXApLAotQEAgLTMxNDUs NCArMzI3MCwxMCBAQCBWQVJJQUJMRSBpcyBhbHJlYWR5IGluaXRpYWxpemVkLiIpKTsKK0BAIC0z MTczLDQgKzMyOTgsMTAgQEAgVkFSSUFCTEUgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4iKSk7CiAg ICBhZGRfcHJlZml4X2NtZCAoImZ1bmN0aW9uIiwgbm9fY2xhc3MsIGZ1bmN0aW9uX2NvbW1hbmQs IF8oIlwKICBQbGFjZWhvbGRlciBjb21tYW5kIGZvciBzaG93aW5nIGhlbHAgb24gY29udmVuaWVu Y2UgZnVuY3Rpb25zLiIpLAogIAkJICAmZnVuY3Rpb25saXN0LCAiZnVuY3Rpb24gIiwgMCwgJmNt ZGxpc3QpOwpAQCAtMTUwODQsMTEgKzE1MDIzLDExIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi92YWx1ZS5jCiArICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkICh2YWx1ZV90eXBl c19tYXJrX3VzZWQpOwogKyNlbmRpZgogIH0KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi92YWx1ZS5oCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuaAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvdmFsdWUuaAkyMDExLTAzLTA0 IDIxOjA3OjIyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Zh bHVlLmgJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC00NzMsNiArNDcz LDEwIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21fZGVjZmxvYXQKKy0tLSBnZGIt Ny4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3ZhbHVlLmgJMjAxMS0wNy0xNCAxNzowMDoyMC4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWx1ZS5oCTIwMTEtMDct MjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtNDc1LDYgKzQ3NSwxMCBAQCBleHRlcm4g c3RydWN0IHZhbHVlICp2YWx1ZV9mcm9tX2RlY2Zsb2F0CiAgCQkJCQkgIGNvbnN0IGdkYl9ieXRl ICpkZWNieXRlcyk7CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZnJvbV9oaXN0b3J5X3Jl ZiAoY2hhciAqLCBjaGFyICoqKTsKICAKQEAgLTE1MDk5LDcgKzE1MDM4LDcgQEAgSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbHVlLmgKICBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1 ZV9hdCAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKTsKICBleHRlcm4gc3RydWN0 IHZhbHVlICp2YWx1ZV9hdF9sYXp5IChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHIp OwogIAotQEAgLTY5NywxMCArNzAxLDUyIEBAIGV4dGVybiBzdHJ1Y3QgaW50ZXJuYWx2YXIgKmxv b2t1cF9vbmx5X2kKK0BAIC03MDAsMTAgKzcwNCw1MiBAQCBleHRlcm4gc3RydWN0IGludGVybmFs dmFyICpsb29rdXBfb25seV9pCiAgCiAgZXh0ZXJuIHN0cnVjdCBpbnRlcm5hbHZhciAqY3JlYXRl X2ludGVybmFsdmFyIChjb25zdCBjaGFyICpuYW1lKTsKICAKQEAgLTE1MTU1LDExICsxNTA5NCwx MSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdmFsdWUuaAogIAogIGV4dGVybiBz dHJ1Y3QgaW50ZXJuYWx2YXIgKmxvb2t1cF9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSk7 CiAgCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvd2luZG93cy10ZGVwLmMKK0luZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi93aW5kb3dzLXRkZXAuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvd2luZG93cy10ZGVwLmMJMjAxMS0wMS0xMiAw MjoyMzoyOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi93aW5k b3dzLXRkZXAuYwkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAotQEAgLTI2OCw3 ICsyNjgsNyBAQCBzdGF0aWMgc3RydWN0IGx2YWxfZnVuY3MgdGxiX3ZhbHVlX2Z1bmNzCistLS0g Z2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi93aW5kb3dzLXRkZXAuYwkyMDExLTA3LTE0IDE3 OjAwOjIwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3dpbmRv d3MtdGRlcC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMjY4LDcg KzI2OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbHZhbF9mdW5jcyB0bGJfdmFsdWUKICAgICBp ZiB0aGVyZSdzIG5vIG9iamVjdCBhdmFpbGFibGUuICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFs dWUgKgpAQCAtMTUxOTEsMTEgKzE1MTMwLDExIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi93aW5kb3dzLXRkZXAuYwogLSAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl90 bGIiLCB0bGJfbWFrZV92YWx1ZSk7CiArICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgi X3RsYiIsICZ0bGJfZnVuY3MsIE5VTEwpOwogIH0KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi94Y29mZnJlYWQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3hjb2ZmcmVh ZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi94Y29mZnJl YWQuYwkyMDExLTAzLTA3IDE3OjE3OjI5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL3hjb2ZmcmVhZC5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICsw MjAwCi1AQCAtMzA5MCw2ICszMDkwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIHhj b2ZmX3N5bV9mbgorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIveGNvZmZyZWFkLmMJ MjAxMS0wNi0wNyAxNDozMTowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi94Y29mZnJlYWQuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAor QEAgLTMxMjMsNiArMzEyMyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyB4Y29mZl9z eW1fZm4KICAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJLyogR2V0IHNlZ21lbnQgaW5mb3Jt YXRpb24gZnJvbSBhIGZpbGUuICAqLwogICAgYWl4X3Byb2Nlc3NfbGluZW5vcywKICAgIGRlZmF1 bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogUmVsb2NhdGUgYSBkZWJ1ZyBzZWN0aW9uLiAgKi8KCmRp ZmYgLS1naXQgYS9nZGItYno1MzMxNzYtZm9ydHJhbi1vbXAtc3RlcC5wYXRjaCBiL2dkYi1iejUz MzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCmluZGV4IGI5YWVmZDUuLjJjZGRhYzMgMTAwNjQ0 Ci0tLSBhL2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCisrKyBiL2dkYi1iejUz MzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCkBAIC02OCw3ICs2OCw3IEBAIEluZGV4OiBnZGIt Ny4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCiAr CiArc2V0IHRlc3RmaWxlICJvbXAtc3RlcCIKICtzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAK LStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNm aWxlIHtkZWJ1ZyBmNzcgYWRkaXRpb25hbF9mbGFncz0tZm9wZW5tcH1dIH0geworK2lmIHsgW3By ZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGUge2RlYnVn IGY5MCBhZGRpdGlvbmFsX2ZsYWdzPS1mb3Blbm1wfV0gfSB7CiArICAgIHJldHVybiAtMQogK30K ICsKCmRpZmYgLS1naXQgYS9nZGItYno1NDE4NjYtcndhdGNoLWJlZm9yZS1ydW4ucGF0Y2ggYi9n ZGItYno1NDE4NjYtcndhdGNoLWJlZm9yZS1ydW4ucGF0Y2gKaW5kZXggOWU5Y2IyYS4uYTgxZDYy NyAxMDA2NDQKLS0tIGEvZ2RiLWJ6NTQxODY2LXJ3YXRjaC1iZWZvcmUtcnVuLnBhdGNoCisrKyBi L2dkYi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1bi5wYXRjaApAQCAtMSwxOCArMSwyMCBAQAot SW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4NjQubWgKK0lu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDExNy5vcmlnL2dkYi9jb25maWcvaTM4Ni9saW51 eDY0Lm1oCTIwMTAtMDUtMjggMjA6NTA6MzEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi41 MC4yMDExMDExNy9nZGIvY29uZmlnL2kzODYvbGludXg2NC5taAkyMDExLTAxLTE3IDE2OjAxOjQ4 LjAwMDAwMDAwMCArMDEwMAotQEAgLTIsNyArMiw3IEBACi0gTkFUREVQRklMRVM9IGluZi1wdHJh Y2UubyBmb3JrLWNoaWxkLm8gXAotIAlpMzg2LW5hdC5vIGFtZDY0LW5hdC5vIGFtZDY0LWxpbnV4 LW5hdC5vIGxpbnV4LW5hdC5vIFwKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2Nv bmZpZy9pMzg2L2xpbnV4NjQubWgJMjAxMS0wNy0yMiAwMTo0NjoxMC4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCTIwMTEt MDctMjIgMTk6MzI6NDEuMDAwMDAwMDAwICswMjAwCitAQCAtMyw3ICszLDcgQEAgTkFUREVQRklM RVM9IGluZi1wdHJhY2UubyBmb3JrLWNoaWxkLm8gXAorIAlpMzg2LW5hdC5vIGFtZDY0LW5hdC5v IGFtZDY0LWxpbnV4LW5hdC5vIFwKKyAJbGludXgtbmF0Lm8gbGludXgtb3NkYXRhLm8gXAogIAlw cm9jLXNlcnZpY2UubyBsaW51eC10aHJlYWQtZGIubyBsaW51eC1mb3JrLm8KIC1OQVRfRklMRT0g Y29uZmlnL25tLWxpbnV4LmgKICtOQVRfRklMRT0gbm0tbGludXg2NC5oCiAgTkFUX0NERVBTID0g JChzcmNkaXIpL3Byb2Mtc2VydmljZS5saXN0CiAgCiAgIyBUaGUgZHluYW1pY2FsbHkgbG9hZGVk IGxpYnRocmVhZF9kYiBuZWVkcyBhY2Nlc3MgdG8gc3ltYm9scyBpbiB0aGUKLS0tLSBnZGItNy4y L2dkYi9jb25maWcvaTM4Ni9saW51eC5taC1vcmlnCTIwMTAtMDYtMTEgMTQ6MDg6NTEuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvY29uZmlnL2kzODYvbGludXgubWgJMjAxMS0wMy0x OCAxMjowMDozMi4wMDAwMDAwMDAgKzAxMDAKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9jb25maWcvaTM4Ni9saW51eC5taAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjMuNTAuMjAxMTA3 MjIub3JpZy9nZGIvY29uZmlnL2kzODYvbGludXgubWgJMjAxMS0wNy0yMiAwMTo0NjoxMC4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWcvaTM4Ni9saW51 eC5taAkyMDExLTA3LTIyIDE5OjMyOjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTEsNiArMSw2IEBA CiAgIyBIb3N0OiBJbnRlbCAzODYgcnVubmluZyBHTlUvTGludXguCiAgCkBAIC0yMSw4ICsyMywx MCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvY29uZmlnL2kzODYvbGludXg2NC5t aAogIE5BVERFUEZJTEVTPSBpbmYtcHRyYWNlLm8gZm9yay1jaGlsZC5vIFwKICAJaTM4Ni1uYXQu byBpMzg2LWxpbnV4LW5hdC5vIFwKICAJcHJvYy1zZXJ2aWNlLm8gbGludXgtdGhyZWFkLWRiLm8g XAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4LmgK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9jb25maWcvaTM4Ni9ubS1saW51eC5o CTIwMTAtMDctMTMgMTk6MDI6MjguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvY29uZmlnL2kzODYvbm0tbGludXguaAkyMDExLTA3LTIyIDE5OjMyOjIxLjAwMDAw MDAwMCArMDIwMAogQEAgLTAsMCArMSwyOCBAQAogKy8qIE5hdGl2ZSBzdXBwb3J0IGZvciBHTlUv TGludXggaTM4Ni4KICsKQEAgLTUyLDEwICs1NiwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEx MDExNy9nZGIvY29uZmlnL2kzODYvbGludXg2NC5taAogKyNkZWZpbmUgdGFyZ2V0X2Nhbl91c2Vf aGFyZHdhcmVfd2F0Y2hwb2ludCh0eXBlLCBjbnQsIG90KSAxCiArCiArI2VuZGlmIC8qIE5NX0xJ TlVYNjRfSCAqLwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2NvbmZpZy9pMzg2L25t LWxpbnV4NjQuaAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZy9pMzg2L25t LWxpbnV4NjQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2NvbmZpZy9pMzg2 L25tLWxpbnV4NjQuaAkyMDExLTAxLTE3IDE2OjAxOjQ4LjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAkyMDExLTA3LTIy IDE5OjMyOjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSwyOCBAQAogKy8qIE5hdGl2ZSBz dXBwb3J0IGZvciBHTlUvTGludXggYW1kNjQuCiArCkBAIC04NSwxMSArODksMTEgQEAgSW5kZXg6 IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAogKyNkZWZp bmUgdGFyZ2V0X2Nhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludCh0eXBlLCBjbnQsIG90KSAxCiAr CiArI2VuZGlmIC8qIE5NX0xJTlVYNjRfSCAqLwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcv Z2RiL3RhcmdldC5oCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGFyZ2V0LmgKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL3RhcmdldC5oCTIwMTEt MDEtMTQgMTQ6NDc6MTUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9n ZGIvdGFyZ2V0LmgJMjAxMS0wMS0xNyAxNjowMjowOC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMzE4 LDggKzEzMTgsMTAgQEAgZXh0ZXJuIGNoYXIgKm5vcm1hbF9waWRfdG9fc3RyIChwdGlkX3QgcAor LS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdGFyZ2V0LmgJMjAxMS0wNi0wNiAxNDo0 NzowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90YXJnZXQu aAkyMDExLTA3LTIyIDE5OjMyOjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTEzNDksOCArMTM0OSwx MCBAQCBleHRlcm4gY2hhciAqdGFyZ2V0X3RocmVhZF9uYW1lIChzdHJ1Y3QgCiAgICAgYnBfaGFy ZHdhcmVfYnJlYWtwb2ludC4gIENOVCBpcyB0aGUgbnVtYmVyIG9mIHN1Y2ggd2F0Y2hwb2ludHMg dXNlZCBzbyBmYXIKICAgICAoaW5jbHVkaW5nIHRoaXMgb25lPykuICBPVEhFUlRZUEUgaXMgd2hv IGtub3dzIHdoYXQuLi4gICovCiAgCkBAIC0xMDAsMTAgKzEwNCwxMCBAQCBJbmRleDogZ2RiLTcu Mi41MC4yMDExMDExNy9nZGIvdGFyZ2V0LmgKICAKICAvKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Yg ZGVidWcgcmVnaXN0ZXJzIG5lZWRlZCB0byB3YXRjaCB0aGUgZ2l2ZW4KICAgICBtZW1vcnkgcmVn aW9uLCBvciB6ZXJvIGlmIG5vdCBzdXBwb3J0ZWQuICAqLwotSW5kZXg6IGdkYi03LjIuNTAuMjAx MTAxMTcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3LWJlZm9yZS1ydW4uZXhw CitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNo cG9pbnQtaHctYmVmb3JlLXJ1bi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody1iZWZvcmUtcnVuLmV4cAkyMDExLTAx LTE3IDE2OjAxOjQ4LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3LWJlZm9yZS1ydW4uZXhwCTIwMTEtMDct MjIgMTk6MzI6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDQwIEBACiArIyBDb3B5cmln aHQgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKCmRpZmYgLS1n aXQgYS9nZGItYno1NjgyNDgtb29tLWlzLWVycm9yLnBhdGNoIGIvZ2RiLWJ6NTY4MjQ4LW9vbS1p cy1lcnJvci5wYXRjaAppbmRleCAyYWFmNTIyLi4wNDVkMzRlIDEwMDY0NAotLS0gYS9nZGItYno1 NjgyNDgtb29tLWlzLWVycm9yLnBhdGNoCisrKyBiL2dkYi1iejU2ODI0OC1vb20taXMtZXJyb3Iu cGF0Y2gKQEAgLTQ2LDI0ICs0NiwyMyBAQCBnZGIvCiAKIAkqIHV0aWxzLmMgKG5vbWVtKTogQ2hh bmdlIGludGVybmFsX2Vycm9yIHRvIGVycm9yLgogCi0tLS0gYS9nZGIvdXRpbHMuYwotKysrIGIv Z2RiL3V0aWxzLmMKLUBAIC0xMjY1LDE1ICsxMjY1LDkgQEAgdm9pZAotIG5vbWVtIChsb25nIHNp emUpCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdXRpbHMuYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdXRpbHMuYwkyMDExLTA3LTIyIDE5OjI4 OjU4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3V0aWxzLmMJ MjAxMS0wNy0yMiAxOTozNDoyNS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMjE5LDEzICsxMjE5LDEx IEBAIG1hbGxvY19mYWlsdXJlIChsb25nIHNpemUpCiAgewogICAgaWYgKHNpemUgPiAwKQotLSAg ICB7CisgICAgIHsKIC0gICAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAog LQkJICAgICAgXygidmlydHVhbCBtZW1vcnkgZXhoYXVzdGVkOiBjYW4ndCBhbGxvY2F0ZSAlbGQg Ynl0ZXMuIiksCiAtCQkgICAgICBzaXplKTsKLS0gICAgfQotKyAgICBlcnJvciAoXygidmlydHVh bCBtZW1vcnkgZXhoYXVzdGVkOiBjYW4ndCBhbGxvY2F0ZSAlbGQgYnl0ZXMuIiksIHNpemUpOwor KyAgICAgIGVycm9yIChfKCJ2aXJ0dWFsIG1lbW9yeSBleGhhdXN0ZWQ6IGNhbid0IGFsbG9jYXRl ICVsZCBieXRlcy4iKSwgc2l6ZSk7CisgICAgIH0KICAgIGVsc2UKLS0gICAgeworICAgICB7CiAt ICAgICAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywgXygidmlydHVhbCBtZW1v cnkgZXhoYXVzdGVkLiIpKTsKLS0gICAgfQotKyAgICBlcnJvciAoXygidmlydHVhbCBtZW1vcnkg ZXhoYXVzdGVkLiIpKTsKKysgICAgICBlcnJvciAoXygidmlydHVhbCBtZW1vcnkgZXhoYXVzdGVk LiIpKTsKKyAgICAgfQogIH0KICAKLSAvKiBUaGUgeG1hbGxvYygpIChsaWJpYmVydHkuaCkgZmFt aWx5IG9mIG1lbW9yeSBtYW5hZ2VtZW50IHJvdXRpbmVzLgotCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6 NjQ1NzczLWNhc2UtaW5zZW5zaXRpdmUtMW9mNS5wYXRjaCBiL2dkYi1iejY0NTc3My1jYXNlLWlu c2Vuc2l0aXZlLTFvZjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiYWM2 ZmYuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjQ1NzczLWNhc2UtaW5zZW5zaXRpdmUtMW9mNS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLVtwYXRjaF0gQ29kZSBjbGVhbnVwOiBO ZXcgU1lNQk9MX0hBU0hfTkVYVAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVz LzIwMTEtMDQvbXNnMDAwMjIuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMv MjAxMS0wNC9tc2cwMDA0My5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDExLzA0LzA2 IDAzOjI0OjIyCTEuMTI5MDgKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDExLzA0LzA2IDE5OjUw OjAzCTEuMTI5MDkKLSMjIC0xLDMgKzEsMTIgQEAKLSsyMDExLTA0LTA2ICBKYW4gS3JhdG9jaHZp bCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCUNvZGUgY2xlYW51cC4KLSsJKiBk aWN0aW9uYXJ5LmMgKGRpY3RfaGFzaCk6IFVzZSBTWU1CT0xfSEFTSF9ORVhULgotKwkqIGR3YXJm MnJlYWQuYyAobWFwcGVkX2luZGV4X3N0cmluZ19oYXNoKTogUmVmZXIgdG8gU1lNQk9MX0hBU0hf TkVYVAotKwlpbiB0aGUgZnVuY3Rpb24gY29tbWVudCwgYSBuZXcgbm90ZSBvbiB2YWx1ZXMgY29t cGF0aWJpbGl0eS4KLSsJKiBtaW5zeW1zLmMgKG1zeW1ib2xfaGFzaF9pdywgbXN5bWJvbF9oYXNo KTogVXNlIFNZTUJPTF9IQVNIX05FWFQuCi0rCSogc3ltdGFiLmggKFNZTUJPTF9IQVNIX05FWFQp OiBOZXcuCi0rCi0gMjAxMS0wNC0wNiAgVGhpYWdvIEp1bmcgQmF1ZXJtYW5uICA8YmF1ZXJtYW5A YnIuaWJtLmNvbT4KLSAKLSAJKiBwcGMtbGludXgtbmF0LmMgKGNoZWNrX2NvbmRpdGlvbik6IEFk ZCBsZW4gb3V0cHV0IHBhcmFtZXRlci4KLS0tLSBzcmMvZ2RiL2RpY3Rpb25hcnkuYwkyMDExLzAx LzA3IDE5OjM2OjE1CTEuMjEKLSsrKyBzcmMvZ2RiL2RpY3Rpb25hcnkuYwkyMDExLzA0LzA2IDE5 OjUwOjA0CTEuMjIKLUBAIC04MjYsNyArODI2LDcgQEAKLSAJICAgIH0KLSAJICAvKiBGQUxMIFRI Uk9VR0ggKi8KLSAJZGVmYXVsdDoKLS0JICBoYXNoID0gaGFzaCAqIDY3ICsgKnN0cmluZyAtIDEx MzsKLSsJICBoYXNoID0gU1lNQk9MX0hBU0hfTkVYVCAoaGFzaCwgKnN0cmluZyk7Ci0gCSAgc3Ry aW5nICs9IDE7Ci0gCSAgYnJlYWs7Ci0gCX0KLS0tLSBzcmMvZ2RiL2R3YXJmMnJlYWQuYwkyMDEx LzA0LzA0IDE0OjEwOjEyCTEuNTIwCi0rKysgc3JjL2dkYi9kd2FyZjJyZWFkLmMJMjAxMS8wNC8w NiAxOTo1MDowNAkxLjUyMQotQEAgLTE5NjIsMTEgKzE5NjIsMTEgQEAKLSAgIGRvX2NsZWFudXBz IChjbGVhbnVwKTsKLSB9Ci0gCi0tLyogVGhlIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MgaW4g dGhlIG1hcHBlZCBpbmRleC4gIFRoaXMgaXMgdGhlCi0tICAgc2FtZSBhcyB0aGUgaGFzaHRhYi5j IGhhc2ggZnVuY3Rpb24sIGJ1dCB3ZSBrZWVwIGEgc2VwYXJhdGUgY29weSB0bwotLSAgIG1haW50 YWluIGNvbnRyb2wgb3ZlciB0aGUgaW1wbGVtZW50YXRpb24uICBUaGlzIGlzIG5lY2Vzc2FyeQot LSAgIGJlY2F1c2UgdGhlIGhhc2ggZnVuY3Rpb24gaXMgdGllZCB0byB0aGUgZm9ybWF0IG9mIHRo ZSBtYXBwZWQgaW5kZXgKLS0gICBmaWxlLiAgKi8KLSsvKiBUaGUgaGFzaCBmdW5jdGlvbiBmb3Ig c3RyaW5ncyBpbiB0aGUgbWFwcGVkIGluZGV4LiAgVGhpcyBpcyB0aGUgc2FtZSBhcwotKyAgIFNZ TUJPTF9IQVNIX05FWFQsIGJ1dCB3ZSBrZWVwIGEgc2VwYXJhdGUgY29weSB0byBtYWludGFpbiBj b250cm9sIG92ZXIgdGhlCi0rICAgaW1wbGVtZW50YXRpb24uICBUaGlzIGlzIG5lY2Vzc2FyeSBi ZWNhdXNlIHRoZSBoYXNoIGZ1bmN0aW9uIGlzIHRpZWQgdG8gdGhlCi0rICAgZm9ybWF0IG9mIHRo ZSBtYXBwZWQgaW5kZXggZmlsZS4gIFRoZSBoYXNoIHZhbHVlcyBkbyBub3QgaGF2ZSB0byBtYXRj aCB3aXRoCi0rICAgU1lNQk9MX0hBU0hfTkVYVC4gICovCi0gCi0gc3RhdGljIGhhc2h2YWxfdAot IG1hcHBlZF9pbmRleF9zdHJpbmdfaGFzaCAoY29uc3Qgdm9pZCAqcCkKLS0tLSBzcmMvZ2RiL21p bnN5bXMuYwkyMDExLzAzLzI4IDIwOjI5OjUxCTEuODEKLSsrKyBzcmMvZ2RiL21pbnN5bXMuYwky MDExLzA0LzA2IDE5OjUwOjA1CTEuODIKLUBAIC05MSw3ICs5MSw3IEBACi0gCSsrc3RyaW5nOwot ICAgICAgIGlmICgqc3RyaW5nICYmICpzdHJpbmcgIT0gJygnKQotIAl7Ci0tCSAgaGFzaCA9IGhh c2ggKiA2NyArICpzdHJpbmcgLSAxMTM7Ci0rCSAgaGFzaCA9IFNZTUJPTF9IQVNIX05FWFQgKGhh c2gsICpzdHJpbmcpOwotIAkgICsrc3RyaW5nOwotIAl9Ci0gICAgIH0KLUBAIC0xMDYsNyArMTA2 LDcgQEAKLSAgIHVuc2lnbmVkIGludCBoYXNoID0gMDsKLSAKLSAgIGZvciAoOyAqc3RyaW5nOyAr K3N0cmluZykKLS0gICAgaGFzaCA9IGhhc2ggKiA2NyArICpzdHJpbmcgLSAxMTM7Ci0rICAgIGhh c2ggPSBTWU1CT0xfSEFTSF9ORVhUIChoYXNoLCAqc3RyaW5nKTsKLSAgIHJldHVybiBoYXNoOwot IH0KLSAKLS0tLSBzcmMvZ2RiL3N5bXRhYi5oCTIwMTEvMDQvMDQgMTU6MTk6NTkJMS4xNzcKLSsr KyBzcmMvZ2RiL3N5bXRhYi5oCTIwMTEvMDQvMDYgMTk6NTA6MDUJMS4xNzgKLUBAIC0xMDA0LDYg KzEwMDQsMTIgQEAKLSAKLSBleHRlcm4gdW5zaWduZWQgaW50IG1zeW1ib2xfaGFzaCAoY29uc3Qg Y2hhciAqKTsKLSAKLSsvKiBDb21wdXRlIHRoZSBuZXh0IGhhc2ggdmFsdWUgZnJvbSBwcmV2aW91 cyBIQVNIIGFuZCB0aGUgY2hhcmFjdGVyIEMuICBUaGlzCi0rICAgaXMgb25seSBhIEdEQiBpbi1t ZW1vcnkgY29tcHV0ZWQgdmFsdWUgd2l0aCBubyBleHRlcm5hbCBmaWxlcyBjb21wYXRpYmlsaXR5 Ci0rICAgcmVxdWlyZW1lbnRzLiAgKi8KLSsKLSsjZGVmaW5lIFNZTUJPTF9IQVNIX05FWFQoaGFz aCwgYykgKChoYXNoKSAqIDY3ICsgKGMpIC0gMTEzKQotKwotIGV4dGVybiBzdHJ1Y3Qgb2JqZmls ZSAqIG1zeW1ib2xfb2JqZmlsZSAoc3RydWN0IG1pbmltYWxfc3ltYm9sICpzeW0pOwotIAotIGV4 dGVybiB2b2lkCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjQ1NzczLWNhc2UtaW5zZW5zaXRpdmUtMm9m NS5wYXRjaCBiL2dkYi1iejY0NTc3My1jYXNlLWluc2Vuc2l0aXZlLTJvZjUucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZjJlMzIuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjQ1 NzczLWNhc2UtaW5zZW5zaXRpdmUtMm9mNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSAr MCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wNC9tc2cw MDEyNC5odG1sCi1TdWJqZWN0OiBbcGF0Y2ggMS8zXSBjYXNlIGluc2Vuc2l0aXZlOiBSZWZvcm1h dCBjb2RlCi0KLUhpLAotCi1qdXN0IHNvbWUgcmVmb3JtYXR0aW5nIHRvIG1ha2UgdGhlIGxhdGVy IHBhdGNoIG1vcmUgY2xlYXIuICBUaGVyZSBzaG91bGQgYmUgbm8KLWZ1bmN0aW9uYWxpdHkgZGlm ZmVyZW5jZSBieSB0aGlzIHBhdGNoLiAgYzErYzIgYXJlIGEgYml0IHVnbHkgYnV0IEkgZm91bmQg YW55Ci1vdGhlciBzb2x1dGlvbiBhIGJpdCB1Z2x5LgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdk Yi8KLTIwMTEtMDQtMDggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KLQotCUZvcm1hdCB0aGUgY29kZSBmb3IgdGhlIG5leHQgcGF0Y2guCi0JKiBkd2FyZjJyZWFk LmMgKHN0cnVjdCBtYXBwZWRfaW5kZXgpOiBJbmNsdWRlIGRlbGltaXRpbmcgbmV3bGluZXMuCi0J KiB1dGlscy5jIChzdHJjbXBfaXdfb3JkZXJlZCk6IFJlZm9ybWF0IHRoZSBjb2RlIGZvciB0aGUg bmV4dCBwYXRjaC4KLQlOZXcgdmFyaWFibGVzIGMxIGFuZCBjMi4KLQotLS0tIGEvZ2RiL2R3YXJm MnJlYWQuYwotKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAgLTE1MCwxNCArMTUwLDE5IEBAIHN0 cnVjdCBtYXBwZWRfaW5kZXgKLSB7Ci0gICAvKiBUaGUgdG90YWwgbGVuZ3RoIG9mIHRoZSBidWZm ZXIuICAqLwotICAgb2ZmX3QgdG90YWxfc2l6ZTsKLSsKLSAgIC8qIEEgcG9pbnRlciB0byB0aGUg YWRkcmVzcyB0YWJsZSBkYXRhLiAgKi8KLSAgIGNvbnN0IGdkYl9ieXRlICphZGRyZXNzX3RhYmxl OwotKwotICAgLyogU2l6ZSBvZiB0aGUgYWRkcmVzcyB0YWJsZSBkYXRhIGluIGJ5dGVzLiAgKi8K LSAgIG9mZnNldF90eXBlIGFkZHJlc3NfdGFibGVfc2l6ZTsKLSsKLSAgIC8qIFRoZSBzeW1ib2wg dGFibGUsIGltcGxlbWVudGVkIGFzIGEgaGFzaCB0YWJsZS4gICovCi0gICBjb25zdCBvZmZzZXRf dHlwZSAqc3ltYm9sX3RhYmxlOwotKwotICAgLyogU2l6ZSBpbiBzbG90cywgZWFjaCBzbG90IGlz IDIgb2Zmc2V0X3R5cGVzLiAgKi8KLSAgIG9mZnNldF90eXBlIHN5bWJvbF90YWJsZV9zbG90czsK LSsKLSAgIC8qIEEgcG9pbnRlciB0byB0aGUgY29uc3RhbnQgcG9vbC4gICovCi0gICBjb25zdCBj aGFyICpjb25zdGFudF9wb29sOwotIH07Ci0tLS0gYS9nZGIvdXRpbHMuYwotKysrIGIvZ2RiL3V0 aWxzLmMKLUBAIC0zMDIzLDQ4ICszMDIzLDU1IEBAIHN0cmNtcF9pdyAoY29uc3QgY2hhciAqc3Ry aW5nMSwgY29uc3QgY2hhciAqc3RyaW5nMikKLSBpbnQKLSBzdHJjbXBfaXdfb3JkZXJlZCAoY29u c3QgY2hhciAqc3RyaW5nMSwgY29uc3QgY2hhciAqc3RyaW5nMikKLSB7Ci0tICB3aGlsZSAoKCpz dHJpbmcxICE9ICdcMCcpICYmICgqc3RyaW5nMiAhPSAnXDAnKSkKLSsgIC8qIEZvcm1hdHRpbmcg c3R1Yi4gICovCi0rICBpZiAoMSkKLSAgICAgewotLSAgICAgIHdoaWxlIChpc3NwYWNlICgqc3Ry aW5nMSkpCi0tCXsKLS0JICBzdHJpbmcxKys7Ci0tCX0KLS0gICAgICB3aGlsZSAoaXNzcGFjZSAo KnN0cmluZzIpKQotLQl7Ci0tCSAgc3RyaW5nMisrOwotLQl9Ci0tICAgICAgaWYgKCpzdHJpbmcx ICE9ICpzdHJpbmcyKQotKyAgICAgIC8qIEMxIGFuZCBDMiBhcmUgdmFsaWQgb25seSBpZiAqc3Ry aW5nMSAhPSAnXDAnICYmICpzdHJpbmcyICE9ICdcMCcuCi0rCSBQcm92aWRlIHN0dWIgY2hhcmFj dGVycyBpZiB3ZSBhcmUgYWxyZWFkeSBhdCB0aGUgZW5kIG9mIG9uZSBvZiB0aGUKLSsJIHN0cmlu Z3MuICAqLwotKyAgICAgIGNoYXIgYzEgPSAnWCcsIGMyID0gJ1gnOwotKwotKyAgICAgIHdoaWxl ICgqc3RyaW5nMSAhPSAnXDAnICYmICpzdHJpbmcyICE9ICdcMCcpCi0gCXsKLS0JICBicmVhazsK LSsJICB3aGlsZSAoaXNzcGFjZSAoKnN0cmluZzEpKQotKwkgICAgc3RyaW5nMSsrOwotKwkgIHdo aWxlIChpc3NwYWNlICgqc3RyaW5nMikpCi0rCSAgICBzdHJpbmcyKys7Ci0rCi0rCSAgICAgIGMx ID0gKnN0cmluZzE7Ci0rCSAgICAgIGMyID0gKnN0cmluZzI7Ci0rCSAgaWYgKGMxICE9IGMyKQot KwkgICAgYnJlYWs7Ci0rCi0rCSAgaWYgKCpzdHJpbmcxICE9ICdcMCcpCi0rCSAgICB7Ci0rCSAg ICAgIHN0cmluZzErKzsKLSsJICAgICAgc3RyaW5nMisrOwotKwkgICAgfQotIAl9Ci0tICAgICAg aWYgKCpzdHJpbmcxICE9ICdcMCcpCi0rCi0rICAgICAgc3dpdGNoICgqc3RyaW5nMSkKLSAJewot LQkgIHN0cmluZzErKzsKLS0JICBzdHJpbmcyKys7Ci0rCSAgLyogQ2hhcmFjdGVycyBhcmUgbm9u LWVxdWFsIHVubGVzcyB0aGV5J3JlIGJvdGggJ1wwJzsgd2Ugd2FudCB0bwotKwkgICAgIG1ha2Ug c3VyZSB3ZSBnZXQgdGhlIGNvbXBhcmlzb24gcmlnaHQgYWNjb3JkaW5nIHRvIG91cgotKwkgICAg IGNvbXBhcmlzb24gaW4gdGhlIGNhc2VzIHdoZXJlIG9uZSBvZiB0aGVtIGlzICdcMCcgb3IgJygn LiAgKi8KLSsJY2FzZSAnXDAnOgotKwkgIGlmICgqc3RyaW5nMiA9PSAnXDAnKQotKwkgICAgcmV0 dXJuIDA7Ci0rCSAgZWxzZQotKwkgICAgcmV0dXJuIC0xOwotKwljYXNlICcoJzoKLSsJICBpZiAo KnN0cmluZzIgPT0gJ1wwJykKLSsJICAgIHJldHVybiAxOwotKwkgIGVsc2UKLSsJICAgIHJldHVy biAtMTsKLSsJZGVmYXVsdDoKLSsJICBpZiAoKnN0cmluZzIgPT0gJ1wwJyB8fCAqc3RyaW5nMiA9 PSAnKCcpCi0rCSAgICByZXR1cm4gMTsKLSsJICBlbHNlCi0rCSAgICByZXR1cm4gYzEgLSBjMjsK LSAJfQotICAgICB9Ci0tCi0tICBzd2l0Y2ggKCpzdHJpbmcxKQotLSAgICB7Ci0tICAgICAgLyog Q2hhcmFjdGVycyBhcmUgbm9uLWVxdWFsIHVubGVzcyB0aGV5J3JlIGJvdGggJ1wwJzsgd2Ugd2Fu dCB0bwotLQkgbWFrZSBzdXJlIHdlIGdldCB0aGUgY29tcGFyaXNvbiByaWdodCBhY2NvcmRpbmcg dG8gb3VyCi0tCSBjb21wYXJpc29uIGluIHRoZSBjYXNlcyB3aGVyZSBvbmUgb2YgdGhlbSBpcyAn XDAnIG9yICcoJy4gICovCi0tICAgIGNhc2UgJ1wwJzoKLS0gICAgICBpZiAoKnN0cmluZzIgPT0g J1wwJykKLS0JcmV0dXJuIDA7Ci0tICAgICAgZWxzZQotLQlyZXR1cm4gLTE7Ci0tICAgIGNhc2Ug JygnOgotLSAgICAgIGlmICgqc3RyaW5nMiA9PSAnXDAnKQotLQlyZXR1cm4gMTsKLS0gICAgICBl bHNlCi0tCXJldHVybiAtMTsKLS0gICAgZGVmYXVsdDoKLS0gICAgICBpZiAoKnN0cmluZzIgPT0g JygnKQotLQlyZXR1cm4gMTsKLS0gICAgICBlbHNlCi0tCXJldHVybiAqc3RyaW5nMSAtICpzdHJp bmcyOwotLSAgICB9Ci0gfQotIAotIC8qIEEgc2ltcGxlIGNvbXBhcmlzb24gZnVuY3Rpb24gd2l0 aCBvcHBvc2l0ZSBzZW1hbnRpY3MgdG8gc3RyY21wLiAgKi8KLQoKZGlmZiAtLWdpdCBhL2dkYi1i ejY0NTc3My1jYXNlLWluc2Vuc2l0aXZlLTNvZjUucGF0Y2ggYi9nZGItYno2NDU3NzMtY2FzZS1p bnNlbnNpdGl2ZS0zb2Y1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2Q0 YmYyLi4wMDAwMDAwCi0tLSBhL2dkYi1iejY0NTc3My1jYXNlLWluc2Vuc2l0aXZlLTNvZjUucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMTEtMDQvbXNnMDAxMjUuaHRtbAotU3ViamVjdDogW3BhdGNoIDIv M10gY2FzZSBpbnNlbnNpdGl2ZTogcmVfY29tcC0+cmVnY29tcAotCi1IaSwKLQotcmVfY29tcCBj YW5ub3QgYmUgcGFzc2VkIFJFR19JQ0FTRS4gIFRoZXJlZm9yZSBjaGFuZ2UgdGhlIGNvZGUuICBU aGUgc2hvdWxkCi1oYXZlIG5vIGZ1bmN0aW9uYWxpdHkgaW1wYWN0LgotCi1UaGUgbmV3IGJvb2xl YW4gZmllbGQgYHByZWdfcCcgY291bGQgYmUgbWF5YmUgcmVwbGFjZWQgYnkgYSBjb25kaXRpb25h bAotYHByZWcuYnVmZmVyICE9IE5VTEwnIHdoaWNoIHdvdWxkIHdvcmsgd2l0aCBsaWJpYmVydHkg cmVnY29tcCBpbXBsZW1lbnRhdGlvbgotYnV0IEkgZG8gbm90IHNlZSBpdCBndWFyYW50ZWVkIGFu eXdoZXJlLiAgR0RCIGlzIGFsd2F5cyB1c2luZyBzdGF0aWMgbGliaWJlcnR5Ci1pbXBsZW1lbnRh dGlvbiB3aGljaCBJIGRvIG5vdCBzZWUgd2h5IGluIHRoZSBjYXNlIGl0IGlzIHJ1bm5pbmcgb24g Z2xpYmMuCi1CdXQgaWYgaXQgZ2V0cyBmaXhlZCBvbmUgZGF5IGFuZCBpdCBzdGFydHMgdG8gdXNl IGV4dGVybmFsbHkgbGlua2VkCi1yZWdjb21wL3JlZ2V4ZWMgSSB3b3VsZCBmaW5kIHRoZSBgcHJl Zy5idWZmZXIgIT0gTlVMTCcgY29uZGl0aW9uYWwgZGFuZ2Vyb3VzLgotCi0KLVRoYW5rcywKLUph bgotCi0KLWdkYi8KLTIwMTEtMDQtMDggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLQotCVJlcGxhY2UgcmVfY29tcC9yZV9leGVjIGJ5IHJlZ2NvbXAvcmVnZXhl Yy4KLQkqIHN5bXRhYi5jIChzdHJ1Y3Qgc2VhcmNoX3N5bWJvbHNfZGF0YSk6IE5ldyBmaWVsZHMg cHJlZywgcHJlZ19wLgotCShzZWFyY2hfc3ltYm9sc19uYW1lX21hdGNoZXMpOiBVc2UgdGhlbSwg dXNlIHJlZ2V4ZWMuCi0JKHNlYXJjaF9zeW1ib2xzKTogTmV3IHZhcmlhYmxlIHJldHZhbF9jaGFp biwgYWRqdXN0IHRoZSB1c2Ugb2YKLQlvbGRfY2hhaW4gYWdhaW5zdCBpdC4gIFJlcGxhY2UgcmVf Y29tcCBieSByZWdjb21wLiAgVXNlIHRoZSBuZXcgc3RydWN0Ci0Jc2VhcmNoX3N5bWJvbHNfZGF0 YSBmaWVsZHMsIHVzZSByZWdleGVjIGluc3RlYWQgb2YgcmVfZXhlYy4KLQotSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA0MjkvZ2RiL3N5bXRhYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4y MDExMDQyOS5vcmlnL2dkYi9zeW10YWIuYwkyMDExLTA0LTI5IDA5OjQzOjMzLjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL3N5bXRhYi5jCTIwMTEtMDQtMjkgMDk6 NDM6NTUuMDAwMDAwMDAwICswMjAwCi1AQCAtMjk1OCw3ICsyOTU4LDEwIEBAIHN0cnVjdCBzZWFy Y2hfc3ltYm9sc19kYXRhCi0gewotICAgaW50IG5maWxlczsKLSAgIGNoYXIgKipmaWxlczsKLS0g IGNoYXIgKnJlZ2V4cDsKLSsKLSsgIC8qIEl0IGlzIHRydWUgaWYgUFJFRyBjb250YWlucyB2YWxp ZCBkYXRhLCBmYWxzZSBvdGhlcndpc2UuICAqLwotKyAgdW5zaWduZWQgcHJlZ19wIDogMTsKLSsg IHJlZ2V4X3QgcHJlZzsKLSB9OwotIAotIC8qIEEgY2FsbGJhY2sgZm9yIGV4cGFuZF9zeW10YWJz X21hdGNoaW5nLiAgKi8KLUBAIC0yOTc2LDcgKzI5NzksNyBAQCBzZWFyY2hfc3ltYm9sc19uYW1l X21hdGNoZXMgKGNvbnN0IGNoYXIgCi0gewotICAgc3RydWN0IHNlYXJjaF9zeW1ib2xzX2RhdGEg KmRhdGEgPSB1c2VyX2RhdGE7Ci0gCi0tICByZXR1cm4gZGF0YS0+cmVnZXhwID09IE5VTEwgfHwg cmVfZXhlYyAoc3ltbmFtZSk7Ci0rICByZXR1cm4gIWRhdGEtPnByZWdfcCB8fCByZWdleGVjICgm ZGF0YS0+cHJlZywgc3ltbmFtZSwgMCwgTlVMTCwgMCkgPT0gMDsKLSB9Ci0gCi0gLyogU2VhcmNo IHRoZSBzeW1ib2wgdGFibGUgZm9yIG1hdGNoZXMgdG8gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBS RUdFWFAsCi1AQCAtMzAyMyw5ICszMDI2LDEzIEBAIHNlYXJjaF9zeW1ib2xzIChjaGFyICpyZWdl eHAsIGRvbWFpbl9lbnUKLSAgIHN0cnVjdCBzeW1ib2xfc2VhcmNoICpzcjsKLSAgIHN0cnVjdCBz eW1ib2xfc2VhcmNoICpwc3I7Ci0gICBzdHJ1Y3Qgc3ltYm9sX3NlYXJjaCAqdGFpbDsKLS0gIHN0 cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4gPSBOVUxMOwotICAgc3RydWN0IHNlYXJjaF9zeW1ib2xz X2RhdGEgZGF0dW07Ci0gCi0rICAvKiBPTERfQ0hBSU4gLi4gUkVUVkFMX0NIQUlOIGlzIGFsd2F5 cyBmcmVlZCwgUkVUVkFMX0NIQUlOIC4uIGN1cnJlbnQKLSsgICAgIENMRUFOVVBfQ0hBSU4gaXMg ZnJlZWQgb25seSBpbiB0aGUgY2FzZSBvZiBhbiBlcnJvci4gICovCi0rICBzdHJ1Y3QgY2xlYW51 cCAqb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOwotKyAgc3Ry dWN0IGNsZWFudXAgKnJldHZhbF9jaGFpbjsKLSsKLSAgIGlmIChraW5kIDwgVkFSSUFCTEVTX0RP TUFJTiB8fCBraW5kID49IEFMTF9ET01BSU4pCi0gICAgIGVycm9yIChfKCJtdXN0IHNlYXJjaCBv biBzcGVjaWZpYyBkb21haW4iKSk7Ci0gCi1AQCAtMzAzNiw2ICszMDQzLDcgQEAgc2VhcmNoX3N5 bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWluX2VudQotIAotICAgc3IgPSAqbWF0Y2hlcyA9IE5V TEw7Ci0gICB0YWlsID0gTlVMTDsKLSsgIGRhdHVtLnByZWdfcCA9IDA7Ci0gCi0gICBpZiAocmVn ZXhwICE9IE5VTEwpCi0gICAgIHsKLUBAIC0zMDQ1LDYgKzMwNTMsNyBAQCBzZWFyY2hfc3ltYm9s cyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51Ci0gICAgICAgICAgYW5kIDxUWVBFTkFNRT4gb3Ig PE9QRVJBVE9SPi4gICovCi0gICAgICAgY2hhciAqb3BlbmQ7Ci0gICAgICAgY2hhciAqb3BuYW1l ID0gb3BlcmF0b3JfY2hhcnMgKHJlZ2V4cCwgJm9wZW5kKTsKLSsgICAgICBpbnQgZXJyY29kZTsK LSAKLSAgICAgICBpZiAoKm9wbmFtZSkKLSAJewotQEAgLTMwNzMsOCArMzA4MiwxNiBAQCBzZWFy Y2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51Ci0gCSAgICB9Ci0gCX0KLSAKLS0g ICAgICBpZiAoMCAhPSAodmFsID0gcmVfY29tcCAocmVnZXhwKSkpCi0tCWVycm9yIChfKCJJbnZh bGlkIHJlZ2V4cCAoJXMpOiAlcyIpLCB2YWwsIHJlZ2V4cCk7Ci0rICAgICAgZXJyY29kZSA9IHJl Z2NvbXAgKCZkYXR1bS5wcmVnLCByZWdleHAsIFJFR19OT1NVQik7Ci0rICAgICAgaWYgKGVycmNv ZGUgIT0gMCkKLSsJewotKwkgIGNoYXIgKmVyciA9IGdldF9yZWdjb21wX2Vycm9yIChlcnJjb2Rl LCAmZGF0dW0ucHJlZyk7Ci0rCi0rCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZXJyKTsKLSsJICBl cnJvciAoXygiSW52YWxpZCByZWdleHAgKCVzKTogJXMiKSwgZXJyLCByZWdleHApOwotKwl9Ci0r ICAgICAgZGF0dW0ucHJlZ19wID0gMTsKLSsgICAgICBtYWtlX3JlZ2ZyZWVfY2xlYW51cCAoJmRh dHVtLnByZWcpOwotICAgICB9Ci0gCi0gICAvKiBTZWFyY2ggdGhyb3VnaCB0aGUgcGFydGlhbCBz eW10YWJzICpmaXJzdCogZm9yIGFsbCBzeW1ib2xzCi1AQCAtMzA4Myw3ICszMTAwLDYgQEAgc2Vh cmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWluX2VudQotIAotICAgZGF0dW0ubmZpbGVz ID0gbmZpbGVzOwotICAgZGF0dW0uZmlsZXMgPSBmaWxlczsKLS0gIGRhdHVtLnJlZ2V4cCA9IHJl Z2V4cDsKLSAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKLSAgIHsKLSAgICAgaWYgKG9iamZpbGUt PnNmKQotQEAgLTMwOTQsNiArMzExMCw4IEBAIHNlYXJjaF9zeW1ib2xzIChjaGFyICpyZWdleHAs IGRvbWFpbl9lbnUKLSAJCQkJCQkmZGF0dW0pOwotICAgfQotIAotKyAgcmV0dmFsX2NoYWluID0g b2xkX2NoYWluOwotKwotICAgLyogSGVyZSwgd2Ugc2VhcmNoIHRocm91Z2ggdGhlIG1pbmltYWwg c3ltYm9sIHRhYmxlcyBmb3IgZnVuY3Rpb25zCi0gICAgICBhbmQgdmFyaWFibGVzIHRoYXQgbWF0 Y2gsIGFuZCBmb3JjZSB0aGVpciBzeW1ib2xzIHRvIGJlIHJlYWQuCi0gICAgICBUaGlzIGlzIGlu IHBhcnRpY3VsYXIgbmVjZXNzYXJ5IGZvciBkZW1hbmdsZWQgdmFyaWFibGUgbmFtZXMsCi1AQCAt MzExNyw4ICszMTM1LDkgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWluX2Vu dQotIAkgICAgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBvdXJ0eXBlMyB8fAotIAkgICAgTVNZ TUJPTF9UWVBFIChtc3ltYm9sKSA9PSBvdXJ0eXBlNCkKLSAJICB7Ci0tCSAgICBpZiAocmVnZXhw ID09IE5VTEwKLS0JCXx8IHJlX2V4ZWMgKFNZTUJPTF9OQVRVUkFMX05BTUUgKG1zeW1ib2wpKSAh PSAwKQotKwkgICAgaWYgKCFkYXR1bS5wcmVnX3AKLSsJCXx8IHJlZ2V4ZWMgKCZkYXR1bS5wcmVn LCBTWU1CT0xfTkFUVVJBTF9OQU1FIChtc3ltYm9sKSwgMCwKLSsJCQkgICAgTlVMTCwgMCkgPT0g MCkKLSAJICAgICAgewotIAkJaWYgKDAgPT0gZmluZF9wY19zeW10YWIgKFNZTUJPTF9WQUxVRV9B RERSRVNTIChtc3ltYm9sKSkpCi0gCQkgIHsKLUBAIC0zMTU2LDggKzMxNzUsOSBAQCBzZWFyY2hf c3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51Ci0gCSAgICAgIFFVSVQ7Ci0gCi0gCSAg ICAgIGlmIChmaWxlX21hdGNoZXMgKHJlYWxfc3ltdGFiLT5maWxlbmFtZSwgZmlsZXMsIG5maWxl cykKLS0JCSAgJiYgKChyZWdleHAgPT0gTlVMTAotLQkJICAgICAgIHx8IHJlX2V4ZWMgKFNZTUJP TF9OQVRVUkFMX05BTUUgKHN5bSkpICE9IDApCi0rCQkgICYmICgoIWRhdHVtLnByZWdfcAotKwkJ ICAgICAgIHx8IHJlZ2V4ZWMgKCZkYXR1bS5wcmVnLCBTWU1CT0xfTkFUVVJBTF9OQU1FIChzeW0p LCAwLAotKwkJCQkgICBOVUxMLCAwKSA9PSAwKQotIAkJICAgICAgJiYgKChraW5kID09IFZBUklB QkxFU19ET01BSU4KLSAJCQkgICAmJiBTWU1CT0xfQ0xBU1MgKHN5bSkgIT0gTE9DX1RZUEVERUYK LSAJCQkgICAmJiBTWU1CT0xfQ0xBU1MgKHN5bSkgIT0gTE9DX1VOUkVTT0xWRUQKLUBAIC0zMTk5 LDcgKzMyMTksNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51Ci0g CQkgIHRhaWwgPSBzb3J0X3NlYXJjaF9zeW1ib2xzICgmZHVtbXksIG5mb3VuZCk7Ci0gCQkgIHNy ID0gZHVtbXkubmV4dDsKLSAKLS0JCSAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2ZyZWVfc2Vh cmNoX3N5bWJvbHMgKHNyKTsKLSsJCSAgbWFrZV9jbGVhbnVwX2ZyZWVfc2VhcmNoX3N5bWJvbHMg KHNyKTsKLSAJCX0KLSAJICAgICAgZWxzZQotIAkJdGFpbCA9IHNvcnRfc2VhcmNoX3N5bWJvbHMg KHByZXZ0YWlsLCBuZm91bmQpOwotQEAgLTMyMjEsOCArMzI0MSw5IEBAIHNlYXJjaF9zeW1ib2xz IChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnUKLSAJICAgIE1TWU1CT0xfVFlQRSAobXN5bWJvbCkg PT0gb3VydHlwZTMgfHwKLSAJICAgIE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gb3VydHlwZTQp Ci0gCSAgewotLQkgICAgaWYgKHJlZ2V4cCA9PSBOVUxMCi0tCQl8fCByZV9leGVjIChTWU1CT0xf TkFUVVJBTF9OQU1FIChtc3ltYm9sKSkgIT0gMCkKLSsJICAgIGlmICghZGF0dW0ucHJlZ19wCi0r CQl8fCByZWdleGVjICgmZGF0dW0ucHJlZywgU1lNQk9MX05BVFVSQUxfTkFNRSAobXN5bWJvbCks IDAsCi0rCQkJICAgIE5VTEwsIDApID09IDApCi0gCSAgICAgIHsKLSAJCS8qIEZ1bmN0aW9uczog IExvb2sgdXAgYnkgYWRkcmVzcy4gICovCi0gCQlpZiAoa2luZCAhPSBGVU5DVElPTlNfRE9NQUlO IHx8Ci1AQCAtMzI0NCw3ICszMjY1LDcgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwg ZG9tYWluX2VudQotIAkJCWlmICh0YWlsID09IE5VTEwpCi0gCQkJICB7Ci0gCQkJICAgIHNyID0g cHNyOwotLQkJCSAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZnJlZV9zZWFyY2hfc3ltYm9s cyAoc3IpOwotKwkJCSAgICBtYWtlX2NsZWFudXBfZnJlZV9zZWFyY2hfc3ltYm9scyAoc3IpOwot IAkJCSAgfQotIAkJCWVsc2UKLSAJCQkgIHRhaWwtPm5leHQgPSBwc3I7Ci1AQCAtMzI1Niw5ICsz Mjc3LDkgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWluX2VudQotICAgICAg IH0KLSAgICAgfQotIAotKyAgZGlzY2FyZF9jbGVhbnVwcyAocmV0dmFsX2NoYWluKTsKLSsgIGRv X2NsZWFudXBzIChvbGRfY2hhaW4pOwotICAgKm1hdGNoZXMgPSBzcjsKLS0gIGlmIChzciAhPSBO VUxMKQotLSAgICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOwotIH0KLSAKLSAvKiBIZWxw ZXIgZnVuY3Rpb24gZm9yIHN5bXRhYl9zeW1ib2xfaW5mbywgdGhpcyBmdW5jdGlvbiB1c2VzCgpk aWZmIC0tZ2l0IGEvZ2RiLWJ6NjQ1NzczLWNhc2UtaW5zZW5zaXRpdmUtNG9mNS5wYXRjaCBiL2dk Yi1iejY0NTc3My1jYXNlLWluc2Vuc2l0aXZlLTRvZjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDExMzVjYzcuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjQ1NzczLWNhc2UtaW5z ZW5zaXRpdmUtNG9mNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2OSArMCwwIEBACi1odHRw Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wNC9tc2cwMDQxOC5odG1sCi1T dWJqZWN0OiBSZTogW3BhdGNoIDMvM10gY2FzZSBpbnNlbnNpdGl2ZTogdGhlIGZpeCBbcmVkaWZm XQotCi1PbiBGcmksIDIyIEFwciAyMDExIDIxOjA1OjA3ICswMjAwLCBFbGkgWmFyZXRza2lpIHdy b3RlOgotPiBUaGlzIEB0YWJsZSB3aWxsIGxvb2sgd2VpcmQgaW4gdGhlIG1hbnVhbDogaXQgcHJv ZHVjZXMgbGluZXMgdGhhdAotPiBiZWdpbiB3aXRoIGEgbG93ZXItY2FzZSBsZXR0ZXIuICBQZXJo YXBzIHJlb3JkZXIgdGh1c2x5OgotCi1PSywgdGhhbmtzIGZvciB0aGUgcmV2aWV3LgotCi0KLVJl Z2FyZHMsCi1KYW4KLQotCi1nZGIvZG9jLwotMjAxMS0wNC0yMiAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCSAgICBFbGkgWmFyZXRza2lpICA8ZWxpekBnbnUu b3JnPgotCi0JKiBnZGIudGV4aW5mbyAoSW5kZXggU2VjdGlvbiBGb3JtYXQpOiBDaGFuZ2UgdGhl IHZlcnNpb24gdG8gNS4KLQlEZXNjcmliZSB0aGUgZGlmZmVyZW50IGZvcm11bGEuCi0KLWdkYi8K LTIwMTEtMDQtMDggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LQotCSogZHdhcmYycmVhZC5jOiBJbmNsdWRlIGN0eXBlLmguCi0JKHN0cnVjdCBtYXBwZWRfaW5k ZXgpOiBOZXcgZmllbGQgdmVyc2lvbi4KLQkobWFwcGVkX2luZGV4X3N0cmluZ19oYXNoKTogTmV3 IHBhcmFtZXRlciBpbmRleF92ZXJzaW9uLiAgTmV3IGNvbW1lbnQKLQlmb3IgaXQuICBDYWxsIHRv bG93ZXIgYXBwcm9wcmlhdGVseS4KLQkoZmluZF9zbG90X2luX21hcHBlZF9oYXNoKTogTmV3IHZh cmlhYmxlIGNtcCwgaW5pdGlhbGl6ZSBpdCwgdXNlIGl0LgotCUNob29zZSB0aGUgcmlnaHQgaW5k ZXggdmVyc2lvbiBmb3IgbWFwcGVkX2luZGV4X3N0cmluZ19oYXNoLgotCShkd2FyZjJfcmVhZF9p bmRleCk6IFN1cHBvcnQgYWxzbyB0aGUgaW5kZXggdmVyc2lvbiA1LiAgSW5pdGlhbGl6ZSB0aGUK LQluZXcgc3RydWN0IG1hcHBlZF9pbmRleCBmaWVsZCB2ZXJzaW9uLgotCShoYXNoX3N0cnRhYl9l bnRyeSk6IFBhc3MgSU5UX01BWCBmb3IgdGhlIG5ldyBwYXJhbWV0ZXIsIGV4cGxhaW4gd2h5Lgot CShmaW5kX3Nsb3QpOiBFeHBsYWluIHRoZSB2ZXJzaW9uIG5lZWRzLiAgUGFzcyBJTlRfTUFYIGZv ciB0aGUgbmV3Ci0JcGFyYW1ldGVyLgotCSh3cml0ZV9wc3ltdGFic190b19pbmRleCk6IFByb2R1 Y2UgdmVyc2lvbiA1LgotCSogbWluc3ltcy5jIChsb29rdXBfbWluaW1hbF9zeW1ib2wpOiBOZXcg dmFyaWFibGUgY21wLCBpbml0aWFsaXplIGl0LAotCXVzZSBpdC4gIE5ldyBjb21tZW50IGZvciBT WU1CT0xfTUFUQ0hFU19TRUFSQ0hfTkFNRS4KLQkqIHBzeW10YWIuYyAobG9va3VwX3BhcnRpYWxf c3ltYm9sKTogRmluZCB0aGUKLQlTWU1CT0xfTUFUQ0hFU19TRUFSQ0hfTkFNRSBzdGFydCBvZiB0 aGUgZm91bmQgYmxvY2sgb2YgbWF0Y2hpbmcKLQllbnRyaWVzLgotCSogc3ltdGFiLmMgKGxvb2t1 cF9zeW1ib2xfaW5fbGFuZ3VhZ2UpOiBSZW1vdmUgdGhlIGNhc2Vfc2Vuc2l0aXZlX29mZgotCU5B TUUgbG93ZXJjYXNpbmcuCi0JKHNlYXJjaF9zeW1ib2xzKTogUGFzcyBSRUdfSUNBU0UgdG8gcmVn Y29tcCBmb3IgY2FzZV9zZW5zaXRpdmVfb2ZmLgotCShjb21wbGV0aW9uX2xpc3RfYWRkX25hbWUp OiBOZXcgdmFyaWFibGUgbmNtcCwgaW5pdGlhbGl6ZSBpdCwgdXNlIGl0LgotCSogc3ltdGFiLmgg KFNZTUJPTF9IQVNIX05FWFQpOiBBbHdheXMgY2FsbCB0b2xvd2VyLgotCSogdXRpbHMuYyAoc3Ry Y21wX2l3KTogU3VwcG9ydCBjYXNlX3NlbnNpdGl2ZV9vZmYuCi0JKHN0cmNtcF9pd19vcmRlcmVk KTogU29ydCBpbiBhIHdheSBjb21wYXRpYmxlIHdpdGggY2FzZV9zZW5zaXRpdmVfb2ZmLgotCU5l dyBmdW5jdGlvbiBjb21tZW50IHBhcnQuICBOZXcgdmFyaWFibGVzIHNhdmVkX3N0cmluZzEsCi0J c2F2ZWRfc3RyaW5nMiBhbmQgY2FzZV9wYXNzLiAgQWRkIGEgcHJvcGVyIHNlY29uZCBwYXNzLgot Ci1nZGIvdGVzdHN1aXRlLwotMjAxMS0wNC0wOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuYmFzZS9mb3J0cmFuLXN5bS1jYXNlLmM6IE5ldyBm aWxlLgotCSogZ2RiLmJhc2UvZm9ydHJhbi1zeW0tY2FzZS5leHA6IE5ldyBmaWxlLgotCSogZ2Ri LmR3YXJmMi9kdzItY2FzZS1pbnNlbnNpdGl2ZS1kZWJ1Zy5TOiBOZXcgZmlsZS4KLQkqIGdkYi5k d2FyZjIvZHcyLWNhc2UtaW5zZW5zaXRpdmUuYzogTmV3IGZpbGUuCi0JKiBnZGIuZHdhcmYyL2R3 Mi1jYXNlLWluc2Vuc2l0aXZlLmV4cDogTmV3IGZpbGUuCi0KLUluZGV4OiBnZGItNy4yLjkwLjIw MTEwNTI1L2dkYi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEw NTI1Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA1LTI1IDE3OjEyOjUxLjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA1LTI1 IDE5OjEyOjMzLjAwMDAwMDAwMCArMDIwMAotQEAgLTE1Miw2ICsxNTIsOSBAQCBERUZfVkVDX0kg KG9mZnNldF90eXBlKTsKLSAgICBhIGNvbW1lbnQgYnkgdGhlIGNvZGUgdGhhdCB3cml0ZXMgdGhl IGluZGV4LiAgKi8KLSBzdHJ1Y3QgbWFwcGVkX2luZGV4Ci0gewotKyAgLyogSW5kZXggZGF0YSBm b3JtYXQgdmVyc2lvbi4gICovCi0rICBpbnQgdmVyc2lvbjsKLSsKLSAgIC8qIFRoZSB0b3RhbCBs ZW5ndGggb2YgdGhlIGJ1ZmZlci4gICovCi0gICBvZmZfdCB0b3RhbF9zaXplOwotIAotQEAgLTE5 OTcsMTcgKzIwMDAsMjMgQEAgY3JlYXRlX2FkZHJtYXBfZnJvbV9pbmRleCAoc3RydWN0IG9iamZp bAotICAgIFNZTUJPTF9IQVNIX05FWFQsIGJ1dCB3ZSBrZWVwIGEgc2VwYXJhdGUgY29weSB0byBt YWludGFpbiBjb250cm9sIG92ZXIgdGhlCi0gICAgaW1wbGVtZW50YXRpb24uICBUaGlzIGlzIG5l Y2Vzc2FyeSBiZWNhdXNlIHRoZSBoYXNoIGZ1bmN0aW9uIGlzIHRpZWQgdG8gdGhlCi0gICAgZm9y bWF0IG9mIHRoZSBtYXBwZWQgaW5kZXggZmlsZS4gIFRoZSBoYXNoIHZhbHVlcyBkbyBub3QgaGF2 ZSB0byBtYXRjaCB3aXRoCi0tICAgU1lNQk9MX0hBU0hfTkVYVC4gICovCi0rICAgU1lNQk9MX0hB U0hfTkVYVC4KLSsgICAKLSsgICBVc2UgSU5UX01BWCBmb3IgSU5ERVhfVkVSU0lPTiBpZiB5b3Ug Z2VuZXJhdGUgdGhlIGN1cnJlbnQgaW5kZXggZm9ybWF0LiAgKi8KLSAKLSBzdGF0aWMgaGFzaHZh bF90Ci0tbWFwcGVkX2luZGV4X3N0cmluZ19oYXNoIChjb25zdCB2b2lkICpwKQotK21hcHBlZF9p bmRleF9zdHJpbmdfaGFzaCAoaW50IGluZGV4X3ZlcnNpb24sIGNvbnN0IHZvaWQgKnApCi0gewot ICAgY29uc3QgdW5zaWduZWQgY2hhciAqc3RyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcDsK LSAgIGhhc2h2YWxfdCByID0gMDsKLSAgIHVuc2lnbmVkIGNoYXIgYzsKLSAKLSAgIHdoaWxlICgo YyA9ICpzdHIrKykgIT0gMCkKLS0gICAgciA9IHIgKiA2NyArIGMgLSAxMTM7Ci0rICAgIHsKLSsg ICAgICBpZiAoaW5kZXhfdmVyc2lvbiA+PSA1KQotKwljID0gdG9sb3dlciAoYyk7Ci0rICAgICAg ciA9IHIgKiA2NyArIGMgLSAxMTM7Ci0rICAgIH0KLSAKLSAgIHJldHVybiByOwotIH0KLUBAIC0y MDIzLDYgKzIwMzIsNyBAQCBmaW5kX3Nsb3RfaW5fbWFwcGVkX2hhc2ggKHN0cnVjdCBtYXBwZWRf Ci0gICBzdHJ1Y3QgY2xlYW51cCAqYmFja190byA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVw LCAwKTsKLSAgIG9mZnNldF90eXBlIGhhc2g7Ci0gICBvZmZzZXRfdHlwZSBzbG90LCBzdGVwOwot KyAgaW50ICgqY21wKSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwotIAotICAgaWYgKGN1 cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzCi0gICAgICAgfHwg Y3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfamF2YQotQEAgLTIwNDUs OSArMjA1NSwxNiBAQCBmaW5kX3Nsb3RfaW5fbWFwcGVkX2hhc2ggKHN0cnVjdCBtYXBwZWRfCi0g CX0KLSAgICAgfQotIAotLSAgaGFzaCA9IG1hcHBlZF9pbmRleF9zdHJpbmdfaGFzaCAobmFtZSk7 Ci0rICAvKiBJbmRleCB2ZXJzaW9uIDQgZGlkIG5vdCBzdXBwb3J0IGNhc2UgaW5zZW5zaXRpdmUg c2VhcmNoZXMuICBCdXQgdGhlCi0rICAgICBpbmRleGVzIGZvciBjYXNlIGluc2Vuc2l0aXZlIGxh bmd1YWdlcyBhcmUgYnVpbHQgaW4gbG93ZXJjYXNlLCB0aGVyZWZvcmUKLSsgICAgIHNpbXVsYXRl IG91ciBOQU1FIGJlaW5nIHNlYXJjaGVkIGlzIGFsc28gbG93ZXJjYXNlZC4gICovCi0rICBoYXNo ID0gbWFwcGVkX2luZGV4X3N0cmluZ19oYXNoICgoaW5kZXgtPnZlcnNpb24gPT0gNAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGNhc2Vfc2Vuc2l0aXZpdHkgPT0gY2Fz ZV9zZW5zaXRpdmVfb2ZmCi0rCQkJCSAgICA/IDUgOiBpbmRleC0+dmVyc2lvbiksCi0rCQkJCSAg IG5hbWUpOwotICAgc2xvdCA9IGhhc2ggJiAoaW5kZXgtPnN5bWJvbF90YWJsZV9zbG90cyAtIDEp OwotICAgc3RlcCA9ICgoaGFzaCAqIDE3KSAmIChpbmRleC0+c3ltYm9sX3RhYmxlX3Nsb3RzIC0g MSkpIHwgMTsKLSsgIGNtcCA9IChjYXNlX3NlbnNpdGl2aXR5ID09IGNhc2Vfc2Vuc2l0aXZlX29u ID8gc3RyY21wIDogc3RyY2FzZWNtcCk7Ci0gCi0gICBmb3IgKDs7KQotICAgICB7Ci1AQCAtMjA2 MSw3ICsyMDc4LDcgQEAgZmluZF9zbG90X2luX21hcHBlZF9oYXNoIChzdHJ1Y3QgbWFwcGVkXwot IAl9Ci0gCi0gICAgICAgc3RyID0gaW5kZXgtPmNvbnN0YW50X3Bvb2wgKyBNQVlCRV9TV0FQIChp bmRleC0+c3ltYm9sX3RhYmxlW2ldKTsKLS0gICAgICBpZiAoIXN0cmNtcCAobmFtZSwgc3RyKSkK LSsgICAgICBpZiAoIWNtcCAobmFtZSwgc3RyKSkKLSAJewotIAkgICp2ZWNfb3V0ID0gKG9mZnNl dF90eXBlICopIChpbmRleC0+Y29uc3RhbnRfcG9vbAotIAkJCQkgICAgICArIE1BWUJFX1NXQVAg KGluZGV4LT5zeW1ib2xfdGFibGVbaSArIDFdKSk7Ci1AQCAtMjEwNSwxNSArMjEyMiwxNyBAQCBk d2FyZjJfcmVhZF9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpCi0gICAvKiBWZXJzaW9ucyBl YXJsaWVyIHRoYW4gMyBlbWl0dGVkIGV2ZXJ5IGNvcHkgb2YgYSBwc3ltYm9sLiAgVGhpcwotICAg ICAgY2F1c2VzIHRoZSBpbmRleCB0byBiZWhhdmUgdmVyeSBwb29ybHkgZm9yIGNlcnRhaW4gcmVx dWVzdHMuICBWZXJzaW9uIDMKLSAgICAgIGNvbnRhaW5lZCBpbmNvbXBsZXRlIGFkZHJtYXAuICBT bywgaXQgc2VlbXMgYmV0dGVyIHRvIGp1c3QgaWdub3JlIHN1Y2gKLS0gICAgIGluZGljZXMuICAq LwotKyAgICAgaW5kaWNlcy4gIEluZGV4IHZlcnNpb24gNCB1c2VzIGEgZGlmZmVyZW50IGhhc2gg ZnVuY3Rpb24gdGhhbiBpbmRleAotKyAgICAgdmVyc2lvbiA1IGFuZCBsYXRlci4gICovCi0gICBp ZiAodmVyc2lvbiA8IDQpCi0gICAgIHJldHVybiAwOwotICAgLyogSW5kZXhlcyB3aXRoIGhpZ2hl ciB2ZXJzaW9uIHRoYW4gdGhlIG9uZSBzdXBwb3J0ZWQgYnkgR0RCIG1heSBiZSBubwotICAgICAg bG9uZ2VyIGJhY2t3YXJkIGNvbXBhdGlibGUuICAqLwotLSAgaWYgKHZlcnNpb24gPiA0KQotKyAg aWYgKHZlcnNpb24gPiA1KQotICAgICByZXR1cm4gMDsKLSAKLSAgIG1hcCA9IE9CU1RBQ0tfWkFM TE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzdHJ1Y3QgbWFwcGVkX2luZGV4KTsKLSsg IG1hcC0+dmVyc2lvbiA9IHZlcnNpb247Ci0gICBtYXAtPnRvdGFsX3NpemUgPSBkd2FyZjJfcGVy X29iamZpbGUtPmdkYl9pbmRleC5zaXplOwotIAotICAgbWV0YWRhdGEgPSAob2Zmc2V0X3R5cGUg KikgKGFkZHIgKyBzaXplb2YgKG9mZnNldF90eXBlKSk7Ci1AQCAtMTU2OTIsMTMgKzE1NzExLDE2 IEBAIHN0cnVjdCBzdHJ0YWJfZW50cnkKLSAgIGNvbnN0IGNoYXIgKnN0cjsKLSB9OwotIAotLS8q IEhhc2ggZnVuY3Rpb24gZm9yIGEgc3RydGFiX2VudHJ5LiAgKi8KLSsvKiBIYXNoIGZ1bmN0aW9u IGZvciBhIHN0cnRhYl9lbnRyeS4KLSsKLSsgICBGdW5jdGlvbiBpcyB1c2VkIG9ubHkgZHVyaW5n IHdyaXRlX2hhc2hfdGFibGUgc28gbm8gaW5kZXggZm9ybWF0IGJhY2t3YXJkCi0rICAgY29tcGF0 aWJpbGl0eSBpcyBuZWVkZWQuICAqLwotIAotIHN0YXRpYyBoYXNodmFsX3QKLSBoYXNoX3N0cnRh Yl9lbnRyeSAoY29uc3Qgdm9pZCAqZSkKLSB7Ci0gICBjb25zdCBzdHJ1Y3Qgc3RydGFiX2VudHJ5 ICplbnRyeSA9IGU7Ci0tICByZXR1cm4gbWFwcGVkX2luZGV4X3N0cmluZ19oYXNoIChlbnRyeS0+ c3RyKTsKLSsgIHJldHVybiBtYXBwZWRfaW5kZXhfc3RyaW5nX2hhc2ggKElOVF9NQVgsIGVudHJ5 LT5zdHIpOwotIH0KLSAKLSAvKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3IgYSBzdHJ0YWJfZW50cnku ICAqLwotQEAgLTE1ODM2LDEyICsxNTg1OCwxNSBAQCBjbGVhbnVwX21hcHBlZF9zeW10YWIgKHZv aWQgKnApCi0gfQotIAotIC8qIEZpbmQgYSBzbG90IGluIFNZTVRBQiBmb3IgdGhlIHN5bWJvbCBO QU1FLiAgUmV0dXJucyBhIHBvaW50ZXIgdG8KLS0gICB0aGUgc2xvdC4gICovCi0rICAgdGhlIHNs b3QuCi0rICAgCi0rICAgRnVuY3Rpb24gaXMgdXNlZCBvbmx5IGR1cmluZyB3cml0ZV9oYXNoX3Rh YmxlIHNvIG5vIGluZGV4IGZvcm1hdCBiYWNrd2FyZAotKyAgIGNvbXBhdGliaWxpdHkgaXMgbmVl ZGVkLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqKgotIGZpbmRf c2xvdCAoc3RydWN0IG1hcHBlZF9zeW10YWIgKnN5bXRhYiwgY29uc3QgY2hhciAqbmFtZSkKLSB7 Ci0tICBvZmZzZXRfdHlwZSBpbmRleCwgc3RlcCwgaGFzaCA9IG1hcHBlZF9pbmRleF9zdHJpbmdf aGFzaCAobmFtZSk7Ci0rICBvZmZzZXRfdHlwZSBpbmRleCwgc3RlcCwgaGFzaCA9IG1hcHBlZF9p bmRleF9zdHJpbmdfaGFzaCAoSU5UX01BWCwgbmFtZSk7Ci0gCi0gICBpbmRleCA9IGhhc2ggJiAo c3ltdGFiLT5zaXplIC0gMSk7Ci0gICBzdGVwID0gKChoYXNoICogMTcpICYgKHN5bXRhYi0+c2l6 ZSAtIDEpKSB8IDE7Ci1AQCAtMTYzNjksNyArMTYzOTQsNyBAQCB3cml0ZV9wc3ltdGFic190b19p bmRleCAoc3RydWN0IG9iamZpbGUgCi0gICB0b3RhbF9sZW4gPSBzaXplX29mX2NvbnRlbnRzOwot IAotICAgLyogVGhlIHZlcnNpb24gbnVtYmVyLiAgKi8KLS0gIHZhbCA9IE1BWUJFX1NXQVAgKDQp OwotKyAgdmFsID0gTUFZQkVfU1dBUCAoNSk7Ci0gICBvYnN0YWNrX2dyb3cgKCZjb250ZW50cywg JnZhbCwgc2l6ZW9mICh2YWwpKTsKLSAKLSAgIC8qIFRoZSBvZmZzZXQgb2YgdGhlIENVIGxpc3Qg ZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuICAqLwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1 MjUvZ2RiL21pbnN5bXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA1MjUub3Jp Zy9nZGIvbWluc3ltcy5jCTIwMTEtMDUtMjUgMTc6MTI6NTEuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMi45MC4yMDExMDUyNS9nZGIvbWluc3ltcy5jCTIwMTEtMDUtMjUgMTc6MTM6MTMuMDAw MDAwMDAwICswMjAwCi1AQCAtMjM5LDExICsyMzksMTYgQEAgbG9va3VwX21pbmltYWxfc3ltYm9s IChjb25zdCBjaGFyICpuYW1lLAotIAotIAkJICBpZiAocGFzcyA9PSAxKQotIAkJICAgIHsKLS0J CSAgICAgIG1hdGNoID0gc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwKLS0J CQkJICAgICAgbW9kaWZpZWRfbmFtZSkgPT0gMDsKLSsJCSAgICAgIGludCAoKmNtcCkgKGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLSsKLSsJCSAgICAgIGNtcCA9IChjYXNlX3NlbnNpdGl2 aXR5ID09IGNhc2Vfc2Vuc2l0aXZlX29uCi0rCQkgICAgICAgICAgICAgPyBzdHJjbXAgOiBzdHJj YXNlY21wKTsKLSsJCSAgICAgIG1hdGNoID0gY21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3lt Ym9sKSwKLSsJCQkJICAgbW9kaWZpZWRfbmFtZSkgPT0gMDsKLSAJCSAgICB9Ci0gCQkgIGVsc2UK LSAJCSAgICB7Ci0rCQkgICAgICAvKiBUaGUgZnVuY3Rpb24gcmVzcGVjdHMgQ0FTRV9TRU5TSVRJ VklUWS4gICovCi0gCQkgICAgICBtYXRjaCA9IFNZTUJPTF9NQVRDSEVTX1NFQVJDSF9OQU1FICht c3ltYm9sLAotIAkJCQkJCQkgIG1vZGlmaWVkX25hbWUpOwotIAkJICAgIH0KLUluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNTI1L2dkYi9wc3ltdGFiLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkw LjIwMTEwNTI1Lm9yaWcvZ2RiL3BzeW10YWIuYwkyMDExLTA0LTIwIDIyOjEwOjI5LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3BzeW10YWIuYwkyMDExLTA1LTI1 IDE3OjEzOjEzLjAwMDAwMDAwMCArMDIwMAotQEAgLTY5MCw4ICs2OTAsMTUgQEAgbG9va3VwX3Bh cnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9zeQotIAlpbnRlcm5hbF9lcnJvciAoX19GSUxF X18sIF9fTElORV9fLAotIAkJCV8oImZhaWxlZCBpbnRlcm5hbCBjb25zaXN0ZW5jeSBjaGVjayIp KTsKLSAKLS0gICAgICB3aGlsZSAodG9wIDw9IHJlYWxfdG9wCi0tCSAgICAgJiYgU1lNQk9MX01B VENIRVNfU0VBUkNIX05BTUUgKCp0b3AsIHNlYXJjaF9uYW1lKSkKLSsgICAgICAvKiBGb3IgYGNh c2Vfc2Vuc2l0aXZpdHkgPT0gY2FzZV9zZW5zaXRpdmVfb2ZmJyBzdHJjbXBfaXdfb3JkZXJlZCB3 aWxsCi0rCSBzZWFyY2ggbW9yZSBleGFjdGx5IHRoYW4gd2hhdCBtYXRjaGVzIFNZTUJPTF9NQVRD SEVTX1NFQVJDSF9OQU1FLiAgKi8KLSsgICAgICB3aGlsZSAodG9wID49IHN0YXJ0ICYmIFNZTUJP TF9NQVRDSEVTX1NFQVJDSF9OQU1FICgqdG9wLCBzZWFyY2hfbmFtZSkpCi0rCXRvcC0tOwotKwot KyAgICAgIC8qIEZpeHVwIHRvIGhhdmUgYSBzeW1ib2wgd2hpY2ggbWF0Y2hlcyBTWU1CT0xfTUFU Q0hFU19TRUFSQ0hfTkFNRS4gICovCi0rICAgICAgdG9wKys7Ci0rCi0rICAgICAgd2hpbGUgKHRv cCA8PSByZWFsX3RvcCAmJiBTWU1CT0xfTUFUQ0hFU19TRUFSQ0hfTkFNRSAoKnRvcCwgc2VhcmNo X25hbWUpKQotIAl7Ci0gCSAgaWYgKHN5bWJvbF9tYXRjaGVzX2RvbWFpbiAoU1lNQk9MX0xBTkdV QUdFICgqdG9wKSwKLSAJCQkJICAgICBTWU1CT0xfRE9NQUlOICgqdG9wKSwgZG9tYWluKSkKLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9zeW10YWIuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuOTAuMjAxMTA1MjUub3JpZy9nZGIvc3ltdGFiLmMJMjAxMS0wNS0yNSAxNzoxMjo1MS4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9zeW10YWIuYwkyMDEx LTA1LTI1IDE3OjEzOjQ5LjAwMDAwMDAwMCArMDIwMAotQEAgLTEwNjIsMTkgKzEwNjIsNiBAQCBs b29rdXBfc3ltYm9sX2luX2xhbmd1YWdlIChjb25zdCBjaGFyICpuCi0gCX0KLSAgICAgfQotIAot LSAgaWYgKGNhc2Vfc2Vuc2l0aXZpdHkgPT0gY2FzZV9zZW5zaXRpdmVfb2ZmKQotLSAgICB7Ci0t ICAgICAgY2hhciAqY29weTsKLS0gICAgICBpbnQgbGVuLCBpOwotLQotLSAgICAgIGxlbiA9IHN0 cmxlbiAobmFtZSk7Ci0tICAgICAgY29weSA9IChjaGFyICopIGFsbG9jYSAobGVuICsgMSk7Ci0t ICAgICAgZm9yIChpPSAwOyBpIDwgbGVuOyBpKyspCi0tICAgICAgICBjb3B5W2ldID0gdG9sb3dl ciAobmFtZVtpXSk7Ci0tICAgICAgY29weVtsZW5dID0gMDsKLS0gICAgICBtb2RpZmllZF9uYW1l ID0gY29weTsKLS0gICAgfQotLQotICAgcmV0dXJudmFsID0gbG9va3VwX3N5bWJvbF9hdXggKG1v ZGlmaWVkX25hbWUsIGJsb2NrLCBkb21haW4sIGxhbmcsCi0gCQkJCSBpc19hX2ZpZWxkX29mX3Ro aXMpOwotICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotQEAgLTMxMDYsNyArMzA5Myw5IEBAIHNl YXJjaF9zeW1ib2xzIChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnUKLSAJICAgIH0KLSAJfQotIAot LSAgICAgIGVycmNvZGUgPSByZWdjb21wICgmZGF0dW0ucHJlZywgcmVnZXhwLCBSRUdfTk9TVUIp OwotKyAgICAgIGVycmNvZGUgPSByZWdjb21wICgmZGF0dW0ucHJlZywgcmVnZXhwLAotKwkJCSBS RUdfTk9TVUIgfCAoY2FzZV9zZW5zaXRpdml0eSA9PSBjYXNlX3NlbnNpdGl2ZV9vZmYKLSsJCQkJ ICAgICAgPyBSRUdfSUNBU0UgOiAwKSk7Ci0gICAgICAgaWYgKGVycmNvZGUgIT0gMCkKLSAJewot IAkgIGNoYXIgKmVyciA9IGdldF9yZWdjb21wX2Vycm9yIChlcnJjb2RlLCAmZGF0dW0ucHJlZyk7 Ci1AQCAtMzU0Niw3ICszNTM1LDExIEBAIHJicmVha19jb21tYW5kIChjaGFyICpyZWdleHAsIGlu dCBmcm9tX3QKLSBzdGF0aWMgaW50Ci0gY29tcGFyZV9zeW1ib2xfbmFtZSAoY29uc3QgY2hhciAq bmFtZSwgY29uc3QgY2hhciAqc3ltX3RleHQsIGludCBzeW1fdGV4dF9sZW4pCi0gewotLSAgaWYg KHN0cm5jbXAgKG5hbWUsIHN5bV90ZXh0LCBzeW1fdGV4dF9sZW4pICE9IDApCi0rICBpbnQgKCpu Y21wKSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7Ci0rCi0rICBuY21wID0g KGNhc2Vfc2Vuc2l0aXZpdHkgPT0gY2FzZV9zZW5zaXRpdmVfb24gPyBzdHJuY21wIDogc3RybmNh c2VjbXApOwotKwotKyAgaWYgKG5jbXAgKG5hbWUsIHN5bV90ZXh0LCBzeW1fdGV4dF9sZW4pICE9 IDApCi0gICAgIHJldHVybiAwOwotIAotICAgaWYgKHN5bV90ZXh0W3N5bV90ZXh0X2xlbl0gPT0g JygnKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3N5bXRhYi5oCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDUyNS5vcmlnL2dkYi9zeW10YWIuaAkyMDExLTA1LTI1IDE3 OjEyOjUxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3N5bXRh Yi5oCTIwMTEtMDUtMjUgMTc6MTM6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAtMTAzNiw3ICsxMDM2 LDggQEAgZXh0ZXJuIHVuc2lnbmVkIGludCBtc3ltYm9sX2hhc2ggKGNvbnN0IAotICAgIGlzIG9u bHkgYSBHREIgaW4tbWVtb3J5IGNvbXB1dGVkIHZhbHVlIHdpdGggbm8gZXh0ZXJuYWwgZmlsZXMg Y29tcGF0aWJpbGl0eQotICAgIHJlcXVpcmVtZW50cy4gICovCi0gCi0tI2RlZmluZSBTWU1CT0xf SEFTSF9ORVhUKGhhc2gsIGMpICgoaGFzaCkgKiA2NyArIChjKSAtIDExMykKLSsjZGVmaW5lIFNZ TUJPTF9IQVNIX05FWFQoaGFzaCwgYykgXAotKyAgKChoYXNoKSAqIDY3ICsgdG9sb3dlciAoKHVu c2lnbmVkIGNoYXIpIChjKSkgLSAxMTMpCi0gCi0gZXh0ZXJuIHN0cnVjdCBvYmpmaWxlICogbXN5 bWJvbF9vYmpmaWxlIChzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKnN5bSk7Ci0gCi1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDUyNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZvcnRyYW4tc3ltLWNhc2Uu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9m b3J0cmFuLXN5bS1jYXNlLmMJMjAxMS0wNS0yNSAxNzoxMzoxMy4wMDAwMDAwMDAgKzAyMDAKLUBA IC0wLDAgKzEsMjIgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05V IGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsK LStpbnQKLSttYWluIChpbnQgYXJnYywgY2hhciAqKmFSR3YpCi0rewotKyAgcmV0dXJuIDA7Ci0r fQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9mb3J0 cmFuLXN5bS1jYXNlLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9mb3J0cmFuLXN5bS1jYXNlLmV4cAkyMDExLTA1LTI1IDE3OjEzOjEzLjAw MDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwyNyBAQAotKyMgQ29weXJpZ2h0IChDKSAyMDExIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgZm9ydHJhbi1zeW0tY2FzZQotK2lmIHsgW3ByZXBhcmVf Zm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9XSB9IHsKLSsgICAgcmV0dXJu IC0xCi0rfQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0r Z2RiX3Rlc3QgInNldCBsYW5ndWFnZSBmb3J0cmFuIiB7V2FybmluZzogdGhlIGN1cnJlbnQgbGFu Z3VhZ2UgZG9lcyBub3QgbWF0Y2ggdGhpcyBmcmFtZVwufQotKwotK2dkYl90ZXN0ICJmcmFtZSIg IiwgYVJHdj0uKiIKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi90ZXN0c3VpdGUvZ2Ri LmR3YXJmMi9kdzItY2FzZS1pbnNlbnNpdGl2ZS1kZWJ1Zy5TCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45 MC4yMDExMDUyNS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWNhc2UtaW5zZW5zaXRpdmUt ZGVidWcuUwkyMDExLTA1LTI1IDE3OjEzOjEzLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwx MDIgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2Vy LgotKwotKyAgIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsJLnNlY3Rp b24gLmRlYnVnX2luZm8KLSsuTGN1MV9iZWdpbjoKLSsJLyogQ1UgaGVhZGVyICovCi0rCS40Ynl0 ZQkuTGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQg Ki8KLSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLwotKwku NGJ5dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8K LSsJLmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KLSsKLSsJLyogQ1UgZGllICovCi0rCS51 bGViMTI4IDEJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5hc2NpaQki ZmlsZTEudHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkuYXNjaWkJIkdOVSBDIDMuMy4zXDAi CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJOAkJCQkvKiBEV19BVF9sYW5ndWFnZSAo RFdfTEFOR19Gb3J0cmFuOTApICovCi0rCS40Ynl0ZQkJRlVOQ19sYW5nCQkvKiBEV19BVF9sb3df cGMgKi8KLSsJLjRieXRlCQltYWluCQkJLyogRFdfQVRfaGlnaF9wYyAqLwotKwotKwkudWxlYjEy OAkzCQkJLyogQWJicmV2OiBEV19UQUdfc3VicHJvZ3JhbSAqLwotKwkuYnl0ZQkJMQkJCS8qIERX X0FUX2V4dGVybmFsICovCi0rCS5hc2NpaQkJIkZVTkNfbGFuZ1wwIgkJLyogRFdfQVRfbmFtZSAq LwotKwkuNGJ5dGUJCUZVTkNfbGFuZwkJLyogRFdfQVRfbG93X3BjICovCi0rCS40Ynl0ZQkJbWFp bgkJCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9wcm90b3R5cGVk ICovCi0rCS40Ynl0ZQkJLkx0eXBlIC0gLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLwotKwot Ky5MdHlwZToKLSsJLnVsZWIxMjggCTB4NQkJCS8qIEFiYnJldjogRFdfVEFHX2Jhc2VfdHlwZSAq LwotKwkuYnl0ZQkJMHg0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5ieXRlCQkweDUJCQkv KiBEV19BVF9lbmNvZGluZyAqLwotKwkuYXNjaWkgCQkiZm9vXDAiCQkJLyogRFdfQVRfbmFtZSAq LwotKwotKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLwotKy5MY3UxX2Vu ZDoKLSsKLSsvKiBBYmJyZXYgdGFibGUgKi8KLSsJLnNlY3Rpb24gLmRlYnVnX2FiYnJldgotKy5M YWJicmV2MV9iZWdpbjoKLSsJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGVi MTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5ieXRlCQkxCQkJLyogaGFz X2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIx MjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgyNQkJCS8qIERXX0FU X3Byb2R1Y2VyICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51 bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBE V19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJ LnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4MTIJCQkvKiBE V19BVF9oaWdoX3BjICovCi0rCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLwotKwku Ynl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLwotKwotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgy ZQkJCS8qIERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVu ICovCi0rCS51bGViMTI4CTB4M2YJCQkvKiBEV19BVF9leHRlcm5hbCAqLwotKwkudWxlYjEyOAkw eGMJCQkvKiBEV19GT1JNX2ZsYWcgKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAq LwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDEx CQkJLyogRFdfQVRfbG93X3BjICovCi0rCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAq LwotKwkudWxlYjEyOAkweDEyCQkJLyogRFdfQVRfaGlnaF9wYyAqLwotKwkudWxlYjEyOAkweDEJ CQkvKiBEV19GT1JNX2FkZHIgKi8KLSsJLnVsZWIxMjgJMHgyNwkJCS8qIERXX0FUX3Byb3RvdHlw ZWQgKi8KLSsJLnVsZWIxMjgJMHhjCQkJLyogRFdfRk9STV9mbGFnICovCi0rCS51bGViMTI4CTB4 NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQg Ki8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJMHg1CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVs ZWIxMjgJMHgyNAkJCS8qIERXX1RBR19iYXNlX3R5cGUgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIERX X2NoaWxkcmVuX25vICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwot KwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4M2UJCQkv KiBEV19BVF9lbmNvZGluZyAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICov Ci0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyog RFdfRk9STV9zdHJpbmcgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNTI1L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItY2FzZS1pbnNlbnNpdGl2ZS5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw ICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIv ZHcyLWNhc2UtaW5zZW5zaXRpdmUuYwkyMDExLTA1LTI1IDE3OjEzOjEzLjAwMDAwMDAwMCArMDIw MAotQEAgLTAsMCArMSwzOCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRo ZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LwotKwotKy8qIFVzZSBEV19MQU5HX0ZvcnRyYW45MCBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBEV0FS Ri4gICovCi0rCi0rdm9pZAotK0ZVTkNfbGFuZyAodm9pZCkKLSt7Ci0rfQotKwotKy8qIFN5bWJv bCBpcyBwcmVzZW50IG9ubHkgaW4gRUxGIC5zeW10YWIuICAqLwotKwotK3ZvaWQKLStGVU5DX3N5 bXRhYiAodm9pZCkKLSt7Ci0rfQotKwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAgRlVOQ19s YW5nICgpOwotKyAgRlVOQ19zeW10YWIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDUyNS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWNhc2UtaW5zZW5z aXRpdmUuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvdGVzdHN1aXRlL2dk Yi5kd2FyZjIvZHcyLWNhc2UtaW5zZW5zaXRpdmUuZXhwCTIwMTEtMDUtMjUgMTc6MTM6MTMuMDAw MDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDQ5IEBACi0rIyBDb3B5cmlnaHQgMjAxMSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r IwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u Ci0rbG9hZF9saWIgZHdhcmYuZXhwCi0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9u IHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgotK2lmIHshW2R3YXJm Ml9zdXBwb3J0XX0gewotKyAgICByZXR1cm4gMCAgCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiZHcy LWNhc2UtaW5zZW5zaXRpdmUiCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3Rm aWxlfS5leHAgJHt0ZXN0ZmlsZX0gW2xpc3QgJHt0ZXN0ZmlsZX0uYyAke3Rlc3RmaWxlfS1kZWJ1 Zy5TXSB7bm9kZWJ1Z31dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX3Rlc3QgInNo b3cgY2FzZS1zZW5zaXRpdmUiIHtDYXNlIHNlbnNpdGl2aXR5IGluIG5hbWUgc2VhcmNoIGlzICJh dXRvOyBjdXJyZW50bHkgb24iXC59Ci0rCi0rZ2RiX3Rlc3QgImluZm8gZnVuY3Rpb25zIGZVbkNf bGFuZyIgXAotKwkgIkFsbCBmdW5jdGlvbnMgbWF0Y2hpbmcgcmVndWxhciBleHByZXNzaW9uIFwi ZlVuQ19sYW5nXCI6IiBcCi0rCSAicmVnZXhwIGNhc2Utc2Vuc2l0aXZlIG9uIgotKwotK2dkYl90 ZXN0ICJzZXQgY2FzZS1zZW5zaXRpdmUgb2ZmIiB7d2FybmluZzogdGhlIGN1cnJlbnQgY2FzZSBz ZW5zaXRpdml0eSBzZXR0aW5nIGRvZXMgbm90IG1hdGNoIHRoZSBsYW5ndWFnZVwufQotKwotK2dk Yl90ZXN0ICJpbmZvIGZ1bmN0aW9ucyBmVW5DX2xhbmciIFwKLSsJICJBbGwgZnVuY3Rpb25zIG1h dGNoaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBcImZVbkNfbGFuZ1wiOlxbXHJcblxdK0ZpbGUgZmls ZTEudHh0OlxyXG5mb28gRlVOQ19sYW5nXFwodm9pZFxcKTsiIFwKLSsJICJyZWdleHAgY2FzZS1z ZW5zaXRpdmUgb2ZmIgotKwotK2dkYl90ZXN0ICJwIGZ1TkNfbGFuZyIgeyA9IHtmb28gXCh2b2lk XCl9IDB4WzAtOWEtZl0rIDxGVU5DX2xhbmc+fQotK2dkYl90ZXN0ICJwIGZ1TkNfc3ltdGFiIiB7 ID0gezx0ZXh0IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPn0gMHhbMC05YS1mXSsgPEZVTkNfc3lt dGFiPn0KLSsKLStpZiB7W2dkYl9icmVha3BvaW50ICJmdU5DX2xhbmciXSA9PSAxfSB7Ci0rICAg IHBhc3MgInNldHRpbmcgYnJlYWtwb2ludCBhdCBmdU5DX2xhbmciCi0rfQotKwotK2lmIHtbZ2Ri X2JyZWFrcG9pbnQgImZ1TkNfc3ltdGFiIl0gPT0gMX0gewotKyAgICBwYXNzICJzZXR0aW5nIGJy ZWFrcG9pbnQgYXQgZnVOQ19zeW10YWIiCi0rfQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUv Z2RiL3V0aWxzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNTI1Lm9yaWcvZ2Ri L3V0aWxzLmMJMjAxMS0wNS0yNSAxNzoxMjo1MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4y LjkwLjIwMTEwNTI1L2dkYi91dGlscy5jCTIwMTEtMDUtMjUgMTc6MTM6MTMuMDAwMDAwMDAwICsw MjAwCi1AQCAtMzAwMywxMCArMzAwMywxMiBAQCBzdHJjbXBfaXcgKGNvbnN0IGNoYXIgKnN0cmlu ZzEsIGNvbnN0IGNoCi0gCXsKLSAJICBzdHJpbmcyKys7Ci0gCX0KLS0gICAgICBpZiAoKnN0cmlu ZzEgIT0gKnN0cmluZzIpCi0tCXsKLS0JICBicmVhazsKLS0JfQotKyAgICAgIGlmIChjYXNlX3Nl bnNpdGl2aXR5ID09IGNhc2Vfc2Vuc2l0aXZlX29uICYmICpzdHJpbmcxICE9ICpzdHJpbmcyKQot KwlicmVhazsKLSsgICAgICBpZiAoY2FzZV9zZW5zaXRpdml0eSA9PSBjYXNlX3NlbnNpdGl2ZV9v ZmYKLSsJICAmJiAodG9sb3dlciAoKHVuc2lnbmVkIGNoYXIpICpzdHJpbmcxKQotKwkgICAgICAh PSB0b2xvd2VyICgodW5zaWduZWQgY2hhcikgKnN0cmluZzIpKSkKLSsJYnJlYWs7Ci0gICAgICAg aWYgKCpzdHJpbmcxICE9ICdcMCcpCi0gCXsKLSAJICBzdHJpbmcxKys7Ci1AQCAtMzAyNyw2ICsz MDI5LDEwIEBAIHN0cmNtcF9pdyAoY29uc3QgY2hhciAqc3RyaW5nMSwgY29uc3QgY2gKLSAgICBz dHJjbXBfaXcoTElTVF9FTFQsIE5BTUUpLCB0aGVuIHRoZSBwbGFjZSB0byBzdGFydCBsb29raW5n IGlzIHJpZ2h0Ci0gICAgd2hlcmUgdGhpcyBmdW5jdGlvbiB3b3VsZCBwdXQgTkFNRS4KLSAKLSsg ICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgbmV1dHJhbCB0byB0aGUgQ0FTRV9TRU5TSVRJVklUWSBz ZXR0aW5nIGFzIHRoZSB1c2VyCi0rICAgbWF5IGNob29zZSBpdCBkdXJpbmcgbGF0ZXIgbG9va3Vw LiAgVGhlcmVmb3JlIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHNvcnRzCi0rICAgcHJpbWFyaWx5IGNh c2UtaW5zZW5zaXRpdmVseSBhbmQgc2Vjb25kYXJpbHkgY2FzZS1zZW5zaXRpdmVseS4KLSsKLSAg ICBIZXJlIGFyZSBzb21lIGV4YW1wbGVzIG9mIHdoeSB1c2luZyBzdHJjbXAgdG8gc29ydCBpcyBh IGJhZCBpZGVhOgotIAotICAgIFdoaXRlc3BhY2UgZXhhbXBsZToKLUBAIC0zMDUyLDggKzMwNTgs MTAgQEAgc3RyY21wX2l3IChjb25zdCBjaGFyICpzdHJpbmcxLCBjb25zdCBjaAotIGludAotIHN0 cmNtcF9pd19vcmRlcmVkIChjb25zdCBjaGFyICpzdHJpbmcxLCBjb25zdCBjaGFyICpzdHJpbmcy KQotIHsKLS0gIC8qIEZvcm1hdHRpbmcgc3R1Yi4gICovCi0tICBpZiAoMSkKLSsgIGNvbnN0IGNo YXIgKnNhdmVkX3N0cmluZzEgPSBzdHJpbmcxLCAqc2F2ZWRfc3RyaW5nMiA9IHN0cmluZzI7Ci0r ICBlbnVtIGNhc2Vfc2Vuc2l0aXZpdHkgY2FzZV9wYXNzID0gY2FzZV9zZW5zaXRpdmVfb2ZmOwot KwotKyAgZm9yICg7OykKLSAgICAgewotICAgICAgIC8qIEMxIGFuZCBDMiBhcmUgdmFsaWQgb25s eSBpZiAqc3RyaW5nMSAhPSAnXDAnICYmICpzdHJpbmcyICE9ICdcMCcuCi0gCSBQcm92aWRlIHN0 dWIgY2hhcmFjdGVycyBpZiB3ZSBhcmUgYWxyZWFkeSBhdCB0aGUgZW5kIG9mIG9uZSBvZiB0aGUK LUBAIC0zMDY3LDggKzMwNzUsMTcgQEAgc3RyY21wX2l3X29yZGVyZWQgKGNvbnN0IGNoYXIgKnN0 cmluZzEsIAotIAkgIHdoaWxlIChpc3NwYWNlICgqc3RyaW5nMikpCi0gCSAgICBzdHJpbmcyKys7 Ci0gCi0rCSAgc3dpdGNoIChjYXNlX3Bhc3MpCi0rCSAgewotKwkgICAgY2FzZSBjYXNlX3NlbnNp dGl2ZV9vZmY6Ci0rCSAgICAgIGMxID0gdG9sb3dlciAoKHVuc2lnbmVkIGNoYXIpICpzdHJpbmcx KTsKLSsJICAgICAgYzIgPSB0b2xvd2VyICgodW5zaWduZWQgY2hhcikgKnN0cmluZzIpOwotKwkg ICAgICBicmVhazsKLSsJICAgIGNhc2UgY2FzZV9zZW5zaXRpdmVfb246Ci0gCSAgICAgIGMxID0g KnN0cmluZzE7Ci0gCSAgICAgIGMyID0gKnN0cmluZzI7Ci0rCSAgICAgIGJyZWFrOwotKwkgIH0K LSAJICBpZiAoYzEgIT0gYzIpCi0gCSAgICBicmVhazsKLSAKLUBAIC0zMDg2LDcgKzMxMDMsNyBA QCBzdHJjbXBfaXdfb3JkZXJlZCAoY29uc3QgY2hhciAqc3RyaW5nMSwgCi0gCSAgICAgY29tcGFy aXNvbiBpbiB0aGUgY2FzZXMgd2hlcmUgb25lIG9mIHRoZW0gaXMgJ1wwJyBvciAnKCcuICAqLwot IAljYXNlICdcMCc6Ci0gCSAgaWYgKCpzdHJpbmcyID09ICdcMCcpCi0tCSAgICByZXR1cm4gMDsK LSsJICAgIGJyZWFrOwotIAkgIGVsc2UKLSAJICAgIHJldHVybiAtMTsKLSAJY2FzZSAnKCc6Ci1A QCAtMzA5Nyw5ICszMTE0LDIyIEBAIHN0cmNtcF9pd19vcmRlcmVkIChjb25zdCBjaGFyICpzdHJp bmcxLCAKLSAJZGVmYXVsdDoKLSAJICBpZiAoKnN0cmluZzIgPT0gJ1wwJyB8fCAqc3RyaW5nMiA9 PSAnKCcpCi0gCSAgICByZXR1cm4gMTsKLS0JICBlbHNlCi0tCSAgICByZXR1cm4gYzEgLSBjMjsK LSsJICBlbHNlIGlmIChjMSA+IGMyKQotKwkgICAgcmV0dXJuIDE7Ci0rCSAgZWxzZSBpZiAoYzEg PCBjMikKLSsJICAgIHJldHVybiAtMTsKLSsJICAvKiBQQVNTVEhSVSAqLwotIAl9Ci0rCi0rICAg ICAgaWYgKGNhc2VfcGFzcyA9PSBjYXNlX3NlbnNpdGl2ZV9vbikKLSsJcmV0dXJuIDA7Ci0rICAg ICAgCi0rICAgICAgLyogT3RoZXJ3aXNlIHRoZSBzdHJpbmdzIHdlcmUgZXF1YWwgaW4gY2FzZSBp bnNlbnNpdGl2ZSB3YXksIG1ha2UKLSsJIGEgbW9yZSBmaW5lIGdyYWluZWQgY29tcGFyaXNvbiBp biBhIGNhc2Ugc2Vuc2l0aXZlIHdheS4gICovCi0rCi0rICAgICAgY2FzZV9wYXNzID0gY2FzZV9z ZW5zaXRpdmVfb247Ci0rICAgICAgc3RyaW5nMSA9IHNhdmVkX3N0cmluZzE7Ci0rICAgICAgc3Ry aW5nMiA9IHNhdmVkX3N0cmluZzI7Ci0gICAgIH0KLSB9Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6 NzAxMTMxLXJlYWRsaW5lNjItMW9mMy5wYXRjaCBiL2dkYi1iejcwMTEzMS1yZWFkbGluZTYyLTFv ZjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YmE3YmMuLjAwMDAwMDAK LS0tIGEvZ2RiLWJ6NzAxMTMxLXJlYWRsaW5lNjItMW9mMy5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDIxMjUyICswLDAgQEAKLWFyY2hlci1qYW5rcmF0b2NodmlsLXJlYWRsaW5lNjIKLWIxMzcw NmFiYmVlOTY0NmY0ZGU1MjJjMDU1MmRkZDY4ZDFhNGY0M2EKLQotSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL2NvbmZpZy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3 MDMub3JpZy9nZGIvY29uZmlnLmluCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvY29uZmlnLmluCTIwMTEtMDctMDMgMTA6NDE6 MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtOTUzLDkgKzk1Myw2IEBACi0gLyogRGVmaW5lIHRvIGBp bnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLwotICN1bmRlZiBwaWRfdAot IAotLS8qIHJlYWRsaW5lLTYuMCBzdGFydGVkIHRvIHVzZSBkaWZmZXJlbnQgbmFtZS4gKi8KLS0j dW5kZWYgcmVhZGxpbmVfZWNob2luZ19wCi0tCi0gLyogRGVmaW5lIHRvIHRoZSBlcXVpdmFsZW50 IG9mIHRoZSBDOTkgJ3Jlc3RyaWN0JyBrZXl3b3JkLCBvciB0bwotICAgIG5vdGhpbmcgaWYgdGhp cyBpcyBub3Qgc3VwcG9ydGVkLiAgRG8gbm90IGRlZmluZSBpZiByZXN0cmljdCBpcwotICAgIHN1 cHBvcnRlZCBkaXJlY3RseS4gICovCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvY29u ZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9jb25m aWd1cmUJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9jb25maWd1cmUJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAy MDAKLUBAIC0xMDIzNSwzOSArMTAyMzUsNiBAQCBpZiB0ZXN0ICIkd2l0aF9zeXN0ZW1fcmVhZGxp bmUiID0geWVzOyB0Ci0gICBSRUFETElORV9ERVBTPQotICAgUkVBRExJTkVfQ0ZMQUdTPQotICAg UkVBRExJTkVfVEVYSV9JTkNGTEFHPQotLQotLSAgIyByZWFkbGluZS02LjAgc3RhcnRlZCB0byB1 c2UgdGhlIG5hbWUgYF9ybF9lY2hvaW5nX3AnLgotLSAgIyBgJChSRUFETElORV9ESVIpLycgb2Yg YnVuZGxlZCByZWFkbGluZSB3b3VsZCBub3QgcmVzb2x2ZSBpbiBjb25maWd1cmUuCi0tCi0tICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciByZWFk bGluZV9lY2hvaW5nX3AiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciByZWFkbGluZV9l Y2hvaW5nX3AuLi4gIiA+JjY7IH0KLS0gIHNhdmVfTElCUz0kTElCUwotLSAgTElCUz0iJExJQlMg JFJFQURMSU5FIgotLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4 dAotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0KLS1pbnQKLS1tYWluICgpCi0tewotLWV4dGVy biBpbnQgcmVhZGxpbmVfZWNob2luZ19wOwotLQkJCQkgICAgcmV0dXJuIHJlYWRsaW5lX2VjaG9p bmdfcDsKLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1pZiBhY19mbl9jX3RyeV9s aW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBSRUFETElORV9FQ0hPSU5HX1A9eWVzCi0tZWxzZQot LSAgUkVBRExJTkVfRUNIT0lOR19QPW5vCi0tCi0tJGFzX2VjaG8gIiNkZWZpbmUgcmVhZGxpbmVf ZWNob2luZ19wIF9ybF9lY2hvaW5nX3AiID4+Y29uZmRlZnMuaAotLQotLWZpCi0tcm0gLWYgY29y ZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0tICAgIGNvbmZ0ZXN0JGFjX2V4 ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICBMSUJTPSIkc2F2ZV9MSUJTIgotLSAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFETElORV9FQ0hPSU5H X1AiID4mNQotLSRhc19lY2hvICIkUkVBRExJTkVfRUNIT0lOR19QIiA+JjY7IH0KLSBlbHNlCi0g ICBSRUFETElORT0nJChSRUFETElORV9ESVIpL2xpYnJlYWRsaW5lLmEnCi0gICBSRUFETElORV9E RVBTPSckKFJFQURMSU5FKScKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9jb25maWd1 cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2NvbmZp Z3VyZS5hYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAw MCArMDIwMAotQEAgLTczMiwyMSArNzMyLDYgQEAgaWYgdGVzdCAiJHdpdGhfc3lzdGVtX3JlYWRs aW5lIiA9IHllczsgdAotICAgUkVBRExJTkVfREVQUz0KLSAgIFJFQURMSU5FX0NGTEFHUz0KLSAg IFJFQURMSU5FX1RFWElfSU5DRkxBRz0KLS0KLS0gICMgcmVhZGxpbmUtNi4wIHN0YXJ0ZWQgdG8g dXNlIHRoZSBuYW1lIGBfcmxfZWNob2luZ19wJy4KLS0gICMgYCQoUkVBRExJTkVfRElSKS8nIG9m IGJ1bmRsZWQgcmVhZGxpbmUgd291bGQgbm90IHJlc29sdmUgaW4gY29uZmlndXJlLgotLQotLSAg QUNfTVNHX0NIRUNLSU5HKFtmb3IgcmVhZGxpbmVfZWNob2luZ19wXSkKLS0gIHNhdmVfTElCUz0k TElCUwotLSAgTElCUz0iJExJQlMgJFJFQURMSU5FIgotLSAgQUNfTElOS19JRkVMU0UoQUNfTEFO R19QUk9HUkFNKCxbW2V4dGVybiBpbnQgcmVhZGxpbmVfZWNob2luZ19wOwotLQkJCQkgICAgcmV0 dXJuIHJlYWRsaW5lX2VjaG9pbmdfcDtdXSksCi0tCQkgW1JFQURMSU5FX0VDSE9JTkdfUD15ZXNd LAotLQkJIFtSRUFETElORV9FQ0hPSU5HX1A9bm8KLS0JCSAgQUNfREVGSU5FKFtyZWFkbGluZV9l Y2hvaW5nX3BdLCBbX3JsX2VjaG9pbmdfcF0sCi0tCQkJICAgIFtyZWFkbGluZS02LjAgc3RhcnRl ZCB0byB1c2UgZGlmZmVyZW50IG5hbWUuXSldKQotLSAgTElCUz0iJHNhdmVfTElCUyIKLS0gIEFD X01TR19SRVNVTFQoWyRSRUFETElORV9FQ0hPSU5HX1BdKQotIGVsc2UKLSAgIFJFQURMSU5FPSck KFJFQURMSU5FX0RJUikvbGlicmVhZGxpbmUuYScKLSAgIFJFQURMSU5FX0RFUFM9JyQoUkVBRExJ TkUpJwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3R1aS90dWktaW8uYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvdHVpL3R1aS1pby5jCTIwMTEt MDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvdHVpL3R1aS1pby5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAt MTMzLDcgKzEzMyw3IEBAIHN0YXRpYyBGdW5jdGlvbiAqdHVpX29sZF9ybF9nZXRjX2Z1bmN0aW8K LSBzdGF0aWMgVkZ1bmN0aW9uICp0dWlfb2xkX3JsX3JlZGlzcGxheV9mdW5jdGlvbjsKLSBzdGF0 aWMgVkZ1bmN0aW9uICp0dWlfb2xkX3JsX3ByZXBfdGVybWluYWw7Ci0gc3RhdGljIFZGdW5jdGlv biAqdHVpX29sZF9ybF9kZXByZXBfdGVybWluYWw7Ci0tc3RhdGljIGludCB0dWlfb2xkX3JlYWRs aW5lX2VjaG9pbmdfcDsKLStzdGF0aWMgaW50IHR1aV9vbGRfcmxfZWNob2luZ19wOwotIAotIC8q IFJlYWRsaW5lIG91dHB1dCBzdHJlYW0uCi0gICAgU2hvdWxkIGJlIHJlbW92ZWQgd2hlbiByZWFk bGluZSBpcyBjbGVhbi4gICovCi1AQCAtNTA2LDggKzUwNiw4IEBAIHR1aV9ybF9kaXNwbGF5X21h dGNoX2xpc3QgKGNoYXIgKiptYXRjaGUKLSB2b2lkCi0gdHVpX3NldHVwX2lvIChpbnQgbW9kZSkK LSB7Ci0tICBleHRlcm4gaW50IHJlYWRsaW5lX2VjaG9pbmdfcDsKLS0gCi0rICBleHRlcm4gaW50 IF9ybF9lY2hvaW5nX3A7Ci0rCi0gICBpZiAobW9kZSkKLSAgICAgewotICAgICAgIC8qIFJlZGly ZWN0IHJlYWRsaW5lIHRvIFRVSS4gICovCi1AQCAtNTE2LDEyICs1MTYsMTIgQEAgdHVpX3NldHVw X2lvIChpbnQgbW9kZSkKLSAgICAgICB0dWlfb2xkX3JsX3ByZXBfdGVybWluYWwgPSBybF9wcmVw X3Rlcm1fZnVuY3Rpb247Ci0gICAgICAgdHVpX29sZF9ybF9nZXRjX2Z1bmN0aW9uID0gcmxfZ2V0 Y19mdW5jdGlvbjsKLSAgICAgICB0dWlfb2xkX3JsX291dHN0cmVhbSA9IHJsX291dHN0cmVhbTsK LS0gICAgICB0dWlfb2xkX3JlYWRsaW5lX2VjaG9pbmdfcCA9IHJlYWRsaW5lX2VjaG9pbmdfcDsK LSsgICAgICB0dWlfb2xkX3JsX2VjaG9pbmdfcCA9IF9ybF9lY2hvaW5nX3A7Ci0gICAgICAgcmxf cmVkaXNwbGF5X2Z1bmN0aW9uID0gdHVpX3JlZGlzcGxheV9yZWFkbGluZTsKLSAgICAgICBybF9k ZXByZXBfdGVybV9mdW5jdGlvbiA9IHR1aV9kZXByZXBfdGVybWluYWw7Ci0gICAgICAgcmxfcHJl cF90ZXJtX2Z1bmN0aW9uID0gdHVpX3ByZXBfdGVybWluYWw7Ci0gICAgICAgcmxfZ2V0Y19mdW5j dGlvbiA9IHR1aV9nZXRjOwotLSAgICAgIHJlYWRsaW5lX2VjaG9pbmdfcCA9IDA7Ci0rICAgICAg X3JsX2VjaG9pbmdfcCA9IDA7Ci0gICAgICAgcmxfb3V0c3RyZWFtID0gdHVpX3JsX291dHN0cmVh bTsKLSAgICAgICBybF9wcm9tcHQgPSAwOwotICAgICAgIHJsX2NvbXBsZXRpb25fZGlzcGxheV9t YXRjaGVzX2hvb2sgPSB0dWlfcmxfZGlzcGxheV9tYXRjaF9saXN0OwotQEAgLTU2MCw3ICs1NjAs NyBAQCB0dWlfc2V0dXBfaW8gKGludCBtb2RlKQotICAgICAgIHJsX2dldGNfZnVuY3Rpb24gPSB0 dWlfb2xkX3JsX2dldGNfZnVuY3Rpb247Ci0gICAgICAgcmxfb3V0c3RyZWFtID0gdHVpX29sZF9y bF9vdXRzdHJlYW07Ci0gICAgICAgcmxfY29tcGxldGlvbl9kaXNwbGF5X21hdGNoZXNfaG9vayA9 IDA7Ci0tICAgICAgcmVhZGxpbmVfZWNob2luZ19wID0gdHVpX29sZF9yZWFkbGluZV9lY2hvaW5n X3A7Ci0rICAgICAgX3JsX2VjaG9pbmdfcCA9IHR1aV9vbGRfcmxfZWNob2luZ19wOwotICAgICAg IHJsX2FscmVhZHlfcHJvbXB0ZWQgPSAwOwotIAotICAgICAgIC8qIFNhdmUgdHR5IGZvciBTSUdD T05ULiAgKi8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL0NIQU5HRUxPRwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9DSEFOR0VM T0cJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIw MTEwNzAzL3JlYWRsaW5lL0NIQU5HRUxPRwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCAr MDIwMAotQEAgLTkxOCwzICs5MTgsMTc4IEBAIGNvbmZpZ3VyZS5pbgotIAktIGNoYW5nZWQgcmVs ZWFzZSBzdGF0dXMgdG8gYHJlbGVhc2UnCi0gCi0gW3JlYWRsaW5lLTUuMSBmcm96ZW5dCi0rCi0r CQkJCSAgIDEyLzkKLSsJCQkJICAgLS0tLQotK1tyZWFkbGluZS01LjEgcmVsZWFzZWRdCi0rCi0r CQkJCSAgIDEyLzE0Ci0rCQkJCSAgIC0tLS0tCi0rZXhhbXBsZXMvcmxmZS9NYWtlZmlsZS5pbgot KwktIGFkZCBATElCU0AgdG8gTElCUyBhc3NpZ25tZW50IHRvIHBpY2sgdXAgZXh0cmEgbGlicmFy aWVzIGZyb20KLSsJICBjb25maWd1cmUKLSsKLSsJCQkJIDEvMy8yMDA2Ci0rCQkJCSAtLS0tLS0t LQotK3N1cHBvcnQvc2hsaWItaW5zdGFsbAotKwktIEluc3RhbGwgc2hhcmVkIGxpYnJhcmllcyB3 aXRoIGV4ZWN1dGUgYml0IHNldCBvbiBMaW51eAotKwotKwkJCQkgICAgNi85Ci0rCQkJCSAgICAt LS0KLStbcmVhZGxpbmUtNS4yLWFscGhhIGZyb3plbl0KLSsKLSsJCQkJICAgNi8yNgotKwkJCQkg ICAtLS0tCi0rY29uZmlndXJlLmluCi0rCS0gc2V0IENST1NTX0NPTVBJTEUgdG8gdGhlIGVtcHR5 IHN0cmluZyBieSBkZWZhdWx0LCBzbyB3ZSBkb24ndCBpbmhlcml0Ci0rCSAgYSByYW5kb20gdmFs dWUgZnJvbSB0aGUgZW52aXJvbm1lbnQKLSsKLSsJCQkJICAgIDcvOAotKwkJCQkgICAgLS0tCi0r W3JlYWRsaW5lLTUuMi1hbHBoYSByZWxlYXNlZF0KLSsKLSsKLStbcmVhZGxpbmUtNS4yLWJldGEg cmVsZWFzZWRdCi0rCi0rCQkJCSAgIDkvMTIKLSsJCQkJICAgLS0tLQotK2NvbmZpZy5oLmluCi0r ICAgICAgICAtIGFkZCBkZWZpbmVzIGZvciB3Y3Njb2xsLCBpc3djdHlwZSwgaXN3dXBwZXIsIGlz d2xvd2VyLCB0b3d1cHBlciwKLSsgICAgICAgICAgdG93bG93ZXIgZnVuY3Rpb25zCi0rICAgICAg ICAtIHJlcGxhY2UgZGVmaW5lIGZvciB3Y3RvbWIgd2l0aCBvbmUgZm9yIHdjcnRvbWIKLSsgICAg ICAgIC0gYWRkIGRlZmluZXMgZm9yIHdjaGFyX3QsIHdpbnRfdCwgd2N0eXBlX3QgdHlwZXMKLSsK LSsJCQkJICAgMTAvMTEKLSsJCQkJICAgLS0tLS0KLStbcmVhZGxpbmUtNS4yIHJlbGVhc2VkXQot KwotKwkJCQkgICAxMS85Ci0rCQkJCSAgIC0tLS0KLStleGFtcGxlcy9ybGZlL3tjb25maWd1cmUu aW4sTWFrZWZpbGUuaW4sY29uZmlnLmguaW4scmxmZS5jLHB0eS5jfQotKwktIHBvcnRhYmlsaXR5 IGZpeGVzIGZyb20gTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotKwotKwkJCQkg ICAxMS8yMQotKwkJCQkgICAtLS0tLQotK01ha2VmaWxlLmluCi0rCS0gYWRkIGBpbnN0YWxsLWV4 YW1wbGVzJyBhbmQgYHVuaW5zdGFsbC1leGFtcGxlcycgdGFyZ2V0cwotKwotK2V4YW1wbGVzL01h a2VmaWxlLmluCi0rCS0gYWRkIGNvcnJlY3QgdmFyaWFibGVzIHRvIGJ1aWxkIGV4YW1wbGVzIG9u IFdpbmRvd3MKLSsJLSBhZGQgYXBwcm9wcmlhdGUgcnVsZXMgdG8gaW5zdGFsbCBhbmQgdW5pbnN0 YWxsIGV4YW1wbGUgc291cmNlcyBpbgotKwkgICQoZGF0YWRpcikvcmVhZGxpbmUgCi0rCi0rCQkJ CSAgIDExLzI3Ci0rCQkJCSAgIC0tLS0tCi0rY29uZmlnLmguaW4KLSsJLSBtb3ZlICN1bmRlZiBv ZiBIQVZFX1NUUkNPTEwgb3V0IG9mIGNvbmZpZy5oLmluLCBzaW5jZSBhdXRvY29uZiB0cmllcwot KwkgIHRvIHN1YnN0aXR1dGUgaXQgYmFzZWQgb24gY29uZmlndXJlIHRlc3RzCi0rCi0rCQkJCSA0 LzI3LzIwMDcKLSsJCQkJIC0tLS0tLS0tLQotK2V4YW1wbGVzL2F1dG9jb25mCi0rCS0gbmV3IGRp cmVjdG9yeSB3aXRoIGV4YW1wbGUgYXV0b2NvbmYgbWFjcm9zIHRvIGRldGVjdCByZWFkbGluZSBh bmQKLSsJICByZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGluc3RhbGxlZCB2ZXJzaW9uCi0r Ci0rCQkJCSAgIDYvMTMKLSsJCQkJICAgLS0tLQotK3N1cHBvcnQvc2hsaWItaW5zdGFsbAotKwkt IGNoYW5nZXMgdG8gc3VwcG9ydCBBSVggNS54IHNoYXJlZCBsaWJyYXJ5IGluc3RhbGxhdGlvbgot KwotKwkJCQkgMy8yMC8yMDA4Ci0rCQkJCSAtLS0tLS0tLS0KLStzdXBwb3J0L3NobGliLWluc3Rh bGwKLSsJLSBhZGQgc3VwcG9ydCBmb3IgTmV0QlNEIGFuZCBJbnRlcml4IHNoYXJlZCBsaWJyYXJ5 IGluc3RhbGxhdGlvbgotKwotKwkJCQkgICA0LzIyCi0rCQkJCSAgIC0tLS0KLStzdXBwb3J0L3dj d2lkdGguYwotKwktIHVwZGF0ZWQgaW1wbGVtZW50YXRpb24gZnJvbSAyMDA3LTA1Ci0rCi0rCQkJ CSAgIDcvMTgKLSsJCQkJICAgLS0tLQotK3N1cHBvcnQvc2hsaWItaW5zdGFsbAotKwktIHN1cHBv cnQgZm9yIG1pbmd3MzIsIGNvbnRyaWJ1dGVkIGJ5IENhcmxvIEJyYW1peCA8Y2FybG8uYnJhbWl4 QGxpYmVyby5pdD4KLSsKLSsJCQkJICAgIDgvNAotKwkJCQkgICAgLS0tCi0rY29uZmlndXJlLmlu Ci0rCS0gY2hhbmdlZCB0byByZWFkbGluZS02LjAKLSsKLSsJCQkJICAgOC8xOAotKwkJCQkgICAt LS0tCi0rc3VwcG9ydC9jb25maWcue2d1ZXNzLHN1Yn0KLSsJLSB1cGRhdGVkIHRvIG5ld2VyIHZl cnNpb25zIGZyb20gYXV0b2NvbmYtMi42MiBkaXN0cmlidXRpb24KLSsKLSsJCQkJIDMvNS8yMDA5 Ci0rCQkJCSAtLS0tLS0tLQotK3N1cHBvcnQvc2hsaWItaW5zdGFsbAotKwktIHRha2UgYSBuZXcg LVYgaG9zdF92ZW5kb3IgYXJndW1lbnQKLSsJLSBhZGQgJHtob3N0X3ZlbmRvcn0gdG8gc3RyaW5n IHRlc3RlZCBpbiBjYXNlIHN0YXRlbWVudCBmb3Igc3ltbGluawotKwkgIGNyZWF0aW9uIHNlY3Rp b24KLSsJLSBhZGQgc3VwcG9ydCBmb3IgRnJlZUJTRC9nZW50b28sIHdoaWNoIHVzZXMgTGludXgg bGlicmFyeSBuYW1pbmcKLSsJICBzY2hlbWUKLSsJLSBjaGFuZ2UgRnJlZUJTRCBzeW1saW5rIHJ1 bGVzLCBzaW5jZSBGcmVlQlNEIDcrIGhhcyBvbmx5IEVMRiBzaGFyZWQKLSsJICBsaWJyYXJpZXMu ICBEcmFnb25mbHlCU0QgcnVsZXMgYXJlIHRoZSBzYW1lLiAgRml4IGZyb20gVGltb3RoeQotKwkg IFJlZGFlbGxpIDxkcml6enRAZ2VudG9vLm9yZz4KLSsKLStzaGxpYi9NYWtlZmlsZS5pbgotKwkt IGFkZCBkZWZpbml0aW9uIG9mIGhvc3RfdmVuZG9yLCBzdWJzdGl0dXRlZCBieSBjb25maWd1cmUK LSsJLSBhZGQgLVYgaG9zdF92ZW5kb3IgYXJndW1lbnQgdG8gYWxsIGludm9jYXRpb25zIG9mIHNo bGliLWluc3RhbGwuCi0rCSAgRml4IGZyb20gVGltb3RoeSBSZWRhZWxsaSA8ZHJpenp0QGdlbnRv by5vcmc+Ci0rCi0rCQkJCSAgIDMvMTAKLSsJCQkJICAgLS0tLQotK2NvbmZpZ3VyZS5pbgotKwkt IGFkZCBjYWxsIHRvIEFDX1NZU19MQVJHRUZJTEUgZm9yIHJlYWRkaXIgYW5kIGxhcmdlZmlsZSBz dXBwb3J0IG9uCi0rCSAgTGludXgKLSsKLStjb25maWcuaC5pbgotKwktIGFkZCBfRklMRV9PRkZT RVRfQklUUyBkZWZpbmUKLSsKLSsJCQkJICAgNC8xOQotKwkJCQkgICAtLS0tCi0rTWFrZWZpbGUu aW4KLSsJLSBhZGQgdGFyZ2V0cyBmb3IgbWFraW5nIGFuZCBpbnN0YWxsaW5nIGRvY3VtZW50YXRp b24gcmVxdWlyZWQgYnkgR05VCi0rCSAgY29kaW5nIHN0YW5kYXJkcy4gIEZpeCBmcm9tIEpvc2Vw aCBNeWVycyA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0rCi0rcG9zaXhzZWxlY3QuaAotKwkt IHBpY2sgdXAgZnJvbSBiYXNoLiAgSW5zcGlyZWQgYnkgTWlrZSBGcnlzaW5nZXIgPHZhcGllckBn ZW50b28ub3JnPgotKwotKwkJCQkgICAxMC8yOAotKwkJCQkgICAtLS0tLQotK3N1cHBvcnQvc2hs aWItaW5zdGFsbAotKwktIGRlY3JlYXNlIHRoZSBkZWZhdWx0IHZlcnNpb24gb2YgRnJlZUJTRCB0 aGF0IGluc3RhbGxzIHNoYXJlZCBsaWJyYXJpZXMKLSsJICB0byA0LnguICBBZHZpY2UgZnJvbSBQ ZXRlciBKZXJlbXkgPHBldGVyamVyZW15QGFjbS5vcmc+Ci0rCi0rCQkJCSAgIDEyLzE4Ci0rCQkJ CSAgIC0tLS0tCi0rW3JlYWRsaW5lLTYuMS1yYzEgcmVsZWFzZWRdCi0rCi0rCQkJCSAgIDEyLzIz Ci0rCQkJCSAgIC0tLS0tCi0rZG9jL01ha2VmaWxlLmluCi0rCS0gbWFrZSBzdXJlICQodG9wZGly KSBpcyBub3QgIi4uIiBiZWZvcmUgcmVtb3ZpbmcgYWxsIG9mIHRoZSBmb3JtYXR0ZWQKLSsJICBk b2N1bWVudGF0aW9uIGluIGBtYWtlIGRpc3RjbGVhbicuICAkKHRvcGRpcikgaXMgc2V0IHRvIGAu LicgaWYKLSsJICByZWFkbGluZSBpcyBiZWluZyBidWlsdCBpbiB0aGUgc291cmNlIGRpcmVjdG9y eS4gIEZpeGVzIHByb2JsZW0KLSsJICBub3RpY2VkIGJ5IFRIT1VNSU4gRGFtaWVuIDx0aG91bWlu QGlwYW5lbWF0ZWNoLmNvbT4KLSsKLSsJCQkJICAgMTIvMjkKLSsJCQkJICAgLS0tLS0KLStbcmVh ZGxpbmUtNi4xIGZyb3plbl0KLSsKLSsJCQkJIDIvNS8yMDEwCi0rCQkJCSAtLS0tLS0tLQotK2V4 YW1wbGVzL01ha2VmaWxlLmluCi0rICAgICAgICAtIG1ha2Ugc3VyZSB0byBpbnN0YWxsIGV4YW1w bGUgQyBmaWxlcyB1c2luZyAkKHNyY2RpcikvJCRmIGluIGNhc2UKLSsgICAgICAgICAgd2UncmUg YnVpbGRpbmcgb3V0c2lkZSB0aGUgc291cmNlIGRpcmVjdG9yeS4gIEJ1ZyByZXBvcnQgYW5kIGZp eAotKyAgICAgICAgICBmcm9tIFBldGVyIEJyZWl0ZW5sb2huZXIgPHBlYkBtcHBtdS5tcGcuZGU+ Ci0rCi0rCQkJCSAgIDcvMjUKLSsJCQkJICAgLS0tLQotK3hmcmVlLmMKLSsJLSBuZXcgZmlsZSB3 aXRoIHhmcmVlKCkgaW1wbGVtZW50YXRpb24sIG1vdmVkIGZyb20geG1hbGxvYy5jCi0rCi0rCQkJ CSAgIDEyLzI4Ci0rCQkJCSAgIC0tLS0tCi0re2V4YW1wbGVzLHNobGlifS9NYWtlZmlsZS5pbgot KwktIEN5Z3dpbi1iYXNlZCBjaGFuZ2VzIGZyb20gRXJpYyBCbGFrZSA8ZWJsYWtlQHJlZGhhdC5j b20+Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9DSEFOR0VTCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL0NIQU5HRVMJMjAxMS0w Ny0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3Jl YWRsaW5lL0NIQU5HRVMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0x LDMgKzEsMzIwIEBACi0rVGhpcyBkb2N1bWVudCBkZXRhaWxzIHRoZSBjaGFuZ2VzIGJldHdlZW4g dGhpcyB2ZXJzaW9uLCByZWFkbGluZS02LjIsCi0rYW5kIHRoZSBwcmV2aW91cyB2ZXJzaW9uLCBy ZWFkbGluZS02LjEuCi0rCi0rMS4gIENoYW5nZXMgdG8gUmVhZGxpbmUKLSsKLSthLiAgRml4ZWQg YSBidWcgdGhhdCBjYXVzZWQgdGhlIHVuY29udmVydGVkIGZpbGVuYW1lIHRvIGJlIGFkZGVkIHRv IHRoZSBsaXN0IG9mCi0rICAgIGNvbXBsZXRpb25zIHdoZW4gdGhlIGFwcGxpY2F0aW9uIHNwZWNp ZmllZCBmaWxlbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KLSsKLStiLiAgRml4ZWQgYSBidWcg dGhhdCBjYXVzZWQgdGhlIHdyb25nIGZpbGVuYW1lIHRvIGJlIHBhc3NlZCB0byBvcGVuZGlyIHdo ZW4gdGhlCi0rICAgIGFwcGxpY2F0aW9uIGhhcyBzcGVjaWZpZWQgYSBmaWxlbmFtZSBkZXF1b3Rp bmcgZnVuY3Rpb24uCi0rCi0rYy4gIEZpeGVkIGEgYnVnIHdoZW4gcmVwZWF0aW5nIGEgY2hhcmFj dGVyIHNlYXJjaCBpbiB2aSBtb2RlIGluIHRoZSBjYXNlIHdoZXJlCi0rICAgIHRoZXJlIHdhcyBu byBzZWFyY2ggdG8gcmVwZWF0LgotKwotK2QuICBXaGVuIHNob3ctYWxsLWlmLWFtYmlndW91cyBp cyBzZXQsIHRoZSBjb21wbGV0aW9uIHJvdXRpbmVzIG5vIGxvbmdlciBpbnNlcnQKLSsgICAgYSBj b21tb24gbWF0Y2ggcHJlZml4IHRoYXQgaXMgc2hvcnRlciB0aGFuIHRoZSB0ZXh0IGJlaW5nIGNv bXBsZXRlZC4KLSsKLStlLiAgVGhlIGZ1bGwgc2V0IG9mIHZpIGVkaXRpbmcgY29tbWFuZHMgbWF5 IG5vdyBiZSB1c2VkIGluIGNhbGxiYWNrIG1vZGUuCi0rCi0rZi4gIEZpeGVkIGEgYnVnIHRoYXQg Y2F1c2VkIHJlYWRsaW5lIHRvIG5vdCB1cGRhdGUgaXRzIGlkZWEgb2YgdGhlIHRlcm1pbmFsCi0r ICAgIGRpbWVuc2lvbnMgd2hpbGUgcnVubmluZyBpbiBgbm8tZWNobycgbW9kZS4KLSsKLStoLiAg Rml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgcmVhZGxpbmUgdG8gZHVtcCBjb3JlIGlmIGFuIGFwcGxp Y2F0aW9uIGNhbGxlZAotKyAgICBybF9wcmVwX3Rlcm1pbmFsIHdpdGhvdXQgc2V0dGluZyBybF9p bnN0cmVhbS4KLSsKLStpLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgbWV0YS1wcmVmaXhlZCBj aGFyYWN0ZXJzIGJvdW5kIHRvIGluY3JlbWVudGFsCi0rICAgIHNlYXJjaCBmb3J3YXJkIG9yIGJh Y2t3YXJkIHRvIG5vdCBiZSByZWNvZ25pemVkIGlmIHRoZXkgd2VyZSB0eXBlZAotKyAgICBzdWJz ZXF1ZW50bHkuCi0rCi0rai4gIFRoZSBpbmNyZW1lbnRhbCBzZWFyY2ggY29kZSB0cmVhdHMga2V5 IHNlcXVlbmNlcyB0aGF0IG1hcCB0byB0aGUgc2FtZQotKyAgICBmdW5jdGlvbnMgYXMgKGRlZmF1 bHQpIF5HLCBeVywgYW5kIF5ZIGFzIGVxdWl2YWxlbnQgdG8gdGhvc2UgY2hhcmFjdGVycy4KLSsK LStrLiAgRml4ZWQgYSBidWcgaW4gbWVudS1jb21wbGV0ZSB0aGF0IGNhdXNlZCBpdCB0byBtaXNi ZWhhdmUgd2l0aCBsYXJnZQotKyAgICBuZWdhdGl2ZSBhcmd1bWVudC4KLSsKLStsLiAgRml4ZWQg YSBidWcgdGhhdCBjYXVzZWQgdmktbW9kZSB5YW5rLWxhc3QtYXJnIHRvIHJpbmcgdGhlIGJlbGwg d2hlbiBpbnZva2VkCi0rICAgIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUuCi0rCi0rbS4gIEZpeGVk IGEgYnVnIHRoYXQgbWFkZSBhbiBleHBsaWNpdCBhcmd1bWVudCBvZiAwIHRvIHlhbmstbGFzdC1h cmcgYmVoYXZlCi0rICAgIGFzIGlmIGl0IHdlcmUgYSBuZWdhdGl2ZSBhcmd1bWVudC4KLSsKLStu LiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgZGlyZWN0b3J5IG5hbWVzIGluIHdvcmRzIHRvIGJl IGNvbXBsZXRlZCB0byBub3QKLSsgICAgYmUgZGVxdW90ZWQgY29ycmVjdGx5LgotKwotKzIuICBO ZXcgRmVhdHVyZXMgaW4gUmVhZGxpbmUKLSsKLSthLiAgVGhlIGhpc3RvcnkgbGlicmFyeSBkb2Vz IG5vdCB0cnkgdG8gd3JpdGUgdGhlIGhpc3RvcnkgZmlsZW5hbWUgaW4gdGhlCi0rICAgIGN1cnJl bnQgZGlyZWN0b3J5IGlmICRIT01FIGlzIHVuc2V0LiAgVGhpcyBjbG9zZXMgYSBwb3RlbnRpYWwg c2VjdXJpdHkKLSsgICAgcHJvYmxlbSBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3BlY2lm eSBhIGhpc3RvcnkgZmlsZW5hbWUuCi0rCi0rYi4gIE5ldyBiaW5kYWJsZSB2YXJpYWJsZSBgY29t cGxldGlvbi1kaXNwbGF5LXdpZHRoJyB0byBzZXQgdGhlIG51bWJlciBvZgotKyAgICBjb2x1bW5z IHVzZWQgd2hlbiBkaXNwbGF5aW5nIGNvbXBsZXRpb25zLgotKwotK2MuICBOZXcgYmluZGFibGUg dmFyaWFibGUgYGNvbXBsZXRpb24tY2FzZS1tYXAnIHRvIGNhdXNlIGNhc2UtaW5zZW5zaXRpdmUK LSsgICAgY29tcGxldGlvbiB0byB0cmVhdCBgLScgYW5kIGBfJyBhcyBpZGVudGljYWwuCi0rCi0r ZC4gIFRoZXJlIGFyZSBuZXcgYmluZGFibGUgdmktbW9kZSBjb21tYW5kIG5hbWVzIHRvIGF2b2lk IHJlYWRsaW5lJ3MgY2FzZS0KLSsgICAgaW5zZW5zaXRpdmUgbWF0Y2hpbmcgbm90IGFsbG93aW5n IHRoZW0gdG8gYmUgYm91bmQgc2VwYXJhdGVseS4KLSsKLStlLiAgTmV3IGJpbmRhYmxlIHZhcmlh YmxlIGBtZW51LWNvbXBsZXRlLWRpc3BsYXktcHJlZml4JyBjYXVzZXMgdGhlIG1lbnUKLSsgICAg Y29tcGxldGlvbiBjb2RlIHRvIGRpc3BsYXkgdGhlIGNvbW1vbiBwcmVmaXggb2YgdGhlIHBvc3Np YmxlIGNvbXBsZXRpb25zCi0rICAgIGJlZm9yZSBjeWNsaW5nIHRocm91Z2ggdGhlIGxpc3QsIGlu c3RlYWQgb2YgYWZ0ZXIuCi0rCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotK1RoaXMgZG9jdW1l bnQgZGV0YWlscyB0aGUgY2hhbmdlcyBiZXR3ZWVuIHRoaXMgdmVyc2lvbiwgcmVhZGxpbmUtNi4x LAotK2FuZCB0aGUgcHJldmlvdXMgdmVyc2lvbiwgcmVhZGxpbmUtNi4wLgotKwotKzEuICBDaGFu Z2VzIHRvIFJlYWRsaW5lCi0rCi0rYS4gIFRoZSBTSUdXSU5DSCBzaWduYWwgaGFuZGxlciBub3cg YXZvaWRzIGNhbGxpbmcgdGhlIHJlZGlzcGxheSBjb2RlIGlmCi0rICAgIG9uZSBhcnJpdmVzIHdo aWxlIGluIHRoZSBtaWRkbGUgb2YgcmVkaXNwbGF5LgotKwotK2IuICBDaGFuZ2VzIHRvIHRoZSB0 aW1lb3V0IGNvZGUgdG8gbWFrZSBzdXJlIHRoYXQgdGltZW91dCB2YWx1ZXMgZ3JlYXRlcgotKyAg ICB0aGFuIG9uZSBzZWNvbmQgYXJlIGhhbmRsZWQgYmV0dGVyLgotKwotK2MuICBGaXhlZCBhIGJ1 ZyBpbiB0aGUgcmVkaXNwbGF5IGNvZGUgdGhhdCB3YXMgdHJpZ2dlcmVkIGJ5IGEgcHJvbXB0Ci0r ICAgIGNvbnRhaW5pbmcgaW52aXNpYmxlIGNoYXJhY3RlcnMgZXhhY3RseSB0aGUgd2lkdGggb2Yg dGhlIHNjcmVlbi4KLSsKLStkLiAgRml4ZWQgYSBidWcgaW4gdGhlIHJlZGlzcGxheSBjb2RlIGVu Y291bnRlcmVkIHdoZW4gcnVubmluZyBpbiBob3Jpem9udGFsCi0rICAgIHNjcm9sbCBtb2RlLgot KwotK2UuICBGaXhlZCBhIGJ1ZyB0aGF0IHByZXZlbnRlZCBtZW51IGNvbXBsZXRpb24gZnJvbSBw cm9wZXJseSBjb21wbGV0aW5nCi0rICAgIGZpbGVuYW1lcy4KLSsKLStmLiAgRml4ZWQgYSByZWRp c3BsYXkgYnVnIGNhdXNlZCBieSBhIG11bHRpYnl0ZSBjaGFyYWN0ZXIgY2F1c2luZyBhIGxpbmUg dG8KLSsgICAgd3JhcC4KLSsKLStnLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQga2V5IHNlcXVl bmNlcyBvZiB0d28gY2hhcmFjdGVycyB0byBub3QgYmUKLSsgICAgcmVjb2duaXplZCB3aGVuIGEg bG9uZ2VyIHNlcXVlbmNlIGlkZW50aWNhbCBpbiB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMKLSsg ICAgd2FzIGJvdW5kLgotKwotK2guICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCBoaXN0b3J5IGV4 cGFuc2lvbiB0byBiZSBhdHRlbXB0ZWQgb24gJCcuLi4nCi0rICAgIHNpbmdsZS1xdW90ZWQgc3Ry aW5ncy4KLSsKLStpLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgaW5jb3JyZWN0IHJlZGlzcGxh eSB3aGVuIHRoZSBwcm9tcHQgY29udGFpbmVkCi0rICAgIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIGlu IGFuIGBpbnZpc2libGUnIHNlcXVlbmNlIGJyYWNrZXRlZCBieSBcWyBhbmQKLSsgICAgXF0uCi0r Ci0rai4gIEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkIGhpc3RvcnkgZXhwYW5zaW9uIHRvIHNob3J0 LWNpcmN1aXQgYWZ0ZXIKLSsgICAgZW5jb3VudGVyaW5nIGEgbXVsdGlieXRlIGNoYXJhY3Rlci4K LSsKLStrLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgYXBwbGljYXRpb25zIHVzaW5nIHRoZSBj YWxsYmFjayBpbnRlcmZhY2UgdG8gbm90Ci0rICAgIHJlYWN0IHRvIFNJR0lOVCAob3Igb3RoZXIg c2lnbmFscykgdW50aWwgYW5vdGhlciBjaGFyYWN0ZXIgYXJyaXZlZC4KLSsKLSsyLiAgTmV3IEZl YXR1cmVzIGluIFJlYWRsaW5lCi0rCi0rYS4gIE5ldyBiaW5kYWJsZSBmdW5jdGlvbjogbWVudS1j b21wbGV0ZS1iYWNrd2FyZC4KLSsKLStiLiAgSW4gdGhlIHZpIGluc2VydGlvbiBrZXltYXAsIEMt biBpcyBub3cgYm91bmQgdG8gbWVudS1jb21wbGV0ZSBieSBkZWZhdWx0LAotKyAgICBhbmQgQy1w IHRvIG1lbnUtY29tcGxldGUtYmFja3dhcmQuCi0rCi0rYy4gIFdoZW4gaW4gdmkgY29tbWFuZCBt b2RlLCByZXBlYXRlZGx5IGhpdHRpbmcgRVNDIG5vdyBkb2VzIG5vdGhpbmcsIGV2ZW4KLSsgICAg d2hlbiBFU0MgaW50cm9kdWNlcyBhIGJvdW5kIGtleSBzZXF1ZW5jZS4gIFRoaXMgaXMgY2xvc2Vy IHRvIGhvdwotKyAgICBoaXN0b3JpY2FsIHZpIGJlaGF2ZXMuCi0rCi0rZC4gIE5ldyBiaW5kYWJs ZSBmdW5jdGlvbjogc2tpcC1jc2ktc2VxdWVuY2UuICBDYW4gYmUgdXNlZCBhcyBhIGRlZmF1bHQg dG8KLSsgICAgY29uc3VtZSBrZXkgc2VxdWVuY2VzIGdlbmVyYXRlZCBieSBrZXlzIGxpa2UgSG9t ZSBhbmQgRW5kIHdpdGhvdXQgaGF2aW5nCi0rICAgIHRvIGJpbmQgYWxsIGtleXMuCi0rCi0rZS4g IE5ldyBhcHBsaWNhdGlvbi1zZXR0YWJsZSBmdW5jdGlvbjogcmxfZmlsZW5hbWVfcmV3cml0ZV9o b29rLiAgQ2FuIGJlIHVzZWQKLSsgICAgdG8gcmV3aXRlIG9yIG1vZGlmeSBmaWxlbmFtZXMgcmVh ZCBmcm9tIHRoZSBmaWxlIHN5c3RlbSBiZWZvcmUgdGhleSBhcmUKLSsgICAgY29tcGFyZWQgdG8g dGhlIHdvcmQgdG8gYmUgY29tcGxldGVkLgotKwotK2YuICBOZXcgYmluZGFibGUgdmFyaWFibGU6 IHNraXAtY29tcGxldGVkLXRleHQsIGFjdGl2ZSB3aGVuIGNvbXBsZXRpbmcgaW4gdGhlCi0rICAg IG1pZGRsZSBvZiBhIHdvcmQuICBJZiBlbmFibGVkLCBpdCBtZWFucyB0aGF0IGNoYXJhY3RlcnMg aW4gdGhlIGNvbXBsZXRpb24KLSsgICAgdGhhdCBtYXRjaCBjaGFyYWN0ZXJzIGluIHRoZSByZW1h aW5kZXIgb2YgdGhlIHdvcmQgYXJlICJza2lwcGVkIiByYXRoZXIKLSsgICAgdGhhbiBpbnNlcnRl ZCBpbnRvIHRoZSBsaW5lLgotKwotK2cuICBUaGUgcHJlLXJlYWRsaW5lLTYuMCB2ZXJzaW9uIG9m IG1lbnUgY29tcGxldGlvbiBpcyBhdmFpbGFibGUgYXMKLSsgICAgIm9sZC1tZW51LWNvbXBsZXRl IiBmb3IgdXNlcnMgd2hvIGRvIG5vdCBsaWtlIHRoZSByZWFkbGluZS02LjAgdmVyc2lvbi4KLSsK LStoLiAgTmV3IGJpbmRhYmxlIHZhcmlhYmxlOiBlY2hvLWNvbnRyb2wtY2hhcmFjdGVycy4gIElm IGVuYWJsZWQsIGFuZCB0aGUKLSsgICAgdHR5IEVDSE9DVEwgYml0IGlzIHNldCwgY29udHJvbHMg dGhlIGVjaG9pbmcgb2YgY2hhcmFjdGVycyBjb3JyZXNwb25kaW5nCi0rICAgIHRvIGtleWJvYXJk LWdlbmVyYXRlZCBzaWduYWxzLgotKwotK2kuICBOZXcgYmluZGFibGUgdmFyaWFibGU6IGVuYWJs ZS1tZXRhLWtleS4gIENvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHJlYWRsaW5lCi0rICAgIHNlbmRz IHRoZSBzbW0vcm1tIHNlcXVlbmNlcyBpZiB0aGUgdGVybWluYWwgaW5kaWNhdGVzIGl0IGhhcyBh IG1ldGEga2V5Ci0rICAgIHRoYXQgZW5hYmxlcyBlaWdodC1iaXQgY2hhcmFjdGVycy4KLSsKLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rVGhpcyBkb2N1bWVudCBkZXRhaWxzIHRoZSBjaGFuZ2Vz IGJldHdlZW4gdGhpcyB2ZXJzaW9uLCByZWFkbGluZS02LjAsCi0rYW5kIHRoZSBwcmV2aW91cyB2 ZXJzaW9uLCByZWFkbGluZS01LjIuCi0rCi0rMS4gIENoYW5nZXMgdG8gUmVhZGxpbmUKLSsKLSth LiAgRml4ZWQgYSBudW1iZXIgb2YgcmVkaXNwbGF5IGVycm9ycyBpbiBlbnZpcm9ubWVudHMgc3Vw cG9ydGluZyBtdWx0aWJ5dGUgCi0rICAgIGNoYXJhY3RlcnMuCi0rCi0rYi4gIEZpeGVkIGJ1Z3Mg aW4gdmkgY29tbWFuZCBtb2RlIHRoYXQgY2F1c2VkIG1vdGlvbiBjb21tYW5kcyB0byBpbmFwcHJv cHJpYXRlbHkKLSsgICAgc2V0IHRoZSBtYXJrLgotKwotK2MuICBXaGVuIHVzaW5nIHRoZSBhcnJv dyBrZXlzIGluIHZpIGluc2VydGlvbiBtb2RlLCByZWFkbGluZSBhbGxvd3MgbW92ZW1lbnQKLSsg ICAgYmV5b25kIHRoZSBjdXJyZW50IGVuZCBvZiB0aGUgbGluZSAodW5saWtlIGNvbW1hbmQgbW9k ZSkuCi0rCi0rZC4gIEZpeGVkIGJ1Z3MgdGhhdCBjYXVzZWQgcmVhZGxpbmUgdG8gbG9vcCB3aGVu IHRoZSB0ZXJtaW5hbCBoYXMgYmVlbiB0YWtlbgotKyAgICBhd2F5IGFuZCByZWFkcyByZXR1cm4g LTEvRUlPLgotKwotK2UuICBGaXhlZCBidWdzIGluIHJlZGlzcGxheSBvY2N1cnJpbmcgd2hlbiBk aXNwbGF5aW5nIHByb21wdHMgY29udGFpbmluZwotKyAgICBpbnZpc2libGUgY2hhcmFjdGVycy4K LSsKLStmLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgdGhlIGNvbXBsZXRpb24gYXBwZW5kIGNo YXJhY3RlciB0byBub3QgYmUgcmVzZXQgdG8KLSsgICAgdGhlIGRlZmF1bHQgYWZ0ZXIgYW4gYXBw bGljYXRpb24tc3BlY2lmaWVkIGNvbXBsZXRpb24gZnVuY3Rpb24gY2hhbmdlZCBpdC4KLSsKLStn LiAgRml4ZWQgYSBwcm9ibGVtIHRoYXQgY2F1c2VkIGluY29ycmVjdCBwb3NpdGlvbmluZyBvZiB0 aGUgY3Vyc29yIHdoaWxlIGluCi0rICAgIGVtYWNzIGVkaXRpbmcgbW9kZSB3aGVuIG1vdmluZyBm b3J3YXJkIGF0IHRoZSBlbmQgb2YgYSBsaW5lIHdoaWxlIHVzaW5nCi0rICAgIGEgbG9jYWxlIHN1 cHBvcnRpbmcgbXVsdGlieXRlIGNoYXJhY3RlcnMuCi0rCi0raC4gIEZpeGVkIGFuIG9mZi1ieS1v bmUgZXJyb3IgdGhhdCBjYXVzZWQgcmVhZGxpbmUgdG8gZHJvcCBldmVyeSA1MTF0aAotKyAgICBj aGFyYWN0ZXIgb2YgYnVmZmVyZWQgaW5wdXQuCi0rCi0raS4gIEZpeGVkIGEgYnVnIHRoYXQgcmVz dWx0ZWQgaW4gU0lHVEVSTSBub3QgYmVpbmcgY2F1Z2h0IG9yIGNsZWFuZWQgdXAuCi0rCi0rai4g IEZpeGVkIHJlZGlzcGxheSBidWdzIGNhdXNlZCBieSBtdWx0aWxpbmUgcHJvbXB0cyB3aXRoIGlu dmlzaWJsZSBjaGFyYWN0ZXJzCi0rICAgIG9yIG5vIGNoYXJhY3RlcnMgZm9sbG93aW5nIHRoZSBm aW5hbCBuZXdsaW5lLgotKwotK2suICBGaXhlZCByZWRpc3BsYXkgYnVnIGNhdXNlZCBieSBwcm9t cHRzIGNvbnNpc3Rpbmcgc29sZWx5IG9mIGludmlzaWJsZQotKyAgICBjaGFyYWN0ZXJzLgotKwot K2wuICBGaXhlZCBhIGJ1ZyBpbiB0aGUgY29kZSB0aGF0IGJ1ZmZlcnMgY2hhcmFjdGVycyByZWNl aXZlZCB2ZXJ5IHF1aWNrbHkgaW4KLSsgICAgc3VjY2Vzc2lvbiB3aGljaCBjYXVzZWQgY2hhcmFj dGVycyB0byBiZSBkcm9wcGVkLgotKwotK20uICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCByZWFk bGluZSB0byByZWZlcmVuY2UgdW5pbml0aWFsaXplZCBkYXRhIHN0cnVjdHVyZXMKLSsgICAgaWYg aXQgcmVjZWl2ZWQgYSBTSUdXSU5DSCBiZWZvcmUgY29tcGxldGluZyBpbml0aWFsemF0aW9uLgot KwotK24uICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCB0aGUgdmktbW9kZSBgbGFzdCBjb21tYW5k JyB0byBiZSBzZXQgaW5jb3JyZWN0bHkKLSsgICAgYW5kIHRoZXJlZm9yZSB1bnJlcGVhdGFibGUu Ci0rCi0rby4gIEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkIHJlYWRsaW5lIHRvIGRpc2FibGUgZWNo b2luZyB3aGVuIGl0IHdhcyBiZWluZyB1c2VkCi0rICAgIHdpdGggYW4gb3V0cHV0IGZpbGUgZGVz Y3JpcHRvciB0aGF0IHdhcyBub3QgYSB0ZXJtaW5hbC4KLSsKLStwLiAgUmVhZGxpbmUgbm93IGJs b2NrcyBTSUdJTlQgd2hpbGUgbWFuaXB1bGF0aW5nIGludGVybmFsIGRhdGEgc3RydWN0dXJlcwot KyAgICBkdXJpbmcgcmVkaXNwbGF5LgotKwotK3EuICBGaXhlZCBhIGJ1ZyBpbiByZWRpc3BsYXkg dGhhdCBjYXVzZWQgcmVhZGxpbmUgdG8gc2VnZmF1bHQgd2hlbiBwYXN0aW5nIGEKLSsgICAgdmVy eSBsb25nIGxpbmUgKG92ZXIgMTMwLDAwMCBjaGFyYWN0ZXJzKS4KLSsKLStyLiAgRml4ZWQgYnVn cyBpbiByZWRpc3BsYXkgd2hlbiB1c2luZyBwcm9tcHRzIHdpdGggbm8gdmlzaWJsZSBwcmludGlu ZwotKyAgICBjaGFyYWN0ZXJzLgotKwotK3MuICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCByZWRp c3BsYXkgZXJyb3JzIHdoZW4gdXNpbmcgcHJvbXB0cyB3aXRoIGludmlzaWJsZQotKyAgICBjaGFy YWN0ZXJzIGFuZCBudW1lcmljIGFyZ3VtZW50cyB0byBhIGNvbW1hbmQgaW4gYSBtdWx0aWJ5dGUg bG9jYWxlLgotKwotK3QuICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCByZWRpc3BsYXkgZXJyb3Jz IHdoZW4gdXNpbmcgcHJvbXB0cyB3aXRoIGludmlzaWJsZQotKyAgICBjaGFyYWN0ZXJzIHNwYW5u aW5nIG1vcmUgdGhhbiB0d28gcGh5c2ljYWwgc2NyZWVuIGxpbmVzLgotKwotKzIuICBOZXcgRmVh dHVyZXMgaW4gUmVhZGxpbmUKLSsKLSthLiAgQSBuZXcgdmFyaWFibGUsIHJsX3NvcnRfY29tcGxl dGlvbl9tYXRjaGVzOyBhbGxvd3MgYXBwbGljYXRpb25zIHRvIGluaGliaXQKLSsgICAgbWF0Y2gg bGlzdCBzb3J0aW5nIChidXQgYmV3YXJlOiBzb21lIHRoaW5ncyBkb24ndCB3b3JrIHJpZ2h0IGlm Ci0rICAgIGFwcGxpY2F0aW9ucyBkbyB0aGlzKS4KLSsKLStiLiAgQSBuZXcgdmFyaWFibGUsIHJs X2NvbXBsZXRpb25faW52b2tpbmdfa2V5OyBhbGxvd3MgYXBwbGljYXRpb25zIHRvIGRpc2NvdmVy Ci0rICAgIHRoZSBrZXkgdGhhdCBpbnZva2VkIHJsX2NvbXBsZXRlIG9yIHJsX21lbnVfY29tcGxl dGUuCi0rCi0rYy4gIFRoZSBmdW5jdGlvbnMgcmxfYmxvY2tfc2lnaW50IGFuZCBybF9yZWxlYXNl X3NpZ2ludCBhcmUgbm93IHB1YmxpYyBhbmQKLSsgICAgYXZhaWxhYmxlIHRvIGNhbGxpbmcgYXBw bGljYXRpb25zIHdobyB3YW50IHRvIHByb3RlY3QgY3JpdGljYWwgc2VjdGlvbnMKLSsgICAgKGxp a2UgcmVkaXNwbGF5KS4KLSsKLStkLiAgVGhlIGZ1bmN0aW9ucyBybF9zYXZlX3N0YXRlIGFuZCBy bF9yZXN0b3JlX3N0YXRlIGFyZSBub3cgcHVibGljIGFuZAotKyAgICBhdmFpbGFibGUgdG8gY2Fs bGluZyBhcHBsaWNhdGlvbnM7IGRvY3VtZW50ZWQgcmVzdCBvZiByZWFkbGluZSdzIHN0YXRlCi0r ICAgIGZsYWcgdmFsdWVzLgotKwotK2UuICBBIG5ldyB1c2VyLXNldHRhYmxlIHZhcmlhYmxlLCBg aGlzdG9yeS1zaXplJywgYWxsb3dzIHNldHRpbmcgdGhlIG1heGltdW0KLSsgICAgbnVtYmVyIG9m IGVudHJpZXMgaW4gdGhlIGhpc3RvcnkgbGlzdC4KLSsKLStmLiAgVGhlcmUgaXMgYSBuZXcgaW1w bGVtZW50YXRpb24gb2YgbWVudSBjb21wbGV0aW9uLCB3aXRoIHNldmVyYWwgaW1wcm92ZW1lbnRz Ci0rICAgIG92ZXIgdGhlIG9sZDsgdGhlIG1vc3Qgbm90YWJsZSBpbXByb3ZlbWVudCBpcyBhIGJl dHRlciBgY29tcGxldGlvbnMKLSsgICAgYnJvd3NpbmcnIG1vZGUuCi0rCi0rZy4gIFRoZSBtZW51 IGNvbXBsZXRpb24gY29kZSBub3cgdXNlcyB0aGUgcmxfbWVudV9jb21wbGV0aW9uX2VudHJ5X2Z1 bmN0aW9uCi0rICAgIHZhcmlhYmxlLCBhbGxvd2luZyBhcHBsaWNhdGlvbnMgdG8gcHJvdmlkZSB0 aGVpciBvd24gbWVudSBjb21wbGV0aW9uCi0rICAgIGdlbmVyYXRvcnMuCi0rCi0raC4gIFRoZXJl IGlzIHN1cHBvcnQgZm9yIHJlcGxhY2luZyBhIHByZWZpeCAgb2YgYSBwYXRobmFtZSB3aXRoIGEg YC4uLicgd2hlbgotKyAgICBkaXNwbGF5aW5nIHBvc3NpYmxlIGNvbXBsZXRpb25zLiAgVGhpcyBp cyBjb250cm9sbGFibGUgYnkgc2V0dGluZyB0aGUKLSsgICAgYGNvbXBsZXRpb24tcHJlZml4LWRp c3BsYXktbGVuZ3RoJyB2YXJpYWJsZS4gIE1hdGNoZXMgd2l0aCBhIGNvbW1vbiBwcmVmaXgKLSsg ICAgbG9uZ2VyIHRoYW4gdGhpcyB2YWx1ZSBoYXZlIHRoZSBjb21tb24gcHJlZml4IHJlcGxhY2Vk IHdpdGggYC4uLicuCi0rCi0raS4gIFRoZXJlIGlzIGEgbmV3IGByZXZlcnQtYWxsLWF0LW5ld2xp bmUnIHZhcmlhYmxlLiAgSWYgZW5hYmxlZCwgcmVhZGxpbmUgd2lsbAotKyAgICB1bmRvIGFsbCBv dXRzdGFuZGluZyBjaGFuZ2VzIHRvIGFsbCBoaXN0b3J5IGxpbmVzIHdoZW4gYGFjY2VwdC1saW5l JyBpcwotKyAgICBleGVjdXRlZC4KLSsKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rVGhpcyBk b2N1bWVudCBkZXRhaWxzIHRoZSBjaGFuZ2VzIGJldHdlZW4gdGhpcyB2ZXJzaW9uLCByZWFkbGlu ZS01LjIsCi0rYW5kIHRoZSBwcmV2aW91cyB2ZXJzaW9uLCByZWFkbGluZS01LjEuCi0rCi0rMS4g IENoYW5nZXMgdG8gUmVhZGxpbmUKLSsKLSthLiAgRml4ZWQgYSBwcm9ibGVtIHRoYXQgY2F1c2Vk IHNlZ21lbnRhdGlvbiBmYXVsdHMgd2hlbiB1c2luZyByZWFkbGluZSBpbgotKyAgICBjYWxsYmFj ayBtb2RlIGFuZCB0eXBpbmcgY29uc2VjdXRpdmUgREVMIGNoYXJhY3RlcnMgb24gYW4gZW1wdHkg bGluZS4KLSsKLStiLiAgRml4ZWQgc2V2ZXJhbCByZWRpc3BsYXkgcHJvYmxlbXMgd2l0aCBtdWx0 aWJ5dGUgY2hhcmFjdGVycywgYWxsIGhhdmluZyB0bwotKyAgICBkbyB3aXRoIHRoZSBkaWZmZXJl bnQgY29kZSBwYXRocyBhbmQgdmFyaWFibGUgbWVhbmluZ3MgYmV0d2VlbiBzaW5nbGUtYnl0ZQot KyAgICBhbmQgbXVsdGlieXRlIGNoYXJhY3RlciByZWRpc3BsYXkuCi0rCi0rYy4gIEZpeGVkIGEg cHJvYmxlbSB3aXRoIGtleSBzZXF1ZW5jZSB0cmFuc2xhdGlvbiB3aGVuIHByZXNlbnRlZCB3aXRo IHRoZQotKyAgICBzZXF1ZW5jZSBcTS1cQy14LgotKwotK2QuICBGaXhlZCBhIHByb2JsZW0gdGhh dCBwcmV2ZW50ZWQgdGhlIGBhJyBjb21tYW5kIGluIHZpIG1vZGUgZnJvbSBiZWluZwotKyAgICB1 bmRvbmUgYW5kIHJlZG9uZSBwcm9wZXJseS4KLSsKLStlLiAgRml4ZWQgYSBwcm9ibGVtIHRoYXQg cHJldmVudGVkIGVtcHR5IGluc2VydHMgaW4gdmkgbW9kZSBmcm9tIGJlaW5nIHVuZG9uZQotKyAg ICBwcm9wZXJseS4KLSsKLStmLiAgRml4ZWQgYSBwcm9ibGVtIHRoYXQgY2F1c2VkIHJlYWRsaW5l IHRvIGluaXRpYWxpemUgd2l0aCBhbiBpbmNvcnJlY3QgaWRlYQotKyAgICBvZiB3aGV0aGVyIG9y IG5vdCB0aGUgdGVybWluYWwgY2FuIGF1dG93cmFwLgotKwotK2cuICBGaXhlZCBvdXRwdXQgb2Yg a2V5IGJpbmRpbmdzIChsaWtlIGJhc2ggYGJpbmQgLXAnKSB0byBob25vciB0aGUgc2V0dGluZyBv ZgotKyAgICBjb252ZXJ0LW1ldGEgYW5kIHVzZSBcZSB3aGVyZSBhcHByb3ByaWF0ZS4KLSsKLSto LiAgQ2hhbmdlZCB0aGUgZGVmYXVsdCBmaWxlbmFtZSBjb21wbGV0aW9uIGZ1bmN0aW9uIHRvIGNh bGwgdGhlIGZpbGVuYW1lCi0rICAgIGRlcXVvdGluZyBmdW5jdGlvbiBpZiB0aGUgZGlyZWN0b3J5 IGNvbXBsZXRpb24gaG9vayBpc24ndCBzZXQuICBUaGlzIG1lYW5zCi0rICAgIHRoYXQgYW55IGRp cmVjdG9yeSBjb21wbGV0aW9uIGhvb2tzIG5lZWQgdG8gZGVxdW90ZSB0aGUgZGlyZWN0b3J5IG5h bWUsCi0rICAgIHNpbmNlIGFwcGxpY2F0aW9uLXNwZWNpZmljIGhvb2tzIG5lZWQgdG8ga25vdyBo b3cgdGhlIHdvcmQgd2FzIHF1b3RlZCwKLSsgICAgZXZlbiBpZiBubyBvdGhlciBjaGFuZ2VzIGFy ZSBtYWRlLgotKwotK2kuICBGaXhlZCBhIGJ1ZyB3aXRoIGNyZWF0aW5nIHRoZSBwcm9tcHQgZm9y IGEgbm9uLWludGVyYWN0aXZlIHNlYXJjaCBzdHJpbmcKLSsgICAgd2hlbiB0aGVyZSBhcmUgbm9u LXByaW50aW5nIGNoYXJhY3RlcnMgaW4gdGhlIHByaW1hcnkgcHJvbXB0LgotKwotK2ouICBGaXhl ZCBhIGJ1ZyB0aGF0IGNhdXNlZCBwcm9tcHRzIHdpdGggaW52aXNpYmxlIGNoYXJhY3RlcnMgdG8g YmUgcmVkcmF3bgotKyAgICBtdWx0aXBsZSB0aW1lcyBpbiBhIG11bHRpYnl0ZSBsb2NhbGUuCi0r Ci0ray4gIEZpeGVkIGEgYnVnIHRoYXQgY291bGQgY2F1c2UgdGhlIGtleSBzZXF1ZW5jZSBzY2Fu bmluZyBjb2RlIHRvIHJldHVybiB0aGUKLSsgICAgd3JvbmcgZnVuY3Rpb24uCi0rCi0rbC4gIEZp eGVkIGEgcHJvYmxlbSB3aXRoIHRoZSBjYWxsYmFjayBpbnRlcmZhY2UgdGhhdCBjYXVzZWQgaXQg dG8gZmFpbCB3aGVuCi0rICAgIHVzaW5nIG11bHRpLWNoYXJhY3RlciBrZXlib2FyZCBtYWNyb3Mu Ci0rCi0rbS4gIEZpeGVkIGEgYnVnIHRoYXQgY291bGQgY2F1c2UgYSBjb3JlIGR1bXAgd2hlbiBh biBlZGl0ZWQgaGlzdG9yeSBlbnRyeSB3YXMKLSsgICAgcmUtZXhlY3V0ZWQgdW5kZXIgY2VydGFp biBjb25kaXRpb25zLgotKwotK24uICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCByZWFkbGluZSB0 byByZWZlcmVuY2UgZnJlZWQgbWVtb3J5IHdoZW4gYXR0bXB0aW5nCi0rICAgIHRvIGRpc3BsYXkg YSBwb3J0aW9uIG9mIHRoZSBwcm9tcHQuCi0rCi0rby4gIEZpeGVkIGEgYnVnIHdpdGggcHJvbXB0 IHJlZGlzcGxheSBpbiBhIG11bHRpLWJ5dGUgbG9jYWxlIHRvIGF2b2lkIHJlZHJhd2luZwotKyAg ICB0aGUgcHJvbXB0IGFuZCBpbnB1dCBsaW5lIG11bHRpcGxlIHRpbWVzLgotKwotK3AuICBGaXhl ZCBoaXN0b3J5IGV4cGFuc2lvbiB0byBub3QgYmUgY29uZnVzZWQgYnkgaGVyZS1zdHJpbmcgcmVk aXJlY3Rpb24uCi0rCi0rcS4gIFJlYWRsaW5lIG5vIGxvbmdlciB0cmVhdHMgcmVhZCBlcnJvcnMg YnkgY29udmVydGluZyB0aGVtIHRvIG5ld2xpbmVzLCBhcwotKyAgICBpdCBkb2VzIHdpdGggRU9G LiAgVGhpcyBjYXVzZWQgcGFydGlhbCBsaW5lcyB0byBiZSByZXR1cm5lZCBmcm9tIHJlYWRsaW5l KCkuCi0rCi0rci4gIEZpeGVkIGEgcmVkaXNwbGF5IGJ1ZyB0aGF0IG9jY3VycmVkIGluIG11bHRp Ynl0ZS1jYXBhYmxlIGxvY2FsZXMgd2hlbiB0aGUKLSsgICAgcHJvbXB0IHdhcyBvbmUgY2hhcmFj dGVyIGxvbmdlciB0aGFuIHRoZSBzY3JlZW4gd2lkdGguCi0rCi0rMi4gIE5ldyBGZWF0dXJlcyBp biBSZWFkbGluZQotKwotK2EuICBDYWxsaW5nIGFwcGxpY2F0aW9ucyBjYW4gbm93IHNldCB0aGUg a2V5Ym9hcmQgdGltZW91dCB0byAwLCBhbGxvd2luZwotKyAgICBwb2xsLWxpa2UgYmVoYXZpb3Iu Ci0rCi0rYi4gIFRoZSB2YWx1ZSBvZiBTWVNfSU5QVVRSQyAoY29uZmlndXJhYmxlIGF0IGNvbXBp bGF0aW9uIHRpbWUpIGlzIG5vdyB1c2VkIGFzCi0rICAgIHRoZSBkZWZhdWx0IGxhc3QtZGl0Y2gg c3RhcnR1cCBmaWxlLgotKwotK2MuICBUaGUgaGlzdG9yeSBmaWxlIHJlYWRpbmcgZnVuY3Rpb25z IG5vdyBhbGxvdyB3aW5kb3dzLWxpa2UgXHJcbiBsaW5lCi0rICAgIHRlcm1pbmF0b3JzLgotKwot Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBUaGlzIGRvY3VtZW50IGRldGFpbHMgdGhlIGNoYW5n ZXMgYmV0d2VlbiB0aGlzIHZlcnNpb24sIHJlYWRsaW5lLTUuMSwKLSBhbmQgdGhlIHByZXZpb3Vz IHZlcnNpb24sIHJlYWRsaW5lLTUuMC4KLSAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3Jl YWRsaW5lL0NPUFlJTkcKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcv cmVhZGxpbmUvQ09QWUlORwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvQ09QWUlORwkyMDExLTA3LTAzIDEwOjQxOjIx LjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjg1ICsxLDYyNiBAQAotLQkJICAgIEdOVSBHRU5FUkFM IFBVQkxJQyBMSUNFTlNFCi0tCQkgICAgICAgVmVyc2lvbiAyLCBKdW5lIDE5OTEKLSsgICAgICAg ICAgICAgICAgICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCi0rICAgICAgICAgICAgICAg ICAgICAgICBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNwotIAotLSBDb3B5cmlnaHQgKEMpIDE5ODks IDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EK LSsgQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0 cDovL2ZzZi5vcmcvPgotICBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJp YnV0ZSB2ZXJiYXRpbSBjb3BpZXMKLSAgb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hh bmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCi0gCi0tCQkJICAgIFByZWFtYmxlCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFByZWFtYmxlCi0gCi0tICBUaGUgbGljZW5zZXMgZm9yIG1vc3Qg c29mdHdhcmUgYXJlIGRlc2lnbmVkIHRvIHRha2UgYXdheSB5b3VyCi0tZnJlZWRvbSB0byBzaGFy ZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLS1M aWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5k IGNoYW5nZSBmcmVlCi0tc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJl ZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFRoaXMKLS1HZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFwcGxp ZXMgdG8gbW9zdCBvZiB0aGUgRnJlZSBTb2Z0d2FyZQotLUZvdW5kYXRpb24ncyBzb2Z0d2FyZSBh bmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KLS11c2luZyBp dC4gIChTb21lIG90aGVyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBzb2Z0d2FyZSBpcyBjb3Zl cmVkIGJ5Ci0tdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW5zdGVhZC4p ICBZb3UgY2FuIGFwcGx5IGl0IHRvCi0rICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug aXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgotK3NvZnR3YXJlIGFuZCBvdGhlciBraW5k cyBvZiB3b3Jrcy4KLSsKLSsgIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3Ro ZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZAotK3RvIHRha2UgYXdheSB5b3VyIGZyZWVk b20gdG8gc2hhcmUgYW5kIGNoYW5nZSB0aGUgd29ya3MuICBCeSBjb250cmFzdCwKLSt0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJl ZWRvbSB0bwotK3NoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8g bWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQotK3NvZnR3YXJlIGZvciBhbGwgaXRzIHVzZXJzLiAg V2UsIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHVzZSB0aGUKLStHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9zdCBvZiBvdXIgc29mdHdhcmU7IGl0IGFwcGxpZXMgYWxzbyB0 bwotK2FueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91 IGNhbiBhcHBseSBpdCB0bwotIHlvdXIgcHJvZ3JhbXMsIHRvby4KLSAKLSAgIFdoZW4gd2Ugc3Bl YWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKLSBw cmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBz dXJlIHRoYXQgeW91Ci0gaGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBm cmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgotLXRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCks IHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAotLWlmIHlvdSB3YW50 IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0 Ci0taW4gbmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhl c2UgdGhpbmdzLgotLQotLSAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBtYWtl IHJlc3RyaWN0aW9ucyB0aGF0IGZvcmJpZAotLWFueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdo dHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4KLS1UaGVzZSByZXN0cmlj dGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlv dQotLWRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZSBzb2Z0d2FyZSwgb3IgaWYgeW91IG1vZGlmeSBp dC4KLSt0aGVtIGlmIHlvdSB3aXNoKSwgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBj YW4gZ2V0IGl0IGlmIHlvdQotK3dhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3 YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3Ci0rZnJlZSBwcm9ncmFtcywgYW5kIHRoYXQg eW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCi0rCi0rICBUbyBwcm90ZWN0IHlvdXIg cmlnaHRzLCB3ZSBuZWVkIHRvIHByZXZlbnQgb3RoZXJzIGZyb20gZGVueWluZyB5b3UKLSt0aGVz ZSByaWdodHMgb3IgYXNraW5nIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4gIFRoZXJlZm9y ZSwgeW91IGhhdmUKLStjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgaWYgeW91IGRpc3RyaWJ1dGUg Y29waWVzIG9mIHRoZSBzb2Z0d2FyZSwgb3IgaWYKLSt5b3UgbW9kaWZ5IGl0OiByZXNwb25zaWJp bGl0aWVzIHRvIHJlc3BlY3QgdGhlIGZyZWVkb20gb2Ygb3RoZXJzLgotIAotICAgRm9yIGV4YW1w bGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiBzdWNoIGEgcHJvZ3JhbSwgd2hldGhlcgot LWdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRo ZSByaWdodHMgdGhhdAotLXlvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwg dG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCi0tc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qg c2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpcgotLXJpZ2h0cy4KLS0KLS0g IFdlIHByb3RlY3QgeW91ciByaWdodHMgd2l0aCB0d28gc3RlcHM6ICgxKSBjb3B5cmlnaHQgdGhl IHNvZnR3YXJlLCBhbmQKLS0oMikgb2ZmZXIgeW91IHRoaXMgbGljZW5zZSB3aGljaCBnaXZlcyB5 b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LAotLWRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0 aGUgc29mdHdhcmUuCi0tCi0tICBBbHNvLCBmb3IgZWFjaCBhdXRob3IncyBwcm90ZWN0aW9uIGFu ZCBvdXJzLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbgotLXRoYXQgZXZlcnlvbmUgdW5kZXJzdGFu ZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCi0tc29mdHdhcmUuICBJ ZiB0aGUgc29mdHdhcmUgaXMgbW9kaWZpZWQgYnkgc29tZW9uZSBlbHNlIGFuZCBwYXNzZWQgb24s IHdlCi0td2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMg bm90IHRoZSBvcmlnaW5hbCwgc28KLS10aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90 aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAotLWF1dGhvcnMnIHJlcHV0YXRp b25zLgotLQotLSAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0 YW50bHkgYnkgc29mdHdhcmUKLS1wYXRlbnRzLiAgV2Ugd2lzaCB0byBhdm9pZCB0aGUgZGFuZ2Vy IHRoYXQgcmVkaXN0cmlidXRvcnMgb2YgYSBmcmVlCi0tcHJvZ3JhbSB3aWxsIGluZGl2aWR1YWxs eSBvYnRhaW4gcGF0ZW50IGxpY2Vuc2VzLCBpbiBlZmZlY3QgbWFraW5nIHRoZQotLXByb2dyYW0g cHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0 IGFueQotLXBhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZvciBldmVyeW9uZSdzIGZyZWUgdXNlIG9y IG5vdCBsaWNlbnNlZCBhdCBhbGwuCi0rZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgcGFz cyBvbiB0byB0aGUgcmVjaXBpZW50cyB0aGUgc2FtZQotK2ZyZWVkb21zIHRoYXQgeW91IHJlY2Vp dmVkLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlCi0rb3IgY2Fu IGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1z IHNvIHRoZXkKLStrbm93IHRoZWlyIHJpZ2h0cy4KLSsKLSsgIERldmVsb3BlcnMgdGhhdCB1c2Ug dGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoKLSsoMSkgYXNz ZXJ0IGNvcHlyaWdodCBvbiB0aGUgc29mdHdhcmUsIGFuZCAoMikgb2ZmZXIgeW91IHRoaXMgTGlj ZW5zZQotK2dpdmluZyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFu ZC9vciBtb2RpZnkgaXQuCi0rCi0rICBGb3IgdGhlIGRldmVsb3BlcnMnIGFuZCBhdXRob3JzJyBw cm90ZWN0aW9uLCB0aGUgR1BMIGNsZWFybHkgZXhwbGFpbnMKLSt0aGF0IHRoZXJlIGlzIG5vIHdh cnJhbnR5IGZvciB0aGlzIGZyZWUgc29mdHdhcmUuICBGb3IgYm90aCB1c2VycycgYW5kCi0rYXV0 aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1h cmtlZCBhcwotK2NoYW5nZWQsIHNvIHRoYXQgdGhlaXIgcHJvYmxlbXMgd2lsbCBub3QgYmUgYXR0 cmlidXRlZCBlcnJvbmVvdXNseSB0bwotK2F1dGhvcnMgb2YgcHJldmlvdXMgdmVyc2lvbnMuCi0r Ci0rICBTb21lIGRldmljZXMgYXJlIGRlc2lnbmVkIHRvIGRlbnkgdXNlcnMgYWNjZXNzIHRvIGlu c3RhbGwgb3IgcnVuCi0rbW9kaWZpZWQgdmVyc2lvbnMgb2YgdGhlIHNvZnR3YXJlIGluc2lkZSB0 aGVtLCBhbHRob3VnaCB0aGUgbWFudWZhY3R1cmVyCi0rY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5k YW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YKLStwcm90ZWN0aW5nIHVzZXJz JyBmcmVlZG9tIHRvIGNoYW5nZSB0aGUgc29mdHdhcmUuICBUaGUgc3lzdGVtYXRpYwotK3BhdHRl cm4gb2Ygc3VjaCBhYnVzZSBvY2N1cnMgaW4gdGhlIGFyZWEgb2YgcHJvZHVjdHMgZm9yIGluZGl2 aWR1YWxzIHRvCi0rdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFj Y2VwdGFibGUuICBUaGVyZWZvcmUsIHdlCi0raGF2ZSBkZXNpZ25lZCB0aGlzIHZlcnNpb24gb2Yg dGhlIEdQTCB0byBwcm9oaWJpdCB0aGUgcHJhY3RpY2UgZm9yIHRob3NlCi0rcHJvZHVjdHMuICBJ ZiBzdWNoIHByb2JsZW1zIGFyaXNlIHN1YnN0YW50aWFsbHkgaW4gb3RoZXIgZG9tYWlucywgd2UK LStzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBp biBmdXR1cmUgdmVyc2lvbnMKLStvZiB0aGUgR1BMLCBhcyBuZWVkZWQgdG8gcHJvdGVjdCB0aGUg ZnJlZWRvbSBvZiB1c2Vycy4KLSsKLSsgIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0 ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuCi0rU3RhdGVzIHNob3VsZCBub3Qg YWxsb3cgcGF0ZW50cyB0byByZXN0cmljdCBkZXZlbG9wbWVudCBhbmQgdXNlIG9mCi0rc29mdHdh cmUgb24gZ2VuZXJhbC1wdXJwb3NlIGNvbXB1dGVycywgYnV0IGluIHRob3NlIHRoYXQgZG8sIHdl IHdpc2ggdG8KLSthdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQg dG8gYSBmcmVlIHByb2dyYW0gY291bGQKLSttYWtlIGl0IGVmZmVjdGl2ZWx5IHByb3ByaWV0YXJ5 LiAgVG8gcHJldmVudCB0aGlzLCB0aGUgR1BMIGFzc3VyZXMgdGhhdAotK3BhdGVudHMgY2Fubm90 IGJlIHVzZWQgdG8gcmVuZGVyIHRoZSBwcm9ncmFtIG5vbi1mcmVlLgotIAotICAgVGhlIHByZWNp c2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKLSBt b2RpZmljYXRpb24gZm9sbG93LgotLQwKLS0JCSAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5T RQotLSAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5E IE1PRElGSUNBVElPTgotLQotLSAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IHByb2dy YW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwotLWEgbm90aWNlIHBsYWNlZCBieSB0aGUg Y29weXJpZ2h0IGhvbGRlciBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVkCi0tdW5kZXIgdGhl IHRlcm1zIG9mIHRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoZSAiUHJvZ3JhbSIsIGJl bG93LAotLXJlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJh c2VkIG9uIHRoZSBQcm9ncmFtIgotLW1lYW5zIGVpdGhlciB0aGUgUHJvZ3JhbSBvciBhbnkgZGVy aXZhdGl2ZSB3b3JrIHVuZGVyIGNvcHlyaWdodCBsYXc6Ci0tdGhhdCBpcyB0byBzYXksIGEgd29y ayBjb250YWluaW5nIHRoZSBQcm9ncmFtIG9yIGEgcG9ydGlvbiBvZiBpdCwKLS1laXRoZXIgdmVy YmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhl cgotLWxhbmd1YWdlLiAgKEhlcmVpbmFmdGVyLCB0cmFuc2xhdGlvbiBpcyBpbmNsdWRlZCB3aXRo b3V0IGxpbWl0YXRpb24gaW4KLS10aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pICBFYWNoIGxpY2Vu c2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4KLS0KLS1BY3Rpdml0aWVzIG90aGVyIHRoYW4gY29w eWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24gYXJlIG5vdAotLWNvdmVyZWQgYnkg dGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKLS1y dW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9t IHRoZSBQcm9ncmFtCi0taXMgY292ZXJlZCBvbmx5IGlmIGl0cyBjb250ZW50cyBjb25zdGl0dXRl IGEgd29yayBiYXNlZCBvbiB0aGUKLS1Qcm9ncmFtIChpbmRlcGVuZGVudCBvZiBoYXZpbmcgYmVl biBtYWRlIGJ5IHJ1bm5pbmcgdGhlIFByb2dyYW0pLgotLVdoZXRoZXIgdGhhdCBpcyB0cnVlIGRl cGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgotLQotLSAgMS4gWW91IG1heSBjb3B5IGFu ZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzCi0tc291cmNlIGNv ZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91Ci0t Y29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbiBh cHByb3ByaWF0ZQotLWNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7 IGtlZXAgaW50YWN0IGFsbCB0aGUKLS1ub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNl IGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7Ci0tYW5kIGdpdmUgYW55IG90aGVy IHJlY2lwaWVudHMgb2YgdGhlIFByb2dyYW0gYSBjb3B5IG9mIHRoaXMgTGljZW5zZQotLWFsb25n IHdpdGggdGhlIFByb2dyYW0uCi0tCi0tWW91IG1heSBjaGFyZ2UgYSBmZWUgZm9yIHRoZSBwaHlz aWNhbCBhY3Qgb2YgdHJhbnNmZXJyaW5nIGEgY29weSwgYW5kCi0teW91IG1heSBhdCB5b3VyIG9w dGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhIGZlZS4KLS0K LS0gIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIFByb2dyYW0g b3IgYW55IHBvcnRpb24KLS1vZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUg UHJvZ3JhbSwgYW5kIGNvcHkgYW5kCi0tZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Ig d29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCi0tYWJvdmUsIHByb3ZpZGVkIHRoYXQg eW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKLS0KLS0gICAgYSkgWW91IG11 c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCi0t ICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFu eSBjaGFuZ2UuCi0tCi0tICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRp c3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgotLSAgICB3aG9sZSBvciBpbiBwYXJ0IGNvbnRh aW5zIG9yIGlzIGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSBvciBhbnkKLS0gICAgcGFydCB0aGVy ZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBhIHdob2xlIGF0IG5vIGNoYXJnZSB0byBhbGwgdGhpcmQK LS0gICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgotLQotLSAgICBj KSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBjb21tYW5kcyBpbnRlcmFj dGl2ZWx5Ci0tICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1 bm5pbmcgZm9yIHN1Y2gKLS0gICAgaW50ZXJhY3RpdmUgdXNlIGluIHRoZSBtb3N0IG9yZGluYXJ5 IHdheSwgdG8gcHJpbnQgb3IgZGlzcGxheSBhbgotLSAgICBhbm5vdW5jZW1lbnQgaW5jbHVkaW5n IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEKLS0gICAgbm90aWNlIHRoYXQg dGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlCi0t ICAgIGEgd2FycmFudHkpIGFuZCB0aGF0IHVzZXJzIG1heSByZWRpc3RyaWJ1dGUgdGhlIHByb2dy YW0gdW5kZXIKLS0gICAgdGhlc2UgY29uZGl0aW9ucywgYW5kIHRlbGxpbmcgdGhlIHVzZXIgaG93 IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMKLS0gICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlmIHRo ZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKLS0gICAgZG9lcyBub3Qgbm9ybWFs bHkgcHJpbnQgc3VjaCBhbiBhbm5vdW5jZW1lbnQsIHlvdXIgd29yayBiYXNlZCBvbgotLSAgICB0 aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQgdG8gcHJpbnQgYW4gYW5ub3VuY2VtZW50LikKLS0M Ci0tVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hv bGUuICBJZgotLWlkZW50aWZpYWJsZSBzZWN0aW9ucyBvZiB0aGF0IHdvcmsgYXJlIG5vdCBkZXJp dmVkIGZyb20gdGhlIFByb2dyYW0sCi0tYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQg aW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluCi0tdGhlbXNlbHZlcywgdGhlbiB0aGlz IExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQotLXNlY3Rpb25z IHdoZW4geW91IGRpc3RyaWJ1dGUgdGhlbSBhcyBzZXBhcmF0ZSB3b3Jrcy4gIEJ1dCB3aGVuIHlv dQotLWRpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBhIHdob2xlIHdoaWNo IGlzIGEgd29yayBiYXNlZAotLW9uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRo ZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgotLXRoaXMgTGljZW5zZSwgd2hvc2UgcGVy bWlzc2lvbnMgZm9yIG90aGVyIGxpY2Vuc2VlcyBleHRlbmQgdG8gdGhlCi0tZW50aXJlIHdob2xl LCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3Rl IGl0LgotLQotLVRodXMsIGl0IGlzIG5vdCB0aGUgaW50ZW50IG9mIHRoaXMgc2VjdGlvbiB0byBj bGFpbSByaWdodHMgb3IgY29udGVzdAotLXlvdXIgcmlnaHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRp cmVseSBieSB5b3U7IHJhdGhlciwgdGhlIGludGVudCBpcyB0bwotLWV4ZXJjaXNlIHRoZSByaWdo dCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgotLWNvbGxlY3Rp dmUgd29ya3MgYmFzZWQgb24gdGhlIFByb2dyYW0uCi0tCi0tSW4gYWRkaXRpb24sIG1lcmUgYWdn cmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQotLXdpdGgg dGhlIFByb2dyYW0gKG9yIHdpdGggYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtKSBvbiBhIHZv bHVtZSBvZgotLWEgc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVkaXVtIGRvZXMgbm90IGJyaW5n IHRoZSBvdGhlciB3b3JrIHVuZGVyCi0tdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KLS0KLS0g IDMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYSB3b3JrIGJh c2VkIG9uIGl0LAotLXVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJs ZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgotLVNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlk ZWQgdGhhdCB5b3UgYWxzbyBkbyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKLS0KLS0gICAgYSkgQWNj b21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJs ZQotLSAgICBzb3VyY2UgY29kZSwgd2hpY2ggbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUg dGVybXMgb2YgU2VjdGlvbnMKLS0gICAgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bSBjdXN0b21h cmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCi0tCi0tICAgIGIpIEFjY29t cGFueSBpdCB3aXRoIGEgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlCi0t ICAgIHllYXJzLCB0byBnaXZlIGFueSB0aGlyZCBwYXJ0eSwgZm9yIGEgY2hhcmdlIG5vIG1vcmUg dGhhbiB5b3VyCi0tICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0 cmlidXRpb24sIGEgY29tcGxldGUKLS0gICAgbWFjaGluZS1yZWFkYWJsZSBjb3B5IG9mIHRoZSBj b3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLCB0byBiZQotLSAgICBkaXN0cmlidXRlZCB1bmRlciB0 aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bQotLSAgICBjdXN0 b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCi0tCi0tICAgIGMpIEFj Y29tcGFueSBpdCB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgcmVjZWl2ZWQgYXMgdG8gdGhlIG9m ZmVyCi0tICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlz IGFsdGVybmF0aXZlIGlzCi0tICAgIGFsbG93ZWQgb25seSBmb3Igbm9uY29tbWVyY2lhbCBkaXN0 cmlidXRpb24gYW5kIG9ubHkgaWYgeW91Ci0tICAgIHJlY2VpdmVkIHRoZSBwcm9ncmFtIGluIG9i amVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB3aXRoIHN1Y2gKLS0gICAgYW4gb2ZmZXIsIGlu IGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCi0tCi0tVGhlIHNvdXJjZSBjb2RlIGZv ciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrIGZvcgotLW1ha2lu ZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUg c291cmNlCi0tY29kZSBtZWFucyBhbGwgdGhlIHNvdXJjZSBjb2RlIGZvciBhbGwgbW9kdWxlcyBp dCBjb250YWlucywgcGx1cyBhbnkKLS1hc3NvY2lhdGVkIGludGVyZmFjZSBkZWZpbml0aW9uIGZp bGVzLCBwbHVzIHRoZSBzY3JpcHRzIHVzZWQgdG8KLS1jb250cm9sIGNvbXBpbGF0aW9uIGFuZCBp bnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCi0tc3BlY2lhbCBl eGNlcHRpb24sIHRoZSBzb3VyY2UgY29kZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlCi0t YW55dGhpbmcgdGhhdCBpcyBub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBv ciBiaW5hcnkKLS1mb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2Vy bmVsLCBhbmQgc28gb24pIG9mIHRoZQotLW9wZXJhdGluZyBzeXN0ZW0gb24gd2hpY2ggdGhlIGV4 ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50Ci0taXRzZWxmIGFjY29tcGFuaWVz IHRoZSBleGVjdXRhYmxlLgotLQotLUlmIGRpc3RyaWJ1dGlvbiBvZiBleGVjdXRhYmxlIG9yIG9i amVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcKLS1hY2Nlc3MgdG8gY29weSBmcm9tIGEgZGVz aWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50Ci0tYWNjZXNzIHRvIGNvcHkg dGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCi0tZGlzdHJpYnV0 aW9uIG9mIHRoZSBzb3VyY2UgY29kZSwgZXZlbiB0aG91Z2ggdGhpcmQgcGFydGllcyBhcmUgbm90 Ci0tY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29k ZS4KLS0MCi0tICA0LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRp c3RyaWJ1dGUgdGhlIFByb2dyYW0KLS1leGNlcHQgYXMgZXhwcmVzc2x5IHByb3ZpZGVkIHVuZGVy IHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0Ci0tb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwg c3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCi0tdm9pZCwgYW5kIHdpbGwg YXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgot LUhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLCBvciByaWdodHMsIGZy b20geW91IHVuZGVyCi0tdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMg dGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKLS1wYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBs aWFuY2UuCi0tCi0tICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNl bnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKLS1zaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVs c2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgotLWRpc3RyaWJ1dGUgdGhlIFBy b2dyYW0gb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQotLXByb2hp Yml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9y ZSwgYnkKLS1tb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIChvciBhbnkgd29y ayBiYXNlZCBvbiB0aGUKLS1Qcm9ncmFtKSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBv ZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAotLWFsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlv bnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKLS10aGUgUHJvZ3JhbSBv ciB3b3JrcyBiYXNlZCBvbiBpdC4KLS0KLS0gIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRl IHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKLS1Qcm9ncmFtKSwgdGhlIHJl Y2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQotLW9yaWdp bmFsIGxpY2Vuc29yIHRvIGNvcHksIGRpc3RyaWJ1dGUgb3IgbW9kaWZ5IHRoZSBQcm9ncmFtIHN1 YmplY3QgdG8KLS10aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9z ZSBhbnkgZnVydGhlcgotLXJlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ug b2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KLS1Zb3UgYXJlIG5vdCByZXNwb25zaWJsZSBm b3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB0bwotKwotKyAgICAgICAg ICAgICAgICAgICAgICAgVEVSTVMgQU5EIENPTkRJVElPTlMKLSsKLSsgIDAuIERlZmluaXRpb25z LgotKwotKyAgIlRoaXMgTGljZW5zZSIgcmVmZXJzIHRvIHZlcnNpb24gMyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rICAiQ29weXJpZ2h0IiBhbHNvIG1lYW5zIGNvcHly aWdodC1saWtlIGxhd3MgdGhhdCBhcHBseSB0byBvdGhlciBraW5kcyBvZgotK3dvcmtzLCBzdWNo IGFzIHNlbWljb25kdWN0b3IgbWFza3MuCi0rCi0rICAiVGhlIFByb2dyYW0iIHJlZmVycyB0byBh bnkgY29weXJpZ2h0YWJsZSB3b3JrIGxpY2Vuc2VkIHVuZGVyIHRoaXMKLStMaWNlbnNlLiAgRWFj aCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuICAiTGljZW5zZWVzIiBhbmQKLSsicmVj aXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuCi0rCi0rICBUbyAi bW9kaWZ5IiBhIHdvcmsgbWVhbnMgdG8gY29weSBmcm9tIG9yIGFkYXB0IGFsbCBvciBwYXJ0IG9m IHRoZSB3b3JrCi0raW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwg b3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuCi0rZXhhY3QgY29weS4gIFRoZSByZXN1bHRpbmcg d29yayBpcyBjYWxsZWQgYSAibW9kaWZpZWQgdmVyc2lvbiIgb2YgdGhlCi0rZWFybGllciB3b3Jr IG9yIGEgd29yayAiYmFzZWQgb24iIHRoZSBlYXJsaWVyIHdvcmsuCi0rCi0rICBBICJjb3ZlcmVk IHdvcmsiIG1lYW5zIGVpdGhlciB0aGUgdW5tb2RpZmllZCBQcm9ncmFtIG9yIGEgd29yayBiYXNl ZAotK29uIHRoZSBQcm9ncmFtLgotKwotKyAgVG8gInByb3BhZ2F0ZSIgYSB3b3JrIG1lYW5zIHRv IGRvIGFueXRoaW5nIHdpdGggaXQgdGhhdCwgd2l0aG91dAotK3Blcm1pc3Npb24sIHdvdWxkIG1h a2UgeW91IGRpcmVjdGx5IG9yIHNlY29uZGFyaWx5IGxpYWJsZSBmb3IKLStpbmZyaW5nZW1lbnQg dW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEK LStjb21wdXRlciBvciBtb2RpZnlpbmcgYSBwcml2YXRlIGNvcHkuICBQcm9wYWdhdGlvbiBpbmNs dWRlcyBjb3B5aW5nLAotK2Rpc3RyaWJ1dGlvbiAod2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlv biksIG1ha2luZyBhdmFpbGFibGUgdG8gdGhlCi0rcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJp ZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgotKwotKyAgVG8gImNvbnZleSIgYSB3b3JrIG1l YW5zIGFueSBraW5kIG9mIHByb3BhZ2F0aW9uIHRoYXQgZW5hYmxlcyBvdGhlcgotK3BhcnRpZXMg dG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIg dGhyb3VnaAotK2EgY29tcHV0ZXIgbmV0d29yaywgd2l0aCBubyB0cmFuc2ZlciBvZiBhIGNvcHks IGlzIG5vdCBjb252ZXlpbmcuCi0rCi0rICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBk aXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyIKLSt0byB0aGUgZXh0ZW50IHRoYXQg aXQgaW5jbHVkZXMgYSBjb252ZW5pZW50IGFuZCBwcm9taW5lbnRseSB2aXNpYmxlCi0rZmVhdHVy ZSB0aGF0ICgxKSBkaXNwbGF5cyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlLCBhbmQg KDIpCi0rdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdv cmsgKGV4Y2VwdCB0byB0aGUKLStleHRlbnQgdGhhdCB3YXJyYW50aWVzIGFyZSBwcm92aWRlZCks IHRoYXQgbGljZW5zZWVzIG1heSBjb252ZXkgdGhlCi0rd29yayB1bmRlciB0aGlzIExpY2Vuc2Us IGFuZCBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlLiAgSWYKLSt0aGUgaW50ZXJm YWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMg YQotK21lbnUsIGEgcHJvbWluZW50IGl0ZW0gaW4gdGhlIGxpc3QgbWVldHMgdGhpcyBjcml0ZXJp b24uCi0rCi0rICAxLiBTb3VyY2UgQ29kZS4KLSsKLSsgIFRoZSAic291cmNlIGNvZGUiIGZvciBh IHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrCi0rZm9yIG1ha2luZyBt b2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQot K2Zvcm0gb2YgYSB3b3JrLgotKwotKyAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBp bnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwKLStzdGFuZGFyZCBkZWZpbmVkIGJ5 IGEgcmVjb2duaXplZCBzdGFuZGFyZHMgYm9keSwgb3IsIGluIHRoZSBjYXNlIG9mCi0raW50ZXJm YWNlcyBzcGVjaWZpZWQgZm9yIGEgcGFydGljdWxhciBwcm9ncmFtbWluZyBsYW5ndWFnZSwgb25l IHRoYXQKLStpcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBs YW5ndWFnZS4KLSsKLSsgIFRoZSAiU3lzdGVtIExpYnJhcmllcyIgb2YgYW4gZXhlY3V0YWJsZSB3 b3JrIGluY2x1ZGUgYW55dGhpbmcsIG90aGVyCi0rdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0 aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YKLStwYWNrYWdpbmcgYSBN YWpvciBDb21wb25lbnQsIGJ1dCB3aGljaCBpcyBub3QgcGFydCBvZiB0aGF0IE1ham9yCi0rQ29t cG9uZW50LCBhbmQgKGIpIHNlcnZlcyBvbmx5IHRvIGVuYWJsZSB1c2Ugb2YgdGhlIHdvcmsgd2l0 aCB0aGF0Ci0rTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRl cmZhY2UgZm9yIHdoaWNoIGFuCi0raW1wbGVtZW50YXRpb24gaXMgYXZhaWxhYmxlIHRvIHRoZSBw dWJsaWMgaW4gc291cmNlIGNvZGUgZm9ybS4gIEEKLSsiTWFqb3IgQ29tcG9uZW50IiwgaW4gdGhp cyBjb250ZXh0LCBtZWFucyBhIG1ham9yIGVzc2VudGlhbCBjb21wb25lbnQKLSsoa2VybmVsLCB3 aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVt Ci0rKGlmIGFueSkgb24gd2hpY2ggdGhlIGV4ZWN1dGFibGUgd29yayBydW5zLCBvciBhIGNvbXBp bGVyIHVzZWQgdG8KLStwcm9kdWNlIHRoZSB3b3JrLCBvciBhbiBvYmplY3QgY29kZSBpbnRlcnBy ZXRlciB1c2VkIHRvIHJ1biBpdC4KLSsKLSsgIFRoZSAiQ29ycmVzcG9uZGluZyBTb3VyY2UiIGZv ciBhIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSBtZWFucyBhbGwKLSt0aGUgc291cmNlIGNvZGUg bmVlZGVkIHRvIGdlbmVyYXRlLCBpbnN0YWxsLCBhbmQgKGZvciBhbiBleGVjdXRhYmxlCi0rd29y aykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcg c2NyaXB0cyB0bwotK2NvbnRyb2wgdGhvc2UgYWN0aXZpdGllcy4gIEhvd2V2ZXIsIGl0IGRvZXMg bm90IGluY2x1ZGUgdGhlIHdvcmsncwotK1N5c3RlbSBMaWJyYXJpZXMsIG9yIGdlbmVyYWwtcHVy cG9zZSB0b29scyBvciBnZW5lcmFsbHkgYXZhaWxhYmxlIGZyZWUKLStwcm9ncmFtcyB3aGljaCBh cmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQKLSt3 aGljaCBhcmUgbm90IHBhcnQgb2YgdGhlIHdvcmsuICBGb3IgZXhhbXBsZSwgQ29ycmVzcG9uZGlu ZyBTb3VyY2UKLStpbmNsdWRlcyBpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcyBhc3NvY2lhdGVk IHdpdGggc291cmNlIGZpbGVzIGZvcgotK3RoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZv ciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQotK2xpbmtlZCBzdWJwcm9ncmFtcyB0 aGF0IHRoZSB3b3JrIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byByZXF1aXJlLAotK3N1Y2gg YXMgYnkgaW50aW1hdGUgZGF0YSBjb21tdW5pY2F0aW9uIG9yIGNvbnRyb2wgZmxvdyBiZXR3ZWVu IHRob3NlCi0rc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLgotKwotKyAg VGhlIENvcnJlc3BvbmRpbmcgU291cmNlIG5lZWQgbm90IGluY2x1ZGUgYW55dGhpbmcgdGhhdCB1 c2VycwotK2NhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0 aGUgQ29ycmVzcG9uZGluZwotK1NvdXJjZS4KLSsKLSsgIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJj ZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdAotK3NhbWUgd29yay4KLSsK LSsgIDIuIEJhc2ljIFBlcm1pc3Npb25zLgotKwotKyAgQWxsIHJpZ2h0cyBncmFudGVkIHVuZGVy IHRoaXMgTGljZW5zZSBhcmUgZ3JhbnRlZCBmb3IgdGhlIHRlcm0gb2YKLStjb3B5cmlnaHQgb24g dGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZAotK2Nv bmRpdGlvbnMgYXJlIG1ldC4gIFRoaXMgTGljZW5zZSBleHBsaWNpdGx5IGFmZmlybXMgeW91ciB1 bmxpbWl0ZWQKLStwZXJtaXNzaW9uIHRvIHJ1biB0aGUgdW5tb2RpZmllZCBQcm9ncmFtLiAgVGhl IG91dHB1dCBmcm9tIHJ1bm5pbmcgYQotK2NvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMg TGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cwotK2NvbnRlbnQsIGNvbnN0aXR1 dGVzIGEgY292ZXJlZCB3b3JrLiAgVGhpcyBMaWNlbnNlIGFja25vd2xlZGdlcyB5b3VyCi0rcmln aHRzIG9mIGZhaXIgdXNlIG9yIG90aGVyIGVxdWl2YWxlbnQsIGFzIHByb3ZpZGVkIGJ5IGNvcHly aWdodCBsYXcuCi0rCi0rICBZb3UgbWF5IG1ha2UsIHJ1biBhbmQgcHJvcGFnYXRlIGNvdmVyZWQg d29ya3MgdGhhdCB5b3UgZG8gbm90Ci0rY29udmV5LCB3aXRob3V0IGNvbmRpdGlvbnMgc28gbG9u ZyBhcyB5b3VyIGxpY2Vuc2Ugb3RoZXJ3aXNlIHJlbWFpbnMKLStpbiBmb3JjZS4gIFlvdSBtYXkg Y29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlCi0rb2Yg aGF2aW5nIHRoZW0gbWFrZSBtb2RpZmljYXRpb25zIGV4Y2x1c2l2ZWx5IGZvciB5b3UsIG9yIHBy b3ZpZGUgeW91Ci0rd2l0aCBmYWNpbGl0aWVzIGZvciBydW5uaW5nIHRob3NlIHdvcmtzLCBwcm92 aWRlZCB0aGF0IHlvdSBjb21wbHkgd2l0aAotK3RoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4g Y29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvCi0rbm90IGNvbnRyb2wgY29w eXJpZ2h0LiAgVGhvc2UgdGh1cyBtYWtpbmcgb3IgcnVubmluZyB0aGUgY292ZXJlZCB3b3Jrcwot K2ZvciB5b3UgbXVzdCBkbyBzbyBleGNsdXNpdmVseSBvbiB5b3VyIGJlaGFsZiwgdW5kZXIgeW91 ciBkaXJlY3Rpb24KLSthbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZy b20gbWFraW5nIGFueSBjb3BpZXMgb2YKLSt5b3VyIGNvcHlyaWdodGVkIG1hdGVyaWFsIG91dHNp ZGUgdGhlaXIgcmVsYXRpb25zaGlwIHdpdGggeW91LgotKwotKyAgQ29udmV5aW5nIHVuZGVyIGFu eSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXIKLSt0aGUgY29u ZGl0aW9ucyBzdGF0ZWQgYmVsb3cuICBTdWJsaWNlbnNpbmcgaXMgbm90IGFsbG93ZWQ7IHNlY3Rp b24gMTAKLSttYWtlcyBpdCB1bm5lY2Vzc2FyeS4KLSsKLSsgIDMuIFByb3RlY3RpbmcgVXNlcnMn IExlZ2FsIFJpZ2h0cyBGcm9tIEFudGktQ2lyY3VtdmVudGlvbiBMYXcuCi0rCi0rICBObyBjb3Zl cmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2lj YWwKLSttZWFzdXJlIHVuZGVyIGFueSBhcHBsaWNhYmxlIGxhdyBmdWxmaWxsaW5nIG9ibGlnYXRp b25zIHVuZGVyIGFydGljbGUKLSsxMSBvZiB0aGUgV0lQTyBjb3B5cmlnaHQgdHJlYXR5IGFkb3B0 ZWQgb24gMjAgRGVjZW1iZXIgMTk5Niwgb3IKLStzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3Ig cmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoCi0rbWVhc3VyZXMuCi0rCi0rICBXaGVu IHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8g Zm9yYmlkCi0rY2lyY3VtdmVudGlvbiBvZiB0ZWNobm9sb2dpY2FsIG1lYXN1cmVzIHRvIHRoZSBl eHRlbnQgc3VjaCBjaXJjdW12ZW50aW9uCi0raXMgZWZmZWN0ZWQgYnkgZXhlcmNpc2luZyByaWdo dHMgdW5kZXIgdGhpcyBMaWNlbnNlIHdpdGggcmVzcGVjdCB0bwotK3RoZSBjb3ZlcmVkIHdvcmss IGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3IKLStt b2RpZmljYXRpb24gb2YgdGhlIHdvcmsgYXMgYSBtZWFucyBvZiBlbmZvcmNpbmcsIGFnYWluc3Qg dGhlIHdvcmsncwotK3VzZXJzLCB5b3VyIG9yIHRoaXJkIHBhcnRpZXMnIGxlZ2FsIHJpZ2h0cyB0 byBmb3JiaWQgY2lyY3VtdmVudGlvbiBvZgotK3RlY2hub2xvZ2ljYWwgbWVhc3VyZXMuCi0rCi0r ICA0LiBDb252ZXlpbmcgVmVyYmF0aW0gQ29waWVzLgotKwotKyAgWW91IG1heSBjb252ZXkgdmVy YmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3Mgc291cmNlIGNvZGUgYXMgeW91Ci0rcmVjZWl2 ZSBpdCwgaW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdCB5b3UgY29uc3BpY3VvdXNseSBhbmQK LSthcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHly aWdodCBub3RpY2U7Ci0ra2VlcCBpbnRhY3QgYWxsIG5vdGljZXMgc3RhdGluZyB0aGF0IHRoaXMg TGljZW5zZSBhbmQgYW55Ci0rbm9uLXBlcm1pc3NpdmUgdGVybXMgYWRkZWQgaW4gYWNjb3JkIHdp dGggc2VjdGlvbiA3IGFwcGx5IHRvIHRoZSBjb2RlOwotK2tlZXAgaW50YWN0IGFsbCBub3RpY2Vz IG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsCi0rcmVjaXBpZW50 cyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlIFByb2dyYW0uCi0rCi0rICBZ b3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlv dSBjb252ZXksCi0rYW5kIHlvdSBtYXkgb2ZmZXIgc3VwcG9ydCBvciB3YXJyYW50eSBwcm90ZWN0 aW9uIGZvciBhIGZlZS4KLSsKLSsgIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lv bnMuCi0rCi0rICBZb3UgbWF5IGNvbnZleSBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0sIG9y IHRoZSBtb2RpZmljYXRpb25zIHRvCi0rcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0 aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKLSt0ZXJtcyBvZiBzZWN0aW9uIDQsIHBy b3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKLSsKLSsg ICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQg eW91IG1vZGlmaWVkCi0rICAgIGl0LCBhbmQgZ2l2aW5nIGEgcmVsZXZhbnQgZGF0ZS4KLSsKLSsg ICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQg aXQgaXMKLSsgICAgcmVsZWFzZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFuZCBhbnkgY29uZGl0aW9u cyBhZGRlZCB1bmRlciBzZWN0aW9uCi0rICAgIDcuICBUaGlzIHJlcXVpcmVtZW50IG1vZGlmaWVz IHRoZSByZXF1aXJlbWVudCBpbiBzZWN0aW9uIDQgdG8KLSsgICAgImtlZXAgaW50YWN0IGFsbCBu b3RpY2VzIi4KLSsKLSsgICAgYykgWW91IG11c3QgbGljZW5zZSB0aGUgZW50aXJlIHdvcmssIGFz IGEgd2hvbGUsIHVuZGVyIHRoaXMKLSsgICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGlu dG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzCi0rICAgIExpY2Vuc2Ugd2lsbCB0aGVyZWZv cmUgYXBwbHksIGFsb25nIHdpdGggYW55IGFwcGxpY2FibGUgc2VjdGlvbiA3Ci0rICAgIGFkZGl0 aW9uYWwgdGVybXMsIHRvIHRoZSB3aG9sZSBvZiB0aGUgd29yaywgYW5kIGFsbCBpdHMgcGFydHMs Ci0rICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNl IGdpdmVzIG5vCi0rICAgIHBlcm1pc3Npb24gdG8gbGljZW5zZSB0aGUgd29yayBpbiBhbnkgb3Ro ZXIgd2F5LCBidXQgaXQgZG9lcyBub3QKLSsgICAgaW52YWxpZGF0ZSBzdWNoIHBlcm1pc3Npb24g aWYgeW91IGhhdmUgc2VwYXJhdGVseSByZWNlaXZlZCBpdC4KLSsKLSsgICAgZCkgSWYgdGhlIHdv cmsgaGFzIGludGVyYWN0aXZlIHVzZXIgaW50ZXJmYWNlcywgZWFjaCBtdXN0IGRpc3BsYXkKLSsg ICAgQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlczsgaG93ZXZlciwgaWYgdGhlIFByb2dyYW0gaGFz IGludGVyYWN0aXZlCi0rICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3By aWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyCi0rICAgIHdvcmsgbmVlZCBub3QgbWFrZSB0aGVtIGRv IHNvLgotKwotKyAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNl cGFyYXRlIGFuZCBpbmRlcGVuZGVudAotK3dvcmtzLCB3aGljaCBhcmUgbm90IGJ5IHRoZWlyIG5h dHVyZSBleHRlbnNpb25zIG9mIHRoZSBjb3ZlcmVkIHdvcmssCi0rYW5kIHdoaWNoIGFyZSBub3Qg Y29tYmluZWQgd2l0aCBpdCBzdWNoIGFzIHRvIGZvcm0gYSBsYXJnZXIgcHJvZ3JhbSwKLStpbiBv ciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2Fs bGVkIGFuCi0rImFnZ3JlZ2F0ZSIgaWYgdGhlIGNvbXBpbGF0aW9uIGFuZCBpdHMgcmVzdWx0aW5n IGNvcHlyaWdodCBhcmUgbm90Ci0rdXNlZCB0byBsaW1pdCB0aGUgYWNjZXNzIG9yIGxlZ2FsIHJp Z2h0cyBvZiB0aGUgY29tcGlsYXRpb24ncyB1c2VycwotK2JleW9uZCB3aGF0IHRoZSBpbmRpdmlk dWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yawotK2luIGFuIGFn Z3JlZ2F0ZSBkb2VzIG5vdCBjYXVzZSB0aGlzIExpY2Vuc2UgdG8gYXBwbHkgdG8gdGhlIG90aGVy Ci0rcGFydHMgb2YgdGhlIGFnZ3JlZ2F0ZS4KLSsKLSsgIDYuIENvbnZleWluZyBOb24tU291cmNl IEZvcm1zLgotKwotKyAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNv ZGUgZm9ybSB1bmRlciB0aGUgdGVybXMKLStvZiBzZWN0aW9ucyA0IGFuZCA1LCBwcm92aWRlZCB0 aGF0IHlvdSBhbHNvIGNvbnZleSB0aGUKLSttYWNoaW5lLXJlYWRhYmxlIENvcnJlc3BvbmRpbmcg U291cmNlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsCi0raW4gb25lIG9mIHRoZXNl IHdheXM6Ci0rCi0rICAgIGEpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVk IGluLCBhIHBoeXNpY2FsIHByb2R1Y3QKLSsgICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3Ry aWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUKLSsgICAgQ29ycmVzcG9uZGluZyBT b3VyY2UgZml4ZWQgb24gYSBkdXJhYmxlIHBoeXNpY2FsIG1lZGl1bQotKyAgICBjdXN0b21hcmls eSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KLSsKLSsgICAgYikgQ29udmV5IHRoZSBv YmplY3QgY29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwgcHJvZHVjdAotKyAgICAo aW5jbHVkaW5nIGEgcGh5c2ljYWwgZGlzdHJpYnV0aW9uIG1lZGl1bSksIGFjY29tcGFuaWVkIGJ5 IGEKLSsgICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFu ZCB2YWxpZCBmb3IgYXMKLSsgICAgbG9uZyBhcyB5b3Ugb2ZmZXIgc3BhcmUgcGFydHMgb3IgY3Vz dG9tZXIgc3VwcG9ydCBmb3IgdGhhdCBwcm9kdWN0Ci0rICAgIG1vZGVsLCB0byBnaXZlIGFueW9u ZSB3aG8gcG9zc2Vzc2VzIHRoZSBvYmplY3QgY29kZSBlaXRoZXIgKDEpIGEKLSsgICAgY29weSBv ZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlCi0r ICAgIHByb2R1Y3QgdGhhdCBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSwgb24gYSBkdXJhYmxl IHBoeXNpY2FsCi0rICAgIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRl cmNoYW5nZSwgZm9yIGEgcHJpY2Ugbm8KLSsgICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBj b3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzCi0rICAgIGNvbnZleWluZyBvZiBzb3Vy Y2UsIG9yICgyKSBhY2Nlc3MgdG8gY29weSB0aGUKLSsgICAgQ29ycmVzcG9uZGluZyBTb3VyY2Ug ZnJvbSBhIG5ldHdvcmsgc2VydmVyIGF0IG5vIGNoYXJnZS4KLSsKLSsgICAgYykgQ29udmV5IGlu ZGl2aWR1YWwgY29waWVzIG9mIHRoZSBvYmplY3QgY29kZSB3aXRoIGEgY29weSBvZiB0aGUKLSsg ICAgd3JpdHRlbiBvZmZlciB0byBwcm92aWRlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZS4gIFRo aXMKLSsgICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9u Y29tbWVyY2lhbGx5LCBhbmQKLSsgICAgb25seSBpZiB5b3UgcmVjZWl2ZWQgdGhlIG9iamVjdCBj b2RlIHdpdGggc3VjaCBhbiBvZmZlciwgaW4gYWNjb3JkCi0rICAgIHdpdGggc3Vic2VjdGlvbiA2 Yi4KLSsKLSsgICAgZCkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBieSBvZmZlcmluZyBhY2Nlc3Mg ZnJvbSBhIGRlc2lnbmF0ZWQKLSsgICAgcGxhY2UgKGdyYXRpcyBvciBmb3IgYSBjaGFyZ2UpLCBh bmQgb2ZmZXIgZXF1aXZhbGVudCBhY2Nlc3MgdG8gdGhlCi0rICAgIENvcnJlc3BvbmRpbmcgU291 cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vCi0rICAgIGZ1 cnRoZXIgY2hhcmdlLiAgWW91IG5lZWQgbm90IHJlcXVpcmUgcmVjaXBpZW50cyB0byBjb3B5IHRo ZQotKyAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4g IElmIHRoZSBwbGFjZSB0bwotKyAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsg c2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UKLSsgICAgbWF5IGJlIG9uIGEgZGlmZmVy ZW50IHNlcnZlciAob3BlcmF0ZWQgYnkgeW91IG9yIGEgdGhpcmQgcGFydHkpCi0rICAgIHRoYXQg c3VwcG9ydHMgZXF1aXZhbGVudCBjb3B5aW5nIGZhY2lsaXRpZXMsIHByb3ZpZGVkIHlvdSBtYWlu dGFpbgotKyAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWlu ZyB3aGVyZSB0byBmaW5kIHRoZQotKyAgICBDb3JyZXNwb25kaW5nIFNvdXJjZS4gIFJlZ2FyZGxl c3Mgb2Ygd2hhdCBzZXJ2ZXIgaG9zdHMgdGhlCi0rICAgIENvcnJlc3BvbmRpbmcgU291cmNlLCB5 b3UgcmVtYWluIG9ibGlnYXRlZCB0byBlbnN1cmUgdGhhdCBpdCBpcwotKyAgICBhdmFpbGFibGUg Zm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLgotKwot KyAgICBlKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIHVzaW5nIHBlZXItdG8tcGVlciB0cmFuc21p c3Npb24sIHByb3ZpZGVkCi0rICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9i amVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nCi0rICAgIFNvdXJjZSBvZiB0aGUgd29yayBhcmUg YmVpbmcgb2ZmZXJlZCB0byB0aGUgZ2VuZXJhbCBwdWJsaWMgYXQgbm8KLSsgICAgY2hhcmdlIHVu ZGVyIHN1YnNlY3Rpb24gNmQuCi0rCi0rICBBIHNlcGFyYWJsZSBwb3J0aW9uIG9mIHRoZSBvYmpl Y3QgY29kZSwgd2hvc2Ugc291cmNlIGNvZGUgaXMgZXhjbHVkZWQKLStmcm9tIHRoZSBDb3JyZXNw b25kaW5nIFNvdXJjZSBhcyBhIFN5c3RlbSBMaWJyYXJ5LCBuZWVkIG5vdCBiZQotK2luY2x1ZGVk IGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4KLSsKLSsgIEEgIlVzZXIgUHJvZHVj dCIgaXMgZWl0aGVyICgxKSBhICJjb25zdW1lciBwcm9kdWN0Iiwgd2hpY2ggbWVhbnMgYW55Ci0r dGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVy c29uYWwsIGZhbWlseSwKLStvciBob3VzZWhvbGQgcHVycG9zZXMsIG9yICgyKSBhbnl0aGluZyBk ZXNpZ25lZCBvciBzb2xkIGZvciBpbmNvcnBvcmF0aW9uCi0raW50byBhIGR3ZWxsaW5nLiAgSW4g ZGV0ZXJtaW5pbmcgd2hldGhlciBhIHByb2R1Y3QgaXMgYSBjb25zdW1lciBwcm9kdWN0LAotK2Rv dWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9y IGEgcGFydGljdWxhcgotK3Byb2R1Y3QgcmVjZWl2ZWQgYnkgYSBwYXJ0aWN1bGFyIHVzZXIsICJu b3JtYWxseSB1c2VkIiByZWZlcnMgdG8gYQotK3R5cGljYWwgb3IgY29tbW9uIHVzZSBvZiB0aGF0 IGNsYXNzIG9mIHByb2R1Y3QsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN0YXR1cwotK29mIHRoZSBwYXJ0 aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyCi0r YWN0dWFsbHkgdXNlcywgb3IgZXhwZWN0cyBvciBpcyBleHBlY3RlZCB0byB1c2UsIHRoZSBwcm9k dWN0LiAgQSBwcm9kdWN0Ci0raXMgYSBjb25zdW1lciBwcm9kdWN0IHJlZ2FyZGxlc3Mgb2Ygd2hl dGhlciB0aGUgcHJvZHVjdCBoYXMgc3Vic3RhbnRpYWwKLStjb21tZXJjaWFsLCBpbmR1c3RyaWFs IG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudAotK3RoZSBv bmx5IHNpZ25pZmljYW50IG1vZGUgb2YgdXNlIG9mIHRoZSBwcm9kdWN0LgotKwotKyAgIkluc3Rh bGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2Rz LAotK3Byb2NlZHVyZXMsIGF1dGhvcml6YXRpb24ga2V5cywgb3Igb3RoZXIgaW5mb3JtYXRpb24g cmVxdWlyZWQgdG8gaW5zdGFsbAotK2FuZCBleGVjdXRlIG1vZGlmaWVkIHZlcnNpb25zIG9mIGEg Y292ZXJlZCB3b3JrIGluIHRoYXQgVXNlciBQcm9kdWN0IGZyb20KLSthIG1vZGlmaWVkIHZlcnNp b24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QKLStz dWZmaWNlIHRvIGVuc3VyZSB0aGF0IHRoZSBjb250aW51ZWQgZnVuY3Rpb25pbmcgb2YgdGhlIG1v ZGlmaWVkIG9iamVjdAotK2NvZGUgaXMgaW4gbm8gY2FzZSBwcmV2ZW50ZWQgb3IgaW50ZXJmZXJl ZCB3aXRoIHNvbGVseSBiZWNhdXNlCi0rbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuCi0rCi0r ICBJZiB5b3UgY29udmV5IGFuIG9iamVjdCBjb2RlIHdvcmsgdW5kZXIgdGhpcyBzZWN0aW9uIGlu LCBvciB3aXRoLCBvcgotK3NwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwg YW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzCi0rcGFydCBvZiBhIHRyYW5zYWN0aW9uIGluIHdo aWNoIHRoZSByaWdodCBvZiBwb3NzZXNzaW9uIGFuZCB1c2Ugb2YgdGhlCi0rVXNlciBQcm9kdWN0 IGlzIHRyYW5zZmVycmVkIHRvIHRoZSByZWNpcGllbnQgaW4gcGVycGV0dWl0eSBvciBmb3IgYQot K2ZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0 ZXJpemVkKSwgdGhlCi0rQ29ycmVzcG9uZGluZyBTb3VyY2UgY29udmV5ZWQgdW5kZXIgdGhpcyBz ZWN0aW9uIG11c3QgYmUgYWNjb21wYW5pZWQKLStieSB0aGUgSW5zdGFsbGF0aW9uIEluZm9ybWF0 aW9uLiAgQnV0IHRoaXMgcmVxdWlyZW1lbnQgZG9lcyBub3QgYXBwbHkKLStpZiBuZWl0aGVyIHlv dSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbAotK21v ZGlmaWVkIG9iamVjdCBjb2RlIG9uIHRoZSBVc2VyIFByb2R1Y3QgKGZvciBleGFtcGxlLCB0aGUg d29yayBoYXMKLStiZWVuIGluc3RhbGxlZCBpbiBST00pLgotKwotKyAgVGhlIHJlcXVpcmVtZW50 IHRvIHByb3ZpZGUgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIGRvZXMgbm90IGluY2x1ZGUgYQot K3JlcXVpcmVtZW50IHRvIGNvbnRpbnVlIHRvIHByb3ZpZGUgc3VwcG9ydCBzZXJ2aWNlLCB3YXJy YW50eSwgb3IgdXBkYXRlcwotK2ZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBp bnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yCi0rdGhlIFVzZXIgUHJvZHVjdCBpbiB3 aGljaCBpdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQuICBBY2Nlc3MgdG8gYQotK25l dHdvcmsgbWF5IGJlIGRlbmllZCB3aGVuIHRoZSBtb2RpZmljYXRpb24gaXRzZWxmIG1hdGVyaWFs bHkgYW5kCi0rYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBv ciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kCi0rcHJvdG9jb2xzIGZvciBjb21tdW5pY2F0aW9uIGFj cm9zcyB0aGUgbmV0d29yay4KLSsKLSsgIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBh bmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLAotK2luIGFjY29yZCB3aXRoIHRo aXMgc2VjdGlvbiBtdXN0IGJlIGluIGEgZm9ybWF0IHRoYXQgaXMgcHVibGljbHkKLStkb2N1bWVu dGVkIChhbmQgd2l0aCBhbiBpbXBsZW1lbnRhdGlvbiBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBp bgotK3NvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dv cmQgb3Iga2V5IGZvcgotK3VucGFja2luZywgcmVhZGluZyBvciBjb3B5aW5nLgotKwotKyAgNy4g QWRkaXRpb25hbCBUZXJtcy4KLSsKLSsgICJBZGRpdGlvbmFsIHBlcm1pc3Npb25zIiBhcmUgdGVy bXMgdGhhdCBzdXBwbGVtZW50IHRoZSB0ZXJtcyBvZiB0aGlzCi0rTGljZW5zZSBieSBtYWtpbmcg ZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLgotK0FkZGl0aW9u YWwgcGVybWlzc2lvbnMgdGhhdCBhcmUgYXBwbGljYWJsZSB0byB0aGUgZW50aXJlIFByb2dyYW0g c2hhbGwKLStiZSB0cmVhdGVkIGFzIHRob3VnaCB0aGV5IHdlcmUgaW5jbHVkZWQgaW4gdGhpcyBM aWNlbnNlLCB0byB0aGUgZXh0ZW50Ci0rdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNh YmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMKLSthcHBseSBvbmx5IHRvIHBhcnQg b2YgdGhlIFByb2dyYW0sIHRoYXQgcGFydCBtYXkgYmUgdXNlZCBzZXBhcmF0ZWx5Ci0rdW5kZXIg dGhvc2UgcGVybWlzc2lvbnMsIGJ1dCB0aGUgZW50aXJlIFByb2dyYW0gcmVtYWlucyBnb3Zlcm5l ZCBieQotK3RoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJt aXNzaW9ucy4KLSsKLSsgIFdoZW4geW91IGNvbnZleSBhIGNvcHkgb2YgYSBjb3ZlcmVkIHdvcmss IHlvdSBtYXkgYXQgeW91ciBvcHRpb24KLStyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lv bnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YKLStpdC4gIChBZGRpdGlvbmFs IHBlcm1pc3Npb25zIG1heSBiZSB3cml0dGVuIHRvIHJlcXVpcmUgdGhlaXIgb3duCi0rcmVtb3Zh bCBpbiBjZXJ0YWluIGNhc2VzIHdoZW4geW91IG1vZGlmeSB0aGUgd29yay4pICBZb3UgbWF5IHBs YWNlCi0rYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRv IGEgY292ZXJlZCB3b3JrLAotK2ZvciB3aGljaCB5b3UgaGF2ZSBvciBjYW4gZ2l2ZSBhcHByb3By aWF0ZSBjb3B5cmlnaHQgcGVybWlzc2lvbi4KLSsKLSsgIE5vdHdpdGhzdGFuZGluZyBhbnkgb3Ro ZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQotK2FkZCB0byBh IGNvdmVyZWQgd29yaywgeW91IG1heSAoaWYgYXV0aG9yaXplZCBieSB0aGUgY29weXJpZ2h0IGhv bGRlcnMgb2YKLSt0aGF0IG1hdGVyaWFsKSBzdXBwbGVtZW50IHRoZSB0ZXJtcyBvZiB0aGlzIExp Y2Vuc2Ugd2l0aCB0ZXJtczoKLSsKLSsgICAgYSkgRGlzY2xhaW1pbmcgd2FycmFudHkgb3IgbGlt aXRpbmcgbGlhYmlsaXR5IGRpZmZlcmVudGx5IGZyb20gdGhlCi0rICAgIHRlcm1zIG9mIHNlY3Rp b25zIDE1IGFuZCAxNiBvZiB0aGlzIExpY2Vuc2U7IG9yCi0rCi0rICAgIGIpIFJlcXVpcmluZyBw cmVzZXJ2YXRpb24gb2Ygc3BlY2lmaWVkIHJlYXNvbmFibGUgbGVnYWwgbm90aWNlcyBvcgotKyAg ICBhdXRob3IgYXR0cmlidXRpb25zIGluIHRoYXQgbWF0ZXJpYWwgb3IgaW4gdGhlIEFwcHJvcHJp YXRlIExlZ2FsCi0rICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7 IG9yCi0rCi0rICAgIGMpIFByb2hpYml0aW5nIG1pc3JlcHJlc2VudGF0aW9uIG9mIHRoZSBvcmln aW4gb2YgdGhhdCBtYXRlcmlhbCwgb3IKLSsgICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVy c2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KLSsgICAgcmVhc29uYWJsZSB3YXlz IGFzIGRpZmZlcmVudCBmcm9tIHRoZSBvcmlnaW5hbCB2ZXJzaW9uOyBvcgotKwotKyAgICBkKSBM aW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5z b3JzIG9yCi0rICAgIGF1dGhvcnMgb2YgdGhlIG1hdGVyaWFsOyBvcgotKwotKyAgICBlKSBEZWNs aW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21l Ci0rICAgIHRyYWRlIG5hbWVzLCB0cmFkZW1hcmtzLCBvciBzZXJ2aWNlIG1hcmtzOyBvcgotKwot KyAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9y cyBvZiB0aGF0Ci0rICAgIG1hdGVyaWFsIGJ5IGFueW9uZSB3aG8gY29udmV5cyB0aGUgbWF0ZXJp YWwgKG9yIG1vZGlmaWVkIHZlcnNpb25zIG9mCi0rICAgIGl0KSB3aXRoIGNvbnRyYWN0dWFsIGFz c3VtcHRpb25zIG9mIGxpYWJpbGl0eSB0byB0aGUgcmVjaXBpZW50LCBmb3IKLSsgICAgYW55IGxp YWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9z ZSBvbgotKyAgICB0aG9zZSBsaWNlbnNvcnMgYW5kIGF1dGhvcnMuCi0rCi0rICBBbGwgb3RoZXIg bm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcgot K3Jlc3RyaWN0aW9ucyIgd2l0aGluIHRoZSBtZWFuaW5nIG9mIHNlY3Rpb24gMTAuICBJZiB0aGUg UHJvZ3JhbSBhcyB5b3UKLStyZWNlaXZlZCBpdCwgb3IgYW55IHBhcnQgb2YgaXQsIGNvbnRhaW5z IGEgbm90aWNlIHN0YXRpbmcgdGhhdCBpdCBpcwotK2dvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBh bG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcgotK3Jlc3RyaWN0aW9uLCB5b3UgbWF5 IHJlbW92ZSB0aGF0IHRlcm0uICBJZiBhIGxpY2Vuc2UgZG9jdW1lbnQgY29udGFpbnMKLSthIGZ1 cnRoZXIgcmVzdHJpY3Rpb24gYnV0IHBlcm1pdHMgcmVsaWNlbnNpbmcgb3IgY29udmV5aW5nIHVu ZGVyIHRoaXMKLStMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlh bCBnb3Zlcm5lZCBieSB0aGUgdGVybXMKLStvZiB0aGF0IGxpY2Vuc2UgZG9jdW1lbnQsIHByb3Zp ZGVkIHRoYXQgdGhlIGZ1cnRoZXIgcmVzdHJpY3Rpb24gZG9lcwotK25vdCBzdXJ2aXZlIHN1Y2gg cmVsaWNlbnNpbmcgb3IgY29udmV5aW5nLgotKwotKyAgSWYgeW91IGFkZCB0ZXJtcyB0byBhIGNv dmVyZWQgd29yayBpbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24sIHlvdQotK211c3QgcGxhY2Us IGluIHRoZSByZWxldmFudCBzb3VyY2UgZmlsZXMsIGEgc3RhdGVtZW50IG9mIHRoZQotK2FkZGl0 aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNh dGluZwotK3doZXJlIHRvIGZpbmQgdGhlIGFwcGxpY2FibGUgdGVybXMuCi0rCi0rICBBZGRpdGlv bmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGlu IHRoZQotK2Zvcm0gb2YgYSBzZXBhcmF0ZWx5IHdyaXR0ZW4gbGljZW5zZSwgb3Igc3RhdGVkIGFz IGV4Y2VwdGlvbnM7Ci0rdGhlIGFib3ZlIHJlcXVpcmVtZW50cyBhcHBseSBlaXRoZXIgd2F5Lgot KwotKyAgOC4gVGVybWluYXRpb24uCi0rCi0rICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9k aWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKLStwcm92aWRlZCB1bmRlciB0 aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdCBvdGhlcndpc2UgdG8gcHJvcGFnYXRlIG9yCi0rbW9k aWZ5IGl0IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmln aHRzIHVuZGVyCi0rdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBn cmFudGVkIHVuZGVyIHRoZSB0aGlyZAotK3BhcmFncmFwaCBvZiBzZWN0aW9uIDExKS4KLSsKLSsg IEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhl biB5b3VyCi0rbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzIHJl aW5zdGF0ZWQgKGEpCi0rcHJvdmlzaW9uYWxseSwgdW5sZXNzIGFuZCB1bnRpbCB0aGUgY29weXJp Z2h0IGhvbGRlciBleHBsaWNpdGx5IGFuZAotK2ZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vu c2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQKLStob2xkZXIgZmFpbHMg dG8gbm90aWZ5IHlvdSBvZiB0aGUgdmlvbGF0aW9uIGJ5IHNvbWUgcmVhc29uYWJsZSBtZWFucwot K3ByaW9yIHRvIDYwIGRheXMgYWZ0ZXIgdGhlIGNlc3NhdGlvbi4KLSsKLSsgIE1vcmVvdmVyLCB5 b3VyIGxpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcwotK3JlaW5z dGF0ZWQgcGVybWFuZW50bHkgaWYgdGhlIGNvcHlyaWdodCBob2xkZXIgbm90aWZpZXMgeW91IG9m IHRoZQotK3Zpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZp cnN0IHRpbWUgeW91IGhhdmUKLStyZWNlaXZlZCBub3RpY2Ugb2YgdmlvbGF0aW9uIG9mIHRoaXMg TGljZW5zZSAoZm9yIGFueSB3b3JrKSBmcm9tIHRoYXQKLStjb3B5cmlnaHQgaG9sZGVyLCBhbmQg eW91IGN1cmUgdGhlIHZpb2xhdGlvbiBwcmlvciB0byAzMCBkYXlzIGFmdGVyCi0reW91ciByZWNl aXB0IG9mIHRoZSBub3RpY2UuCi0rCi0rICBUZXJtaW5hdGlvbiBvZiB5b3VyIHJpZ2h0cyB1bmRl ciB0aGlzIHNlY3Rpb24gZG9lcyBub3QgdGVybWluYXRlIHRoZQotK2xpY2Vuc2VzIG9mIHBhcnRp ZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgotK3Ro aXMgTGljZW5zZS4gIElmIHlvdXIgcmlnaHRzIGhhdmUgYmVlbiB0ZXJtaW5hdGVkIGFuZCBub3Qg cGVybWFuZW50bHkKLStyZWluc3RhdGVkLCB5b3UgZG8gbm90IHF1YWxpZnkgdG8gcmVjZWl2ZSBu ZXcgbGljZW5zZXMgZm9yIHRoZSBzYW1lCi0rbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4KLSsK LSsgIDkuIEFjY2VwdGFuY2UgTm90IFJlcXVpcmVkIGZvciBIYXZpbmcgQ29waWVzLgotKwotKyAg WW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSBpbiBvcmRlciB0byBy ZWNlaXZlIG9yCi0rcnVuIGEgY29weSBvZiB0aGUgUHJvZ3JhbS4gIEFuY2lsbGFyeSBwcm9wYWdh dGlvbiBvZiBhIGNvdmVyZWQgd29yawotK29jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5j ZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uCi0rdG8gcmVjZWl2ZSBhIGNvcHkg bGlrZXdpc2UgZG9lcyBub3QgcmVxdWlyZSBhY2NlcHRhbmNlLiAgSG93ZXZlciwKLStub3RoaW5n IG90aGVyIHRoYW4gdGhpcyBMaWNlbnNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBwcm9wYWdh dGUgb3IKLSttb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2Ug Y29weXJpZ2h0IGlmIHlvdSBkbwotK25vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3Jl LCBieSBtb2RpZnlpbmcgb3IgcHJvcGFnYXRpbmcgYQotK2NvdmVyZWQgd29yaywgeW91IGluZGlj YXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28uCi0rCi0rICAxMC4g QXV0b21hdGljIExpY2Vuc2luZyBvZiBEb3duc3RyZWFtIFJlY2lwaWVudHMuCi0rCi0rICBFYWNo IHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNh bGx5Ci0rcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlIG9yaWdpbmFsIGxpY2Vuc29ycywgdG8g cnVuLCBtb2RpZnkgYW5kCi0rcHJvcGFnYXRlIHRoYXQgd29yaywgc3ViamVjdCB0byB0aGlzIExp Y2Vuc2UuICBZb3UgYXJlIG5vdCByZXNwb25zaWJsZQotK2ZvciBlbmZvcmNpbmcgY29tcGxpYW5j ZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLgotKwotKyAgQW4gImVudGl0eSB0 cmFuc2FjdGlvbiIgaXMgYSB0cmFuc2FjdGlvbiB0cmFuc2ZlcnJpbmcgY29udHJvbCBvZiBhbgot K29yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3Vi ZGl2aWRpbmcgYW4KLStvcmdhbml6YXRpb24sIG9yIG1lcmdpbmcgb3JnYW5pemF0aW9ucy4gIElm IHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZAotK3dvcmsgcmVzdWx0cyBmcm9tIGFuIGVudGl0eSB0 cmFuc2FjdGlvbiwgZWFjaCBwYXJ0eSB0byB0aGF0Ci0rdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVz IGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyCi0rbGljZW5zZXMgdG8g dGhlIHdvcmsgdGhlIHBhcnR5J3MgcHJlZGVjZXNzb3IgaW4gaW50ZXJlc3QgaGFkIG9yIGNvdWxk Ci0rZ2l2ZSB1bmRlciB0aGUgcHJldmlvdXMgcGFyYWdyYXBoLCBwbHVzIGEgcmlnaHQgdG8gcG9z c2Vzc2lvbiBvZiB0aGUKLStDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRo ZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYKLSt0aGUgcHJlZGVjZXNzb3IgaGFzIGl0IG9y IGNhbiBnZXQgaXQgd2l0aCByZWFzb25hYmxlIGVmZm9ydHMuCi0rCi0rICBZb3UgbWF5IG5vdCBp bXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUKLSty aWdodHMgZ3JhbnRlZCBvciBhZmZpcm1lZCB1bmRlciB0aGlzIExpY2Vuc2UuICBGb3IgZXhhbXBs ZSwgeW91IG1heQotK25vdCBpbXBvc2UgYSBsaWNlbnNlIGZlZSwgcm95YWx0eSwgb3Igb3RoZXIg Y2hhcmdlIGZvciBleGVyY2lzZSBvZgotK3JpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5z ZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24KLSsoaW5jbHVkaW5nIGEgY3Jv c3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdAotK2Fu eSBwYXRlbnQgY2xhaW0gaXMgaW5mcmluZ2VkIGJ5IG1ha2luZywgdXNpbmcsIHNlbGxpbmcsIG9m ZmVyaW5nIGZvcgotK3NhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlv biBvZiBpdC4KLSsKLSsgIDExLiBQYXRlbnRzLgotKwotKyAgQSAiY29udHJpYnV0b3IiIGlzIGEg Y29weXJpZ2h0IGhvbGRlciB3aG8gYXV0aG9yaXplcyB1c2UgdW5kZXIgdGhpcwotK0xpY2Vuc2Ug b2YgdGhlIFByb2dyYW0gb3IgYSB3b3JrIG9uIHdoaWNoIHRoZSBQcm9ncmFtIGlzIGJhc2VkLiAg VGhlCi0rd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29u dHJpYnV0b3IgdmVyc2lvbiIuCi0rCi0rICBBIGNvbnRyaWJ1dG9yJ3MgImVzc2VudGlhbCBwYXRl bnQgY2xhaW1zIiBhcmUgYWxsIHBhdGVudCBjbGFpbXMKLStvd25lZCBvciBjb250cm9sbGVkIGJ5 IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yCi0raGVyZWFmdGVy IGFjcXVpcmVkLCB0aGF0IHdvdWxkIGJlIGluZnJpbmdlZCBieSBzb21lIG1hbm5lciwgcGVybWl0 dGVkCi0rYnkgdGhpcyBMaWNlbnNlLCBvZiBtYWtpbmcsIHVzaW5nLCBvciBzZWxsaW5nIGl0cyBj b250cmlidXRvciB2ZXJzaW9uLAotK2J1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3Vs ZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhCi0rY29uc2VxdWVuY2Ugb2YgZnVydGhlciBtb2RpZmlj YXRpb24gb2YgdGhlIGNvbnRyaWJ1dG9yIHZlcnNpb24uICBGb3IKLStwdXJwb3NlcyBvZiB0aGlz IGRlZmluaXRpb24sICJjb250cm9sIiBpbmNsdWRlcyB0aGUgcmlnaHQgdG8gZ3JhbnQKLStwYXRl bnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVu dHMgb2YKLSB0aGlzIExpY2Vuc2UuCi0gCi0tICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBh IGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50Ci0taW5mcmluZ2VtZW50IG9y IGZvciBhbnkgb3RoZXIgcmVhc29uIChub3QgbGltaXRlZCB0byBwYXRlbnQgaXNzdWVzKSwKLS1j b25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdy ZWVtZW50IG9yCi0rICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZl LCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQotK3BhdGVudCBsaWNlbnNlIHVuZGVyIHRoZSBjb250 cmlidXRvcidzIGVzc2VudGlhbCBwYXRlbnQgY2xhaW1zLCB0bwotK21ha2UsIHVzZSwgc2VsbCwg b2ZmZXIgZm9yIHNhbGUsIGltcG9ydCBhbmQgb3RoZXJ3aXNlIHJ1biwgbW9kaWZ5IGFuZAotK3By b3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uCi0rCi0rICBJ biB0aGUgZm9sbG93aW5nIHRocmVlIHBhcmFncmFwaHMsIGEgInBhdGVudCBsaWNlbnNlIiBpcyBh bnkgZXhwcmVzcwotK2FncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVk LCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAotKyhzdWNoIGFzIGFuIGV4cHJlc3MgcGVybWlzc2lv biB0byBwcmFjdGljZSBhIHBhdGVudCBvciBjb3ZlbmFudCBub3QgdG8KLStzdWUgZm9yIHBhdGVu dCBpbmZyaW5nZW1lbnQpLiAgVG8gImdyYW50IiBzdWNoIGEgcGF0ZW50IGxpY2Vuc2UgdG8gYQot K3BhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3Qg dG8gZW5mb3JjZSBhCi0rcGF0ZW50IGFnYWluc3QgdGhlIHBhcnR5LgotKwotKyAgSWYgeW91IGNv bnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5z ZSwKLSthbmQgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIG9mIHRoZSB3b3JrIGlzIG5vdCBhdmFp bGFibGUgZm9yIGFueW9uZQotK3RvIGNvcHksIGZyZWUgb2YgY2hhcmdlIGFuZCB1bmRlciB0aGUg dGVybXMgb2YgdGhpcyBMaWNlbnNlLCB0aHJvdWdoIGEKLStwdWJsaWNseSBhdmFpbGFibGUgbmV0 d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLAotK3RoZW4geW91 IG11c3QgZWl0aGVyICgxKSBjYXVzZSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgdG8gYmUgc28K LSthdmFpbGFibGUsIG9yICgyKSBhcnJhbmdlIHRvIGRlcHJpdmUgeW91cnNlbGYgb2YgdGhlIGJl bmVmaXQgb2YgdGhlCi0rcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBv ciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKLStjb25zaXN0ZW50IHdpdGggdGhlIHJlcXVpcmVt ZW50cyBvZiB0aGlzIExpY2Vuc2UsIHRvIGV4dGVuZCB0aGUgcGF0ZW50Ci0rbGljZW5zZSB0byBk b3duc3RyZWFtIHJlY2lwaWVudHMuICAiS25vd2luZ2x5IHJlbHlpbmciIG1lYW5zIHlvdSBoYXZl Ci0rYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91 ciBjb252ZXlpbmcgdGhlCi0rY292ZXJlZCB3b3JrIGluIGEgY291bnRyeSwgb3IgeW91ciByZWNp cGllbnQncyB1c2Ugb2YgdGhlIGNvdmVyZWQgd29yawotK2luIGEgY291bnRyeSwgd291bGQgaW5m cmluZ2Ugb25lIG9yIG1vcmUgaWRlbnRpZmlhYmxlIHBhdGVudHMgaW4gdGhhdAotK2NvdW50cnkg dGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCi0rCi0rICBJZiwgcHVy c3VhbnQgdG8gb3IgaW4gY29ubmVjdGlvbiB3aXRoIGEgc2luZ2xlIHRyYW5zYWN0aW9uIG9yCi0r YXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5 YW5jZSBvZiwgYQotK2NvdmVyZWQgd29yaywgYW5kIGdyYW50IGEgcGF0ZW50IGxpY2Vuc2UgdG8g c29tZSBvZiB0aGUgcGFydGllcwotK3JlY2VpdmluZyB0aGUgY292ZXJlZCB3b3JrIGF1dGhvcml6 aW5nIHRoZW0gdG8gdXNlLCBwcm9wYWdhdGUsIG1vZGlmeQotK29yIGNvbnZleSBhIHNwZWNpZmlj IGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UKLSt5b3Ug Z3JhbnQgaXMgYXV0b21hdGljYWxseSBleHRlbmRlZCB0byBhbGwgcmVjaXBpZW50cyBvZiB0aGUg Y292ZXJlZAotK3dvcmsgYW5kIHdvcmtzIGJhc2VkIG9uIGl0LgotKwotKyAgQSBwYXRlbnQgbGlj ZW5zZSBpcyAiZGlzY3JpbWluYXRvcnkiIGlmIGl0IGRvZXMgbm90IGluY2x1ZGUgd2l0aGluCi0r dGhlIHNjb3BlIG9mIGl0cyBjb3ZlcmFnZSwgcHJvaGliaXRzIHRoZSBleGVyY2lzZSBvZiwgb3Ig aXMKLStjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRo ZSByaWdodHMgdGhhdCBhcmUKLStzcGVjaWZpY2FsbHkgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vu c2UuICBZb3UgbWF5IG5vdCBjb252ZXkgYSBjb3ZlcmVkCi0rd29yayBpZiB5b3UgYXJlIGEgcGFy dHkgdG8gYW4gYXJyYW5nZW1lbnQgd2l0aCBhIHRoaXJkIHBhcnR5IHRoYXQgaXMKLStpbiB0aGUg YnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBw YXltZW50Ci0rdG8gdGhlIHRoaXJkIHBhcnR5IGJhc2VkIG9uIHRoZSBleHRlbnQgb2YgeW91ciBh Y3Rpdml0eSBvZiBjb252ZXlpbmcKLSt0aGUgd29yaywgYW5kIHVuZGVyIHdoaWNoIHRoZSB0aGly ZCBwYXJ0eSBncmFudHMsIHRvIGFueSBvZiB0aGUKLStwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZl IHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkKLStwYXRlbnQgbGlj ZW5zZSAoYSkgaW4gY29ubmVjdGlvbiB3aXRoIGNvcGllcyBvZiB0aGUgY292ZXJlZCB3b3JrCi0r Y29udmV5ZWQgYnkgeW91IChvciBjb3BpZXMgbWFkZSBmcm9tIHRob3NlIGNvcGllcyksIG9yIChi KSBwcmltYXJpbHkKLStmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0 cyBvciBjb21waWxhdGlvbnMgdGhhdAotK2NvbnRhaW4gdGhlIGNvdmVyZWQgd29yaywgdW5sZXNz IHlvdSBlbnRlcmVkIGludG8gdGhhdCBhcnJhbmdlbWVudCwKLStvciB0aGF0IHBhdGVudCBsaWNl bnNlIHdhcyBncmFudGVkLCBwcmlvciB0byAyOCBNYXJjaCAyMDA3LgotKwotKyAgTm90aGluZyBp biB0aGlzIExpY2Vuc2Ugc2hhbGwgYmUgY29uc3RydWVkIGFzIGV4Y2x1ZGluZyBvciBsaW1pdGlu ZwotK2FueSBpbXBsaWVkIGxpY2Vuc2Ugb3Igb3RoZXIgZGVmZW5zZXMgdG8gaW5mcmluZ2VtZW50 IHRoYXQgbWF5Ci0rb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJs ZSBwYXRlbnQgbGF3LgotKwotKyAgMTIuIE5vIFN1cnJlbmRlciBvZiBPdGhlcnMnIEZyZWVkb20u Ci0rCi0rICBJZiBjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3Vy dCBvcmRlciwgYWdyZWVtZW50IG9yCi0gb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNv bmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdAotLWV4Y3VzZSB5b3UgZnJvbSB0 aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90Ci0tZGlzdHJpYnV0 ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIg dGhpcwotLUxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4g YXMgYSBjb25zZXF1ZW5jZSB5b3UKLS1tYXkgbm90IGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gYXQg YWxsLiAgRm9yIGV4YW1wbGUsIGlmIGEgcGF0ZW50Ci0tbGljZW5zZSB3b3VsZCBub3QgcGVybWl0 IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBieQotLWFsbCB0aG9z ZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwg dGhlbgotLXRoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIGl0IGFuZCB0aGlzIExp Y2Vuc2Ugd291bGQgYmUgdG8KLS1yZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9m IHRoZSBQcm9ncmFtLgotLQotLUlmIGFueSBwb3J0aW9uIG9mIHRoaXMgc2VjdGlvbiBpcyBoZWxk IGludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSB1bmRlcgotLWFueSBwYXJ0aWN1bGFyIGNpcmN1bXN0 YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8KLS1hcHBseSBh bmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgot LWNpcmN1bXN0YW5jZXMuCi0tCi0tSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlv biB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQotLXBhdGVudHMgb3Igb3RoZXIgcHJvcGVy dHkgcmlnaHQgY2xhaW1zIG9yIHRvIGNvbnRlc3QgdmFsaWRpdHkgb2YgYW55Ci0tc3VjaCBjbGFp bXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQot LWludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGlj aCBpcwotLWltcGxlbWVudGVkIGJ5IHB1YmxpYyBsaWNlbnNlIHByYWN0aWNlcy4gIE1hbnkgcGVv cGxlIGhhdmUgbWFkZQotLWdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ug b2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKLS10aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNl IG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdAotLXN5c3RlbTsgaXQgaXMgdXAgdG8g dGhlIGF1dGhvci9kb25vciB0byBkZWNpZGUgaWYgaGUgb3Igc2hlIGlzIHdpbGxpbmcKLS10byBk aXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNl ZSBjYW5ub3QKLS1pbXBvc2UgdGhhdCBjaG9pY2UuCi0tCi0tVGhpcyBzZWN0aW9uIGlzIGludGVu ZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCi0tYmUgYSBj b25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCi0tDAotLSAgOC4gSWYgdGhl IGRpc3RyaWJ1dGlvbiBhbmQvb3IgdXNlIG9mIHRoZSBQcm9ncmFtIGlzIHJlc3RyaWN0ZWQgaW4K LS1jZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBp bnRlcmZhY2VzLCB0aGUKLS1vcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhl IFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCi0tbWF5IGFkZCBhbiBleHBsaWNpdCBnZW9ncmFw aGljYWwgZGlzdHJpYnV0aW9uIGxpbWl0YXRpb24gZXhjbHVkaW5nCi0tdGhvc2UgY291bnRyaWVz LCBzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZwotLWNv dW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGlu Y29ycG9yYXRlcwotLXRoZSBsaW1pdGF0aW9uIGFzIGlmIHdyaXR0ZW4gaW4gdGhlIGJvZHkgb2Yg dGhpcyBMaWNlbnNlLgotK2V4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExp Y2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhCi0rY292ZXJlZCB3b3JrIHNvIGFzIHRvIHNh dGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCi0rTGljZW5z ZSBhbmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNvbnNlcXVl bmNlIHlvdSBtYXkKLStub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3Ug YWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UKLSt0byBjb2xsZWN0IGEgcm95YWx0eSBm b3IgZnVydGhlciBjb252ZXlpbmcgZnJvbSB0aG9zZSB0byB3aG9tIHlvdSBjb252ZXkKLSt0aGUg UHJvZ3JhbSwgdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggdGhvc2UgdGVybXMg YW5kIHRoaXMKLStMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252 ZXlpbmcgdGhlIFByb2dyYW0uCi0rCi0rICAxMy4gVXNlIHdpdGggdGhlIEdOVSBBZmZlcm8gR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsgIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJv dmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgeW91IGhhdmUKLStwZXJtaXNzaW9uIHRvIGxpbmsgb3Ig Y29tYmluZSBhbnkgY292ZXJlZCB3b3JrIHdpdGggYSB3b3JrIGxpY2Vuc2VkCi0rdW5kZXIgdmVy c2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNp bmdsZQotK2NvbWJpbmVkIHdvcmssIGFuZCB0byBjb252ZXkgdGhlIHJlc3VsdGluZyB3b3JrLiAg VGhlIHRlcm1zIG9mIHRoaXMKLStMaWNlbnNlIHdpbGwgY29udGludWUgdG8gYXBwbHkgdG8gdGhl IHBhcnQgd2hpY2ggaXMgdGhlIGNvdmVyZWQgd29yaywKLStidXQgdGhlIHNwZWNpYWwgcmVxdWly ZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCi0rc2VjdGlv biAxMywgY29uY2VybmluZyBpbnRlcmFjdGlvbiB0aHJvdWdoIGEgbmV0d29yayB3aWxsIGFwcGx5 IHRvIHRoZQotK2NvbWJpbmF0aW9uIGFzIHN1Y2guCi0rCi0rICAxNC4gUmV2aXNlZCBWZXJzaW9u cyBvZiB0aGlzIExpY2Vuc2UuCi0gCi0tICA5LiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u IG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucwotLW9mIHRoZSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2ls bAotKyAgVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFu ZC9vciBuZXcgdmVyc2lvbnMgb2YKLSt0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJv bSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCi0gYmUgc2ltaWxhciBpbiBz cGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRv Ci0gYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCi0gCi0tRWFjaCB2ZXJzaW9uIGlz IGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgUHJvZ3JhbQot LXNwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSB3aGljaCBhcHBsaWVz IHRvIGl0IGFuZCAiYW55Ci0tbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2Yg Zm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucwotLWVpdGhlciBvZiB0aGF0IHZlcnNp b24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlCi0tU29mdHdh cmUgRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9u IG51bWJlciBvZgotLXRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZl ciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLS1Gb3VuZGF0aW9uLgotLQotLSAgMTAu IElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3Ro ZXIgZnJlZQotLXByb2dyYW1zIHdob3NlIGRpc3RyaWJ1dGlvbiBjb25kaXRpb25zIGFyZSBkaWZm ZXJlbnQsIHdyaXRlIHRvIHRoZSBhdXRob3IKLS10byBhc2sgZm9yIHBlcm1pc3Npb24uICBGb3Ig c29mdHdhcmUgd2hpY2ggaXMgY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUKLS1Tb2Z0d2FyZSBGb3Vu ZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGlt ZXMKLS1tYWtlIGV4Y2VwdGlvbnMgZm9yIHRoaXMuICBPdXIgZGVjaXNpb24gd2lsbCBiZSBndWlk ZWQgYnkgdGhlIHR3byBnb2FscwotLW9mIHByZXNlcnZpbmcgdGhlIGZyZWUgc3RhdHVzIG9mIGFs bCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQKLS1vZiBwcm9tb3RpbmcgdGhl IHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KLS0KLS0JCQkgICAgTk8g V0FSUkFOVFkKLS0KLS0gIDExLiBCRUNBVVNFIFRIRSBQUk9HUkFNIElTIExJQ0VOU0VEIEZSRUUg T0YgQ0hBUkdFLCBUSEVSRSBJUyBOTyBXQVJSQU5UWQotLUZPUiBUSEUgUFJPR1JBTSwgVE8gVEhF IEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuICBFWENFUFQgV0hFTgotLU9USEVS V0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVS IFBBUlRJRVMKLS1QUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRAotLU9SIElNUExJRUQsIElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCi0tTUVSQ0hBTlRBQklM SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklT SyBBUwotLVRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTSBJUyBX SVRIIFlPVS4gIFNIT1VMRCBUSEUKLS1QUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VN RSBUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywKLS1SRVBBSVIgT1IgQ09SUkVD VElPTi4KLS0KLS0gIDEyLiBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJM RSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKLS1XSUxMIEFOWSBDT1BZUklHSFQgSE9MREVS LCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SCi0tUkVESVNUUklCVVRF IFRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFN QUdFUywKLS1JTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09O U0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcKLS1PVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkg VE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVECi0tVE8gTE9TUyBP RiBEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJ TkVEIEJZCi0tWU9VIE9SIFRISVJEIFBBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFN IFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIKLS1QUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xE RVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKLS1QT1NTSUJJTElUWSBP RiBTVUNIIERBTUFHRVMuCi0tCi0tCQkgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUwot LQwKLS0JQXBwZW5kaXg6IEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9n cmFtcwotKyAgRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBu dW1iZXIuICBJZiB0aGUKLStQcm9ncmFtIHNwZWNpZmllcyB0aGF0IGEgY2VydGFpbiBudW1iZXJl ZCB2ZXJzaW9uIG9mIHRoZSBHTlUgR2VuZXJhbAotK1B1YmxpYyBMaWNlbnNlICJvciBhbnkgbGF0 ZXIgdmVyc2lvbiIgYXBwbGllcyB0byBpdCwgeW91IGhhdmUgdGhlCi0rb3B0aW9uIG9mIGZvbGxv d2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgbnVtYmVyZWQKLSt2 ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZQotK0ZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVy c2lvbiBudW1iZXIgb2YgdGhlCi0rR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBtYXkg Y2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkCi0rYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbi4KLSsKLSsgIElmIHRoZSBQcm9ncmFtIHNwZWNpZmllcyB0aGF0IGEgcHJveHkg Y2FuIGRlY2lkZSB3aGljaCBmdXR1cmUKLSt2ZXJzaW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgY2FuIGJlIHVzZWQsIHRoYXQgcHJveHkncwotK3B1YmxpYyBzdGF0ZW1lbnQg b2YgYWNjZXB0YW5jZSBvZiBhIHZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UKLSt0 byBjaG9vc2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUgUHJvZ3JhbS4KLSsKLSsgIExhdGVyIGxpY2Vu c2UgdmVyc2lvbnMgbWF5IGdpdmUgeW91IGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50Ci0rcGVybWlz c2lvbnMuICBIb3dldmVyLCBubyBhZGRpdGlvbmFsIG9ibGlnYXRpb25zIGFyZSBpbXBvc2VkIG9u IGFueQotK2F1dGhvciBvciBjb3B5cmlnaHQgaG9sZGVyIGFzIGEgcmVzdWx0IG9mIHlvdXIgY2hv b3NpbmcgdG8gZm9sbG93IGEKLStsYXRlciB2ZXJzaW9uLgotKwotKyAgMTUuIERpc2NsYWltZXIg b2YgV2FycmFudHkuCi0rCi0rICBUSEVSRSBJUyBOTyBXQVJSQU5UWSBGT1IgVEhFIFBST0dSQU0s IFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZCi0rQVBQTElDQUJMRSBMQVcuICBFWENFUFQgV0hF TiBPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVAotK0hPTERFUlMgQU5E L09SIE9USEVSIFBBUlRJRVMgUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FS UkFOVFkKLStPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLStUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rUFVSUE9TRS4gIFRIRSBF TlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dS QU0KLStJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlP VSBBU1NVTUUgVEhFIENPU1QgT0YKLStBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywgUkVQQUlSIE9S IENPUlJFQ1RJT04uCi0rCi0rICAxNi4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuCi0rCi0rICBJ TiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRP IElOIFdSSVRJTkcKLStXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFS VFkgV0hPIE1PRElGSUVTIEFORC9PUiBDT05WRVlTCi0rVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVE IEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLCBJTkNMVURJTkcgQU5ZCi0rR0VO RVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lO RyBPVVQgT0YgVEhFCi0rVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRgotK0RBVEEgT1IgREFUQSBCRUlORyBSRU5E RVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkgWU9VIE9SIFRISVJECi0rUEFS VElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhF UiBQUk9HUkFNUyksCi0rRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVF TiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotK1NVQ0ggREFNQUdFUy4KLSsKLSsgIDE3 LiBJbnRlcnByZXRhdGlvbiBvZiBTZWN0aW9ucyAxNSBhbmQgMTYuCi0rCi0rICBJZiB0aGUgZGlz Y2xhaW1lciBvZiB3YXJyYW50eSBhbmQgbGltaXRhdGlvbiBvZiBsaWFiaWxpdHkgcHJvdmlkZWQK LSthYm92ZSBjYW5ub3QgYmUgZ2l2ZW4gbG9jYWwgbGVnYWwgZWZmZWN0IGFjY29yZGluZyB0byB0 aGVpciB0ZXJtcywKLStyZXZpZXdpbmcgY291cnRzIHNoYWxsIGFwcGx5IGxvY2FsIGxhdyB0aGF0 IG1vc3QgY2xvc2VseSBhcHByb3hpbWF0ZXMKLSthbiBhYnNvbHV0ZSB3YWl2ZXIgb2YgYWxsIGNp dmlsIGxpYWJpbGl0eSBpbiBjb25uZWN0aW9uIHdpdGggdGhlCi0rUHJvZ3JhbSwgdW5sZXNzIGEg d2FycmFudHkgb3IgYXNzdW1wdGlvbiBvZiBsaWFiaWxpdHkgYWNjb21wYW5pZXMgYQotK2NvcHkg b2YgdGhlIFByb2dyYW0gaW4gcmV0dXJuIGZvciBhIGZlZS4KLSsKLSsgICAgICAgICAgICAgICAg ICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKLSsKLSsgICAgICAgICAgICBIb3cgdG8g QXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKLSAKLSAgIElmIHlvdSBkZXZl bG9wIGEgbmV3IHByb2dyYW0sIGFuZCB5b3Ugd2FudCBpdCB0byBiZSBvZiB0aGUgZ3JlYXRlc3QK LSBwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhp cyBpcyB0byBtYWtlIGl0Ci1AQCAtMjg3LDE1ICs2MjgsMTUgQEAgZnJlZSBzb2Z0d2FyZSB3aGlj aCBldmVyeW9uZSBjYW4gcmVkaXN0cgotIAotICAgVG8gZG8gc28sIGF0dGFjaCB0aGUgZm9sbG93 aW5nIG5vdGljZXMgdG8gdGhlIHByb2dyYW0uICBJdCBpcyBzYWZlc3QKLSB0byBhdHRhY2ggdGhl bSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5Ci0t Y29udmV5IHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhh dmUgYXQgbGVhc3QKLStzdGF0ZSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBm aWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0Ci0gdGhlICJjb3B5cmlnaHQiIGxpbmUgYW5kIGEgcG9p bnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuCi0gCi0gICAgIDxvbmUgbGlu ZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQg ZG9lcy4+Ci0tICAgIENvcHlyaWdodCAoQykgMTl5eSAgPG5hbWUgb2YgYXV0aG9yPgotKyAgICBD b3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgotIAotLSAgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotICAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotICAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIAot ICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLUBAIC0zMDQsMzYgKzY0NSwzMCBAQCB0aGUgImNvcHlyaWdodCIgbGluZSBh bmQgYSBwb2ludGVyIHRvIHdoCi0gICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0gCi0gICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tICAgIEZvdW5kYXRpb24s IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3 LCBVU0EKLSsgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gCi0gQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93 IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCi0gCi0tSWYgdGhl IHByb2dyYW0gaXMgaW50ZXJhY3RpdmUsIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQgbm90aWNlIGxp a2UgdGhpcwotLXdoZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1vZGU6Ci0rICBJZiB0 aGUgcHJvZ3JhbSBkb2VzIHRlcm1pbmFsIGludGVyYWN0aW9uLCBtYWtlIGl0IG91dHB1dCBhIHNo b3J0Ci0rbm90aWNlIGxpa2UgdGhpcyB3aGVuIGl0IHN0YXJ0cyBpbiBhbiBpbnRlcmFjdGl2ZSBt b2RlOgotIAotLSAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIDE5eXkg bmFtZSBvZiBhdXRob3IKLS0gICAgR25vbW92aXNpb24gY29tZXMgd2l0aCBBQlNPTFVURUxZIE5P IFdBUlJBTlRZOyBmb3IgZGV0YWlscyB0eXBlIGBzaG93IHcnLgotKyAgICA8cHJvZ3JhbT4gIENv cHlyaWdodCAoQykgPHllYXI+ICA8bmFtZSBvZiBhdXRob3I+Ci0rICAgIFRoaXMgcHJvZ3JhbSBj b21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cg dycuCi0gICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byBy ZWRpc3RyaWJ1dGUgaXQKLSAgICAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zOyB0eXBlIGBzaG93 IGMnIGZvciBkZXRhaWxzLgotIAotIFRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycg YW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQotLXBhcnRzIG9mIHRoZSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgT2YgY291cnNlLCB0aGUgY29tbWFuZHMgeW91IHVzZSBt YXkKLS1iZSBjYWxsZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYHNob3cgdycgYW5kIGBzaG93IGMn OyB0aGV5IGNvdWxkIGV2ZW4gYmUKLS1tb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2 ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgotLQotLVlvdSBzaG91bGQgYWxzbyBnZXQgeW91ciBlbXBs b3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciB5b3VyCi0tc2Nob29sLCBpZiBh bnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYK LS1uZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6Ci0tCi0tICBZ b3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGlu IHRoZSBwcm9ncmFtCi0tICBgR25vbW92aXNpb24nICh3aGljaCBtYWtlcyBwYXNzZXMgYXQgY29t cGlsZXJzKSB3cml0dGVuIGJ5IEphbWVzIEhhY2tlci4KLS0KLS0gIDxzaWduYXR1cmUgb2YgVHkg Q29vbj4sIDEgQXByaWwgMTk4OQotLSAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKLS0KLS1U aGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcg eW91ciBwcm9ncmFtIGludG8KLS1wcm9wcmlldGFyeSBwcm9ncmFtcy4gIElmIHlvdXIgcHJvZ3Jh bSBpcyBhIHN1YnJvdXRpbmUgbGlicmFyeSwgeW91IG1heQotLWNvbnNpZGVyIGl0IG1vcmUgdXNl ZnVsIHRvIHBlcm1pdCBsaW5raW5nIHByb3ByaWV0YXJ5IGFwcGxpY2F0aW9ucyB3aXRoIHRoZQot LWxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExp YnJhcnkgR2VuZXJhbAotLVB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgot K3BhcnRzIG9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgT2YgY291cnNlLCB5b3VyIHBy b2dyYW0ncyBjb21tYW5kcwotK21pZ2h0IGJlIGRpZmZlcmVudDsgZm9yIGEgR1VJIGludGVyZmFj ZSwgeW91IHdvdWxkIHVzZSBhbiAiYWJvdXQgYm94Ii4KLSsKLSsgIFlvdSBzaG91bGQgYWxzbyBn ZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciBzY2hvb2ws Ci0raWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dy YW0sIGlmIG5lY2Vzc2FyeS4KLStGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzLCBhbmQgaG93 IHRvIGFwcGx5IGFuZCBmb2xsb3cgdGhlIEdOVSBHUEwsIHNlZQotKzxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KLSsKLSsgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBkb2Vz IG5vdCBwZXJtaXQgaW5jb3Jwb3JhdGluZyB5b3VyIHByb2dyYW0KLStpbnRvIHByb3ByaWV0YXJ5 IHByb2dyYW1zLiAgSWYgeW91ciBwcm9ncmFtIGlzIGEgc3Vicm91dGluZSBsaWJyYXJ5LCB5b3UK LSttYXkgY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRh cnkgYXBwbGljYXRpb25zIHdpdGgKLSt0aGUgbGlicmFyeS4gIElmIHRoaXMgaXMgd2hhdCB5b3Ug d2FudCB0byBkbywgdXNlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwKLStQdWJsaWMgTGljZW5zZSBp bnN0ZWFkIG9mIHRoaXMgTGljZW5zZS4gIEJ1dCBmaXJzdCwgcGxlYXNlIHJlYWQKLSs8aHR0cDov L3d3dy5nbnUub3JnL3BoaWxvc29waHkvd2h5LW5vdC1sZ3BsLmh0bWw+LgotSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvQ2hhbmdlTG9nLmdkYgotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9DaGFuZ2VMb2cuZ2RiCTIwMTEtMDctMDMg MTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGlu ZS9DaGFuZ2VMb2cuZ2RiCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAt MSwzICsxLDEyIEBACi0rMjAxMS0wNC0zMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotKwotKwlXb3JrYXJvdW5kIGdkYi5iYXNlL2NvbXBsZXRpb24uZXhwIHJl Z3Jlc3Npb24gb24gcmVhZGxpbmUtNi4yLgotKwkqIGNvbXBsZXRlLmMgKGdldF95X29yX24pOiBE aXNhYmxlIHRoZSByZXR1cm4gb24gUkxfU1RBVEVfQ0FMTEJBQ0suCi0rCi0rMjAxMS0wNC0yNSAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwlJbXBvcnRl ZCByZWFkbGluZSA2LjIsIGFuZCB1cHN0cmVhbSBwYXRjaCAwMDEuCi0rCi0gMjAxMS0wNi0yNyAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAlBdm9pZCBm cmVlIGZyb20gYSBzaWduYWwgaGFuZGxlci4KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3Jl YWRsaW5lL0lOU1RBTEwKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcv cmVhZGxpbmUvSU5TVEFMTAkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvSU5TVEFMTAkyMDExLTA3LTAzIDEwOjQxOjIx LjAwMDAwMDAwMCArMDIwMAotQEAgLTEsNyArMSw3IEBACi0gQmFzaWMgSW5zdGFsbGF0aW9uCi0g PT09PT09PT09PT09PT09PT09Ci0gCi0tVGhlc2UgYXJlIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlv bnMgZm9yIFJlYWRsaW5lLTUuMS4KLStUaGVzZSBhcmUgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9u cyBmb3IgUmVhZGxpbmUtNi4yLgotIAotIFRoZSBzaW1wbGVzdCB3YXkgdG8gY29tcGlsZSByZWFk bGluZSBpczoKLSAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL01BTklGRVNU Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL01BTklG RVNUCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4y MDExMDcwMy9yZWFkbGluZS9NQU5JRkVTVAkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCAr MDIwMAotQEAgLTMsNiArMyw3IEBACi0gIwotIGRvYwkJZAotIGV4YW1wbGVzCWQKLStleGFtcGxl cy9hdXRvY29uZglkCi0gZXhhbXBsZXMvcmxmZQlkCi0gc3VwcG9ydAkJZAotIHNobGliCQlkCi1A QCAtMjYsNiArMjcsNyBAQCBoaXN0bGliLmgJZgotIGtleW1hcHMuaAlmCi0gcG9zaXhkaXIuaAlm Ci0gcG9zaXhqbXAuaAlmCi0rcG9zaXhzZWxlY3QuaAlmCi0gcG9zaXhzdGF0LmgJZgotIHJlYWRs aW5lLmgJZgotIHJsY29uZi5oCWYKLUBAIC02OSwxMSArNzEsMTMgQEAgdW5kby5jCQlmCi0gdXRp bC5jCQlmCi0gdmlfa2V5bWFwLmMJZgotIHZpX21vZGUuYwlmCi0reGZyZWUuYwkJZgotIHhtYWxs b2MuYwlmCi0gaGlzdG9yeS5jCWYKLSBoaXN0ZXhwYW5kLmMJZgotIGhpc3RmaWxlLmMJZgotIGhp c3RzZWFyY2guYwlmCi0rcGF0Y2hsZXZlbAlmCi0gc2hsaWIvTWFrZWZpbGUuaW4JZgotIHN1cHBv cnQvY29uZmlnLmd1ZXNzCWYKLSBzdXBwb3J0L2NvbmZpZy5ycGF0aAlmCi1AQCAtMTA3LDEyICsx MTEsMTYgQEAgZXhhbXBsZXMvbWFuZXhhbXAuYwlmCi0gZXhhbXBsZXMvcmVhZGxpbmVidWYuaAlm Ci0gZXhhbXBsZXMvcmwtZmdldHMuYwlmCi0gZXhhbXBsZXMvcmxjYXQuYwlmCi0rZXhhbXBsZXMv cmxldmVudC5jCWYKLSBleGFtcGxlcy9ybHRlc3QuYwlmCi0gZXhhbXBsZXMvcmwuYwkJZgotIGV4 YW1wbGVzL3JscHR5dGVzdC5jCWYKLSBleGFtcGxlcy9ybHZlcnNpb24uYwlmCi0gZXhhbXBsZXMv aGlzdGV4YW1wLmMJZgotIGV4YW1wbGVzL0lucHV0cmMJZgotK2V4YW1wbGVzL2F1dG9jb25mL0JB U0hfQ0hFQ0tfTElCX1RFUk1DQVAJZgotK2V4YW1wbGVzL2F1dG9jb25mL1JMX0xJQl9SRUFETElO RV9WRVJTSU9OCWYKLStleGFtcGxlcy9hdXRvY29uZi93aV9MSUJfUkVBRExJTkUJZgotIGV4YW1w bGVzL3JsZmUvQ2hhbmdlTG9nCQlmCi0gZXhhbXBsZXMvcmxmZS9NYWtlZmlsZS5pbglmCi0gZXhh bXBsZXMvcmxmZS9SRUFETUUJCWYKLUBAIC0xMjQsNiArMTMyLDcgQEAgZXhhbXBsZXMvcmxmZS9v cy5oCQlmCi0gZXhhbXBsZXMvcmxmZS9wdHkuYwkJZgotIGV4YW1wbGVzL3JsZmUvcmxmZS5jCQlm Ci0gZXhhbXBsZXMvcmxmZS9zY3JlZW4uaAkJZgotK2V4YW1wbGVzL3Jsd3JhcC0wLjMwLnRhci5n eglmCi0gIyBmb3JtYXR0ZWQgZG9jdW1lbnRhdGlvbiwgZnJvbSBNQU5JRkVTVC5kb2MKLSBkb2Mv cmVhZGxpbmUucHMJCWYKLSBkb2MvaGlzdG9yeS5wcwkJZgotSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvcmVhZGxpbmUvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIw MTEwNzAzLm9yaWcvcmVhZGxpbmUvTWFrZWZpbGUuaW4JMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL01ha2VmaWxlLmlu CTIwMTEtMDctMDMgMTA6NDM6MzYuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyMCArMSwyMCBAQAot ICMjIC0qLSB0ZXh0IC0qLSAjIwotICMgTWFzdGVyIE1ha2VmaWxlIGZvciB0aGUgR05VIHJlYWRs aW5lIGxpYnJhcnkuCi0tIyBDb3B5cmlnaHQgKEMpIDE5OTQtMjAwNCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSsjIENvcHlyaWdodCAoQykgMTk5NC0yMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTog eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyMgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyMgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KwotKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSsjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyMgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KLSAKLS0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0 aW9uKQotLSMgYW55IGxhdGVyIHZlcnNpb24uCi0tCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQot LSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLS0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlCi0tIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Us IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuCi0gUkxfTElCUkFSWV9WRVJTSU9OID0g QExJQlZFUlNJT05ACi0gUkxfTElCUkFSWV9OQU1FID0gcmVhZGxpbmUKLSAKLUBAIC01OCw3ICs1 OCw3IEBAIGxpYmRpciA9IEBsaWJkaXJACi0gbWFuZGlyID0gQG1hbmRpckAKLSBpbmNsdWRlZGly ID0gQGluY2x1ZGVkaXJACi0gZGF0YWRpciA9IEBkYXRhZGlyQAotLWxvY2FsZWRpciA9ICQoZGF0 YWRpcikvbG9jYWxlCi0rbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKLSAKLSBpbmZvZGlyID0gQGlu Zm9kaXJACi0gCi1AQCAtNjgsNyArNjgsNyBAQCBtYW4zZGlyID0gJChtYW5kaXIpL21hbjMKLSBE RVNURElSID0KLSAKLSAjIFByb2dyYW1zIHRvIG1ha2UgdGFncyBmaWxlcy4KLS1FVEFHUyA9IGV0 YWdzIC10dwotK0VUQUdTID0gZXRhZ3MKLSBDVEFHUyA9IGN0YWdzIC10dwotIAotIENGTEFHUyA9 IEBDRkxBR1NACi1AQCAtMTAwLDggKzEwMCw2IEBAIEdDQ19MSU5UX0NGTEFHUyA9ICQoWENDRkxB R1MpICQoR0NDX0xJTlQKLSBMSUJSQVJZX05BTUUgPSBsaWJyZWFkbGluZS5hCi0gU1RBVElDX0xJ QlMgPSBsaWJyZWFkbGluZS5hIGxpYmhpc3RvcnkuYQotIAotLVdDV0lEVEhfT0JKID0gQFdDV0lE VEhfT0JKQAotLQotICMgVGhlIEMgY29kZSBzb3VyY2UgZmlsZXMgZm9yIHRoaXMgbGlicmFyeS4K LSBDU09VUkNFUyA9ICQoc3JjZGlyKS9yZWFkbGluZS5jICQoc3JjZGlyKS9mdW5tYXAuYyAkKHNy Y2Rpcikva2V5bWFwcy5jIFwKLSAJICAgJChzcmNkaXIpL3ZpX21vZGUuYyAkKHNyY2RpcikvcGFy ZW5zLmMgJChzcmNkaXIpL3JsdHR5LmMgXAotQEAgLTEwOSwyNiArMTA3LDI4IEBAIENTT1VSQ0VT ID0gJChzcmNkaXIpL3JlYWRsaW5lLmMgJChzcmNkaXIKLSAJICAgJChzcmNkaXIpL2Rpc3BsYXku YyAkKHNyY2Rpcikvc2lnbmFscy5jICQoc3JjZGlyKS9lbWFjc19rZXltYXAuYyBcCi0gCSAgICQo c3JjZGlyKS92aV9rZXltYXAuYyAkKHNyY2RpcikvdXRpbC5jICQoc3JjZGlyKS9raWxsLmMgXAot IAkgICAkKHNyY2RpcikvdW5kby5jICQoc3JjZGlyKS9tYWNyby5jICQoc3JjZGlyKS9pbnB1dC5j IFwKLS0JICAgJChzcmNkaXIpL2NhbGxiYWNrLmMgJChzcmNkaXIpL3Rlcm1pbmFsLmMgJChzcmNk aXIpL3htYWxsb2MuYyBcCi0rCSAgICQoc3JjZGlyKS9jYWxsYmFjay5jICQoc3JjZGlyKS90ZXJt aW5hbC5jICQoc3JjZGlyKS94bWFsbG9jLmMgJChzcmNkaXIpL3hmcmVlLmMgXAotIAkgICAkKHNy Y2RpcikvaGlzdG9yeS5jICQoc3JjZGlyKS9oaXN0c2VhcmNoLmMgJChzcmNkaXIpL2hpc3RleHBh bmQuYyBcCi0gCSAgICQoc3JjZGlyKS9oaXN0ZmlsZS5jICQoc3JjZGlyKS9ubHMuYyAkKHNyY2Rp cikvc2VhcmNoLmMgXAotIAkgICAkKHNyY2Rpcikvc2hlbGwuYyAkKHNyY2Rpcikvc2F2ZXN0cmlu Zy5jICQoc3JjZGlyKS90aWxkZS5jIFwKLSAJICAgJChzcmNkaXIpL3RleHQuYyAkKHNyY2Rpcikv bWlzYy5jICQoc3JjZGlyKS9jb21wYXQuYyBcCi0tCSAgICQoc3JjZGlyKS9tYnV0aWwuYyAkKHNy Y2Rpcikvc3VwcG9ydC93Y3dpZHRoLmMKLSsJICAgJChzcmNkaXIpL21idXRpbC5jCi0gCi0gIyBU aGUgaGVhZGVyIGZpbGVzIGZvciB0aGlzIGxpYnJhcnkuCi0tSFNPVVJDRVMgPSByZWFkbGluZS5o IHJsZGVmcy5oIGNoYXJkZWZzLmgga2V5bWFwcy5oIGhpc3RvcnkuaCBoaXN0bGliLmggXAotLQkg ICBwb3NpeHN0YXQuaCBwb3NpeGRpci5oIHBvc2l4am1wLmggdGlsZGUuaCBybGNvbmYuaCBybHR0 eS5oIFwKLS0JICAgYW5zaV9zdGRsaWIuaCB0Y2FwLmggcmxzdGRjLmggeG1hbGxvYy5oIHJscHJp dmF0ZS5oIHJsc2hlbGwuaCBcCi0tCSAgIHJsdHlwZWRlZnMuaCBybG1idXRpbC5oCi0rSFNPVVJD RVMgPSAkKHNyY2RpcikvcmVhZGxpbmUuaCAkKHNyY2RpcikvcmxkZWZzLmggJChzcmNkaXIpL2No YXJkZWZzLmggXAotKwkgICAkKHNyY2Rpcikva2V5bWFwcy5oICQoc3JjZGlyKS9oaXN0b3J5Lmgg JChzcmNkaXIpL2hpc3RsaWIuaCBcCi0rCSAgICQoc3JjZGlyKS9wb3NpeHN0YXQuaCAkKHNyY2Rp cikvcG9zaXhkaXIuaCAkKHNyY2RpcikvcG9zaXhqbXAuaCBcCi0rCSAgICQoc3JjZGlyKS90aWxk ZS5oICQoc3JjZGlyKS9ybGNvbmYuaCAkKHNyY2Rpcikvcmx0dHkuaCBcCi0rCSAgICQoc3JjZGly KS9hbnNpX3N0ZGxpYi5oICQoc3JjZGlyKS90Y2FwLmggJChzcmNkaXIpL3Jsc3RkYy5oIFwKLSsJ ICAgJChzcmNkaXIpL3htYWxsb2MuaCAkKHNyY2Rpcikvcmxwcml2YXRlLmggJChzcmNkaXIpL3Js c2hlbGwuaCBcCi0rCSAgICQoc3JjZGlyKS9ybHR5cGVkZWZzLmggJChzcmNkaXIpL3JsbWJ1dGls LmgKLSAKLSBISVNUT0JKID0gaGlzdG9yeS5vIGhpc3RleHBhbmQubyBoaXN0ZmlsZS5vIGhpc3Rz ZWFyY2gubyBzaGVsbC5vIG1idXRpbC5vCi0gVElMREVPQkogPSB0aWxkZS5vCi0gT0JKRUNUUyA9 IHJlYWRsaW5lLm8gdmlfbW9kZS5vIGZ1bm1hcC5vIGtleW1hcHMubyBwYXJlbnMubyBzZWFyY2gu byBcCi0gCSAgcmx0dHkubyBjb21wbGV0ZS5vIGJpbmQubyBpc2VhcmNoLm8gZGlzcGxheS5vIHNp Z25hbHMubyBcCi0gCSAgdXRpbC5vIGtpbGwubyB1bmRvLm8gbWFjcm8ubyBpbnB1dC5vIGNhbGxi YWNrLm8gdGVybWluYWwubyBcCi0tCSAgdGV4dC5vIG5scy5vIG1pc2MubyBjb21wYXQubyB4bWFs bG9jLm8gJChISVNUT0JKKSAkKFRJTERFT0JKKSBcCi0tCSAgJChXQ1dJRFRIX09CSikKLSsJICB0 ZXh0Lm8gbmxzLm8gbWlzYy5vIGNvbXBhdC5vIHhmcmVlLm8geG1hbGxvYy5vICQoSElTVE9CSikg JChUSUxERU9CSikKLSAKLSAjIFRoZSB0ZXhpbmZvIGZpbGVzIHdoaWNoIGRvY3VtZW50IHRoaXMg bGlicmFyeS4KLSBET0NTT1VSQ0UgPSBkb2MvcmxtYW4udGV4aW5mbyBkb2Mvcmx0ZWNoLnRleGlu Zm8gZG9jL3JsdXNlci50ZXhpbmZvCi1AQCAtMTU5LDE1ICsxNTksMTEgQEAgbGlicmVhZGxpbmUu YTogJChPQkpFQ1RTKQotIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKRUNUUykKLSAJLXRlc3Qg LW4gIiQoUkFOTElCKSIgJiYgJChSQU5MSUIpICRACi0gCi0tbGliaGlzdG9yeS5hOiAkKEhJU1RP QkopIHhtYWxsb2MubwotK2xpYmhpc3RvcnkuYTogJChISVNUT0JKKSB4bWFsbG9jLm8geGZyZWUu bwotIAkkKFJNKSAkQAotLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoSElTVE9CSikgeG1hbGxvYy5v Ci0rCSQoQVIpICQoQVJGTEFHUykgJEAgJChISVNUT0JKKSB4bWFsbG9jLm8geGZyZWUubwotIAkt dGVzdCAtbiAiJChSQU5MSUIpIiAmJiAkKFJBTkxJQikgJEAKLSAKLS13Y3dpZHRoLm86ICQoc3Jj ZGlyKS9zdXBwb3J0L3djd2lkdGguYwotLQkkKFJNKSAkQAotLQkkKENDKSAkKENDRkxBR1MpIC1j ICQoc3JjZGlyKS9zdXBwb3J0L3djd2lkdGguYwotLQotICMgU2luY2UgdGlsZGUuYyBpcyBzaGFy ZWQgYmV0d2VlbiByZWFkbGluZSBhbmQgYmFzaCwgbWFrZSBzdXJlIHdlIGNvbXBpbGUKLSAjIGl0 IHdpdGggdGhlIHJpZ2h0IGZsYWdzIHdoZW4gaXQncyBidWlsdCBhcyBwYXJ0IG9mIHJlYWRsaW5l Ci0gdGlsZGUubzoJdGlsZGUuYwotQEAgLTE3NSw3ICsxNzEsNyBAQCB0aWxkZS5vOgl0aWxkZS5j Ci0gCSQoQ0MpICQoQ0NGTEFHUykgLURSRUFETElORV9MSUJSQVJZIC1jICQoc3JjZGlyKS90aWxk ZS5jCi0gCi0gcmVhZGxpbmU6ICQoT0JKRUNUUykgcmVhZGxpbmUuaCBybGRlZnMuaCBjaGFyZGVm cy5oIC4vbGlicmVhZGxpbmUuYQotLQkkKENDKSAkKENDRkxBR1MpIC1vICRAIC4vZXhhbXBsZXMv cmwuYyAuL2xpYnJlYWRsaW5lLmEgJHtURVJNQ0FQX0xJQn0KLSsJJChDQykgJChDQ0ZMQUdTKSAt RFJFQURMSU5FX0xJQlJBUlkgLW8gJEAgJCh0b3Bfc3JjZGlyKS9leGFtcGxlcy9ybC5jIC4vbGli cmVhZGxpbmUuYSAke1RFUk1DQVBfTElCfQotIAotIGxpbnQ6CWZvcmNlCi0gCSQoTUFLRSkgJChN RkxBR1MpIENDRkxBR1M9JyQoR0NDX0xJTlRfQ0ZMQUdTKScgc3RhdGljCi1AQCAtMjAwLDYgKzE5 Niw3IEBAIHN0YW1wLWg6IGNvbmZpZy5zdGF0dXMgJChzcmNkaXIpL2NvbmZpZy4KLSAjJChzcmNk aXIpL2NvbmZpZ3VyZTogJChzcmNkaXIpL2NvbmZpZ3VyZS5pbgkjIyBDb21tZW50LW1lLW91dCBp biBkaXN0cmlidXRpb24KLSAjCWNkICQoc3JjZGlyKSAmJiBhdXRvY29uZgkjIyBDb21tZW50LW1l LW91dCBpbiBkaXN0cmlidXRpb24KLSAKLSsKLSBzaGFyZWQ6CWZvcmNlCi0gCS10ZXN0IC1kIHNo bGliIHx8IG1rZGlyIHNobGliCi0gCS0oIGNkIHNobGliIDsgJHtNQUtFfSAke01GTEFHU30gYWxs ICkKLUBAIC0yMTQsMTcgKzIxMSw2IEBAIGV4YW1wbGVzOiBmb3JjZQotIAotIGZvcmNlOgotIAot LWluc3RhbGwtaGVhZGVyczogaW5zdGFsbGRpcnMgJHtJTlNUQUxMRURfSEVBREVSU30KLS0JZm9y IGYgaW4gJHtJTlNUQUxMRURfSEVBREVSU307IGRvIFwKLS0JCSQoSU5TVEFMTF9EQVRBKSAkKHNy Y2RpcikvJCRmICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3JlYWRsaW5lIDsgXAotLQlkb25lCi0t Ci0tdW5pbnN0YWxsLWhlYWRlcnM6Ci0tCS10ZXN0IC1uICIkKGluY2x1ZGVkaXIpIiAmJiBjZCAk KERFU1RESVIpJChpbmNsdWRlZGlyKS9yZWFkbGluZSAmJiBcCi0tCQkke1JNfSAke0lOU1RBTExF RF9IRUFERVJTfQotLQotLW1heWJlLXVuaW5zdGFsbC1oZWFkZXJzOiB1bmluc3RhbGwtaGVhZGVy cwotLQotICMjIEdEQiBMT0NBTAotICMjIERvbid0IG1lc3Mgd2l0aCBwZW9wbGUncyBpbnN0YWxs ZWQgcmVhZGxpbmUncy4KLSAjIyBUaGlzIHRyaWVzIHRvIGluc3RhbGwgdGhpcyB2ZXJzaW9uIG9m IHJlYWRsaW5lIG92ZXIgd2hhdGV2ZXIKLUBAIC0yMzcsNyArMjIzLDE4IEBAIGluc3RhbGw6Ci0g Ci0gI2luc3RhbGw6CSQoSU5TVEFMTF9UQVJHRVRTKQotIAotLWluc3RhbGwtc3RhdGljOiBpbnN0 YWxsZGlycyAkKFNUQVRJQ19MSUJTKSBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1kb2MKLStpbnN0 YWxsLWhlYWRlcnM6IGluc3RhbGxkaXJzICR7SU5TVEFMTEVEX0hFQURFUlN9Ci0rCWZvciBmIGlu ICR7SU5TVEFMTEVEX0hFQURFUlN9OyBkbyBcCi0rCQkkKElOU1RBTExfREFUQSkgJChzcmNkaXIp LyQkZiAkKERFU1RESVIpJChpbmNsdWRlZGlyKS9yZWFkbGluZSA7IFwKLSsJZG9uZQotKwotK3Vu aW5zdGFsbC1oZWFkZXJzOgotKwktdGVzdCAtbiAiJChpbmNsdWRlZGlyKSIgJiYgY2QgJChERVNU RElSKSQoaW5jbHVkZWRpcikvcmVhZGxpbmUgJiYgXAotKwkJJHtSTX0gJHtJTlNUQUxMRURfSEVB REVSU30KLSsKLSttYXliZS11bmluc3RhbGwtaGVhZGVyczogdW5pbnN0YWxsLWhlYWRlcnMKLSsK LStpbnN0YWxsLXN0YXRpYzogaW5zdGFsbGRpcnMgJChTVEFUSUNfTElCUykgaW5zdGFsbC1oZWFk ZXJzIGluc3RhbGwtZG9jIGluc3RhbGwtZXhhbXBsZXMKLSAJLSQoTVYpICQoREVTVERJUikkKGxp YmRpcikvbGlicmVhZGxpbmUuYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYnJlYWRsaW5lLm9sZAot IAkkKElOU1RBTExfREFUQSkgbGlicmVhZGxpbmUuYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYnJl YWRsaW5lLmEKLSAJLXRlc3QgLW4gIiQoUkFOTElCKSIgJiYgJChSQU5MSUIpICQoREVTVERJUikk KGxpYmRpcikvbGlicmVhZGxpbmUuYQotQEAgLTI1MCw3ICsyNDcsNyBAQCBpbnN0YWxsZGlyczog JChzcmNkaXIpL3N1cHBvcnQvbWtpbnN0YWxsCi0gCQkkKERFU1RESVIpJChpbmNsdWRlZGlyKS9y ZWFkbGluZSAkKERFU1RESVIpJChsaWJkaXIpIFwKLSAJCSQoREVTVERJUikkKGluZm9kaXIpICQo REVTVERJUikkKG1hbjNkaXIpCi0gCi0tdW5pbnN0YWxsOiB1bmluc3RhbGwtaGVhZGVycyB1bmlu c3RhbGwtZG9jCi0rdW5pbnN0YWxsOiB1bmluc3RhbGwtaGVhZGVycyB1bmluc3RhbGwtZG9jIHVu aW5zdGFsbC1leGFtcGxlcwotIAktdGVzdCAtbiAiJChERVNURElSKSQobGliZGlyKSIgJiYgY2Qg JChERVNURElSKSQobGliZGlyKSAmJiBcCi0gCQkke1JNfSBsaWJyZWFkbGluZS5hIGxpYnJlYWRs aW5lLm9sZCBsaWJoaXN0b3J5LmEgbGliaGlzdG9yeS5vbGQgJChTSEFSRURfTElCUykKLSAJLSgg Y2Qgc2hsaWI7ICR7TUFLRX0gJHtNRkxBR1N9IERFU1RESVI9JHtERVNURElSfSB1bmluc3RhbGwg KQotQEAgLTI2MSw2ICsyNTgsMTIgQEAgaW5zdGFsbC1zaGFyZWQ6IGluc3RhbGxkaXJzIGluc3Rh bGwtaGVhZAotIHVuaW5zdGFsbC1zaGFyZWQ6IG1heWJlLXVuaW5zdGFsbC1oZWFkZXJzCi0gCS0o IGNkIHNobGliOyAke01BS0V9ICR7TUZMQUdTfSBERVNURElSPSR7REVTVERJUn0gdW5pbnN0YWxs ICkKLSAKLStpbnN0YWxsLWV4YW1wbGVzOiBpbnN0YWxsZGlycyBpbnN0YWxsLWhlYWRlcnMgc2hh cmVkCi0rCS0oIGNkIGV4YW1wbGVzIDsgJHtNQUtFfSAke01GTEFHU30gREVTVERJUj0ke0RFU1RE SVJ9IGluc3RhbGwgKQotKwkKLSt1bmluc3RhbGwtZXhhbXBsZXM6IG1heWJlLXVuaW5zdGFsbC1o ZWFkZXJzCi0rCS0oIGNkIGV4YW1wbGVzOyAke01BS0V9ICR7TUZMQUdTfSBERVNURElSPSR7REVT VERJUn0gdW5pbnN0YWxsICkKLSsKLSBpbnN0YWxsLWRvYzoJaW5zdGFsbGRpcnMKLSAJLSggaWYg dGVzdCAtZCBkb2MgOyB0aGVuIFwKLSAJCWNkIGRvYyAmJiBcCi1AQCAtMjc0LDEwICsyNzcsMTAg QEAgdW5pbnN0YWxsLWRvYzoKLSAJICBmaSApCi0gCi0gVEFHUzoJZm9yY2UKLS0JJChFVEFHUykg JChDU09VUkNFUykgJChIU09VUkNFUykKLSsJLSggY2QgJChzcmNkaXIpICYmICQoRVRBR1MpICQo Q1NPVVJDRVMpICQoSFNPVVJDRVMpICkKLSAKLSB0YWdzOglmb3JjZQotLQkkKENUQUdTKSAkKENT T1VSQ0VTKSAkKEhTT1VSQ0VTKQotKwktKCBjZCAkKHNyY2RpcikgJiYgJChDVEFHUykgJChDU09V UkNFUykgJChIU09VUkNFUykgKQotIAotIGNsZWFuOglmb3JjZQotIAkkKFJNKSAkKE9CSkVDVFMp ICQoU1RBVElDX0xJQlMpCi1AQCAtMjk5LDEyICszMDIsMTQgQEAgZGlzdGNsZWFuIG1haW50YWlu ZXItY2xlYW46IGNsZWFuCi0gCSQoUk0pICQoQ1JFQVRFRF9DT05GSUdVUkUpCi0gCSQoUk0pICQo Q1JFQVRFRF9UQUdTKQotIAotLWluZm8gZHZpIGh0bWwgcGRmOgotK2luZm8gZHZpIGh0bWwgcGRm IHBzOgotIAktKCBjZCBkb2MgJiYgJChNQUtFKSAkKE1GTEFHUykgJEAgKQotIAotIGluc3RhbGwt aW5mbzoKLStpbnN0YWxsLWR2aToKLSBpbnN0YWxsLWh0bWw6Ci0gaW5zdGFsbC1wZGY6Ci0raW5z dGFsbC1wczoKLSBjaGVjazoKLSBpbnN0YWxsY2hlY2s6Ci0gCi1AQCAtNDE3LDcgKzQyMiw3IEBA IHZpX21vZGUubzogcmxkZWZzLmggJHtCVUlMRF9ESVJ9L2NvbmZpZy4KLSB2aV9tb2RlLm86IHJl YWRsaW5lLmgga2V5bWFwcy5oIHJsdHlwZWRlZnMuaCBjaGFyZGVmcy5oIHRpbGRlLmgKLSB2aV9t b2RlLm86IGhpc3RvcnkuaCBhbnNpX3N0ZGxpYi5oIHJsc3RkYy5oCi0geG1hbGxvYy5vOiAke0JV SUxEX0RJUn0vY29uZmlnLmgKLS14bWFsbG9jLm86IGFuc2lfc3RkbGliLmggcmVhZGxpbmUuaAot K3htYWxsb2MubzogYW5zaV9zdGRsaWIuaAotIAotIGJpbmQubzogcmxzaGVsbC5oCi0gaGlzdGZp bGUubzogcmxzaGVsbC5oCi1AQCAtNDc0LDYgKzQ3OSw3IEBAIHRpbGRlLm86IHhtYWxsb2MuaAot IHVuZG8ubzogeG1hbGxvYy5oCi0gdXRpbC5vOiB4bWFsbG9jLmgKLSB2aV9tb2RlLm86IHhtYWxs b2MuaAotK3hmcmVlLm86IHhtYWxsb2MuaCByZWFkbGluZS5oCi0geG1hbGxvYy5vOiB4bWFsbG9j LmgKLSAKLSBjb21wbGV0ZS5vOiBybG1idXRpbC5oCi1AQCAtNTE1LDYgKzUyMSw3IEBAIHRpbGRl Lm86ICQoc3JjZGlyKS90aWxkZS5jCi0gdW5kby5vOiAkKHNyY2RpcikvdW5kby5jCi0gdXRpbC5v OiAkKHNyY2RpcikvdXRpbC5jCi0gdmlfbW9kZS5vOiAkKHNyY2RpcikvdmlfbW9kZS5jCi0reGZy ZWUubzogJChzcmNkaXIpL3hmcmVlLmMKLSB4bWFsbG9jLm86ICQoc3JjZGlyKS94bWFsbG9jLmMK LSAKLSBoaXN0ZXhwYW5kLm86ICQoc3JjZGlyKS9oaXN0ZXhwYW5kLmMKLUBAIC01NDksNiArNTU2 LDcgQEAgdGlsZGUubzogdGlsZGUuYwotIHVuZG8ubzogdW5kby5jCi0gdXRpbC5vOiB1dGlsLmMK LSB2aV9tb2RlLm86IHZpX21vZGUuYwotK3hmcmVlLm86IHhmcmVlLmMKLSB4bWFsbG9jLm86IHht YWxsb2MuYwotIAotIGhpc3RleHBhbmQubzogaGlzdGV4cGFuZC5jCi1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9yZWFkbGluZS9ORVdTCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDEx MDcwMy5vcmlnL3JlYWRsaW5lL05FV1MJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL05FV1MJMjAxMS0wNy0wMyAxMDo0 MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDMyICsxLDE5IEBACi0tVGhpcyBpcyBhIHRlcnNl IGRlc2NyaXB0aW9uIG9mIHRoZSBuZXcgZmVhdHVyZXMgYWRkZWQgdG8gcmVhZGxpbmUtNS4xIHNp bmNlCi0tdGhlIHJlbGVhc2Ugb2YgcmVhZGxpbmUtNS4wLgotK1RoaXMgaXMgYSB0ZXJzZSBkZXNj cmlwdGlvbiBvZiB0aGUgbmV3IGZlYXR1cmVzIGFkZGVkIHRvIHJlYWRsaW5lLTYuMiBzaW5jZQot K3RoZSByZWxlYXNlIG9mIHJlYWRsaW5lLTYuMS4KLSAKLS0xLiAgTmV3IEZlYXR1cmVzIGluIFJl YWRsaW5lCi0rYS4gIFRoZSBoaXN0b3J5IGxpYnJhcnkgZG9lcyBub3QgdHJ5IHRvIHdyaXRlIHRo ZSBoaXN0b3J5IGZpbGVuYW1lIGluIHRoZQotKyAgICBjdXJyZW50IGRpcmVjdG9yeSBpZiAkSE9N RSBpcyB1bnNldC4gIFRoaXMgY2xvc2VzIGEgcG90ZW50aWFsIHNlY3VyaXR5Ci0rICAgIHByb2Js ZW0gaWYgdGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHNwZWNpZnkgYSBoaXN0b3J5IGZpbGVuYW1l LgotIAotLWEuICBUaGUga2V5IHNlcXVlbmNlIHNlbnQgYnkgdGhlIGtleXBhZCBgZGVsZXRlJyBr ZXkgaXMgbm93IGF1dG9tYXRpY2FsbHkgICAKLS0gICAgYm91bmQgdG8gZGVsZXRlLWNoYXIuCi0r Yi4gIE5ldyBiaW5kYWJsZSB2YXJpYWJsZSBgY29tcGxldGlvbi1kaXNwbGF5LXdpZHRoJyB0byBz ZXQgdGhlIG51bWJlciBvZgotKyAgICBjb2x1bW5zIHVzZWQgd2hlbiBkaXNwbGF5aW5nIGNvbXBs ZXRpb25zLgotIAotLWIuICBBIG5lZ2F0aXZlIGFyZ3VtZW50IHRvIG1lbnUtY29tcGxldGUgbm93 IGN5Y2xlcyBiYWNrd2FyZCB0aHJvdWdoIHRoZQotLSAgICBjb21wbGV0aW9uIGxpc3QuCi0rYy4g IE5ldyBiaW5kYWJsZSB2YXJpYWJsZSBgY29tcGxldGlvbi1jYXNlLW1hcCcgdG8gY2F1c2UgY2Fz ZS1pbnNlbnNpdGl2ZQotKyAgICBjb21wbGV0aW9uIHRvIHRyZWF0IGAtJyBhbmQgYF8nIGFzIGlk ZW50aWNhbC4KLSAKLS1jLiAgQSBuZXcgYmluZGFibGUgcmVhZGxpbmUgdmFyaWFibGU6ICBiaW5k LXR0eS1zcGVjaWFsLWNoYXJzLiAgSWYgbm9uLXplcm8sCi0tICAgIHJlYWRsaW5lIHdpbGwgYmlu ZCB0aGUgdGVybWluYWwgc3BlY2lhbCBjaGFyYWN0ZXJzIHRvIHRoZWlyIHJlYWRsaW5lCi0tICAg IGVxdWl2YWxlbnRzIHdoZW4gaXQncyBjYWxsZWQgKG9uIGJ5IGRlZmF1bHQpLgotK2QuICBUaGVy ZSBhcmUgbmV3IGJpbmRhYmxlIHZpLW1vZGUgY29tbWFuZCBuYW1lcyB0byBhdm9pZCByZWFkbGlu ZSdzIGNhc2UtCi0rICAgIGluc2Vuc2l0aXZlIG1hdGNoaW5nIG5vdCBhbGxvd2luZyB0aGVtIHRv IGJlIGJvdW5kIHNlcGFyYXRlbHkuCi0gCi0tZC4gIE5ldyBiaW5kYWJsZSBjb21tYW5kOiB2aS1y dWJvdXQuICBTYXZlcyBkZWxldGVkIHRleHQgZm9yIHBvc3NpYmxlICAKLS0gICAgcmVpbnNlcnRp b24sIGFzIHdpdGggYW55IHZpLW1vZGUgYHRleHQgbW9kaWZpY2F0aW9uJyBjb21tYW5kOyBgWCcg aXMgYm91bmQKLS0gICAgdG8gdGhpcyBpbiB2aSBjb21tYW5kIG1vZGUuCi0tCi0tZS4gIElmIHRo ZSBybF9jb21wbGV0aW9uX3F1ZXJ5X2l0ZW1zIGlzIHNldCB0byBhIHZhbHVlIDwgMCwgcmVhZGxp bmUgbmV2ZXIKLS0gICAgYXNrcyB0aGUgdXNlciB3aGV0aGVyIG9yIG5vdCB0byB2aWV3IHRoZSBw b3NzaWJsZSBjb21wbGV0aW9ucy4KLS0KLS1mLiAgTmV3IGFwcGxpY2F0aW9uLWNhbGxhYmxlIGF1 eGlsaWFyeSBmdW5jdGlvbiwgcmxfdmFyaWFibGVfdmFsdWUsIHJldHVybnMKLS0gICAgYSBzdHJp bmcgY29ycmVzcG9uZGluZyB0byBhIHJlYWRsaW5lIHZhcmlhYmxlJ3MgdmFsdWUuCi0tCi0tZy4g IFdoZW4gcGFyc2luZyBpbnB1dHJjIGZpbGVzIGFuZCB2YXJpYWJsZSBiaW5kaW5nIGNvbW1hbmRz LCB0aGUgcGFyc2VyCi0tICAgIHN0cmlwcyB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gdmFsdWVz IGFzc2lnbmVkIHRvIGJvb2xlYW4gdmFyaWFibGVzCi0tICAgIGJlZm9yZSBjaGVja2luZyB0aGVt LgotLQotLWguICBBIG5ldyBleHRlcm5hbCBhcHBsaWNhdGlvbi1jb250cm9sbGFibGUgdmFyaWFi bGUgdGhhdCBhbGxvd3MgdGhlIExJTkVTCi0tICAgIGFuZCBDT0xVTU5TIGVudmlyb25tZW50IHZh cmlhYmxlcyB0byBzZXQgdGhlIHdpbmRvdyBzaXplIHJlZ2FyZGxlc3Mgb2YKLS0gICAgd2hhdCB0 aGUga2VybmVsIHJldHVybnMuCi0rZS4gIE5ldyBiaW5kYWJsZSB2YXJpYWJsZSBgbWVudS1jb21w bGV0ZS1kaXNwbGF5LXByZWZpeCcgY2F1c2VzIHRoZSBtZW51Ci0rICAgIGNvbXBsZXRpb24gY29k ZSB0byBkaXNwbGF5IHRoZSBjb21tb24gcHJlZml4IG9mIHRoZSBwb3NzaWJsZSBjb21wbGV0aW9u cwotKyAgICBiZWZvcmUgY3ljbGluZyB0aHJvdWdoIHRoZSBsaXN0LCBpbnN0ZWFkIG9mIGFmdGVy LgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvUkVBRE1FCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL1JFQURNRQkyMDExLTA3LTAz IDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxp bmUvUkVBRE1FCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSw3ICsx LDcgQEAKLSBJbnRyb2R1Y3Rpb24KLSA9PT09PT09PT09PT0KLSAKLS1UaGlzIGlzIHRoZSBHbnUg UmVhZGxpbmUgbGlicmFyeSwgdmVyc2lvbiA1LjEuCi0rVGhpcyBpcyB0aGUgR251IFJlYWRsaW5l IGxpYnJhcnksIHZlcnNpb24gNi4yLgotIAotIFRoZSBSZWFkbGluZSBsaWJyYXJ5IHByb3ZpZGVz IGEgc2V0IG9mIGZ1bmN0aW9ucyBmb3IgdXNlIGJ5IGFwcGxpY2F0aW9ucwotIHRoYXQgYWxsb3cg dXNlcnMgdG8gZWRpdCBjb21tYW5kIGxpbmVzIGFzIHRoZXkgYXJlIHR5cGVkIGluLiAgQm90aAot QEAgLTE2LDggKzE2LDkgQEAgbWF5IGJlIHVzZWQgd2l0aG91dCBSZWFkbGluZSBpbiBhcHBsaWNh dAotIGNhcGFiaWxpdGllcy4KLSAKLSBUaGUgUmVhZGxpbmUgbGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YKLS10aGUgW0dOVV0gR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQotLXRo ZSBmaWxlIENPUFlJTkcuCi0rdGhlIFtHTlVdIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0rRm91bmRhdGlvbiwgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLStmaWxlIENPUFlJTkcu Ci0gCi0gVG8gYnVpbGQgdGhlIGxpYnJhcnksIHRyeSB0eXBpbmcgYC4vY29uZmlndXJlJywgdGhl biBgbWFrZScuICBUaGUKLSBjb25maWd1cmF0aW9uIHByb2Nlc3MgaXMgYXV0b21hdGVkLCBzbyBu byBmdXJ0aGVyIGludGVydmVudGlvbiBzaG91bGQKLUBAIC0xODMsNCArMTg0LDQgQEAgbGlzdCAo bWlycm9yZWQgdG8gdGhlIFVzZW5ldCBuZXdzZ3JvdXAgZwotIFJlYWRsaW5lIGJ1ZyByZXBvcnRz IGFuZCBmaXhlcy4gCi0gCi0gQ2hldCBSYW1leQotLWNoZXRAcG8uY3dydS5lZHUKLStjaGV0LnJh bWV5QGNhc2UuZWR1Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9hY2xvY2Fs Lm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2Fj bG9jYWwubTQJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4y LjkwLjIwMTEwNzAzL3JlYWRsaW5lL2FjbG9jYWwubTQJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAw MDAwMDAgKzAyMDAKLUBAIC04MCw2ICs4MCw5IEBAIEFDX0NBQ0hFX1ZBTChiYXNoX2N2X3R5cGVf JDEsCi0gI2lmIEhBVkVfSU5UVFlQRVNfSAotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNlbmRp ZgotKyNpZiBIQVZFX1NURElOVF9ICi0rI2luY2x1ZGUgPHN0ZGludC5oPgotKyNlbmRpZgotICQy Ci0gXSwgYmFzaF9jdl90eXBlXyQxPXllcywgYmFzaF9jdl90eXBlXyQxPW5vKV0pCi0gQUNfTVNH X1JFU1VMVCgkYmFzaF9jdl90eXBlXyQxKQotQEAgLTIxNSw3ICsyMTgsNyBAQCBBQ19DQUNIRV9W QUwoYmFzaF9jdl9zeXNfc2lnbGlzdCwKLSAjaWZkZWYgSEFWRV9VTklTVERfSAotICNpbmNsdWRl IDx1bmlzdGQuaD4KLSAjZW5kaWYKLS0jaWZuZGVmIFNZU19TSUdMSVNUX0RFQ0xBUkVECi0rI2lm ICFIQVZFX0RFQ0xfU1lTX1NJR0xJU1QKLSBleHRlcm4gY2hhciAqc3lzX3NpZ2xpc3RbXTsKLSAj ZW5kaWYKLSBtYWluKCkKLUBAIC0zMzYsMTggKzMzOSwxOCBAQCBtYWluKCkKLSB7Ci0gRElSICpk aXI7Ci0gaW50IGZkLCBlcnI7Ci0tZXJyID0gbWtkaXIoIi90bXAvYmFzaC1hY2xvY2FsIiwgMDcw MCk7Ci0rZXJyID0gbWtkaXIoImJhc2gtYWNsb2NhbCIsIDA3MDApOwotIGlmIChlcnIgPCAwKSB7 Ci0gICBwZXJyb3IoIm1rZGlyIik7Ci0gICBleGl0KDEpOwotIH0KLS11bmxpbmsoIi90bXAvYmFz aC1hY2xvY2FsL25vdF9hX2RpcmVjdG9yeSIpOwotLWZkID0gb3BlbigiL3RtcC9iYXNoLWFjbG9j YWwvbm90X2FfZGlyZWN0b3J5IiwgT19XUk9OTFl8T19DUkVBVHxPX0VYQ0wsIDA2NjYpOwotK3Vu bGluaygiYmFzaC1hY2xvY2FsL25vdF9hX2RpcmVjdG9yeSIpOwotK2ZkID0gb3BlbigiYmFzaC1h Y2xvY2FsL25vdF9hX2RpcmVjdG9yeSIsIE9fV1JPTkxZfE9fQ1JFQVR8T19FWENMLCAwNjY2KTsK LSB3cml0ZShmZCwgIlxuIiwgMSk7Ci0gY2xvc2UoZmQpOwotLWRpciA9IG9wZW5kaXIoIi90bXAv YmFzaC1hY2xvY2FsL25vdF9hX2RpcmVjdG9yeSIpOwotLXVubGluaygiL3RtcC9iYXNoLWFjbG9j YWwvbm90X2FfZGlyZWN0b3J5Iik7Ci0tcm1kaXIoIi90bXAvYmFzaC1hY2xvY2FsIik7Ci0rZGly ID0gb3BlbmRpcigiYmFzaC1hY2xvY2FsL25vdF9hX2RpcmVjdG9yeSIpOwotK3VubGluaygiYmFz aC1hY2xvY2FsL25vdF9hX2RpcmVjdG9yeSIpOwotK3JtZGlyKCJiYXNoLWFjbG9jYWwiKTsKLSBl eGl0IChkaXIgPT0gMCk7Ci0gfV0sIGJhc2hfY3Zfb3BlbmRpcl9ub3Rfcm9idXN0PXllcyxiYXNo X2N2X29wZW5kaXJfbm90X3JvYnVzdD1ubywKLSAgICAgW0FDX01TR19XQVJOKGNhbm5vdCBjaGVj ayBvcGVuZGlyIGlmIGNyb3NzIGNvbXBpbGluZyAtLSBkZWZhdWx0aW5nIHRvIG5vKQotQEAgLTUz MSw2ICs1MzQsMTggQEAgQUNfREVGSU5FKFJMSU1UWVBFLCBybGltX3QpCi0gZmkKLSBdKQotIAot K0FDX0RFRlVOKEJBU0hfVFlQRV9TSUdfQVRPTUlDX1QsCi0rW0FDX0NBQ0hFX0NIRUNLKFtmb3Ig c2lnX2F0b21pY190IGluIHNpZ25hbC5oXSwgYWNfY3ZfaGF2ZV9zaWdfYXRvbWljX3QsCi0rW0FD X1RSWV9MSU5LKFsKLSsjaW5jbHVkZSA8c2lnbmFsLmg+Ci0rXSxbIHNpZ19hdG9taWNfdCB4OyBd LAotK2FjX2N2X2hhdmVfc2lnX2F0b21pY190PXllcywgYWNfY3ZfaGF2ZV9zaWdfYXRvbWljX3Q9 bm8pXSkKLStpZiB0ZXN0ICIkYWNfY3ZfaGF2ZV9zaWdfYXRvbWljX3QiID0gIm5vIgotK3RoZW4K LSsgICAgQUNfQ0hFQ0tfVFlQRShzaWdfYXRvbWljX3QsaW50KQotK2ZpCi0rXSkKLSsKLSBBQ19E RUZVTihCQVNIX0ZVTkNfTFNUQVQsCi0gW2RubCBDYW5ub3QgdXNlIEFDX0NIRUNLX0ZVTkNTKGxz dGF0KSBiZWNhdXNlIExpbnV4IGRlZmluZXMgbHN0YXQoKSBhcyBhbgotIGRubCBpbmxpbmUgZnVu Y3Rpb24gaW4gPHN5cy9zdGF0Lmg+LgotQEAgLTY4NSw3ICs3MDAsNyBAQCBmaQotIF0pCi0gCi0g QUNfREVGVU4oQkFTSF9GVU5DX0dFVENXRCwKLS1bQUNfTVNHX0NIRUNLSU5HKFtpZiBnZXRjd2Qo KSB3aWxsIGR5bmFtaWNhbGx5IGFsbG9jYXRlIG1lbW9yeV0pCi0rW0FDX01TR19DSEVDS0lORyhb aWYgZ2V0Y3dkKCkgd2lsbCBkeW5hbWljYWxseSBhbGxvY2F0ZSBtZW1vcnkgd2l0aCAwIHNpemVd KQotIEFDX0NBQ0hFX1ZBTChiYXNoX2N2X2dldGN3ZF9tYWxsb2MsCi0gW0FDX1RSWV9SVU4oWwot ICNpbmNsdWRlIDxzdGRpby5oPgotQEAgLTkzMyw3ICs5NDgsNyBAQCBBQ19ERUZJTkUoSEFWRV9T VFJVQ1RfU1RBVF9TVF9CTE9DS1MpCi0gZmkKLSBdKQotIAotLUFDX0RFRlVOKEJBU0hfQ0hFQ0tf TElCX1RFUk1DQVAsCi0rQUNfREVGVU4oW0JBU0hfQ0hFQ0tfTElCX1RFUk1DQVBdLAotIFsKLSBp ZiB0ZXN0ICJYJGJhc2hfY3ZfdGVybWNhcF9saWIiID0gIlgiOyB0aGVuCi0gX2Jhc2hfbmVlZG1z Zz15ZXMKLUBAIC0xNDIzLDE5ICsxNDM4LDE5IEBAIGV4aXQgKDEpOwotICNpZiBkZWZpbmVkIChO ZVhUKQotIGV4aXQgKDEpOwotICNlbmRpZgotLWVyciA9IG1rZGlyKCIvdG1wL2Jhc2gtYWNsb2Nh bCIsIDA3MDApOwotK2VyciA9IG1rZGlyKCJiYXNoLWFjbG9jYWwiLCAwNzAwKTsKLSBpZiAoZXJy IDwgMCkgewotICAgcGVycm9yICgibWtkaXIiKTsKLSAgIGV4aXQoMSk7Ci0gfQotLWZkID0gbWtu b2QgKCIvdG1wL2Jhc2gtYWNsb2NhbC9zaC1ucC1hdXRvY29uZiIsIDA2NjYgfCBTX0lGSUZPLCAw KTsKLStmZCA9IG1rbm9kICgiYmFzaC1hY2xvY2FsL3NoLW5wLWF1dG9jb25mIiwgMDY2NiB8IFNf SUZJRk8sIDApOwotIGlmIChmZCA9PSAtMSkgewotLSAgcm1kaXIgKCIvdG1wL2Jhc2gtYWNsb2Nh bCIpOwotKyAgcm1kaXIgKCJiYXNoLWFjbG9jYWwiKTsKLSAgIGV4aXQgKDEpOwotIH0KLSBjbG9z ZShmZCk7Ci0tdW5saW5rICgiL3RtcC9iYXNoLWFjbG9jYWwvc2gtbnAtYXV0b2NvbmYiKTsKLS1y bWRpciAoIi90bXAvYmFzaC1hY2xvY2FsIik7Ci0rdW5saW5rICgiYmFzaC1hY2xvY2FsL3NoLW5w LWF1dG9jb25mIik7Ci0rcm1kaXIgKCJiYXNoLWFjbG9jYWwiKTsKLSBleGl0KDApOwotIH1dLCBi YXNoX2N2X3N5c19uYW1lZF9waXBlcz1wcmVzZW50LCBiYXNoX2N2X3N5c19uYW1lZF9waXBlcz1t aXNzaW5nLAotICAgICBbQUNfTVNHX1dBUk4oY2Fubm90IGNoZWNrIGZvciBuYW1lZCBwaXBlcyBp ZiBjcm9zcy1jb21waWxpbmcgLS0gZGVmYXVsdGluZyB0byBtaXNzaW5nKQotQEAgLTE1NDAsMjAg KzE1NTUsMjIgQEAgZmkKLSBBQ19ERUZVTihCQVNIX0NIRUNLX0RFVl9GRCwKLSBbQUNfTVNHX0NI RUNLSU5HKHdoZXRoZXIgL2Rldi9mZCBpcyBhdmFpbGFibGUpCi0gQUNfQ0FDSEVfVkFMKGJhc2hf Y3ZfZGV2X2ZkLAotLVtpZiB0ZXN0IC1kIC9kZXYvZmQgICYmIHRlc3QgLXIgL2Rldi9mZC8wIDwg L2Rldi9udWxsOyB0aGVuCi0rW2Jhc2hfY3ZfZGV2X2ZkPSIiCi0raWYgdGVzdCAtZCAvZGV2L2Zk ICAmJiAoZXhlYyB0ZXN0IC1yIC9kZXYvZmQvMCA8IC9kZXYvbnVsbCkgOyB0aGVuCi0gIyBjaGVj ayBmb3Igc3lzdGVtcyBsaWtlIEZyZWVCU0QgNSB0aGF0IG9ubHkgcHJvdmlkZSAvZGV2L2ZkL1sw MTJdCi0tICAgZXhlYyAzPCYwCi0tICAgaWYgdGVzdCAtciAvZGV2L2ZkLzM7IHRoZW4KLSsgICBp ZiAoZXhlYyB0ZXN0IC1yIC9kZXYvZmQvMyAzPC9kZXYvbnVsbCkgOyB0aGVuCi0gICAgICBiYXNo X2N2X2Rldl9mZD1zdGFuZGFyZAotICAgIGVsc2UKLSAgICAgIGJhc2hfY3ZfZGV2X2ZkPWFic2Vu dAotICAgIGZpCi0tICAgZXhlYyAzPCYtCi0tIGVsaWYgdGVzdCAtZCAvcHJvYy9zZWxmL2ZkICYm IHRlc3QgLXIgL3Byb2Mvc2VsZi9mZC8wIDwgL2Rldi9udWxsOyB0aGVuCi0tICAgYmFzaF9jdl9k ZXZfZmQ9d2hhY2t5Ci0tIGVsc2UKLS0gICBiYXNoX2N2X2Rldl9mZD1hYnNlbnQKLS0gZmkKLStm aQotK2lmIHRlc3QgLXogIiRiYXNoX2N2X2Rldl9mZCIgOyB0aGVuIAotKyAgaWYgdGVzdCAtZCAv cHJvYy9zZWxmL2ZkICYmIChleGVjIHRlc3QgLXIgL3Byb2Mvc2VsZi9mZC8wIDwgL2Rldi9udWxs KSA7IHRoZW4KLSsgICAgYmFzaF9jdl9kZXZfZmQ9d2hhY2t5Ci0rICBlbHNlCi0rICAgIGJhc2hf Y3ZfZGV2X2ZkPWFic2VudAotKyAgZmkKLStmaQotIF0pCi0gQUNfTVNHX1JFU1VMVCgkYmFzaF9j dl9kZXZfZmQpCi0gaWYgdGVzdCAkYmFzaF9jdl9kZXZfZmQgPSAic3RhbmRhcmQiOyB0aGVuCi1A QCAtMTU2OCw5ICsxNTg1LDkgQEAgZmkKLSBBQ19ERUZVTihCQVNIX0NIRUNLX0RFVl9TVERJTiwK LSBbQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgL2Rldi9zdGRpbiBzdGRvdXQgc3RkZXJyIGFyZSBh dmFpbGFibGUpCi0gQUNfQ0FDSEVfVkFMKGJhc2hfY3ZfZGV2X3N0ZGluLAotLVtpZiB0ZXN0IC1k IC9kZXYvZmQgJiYgdGVzdCAtciAvZGV2L3N0ZGluIDwgL2Rldi9udWxsOyB0aGVuCi0rW2lmIHRl c3QgLWQgL2Rldi9mZCAmJiAoZXhlYyB0ZXN0IC1yIC9kZXYvc3RkaW4gPCAvZGV2L251bGwpIDsg dGhlbgotICAgIGJhc2hfY3ZfZGV2X3N0ZGluPXByZXNlbnQKLS0gZWxpZiB0ZXN0IC1kIC9wcm9j L3NlbGYvZmQgJiYgdGVzdCAtciAvZGV2L3N0ZGluIDwgL2Rldi9udWxsOyB0aGVuCi0rIGVsaWYg dGVzdCAtZCAvcHJvYy9zZWxmL2ZkICYmIChleGVjIHRlc3QgLXIgL2Rldi9zdGRpbiA8IC9kZXYv bnVsbCkgOyB0aGVuCi0gICAgYmFzaF9jdl9kZXZfc3RkaW49cHJlc2VudAotICBlbHNlCi0gICAg YmFzaF9jdl9kZXZfc3RkaW49YWJzZW50Ci1AQCAtMTY2NywzNyArMTY4NCwzOSBAQCBmaQotIGRu bAotIGRubCBjaGVjayBmb3IgYXZhaWxhYmlsaXR5IG9mIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIGFu ZCBmdW5jdGlvbnMKLSBkbmwKLStkbmwgZ2VleiwgSSB3aXNoIEkgZGlkbid0IGhhdmUgdG8gY2hl Y2sgZm9yIGFsbCBvZiB0aGlzIHN0dWZmIHNlcGFyYXRlbHkKLStkbmwKLSBBQ19ERUZVTihCQVNI X0NIRUNLX01VTFRJQllURSwKLSBbCi0gQUNfQ0hFQ0tfSEVBREVSUyh3Y3R5cGUuaCkKLSBBQ19D SEVDS19IRUFERVJTKHdjaGFyLmgpCi0gQUNfQ0hFQ0tfSEVBREVSUyhsYW5naW5mby5oKQotIAot LUFDX0NIRUNLX0ZVTkMobWJzcnRvd2NzLCBBQ19ERUZJTkUoSEFWRV9NQlNSVE9XQ1MpKQotLUFD X0NIRUNLX0ZVTkMobWJydG93YywgQUNfREVGSU5FKEhBVkVfTUJSVE9XQykpCi0gQUNfQ0hFQ0tf RlVOQyhtYnJsZW4sIEFDX0RFRklORShIQVZFX01CUkxFTikpCi0tQUNfQ0hFQ0tfRlVOQyh3Y3Rv bWIsIEFDX0RFRklORShIQVZFX1dDVE9NQikpCi0tQUNfQ0hFQ0tfRlVOQyh3Y3dpZHRoLCBBQ19E RUZJTkUoSEFWRV9XQ1dJRFRIKSkKLStBQ19DSEVDS19GVU5DKG1ic2Nhc2VjbXAsIEFDX0RFRklO RShIQVZFX01CU0NNUCkpCi0rQUNfQ0hFQ0tfRlVOQyhtYnNjbXAsIEFDX0RFRklORShIQVZFX01C U0NNUCkpCi0rQUNfQ0hFQ0tfRlVOQyhtYnNucnRvd2NzLCBBQ19ERUZJTkUoSEFWRV9NQlNOUlRP V0NTKSkKLStBQ19DSEVDS19GVU5DKG1ic3J0b3djcywgQUNfREVGSU5FKEhBVkVfTUJTUlRPV0NT KSkKLSsKLSsKLStBQ19SRVBMQUNFX0ZVTkNTKG1ic2NocikKLSsKLStBQ19DSEVDS19GVU5DKHdj cnRvbWIsIEFDX0RFRklORShIQVZFX1dDUlRPTUIpKQotK0FDX0NIRUNLX0ZVTkMod2NzY29sbCwg QUNfREVGSU5FKEhBVkVfV0NTQ09MTCkpCi0gQUNfQ0hFQ0tfRlVOQyh3Y3NkdXAsIEFDX0RFRklO RShIQVZFX1dDU0RVUCkpCi0rQUNfQ0hFQ0tfRlVOQyh3Y3dpZHRoLCBBQ19ERUZJTkUoSEFWRV9X Q1dJRFRIKSkKLStBQ19DSEVDS19GVU5DKHdjdHlwZSwgQUNfREVGSU5FKEhBVkVfV0NUWVBFKSkK LSAKLS1pZiB0ZXN0ICIkYWNfY3ZfZnVuY193Y3dpZHRoIiA9IG5vICYmIHRlc3QgIiRhY19jdl9o ZWFkZXJfd2NoYXJfaCIgPSB5ZXM7IHRoZW4KLS0gIFdDV0lEVEhfT0JKPXdjd2lkdGgubwotLWVs c2UKLS0gIFdDV0lEVEhfT0JKPQotLWZpCi0tQUNfU1VCU1QoV0NXSURUSF9PQkopCi0rQUNfUkVQ TEFDRV9GVU5DUyh3Y3N3aWR0aCkKLSAKLS1BQ19DQUNIRV9DSEVDSyhbZm9yIG1ic3RhdGVfdF0s IGJhc2hfY3ZfaGF2ZV9tYnN0YXRlX3QsCi0tW0FDX1RSWV9DT01QSUxFKFsKLS0jaW5jbHVkZSA8 d2NoYXIuaD5dLCBbCi0tICBtYnN0YXRlX3QgcHM7Ci0tICBtYnN0YXRlX3QgKnBzcDsKLS0gIHBz cCA9IChtYnN0YXRlX3QgKikwOwotLV0sIGJhc2hfY3ZfaGF2ZV9tYnN0YXRlX3Q9eWVzLCAgYmFz aF9jdl9oYXZlX21ic3RhdGVfdD1ubyldKQotLWlmIHRlc3QgJGJhc2hfY3ZfaGF2ZV9tYnN0YXRl X3QgPSB5ZXM7IHRoZW4KLStkbmwgY2hlY2tzIGZvciBib3RoIG1icnRvd2MgYW5kIG1ic3RhdGVf dAotK0FDX0ZVTkNfTUJSVE9XQwotK2lmIHRlc3QgJGFjX2N2X2Z1bmNfbWJydG93YyA9IHllczsg dGhlbgotIAlBQ19ERUZJTkUoSEFWRV9NQlNUQVRFX1QpCi0gZmkKLSAKLStBQ19DSEVDS19GVU5D Uyhpc3dsb3dlciBpc3d1cHBlciB0b3dsb3dlciB0b3d1cHBlciBpc3djdHlwZSkKLSsKLSBBQ19D QUNIRV9DSEVDSyhbZm9yIG5sX2xhbmdpbmZvIGFuZCBDT0RFU0VUXSwgYmFzaF9jdl9sYW5naW5m b19jb2Rlc2V0LAotIFtBQ19UUllfTElOSygKLSBbI2luY2x1ZGUgPGxhbmdpbmZvLmg+XSwKLUBA IC0xNzA3LDYgKzE3MjYsNTAgQEAgaWYgdGVzdCAkYmFzaF9jdl9sYW5naW5mb19jb2Rlc2V0ID0g eWVzOwotICAgQUNfREVGSU5FKEhBVkVfTEFOR0lORk9fQ09ERVNFVCkKLSBmaQotIAotK2RubCBj aGVjayBmb3Igd2NoYXJfdCBpbiA8d2NoYXIuaD4KLStBQ19DQUNIRV9DSEVDSyhbZm9yIHdjaGFy X3QgaW4gd2NoYXIuaF0sIGJhc2hfY3ZfdHlwZV93Y2hhcl90LAotK1tBQ19UUllfQ09NUElMRSgK LStbI2luY2x1ZGUgPHdjaGFyLmg+Ci0rXSwKLStbCi0rICAgICAgICB3Y2hhcl90IGZvbzsKLSsg ICAgICAgIGZvbyA9IDA7Ci0rXSwgYmFzaF9jdl90eXBlX3djaGFyX3Q9eWVzLCBiYXNoX2N2X3R5 cGVfd2NoYXJfdD1ubyldKQotK2lmIHRlc3QgJGJhc2hfY3ZfdHlwZV93Y2hhcl90ID0geWVzOyB0 aGVuCi0rICAgICAgICBBQ19ERUZJTkUoSEFWRV9XQ0hBUl9ULCAxLCBbc3lzdGVtcyBzaG91bGQg ZGVmaW5lIHRoaXMgdHlwZSBoZXJlXSkKLStmaQotKwotK2RubCBjaGVjayBmb3Igd2N0eXBlX3Qg aW4gPHdjdHlwZS5oPgotK0FDX0NBQ0hFX0NIRUNLKFtmb3Igd2N0eXBlX3QgaW4gd2N0eXBlLmhd LCBiYXNoX2N2X3R5cGVfd2N0eXBlX3QsCi0rW0FDX1RSWV9DT01QSUxFKAotK1sjaW5jbHVkZSA8 d2N0eXBlLmg+XSwKLStbCi0rICAgICAgICB3Y3R5cGVfdCBmb287Ci0rICAgICAgICBmb28gPSAw OwotK10sIGJhc2hfY3ZfdHlwZV93Y3R5cGVfdD15ZXMsIGJhc2hfY3ZfdHlwZV93Y3R5cGVfdD1u byldKQotK2lmIHRlc3QgJGJhc2hfY3ZfdHlwZV93Y3R5cGVfdCA9IHllczsgdGhlbgotKyAgICAg ICAgQUNfREVGSU5FKEhBVkVfV0NUWVBFX1QsIDEsIFtzeXN0ZW1zIHNob3VsZCBkZWZpbmUgdGhp cyB0eXBlIGhlcmVdKQotK2ZpCi0rCi0rZG5sIGNoZWNrIGZvciB3aW50X3QgaW4gPHdjdHlwZS5o PgotK0FDX0NBQ0hFX0NIRUNLKFtmb3Igd2ludF90IGluIHdjdHlwZS5oXSwgYmFzaF9jdl90eXBl X3dpbnRfdCwKLStbQUNfVFJZX0NPTVBJTEUoCi0rWyNpbmNsdWRlIDx3Y3R5cGUuaD5dLAotK1sK LSsgICAgICAgIHdpbnRfdCBmb287Ci0rICAgICAgICBmb28gPSAwOwotK10sIGJhc2hfY3ZfdHlw ZV93aW50X3Q9eWVzLCBiYXNoX2N2X3R5cGVfd2ludF90PW5vKV0pCi0raWYgdGVzdCAkYmFzaF9j dl90eXBlX3dpbnRfdCA9IHllczsgdGhlbgotKyAgICAgICAgQUNfREVGSU5FKEhBVkVfV0lOVF9U LCAxLCBbc3lzdGVtcyBzaG91bGQgZGVmaW5lIHRoaXMgdHlwZSBoZXJlXSkKLStmaQotKwotK2lm IHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiA9IHllczsgdGhlbgotKwlPTERMSUJTPSIkTElCUyIK LSsJTElCUz0iJExJQlMgJExJQklDT05WIgotKwlBQ19DSEVDS19GVU5DUyhsb2NhbGVfY2hhcnNl dCkKLSsJTElCUz0iJE9MRExJQlMiCi0rZmkKLSsKLSBdKQotIAotIGRubCBuZWVkOiBwcmVmaXgg ZXhlY19wcmVmaXggbGliZGlyIGluY2x1ZGVkaXIgQ0MgVEVSTUNBUF9MSUIKLUBAIC0xNzE0LDcg KzE3NzcsNyBAQCBkbmwgcmVxdWlyZToKLSBkbmwJQUNfUFJPR19DQwotIGRubAlCQVNIX0NIRUNL X0xJQl9URVJNQ0FQCi0gCi0tQUNfREVGVU4oUkxfTElCX1JFQURMSU5FX1ZFUlNJT04sCi0rQUNf REVGVU4oW1JMX0xJQl9SRUFETElORV9WRVJTSU9OXSwKLSBbCi0gQUNfUkVRVUlSRShbQkFTSF9D SEVDS19MSUJfVEVSTUNBUF0pCi0gCi1AQCAtMjMzMSw3ICsyMzk0LDcgQEAgQUNfREVGVU4oW0FN X0lOVExfU1VCRElSXSwKLSAgIEFDX0NIRUNLX0hFQURFUlMoW2FyZ3ouaCBsaW1pdHMuaCBsb2Nh bGUuaCBubF90eXBlcy5oIG1hbGxvYy5oIHN0ZGRlZi5oIFwKLSBzdGRsaWIuaCBzdHJpbmcuaCB1 bmlzdGQuaCBzeXMvcGFyYW0uaF0pCi0gICBBQ19DSEVDS19GVU5DUyhbZmVvZl91bmxvY2tlZCBm Z2V0c191bmxvY2tlZCBnZXRjX3VubG9ja2VkIGdldGN3ZCBnZXRlZ2lkIFwKLS1nZXRldWlkIGdl dGdpZCBnZXR1aWQgbWVtcGNweSBtdW5tYXAgcHV0ZW52IHNldGVudiBzZXRsb2NhbGUgc3RwY3B5 IFwKLStnZXRldWlkIGdldGdpZCBnZXR1aWQgbWVtcGNweSBtdW5tYXAgcHV0ZW52IHNldGVudiBz ZXRsb2NhbGUgbG9jYWxlY29udiBzdHBjcHkgXAotIHN0cmNhc2VjbXAgc3RyZHVwIHN0cnRvdWwg dHNlYXJjaCBfX2FyZ3pfY291bnQgX19hcmd6X3N0cmluZ2lmeSBfX2FyZ3pfbmV4dCBcCi0gX19m c2V0bG9ja2luZ10pCi0gCi1AQCAtMzk2NCwzICs0MDI3LDE0MyBAQCBBQ19ERUZVTihbam1fQUNf VFlQRV9VTlNJR05FRF9MT05HX0xPTkddCi0gICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUg dW5zaWduZWQgbG9uZyBsb25nIHR5cGUuXSkKLSAgIGZpCi0gXSkKLSsKLStkbmwgRnJvbSBnbnVs aWIKLStBQ19ERUZVTihbQkFTSF9GVU5DX0ZQVVJHRV0sCi0rWwotKyAgQUNfQ0hFQ0tfRlVOQ1Nf T05DRShbZnB1cmdlXSkKLSsgIEFDX0NIRUNLX0ZVTkNTX09OQ0UoW19fZnB1cmdlXSkKLSsgIEFD X0NIRUNLX0RFQ0xTKFtmcHVyZ2VdLCAsICwgWyNpbmNsdWRlIDxzdGRpby5oPl0pCi0rXSkKLSsK LStBQ19ERUZVTihbQkFTSF9GVU5DX1NOUFJJTlRGXSwKLStbCi0rICBBQ19DSEVDS19GVU5DU19P TkNFKFtzbnByaW50Zl0pCi0rICBpZiB0ZXN0IFgkYWNfY3ZfZnVuY19zbnByaW50ZiA9IFh5ZXM7 IHRoZW4KLSsgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBzdGFuZGFyZC1jb25mb3JtYW50IHNucHJp bnRmXSwgW2Jhc2hfY3ZfZnVuY19zbnByaW50Zl0sCi0rICAgICAgW0FDX1RSWV9SVU4oWwotKyNp bmNsdWRlIDxzdGRpby5oPgotKwotK21haW4oKQotK3sKLSsgIGludCBuOwotKyAgbiA9IHNucHJp bnRmICgwLCAwLCAiJXMiLCAiMDEyMzQ1NiIpOwotKyAgZXhpdChuICE9IDcpOwotK30KLStdLCBi YXNoX2N2X2Z1bmNfc25wcmludGY9eWVzLCBiYXNoX2N2X2Z1bmNfc25wcmludGY9bm8sCi0rICAg W0FDX01TR19XQVJOKFtjYW5ub3QgY2hlY2sgc3RhbmRhcmQgc25wcmludGYgaWYgY3Jvc3MtY29t cGlsaW5nXSkKLSsgICAgYmFzaF9jdl9mdW5jX3NucHJpbnRmPXllc10KLSspXSkKLSsgICAgaWYg dGVzdCAkYmFzaF9jdl9mdW5jX3NucHJpbnRmID0gbm87IHRoZW4KLSsgICAgICBhY19jdl9mdW5j X3NucHJpbnRmPW5vCi0rICAgIGZpCi0rICBmaQotKyAgaWYgdGVzdCAkYWNfY3ZfZnVuY19zbnBy aW50ZiA9IG5vOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX1NOUFJJTlRGLCAwLAotKyAgICAg IFtEZWZpbmUgaWYgeW91IGhhdmUgYSBzdGFuZGFyZC1jb25mb3JtYW50IHNucHJpbnRmIGZ1bmN0 aW9uLl0pCi0rICBmaQotK10pCi0rCi0rQUNfREVGVU4oW0JBU0hfRlVOQ19WU05QUklOVEZdLAot K1sKLSsgIEFDX0NIRUNLX0ZVTkNTX09OQ0UoW3ZzbnByaW50Zl0pCi0rICBpZiB0ZXN0IFgkYWNf Y3ZfZnVuY192c25wcmludGYgPSBYeWVzOyB0aGVuCi0rICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3Ig c3RhbmRhcmQtY29uZm9ybWFudCB2c25wcmludGZdLCBbYmFzaF9jdl9mdW5jX3ZzbnByaW50Zl0s Ci0rICAgICAgW0FDX1RSWV9SVU4oWwotKyNpZiBIQVZFX1NUREFSR19ICi0rI2luY2x1ZGUgPHN0 ZGFyZy5oPgotKyNlbHNlCi0rI2luY2x1ZGUgPHZhcmFyZ3MuaD4KLSsjZW5kaWYKLSsjaW5jbHVk ZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rCi0rc3RhdGljIGludAotKyNpZiBI QVZFX1NUREFSR19ICi0rZm9vKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotKyNlbHNlCi0rZm9vKGZv cm1hdCwgdmFfYWxpc3QpCi0rICAgICBjb25zdCBjaGFyICpmb3JtYXQ7Ci0rICAgICB2YV9kY2wK LSsjZW5kaWYKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rICBpbnQgbjsKLSsKLSsjaWYgSEFWRV9T VERBUkdfSAotKyAgdmFfc3RhcnQoYXJncywgZm10KTsKLSsjZWxzZQotKyAgdmFfc3RhcnQoYXJn cyk7Ci0rI2VuZGlmCi0rICBuID0gdnNucHJpbnRmKDAsIDAsIGZtdCwgYXJncyk7Ci0rICB2YV9l bmQgKGFyZ3MpOwotKyAgcmV0dXJuIG47Ci0rfQotKwotK21haW4oKQotK3sKLSsgIGludCBuOwot KyAgbiA9IGZvbygiJXMiLCAiMDEyMzQ1NiIpOwotKyAgZXhpdChuICE9IDcpOwotK30KLStdLCBi YXNoX2N2X2Z1bmNfdnNucHJpbnRmPXllcywgYmFzaF9jdl9mdW5jX3ZzbnByaW50Zj1ubywKLSsg ICBbQUNfTVNHX1dBUk4oW2Nhbm5vdCBjaGVjayBzdGFuZGFyZCB2c25wcmludGYgaWYgY3Jvc3Mt Y29tcGlsaW5nXSkKLSsgICAgYmFzaF9jdl9mdW5jX3ZzbnByaW50Zj15ZXNdCi0rKV0pCi0rICAg IGlmIHRlc3QgJGJhc2hfY3ZfZnVuY192c25wcmludGYgPSBubzsgdGhlbgotKyAgICAgIGFjX2N2 X2Z1bmNfdnNucHJpbnRmPW5vCi0rICAgIGZpCi0rICBmaQotKyAgaWYgdGVzdCAkYWNfY3ZfZnVu Y192c25wcmludGYgPSBubzsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9WU05QUklOVEYsIDAs Ci0rICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSBhIHN0YW5kYXJkLWNvbmZvcm1hbnQgdnNucHJp bnRmIGZ1bmN0aW9uLl0pCi0rICBmaQotK10pCi0rCi0rQUNfREVGVU4oQkFTSF9TVFJVQ1RfV0VY SVRTVEFUVVNfT0ZGU0VULAotK1tBQ19NU0dfQ0hFQ0tJTkcoZm9yIG9mZnNldCBvZiBleGl0IHN0 YXR1cyBpbiByZXR1cm4gc3RhdHVzIGZyb20gd2FpdCkKLStBQ19DQUNIRV9WQUwoYmFzaF9jdl93 ZXhpdHN0YXR1c19vZmZzZXQsCi0rW0FDX1JVTl9JRkVMU0UoWwotKyNpbmNsdWRlIDxzdGRsaWIu aD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rCi0rI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0rCi0r bWFpbihjLCB2KQotKyAgICAgaW50IGM7Ci0rICAgICBjaGFyICoqdjsKLSt7Ci0rICBwaWRfdCBw aWQsIHA7Ci0rICBpbnQgcywgaSwgbjsKLSsKLSsgIHMgPSAwOwotKyAgcGlkID0gZm9yaygpOwot KyAgaWYgKHBpZCA9PSAwKQotKyAgICBleGl0ICg0Mik7Ci0rCi0rICAvKiB3YWl0IGZvciB0aGUg cHJvY2VzcyAqLwotKyAgcCA9IHdhaXQoJnMpOwotKyAgaWYgKHAgIT0gcGlkKQotKyAgICBleGl0 ICgyNTUpOwotKwotKyAgLyogY3JhY2sgcyAqLwotKyAgZm9yIChpID0gMDsgaSA8IChzaXplb2Yo cykgLSA4KTsgaSsrKQotKyAgICB7Ci0rICAgICAgbiA9IChzID4+IGkpICYgMHhmZjsKLSsgICAg ICBpZiAobiA9PSA0MikKLSsJZXhpdCAoaSk7Ci0rICAgIH0KLSsKLSsgIGV4aXQgKDI1NCk7Ci0r fQotK10sIGJhc2hfY3Zfd2V4aXRzdGF0dXNfb2Zmc2V0PTAsIGJhc2hfY3Zfd2V4aXRzdGF0dXNf b2Zmc2V0PSQ/LAotKyAgIFtBQ19NU0dfV0FSTihjYW5ub3QgY2hlY2sgV0VYSVRTVEFUVVMgb2Zm c2V0IGlmIGNyb3NzIGNvbXBpbGluZyAtLSBkZWZhdWx0aW5nIHRvIDApCi0rICAgIGJhc2hfY3Zf d2V4aXRzdGF0dXNfb2Zmc2V0PTBdCi0rKV0pCi0raWYgdGVzdCAiJGJhc2hfY3Zfd2V4aXRzdGF0 dXNfb2Zmc2V0IiAtZ3QgMzIgOyB0aGVuCi0rICBBQ19NU0dfV0FSTihiYWQgZXhpdCBzdGF0dXMg ZnJvbSB0ZXN0IHByb2dyYW0gLS0gZGVmYXVsdGluZyB0byAwKQotKyAgYmFzaF9jdl93ZXhpdHN0 YXR1c19vZmZzZXQ9MAotK2ZpCi0rQUNfTVNHX1JFU1VMVCgkYmFzaF9jdl93ZXhpdHN0YXR1c19v ZmZzZXQpCi0rQUNfREVGSU5FX1VOUVVPVEVEKFtXRVhJVFNUQVRVU19PRkZTRVRdLCBbJGJhc2hf Y3Zfd2V4aXRzdGF0dXNfb2Zmc2V0XSwgW09mZnNldCBvZiBleGl0IHN0YXR1cyBpbiB3YWl0IHN0 YXR1cyB3b3JkXSkKLStdKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvYW5z aV9zdGRsaWIuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFk bGluZS9hbnNpX3N0ZGxpYi5oCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9hbnNpX3N0ZGxpYi5oCTIwMTEtMDctMDMg MTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtNiwxOSArNiwxOSBAQAotIAotICAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEdOVSBCYXNoLCB0aGUgQm91cm5lIEFnYWluIFNIZWxsLgotIAotLSAg IEJhc2ggaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdCB1bmRlcgotLSAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCi0tICAgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKLS0gICB2ZXJz aW9uLgotLQotLSAgIEJhc2ggaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCi0tICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKLS0gICBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLS0gICBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0tICAgd2l0 aCBCYXNoOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKLS0gICBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgQmFzaCBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgQmFz aCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIEJhc2guICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAKLSAjaWYgIWRlZmlu ZWQgKF9TVERMSUJfSF8pCi0gI2RlZmluZQlfU1RETElCX0hfIDEKLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL3JlYWRsaW5lL2JpbmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAx MTA3MDMub3JpZy9yZWFkbGluZS9iaW5kLmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2JpbmQuYwkyMDExLTA3LTAz IDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjMgQEAKLSAvKiBiaW5kLmMg LS0ga2V5IGJpbmRpbmcgYW5kIHN0YXJ0dXAgZmlsZSBzdXBwb3J0IGZvciB0aGUgcmVhZGxpbmUg bGlicmFyeS4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwNSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAxMCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05V IFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0gICByZWFkaW5nIGxpbmVzIG9mIHRl eHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotKyAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxp YnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5w dXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdO VSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot IAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdp dGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2Fs bGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBv ZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0g ICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0r ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0gI2RlZmluZSBSRUFETElORV9MSUJS QVJZCi0gCi1AQCAtODAsNyArNzksNyBAQCBzdGF0aWMgaW50IGdsZWFuX2tleV9mcm9tX25hbWUg UEFSQU1TKChjCi0gc3RhdGljIGludCBmaW5kX2Jvb2xlYW5fdmFyIFBBUkFNUygoY29uc3QgY2hh ciAqKSk7Ci0gCi0gc3RhdGljIGNoYXIgKl9ybF9nZXRfc3RyaW5nX3ZhcmlhYmxlX3ZhbHVlIFBB UkFNUygoY29uc3QgY2hhciAqKSk7Ci0tc3RhdGljIGludCBzdWJzdHJpbmdfbWVtYmVyX29mX2Fy cmF5IFBBUkFNUygoY2hhciAqLCBjb25zdCBjaGFyICoqKSk7Ci0rc3RhdGljIGludCBzdWJzdHJp bmdfbWVtYmVyX29mX2FycmF5IFBBUkFNUygoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogY29u c3QgKikpOwotIAotIHN0YXRpYyBpbnQgY3VycmVudGx5X3JlYWRpbmdfaW5pdF9maWxlOwotIAot QEAgLTMxNyw3ICszMTYsNyBAQCBybF9tYWNyb19iaW5kIChrZXlzZXEsIG1hY3JvLCBtYXApCi0g Ci0gICBpZiAocmxfdHJhbnNsYXRlX2tleXNlcSAobWFjcm8sIG1hY3JvX2tleXMsICZtYWNyb19r ZXlzX2xlbikpCi0gICAgIHsKLS0gICAgICBmcmVlIChtYWNyb19rZXlzKTsKLSsgICAgICB4ZnJl ZSAobWFjcm9fa2V5cyk7Ci0gICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0gICBybF9nZW5lcmlj X2JpbmQgKElTTUFDUiwga2V5c2VxLCBtYWNyb19rZXlzLCBtYXApOwotQEAgLTM0Nyw3ICszNDYs NyBAQCBybF9nZW5lcmljX2JpbmQgKHR5cGUsIGtleXNlcSwgZGF0YSwgbWFwCi0gICBpZiAoa2V5 c2VxID09IDAgfHwgKmtleXNlcSA9PSAwKQotICAgICB7Ci0gICAgICAgaWYgKHR5cGUgPT0gSVNN QUNSKQotLQlmcmVlIChkYXRhKTsKLSsJeGZyZWUgKGRhdGEpOwotICAgICAgIHJldHVybiAtMTsK LSAgICAgfQotIAotQEAgLTM1OCw3ICszNTcsNyBAQCBybF9nZW5lcmljX2JpbmQgKHR5cGUsIGtl eXNlcSwgZGF0YSwgbWFwCi0gICAgICBLRVlTIGludG8gS0VZU19MRU4uICovCi0gICBpZiAocmxf dHJhbnNsYXRlX2tleXNlcSAoa2V5c2VxLCBrZXlzLCAma2V5c19sZW4pKQotICAgICB7Ci0tICAg ICAgZnJlZSAoa2V5cyk7Ci0rICAgICAgeGZyZWUgKGtleXMpOwotICAgICAgIHJldHVybiAtMTsK LSAgICAgfQotIAotQEAgLTM3MCw3ICszNjksMTAgQEAgcmxfZ2VuZXJpY19iaW5kICh0eXBlLCBr ZXlzZXEsIGRhdGEsIG1hcAotIAotICAgICAgIGljID0gdWM7Ci0gICAgICAgaWYgKGljIDwgMCB8 fCBpYyA+PSBLRVlNQVBfU0laRSkKLS0JcmV0dXJuIC0xOwotKyAgICAgICAgewotKyAgICAgICAg ICB4ZnJlZSAoa2V5cyk7Ci0rCSAgcmV0dXJuIC0xOwotKyAgICAgICAgfQotIAotICAgICAgIGlm IChNRVRBX0NIQVIgKGljKSAmJiBfcmxfY29udmVydF9tZXRhX2NoYXJzX3RvX2FzY2lpKQotIAl7 Ci1AQCAtNDExLDExICs0MTMsMTggQEAgcmxfZ2VuZXJpY19iaW5kICh0eXBlLCBrZXlzZXEsIGRh dGEsIG1hcAotICAgICAgIGVsc2UKLSAJewotIAkgIGlmIChtYXBbaWNdLnR5cGUgPT0gSVNNQUNS KQotLQkgICAgZnJlZSAoKGNoYXIgKiltYXBbaWNdLmZ1bmN0aW9uKTsKLSsJICAgIHhmcmVlICgo Y2hhciAqKW1hcFtpY10uZnVuY3Rpb24pOwotIAkgIGVsc2UgaWYgKG1hcFtpY10udHlwZSA9PSBJ U0tNQVApCi0gCSAgICB7Ci0gCSAgICAgIG1hcCA9IEZVTkNUSU9OX1RPX0tFWU1BUCAobWFwLCBp Yyk7Ci0gCSAgICAgIGljID0gQU5ZT1RIRVJLRVk7Ci0rCSAgICAgIC8qIElmIHdlJ3JlIHRyeWlu ZyB0byBvdmVycmlkZSBhIGtleW1hcCB3aXRoIGEgbnVsbCBmdW5jdGlvbgotKwkJIChlLmcuLCB0 cnlpbmcgdG8gdW5iaW5kIGl0KSwgd2UgY2FuJ3QgdXNlIGEgbnVsbCBwb2ludGVyCi0rCQkgaGVy ZSBiZWNhdXNlIHRoYXQncyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGhhdmluZyBub3QgYmVlbgot KwkJIG92ZXJyaWRkZW4uICBXZSB1c2UgYSBzcGVjaWFsIGJpbmRhYmxlIGZ1bmN0aW9uIHRoYXQg ZG9lcwotKwkJIG5vdGhpbmcuICovCi0rCSAgICAgIGlmICh0eXBlID09IElTRlVOQyAmJiBkYXRh ID09IDApCi0rCQlkYXRhID0gKGNoYXIgKilfcmxfbnVsbF9mdW5jdGlvbjsKLSAJICAgIH0KLSAK LSAJICBtYXBbaWNdLmZ1bmN0aW9uID0gS0VZTUFQX1RPX0ZVTkNUSU9OIChkYXRhKTsKLUBAIC00 MjQsNyArNDMzLDcgQEAgcmxfZ2VuZXJpY19iaW5kICh0eXBlLCBrZXlzZXEsIGRhdGEsIG1hcAot IAotICAgICAgIHJsX2JpbmRpbmdfa2V5bWFwID0gbWFwOwotICAgICB9Ci0tICBmcmVlIChrZXlz KTsKLSsgIHhmcmVlIChrZXlzKTsKLSAgIHJldHVybiAwOwotIH0KLSAKLUBAIC00NjIsMTIgKzQ3 MSwyMSBAQCBybF90cmFuc2xhdGVfa2V5c2VxIChzZXEsIGFycmF5LCBsZW4pCi0gCQl9Ci0gCSAg ICAgIGVsc2UgaWYgKGMgPT0gJ00nKQotIAkJewotLQkJICBpKys7Ci0tCQkgIC8qIFhYWCAtIHNo b3VsZCBvYmV5IGNvbnZlcnQtbWV0YSBzZXR0aW5nPyAqLwotKwkJICBpKys7CQkvKiBzZXFbaV0g PT0gJy0nICovCi0rCQkgIC8qIFhYWCAtIG9iZXkgY29udmVydC1tZXRhIHNldHRpbmcgKi8KLSAJ CSAgaWYgKF9ybF9jb252ZXJ0X21ldGFfY2hhcnNfdG9fYXNjaWkgJiYgX3JsX2tleW1hcFtFU0Nd LnR5cGUgPT0gSVNLTUFQKQotIAkJICAgIGFycmF5W2wrK10gPSBFU0M7CS8qIEVTQyBpcyBtZXRh LXByZWZpeCAqLwotKwkJICBlbHNlIGlmIChzZXFbaSsxXSA9PSAnXFwnICYmIHNlcVtpKzJdID09 ICdDJyAmJiBzZXFbaSszXSA9PSAnLScpCi0rCQkgICAgewotKwkJICAgICAgaSArPSA0OwotKwkJ ICAgICAgdGVtcCA9IChzZXFbaV0gPT0gJz8nKSA/IFJVQk9VVCA6IENUUkwgKF9ybF90b191cHBl ciAoc2VxW2ldKSk7Ci0rCQkgICAgICBhcnJheVtsKytdID0gTUVUQSAodGVtcCk7Ci0rCQkgICAg fQotIAkJICBlbHNlCi0gCQkgICAgewotKwkJICAgICAgLyogVGhpcyBkb2Vzbid0IHlldCBoYW5k bGUgdGhpbmdzIGxpa2UgXE0tXGEsIHdoaWNoIG1heQotKwkJCSBvciBtYXkgbm90IGhhdmUgYW55 IHJlYXNvbmFibGUgbWVhbmluZy4gIFlvdSdyZQotKwkJCSBwcm9iYWJseSBiZXR0ZXIgb2ZmIHVz aW5nIHN0cmFpZ2h0IG9jdGFsIG9yIGhleC4gKi8KLSAJCSAgICAgIGkrKzsKLSAJCSAgICAgIGFy cmF5W2wrK10gPSBNRVRBIChzZXFbaV0pOwotIAkJICAgIH0KLUBAIC01NjUsNiArNTgzLDExIEBA IHJsX3VudHJhbnNsYXRlX2tleXNlcSAoc2VxKQotICAgICAgIGtzZXFbaSsrXSA9ICctJzsKLSAg ICAgICBjID0gVU5NRVRBIChjKTsKLSAgICAgfQotKyAgZWxzZSBpZiAoYyA9PSBFU0MpCi0rICAg IHsKLSsgICAgICBrc2VxW2krK10gPSAnXFwnOwotKyAgICAgIGMgPSAnZSc7Ci0rICAgIH0KLSAg IGVsc2UgaWYgKENUUkxfQ0hBUiAoYykpCi0gICAgIHsKLSAgICAgICBrc2VxW2krK10gPSAnXFwn OwotQEAgLTYxMyw3ICs2MzYsMTIgQEAgX3JsX3VudHJhbnNsYXRlX21hY3JvX3ZhbHVlIChzZXEp Ci0gCSAgKnIrKyA9ICctJzsKLSAJICBjID0gVU5NRVRBIChjKTsKLSAJfQotLSAgICAgIGVsc2Ug aWYgKENUUkxfQ0hBUiAoYykgJiYgYyAhPSBFU0MpCi0rICAgICAgZWxzZSBpZiAoYyA9PSBFU0Mp Ci0rCXsKLSsJICAqcisrID0gJ1xcJzsKLSsJICBjID0gJ2UnOwotKwl9Ci0rICAgICAgZWxzZSBp ZiAoQ1RSTF9DSEFSIChjKSkKLSAJewotIAkgICpyKysgPSAnXFwnOwotIAkgICpyKysgPSAnQyc7 Ci1AQCAtNjcyLDcgKzcwMCw3IEBAIHJsX2Z1bmN0aW9uX29mX2tleXNlcSAoa2V5c2VxLCBtYXAs IHR5cGUKLSB7Ci0gICByZWdpc3RlciBpbnQgaTsKLSAKLS0gIGlmICghbWFwKQotKyAgaWYgKG1h cCA9PSAwKQotICAgICBtYXAgPSBfcmxfa2V5bWFwOwotIAotICAgZm9yIChpID0gMDsga2V5c2Vx ICYmIGtleXNlcVtpXTsgaSsrKQotQEAgLTY4MSwyNSArNzA5LDI3IEBAIHJsX2Z1bmN0aW9uX29m X2tleXNlcSAoa2V5c2VxLCBtYXAsIHR5cGUKLSAKLSAgICAgICBpZiAoTUVUQV9DSEFSIChpYykg JiYgX3JsX2NvbnZlcnRfbWV0YV9jaGFyc190b19hc2NpaSkKLSAJewotLQkgIGlmIChtYXBbRVND XS50eXBlICE9IElTS01BUCkKLSsJICBpZiAobWFwW0VTQ10udHlwZSA9PSBJU0tNQVApCi0rCSAg ICB7Ci0rCSAgICAgIG1hcCA9IEZVTkNUSU9OX1RPX0tFWU1BUCAobWFwLCBFU0MpOwotKwkgICAg ICBpYyA9IFVOTUVUQSAoaWMpOwotKwkgICAgfQotKwkgIC8qIFhYWCAtIHNob3VsZCB3ZSBqdXN0 IHJldHVybiBOVUxMIGhlcmUsIHNpbmNlIHRoaXMgb2J2aW91c2x5Ci0rCSAgICAgZG9lc24ndCBt YXRjaD8gKi8KLSsJICBlbHNlCi0gCSAgICB7Ci0gCSAgICAgIGlmICh0eXBlKQotIAkJKnR5cGUg PSBtYXBbRVNDXS50eXBlOwotIAotIAkgICAgICByZXR1cm4gKG1hcFtFU0NdLmZ1bmN0aW9uKTsK LSAJICAgIH0KLS0JICBlbHNlCi0tCSAgICB7Ci0tCSAgICAgIG1hcCA9IEZVTkNUSU9OX1RPX0tF WU1BUCAobWFwLCBFU0MpOwotLQkgICAgICBpYyA9IFVOTUVUQSAoaWMpOwotLQkgICAgfQotIAl9 Ci0gCi0gICAgICAgaWYgKG1hcFtpY10udHlwZSA9PSBJU0tNQVApCi0gCXsKLSAJICAvKiBJZiB0 aGlzIGlzIHRoZSBsYXN0IGtleSBpbiB0aGUga2V5IHNlcXVlbmNlLCByZXR1cm4gdGhlCi0gCSAg ICAgbWFwLiAqLwotLQkgIGlmICgha2V5c2VxW2kgKyAxXSkKLSsJICBpZiAoa2V5c2VxW2kgKyAx XSA9PSAnXDAnKQotIAkgICAgewotIAkgICAgICBpZiAodHlwZSkKLSAJCSp0eXBlID0gSVNLTUFQ OwotQEAgLTcwOSw3ICs3MzksMTIgQEAgcmxfZnVuY3Rpb25fb2Zfa2V5c2VxIChrZXlzZXEsIG1h cCwgdHlwZQotIAkgIGVsc2UKLSAJICAgIG1hcCA9IEZVTkNUSU9OX1RPX0tFWU1BUCAobWFwLCBp Yyk7Ci0gCX0KLS0gICAgICBlbHNlCi0rICAgICAgLyogSWYgd2UncmUgbm90IGF0IHRoZSBlbmQg b2YgdGhlIGtleSBzZXF1ZW5jZSwgYW5kIHRoZSBjdXJyZW50IGtleQotKwkgaXMgYm91bmQgdG8g c29tZXRoaW5nIG90aGVyIHRoYW4gYSBrZXltYXAsIHRoZW4gdGhlIGVudGlyZSBrZXkKLSsJIHNl cXVlbmNlIGlzIG5vdCBib3VuZC4gKi8KLSsgICAgICBlbHNlIGlmIChtYXBbaWNdLnR5cGUgIT0g SVNLTUFQICYmIGtleXNlcVtpKzFdKQotKwlyZXR1cm4gKChybF9jb21tYW5kX2Z1bmNfdCAqKU5V TEwpOwotKyAgICAgIGVsc2UJLyogbWFwW2ljXS50eXBlICE9IElTS01BUCAmJiBrZXlzZXFbaSsx XSA9PSAwICovCi0gCXsKLSAJICBpZiAodHlwZSkKLSAJICAgICp0eXBlID0gbWFwW2ljXS50eXBl OwotQEAgLTc2NCwxMCArNzk5LDEyIEBAIF9ybF9yZWFkX2ZpbGUgKGZpbGVuYW1lLCBzaXplcCkK LSAKLSAgIGlmIChpIDwgMCkKLSAgICAgewotLSAgICAgIGZyZWUgKGJ1ZmZlcik7Ci0rICAgICAg eGZyZWUgKGJ1ZmZlcik7Ci0gICAgICAgcmV0dXJuICgoY2hhciAqKU5VTEwpOwotICAgICB9Ci0g Ci0rICBSTF9DSEVDS19TSUdOQUxTICgpOwotKwotICAgYnVmZmVyW2ldID0gJ1wwJzsKLSAgIGlm IChzaXplcCkKLSAgICAgKnNpemVwID0gaTsKLUBAIC03OTEsNiArODI4LDcgQEAgcmxfcmVfcmVh ZF9pbml0X2ZpbGUgKGNvdW50LCBpZ25vcmUpCi0gICAgICAxLiB0aGUgZmlsZW5hbWUgdXNlZCBm b3IgdGhlIHByZXZpb3VzIGNhbGwKLSAgICAgIDIuIHRoZSB2YWx1ZSBvZiB0aGUgc2hlbGwgdmFy aWFibGUgYElOUFVUUkMnCi0gICAgICAzLiB+Ly5pbnB1dHJjCi0rICAgICA0LiAvZXRjL2lucHV0 cmMKLSAgICBJZiB0aGUgZmlsZSBleGlzdGVkIGFuZCBjb3VsZCBiZSBvcGVuZWQgYW5kIHJlYWQs IDAgaXMgcmV0dXJuZWQsCi0gICAgb3RoZXJ3aXNlIGVycm5vIGlzIHJldHVybmVkLiAqLwotIGlu dAotQEAgLTc5OSwxNyArODM3LDE4IEBAIHJsX3JlYWRfaW5pdF9maWxlIChmaWxlbmFtZSkKLSB7 Ci0gICAvKiBEZWZhdWx0IHRoZSBmaWxlbmFtZS4gKi8KLSAgIGlmIChmaWxlbmFtZSA9PSAwKQot KyAgICBmaWxlbmFtZSA9IGxhc3RfcmVhZGxpbmVfaW5pdF9maWxlOwotKyAgaWYgKGZpbGVuYW1l ID09IDApCi0rICAgIGZpbGVuYW1lID0gc2hfZ2V0X2Vudl92YWx1ZSAoIklOUFVUUkMiKTsKLSsg IGlmIChmaWxlbmFtZSA9PSAwIHx8ICpmaWxlbmFtZSA9PSAwKQotICAgICB7Ci0tICAgICAgZmls ZW5hbWUgPSBsYXN0X3JlYWRsaW5lX2luaXRfZmlsZTsKLS0gICAgICBpZiAoZmlsZW5hbWUgPT0g MCkKLS0gICAgICAgIGZpbGVuYW1lID0gc2hfZ2V0X2Vudl92YWx1ZSAoIklOUFVUUkMiKTsKLS0g ICAgICBpZiAoZmlsZW5hbWUgPT0gMCkKLS0JZmlsZW5hbWUgPSBERUZBVUxUX0lOUFVUUkM7Ci0r ICAgICAgZmlsZW5hbWUgPSBERUZBVUxUX0lOUFVUUkM7Ci0rICAgICAgLyogVHJ5IHRvIHJlYWQg REVGQVVMVF9JTlBVVFJDOyBmYWxsIGJhY2sgdG8gU1lTX0lOUFVUUkMgb24gZmFpbHVyZSAqLwot KyAgICAgIGlmIChfcmxfcmVhZF9pbml0X2ZpbGUgKGZpbGVuYW1lLCAwKSA9PSAwKQotKwlyZXR1 cm4gMDsKLSsgICAgICBmaWxlbmFtZSA9IFNZU19JTlBVVFJDOwotICAgICB9Ci0gCi0tICBpZiAo KmZpbGVuYW1lID09IDApCi0tICAgIGZpbGVuYW1lID0gREVGQVVMVF9JTlBVVFJDOwotLQotICNp ZiBkZWZpbmVkIChfX01TRE9TX18pCi0gICBpZiAoX3JsX3JlYWRfaW5pdF9maWxlIChmaWxlbmFt ZSwgMCkgPT0gMCkKLSAgICAgcmV0dXJuIDA7Ci1AQCAtODMyLDggKzg3MSw5IEBAIF9ybF9yZWFk X2luaXRfZmlsZSAoZmlsZW5hbWUsIGluY2x1ZGVfbGUKLSAKLSAgIG9wZW5uYW1lID0gdGlsZGVf ZXhwYW5kIChmaWxlbmFtZSk7Ci0gICBidWZmZXIgPSBfcmxfcmVhZF9maWxlIChvcGVubmFtZSwg JmZpbGVfc2l6ZSk7Ci0tICBmcmVlIChvcGVubmFtZSk7Ci0rICB4ZnJlZSAob3Blbm5hbWUpOwot IAotKyAgUkxfQ0hFQ0tfU0lHTkFMUyAoKTsKLSAgIGlmIChidWZmZXIgPT0gMCkKLSAgICAgcmV0 dXJuIChlcnJubyk7Ci0gICAKLUBAIC04ODAsNyArOTIwLDcgQEAgX3JsX3JlYWRfaW5pdF9maWxl IChmaWxlbmFtZSwgaW5jbHVkZV9sZQotICAgICAgIGN1cnJlbnRfcmVhZGxpbmVfaW5pdF9saW5l bm8rKzsKLSAgICAgfQotIAotLSAgZnJlZSAoYnVmZmVyKTsKLSsgIHhmcmVlIChidWZmZXIpOwot ICAgY3VycmVudGx5X3JlYWRpbmdfaW5pdF9maWxlID0gMDsKLSAgIHJldHVybiAoMCk7Ci0gfQot QEAgLTg5MCwxMCArOTMwLDEwIEBAIF9ybF9pbml0X2ZpbGVfZXJyb3IgKG1zZykKLSAgICAgIGNv bnN0IGNoYXIgKm1zZzsKLSB7Ci0gICBpZiAoY3VycmVudGx5X3JlYWRpbmdfaW5pdF9maWxlKQot LSAgICBmcHJpbnRmIChzdGRlcnIsICJyZWFkbGluZTogJXM6IGxpbmUgJWQ6ICVzXG4iLCBjdXJy ZW50X3JlYWRsaW5lX2luaXRfZmlsZSwKLSsgICAgX3JsX2Vycm1zZyAoIiVzOiBsaW5lICVkOiAl c1xuIiwgY3VycmVudF9yZWFkbGluZV9pbml0X2ZpbGUsCi0gCQkgICAgIGN1cnJlbnRfcmVhZGxp bmVfaW5pdF9saW5lbm8sIG1zZyk7Ci0gICBlbHNlCi0tICAgIGZwcmludGYgKHN0ZGVyciwgInJl YWRsaW5lOiAlc1xuIiwgbXNnKTsKLSsgICAgX3JsX2Vycm1zZyAoIiVzIiwgbXNnKTsKLSB9Ci0g Ci0gLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiAqLwotQEAgLTkwNSwxMSArOTQ1LDExIEBAIF9ybF9pbml0X2ZpbGVfZXJy b3IgKG1zZykKLSB0eXBlZGVmIGludCBfcmxfcGFyc2VyX2Z1bmNfdCBQQVJBTVMoKGNoYXIgKikp OwotIAotIC8qIFRoaW5ncyB0aGF0IG1lYW4gYENvbnRyb2wnLiAqLwotLWNvbnN0IGNoYXIgKl9y bF9wb3NzaWJsZV9jb250cm9sX3ByZWZpeGVzW10gPSB7Ci0rY29uc3QgY2hhciAqIGNvbnN0IF9y bF9wb3NzaWJsZV9jb250cm9sX3ByZWZpeGVzW10gPSB7Ci0gICAiQ29udHJvbC0iLCAiQy0iLCAi Q1RSTC0iLCAoY29uc3QgY2hhciAqKU5VTEwKLSB9OwotIAotLWNvbnN0IGNoYXIgKl9ybF9wb3Nz aWJsZV9tZXRhX3ByZWZpeGVzW10gPSB7Ci0rY29uc3QgY2hhciAqIGNvbnN0IF9ybF9wb3NzaWJs ZV9tZXRhX3ByZWZpeGVzW10gPSB7Ci0gICAiTWV0YSIsICJNLSIsIChjb25zdCBjaGFyICopTlVM TAotIH07Ci0gCi1AQCAtOTcxLDcgKzEwMTEsNyBAQCBwYXJzZXJfaWYgKGFyZ3MpCi0gCSBgJGlm IHRlcm09c3VuLWNtZCcgaW50byB0aGVpciAuaW5wdXRyYy4gKi8KLSAgICAgICBfcmxfcGFyc2lu Z19jb25kaXRpb25hbGl6ZWRfb3V0ID0gX3JsX3N0cmljbXAgKGFyZ3MgKyA1LCB0bmFtZSkgJiYK LSAJCQkJCV9ybF9zdHJpY21wIChhcmdzICsgNSwgcmxfdGVybWluYWxfbmFtZSk7Ci0tICAgICAg ZnJlZSAodG5hbWUpOwotKyAgICAgIHhmcmVlICh0bmFtZSk7Ci0gICAgIH0KLSAjaWYgZGVmaW5l ZCAoVklfTU9ERSkKLSAgIGVsc2UgaWYgKF9ybF9zdHJuaWNtcCAoYXJncywgIm1vZGU9IiwgNSkg PT0gMCkKLUBAIC0xMDY4LDggKzExMDgsOCBAQCBwYXJzZXJfaW5jbHVkZSAoYXJncykKLSB9Ci0g ICAKLSAvKiBBc3NvY2lhdGUgdGV4dHVhbCBuYW1lcyB3aXRoIGFjdHVhbCBmdW5jdGlvbnMuICov Ci0tc3RhdGljIHN0cnVjdCB7Ci0tICBjb25zdCBjaGFyICpuYW1lOwotK3N0YXRpYyBjb25zdCBz dHJ1Y3QgewotKyAgY29uc3QgY2hhciAqIGNvbnN0IG5hbWU7Ci0gICBfcmxfcGFyc2VyX2Z1bmNf dCAqZnVuY3Rpb247Ci0gfSBwYXJzZXJfZGlyZWN0aXZlcyBbXSA9IHsKLSAgIHsgImlmIiwgcGFy c2VyX2lmIH0sCi1AQCAtMTMyMSw3ICsxMzYxLDcgQEAgcmxfcGFyc2VfYW5kX2JpbmQgKHN0cmlu ZykKLSAgICAgICBlbHNlCi0gCXJsX2JpbmRfa2V5c2VxIChzZXEsIHJsX25hbWVkX2Z1bmN0aW9u IChmdW5uYW1lKSk7Ci0gCi0tICAgICAgZnJlZSAoc2VxKTsKLSsgICAgICB4ZnJlZSAoc2VxKTsK LSAgICAgICByZXR1cm4gMDsKLSAgICAgfQotIAotQEAgLTEzNzUsOCArMTQxNSw4IEBAIHJsX3Bh cnNlX2FuZF9iaW5kIChzdHJpbmcpCi0gCi0gI2RlZmluZSBWX1NQRUNJQUwJMHgxCi0gCi0tc3Rh dGljIHN0cnVjdCB7Ci0tICBjb25zdCBjaGFyICpuYW1lOwotK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ewotKyAgY29uc3QgY2hhciAqIGNvbnN0IG5hbWU7Ci0gICBpbnQgKnZhbHVlOwotICAgaW50IGZs YWdzOwotIH0gYm9vbGVhbl92YXJsaXN0IFtdID0gewotQEAgLTEzODQsOSArMTQyNCwxMiBAQCBz dGF0aWMgc3RydWN0IHsKLSAgIHsgImJsaW5rLW1hdGNoaW5nLXBhcmVuIiwJJnJsX2JsaW5rX21h dGNoaW5nX3BhcmVuLAlWX1NQRUNJQUwgfSwKLSAgIHsgImJ5dGUtb3JpZW50ZWQiLAkJJnJsX2J5 dGVfb3JpZW50ZWQsCQkwIH0sCi0gICB7ICJjb21wbGV0aW9uLWlnbm9yZS1jYXNlIiwJJl9ybF9j b21wbGV0aW9uX2Nhc2VfZm9sZCwJMCB9LAotKyAgeyAiY29tcGxldGlvbi1tYXAtY2FzZSIsCSZf cmxfY29tcGxldGlvbl9jYXNlX21hcCwJMCB9LAotICAgeyAiY29udmVydC1tZXRhIiwJCSZfcmxf Y29udmVydF9tZXRhX2NoYXJzX3RvX2FzY2lpLCAwIH0sCi0gICB7ICJkaXNhYmxlLWNvbXBsZXRp b24iLAkmcmxfaW5oaWJpdF9jb21wbGV0aW9uLAkJMCB9LAotKyAgeyAiZWNoby1jb250cm9sLWNo YXJhY3RlcnMiLAkmX3JsX2VjaG9fY29udHJvbF9jaGFycywJMCB9LAotICAgeyAiZW5hYmxlLWtl eXBhZCIsCQkmX3JsX2VuYWJsZV9rZXlwYWQsCQkwIH0sCi0rICB7ICJlbmFibGUtbWV0YS1rZXki LAkJJl9ybF9lbmFibGVfbWV0YSwJCTAgfSwKLSAgIHsgImV4cGFuZC10aWxkZSIsCQkmcmxfY29t cGxldGVfd2l0aF90aWxkZV9leHBhbnNpb24sIDAgfSwKLSAgIHsgImhpc3RvcnktcHJlc2VydmUt cG9pbnQiLAkmX3JsX2hpc3RvcnlfcHJlc2VydmVfcG9pbnQsCTAgfSwKLSAgIHsgImhvcml6b250 YWwtc2Nyb2xsLW1vZGUiLAkmX3JsX2hvcml6b250YWxfc2Nyb2xsX21vZGUsCTAgfSwKLUBAIC0x Mzk1LDE3ICsxNDM4LDIwIEBAIHN0YXRpYyBzdHJ1Y3QgewotICAgeyAibWFyay1tb2RpZmllZC1s aW5lcyIsCSZfcmxfbWFya19tb2RpZmllZF9saW5lcywJMCB9LAotICAgeyAibWFyay1zeW1saW5r ZWQtZGlyZWN0b3JpZXMiLCAmX3JsX2NvbXBsZXRlX21hcmtfc3ltbGlua19kaXJzLCAwIH0sCi0g ICB7ICJtYXRjaC1oaWRkZW4tZmlsZXMiLAkmX3JsX21hdGNoX2hpZGRlbl9maWxlcywJMCB9LAot KyAgeyAibWVudS1jb21wbGV0ZS1kaXNwbGF5LXByZWZpeCIsICZfcmxfbWVudV9jb21wbGV0ZV9w cmVmaXhfZmlyc3QsIDAgfSwKLSAgIHsgIm1ldGEtZmxhZyIsCQkmX3JsX21ldGFfZmxhZywJCQkw IH0sCi0gICB7ICJvdXRwdXQtbWV0YSIsCQkmX3JsX291dHB1dF9tZXRhX2NoYXJzLAkJMCB9LAot ICAgeyAicGFnZS1jb21wbGV0aW9ucyIsCQkmX3JsX3BhZ2VfY29tcGxldGlvbnMsCQkwIH0sCi0g ICB7ICJwcmVmZXItdmlzaWJsZS1iZWxsIiwJJl9ybF9wcmVmZXJfdmlzaWJsZV9iZWxsLAlWX1NQ RUNJQUwgfSwKLSAgIHsgInByaW50LWNvbXBsZXRpb25zLWhvcml6b250YWxseSIsICZfcmxfcHJp bnRfY29tcGxldGlvbnNfaG9yaXpvbnRhbGx5LCAwIH0sCi0rICB7ICJyZXZlcnQtYWxsLWF0LW5l d2xpbmUiLAkmX3JsX3JldmVydF9hbGxfYXRfbmV3bGluZSwJMCB9LAotICAgeyAic2hvdy1hbGwt aWYtYW1iaWd1b3VzIiwJJl9ybF9jb21wbGV0ZV9zaG93X2FsbCwJCTAgfSwKLSAgIHsgInNob3ct YWxsLWlmLXVubW9kaWZpZWQiLAkmX3JsX2NvbXBsZXRlX3Nob3dfdW5tb2RpZmllZCwJMCB9LAot KyAgeyAic2tpcC1jb21wbGV0ZWQtdGV4dCIsCSZfcmxfc2tpcF9jb21wbGV0ZWRfdGV4dCwJMCB9 LAotICNpZiBkZWZpbmVkIChWSVNJQkxFX1NUQVRTKQotICAgeyAidmlzaWJsZS1zdGF0cyIsCQkm cmxfdmlzaWJsZV9zdGF0cywJCTAgfSwKLSAjZW5kaWYgLyogVklTSUJMRV9TVEFUUyAqLwotLSAg eyAoY2hhciAqKU5VTEwsIChpbnQgKilOVUxMIH0KLSsgIHsgKGNoYXIgKilOVUxMLCAoaW50ICop TlVMTCwgMCB9Ci0gfTsKLSAKLSBzdGF0aWMgaW50Ci1AQCAtMTQ1OCwyMyArMTUwNCwyOSBAQCB0 eXBlZGVmIGludCBfcmxfc3ZfZnVuY190IFBBUkFNUygoY29uc3QgCi0gLyogRm9yd2FyZCBkZWNs YXJhdGlvbnMgKi8KLSBzdGF0aWMgaW50IHN2X2JlbGxfc3R5bGUgUEFSQU1TKChjb25zdCBjaGFy ICopKTsKLSBzdGF0aWMgaW50IHN2X2NvbWJlZ2luIFBBUkFNUygoY29uc3QgY2hhciAqKSk7Ci0r c3RhdGljIGludCBzdl9kaXNwcHJlZml4IFBBUkFNUygoY29uc3QgY2hhciAqKSk7Ci0gc3RhdGlj IGludCBzdl9jb21wcXVlcnkgUEFSQU1TKChjb25zdCBjaGFyICopKTsKLStzdGF0aWMgaW50IHN2 X2NvbXB3aWR0aCBQQVJBTVMoKGNvbnN0IGNoYXIgKikpOwotIHN0YXRpYyBpbnQgc3ZfZWRpdG1v ZGUgUEFSQU1TKChjb25zdCBjaGFyICopKTsKLStzdGF0aWMgaW50IHN2X2hpc3RzaXplIFBBUkFN UygoY29uc3QgY2hhciAqKSk7Ci0gc3RhdGljIGludCBzdl9pc3JjaHRlcm0gUEFSQU1TKChjb25z dCBjaGFyICopKTsKLSBzdGF0aWMgaW50IHN2X2tleW1hcCBQQVJBTVMoKGNvbnN0IGNoYXIgKikp OwotIAotLXN0YXRpYyBzdHJ1Y3QgewotLSAgY29uc3QgY2hhciAqbmFtZTsKLStzdGF0aWMgY29u c3Qgc3RydWN0IHsKLSsgIGNvbnN0IGNoYXIgKiBjb25zdCBuYW1lOwotICAgaW50IGZsYWdzOwot ICAgX3JsX3N2X2Z1bmNfdCAqc2V0X2Z1bmM7Ci0gfSBzdHJpbmdfdmFybGlzdFtdID0gewotICAg eyAiYmVsbC1zdHlsZSIsCVZfU1RSSU5HLAlzdl9iZWxsX3N0eWxlIH0sCi0gICB7ICJjb21tZW50 LWJlZ2luIiwJVl9TVFJJTkcsCXN2X2NvbWJlZ2luIH0sCi0rICB7ICJjb21wbGV0aW9uLWRpc3Bs YXktd2lkdGgiLCBWX0lOVCwJc3ZfY29tcHdpZHRoIH0sCi0rICB7ICJjb21wbGV0aW9uLXByZWZp eC1kaXNwbGF5LWxlbmd0aCIsIFZfSU5ULAlzdl9kaXNwcHJlZml4IH0sCi0gICB7ICJjb21wbGV0 aW9uLXF1ZXJ5LWl0ZW1zIiwgVl9JTlQsCXN2X2NvbXBxdWVyeSB9LAotICAgeyAiZWRpdGluZy1t b2RlIiwJVl9TVFJJTkcsCXN2X2VkaXRtb2RlIH0sCi0rICB7ICJoaXN0b3J5LXNpemUiLAlWX0lO VCwJCXN2X2hpc3RzaXplIH0sCi0gICB7ICJpc2VhcmNoLXRlcm1pbmF0b3JzIiwgVl9TVFJJTkcs CXN2X2lzcmNodGVybSB9LAotICAgeyAia2V5bWFwIiwJCVZfU1RSSU5HLAlzdl9rZXltYXAgfSwK LS0gIHsgKGNoYXIgKilOVUxMLAkwIH0KLSsgIHsgKGNoYXIgKilOVUxMLAkwLCAoX3JsX3N2X2Z1 bmNfdCAqKTAgfQotIH07Ci0gCi0gc3RhdGljIGludAotQEAgLTE1MDYsOCArMTU1OCw2IEBAIHJs X3ZhcmlhYmxlX3ZhbHVlIChuYW1lKQotICAgICAgY29uc3QgY2hhciAqbmFtZTsKLSB7Ci0gICBy ZWdpc3RlciBpbnQgaTsKLS0gIGludAl2OwotLSAgY2hhciAqcmV0OwotIAotICAgLyogQ2hlY2sg Zm9yIHNpbXBsZSB2YXJpYWJsZXMgZmlyc3QuICovCi0gICBpID0gZmluZF9ib29sZWFuX3ZhciAo bmFtZSk7Ci1AQCAtMTU4NSw2ICsxNjM1LDIyIEBAIHN2X2NvbWJlZ2luICh2YWx1ZSkKLSB9Ci0g Ci0gc3RhdGljIGludAotK3N2X2Rpc3BwcmVmaXggKHZhbHVlKQotKyAgICAgY29uc3QgY2hhciAq dmFsdWU7Ci0rewotKyAgaW50IG52YWwgPSAwOwotKwotKyAgaWYgKHZhbHVlICYmICp2YWx1ZSkK LSsgICAgewotKyAgICAgIG52YWwgPSBhdG9pICh2YWx1ZSk7Ci0rICAgICAgaWYgKG52YWwgPCAw KQotKwludmFsID0gMDsKLSsgICAgfQotKyAgX3JsX2NvbXBsZXRpb25fcHJlZml4X2Rpc3BsYXlf bGVuZ3RoID0gbnZhbDsKLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50Ci0gc3ZfY29t cHF1ZXJ5ICh2YWx1ZSkKLSAgICAgIGNvbnN0IGNoYXIgKnZhbHVlOwotIHsKLUBAIC0xNjAxLDYg KzE2NjcsMzUgQEAgc3ZfY29tcHF1ZXJ5ICh2YWx1ZSkKLSB9Ci0gCi0gc3RhdGljIGludAotK3N2 X2NvbXB3aWR0aCAodmFsdWUpCi0rICAgICBjb25zdCBjaGFyICp2YWx1ZTsKLSt7Ci0rICBpbnQg bnZhbCA9IC0xOwotKwotKyAgaWYgKHZhbHVlICYmICp2YWx1ZSkKLSsgICAgbnZhbCA9IGF0b2kg KHZhbHVlKTsKLSsKLSsgIF9ybF9jb21wbGV0aW9uX2NvbHVtbnMgPSBudmFsOwotKyAgcmV0dXJu IDA7Ci0rfQotKwotK3N0YXRpYyBpbnQKLStzdl9oaXN0c2l6ZSAodmFsdWUpCi0rICAgICBjb25z dCBjaGFyICp2YWx1ZTsKLSt7Ci0rICBpbnQgbnZhbCA9IDUwMDsKLSsKLSsgIGlmICh2YWx1ZSAm JiAqdmFsdWUpCi0rICAgIHsKLSsgICAgICBudmFsID0gYXRvaSAodmFsdWUpOwotKyAgICAgIGlm IChudmFsIDwgMCkKLSsJcmV0dXJuIDE7Ci0rICAgIH0KLSsgIHN0aWZsZV9oaXN0b3J5IChudmFs KTsKLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50Ci0gc3Zfa2V5bWFwICh2YWx1ZSkK LSAgICAgIGNvbnN0IGNoYXIgKnZhbHVlOwotIHsKLUBAIC0xNjY0LDcgKzE3NTksNyBAQCBzdl9p c3JjaHRlcm0gKHZhbHVlKQotICAgcmxfdHJhbnNsYXRlX2tleXNlcSAodiArIGJlZywgX3JsX2lz ZWFyY2hfdGVybWluYXRvcnMsICZlbmQpOwotICAgX3JsX2lzZWFyY2hfdGVybWluYXRvcnNbZW5k XSA9ICdcMCc7Ci0gCi0tICBmcmVlICh2KTsKLSsgIHhmcmVlICh2KTsKLSAgIHJldHVybiAwOwot IH0KLSAgICAgICAKLUBAIC0xNjcyLDExICsxNzY3LDExIEBAIHN2X2lzcmNodGVybSAodmFsdWUp Ci0gICAgRm9yIGV4YW1wbGUsIGBTcGFjZScgcmV0dXJucyAnICcuICovCi0gCi0gdHlwZWRlZiBz dHJ1Y3QgewotLSAgY29uc3QgY2hhciAqbmFtZTsKLSsgIGNvbnN0IGNoYXIgKiBjb25zdCBuYW1l OwotICAgaW50IHZhbHVlOwotIH0gYXNzb2NfbGlzdDsKLSAKLS1zdGF0aWMgYXNzb2NfbGlzdCBu YW1lX2tleV9hbGlzdFtdID0gewotK3N0YXRpYyBjb25zdCBhc3NvY19saXN0IG5hbWVfa2V5X2Fs aXN0W10gPSB7Ci0gICB7ICJERUwiLCAweDdmIH0sCi0gICB7ICJFU0MiLCAnXDAzMycgfSwKLSAg IHsgIkVzY2FwZSIsICdcMDMzJyB9LAotQEAgLTE3MDUsOCArMTgwMCw4IEBAIGdsZWFuX2tleV9m cm9tX25hbWUgKG5hbWUpCi0gfQotIAotIC8qIEF1eGlsaWFyeSBmdW5jdGlvbnMgdG8gbWFuYWdl IGtleW1hcHMuICovCi0tc3RhdGljIHN0cnVjdCB7Ci0tICBjb25zdCBjaGFyICpuYW1lOwotK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgewotKyAgY29uc3QgY2hhciAqIGNvbnN0IG5hbWU7Ci0gICBLZXlt YXAgbWFwOwotIH0ga2V5bWFwX25hbWVzW10gPSB7Ci0gICB7ICJlbWFjcyIsIGVtYWNzX3N0YW5k YXJkX2tleW1hcCB9LAotQEAgLTE4MDksNyArMTkwNCw3IEBAIHJsX2xpc3RfZnVubWFwX25hbWVz ICgpCi0gICBmb3IgKGkgPSAwOyBmdW5tYXBfbmFtZXNbaV07IGkrKykKLSAgICAgZnByaW50ZiAo cmxfb3V0c3RyZWFtLCAiJXNcbiIsIGZ1bm1hcF9uYW1lc1tpXSk7Ci0gCi0tICBmcmVlIChmdW5t YXBfbmFtZXMpOwotKyAgeGZyZWUgKGZ1bm1hcF9uYW1lcyk7Ci0gfQotIAotIHN0YXRpYyBjaGFy ICoKLUBAIC0xOTQ4LDEyICsyMDQzLDE2IEBAIHJsX2ludm9raW5nX2tleXNlcXNfaW5fbWFwIChm dW5jdGlvbiwgbWEKLSAJCWNoYXIgKmtleW5hbWUgPSAoY2hhciAqKXhtYWxsb2MgKDYgKyBzdHJs ZW4gKHNlcXNbaV0pKTsKLSAKLSAJCWlmIChrZXkgPT0gRVNDKQotLSNpZiAwCi0tCQkgIHNwcmlu dGYgKGtleW5hbWUsICJcXGUiKTsKLS0jZWxzZQotLQkJLyogWFhYIC0gZXhwZXJpbWVudGFsICov Ci0tCQkgIHNwcmludGYgKGtleW5hbWUsICJcXE0tIik7Ci0tI2VuZGlmCi0rCQkgIHsKLSsJCSAg ICAvKiBJZiBFU0MgaXMgdGhlIG1ldGEgcHJlZml4IGFuZCB3ZSdyZSBjb252ZXJ0aW5nIGNoYXJz Ci0rCQkgICAgICAgd2l0aCB0aGUgZWlnaHRoIGJpdCBzZXQgdG8gRVNDLXByZWZpeGVkIHNlcXVl bmNlcywgdGhlbgotKwkJICAgICAgIHdlIGNhbiB1c2UgXE0tLiAgT3RoZXJ3aXNlIHdlIG5lZWQg dG8gdXNlIHRoZSBzZXF1ZW5jZQotKwkJICAgICAgIGZvciBFU0MuICovCi0rCQkgICAgaWYgKF9y bF9jb252ZXJ0X21ldGFfY2hhcnNfdG9fYXNjaWkgJiYgbWFwW0VTQ10udHlwZSA9PSBJU0tNQVAp Ci0rCQkgICAgICBzcHJpbnRmIChrZXluYW1lLCAiXFxNLSIpOwotKwkJICAgIGVsc2UKLSsJCSAg ICAgIHNwcmludGYgKGtleW5hbWUsICJcXGUiKTsKLSsJCSAgfQotIAkJZWxzZSBpZiAoQ1RSTF9D SEFSIChrZXkpKQotIAkJICBzcHJpbnRmIChrZXluYW1lLCAiXFxDLSVjIiwgX3JsX3RvX2xvd2Vy IChVTkNUUkwgKGtleSkpKTsKLSAJCWVsc2UgaWYgKGtleSA9PSBSVUJPVVQpCi1AQCAtMTk3MSw3 ICsyMDcwLDcgQEAgcmxfaW52b2tpbmdfa2V5c2Vxc19pbl9tYXAgKGZ1bmN0aW9uLCBtYQotIAkJ ICB9Ci0gCQkKLSAJCXN0cmNhdCAoa2V5bmFtZSwgc2Vxc1tpXSk7Ci0tCQlmcmVlIChzZXFzW2ld KTsKLSsJCXhmcmVlIChzZXFzW2ldKTsKLSAKLSAJCWlmIChyZXN1bHRfaW5kZXggKyAyID4gcmVz dWx0X3NpemUpCi0gCQkgIHsKLUBAIC0xOTgzLDcgKzIwODIsNyBAQCBybF9pbnZva2luZ19rZXlz ZXFzX2luX21hcCAoZnVuY3Rpb24sIG1hCi0gCQlyZXN1bHRbcmVzdWx0X2luZGV4XSA9IChjaGFy ICopTlVMTDsKLSAJICAgICAgfQotIAotLQkgICAgZnJlZSAoc2Vxcyk7Ci0rCSAgICB4ZnJlZSAo c2Vxcyk7Ci0gCSAgfQotIAkgIGJyZWFrOwotIAl9Ci1AQCAtMjAzNSwxMCArMjEzNCwxMCBAQCBy bF9mdW5jdGlvbl9kdW1wZXIgKHByaW50X3JlYWRhYmx5KQotIAkJewotIAkJICBmcHJpbnRmIChy bF9vdXRzdHJlYW0sICJcIiVzXCI6ICVzXG4iLAotIAkJCSAgIGludm9rZXJzW2pdLCBuYW1lKTsK LS0JCSAgZnJlZSAoaW52b2tlcnNbal0pOwotKwkJICB4ZnJlZSAoaW52b2tlcnNbal0pOwotIAkJ fQotIAotLQkgICAgICBmcmVlIChpbnZva2Vycyk7Ci0rCSAgICAgIHhmcmVlIChpbnZva2Vycyk7 Ci0gCSAgICB9Ci0gCX0KLSAgICAgICBlbHNlCi1AQCAtMjA2Miw5ICsyMTYxLDkgQEAgcmxfZnVu Y3Rpb25fZHVtcGVyIChwcmludF9yZWFkYWJseSkKLSAJCWZwcmludGYgKHJsX291dHN0cmVhbSwg Ii4uLlxuIik7Ci0gCi0gCSAgICAgIGZvciAoaiA9IDA7IGludm9rZXJzW2pdOyBqKyspCi0tCQlm cmVlIChpbnZva2Vyc1tqXSk7Ci0rCQl4ZnJlZSAoaW52b2tlcnNbal0pOwotIAotLQkgICAgICBm cmVlIChpbnZva2Vycyk7Ci0rCSAgICAgIHhmcmVlIChpbnZva2Vycyk7Ci0gCSAgICB9Ci0gCX0K LSAgICAgfQotQEAgLTIxMTEsOCArMjIxMCw4IEBAIF9ybF9tYWNyb19kdW1wZXJfaW50ZXJuYWwg KHByaW50X3JlYWRhYmwKLSAJICAgIGZwcmludGYgKHJsX291dHN0cmVhbSwgIiVzJXMgb3V0cHV0 cyAlc1xuIiwgcHJlZml4ID8gcHJlZml4IDogIiIsCi0gCQkJCQkJCWtleW5hbWUsCi0gCQkJCQkJ CW91dCA/IG91dCA6ICIiKTsKLS0JICBmcmVlIChrZXluYW1lKTsKLS0JICBmcmVlIChvdXQpOwot KwkgIHhmcmVlIChrZXluYW1lKTsKLSsJICB4ZnJlZSAob3V0KTsKLSAJICBicmVhazsKLSAJY2Fz ZSBJU0ZVTkM6Ci0gCSAgYnJlYWs7Ci1AQCAtMjEzNSwxMyArMjIzNCwxMyBAQCBfcmxfbWFjcm9f ZHVtcGVyX2ludGVybmFsIChwcmludF9yZWFkYWJsCi0gCQkgIG91dCA9IChjaGFyICopeG1hbGxv YyAoc3RybGVuIChrZXluYW1lKSArIHByZWZpeF9sZW4gKyAxKTsKLSAJCSAgc3RyY3B5IChvdXQs IHByZWZpeCk7Ci0gCQkgIHN0cmNweSAob3V0ICsgcHJlZml4X2xlbiwga2V5bmFtZSk7Ci0tCQkg IGZyZWUgKGtleW5hbWUpOwotKwkJICB4ZnJlZSAoa2V5bmFtZSk7Ci0gCQkgIGtleW5hbWUgPSBv dXQ7Ci0gCQl9Ci0gCSAgICB9Ci0gCi0gCSAgX3JsX21hY3JvX2R1bXBlcl9pbnRlcm5hbCAocHJp bnRfcmVhZGFibHksIEZVTkNUSU9OX1RPX0tFWU1BUCAobWFwLCBrZXkpLCBrZXluYW1lKTsKLS0J ICBmcmVlIChrZXluYW1lKTsKLSsJICB4ZnJlZSAoa2V5bmFtZSk7Ci0gCSAgYnJlYWs7Ci0gCX0K LSAgICAgfQotQEAgLTIxNzEsNyArMjI3MCw2IEBAIF9ybF9nZXRfc3RyaW5nX3ZhcmlhYmxlX3Zh bHVlIChuYW1lKQotIHsKLSAgIHN0YXRpYyBjaGFyIG51bWJ1ZlszMl07Ci0gICBjaGFyICpyZXQ7 Ci0tICBpbnQgbjsKLSAKLSAgIGlmIChfcmxfc3RyaWNtcCAobmFtZSwgImJlbGwtc3R5bGUiKSA9 PSAwKQotICAgICB7Ci1AQCAtMjE4OCw2ICsyMjg2LDE2IEBAIF9ybF9nZXRfc3RyaW5nX3Zhcmlh YmxlX3ZhbHVlIChuYW1lKQotICAgICB9Ci0gICBlbHNlIGlmIChfcmxfc3RyaWNtcCAobmFtZSwg ImNvbW1lbnQtYmVnaW4iKSA9PSAwKQotICAgICByZXR1cm4gKF9ybF9jb21tZW50X2JlZ2luID8g X3JsX2NvbW1lbnRfYmVnaW4gOiBSTF9DT01NRU5UX0JFR0lOX0RFRkFVTFQpOwotKyAgZWxzZSBp ZiAoX3JsX3N0cmljbXAgKG5hbWUsICJjb21wbGV0aW9uLWRpc3BsYXktd2lkdGgiKSA9PSAwKQot KyAgICB7Ci0rICAgICAgc3ByaW50ZiAobnVtYnVmLCAiJWQiLCBfcmxfY29tcGxldGlvbl9jb2x1 bW5zKTsKLSsgICAgICByZXR1cm4gKG51bWJ1Zik7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKF9ybF9z dHJpY21wIChuYW1lLCAiY29tcGxldGlvbi1wcmVmaXgtZGlzcGxheS1sZW5ndGgiKSA9PSAwKQot KyAgICB7Ci0rICAgICAgc3ByaW50ZiAobnVtYnVmLCAiJWQiLCBfcmxfY29tcGxldGlvbl9wcmVm aXhfZGlzcGxheV9sZW5ndGgpOwotKyAgICAgIHJldHVybiAobnVtYnVmKTsKLSsgICAgfQotICAg ZWxzZSBpZiAoX3JsX3N0cmljbXAgKG5hbWUsICJjb21wbGV0aW9uLXF1ZXJ5LWl0ZW1zIikgPT0g MCkKLSAgICAgewotICAgICAgIHNwcmludGYgKG51bWJ1ZiwgIiVkIiwgcmxfY29tcGxldGlvbl9x dWVyeV9pdGVtcyk7Ci1AQCAtMjE5NSw2ICsyMzAzLDExIEBAIF9ybF9nZXRfc3RyaW5nX3Zhcmlh YmxlX3ZhbHVlIChuYW1lKQotICAgICB9Ci0gICBlbHNlIGlmIChfcmxfc3RyaWNtcCAobmFtZSwg ImVkaXRpbmctbW9kZSIpID09IDApCi0gICAgIHJldHVybiAocmxfZ2V0X2tleW1hcF9uYW1lX2Zy b21fZWRpdF9tb2RlICgpKTsKLSsgIGVsc2UgaWYgKF9ybF9zdHJpY21wIChuYW1lLCAiaGlzdG9y eS1zaXplIikgPT0gMCkKLSsgICAgewotKyAgICAgIHNwcmludGYgKG51bWJ1ZiwgIiVkIiwgaGlz dG9yeV9pc19zdGlmbGVkKCkgPyBoaXN0b3J5X21heF9lbnRyaWVzIDogMCk7Ci0rICAgICAgcmV0 dXJuIChudW1idWYpOwotKyAgICB9Ci0gICBlbHNlIGlmIChfcmxfc3RyaWNtcCAobmFtZSwgImlz ZWFyY2gtdGVybWluYXRvcnMiKSA9PSAwKQotICAgICB7Ci0gICAgICAgaWYgKF9ybF9pc2VhcmNo X3Rlcm1pbmF0b3JzID09IDApCi1AQCAtMjIwMyw3ICsyMzE2LDcgQEAgX3JsX2dldF9zdHJpbmdf dmFyaWFibGVfdmFsdWUgKG5hbWUpCi0gICAgICAgaWYgKHJldCkKLSAJewotIAkgIHN0cm5jcHkg KG51bWJ1ZiwgcmV0LCBzaXplb2YgKG51bWJ1ZikgLSAxKTsKLS0JICBmcmVlIChyZXQpOwotKwkg IHhmcmVlIChyZXQpOwotIAkgIG51bWJ1ZltzaXplb2YobnVtYnVmKSAtIDFdID0gJ1wwJzsKLSAJ fQotICAgICAgIGVsc2UKLUBAIC0yMjY3LDggKzIzODAsOCBAQCBybF9kdW1wX3ZhcmlhYmxlcyAo Y291bnQsIGtleSkKLSAvKiBSZXR1cm4gbm9uLXplcm8gaWYgYW55IG1lbWJlcnMgb2YgQVJSQVkg YXJlIGEgc3Vic3RyaW5nIGluIFNUUklORy4gKi8KLSBzdGF0aWMgaW50Ci0gc3Vic3RyaW5nX21l bWJlcl9vZl9hcnJheSAoc3RyaW5nLCBhcnJheSkKLS0gICAgIGNoYXIgKnN0cmluZzsKLS0gICAg IGNvbnN0IGNoYXIgKiphcnJheTsKLSsgICAgIGNvbnN0IGNoYXIgKnN0cmluZzsKLSsgICAgIGNv bnN0IGNoYXIgKiBjb25zdCAqYXJyYXk7Ci0gewotICAgd2hpbGUgKCphcnJheSkKLSAgICAgewot SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvY2FsbGJhY2suYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9jYWxsYmFjay5jCTIwMTEt MDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9y ZWFkbGluZS9jYWxsYmFjay5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1A QCAtMSwyNCArMSwyNCBAQAotIC8qIGNhbGxiYWNrLmMgLS0gZnVuY3Rpb25zIHRvIHVzZSByZWFk bGluZSBhcyBhbiBYIGBjYWxsYmFjaycgbWVjaGFuaXNtLiAqLwotIAotLS8qIENvcHlyaWdodCAo QykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdo dCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZv cgotLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBo aXN0b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGlu ZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9m IHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotIAotLSAg IFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlz IGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdl bmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91 IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVh ZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8K LSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05G SUdfSCkKLUBAIC04Nyw2ICs4Nyw3IEBAIF9ybF9jYWxsYmFja19uZXdsaW5lICgpCi0gICAgIH0K LSAKLSAgIHJlYWRsaW5lX2ludGVybmFsX3NldHVwICgpOwotKyAgUkxfQ0hFQ0tfU0lHTkFMUyAo KTsKLSB9Ci0gCi0gLyogSW5zdGFsbCBhIHJlYWRsaW5lIGhhbmRsZXIsIHNldCB1cCB0aGUgdGVy bWluYWwsIGFuZCBpc3N1ZSB0aGUgcHJvbXB0LiAqLwotQEAgLTExMSw4NyArMTEyLDEwMSBAQCBy bF9jYWxsYmFja19yZWFkX2NoYXIgKCkKLSAKLSAgIGlmIChybF9saW5lZnVuYyA9PSBOVUxMKQot ICAgICB7Ci0tICAgICAgZnByaW50ZiAoc3RkZXJyLCAicmVhZGxpbmU6IHJlYWRsaW5lX2NhbGxi YWNrX3JlYWRfY2hhcigpIGNhbGxlZCB3aXRoIG5vIGhhbmRsZXIhXHJcbiIpOwotKyAgICAgIF9y bF9lcnJtc2cgKCJyZWFkbGluZV9jYWxsYmFja19yZWFkX2NoYXIoKSBjYWxsZWQgd2l0aCBubyBo YW5kbGVyISIpOwotICAgICAgIGFib3J0ICgpOwotICAgICB9Ci0gCi0tICBtZW1jcHkgKCh2b2lk ICopb2xldmVsLCAodm9pZCAqKXJlYWRsaW5lX3RvcF9sZXZlbCwgc2l6ZW9mIChwcm9jZW52X3Qp KTsKLS0gIGpjb2RlID0gc2V0am1wIChyZWFkbGluZV90b3BfbGV2ZWwpOwotKyAgbWVtY3B5ICgo dm9pZCAqKW9sZXZlbCwgKHZvaWQgKilfcmxfdG9wX2xldmVsLCBzaXplb2YgKHByb2NlbnZfdCkp OwotKyAgamNvZGUgPSBzZXRqbXAgKF9ybF90b3BfbGV2ZWwpOwotICAgaWYgKGpjb2RlKQotICAg ICB7Ci0gICAgICAgKCpybF9yZWRpc3BsYXlfZnVuY3Rpb24pICgpOwotICAgICAgIF9ybF93YW50 X3JlZGlzcGxheSA9IDA7Ci0tICAgICAgbWVtY3B5ICgodm9pZCAqKXJlYWRsaW5lX3RvcF9sZXZl bCwgKHZvaWQgKilvbGV2ZWwsIHNpemVvZiAocHJvY2Vudl90KSk7Ci0rICAgICAgbWVtY3B5ICgo dm9pZCAqKV9ybF90b3BfbGV2ZWwsICh2b2lkICopb2xldmVsLCBzaXplb2YgKHByb2NlbnZfdCkp OwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSAgaWYgIChSTF9JU1NUQVRFIChSTF9TVEFU RV9JU0VBUkNIKSkKLSsgIGRvCi0gICAgIHsKLS0gICAgICBlb2YgPSBfcmxfaXNlYXJjaF9jYWxs YmFjayAoX3JsX2lzY3h0KTsKLS0gICAgICBpZiAoZW9mID09IDAgJiYgKFJMX0lTU1RBVEUgKFJM X1NUQVRFX0lTRUFSQ0gpID09IDApICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRFX0lOUFVUUEVORElO RykpCi0tCXJsX2NhbGxiYWNrX3JlYWRfY2hhciAoKTsKLSsgICAgICBSTF9DSEVDS19TSUdOQUxT ICgpOwotKyAgICAgIGlmICAoUkxfSVNTVEFURSAoUkxfU1RBVEVfSVNFQVJDSCkpCi0rCXsKLSsJ ICBlb2YgPSBfcmxfaXNlYXJjaF9jYWxsYmFjayAoX3JsX2lzY3h0KTsKLSsJICBpZiAoZW9mID09 IDAgJiYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0lTRUFSQ0gpID09IDApICYmIFJMX0lTU1RBVEUg KFJMX1NUQVRFX0lOUFVUUEVORElORykpCi0rCSAgICBybF9jYWxsYmFja19yZWFkX2NoYXIgKCk7 Ci0gCi0tICAgICAgcmV0dXJuOwotLSAgICB9Ci0tICBlbHNlIGlmICAoUkxfSVNTVEFURSAoUkxf U1RBVEVfTlNFQVJDSCkpCi0tICAgIHsKLS0gICAgICBlb2YgPSBfcmxfbnNlYXJjaF9jYWxsYmFj ayAoX3JsX25zY3h0KTsKLS0gICAgICByZXR1cm47Ci0tICAgIH0KLS0gIGVsc2UgaWYgKFJMX0lT U1RBVEUgKFJMX1NUQVRFX05VTUVSSUNBUkcpKQotLSAgICB7Ci0tICAgICAgZW9mID0gX3JsX2Fy Z19jYWxsYmFjayAoX3JsX2FyZ2N4dCk7Ci0tICAgICAgaWYgKGVvZiA9PSAwICYmIChSTF9JU1NU QVRFIChSTF9TVEFURV9OVU1FUklDQVJHKSA9PSAwKSAmJiBSTF9JU1NUQVRFIChSTF9TVEFURV9J TlBVVFBFTkRJTkcpKQotLQlybF9jYWxsYmFja19yZWFkX2NoYXIgKCk7Ci0tICAgICAgLyogWFhY IC0gdGhpcyBzaG91bGQgaGFuZGxlIF9ybF9sYXN0X2NvbW1hbmRfd2FzX2tpbGwgYmV0dGVyICov Ci0tICAgICAgZWxzZSBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FSRykgPT0gMCkK LS0JX3JsX2ludGVybmFsX2NoYXJfY2xlYW51cCAoKTsKLSsJICByZXR1cm47Ci0rCX0KLSsgICAg ICBlbHNlIGlmICAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTlNFQVJDSCkpCi0rCXsKLSsJICBlb2Yg PSBfcmxfbnNlYXJjaF9jYWxsYmFjayAoX3JsX25zY3h0KTsKLSsJICByZXR1cm47Ci0rCX0KLSsj aWYgZGVmaW5lZCAoVklfTU9ERSkKLSsgICAgICBlbHNlIGlmIChSTF9JU1NUQVRFIChSTF9TVEFU RV9WSU1PVElPTikpCi0rCXsKLSsJICBlb2YgPSBfcmxfdmlfZG9tb3ZlX2NhbGxiYWNrIChfcmxf dmltdmN4dCk7Ci0rCSAgLyogU2hvdWxkIGhhbmRsZSBldmVyeXRoaW5nLCBpbmNsdWRpbmcgY2xl YW51cCwgbnVtZXJpYyBhcmd1bWVudHMsCi0rCSAgICAgYW5kIHR1cm5pbmcgb2ZmIFJMX1NUQVRF X1ZJTU9USU9OICovCi0rCSAgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX05VTUVSSUNBUkcpID09 IDApCi0rCSAgICBfcmxfaW50ZXJuYWxfY2hhcl9jbGVhbnVwICgpOwotIAotLSAgICAgIHJldHVy bjsKLS0gICAgfQotLSAgZWxzZSBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTVVMVElLRVkpKQot LSAgICB7Ci0tICAgICAgZW9mID0gX3JsX2Rpc3BhdGNoX2NhbGxiYWNrIChfcmxfa3NjeHQpOwkv KiBGb3Igbm93ICovCi0tICAgICAgd2hpbGUgKChlb2YgPT0gLTEgfHwgZW9mID09IC0yKSAmJiBS TF9JU1NUQVRFIChSTF9TVEFURV9NVUxUSUtFWSkgJiYgX3JsX2tzY3h0ICYmIChfcmxfa3NjeHQt PmZsYWdzICYgS1NFUV9ESVNQQVRDSEVEKSkKLS0JZW9mID0gX3JsX2Rpc3BhdGNoX2NhbGxiYWNr IChfcmxfa3NjeHQpOwotLSAgICAgIGlmIChSTF9JU1NUQVRFIChSTF9TVEFURV9NVUxUSUtFWSkg PT0gMCkKLSsJICByZXR1cm47Ci0rCX0KLSsjZW5kaWYKLSsgICAgICBlbHNlIGlmIChSTF9JU1NU QVRFIChSTF9TVEFURV9OVU1FUklDQVJHKSkKLSsJewotKwkgIGVvZiA9IF9ybF9hcmdfY2FsbGJh Y2sgKF9ybF9hcmdjeHQpOwotKwkgIGlmIChlb2YgPT0gMCAmJiAoUkxfSVNTVEFURSAoUkxfU1RB VEVfTlVNRVJJQ0FSRykgPT0gMCkgJiYgUkxfSVNTVEFURSAoUkxfU1RBVEVfSU5QVVRQRU5ESU5H KSkKLSsJICAgIHJsX2NhbGxiYWNrX3JlYWRfY2hhciAoKTsKLSsJICAvKiBYWFggLSB0aGlzIHNo b3VsZCBoYW5kbGUgX3JsX2xhc3RfY29tbWFuZF93YXNfa2lsbCBiZXR0ZXIgKi8KLSsJICBlbHNl IGlmIChSTF9JU1NUQVRFIChSTF9TVEFURV9OVU1FUklDQVJHKSA9PSAwKQotKwkgICAgX3JsX2lu dGVybmFsX2NoYXJfY2xlYW51cCAoKTsKLSsKLSsJICByZXR1cm47Ci0rCX0KLSsgICAgICBlbHNl IGlmIChSTF9JU1NUQVRFIChSTF9TVEFURV9NVUxUSUtFWSkpCi0gCXsKLS0JICBfcmxfaW50ZXJu YWxfY2hhcl9jbGVhbnVwICgpOwotLQkgIF9ybF93YW50X3JlZGlzcGxheSA9IDE7Ci0rCSAgZW9m ID0gX3JsX2Rpc3BhdGNoX2NhbGxiYWNrIChfcmxfa3NjeHQpOwkvKiBGb3Igbm93ICovCi0rCSAg d2hpbGUgKChlb2YgPT0gLTEgfHwgZW9mID09IC0yKSAmJiBSTF9JU1NUQVRFIChSTF9TVEFURV9N VUxUSUtFWSkgJiYgX3JsX2tzY3h0ICYmIChfcmxfa3NjeHQtPmZsYWdzICYgS1NFUV9ESVNQQVRD SEVEKSkKLSsJICAgIGVvZiA9IF9ybF9kaXNwYXRjaF9jYWxsYmFjayAoX3JsX2tzY3h0KTsKLSsJ ICBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTVVMVElLRVkpID09IDApCi0rCSAgICB7Ci0rCSAg ICAgIF9ybF9pbnRlcm5hbF9jaGFyX2NsZWFudXAgKCk7Ci0rCSAgICAgIF9ybF93YW50X3JlZGlz cGxheSA9IDE7Ci0rCSAgICB9Ci0gCX0KLS0gICAgfQotLSAgZWxzZSBpZiAoX3JsX2NhbGxiYWNr X2Z1bmMpCi0tICAgIHsKLS0gICAgICAvKiBUaGlzIGFsbG93cyBmdW5jdGlvbnMgdGhhdCBzaW1w bHkgbmVlZCB0byByZWFkIGFuIGFkZGl0aW9uYWwgY2hhcmFjdGVyCi0tCSAobGlrZSBxdW90ZWQt aW5zZXJ0KSB0byByZWdpc3RlciBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGlucHV0IGlz Ci0tCSBhdmFpbGFibGUuICBfcmxfY2FsbGJhY2tfZGF0YSBpcyBzaW1wbHkgYSBwb2ludGVyIHRv IGEgc3RydWN0IHRoYXQgaGFzCi0tCSB0aGUgYXJndW1lbnQgY291bnQgb3JpZ2luYWxseSBwYXNz ZWQgdG8gdGhlIHJlZ2lzdGVyaW5nIGZ1bmN0aW9uIGFuZAotLQkgc3BhY2UgZm9yIGFueSBhZGRp dGlvbmFsIHBhcmFtZXRlcnMuICAqLwotLSAgICAgIGVvZiA9ICgqX3JsX2NhbGxiYWNrX2Z1bmMp IChfcmxfY2FsbGJhY2tfZGF0YSk7Ci0tICAgICAgLyogSWYgdGhlIGZ1bmN0aW9uIGBkZXJlZ2lz dGVycycgaXRzZWxmLCBtYWtlIHN1cmUgdGhlIGRhdGEgaXMgY2xlYW5lZAotLQkgdXAuICovCi0t ICAgICAgaWYgKF9ybF9jYWxsYmFja19mdW5jID09IDApCi0rICAgICAgZWxzZSBpZiAoX3JsX2Nh bGxiYWNrX2Z1bmMpCi0gCXsKLS0JICBpZiAoX3JsX2NhbGxiYWNrX2RhdGEpIAkKLSsJICAvKiBU aGlzIGFsbG93cyBmdW5jdGlvbnMgdGhhdCBzaW1wbHkgbmVlZCB0byByZWFkIGFuIGFkZGl0aW9u YWwKLSsJICAgICBjaGFyYWN0ZXIgKGxpa2UgcXVvdGVkLWluc2VydCkgdG8gcmVnaXN0ZXIgYSBm dW5jdGlvbiB0byBiZQotKwkgICAgIGNhbGxlZCB3aGVuIGlucHV0IGlzIGF2YWlsYWJsZS4gIF9y bF9jYWxsYmFja19kYXRhIGlzIHNpbXBseSBhCi0rCSAgICAgcG9pbnRlciB0byBhIHN0cnVjdCB0 aGF0IGhhcyB0aGUgYXJndW1lbnQgY291bnQgb3JpZ2luYWxseQotKwkgICAgIHBhc3NlZCB0byB0 aGUgcmVnaXN0ZXJpbmcgZnVuY3Rpb24gYW5kIHNwYWNlIGZvciBhbnkgYWRkaXRpb25hbAotKwkg ICAgIHBhcmFtZXRlcnMuICAqLwotKwkgIGVvZiA9ICgqX3JsX2NhbGxiYWNrX2Z1bmMpIChfcmxf Y2FsbGJhY2tfZGF0YSk7Ci0rCSAgLyogSWYgdGhlIGZ1bmN0aW9uIGBkZXJlZ2lzdGVycycgaXRz ZWxmLCBtYWtlIHN1cmUgdGhlIGRhdGEgaXMKLSsJICAgICBjbGVhbmVkIHVwLiAqLwotKwkgIGlm IChfcmxfY2FsbGJhY2tfZnVuYyA9PSAwKQotIAkgICAgewotLQkgICAgICBfcmxfY2FsbGJhY2tf ZGF0YV9kaXNwb3NlIChfcmxfY2FsbGJhY2tfZGF0YSk7Ci0tCSAgICAgIF9ybF9jYWxsYmFja19k YXRhID0gMDsKLSsJICAgICAgaWYgKF9ybF9jYWxsYmFja19kYXRhKSAJCi0rCQl7Ci0rCQkgIF9y bF9jYWxsYmFja19kYXRhX2Rpc3Bvc2UgKF9ybF9jYWxsYmFja19kYXRhKTsKLSsJCSAgX3JsX2Nh bGxiYWNrX2RhdGEgPSAwOwotKwkJfQotKwkgICAgICBfcmxfaW50ZXJuYWxfY2hhcl9jbGVhbnVw ICgpOwotIAkgICAgfQotLQkgIF9ybF9pbnRlcm5hbF9jaGFyX2NsZWFudXAgKCk7Ci0gCX0KLS0g ICAgfQotLSAgZWxzZQotLSAgICBlb2YgPSByZWFkbGluZV9pbnRlcm5hbF9jaGFyICgpOwotKyAg ICAgIGVsc2UKLSsJZW9mID0gcmVhZGxpbmVfaW50ZXJuYWxfY2hhciAoKTsKLSAKLS0gIGlmIChy bF9kb25lID09IDAgJiYgX3JsX3dhbnRfcmVkaXNwbGF5KQotLSAgICB7Ci0tICAgICAgKCpybF9y ZWRpc3BsYXlfZnVuY3Rpb24pICgpOwotLSAgICAgIF9ybF93YW50X3JlZGlzcGxheSA9IDA7Ci0t ICAgIH0KLSsgICAgICBSTF9DSEVDS19TSUdOQUxTICgpOwotKyAgICAgIGlmIChybF9kb25lID09 IDAgJiYgX3JsX3dhbnRfcmVkaXNwbGF5KQotKwl7Ci0rCSAgKCpybF9yZWRpc3BsYXlfZnVuY3Rp b24pICgpOwotKwkgIF9ybF93YW50X3JlZGlzcGxheSA9IDA7Ci0rCX0KLSAKLS0gIC8qIFdlIGxv b3AgaW4gY2FzZSBzb21lIGZ1bmN0aW9uIGhhcyBwdXNoZWQgaW5wdXQgYmFjayB3aXRoIHJsX2V4 ZWN1dGVfbmV4dC4gKi8KLS0gIGZvciAoOzspCi0tICAgIHsKLSAgICAgICBpZiAocmxfZG9uZSkK LSAJewotIAkgIGxpbmUgPSByZWFkbGluZV9pbnRlcm5hbF90ZWFyZG93biAoZW9mKTsKLUBAIC0y MTMsMTEgKzIyOCw4IEBAIHJsX2NhbGxiYWNrX3JlYWRfY2hhciAoKQotIAkgIGlmIChpbl9oYW5k bGVyID09IDAgJiYgcmxfbGluZWZ1bmMpCi0gCSAgICBfcmxfY2FsbGJhY2tfbmV3bGluZSAoKTsK LSAJfQotLSAgICAgIGlmIChybF9wZW5kaW5nX2lucHV0IHx8IF9ybF9wdXNoZWRfaW5wdXRfYXZh aWxhYmxlICgpIHx8IFJMX0lTU1RBVEUgKFJMX1NUQVRFX01BQ1JPSU5QVVQpKQotLQllb2YgPSBy ZWFkbGluZV9pbnRlcm5hbF9jaGFyICgpOwotLSAgICAgIGVsc2UKLS0JYnJlYWs7Ci0gICAgIH0K LSsgIHdoaWxlIChybF9wZW5kaW5nX2lucHV0IHx8IF9ybF9wdXNoZWRfaW5wdXRfYXZhaWxhYmxl ICgpIHx8IFJMX0lTU1RBVEUgKFJMX1NUQVRFX01BQ1JPSU5QVVQpKTsKLSB9Ci0gCi0gLyogUmVt b3ZlIHRoZSBoYW5kbGVyLCBhbmQgbWFrZSBzdXJlIHRoZSB0ZXJtaW5hbCBpcyBpbiBpdHMgbm9y bWFsIHN0YXRlLiAqLwotQEAgLTIyNiw2ICsyMzgsNyBAQCBybF9jYWxsYmFja19oYW5kbGVyX3Jl bW92ZSAoKQotIHsKLSAgIHJsX2xpbmVmdW5jID0gTlVMTDsKLSAgIFJMX1VOU0VUU1RBVEUgKFJM X1NUQVRFX0NBTExCQUNLKTsKLSsgIFJMX0NIRUNLX1NJR05BTFMgKCk7Ci0gICBpZiAoaW5faGFu ZGxlcikKLSAgICAgewotICAgICAgIGluX2hhbmRsZXIgPSAwOwotQEAgLTI1NCw4ICsyNjcsNyBA QCBfcmxfY2FsbGJhY2tfZGF0YV9hbGxvYyAoY291bnQpCi0gdm9pZCBfcmxfY2FsbGJhY2tfZGF0 YV9kaXNwb3NlIChhcmcpCi0gICAgICBfcmxfY2FsbGJhY2tfZ2VuZXJpY19hcmcgKmFyZzsKLSB7 Ci0tICBpZiAoYXJnKQotLSAgICBmcmVlIChhcmcpOwotKyAgeGZyZWUgKGFyZyk7Ci0gfQotIAot ICNlbmRpZgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvY2hhcmRlZnMuaAot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9jaGFyZGVm cy5oCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4y MDExMDcwMy9yZWFkbGluZS9jaGFyZGVmcy5oCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAw ICswMjAwCi1AQCAtMSwyNCArMSwyMyBAQAotIC8qIGNoYXJkZWZzLmggLS0gQ2hhcmFjdGVyIGRl ZmluaXRpb25zIGZvciByZWFkbGluZS4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5OTQgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAxOTk0LTIwMDkg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCi0tICAgcmVhZGluZyBs aW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4K LSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRs aW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVy YWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0gCi0tICAgVGhlIEdOVSBSZWFkbGlu ZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0Ci0tICAg YW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0tICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCi0rICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTog eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIAot LSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUKLS0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5Ci0tICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIFJlYWRsaW5l IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0gICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSAKLS0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4g c2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4g YSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90Ci0tICAgaGF2 ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEg VVNBLiAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotICNpZm5kZWYgX0NI QVJERUZTX0hfCi0gI2RlZmluZSBfQ0hBUkRFRlNfSF8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL3JlYWRsaW5lL2NvbXBhdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcw My5vcmlnL3JlYWRsaW5lL2NvbXBhdC5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9jb21wYXQuYwkyMDExLTA3LTAz IDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjQgQEAKLSAvKiBjb21wYXQu YyAtLSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBmdW5jdGlvbnMuICovCi0gCi0tLyogQ29weXJp Z2h0IChDKSAyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdo dCAoQykgMjAwMC0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZv cgotLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBo aXN0b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGlu ZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9m IHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotIAotLSAg IFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlz IGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdl bmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91 IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVh ZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8K LSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05G SUdfSCkKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2NvbXBsZXRlLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvY29tcGxldGUu YwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAx MTA3MDMvcmVhZGxpbmUvY29tcGxldGUuYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCAr MDIwMAotQEAgLTEsMjQgKzEsMjQgQEAKLSAvKiBjb21wbGV0ZS5jIC0tIGZpbGVuYW1lIGNvbXBs ZXRpb24gZm9yIHJlYWRsaW5lLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA1IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDEx IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcg bGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcu Ci0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFk bGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRl cmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotIAotLSAgIFRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAg IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAK LS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGlu ZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVu IHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGlu IGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhh dmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx IFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5lIFJF QURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKLUBAIC0xMTAs OCArMTEwLDggQEAgc3RhdGljIGludCBnZXRfeV9vcl9uIFBBUkFNUygoaW50KSk7Ci0gc3RhdGlj IGludCBfcmxfaW50ZXJuYWxfcGFnZXIgUEFSQU1TKChpbnQpKTsKLSBzdGF0aWMgY2hhciAqcHJp bnRhYmxlX3BhcnQgUEFSQU1TKChjaGFyICopKTsKLSBzdGF0aWMgaW50IGZud2lkdGggUEFSQU1T KChjb25zdCBjaGFyICopKTsKLS1zdGF0aWMgaW50IGZucHJpbnQgUEFSQU1TKChjb25zdCBjaGFy ICopKTsKLS1zdGF0aWMgaW50IHByaW50X2ZpbGVuYW1lIFBBUkFNUygoY2hhciAqLCBjaGFyICop KTsKLStzdGF0aWMgaW50IGZucHJpbnQgUEFSQU1TKChjb25zdCBjaGFyICosIGludCkpOwotK3N0 YXRpYyBpbnQgcHJpbnRfZmlsZW5hbWUgUEFSQU1TKChjaGFyICosIGNoYXIgKiwgaW50KSk7Ci0g Ci0gc3RhdGljIGNoYXIgKipnZW5fY29tcGxldGlvbl9tYXRjaGVzIFBBUkFNUygoY2hhciAqLCBp bnQsIGludCwgcmxfY29tcGVudHJ5X2Z1bmNfdCAqLCBpbnQsIGludCkpOwotIAotQEAgLTExOSw5 ICsxMTksMTEgQEAgc3RhdGljIGNoYXIgKipyZW1vdmVfZHVwbGljYXRlX21hdGNoZXMgUAotIHN0 YXRpYyB2b2lkIGluc2VydF9tYXRjaCBQQVJBTVMoKGNoYXIgKiwgaW50LCBpbnQsIGNoYXIgKikp OwotIHN0YXRpYyBpbnQgYXBwZW5kX3RvX21hdGNoIFBBUkFNUygoY2hhciAqLCBpbnQsIGludCwg aW50KSk7Ci0gc3RhdGljIHZvaWQgaW5zZXJ0X2FsbF9tYXRjaGVzIFBBUkFNUygoY2hhciAqKiwg aW50LCBjaGFyICopKTsKLStzdGF0aWMgaW50IGNvbXBsZXRlX2ZuY21wIFBBUkFNUygoY29uc3Qg Y2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KSk7Ci0gc3RhdGljIHZvaWQgZGlzcGxheV9t YXRjaGVzIFBBUkFNUygoY2hhciAqKikpOwotIHN0YXRpYyBpbnQgY29tcHV0ZV9sY2Rfb2ZfbWF0 Y2hlcyBQQVJBTVMoKGNoYXIgKiosIGludCwgY29uc3QgY2hhciAqKSk7Ci0gc3RhdGljIGludCBw b3N0cHJvY2Vzc19tYXRjaGVzIFBBUkFNUygoY2hhciAqKiosIGludCkpOwotK3N0YXRpYyBpbnQg Y29tcGxldGVfZ2V0X3NjcmVlbndpZHRoIFBBUkFNUygodm9pZCkpOwotIAotIHN0YXRpYyBjaGFy ICptYWtlX3F1b3RlZF9yZXBsYWNlbWVudCBQQVJBTVMoKGNoYXIgKiwgaW50LCBjaGFyICopKTsK LSAKLUBAIC0xNTcsMTMgKzE1OSwyNyBAQCBpbnQgX3JsX3ByaW50X2NvbXBsZXRpb25zX2hvcml6 b250YWxseTsKLSAjaWYgZGVmaW5lZCAoX19NU0RPU19fKSAmJiAhZGVmaW5lZCAoX19ESkdQUF9f KQotIGludCBfcmxfY29tcGxldGlvbl9jYXNlX2ZvbGQgPSAxOwotICNlbHNlCi0taW50IF9ybF9j b21wbGV0aW9uX2Nhc2VfZm9sZDsKLStpbnQgX3JsX2NvbXBsZXRpb25fY2FzZV9mb2xkID0gMDsK LSAjZW5kaWYKLSAKLS0vKiBJZiBub24temVybywgZG9uJ3QgbWF0Y2ggaGlkZGVuIGZpbGVzIChm aWxlbmFtZXMgYmVnaW5uaW5nIHdpdGggYSBgLicgb24KLSsvKiBOb24temVybyBtZWFucyB0aGF0 IGAtJyBhbmQgYF8nIGFyZSBlcXVpdmFsZW50IHdoZW4gY29tcGFyaW5nIGZpbGVuYW1lcwotKyAg Zm9yIGNvbXBsZXRpb24uICovCi0raW50IF9ybF9jb21wbGV0aW9uX2Nhc2VfbWFwID0gMDsKLSsK LSsvKiBJZiB6ZXJvLCBkb24ndCBtYXRjaCBoaWRkZW4gZmlsZXMgKGZpbGVuYW1lcyBiZWdpbm5p bmcgd2l0aCBhIGAuJyBvbgotICAgIFVuaXgpIHdoZW4gZG9pbmcgZmlsZW5hbWUgY29tcGxldGlv bi4gKi8KLSBpbnQgX3JsX21hdGNoX2hpZGRlbl9maWxlcyA9IDE7Ci0gCi0rLyogTGVuZ3RoIGlu IGNoYXJhY3RlcnMgb2YgYSBjb21tb24gcHJlZml4IHJlcGxhY2VkIHdpdGggYW4gZWxsaXBzaXMg KGAuLi4nKQotKyAgIHdoZW4gZGlzcGxheWluZyBjb21wbGV0aW9uIG1hdGNoZXMuICBNYXRjaGVz IHdob3NlIHByaW50YWJsZSBwb3J0aW9uIGhhcwotKyAgIG1vcmUgdGhhbiB0aGlzIG51bWJlciBv ZiBkaXNwbGF5aW5nIGNoYXJhY3RlcnMgaW4gY29tbW9uIHdpbGwgaGF2ZSB0aGUgY29tbW9uCi0r ICAgZGlzcGxheSBwcmVmaXggcmVwbGFjZWQgd2l0aCBhbiBlbGxpcHNpcy4gKi8KLStpbnQgX3Js X2NvbXBsZXRpb25fcHJlZml4X2Rpc3BsYXlfbGVuZ3RoID0gMDsKLSsKLSsvKiBUaGUgcmVhZGxp bmUtcHJpdmF0ZSBudW1iZXIgb2Ygc2NyZWVuIGNvbHVtbnMgdG8gdXNlIHdoZW4gZGlzcGxheWlu ZwotKyAgIG1hdGNoZXMuICBJZiA8IDAgb3IgPiBfcmxfc2NyZWVud2lkdGgsIGl0IGlzIGlnbm9y ZWQuICovCi0raW50IF9ybF9jb21wbGV0aW9uX2NvbHVtbnMgPSAtMTsKLSsKLSAvKiBHbG9iYWwg dmFyaWFibGVzIGF2YWlsYWJsZSB0byBhcHBsaWNhdGlvbnMgdXNpbmcgcmVhZGxpbmUuICovCi0g Ci0gI2lmIGRlZmluZWQgKFZJU0lCTEVfU1RBVFMpCi1AQCAtMTczLDYgKzE4OSwxNiBAQCBpbnQg X3JsX21hdGNoX2hpZGRlbl9maWxlcyA9IDE7Ci0gaW50IHJsX3Zpc2libGVfc3RhdHMgPSAwOwot ICNlbmRpZiAvKiBWSVNJQkxFX1NUQVRTICovCi0gCi0rLyogSWYgbm9uLXplcm8sIHdoZW4gY29t cGxldGluZyBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZCwgZG9uJ3QgaW5zZXJ0Ci0rICAgY2hhcmFj dGVycyBmcm9tIHRoZSBtYXRjaCB0aGF0IG1hdGNoIGNoYXJhY3RlcnMgZm9sbG93aW5nIHBvaW50 IGluCi0rICAgdGhlIHdvcmQuICBUaGlzIG1lYW5zLCBmb3IgaW5zdGFuY2UsIGNvbXBsZXRpbmcg d2hlbiB0aGUgY3Vyc29yIGlzCi0rICAgYWZ0ZXIgdGhlIGBlJyBpbiBgTWFrZWZpbGUnIHdvbid0 IHJlc3VsdCBpbiBgTWFrZWZpbGVmaWxlJy4gKi8KLStpbnQgX3JsX3NraXBfY29tcGxldGVkX3Rl eHQgPSAwOwotKwotKy8qIElmIG5vbi16ZXJvLCBtZW51IGNvbXBsZXRpb24gZGlzcGxheXMgdGhl IGNvbW1vbiBwcmVmaXggZmlyc3QgaW4gdGhlCi0rICAgY3ljbGUgb2YgcG9zc2libGUgY29tcGxl dGlvbnMgaW5zdGVhZCBvZiB0aGUgbGFzdC4gKi8KLStpbnQgX3JsX21lbnVfY29tcGxldGVfcHJl Zml4X2ZpcnN0ID0gMDsKLSsKLSAvKiBJZiBub24temVybywgdGhlbiB0aGlzIGlzIHRoZSBhZGRy ZXNzIG9mIGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuCi0gICAgY29tcGxldGluZyBvbiBhIGRpcmVj dG9yeSBuYW1lLiAgVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoCi0gICAgdGhlIGFkZHJlc3Mg b2YgYSBzdHJpbmcgKHRoZSBjdXJyZW50IGRpcmVjdG9yeSBuYW1lKSBhcyBhbiBhcmcuICovCi1A QCAtMTgwLDYgKzIwNiwxNyBAQCBybF9pY3BwZnVuY190ICpybF9kaXJlY3RvcnlfY29tcGxldGlv bl9oCi0gCi0gcmxfaWNwcGZ1bmNfdCAqcmxfZGlyZWN0b3J5X3Jld3JpdGVfaG9vayA9IChybF9p Y3BwZnVuY190ICopTlVMTDsKLSAKLSsvKiBJZiBub24temVybywgdGhpcyBpcyB0aGUgYWRkcmVz cyBvZiBhIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiByZWFkaW5nCi0rICAgZGlyZWN0b3J5IGVudHJp ZXMgZnJvbSB0aGUgZmlsZXN5c3RlbSBmb3IgY29tcGxldGlvbiBhbmQgY29tcGFyaW5nCi0rICAg dGhlbSB0byB0aGUgcGFydGlhbCB3b3JkIHRvIGJlIGNvbXBsZXRlZC4gIFRoZSBmdW5jdGlvbiBz aG91bGQKLSsgICBlaXRoZXIgcmV0dXJuIGl0cyBmaXJzdCBhcmd1bWVudCAoaWYgbm8gY29udmVy c2lvbiB0YWtlcyBwbGFjZSkgb3IKLSsgICBuZXdseS1hbGxvY2F0ZWQgbWVtb3J5LiAgVGhpcyBj YW4sIGZvciBpbnN0YW5jZSwgY29udmVydCBmaWxlbmFtZXMKLSsgICBiZXR3ZWVuIGNoYXJhY3Rl ciBzZXRzIGZvciBjb21wYXJpc29uIGFnYWluc3Qgd2hhdCdzIHR5cGVkIGF0IHRoZQotKyAgIGtl eWJvYXJkLiAgVGhlIHJldHVybmVkIHZhbHVlIGlzIHdoYXQgaXMgYWRkZWQgdG8gdGhlIGxpc3Qg b2YKLSsgICBtYXRjaGVzLiAgVGhlIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgbGVuZ3RoIG9mIHRo ZSBmaWxlbmFtZSB0byBiZQotKyAgIGNvbnZlcnRlZC4gKi8KLStybF9kZXF1b3RlX2Z1bmNfdCAq cmxfZmlsZW5hbWVfcmV3cml0ZV9ob29rID0gKHJsX2RlcXVvdGVfZnVuY190ICopTlVMTDsKLSsK LSAvKiBOb24temVybyBtZWFucyByZWFkbGluZSBjb21wbGV0aW9uIGZ1bmN0aW9ucyBwZXJmb3Jt IHRpbGRlIGV4cGFuc2lvbi4gKi8KLSBpbnQgcmxfY29tcGxldGVfd2l0aF90aWxkZV9leHBhbnNp b24gPSAwOwotIAotQEAgLTE4OCw2ICsyMjUsMTAgQEAgaW50IHJsX2NvbXBsZXRlX3dpdGhfdGls ZGVfZXhwYW5zaW9uID0gMAotICAgIGNvbXBsZXRlci4gKi8KLSBybF9jb21wZW50cnlfZnVuY190 ICpybF9jb21wbGV0aW9uX2VudHJ5X2Z1bmN0aW9uID0gKHJsX2NvbXBlbnRyeV9mdW5jX3QgKilO VUxMOwotIAotKy8qIFBvaW50ZXIgdG8gZ2VuZXJhdG9yIGZ1bmN0aW9uIGZvciBybF9tZW51X2Nv bXBsZXRlICgpLiAgTlVMTCBtZWFucyB0byB1c2UKLSsgICAqcmxfY29tcGxldGlvbl9lbnRyeV9m dW5jdGlvbiAoc2VlIGFib3ZlKS4gKi8KLStybF9jb21wZW50cnlfZnVuY190ICpybF9tZW51X2Nv bXBsZXRpb25fZW50cnlfZnVuY3Rpb24gPSAocmxfY29tcGVudHJ5X2Z1bmNfdCAqKU5VTEw7Ci0r Ci0gLyogUG9pbnRlciB0byBhbHRlcm5hdGl2ZSBmdW5jdGlvbiB0byBjcmVhdGUgbWF0Y2hlcy4K LSAgICBGdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBURVhULCBTVEFSVCwgYW5kIEVORC4KLSAgICBT VEFSVCBhbmQgRU5EIGFyZSBpbmRpY2VzIGluIFJMX0xJTkVfQlVGRkVSIHNheWluZyB3aGF0IHRo ZSBib3VuZGFyaWVzCi1AQCAtMzI1LDExICszNjYsMjAgQEAgaW50IHJsX2NvbXBsZXRpb25fbWFy a19zeW1saW5rX2RpcnM7Ci0gLyogSWYgbm9uLXplcm8sIGluaGliaXQgY29tcGxldGlvbiAodGVt cG9yYXJpbHkpLiAqLwotIGludCBybF9pbmhpYml0X2NvbXBsZXRpb247Ci0gCi0rLyogU2V0IHRv IHRoZSBsYXN0IGtleSB1c2VkIHRvIGludm9rZSBvbmUgb2YgdGhlIGNvbXBsZXRpb24gZnVuY3Rp b25zICovCi0raW50IHJsX2NvbXBsZXRpb25faW52b2tpbmdfa2V5OwotKwotKy8qIElmIG5vbi16 ZXJvLCBzb3J0IHRoZSBjb21wbGV0aW9uIG1hdGNoZXMuICBPbiBieSBkZWZhdWx0LiAqLwotK2lu dCBybF9zb3J0X2NvbXBsZXRpb25fbWF0Y2hlcyA9IDE7Ci0rCi0gLyogVmFyaWFibGVzIGxvY2Fs IHRvIHRoaXMgZmlsZS4gKi8KLSAKLSAvKiBMb2NhbCB2YXJpYWJsZSBzdGF0ZXMgd2hhdCBoYXBw ZW5lZCBkdXJpbmcgdGhlIGxhc3QgY29tcGxldGlvbiBhdHRlbXB0LiAqLwotIHN0YXRpYyBpbnQg Y29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlcjsKLSAKLSsvKiBUaGUgcmVzdWx0IG9mIHRoZSBxdWVy eSB0byB0aGUgdXNlciBhYm91dCBkaXNwbGF5aW5nIGNvbXBsZXRpb24gbWF0Y2hlcyAqLwotK3N0 YXRpYyBpbnQgY29tcGxldGlvbl95X29yX247Ci0rCi0gLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCi0gLyoJCQkJICAgICAqLwotIC8qICAgIEJpbmRhYmxlIGNvbXBsZXRp b24gZnVuY3Rpb25zICAqLwotQEAgLTM0Myw2ICszOTMsOCBAQCBpbnQKLSBybF9jb21wbGV0ZSAo aWdub3JlLCBpbnZva2luZ19rZXkpCi0gICAgICBpbnQgaWdub3JlLCBpbnZva2luZ19rZXk7Ci0g ewotKyAgcmxfY29tcGxldGlvbl9pbnZva2luZ19rZXkgPSBpbnZva2luZ19rZXk7Ci0rCi0gICBp ZiAocmxfaW5oaWJpdF9jb21wbGV0aW9uKQotICAgICByZXR1cm4gKF9ybF9pbnNlcnRfY2hhciAo aWdub3JlLCBpbnZva2luZ19rZXkpKTsKLSAgIGVsc2UgaWYgKHJsX2xhc3RfZnVuYyA9PSBybF9j b21wbGV0ZSAmJiAhY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlcikKLUBAIC0zNjAsNiArNDEyLDcg QEAgaW50Ci0gcmxfcG9zc2libGVfY29tcGxldGlvbnMgKGlnbm9yZSwgaW52b2tpbmdfa2V5KQot ICAgICAgaW50IGlnbm9yZSwgaW52b2tpbmdfa2V5OwotIHsKLSsgIHJsX2NvbXBsZXRpb25faW52 b2tpbmdfa2V5ID0gaW52b2tpbmdfa2V5OwotICAgcmV0dXJuIChybF9jb21wbGV0ZV9pbnRlcm5h bCAoJz8nKSk7Ci0gfQotIAotQEAgLTM2Nyw2ICs0MjAsNyBAQCBpbnQKLSBybF9pbnNlcnRfY29t cGxldGlvbnMgKGlnbm9yZSwgaW52b2tpbmdfa2V5KQotICAgICAgaW50IGlnbm9yZSwgaW52b2tp bmdfa2V5OwotIHsKLSsgIHJsX2NvbXBsZXRpb25faW52b2tpbmdfa2V5ID0gaW52b2tpbmdfa2V5 OwotICAgcmV0dXJuIChybF9jb21wbGV0ZV9pbnRlcm5hbCAoJyonKSk7Ci0gfQotIAotQEAgLTM5 NSw2ICs0NDksMTQgQEAgcmxfY29tcGxldGlvbl9tb2RlIChjZnVuYykKLSAvKgkJCQkgICAgKi8K LSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotIAotKy8qIFJlc2V0IHJl YWRsaW5lIHN0YXRlIG9uIGEgc2lnbmFsIG9yIG90aGVyIGV2ZW50LiAqLwotK3ZvaWQKLStfcmxf cmVzZXRfY29tcGxldGlvbl9zdGF0ZSAoKQotK3sKLSsgIHJsX2NvbXBsZXRpb25fZm91bmRfcXVv dGUgPSAwOwotKyAgcmxfY29tcGxldGlvbl9xdW90ZV9jaGFyYWN0ZXIgPSAwOwotK30KLSsKLSAv KiBTZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIHJlYWRsaW5lIHdvcmQgY29tcGxldGlvbi4gIFRoZXNl IGFyZSB0aGUgdmFyaWFibGVzCi0gICAgdGhhdCBhcHBsaWNhdGlvbiBjb21wbGV0aW9uIGZ1bmN0 aW9ucyBjYW4gY2hhbmdlIG9yIGluc3BlY3QuICovCi0gc3RhdGljIHZvaWQKLUBAIC00MDYsNiAr NDY4LDcgQEAgc2V0X2NvbXBsZXRpb25fZGVmYXVsdHMgKHdoYXRfdG9fZG8pCi0gICBybF9maWxl bmFtZV9xdW90aW5nX2Rlc2lyZWQgPSAxOwotICAgcmxfY29tcGxldGlvbl90eXBlID0gd2hhdF90 b19kbzsKLSAgIHJsX2NvbXBsZXRpb25fc3VwcHJlc3NfYXBwZW5kID0gcmxfY29tcGxldGlvbl9z dXBwcmVzc19xdW90ZSA9IDA7Ci0rICBybF9jb21wbGV0aW9uX2FwcGVuZF9jaGFyYWN0ZXIgPSAn ICc7Ci0gCi0gICAvKiBUaGUgY29tcGxldGlvbiBlbnRyeSBmdW5jdGlvbiBtYXkgb3B0aW9uYWxs eSBjaGFuZ2UgdGhpcy4gKi8KLSAgIHJsX2NvbXBsZXRpb25fbWFya19zeW1saW5rX2RpcnMgPSBf cmxfY29tcGxldGVfbWFya19zeW1saW5rX2RpcnM7Ci1AQCAtNDE4LDYgKzQ4MSwxOSBAQCBnZXRf eV9vcl9uIChmb3JfcGFnZXIpCi0gewotICAgaW50IGM7Ci0gCi0rLyogRGlzYWJsZWQgZm9yIEdE QiBkdWUgdG8gdGhlIGdkYi5iYXNlL3JlYWRsaW5lLWFzay5leHAgcmVncmVzc2lvbi4KLSsgICBb cGF0Y2hdIHRlc3RzdWl0ZTogVGVzdCByZWFkbGluZS02LjIgImFzayIgcmVncmVzc2lvbgotKyAg IGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTA1L21zZzAwMDAyLmh0 bWwgICovCi0rI2lmIDAKLSsgIC8qIEZvciBub3csIGRpc2FibGUgcGFnZXIgaW4gY2FsbGJhY2sg bW9kZSwgdW50aWwgd2UgbGF0ZXIgY29udmVydCB0byBzdGF0ZQotKyAgICAgZHJpdmVuIGZ1bmN0 aW9ucy4gIEhhdmUgdG8gd2FpdCB1bnRpbCBuZXh0IG1ham9yIHZlcnNpb24gdG8gYWRkIG5ldwot KyAgICAgc3RhdGUgZGVmaW5pdGlvbiwgc2luY2UgaXQgd2lsbCBjaGFuZ2UgdmFsdWUgb2YgUkxf U1RBVEVfRE9ORS4gKi8KLSsjaWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJBQ0tTKQotKyAgaWYg KFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSkKLSsgICAgcmV0dXJuIDE7Ci0rI2VuZGlm Ci0rI2VuZGlmCi0rCi0gICBmb3IgKDs7KQotICAgICB7Ci0gICAgICAgUkxfU0VUU1RBVEUoUkxf U1RBVEVfTU9SRUlOUFVUKTsKLUBAIC00MjgsNyArNTA0LDcgQEAgZ2V0X3lfb3JfbiAoZm9yX3Bh Z2VyKQotIAlyZXR1cm4gKDEpOwotICAgICAgIGlmIChjID09ICduJyB8fCBjID09ICdOJyB8fCBj ID09IFJVQk9VVCkKLSAJcmV0dXJuICgwKTsKLS0gICAgICBpZiAoYyA9PSBBQk9SVF9DSEFSKQot KyAgICAgIGlmIChjID09IEFCT1JUX0NIQVIgfHwgYyA8IDApCi0gCV9ybF9hYm9ydF9pbnRlcm5h bCAoKTsKLSAgICAgICBpZiAoZm9yX3BhZ2VyICYmIChjID09IE5FV0xJTkUgfHwgYyA9PSBSRVRV Uk4pKQotIAlyZXR1cm4gKDIpOwotQEAgLTQ4MSw2ICs1NTcsMTMgQEAgc3RhdF9jaGFyIChmaWxl bmFtZSkKLSAgIHN0cnVjdCBzdGF0IGZpbmZvOwotICAgaW50IGNoYXJhY3RlciwgcjsKLSAKLSsg IC8qIFNob3J0LWNpcmN1aXQgYSAvL3NlcnZlciBvbiBjeWd3aW4sIHNpbmNlIHRoYXQgd2lsbCBh bHdheXMgYmVoYXZlIGFzCi0rICAgICBhIGRpcmVjdG9yeS4gKi8KLSsjaWYgX19DWUdXSU5fXwot KyAgaWYgKGZpbGVuYW1lWzBdID09ICcvJyAmJiBmaWxlbmFtZVsxXSA9PSAnLycgJiYgc3RyY2hy IChmaWxlbmFtZSsyLCAnLycpID09IDApCi0rICAgIHJldHVybiAnLyc7Ci0rI2VuZGlmCi0rCi0g I2lmIGRlZmluZWQgKEhBVkVfTFNUQVQpICYmIGRlZmluZWQgKFNfSVNMTkspCi0gICByID0gbHN0 YXQgKGZpbGVuYW1lLCAmZmluZm8pOwotICNlbHNlCi1AQCAtNTgxLDcgKzY2NCw3IEBAIGZud2lk dGggKHN0cmluZykKLSAgIHdpZHRoID0gcG9zID0gMDsKLSAgIHdoaWxlIChzdHJpbmdbcG9zXSkK LSAgICAgewotLSAgICAgIGlmIChDVFJMX0NIQVIgKCpzdHJpbmcpIHx8ICpzdHJpbmcgPT0gUlVC T1VUKQotKyAgICAgIGlmIChDVFJMX0NIQVIgKHN0cmluZ1twb3NdKSB8fCBzdHJpbmdbcG9zXSA9 PSBSVUJPVVQpCi0gCXsKLSAJICB3aWR0aCArPSAyOwotIAkgIHBvcysrOwotQEAgLTYxNCwxNyAr Njk3LDIwIEBAIGZud2lkdGggKHN0cmluZykKLSAgIHJldHVybiB3aWR0aDsKLSB9Ci0gCi0rI2Rl ZmluZSBFTExJUFNJU19MRU4JMwotKwotIHN0YXRpYyBpbnQKLS1mbnByaW50ICh0b19wcmludCkK LStmbnByaW50ICh0b19wcmludCwgcHJlZml4X2J5dGVzKQotICAgICAgY29uc3QgY2hhciAqdG9f cHJpbnQ7Ci0rICAgICBpbnQgcHJlZml4X2J5dGVzOwotIHsKLS0gIGludCBwcmludGVkX2xlbjsK LSsgIGludCBwcmludGVkX2xlbiwgdzsKLSAgIGNvbnN0IGNoYXIgKnM7Ci0gI2lmIGRlZmluZWQg KEhBTkRMRV9NVUxUSUJZVEUpCi0gICBtYnN0YXRlX3QgcHM7Ci0gICBjb25zdCBjaGFyICplbmQ7 Ci0gICBzaXplX3QgdGxlbjsKLS0gIGludCB3aWR0aCwgdzsKLSsgIGludCB3aWR0aDsKLSAgIHdj aGFyX3Qgd2M7Ci0gCi0gICBlbmQgPSB0b19wcmludCArIHN0cmxlbiAodG9fcHJpbnQpICsgMTsK LUBAIC02MzIsNyArNzE4LDIzIEBAIGZucHJpbnQgKHRvX3ByaW50KQotICNlbmRpZgotIAotICAg cHJpbnRlZF9sZW4gPSAwOwotLSAgcyA9IHRvX3ByaW50OwotKwotKyAgLyogRG9uJ3QgcHJpbnQg b25seSB0aGUgZWxsaXBzaXMgaWYgdGhlIGNvbW1vbiBwcmVmaXggaXMgb25lIG9mIHRoZQotKyAg ICAgcG9zc2libGUgY29tcGxldGlvbnMgKi8KLSsgIGlmICh0b19wcmludFtwcmVmaXhfYnl0ZXNd ID09ICdcMCcpCi0rICAgIHByZWZpeF9ieXRlcyA9IDA7Ci0rCi0rICBpZiAocHJlZml4X2J5dGVz KQotKyAgICB7Ci0rICAgICAgY2hhciBlbGxpcHNpczsKLSsKLSsgICAgICBlbGxpcHNpcyA9ICh0 b19wcmludFtwcmVmaXhfYnl0ZXNdID09ICcuJykgPyAnXycgOiAnLic7Ci0rICAgICAgZm9yICh3 ID0gMDsgdyA8IEVMTElQU0lTX0xFTjsgdysrKQotKwlwdXRjIChlbGxpcHNpcywgcmxfb3V0c3Ry ZWFtKTsKLSsgICAgICBwcmludGVkX2xlbiA9IEVMTElQU0lTX0xFTjsKLSsgICAgfQotKwotKyAg cyA9IHRvX3ByaW50ICsgcHJlZml4X2J5dGVzOwotICAgd2hpbGUgKCpzKQotICAgICB7Ci0gICAg ICAgaWYgKENUUkxfQ0hBUiAoKnMpKQotQEAgLTY5MSwxNCArNzkzLDE1IEBAIGZucHJpbnQgKHRv X3ByaW50KQotICAgIGZpbGVuYW1lcy4gIFJldHVybiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMg d2Ugb3V0cHV0LiAqLwotIAotIHN0YXRpYyBpbnQKLS1wcmludF9maWxlbmFtZSAodG9fcHJpbnQs IGZ1bGxfcGF0aG5hbWUpCi0rcHJpbnRfZmlsZW5hbWUgKHRvX3ByaW50LCBmdWxsX3BhdGhuYW1l LCBwcmVmaXhfYnl0ZXMpCi0gICAgICBjaGFyICp0b19wcmludCwgKmZ1bGxfcGF0aG5hbWU7Ci0r ICAgICBpbnQgcHJlZml4X2J5dGVzOwotIHsKLSAgIGludCBwcmludGVkX2xlbiwgZXh0ZW5zaW9u X2NoYXIsIHNsZW4sIHRsZW47Ci0gICBjaGFyICpzLCBjLCAqbmV3X2Z1bGxfcGF0aG5hbWUsICpk bjsKLSAKLSAgIGV4dGVuc2lvbl9jaGFyID0gMDsKLS0gIHByaW50ZWRfbGVuID0gZm5wcmludCAo dG9fcHJpbnQpOwotKyAgcHJpbnRlZF9sZW4gPSBmbnByaW50ICh0b19wcmludCwgcHJlZml4X2J5 dGVzKTsKLSAKLSAjaWYgZGVmaW5lZCAoVklTSUJMRV9TVEFUUykKLSAgaWYgKHJsX2ZpbGVuYW1l X2NvbXBsZXRpb25fZGVzaXJlZCAmJiAocmxfdmlzaWJsZV9zdGF0cyB8fCBfcmxfY29tcGxldGVf bWFya19kaXJlY3RvcmllcykpCi1AQCAtNzUzLDcgKzg1Niw3IEBAIHByaW50X2ZpbGVuYW1lICh0 b19wcmludCwgZnVsbF9wYXRobmFtZSkKLSAJICBpZiAocGF0aF9pc2RpciAobmV3X2Z1bGxfcGF0 aG5hbWUpKQotIAkgICAgZXh0ZW5zaW9uX2NoYXIgPSAnLyc7Ci0gCi0tCSAgZnJlZSAobmV3X2Z1 bGxfcGF0aG5hbWUpOwotKwkgIHhmcmVlIChuZXdfZnVsbF9wYXRobmFtZSk7Ci0gCSAgdG9fcHJp bnRbLTFdID0gYzsKLSAJfQotICAgICAgIGVsc2UKLUBAIC03NjgsNyArODcxLDcgQEAgcHJpbnRf ZmlsZW5hbWUgKHRvX3ByaW50LCBmdWxsX3BhdGhuYW1lKQotIAkgICAgICBleHRlbnNpb25fY2hh ciA9ICcvJzsKLSAJfQotIAotLSAgICAgIGZyZWUgKHMpOwotKyAgICAgIHhmcmVlIChzKTsKLSAg ICAgICBpZiAoZXh0ZW5zaW9uX2NoYXIpCi0gCXsKLSAJICBwdXRjIChleHRlbnNpb25fY2hhciwg cmxfb3V0c3RyZWFtKTsKLUBAIC05NTAsNyArMTA1Myw3IEBAIGdlbl9jb21wbGV0aW9uX21hdGNo ZXMgKHRleHQsIHN0YXJ0LCBlbmQKLSAgICAgIHJsX2NvbXBlbnRyeV9mdW5jX3QgKm91cl9mdW5j OwotICAgICAgaW50IGZvdW5kX3F1b3RlLCBxdW90ZV9jaGFyOwotIHsKLS0gIGNoYXIgKiptYXRj aGVzLCAqdGVtcDsKLSsgIGNoYXIgKiptYXRjaGVzOwotIAotICAgcmxfY29tcGxldGlvbl9mb3Vu ZF9xdW90ZSA9IGZvdW5kX3F1b3RlOwotICAgcmxfY29tcGxldGlvbl9xdW90ZV9jaGFyYWN0ZXIg PSBxdW90ZV9jaGFyOwotQEAgLTk2MCw3ICsxMDYzLDEwIEBAIGdlbl9jb21wbGV0aW9uX21hdGNo ZXMgKHRleHQsIHN0YXJ0LCBlbmQKLSAgICAgIHZhcmlhYmxlIHJsX2F0dGVtcHRlZF9jb21wbGV0 aW9uX2Z1bmN0aW9uLiAqLwotICAgaWYgKHJsX2F0dGVtcHRlZF9jb21wbGV0aW9uX2Z1bmN0aW9u KQotICAgICB7Ci0rICAgICAgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSsrOwotICAgICAgIG1h dGNoZXMgPSAoKnJsX2F0dGVtcHRlZF9jb21wbGV0aW9uX2Z1bmN0aW9uKSAodGV4dCwgc3RhcnQs IGVuZCk7Ci0rICAgICAgaWYgKF9ybF9pbnRlcnJ1cHRfaW1tZWRpYXRlbHkgPiAwKQotKwlfcmxf aW50ZXJydXB0X2ltbWVkaWF0ZWx5LS07Ci0gCi0gICAgICAgaWYgKG1hdGNoZXMgfHwgcmxfYXR0 ZW1wdGVkX2NvbXBsZXRpb25fb3ZlcikKLSAJewotQEAgLTk2OSwyMSArMTA3NSw5IEBAIGdlbl9j b21wbGV0aW9uX21hdGNoZXMgKHRleHQsIHN0YXJ0LCBlbmQKLSAJfQotICAgICB9Ci0gCi0tICAv KiBCZXdhcmUgLS0gd2UncmUgc3RyaXBwaW5nIHRoZSBxdW90ZXMgaGVyZS4gIERvIHRoaXMgb25s eSBpZiB3ZSBrbm93Ci0tICAgICB3ZSBhcmUgZG9pbmcgZmlsZW5hbWUgY29tcGxldGlvbiBhbmQg dGhlIGFwcGxpY2F0aW9uIGhhcyBkZWZpbmVkIGEKLS0gICAgIGZpbGVuYW1lIGRlcXVvdGluZyBm dW5jdGlvbi4gKi8KLS0gIHRlbXAgPSAoY2hhciAqKU5VTEw7Ci0tCi0tICBpZiAoZm91bmRfcXVv dGUgJiYgb3VyX2Z1bmMgPT0gcmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5jdGlvbiAmJgotLSAg ICAgIHJsX2ZpbGVuYW1lX2RlcXVvdGluZ19mdW5jdGlvbikKLS0gICAgewotLSAgICAgIC8qIGRl bGV0ZSBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZXMgKi8KLS0gICAgICB0ZW1wID0gKCpybF9maWxl bmFtZV9kZXF1b3RpbmdfZnVuY3Rpb24pICh0ZXh0LCBxdW90ZV9jaGFyKTsKLS0gICAgICB0ZXh0 ID0gdGVtcDsJLyogbm90IGZyZWVpbmcgdGV4dCBpcyBub3QgYSBtZW1vcnkgbGVhayAqLwotLSAg ICB9Ci0rICAvKiBYWFggLS0gZmlsZW5hbWUgZGVxdW90aW5nIG1vdmVkIGludG8gcmxfZmlsZW5h bWVfY29tcGxldGlvbl9mdW5jdGlvbiAqLwotIAotICAgbWF0Y2hlcyA9IHJsX2NvbXBsZXRpb25f bWF0Y2hlcyAodGV4dCwgb3VyX2Z1bmMpOwotLSAgRlJFRSAodGVtcCk7Ci0gICByZXR1cm4gbWF0 Y2hlczsgIAotIH0KLSAKLUBAIC0xMDA0LDcgKzEwOTgsNyBAQCByZW1vdmVfZHVwbGljYXRlX21h dGNoZXMgKG1hdGNoZXMpCi0gCi0gICAvKiBTb3J0IHRoZSBhcnJheSB3aXRob3V0IG1hdGNoZXNb MF0sIHNpbmNlIHdlIG5lZWQgaXQgdG8KLSAgICAgIHN0YXkgaW4gcGxhY2Ugbm8gbWF0dGVyIHdo YXQuICovCi0tICBpZiAoaSkKLSsgIGlmIChpICYmIHJsX3NvcnRfY29tcGxldGlvbl9tYXRjaGVz KQotICAgICBxc29ydCAobWF0Y2hlcysxLCBpLTEsIHNpemVvZiAoY2hhciAqKSwgKFFTRlVOQyAq KV9ybF9xc29ydF9zdHJpbmdfY29tcGFyZSk7Ci0gCi0gICAvKiBSZW1lbWJlciB0aGUgbG93ZXN0 IGNvbW1vbiBkZW5vbWluYXRvciBmb3IgaXQgbWF5IGJlIHVuaXF1ZS4gKi8KLUBAIC0xMDE0LDcg KzExMDgsNyBAQCByZW1vdmVfZHVwbGljYXRlX21hdGNoZXMgKG1hdGNoZXMpCi0gICAgIHsKLSAg ICAgICBpZiAoc3RyY21wIChtYXRjaGVzW2ldLCBtYXRjaGVzW2kgKyAxXSkgPT0gMCkKLSAJewot LQkgIGZyZWUgKG1hdGNoZXNbaV0pOwotKwkgIHhmcmVlIChtYXRjaGVzW2ldKTsKLSAJICBtYXRj aGVzW2ldID0gKGNoYXIgKikmZGVhZF9zbG90OwotIAl9Ci0gICAgICAgZWxzZQotQEAgLTEwMzIs NyArMTEyNiw3IEBAIHJlbW92ZV9kdXBsaWNhdGVfbWF0Y2hlcyAobWF0Y2hlcykKLSAgIHRlbXBf YXJyYXlbal0gPSAoY2hhciAqKU5VTEw7Ci0gCi0gICBpZiAobWF0Y2hlc1swXSAhPSAoY2hhciAq KSZkZWFkX3Nsb3QpCi0tICAgIGZyZWUgKG1hdGNoZXNbMF0pOwotKyAgICB4ZnJlZSAobWF0Y2hl c1swXSk7Ci0gCi0gICAvKiBQbGFjZSB0aGUgbG93ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBiYWNr IGluIFswXS4gKi8KLSAgIHRlbXBfYXJyYXlbMF0gPSBsb3dlc3RfY29tbW9uOwotQEAgLTEwNDIs NyArMTEzNiw3IEBAIHJlbW92ZV9kdXBsaWNhdGVfbWF0Y2hlcyAobWF0Y2hlcykKLSAgICAgIGlu c2VydC4gKi8KLSAgIGlmIChqID09IDIgJiYgc3RyY21wICh0ZW1wX2FycmF5WzBdLCB0ZW1wX2Fy cmF5WzFdKSA9PSAwKQotICAgICB7Ci0tICAgICAgZnJlZSAodGVtcF9hcnJheVsxXSk7Ci0rICAg ICAgeGZyZWUgKHRlbXBfYXJyYXlbMV0pOwotICAgICAgIHRlbXBfYXJyYXlbMV0gPSAoY2hhciAq KU5VTEw7Ci0gICAgIH0KLSAgIHJldHVybiAodGVtcF9hcnJheSk7Ci1AQCAtMTExNiw3ICsxMjEw LDggQEAgY29tcHV0ZV9sY2Rfb2ZfbWF0Y2hlcyAobWF0Y2hfbGlzdCwgbWF0YwotICNpZiBkZWZp bmVkIChIQU5ETEVfTVVMVElCWVRFKQotIAkgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5 dGVfb3JpZW50ZWQgPT0gMCkKLSAJICAgICAgewotLQkJbWJzdGF0ZV90IHBzX2JhY2sgPSBwczE7 Ci0rCQltYnN0YXRlX3QgcHNfYmFjazsKLSsJCXBzX2JhY2sgPSBwczE7Ci0gCQlpZiAoIV9ybF9j b21wYXJlX2NoYXJzIChtYXRjaF9saXN0W2ldLCBzaSwgJnBzMSwgbWF0Y2hfbGlzdFtpKzFdLCBz aSwgJnBzMikpCi0gCQkgIGJyZWFrOwotIAkJZWxzZSBpZiAoKHYgPSBfcmxfZ2V0X2NoYXJfbGVu ICgmbWF0Y2hfbGlzdFtpXVtzaV0sICZwc19iYWNrKSkgPiAxKQotQEAgLTEyMjAsNyArMTMxNSw3 IEBAIHBvc3Rwcm9jZXNzX21hdGNoZXMgKG1hdGNoZXNwLCBtYXRjaGluZ18KLSAgIGlmIChybF9p Z25vcmVfY29tcGxldGlvbl9kdXBsaWNhdGVzKQotICAgICB7Ci0gICAgICAgdGVtcF9tYXRjaGVz ID0gcmVtb3ZlX2R1cGxpY2F0ZV9tYXRjaGVzIChtYXRjaGVzKTsKLS0gICAgICBmcmVlIChtYXRj aGVzKTsKLSsgICAgICB4ZnJlZSAobWF0Y2hlcyk7Ci0gICAgICAgbWF0Y2hlcyA9IHRlbXBfbWF0 Y2hlczsKLSAgICAgfQotIAotQEAgLTEyNTcsNiArMTM1MiwyMyBAQCBwb3N0cHJvY2Vzc19tYXRj aGVzIChtYXRjaGVzcCwgbWF0Y2hpbmdfCi0gICByZXR1cm4gKDEpOwotIH0KLSAKLStzdGF0aWMg aW50Ci0rY29tcGxldGVfZ2V0X3NjcmVlbndpZHRoICgpCi0rewotKyAgaW50IGNvbHM7Ci0rICBj aGFyICplbnZjb2xzOwotKwotKyAgY29scyA9IF9ybF9jb21wbGV0aW9uX2NvbHVtbnM7Ci0rICBp ZiAoY29scyA+PSAwICYmIGNvbHMgPD0gX3JsX3NjcmVlbndpZHRoKQotKyAgICByZXR1cm4gY29s czsKLSsgIGVudmNvbHMgPSBnZXRlbnYgKCJDT0xVTU5TIik7Ci0rICBpZiAoZW52Y29scyAmJiAq ZW52Y29scykKLSsgICAgY29scyA9IGF0b2kgKGVudmNvbHMpOwotKyAgaWYgKGNvbHMgPj0gMCAm JiBjb2xzIDw9IF9ybF9zY3JlZW53aWR0aCkKLSsgICAgcmV0dXJuIGNvbHM7Ci0rICByZXR1cm4g X3JsX3NjcmVlbndpZHRoOwotK30KLSsKLSAvKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBk aXNwbGF5aW5nIGEgbGlzdCBvZiBzdHJpbmdzIGluCi0gICAgY29sdW1uYXIgZm9ybWF0IG9uIHJl YWRsaW5lJ3Mgb3V0cHV0IHN0cmVhbS4gIE1BVENIRVMgaXMgdGhlIGxpc3QKLSAgICBvZiBzdHJp bmdzLCBpbiBhcmd2IGZvcm1hdCwgTEVOIGlzIHRoZSBudW1iZXIgb2Ygc3RyaW5ncyBpbiBNQVRD SEVTLAotQEAgLTEyNjYsMTcgKzEzNzgsMzggQEAgcmxfZGlzcGxheV9tYXRjaF9saXN0IChtYXRj aGVzLCBsZW4sIG1heAotICAgICAgY2hhciAqKm1hdGNoZXM7Ci0gICAgICBpbnQgbGVuLCBtYXg7 Ci0gewotLSAgaW50IGNvdW50LCBsaW1pdCwgcHJpbnRlZF9sZW4sIGxpbmVzOwotLSAgaW50IGks IGosIGssIGw7Ci0tICBjaGFyICp0ZW1wOwotKyAgaW50IGNvdW50LCBsaW1pdCwgcHJpbnRlZF9s ZW4sIGxpbmVzLCBjb2xzOwotKyAgaW50IGksIGosIGssIGwsIGNvbW1vbl9sZW5ndGgsIHNpbmQ7 Ci0rICBjaGFyICp0ZW1wLCAqdDsKLSsKLSsgIC8qIEZpbmQgdGhlIGxlbmd0aCBvZiB0aGUgcHJl Zml4IGNvbW1vbiB0byBhbGwgaXRlbXM6IGxlbmd0aCBhcyBkaXNwbGF5ZWQKLSsgICAgIGNoYXJh Y3RlcnMgKGNvbW1vbl9sZW5ndGgpIGFuZCBhcyBhIGJ5dGUgaW5kZXggaW50byB0aGUgbWF0Y2hl cyAoc2luZCkgKi8KLSsgIGNvbW1vbl9sZW5ndGggPSBzaW5kID0gMDsKLSsgIGlmIChfcmxfY29t cGxldGlvbl9wcmVmaXhfZGlzcGxheV9sZW5ndGggPiAwKQotKyAgICB7Ci0rICAgICAgdCA9IHBy aW50YWJsZV9wYXJ0IChtYXRjaGVzWzBdKTsKLSsgICAgICB0ZW1wID0gc3RycmNociAodCwgJy8n KTsKLSsgICAgICBjb21tb25fbGVuZ3RoID0gdGVtcCA/IGZud2lkdGggKHRlbXApIDogZm53aWR0 aCAodCk7Ci0rICAgICAgc2luZCA9IHRlbXAgPyBzdHJsZW4gKHRlbXApIDogc3RybGVuICh0KTsK LSsKLSsgICAgICBpZiAoY29tbW9uX2xlbmd0aCA+IF9ybF9jb21wbGV0aW9uX3ByZWZpeF9kaXNw bGF5X2xlbmd0aCAmJiBjb21tb25fbGVuZ3RoID4gRUxMSVBTSVNfTEVOKQotKwltYXggLT0gY29t bW9uX2xlbmd0aCAtIEVMTElQU0lTX0xFTjsKLSsgICAgICBlbHNlCi0rCWNvbW1vbl9sZW5ndGgg PSBzaW5kID0gMDsKLSsgICAgfQotIAotICAgLyogSG93IG1hbnkgaXRlbXMgb2YgTUFYIGxlbmd0 aCBjYW4gd2UgZml0IGluIHRoZSBzY3JlZW4gd2luZG93PyAqLwotKyAgY29scyA9IGNvbXBsZXRl X2dldF9zY3JlZW53aWR0aCAoKTsKLSAgIG1heCArPSAyOwotLSAgbGltaXQgPSBfcmxfc2NyZWVu d2lkdGggLyBtYXg7Ci0tICBpZiAobGltaXQgIT0gMSAmJiAobGltaXQgKiBtYXggPT0gX3JsX3Nj cmVlbndpZHRoKSkKLSsgIGxpbWl0ID0gY29scyAvIG1heDsKLSsgIGlmIChsaW1pdCAhPSAxICYm IChsaW1pdCAqIG1heCA9PSBjb2xzKSkKLSAgICAgbGltaXQtLTsKLSAKLS0gIC8qIEF2b2lkIGEg cG9zc2libGUgZmxvYXRpbmcgZXhjZXB0aW9uLiAgSWYgbWF4ID4gX3JsX3NjcmVlbndpZHRoLAot KyAgLyogSWYgY29scyA9PSAwLCBsaW1pdCB3aWxsIGVuZCB1cCAtMSAqLwotKyAgaWYgKGNvbHMg PCBfcmxfc2NyZWVud2lkdGggJiYgbGltaXQgPCAwKQotKyAgICBsaW1pdCA9IDE7Ci0rCi0rICAv KiBBdm9pZCBhIHBvc3NpYmxlIGZsb2F0aW5nIGV4Y2VwdGlvbi4gIElmIG1heCA+IGNvbHMsCi0g ICAgICBsaW1pdCB3aWxsIGJlIDAgYW5kIGEgZGl2aWRlLWJ5LXplcm8gZmF1bHQgd2lsbCByZXN1 bHQuICovCi0gICBpZiAobGltaXQgPT0gMCkKLSAgICAgbGltaXQgPSAxOwotQEAgLTEyODksNyAr MTQyMiw3IEBAIHJsX2Rpc3BsYXlfbWF0Y2hfbGlzdCAobWF0Y2hlcywgbGVuLCBtYXgKLSAJICAg MCA8IGxlbiA8PSBsaW1pdCAgaW1wbGllcyAgY291bnQgPSAxLiAqLwotIAotICAgLyogU29ydCB0 aGUgaXRlbXMgaWYgdGhleSBhcmUgbm90IGFscmVhZHkgc29ydGVkLiAqLwotLSAgaWYgKHJsX2ln bm9yZV9jb21wbGV0aW9uX2R1cGxpY2F0ZXMgPT0gMCkKLSsgIGlmIChybF9pZ25vcmVfY29tcGxl dGlvbl9kdXBsaWNhdGVzID09IDAgJiYgcmxfc29ydF9jb21wbGV0aW9uX21hdGNoZXMpCi0gICAg IHFzb3J0IChtYXRjaGVzICsgMSwgbGVuLCBzaXplb2YgKGNoYXIgKiksIChRU0ZVTkMgKilfcmxf cXNvcnRfc3RyaW5nX2NvbXBhcmUpOwotIAotICAgcmxfY3JsZiAoKTsKLUBAIC0xMzA3LDcgKzE0 NDAsNyBAQCBybF9kaXNwbGF5X21hdGNoX2xpc3QgKG1hdGNoZXMsIGxlbiwgbWF4Ci0gCSAgICAg IGVsc2UKLSAJCXsKLSAJCSAgdGVtcCA9IHByaW50YWJsZV9wYXJ0IChtYXRjaGVzW2xdKTsKLS0J CSAgcHJpbnRlZF9sZW4gPSBwcmludF9maWxlbmFtZSAodGVtcCwgbWF0Y2hlc1tsXSk7Ci0rCQkg IHByaW50ZWRfbGVuID0gcHJpbnRfZmlsZW5hbWUgKHRlbXAsIG1hdGNoZXNbbF0sIHNpbmQpOwot IAotIAkJICBpZiAoaiArIDEgPCBsaW1pdCkKLSAJCSAgICBmb3IgKGsgPSAwOyBrIDwgbWF4IC0g cHJpbnRlZF9sZW47IGsrKykKLUBAIC0xMzMxLDcgKzE0NjQsNyBAQCBybF9kaXNwbGF5X21hdGNo X2xpc3QgKG1hdGNoZXMsIGxlbiwgbWF4Ci0gICAgICAgZm9yIChpID0gMTsgbWF0Y2hlc1tpXTsg aSsrKQotIAl7Ci0gCSAgdGVtcCA9IHByaW50YWJsZV9wYXJ0IChtYXRjaGVzW2ldKTsKLS0JICBw cmludGVkX2xlbiA9IHByaW50X2ZpbGVuYW1lICh0ZW1wLCBtYXRjaGVzW2ldKTsKLSsJICBwcmlu dGVkX2xlbiA9IHByaW50X2ZpbGVuYW1lICh0ZW1wLCBtYXRjaGVzW2ldLCBzaW5kKTsKLSAJICAv KiBIYXZlIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGlzIGxpbmU/ICovCi0gCSAgaWYgKG1hdGNo ZXNbaSsxXSkKLSAJICAgIHsKLUBAIC0xMzgxLDcgKzE1MTQsNyBAQCBkaXNwbGF5X21hdGNoZXMg KG1hdGNoZXMpCi0gICAgIHsKLSAgICAgICB0ZW1wID0gcHJpbnRhYmxlX3BhcnQgKG1hdGNoZXNb MF0pOwotICAgICAgIHJsX2NybGYgKCk7Ci0tICAgICAgcHJpbnRfZmlsZW5hbWUgKHRlbXAsIG1h dGNoZXNbMF0pOwotKyAgICAgIHByaW50X2ZpbGVuYW1lICh0ZW1wLCBtYXRjaGVzWzBdLCAwKTsK LSAgICAgICBybF9jcmxmICgpOwotIAotICAgICAgIHJsX2ZvcmNlZF91cGRhdGVfZGlzcGxheSAo KTsKLUBAIC0xNDE3LDcgKzE1NTAsNyBAQCBkaXNwbGF5X21hdGNoZXMgKG1hdGNoZXMpCi0gICAg ICAgcmxfY3JsZiAoKTsKLSAgICAgICBmcHJpbnRmIChybF9vdXRzdHJlYW0sICJEaXNwbGF5IGFs bCAlZCBwb3NzaWJpbGl0aWVzPyAoeSBvciBuKSIsIGxlbik7Ci0gICAgICAgZmZsdXNoIChybF9v dXRzdHJlYW0pOwotLSAgICAgIGlmIChnZXRfeV9vcl9uICgwKSA9PSAwKQotKyAgICAgIGlmICgo Y29tcGxldGlvbl95X29yX24gPSBnZXRfeV9vcl9uICgwKSkgPT0gMCkKLSAJewotIAkgIHJsX2Ny bGYgKCk7Ci0gCi1AQCAtMTQ4NSw4ICsxNjE4LDkgQEAgaW5zZXJ0X21hdGNoIChtYXRjaCwgc3Rh cnQsIG10eXBlLCBxYykKLSAgICAgIGludCBzdGFydCwgbXR5cGU7Ci0gICAgICBjaGFyICpxYzsK LSB7Ci0tICBjaGFyICpyZXBsYWNlbWVudDsKLSsgIGNoYXIgKnJlcGxhY2VtZW50LCAqcjsKLSAg IGNoYXIgb3FjOwotKyAgaW50IGVuZCwgcmxlbjsKLSAKLSAgIG9xYyA9IHFjID8gKnFjIDogJ1ww JzsKLSAgIHJlcGxhY2VtZW50ID0gbWFrZV9xdW90ZWRfcmVwbGFjZW1lbnQgKG1hdGNoLCBtdHlw ZSwgcWMpOwotQEAgLTE0OTQsNiArMTYyOCw3IEBAIGluc2VydF9tYXRjaCAobWF0Y2gsIHN0YXJ0 LCBtdHlwZSwgcWMpCi0gICAvKiBOb3cgaW5zZXJ0IHRoZSBtYXRjaC4gKi8KLSAgIGlmIChyZXBs YWNlbWVudCkKLSAgICAgewotKyAgICAgIHJsZW4gPSBzdHJsZW4gKHJlcGxhY2VtZW50KTsKLSAg ICAgICAvKiBEb24ndCBkb3VibGUgYW4gb3BlbmluZyBxdW90ZSBjaGFyYWN0ZXIuICovCi0gICAg ICAgaWYgKHFjICYmICpxYyAmJiBzdGFydCAmJiBybF9saW5lX2J1ZmZlcltzdGFydCAtIDFdID09 ICpxYyAmJgotIAkgICAgcmVwbGFjZW1lbnRbMF0gPT0gKnFjKQotQEAgLTE1MDMsOSArMTYzOCwy NiBAQCBpbnNlcnRfbWF0Y2ggKG1hdGNoLCBzdGFydCwgbXR5cGUsIHFjKQotICAgICAgIGVsc2Ug aWYgKHFjICYmICgqcWMgIT0gb3FjKSAmJiBzdGFydCAmJiBybF9saW5lX2J1ZmZlcltzdGFydCAt IDFdID09IG9xYyAmJgotIAkgICAgcmVwbGFjZW1lbnRbMF0gIT0gb3FjKQotIAlzdGFydC0tOwot LSAgICAgIF9ybF9yZXBsYWNlX3RleHQgKHJlcGxhY2VtZW50LCBzdGFydCwgcmxfcG9pbnQgLSAx KTsKLSsgICAgICBlbmQgPSBybF9wb2ludCAtIDE7Ci0rICAgICAgLyogRG9uJ3QgZG91YmxlIGEg Y2xvc2luZyBxdW90ZSBjaGFyYWN0ZXIgKi8KLSsgICAgICBpZiAocWMgJiYgKnFjICYmIGVuZCAm JiBybF9saW5lX2J1ZmZlcltybF9wb2ludF0gPT0gKnFjICYmIHJlcGxhY2VtZW50W3JsZW4gLSAx XSA9PSAqcWMpCi0rICAgICAgICBlbmQrKzsKLSsgICAgICBpZiAoX3JsX3NraXBfY29tcGxldGVk X3RleHQpCi0rCXsKLSsJICByID0gcmVwbGFjZW1lbnQ7Ci0rCSAgd2hpbGUgKHN0YXJ0IDwgcmxf ZW5kICYmICpyICYmIHJsX2xpbmVfYnVmZmVyW3N0YXJ0XSA9PSAqcikKLSsJICAgIHsKLSsJICAg ICAgc3RhcnQrKzsKLSsJICAgICAgcisrOwotKwkgICAgfQotKwkgIGlmIChzdGFydCA8PSBlbmQg fHwgKnIpCi0rCSAgICBfcmxfcmVwbGFjZV90ZXh0IChyLCBzdGFydCwgZW5kKTsKLSsJICBybF9w b2ludCA9IHN0YXJ0ICsgc3RybGVuIChyKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJX3JsX3JlcGxh Y2VfdGV4dCAocmVwbGFjZW1lbnQsIHN0YXJ0LCBlbmQpOwotICAgICAgIGlmIChyZXBsYWNlbWVu dCAhPSBtYXRjaCkKLS0gICAgICAgIGZyZWUgKHJlcGxhY2VtZW50KTsKLSsgICAgICAgIHhmcmVl IChyZXBsYWNlbWVudCk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTU3Miw3ICsxNzI0LDcgQEAgYXBw ZW5kX3RvX21hdGNoICh0ZXh0LCBkZWxpbWl0ZXIsIHF1b3RlXwotIAkgIGlmIChybF9wb2ludCA9 PSBybF9lbmQgJiYgdGVtcF9zdHJpbmdfaW5kZXgpCi0gCSAgICBybF9pbnNlcnRfdGV4dCAodGVt cF9zdHJpbmcpOwotIAl9Ci0tICAgICAgZnJlZSAoZmlsZW5hbWUpOwotKyAgICAgIHhmcmVlIChm aWxlbmFtZSk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotQEAgLTE2MDgsNyArMTc2MCw3IEBA IGluc2VydF9hbGxfbWF0Y2hlcyAobWF0Y2hlcywgcG9pbnQsIHFjKQotIAkgIHJsX2luc2VydF90 ZXh0IChycCk7Ci0gCSAgcmxfaW5zZXJ0X3RleHQgKCIgIik7Ci0gCSAgaWYgKHJwICE9IG1hdGNo ZXNbaV0pCi0tCSAgICBmcmVlIChycCk7Ci0rCSAgICB4ZnJlZSAocnApOwotIAl9Ci0gICAgIH0K LSAgIGVsc2UKLUBAIC0xNjE3LDcgKzE3NjksNyBAQCBpbnNlcnRfYWxsX21hdGNoZXMgKG1hdGNo ZXMsIHBvaW50LCBxYykKLSAgICAgICBybF9pbnNlcnRfdGV4dCAocnApOwotICAgICAgIHJsX2lu c2VydF90ZXh0ICgiICIpOwotICAgICAgIGlmIChycCAhPSBtYXRjaGVzWzBdKQotLQlmcmVlIChy cCk7Ci0rCXhmcmVlIChycCk7Ci0gICAgIH0KLSAgIHJsX2VuZF91bmRvX2dyb3VwICgpOwotIH0K LUBAIC0xNjMyLDggKzE3ODQsOCBAQCBfcmxfZnJlZV9tYXRjaF9saXN0IChtYXRjaGVzKQotICAg ICByZXR1cm47Ci0gCi0gICBmb3IgKGkgPSAwOyBtYXRjaGVzW2ldOyBpKyspCi0tICAgIGZyZWUg KG1hdGNoZXNbaV0pOwotLSAgZnJlZSAobWF0Y2hlcyk7Ci0rICAgIHhmcmVlIChtYXRjaGVzW2ld KTsKLSsgIHhmcmVlIChtYXRjaGVzKTsKLSB9Ci0gCi0gLyogQ29tcGxldGUgdGhlIHdvcmQgYXQg b3IgYmVmb3JlIHBvaW50LgotQEAgLTE2NTQsNiArMTgwNiw5IEBAIHJsX2NvbXBsZXRlX2ludGVy bmFsICh3aGF0X3RvX2RvKQotICAgaW50IHN0YXJ0LCBlbmQsIGRlbGltaXRlciwgZm91bmRfcXVv dGUsIGksIG5vbnRyaXZpYWxfbGNkOwotICAgY2hhciAqdGV4dCwgKnNhdmVkX2xpbmVfYnVmZmVy OwotICAgY2hhciBxdW90ZV9jaGFyOwotKyNpZiAxCi0rICBpbnQgdGxlbiwgbWxlbjsKLSsjZW5k aWYKLSAKLSAgIFJMX1NFVFNUQVRFKFJMX1NUQVRFX0NPTVBMRVRJTkcpOwotIAotQEAgLTE2ODEs NyArMTgzNiwxMSBAQCBybF9jb21wbGV0ZV9pbnRlcm5hbCAod2hhdF90b19kbykKLSAgIC8qIG5v bnRyaXZpYWxfbGNkIGlzIHNldCBpZiB0aGUgY29tbW9uIHByZWZpeCBhZGRzIHNvbWV0aGluZyB0 byB0aGUgd29yZAotICAgICAgYmVpbmcgY29tcGxldGVkLiAqLwotICAgbm9udHJpdmlhbF9sY2Qg PSBtYXRjaGVzICYmIHN0cmNtcCAodGV4dCwgbWF0Y2hlc1swXSkgIT0gMDsKLS0gIGZyZWUgKHRl eHQpOwotKyNpZiAxCi0rICBpZiAod2hhdF90b19kbyA9PSAnIScgfHwgd2hhdF90b19kbyA9PSAn QCcpCi0rICAgIHRsZW4gPSBzdHJsZW4gKHRleHQpOwotKyNlbmRpZgotKyAgeGZyZWUgKHRleHQp OwotIAotICAgaWYgKG1hdGNoZXMgPT0gMCkKLSAgICAgewotQEAgLTE2ODksNiArMTg0OCw3IEBA IHJsX2NvbXBsZXRlX2ludGVybmFsICh3aGF0X3RvX2RvKQotICAgICAgIEZSRUUgKHNhdmVkX2xp bmVfYnVmZmVyKTsKLSAgICAgICBjb21wbGV0aW9uX2NoYW5nZWRfYnVmZmVyID0gMDsKLSAgICAg ICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX0NPTVBMRVRJTkcpOwotKyAgICAgIF9ybF9yZXNldF9j b21wbGV0aW9uX3N0YXRlICgpOwotICAgICAgIHJldHVybiAoMCk7Ci0gICAgIH0KLSAKLUBAIC0x NzAzLDYgKzE4NjMsNyBAQCBybF9jb21wbGV0ZV9pbnRlcm5hbCAod2hhdF90b19kbykKLSAgICAg ICBGUkVFIChzYXZlZF9saW5lX2J1ZmZlcik7Ci0gICAgICAgY29tcGxldGlvbl9jaGFuZ2VkX2J1 ZmZlciA9IDA7Ci0gICAgICAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9DT01QTEVUSU5HKTsKLSsg ICAgICBfcmxfcmVzZXRfY29tcGxldGlvbl9zdGF0ZSAoKTsKLSAgICAgICByZXR1cm4gKDApOwot ICAgICB9Ci0gCi1AQCAtMTcxMiw4ICsxODczLDI1IEBAIHJsX2NvbXBsZXRlX2ludGVybmFsICh3 aGF0X3RvX2RvKQotICAgICBjYXNlICchJzoKLSAgICAgY2FzZSAnQCc6Ci0gICAgICAgLyogSW5z ZXJ0IHRoZSBmaXJzdCBtYXRjaCB3aXRoIHByb3BlciBxdW90aW5nLiAqLwotKyNpZiAwCi0gICAg ICAgaWYgKCptYXRjaGVzWzBdKQotIAlpbnNlcnRfbWF0Y2ggKG1hdGNoZXNbMF0sIHN0YXJ0LCBt YXRjaGVzWzFdID8gTVVMVF9NQVRDSCA6IFNJTkdMRV9NQVRDSCwgJnF1b3RlX2NoYXIpOwotKyNl bHNlCi0rICAgICAgaWYgKHdoYXRfdG9fZG8gPT0gVEFCKQotKyAgICAgICAgewotKyAgICAgICAg ICBpZiAoKm1hdGNoZXNbMF0pCi0rCSAgICBpbnNlcnRfbWF0Y2ggKG1hdGNoZXNbMF0sIHN0YXJ0 LCBtYXRjaGVzWzFdID8gTVVMVF9NQVRDSCA6IFNJTkdMRV9NQVRDSCwgJnF1b3RlX2NoYXIpOwot KyAgICAgICAgfQotKyAgICAgIGVsc2UgaWYgKCptYXRjaGVzWzBdICYmIG1hdGNoZXNbMV0gPT0g MCkKLSsJLyogc2hvdWxkIHdlIHBlcmZvcm0gdGhlIGNoZWNrIG9ubHkgaWYgdGhlcmUgYXJlIG11 bHRpcGxlIG1hdGNoZXM/ICovCi0rCWluc2VydF9tYXRjaCAobWF0Y2hlc1swXSwgc3RhcnQsIG1h dGNoZXNbMV0gPyBNVUxUX01BVENIIDogU0lOR0xFX01BVENILCAmcXVvdGVfY2hhcik7Ci0rICAg ICAgZWxzZSBpZiAoKm1hdGNoZXNbMF0pCS8qIHdoYXRfdG9fZG8gIT0gVEFCICYmIG11bHRpcGxl IG1hdGNoZXMgKi8KLSsJewotKwkgIG1sZW4gPSAqbWF0Y2hlc1swXSA/IHN0cmxlbiAobWF0Y2hl c1swXSkgOiAwOwotKwkgIGlmIChtbGVuID49IHRsZW4pCi0rCSAgICBpbnNlcnRfbWF0Y2ggKG1h dGNoZXNbMF0sIHN0YXJ0LCBtYXRjaGVzWzFdID8gTVVMVF9NQVRDSCA6IFNJTkdMRV9NQVRDSCwg JnF1b3RlX2NoYXIpOwotKwl9Ci0rI2VuZGlmCi0gCi0gICAgICAgLyogSWYgdGhlcmUgYXJlIG1v cmUgbWF0Y2hlcywgcmluZyB0aGUgYmVsbCB0byBpbmRpY2F0ZS4KLSAJIElmIHdlIGFyZSBpbiB2 aSBtb2RlLCBQb3NpeC4yIHNheXMgdG8gbm90IHJpbmcgdGhlIGJlbGwuCi1AQCAtMTc1MywxMCAr MTkzMSwxMSBAQCBybF9jb21wbGV0ZV9pbnRlcm5hbCAod2hhdF90b19kbykKLSAgICAgICBicmVh azsKLSAKLSAgICAgZGVmYXVsdDoKLS0gICAgICBmcHJpbnRmIChzdGRlcnIsICJcclxucmVhZGxp bmU6IGJhZCB2YWx1ZSAlZCBmb3Igd2hhdF90b19kbyBpbiBybF9jb21wbGV0ZVxuIiwgd2hhdF90 b19kbyk7Ci0rICAgICAgX3JsX3R0eW1zZyAoImJhZCB2YWx1ZSAlZCBmb3Igd2hhdF90b19kbyBp biBybF9jb21wbGV0ZSIsIHdoYXRfdG9fZG8pOwotICAgICAgIHJsX2RpbmcgKCk7Ci0gICAgICAg RlJFRSAoc2F2ZWRfbGluZV9idWZmZXIpOwotICAgICAgIFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVf Q09NUExFVElORyk7Ci0rICAgICAgX3JsX3Jlc2V0X2NvbXBsZXRpb25fc3RhdGUgKCk7Ci0gICAg ICAgcmV0dXJuIDE7Ci0gICAgIH0KLSAKLUBAIC0xNzY2LDEwICsxOTQ1LDExIEBAIHJsX2NvbXBs ZXRlX2ludGVybmFsICh3aGF0X3RvX2RvKQotICAgaWYgKHNhdmVkX2xpbmVfYnVmZmVyKQotICAg ICB7Ci0gICAgICAgY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IHN0cmNtcCAocmxfbGluZV9i dWZmZXIsIHNhdmVkX2xpbmVfYnVmZmVyKSAhPSAwOwotLSAgICAgIGZyZWUgKHNhdmVkX2xpbmVf YnVmZmVyKTsKLSsgICAgICB4ZnJlZSAoc2F2ZWRfbGluZV9idWZmZXIpOwotICAgICB9Ci0gCi0g ICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX0NPTVBMRVRJTkcpOwotKyAgX3JsX3Jlc2V0X2NvbXBs ZXRpb25fc3RhdGUgKCk7Ci0gICByZXR1cm4gMDsKLSB9Ci0gCi1AQCAtMTgxMyw2ICsxOTkzLDcg QEAgcmxfY29tcGxldGlvbl9tYXRjaGVzICh0ZXh0LCBlbnRyeV9mdW5jdAotICAgbWF0Y2hfbGlz dCA9IChjaGFyICoqKXhtYWxsb2MgKChtYXRjaF9saXN0X3NpemUgKyAxKSAqIHNpemVvZiAoY2hh ciAqKSk7Ci0gICBtYXRjaF9saXN0WzFdID0gKGNoYXIgKilOVUxMOwotIAotKyAgX3JsX2ludGVy cnVwdF9pbW1lZGlhdGVseSsrOwotICAgd2hpbGUgKHN0cmluZyA9ICgqZW50cnlfZnVuY3Rpb24p ICh0ZXh0LCBtYXRjaGVzKSkKLSAgICAgewotICAgICAgIGlmIChtYXRjaGVzICsgMSA9PSBtYXRj aF9saXN0X3NpemUpCi1AQCAtMTgyMiw2ICsyMDAzLDggQEAgcmxfY29tcGxldGlvbl9tYXRjaGVz ICh0ZXh0LCBlbnRyeV9mdW5jdAotICAgICAgIG1hdGNoX2xpc3RbKyttYXRjaGVzXSA9IHN0cmlu ZzsKLSAgICAgICBtYXRjaF9saXN0W21hdGNoZXMgKyAxXSA9IChjaGFyICopTlVMTDsKLSAgICAg fQotKyAgaWYgKF9ybF9pbnRlcnJ1cHRfaW1tZWRpYXRlbHkgPiAwKQotKyAgICBfcmxfaW50ZXJy dXB0X2ltbWVkaWF0ZWx5LS07Ci0gCi0gICAvKiBJZiB0aGVyZSB3ZXJlIGFueSBtYXRjaGVzLCB0 aGVuIGxvb2sgdGhyb3VnaCB0aGVtIGZpbmRpbmcgb3V0IHRoZQotICAgICAgbG93ZXN0IGNvbW1v biBkZW5vbWluYXRvci4gIFRoYXQgdGhlbiBiZWNvbWVzIG1hdGNoX2xpc3RbMF0uICovCi1AQCAt MTgyOSw3ICsyMDEyLDcgQEAgcmxfY29tcGxldGlvbl9tYXRjaGVzICh0ZXh0LCBlbnRyeV9mdW5j dAotICAgICBjb21wdXRlX2xjZF9vZl9tYXRjaGVzIChtYXRjaF9saXN0LCBtYXRjaGVzLCB0ZXh0 KTsKLSAgIGVsc2UJCQkJLyogVGhlcmUgd2VyZSBubyBtYXRjaGVzLiAqLwotICAgICB7Ci0tICAg ICAgZnJlZSAobWF0Y2hfbGlzdCk7Ci0rICAgICAgeGZyZWUgKG1hdGNoX2xpc3QpOwotICAgICAg IG1hdGNoX2xpc3QgPSAoY2hhciAqKilOVUxMOwotICAgICB9Ci0gICByZXR1cm4gKG1hdGNoX2xp c3QpOwotQEAgLTE4OTUsNiArMjA3OCw2MiBAQCBybF91c2VybmFtZV9jb21wbGV0aW9uX2Z1bmN0 aW9uICh0ZXh0LCBzCi0gI2VuZGlmIC8qICFfX1dJTjMyX18gJiYgIV9fT1BFTk5UICovCi0gfQot IAotKy8qIFJldHVybiBub24temVybyBpZiBDT05WRk4gbWF0Y2hlcyBGSUxFTkFNRSB1cCB0byB0 aGUgbGVuZ3RoIG9mIEZJTEVOQU1FCi0rICAgKEZJTEVOQU1FX0xFTikuICBJZiBfcmxfY29tcGxl dGlvbl9jYXNlX2ZvbGQgaXMgc2V0LCBjb21wYXJlIHdpdGhvdXQKLSsgICByZWdhcmQgdG8gdGhl IGFscGhhYmV0aWMgY2FzZSBvZiBjaGFyYWN0ZXJzLiAgQ09OVkZOIGlzIHRoZSBwb3NzaWJseS0K LSsgICBjb252ZXJ0ZWQgZGlyZWN0b3J5IGVudHJ5OyBGSUxFTkFNRSBpcyB3aGF0IHRoZSB1c2Vy IHR5cGVkLiAqLwotK3N0YXRpYyBpbnQKLStjb21wbGV0ZV9mbmNtcCAoY29udmZuLCBjb252bGVu LCBmaWxlbmFtZSwgZmlsZW5hbWVfbGVuKQotKyAgICAgY29uc3QgY2hhciAqY29udmZuOwotKyAg ICAgaW50IGNvbnZsZW47Ci0rICAgICBjb25zdCBjaGFyICpmaWxlbmFtZTsKLSsgICAgIGludCBm aWxlbmFtZV9sZW47Ci0rewotKyAgcmVnaXN0ZXIgY2hhciAqczEsICpzMjsKLSsgIGludCBkLCBs ZW47Ci0rCi0rICAvKiBPdGhlcndpc2UsIGlmIHRoZXNlIG1hdGNoIHVwIHRvIHRoZSBsZW5ndGgg b2YgZmlsZW5hbWUsIHRoZW4KLSsgICAgIGl0IGlzIGEgbWF0Y2guICovCi0rICBpZiAoX3JsX2Nv bXBsZXRpb25fY2FzZV9mb2xkICYmIF9ybF9jb21wbGV0aW9uX2Nhc2VfbWFwKQotKyAgICB7Ci0r ICAgICAgLyogQ2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uIHRyZWF0aW5nIF8gYW5kIC0gYXMg ZXF1aXZhbGVudCAqLwotKyAgICAgIGlmIChmaWxlbmFtZV9sZW4gPT0gMCkKLSsJcmV0dXJuIDE7 Ci0rICAgICAgaWYgKGNvbnZsZW4gPCBmaWxlbmFtZV9sZW4pCi0rCXJldHVybiAwOwotKyAgICAg IHMxID0gKGNoYXIgKiljb252Zm47Ci0rICAgICAgczIgPSAoY2hhciAqKWZpbGVuYW1lOwotKyAg ICAgIGxlbiA9IGZpbGVuYW1lX2xlbjsKLSsgICAgICBkbwotKwl7Ci0rCSAgZCA9IF9ybF90b19s b3dlciAoKnMxKSAtIF9ybF90b19sb3dlciAoKnMyKTsKLSsJICAvKiAqczEgPT0gWy1fXSAmJiAq czIgPT0gWy1fXSAqLwotKwkgIGlmICgoKnMxID09ICctJyB8fCAqczEgPT0gJ18nKSAmJiAoKnMy ID09ICctJyB8fCAqczIgPT0gJ18nKSkKLSsJICAgIGQgPSAwOwotKwkgIGlmIChkICE9IDApCi0r CSAgICByZXR1cm4gMDsKLSsJICBzMSsrOyBzMisrOwkvKiBhbHJlYWR5IGNoZWNrZWQgY29udmxl biA+PSBmaWxlbmFtZV9sZW4gKi8KLSsJfQotKyAgICAgIHdoaWxlICgtLWxlbiAhPSAwKTsKLSsg ICAgICByZXR1cm4gMTsKLSsgICAgfQotKyAgZWxzZSBpZiAoX3JsX2NvbXBsZXRpb25fY2FzZV9m b2xkKQotKyAgICB7Ci0rICAgICAgaWYgKChfcmxfdG9fbG93ZXIgKGNvbnZmblswXSkgPT0gX3Js X3RvX2xvd2VyIChmaWxlbmFtZVswXSkpICYmCi0rCSAgKGNvbnZsZW4gPj0gZmlsZW5hbWVfbGVu KSAmJgotKwkgIChfcmxfc3RybmljbXAgKGZpbGVuYW1lLCBjb252Zm4sIGZpbGVuYW1lX2xlbikg PT0gMCkpCi0rCXJldHVybiAxOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBpZiAo KGNvbnZmblswXSA9PSBmaWxlbmFtZVswXSkgJiYKLSsJICAoY29udmxlbiA+PSBmaWxlbmFtZV9s ZW4pICYmCi0rCSAgKHN0cm5jbXAgKGZpbGVuYW1lLCBjb252Zm4sIGZpbGVuYW1lX2xlbikgPT0g MCkpCi0rCXJldHVybiAxOwotKyAgICB9Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0gLyogT2theSwg bm93IHdlIHdyaXRlIHRoZSBlbnRyeV9mdW5jdGlvbiBmb3IgZmlsZW5hbWUgY29tcGxldGlvbi4g IEluIHRoZQotICAgIGdlbmVyYWwgY2FzZS4gIE5vdGUgdGhhdCBjb21wbGV0aW9uIGluIHRoZSBz aGVsbCBpcyBhIGxpdHRsZSBkaWZmZXJlbnQKLSAgICBiZWNhdXNlIG9mIGFsbCB0aGUgcGF0aG5h bWVzIHRoYXQgbXVzdCBiZSBmb2xsb3dlZCB3aGVuIGxvb2tpbmcgdXAgdGhlCi1AQCAtMTkwOSw4 ICsyMTQ4LDggQEAgcmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5jdGlvbiAodGV4dCwgcwotICAg c3RhdGljIGNoYXIgKmRpcm5hbWUgPSAoY2hhciAqKU5VTEw7Ci0gICBzdGF0aWMgY2hhciAqdXNl cnNfZGlybmFtZSA9IChjaGFyICopTlVMTDsKLSAgIHN0YXRpYyBpbnQgZmlsZW5hbWVfbGVuOwot LSAgY2hhciAqdGVtcDsKLS0gIGludCBkaXJsZW47Ci0rICBjaGFyICp0ZW1wLCAqZGVudHJ5LCAq Y29udmZuOwotKyAgaW50IGRpcmxlbiwgZGVudGxlbiwgY29udmxlbjsKLSAgIHN0cnVjdCBkaXJl bnQgKmVudHJ5OwotIAotICAgLyogSWYgd2UgZG9uJ3QgaGF2ZSBhbnkgc3RhdGUsIHRoZW4gZG8g c29tZSBpbml0aWFsaXphdGlvbi4gKi8KLUBAIC0xOTYxLDI2ICsyMjAwLDUyIEBAIHJsX2ZpbGVu YW1lX2NvbXBsZXRpb25fZnVuY3Rpb24gKHRleHQsIHMKLSAKLSAgICAgICAvKiBXZSBhcmVuJ3Qg ZG9uZSB5ZXQuICBXZSBhbHNvIHN1cHBvcnQgdGhlICJ+dXNlciIgc3ludGF4LiAqLwotIAotLSAg ICAgIC8qIFNhdmUgdGhlIHZlcnNpb24gb2YgdGhlIGRpcmVjdG9yeSB0aGF0IHRoZSB1c2VyIHR5 cGVkLiAqLwotLSAgICAgIHVzZXJzX2Rpcm5hbWUgPSBzYXZlc3RyaW5nIChkaXJuYW1lKTsKLSsg ICAgICAvKiBTYXZlIHRoZSB2ZXJzaW9uIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCB0aGUgdXNlciB0 eXBlZCwgZGVxdW90aW5nCi0rCSBpdCBpZiBuZWNlc3NhcnkuICovCi0rICAgICAgaWYgKHJsX2Nv bXBsZXRpb25fZm91bmRfcXVvdGUgJiYgcmxfZmlsZW5hbWVfZGVxdW90aW5nX2Z1bmN0aW9uKQot Kwl1c2Vyc19kaXJuYW1lID0gKCpybF9maWxlbmFtZV9kZXF1b3RpbmdfZnVuY3Rpb24pIChkaXJu YW1lLCBybF9jb21wbGV0aW9uX3F1b3RlX2NoYXJhY3Rlcik7Ci0rICAgICAgZWxzZQotKwl1c2Vy c19kaXJuYW1lID0gc2F2ZXN0cmluZyAoZGlybmFtZSk7Ci0gCi0gICAgICAgaWYgKCpkaXJuYW1l ID09ICd+JykKLSAJewotIAkgIHRlbXAgPSB0aWxkZV9leHBhbmQgKGRpcm5hbWUpOwotLQkgIGZy ZWUgKGRpcm5hbWUpOwotKwkgIHhmcmVlIChkaXJuYW1lKTsKLSAJICBkaXJuYW1lID0gdGVtcDsK LSAJfQotIAotKyAgICAgIC8qIFdlIGhhdmUgc2F2ZWQgdGhlIHBvc3NpYmx5LWRlcXVvdGVkIHZl cnNpb24gb2YgdGhlIGRpcmVjdG9yeSBuYW1lCi0rCSB0aGUgdXNlciB0eXBlZC4gIE5vdyB0cmFu c2Zvcm0gdGhlIGRpcmVjdG9yeSBuYW1lIHdlJ3JlIGdvaW5nIHRvCi0rCSBwYXNzIHRvIG9wZW5k aXIoMikuICBUaGUgZGlyZWN0b3J5IHJld3JpdGUgaG9vayBtb2RpZmllcyBvbmx5IHRoZQotKwkg ZGlyZWN0b3J5IG5hbWU7IHRoZSBkaXJlY3RvcnkgY29tcGxldGlvbiBob29rIG1vZGlmaWVzIGJv dGggdGhlCi0rCSBkaXJlY3RvcnkgbmFtZSBwYXNzZWQgdG8gb3BlbmRpcigyKSBhbmQgdGhlIHZl cnNpb24gdGhlIHVzZXIKLSsJIHR5cGVkLiAgQm90aCB0aGUgZGlyZWN0b3J5IGNvbXBsZXRpb24g YW5kIHJld3JpdGUgaG9va3Mgc2hvdWxkIHBlcmZvcm0KLSsJIGFueSBuZWNlc3NhcnkgZGVxdW90 aW5nLiAgVGhlIGhvb2sgZnVuY3Rpb25zIHJldHVybiAxIGlmIHRoZXkgbW9kaWZ5Ci0rCSB0aGUg ZGlyZWN0b3J5IG5hbWUgYXJndW1lbnQuICBJZiBlaXRoZXIgaG9vayByZXR1cm5zIDAsIGl0IHNo b3VsZAotKwkgbm90IG1vZGlmeSB0aGUgZGlyZWN0b3J5IG5hbWUgcG9pbnRlciBwYXNzZWQgYXMg YW4gYXJndW1lbnQuICovCi0gICAgICAgaWYgKHJsX2RpcmVjdG9yeV9yZXdyaXRlX2hvb2spCi0g CSgqcmxfZGlyZWN0b3J5X3Jld3JpdGVfaG9vaykgKCZkaXJuYW1lKTsKLS0KLS0gICAgICBpZiAo cmxfZGlyZWN0b3J5X2NvbXBsZXRpb25faG9vayAmJiAoKnJsX2RpcmVjdG9yeV9jb21wbGV0aW9u X2hvb2spICgmZGlybmFtZSkpCi0rICAgICAgZWxzZSBpZiAocmxfZGlyZWN0b3J5X2NvbXBsZXRp b25faG9vayAmJiAoKnJsX2RpcmVjdG9yeV9jb21wbGV0aW9uX2hvb2spICgmZGlybmFtZSkpCi0g CXsKLS0JICBmcmVlICh1c2Vyc19kaXJuYW1lKTsKLSsJICB4ZnJlZSAodXNlcnNfZGlybmFtZSk7 Ci0gCSAgdXNlcnNfZGlybmFtZSA9IHNhdmVzdHJpbmcgKGRpcm5hbWUpOwotIAl9Ci0tCi0rICAg ICAgZWxzZSBpZiAocmxfY29tcGxldGlvbl9mb3VuZF9xdW90ZSAmJiBybF9maWxlbmFtZV9kZXF1 b3RpbmdfZnVuY3Rpb24pCi0rCXsKLSsJICAvKiBkZWxldGUgc2luZ2xlIGFuZCBkb3VibGUgcXVv dGVzICovCi0rCSAgeGZyZWUgKGRpcm5hbWUpOwotKwkgIGRpcm5hbWUgPSBzYXZlc3RyaW5nICh1 c2Vyc19kaXJuYW1lKTsKLSsJfQotICAgICAgIGRpcmVjdG9yeSA9IG9wZW5kaXIgKGRpcm5hbWUp OwotKwotKyAgICAgIC8qIE5vdyBkZXF1b3RlIGEgbm9uLW51bGwgZmlsZW5hbWUuICovCi0rICAg ICAgaWYgKGZpbGVuYW1lICYmICpmaWxlbmFtZSAmJiBybF9jb21wbGV0aW9uX2ZvdW5kX3F1b3Rl ICYmIHJsX2ZpbGVuYW1lX2RlcXVvdGluZ19mdW5jdGlvbikKLSsJewotKwkgIC8qIGRlbGV0ZSBz aW5nbGUgYW5kIGRvdWJsZSBxdW90ZXMgKi8KLSsJICB0ZW1wID0gKCpybF9maWxlbmFtZV9kZXF1 b3RpbmdfZnVuY3Rpb24pIChmaWxlbmFtZSwgcmxfY29tcGxldGlvbl9xdW90ZV9jaGFyYWN0ZXIp OwotKwkgIHhmcmVlIChmaWxlbmFtZSk7Ci0rCSAgZmlsZW5hbWUgPSB0ZW1wOwotKwl9Ci0gICAg ICAgZmlsZW5hbWVfbGVuID0gc3RybGVuIChmaWxlbmFtZSk7Ci0gCi0gICAgICAgcmxfZmlsZW5h bWVfY29tcGxldGlvbl9kZXNpcmVkID0gMTsKLUBAIC0xOTk3LDM3ICsyMjYyLDMxIEBAIHJsX2Zp bGVuYW1lX2NvbXBsZXRpb25fZnVuY3Rpb24gKHRleHQsIHMKLSAgIGVudHJ5ID0gKHN0cnVjdCBk aXJlbnQgKilOVUxMOwotICAgd2hpbGUgKGRpcmVjdG9yeSAmJiAoZW50cnkgPSByZWFkZGlyIChk aXJlY3RvcnkpKSkKLSAgICAgewotKyAgICAgIGNvbnZmbiA9IGRlbnRyeSA9IGVudHJ5LT5kX25h bWU7Ci0rICAgICAgY29udmxlbiA9IGRlbnRsZW4gPSBEX05BTUxFTiAoZW50cnkpOwotKwotKyAg ICAgIGlmIChybF9maWxlbmFtZV9yZXdyaXRlX2hvb2spCi0rCXsKLSsJICBjb252Zm4gPSAoKnJs X2ZpbGVuYW1lX3Jld3JpdGVfaG9vaykgKGRlbnRyeSwgZGVudGxlbik7Ci0rCSAgY29udmxlbiA9 IChjb252Zm4gPT0gZGVudHJ5KSA/IGRlbnRsZW4gOiBzdHJsZW4gKGNvbnZmbik7Ci0rCX0KLSsK LSAgICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIG5vIGZpbGVuYW1lLiAgSWYgdGhlIHVzZXIgaGFz IGRpc2FibGVkIHRoZQotICAgICAgICAgIGBtYXRjaC1oaWRkZW4tZmlsZXMnIHZhcmlhYmxlLCBz a2lwIGZpbGVuYW1lcyBiZWdpbm5pbmcgd2l0aCBgLicuCi0gCSBBbGwgb3RoZXIgZW50cmllcyBl eGNlcHQgIi4iIGFuZCAiLi4iIG1hdGNoLiAqLwotICAgICAgIGlmIChmaWxlbmFtZV9sZW4gPT0g MCkKLSAJewotLQkgIGlmIChfcmxfbWF0Y2hfaGlkZGVuX2ZpbGVzID09IDAgJiYgSElEREVOX0ZJ TEUgKGVudHJ5LT5kX25hbWUpKQotKwkgIGlmIChfcmxfbWF0Y2hfaGlkZGVuX2ZpbGVzID09IDAg JiYgSElEREVOX0ZJTEUgKGNvbnZmbikpCi0gCSAgICBjb250aW51ZTsKLSAKLS0JICBpZiAoZW50 cnktPmRfbmFtZVswXSAhPSAnLicgfHwKLS0JICAgICAgIChlbnRyeS0+ZF9uYW1lWzFdICYmCi0t CQkgKGVudHJ5LT5kX25hbWVbMV0gIT0gJy4nIHx8IGVudHJ5LT5kX25hbWVbMl0pKSkKLSsJICBp ZiAoY29udmZuWzBdICE9ICcuJyB8fAotKwkgICAgICAgKGNvbnZmblsxXSAmJiAoY29udmZuWzFd ICE9ICcuJyB8fCBjb252Zm5bMl0pKSkKLSAJICAgIGJyZWFrOwotIAl9Ci0gICAgICAgZWxzZQot IAl7Ci0tCSAgLyogT3RoZXJ3aXNlLCBpZiB0aGVzZSBtYXRjaCB1cCB0byB0aGUgbGVuZ3RoIG9m IGZpbGVuYW1lLCB0aGVuCi0tCSAgICAgaXQgaXMgYSBtYXRjaC4gKi8KLS0JICBpZiAoX3JsX2Nv bXBsZXRpb25fY2FzZV9mb2xkKQotLQkgICAgewotLQkgICAgICBpZiAoKF9ybF90b19sb3dlciAo ZW50cnktPmRfbmFtZVswXSkgPT0gX3JsX3RvX2xvd2VyIChmaWxlbmFtZVswXSkpICYmCi0tCQkg ICgoKGludClEX05BTUxFTiAoZW50cnkpKSA+PSBmaWxlbmFtZV9sZW4pICYmCi0tCQkgIChfcmxf c3RybmljbXAgKGZpbGVuYW1lLCBlbnRyeS0+ZF9uYW1lLCBmaWxlbmFtZV9sZW4pID09IDApKQot LQkJYnJlYWs7Ci0tCSAgICB9Ci0tCSAgZWxzZQotLQkgICAgewotLQkgICAgICBpZiAoKGVudHJ5 LT5kX25hbWVbMF0gPT0gZmlsZW5hbWVbMF0pICYmCi0tCQkgICgoKGludClEX05BTUxFTiAoZW50 cnkpKSA+PSBmaWxlbmFtZV9sZW4pICYmCi0tCQkgIChzdHJuY21wIChmaWxlbmFtZSwgZW50cnkt PmRfbmFtZSwgZmlsZW5hbWVfbGVuKSA9PSAwKSkKLS0JCWJyZWFrOwotLQkgICAgfQotKwkgIGlm IChjb21wbGV0ZV9mbmNtcCAoY29udmZuLCBjb252bGVuLCBmaWxlbmFtZSwgZmlsZW5hbWVfbGVu KSkKLSsJICAgIGJyZWFrOwotIAl9Ci0gICAgIH0KLSAKLUBAIC0yMDQwLDE3ICsyMjk5LDE3IEBA IHJsX2ZpbGVuYW1lX2NvbXBsZXRpb25fZnVuY3Rpb24gKHRleHQsIHMKLSAJfQotICAgICAgIGlm IChkaXJuYW1lKQotIAl7Ci0tCSAgZnJlZSAoZGlybmFtZSk7Ci0rCSAgeGZyZWUgKGRpcm5hbWUp OwotIAkgIGRpcm5hbWUgPSAoY2hhciAqKU5VTEw7Ci0gCX0KLSAgICAgICBpZiAoZmlsZW5hbWUp Ci0gCXsKLS0JICBmcmVlIChmaWxlbmFtZSk7Ci0rCSAgeGZyZWUgKGZpbGVuYW1lKTsKLSAJICBm aWxlbmFtZSA9IChjaGFyICopTlVMTDsKLSAJfQotICAgICAgIGlmICh1c2Vyc19kaXJuYW1lKQot IAl7Ci0tCSAgZnJlZSAodXNlcnNfZGlybmFtZSk7Ci0rCSAgeGZyZWUgKHVzZXJzX2Rpcm5hbWUp OwotIAkgIHVzZXJzX2Rpcm5hbWUgPSAoY2hhciAqKU5VTEw7Ci0gCX0KLSAKLUBAIC0yMDg0LDI3 ICsyMzQzLDMwIEBAIHJsX2ZpbGVuYW1lX2NvbXBsZXRpb25fZnVuY3Rpb24gKHRleHQsIHMKLSAJ CXRlbXBbZGlybGVuKytdID0gJy8nOwotIAkgICAgfQotIAotLQkgIHN0cmNweSAodGVtcCArIGRp cmxlbiwgZW50cnktPmRfbmFtZSk7Ci0rCSAgc3RyY3B5ICh0ZW1wICsgZGlybGVuLCBjb252Zm4p OwotIAl9Ci0gICAgICAgZWxzZQotLQl0ZW1wID0gc2F2ZXN0cmluZyAoZW50cnktPmRfbmFtZSk7 Ci0rCXRlbXAgPSBzYXZlc3RyaW5nIChjb252Zm4pOwotKwotKyAgICAgIGlmIChjb252Zm4gIT0g ZGVudHJ5KQotKwl4ZnJlZSAoY29udmZuKTsKLSAKLSAgICAgICByZXR1cm4gKHRlbXApOwotICAg ICB9Ci0gfQotIAotIC8qIEFuIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYSBtZW51IGNvbXBs ZXRpb24gZnVuY3Rpb24gYSBsYSB0Y3NoLiAgVGhlCi0tICAgZmlyc3QgdGltZSAoaWYgdGhlIGxh c3QgcmVhZGxpbmUgY29tbWFuZCB3YXMgbm90IHJsX21lbnVfY29tcGxldGUpLCB3ZQotKyAgIGZp cnN0IHRpbWUgKGlmIHRoZSBsYXN0IHJlYWRsaW5lIGNvbW1hbmQgd2FzIG5vdCBybF9vbGRfbWVu dV9jb21wbGV0ZSksIHdlCi0gICAgZ2VuZXJhdGUgdGhlIGxpc3Qgb2YgbWF0Y2hlcy4gIFRoaXMg Y29kZSBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIGNvZGUgaW4KLSAgICBybF9jb21wbGV0ZV9pbnRl cm5hbCAtLSB0aGVyZSBzaG91bGQgYmUgYSB3YXkgdG8gY29tYmluZSB0aGUgdHdvLiAgVGhlbiwK LSAgICBmb3IgZWFjaCBpdGVtIGluIHRoZSBsaXN0IG9mIG1hdGNoZXMsIHdlIGluc2VydCB0aGUg bWF0Y2ggaW4gYW4gdW5kb2FibGUKLSAgICBmYXNoaW9uLCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBj aGFyYWN0ZXIgYXBwZW5kZWQgKHRoaXMgaGFwcGVucyBvbiB0aGUKLS0gICBzZWNvbmQgYW5kIHN1 YnNlcXVlbnQgY29uc2VjdXRpdmUgY2FsbHMgdG8gcmxfbWVudV9jb21wbGV0ZSkuICBXaGVuIHdl Ci0rICAgc2Vjb25kIGFuZCBzdWJzZXF1ZW50IGNvbnNlY3V0aXZlIGNhbGxzIHRvIHJsX29sZF9t ZW51X2NvbXBsZXRlKS4gIFdoZW4gd2UKLSAgICBoaXQgdGhlIGVuZCBvZiB0aGUgbWF0Y2ggbGlz dCwgd2UgcmVzdG9yZSB0aGUgb3JpZ2luYWwgdW5tYXRjaGVkIHRleHQsCi0gICAgcmluZyB0aGUg YmVsbCwgYW5kIHJlc2V0IHRoZSBjb3VudGVyIHRvIHplcm8uICovCi0gaW50Ci0tcmxfbWVudV9j b21wbGV0ZSAoY291bnQsIGlnbm9yZSkKLS0gICAgIGludCBjb3VudCwgaWdub3JlOwotK3JsX29s ZF9tZW51X2NvbXBsZXRlIChjb3VudCwgaW52b2tpbmdfa2V5KQotKyAgICAgaW50IGNvdW50LCBp bnZva2luZ19rZXk7Ci0gewotICAgcmxfY29tcGVudHJ5X2Z1bmNfdCAqb3VyX2Z1bmM7Ci0gICBp bnQgbWF0Y2hpbmdfZmlsZW5hbWVzLCBmb3VuZF9xdW90ZTsKLUBAIC0yMTE5LDcgKzIzODEsNyBA QCBybF9tZW51X2NvbXBsZXRlIChjb3VudCwgaWdub3JlKQotIAotICAgLyogVGhlIGZpcnN0IHRp bWUgdGhyb3VnaCwgd2UgZ2VuZXJhdGUgdGhlIGxpc3Qgb2YgbWF0Y2hlcyBhbmQgc2V0IHRoaW5n cwotICAgICAgdXAgdG8gaW5zZXJ0IHRoZW0uICovCi0tICBpZiAocmxfbGFzdF9mdW5jICE9IHJs X21lbnVfY29tcGxldGUpCi0rICBpZiAocmxfbGFzdF9mdW5jICE9IHJsX29sZF9tZW51X2NvbXBs ZXRlKQotICAgICB7Ci0gICAgICAgLyogQ2xlYW4gdXAgZnJvbSBwcmV2aW91cyBjYWxsLCBpZiBh bnkuICovCi0gICAgICAgRlJFRSAob3JpZ190ZXh0KTsKLUBAIC0yMTI5LDEwICsyMzkxLDE2IEBA IHJsX21lbnVfY29tcGxldGUgKGNvdW50LCBpZ25vcmUpCi0gICAgICAgbWF0Y2hfbGlzdF9pbmRl eCA9IG1hdGNoX2xpc3Rfc2l6ZSA9IDA7Ci0gICAgICAgbWF0Y2hlcyA9IChjaGFyICoqKU5VTEw7 Ci0gCi0rICAgICAgcmxfY29tcGxldGlvbl9pbnZva2luZ19rZXkgPSBpbnZva2luZ19rZXk7Ci0r Ci0rICAgICAgUkxfU0VUU1RBVEUoUkxfU1RBVEVfQ09NUExFVElORyk7Ci0rCi0gICAgICAgLyog T25seSB0aGUgY29tcGxldGlvbiBlbnRyeSBmdW5jdGlvbiBjYW4gY2hhbmdlIHRoZXNlLiAqLwot ICAgICAgIHNldF9jb21wbGV0aW9uX2RlZmF1bHRzICgnJScpOwotIAotLSAgICAgIG91cl9mdW5j ID0gcmxfY29tcGxldGlvbl9lbnRyeV9mdW5jdGlvbgotKyAgICAgIG91cl9mdW5jID0gcmxfbWVu dV9jb21wbGV0aW9uX2VudHJ5X2Z1bmN0aW9uOwotKyAgICAgIGlmIChvdXJfZnVuYyA9PSAwKQot KwlvdXJfZnVuYyA9IHJsX2NvbXBsZXRpb25fZW50cnlfZnVuY3Rpb24KLSAJCQk/IHJsX2NvbXBs ZXRpb25fZW50cnlfZnVuY3Rpb24KLSAJCQk6IHJsX2ZpbGVuYW1lX2NvbXBsZXRpb25fZnVuY3Rp b247Ci0gCi1AQCAtMjE2MCwxOSArMjQyOCwyNSBAQCBybF9tZW51X2NvbXBsZXRlIChjb3VudCwg aWdub3JlKQotIAotICAgICAgIGlmIChtYXRjaGVzID09IDAgfHwgcG9zdHByb2Nlc3NfbWF0Y2hl cyAoJm1hdGNoZXMsIG1hdGNoaW5nX2ZpbGVuYW1lcykgPT0gMCkKLSAJewotLSAgICAJICBybF9k aW5nICgpOwotKwkgIHJsX2RpbmcgKCk7Ci0gCSAgRlJFRSAobWF0Y2hlcyk7Ci0gCSAgbWF0Y2hl cyA9IChjaGFyICoqKTA7Ci0gCSAgRlJFRSAob3JpZ190ZXh0KTsKLSAJICBvcmlnX3RleHQgPSAo Y2hhciAqKTA7Ci0tICAgIAkgIGNvbXBsZXRpb25fY2hhbmdlZF9idWZmZXIgPSAwOwotLSAgICAg ICAgICByZXR1cm4gKDApOwotKwkgIGNvbXBsZXRpb25fY2hhbmdlZF9idWZmZXIgPSAwOwotKwkg IFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfQ09NUExFVElORyk7Ci0rCSAgcmV0dXJuICgwKTsKLSAJ fQotIAotKyAgICAgIFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfQ09NUExFVElORyk7Ci0rCi0gICAg ICAgZm9yIChtYXRjaF9saXN0X3NpemUgPSAwOyBtYXRjaGVzW21hdGNoX2xpc3Rfc2l6ZV07IG1h dGNoX2xpc3Rfc2l6ZSsrKQotICAgICAgICAgOwotICAgICAgIC8qIG1hdGNoZXNbMF0gaXMgbGNk IGlmIG1hdGNoX2xpc3Rfc2l6ZSA+IDEsIGJ1dCB0aGUgY2lyY3VsYXIgYnVmZmVyCi0gCSBjb2Rl IGJlbG93IHNob3VsZCB0YWtlIGNhcmUgb2YgaXQuICovCi0rCi0rICAgICAgaWYgKG1hdGNoX2xp c3Rfc2l6ZSA+IDEgJiYgX3JsX2NvbXBsZXRlX3Nob3dfYWxsKQotKwlkaXNwbGF5X21hdGNoZXMg KG1hdGNoZXMpOwotICAgICB9Ci0gCi0gICAvKiBOb3cgd2UgaGF2ZSB0aGUgbGlzdCBvZiBtYXRj aGVzLiAgUmVwbGFjZSB0aGUgdGV4dCBiZXR3ZWVuCi1AQCAtMjE5MCw3ICsyNDY0LDEwIEBAIHJs X21lbnVfY29tcGxldGUgKGNvdW50LCBpZ25vcmUpCi0gCi0gICBtYXRjaF9saXN0X2luZGV4ICs9 IGNvdW50OwotICAgaWYgKG1hdGNoX2xpc3RfaW5kZXggPCAwKQotLSAgICBtYXRjaF9saXN0X2lu ZGV4ICs9IG1hdGNoX2xpc3Rfc2l6ZTsKLSsgICAgewotKyAgICAgIHdoaWxlIChtYXRjaF9saXN0 X2luZGV4IDwgMCkKLSsJbWF0Y2hfbGlzdF9pbmRleCArPSBtYXRjaF9saXN0X3NpemU7Ci0rICAg IH0KLSAgIGVsc2UKLSAgICAgbWF0Y2hfbGlzdF9pbmRleCAlPSBtYXRjaF9saXN0X3NpemU7Ci0g Ci1AQCAtMjIwOSwzICsyNDg2LDE4MCBAQCBybF9tZW51X2NvbXBsZXRlIChjb3VudCwgaWdub3Jl KQotICAgY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IDE7Ci0gICByZXR1cm4gKDApOwotIH0K LSsKLStpbnQKLStybF9tZW51X2NvbXBsZXRlIChjb3VudCwgaWdub3JlKQotKyAgICAgaW50IGNv dW50LCBpZ25vcmU7Ci0rewotKyAgcmxfY29tcGVudHJ5X2Z1bmNfdCAqb3VyX2Z1bmM7Ci0rICBp bnQgbWF0Y2hpbmdfZmlsZW5hbWVzLCBmb3VuZF9xdW90ZTsKLSsKLSsgIHN0YXRpYyBjaGFyICpv cmlnX3RleHQ7Ci0rICBzdGF0aWMgY2hhciAqKm1hdGNoZXMgPSAoY2hhciAqKikwOwotKyAgc3Rh dGljIGludCBtYXRjaF9saXN0X2luZGV4ID0gMDsKLSsgIHN0YXRpYyBpbnQgbWF0Y2hfbGlzdF9z aXplID0gMDsKLSsgIHN0YXRpYyBpbnQgbm9udHJpdmlhbF9sY2QgPSAwOwotKyAgc3RhdGljIGlu dCBmdWxsX2NvbXBsZXRpb24gPSAwOwkvKiBzZXQgdG8gMSBpZiBtZW51IGNvbXBsZXRpb24gc2hv dWxkIHJlaW5pdGlhbGl6ZSBvbiBuZXh0IGNhbGwgKi8KLSsgIHN0YXRpYyBpbnQgb3JpZ19zdGFy dCwgb3JpZ19lbmQ7Ci0rICBzdGF0aWMgY2hhciBxdW90ZV9jaGFyOwotKyAgc3RhdGljIGludCBk ZWxpbWl0ZXIsIGNzdGF0ZTsKLSsKLSsgIC8qIFRoZSBmaXJzdCB0aW1lIHRocm91Z2gsIHdlIGdl bmVyYXRlIHRoZSBsaXN0IG9mIG1hdGNoZXMgYW5kIHNldCB0aGluZ3MKLSsgICAgIHVwIHRvIGlu c2VydCB0aGVtLiAqLwotKyAgaWYgKChybF9sYXN0X2Z1bmMgIT0gcmxfbWVudV9jb21wbGV0ZSAm JiBybF9sYXN0X2Z1bmMgIT0gcmxfYmFja3dhcmRfbWVudV9jb21wbGV0ZSkgfHwgZnVsbF9jb21w bGV0aW9uKQotKyAgICB7Ci0rICAgICAgLyogQ2xlYW4gdXAgZnJvbSBwcmV2aW91cyBjYWxsLCBp ZiBhbnkuICovCi0rICAgICAgRlJFRSAob3JpZ190ZXh0KTsKLSsgICAgICBpZiAobWF0Y2hlcykK LSsJX3JsX2ZyZWVfbWF0Y2hfbGlzdCAobWF0Y2hlcyk7Ci0rCi0rICAgICAgbWF0Y2hfbGlzdF9p bmRleCA9IG1hdGNoX2xpc3Rfc2l6ZSA9IDA7Ci0rICAgICAgbWF0Y2hlcyA9IChjaGFyICoqKU5V TEw7Ci0rCi0rICAgICAgZnVsbF9jb21wbGV0aW9uID0gMDsKLSsKLSsgICAgICBSTF9TRVRTVEFU RShSTF9TVEFURV9DT01QTEVUSU5HKTsKLSsKLSsgICAgICAvKiBPbmx5IHRoZSBjb21wbGV0aW9u IGVudHJ5IGZ1bmN0aW9uIGNhbiBjaGFuZ2UgdGhlc2UuICovCi0rICAgICAgc2V0X2NvbXBsZXRp b25fZGVmYXVsdHMgKCclJyk7Ci0rCi0rICAgICAgb3VyX2Z1bmMgPSBybF9tZW51X2NvbXBsZXRp b25fZW50cnlfZnVuY3Rpb247Ci0rICAgICAgaWYgKG91cl9mdW5jID09IDApCi0rCW91cl9mdW5j ID0gcmxfY29tcGxldGlvbl9lbnRyeV9mdW5jdGlvbgotKwkJCT8gcmxfY29tcGxldGlvbl9lbnRy eV9mdW5jdGlvbgotKwkJCTogcmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5jdGlvbjsKLSsKLSsg ICAgICAvKiBXZSBub3cgbG9vayBiYWNrd2FyZHMgZm9yIHRoZSBzdGFydCBvZiBhIGZpbGVuYW1l L3ZhcmlhYmxlIHdvcmQuICovCi0rICAgICAgb3JpZ19lbmQgPSBybF9wb2ludDsKLSsgICAgICBm b3VuZF9xdW90ZSA9IGRlbGltaXRlciA9IDA7Ci0rICAgICAgcXVvdGVfY2hhciA9ICdcMCc7Ci0r Ci0rICAgICAgaWYgKHJsX3BvaW50KQotKwkvKiBUaGlzIChwb3NzaWJseSkgY2hhbmdlcyBybF9w b2ludC4gIElmIGl0IHJldHVybnMgYSBub24temVybyBjaGFyLAotKwkgICB3ZSBrbm93IHdlIGhh dmUgYW4gb3BlbiBxdW90ZS4gKi8KLSsJcXVvdGVfY2hhciA9IF9ybF9maW5kX2NvbXBsZXRpb25f d29yZCAoJmZvdW5kX3F1b3RlLCAmZGVsaW1pdGVyKTsKLSsKLSsgICAgICBvcmlnX3N0YXJ0ID0g cmxfcG9pbnQ7Ci0rICAgICAgcmxfcG9pbnQgPSBvcmlnX2VuZDsKLSsKLSsgICAgICBvcmlnX3Rl eHQgPSBybF9jb3B5X3RleHQgKG9yaWdfc3RhcnQsIG9yaWdfZW5kKTsKLSsgICAgICBtYXRjaGVz ID0gZ2VuX2NvbXBsZXRpb25fbWF0Y2hlcyAob3JpZ190ZXh0LCBvcmlnX3N0YXJ0LCBvcmlnX2Vu ZCwKLSsJCQkJCW91cl9mdW5jLCBmb3VuZF9xdW90ZSwgcXVvdGVfY2hhcik7Ci0rCi0rICAgICAg bm9udHJpdmlhbF9sY2QgPSBtYXRjaGVzICYmIHN0cmNtcCAob3JpZ190ZXh0LCBtYXRjaGVzWzBd KSAhPSAwOwotKwotKyAgICAgIC8qIElmIHdlIGFyZSBtYXRjaGluZyBmaWxlbmFtZXMsIHRoZSBh dHRlbXB0ZWQgY29tcGxldGlvbiBmdW5jdGlvbiB3aWxsCi0rCSBoYXZlIHNldCBybF9maWxlbmFt ZV9jb21wbGV0aW9uX2Rlc2lyZWQgdG8gYSBub24temVybyB2YWx1ZS4gIFRoZSBiYXNpYwotKwkg cmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5jdGlvbiBkb2VzIHRoaXMuICovCi0rICAgICAgbWF0 Y2hpbmdfZmlsZW5hbWVzID0gcmxfZmlsZW5hbWVfY29tcGxldGlvbl9kZXNpcmVkOwotKwotKyAg ICAgIGlmIChtYXRjaGVzID09IDAgfHwgcG9zdHByb2Nlc3NfbWF0Y2hlcyAoJm1hdGNoZXMsIG1h dGNoaW5nX2ZpbGVuYW1lcykgPT0gMCkKLSsJewotKwkgIHJsX2RpbmcgKCk7Ci0rCSAgRlJFRSAo bWF0Y2hlcyk7Ci0rCSAgbWF0Y2hlcyA9IChjaGFyICoqKTA7Ci0rCSAgRlJFRSAob3JpZ190ZXh0 KTsKLSsJICBvcmlnX3RleHQgPSAoY2hhciAqKTA7Ci0rCSAgY29tcGxldGlvbl9jaGFuZ2VkX2J1 ZmZlciA9IDA7Ci0rCSAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9DT01QTEVUSU5HKTsKLSsJICBy ZXR1cm4gKDApOwotKwl9Ci0rCi0rICAgICAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9DT01QTEVU SU5HKTsKLSsKLSsgICAgICBmb3IgKG1hdGNoX2xpc3Rfc2l6ZSA9IDA7IG1hdGNoZXNbbWF0Y2hf bGlzdF9zaXplXTsgbWF0Y2hfbGlzdF9zaXplKyspCi0rICAgICAgICA7Ci0rCi0rICAgICAgaWYg KG1hdGNoX2xpc3Rfc2l6ZSA9PSAwKSAKLSsJewotKwkgIHJsX2RpbmcgKCk7Ci0rCSAgRlJFRSAo bWF0Y2hlcyk7Ci0rCSAgbWF0Y2hlcyA9IChjaGFyICoqKTA7Ci0rCSAgbWF0Y2hfbGlzdF9pbmRl eCA9IDA7Ci0rCSAgY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IDA7Ci0rCSAgcmV0dXJuICgw KTsKLSsgICAgICAgIH0KLSsKLSsgICAgICAvKiBtYXRjaGVzWzBdIGlzIGxjZCBpZiBtYXRjaF9s aXN0X3NpemUgPiAxLCBidXQgdGhlIGNpcmN1bGFyIGJ1ZmZlcgotKwkgY29kZSBiZWxvdyBzaG91 bGQgdGFrZSBjYXJlIG9mIGl0LiAqLwotKyAgICAgIGlmICgqbWF0Y2hlc1swXSkKLSsJewotKwkg IGluc2VydF9tYXRjaCAobWF0Y2hlc1swXSwgb3JpZ19zdGFydCwgbWF0Y2hlc1sxXSA/IE1VTFRf TUFUQ0ggOiBTSU5HTEVfTUFUQ0gsICZxdW90ZV9jaGFyKTsKLSsJICBvcmlnX2VuZCA9IG9yaWdf c3RhcnQgKyBzdHJsZW4gKG1hdGNoZXNbMF0pOwotKwkgIGNvbXBsZXRpb25fY2hhbmdlZF9idWZm ZXIgPSBTVFJFUSAob3JpZ190ZXh0LCBtYXRjaGVzWzBdKSA9PSAwOwotKwl9Ci0rCi0rICAgICAg aWYgKG1hdGNoX2xpc3Rfc2l6ZSA+IDEgJiYgX3JsX2NvbXBsZXRlX3Nob3dfYWxsKQotKwl7Ci0r CSAgZGlzcGxheV9tYXRjaGVzIChtYXRjaGVzKTsKLSsJICAvKiBJZiB0aGVyZSBhcmUgc28gbWFu eSBtYXRjaGVzIHRoYXQgdGhlIHVzZXIgaGFzIHRvIGJlIGFza2VkCi0rCSAgICAgd2hldGhlciBv ciBub3QgaGUgd2FudHMgdG8gc2VlIHRoZSBtYXRjaGVzLCBtZW51IGNvbXBsZXRpb24KLSsJICAg ICBpcyB1bndpZWxkeS4gKi8KLSsJICBpZiAocmxfY29tcGxldGlvbl9xdWVyeV9pdGVtcyA+IDAg JiYgbWF0Y2hfbGlzdF9zaXplID49IHJsX2NvbXBsZXRpb25fcXVlcnlfaXRlbXMpCi0rCSAgICB7 Ci0rCSAgICAgIHJsX2RpbmcgKCk7Ci0rCSAgICAgIEZSRUUgKG1hdGNoZXMpOwotKwkgICAgICBt YXRjaGVzID0gKGNoYXIgKiopMDsKLSsJICAgICAgZnVsbF9jb21wbGV0aW9uID0gMTsKLSsJICAg ICAgcmV0dXJuICgwKTsKLSsJICAgIH0KLSsJfQotKyAgICAgIGVsc2UgaWYgKG1hdGNoX2xpc3Rf c2l6ZSA8PSAxKQotKwl7Ci0rCSAgYXBwZW5kX3RvX21hdGNoIChtYXRjaGVzWzBdLCBkZWxpbWl0 ZXIsIHF1b3RlX2NoYXIsIG5vbnRyaXZpYWxfbGNkKTsKLSsJICBmdWxsX2NvbXBsZXRpb24gPSAx OwotKwkgIHJldHVybiAoMCk7Ci0rCX0KLSsgICAgICBlbHNlIGlmIChfcmxfbWVudV9jb21wbGV0 ZV9wcmVmaXhfZmlyc3QgJiYgbWF0Y2hfbGlzdF9zaXplID4gMSkKLSsJewotKwkgIHJsX2Rpbmcg KCk7Ci0rCSAgcmV0dXJuICgwKTsKLSsJfQotKyAgICB9Ci0rCi0rICAvKiBOb3cgd2UgaGF2ZSB0 aGUgbGlzdCBvZiBtYXRjaGVzLiAgUmVwbGFjZSB0aGUgdGV4dCBiZXR3ZWVuCi0rICAgICBybF9s aW5lX2J1ZmZlcltvcmlnX3N0YXJ0XSBhbmQgcmxfbGluZV9idWZmZXJbcmxfcG9pbnRdIHdpdGgK LSsgICAgIG1hdGNoZXNbbWF0Y2hfbGlzdF9pbmRleF0sIGFuZCBhZGQgYW55IG5lY2Vzc2FyeSBj bG9zaW5nIGNoYXIuICovCi0rCi0rICBpZiAobWF0Y2hlcyA9PSAwIHx8IG1hdGNoX2xpc3Rfc2l6 ZSA9PSAwKSAKLSsgICAgewotKyAgICAgIHJsX2RpbmcgKCk7Ci0rICAgICAgRlJFRSAobWF0Y2hl cyk7Ci0rICAgICAgbWF0Y2hlcyA9IChjaGFyICoqKTA7Ci0rICAgICAgY29tcGxldGlvbl9jaGFu Z2VkX2J1ZmZlciA9IDA7Ci0rICAgICAgcmV0dXJuICgwKTsKLSsgICAgfQotKwotKyAgbWF0Y2hf bGlzdF9pbmRleCArPSBjb3VudDsKLSsgIGlmIChtYXRjaF9saXN0X2luZGV4IDwgMCkKLSsgICAg ewotKyAgICAgIHdoaWxlIChtYXRjaF9saXN0X2luZGV4IDwgMCkKLSsJbWF0Y2hfbGlzdF9pbmRl eCArPSBtYXRjaF9saXN0X3NpemU7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgbWF0Y2hfbGlzdF9p bmRleCAlPSBtYXRjaF9saXN0X3NpemU7Ci0rCi0rICBpZiAobWF0Y2hfbGlzdF9pbmRleCA9PSAw ICYmIG1hdGNoX2xpc3Rfc2l6ZSA+IDEpCi0rICAgIHsKLSsgICAgICBybF9kaW5nICgpOwotKyAg ICAgIGluc2VydF9tYXRjaCAobWF0Y2hlc1swXSwgb3JpZ19zdGFydCwgTVVMVF9NQVRDSCwgJnF1 b3RlX2NoYXIpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBpbnNlcnRfbWF0Y2gg KG1hdGNoZXNbbWF0Y2hfbGlzdF9pbmRleF0sIG9yaWdfc3RhcnQsIFNJTkdMRV9NQVRDSCwgJnF1 b3RlX2NoYXIpOwotKyAgICAgIGFwcGVuZF90b19tYXRjaCAobWF0Y2hlc1ttYXRjaF9saXN0X2lu ZGV4XSwgZGVsaW1pdGVyLCBxdW90ZV9jaGFyLAotKwkJICAgICAgIHN0cmNtcCAob3JpZ190ZXh0 LCBtYXRjaGVzW21hdGNoX2xpc3RfaW5kZXhdKSk7Ci0rICAgIH0KLSsKLSsgIGNvbXBsZXRpb25f Y2hhbmdlZF9idWZmZXIgPSAxOwotKyAgcmV0dXJuICgwKTsKLSt9Ci0rCi0raW50Ci0rcmxfYmFj a3dhcmRfbWVudV9jb21wbGV0ZSAoY291bnQsIGtleSkKLSsgICAgIGludCBjb3VudCwga2V5Owot K3sKLSsgIC8qIFBvc2l0aXZlIGFyZ3VtZW50cyB0byBiYWNrd2FyZC1tZW51LWNvbXBsZXRlIHRy YW5zbGF0ZSBpbnRvIG5lZ2F0aXZlCi0rICAgICBhcmd1bWVudHMgZm9yIG1lbnUtY29tcGxldGUs IGFuZCB2aWNlIHZlcnNhLiAqLwotKyAgcmV0dXJuIChybF9tZW51X2NvbXBsZXRlICgtY291bnQs IGtleSkpOwotK30KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2NvbmZpZy5o LmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2Nv bmZpZy5oLmluCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9yZWFkbGluZS9jb25maWcuaC5pbgkyMDExLTA3LTAzIDEwOjQxOjIxLjAw MDAwMDAwMCArMDIwMAotQEAgLTQsNiArNCw4IEBACi0gICAgY2hhcmFjdGVycywgZXZlbiBpZiB0 aGUgT1Mgc3VwcG9ydHMgdGhlbS4gKi8KLSAjdW5kZWYgTk9fTVVMVElCWVRFX1NVUFBPUlQKLSAK LSsjdW5kZWYgX0ZJTEVfT0ZGU0VUX0JJVFMKLSsKLSAvKiBEZWZpbmUgaWYgb24gTUlOSVguICAq LwotICN1bmRlZiBfTUlOSVgKLSAKLUBAIC0xMywxMiArMTUsMTYgQEAKLSAjdW5kZWYgVk9JRF9T SUdIQU5ETEVSCi0gCi0gLyogQ2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBjb21waWxlci4gKi8KLS0j dW5kZWYgY29uc3QKLSsjdW5kZWYgc2lnX2F0b21pY190Ci0gCi0gI3VuZGVmIHNpemVfdAotIAot ICN1bmRlZiBzc2l6ZV90Ci0gCi0rI3VuZGVmIGNvbnN0Ci0rCi0rI3VuZGVmIHZvbGF0aWxlCi0r Ci0gI3VuZGVmIFBST1RPVFlQRVMKLSAKLSAjdW5kZWYgX19DSEFSX1VOU0lHTkVEX18KLUBAIC00 MSw2ICs0NywxNSBAQAotIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgaXNhc2NpaSBmdW5jdGlv bi4gKi8KLSAjdW5kZWYgSEFWRV9JU0FTQ0lJCi0gCi0rLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRo ZSBpc3djdHlwZSBmdW5jdGlvbi4gICovCi0rI3VuZGVmIEhBVkVfSVNXQ1RZUEUKLSsKLSsvKiBE ZWZpbmUgaWYgeW91IGhhdmUgdGhlIGlzd2xvd2VyIGZ1bmN0aW9uLiAgKi8KLSsjdW5kZWYgSEFW RV9JU1dMT1dFUgotKwotKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgaXN3dXBwZXIgZnVuY3Rp b24uICAqLwotKyN1bmRlZiBIQVZFX0lTV1VQUEVSCi0rCi0gLyogRGVmaW5lIGlmIHlvdSBoYXZl IHRoZSBpc3hkaWdpdCBmdW5jdGlvbi4gKi8KLSAjdW5kZWYgSEFWRV9JU1hESUdJVAotIAotQEAg LTg4LDExICsxMDMsMjMgQEAKLSAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHRjZ2V0YXR0ciBm dW5jdGlvbi4gICovCi0gI3VuZGVmIEhBVkVfVENHRVRBVFRSCi0gCi0rLyogRGVmaW5lIGlmIHlv dSBoYXZlIHRoZSB0b3dsb3dlciBmdW5jdGlvbi4gICovCi0rI3VuZGVmIEhBVkVfVE9XTE9XRVIK LSsKLSsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHRvd3VwcGVyIGZ1bmN0aW9uLiAgKi8KLSsj dW5kZWYgSEFWRV9UT1dVUFBFUgotKwotIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgdnNucHJp bnRmIGZ1bmN0aW9uLiAgKi8KLSAjdW5kZWYgSEFWRV9WU05QUklOVEYKLSAKLS0vKiBEZWZpbmUg aWYgeW91IGhhdmUgdGhlIHdjdG9tYiBmdW5jdGlvbi4gICovCi0tI3VuZGVmIEhBVkVfV0NUT01C IAotKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2NydG9tYiBmdW5jdGlvbi4gICovCi0rI3Vu ZGVmIEhBVkVfV0NSVE9NQiAKLSsKLSsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHdjc2NvbGwg ZnVuY3Rpb24uICAqLwotKyN1bmRlZiBIQVZFX1dDU0NPTEwKLSsKLSsvKiBEZWZpbmUgaWYgeW91 IGhhdmUgdGhlIHdjdHlwZSBmdW5jdGlvbi4gICovCi0rI3VuZGVmIEhBVkVfV0NUWVBFCi0gCi0g LyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB3Y3dpZHRoIGZ1bmN0aW9uLiAgKi8KLSAjdW5kZWYg SEFWRV9XQ1dJRFRICi1AQCAtMTc0LDExICsyMDEsMjAgQEAKLSAvKiBEZWZpbmUgaWYgeW91IGhh dmUgdGhlIDx3Y2hhci5oPiBoZWFkZXIgZmlsZS4gICovCi0gI3VuZGVmIEhBVkVfV0NIQVJfSAot IAotLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHZhcmFyZ3MuaD4gaGVhZGVyIGZpbGUuICAq LwotKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHdjdHlwZS5oPiBoZWFkZXIgZmlsZS4gICov Ci0gI3VuZGVmIEhBVkVfV0NUWVBFX0gKLSAKLSAjdW5kZWYgSEFWRV9NQlNUQVRFX1QKLSAKLSsv KiBEZWZpbmUgaWYgeW91IGhhdmUgd2NoYXJfdCBpbiA8d2N0eXBlLmg+LiAqLwotKyN1bmRlZiBI QVZFX1dDSEFSX1QgCi0rCi0rLyogRGVmaW5lIGlmIHlvdSBoYXZlIHdjdHlwZV90IGluIDx3Y3R5 cGUuaD4uICovCi0rI3VuZGVmIEhBVkVfV0NUWVBFX1QKLSsKLSsvKiBEZWZpbmUgaWYgeW91IGhh dmUgd2ludF90IGluIDx3Y3R5cGUuaD4uICovICAKLSsjdW5kZWYgSEFWRV9XSU5UX1QgIAotKwot IC8qIERlZmluZSBpZiB5b3UgaGF2ZSA8bGFuZ2luZm8uaD4gYW5kIG5sX2xhbmdpbmZvKENPREVT RVQpLiAqLwotICN1bmRlZiBIQVZFX0xBTkdJTkZPX0NPREVTRVQKLSAKLUBAIC0yMjMsMTAgKzI1 OSw2IEBACi0gIyAgZGVmaW5lIFRFUk1JT1NfTUlTU0lORwotICNlbmRpZgotIAotLSNpZiBkZWZp bmVkIChTVFJDT0xMX0JST0tFTikKLS0jICB1bmRlZiBIQVZFX1NUUkNPTEwKLS0jZW5kaWYKLS0K LSAjaWYgZGVmaW5lZCAoX19TVERDX18pICYmIGRlZmluZWQgKEhBVkVfU1REQVJHX0gpCi0gIyAg ZGVmaW5lIFBSRUZFUl9TVERBUkcKLSAjICBkZWZpbmUgVVNFX1ZBUkFSR1MKLUluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9jb25maWd1cmUJMjAxMS0wNy0wMyAxMDo0MDo1 My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2NvbmZp Z3VyZQkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsNyArMSw3IEBA Ci0gIyEgL2Jpbi9zaAotLSMgRnJvbSBjb25maWd1cmUuaW4gZm9yIFJlYWRsaW5lIDUuMSwgdmVy c2lvbiAyLjU5LgotKyMgRnJvbSBjb25maWd1cmUuaW4gZm9yIFJlYWRsaW5lIDYuMiwgdmVyc2lv biAyLjY3LgotICMgR3Vlc3MgdmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBh bmQgY3JlYXRlIE1ha2VmaWxlcy4KLS0jIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NCBm b3IgcmVhZGxpbmUgNS4xLXJlbGVhc2UuCi0rIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIu NjQgZm9yIHJlYWRsaW5lIDYuMi4KLSAjCi0gIyBSZXBvcnQgYnVncyB0byA8YnVnLXJlYWRsaW5l QGdudS5vcmc+LgotICMKLUBAIC01NTAsOCArNTUwLDggQEAgTUFLRUZMQUdTPQotICMgSWRlbnRp dHkgb2YgdGhpcyBwYWNrYWdlLgotIFBBQ0tBR0VfTkFNRT0ncmVhZGxpbmUnCi0gUEFDS0FHRV9U QVJOQU1FPSdyZWFkbGluZScKLS1QQUNLQUdFX1ZFUlNJT049JzUuMS1yZWxlYXNlJwotLVBBQ0tB R0VfU1RSSU5HPSdyZWFkbGluZSA1LjEtcmVsZWFzZScKLStQQUNLQUdFX1ZFUlNJT049JzYuMicK LStQQUNLQUdFX1NUUklORz0ncmVhZGxpbmUgNi4yJwotIFBBQ0tBR0VfQlVHUkVQT1JUPSdidWct cmVhZGxpbmVAZ251Lm9yZycKLSBQQUNLQUdFX1VSTD0nJwotIAotQEAgLTU5Myw3ICs1OTMsNiBA QCBhY19pbmNsdWRlc19kZWZhdWx0PSJcCi0gI2VuZGlmIgotIAotIGFjX3N1YnN0X3ZhcnM9J0xU TElCT0JKUwotLUxJQk9CSlMKLSBURVJNQ0FQX0xJQgotIExJQlZFUlNJT04KLSBBUkZMQUdTCi1A QCAtNjIzLDE0ICs2MjIsMTMgQEAgU0hPQkpfTERGTEFHUwotIFNIT0JKX0xECi0gU0hPQkpfQ0ZM QUdTCi0gU0hPQkpfQ0MKLS1XQ1dJRFRIX09CSgotK0xJQk9CSlMKLSBNQUtFX1NIRUxMCi0gUkFO TElCCi0gQVIKLSBJTlNUQUxMX0RBVEEKLSBJTlNUQUxMX1NDUklQVAotIElOU1RBTExfUFJPR1JB TQotLUNDX0ZPUl9CVUlMRAotIEVHUkVQCi0gR1JFUAotIENQUAotQEAgLTY5Niw2ICs2OTQsNyBA QCB3aXRoX2N1cnNlcwotIHdpdGhfcHVyaWZ5Ci0gZW5hYmxlX211bHRpYnl0ZQotIGVuYWJsZV9z dGF0aWMKLStlbmFibGVfbGFyZ2VmaWxlCi0gJwotICAgICAgIGFjX3ByZWNpb3VzX3ZhcnM9J2J1 aWxkX2FsaWFzCi0gaG9zdF9hbGlhcwotQEAgLTEyNDcsNyArMTI0Niw3IEBAIGlmIHRlc3QgIiRh Y19pbml0X2hlbHAiID0gImxvbmciOyB0aGVuCi0gICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBv YnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KLSAgICMgVGhp cyBtZXNzYWdlIGlzIHRvbyBsb25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4K LSAgIGNhdCA8PF9BQ0VPRgotLVxgY29uZmlndXJlJyBjb25maWd1cmVzIHJlYWRsaW5lIDUuMS1y ZWxlYXNlIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KLStcYGNvbmZpZ3VyZScg Y29uZmlndXJlcyByZWFkbGluZSA2LjIgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1z LgotIAotIFVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgotIAotQEAgLTEzMTIs NyArMTMxMSw3IEBAIGZpCi0gCi0gaWYgdGVzdCAtbiAiJGFjX2luaXRfaGVscCI7IHRoZW4KLSAg IGNhc2UgJGFjX2luaXRfaGVscCBpbgotLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJD b25maWd1cmF0aW9uIG9mIHJlYWRsaW5lIDUuMS1yZWxlYXNlOiI7OwotKyAgICAgc2hvcnQgfCBy ZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHJlYWRsaW5lIDYuMjoiOzsKLSAgICBl c2FjCi0gICBjYXQgPDxcX0FDRU9GCi0gCi1AQCAtMTMyMiw2ICsxMzIxLDcgQEAgT3B0aW9uYWwg RmVhdHVyZXM6Ci0gICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZFQVRVUkUgW0FS Rz15ZXNdCi0gICAtLWVuYWJsZS1tdWx0aWJ5dGUgICAgICBlbmFibGUgbXVsdGlieXRlIGNoYXJh Y3RlcnMgaWYgT1Mgc3VwcG9ydHMgdGhlbQotICAgLS1lbmFibGUtc3RhdGljICAgICAgICAgYnVp bGQgc3RhdGljIGxpYnJhcmllcyBbZGVmYXVsdD1ZRVNdCi0rICAtLWRpc2FibGUtbGFyZ2VmaWxl ICAgICBvbWl0IHN1cHBvcnQgZm9yIGxhcmdlIGZpbGVzCi0gCi0gT3B0aW9uYWwgUGFja2FnZXM6 Ci0gICAtLXdpdGgtUEFDS0FHRVs9QVJHXSAgICB1c2UgUEFDS0FHRSBbQVJHPXllc10KLUBAIC0x NDA2LDcgKzE0MDYsNyBAQCBmaQotIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFj X3N0YXR1cwotIGlmICRhY19pbml0X3ZlcnNpb247IHRoZW4KLSAgIGNhdCA8PFxfQUNFT0YKLS1y ZWFkbGluZSBjb25maWd1cmUgNS4xLXJlbGVhc2UKLStyZWFkbGluZSBjb25maWd1cmUgNi4yCi0g Z2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY0Ci0gCi0gQ29weXJpZ2h0IChDKSAyMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotQEAgLTE4MzEsNyArMTgzMSw3IEBAIGNhdCA+ Y29uZmlnLmxvZyA8PF9BQ0VPRgotIFRoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJv ZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCi0gcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1 Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KLSAKLS1JdCB3YXMgY3JlYXRlZCBi eSByZWFkbGluZSAkYXNfbWUgNS4xLXJlbGVhc2UsIHdoaWNoIHdhcwotK0l0IHdhcyBjcmVhdGVk IGJ5IHJlYWRsaW5lICRhc19tZSA2LjIsIHdoaWNoIHdhcwotIGdlbmVyYXRlZCBieSBHTlUgQXV0 b2NvbmYgMi42NC4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwotIAotICAgJCAkMCAkQAot QEAgLTIyMTEsNyArMjIxMSw3IEBAIGFjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2Nv bmZpZ3UKLSBhY19jb25maWdfaGVhZGVycz0iJGFjX2NvbmZpZ19oZWFkZXJzIGNvbmZpZy5oIgot IAotIAotLUxJQlZFUlNJT049NS4xCi0rTElCVkVSU0lPTj02LjIKLSAKLSAjIE1ha2Ugc3VyZSB3 ZSBjYW4gcnVuIGNvbmZpZy5zdWIuCi0gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiBz dW40ID4vZGV2L251bGwgMj4mMSB8fAotQEAgLTM2MjIsMzkgKzM2MjIsNiBAQCAkYXNfZWNobyAi JGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zCi0gCi0gCi0gCi0tCi0taWYgdGVzdCAieCRj cm9zc19jb21waWxpbmciID0gInh5ZXMiOyB0aGVuCi0tICAgIGNhc2UgIiR7aG9zdH0iIGluCi0t ICAgICotY3lnd2luKikKLS0JY3Jvc3NfY2FjaGU9JHtzcmNkaXJ9L2Nyb3NzLWJ1aWxkL2N5Z3dp bi5jYWNoZQotLQlMT0NBTF9DRkxBR1M9IiRMT0NBTF9DRkxBR1MgLUkke3NyY2Rpcn0vLi4vbGli dGVybWNhcCIKLS0JOzsKLS0gICAqLW1pbmd3MzIqKQotLQljcm9zc19jYWNoZT0ke3NyY2Rpcn0v Y3Jvc3MtYnVpbGQvbWluZ3cuY2FjaGUKLS0gICAgICAgIDs7Ci0tICAgICopICBlY2hvICJjb25m aWd1cmU6IGNyb3NzLWNvbXBpbGluZyBmb3IgYSBub24tY3lnd2luIHRhcmdldCBpcyBub3Qgc3Vw cG9ydGVkIiA+JjIKLS0JOzsKLS0gICAgZXNhYwotLQotLSAgICBpZiB0ZXN0ICJ4JGNyb3NzX2Nh Y2hlIiAhPSAieCI7IHRoZW4KLS0JaWYgdGVzdCAtciAiJHtjcm9zc19jYWNoZX0iOyB0aGVuCi0t CSAgICBlY2hvICJsb2FkaW5nIGNyb3NzLWJ1aWxkIGNhY2hlIGZpbGUgJHtjcm9zc19jYWNoZX0i Ci0tCSAgICAuICR7Y3Jvc3NfY2FjaGV9Ci0tCWZpCi0tCXVuc2V0IGNyb3NzX2NhY2hlCi0tICAg IGZpCi0tZmkKLS0KLS1pZiB0ZXN0IC16ICIkQ0NfRk9SX0JVSUxEIjsgdGhlbgotLSAgICBpZiB0 ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgPSAieG5vIjsgdGhlbgotLSAgICAgICAgQ0NfRk9SX0JV SUxEPSckKENDKScKLS0gICAgZWxzZQotLSAgICAgICAgQ0NfRk9SX0JVSUxEPWdjYwotLSAgICBm aQotLWZpCi0tCi0tCi0tCi0gIyBJZiB3ZSdyZSB1c2luZyBnY2MgYW5kIHRoZSB1c2VyIGhhc24n dCBzcGVjaWZpZWQgQ0ZMQUdTLCBhZGQgLU8gdG8gQ0ZMQUdTLgotIHRlc3QgLW4gIiRHQ0MiICYm IHRlc3QgLW4gIiRhdXRvX2NmbGFncyIgJiYgQ0ZMQUdTPSIkQ0ZMQUdTIC1PIgotIAotQEAgLTQw NTYsNiArNDAyMyw0MCBAQCBpZiB0ZXN0ICRhY19jdl9jX2NoYXJfdW5zaWduZWQgPSB5ZXMgJiYg Ci0gCi0gZmkKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIGZvciB3b3JraW5nIHZvbGF0aWxlIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBm b3Igd29ya2luZyB2b2xhdGlsZS4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfY192b2xh dGlsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgot K2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsv KiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSt2b2xhdGls ZSBpbnQgeDsKLStpbnQgKiB2b2xhdGlsZSB5ID0gKGludCAqKSAwOwotK3JldHVybiAheCAmJiAh eTsKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21w aWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBhY19jdl9jX3ZvbGF0aWxlPXllcwotK2Vsc2UKLSsg IGFjX2N2X2Nfdm9sYXRpbGU9bm8KLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0 ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX3ZvbGF0aWxlIiA+JjUKLSsk YXNfZWNobyAiJGFjX2N2X2Nfdm9sYXRpbGUiID4mNjsgfQotK2lmIHRlc3QgJGFjX2N2X2Nfdm9s YXRpbGUgPSBubzsgdGhlbgotKwotKyRhc19lY2hvICIjZGVmaW5lIHZvbGF0aWxlIC8qKi8iID4+ Y29uZmRlZnMuaAotKwotK2ZpCi0rCi0gCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyByZXR1cm4gdHlwZSBvZiBzaWduYWwgaGFuZGxlcnMiID4mNQot ICRhc19lY2hvX24gImNoZWNraW5nIHJldHVybiB0eXBlIG9mIHNpZ25hbCBoYW5kbGVycy4uLiAi ID4mNjsgfQotQEAgLTQ1NzEsNiArNDU3MiwyMDUgQEAgZmkKLSBkb25lCi0gCi0gCi0rIyBDaGVj ayB3aGV0aGVyIC0tZW5hYmxlLWxhcmdlZmlsZSB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHtlbmFi bGVfbGFyZ2VmaWxlK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIGVuYWJsZXZhbD0kZW5hYmxlX2xh cmdlZmlsZTsKLStmaQotKwotK2lmIHRlc3QgIiRlbmFibGVfbGFyZ2VmaWxlIiAhPSBubzsgdGhl bgotKwotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyBmb3Igc3BlY2lhbCBDIGNvbXBpbGVyIG9wdGlvbnMgbmVlZGVkIGZvciBsYXJnZSBmaWxlcyIg PiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNwZWNpYWwgQyBjb21waWxlciBvcHRpb25z IG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3N5 c19sYXJnZWZpbGVfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hl ZCkgIiA+JjYKLStlbHNlCi0rICBhY19jdl9zeXNfbGFyZ2VmaWxlX0NDPW5vCi0rICAgICBpZiB0 ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICAgYWNfc2F2ZV9DQz0kQ0MKLSsgICAgICAg d2hpbGUgOjsgZG8KLSsJICMgSVJJWCA2LjIgYW5kIGxhdGVyIGRvIG5vdCBzdXBwb3J0IGxhcmdl IGZpbGVzIGJ5IGRlZmF1bHQsCi0rCSAjIHNvIHVzZSB0aGUgQyBjb21waWxlcidzIC1uMzIgb3B0 aW9uIGlmIHRoYXQgaGVscHMuCi0rCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz dC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKyNpbmNsdWRlIDxzeXMvdHlwZXMu aD4KLSsgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0 bHkuCi0rICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3 MjAzNjg1NDc3NTgwNywKLSsgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGlu ZyBhcyBDIGNvbXBpbGVycwotKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3 NTgwNy4gICovCi0rI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsg KChvZmZfdCkgMSA8PCA2MikpCi0rICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUg MjE0NzQ4MzYyOSA9PSA3MjEKLSsJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcg PT0gMSkKLSsJCSAgICAgID8gMSA6IC0xXTsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwot KyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotKwkgaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJ TkVOTyI7IHRoZW4gOgotKyAgYnJlYWsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNv bmZ0ZXN0LiRhY19vYmpleHQKLSsJIENDPSIkQ0MgLW4zMiIKLSsJIGlmIGFjX2ZuX2NfdHJ5X2Nv bXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGFjX2N2X3N5c19sYXJnZWZpbGVfQ0M9JyAtbjMy JzsgYnJlYWsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpl eHQKLSsJIGJyZWFrCi0rICAgICAgIGRvbmUKLSsgICAgICAgQ0M9JGFjX3NhdmVfQ0MKLSsgICAg ICAgcm0gLWYgY29uZnRlc3QuJGFjX2V4dAotKyAgICBmaQotK2ZpCi0reyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zeXNfbGFyZ2VmaWxlX0ND IiA+JjUKLSskYXNfZWNobyAiJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MiID4mNjsgfQotKyAgaWYg dGVzdCAiJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MiICE9IG5vOyB0aGVuCi0rICAgIENDPSRDQyRh Y19jdl9zeXNfbGFyZ2VmaWxlX0NDCi0rICBmaQotKwotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX0ZJTEVfT0ZGU0VUX0JJVFMgdmFsdWUg bmVlZGVkIGZvciBsYXJnZSBmaWxlcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9G SUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMuLi4gIiA+JjY7IH0K LStpZiB0ZXN0ICIke2FjX2N2X3N5c19maWxlX29mZnNldF9iaXRzK3NldH0iID0gc2V0OyB0aGVu IDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgd2hpbGUgOjsgZG8K LSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQg Y29uZmRlZnMuaC4gICovCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyAvKiBDaGVjayB0aGF0 IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KLSsgICAgV2UgY2FuJ3Qg c2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAotKyAg ICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCi0r ICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KLSsjZGVmaW5l IExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkK LSsgIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQot KwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQotKwkJICAgICAgPyAx IDogLTFdOwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0r X0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgYWNf Y3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHM9bm87IGJyZWFrCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0 ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSsgIGNhdCBjb25m ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4g ICovCi0rI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyA2NAotKyNpbmNsdWRlIDxzeXMvdHlwZXMu aD4KLSsgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0 bHkuCi0rICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3 MjAzNjg1NDc3NTgwNywKLSsgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGlu ZyBhcyBDIGNvbXBpbGVycwotKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3 NTgwNy4gICovCi0rI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsg KChvZmZfdCkgMSA8PCA2MikpCi0rICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUg MjE0NzQ4MzYyOSA9PSA3MjEKLSsJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcg PT0gMSkKLSsJCSAgICAgID8gMSA6IC0xXTsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwot KyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5F Tk8iOyB0aGVuIDoKLSsgIGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPTY0OyBicmVhawotK2Zp Ci0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4k YWNfZXh0Ci0rICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz11bmtub3duCi0rICBicmVhawot K2RvbmUKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMiID4mNQotKyRhc19lY2hvICIkYWNfY3Zf c3lzX2ZpbGVfb2Zmc2V0X2JpdHMiID4mNjsgfQotK2Nhc2UgJGFjX2N2X3N5c19maWxlX29mZnNl dF9iaXRzIGluICMoCi0rICBubyB8IHVua25vd24pIDs7Ci0rICAqKQotK2NhdCA+PmNvbmZkZWZz LmggPDxfQUNFT0YKLSsjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTICRhY19jdl9zeXNfZmlsZV9v ZmZzZXRfYml0cwotK19BQ0VPRgotKzs7Ci0rZXNhYwotK3JtIC1yZiBjb25mdGVzdCoKLSsgIGlm IHRlc3QgJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzID0gdW5rbm93bjsgdGhlbgotKyAgICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfTEFS R0VfRklMRVMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcyIgPiY1Ci0rJGFzX2VjaG9fbiAi Y2hlY2tpbmcgZm9yIF9MQVJHRV9GSUxFUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4u ICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9zeXNfbGFyZ2VfZmlsZXMrc2V0fSIgPSBzZXQ7 IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICB3aGlsZSA6 OyBkbwotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8q IGVuZCBjb25mZGVmcy5oLiAgKi8KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rIC8qIENoZWNr IHRoYXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgotKyAgICBXZSBj YW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcs Ci0rICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxl cnMKLSsgICAgaW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLwotKyNk ZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwg NjIpKQotKyAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0g NzIxCi0rCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCi0rCQkgICAg ICA/IDEgOiAtMV07Ci0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSsgIDsKLSsgIHJldHVybiAwOwot K30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0r ICBhY19jdl9zeXNfbGFyZ2VfZmlsZXM9bm87IGJyZWFrCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0 ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSsgIGNhdCBjb25m ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4g ICovCi0rI2RlZmluZSBfTEFSR0VfRklMRVMgMQotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsg LyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCi0r ICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1 NDc3NTgwNywKLSsgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBD IGNvbXBpbGVycwotKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4g ICovCi0rI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZf dCkgMSA8PCA2MikpCi0rICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4 MzYyOSA9PSA3MjEKLSsJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkK LSsJCSAgICAgID8gMSA6IC0xXTsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwotKyAgcmV0 dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0 aGVuIDoKLSsgIGFjX2N2X3N5c19sYXJnZV9maWxlcz0xOyBicmVhawotK2ZpCi0rcm0gLWYgY29y ZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0rICBh Y19jdl9zeXNfbGFyZ2VfZmlsZXM9dW5rbm93bgotKyAgYnJlYWsKLStkb25lCi0rZmkKLSt7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N5c19s YXJnZV9maWxlcyIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdl9zeXNfbGFyZ2VfZmlsZXMiID4mNjsg fQotK2Nhc2UgJGFjX2N2X3N5c19sYXJnZV9maWxlcyBpbiAjKAotKyAgbm8gfCB1bmtub3duKSA7 OwotKyAgKikKLStjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0rI2RlZmluZSBfTEFSR0VfRklM RVMgJGFjX2N2X3N5c19sYXJnZV9maWxlcwotK19BQ0VPRgotKzs7Ci0rZXNhYwotK3JtIC1yZiBj b25mdGVzdCoKLSsgIGZpCi0rZmkKLSsKLSsKLSAKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0eXBlIG9mIHNpZ25hbCBmdW5jdGlvbnMiID4m NQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciB0eXBlIG9mIHNpZ25hbCBmdW5jdGlvbnMuLi4g IiA+JjY7IH0KLUBAIC01MDc4LDYgKzUyNzgsNDkgQEAgJGFzX2VjaG8gIiNkZWZpbmUgR1dJTlNa X0lOX1NZU19JT0NUTCAxIgotIGZpCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2lnX2F0b21pY190IGluIHNpZ25hbC5oIiA+JjUK LSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc2lnX2F0b21pY190IGluIHNpZ25hbC5oLi4uICIg PiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9oYXZlX3NpZ19hdG9taWNfdCtzZXR9IiA9IHNldDsg dGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25m ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4g ICovCi0rCi0rI2luY2x1ZGUgPHNpZ25hbC5oPgotKwotK2ludAotK21haW4gKCkKLSt7Ci0rIHNp Z19hdG9taWNfdCB4OwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2Zu X2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGFjX2N2X2hhdmVfc2lnX2F0b21pY190 PXllcwotK2Vsc2UKLSsgIGFjX2N2X2hhdmVfc2lnX2F0b21pY190PW5vCi0rZmkKLStybSAtZiBj b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSsgICAgY29uZnRlc3QkYWNf ZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaGF2ZV9zaWdfYXRvbWljX3QiID4mNQotKyRh c19lY2hvICIkYWNfY3ZfaGF2ZV9zaWdfYXRvbWljX3QiID4mNjsgfQotK2lmIHRlc3QgIiRhY19j dl9oYXZlX3NpZ19hdG9taWNfdCIgPSAibm8iCi0rdGhlbgotKyAgICBhY19mbl9jX2NoZWNrX3R5 cGUgIiRMSU5FTk8iICJzaWdfYXRvbWljX3QiICJhY19jdl90eXBlX3NpZ19hdG9taWNfdCIgIiRh Y19pbmNsdWRlc19kZWZhdWx0IgotK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9zaWdfYXRvbWljX3Qi ID0geCIieWVzOyB0aGVuIDoKLSsKLStlbHNlCi0rCi0rY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VP RgotKyNkZWZpbmUgc2lnX2F0b21pY190IGludAotK19BQ0VPRgotKwotK2ZpCi0rCi0rZmkKLSsK LSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRo ZXIgc2lnbmFsIGhhbmRsZXJzIGFyZSBvZiB0eXBlIHZvaWQiID4mNQotICRhc19lY2hvX24gImNo ZWNraW5nIHdoZXRoZXIgc2lnbmFsIGhhbmRsZXJzIGFyZSBvZiB0eXBlIHZvaWQuLi4gIiA+JjY7 IH0KLSBpZiB0ZXN0ICIke2Jhc2hfY3Zfdm9pZF9zaWdoYW5kbGVyK3NldH0iID0gc2V0OyB0aGVu IDoKLUBAIC01MTE2LDYgKzUzNTksNyBAQCAkYXNfZWNobyAiI2RlZmluZSBWT0lEX1NJR0hBTkRM RVIgMSIgPj5jCi0gCi0gZmkKLSAKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGZvciBUSU9DU1RBVCBpbiBzeXMvaW9jdGwuaCIgPiY1Ci0gJGFz X2VjaG9fbiAiY2hlY2tpbmcgZm9yIFRJT0NTVEFUIGluIHN5cy9pb2N0bC5oLi4uICIgPiY2OyB9 Ci0gaWYgdGVzdCAiJHtiYXNoX2N2X3Rpb2NzdGF0X2luX2lvY3RsK3NldH0iID0gc2V0OyB0aGVu IDoKLUBAIC01NjM4LDI3ICs1ODgyLDczIEBAIGZpCi0gZG9uZQotIAotIAotK2FjX2ZuX2NfY2hl Y2tfZnVuYyAiJExJTkVOTyIgIm1icmxlbiIgImFjX2N2X2Z1bmNfbWJybGVuIgotK2lmIHRlc3Qg IngkYWNfY3ZfZnVuY19tYnJsZW4iID0geCIieWVzOyB0aGVuIDoKLSsgICRhc19lY2hvICIjZGVm aW5lIEhBVkVfTUJSTEVOIDEiID4+Y29uZmRlZnMuaAotKwotK2ZpCi0rCi0rYWNfZm5fY19jaGVj a19mdW5jICIkTElORU5PIiAibWJzY2FzZWNtcCIgImFjX2N2X2Z1bmNfbWJzY2FzZWNtcCIKLStp ZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbWJzY2FzZWNtcCIgPSB4IiJ5ZXM7IHRoZW4gOgotKyAgJGFz X2VjaG8gIiNkZWZpbmUgSEFWRV9NQlNDTVAgMSIgPj5jb25mZGVmcy5oCi0rCi0rZmkKLSsKLSth Y19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJtYnNjbXAiICJhY19jdl9mdW5jX21ic2NtcCIK LStpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbWJzY21wIiA9IHgiInllczsgdGhlbiA6Ci0rICAkYXNf ZWNobyAiI2RlZmluZSBIQVZFX01CU0NNUCAxIiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwotK2Fj X2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1ic25ydG93Y3MiICJhY19jdl9mdW5jX21ic25y dG93Y3MiCi0raWYgdGVzdCAieCRhY19jdl9mdW5jX21ic25ydG93Y3MiID0geCIieWVzOyB0aGVu IDoKLSsgICRhc19lY2hvICIjZGVmaW5lIEhBVkVfTUJTTlJUT1dDUyAxIiA+PmNvbmZkZWZzLmgK LSsKLStmaQotKwotIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1ic3J0b3djcyIgImFj X2N2X2Z1bmNfbWJzcnRvd2NzIgotIGlmIHRlc3QgIngkYWNfY3ZfZnVuY19tYnNydG93Y3MiID0g eCIieWVzOyB0aGVuIDoKLSAgICRhc19lY2hvICIjZGVmaW5lIEhBVkVfTUJTUlRPV0NTIDEiID4+ Y29uZmRlZnMuaAotIAotIGZpCi0gCi0tYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAibWJy dG93YyIgImFjX2N2X2Z1bmNfbWJydG93YyIKLS1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbWJydG93 YyIgPSB4IiJ5ZXM7IHRoZW4gOgotLSAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9NQlJUT1dDIDEi ID4+Y29uZmRlZnMuaAotKwotKwotK2ZvciBhY19mdW5jIGluIG1ic2NocgotK2RvIDoKLSsgIGFj X2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1ic2NociIgImFjX2N2X2Z1bmNfbWJzY2hyIgot K2lmIHRlc3QgIngkYWNfY3ZfZnVuY19tYnNjaHIiID0geCIieWVzOyB0aGVuIDoKLSsgIGNhdCA+ PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIEhBVkVfTUJTQ0hSIDEKLStfQUNFT0YKLSsK LStlbHNlCi0rICBjYXNlICIgJExJQk9CSlMgIiBpbgotKyAgKiIgJGFjX2Z1bmMuJGFjX29iamV4 dCAiKiApIDs7Ci0rICAqKSBMSUJPQkpTPSIkTElCT0JKUyAkYWNfZnVuYy4kYWNfb2JqZXh0Igot KyA7OwotK2VzYWMKLSAKLSBmaQotK2RvbmUKLSAKLS1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5F Tk8iICJtYnJsZW4iICJhY19jdl9mdW5jX21icmxlbiIKLS1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNf bWJybGVuIiA9IHgiInllczsgdGhlbiA6Ci0tICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX01CUkxF TiAxIiA+PmNvbmZkZWZzLmgKLSsKLSsKLSthY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJ3 Y3J0b21iIiAiYWNfY3ZfZnVuY193Y3J0b21iIgotK2lmIHRlc3QgIngkYWNfY3ZfZnVuY193Y3J0 b21iIiA9IHgiInllczsgdGhlbiA6Ci0rICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1dDUlRPTUIg MSIgPj5jb25mZGVmcy5oCi0gCi0gZmkKLSAKLS1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8i ICJ3Y3RvbWIiICJhY19jdl9mdW5jX3djdG9tYiIKLS1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfd2N0 b21iIiA9IHgiInllczsgdGhlbiA6Ci0tICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1dDVE9NQiAx IiA+PmNvbmZkZWZzLmgKLSthY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJ3Y3Njb2xsIiAi YWNfY3ZfZnVuY193Y3Njb2xsIgotK2lmIHRlc3QgIngkYWNfY3ZfZnVuY193Y3Njb2xsIiA9IHgi InllczsgdGhlbiA6Ci0rICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1dDU0NPTEwgMSIgPj5jb25m ZGVmcy5oCi0rCi0rZmkKLSsKLSthY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJ3Y3NkdXAi ICJhY19jdl9mdW5jX3djc2R1cCIKLStpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfd2NzZHVwIiA9IHgi InllczsgdGhlbiA6Ci0rICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1dDU0RVUCAxIiA+PmNvbmZk ZWZzLmgKLSAKLSBmaQotIAotQEAgLTU2NjgsNTUgKzU5NTgsODkgQEAgaWYgdGVzdCAieCRhY19j dl9mdW5jX3djd2lkdGgiID0geCIieWVzOwotIAotIGZpCi0gCi0tYWNfZm5fY19jaGVja19mdW5j ICIkTElORU5PIiAid2NzZHVwIiAiYWNfY3ZfZnVuY193Y3NkdXAiCi0taWYgdGVzdCAieCRhY19j dl9mdW5jX3djc2R1cCIgPSB4IiJ5ZXM7IHRoZW4gOgotLSAgJGFzX2VjaG8gIiNkZWZpbmUgSEFW RV9XQ1NEVVAgMSIgPj5jb25mZGVmcy5oCi0rYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAi d2N0eXBlIiAiYWNfY3ZfZnVuY193Y3R5cGUiCi0raWYgdGVzdCAieCRhY19jdl9mdW5jX3djdHlw ZSIgPSB4IiJ5ZXM7IHRoZW4gOgotKyAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9XQ1RZUEUgMSIg Pj5jb25mZGVmcy5oCi0gCi0gZmkKLSAKLSAKLS1pZiB0ZXN0ICIkYWNfY3ZfZnVuY193Y3dpZHRo IiA9IG5vICYmIHRlc3QgIiRhY19jdl9oZWFkZXJfd2NoYXJfaCIgPSB5ZXM7IHRoZW4KLS0gIFdD V0lEVEhfT0JKPXdjd2lkdGgubwotK2ZvciBhY19mdW5jIGluIHdjc3dpZHRoCi0rZG8gOgotKyAg YWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAid2Nzd2lkdGgiICJhY19jdl9mdW5jX3djc3dp ZHRoIgotK2lmIHRlc3QgIngkYWNfY3ZfZnVuY193Y3N3aWR0aCIgPSB4IiJ5ZXM7IHRoZW4gOgot KyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgSEFWRV9XQ1NXSURUSCAxCi0r X0FDRU9GCi0rCi0gZWxzZQotLSAgV0NXSURUSF9PQko9Ci0rICBjYXNlICIgJExJQk9CSlMgIiBp bgotKyAgKiIgJGFjX2Z1bmMuJGFjX29iamV4dCAiKiApIDs7Ci0rICAqKSBMSUJPQkpTPSIkTElC T0JKUyAkYWNfZnVuYy4kYWNfb2JqZXh0IgotKyA7OwotK2VzYWMKLSsKLSBmaQotK2RvbmUKLSsK LSsKLSAKLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciBtYnN0YXRlX3QiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYnN0YXRl X3QuLi4gIiA+JjY7IH0KLS1pZiB0ZXN0ICIke2Jhc2hfY3ZfaGF2ZV9tYnN0YXRlX3Qrc2V0fSIg PSBzZXQ7IHRoZW4gOgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyB3aGV0aGVyIG1icnRvd2MgYW5kIG1ic3RhdGVfdCBhcmUgcHJvcGVybHkgZGVj bGFyZWQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgbWJydG93YyBhbmQgbWJz dGF0ZV90IGFyZSBwcm9wZXJseSBkZWNsYXJlZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNf Y3ZfZnVuY19tYnJ0b3djK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgICRhc19lY2hvX24gIihjYWNo ZWQpICIgPiY2Ci0gZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu JGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0KLSAjaW5jbHVkZSA8d2NoYXIuaD4K LSBpbnQKLSBtYWluICgpCi0gewotLQotLSAgbWJzdGF0ZV90IHBzOwotLSAgbWJzdGF0ZV90ICpw c3A7Ci0tICBwc3AgPSAobWJzdGF0ZV90ICopMDsKLS0KLSt3Y2hhcl90IHdjOwotKwkgICAgICBj aGFyIGNvbnN0IHNbXSA9ICIiOwotKwkgICAgICBzaXplX3QgbiA9IDE7Ci0rCSAgICAgIG1ic3Rh dGVfdCBzdGF0ZTsKLSsJICAgICAgcmV0dXJuICEgKHNpemVvZiBzdGF0ZSAmJiAobWJydG93Yykg KCZ3YywgcywgbiwgJnN0YXRlKSk7Ci0gICA7Ci0gICByZXR1cm4gMDsKLSB9Ci0gX0FDRU9GCi0t aWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotLSAgYmFzaF9jdl9oYXZl X21ic3RhdGVfdD15ZXMKLStpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0r ICBhY19jdl9mdW5jX21icnRvd2M9eWVzCi0gZWxzZQotLSAgYmFzaF9jdl9oYXZlX21ic3RhdGVf dD1ubwotKyAgYWNfY3ZfZnVuY19tYnJ0b3djPW5vCi0gZmkKLS1ybSAtZiBjb3JlIGNvbmZ0ZXN0 LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLStybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSsgICAgY29uZnRlc3QkYWNfZXhlZXh0 IGNvbmZ0ZXN0LiRhY19leHQKLSBmaQotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl9oYXZlX21ic3RhdGVfdCIgPiY1Ci0tJGFzX2VjaG8g IiRiYXNoX2N2X2hhdmVfbWJzdGF0ZV90IiA+JjY7IH0KLS1pZiB0ZXN0ICRiYXNoX2N2X2hhdmVf bWJzdGF0ZV90ID0geWVzOyB0aGVuCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX21icnRvd2MiID4mNQotKyRhc19lY2hvICIkYWNf Y3ZfZnVuY19tYnJ0b3djIiA+JjY7IH0KLSsgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfbWJydG93YyA9 IHllczsgdGhlbgotKwotKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfTUJSVE9XQyAxIiA+PmNvbmZk ZWZzLmgKLSsKLSsgIGZpCi0rCi0raWYgdGVzdCAkYWNfY3ZfZnVuY19tYnJ0b3djID0geWVzOyB0 aGVuCi0gCSRhc19lY2hvICIjZGVmaW5lIEhBVkVfTUJTVEFURV9UIDEiID4+Y29uZmRlZnMuaAot IAotIGZpCi0gCi0rZm9yIGFjX2Z1bmMgaW4gaXN3bG93ZXIgaXN3dXBwZXIgdG93bG93ZXIgdG93 dXBwZXIgaXN3Y3R5cGUKLStkbyA6Ci0rICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5j XyRhY19mdW5jIiB8ICRhc190cl9zaGAKLSthY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIk YWNfZnVuYyIgIiRhc19hY192YXIiCi0rZXZhbCBhc192YWw9XCQkYXNfYWNfdmFyCi0rICAgaWYg dGVzdCAieCRhc192YWwiID0geCIieWVzOyB0aGVuIDoKLSsgIGNhdCA+PmNvbmZkZWZzLmggPDxf QUNFT0YKLSsjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAx Ci0rX0FDRU9GCi0rCi0rZmkKLStkb25lCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbmxfbGFuZ2luZm8gYW5kIENPREVTRVQiID4m NQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciBubF9sYW5naW5mbyBhbmQgQ09ERVNFVC4uLiAi ID4mNjsgfQotIGlmIHRlc3QgIiR7YmFzaF9jdl9sYW5naW5mb19jb2Rlc2V0K3NldH0iID0gc2V0 OyB0aGVuIDoKLUBAIC01NzQ4LDYgKzYwNzIsMTI2IEBAIGlmIHRlc3QgJGJhc2hfY3ZfbGFuZ2lu Zm9fY29kZXNldCA9IHllczsKLSAKLSBmaQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdjaGFyX3QgaW4gd2NoYXIuaCIgPiY1Ci0rJGFz X2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdjaGFyX3QgaW4gd2NoYXIuaC4uLiAiID4mNjsgfQotK2lm IHRlc3QgIiR7YmFzaF9jdl90eXBlX3djaGFyX3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFz X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FD RU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKyNpbmNsdWRl IDx3Y2hhci5oPgotKwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICAgICAgICB3Y2hhcl90IGZv bzsKLSsgICAgICAgIGZvbyA9IDA7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9G Ci0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgYmFzaF9jdl90 eXBlX3djaGFyX3Q9eWVzCi0rZWxzZQotKyAgYmFzaF9jdl90eXBlX3djaGFyX3Q9bm8KLStmaQot K3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFj X2V4dAotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6ICRiYXNoX2N2X3R5cGVfd2NoYXJfdCIgPiY1Ci0rJGFzX2VjaG8gIiRiYXNoX2N2X3R5cGVf d2NoYXJfdCIgPiY2OyB9Ci0raWYgdGVzdCAkYmFzaF9jdl90eXBlX3djaGFyX3QgPSB5ZXM7IHRo ZW4KLSsKLSskYXNfZWNobyAiI2RlZmluZSBIQVZFX1dDSEFSX1QgMSIgPj5jb25mZGVmcy5oCi0r Ci0rZmkKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciB3Y3R5cGVfdCBpbiB3Y3R5cGUuaCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcg Zm9yIHdjdHlwZV90IGluIHdjdHlwZS5oLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtiYXNoX2N2 X3R5cGVfd2N0eXBlX3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hl ZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k YWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKyNpbmNsdWRlIDx3Y3R5cGUuaD4KLStp bnQKLSttYWluICgpCi0rewotKwotKyAgICAgICAgd2N0eXBlX3QgZm9vOwotKyAgICAgICAgZm9v ID0gMDsKLSsKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3Ry eV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBiYXNoX2N2X3R5cGVfd2N0eXBlX3Q9eWVz Ci0rZWxzZQotKyAgYmFzaF9jdl90eXBlX3djdHlwZV90PW5vCi0rZmkKLStybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLStmaQotK3sg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl90 eXBlX3djdHlwZV90IiA+JjUKLSskYXNfZWNobyAiJGJhc2hfY3ZfdHlwZV93Y3R5cGVfdCIgPiY2 OyB9Ci0raWYgdGVzdCAkYmFzaF9jdl90eXBlX3djdHlwZV90ID0geWVzOyB0aGVuCi0rCi0rJGFz X2VjaG8gIiNkZWZpbmUgSEFWRV9XQ1RZUEVfVCAxIiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwot K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdp bnRfdCBpbiB3Y3R5cGUuaCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdpbnRfdCBp biB3Y3R5cGUuaC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YmFzaF9jdl90eXBlX3dpbnRfdCtz ZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UK LSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQg Y29uZmRlZnMuaC4gICovCi0rI2luY2x1ZGUgPHdjdHlwZS5oPgotK2ludAotK21haW4gKCkKLSt7 Ci0rCi0rICAgICAgICB3aW50X3QgZm9vOwotKyAgICAgICAgZm9vID0gMDsKLSsKLSsgIDsKLSsg IHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5P IjsgdGhlbiA6Ci0rICBiYXNoX2N2X3R5cGVfd2ludF90PXllcwotK2Vsc2UKLSsgIGJhc2hfY3Zf dHlwZV93aW50X3Q9bm8KLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh Y19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRiYXNoX2N2X3R5cGVfd2ludF90IiA+JjUKLSskYXNf ZWNobyAiJGJhc2hfY3ZfdHlwZV93aW50X3QiID4mNjsgfQotK2lmIHRlc3QgJGJhc2hfY3ZfdHlw ZV93aW50X3QgPSB5ZXM7IHRoZW4KLSsKLSskYXNfZWNobyAiI2RlZmluZSBIQVZFX1dJTlRfVCAx IiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwotK2lmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiA9 IHllczsgdGhlbgotKwlPTERMSUJTPSIkTElCUyIKLSsJTElCUz0iJExJQlMgJExJQklDT05WIgot Kwlmb3IgYWNfZnVuYyBpbiBsb2NhbGVfY2hhcnNldAotK2RvIDoKLSsgIGFjX2ZuX2NfY2hlY2tf ZnVuYyAiJExJTkVOTyIgImxvY2FsZV9jaGFyc2V0IiAiYWNfY3ZfZnVuY19sb2NhbGVfY2hhcnNl dCIKLStpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbG9jYWxlX2NoYXJzZXQiID0geCIieWVzOyB0aGVu IDoKLSsgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIEhBVkVfTE9DQUxFX0NI QVJTRVQgMQotK19BQ0VPRgotKwotK2ZpCi0rZG9uZQotKwotKwlMSUJTPSIkT0xETElCUyIKLStm aQotKwotIAotIAotIGNhc2UgIiRob3N0X2NwdSIgaW4KLUBAIC02MzU3LDcgKzY4MDEsNyBAQCBj YXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpCi0gIyByZXBvcnQgYWN0dWFs IGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCi0gIyB2 YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KLSBhY19sb2c9IgotLVRoaXMgZmlsZSB3YXMg ZXh0ZW5kZWQgYnkgcmVhZGxpbmUgJGFzX21lIDUuMS1yZWxlYXNlLCB3aGljaCB3YXMKLStUaGlz IGZpbGUgd2FzIGV4dGVuZGVkIGJ5IHJlYWRsaW5lICRhc19tZSA2LjIsIHdoaWNoIHdhcwotIGdl bmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NC4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdh cwotIAotICAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUwotQEAgLTY0MjEsNyArNjg2 NSw3IEBAIFJlcG9ydCBidWdzIHRvIDxidWctcmVhZGxpbmVAZ251Lm9yZz4uIgotIF9BQ0VPRgot IGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotIGFjX2Nz X3ZlcnNpb249IlxcCi0tcmVhZGxpbmUgY29uZmlnLnN0YXR1cyA1LjEtcmVsZWFzZQotK3JlYWRs aW5lIGNvbmZpZy5zdGF0dXMgNi4yCi0gY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdO VSBBdXRvY29uZiAyLjY0LAotICAgd2l0aCBvcHRpb25zIFxcImAkYXNfZWNobyAiJGFjX2NvbmZp Z3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOyBzL1tcXCIiXGBcJF0vXFxcXCYvZydgXFwiCi0gCi1J bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9jb25maWd1cmUuaW4KLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvY29uZmlndXJlLmluCTIw MTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcw My9yZWFkbGluZS9jb25maWd1cmUuaW4JMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAy MDAKLUBAIC01LDI4ICs1LDI2IEBAIGRubCByZXBvcnQgYnVncyB0byBjaGV0QHBvLmN3cnUuZWR1 Ci0gZG5sCi0gZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBh IGNvbmZpZ3VyZSBzY3JpcHQuCi0gCi0tIyBDb3B5cmlnaHQgKEMpIDE5ODctMjAwNSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjIENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv ciAoYXQgeW91ciBvcHRpb24pCi0tIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0jIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot LSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0tCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jIEZvdW5kYXRpb24sIEluYy4sIDU5 IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotLSMgMDIxMTEtMTMwNywgVVNB LgotKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyMgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsj ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotIAotLUFDX1JFVklTSU9OKFtmb3IgUmVhZGxpbmUgNS4xLCB2ZXJzaW9u IDIuNTldKQotKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStBQ19SRVZJU0lP TihbZm9yIFJlYWRsaW5lIDYuMiwgdmVyc2lvbiAyLjY3XSkKLSAKLSBtNF9pbmNsdWRlKFsuLi9j b25maWcvb3ZlcnJpZGUubTRdKQotIAotLUFDX0lOSVQocmVhZGxpbmUsIDUuMS1yZWxlYXNlLCBi dWctcmVhZGxpbmVAZ251Lm9yZykKLStBQ19JTklUKHJlYWRsaW5lLCA2LjIsIGJ1Zy1yZWFkbGlu ZUBnbnUub3JnKQotIAotIGRubCBtYWtlIHN1cmUgd2UgYXJlIHVzaW5nIGEgcmVjZW50IGF1dG9j b25mIHZlcnNpb24KLSBBQ19QUkVSRVEoMi41MCkKLUBAIC0zOCw3ICszNiw3IEBAIEFDX0NPTkZJ R19BVVhfRElSKGBjZCAkc3JjZGlyO3B3ZGAvLi4pCi0gQUNfQ09ORklHX0hFQURFUlMoY29uZmln LmgpCi0gCi0gZG5sIHVwZGF0ZSB0aGUgdmFsdWUgb2YgUkxfUkVBRExJTkVfVkVSU0lPTiBpbiBy ZWFkbGluZS5oIHdoZW4gdGhpcyBjaGFuZ2VzCi0tTElCVkVSU0lPTj01LjEKLStMSUJWRVJTSU9O PTYuMgotIAotIEFDX0NBTk9OSUNBTF9IT1NUCi0gCi1AQCAtMTE1LDQ0ICsxMTMsNiBAQCBBQ19Q Uk9HX0NDCi0gZG5sIEFDX0FJWAotIEFDX01JTklYCi0gCi0tZG5sIEJFR0lOIGNoYW5nZXMgZm9y IENZR05VUyBjcm9zcy1idWlsZGluZyBmb3IgQ3lnd2luCi0tZG5sIE5PVEU6IFNvbWUgb2YgdGhl c2UgY2hhbmdlcyBtYXkgbm8gbG9uZ2VyIGJlIG5lY2Vzc2FyeS4KLS0KLS1kbmwgbG9hZCB1cCB0 aGUgY3Jvc3MtYnVpbGRpbmcgY2FjaGUgZmlsZSAtLSBhZGQgbW9yZSBjYXNlcyBhbmQgY2FjaGUK LS1kbmwgZmlsZXMgYXMgbmVjZXNzYXJ5Ci0taWYgdGVzdCAieCRjcm9zc19jb21waWxpbmciID0g Inh5ZXMiOyB0aGVuCi0tICAgIGNhc2UgIiR7aG9zdH0iIGluCi0tICAgICotY3lnd2luKikKLS0J Y3Jvc3NfY2FjaGU9JHtzcmNkaXJ9L2Nyb3NzLWJ1aWxkL2N5Z3dpbi5jYWNoZQotLQlMT0NBTF9D RkxBR1M9IiRMT0NBTF9DRkxBR1MgLUkke3NyY2Rpcn0vLi4vbGlidGVybWNhcCIKLS0JOzsKLS0g ICAqLW1pbmd3MzIqKQkKLS0JY3Jvc3NfY2FjaGU9JHtzcmNkaXJ9L2Nyb3NzLWJ1aWxkL21pbmd3 LmNhY2hlCi0tICAgICAgICA7OwotLSAgICAqKSAgZWNobyAiY29uZmlndXJlOiBjcm9zcy1jb21w aWxpbmcgZm9yIGEgbm9uLWN5Z3dpbiB0YXJnZXQgaXMgbm90IHN1cHBvcnRlZCIgPiYyCi0tCTs7 Ci0tICAgIGVzYWMKLS0KLS0gICAgaWYgdGVzdCAieCRjcm9zc19jYWNoZSIgIT0gIngiOyB0aGVu Ci0tCWlmIHRlc3QgLXIgIiR7Y3Jvc3NfY2FjaGV9IjsgdGhlbgotLQkgICAgZWNobyAibG9hZGlu ZyBjcm9zcy1idWlsZCBjYWNoZSBmaWxlICR7Y3Jvc3NfY2FjaGV9IgotLQkgICAgLiAke2Nyb3Nz X2NhY2hlfQotLQlmaQotLQl1bnNldCBjcm9zc19jYWNoZQotLSAgICBmaQotLWZpCi0tCi0taWYg dGVzdCAteiAiJENDX0ZPUl9CVUlMRCI7IHRoZW4KLS0gICAgaWYgdGVzdCAieCRjcm9zc19jb21w aWxpbmciID0gInhubyI7IHRoZW4KLS0gICAgICAgIENDX0ZPUl9CVUlMRD0nJChDQyknCi0tICAg IGVsc2UKLS0gICAgICAgIENDX0ZPUl9CVUlMRD1nY2MKLS0gICAgZmkKLS1maQotLUFDX1NVQlNU KENDX0ZPUl9CVUlMRCkKLS0gCi0tZG5sIEVORCBjaGFuZ2VzIGZvciBDWUdOVVMgY3Jvc3MtYnVp bGRpbmcgZm9yIEN5Z3dpbgotLQotICMgSWYgd2UncmUgdXNpbmcgZ2NjIGFuZCB0aGUgdXNlciBo YXNuJ3Qgc3BlY2lmaWVkIENGTEFHUywgYWRkIC1PIHRvIENGTEFHUy4KLSB0ZXN0IC1uICIkR0ND IiAmJiB0ZXN0IC1uICIkYXV0b19jZmxhZ3MiICYmIENGTEFHUz0iJENGTEFHUyAtTyIKLSAKLUBA IC0xNzAsNiArMTMwLDcgQEAgQUNfU1VCU1QoTUFLRV9TSEVMTCkKLSBBQ19DX0NPTlNUCi0gQUNf Q19QUk9UT1RZUEVTCi0gQUNfQ19DSEFSX1VOU0lHTkVECi0rQUNfQ19WT0xBVElMRQotIAotIEFD X1RZUEVfU0lHTkFMCi0gCi1AQCAtMjAwLDYgKzE2MSw4IEBAIEFDX0NIRUNLX0hFQURFUlMoc3lz L3B0ZW0uaCwsLAotICNlbmRpZgotIF1dKQotIAotK0FDX1NZU19MQVJHRUZJTEUKLSsKLSBCQVNI X1NZU19TSUdOQUxfVklOVEFHRQotIEJBU0hfU1lTX1JFSU5TVEFMTF9TSUdIQU5ETEVSUwotIAot QEAgLTIxMiw3ICsxNzUsOSBAQCBCQVNIX0NIRUNLX0dFVFBXX0ZVTkNTCi0gCi0gQUNfSEVBREVS X1RJT0NHV0lOU1oKLSAKLStCQVNIX1RZUEVfU0lHX0FUT01JQ19UCi0gQkFTSF9UWVBFX1NJR0hB TkRMRVIKLSsKLSBCQVNIX0hBVkVfVElPQ1NUQVQKLSBCQVNIX0hBVkVfRklPTlJFQUQKLSBCQVNI X0NIRUNLX1NQRUVEX1QKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2Rpc3Bs YXkuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9k aXNwbGF5LmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4y LjkwLjIwMTEwNzAzL3JlYWRsaW5lL2Rpc3BsYXkuYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAw MDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjQgQEAKLSAvKiBkaXNwbGF5LmMgLS0gcmVhZGxpbmUg cmVkaXNwbGF5IGZhY2lsaXR5LiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA1IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcg bGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcu Ci0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFk bGluZSksIGEgbGlicmFyeSAgICAKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGgg aW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSAKLS0gICBUaGUgR05VIFJl YWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQK LS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3 YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVh ZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBv ZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2Vw dCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0g ICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw MjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0rCi0gI2RlZmlu ZSBSRUFETElORV9MSUJSQVJZCi0gCi0gI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCi1AQCAt NjMsMzAgKzYzLDU5IEBACi0gZXh0ZXJuIGNoYXIgKnN0cmNociAoKSwgKnN0cnJjaHIgKCk7Ci0g I2VuZGlmIC8qICFzdHJjaHIgJiYgIV9fU1REQ19fICovCi0gCi0tI2lmIGRlZmluZWQgKEhBQ0tf VEVSTUNBUF9NT1RJT04pCi0tZXh0ZXJuIGNoYXIgKl9ybF90ZXJtX2ZvcndhcmRfY2hhcjsKLS0j ZW5kaWYKLS0KLSBzdGF0aWMgdm9pZCB1cGRhdGVfbGluZSBQQVJBTVMoKGNoYXIgKiwgY2hhciAq LCBpbnQsIGludCwgaW50LCBpbnQpKTsKLSBzdGF0aWMgdm9pZCBzcGFjZV90b19lb2wgUEFSQU1T KChpbnQpKTsKLSBzdGF0aWMgdm9pZCBkZWxldGVfY2hhcnMgUEFSQU1TKChpbnQpKTsKLSBzdGF0 aWMgdm9pZCBpbnNlcnRfc29tZV9jaGFycyBQQVJBTVMoKGNoYXIgKiwgaW50LCBpbnQpKTsKLSBz dGF0aWMgdm9pZCBjciBQQVJBTVMoKHZvaWQpKTsKLSAKLSsvKiBTdGF0ZSBvZiB2aXNpYmxlIGFu ZCBpbnZpc2libGUgbGluZXMuICovCi0rc3RydWN0IGxpbmVfc3RhdGUKLSsgIHsKLSsgICAgY2hh ciAqbGluZTsKLSsgICAgaW50ICpsYnJlYWtzOwotKyAgICBpbnQgbGJzaXplOwotICNpZiBkZWZp bmVkIChIQU5ETEVfTVVMVElCWVRFKQotLXN0YXRpYyBpbnQgX3JsX2NvbF93aWR0aCBQQVJBTVMo KGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpKTsKLS1zdGF0aWMgaW50ICpfcmxfd3JhcHBlZF9saW5l OwotLSNlbHNlCi0tIyAgZGVmaW5lIF9ybF9jb2xfd2lkdGgobCwgcywgZSkJKCgoZSkgPD0gKHMp KSA/IDAgOiAoZSkgLSAocykpCi0rICAgIGludCAqd3JhcHBlZF9saW5lOwotKyAgICBpbnQgd2Jz aXplOwotICNlbmRpZgotKyAgfTsKLSsKLSsvKiBUaGUgbGluZSBkaXNwbGF5IGJ1ZmZlcnMuICBP bmUgaXMgdGhlIGxpbmUgY3VycmVudGx5IGRpc3BsYXllZCBvbgotKyAgIHRoZSBzY3JlZW4uICBU aGUgb3RoZXIgaXMgdGhlIGxpbmUgYWJvdXQgdG8gYmUgZGlzcGxheWVkLiAqLwotK3N0YXRpYyBz dHJ1Y3QgbGluZV9zdGF0ZSBsaW5lX3N0YXRlX2FycmF5WzJdOwotK3N0YXRpYyBzdHJ1Y3QgbGlu ZV9zdGF0ZSAqbGluZV9zdGF0ZV92aXNpYmxlID0gJmxpbmVfc3RhdGVfYXJyYXlbMF07Ci0rc3Rh dGljIHN0cnVjdCBsaW5lX3N0YXRlICpsaW5lX3N0YXRlX2ludmlzaWJsZSA9ICZsaW5lX3N0YXRl X2FycmF5WzFdOwotK3N0YXRpYyBpbnQgbGluZV9zdHJ1Y3R1cmVzX2luaXRpYWxpemVkID0gMDsK LSAKLS1zdGF0aWMgaW50ICppbnZfbGJyZWFrcywgKnZpc19sYnJlYWtzOwotLXN0YXRpYyBpbnQg aW52X2xic2l6ZSwgdmlzX2xic2l6ZTsKLSsvKiBCYWNrd2FyZHMtY29tcGF0aWJsZSBuYW1lcy4g Ki8KLSsjZGVmaW5lIGludl9sYnJlYWtzCShsaW5lX3N0YXRlX2ludmlzaWJsZS0+bGJyZWFrcykK LSsjZGVmaW5lIGludl9sYnNpemUJKGxpbmVfc3RhdGVfaW52aXNpYmxlLT5sYnNpemUpCi0rI2Rl ZmluZSB2aXNfbGJyZWFrcwkobGluZV9zdGF0ZV92aXNpYmxlLT5sYnJlYWtzKQotKyNkZWZpbmUg dmlzX2xic2l6ZQkobGluZV9zdGF0ZV92aXNpYmxlLT5sYnNpemUpCi0rCi0rI2RlZmluZSB2aXNp YmxlX2xpbmUJKGxpbmVfc3RhdGVfdmlzaWJsZS0+bGluZSkKLSsjZGVmaW5lIGludmlzaWJsZV9s aW5lCShsaW5lX3N0YXRlX2ludmlzaWJsZS0+bGluZSkKLSsKLSsjaWYgZGVmaW5lZCAoSEFORExF X01VTFRJQllURSkKLStzdGF0aWMgaW50IF9ybF9jb2xfd2lkdGggUEFSQU1TKChjb25zdCBjaGFy ICosIGludCwgaW50LCBpbnQpKTsKLSsjZWxzZQotKyMgIGRlZmluZSBfcmxfY29sX3dpZHRoKGws IHMsIGUsIGYpCSgoKGUpIDw9IChzKSkgPyAwIDogKGUpIC0gKHMpKQotKyNlbmRpZgotIAotIC8q IEhldXJpc3RpYyB1c2VkIHRvIGRlY2lkZSB3aGV0aGVyIGl0IGlzIGZhc3RlciB0byBtb3ZlIGZy b20gQ1VSIHRvIE5FVwotLSAgIGJ5IGJhY2tpbmcgdXAgb3Igb3V0cHV0dGluZyBhIGNhcnJpYWdl IHJldHVybiBhbmQgbW92aW5nIGZvcndhcmQuICovCi0rICAgYnkgYmFja2luZyB1cCBvciBvdXRw dXR0aW5nIGEgY2FycmlhZ2UgcmV0dXJuIGFuZCBtb3ZpbmcgZm9yd2FyZC4gIENVUgotKyAgIGFu ZCBORVcgYXJlIGVpdGhlciBib3RoIGJ1ZmZlciBwb3NpdGlvbnMgb3IgYWJzb2x1dGUgc2NyZWVu IHBvc2l0aW9ucy4gKi8KLSAjZGVmaW5lIENSX0ZBU1RFUihuZXcsIGN1cikgKCgobmV3KSArIDEp IDwgKChjdXIpIC0gKG5ldykpKQotIAotKy8qIF9ybF9sYXN0X2NfcG9zIGlzIGFuIGFic29sdXRl IGN1cnNvciBwb3NpdGlvbiBpbiBtdWx0aWJ5dGUgbG9jYWxlcyBhbmQgYQotKyAgIGJ1ZmZlciBp bmRleCBpbiBvdGhlcnMuICBUaGlzIG1hY3JvIGlzIHVzZWQgd2hlbiBkZWNpZGluZyB3aGV0aGVy IHRoZQotKyAgIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIGlzIGluIHRoZSBtaWRkbGUgb2YgYSBw cm9tcHQgc3RyaW5nIGNvbnRhaW5pbmcKLSsgICBpbnZpc2libGUgY2hhcmFjdGVycy4gIFhYWCAt IG1pZ2h0IG5lZWQgdG8gdGFrZSBgbW9kbWFyaycgaW50byBhY2NvdW50LiAqLwotKyNkZWZpbmUg UFJPTVBUX0VORElOR19JTkRFWCBcCi0rICAoKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3Jp ZW50ZWQgPT0gMCkgPyBwcm9tcHRfcGh5c2ljYWxfY2hhcnMgOiBwcm9tcHRfbGFzdF9pbnZpc2li bGUrMSkKLSsgIAotKwotIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSAvKgkJCQkJCQkJICAgICovCi0gLyoJCQlE aXNwbGF5IHN0dWZmCQkJCSAgICAqLwotQEAgLTEzOSw2ICsxNjgsOCBAQCBpbnQgX3JsX2xhc3Rf Y19wb3MgPSAwOwotIGludCBfcmxfbGFzdF92X3BvcyA9IDA7Ci0gCi0gc3RhdGljIGludCBjcG9z X2FkanVzdGVkOwotK3N0YXRpYyBpbnQgY3Bvc19idWZmZXJfcG9zaXRpb247Ci0rc3RhdGljIGlu dCBwcm9tcHRfbXVsdGlieXRlX2NoYXJzOwotIAotIC8qIE51bWJlciBvZiBsaW5lcyBjdXJyZW50 bHkgb24gc2NyZWVuIG1pbnVzIDEuICovCi0gaW50IF9ybF92aXNfYm90bGluID0gMDsKLUBAIC0x NDgsMTEgKzE3OSw2IEBAIGludCBfcmxfdmlzX2JvdGxpbiA9IDA7Ci0gICAgZG9pbmcgaG9yaXpv bnRhbCBzY3JvbGxpbmcuICBJdCBzaGlmdHMgaW4gdGhpcmRzIG9mIGEgc2NyZWVud2lkdGguICov Ci0gc3RhdGljIGludCBsYXN0X2xtYXJnaW47Ci0gCi0tLyogVGhlIGxpbmUgZGlzcGxheSBidWZm ZXJzLiAgT25lIGlzIHRoZSBsaW5lIGN1cnJlbnRseSBkaXNwbGF5ZWQgb24KLS0gICB0aGUgc2Ny ZWVuLiAgVGhlIG90aGVyIGlzIHRoZSBsaW5lIGFib3V0IHRvIGJlIGRpc3BsYXllZC4gKi8KLS1z dGF0aWMgY2hhciAqdmlzaWJsZV9saW5lID0gKGNoYXIgKilOVUxMOwotLXN0YXRpYyBjaGFyICpp bnZpc2libGVfbGluZSA9IChjaGFyICopTlVMTDsKLS0KLSAvKiBBIGJ1ZmZlciBmb3IgYG1vZGVs aW5lJyBtZXNzYWdlcy4gKi8KLSBzdGF0aWMgY2hhciBtc2dfYnVmWzEyOF07Ci0gCi1AQCAtMTY2 LDYgKzE5Miw3IEBAIHN0YXRpYyBpbnQgbGluZV9zaXplID0gMTAyNDsKLSAgICBpbmNsdWRlIGlu dmlzaWJsZSBjaGFyYWN0ZXJzLiAqLwotIAotIHN0YXRpYyBjaGFyICpsb2NhbF9wcm9tcHQsICps b2NhbF9wcm9tcHRfcHJlZml4OwotK3N0YXRpYyBpbnQgbG9jYWxfcHJvbXB0X2xlbjsKLSBzdGF0 aWMgaW50IHByb21wdF92aXNpYmxlX2xlbmd0aCwgcHJvbXB0X3ByZWZpeF9sZW5ndGg7Ci0gCi0g LyogVGhlIG51bWJlciBvZiBpbnZpc2libGUgY2hhcmFjdGVycyBpbiB0aGUgbGluZSBjdXJyZW50 bHkgYmVpbmcKLUBAIC0xOTIsNiArMjE5LDEwIEBAIHN0YXRpYyBpbnQgcHJvbXB0X2xhc3Rfc2Ny ZWVuX2xpbmU7Ci0gCi0gc3RhdGljIGludCBwcm9tcHRfcGh5c2ljYWxfY2hhcnM7Ci0gCi0rLyog c2V0IHRvIGEgbm9uLXplcm8gdmFsdWUgYnkgcmxfcmVkaXNwbGF5IGlmIHdlIGFyZSBtYXJraW5n IG1vZGlmaWVkIGhpc3RvcnkKLSsgICBsaW5lcyBhbmQgdGhlIGN1cnJlbnQgbGluZSBpcyBzbyBt YXJrZWQuICovCi0rc3RhdGljIGludCBtb2RtYXJrOwotKwotIC8qIFZhcmlhYmxlcyB0byBzYXZl IGFuZCByZXN0b3JlIHByb21wdCBhbmQgZGlzcGxheSBpbmZvcm1hdGlvbi4gKi8KLSAKLSAvKiBU aGVzZSBhcmUgZ2V0dGluZyBudW1lcm91cyBlbm91Z2ggdGhhdCBpdCdzIHRpbWUgdG8gY3JlYXRl IGEgc3RydWN0LiAqLwotQEAgLTIwMSw2ICsyMzIsNyBAQCBzdGF0aWMgY2hhciAqc2F2ZWRfbG9j YWxfcHJlZml4OwotIHN0YXRpYyBpbnQgc2F2ZWRfbGFzdF9pbnZpc2libGU7Ci0gc3RhdGljIGlu dCBzYXZlZF92aXNpYmxlX2xlbmd0aDsKLSBzdGF0aWMgaW50IHNhdmVkX3ByZWZpeF9sZW5ndGg7 Ci0rc3RhdGljIGludCBzYXZlZF9sb2NhbF9sZW5ndGg7Ci0gc3RhdGljIGludCBzYXZlZF9pbnZp c19jaGFyc19maXJzdF9saW5lOwotIHN0YXRpYyBpbnQgc2F2ZWRfcGh5c2ljYWxfY2hhcnM7Ci0g Ci1AQCAtMjI0LDcgKzI1Niw3IEBAIGV4cGFuZF9wcm9tcHQgKHBtdCwgbHAsIGxpcCwgbmlmbHAs IHZscCkKLSAgICAgIGNoYXIgKnBtdDsKLSAgICAgIGludCAqbHAsICpsaXAsICpuaWZscCwgKnZs cDsKLSB7Ci0tICBjaGFyICpyLCAqcmV0LCAqcDsKLSsgIGNoYXIgKnIsICpyZXQsICpwLCAqaWdz dGFydDsKLSAgIGludCBsLCBybCwgbGFzdCwgaWdub3JpbmcsIG5pbnZpcywgaW52ZmwsIGludmZs c2V0LCBpbmQsIHBpbmQsIHBoeXNjaGFyczsKLSAKLSAgIC8qIFNob3J0LWNpcmN1aXQgaWYgd2Ug Y2FuLiAqLwotQEAgLTI0OCwxOSArMjgwLDIxIEBAIGV4cGFuZF9wcm9tcHQgKHBtdCwgbHAsIGxp cCwgbmlmbHAsIHZscCkKLSAgIGludmZsID0gMDsJLyogaW52aXNpYmxlIGNoYXJzIGluIGZpcnN0 IGxpbmUgb2YgcHJvbXB0ICovCi0gICBpbnZmbHNldCA9IDA7CS8qIHdlIG9ubHkgd2FudCB0byBz ZXQgaW52Zmwgb25jZSAqLwotIAotKyAgaWdzdGFydCA9IDA7Ci0gICBmb3IgKHJsID0gaWdub3Jp bmcgPSBsYXN0ID0gbmludmlzID0gcGh5c2NoYXJzID0gMCwgcCA9IHBtdDsgcCAmJiAqcDsgcCsr KQotICAgICB7Ci0gICAgICAgLyogVGhpcyBjb2RlIHN0cmlwcyB0aGUgaW52aXNpYmxlIGNoYXJh Y3RlciBzdHJpbmcgbWFya2VycwotIAkgUkxfUFJPTVBUX1NUQVJUX0lHTk9SRSBhbmQgUkxfUFJP TVBUX0VORF9JR05PUkUgKi8KLS0gICAgICBpZiAoKnAgPT0gUkxfUFJPTVBUX1NUQVJUX0lHTk9S RSkKLSsgICAgICBpZiAoaWdub3JpbmcgPT0gMCAmJiAqcCA9PSBSTF9QUk9NUFRfU1RBUlRfSUdO T1JFKQkJLyogWFhYIC0gY2hlY2sgaWdub3Jpbmc/ICovCi0gCXsKLS0JICBpZ25vcmluZysrOwot KwkgIGlnbm9yaW5nID0gMTsKLSsJICBpZ3N0YXJ0ID0gcDsKLSAJICBjb250aW51ZTsKLSAJfQot ICAgICAgIGVsc2UgaWYgKGlnbm9yaW5nICYmICpwID09IFJMX1BST01QVF9FTkRfSUdOT1JFKQot IAl7Ci0gCSAgaWdub3JpbmcgPSAwOwotLQkgIGlmIChwWy0xXSAhPSBSTF9QUk9NUFRfU1RBUlRf SUdOT1JFKQotKwkgIGlmIChwICE9IChpZ3N0YXJ0ICsgMSkpCi0gCSAgICBsYXN0ID0gciAtIHJl dCAtIDE7Ci0gCSAgY29udGludWU7Ci0gCX0KLUBAIC0yNzYsOCArMzEwLDEzIEBAIGV4cGFuZF9w cm9tcHQgKHBtdCwgbHAsIGxpcCwgbmlmbHAsIHZscCkKLSAJICAgICAgICAqcisrID0gKnArKzsK LSAJICAgICAgaWYgKCFpZ25vcmluZykKLSAJCXsKLSsJCSAgLyogcmwgZW5kcyB1cCBiZWluZyBh c3NpZ25lZCB0byBwcm9tcHRfdmlzaWJsZV9sZW5ndGgsCi0rCQkgICAgIHdoaWNoIGlzIHRoZSBu dW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgYnVmZmVyIHRoYXQKLSsJCSAgICAgY29udHJpYnV0 ZSB0byBjaGFyYWN0ZXJzIG9uIHRoZSBzY3JlZW4sIHdoaWNoIG1pZ2h0Ci0rCQkgICAgIG5vdCBi ZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIHBoeXNpY2FsIGNoYXJhY3RlcnMKLSsJCSAgICAg b24gdGhlIHNjcmVlbiBpbiB0aGUgcHJlc2VuY2Ugb2YgbXVsdGlieXRlIGNoYXJhY3RlcnMgKi8K LSAJCSAgcmwgKz0gaW5kIC0gcGluZDsKLS0JCSAgcGh5c2NoYXJzICs9IF9ybF9jb2xfd2lkdGgg KHBtdCwgcGluZCwgaW5kKTsKLSsJCSAgcGh5c2NoYXJzICs9IF9ybF9jb2xfd2lkdGggKHBtdCwg cGluZCwgaW5kLCAwKTsKLSAJCX0KLSAJICAgICAgZWxzZQotIAkJbmludmlzICs9IGluZCAtIHBp bmQ7Ci1AQCAtMzYwLDYgKzM5OSw3IEBAIHJsX2V4cGFuZF9wcm9tcHQgKHByb21wdCkKLSAgIEZS RUUgKGxvY2FsX3Byb21wdF9wcmVmaXgpOwotIAotICAgbG9jYWxfcHJvbXB0ID0gbG9jYWxfcHJv bXB0X3ByZWZpeCA9IChjaGFyICopMDsKLSsgIGxvY2FsX3Byb21wdF9sZW4gPSAwOwotICAgcHJv bXB0X2xhc3RfaW52aXNpYmxlID0gcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUgPSAwOwot ICAgcHJvbXB0X3Zpc2libGVfbGVuZ3RoID0gcHJvbXB0X3BoeXNpY2FsX2NoYXJzID0gMDsKLSAK LUBAIC0zNzUsNiArNDE1LDcgQEAgcmxfZXhwYW5kX3Byb21wdCAocHJvbXB0KQotIAkJCQkJICAg ICZwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSwKLSAJCQkJCSAgICAmcHJvbXB0X3BoeXNp Y2FsX2NoYXJzKTsKLSAgICAgICBsb2NhbF9wcm9tcHRfcHJlZml4ID0gKGNoYXIgKikwOwotKyAg ICAgIGxvY2FsX3Byb21wdF9sZW4gPSBsb2NhbF9wcm9tcHQgPyBzdHJsZW4gKGxvY2FsX3Byb21w dCkgOiAwOwotICAgICAgIHJldHVybiAocHJvbXB0X3Zpc2libGVfbGVuZ3RoKTsKLSAgICAgfQot ICAgZWxzZQotQEAgLTM4MywxNiArNDI0LDE3IEBAIHJsX2V4cGFuZF9wcm9tcHQgKHByb21wdCkK LSAgICAgICB0ID0gKytwOwotICAgICAgIGxvY2FsX3Byb21wdCA9IGV4cGFuZF9wcm9tcHQgKHAs ICZwcm9tcHRfdmlzaWJsZV9sZW5ndGgsCi0gCQkJCSAgICAgICAmcHJvbXB0X2xhc3RfaW52aXNp YmxlLAotLQkJCQkgICAgICAgKGludCAqKU5VTEwsCi0rCQkJCSAgICAgICAmcHJvbXB0X2ludmlz X2NoYXJzX2ZpcnN0X2xpbmUsCi0gCQkJCSAgICAgICAmcHJvbXB0X3BoeXNpY2FsX2NoYXJzKTsK LSAgICAgICBjID0gKnQ7ICp0ID0gJ1wwJzsKLSAgICAgICAvKiBUaGUgcG9ydGlvbiBvZiB0aGUg cHJvbXB0IHN0cmluZyB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZQotIAkgZmluYWwgbmV3bGluZSBp cyBub3cgbnVsbC10ZXJtaW5hdGVkLiAqLwotICAgICAgIGxvY2FsX3Byb21wdF9wcmVmaXggPSBl eHBhbmRfcHJvbXB0IChwcm9tcHQsICZwcm9tcHRfcHJlZml4X2xlbmd0aCwKLSAJCQkJCQkgICAo aW50ICopTlVMTCwKLS0JCQkJCQkgICAmcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUsCi0r CQkJCQkJICAgKGludCAqKU5VTEwsCi0gCQkJCQkJICAgKGludCAqKU5VTEwpOwotICAgICAgICp0 ID0gYzsKLSsgICAgICBsb2NhbF9wcm9tcHRfbGVuID0gbG9jYWxfcHJvbXB0ID8gc3RybGVuIChs b2NhbF9wcm9tcHQpIDogMDsKLSAgICAgICByZXR1cm4gKHByb21wdF9wcmVmaXhfbGVuZ3RoKTsK LSAgICAgfQotIH0KLUBAIC00MzQsMTMgKzQ3NiwyMSBAQCBpbml0X2xpbmVfc3RydWN0dXJlcyAo bWluc2l6ZSkKLSAgICAgewotICAgICAgIC8qIHNob3VsZCBiZSBlbm91Z2guICovCi0gICAgICAg aW52X2xic2l6ZSA9IHZpc19sYnNpemUgPSAyNTY7Ci0tICAgICAgaW52X2xicmVha3MgPSAoaW50 ICopeG1hbGxvYyAoaW52X2xic2l6ZSAqIHNpemVvZiAoaW50KSk7Ci0tICAgICAgdmlzX2xicmVh a3MgPSAoaW50ICopeG1hbGxvYyAodmlzX2xic2l6ZSAqIHNpemVvZiAoaW50KSk7Ci0rCi0gI2lm IGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0tICAgICAgX3JsX3dyYXBwZWRfbGluZSA9IChp bnQgKil4bWFsbG9jICh2aXNfbGJzaXplICogc2l6ZW9mIChpbnQpKTsKLSsgICAgICBsaW5lX3N0 YXRlX3Zpc2libGUtPndic2l6ZSA9IHZpc19sYnNpemU7Ci0rICAgICAgbGluZV9zdGF0ZV92aXNp YmxlLT53cmFwcGVkX2xpbmUgPSAoaW50ICopeG1hbGxvYyAobGluZV9zdGF0ZV92aXNpYmxlLT53 YnNpemUgKiBzaXplb2YgKGludCkpOwotKwotKyAgICAgIGxpbmVfc3RhdGVfaW52aXNpYmxlLT53 YnNpemUgPSBpbnZfbGJzaXplOwotKyAgICAgIGxpbmVfc3RhdGVfaW52aXNpYmxlLT53cmFwcGVk X2xpbmUgPSAoaW50ICopeG1hbGxvYyAobGluZV9zdGF0ZV9pbnZpc2libGUtPndic2l6ZSAqIHNp emVvZiAoaW50KSk7Ci0gI2VuZGlmCi0rCi0rICAgICAgaW52X2xicmVha3MgPSAoaW50ICopeG1h bGxvYyAoaW52X2xic2l6ZSAqIHNpemVvZiAoaW50KSk7Ci0rICAgICAgdmlzX2xicmVha3MgPSAo aW50ICopeG1hbGxvYyAodmlzX2xic2l6ZSAqIHNpemVvZiAoaW50KSk7Ci0gICAgICAgaW52X2xi cmVha3NbMF0gPSB2aXNfbGJyZWFrc1swXSA9IDA7Ci0gICAgIH0KLSsKLSsgIGxpbmVfc3RydWN0 dXJlc19pbml0aWFsaXplZCA9IDE7Ci0gfQotICAgCi0gLyogQmFzaWMgcmVkaXNwbGF5IGFsZ29y aXRobS4gKi8KLUBAIC00NDksOCArNDk5LDggQEAgcmxfcmVkaXNwbGF5ICgpCi0gewotICAgcmVn aXN0ZXIgaW50IGluLCBvdXQsIGMsIGxpbmVudW0sIGN1cnNvcl9saW5lbnVtOwotICAgcmVnaXN0 ZXIgY2hhciAqbGluZTsKLS0gIGludCBjX3BvcywgaW52X2JvdGxpbiwgbGJfYm90bGluLCBsYl9s aW5lbnVtLCBvX2Nwb3M7Ci0tICBpbnQgbmV3bGluZXMsIGxwb3MsIHRlbXAsIG1vZG1hcmssIG4w LCBudW07Ci0rICBpbnQgaW52X2JvdGxpbiwgbGJfYm90bGluLCBsYl9saW5lbnVtLCBvX2Nwb3M7 Ci0rICBpbnQgbmV3bGluZXMsIGxwb3MsIHRlbXAsIG4wLCBudW0sIHByb21wdF9saW5lc19lc3Rp bWF0ZTsKLSAgIGNoYXIgKnByb21wdF90aGlzX2xpbmU7Ci0gI2lmIGRlZmluZWQgKEhBTkRMRV9N VUxUSUJZVEUpCi0gICB3Y2hhcl90IHdjOwotQEAgLTQ2MCwyNCArNTEwLDI3IEBAIHJsX3JlZGlz cGxheSAoKQotICAgaW50IF9ybF93cmFwcGVkX211bHRpY29sdW1uID0gMDsKLSAjZW5kaWYKLSAK LS0gIGlmICghcmVhZGxpbmVfZWNob2luZ19wKQotKyAgaWYgKF9ybF9lY2hvaW5nX3AgPT0gMCkK LSAgICAgcmV0dXJuOwotIAotLSAgLyogU2lnbmFscyBhcmUgYmxvY2tlZCB0aHJvdWdoIHRoaXMg ZnVuY3Rpb24gYXMgdGhlIGdsb2JhbCBkYXRhIHN0cnVjdHVyZXMKLS0gICAgIGNvdWxkIGdldCBj b3JydXB0ZWQgdXBvbiBtb2RpZmljYXRpb25zIGZyb20gYW4gaW52b2tlZCBzaWduYWwgaGFuZGxl ci4gKi8KLS0gIF9ybF9ibG9ja19zaWdpbnQgKCk7Ci0rICAvKiBCbG9jayBrZXlib2FyZCBpbnRl cnJ1cHRzIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBtYW5pcHVsYXRlcyBnbG9iYWwKLSsgICAgIGRh dGEgc3RydWN0dXJlcy4gKi8KLSsgIF9ybF9ibG9ja19zaWdpbnQgKCk7ICAKLSsgIFJMX1NFVFNU QVRFIChSTF9TVEFURV9SRURJU1BMQVlJTkcpOwotIAotICAgaWYgKCFybF9kaXNwbGF5X3Byb21w dCkKLSAgICAgcmxfZGlzcGxheV9wcm9tcHQgPSAiIjsKLSAKLS0gIGlmIChpbnZpc2libGVfbGlu ZSA9PSAwIHx8IHZpc19sYnJlYWtzID09IDApCi0rICBpZiAobGluZV9zdHJ1Y3R1cmVzX2luaXRp YWxpemVkID09IDApCi0gICAgIHsKLSAgICAgICBpbml0X2xpbmVfc3RydWN0dXJlcyAoMCk7Ci0g ICAgICAgcmxfb25fbmV3X2xpbmUgKCk7Ci0gICAgIH0KLSAKLSAgIC8qIERyYXcgdGhlIGxpbmUg aW50byB0aGUgYnVmZmVyLiAqLwotLSAgY19wb3MgPSAtMTsKLSsgIGNwb3NfYnVmZmVyX3Bvc2l0 aW9uID0gLTE7Ci0rCi0rICBwcm9tcHRfbXVsdGlieXRlX2NoYXJzID0gcHJvbXB0X3Zpc2libGVf bGVuZ3RoIC0gcHJvbXB0X3BoeXNpY2FsX2NoYXJzOwotIAotICAgbGluZSA9IGludmlzaWJsZV9s aW5lOwotICAgb3V0ID0gaW52X2JvdGxpbiA9IDA7Ci1AQCAtNTA0LDI0ICs1NTcsMjMgQEAgcmxf cmVkaXNwbGF5ICgpCi0gICAgICBudW1iZXIgb2Ygbm9uLXZpc2libGUgY2hhcmFjdGVycyBpbiB0 aGUgcHJvbXB0IHN0cmluZy4gKi8KLSAgIGlmIChybF9kaXNwbGF5X3Byb21wdCA9PSBybF9wcm9t cHQgfHwgbG9jYWxfcHJvbXB0KQotICAgICB7Ci0tICAgICAgaW50IGxvY2FsX2xlbiA9IGxvY2Fs X3Byb21wdCA/IHN0cmxlbiAobG9jYWxfcHJvbXB0KSA6IDA7Ci0gICAgICAgaWYgKGxvY2FsX3By b21wdF9wcmVmaXggJiYgZm9yY2VkX2Rpc3BsYXkpCi0gCV9ybF9vdXRwdXRfc29tZV9jaGFycyAo bG9jYWxfcHJvbXB0X3ByZWZpeCwgc3RybGVuIChsb2NhbF9wcm9tcHRfcHJlZml4KSk7Ci0gCi0t ICAgICAgaWYgKGxvY2FsX2xlbiA+IDApCi0rICAgICAgaWYgKGxvY2FsX3Byb21wdF9sZW4gPiAw KQotIAl7Ci0tCSAgdGVtcCA9IGxvY2FsX2xlbiArIG91dCArIDI7Ci0rCSAgdGVtcCA9IGxvY2Fs X3Byb21wdF9sZW4gKyBvdXQgKyAyOwotIAkgIGlmICh0ZW1wID49IGxpbmVfc2l6ZSkKLSAJICAg IHsKLSAJICAgICAgbGluZV9zaXplID0gKHRlbXAgKyAxMDI0KSAtICh0ZW1wICUgMTAyNCk7Ci0g CSAgICAgIHZpc2libGVfbGluZSA9IChjaGFyICopeHJlYWxsb2MgKHZpc2libGVfbGluZSwgbGlu ZV9zaXplKTsKLSAJICAgICAgbGluZSA9IGludmlzaWJsZV9saW5lID0gKGNoYXIgKil4cmVhbGxv YyAoaW52aXNpYmxlX2xpbmUsIGxpbmVfc2l6ZSk7Ci0gCSAgICB9Ci0tCSAgc3RybmNweSAobGlu ZSArIG91dCwgbG9jYWxfcHJvbXB0LCBsb2NhbF9sZW4pOwotLQkgIG91dCArPSBsb2NhbF9sZW47 Ci0rCSAgc3RybmNweSAobGluZSArIG91dCwgbG9jYWxfcHJvbXB0LCBsb2NhbF9wcm9tcHRfbGVu KTsKLSsJICBvdXQgKz0gbG9jYWxfcHJvbXB0X2xlbjsKLSAJfQotICAgICAgIGxpbmVbb3V0XSA9 ICdcMCc7Ci0tICAgICAgd3JhcF9vZmZzZXQgPSBsb2NhbF9sZW4gLSBwcm9tcHRfdmlzaWJsZV9s ZW5ndGg7Ci0rICAgICAgd3JhcF9vZmZzZXQgPSBsb2NhbF9wcm9tcHRfbGVuIC0gcHJvbXB0X3Zp c2libGVfbGVuZ3RoOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLUBAIC01NzYsMTAgKzYyOCwx NCBAQCBybF9yZWRpc3BsYXkgKCkKLSAJICAgICAgeyBcCi0gCQlpbnZfbGJzaXplICo9IDI7IFwK LSAJCWludl9sYnJlYWtzID0gKGludCAqKXhyZWFsbG9jIChpbnZfbGJyZWFrcywgaW52X2xic2l6 ZSAqIHNpemVvZiAoaW50KSk7IFwKLS0JCV9ybF93cmFwcGVkX2xpbmUgPSAoaW50ICopeHJlYWxs b2MgKF9ybF93cmFwcGVkX2xpbmUsIGludl9sYnNpemUgKiBzaXplb2YgKGludCkpOyBcCi0gCSAg ICAgIH0gXAotIAkgICAgaW52X2xicmVha3NbKytuZXdsaW5lc10gPSBvdXQ7IFwKLS0JICAgIF9y bF93cmFwcGVkX2xpbmVbbmV3bGluZXNdID0gX3JsX3dyYXBwZWRfbXVsdGljb2x1bW47IFwKLSsJ ICAgIGlmIChuZXdsaW5lcyA+PSAobGluZV9zdGF0ZV9pbnZpc2libGUtPndic2l6ZSAtIDEpKSBc Ci0rCSAgICAgIHsgXAotKwkJbGluZV9zdGF0ZV9pbnZpc2libGUtPndic2l6ZSAqPSAyOyBcCi0r CQlsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lID0gKGludCAqKXhyZWFsbG9jIChs aW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lLCBsaW5lX3N0YXRlX2ludmlzaWJsZS0+ d2JzaXplICogc2l6ZW9mKGludCkpOyBcCi0rCSAgICAgIH0gXAotKwkgICAgbGluZV9zdGF0ZV9p bnZpc2libGUtPndyYXBwZWRfbGluZVtuZXdsaW5lc10gPSBfcmxfd3JhcHBlZF9tdWx0aWNvbHVt bjsgXAotIAkgICAgbHBvcyA9IDA7IFwKLSAJICB9IFwKLSAgICAgICB9IHdoaWxlICgwKQotQEAg LTYwMiwyNiArNjU4LDI2IEBAIHJsX3JlZGlzcGxheSAoKQotIAotICAgLyogaW52X2xicmVha3Nb aV0gaXMgd2hlcmUgbGluZSBpIHN0YXJ0cyBpbiB0aGUgYnVmZmVyLiAqLwotICAgaW52X2xicmVh a3NbbmV3bGluZXMgPSAwXSA9IDA7Ci0tI2lmIDAKLS0gIGxwb3MgPSBvdXQgLSB3cmFwX29mZnNl dDsKLS0jZWxzZQotICAgbHBvcyA9IHByb21wdF9waHlzaWNhbF9jaGFycyArIG1vZG1hcms7Ci0t I2VuZGlmCi0gCi0gI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0tICBtZW1zZXQgKF9y bF93cmFwcGVkX2xpbmUsIDAsIHZpc19sYnNpemUpOwotKyAgbWVtc2V0IChsaW5lX3N0YXRlX2lu dmlzaWJsZS0+d3JhcHBlZF9saW5lLCAwLCBsaW5lX3N0YXRlX2ludmlzaWJsZS0+d2JzaXplICog c2l6ZW9mIChpbnQpKTsKLSAgIG51bSA9IDA7Ci0gI2VuZGlmCi0gCi0gICAvKiBwcm9tcHRfaW52 aXNfY2hhcnNfZmlyc3RfbGluZSBpcyB0aGUgbnVtYmVyIG9mIGludmlzaWJsZSBjaGFyYWN0ZXJz IGluCi0gICAgICB0aGUgZmlyc3QgcGh5c2ljYWwgbGluZSBvZiB0aGUgcHJvbXB0LgotICAgICAg d3JhcF9vZmZzZXQgLSBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSBpcyB0aGUgbnVtYmVy IG9mIGludmlzCi0tICAgICBjaGFycyBvbiB0aGUgc2Vjb25kIGxpbmUuICovCi0rICAgICBjaGFy cyBvbiB0aGUgc2Vjb25kIChvciwgbW9yZSBnZW5lcmFsbHksIGxhc3QpIGxpbmUuICovCi0rCi0r ICAvKiBUaGlzIGlzIHplcm8tYmFzZWQsIHVzZWQgdG8gc2V0IHRoZSBuZXdsaW5lcyAqLwotKyAg cHJvbXB0X2xpbmVzX2VzdGltYXRlID0gbHBvcyAvIF9ybF9zY3JlZW53aWR0aDsKLSAKLSAgIC8q IHdoYXQgaWYgbHBvcyBpcyBhbHJlYWR5ID49IF9ybF9zY3JlZW53aWR0aCBiZWZvcmUgd2Ugc3Rh cnQgZHJhd2luZyB0aGUKLSAgICAgIGNvbnRlbnRzIG9mIHRoZSBjb21tYW5kIGxpbmU/ICovCi0g ICB3aGlsZSAobHBvcyA+PSBfcmxfc2NyZWVud2lkdGgpCi0gICAgIHsKLSsgICAgICBpbnQgejsK LSAgICAgICAvKiBmaXggZnJvbSBEYXJpbiBKb2huc29uIDxkYXJpbkBhY3Vzb24uY29tPiBmb3Ig cHJvbXB0IHN0cmluZyB3aXRoCi0gICAgICAgICAgaW52aXNpYmxlIGNoYXJhY3RlcnMgdGhhdCBp cyBsb25nZXIgdGhhbiB0aGUgc2NyZWVuIHdpZHRoLiAgVGhlCi0gICAgICAgICAgcHJvbXB0X2lu dmlzX2NoYXJzX2ZpcnN0X2xpbmUgdmFyaWFibGUgY291bGQgYmUgbWFkZSBpbnRvIGFuIGFycmF5 Ci1AQCAtNjMwLDM3ICs2ODYsNDggQEAgcmxfcmVkaXNwbGF5ICgpCi0gICAgICAgICAgcHJvbXB0 cyB0aGF0IGV4Y2VlZCB0d28gcGh5c2ljYWwgbGluZXM/Ci0gICAgICAgICAgQWRkaXRpb25hbCBs b2dpYyBmaXggZnJvbSBFZHdhcmQgQ2F0bXVyIDxlZEBjYXRtdXIuY28udWs+ICovCi0gI2lmIGRl ZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0tICAgICAgbjAgPSBudW07Ci0tICAgICAgdGVtcCA9 IGxvY2FsX3Byb21wdCA/IHN0cmxlbiAobG9jYWxfcHJvbXB0KSA6IDA7Ci0tICAgICAgd2hpbGUg KG51bSA8IHRlbXApCi0rICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50 ZWQgPT0gMCAmJiBwcm9tcHRfbXVsdGlieXRlX2NoYXJzID4gMCkKLSAJewotLQkgIGlmIChfcmxf Y29sX3dpZHRoICAobG9jYWxfcHJvbXB0LCBuMCwgbnVtKSA+IF9ybF9zY3JlZW53aWR0aCkKLSsJ ICBuMCA9IG51bTsKLSsgICAgICAgICAgdGVtcCA9IGxvY2FsX3Byb21wdF9sZW47Ci0rICAgICAg ICAgIHdoaWxlIChudW0gPCB0ZW1wKQotIAkgICAgewotLQkgICAgICBudW0gPSBfcmxfZmluZF9w cmV2X21iY2hhciAobG9jYWxfcHJvbXB0LCBudW0sIE1CX0ZJTkRfQU5ZKTsKLS0JICAgICAgYnJl YWs7Ci0rCSAgICAgIHogPSBfcmxfY29sX3dpZHRoICAobG9jYWxfcHJvbXB0LCBuMCwgbnVtLCAx KTsKLSsJICAgICAgaWYgKHogPiBfcmxfc2NyZWVud2lkdGgpCi0rCQl7Ci0rCSAgICAgICAgICBu dW0gPSBfcmxfZmluZF9wcmV2X21iY2hhciAobG9jYWxfcHJvbXB0LCBudW0sIE1CX0ZJTkRfQU5Z KTsKLSsJICAgICAgICAgIGJyZWFrOwotKwkJfQotKwkgICAgICBlbHNlIGlmICh6ID09IF9ybF9z Y3JlZW53aWR0aCkKLSsJICAgICAgICBicmVhazsKLSsJICAgICAgbnVtKys7Ci0gCSAgICB9Ci0t CSAgbnVtKys7Ci0rICAgICAgICAgIHRlbXAgPSBudW07Ci0gCX0KLS0gICAgICB0ZW1wID0gbnVt ICsKLS0jZWxzZQotLSAgICAgIHRlbXAgPSAoKG5ld2xpbmVzICsgMSkgKiBfcmxfc2NyZWVud2lk dGgpICsKLSsgICAgICBlbHNlCi0gI2VuZGlmIC8qICFIQU5ETEVfTVVMVElCWVRFICovCi0tICAg ICAgICAgICAgICgobG9jYWxfcHJvbXB0X3ByZWZpeCA9PSAwKSA/ICgobmV3bGluZXMgPT0gMCkg PyBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZQotLQkJCQkJCQkgICAgOiAoKG5ld2xpbmVz ID09IDEpID8gd3JhcF9vZmZzZXQgOiAwKSkKLS0JCQkJCSA6ICgobmV3bGluZXMgPT0gMCkgPyB3 cmFwX29mZnNldCA6MCkpOwotKwl0ZW1wID0gKChuZXdsaW5lcyArIDEpICogX3JsX3NjcmVlbndp ZHRoKTsKLSsKLSsgICAgICAvKiBOb3cgYWNjb3VudCBmb3IgaW52aXNpYmxlIGNoYXJhY3RlcnMg aW4gdGhlIGN1cnJlbnQgbGluZS4gKi8KLSsgICAgICAvKiBYWFggLSB0aGlzIGFzc3VtZXMgdGhh dCB0aGUgaW52aXNpYmxlIGNoYXJhY3RlcnMgbWF5IGJlIHNwbGl0LCBidXQgb25seQotKwkgYmV0 d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IGxpbmVzLiAqLwotKyAgICAgIHRlbXAgKz0gKChs b2NhbF9wcm9tcHRfcHJlZml4ID09IDApID8gKChuZXdsaW5lcyA9PSAwKSA/IHByb21wdF9pbnZp c19jaGFyc19maXJzdF9saW5lCi0rCQkJCQkJCSAgICAgOiAoKG5ld2xpbmVzID09IHByb21wdF9s aW5lc19lc3RpbWF0ZSkgPyB3cmFwX29mZnNldCA6IHByb21wdF9pbnZpc19jaGFyc19maXJzdF9s aW5lKSkKLSsJCQkJCSAgOiAoKG5ld2xpbmVzID09IDApID8gd3JhcF9vZmZzZXQgOiAwKSk7Ci0g ICAgICAgICAgICAgIAotICAgICAgIGludl9sYnJlYWtzWysrbmV3bGluZXNdID0gdGVtcDsKLSAj aWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKLS0gICAgICBscG9zIC09IF9ybF9jb2xfd2lk dGggKGxvY2FsX3Byb21wdCwgbjAsIG51bSk7Ci0tI2Vsc2UKLS0gICAgICBscG9zIC09IF9ybF9z Y3JlZW53aWR0aDsKLSsgICAgICBpZiAoTUJfQ1VSX01BWCA+IDEgJiYgcmxfYnl0ZV9vcmllbnRl ZCA9PSAwICYmIHByb21wdF9tdWx0aWJ5dGVfY2hhcnMgPiAwKQotKwlscG9zIC09IF9ybF9jb2xf d2lkdGggKGxvY2FsX3Byb21wdCwgbjAsIG51bSwgMSk7Ci0rICAgICAgZWxzZQotICNlbmRpZgot KwlscG9zIC09IF9ybF9zY3JlZW53aWR0aDsKLSAgICAgfQotIAotICAgcHJvbXB0X2xhc3Rfc2Ny ZWVuX2xpbmUgPSBuZXdsaW5lczsKLSAKLSAgIC8qIERyYXcgdGhlIHJlc3Qgb2YgdGhlIGxpbmUg KGFmdGVyIHRoZSBwcm9tcHQpIGludG8gaW52aXNpYmxlX2xpbmUsIGtlZXBpbmcKLS0gICAgIHRy YWNrIG9mIHdoZXJlIHRoZSBjdXJzb3IgaXMgKGNfcG9zKSwgdGhlIG51bWJlciBvZiB0aGUgbGlu ZSBjb250YWluaW5nCi0rICAgICB0cmFjayBvZiB3aGVyZSB0aGUgY3Vyc29yIGlzIChjcG9zX2J1 ZmZlcl9wb3NpdGlvbiksIHRoZSBudW1iZXIgb2YgdGhlIGxpbmUgY29udGFpbmluZwotICAgICAg dGhlIGN1cnNvciAobGJfbGluZW51bSksIHRoZSBsYXN0IGxpbmUgbnVtYmVyIChsYl9ib3RsaW4g YW5kIGludl9ib3RsaW4pLgotICAgICAgSXQgbWFpbnRhaW5zIGFuIGFycmF5IG9mIGxpbmUgYnJl YWtzIGZvciBkaXNwbGF5IChpbnZfbGJyZWFrcykuCi0gICAgICBUaGlzIGhhbmRsZXMgZXhwYW5k aW5nIHRhYnMgZm9yIGRpc3BsYXkgYW5kIGRpc3BsYXlpbmcgbWV0YSBjaGFyYWN0ZXJzLiAqLwot QEAgLTY3MCw2ICs3MzcsNyBAQCBybF9yZWRpc3BsYXkgKCkKLSAgIGlmIChNQl9DVVJfTUFYID4g MSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCi0gICAgIHsKLSAgICAgICBtZW1zZXQgKCZwcywg MCwgc2l6ZW9mIChtYnN0YXRlX3QpKTsKLSsgICAgICAvKiBYWFggLSB3aGF0IGlmIHdjX2J5dGVz IGVuZHMgdXAgPD0gMD8gY2hlY2sgZm9yIE1CX0lOVkFMSURDSCAqLwotICAgICAgIHdjX2J5dGVz ID0gbWJydG93YyAoJndjLCBybF9saW5lX2J1ZmZlciwgcmxfZW5kLCAmcHMpOwotICAgICB9Ci0g ICBlbHNlCi1AQCAtNzEzLDcgKzc4MSw3IEBAIHJsX3JlZGlzcGxheSAoKQotIAotICAgICAgIGlm IChpbiA9PSBybF9wb2ludCkKLSAJewotLQkgIGNfcG9zID0gb3V0OwotKwkgIGNwb3NfYnVmZmVy X3Bvc2l0aW9uID0gb3V0OwotIAkgIGxiX2xpbmVudW0gPSBuZXdsaW5lczsKLSAJfQotIAotQEAg LTgwNyw3ICs4NzUsNyBAQCBybF9yZWRpc3BsYXkgKCkKLSAJCSAgfQotIAkgICAgICBpZiAoaW4g PT0gcmxfcG9pbnQpCi0gCQl7Ci0tCQkgIGNfcG9zID0gb3V0OwotKwkJICBjcG9zX2J1ZmZlcl9w b3NpdGlvbiA9IG91dDsKLSAJCSAgbGJfbGluZW51bSA9IG5ld2xpbmVzOwotIAkJfQotIAkgICAg ICBmb3IgKGkgPSBpbjsgaSA8IGluK3djX2J5dGVzOyBpKyspCi1AQCAtODMwLDYgKzg5OCw3IEBA IHJsX3JlZGlzcGxheSAoKQotICAgICAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29y aWVudGVkID09IDApCi0gCXsKLSAJICBpbiArPSB3Y19ieXRlczsKLSsJICAvKiBYWFggLSB3aGF0 IGlmIHdjX2J5dGVzIGVuZHMgdXAgPD0gMD8gY2hlY2sgZm9yIE1CX0lOVkFMSURDSCAqLwotIAkg IHdjX2J5dGVzID0gbWJydG93YyAoJndjLCBybF9saW5lX2J1ZmZlciArIGluLCBybF9lbmQgLSBp biwgJnBzKTsKLSAJfQotICAgICAgIGVsc2UKLUBAIC04MzgsOSArOTA3LDkgQEAgcmxfcmVkaXNw bGF5ICgpCi0gCi0gICAgIH0KLSAgIGxpbmVbb3V0XSA9ICdcMCc7Ci0tICBpZiAoY19wb3MgPCAw KQotKyAgaWYgKGNwb3NfYnVmZmVyX3Bvc2l0aW9uIDwgMCkKLSAgICAgewotLSAgICAgIGNfcG9z ID0gb3V0OwotKyAgICAgIGNwb3NfYnVmZmVyX3Bvc2l0aW9uID0gb3V0OwotICAgICAgIGxiX2xp bmVudW0gPSBuZXdsaW5lczsKLSAgICAgfQotIAotQEAgLTg0OSw3ICs5MTgsNyBAQCBybF9yZWRp c3BsYXkgKCkKLSAgIGludl9sYnJlYWtzW25ld2xpbmVzKzFdID0gb3V0OwotICAgY3Vyc29yX2xp bmVudW0gPSBsYl9saW5lbnVtOwotIAotLSAgLyogQ19QT1MgPT0gcG9zaXRpb24gaW4gYnVmZmVy IHdoZXJlIGN1cnNvciBzaG91bGQgYmUgcGxhY2VkLgotKyAgLyogQ1BPU19CVUZGRVJfUE9TSVRJ T04gPT0gcG9zaXRpb24gaW4gYnVmZmVyIHdoZXJlIGN1cnNvciBzaG91bGQgYmUgcGxhY2VkLgot ICAgICAgQ1VSU09SX0xJTkVOVU0gPT0gbGluZSBudW1iZXIgd2hlcmUgdGhlIGN1cnNvciBzaG91 bGQgYmUgcGxhY2VkLiAqLwotIAotICAgLyogUFdQOiBub3cgaXMgd2hlbiB0aGluZ3MgZ2V0IGEg Yml0IGhhaXJ5LiAgVGhlIHZpc2libGUgYW5kIGludmlzaWJsZQotQEAgLTg4NCw2ICs5NTMsMTAg QEAgcmxfcmVkaXNwbGF5ICgpCi0gCSAgICAgc2Vjb25kIGFuZCBzdWJzZXF1ZW50IGxpbmVzIHN0 YXJ0IGF0IGludl9sYnJlYWtzW05dLCBvZmZzZXQgYnkKLSAJICAgICBPRkZTRVQgKHdoaWNoIGhh cyBhbHJlYWR5IGJlZW4gY2FsY3VsYXRlZCBhYm92ZSkuICAqLwotIAotKyNkZWZpbmUgSU5WSVNf RklSU1QoKQkocHJvbXB0X3BoeXNpY2FsX2NoYXJzID4gX3JsX3NjcmVlbndpZHRoID8gcHJvbXB0 X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUgOiB3cmFwX29mZnNldCkKLSsjZGVmaW5lIFdSQVBfT0ZG U0VUKGxpbmUsIG9mZnNldCkgICgobGluZSA9PSAwKSBcCi0rCQkJCQk/IChvZmZzZXQgPyBJTlZJ U19GSVJTVCgpIDogMCkgXAotKwkJCQkJOiAoKGxpbmUgPT0gcHJvbXB0X2xhc3Rfc2NyZWVuX2xp bmUpID8gd3JhcF9vZmZzZXQtcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUgOiAwKSkKLSAj ZGVmaW5lIFdfT0ZGU0VUKGxpbmUsIG9mZnNldCkgKChsaW5lKSA9PSAwID8gb2Zmc2V0IDogMCkK LSAjZGVmaW5lIFZJU19MTEVOKGwpCSgobCkgPiBfcmxfdmlzX2JvdGxpbiA/IDAgOiAodmlzX2xi cmVha3NbbCsxXSAtIHZpc19sYnJlYWtzW2xdKSkKLSAjZGVmaW5lIElOVl9MTEVOKGwpCShpbnZf bGJyZWFrc1tsKzFdIC0gaW52X2xicmVha3NbbF0pCi1AQCAtODkxLDkgKzk2NCwxNiBAQCBybF9y ZWRpc3BsYXkgKCkKLSAjZGVmaW5lIFZJU19MSU5FKGxpbmUpICgobGluZSkgPiBfcmxfdmlzX2Jv dGxpbikgPyAiIiA6IFZJU19DSEFSUyhsaW5lKQotICNkZWZpbmUgSU5WX0xJTkUobGluZSkgKGlu dmlzaWJsZV9saW5lICsgaW52X2xicmVha3NbbGluZV0pCi0gCi0rI2RlZmluZSBPTERfQ1BPU19J Tl9QUk9NUFQoKSAoY3Bvc19hZGp1c3RlZCA9PSAwICYmIFwKLSsJCQlfcmxfbGFzdF9jX3BvcyAh PSBvX2Nwb3MgJiYgXAotKwkJCV9ybF9sYXN0X2NfcG9zID4gd3JhcF9vZmZzZXQgJiYgXAotKwkJ CW9fY3BvcyA8IHByb21wdF9sYXN0X2ludmlzaWJsZSkKLSsKLSAJICAvKiBGb3IgZWFjaCBsaW5l IGluIHRoZSBidWZmZXIsIGRvIHRoZSB1cGRhdGluZyBkaXNwbGF5LiAqLwotIAkgIGZvciAobGlu ZW51bSA9IDA7IGxpbmVudW0gPD0gaW52X2JvdGxpbjsgbGluZW51bSsrKQotIAkgICAgewotKwkg ICAgICAvKiBUaGlzIGNhbiBsZWFkIHVzIGFzdHJheSBpZiB3ZSBleGVjdXRlIGEgcHJvZ3JhbSB0 aGF0IGNoYW5nZXMKLSsJCSB0aGUgbG9jYWxlIGZyb20gYSBub24tbXVsdGlieXRlIHRvIGEgbXVs dGlieXRlIG9uZS4gKi8KLSAJICAgICAgb19jcG9zID0gX3JsX2xhc3RfY19wb3M7Ci0gCSAgICAg IGNwb3NfYWRqdXN0ZWQgPSAwOwotIAkgICAgICB1cGRhdGVfbGluZSAoVklTX0xJTkUobGluZW51 bSksIElOVl9MSU5FKGxpbmVudW0pLCBsaW5lbnVtLAotQEAgLTkwMywxNiArOTgzLDIyIEBAIHJs X3JlZGlzcGxheSAoKQotIAkJIHRha2UgaW52aXNpYmxlIGNoYXJhY3RlcnMgaW50byBhY2NvdW50 LCBzaW5jZSBfcmxfbGFzdF9jX3BvcwotIAkJIGlzIGFuIGFic29sdXRlIGN1cnNvciBwb3NpdGlv biBpbiBhIG11bHRpYnl0ZSBsb2NhbGUuICBTZWUKLSAJCSBpZiBjb21wZW5zYXRpbmcgaGVyZSBp cyB0aGUgcmlnaHQgdGhpbmcsIG9yIGlmIHdlIGhhdmUgdG8KLS0JCSBjaGFuZ2UgdXBkYXRlX2xp bmUgaXRzZWxmLiAgVGhlcmUgaXMgb25lIGNhc2UgaW4gd2hpY2gKLSsJCSBjaGFuZ2UgdXBkYXRl X2xpbmUgaXRzZWxmLiAgVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgaW4gd2hpY2gKLSAJCSB1cGRh dGVfbGluZSBhZGp1c3RzIF9ybF9sYXN0X2NfcG9zIGl0c2VsZiAoc28gaXQgY2FuIHBhc3MKLSAJ CSBfcmxfbW92ZV9jdXJzb3JfcmVsYXRpdmUgYWNjdXJhdGUgdmFsdWVzKTsgaXQgY29tbXVuaWNh dGVzCi0tCQkgdGhpcyBiYWNrIGJ5IHNldHRpbmcgY3Bvc19hZGp1c3RlZCAqLwotLQkgICAgICBp ZiAobGluZW51bSA9PSAwICYmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09 IDApICYmCi0tCQkgIGNwb3NfYWRqdXN0ZWQgPT0gMCAmJgotLQkJICBfcmxfbGFzdF9jX3BvcyAh PSBvX2Nwb3MgJiYKLS0JCSAgX3JsX2xhc3RfY19wb3MgPiB3cmFwX29mZnNldCAmJgotLQkJICBv X2Nwb3MgPCBwcm9tcHRfbGFzdF9pbnZpc2libGUpCi0tCQlfcmxfbGFzdF9jX3BvcyAtPSB3cmFw X29mZnNldDsKLSsJCSB0aGlzIGJhY2sgYnkgc2V0dGluZyBjcG9zX2FkanVzdGVkLiAgSWYgd2Ug YXNzdW1lIHRoYXQKLSsJCSBfcmxfbGFzdF9jX3BvcyBpcyBjb3JyZWN0IChhbiBhYnNvbHV0ZSBj dXJzb3IgcG9zaXRpb24pIGVhY2gKLSsJCSB0aW1lIHVwZGF0ZV9saW5lIGlzIGNhbGxlZCwgdGhl biB3ZSBjYW4gYXNzdW1lIGluIG91cgotKwkJIGNhbGN1bGF0aW9ucyB0aGF0IG9fY3BvcyBkb2Vz IG5vdCBuZWVkIHRvIGJlIGFkanVzdGVkIGJ5Ci0rCQkgd3JhcF9vZmZzZXQuICovCi0rCSAgICAg IGlmIChsaW5lbnVtID09IDAgJiYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQg PT0gMCkgJiYgT0xEX0NQT1NfSU5fUFJPTVBUKCkpCi0rCQlfcmxfbGFzdF9jX3BvcyAtPSBwcm9t cHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZTsJLyogWFhYIC0gd2FzIHdyYXBfb2Zmc2V0ICovCi0r CSAgICAgIGVsc2UgaWYgKGxpbmVudW0gPT0gcHJvbXB0X2xhc3Rfc2NyZWVuX2xpbmUgJiYgcHJv bXB0X3BoeXNpY2FsX2NoYXJzID4gX3JsX3NjcmVlbndpZHRoICYmCi0rCQkJKE1CX0NVUl9NQVgg PiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkgJiYKLSsJCQljcG9zX2FkanVzdGVkID09IDAg JiYKLSsJCQlfcmxfbGFzdF9jX3BvcyAhPSBvX2Nwb3MgJiYKLSsJCQlfcmxfbGFzdF9jX3BvcyA+ IChwcm9tcHRfbGFzdF9pbnZpc2libGUgLSBfcmxfc2NyZWVud2lkdGggLSBwcm9tcHRfaW52aXNf Y2hhcnNfZmlyc3RfbGluZSkpCi0rCQlfcmxfbGFzdF9jX3BvcyAtPSAod3JhcF9vZmZzZXQtcHJv bXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUpOwotIAkJICAKLSAJICAgICAgLyogSWYgdGhpcyBp cyB0aGUgbGluZSB3aXRoIHRoZSBwcm9tcHQsIHdlIG1pZ2h0IG5lZWQgdG8KLSAJCSBjb21wZW5z YXRlIGZvciBpbnZpc2libGUgY2hhcmFjdGVycyBpbiB0aGUgbmV3IGxpbmUuIERvCi1AQCAtOTMy LDYgKzEwMTgsMTkgQEAgcmxfcmVkaXNwbGF5ICgpCi0gCQkgIGlmIChubGVmdCkKLSAJCSAgICBf cmxfY2xlYXJfdG9fZW9sIChubGVmdCk7Ci0gCQl9Ci0rI2lmIDAKLSsJICAgICAgLyogVGhpcyBz ZWdtZW50IGlzIGludGVuZGVkIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgcHJvbXB0Ci0r CQkgaGFzIGludmlzaWJsZSBjaGFyYWN0ZXJzIG9uIHRoZSBzZWNvbmQgbGluZSBhbmQgdGhlIG5l dyBsaW5lCi0rCQkgdG8gYmUgZGlzcGxheWVkIG5lZWRzIHRvIGNsZWFyIHRoZSByZXN0IG9mIHRo ZSBvbGQgY2hhcmFjdGVycwotKwkJIG91dCAoZS5nLiwgd2hlbiBwcmludGluZyB0aGUgaS1zZWFy Y2ggcHJvbXB0KS4gIEluIGdlbmVyYWwsCi0rCQkgdGhlIGNhc2Ugb2YgdGhlIG5ldyBsaW5lIGJl aW5nIHNob3J0ZXIgdGhhbiB0aGUgb2xkLgotKwkJIEluY29tcGxldGUgKi8KLSsJICAgICAgZWxz ZSBpZiAobGluZW51bSA9PSBwcm9tcHRfbGFzdF9zY3JlZW5fbGluZSAmJgotKwkJICAgICAgIHBy b21wdF9waHlzaWNhbF9jaGFycyA+IF9ybF9zY3JlZW53aWR0aCAmJgotKwkJICAgICAgIHdyYXBf b2Zmc2V0ICE9IHByb21wdF9pbnZpc19jaGFyc19maXJzdF9saW5lICYmCi0rCQkgICAgICAgX3Js X2xhc3RfY19wb3MgPT0gb3V0ICYmCi0rI2VuZGlmCi0rCi0gCi0gCSAgICAgIC8qIFNpbmNlIHRo ZSBuZXcgZmlyc3QgbGluZSBpcyBub3cgdmlzaWJsZSwgc2F2ZSBpdHMgbGVuZ3RoLiAqLwotIAkg ICAgICBpZiAobGluZW51bSA9PSAwKQotQEAgLTk3NSw3ICsxMDc0LDExIEBAIHJsX3JlZGlzcGxh eSAoKQotIAkgICAgIGludmlzaWJsZSBjaGFyYWN0ZXIgaW4gdGhlIHByb21wdCBzdHJpbmcuICov Ci0gCSAgbmxlZnQgPSBwcm9tcHRfdmlzaWJsZV9sZW5ndGggKyB3cmFwX29mZnNldDsKLSAJICBp ZiAoY3Vyc29yX2xpbmVudW0gPT0gMCAmJiB3cmFwX29mZnNldCA+IDAgJiYgX3JsX2xhc3RfY19w b3MgPiAwICYmCi0tCSAgICAgIF9ybF9sYXN0X2NfcG9zIDw9IHByb21wdF9sYXN0X2ludmlzaWJs ZSAmJiBsb2NhbF9wcm9tcHQpCi0rI2lmIDAKLSsJICAgICAgX3JsX2xhc3RfY19wb3MgPD0gUFJP TVBUX0VORElOR19JTkRFWCAmJiBsb2NhbF9wcm9tcHQpCi0rI2Vsc2UKLSsJICAgICAgX3JsX2xh c3RfY19wb3MgPCBQUk9NUFRfRU5ESU5HX0lOREVYICYmIGxvY2FsX3Byb21wdCkKLSsjZW5kaWYK LSAJICAgIHsKLSAjaWYgZGVmaW5lZCAoX19NU0RPU19fKQotIAkgICAgICBwdXRjICgnXHInLCBy bF9vdXRzdHJlYW0pOwotQEAgLTk4MywxOSArMTA4NiwyMiBAQCBybF9yZWRpc3BsYXkgKCkKLSAJ ICAgICAgaWYgKF9ybF90ZXJtX2NyKQotIAkJdHB1dHMgKF9ybF90ZXJtX2NyLCAxLCBfcmxfb3V0 cHV0X2NoYXJhY3Rlcl9mdW5jdGlvbik7Ci0gI2VuZGlmCi0rCSAgICAgIGlmIChtb2RtYXJrKQot KwkJX3JsX291dHB1dF9zb21lX2NoYXJzICgiKiIsIDEpOwotKwotIAkgICAgICBfcmxfb3V0cHV0 X3NvbWVfY2hhcnMgKGxvY2FsX3Byb21wdCwgbmxlZnQpOwotIAkgICAgICBpZiAoTUJfQ1VSX01B WCA+IDEgJiYgcmxfYnl0ZV9vcmllbnRlZCA9PSAwKQotLQkJX3JsX2xhc3RfY19wb3MgPSBfcmxf Y29sX3dpZHRoIChsb2NhbF9wcm9tcHQsIDAsIG5sZWZ0KSAtIHdyYXBfb2Zmc2V0OwotKwkJX3Js X2xhc3RfY19wb3MgPSBfcmxfY29sX3dpZHRoIChsb2NhbF9wcm9tcHQsIDAsIG5sZWZ0LCAxKSAt IHdyYXBfb2Zmc2V0ICsgbW9kbWFyazsKLSAJICAgICAgZWxzZQotLQkJX3JsX2xhc3RfY19wb3Mg PSBubGVmdDsKLSsJCV9ybF9sYXN0X2NfcG9zID0gbmxlZnQgKyBtb2RtYXJrOwotIAkgICAgfQot IAotIAkgIC8qIFdoZXJlIG9uIHRoYXQgbGluZT8gIEFuZCB3aGVyZSBkb2VzIHRoYXQgbGluZSBz dGFydAotIAkgICAgIGluIHRoZSBidWZmZXI/ICovCi0gCSAgcG9zID0gaW52X2xicmVha3NbY3Vy c29yX2xpbmVudW1dOwotIAkgIC8qIG5sZWZ0ID09IG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRo ZSBsaW5lIGJ1ZmZlciBiZXR3ZWVuIHRoZQotLQkgICAgIHN0YXJ0IG9mIHRoZSBsaW5lIGFuZCB0 aGUgY3Vyc29yIHBvc2l0aW9uLiAqLwotLQkgIG5sZWZ0ID0gY19wb3MgLSBwb3M7Ci0rCSAgICAg c3RhcnQgb2YgdGhlIGxpbmUgYW5kIHRoZSBkZXNpcmVkIGN1cnNvciBwb3NpdGlvbi4gKi8KLSsJ ICBubGVmdCA9IGNwb3NfYnVmZmVyX3Bvc2l0aW9uIC0gcG9zOwotIAotIAkgIC8qIE5MRUZUIGlz IG5vdyBhIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGEgYnVmZmVyLiAgV2hlbiBpbiBhCi0gCSAg ICAgbXVsdGlieXRlIGxvY2FsZSwgaG93ZXZlciwgX3JsX2xhc3RfY19wb3MgaXMgYW4gYWJzb2x1 dGUgY3Vyc29yCi1AQCAtMTAwNywxMSArMTExMywxMiBAQCBybF9yZWRpc3BsYXkgKCkKLSAJICAg ICB0aG9zZSBjaGFyYWN0ZXJzIGhlcmUgYW5kIGNhbGwgX3JsX2JhY2tzcGFjZSgpIGRpcmVjdGx5 LiAqLwotIAkgIGlmICh3cmFwX29mZnNldCAmJiBjdXJzb3JfbGluZW51bSA9PSAwICYmIG5sZWZ0 IDwgX3JsX2xhc3RfY19wb3MpCi0gCSAgICB7Ci0rCSAgICAgIC8qIFRYID09IG5ldyBwaHlzaWNh bCBjdXJzb3IgcG9zaXRpb24gaW4gbXVsdGlieXRlIGxvY2FsZS4gKi8KLSAJICAgICAgaWYgKE1C X0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKLS0JCXR4ID0gX3JsX2NvbF93 aWR0aCAoJnZpc2libGVfbGluZVtwb3NdLCAwLCBubGVmdCkgLSB2aXNpYmxlX3dyYXBfb2Zmc2V0 OwotKwkJdHggPSBfcmxfY29sX3dpZHRoICgmdmlzaWJsZV9saW5lW3Bvc10sIDAsIG5sZWZ0LCAx KSAtIHZpc2libGVfd3JhcF9vZmZzZXQ7Ci0gCSAgICAgIGVsc2UKLSAJCXR4ID0gbmxlZnQ7Ci0t CSAgICAgIGlmIChfcmxfbGFzdF9jX3BvcyA+IHR4KQotKwkgICAgICBpZiAodHggPj0gMCAmJiBf cmxfbGFzdF9jX3BvcyA+IHR4KQotIAkJewotIAkgICAgICAgICAgX3JsX2JhY2tzcGFjZSAoX3Js X2xhc3RfY19wb3MgLSB0eCk7CS8qIFhYWCAqLwotIAkgICAgICAgICAgX3JsX2xhc3RfY19wb3Mg PSB0eDsKLUBAIC0xMDQwLDExICsxMTQ3LDExIEBAIHJsX3JlZGlzcGxheSAoKQotIAkgd2lsbCBi ZSBMTUFSR0lOLiAqLwotIAotICAgICAgIC8qIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0 IHdpbGwgYmUgZGlzcGxheWVkIGJlZm9yZSB0aGUgY3Vyc29yLiAqLwotLSAgICAgIG5kaXNwID0g Y19wb3MgLSB3cmFwX29mZnNldDsKLSsgICAgICBuZGlzcCA9IGNwb3NfYnVmZmVyX3Bvc2l0aW9u IC0gd3JhcF9vZmZzZXQ7Ci0gICAgICAgbmxlZnQgID0gcHJvbXB0X3Zpc2libGVfbGVuZ3RoICsg d3JhcF9vZmZzZXQ7Ci0gICAgICAgLyogV2hlcmUgdGhlIG5ldyBjdXJzb3IgcG9zaXRpb24gd2ls bCBiZSBvbiB0aGUgc2NyZWVuLiAgVGhpcyBjYW4gYmUKLSAJIGxvbmdlciB0aGFuIFNDUkVFTldJ RFRIOyBpZiBpdCBpcywgbG1hcmdpbiB3aWxsIGJlIGFkanVzdGVkLiAqLwotLSAgICAgIHBoeXNf Y19wb3MgPSBjX3BvcyAtIChsYXN0X2xtYXJnaW4gPyBsYXN0X2xtYXJnaW4gOiB3cmFwX29mZnNl dCk7Ci0rICAgICAgcGh5c19jX3BvcyA9IGNwb3NfYnVmZmVyX3Bvc2l0aW9uIC0gKGxhc3RfbG1h cmdpbiA/IGxhc3RfbG1hcmdpbiA6IHdyYXBfb2Zmc2V0KTsKLSAgICAgICB0ID0gX3JsX3NjcmVl bndpZHRoIC8gMzsKLSAKLSAgICAgICAvKiBJZiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaGFk IGFscmVhZHkgZXhjZWVkZWQgdGhlIHNjcmVlbndpZHRoLAotQEAgLTEwNTUsNyArMTE2Miw3IEBA IHJsX3JlZGlzcGxheSAoKQotIAkgdHdvLXRoaXJkcyBvZiB0aGUgd2F5IGFjcm9zcyB0aGUgc2Ny ZWVuLiAqLwotICAgICAgIGlmIChwaHlzX2NfcG9zID4gX3JsX3NjcmVlbndpZHRoIC0gMikKLSAJ ewotLQkgIGxtYXJnaW4gPSBjX3BvcyAtICgyICogdCk7Ci0rCSAgbG1hcmdpbiA9IGNwb3NfYnVm ZmVyX3Bvc2l0aW9uIC0gKDIgKiB0KTsKLSAJICBpZiAobG1hcmdpbiA8IDApCi0gCSAgICBsbWFy Z2luID0gMDsKLSAJICAvKiBJZiB0aGUgbGVmdCBtYXJnaW4gd291bGQgYmUgaW4gdGhlIG1pZGRs ZSBvZiBhIHByb21wdCB3aXRoCi1AQCAtMTA2OSw3ICsxMTc2LDcgQEAgcmxfcmVkaXNwbGF5ICgp Ci0gCXsKLSAJICAvKiBJZiB3ZSBhcmUgbW92aW5nIGJhY2sgdG93YXJkcyB0aGUgYmVnaW5uaW5n IG9mIHRoZSBsaW5lIGFuZAotIAkgICAgIHRoZSBsYXN0IG1hcmdpbiBpcyBubyBsb25nZXIgY29y cmVjdCwgY29tcHV0ZSBhIG5ldyBvbmUuICovCi0tCSAgbG1hcmdpbiA9ICgoY19wb3MgLSAxKSAv IHQpICogdDsJLyogWFhYICovCi0rCSAgbG1hcmdpbiA9ICgoY3Bvc19idWZmZXJfcG9zaXRpb24g LSAxKSAvIHQpICogdDsJLyogWFhYICovCi0gCSAgaWYgKHdyYXBfb2Zmc2V0ICYmIGxtYXJnaW4g PiAwICYmIGxtYXJnaW4gPCBubGVmdCkKLSAJICAgIGxtYXJnaW4gPSBubGVmdDsKLSAJfQotQEAg LTEwODksOSArMTE5NiwxMSBAQCBybF9yZWRpc3BsYXkgKCkKLSAgICAgICBpZiAodCA8IG91dCkK LSAJbGluZVt0IC0gMV0gPSAnPic7Ci0gCi0tICAgICAgaWYgKCFybF9kaXNwbGF5X2ZpeGVkIHx8 IGZvcmNlZF9kaXNwbGF5IHx8IGxtYXJnaW4gIT0gbGFzdF9sbWFyZ2luKQotKyAgICAgIGlmIChy bF9kaXNwbGF5X2ZpeGVkID09IDAgfHwgZm9yY2VkX2Rpc3BsYXkgfHwgbG1hcmdpbiAhPSBsYXN0 X2xtYXJnaW4pCi0gCXsKLSAJICBmb3JjZWRfZGlzcGxheSA9IDA7Ci0rCSAgb19jcG9zID0gX3Js X2xhc3RfY19wb3M7Ci0rCSAgY3Bvc19hZGp1c3RlZCA9IDA7Ci0gCSAgdXBkYXRlX2xpbmUgKCZ2 aXNpYmxlX2xpbmVbbGFzdF9sbWFyZ2luXSwKLSAJCSAgICAgICAmaW52aXNpYmxlX2xpbmVbbG1h cmdpbl0sCi0gCQkgICAgICAgMCwKLUBAIC0xMDk5LDYgKzEyMDgsOSBAQCBybF9yZWRpc3BsYXkg KCkKLSAJCSAgICAgICBfcmxfc2NyZWVud2lkdGggKyAobG1hcmdpbiA/IDAgOiB3cmFwX29mZnNl dCksCi0gCQkgICAgICAgMCk7Ci0gCi0rCSAgaWYgKChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRl X29yaWVudGVkID09IDApICYmIE9MRF9DUE9TX0lOX1BST01QVCgpKQotKwkgICAgX3JsX2xhc3Rf Y19wb3MgLT0gcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmU7CS8qIFhYWCAtIHdhcyB3cmFw X29mZnNldCAqLwotKwotIAkgIC8qIElmIHRoZSB2aXNpYmxlIG5ldyBsaW5lIGlzIHNob3J0ZXIg dGhhbiB0aGUgb2xkLCBidXQgdGhlIG51bWJlcgotIAkgICAgIG9mIGludmlzaWJsZSBjaGFyYWN0 ZXJzIGlzIGdyZWF0ZXIsIGFuZCB3ZSBhcmUgYXQgdGhlIGVuZCBvZgotIAkgICAgIHRoZSBuZXcg bGluZSwgd2UgbmVlZCB0byBjbGVhciB0byBlb2wuICovCi1AQCAtMTExNCw3ICsxMjI2LDcgQEAg cmxfcmVkaXNwbGF5ICgpCi0gCSAgaWYgKHZpc2libGVfZmlyc3RfbGluZV9sZW4gPiBfcmxfc2Ny ZWVud2lkdGgpCi0gCSAgICB2aXNpYmxlX2ZpcnN0X2xpbmVfbGVuID0gX3JsX3NjcmVlbndpZHRo OwotIAotLQkgIF9ybF9tb3ZlX2N1cnNvcl9yZWxhdGl2ZSAoY19wb3MgLSBsbWFyZ2luLCAmaW52 aXNpYmxlX2xpbmVbbG1hcmdpbl0pOwotKwkgIF9ybF9tb3ZlX2N1cnNvcl9yZWxhdGl2ZSAoY3Bv c19idWZmZXJfcG9zaXRpb24gLSBsbWFyZ2luLCAmaW52aXNpYmxlX2xpbmVbbG1hcmdpbl0pOwot IAkgIGxhc3RfbG1hcmdpbiA9IGxtYXJnaW47Ci0gCX0KLSAgICAgfQotQEAgLTExMjIsMTcgKzEy MzQsMTAgQEAgcmxfcmVkaXNwbGF5ICgpCi0gCi0gICAvKiBTd2FwIHZpc2libGUgYW5kIG5vbi12 aXNpYmxlIGxpbmVzLiAqLwotICAgewotLSAgICBjaGFyICp2dGVtcCA9IHZpc2libGVfbGluZTsK LS0gICAgaW50ICppdGVtcCA9IHZpc19sYnJlYWtzLCBudGVtcCA9IHZpc19sYnNpemU7Ci0rICAg IHN0cnVjdCBsaW5lX3N0YXRlICp2dGVtcCA9IGxpbmVfc3RhdGVfdmlzaWJsZTsKLSAKLS0gICAg dmlzaWJsZV9saW5lID0gaW52aXNpYmxlX2xpbmU7Ci0tICAgIGludmlzaWJsZV9saW5lID0gdnRl bXA7Ci0tCi0tICAgIHZpc19sYnJlYWtzID0gaW52X2xicmVha3M7Ci0tICAgIGludl9sYnJlYWtz ID0gaXRlbXA7Ci0tCi0tICAgIHZpc19sYnNpemUgPSBpbnZfbGJzaXplOwotLSAgICBpbnZfbGJz aXplID0gbnRlbXA7Ci0rICAgIGxpbmVfc3RhdGVfdmlzaWJsZSA9IGxpbmVfc3RhdGVfaW52aXNp YmxlOwotKyAgICBsaW5lX3N0YXRlX2ludmlzaWJsZSA9IHZ0ZW1wOwotIAotICAgICBybF9kaXNw bGF5X2ZpeGVkID0gMDsKLSAgICAgLyogSWYgd2UgYXJlIGRpc3BsYXlpbmcgb24gYSBzaW5nbGUg bGluZSwgYW5kIGxhc3RfbG1hcmdpbiBpcyA+IDAsIHdlCi1AQCAtMTE0NCw2ICsxMjQ5LDcgQEAg cmxfcmVkaXNwbGF5ICgpCi0gICAgICAgdmlzaWJsZV93cmFwX29mZnNldCA9IHdyYXBfb2Zmc2V0 OwotICAgfQotIAotKyAgUkxfVU5TRVRTVEFURSAoUkxfU1RBVEVfUkVESVNQTEFZSU5HKTsKLSAg IF9ybF9yZWxlYXNlX3NpZ2ludCAoKTsKLSB9Ci0gCi1AQCAtMTE2OSwxMiArMTI3NSwxMiBAQCB1 cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21hCi0gICAgICBpbnQgY3VycmVu dF9saW5lLCBvbWF4LCBubWF4LCBpbnZfYm90bGluOwotIHsKLSAgIHJlZ2lzdGVyIGNoYXIgKm9m ZCwgKm9scywgKm9lLCAqbmZkLCAqbmxzLCAqbmU7Ci0tICBpbnQgdGVtcCwgbGVuZGlmZiwgd3Nh dGVuZCwgb2QsIG5kOwotKyAgaW50IHRlbXAsIGxlbmRpZmYsIHdzYXRlbmQsIG9kLCBuZCwgdHdp ZHRoLCBvX2Nwb3M7Ci0gICBpbnQgY3VycmVudF9pbnZpc19jaGFyczsKLSAgIGludCBjb2xfbGVu ZGlmZiwgY29sX3RlbXA7Ci0gI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0gICBtYnN0 YXRlX3QgcHNfbmV3LCBwc19vbGQ7Ci0tICBpbnQgbmV3X29mZnNldCwgb2xkX29mZnNldCwgdG1w OwotKyAgaW50IG5ld19vZmZzZXQsIG9sZF9vZmZzZXQ7Ci0gI2VuZGlmCi0gCi0gICAvKiBJZiB3 ZSdyZSBhdCB0aGUgcmlnaHQgZWRnZSBvZiBhIHRlcm1pbmFsIHRoYXQgc3VwcG9ydHMgeG4sIHdl J3JlCi1AQCAtMTE4NSw3ICsxMjkxLDcgQEAgdXBkYXRlX2xpbmUgKG9sZCwgbmV3LCBjdXJyZW50 X2xpbmUsIG9tYQotICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0g MCkKLSAgICAgdGVtcCA9IF9ybF9sYXN0X2NfcG9zOwotICAgZWxzZQotLSAgICB0ZW1wID0gX3Js X2xhc3RfY19wb3MgLSBXX09GRlNFVChfcmxfbGFzdF92X3BvcywgdmlzaWJsZV93cmFwX29mZnNl dCk7Ci0rICAgIHRlbXAgPSBfcmxfbGFzdF9jX3BvcyAtIFdSQVBfT0ZGU0VUIChfcmxfbGFzdF92 X3BvcywgdmlzaWJsZV93cmFwX29mZnNldCk7Ci0gICBpZiAodGVtcCA9PSBfcmxfc2NyZWVud2lk dGggJiYgX3JsX3Rlcm1fYXV0b3dyYXAgJiYgIV9ybF9ob3Jpem9udGFsX3Njcm9sbF9tb2RlCi0g CSYmIF9ybF9sYXN0X3ZfcG9zID09IGN1cnJlbnRfbGluZSAtIDEpCi0gICAgIHsKLUBAIC0xMjAw LDggKzEzMDYsOCBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21hCi0g CSAgLyogVGhpcyBmaXhlcyBvbmx5IGRvdWJsZS1jb2x1bW4gY2hhcmFjdGVycywgYnV0IGlmIHRo ZSB3cmFwcGVkCi0gCSAgICAgY2hhcmFjdGVyIGNvbXN1bWVzIG1vcmUgdGhhbiB0aHJlZSBjb2x1 bW5zLCBzcGFjZXMgd2lsbCBiZQotIAkgICAgIGluc2VydGVkIGluIHRoZSBzdHJpbmcgYnVmZmVy LiAqLwotLQkgIGlmIChfcmxfd3JhcHBlZF9saW5lW2N1cnJlbnRfbGluZV0gPiAwKQotLQkgICAg X3JsX2NsZWFyX3RvX2VvbCAoX3JsX3dyYXBwZWRfbGluZVtjdXJyZW50X2xpbmVdKTsKLSsJICBp ZiAoY3VycmVudF9saW5lIDwgbGluZV9zdGF0ZV92aXNpYmxlLT53YnNpemUgJiYgbGluZV9zdGF0 ZV92aXNpYmxlLT53cmFwcGVkX2xpbmVbY3VycmVudF9saW5lXSA+IDApCi0rCSAgICBfcmxfY2xl YXJfdG9fZW9sIChsaW5lX3N0YXRlX3Zpc2libGUtPndyYXBwZWRfbGluZVtjdXJyZW50X2xpbmVd KTsKLSAKLSAJICBtZW1zZXQgKCZwcywgMCwgc2l6ZW9mIChtYnN0YXRlX3QpKTsKLSAJICByZXQg PSBtYnJ0b3djICgmd2MsIG5ldywgTUJfQ1VSX01BWCwgJnBzKTsKLUBAIC0xMjE3LDcgKzEzMjMs NyBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21hCi0gCi0gCSAgaWYg KHRlbXB3aWR0aCA+IDApCi0gCSAgICB7Ci0tCSAgICAgIGludCBjb3VudDsKLSsJICAgICAgaW50 IGNvdW50LCBpOwotIAkgICAgICBieXRlcyA9IHJldDsKLSAJICAgICAgZm9yIChjb3VudCA9IDA7 IGNvdW50IDwgYnl0ZXM7IGNvdW50KyspCi0gCQlwdXRjIChuZXdbY291bnRdLCBybF9vdXRzdHJl YW0pOwotQEAgLTEyMjgsMTAgKzEzMzQsMTMgQEAgdXBkYXRlX2xpbmUgKG9sZCwgbmV3LCBjdXJy ZW50X2xpbmUsIG9tYQotIAkgICAgICBpZiAocmV0ICE9IDAgJiYgYnl0ZXMgIT0gMCkKLSAJCXsK LSAJCSAgaWYgKE1CX0lOVkFMSURDSCAocmV0KSkKLS0JCSAgICBtZW1tb3ZlIChvbGQrYnl0ZXMs IG9sZCsxLCBzdHJsZW4gKG9sZCsxKSk7Ci0tCQkgIGVsc2UKLS0JCSAgICBtZW1tb3ZlIChvbGQr Ynl0ZXMsIG9sZCtyZXQsIHN0cmxlbiAob2xkK3JldCkpOwotKwkJICAgIHJldCA9IDE7Ci0rCQkg IG1lbW1vdmUgKG9sZCtieXRlcywgb2xkK3JldCwgc3RybGVuIChvbGQrcmV0KSk7Ci0gCQkgIG1l bWNweSAob2xkLCBuZXcsIGJ5dGVzKTsKLSsJCSAgLyogRml4IHVwIGluZGljZXMgaWYgd2UgY29w eSBkYXRhIGZyb20gb25lIGxpbmUgdG8gYW5vdGhlciAqLwotKwkJICBvbWF4ICs9IGJ5dGVzIC0g cmV0OwotKwkJICBmb3IgKGkgPSBjdXJyZW50X2xpbmUrMTsgaSA8IGludl9ib3RsaW4rMTsgaSsr KQotKwkJICAgIHZpc19sYnJlYWtzW2ldICs9IGJ5dGVzIC0gcmV0OwotIAkJfQotIAkgICAgfQot IAkgIGVsc2UKLUBAIC0xMjY1LDcgKzEzNzQsNyBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1 cnJlbnRfbGluZSwgb21hCi0gICAgICAgLyogU2VlIGlmIHRoZSBvbGQgbGluZSBpcyBhIHN1YnNl dCBvZiB0aGUgbmV3IGxpbmUsIHNvIHRoYXQgdGhlCi0gCSBvbmx5IGNoYW5nZSBpcyBhZGRpbmcg Y2hhcmFjdGVycy4gKi8KLSAgICAgICB0ZW1wID0gKG9tYXggPCBubWF4KSA/IG9tYXggOiBubWF4 OwotLSAgICAgIGlmIChtZW1jbXAgKG9sZCwgbmV3LCB0ZW1wKSA9PSAwKQotKyAgICAgIGlmICht ZW1jbXAgKG9sZCwgbmV3LCB0ZW1wKSA9PSAwKQkJLyogYWRkaW5nIGF0IHRoZSBlbmQgKi8KLSAJ ewotIAkgIG9mZCA9IG9sZCArIHRlbXA7Ci0gCSAgbmZkID0gbmV3ICsgdGVtcDsKLUBAIC0xNDA3 LDMwICsxNTE2LDQ4IEBAIHVwZGF0ZV9saW5lIChvbGQsIG5ldywgY3VycmVudF9saW5lLCBvbWEK LSAgICAgIHNlcXVlbmNlcyAobGlrZSBkcmF3aW5nIHRoZSBgdW5ib2xkJyBzZXF1ZW5jZSB3aXRo b3V0IGEgY29ycmVzcG9uZGluZwotICAgICAgYGJvbGQnKSB0aGF0IG1hbmlmZXN0cyBpdHNlbGYg b24gY2VydGFpbiB0ZXJtaW5hbHMuICovCi0gCi0tICBsZW5kaWZmID0gbG9jYWxfcHJvbXB0ID8g c3RybGVuIChsb2NhbF9wcm9tcHQpIDogMDsKLSsgIGxlbmRpZmYgPSBsb2NhbF9wcm9tcHRfbGVu OwotICAgb2QgPSBvZmQgLSBvbGQ7CS8qIGluZGV4IG9mIGZpcnN0IGRpZmZlcmVuY2UgaW4gdmlz aWJsZSBsaW5lICovCi0gICBpZiAoY3VycmVudF9saW5lID09IDAgJiYgIV9ybF9ob3Jpem9udGFs X3Njcm9sbF9tb2RlICYmCi0gICAgICAgX3JsX3Rlcm1fY3IgJiYgbGVuZGlmZiA+IHByb21wdF92 aXNpYmxlX2xlbmd0aCAmJiBfcmxfbGFzdF9jX3BvcyA+IDAgJiYKLS0gICAgICBvZCA+PSBsZW5k aWZmICYmIF9ybF9sYXN0X2NfcG9zIDw9IHByb21wdF9sYXN0X2ludmlzaWJsZSkKLSsgICAgICBv ZCA+PSBsZW5kaWZmICYmIF9ybF9sYXN0X2NfcG9zIDwgUFJPTVBUX0VORElOR19JTkRFWCkKLSAg ICAgewotICNpZiBkZWZpbmVkIChfX01TRE9TX18pCi0gICAgICAgcHV0YyAoJ1xyJywgcmxfb3V0 c3RyZWFtKTsKLSAjZWxzZQotICAgICAgIHRwdXRzIChfcmxfdGVybV9jciwgMSwgX3JsX291dHB1 dF9jaGFyYWN0ZXJfZnVuY3Rpb24pOwotICNlbmRpZgotKyAgICAgIGlmIChtb2RtYXJrKQotKwlf cmxfb3V0cHV0X3NvbWVfY2hhcnMgKCIqIiwgMSk7Ci0gICAgICAgX3JsX291dHB1dF9zb21lX2No YXJzIChsb2NhbF9wcm9tcHQsIGxlbmRpZmYpOwotICAgICAgIGlmIChNQl9DVVJfTUFYID4gMSAm JiBybF9ieXRlX29yaWVudGVkID09IDApCi0gCXsKLSAJICAvKiBXZSB0YWtlIHdyYXBfb2Zmc2V0 IGludG8gYWNjb3VudCBoZXJlIHNvIHdlIGNhbiBwYXNzIGNvcnJlY3QKLSAJICAgICBpbmZvcm1h dGlvbiB0byBfcmxfbW92ZV9jdXJzb3JfcmVsYXRpdmUuICovCi0tCSAgX3JsX2xhc3RfY19wb3Mg PSBfcmxfY29sX3dpZHRoIChsb2NhbF9wcm9tcHQsIDAsIGxlbmRpZmYpIC0gd3JhcF9vZmZzZXQ7 Ci0rCSAgX3JsX2xhc3RfY19wb3MgPSBfcmxfY29sX3dpZHRoIChsb2NhbF9wcm9tcHQsIDAsIGxl bmRpZmYsIDEpIC0gd3JhcF9vZmZzZXQgKyBtb2RtYXJrOwotIAkgIGNwb3NfYWRqdXN0ZWQgPSAx OwotIAl9Ci0gICAgICAgZWxzZQotLQlfcmxfbGFzdF9jX3BvcyA9IGxlbmRpZmY7Ci0rCV9ybF9s YXN0X2NfcG9zID0gbGVuZGlmZiArIG1vZG1hcms7Ci0gICAgIH0KLSAKLSsgIG9fY3BvcyA9IF9y bF9sYXN0X2NfcG9zOwotKwotKyAgLyogV2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMsIF9ybF9s YXN0X2NfcG9zIGlzIGNvcnJlY3QsIGFuZCBhbiBhYnNvbHV0ZQotKyAgICAgY3Vyc29yIHBvc3Rp b24gaW4gbXVsdGlieXRlIG1vZGUsIGJ1dCBhIGJ1ZmZlciBpbmRleCB3aGVuIG5vdCBpbiBhCi0r ICAgICBtdWx0aWJ5dGUgbG9jYWxlLiAqLwotICAgX3JsX21vdmVfY3Vyc29yX3JlbGF0aXZlIChv ZCwgb2xkKTsKLSsjaWYgMQotKyNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotKyAgLyog V2UgbmVlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJzb3IgcG9zaXRpb24gaXMgY29ycmVjdCBp biB0aGUgcHJlc2VuY2Ugb2YKLSsgICAgIGludmlzaWJsZSBjaGFyYWN0ZXJzIGluIHRoZSBwcm9t cHQgc3RyaW5nLiAgTGV0J3Mgc2VlIGlmIHNldHRpbmcgdGhpcyB3aGVuCi0rICAgICB3ZSBtYWtl IHN1cmUgd2UncmUgYXQgdGhlIGVuZCBvZiB0aGUgZHJhd24gcHJvbXB0IHN0cmluZyB3b3Jrcy4g Ki8KLSsgIGlmIChjdXJyZW50X2xpbmUgPT0gMCAmJiBNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRl X29yaWVudGVkID09IDAgJiYKLSsgICAgICAoX3JsX2xhc3RfY19wb3MgPiAwIHx8IG9fY3BvcyA+ IDApICYmCi0rICAgICAgX3JsX2xhc3RfY19wb3MgPT0gcHJvbXB0X3BoeXNpY2FsX2NoYXJzKQot KyAgICBjcG9zX2FkanVzdGVkID0gMTsKLSsjZW5kaWYKLSsjZW5kaWYKLSAKLSAgIC8qIGlmIChs ZW4gKG5ldykgPiBsZW4gKG9sZCkpCi0gICAgICBsZW5kaWZmID09IGRpZmZlcmVuY2UgaW4gYnVm ZmVyCi1AQCAtMTQzOCw3ICsxNTY1LDcgQEAgdXBkYXRlX2xpbmUgKG9sZCwgbmV3LCBjdXJyZW50 X2xpbmUsIG9tYQotICAgICAgV2hlbiBub3QgdXNpbmcgbXVsdGlieXRlIGNoYXJhY3RlcnMsIHRo ZXNlIGFyZSBlcXVhbCAqLwotICAgbGVuZGlmZiA9IChubHMgLSBuZmQpIC0gKG9scyAtIG9mZCk7 Ci0gICBpZiAoTUJfQ1VSX01BWCA+IDEgJiYgcmxfYnl0ZV9vcmllbnRlZCA9PSAwKQotLSAgICBj b2xfbGVuZGlmZiA9IF9ybF9jb2xfd2lkdGggKG5ldywgbmZkIC0gbmV3LCBubHMgLSBuZXcpIC0g X3JsX2NvbF93aWR0aCAob2xkLCBvZmQgLSBvbGQsIG9scyAtIG9sZCk7Ci0rICAgIGNvbF9sZW5k aWZmID0gX3JsX2NvbF93aWR0aCAobmV3LCBuZmQgLSBuZXcsIG5scyAtIG5ldywgMSkgLSBfcmxf Y29sX3dpZHRoIChvbGQsIG9mZCAtIG9sZCwgb2xzIC0gb2xkLCAxKTsKLSAgIGVsc2UKLSAgICAg Y29sX2xlbmRpZmYgPSBsZW5kaWZmOwotIAotQEAgLTE0NjMsNyArMTU5MCw3IEBAIHVwZGF0ZV9s aW5lIChvbGQsIG5ldywgY3VycmVudF9saW5lLCBvbWEKLSAgIC8qIEluc2VydCAoZGlmZiAobGVu IChvbGQpLCBsZW4gKG5ldykpIGNoLiAqLwotICAgdGVtcCA9IG5lIC0gbmZkOwotICAgaWYgKE1C X0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKLS0gICAgY29sX3RlbXAgPSBf cmxfY29sX3dpZHRoIChuZXcsIG5mZCAtIG5ldywgbmUgLSBuZXcpOwotKyAgICBjb2xfdGVtcCA9 IF9ybF9jb2xfd2lkdGggKG5ldywgbmZkIC0gbmV3LCBuZSAtIG5ldywgMSk7Ci0gICBlbHNlCi0g ICAgIGNvbF90ZW1wID0gdGVtcDsKLSAKLUBAIC0xNDcxLDIyICsxNTk4LDYwIEBAIHVwZGF0ZV9s aW5lIChvbGQsIG5ldywgY3VycmVudF9saW5lLCBvbWEKLSAgICAgewotICAgICAgIC8qIE5vbi16 ZXJvIGlmIHdlJ3JlIGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBsaW5lcy4gKi8KLSAgICAgICBp bnQgZ2wgPSBjdXJyZW50X2xpbmUgPj0gX3JsX3Zpc19ib3RsaW4gJiYgaW52X2JvdGxpbiA+IF9y bF92aXNfYm90bGluOwotKyAgICAgIC8qIElmIGNvbF9sZW5kaWZmIGlzID4gMCwgaW1wbHlpbmcg dGhhdCB0aGUgbmV3IHN0cmluZyB0YWtlcyB1cCBtb3JlCi0rCSBzY3JlZW4gcmVhbCBlc3RhdGUg dGhhbiB0aGUgb2xkLCBidXQgbGVuZGlmZiBpcyA8IDAsIG1lYW5pbmcgdGhhdCBpdAotKwkgdGFr ZXMgZmV3ZXIgYnl0ZXMsIHdlIG5lZWQgdG8ganVzdCBvdXRwdXQgdGhlIGNoYXJhY3RlcnMgc3Rh cnRpbmcKLSsJIGZyb20gdGhlIGZpcnN0IGRpZmZlcmVuY2UuICBUaGVzZSB3aWxsIG92ZXJ3cml0 ZSB3aGF0IGlzIG9uIHRoZQotKwkgZGlzcGxheSwgc28gdGhlcmUncyBubyByZWFzb24gdG8gZG8g YSBzbWFydCB1cGRhdGUuICBUaGlzIGNhbiByZWFsbHkKLSsJIG9ubHkgaGFwcGVuIGluIGEgbXVs dGlieXRlIGVudmlyb25tZW50LiAqLwotKyAgICAgIGlmIChsZW5kaWZmIDwgMCkKLSsJewotKwkg IF9ybF9vdXRwdXRfc29tZV9jaGFycyAobmZkLCB0ZW1wKTsKLSsJICBfcmxfbGFzdF9jX3BvcyAr PSBfcmxfY29sX3dpZHRoIChuZmQsIDAsIHRlbXAsIDEpOwotKwkgIC8qIElmIG5mZCBiZWdpbnMg YmVmb3JlIGFueSBpbnZpc2libGUgY2hhcmFjdGVycyBpbiB0aGUgcHJvbXB0LAotKwkgICAgIGFk anVzdCBfcmxfbGFzdF9jX3BvcyB0byBhY2NvdW50IGZvciB3cmFwX29mZnNldCBhbmQgc2V0Ci0r CSAgICAgY3Bvc19hZGp1c3RlZCB0byBsZXQgdGhlIGNhbGxlciBrbm93LiAqLwotKwkgIGlmIChj dXJyZW50X2xpbmUgPT0gMCAmJiB3cmFwX29mZnNldCAmJiAoKG5mZCAtIG5ldykgPD0gcHJvbXB0 X2xhc3RfaW52aXNpYmxlKSkKLSsJICAgIHsKLSsJICAgICAgX3JsX2xhc3RfY19wb3MgLT0gd3Jh cF9vZmZzZXQ7Ci0rCSAgICAgIGNwb3NfYWRqdXN0ZWQgPSAxOwotKwkgICAgfQotKwkgIHJldHVy bjsKLSsJfQotICAgICAgIC8qIFNvbWV0aW1lcyBpdCBpcyBjaGVhcGVyIHRvIHByaW50IHRoZSBj aGFyYWN0ZXJzIHJhdGhlciB0aGFuCi0gCSB1c2UgdGhlIHRlcm1pbmFsJ3MgY2FwYWJpbGl0aWVz LiAgSWYgd2UncmUgZ3Jvd2luZyB0aGUgbnVtYmVyCi0gCSBvZiBsaW5lcywgbWFrZSBzdXJlIHdl IGFjdHVhbGx5IGNhdXNlIHRoZSBuZXcgbGluZSB0byB3cmFwCi0gCSBhcm91bmQgb24gYXV0by13 cmFwcGluZyB0ZXJtaW5hbHMuICovCi0tICAgICAgaWYgKF9ybF90ZXJtaW5hbF9jYW5faW5zZXJ0 ICYmICgoMiAqIGNvbF90ZW1wKSA+PSBjb2xfbGVuZGlmZiB8fCBfcmxfdGVybV9JQykgJiYgKCFf cmxfdGVybV9hdXRvd3JhcCB8fCAhZ2wpKQotKyAgICAgIGVsc2UgaWYgKF9ybF90ZXJtaW5hbF9j YW5faW5zZXJ0ICYmICgoMiAqIGNvbF90ZW1wKSA+PSBjb2xfbGVuZGlmZiB8fCBfcmxfdGVybV9J QykgJiYgKCFfcmxfdGVybV9hdXRvd3JhcCB8fCAhZ2wpKQotIAl7Ci0gCSAgLyogSWYgbGVuZGlm ZiA+IHByb21wdF92aXNpYmxlX2xlbmd0aCBhbmQgX3JsX2xhc3RfY19wb3MgPT0gMCBhbmQKLSAJ ICAgICBfcmxfaG9yaXpvbnRhbF9zY3JvbGxfbW9kZSA9PSAxLCBpbnNlcnRpbmcgdGhlIGNoYXJh Y3RlcnMgd2l0aAotIAkgICAgIF9ybF90ZXJtX0lDIG9yIF9ybF90ZXJtX2ljIHdpbGwgc2NyZXcg dXAgdGhlIHNjcmVlbiBiZWNhdXNlIG9mIHRoZQotIAkgICAgIGludmlzaWJsZSBjaGFyYWN0ZXJz LiAgV2UgbmVlZCB0byBqdXN0IGRyYXcgdGhlbS4gKi8KLS0JICBpZiAoKm9scyAmJiAoIV9ybF9o b3Jpem9udGFsX3Njcm9sbF9tb2RlIHx8IF9ybF9sYXN0X2NfcG9zID4gMCB8fAotLQkJCWxlbmRp ZmYgPD0gcHJvbXB0X3Zpc2libGVfbGVuZ3RoIHx8ICFjdXJyZW50X2ludmlzX2NoYXJzKSkKLSsJ ICAvKiBUaGUgc2FtZSB0aGluZyBoYXBwZW5zIGlmIHdlJ3JlIHRyeWluZyB0byBkcmF3IGJlZm9y ZSB0aGUgbGFzdAotKwkgICAgIGludmlzaWJsZSBjaGFyYWN0ZXIgaW4gdGhlIHByb21wdCBzdHJp bmcgb3Igd2UncmUgaW5jcmVhc2luZyB0aGUKLSsJICAgICBudW1iZXIgb2YgaW52aXNpYmxlIGNo YXJhY3RlcnMgaW4gdGhlIGxpbmUgYW5kIHdlJ3JlIG5vdCBkcmF3aW5nCi0rCSAgICAgdGhlIGVu dGlyZSBwcm9tcHQgc3RyaW5nLiAqLwotKwkgIGlmICgqb2xzICYmICgoX3JsX2hvcml6b250YWxf c2Nyb2xsX21vZGUgJiYKLSsJCQlfcmxfbGFzdF9jX3BvcyA9PSAwICYmCi0rCQkJbGVuZGlmZiA+ IHByb21wdF92aXNpYmxlX2xlbmd0aCAmJgotKwkJCWN1cnJlbnRfaW52aXNfY2hhcnMgPiAwKSA9 PSAwKSAmJgotKwkJICAgICAgKCgoTUJfQ1VSX01BWCA+IDEgJiYgcmxfYnl0ZV9vcmllbnRlZCA9 PSAwKSAmJgotKwkJICAgICAgICBjdXJyZW50X2xpbmUgPT0gMCAmJiB3cmFwX29mZnNldCAmJgot KwkJICAgICAgICAoKG5mZCAtIG5ldykgPD0gcHJvbXB0X2xhc3RfaW52aXNpYmxlKSAmJgotKwkJ ICAgICAgICAoY29sX2xlbmRpZmYgPCBwcm9tcHRfdmlzaWJsZV9sZW5ndGgpKSA9PSAwKSAmJgot KwkJICAgICAgKHZpc2libGVfd3JhcF9vZmZzZXQgPj0gY3VycmVudF9pbnZpc19jaGFycykpCi0g CSAgICB7Ci0gCSAgICAgIGluc2VydF9zb21lX2NoYXJzIChuZmQsIGxlbmRpZmYsIGNvbF9sZW5k aWZmKTsKLSAJICAgICAgX3JsX2xhc3RfY19wb3MgKz0gY29sX2xlbmRpZmY7Ci0gCSAgICB9Ci0r I2lmIDAJCS8qIFhYWCAtIGZvciBub3cgKi8KLSsJICBlbHNlIGlmICgoTUJfQ1VSX01BWCA+IDEg JiYgcmxfYnl0ZV9vcmllbnRlZCA9PSAwKSAmJiBfcmxfbGFzdF9jX3BvcyA9PSAwICYmIHdyYXBf b2Zmc2V0ICYmIChuZmQtbmV3KSA8PSBwcm9tcHRfbGFzdF9pbnZpc2libGUgJiYgY29sX2xlbmRp ZmYgPCBwcm9tcHRfdmlzaWJsZV9sZW5ndGggJiYgdmlzaWJsZV93cmFwX29mZnNldCA+PSBjdXJy ZW50X2ludmlzX2NoYXJzKQotKwkgICAgewotKwkgICAgICBfcmxfb3V0cHV0X3NvbWVfY2hhcnMg KG5mZCwgbGVuZGlmZik7Ci0rCSAgICAgIF9ybF9sYXN0X2NfcG9zICs9IGNvbF9sZW5kaWZmOwot KwkgICAgfQotKyNlbmRpZgotIAkgIGVsc2UgaWYgKChNQl9DVVJfTUFYID09IDEgfHwgcmxfYnl0 ZV9vcmllbnRlZCAhPSAwKSAmJiAqb2xzID09IDAgJiYgbGVuZGlmZiA+IDApCi0gCSAgICB7Ci0g CSAgICAgIC8qIEF0IHRoZSBlbmQgb2YgYSBsaW5lIHRoZSBjaGFyYWN0ZXJzIGRvIG5vdCBoYXZl IHRvCi1AQCAtMTQ5OCwxMSArMTY2MywxNiBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJl bnRfbGluZSwgb21hCi0gCSAgICB9Ci0gCSAgZWxzZQotIAkgICAgewotLQkgICAgICAvKiBXZSBo YXZlIGhvcml6b250YWwgc2Nyb2xsaW5nIGFuZCB3ZSBhcmUgbm90IGluc2VydGluZyBhdAotLQkJ IHRoZSBlbmQuICBXZSBoYXZlIGludmlzaWJsZSBjaGFyYWN0ZXJzIGluIHRoaXMgbGluZS4gIFRo aXMKLS0JCSBpcyBhIGR1bWIgdXBkYXRlLiAqLwotIAkgICAgICBfcmxfb3V0cHV0X3NvbWVfY2hh cnMgKG5mZCwgdGVtcCk7Ci0gCSAgICAgIF9ybF9sYXN0X2NfcG9zICs9IGNvbF90ZW1wOwotKwkg ICAgICAvKiBJZiBuZmQgYmVnaW5zIGJlZm9yZSB0aGUgbGFzdCBpbnZpc2libGUgY2hhcmFjdGVy IGluIHRoZQotKwkJIHByb21wdCwgYWRqdXN0IF9ybF9sYXN0X2NfcG9zIHRvIGFjY291bnQgZm9y IHdyYXBfb2Zmc2V0Ci0rCQkgYW5kIHNldCBjcG9zX2FkanVzdGVkIHRvIGxldCB0aGUgY2FsbGVy IGtub3cuICovCi0rCSAgICAgIGlmICgoTUJfQ1VSX01BWCA+IDEgJiYgcmxfYnl0ZV9vcmllbnRl ZCA9PSAwKSAmJiBjdXJyZW50X2xpbmUgPT0gMCAmJiB3cmFwX29mZnNldCAmJiAoKG5mZCAtIG5l dykgPD0gcHJvbXB0X2xhc3RfaW52aXNpYmxlKSkKLSsJCXsKLSsJCSAgX3JsX2xhc3RfY19wb3Mg LT0gd3JhcF9vZmZzZXQ7Ci0rCQkgIGNwb3NfYWRqdXN0ZWQgPSAxOwotKwkJfQotIAkgICAgICBy ZXR1cm47Ci0gCSAgICB9Ci0gCSAgLyogQ29weSAobmV3KSBjaGFycyB0byBzY3JlZW4gZnJvbSBm aXJzdCBkaWZmIHRvIGxhc3QgbWF0Y2guICovCi1AQCAtMTUxMCwxNSArMTY4MCwyMyBAQCB1cGRh dGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21hCi0gCSAgaWYgKCh0ZW1wIC0gbGVu ZGlmZikgPiAwKQotIAkgICAgewotIAkgICAgICBfcmxfb3V0cHV0X3NvbWVfY2hhcnMgKG5mZCAr IGxlbmRpZmYsIHRlbXAgLSBsZW5kaWZmKTsKLS0jaWYgMQotIAkgICAgIC8qIFhYWCAtLSB0aGlz IGJlYXJzIGNsb3NlciBpbnNwZWN0aW9uLiAgRml4ZXMgYSByZWRpc3BsYXkgYnVnCi0gCQlyZXBv cnRlZCBhZ2FpbnN0IGJhc2gtMy4wLWFscGhhIGJ5IEFuZHJlYXMgU2Nod2FiIGludm9sdmluZwot IAkJbXVsdGlieXRlIGNoYXJhY3RlcnMgYW5kIHByb21wdCBzdHJpbmdzIHdpdGggaW52aXNpYmxl Ci0gCQljaGFyYWN0ZXJzLCBidXQgd2FzIHByZXZpb3VzbHkgZGlzYWJsZWQuICovCi0tCSAgICAg IF9ybF9sYXN0X2NfcG9zICs9IF9ybF9jb2xfd2lkdGggKG5mZCtsZW5kaWZmLCAwLCB0ZW1wLWNv bF9sZW5kaWZmKTsKLS0jZWxzZQotLQkgICAgICBfcmxfbGFzdF9jX3BvcyArPSBfcmxfY29sX3dp ZHRoIChuZmQrbGVuZGlmZiwgMCwgdGVtcC1sZW5kaWZmKTsKLS0jZW5kaWYKLSsJICAgICAgaWYg KE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKLSsJCXR3aWR0aCA9IF9y bF9jb2xfd2lkdGggKG5mZCtsZW5kaWZmLCAwLCB0ZW1wLWNvbF9sZW5kaWZmLCAxKTsKLSsJICAg ICAgZWxzZQotKwkJdHdpZHRoID0gdGVtcCAtIGxlbmRpZmY7Ci0rCSAgICAgIF9ybF9sYXN0X2Nf cG9zICs9IHR3aWR0aDsKLSsJICAgICAgLyogSWYgbmZkIGJlZ2lucyBiZWZvcmUgdGhlIGxhc3Qg aW52aXNpYmxlIGNoYXJhY3RlciBpbiB0aGUKLSsJCSBwcm9tcHQsIGFkanVzdCBfcmxfbGFzdF9j X3BvcyB0byBhY2NvdW50IGZvciB3cmFwX29mZnNldAotKwkJIGFuZCBzZXQgY3Bvc19hZGp1c3Rl ZCB0byBsZXQgdGhlIGNhbGxlciBrbm93LiAqLwotKwkgICAgICBpZiAoKE1CX0NVUl9NQVggPiAx ICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkgJiYgY3VycmVudF9saW5lID09IDAgJiYgd3JhcF9v ZmZzZXQgJiYgKChuZmQgLSBuZXcpIDw9IHByb21wdF9sYXN0X2ludmlzaWJsZSkpCi0rCQl7Ci0r CQkgIF9ybF9sYXN0X2NfcG9zIC09IHdyYXBfb2Zmc2V0OwotKwkJICBjcG9zX2FkanVzdGVkID0g MTsKLSsJCX0KLSAJICAgIH0KLSAJfQotICAgICAgIGVsc2UKLUBAIC0xNTMwLDYgKzE3MDgsMTQg QEAgdXBkYXRlX2xpbmUgKG9sZCwgbmV3LCBjdXJyZW50X2xpbmUsIG9tYQotIAkgICAgIGNoYXIg aW4gdGhlIGN1cnJlbnQgbGluZSAod2hpY2ggaW1wbGllcyB3ZSBqdXN0IG91dHB1dCBzb21lIGlu dmlzaWJsZQotIAkgICAgIGNoYXJhY3RlcnMpIHdlIG5lZWQgdG8gYWRqdXN0IF9ybF9sYXN0X2Nf cG9zLCBzaW5jZSBpdCByZXByZXNlbnRzCi0gCSAgICAgYSBwaHlzaWNhbCBjaGFyYWN0ZXIgcG9z aXRpb24uICovCi0rCSAgaWYgKChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09 IDApICYmCi0rCQljdXJyZW50X2xpbmUgPT0gcHJvbXB0X2xhc3Rfc2NyZWVuX2xpbmUgJiYgd3Jh cF9vZmZzZXQgJiYKLSsJCXdyYXBfb2Zmc2V0ICE9IHByb21wdF9pbnZpc19jaGFyc19maXJzdF9s aW5lICYmCi0rCQkoKG5mZC1uZXcpIDwgKHByb21wdF9sYXN0X2ludmlzaWJsZS0oY3VycmVudF9s aW5lKl9ybF9zY3JlZW53aWR0aCkpKSkKLSsJICAgIHsKLSsJICAgICAgX3JsX2xhc3RfY19wb3Mg LT0gd3JhcF9vZmZzZXQgLSBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZTsKLSsJICAgICAg Y3Bvc19hZGp1c3RlZCA9IDE7Ci0rCSAgICB9Ci0gCX0KLSAgICAgfQotICAgZWxzZQkJCQkvKiBE ZWxldGUgY2hhcmFjdGVycyBmcm9tIGxpbmUuICovCi1AQCAtMTU1MSw4ICsxNzM3LDIyIEBAIHVw ZGF0ZV9saW5lIChvbGQsIG5ldywgY3VycmVudF9saW5lLCBvbWEKLSAJICB0ZW1wID0gbmxzIC0g bmZkOwotIAkgIGlmICh0ZW1wID4gMCkKLSAJICAgIHsKLSsJICAgICAgLyogSWYgbmZkIGJlZ2lu cyBhdCB0aGUgcHJvbXB0LCBvciBiZWZvcmUgdGhlIGludmlzaWJsZQotKwkJIGNoYXJhY3RlcnMg aW4gdGhlIHByb21wdCwgd2UgbmVlZCB0byBhZGp1c3QgX3JsX2xhc3RfY19wb3MKLSsJCSBpbiBh IG11bHRpYnl0ZSBsb2NhbGUgdG8gYWNjb3VudCBmb3IgdGhlIHdyYXAgb2Zmc2V0IGFuZAotKwkJ IHNldCBjcG9zX2FkanVzdGVkIGFjY29yZGluZ2x5LiAqLwotIAkgICAgICBfcmxfb3V0cHV0X3Nv bWVfY2hhcnMgKG5mZCwgdGVtcCk7Ci0tCSAgICAgIF9ybF9sYXN0X2NfcG9zICs9IF9ybF9jb2xf d2lkdGggKG5mZCwgMCwgdGVtcCk7OwotKwkgICAgICBpZiAoTUJfQ1VSX01BWCA+IDEgJiYgcmxf Ynl0ZV9vcmllbnRlZCA9PSAwKQotKwkJewotKwkJICBfcmxfbGFzdF9jX3BvcyArPSBfcmxfY29s X3dpZHRoIChuZmQsIDAsIHRlbXAsIDEpOwotKwkJICBpZiAoY3VycmVudF9saW5lID09IDAgJiYg d3JhcF9vZmZzZXQgJiYgICgobmZkIC0gbmV3KSA8PSBwcm9tcHRfbGFzdF9pbnZpc2libGUpKQot KwkJICAgIHsKLSsJCSAgICAgIF9ybF9sYXN0X2NfcG9zIC09IHdyYXBfb2Zmc2V0OwotKwkJICAg ICAgY3Bvc19hZGp1c3RlZCA9IDE7Ci0rCQkgICAgfQotKwkJfQotKwkgICAgICBlbHNlCi0rCQlf cmxfbGFzdF9jX3BvcyArPSB0ZW1wOwotIAkgICAgfQotIAl9Ci0gICAgICAgLyogT3RoZXJ3aXNl LCBwcmludCBvdmVyIHRoZSBleGlzdGluZyBtYXRlcmlhbC4gKi8KLUBAIC0xNTYwLDE2ICsxNzYw LDM3IEBAIHVwZGF0ZV9saW5lIChvbGQsIG5ldywgY3VycmVudF9saW5lLCBvbWEKLSAJewotIAkg IGlmICh0ZW1wID4gMCkKLSAJICAgIHsKLSsJICAgICAgLyogSWYgbmZkIGJlZ2lucyBhdCB0aGUg cHJvbXB0LCBvciBiZWZvcmUgdGhlIGludmlzaWJsZQotKwkJIGNoYXJhY3RlcnMgaW4gdGhlIHBy b21wdCwgd2UgbmVlZCB0byBhZGp1c3QgX3JsX2xhc3RfY19wb3MKLSsJCSBpbiBhIG11bHRpYnl0 ZSBsb2NhbGUgdG8gYWNjb3VudCBmb3IgdGhlIHdyYXAgb2Zmc2V0IGFuZAotKwkJIHNldCBjcG9z X2FkanVzdGVkIGFjY29yZGluZ2x5LiAqLwotIAkgICAgICBfcmxfb3V0cHV0X3NvbWVfY2hhcnMg KG5mZCwgdGVtcCk7Ci0gCSAgICAgIF9ybF9sYXN0X2NfcG9zICs9IGNvbF90ZW1wOwkJLyogWFhY ICovCi0rCSAgICAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDAp Ci0rCQl7Ci0rCQkgIGlmIChjdXJyZW50X2xpbmUgPT0gMCAmJiB3cmFwX29mZnNldCAmJiAgKChu ZmQgLSBuZXcpIDw9IHByb21wdF9sYXN0X2ludmlzaWJsZSkpCi0rCQkgICAgewotKwkJICAgICAg X3JsX2xhc3RfY19wb3MgLT0gd3JhcF9vZmZzZXQ7Ci0rCQkgICAgICBjcG9zX2FkanVzdGVkID0g MTsKLSsJCSAgICB9Ci0rCQl9Ci0gCSAgICB9Ci0gCSAgbGVuZGlmZiA9IChvZSAtIG9sZCkgLSAo bmUgLSBuZXcpOwotIAkgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09 IDApCi0tCSAgICBjb2xfbGVuZGlmZiA9IF9ybF9jb2xfd2lkdGggKG9sZCwgMCwgb2UgLSBvbGQp IC0gX3JsX2NvbF93aWR0aCAobmV3LCAwLCBuZSAtIG5ldyk7Ci0rCSAgICBjb2xfbGVuZGlmZiA9 IF9ybF9jb2xfd2lkdGggKG9sZCwgMCwgb2UgLSBvbGQsIDEpIC0gX3JsX2NvbF93aWR0aCAobmV3 LCAwLCBuZSAtIG5ldywgMSk7Ci0gCSAgZWxzZQotIAkgICAgY29sX2xlbmRpZmYgPSBsZW5kaWZm OwotIAotKyNpZiAwCi0gCSAgaWYgKGNvbF9sZW5kaWZmKQotKyNlbHNlCi0rCSAgLyogSWYgd2Un dmUgYWxyZWFkeSBwcmludGVkIG92ZXIgdGhlIGVudGlyZSB3aWR0aCBvZiB0aGUgc2NyZWVuLAot KwkgICAgIGluY2x1ZGluZyB0aGUgb2xkIG1hdGVyaWFsLCB0aGVuIGNvbF9sZW5kaWZmIGRvZXNu J3QgbWF0dGVyIGFuZAotKwkgICAgIHNwYWNlX3RvX2VvbCB3aWxsIGluc2VydCB0b28gbWFueSBz cGFjZXMuICBYWFggLSBtYXliZSB3ZSBzaG91bGQKLSsJICAgICBhZGp1c3QgY29sX2xlbmRpZmYg YmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBfcmxfbGFzdF9jX3BvcwotKwkgICAgIGFu ZCBfcmxfc2NyZWVud2lkdGggKi8KLSsJICBpZiAoY29sX2xlbmRpZmYgJiYgKChNQl9DVVJfTUFY ID09IDEgfHwgcmxfYnl0ZV9vcmllbnRlZCkgfHwgKF9ybF9sYXN0X2NfcG9zIDwgX3JsX3NjcmVl bndpZHRoKSkpCi0rI2VuZGlmCi0gCSAgICB7CSAgCi0gCSAgICAgIGlmIChfcmxfdGVybV9hdXRv d3JhcCAmJiBjdXJyZW50X2xpbmUgPCBpbnZfYm90bGluKQotIAkJc3BhY2VfdG9fZW9sIChjb2xf bGVuZGlmZik7Ci1AQCAtMTYyMyw3ICsxODQ0LDcgQEAgcmxfb25fbmV3X2xpbmVfd2l0aF9wcm9t cHQgKCkKLSAKLSAgIGwgPSBzdHJsZW4gKHByb21wdF9sYXN0X2xpbmUpOwotICAgaWYgKE1CX0NV Ul9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKLS0gICAgX3JsX2xhc3RfY19wb3Mg PSBfcmxfY29sX3dpZHRoIChwcm9tcHRfbGFzdF9saW5lLCAwLCBsKTsJLyogWFhYICovCi0rICAg IF9ybF9sYXN0X2NfcG9zID0gX3JsX2NvbF93aWR0aCAocHJvbXB0X2xhc3RfbGluZSwgMCwgbCwg MSk7CS8qIFhYWCAqLwotICAgZWxzZQotICAgICBfcmxfbGFzdF9jX3BvcyA9IGw7Ci0gCi1AQCAt MTY1OCwxMCArMTg3OSwxMSBAQCBybF9vbl9uZXdfbGluZV93aXRoX3Byb21wdCAoKQotIGludAot IHJsX2ZvcmNlZF91cGRhdGVfZGlzcGxheSAoKQotIHsKLSsgIHJlZ2lzdGVyIGNoYXIgKnRlbXA7 Ci0rCi0gICBpZiAodmlzaWJsZV9saW5lKQotICAgICB7Ci0tICAgICAgcmVnaXN0ZXIgY2hhciAq dGVtcCA9IHZpc2libGVfbGluZTsKLS0KLSsgICAgICB0ZW1wID0gdmlzaWJsZV9saW5lOwotICAg ICAgIHdoaWxlICgqdGVtcCkKLSAJKnRlbXArKyA9ICdcMCc7Ci0gICAgIH0KLUBAIC0xNjg0LDkg KzE5MDYsMTQgQEAgX3JsX21vdmVfY3Vyc29yX3JlbGF0aXZlIChuZXcsIGRhdGEpCi0gICByZWdp c3RlciBpbnQgaTsKLSAgIGludCB3b2ZmOwkJCS8qIG51bWJlciBvZiBpbnZpc2libGUgY2hhcnMg b24gY3VycmVudCBsaW5lICovCi0gICBpbnQgY3BvcywgZHBvczsJCS8qIGN1cnJlbnQgYW5kIGRl c2lyZWQgY3Vyc29yIHBvc2l0aW9ucyAqLwotKyAgaW50IGFkanVzdDsKLSAKLS0gIHdvZmYgPSBX X09GRlNFVCAoX3JsX2xhc3Rfdl9wb3MsIHdyYXBfb2Zmc2V0KTsKLSsgIHdvZmYgPSBXUkFQX09G RlNFVCAoX3JsX2xhc3Rfdl9wb3MsIHdyYXBfb2Zmc2V0KTsKLSAgIGNwb3MgPSBfcmxfbGFzdF9j X3BvczsKLSsKLSsgIGlmIChjcG9zID09IDAgJiYgY3BvcyA9PSBuZXcpCi0rICAgIHJldHVybjsK LSsKLSAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKLSAgIC8qIElmIHdlIGhhdmUgbXVs dGlieXRlIGNoYXJhY3RlcnMsIE5FVyBpcyBpbmRleGVkIGJ5IHRoZSBidWZmZXIgcG9pbnQgaW4K LSAgICAgIGEgbXVsdGlieXRlIHN0cmluZywgYnV0IF9ybF9sYXN0X2NfcG9zIGlzIHRoZSBkaXNw bGF5IHBvc2l0aW9uLiAgSW4KLUBAIC0xNjk1LDkgKzE5MjIsNDIgQEAgX3JsX21vdmVfY3Vyc29y X3JlbGF0aXZlIChuZXcsIGRhdGEpCi0gICAgICBhcyBsb25nIGFzIHdlIGFyZSBwYXN0IHRoZW0g YW5kIHRoZXkgYXJlIGNvdW50ZWQgYnkgX3JsX2NvbF93aWR0aC4gKi8KLSAgIGlmIChNQl9DVVJf TUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCi0gICAgIHsKLS0gICAgICBkcG9zID0g X3JsX2NvbF93aWR0aCAoZGF0YSwgMCwgbmV3KTsKLS0gICAgICBpZiAoZHBvcyA+IHdvZmYpCi0t CWRwb3MgLT0gd29mZjsKLSsgICAgICBhZGp1c3QgPSAxOwotKyAgICAgIC8qIFRyeSB0byBzaG9y dC1jaXJjdWl0IGNvbW1vbiBjYXNlcyBhbmQgZWxpbWluYXRlIGEgYnVuY2ggb2YgbXVsdGlieXRl Ci0rCSBjaGFyYWN0ZXIgZnVuY3Rpb24gY2FsbHMuICovCi0rICAgICAgLyogMS4gIHByb21wdCBz dHJpbmcgKi8KLSsgICAgICBpZiAobmV3ID09IGxvY2FsX3Byb21wdF9sZW4gJiYgbWVtY21wIChk YXRhLCBsb2NhbF9wcm9tcHQsIG5ldykgPT0gMCkKLSsJewotKwkgIGRwb3MgPSBwcm9tcHRfcGh5 c2ljYWxfY2hhcnM7Ci0rCSAgY3Bvc19hZGp1c3RlZCA9IDE7Ci0rCSAgYWRqdXN0ID0gMDsKLSsJ fQotKyAgICAgIC8qIDIuICBwcm9tcHRfc3RyaW5nICsgbGluZSBjb250ZW50cyAqLwotKyAgICAg IGVsc2UgaWYgKG5ldyA+IGxvY2FsX3Byb21wdF9sZW4gJiYgbG9jYWxfcHJvbXB0ICYmIG1lbWNt cCAoZGF0YSwgbG9jYWxfcHJvbXB0LCBsb2NhbF9wcm9tcHRfbGVuKSA9PSAwKQotKwl7Ci0rCSAg ZHBvcyA9IHByb21wdF9waHlzaWNhbF9jaGFycyArIF9ybF9jb2xfd2lkdGggKGRhdGEsIGxvY2Fs X3Byb21wdF9sZW4sIG5ldywgMSk7Ci0rCSAgY3Bvc19hZGp1c3RlZCA9IDE7Ci0rCSAgYWRqdXN0 ID0gMDsKLSsJfQotKyAgICAgIGVsc2UKLSsgICAgICAgIGRwb3MgPSBfcmxfY29sX3dpZHRoIChk YXRhLCAwLCBuZXcsIDEpOwotKwotKyAgICAgIC8qIFVzZSBORVcgd2hlbiBjb21wYXJpbmcgYWdh aW5zdCB0aGUgbGFzdCBpbnZpc2libGUgY2hhcmFjdGVyIGluIHRoZQotKwkgcHJvbXB0IHN0cmlu Zywgc2luY2UgdGhleSdyZSBib3RoIGJ1ZmZlciBpbmRpY2VzIGFuZCBEUE9TIGlzIGEKLSsJIGRl c2lyZWQgZGlzcGxheSBwb3NpdGlvbi4gKi8KLSsgICAgICBpZiAoYWRqdXN0ICYmICgobmV3ID4g cHJvbXB0X2xhc3RfaW52aXNpYmxlKSB8fAkJLyogWFhYIC0gZG9uJ3QgdXNlIHdvZmYgaGVyZSAq LwotKwkgIChwcm9tcHRfcGh5c2ljYWxfY2hhcnMgPj0gX3JsX3NjcmVlbndpZHRoICYmCi0rCSAg IF9ybF9sYXN0X3ZfcG9zID09IHByb21wdF9sYXN0X3NjcmVlbl9saW5lICYmCi0rCSAgIHdyYXBf b2Zmc2V0ID49IHdvZmYgJiYgZHBvcyA+PSB3b2ZmICYmCi0rCSAgIG5ldyA+IChwcm9tcHRfbGFz dF9pbnZpc2libGUtKF9ybF9zY3JlZW53aWR0aCpfcmxfbGFzdF92X3Bvcyktd3JhcF9vZmZzZXQp KSkpCi0rCSAgIC8qIFhYWCBsYXN0IGNvbXBhcmlzb24gbWlnaHQgbmVlZCB0byBiZSA+PSAqLwot Kwl7Ci0rCSAgZHBvcyAtPSB3b2ZmOwotKwkgIC8qIFNpbmNlIHRoaXMgd2lsbCBiZSBhc3NpZ25l ZCB0byBfcmxfbGFzdF9jX3BvcyBhdCB0aGUgZW5kIChtb3JlCi0rCSAgICAgcHJlY2lzZWx5LCBf cmxfbGFzdF9jX3BvcyA9PSBkcG9zIHdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zKSwKLSsJICAg ICBsZXQgdGhlIGNhbGxlciBrbm93LiAqLwotKwkgIGNwb3NfYWRqdXN0ZWQgPSAxOwotKwl9Ci0g ICAgIH0KLSAgIGVsc2UKLSAjZW5kaWYKLUBAIC0xNzE2LDcgKzE5NzYsNyBAQCBfcmxfbW92ZV9j dXJzb3JfcmVsYXRpdmUgKG5ldywgZGF0YSkKLSAgIGVsc2UKLSAjZW5kaWYKLSAgIGkgPSBfcmxf bGFzdF9jX3BvcyAtIHdvZmY7Ci0tICBpZiAobmV3ID09IDAgfHwgQ1JfRkFTVEVSIChuZXcsIF9y bF9sYXN0X2NfcG9zKSB8fAotKyAgaWYgKGRwb3MgPT0gMCB8fCBDUl9GQVNURVIgKGRwb3MsIF9y bF9sYXN0X2NfcG9zKSB8fAotICAgICAgIChfcmxfdGVybV9hdXRvd3JhcCAmJiBpID09IF9ybF9z Y3JlZW53aWR0aCkpCi0gICAgIHsKLSAjaWYgZGVmaW5lZCAoX19NU0RPU19fKQotQEAgLTE3Mzgs MTkgKzE5OTgsMjcgQEAgX3JsX21vdmVfY3Vyc29yX3JlbGF0aXZlIChuZXcsIGRhdGEpCi0gCSBz ZXF1ZW5jZSB0ZWxsaW5nIHRoZSB0ZXJtaW5hbCB0byBtb3ZlIGZvcndhcmQgb25lIGNoYXJhY3Rl ci4KLSAJIFRoYXQga2luZCBvZiBjb250cm9sIGlzIGZvciBwZW9wbGUgd2hvIGRvbid0IGtub3cg d2hhdCB0aGUKLSAJIGRhdGEgaXMgdW5kZXJuZWF0aCB0aGUgY3Vyc29yLiAqLwotLSNpZiBkZWZp bmVkIChIQUNLX1RFUk1DQVBfTU9USU9OKQotLSAgICAgIGlmIChfcmxfdGVybV9mb3J3YXJkX2No YXIpCi0tCXsKLS0JICBmb3IgKGkgPSBjcG9zOyBpIDwgZHBvczsgaSsrKQotLQkgICAgdHB1dHMg KF9ybF90ZXJtX2ZvcndhcmRfY2hhciwgMSwgX3JsX291dHB1dF9jaGFyYWN0ZXJfZnVuY3Rpb24p OwotLQl9Ci0tICAgICAgZWxzZQotLSNlbmRpZiAvKiBIQUNLX1RFUk1DQVBfTU9USU9OICovCi0r Ci0rICAgICAgLyogSG93ZXZlciwgd2UgbmVlZCBhIGhhbmRsZSBvbiB3aGVyZSB0aGUgY3VycmVu dCBkaXNwbGF5IHBvc2l0aW9uIGlzCi0rCSBpbiB0aGUgYnVmZmVyIGZvciB0aGUgaW1tZWRpYXRl bHkgcHJlY2VkaW5nIGNvbW1lbnQgdG8gYmUgdHJ1ZS4KLSsJIEluIG11bHRpYnl0ZSBsb2NhbGVz LCB3ZSBkb24ndCBjdXJyZW50bHkgaGF2ZSB0aGF0IGluZm8gYXZhaWxhYmxlLgotKwkgV2l0aG91 dCBpdCwgd2UgZG9uJ3Qga25vdyB3aGVyZSB0aGUgZGF0YSB3ZSBoYXZlIHRvIGRpc3BsYXkgYmVn aW5zCi0rCSBpbiB0aGUgYnVmZmVyIGFuZCB3ZSBoYXZlIHRvIGdvIGJhY2sgdG8gdGhlIGJlZ2lu bmluZyBvZiB0aGUgc2NyZWVuCi0rCSBsaW5lLiAgSW4gdGhpcyBjYXNlLCB3ZSBjYW4gdXNlIHRo ZSB0ZXJtaW5hbCBzZXF1ZW5jZSB0byBtb3ZlIGZvcndhcmQKLSsJIGlmIGl0J3MgYXZhaWxhYmxl LiAqLwotICAgICAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDAp Ci0gCXsKLS0JICB0cHV0cyAoX3JsX3Rlcm1fY3IsIDEsIF9ybF9vdXRwdXRfY2hhcmFjdGVyX2Z1 bmN0aW9uKTsKLS0JICBmb3IgKGkgPSAwOyBpIDwgbmV3OyBpKyspCi0tCSAgICBwdXRjIChkYXRh W2ldLCBybF9vdXRzdHJlYW0pOwotKwkgIGlmIChfcmxfdGVybV9mb3J3YXJkX2NoYXIpCi0rCSAg ICB7Ci0rCSAgICAgIGZvciAoaSA9IGNwb3M7IGkgPCBkcG9zOyBpKyspCi0rCSAgICAgICAgdHB1 dHMgKF9ybF90ZXJtX2ZvcndhcmRfY2hhciwgMSwgX3JsX291dHB1dF9jaGFyYWN0ZXJfZnVuY3Rp b24pOwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgdHB1dHMgKF9ybF90ZXJt X2NyLCAxLCBfcmxfb3V0cHV0X2NoYXJhY3Rlcl9mdW5jdGlvbik7Ci0rCSAgICAgIGZvciAoaSA9 IDA7IGkgPCBuZXc7IGkrKykKLSsJCXB1dGMgKGRhdGFbaV0sIHJsX291dHN0cmVhbSk7Ci0rCSAg ICB9Ci0gCX0KLSAgICAgICBlbHNlCi0gCWZvciAoaSA9IGNwb3M7IGkgPCBuZXc7IGkrKykKLUBA IC0xOTA4LDYgKzIxNzYsNyBAQCBybF9tZXNzYWdlICh2YV9hbGlzdCkKLSAJCQkJCSAmcHJvbXB0 X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUsCi0gCQkJCQkgJnByb21wdF9waHlzaWNhbF9jaGFycyk7 Ci0gICBsb2NhbF9wcm9tcHRfcHJlZml4ID0gKGNoYXIgKilOVUxMOwotKyAgbG9jYWxfcHJvbXB0 X2xlbiA9IGxvY2FsX3Byb21wdCA/IHN0cmxlbiAobG9jYWxfcHJvbXB0KSA6IDA7Ci0gICAoKnJs X3JlZGlzcGxheV9mdW5jdGlvbikgKCk7Ci0gCi0gICByZXR1cm4gMDsKLUBAIC0xOTMxLDYgKzIy MDAsNyBAQCBybF9tZXNzYWdlIChmb3JtYXQsIGFyZzEsIGFyZzIpCi0gCQkJCQkgJnByb21wdF9p bnZpc19jaGFyc19maXJzdF9saW5lLAotIAkJCQkJICZwcm9tcHRfcGh5c2ljYWxfY2hhcnMpOwot ICAgbG9jYWxfcHJvbXB0X3ByZWZpeCA9IChjaGFyICopTlVMTDsKLSsgIGxvY2FsX3Byb21wdF9s ZW4gPSBsb2NhbF9wcm9tcHQgPyBzdHJsZW4gKGxvY2FsX3Byb21wdCkgOiAwOwotICAgKCpybF9y ZWRpc3BsYXlfZnVuY3Rpb24pICgpOwotICAgICAgIAotICAgcmV0dXJuIDA7Ci1AQCAtMTk2Nywx MiArMjIzNywxNCBAQCBybF9zYXZlX3Byb21wdCAoKQotICAgc2F2ZWRfbG9jYWxfcHJvbXB0ID0g bG9jYWxfcHJvbXB0OwotICAgc2F2ZWRfbG9jYWxfcHJlZml4ID0gbG9jYWxfcHJvbXB0X3ByZWZp eDsKLSAgIHNhdmVkX3ByZWZpeF9sZW5ndGggPSBwcm9tcHRfcHJlZml4X2xlbmd0aDsKLSsgIHNh dmVkX2xvY2FsX2xlbmd0aCA9IGxvY2FsX3Byb21wdF9sZW47Ci0gICBzYXZlZF9sYXN0X2ludmlz aWJsZSA9IHByb21wdF9sYXN0X2ludmlzaWJsZTsKLSAgIHNhdmVkX3Zpc2libGVfbGVuZ3RoID0g cHJvbXB0X3Zpc2libGVfbGVuZ3RoOwotICAgc2F2ZWRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSA9 IHByb21wdF9pbnZpc19jaGFyc19maXJzdF9saW5lOwotICAgc2F2ZWRfcGh5c2ljYWxfY2hhcnMg PSBwcm9tcHRfcGh5c2ljYWxfY2hhcnM7Ci0gCi0gICBsb2NhbF9wcm9tcHQgPSBsb2NhbF9wcm9t cHRfcHJlZml4ID0gKGNoYXIgKikwOwotKyAgbG9jYWxfcHJvbXB0X2xlbiA9IDA7Ci0gICBwcm9t cHRfbGFzdF9pbnZpc2libGUgPSBwcm9tcHRfdmlzaWJsZV9sZW5ndGggPSBwcm9tcHRfcHJlZml4 X2xlbmd0aCA9IDA7Ci0gICBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSA9IHByb21wdF9w aHlzaWNhbF9jaGFycyA9IDA7Ci0gfQotQEAgLTE5ODUsNiArMjI1Nyw3IEBAIHJsX3Jlc3RvcmVf cHJvbXB0ICgpCi0gCi0gICBsb2NhbF9wcm9tcHQgPSBzYXZlZF9sb2NhbF9wcm9tcHQ7Ci0gICBs b2NhbF9wcm9tcHRfcHJlZml4ID0gc2F2ZWRfbG9jYWxfcHJlZml4OwotKyAgbG9jYWxfcHJvbXB0 X2xlbiA9IHNhdmVkX2xvY2FsX2xlbmd0aDsKLSAgIHByb21wdF9wcmVmaXhfbGVuZ3RoID0gc2F2 ZWRfcHJlZml4X2xlbmd0aDsKLSAgIHByb21wdF9sYXN0X2ludmlzaWJsZSA9IHNhdmVkX2xhc3Rf aW52aXNpYmxlOwotICAgcHJvbXB0X3Zpc2libGVfbGVuZ3RoID0gc2F2ZWRfdmlzaWJsZV9sZW5n dGg7Ci1AQCAtMTk5Myw2ICsyMjY2LDcgQEAgcmxfcmVzdG9yZV9wcm9tcHQgKCkKLSAKLSAgIC8q IGNhbiB0ZXN0IHNhdmVkX2xvY2FsX3Byb21wdCB0byBzZWUgaWYgcHJvbXB0IGluZm8gaGFzIGJl ZW4gc2F2ZWQuICovCi0gICBzYXZlZF9sb2NhbF9wcm9tcHQgPSBzYXZlZF9sb2NhbF9wcmVmaXgg PSAoY2hhciAqKTA7Ci0rICBzYXZlZF9sb2NhbF9sZW5ndGggPSAwOwotICAgc2F2ZWRfbGFzdF9p bnZpc2libGUgPSBzYXZlZF92aXNpYmxlX2xlbmd0aCA9IHNhdmVkX3ByZWZpeF9sZW5ndGggPSAw OwotICAgc2F2ZWRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSA9IHNhdmVkX3BoeXNpY2FsX2NoYXJz ID0gMDsKLSB9Ci1AQCAtMjEwNiw3ICsyMzgwLDcgQEAgaW5zZXJ0X3NvbWVfY2hhcnMgKHN0cmlu ZywgY291bnQsIGNvbCkKLSAgIC8qIERFQlVHR0lORyAqLwotICAgaWYgKE1CX0NVUl9NQVggPT0g MSB8fCBybF9ieXRlX29yaWVudGVkKQotICAgICBpZiAoY291bnQgIT0gY29sKQotLSAgICAgIGZw cmludGYoc3RkZXJyLCAicmVhZGxpbmU6IGRlYnVnOiBpbnNlcnRfc29tZV9jaGFyczogY291bnQg KCVkKSAhPSBjb2wgKCVkKVxuIiwgY291bnQsIGNvbCk7Ci0rICAgICAgX3JsX3R0eW1zZyAoImRl YnVnOiBpbnNlcnRfc29tZV9jaGFyczogY291bnQgKCVkKSAhPSBjb2wgKCVkKSIsIGNvdW50LCBj b2wpOwotIAotICAgLyogSWYgSUMgaXMgZGVmaW5lZCwgdGhlbiB3ZSBkbyBub3QgaGF2ZSB0byAi ZW50ZXIiIGluc2VydCBtb2RlLiAqLwotICAgaWYgKF9ybF90ZXJtX0lDKQotQEAgLTIxODksNyAr MjQ2Myw4IEBAIF9ybF91cGRhdGVfZmluYWwgKCkKLSAgICAgICBjaGFyICpsYXN0X2xpbmU7Ci0g Ci0gICAgICAgbGFzdF9saW5lID0gJnZpc2libGVfbGluZVt2aXNfbGJyZWFrc1tfcmxfdmlzX2Jv dGxpbl1dOwotLSAgICAgIF9ybF9tb3ZlX2N1cnNvcl9yZWxhdGl2ZSAoX3JsX3NjcmVlbndpZHRo IC0gMSwgbGFzdF9saW5lKTsKLSsgICAgICBjcG9zX2J1ZmZlcl9wb3NpdGlvbiA9IC0xOwkvKiBk b24ndCBrbm93IHdoZXJlIHdlIGFyZSBpbiBidWZmZXIgKi8KLSsgICAgICBfcmxfbW92ZV9jdXJz b3JfcmVsYXRpdmUgKF9ybF9zY3JlZW53aWR0aCAtIDEsIGxhc3RfbGluZSk7CS8qIFhYWCAqLwot ICAgICAgIF9ybF9jbGVhcl90b19lb2wgKDApOwotICAgICAgIHB1dGMgKGxhc3RfbGluZVtfcmxf c2NyZWVud2lkdGggLSAxXSwgcmxfb3V0c3RyZWFtKTsKLSAgICAgfQotQEAgLTIyMzIsNiArMjUw Nyw3IEBAIHJlZHJhd19wcm9tcHQgKHQpCi0gCQkJCSAgICZwcm9tcHRfaW52aXNfY2hhcnNfZmly c3RfbGluZSwKLSAJCQkJICAgJnByb21wdF9waHlzaWNhbF9jaGFycyk7Ci0gICBsb2NhbF9wcm9t cHRfcHJlZml4ID0gKGNoYXIgKilOVUxMOwotKyAgbG9jYWxfcHJvbXB0X2xlbiA9IGxvY2FsX3By b21wdCA/IHN0cmxlbiAobG9jYWxfcHJvbXB0KSA6IDA7Ci0gCi0gICBybF9mb3JjZWRfdXBkYXRl X2Rpc3BsYXkgKCk7Ci0gCi1AQCAtMjI0NSwxMCArMjUyMSwxNCBAQCBfcmxfcmVkaXNwbGF5X2Fm dGVyX3NpZ3dpbmNoICgpCi0gewotICAgY2hhciAqdDsKLSAKLS0gIC8qIENsZWFyIHRoZSBjdXJy ZW50IGxpbmUgYW5kIHB1dCB0aGUgY3Vyc29yIGF0IGNvbHVtbiAwLiAgTWFrZSBzdXJlCi0tICAg ICB0aGUgcmlnaHQgdGhpbmcgaGFwcGVucyBpZiB3ZSBoYXZlIHdyYXBwZWQgdG8gYSBuZXcgc2Ny ZWVuIGxpbmUuICovCi0rICAvKiBDbGVhciB0aGUgbGFzdCBsaW5lIChhc3N1bWluZyB0aGF0IHRo ZSBzY3JlZW4gc2l6ZSBjaGFuZ2Ugd2lsbCByZXN1bHQgaW4KLSsgICAgIGVpdGhlciBtb3JlIG9y IGZld2VyIGNoYXJhY3RlcnMgb24gdGhhdCBsaW5lIG9ubHkpIGFuZCBwdXQgdGhlIGN1cnNvciBh dAotKyAgICAgY29sdW1uIDAuICBNYWtlIHN1cmUgdGhlIHJpZ2h0IHRoaW5nIGhhcHBlbnMgaWYg d2UgaGF2ZSB3cmFwcGVkIHRvIGEgbmV3Ci0rICAgICBzY3JlZW4gbGluZS4gKi8KLSAgIGlmIChf cmxfdGVybV9jcikKLSAgICAgewotKyAgICAgIF9ybF9tb3ZlX3ZlcnQgKF9ybF92aXNfYm90bGlu KTsKLSsKLSAjaWYgZGVmaW5lZCAoX19NU0RPU19fKQotICAgICAgIHB1dGMgKCdccicsIHJsX291 dHN0cmVhbSk7Ci0gI2Vsc2UKLUBAIC0yMjg0LDcgKzI1NjQsNyBAQCBfcmxfcmVkaXNwbGF5X2Fm dGVyX3NpZ3dpbmNoICgpCi0gdm9pZAotIF9ybF9jbGVhbl91cF9mb3JfZXhpdCAoKQotIHsKLS0g IGlmIChyZWFkbGluZV9lY2hvaW5nX3ApCi0rICBpZiAoX3JsX2VjaG9pbmdfcCkKLSAgICAgewot ICAgICAgIF9ybF9tb3ZlX3ZlcnQgKF9ybF92aXNfYm90bGluKTsKLSAgICAgICBfcmxfdmlzX2Jv dGxpbiA9IDA7Ci1AQCAtMjMyOSwyMCArMjYwOSw0MSBAQCBfcmxfY3VycmVudF9kaXNwbGF5X2xp bmUgKCkKLSAgICBJbiB0aGUgY2FzZSBvZiBtdWx0aWJ5dGUgY2hhcmFjdGVycyB3aXRoIHN0YXRl ZnVsIGVuY29kaW5nLCB3ZSBoYXZlIHRvCi0gICAgc2NhbiBmcm9tIHRoZSBiZWdpbm5pbmcgb2Yg dGhlIHN0cmluZyB0byB0YWtlIHRoZSBzdGF0ZSBpbnRvIGFjY291bnQuICovCi0gc3RhdGljIGlu dAotLV9ybF9jb2xfd2lkdGggKHN0ciwgc3RhcnQsIGVuZCkKLStfcmxfY29sX3dpZHRoIChzdHIs IHN0YXJ0LCBlbmQsIGZsYWdzKQotICAgICAgY29uc3QgY2hhciAqc3RyOwotLSAgICAgaW50IHN0 YXJ0LCBlbmQ7Ci0rICAgICBpbnQgc3RhcnQsIGVuZCwgZmxhZ3M7Ci0gewotICAgd2NoYXJfdCB3 YzsKLS0gIG1ic3RhdGVfdCBwcyA9IHswfTsKLSsgIG1ic3RhdGVfdCBwczsKLSAgIGludCB0bXAs IHBvaW50LCB3aWR0aCwgbWF4OwotIAotICAgaWYgKGVuZCA8PSBzdGFydCkKLSAgICAgcmV0dXJu IDA7Ci0rICBpZiAoTUJfQ1VSX01BWCA9PSAxIHx8IHJsX2J5dGVfb3JpZW50ZWQpCi0rewotK19y bF90dHltc2cgKCJfcmxfY29sX3dpZHRoOiBjYWxsZWQgd2l0aCBNQl9DVVJfTUFYID09IDEiKTsK LSsgICAgcmV0dXJuIChlbmQgLSBzdGFydCk7Ci0rfQotKwotKyAgbWVtc2V0ICgmcHMsIDAsIHNp emVvZiAobWJzdGF0ZV90KSk7Ci0gCi0gICBwb2ludCA9IDA7Ci0gICBtYXggPSBlbmQ7Ci0gCi0r ICAvKiBUcnkgdG8gc2hvcnQtY2lyY3VpdCBjb21tb24gY2FzZXMuICBUaGUgYWRqdXN0bWVudCB0 byByZW1vdmUgd3JhcF9vZmZzZXQKLSsgICAgIGlzIGRvbmUgYnkgdGhlIGNhbGxlci4gKi8KLSsg IC8qIDEuICBwcm9tcHQgc3RyaW5nICovCi0rICBpZiAoZmxhZ3MgJiYgc3RhcnQgPT0gMCAmJiBl bmQgPT0gbG9jYWxfcHJvbXB0X2xlbiAmJiBtZW1jbXAgKHN0ciwgbG9jYWxfcHJvbXB0LCBsb2Nh bF9wcm9tcHRfbGVuKSA9PSAwKQotKyAgICByZXR1cm4gKHByb21wdF9waHlzaWNhbF9jaGFycyAr IHdyYXBfb2Zmc2V0KTsKLSsgIC8qIDIuICBwcm9tcHQgc3RyaW5nICsgbGluZSBjb250ZW50cyAq LwotKyAgZWxzZSBpZiAoZmxhZ3MgJiYgc3RhcnQgPT0gMCAmJiBsb2NhbF9wcm9tcHRfbGVuID4g MCAmJiBlbmQgPiBsb2NhbF9wcm9tcHRfbGVuICYmIGxvY2FsX3Byb21wdCAmJiBtZW1jbXAgKHN0 ciwgbG9jYWxfcHJvbXB0LCBsb2NhbF9wcm9tcHRfbGVuKSA9PSAwKQotKyAgICB7Ci0rICAgICAg dG1wID0gcHJvbXB0X3BoeXNpY2FsX2NoYXJzICsgd3JhcF9vZmZzZXQ7Ci0rICAgICAgLyogWFhY IC0gdHJ5IHRvIGNhbGwgb3Vyc2VsdmVzIHJlY3Vyc2l2ZWx5IHdpdGggbm9uLXByb21wdCBwb3J0 aW9uICovCi0rICAgICAgdG1wICs9IF9ybF9jb2xfd2lkdGggKHN0ciwgbG9jYWxfcHJvbXB0X2xl biwgZW5kLCBmbGFncyk7Ci0rICAgICAgcmV0dXJuICh0bXApOwotKyAgICB9Ci0rCi0gICB3aGls ZSAocG9pbnQgPCBzdGFydCkKLSAgICAgewotICAgICAgIHRtcCA9IG1icmxlbiAoc3RyICsgcG9p bnQsIG1heCwgJnBzKTsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2RvYy9D aGFuZ2VMb2cuZ2RiCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3Jl YWRsaW5lL2RvYy9DaGFuZ2VMb2cuZ2RiCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9kb2MvQ2hhbmdlTG9nLmdkYgky MDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMyArMSw3IEBACi0rMjAx MS0wNC0yNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwot KwlJbXBvcnRlZCByZWFkbGluZSA2LjIsIGFuZCB1cHN0cmVhbSBwYXRjaCAwMDEuCi0rCi0gMjAw Ni0wNC0yNCAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KLSAKLSAJ SW1wb3J0ZWQgcmVhZGxpbmUgNS4xLCBhbmQgdXBzdHJlYW0gcGF0Y2hlcyAwMDEtMDA0LgotSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL01ha2VmaWxlLmluCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2RvYy9NYWtlZmlsZS5p bgkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAx MTA3MDMvcmVhZGxpbmUvZG9jL01ha2VmaWxlLmluCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAw MDAwICswMjAwCi1AQCAtMSwyNSArMSwyNCBAQAotICMgVGhpcyBtYWtlZmlsZSBmb3IgUmVhZGxp bmUgbGlicmFyeSBkb2N1bWVudGF0aW9uIGlzIGluIC0qLSB0ZXh0IC0qLSBtb2RlLgotICMgRW1h Y3MgbGlrZXMgaXQgdGhhdCB3YXkuCi0gCi0tIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwNCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjIENvcHlyaWdodCAoQykgMTk5Ni0yMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy LCBvciAoYXQgeW91ciBvcHRpb24pCi0tIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0jIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0tCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07 IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4KLSsjICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsjICAgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsjICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsKLSsjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gCi0gdG9wZGlyID0g QHRvcF9zcmNkaXJACi0gc3JjZGlyID0gQHNyY2RpckAKLS1WUEFUSCA9IC46QHNyY2RpckAKLStW UEFUSCA9IEBzcmNkaXJACi0gCi0gcHJlZml4ID0gQHByZWZpeEAKLSAKLUBAIC02NCw5ICs2Myw5 IEBAIFBTUERGICAgICAgID0gZ3MgLXNQQVBFUlNJWkU9JHtQQVBFUlNJWkUKLSAKLSBSTFNSQyA9 ICQoc3JjZGlyKS9ybG1hbi50ZXhpICQoc3JjZGlyKS9ybHVzZXIudGV4aSBcCi0gCSQoc3JjZGly KS9ybHRlY2gudGV4aSAkKHNyY2RpcikvdmVyc2lvbi50ZXhpIFwKLS0JJChzcmNkaXIpL3JsdXNl cm1hbi50ZXhpCi0rCSQoc3JjZGlyKS9ybHVzZXJtYW4udGV4aSAkKHNyY2RpcikvZmRsLnRleGkK LSBISVNUU1JDID0gJChzcmNkaXIpL2hpc3RvcnkudGV4aSAkKHNyY2RpcikvaHN1c2VyLnRleGkg XAotLQkgICQoc3JjZGlyKS9oc3RlY2gudGV4aSAkKHNyY2RpcikvdmVyc2lvbi50ZXhpCi0rCSAg JChzcmNkaXIpL2hzdGVjaC50ZXhpICQoc3JjZGlyKS92ZXJzaW9uLnRleGkgJChzcmNkaXIpL2Zk bC50ZXhpCi0gCi0gIyBUaGlzIHNob3VsZCBiZSBhIHByb2dyYW0gdGhhdCBjb252ZXJ0cyB0cm9m ZiB0byBhbiBhc2NpaS1yZWFkYWJsZSBmb3JtYXQKLSBOUk9GRiAgICAgICA9IGdyb2ZmIC1UYXNj aWkKLUBAIC04Myw3ICs4Miw3IEBAIFBERk9CSiA9IHJlYWRsaW5lLnBkZiBoaXN0b3J5LnBkZiBy bHVzZXIKLSAKLSBJTlRFUk1FRElBVEVfT0JKID0gcmxtYW4uZHZpCi0gCi0tRElTVF9ET0NTID0g JChEVklPQkopICQoUFNPQkopICQoSFRNTE9CSikgJChJTkZPT0JKKSAkKFRFWFRPQkopCi0rRElT VF9ET0NTID0gJChEVklPQkopICQoUFNPQkopICQoSFRNTE9CSikgJChJTkZPT0JKKSAkKFRFWFRP QkopICQoUERGT0JKKQotIAotIC5TVUZGSVhFUzogICAgICAuMCAuMyAucHMgLnR4dCAuZHZpIC5o dG1sIC5wZGYKLSAKLUBAIC05OSw5ICs5OCwxMSBAQCBESVNUX0RPQ1MgPSAkKERWSU9CSikgJChQ U09CSikgJChIVE1MT0JKCi0gCSQoUk0pICRACi0gCS0ke0RWSVBERn0gJDwKLSAKLS1hbGw6IGlu Zm8gZHZpIGh0bWwgcHMgdGV4dAotK2FsbDogaW5mbyBkdmkgaHRtbCBwcyB0ZXh0IHBkZgotIG5v ZHZpOiBpbmZvIGh0bWwgdGV4dAotIAotK3hkaXN0OiAkKERJU1RfRE9DUykKLSsKLSBpbmZvOgkk KElORk9PQkopCi0gZHZpOgkkKERWSU9CSikKLSBwczoJJChQU09CSikKLUBAIC0xNTYsMTMgKzE1 NywxMyBAQCBoaXN0b3J5Lmh0bWw6CSR7SElTVFNSQ30KLSAKLSByZWFkbGluZS4wOiByZWFkbGlu ZS4zCi0gCi0tcmVhZGxpbmVfMy5wczogcmVhZGxpbmUuMwotK3JlYWRsaW5lXzMucHM6ICQoc3Jj ZGlyKS9yZWFkbGluZS4zCi0gCSR7Uk19ICRACi0gCSR7R1JPRkZ9IC1tYW4gPCAkKHNyY2Rpcikv cmVhZGxpbmUuMyA+ICRAIAotIAotIGhpc3RvcnkuMDogaGlzdG9yeS4zCi0gCi0taGlzdG9yeV8z LnBzOiBoaXN0b3J5LjMKLStoaXN0b3J5XzMucHM6ICQoc3JjZGlyKS9oaXN0b3J5LjMKLSAJJHtS TX0gJEAKLSAJJHtHUk9GRn0gLW1hbiA8ICQoc3JjZGlyKS9oaXN0b3J5LjMgPiAkQCAKLSAKLUBA IC0xODIsNyArMTgzLDcgQEAgZGlzdGNsZWFuOiBjbGVhbiBtYXliZS1jbGVhbgotIAkkKFJNKSBN YWtlZmlsZQotIAotIG1heWJlLWNsZWFuOgotLQktaWYgdGVzdCAiWCQodG9wZGlyKSIgIT0gIlgk KEJVSUxEX0RJUikiOyB0aGVuIFwKLSsJLWlmIHRlc3QgIlgkKHRvcGRpcikiICE9ICJYLi4iICYm IHRlc3QgIlgkKHRvcGRpcikiICE9ICJYJChCVUlMRF9ESVIpIjsgdGhlbiBcCi0gCQkkKFJNKSAk KERJU1RfRE9DUyk7IFwKLSAJZmkKLSAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRs aW5lL2RvYy9mZGwudGV4aQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3Jp Zy9yZWFkbGluZS9kb2MvZmRsLnRleGkJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2RvYy9mZGwudGV4aQkyMDExLTA3 LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMTMgKzEsMTIgQEAKLStAYyBUaGUg R05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLgotK0BjZW50ZXIgVmVyc2lvbiAxLjMsIDMg Tm92ZW1iZXIgMjAwOAotIAotLUBub2RlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZQot LUBhcHBlbmRpeHNlYyBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UKLS0KLS1AY2luZGV4 IEZETCwgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCi0tQGNlbnRlciBWZXJzaW9uIDEu MiwgTm92ZW1iZXIgMjAwMgotK0BjIFRoaXMgZmlsZSBpcyBpbnRlbmRlZCB0byBiZSBpbmNsdWRl ZCB3aXRoaW4gYW5vdGhlciBkb2N1bWVudCwKLStAYyBoZW5jZSBubyBzZWN0aW9uaW5nIGNvbW1h bmQgb3IgQG5vZGUuCi0gCi0gQGRpc3BsYXkKLS1Db3B5cmlnaHQgQGNvcHlyaWdodHt9IDIwMDAs MjAwMSwyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLTU5IFRlbXBsZSBQbGFj ZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EKLStDb3B5cmlnaHQgQGNv cHlyaWdodHt9IDIwMDAsIDIwMDEsIDIwMDIsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rQHVyZWZ7aHR0cDovL2ZzZi5vcmcvfQotIAotIEV2ZXJ5b25lIGlzIHBl cm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwotIG9mIHRoaXMg bGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgotQEAgLTEx Miw2ICsxMTEsOSBAQCBmb3JtYXRzIHdoaWNoIGRvIG5vdCBoYXZlIGFueSB0aXRsZSBwYWdlCi0g dGhlIHRleHQgbmVhciB0aGUgbW9zdCBwcm9taW5lbnQgYXBwZWFyYW5jZSBvZiB0aGUgd29yaydz IHRpdGxlLAotIHByZWNlZGluZyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBib2R5IG9mIHRoZSB0ZXh0 LgotIAotK1RoZSBgYHB1Ymxpc2hlcicnIG1lYW5zIGFueSBwZXJzb24gb3IgZW50aXR5IHRoYXQg ZGlzdHJpYnV0ZXMgY29waWVzCi0rb2YgdGhlIERvY3VtZW50IHRvIHRoZSBwdWJsaWMuCi0rCi0g QSBzZWN0aW9uIGBgRW50aXRsZWQgWFlaJycgbWVhbnMgYSBuYW1lZCBzdWJ1bml0IG9mIHRoZSBE b2N1bWVudCB3aG9zZQotIHRpdGxlIGVpdGhlciBpcyBwcmVjaXNlbHkgWFlaIG9yIGNvbnRhaW5z IFhZWiBpbiBwYXJlbnRoZXNlcyBmb2xsb3dpbmcKLSB0ZXh0IHRoYXQgdHJhbnNsYXRlcyBYWVog aW4gYW5vdGhlciBsYW5ndWFnZS4gIChIZXJlIFhZWiBzdGFuZHMgZm9yIGEKLUBAIC0zNDQsNyAr MzQ2LDcgQEAgYW5kIGluZGVwZW5kZW50IGRvY3VtZW50cyBvciB3b3JrcywgaW4gbwotIGRpc3Ry aWJ1dGlvbiBtZWRpdW0sIGlzIGNhbGxlZCBhbiBgYGFnZ3JlZ2F0ZScnIGlmIHRoZSBjb3B5cmln aHQKLSByZXN1bHRpbmcgZnJvbSB0aGUgY29tcGlsYXRpb24gaXMgbm90IHVzZWQgdG8gbGltaXQg dGhlIGxlZ2FsIHJpZ2h0cwotIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJzIGJleW9uZCB3aGF0 IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4KLS1XaGVuIHRoZSBEb2N1bWVudCBpcyBpbmNs dWRlZCBhbiBhZ2dyZWdhdGUsIHRoaXMgTGljZW5zZSBkb2VzIG5vdAotK1doZW4gdGhlIERvY3Vt ZW50IGlzIGluY2x1ZGVkIGluIGFuIGFnZ3JlZ2F0ZSwgdGhpcyBMaWNlbnNlIGRvZXMgbm90Ci0g YXBwbHkgdG8gdGhlIG90aGVyIHdvcmtzIGluIHRoZSBhZ2dyZWdhdGUgd2hpY2ggYXJlIG5vdCB0 aGVtc2VsdmVzCi0gZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgRG9jdW1lbnQuCi0gCi1AQCAtMzgw LDEzICszODIsMzAgQEAgdGl0bGUuCi0gQGl0ZW0KLSBURVJNSU5BVElPTgotIAotLVlvdSBtYXkg bm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgb3IgZGlzdHJpYnV0ZSB0aGUgRG9jdW1lbnQg ZXhjZXB0Ci0tYXMgZXhwcmVzc2x5IHByb3ZpZGVkIGZvciB1bmRlciB0aGlzIExpY2Vuc2UuICBB bnkgb3RoZXIgYXR0ZW1wdCB0bwotLWNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmli dXRlIHRoZSBEb2N1bWVudCBpcyB2b2lkLCBhbmQgd2lsbAotLWF1dG9tYXRpY2FsbHkgdGVybWlu YXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsCi0tcGFydGllcyB3 aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIgdGhpcwot LUxpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkIHNvIGxvbmcg YXMgc3VjaAotLXBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KLStZb3UgbWF5IG5v dCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIERvY3VtZW50Ci0r ZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0 ZW1wdAotK290aGVyd2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1 dGUgaXQgaXMgdm9pZCwgYW5kCi0rd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJp Z2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuCi0rCi0rSG93ZXZlciwgaWYgeW91IGNlYXNlIGFsbCB2 aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlLCB0aGVuIHlvdXIgbGljZW5zZQotK2Zyb20gYSBwYXJ0 aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMgcmVpbnN0YXRlZCAoYSkgcHJvdmlzaW9uYWxseSwK LSt1bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGV4cGxpY2l0bHkgYW5kIGZp bmFsbHkKLSt0ZXJtaW5hdGVzIHlvdXIgbGljZW5zZSwgYW5kIChiKSBwZXJtYW5lbnRseSwgaWYg dGhlIGNvcHlyaWdodCBob2xkZXIKLStmYWlscyB0byBub3RpZnkgeW91IG9mIHRoZSB2aW9sYXRp b24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5zIHByaW9yIHRvCi0rNjAgZGF5cyBhZnRlciB0aGUg Y2Vzc2F0aW9uLgotKwotK01vcmVvdmVyLCB5b3VyIGxpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIg Y29weXJpZ2h0IGhvbGRlciBpcwotK3JlaW5zdGF0ZWQgcGVybWFuZW50bHkgaWYgdGhlIGNvcHly aWdodCBob2xkZXIgbm90aWZpZXMgeW91IG9mIHRoZQotK3Zpb2xhdGlvbiBieSBzb21lIHJlYXNv bmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUKLStyZWNlaXZlZCBu b3RpY2Ugb2YgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSAoZm9yIGFueSB3b3JrKSBmcm9tIHRo YXQKLStjb3B5cmlnaHQgaG9sZGVyLCBhbmQgeW91IGN1cmUgdGhlIHZpb2xhdGlvbiBwcmlvciB0 byAzMCBkYXlzIGFmdGVyCi0reW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCi0rCi0rVGVybWlu YXRpb24gb2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0 ZSB0aGUKLStsaWNlbnNlcyBvZiBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcyBvciBy aWdodHMgZnJvbSB5b3UgdW5kZXIKLSt0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZl IGJlZW4gdGVybWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5Ci0rcmVpbnN0YXRlZCwgcmVjZWlw dCBvZiBhIGNvcHkgb2Ygc29tZSBvciBhbGwgb2YgdGhlIHNhbWUgbWF0ZXJpYWwgZG9lcwotK25v dCBnaXZlIHlvdSBhbnkgcmlnaHRzIHRvIHVzZSBpdC4KLSAKLSBAaXRlbQotIEZVVFVSRSBSRVZJ U0lPTlMgT0YgVEhJUyBMSUNFTlNFCi1AQCAtNDA0LDExICs0MjMsNDYgQEAgZm9sbG93aW5nIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZQotIG9mIGFueSBsYXRlciB2ZXJzaW9uIHRoYXQg aGFzIGJlZW4gcHVibGlzaGVkIChub3QgYXMgYSBkcmFmdCkgYnkgdGhlCi0gRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLiAgSWYgdGhlIERvY3VtZW50IGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9u Ci0gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZl ciBwdWJsaXNoZWQgKG5vdAotLWFzIGEgZHJhZnQpIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24uCi0rYXMgYSBkcmFmdCkgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gIElm IHRoZSBEb2N1bWVudAotK3NwZWNpZmllcyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZSB3aGljaCBm dXR1cmUgdmVyc2lvbnMgb2YgdGhpcwotK0xpY2Vuc2UgY2FuIGJlIHVzZWQsIHRoYXQgcHJveHkn cyBwdWJsaWMgc3RhdGVtZW50IG9mIGFjY2VwdGFuY2Ugb2YgYQotK3ZlcnNpb24gcGVybWFuZW50 bHkgYXV0aG9yaXplcyB5b3UgdG8gY2hvb3NlIHRoYXQgdmVyc2lvbiBmb3IgdGhlCi0rRG9jdW1l bnQuCi0rCi0rQGl0ZW0KLStSRUxJQ0VOU0lORwotKwotK2BgTWFzc2l2ZSBNdWx0aWF1dGhvciBD b2xsYWJvcmF0aW9uIFNpdGUnJyAob3IgYGBNTUMgU2l0ZScnKSBtZWFucyBhbnkKLStXb3JsZCBX aWRlIFdlYiBzZXJ2ZXIgdGhhdCBwdWJsaXNoZXMgY29weXJpZ2h0YWJsZSB3b3JrcyBhbmQgYWxz bwotK3Byb3ZpZGVzIHByb21pbmVudCBmYWNpbGl0aWVzIGZvciBhbnlib2R5IHRvIGVkaXQgdGhv c2Ugd29ya3MuICBBCi0rcHVibGljIHdpa2kgdGhhdCBhbnlib2R5IGNhbiBlZGl0IGlzIGFuIGV4 YW1wbGUgb2Ygc3VjaCBhIHNlcnZlci4gIEEKLStgYE1hc3NpdmUgTXVsdGlhdXRob3IgQ29sbGFi b3JhdGlvbicnIChvciBgYE1NQycnKSBjb250YWluZWQgaW4gdGhlCi0rc2l0ZSBtZWFucyBhbnkg c2V0IG9mIGNvcHlyaWdodGFibGUgd29ya3MgdGh1cyBwdWJsaXNoZWQgb24gdGhlIE1NQwotK3Np dGUuCi0rCi0rYGBDQy1CWS1TQScnIG1lYW5zIHRoZSBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0 aW9uLVNoYXJlIEFsaWtlIDMuMAotK2xpY2Vuc2UgcHVibGlzaGVkIGJ5IENyZWF0aXZlIENvbW1v bnMgQ29ycG9yYXRpb24sIGEgbm90LWZvci1wcm9maXQKLStjb3Jwb3JhdGlvbiB3aXRoIGEgcHJp bmNpcGFsIHBsYWNlIG9mIGJ1c2luZXNzIGluIFNhbiBGcmFuY2lzY28sCi0rQ2FsaWZvcm5pYSwg YXMgd2VsbCBhcyBmdXR1cmUgY29weWxlZnQgdmVyc2lvbnMgb2YgdGhhdCBsaWNlbnNlCi0rcHVi bGlzaGVkIGJ5IHRoYXQgc2FtZSBvcmdhbml6YXRpb24uCi0rCi0rYGBJbmNvcnBvcmF0ZScnIG1l YW5zIHRvIHB1Ymxpc2ggb3IgcmVwdWJsaXNoIGEgRG9jdW1lbnQsIGluIHdob2xlIG9yCi0raW4g cGFydCwgYXMgcGFydCBvZiBhbm90aGVyIERvY3VtZW50LgotKwotK0FuIE1NQyBpcyBgYGVsaWdp YmxlIGZvciByZWxpY2Vuc2luZycnIGlmIGl0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoaXMKLStMaWNl bnNlLCBhbmQgaWYgYWxsIHdvcmtzIHRoYXQgd2VyZSBmaXJzdCBwdWJsaXNoZWQgdW5kZXIgdGhp cyBMaWNlbnNlCi0rc29tZXdoZXJlIG90aGVyIHRoYW4gdGhpcyBNTUMsIGFuZCBzdWJzZXF1ZW50 bHkgaW5jb3Jwb3JhdGVkIGluIHdob2xlCi0rb3IgaW4gcGFydCBpbnRvIHRoZSBNTUMsICgxKSBo YWQgbm8gY292ZXIgdGV4dHMgb3IgaW52YXJpYW50IHNlY3Rpb25zLAotK2FuZCAoMikgd2VyZSB0 aHVzIGluY29ycG9yYXRlZCBwcmlvciB0byBOb3ZlbWJlciAxLCAyMDA4LgotKwotK1RoZSBvcGVy YXRvciBvZiBhbiBNTUMgU2l0ZSBtYXkgcmVwdWJsaXNoIGFuIE1NQyBjb250YWluZWQgaW4gdGhl IHNpdGUKLSt1bmRlciBDQy1CWS1TQSBvbiB0aGUgc2FtZSBzaXRlIGF0IGFueSB0aW1lIGJlZm9y ZSBBdWd1c3QgMSwgMjAwOSwKLStwcm92aWRlZCB0aGUgTU1DIGlzIGVsaWdpYmxlIGZvciByZWxp Y2Vuc2luZy4KLSsKLSBAZW5kIGVudW1lcmF0ZQotIAotIEBwYWdlCi0tQGFwcGVuZGl4c3Vic2Vj IEFEREVORFVNOiBIb3cgdG8gdXNlIHRoaXMgTGljZW5zZSBmb3IgeW91ciBkb2N1bWVudHMKLStA aGVhZGluZyBBRERFTkRVTTogSG93IHRvIHVzZSB0aGlzIExpY2Vuc2UgZm9yIHlvdXIgZG9jdW1l bnRzCi0gCi0gVG8gdXNlIHRoaXMgTGljZW5zZSBpbiBhIGRvY3VtZW50IHlvdSBoYXZlIHdyaXR0 ZW4sIGluY2x1ZGUgYSBjb3B5IG9mCi0gdGhlIExpY2Vuc2UgaW4gdGhlIGRvY3VtZW50IGFuZCBw dXQgdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQgYW5kCi1AQCAtNDE4LDE2ICs0NzIsMTYgQEAgbGlj ZW5zZSBub3RpY2VzIGp1c3QgYWZ0ZXIgdGhlIHRpdGxlIHBhZwotIEBncm91cAotICAgQ29weXJp Z2h0IChDKSAgQHZhcnt5ZWFyfSAgQHZhcnt5b3VyIG5hbWV9LgotICAgUGVybWlzc2lvbiBpcyBn cmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50Ci0t ICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwg VmVyc2lvbiAxLjIKLSsgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEZyZWUgRG9jdW1lbnRh dGlvbiBMaWNlbnNlLCBWZXJzaW9uIDEuMwotICAgb3IgYW55IGxhdGVyIHZlcnNpb24gcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247Ci0tICB3aXRoIG5vIEludmFyaWFu dCBTZWN0aW9ucywgbm8gRnJvbnQtQ292ZXIgVGV4dHMsIGFuZCBubyBCYWNrLUNvdmVyIFRleHRz LgotLSAgQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVu dGl0bGVkIGBgR05VCi0rICB3aXRoIG5vIEludmFyaWFudCBTZWN0aW9ucywgbm8gRnJvbnQtQ292 ZXIgVGV4dHMsIGFuZCBubyBCYWNrLUNvdmVyCi0rICBUZXh0cy4gIEEgY29weSBvZiB0aGUgbGlj ZW5zZSBpcyBpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdOVQotICAgRnJlZSBE b2N1bWVudGF0aW9uIExpY2Vuc2UnJy4KLSBAZW5kIGdyb3VwCi0gQGVuZCBzbWFsbGV4YW1wbGUK LSAKLSBJZiB5b3UgaGF2ZSBJbnZhcmlhbnQgU2VjdGlvbnMsIEZyb250LUNvdmVyIFRleHRzIGFu ZCBCYWNrLUNvdmVyIFRleHRzLAotLXJlcGxhY2UgdGhlIGBgd2l0aC4uLlRleHRzLicnIGxpbmUg d2l0aCB0aGlzOgotK3JlcGxhY2UgdGhlIGBgd2l0aEBkb3Rze31UZXh0cy4nJyBsaW5lIHdpdGgg dGhpczoKLSAKLSBAc21hbGxleGFtcGxlCi0gQGdyb3VwCi1JbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9yZWFkbGluZS9kb2MvaGlzdG9yeS4zCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4y MDExMDcwMy5vcmlnL3JlYWRsaW5lL2RvYy9oaXN0b3J5LjMJMjAxMS0wNy0wMyAxMDo0MDo1My4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2RvYy9oaXN0 b3J5LjMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC02LDkgKzYsOSBA QAotIC5cIglDYXNlIFdlc3Rlcm4gUmVzZXJ2ZSBVbml2ZXJzaXR5Ci0gLlwiCWNoZXRAaW5zLkNX UlUuRWR1Ci0gLlwiCi0tLlwiCUxhc3QgQ2hhbmdlOiBUaHUgSnVsIDMxIDA4OjQ2OjA4IEVEVCAy MDAzCi0rLlwiCUxhc3QgQ2hhbmdlOiBUaHUgQXVnIDEyIDIyOjI0OjQxIEVEVCAyMDEwCi0gLlwi Ci0tLlRIIEhJU1RPUlkgMyAiMjAwMyBKdWx5IDMxIiAiR05VIEhpc3RvcnkgNS4wIgotKy5USCBI SVNUT1JZIDMgIjIwMTAgQXVndXN0IDEyIiAiR05VIEhpc3RvcnkgNi4yIgotIC5cIgotIC5cIiBG aWxlIE5hbWUgbWFjcm8uICBUaGlzIHVzZWQgdG8gYmUgYC5QTicsIGZvciBQYXRoIE5hbWUsCi0g LlwiIGJ1dCBTdW4gZG9lc24ndCBzZWVtIHRvIGxpa2UgdGhhdCB2ZXJ5IG11Y2guCi1AQCAtNDAs OCArNDAsOCBAQAotIC5TSCBOQU1FCi0gaGlzdG9yeSBcLSBHTlUgSGlzdG9yeSBMaWJyYXJ5Ci0g LlNIIENPUFlSSUdIVAotLS5pZiB0IFRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5IGlzIENvcHlyaWdo dCBcKGNvIDE5ODktMjAwMiBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0t LmlmIG4gVGhlIEdOVSBIaXN0b3J5IExpYnJhcnkgaXMgQ29weXJpZ2h0IChDKSAxOTg5LTIwMDIg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy5pZiB0IFRoZSBHTlUgSGlz dG9yeSBMaWJyYXJ5IGlzIENvcHlyaWdodCBcKGNvIDE5ODktMjAxMSBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLmlmIG4gVGhlIEdOVSBIaXN0b3J5IExpYnJhcnkgaXMg Q29weXJpZ2h0IChDKSAxOTg5LTIwMTEgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotIC5TSCBERVNDUklQVElPTgotIE1hbnkgcHJvZ3JhbXMgcmVhZCBpbnB1dCBmcm9tIHRo ZSB1c2VyIGEgbGluZSBhdCBhIHRpbWUuICBUaGUgR05VCi0gSGlzdG9yeSBsaWJyYXJ5IGlzIGFi bGUgdG8ga2VlcCB0cmFjayBvZiB0aG9zZSBsaW5lcywgYXNzb2NpYXRlIGFyYml0cmFyeQotQEAg LTgzLDYgKzgzLDggQEAgdGhlIGhpc3RvcnkgZXhwYW5zaW9uIGNoYXJhY3Rlci4KLSAuUFAKLSBB biBldmVudCBkZXNpZ25hdG9yIGlzIGEgcmVmZXJlbmNlIHRvIGEgY29tbWFuZCBsaW5lIGVudHJ5 IGluIHRoZQotIGhpc3RvcnkgbGlzdC4KLStVbmxlc3MgdGhlIHJlZmVyZW5jZSBpcyBhYnNvbHV0 ZSwgZXZlbnRzIGFyZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudAotK3Bvc2l0aW9uIGluIHRoZSBo aXN0b3J5IGxpc3QuCi0gLlBQCi0gLlBEIDAKLSAuVFAKLUBAIC05NiwxOCArOTgsMjIgQEAgUmVm ZXIgdG8gY29tbWFuZCBsaW5lCi0gLklSIG4gLgotIC5UUAotIC5CICFcLVxmSW5cZlIKLS1SZWZl ciB0byB0aGUgY3VycmVudCBjb21tYW5kIGxpbmUgbWludXMKLStSZWZlciB0byB0aGUgY3VycmVu dCBjb21tYW5kIG1pbnVzCi0gLklSIG4gLgotIC5UUAotIC5CICEhCi0gUmVmZXIgdG8gdGhlIHBy ZXZpb3VzIGNvbW1hbmQuICBUaGlzIGlzIGEgc3lub255bSBmb3IgYCFcLTEnLgotIC5UUAotIC5C ICFcZklzdHJpbmdcZlIKLS1SZWZlciB0byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZCBzdGFydGlu ZyB3aXRoIAotK1JlZmVyIHRvIHRoZSBtb3N0IHJlY2VudCBjb21tYW5kCi0rcHJlY2VkaW5nIHRo ZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBoaXN0b3J5IGxpc3QKLStzdGFydGluZyB3aXRoCi0g LklSIHN0cmluZyAuCi0gLlRQCi0gLkIgIT9cZklzdHJpbmdcZlJcZkJbP11cZlIKLS1SZWZlciB0 byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZCBjb250YWluaW5nCi0rUmVmZXIgdG8gdGhlIG1vc3Qg cmVjZW50IGNvbW1hbmQKLStwcmVjZWRpbmcgdGhlIGN1cnJlbnQgcG9zdGl0aW9uIGluIHRoZSBo aXN0b3J5IGxpc3QKLStjb250YWluaW5nCi0gLklSIHN0cmluZyAuCi0gVGhlIHRyYWlsaW5nIFxm Qj9cZlAgbWF5IGJlIG9taXR0ZWQgaWYKLSAuSSBzdHJpbmcKLUBAIC01NjksMTAgKzU3NSwxMyBA QCBUaGUgbnVtYmVyIG9mIGVudHJpZXMgY3VycmVudGx5IHN0b3JlZCBpCi0gVGhlIG1heGltdW0g bnVtYmVyIG9mIGhpc3RvcnkgZW50cmllcy4gIFRoaXMgbXVzdCBiZSBjaGFuZ2VkIHVzaW5nCi0g XGZCc3RpZmxlX2hpc3RvcnkoKVxmUC4KLSAKLS0uVmIgaW50IGhpc3Rvcnlfd3JpdGVfdGltZXN0 YW1wcwotKy5WYiBpbnQgaGlzdG9yeV93aXRlX3RpbWVzdGFtcHMKLSBJZiBub24temVybywgdGlt ZXN0YW1wcyBhcmUgd3JpdHRlbiB0byB0aGUgaGlzdG9yeSBmaWxlLCBzbyB0aGV5IGNhbiBiZQot IHByZXNlcnZlZCBiZXR3ZWVuIHNlc3Npb25zLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMCwgbWVh bmluZyB0aGF0Ci0gdGltZXN0YW1wcyBhcmUgbm90IHNhdmVkLgotK1RoZSBjdXJyZW50IHRpbWVz dGFtcCBmb3JtYXQgdXNlcyB0aGUgdmFsdWUgb2YgXGZJaGlzdG9yeV9jb21tZW50X2NoYXJcZlAK LSt0byBkZWxpbWl0IHRpbWVzdGFtcCBlbnRyaWVzIGluIHRoZSBoaXN0b3J5IGZpbGUuICBJZiB0 aGF0IHZhcmlhYmxlIGRvZXMKLStub3QgaGF2ZSBhIHZhbHVlICh0aGUgZGVmYXVsdCksIHRpbWVz dGFtcHMgd2lsbCBub3QgYmUgd3JpdHRlbi4KLSAKLSAuVmIgY2hhciBoaXN0b3J5X2V4cGFuc2lv bl9jaGFyCi0gVGhlIGNoYXJhY3RlciB0aGF0IGludHJvZHVjZXMgYSBoaXN0b3J5IGV2ZW50LiAg VGhlIGRlZmF1bHQgaXMgXGZCIVxmUC4KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRs aW5lL2RvYy9oaXN0b3J5LnRleGkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAz Lm9yaWcvcmVhZGxpbmUvZG9jL2hpc3RvcnkudGV4aQkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL2hpc3Rvcnku dGV4aQkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTQsOCArNCw2IEBA Ci0gQHNldHRpdGxlIEdOVSBIaXN0b3J5IExpYnJhcnkKLSBAYyAlKiplbmQgb2YgaGVhZGVyIChU aGlzIGlzIGZvciBydW5uaW5nIFRleGluZm8gb24gYSByZWdpb24uKQotIAotLUBzZXRjaGFwdGVy bmV3cGFnZSBvZGQKLS0KLSBAaW5jbHVkZSB2ZXJzaW9uLnRleGkKLSAKLSBAY29weWluZwotQEAg LTE0LDcgKzEyLDcgQEAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIEdOVSBIaXN0b3J5IAot IGEgcHJvZ3JhbW1pbmcgdG9vbCB0aGF0IHByb3ZpZGVzIGEgY29uc2lzdGVudCB1c2VyIGludGVy ZmFjZSBmb3IKLSByZWNhbGxpbmcgbGluZXMgb2YgcHJldmlvdXNseSB0eXBlZCBpbnB1dC4KLSAK LS1Db3B5cmlnaHQgQGNvcHlyaWdodHt9IDE5ODgtMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLStDb3B5cmlnaHQgQGNvcHlyaWdodHt9IDE5ODgtLTIwMTEgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIG1ha2UgYW5k IGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mCi0gdGhpcyBtYW51YWwgcHJvdmlkZWQgdGhl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UKLUBAIC0yMiwxNSAr MjAsMTYgQEAgYXJlIHByZXNlcnZlZCBvbiBhbGwgY29waWVzLgotIAotIEBxdW90YXRpb24KLSBQ ZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRo aXMgZG9jdW1lbnQKLS11bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRp b24gTGljZW5zZSwgVmVyc2lvbiAxLjEgb3IKLSt1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBG cmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjMgb3IKLSBhbnkgbGF0ZXIgdmVy c2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2l0aCBubwot LUludmFyaWFudCBTZWN0aW9ucywgd2l0aCB0aGUgRnJvbnQtQ292ZXIgdGV4dHMgYmVpbmcgYGBB IEdOVSBNYW51YWwsJycKLStJbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGggdGhlIEZyb250LUNvdmVy IHRleHRzIGJlaW5nIGBgQSBHTlUgTWFudWFsJycsCi0gYW5kIHdpdGggdGhlIEJhY2stQ292ZXIg VGV4dHMgYXMgaW4gKGEpIGJlbG93LiAgQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzCi0taW5jbHVk ZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vu c2UuJycKLStpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdOVSBGcmVlIERvY3Vt ZW50YXRpb24gTGljZW5zZScnLgotKwotKyhhKSBUaGUgRlNGJ3MgQmFjay1Db3ZlciBUZXh0IGlz OiBZb3UgYXJlIGZyZWUgdG8gY29weSBhbmQgbW9kaWZ5Ci0rdGhpcyBHTlUgbWFudWFsLiAgQnV5 aW5nIGNvcGllcyBmcm9tIEdOVSBQcmVzcyBzdXBwb3J0cyB0aGUgRlNGIGluCi0rZGV2ZWxvcGlu ZyBHTlUgYW5kIHByb21vdGluZyBzb2Z0d2FyZSBmcmVlZG9tLicnCi0gCi0tKGEpIFRoZSBGU0Yn cyBCYWNrLUNvdmVyIFRleHQgaXM6IGBgWW91IGhhdmUgZnJlZWRvbSB0byBjb3B5IGFuZCBtb2Rp ZnkKLS10aGlzIEdOVSBNYW51YWwsIGxpa2UgR05VIHNvZnR3YXJlLiAgQ29waWVzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZQotLVNvZnR3YXJlIEZvdW5kYXRpb24gcmFpc2UgZnVuZHMgZm9yIEdOVSBk ZXZlbG9wbWVudC4nJwotIEBlbmQgcXVvdGF0aW9uCi0gQGVuZCBjb3B5aW5nCi0gCi1AQCAtNzIs NyArNzEsNyBAQCB0eXBlZCBpbnB1dC4KLSBAbWVudQotICogVXNpbmcgSGlzdG9yeSBJbnRlcmFj dGl2ZWx5OjoJICBHTlUgSGlzdG9yeSBVc2VyJ3MgTWFudWFsLgotICogUHJvZ3JhbW1pbmcgd2l0 aCBHTlUgSGlzdG9yeTo6ICBHTlUgSGlzdG9yeSBQcm9ncmFtbWVyJ3MgTWFudWFsLgotLSogQ29w eWluZyBUaGlzIE1hbnVhbDo6CQkgIENvcHlpbmcgVGhpcyBNYW51YWwuCi0rKiBHTlUgRnJlZSBE b2N1bWVudGF0aW9uIExpY2Vuc2U6OglMaWNlbnNlIGZvciBjb3B5aW5nIHRoaXMgbWFudWFsLgot ICogQ29uY2VwdCBJbmRleDo6CQkgIEluZGV4IG9mIGNvbmNlcHRzIGRlc2NyaWJlZCBpbiB0aGlz IG1hbnVhbC4KLSAqIEZ1bmN0aW9uIGFuZCBWYXJpYWJsZSBJbmRleDo6CSAgSW5kZXggb2YgZXh0 ZXJuYWxseSB2aXNpYmxlIGZ1bmN0aW9ucwotIAkJCQkgIGFuZCB2YXJpYWJsZXMuCi1AQCAtODQs MTIgKzgzLDggQEAgdHlwZWQgaW5wdXQuCi0gQGluY2x1ZGUgaHN1c2VyLnRleGkKLSBAaW5jbHVk ZSBoc3RlY2gudGV4aQotIAotLUBub2RlIENvcHlpbmcgVGhpcyBNYW51YWwKLS1AYXBwZW5kaXgg Q29weWluZyBUaGlzIE1hbnVhbAotLQotLUBtZW51Ci0tKiBHTlUgRnJlZSBEb2N1bWVudGF0aW9u IExpY2Vuc2U6OglMaWNlbnNlIGZvciBjb3B5aW5nIHRoaXMgbWFudWFsLgotLUBlbmQgbWVudQot K0Bub2RlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZQotK0BhcHBlbmRpeCBHTlUgRnJl ZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UKLSAKLSBAaW5jbHVkZSBmZGwudGV4aQotIAotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL2hzdGVjaC50ZXhpCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2RvYy9oc3RlY2gudGV4aQky MDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3 MDMvcmVhZGxpbmUvZG9jL2hzdGVjaC50ZXhpCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAw ICswMjAwCi1AQCAtMSw3ICsxLDcgQEAKLSBAaWdub3JlCi0gVGhpcyBmaWxlIGRvY3VtZW50cyB0 aGUgdXNlciBpbnRlcmZhY2UgdG8gdGhlIEdOVSBIaXN0b3J5IGxpYnJhcnkuCi0gCi0tQ29weXJp Z2h0IChDKSAxOTg4LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rQ29weXJp Z2h0IChDKSAxOTg4LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gQXV0aG9y ZWQgYnkgQnJpYW4gRm94IGFuZCBDaGV0IFJhbWV5LgotIAotIFBlcm1pc3Npb24gaXMgZ3JhbnRl ZCB0byBtYWtlIGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGlzIG1hbnVhbAot QEAgLTQyNiw2ICs0MjYsMTAgQEAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGhpc3RvcnkgZW50cmll cy4gIAotIElmIG5vbi16ZXJvLCB0aW1lc3RhbXBzIGFyZSB3cml0dGVuIHRvIHRoZSBoaXN0b3J5 IGZpbGUsIHNvIHRoZXkgY2FuIGJlCi0gcHJlc2VydmVkIGJldHdlZW4gc2Vzc2lvbnMuICBUaGUg ZGVmYXVsdCB2YWx1ZSBpcyAwLCBtZWFuaW5nIHRoYXQKLSB0aW1lc3RhbXBzIGFyZSBub3Qgc2F2 ZWQuCi0rCi0rVGhlIGN1cnJlbnQgdGltZXN0YW1wIGZvcm1hdCB1c2VzIHRoZSB2YWx1ZSBvZiBA dmFye2hpc3RvcnlfY29tbWVudF9jaGFyfQotK3RvIGRlbGltaXQgdGltZXN0YW1wIGVudHJpZXMg aW4gdGhlIGhpc3RvcnkgZmlsZS4gIElmIHRoYXQgdmFyaWFibGUgZG9lcwotK25vdCBoYXZlIGEg dmFsdWUgKHRoZSBkZWZhdWx0KSwgdGltZXN0YW1wcyB3aWxsIG5vdCBiZSB3cml0dGVuLgotIEBl bmQgZGVmdHlwZXZhcgotIAotIEBkZWZ0eXBldmFyIGNoYXIgaGlzdG9yeV9leHBhbnNpb25fY2hh cgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL2hzdXNlci50ZXhpCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2RvYy9oc3Vz ZXIudGV4aQkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIu OTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL2hzdXNlci50ZXhpCTIwMTEtMDctMDMgMTA6NDE6MjEu MDAwMDAwMDAwICswMjAwCi1AQCAtMSw3ICsxLDcgQEAKLSBAaWdub3JlCi0gVGhpcyBmaWxlIGRv Y3VtZW50cyB0aGUgdXNlciBpbnRlcmZhY2UgdG8gdGhlIEdOVSBIaXN0b3J5IGxpYnJhcnkuCi0g Ci0tQ29weXJpZ2h0IChDKSAxOTg4LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rQ29weXJpZ2h0IChDKSAxOTg4LS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotIEF1dGhvcmVkIGJ5IEJyaWFuIEZveCBhbmQgQ2hldCBSYW1leS4KLSAKLSBQZXJtaXNzaW9u IGlzIGdyYW50ZWQgdG8gbWFrZSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhp cyBtYW51YWwKLUBAIC05Nyw3ICs5NywxMSBAQCB0byBjb250YWluIG5vIG1vcmUgdGhhbiBAZW52 eyRISVNURklMRVNJCi0gbGluZXMuICBJZiBAZW52e0hJU1RGSUxFU0laRX0gaXMgbm90IHNldCwg bm8gdHJ1bmNhdGlvbiBpcyBwZXJmb3JtZWQuCi0gCi0gSWYgdGhlIEBlbnZ7SElTVFRJTUVGT1JN QVR9IGlzIHNldCwgdGhlIHRpbWUgc3RhbXAgaW5mb3JtYXRpb24KLS1hc3NvY2lhdGVkIHdpdGgg ZWFjaCBoaXN0b3J5IGVudHJ5IGlzIHdyaXR0ZW4gdG8gdGhlIGhpc3RvcnkgZmlsZS4KLSthc3Nv Y2lhdGVkIHdpdGggZWFjaCBoaXN0b3J5IGVudHJ5IGlzIHdyaXR0ZW4gdG8gdGhlIGhpc3Rvcnkg ZmlsZSwKLSttYXJrZWQgd2l0aCB0aGUgaGlzdG9yeSBjb21tZW50IGNoYXJhY3Rlci4KLStXaGVu IHRoZSBoaXN0b3J5IGZpbGUgaXMgcmVhZCwgbGluZXMgYmVnaW5uaW5nIHdpdGggdGhlIGhpc3Rv cnkKLStjb21tZW50IGNoYXJhY3RlciBmb2xsb3dlZCBpbW1lZGlhdGVseSBieSBhIGRpZ2l0IGFy ZSBpbnRlcnByZXRlZAotK2FzIHRpbWVzdGFtcHMgZm9yIHRoZSBwcmV2aW91cyBoaXN0b3J5IGxp bmUuCi0gCi0gVGhlIGJ1aWx0aW4gY29tbWFuZCBAY29kZXtmY30gbWF5IGJlIHVzZWQgdG8gbGlz dCBvciBlZGl0IGFuZCByZS1leGVjdXRlCi0gYSBwb3J0aW9uIG9mIHRoZSBoaXN0b3J5IGxpc3Qu Ci1AQCAtMTMzLDcgKzEzNyw3IEBAIGhpc3RvcnkgbGlzdCBhbmQgaGlzdG9yeSBmaWxlLgotIEBp dGVtIGZjCi0gQGJ0aW5kZXggZmMKLSBAZXhhbXBsZQotLUBjb2Rle2ZjIFstZSBAdmFye2VuYW1l fV0gWy1ubHJdIFtAdmFye2ZpcnN0fV0gW0B2YXJ7bGFzdH1dfQotK0Bjb2Rle2ZjIFstZSBAdmFy e2VuYW1lfV0gWy1sbnJdIFtAdmFye2ZpcnN0fV0gW0B2YXJ7bGFzdH1dfQotIEBjb2Rle2ZjIC1z IFtAdmFye3BhdH09QHZhcntyZXB9XSBbQHZhcntjb21tYW5kfV19Ci0gQGVuZCBleGFtcGxlCi0g Ci1AQCAtMjc3LDcgKzI4MSwxMCBAQCB0aGVtLCBzbyB0aGF0IHRoZXkgYXJlIGF2YWlsYWJsZSBm b3Igc3ViCi0gVGhpcyBpcyBtb3N0IHVzZWZ1bCBpbiBjb25qdW5jdGlvbiB3aXRoIFJlYWRsaW5l LgotIAotIFRoZSBzaGVsbCBhbGxvd3MgY29udHJvbCBvZiB0aGUgdmFyaW91cyBjaGFyYWN0ZXJz IHVzZWQgYnkgdGhlCi0taGlzdG9yeSBleHBhbnNpb24gbWVjaGFuaXNtIHdpdGggdGhlIEBjb2Rl e2hpc3RjaGFyc30gdmFyaWFibGUuCi0raGlzdG9yeSBleHBhbnNpb24gbWVjaGFuaXNtIHdpdGgg dGhlIEBjb2Rle2hpc3RjaGFyc30gdmFyaWFibGUsCi0rYXMgZXhwbGFpbmVkIGFib3ZlIChAcHhy ZWZ7QmFzaCBWYXJpYWJsZXN9KS4gIFRoZSBzaGVsbCB1c2VzCi0rdGhlIGhpc3RvcnkgY29tbWVu dCBjaGFyYWN0ZXIgdG8gbWFyayBoaXN0b3J5IHRpbWVzdGFtcHMgd2hlbgotK3dyaXRpbmcgdGhl IGhpc3RvcnkgZmlsZS4KLSBAZW5kIGlmc2V0Ci0gCi0gQG1lbnUKLUBAIC0yOTIsNiArMjk5LDgg QEAgaGlzdG9yeSBleHBhbnNpb24gbWVjaGFuaXNtIHdpdGggdGhlIEBjbwotIAotIEFuIGV2ZW50 IGRlc2lnbmF0b3IgaXMgYSByZWZlcmVuY2UgdG8gYSBjb21tYW5kIGxpbmUgZW50cnkgaW4gdGhl Ci0gaGlzdG9yeSBsaXN0LgotK1VubGVzcyB0aGUgcmVmZXJlbmNlIGlzIGFic29sdXRlLCBldmVu dHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50Ci0rcG9zaXRpb24gaW4gdGhlIGhpc3Rvcnkg bGlzdC4KLSBAY2luZGV4IGhpc3RvcnkgZXZlbnRzCi0gCi0gQHRhYmxlIEBhc2lzCi1AQCAtMzE3 LDEwICszMjYsMTUgQEAgUmVmZXIgdG8gdGhlIGNvbW1hbmQgQHZhcntufSBsaW5lcyBiYWNrLgot IFJlZmVyIHRvIHRoZSBwcmV2aW91cyBjb21tYW5kLiAgVGhpcyBpcyBhIHN5bm9ueW0gZm9yIEBz YW1weyEtMX0uCi0gCi0gQGl0ZW0gQGNvZGV7IUB2YXJ7c3RyaW5nfX0KLS1SZWZlciB0byB0aGUg bW9zdCByZWNlbnQgY29tbWFuZCBzdGFydGluZyB3aXRoIEB2YXJ7c3RyaW5nfS4KLStSZWZlciB0 byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZAotK3ByZWNlZGluZyB0aGUgY3VycmVudCBwb3NpdGlv biBpbiB0aGUgaGlzdG9yeSBsaXN0Ci0rc3RhcnRpbmcgd2l0aCBAdmFye3N0cmluZ30uCi0gCi0g QGl0ZW0gQGNvZGV7IT9AdmFye3N0cmluZ31bP119Ci0tUmVmZXIgdG8gdGhlIG1vc3QgcmVjZW50 IGNvbW1hbmQgY29udGFpbmluZyBAdmFye3N0cmluZ30uICBUaGUgdHJhaWxpbmcKLStSZWZlciB0 byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZAotK3ByZWNlZGluZyB0aGUgY3VycmVudCBwb3NpdGlv biBpbiB0aGUgaGlzdG9yeSBsaXN0Ci0rY29udGFpbmluZyBAdmFye3N0cmluZ30uCi0rVGhlIHRy YWlsaW5nCi0gQHNhbXB7P30gbWF5IGJlIG9taXR0ZWQgaWYgdGhlIEB2YXJ7c3RyaW5nfSBpcyBm b2xsb3dlZCBpbW1lZGlhdGVseSBieQotIGEgbmV3bGluZS4KLSAKLUBAIC00MTIsNyArNDI2LDcg QEAgb2YgdGhlIGZvbGxvd2luZyBtb2RpZmllcnMsIGVhY2ggcHJlY2VkZQotIFJlbW92ZSBhIHRy YWlsaW5nIHBhdGhuYW1lIGNvbXBvbmVudCwgbGVhdmluZyBvbmx5IHRoZSBoZWFkLgotIAotIEBp dGVtIHQKLS1SZW1vdmUgYWxsIGxlYWRpbmcgIHBhdGhuYW1lICBjb21wb25lbnRzLCBsZWF2aW5n IHRoZSB0YWlsLgotK1JlbW92ZSBhbGwgbGVhZGluZyBwYXRobmFtZSBjb21wb25lbnRzLCBsZWF2 aW5nIHRoZSB0YWlsLgotIAotIEBpdGVtIHIKLSBSZW1vdmUgYSB0cmFpbGluZyBzdWZmaXggb2Yg dGhlIGZvcm0gQHNhbXB7LkB2YXJ7c3VmZml4fX0sIGxlYXZpbmcKLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL3JlYWRsaW5lL2RvYy9pbmMtaGlzdC50ZXhpbmZvCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2RvYy9pbmMtaGlzdC50ZXhpbmZvCTIw MTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi1AQCAtMSw0NTcgKzAsMCBAQAotLUBpZ25vcmUK LS1UaGlzIGZpbGUgZG9jdW1lbnRzIHRoZSB1c2VyIGludGVyZmFjZSB0byB0aGUgR05VIEhpc3Rv cnkgbGlicmFyeS4KLS0KLS1Db3B5cmlnaHQgKEMpIDE5ODgtMjAwMiBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLS1BdXRob3JlZCBieSBCcmlhbiBGb3ggYW5kIENoZXQgUmFtZXkuCi0t Ci0tUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIG1ha2UgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0g Y29waWVzIG9mIHRoaXMgbWFudWFsCi0tcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXJlIHByZXNlcnZlZCBvbgotLWFsbCBjb3BpZXMuCi0t Ci0tUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIHByb2Nlc3MgdGhpcyBmaWxlIHRocm91Z2ggVGV4 IGFuZCBwcmludCB0aGUKLS1yZXN1bHRzLCBwcm92aWRlZCB0aGUgcHJpbnRlZCBkb2N1bWVudCBj YXJyaWVzIGNvcHlpbmcgcGVybWlzc2lvbiBub3RpY2UKLS1pZGVudGljYWwgdG8gdGhpcyBvbmUg ZXhjZXB0IGZvciB0aGUgcmVtb3ZhbCBvZiB0aGlzIHBhcmFncmFwaCAodGhpcwotLXBhcmFncmFw aCBub3QgYmVpbmcgcmVsZXZhbnQgdG8gdGhlIHByaW50ZWQgbWFudWFsKS4KLS0KLS1QZXJtaXNz aW9uIGlzIGdyYW50ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSBtb2RpZmllZCB2ZXJzaW9ucyBv ZiB0aGlzCi0tbWFudWFsIHVuZGVyIHRoZSBjb25kaXRpb25zIGZvciB2ZXJiYXRpbSBjb3B5aW5n LCBwcm92aWRlZCBhbHNvIHRoYXQgdGhlCi0tR05VIENvcHlyaWdodCBzdGF0ZW1lbnQgaXMgYXZh aWxhYmxlIHRvIHRoZSBkaXN0cmlidXRlZSwgYW5kIHByb3ZpZGVkIHRoYXQKLS10aGUgZW50aXJl IHJlc3VsdGluZyBkZXJpdmVkIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9m IGEKLS1wZXJtaXNzaW9uIG5vdGljZSBpZGVudGljYWwgdG8gdGhpcyBvbmUuCi0tCi0tUGVybWlz c2lvbiBpcyBncmFudGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdHJhbnNsYXRpb25zIG9mIHRo aXMgbWFudWFsCi0taW50byBhbm90aGVyIGxhbmd1YWdlLCB1bmRlciB0aGUgYWJvdmUgY29uZGl0 aW9ucyBmb3IgbW9kaWZpZWQgdmVyc2lvbnMuCi0tQGVuZCBpZ25vcmUKLS0KLS1Abm9kZSBVc2lu ZyBIaXN0b3J5IEludGVyYWN0aXZlbHkKLS1AY2hhcHRlciBVc2luZyBIaXN0b3J5IEludGVyYWN0 aXZlbHkKLS0KLS1AYyBAaWZjbGVhciBCYXNoRmVhdHVyZXMKLS1AYyBAZGVmY29kZWluZGV4IGJ0 Ci0tQGMgQGVuZCBpZmNsZWFyCi0tCi0tQGlmc2V0IEJhc2hGZWF0dXJlcwotLVRoaXMgY2hhcHRl ciBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgQHNje2dudX0gSGlzdG9yeSBMaWJyYXJ5Ci0taW50 ZXJhY3RpdmVseSwgZnJvbSBhIHVzZXIncyBzdGFuZHBvaW50LgotLUl0IHNob3VsZCBiZSBjb25z aWRlcmVkIGEgdXNlcidzIGd1aWRlLgotLUZvciBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgQHNj e2dudX0gSGlzdG9yeSBMaWJyYXJ5IGluIG90aGVyIHByb2dyYW1zLAotLXNlZSB0aGUgQHNje2du dX0gUmVhZGxpbmUgTGlicmFyeSBNYW51YWwuCi0tQGVuZCBpZnNldAotLUBpZmNsZWFyIEJhc2hG ZWF0dXJlcwotLVRoaXMgY2hhcHRlciBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgQHNje2dudX0g SGlzdG9yeSBMaWJyYXJ5IGludGVyYWN0aXZlbHksCi0tZnJvbSBhIHVzZXIncyBzdGFuZHBvaW50 LiAgSXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSB1c2VyJ3MgZ3VpZGUuCi0tRm9yIGluZm9ybWF0 aW9uIG9uIHVzaW5nIHRoZSBAc2N7Z251fSBIaXN0b3J5IExpYnJhcnkgaW4gb3RoZXIgcHJvZ3Jh bXMsCi0tc2VlIHRoZSBAc2N7Z251fSBSZWFkbGluZSBMaWJyYXJ5IE1hbnVhbC4KLS1AZW5kIGlm Y2xlYXIKLS0KLS1AaWZzZXQgQmFzaEZlYXR1cmVzCi0tQG1lbnUKLS0qIEJhc2ggSGlzdG9yeSBG YWNpbGl0aWVzOjoJSG93IEJhc2ggbGV0cyB5b3UgbWFuaXB1bGF0ZSB5b3VyIGNvbW1hbmQKLS0J CQkJaGlzdG9yeS4KLS0qIEJhc2ggSGlzdG9yeSBCdWlsdGluczo6CVRoZSBCYXNoIGJ1aWx0aW4g Y29tbWFuZHMgdGhhdCBtYW5pcHVsYXRlCi0tCQkJCXRoZSBjb21tYW5kIGhpc3RvcnkuCi0tKiBI aXN0b3J5IEludGVyYWN0aW9uOjoJCVdoYXQgaXQgZmVlbHMgbGlrZSB1c2luZyBIaXN0b3J5IGFz IGEgdXNlci4KLS1AZW5kIG1lbnUKLS1AZW5kIGlmc2V0Ci0tQGlmY2xlYXIgQmFzaEZlYXR1cmVz Ci0tQG1lbnUKLS0qIEhpc3RvcnkgSW50ZXJhY3Rpb246OgkJV2hhdCBpdCBmZWVscyBsaWtlIHVz aW5nIEhpc3RvcnkgYXMgYSB1c2VyLgotLUBlbmQgbWVudQotLUBlbmQgaWZjbGVhcgotLQotLUBp ZnNldCBCYXNoRmVhdHVyZXMKLS1Abm9kZSBCYXNoIEhpc3RvcnkgRmFjaWxpdGllcwotLUBzZWN0 aW9uIEJhc2ggSGlzdG9yeSBGYWNpbGl0aWVzCi0tQGNpbmRleCBjb21tYW5kIGhpc3RvcnkKLS1A Y2luZGV4IGhpc3RvcnkgbGlzdAotLQotLVdoZW4gdGhlIEBvcHRpb257LW8gaGlzdG9yeX0gb3B0 aW9uIHRvIHRoZSBAY29kZXtzZXR9IGJ1aWx0aW4KLS1pcyBlbmFibGVkIChAcHhyZWZ7VGhlIFNl dCBCdWlsdGlufSksCi0tdGhlIHNoZWxsIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgQGRmbntjb21t YW5kIGhpc3Rvcnl9LAotLXRoZSBsaXN0IG9mIGNvbW1hbmRzIHByZXZpb3VzbHkgdHlwZWQuCi0t VGhlIHZhbHVlIG9mIHRoZSBAZW52e0hJU1RTSVpFfSBzaGVsbCB2YXJpYWJsZSBpcyB1c2VkIGFz IHRoZQotLW51bWJlciBvZiBjb21tYW5kcyB0byBzYXZlIGluIGEgaGlzdG9yeSBsaXN0LgotLVRo ZSB0ZXh0IG9mIHRoZSBsYXN0IEBlbnZ7JEhJU1RTSVpFfQotLWNvbW1hbmRzIChkZWZhdWx0IDUw MCkgaXMgc2F2ZWQuCi0tVGhlIHNoZWxsIHN0b3JlcyBlYWNoIGNvbW1hbmQgaW4gdGhlIGhpc3Rv cnkgbGlzdCBwcmlvciB0bwotLXBhcmFtZXRlciBhbmQgdmFyaWFibGUgZXhwYW5zaW9uCi0tYnV0 IGFmdGVyIGhpc3RvcnkgZXhwYW5zaW9uIGlzIHBlcmZvcm1lZCwgc3ViamVjdCB0byB0aGUKLS12 YWx1ZXMgb2YgdGhlIHNoZWxsIHZhcmlhYmxlcwotLUBlbnZ7SElTVElHTk9SRX0gYW5kIEBlbnZ7 SElTVENPTlRST0x9LgotLQotLVdoZW4gdGhlIHNoZWxsIHN0YXJ0cyB1cCwgdGhlIGhpc3Rvcnkg aXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUKLS1maWxlIG5hbWVkIGJ5IHRoZSBAZW52e0hJU1RGSUxF fSB2YXJpYWJsZSAoZGVmYXVsdCBAZmlsZXt+Ly5iYXNoX2hpc3Rvcnl9KS4KLS1UaGUgZmlsZSBu YW1lZCBieSB0aGUgdmFsdWUgb2YgQGVudntISVNURklMRX0gaXMgdHJ1bmNhdGVkLCBpZgotLW5l Y2Vzc2FyeSwgdG8gY29udGFpbiBubyBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBsaW5lcyBzcGVj aWZpZWQgYnkKLS10aGUgdmFsdWUgb2YgdGhlIEBlbnZ7SElTVEZJTEVTSVpFfSB2YXJpYWJsZS4K LS1XaGVuIGFuIGludGVyYWN0aXZlIHNoZWxsIGV4aXRzLCB0aGUgbGFzdAotLUBlbnZ7JEhJU1RT SVpFfSBsaW5lcyBhcmUgY29waWVkIGZyb20gdGhlIGhpc3RvcnkgbGlzdCB0byB0aGUgZmlsZQot LW5hbWVkIGJ5IEBlbnZ7JEhJU1RGSUxFfS4KLS1JZiB0aGUgQGNvZGV7aGlzdGFwcGVuZH0gc2hl bGwgb3B0aW9uIGlzIHNldCAoQHB4cmVme0Jhc2ggQnVpbHRpbnN9KSwKLS10aGUgbGluZXMgYXJl IGFwcGVuZGVkIHRvIHRoZSBoaXN0b3J5IGZpbGUsCi0tb3RoZXJ3aXNlIHRoZSBoaXN0b3J5IGZp bGUgaXMgb3ZlcndyaXR0ZW4uCi0tSWYgQGVudntISVNURklMRX0KLS1pcyB1bnNldCwgb3IgaWYg dGhlIGhpc3RvcnkgZmlsZSBpcyB1bndyaXRhYmxlLCB0aGUgaGlzdG9yeSBpcwotLW5vdCBzYXZl ZC4gIEFmdGVyIHNhdmluZyB0aGUgaGlzdG9yeSwgdGhlIGhpc3RvcnkgZmlsZSBpcyB0cnVuY2F0 ZWQKLS10byBjb250YWluIG5vIG1vcmUgdGhhbiBAZW52eyRISVNURklMRVNJWkV9Ci0tbGluZXMu ICBJZiBAZW52e0hJU1RGSUxFU0laRX0gaXMgbm90IHNldCwgbm8gdHJ1bmNhdGlvbiBpcyBwZXJm b3JtZWQuCi0tCi0tSWYgdGhlIEBlbnZ7SElTVFRJTUVGT1JNQVR9IGlzIHNldCwgdGhlIHRpbWUg c3RhbXAgaW5mb3JtYXRpb24KLS1hc3NvY2lhdGVkIHdpdGggZWFjaCBoaXN0b3J5IGVudHJ5IGlz IHdyaXR0ZW4gdG8gdGhlIGhpc3RvcnkgZmlsZS4KLS0KLS1UaGUgYnVpbHRpbiBjb21tYW5kIEBj b2Rle2ZjfSBtYXkgYmUgdXNlZCB0byBsaXN0IG9yIGVkaXQgYW5kIHJlLWV4ZWN1dGUKLS1hIHBv cnRpb24gb2YgdGhlIGhpc3RvcnkgbGlzdC4KLS1UaGUgQGNvZGV7aGlzdG9yeX0gYnVpbHRpbiBt YXkgYmUgdXNlZCB0byBkaXNwbGF5IG9yIG1vZGlmeSB0aGUgaGlzdG9yeQotLWxpc3QgYW5kIG1h bmlwdWxhdGUgdGhlIGhpc3RvcnkgZmlsZS4KLS1XaGVuIHVzaW5nIGNvbW1hbmQtbGluZSBlZGl0 aW5nLCBzZWFyY2ggY29tbWFuZHMKLS1hcmUgYXZhaWxhYmxlIGluIGVhY2ggZWRpdGluZyBtb2Rl IHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlCi0taGlzdG9yeSBsaXN0IChAcHhyZWZ7Q29tbWFu ZHMgRm9yIEhpc3Rvcnl9KS4KLS0KLS1UaGUgc2hlbGwgYWxsb3dzIGNvbnRyb2wgb3ZlciB3aGlj aCBjb21tYW5kcyBhcmUgc2F2ZWQgb24gdGhlIGhpc3RvcnkKLS1saXN0LiAgVGhlIEBlbnZ7SElT VENPTlRST0x9IGFuZCBAZW52e0hJU1RJR05PUkV9Ci0tdmFyaWFibGVzIG1heSBiZSBzZXQgdG8g Y2F1c2UgdGhlIHNoZWxsIHRvIHNhdmUgb25seSBhIHN1YnNldCBvZiB0aGUKLS1jb21tYW5kcyBl bnRlcmVkLgotLVRoZSBAY29kZXtjbWRoaXN0fQotLXNoZWxsIG9wdGlvbiwgaWYgZW5hYmxlZCwg Y2F1c2VzIHRoZSBzaGVsbCB0byBhdHRlbXB0IHRvIHNhdmUgZWFjaAotLWxpbmUgb2YgYSBtdWx0 aS1saW5lIGNvbW1hbmQgaW4gdGhlIHNhbWUgaGlzdG9yeSBlbnRyeSwgYWRkaW5nCi0tc2VtaWNv bG9ucyB3aGVyZSBuZWNlc3NhcnkgdG8gcHJlc2VydmUgc3ludGFjdGljIGNvcnJlY3RuZXNzLgot LVRoZSBAY29kZXtsaXRoaXN0fQotLXNoZWxsIG9wdGlvbiBjYXVzZXMgdGhlIHNoZWxsIHRvIHNh dmUgdGhlIGNvbW1hbmQgd2l0aCBlbWJlZGRlZCBuZXdsaW5lcwotLWluc3RlYWQgb2Ygc2VtaWNv bG9ucy4KLS1UaGUgQGNvZGV7c2hvcHR9IGJ1aWx0aW4gaXMgdXNlZCB0byBzZXQgdGhlc2Ugb3B0 aW9ucy4KLS1AeHJlZntCYXNoIEJ1aWx0aW5zfSwgZm9yIGEgZGVzY3JpcHRpb24gb2YgQGNvZGV7 c2hvcHR9LgotLQotLUBub2RlIEJhc2ggSGlzdG9yeSBCdWlsdGlucwotLUBzZWN0aW9uIEJhc2gg SGlzdG9yeSBCdWlsdGlucwotLUBjaW5kZXggaGlzdG9yeSBidWlsdGlucwotLQotLUJhc2ggcHJv dmlkZXMgdHdvIGJ1aWx0aW4gY29tbWFuZHMgd2hpY2ggbWFuaXB1bGF0ZSB0aGUKLS1oaXN0b3J5 IGxpc3QgYW5kIGhpc3RvcnkgZmlsZS4KLS0KLS1AdGFibGUgQGNvZGUKLS0KLS1AaXRlbSBmYwot LUBidGluZGV4IGZjCi0tQGV4YW1wbGUKLS1AY29kZXtmYyBbLWUgQHZhcntlbmFtZX1dIFstbmxy XSBbQHZhcntmaXJzdH1dIFtAdmFye2xhc3R9XX0KLS1AY29kZXtmYyAtcyBbQHZhcntwYXR9PUB2 YXJ7cmVwfV0gW0B2YXJ7Y29tbWFuZH1dfQotLUBlbmQgZXhhbXBsZQotLQotLUZpeCBDb21tYW5k LiAgSW4gdGhlIGZpcnN0IGZvcm0sIGEgcmFuZ2Ugb2YgY29tbWFuZHMgZnJvbSBAdmFye2ZpcnN0 fSB0bwotLUB2YXJ7bGFzdH0gaXMgc2VsZWN0ZWQgZnJvbSB0aGUgaGlzdG9yeSBsaXN0LiAgQm90 aCBAdmFye2ZpcnN0fSBhbmQKLS1AdmFye2xhc3R9IG1heSBiZSBzcGVjaWZpZWQgYXMgYSBzdHJp bmcgKHRvIGxvY2F0ZSB0aGUgbW9zdCByZWNlbnQKLS1jb21tYW5kIGJlZ2lubmluZyB3aXRoIHRo YXQgc3RyaW5nKSBvciBhcyBhIG51bWJlciAoYW4gaW5kZXggaW50byB0aGUKLS1oaXN0b3J5IGxp c3QsIHdoZXJlIGEgbmVnYXRpdmUgbnVtYmVyIGlzIHVzZWQgYXMgYW4gb2Zmc2V0IGZyb20gdGhl Ci0tY3VycmVudCBjb21tYW5kIG51bWJlcikuICBJZiBAdmFye2xhc3R9IGlzIG5vdCBzcGVjaWZp ZWQgaXQgaXMgc2V0IHRvCi0tQHZhcntmaXJzdH0uICBJZiBAdmFye2ZpcnN0fSBpcyBub3Qgc3Bl Y2lmaWVkIGl0IGlzIHNldCB0byB0aGUgcHJldmlvdXMKLS1jb21tYW5kIGZvciBlZGl0aW5nIGFu ZCBAbWludXN7fTE2IGZvciBsaXN0aW5nLiAgSWYgdGhlIEBvcHRpb257LWx9IGZsYWcgaXMKLS1n aXZlbiwgdGhlIGNvbW1hbmRzIGFyZSBsaXN0ZWQgb24gc3RhbmRhcmQgb3V0cHV0LiAgVGhlIEBv cHRpb257LW59IGZsYWcKLS1zdXBwcmVzc2VzIHRoZSBjb21tYW5kIG51bWJlcnMgd2hlbiBsaXN0 aW5nLiAgVGhlIEBvcHRpb257LXJ9IGZsYWcKLS1yZXZlcnNlcyB0aGUgb3JkZXIgb2YgdGhlIGxp c3RpbmcuICBPdGhlcndpc2UsIHRoZSBlZGl0b3IgZ2l2ZW4gYnkKLS1AdmFye2VuYW1lfSBpcyBp bnZva2VkIG9uIGEgZmlsZSBjb250YWluaW5nIHRob3NlIGNvbW1hbmRzLiAgSWYKLS1AdmFye2Vu YW1lfSBpcyBub3QgZ2l2ZW4sIHRoZSB2YWx1ZSBvZiB0aGUgZm9sbG93aW5nIHZhcmlhYmxlIGV4 cGFuc2lvbgotLWlzIHVzZWQ6IEBjb2RleyRAe0ZDRURJVDotJEB7RURJVE9SOi12aUB9QH19LiAg VGhpcyBzYXlzIHRvIHVzZSB0aGUKLS12YWx1ZSBvZiB0aGUgQGVudntGQ0VESVR9IHZhcmlhYmxl IGlmIHNldCwgb3IgdGhlIHZhbHVlIG9mIHRoZQotLUBlbnZ7RURJVE9SfSB2YXJpYWJsZSBpZiB0 aGF0IGlzIHNldCwgb3IgQGNvZGV7dml9IGlmIG5laXRoZXIgaXMgc2V0LgotLVdoZW4gZWRpdGlu ZyBpcyBjb21wbGV0ZSwgdGhlIGVkaXRlZCBjb21tYW5kcyBhcmUgZWNob2VkIGFuZCBleGVjdXRl ZC4KLS0KLS1JbiB0aGUgc2Vjb25kIGZvcm0sIEB2YXJ7Y29tbWFuZH0gaXMgcmUtZXhlY3V0ZWQg YWZ0ZXIgZWFjaCBpbnN0YW5jZQotLW9mIEB2YXJ7cGF0fSBpbiB0aGUgc2VsZWN0ZWQgY29tbWFu ZCBpcyByZXBsYWNlZCBieSBAdmFye3JlcH0uCi0tCi0tQSB1c2VmdWwgYWxpYXMgdG8gdXNlIHdp dGggdGhlIEBjb2Rle2ZjfSBjb21tYW5kIGlzIEBjb2Rle3I9J2ZjIC1zJ30sIHNvCi0tdGhhdCB0 eXBpbmcgQHNhbXB7ciBjY30gcnVucyB0aGUgbGFzdCBjb21tYW5kIGJlZ2lubmluZyB3aXRoIEBj b2Rle2NjfQotLWFuZCB0eXBpbmcgQHNhbXB7cn0gcmUtZXhlY3V0ZXMgdGhlIGxhc3QgY29tbWFu ZCAoQHB4cmVme0FsaWFzZXN9KS4KLS0KLS1AaXRlbSBoaXN0b3J5Ci0tQGJ0aW5kZXggaGlzdG9y eQotLUBleGFtcGxlCi0taGlzdG9yeSBbQHZhcntufV0KLS1oaXN0b3J5IC1jCi0taGlzdG9yeSAt ZCBAdmFye29mZnNldH0KLS1oaXN0b3J5IFstYW5yd10gW0B2YXJ7ZmlsZW5hbWV9XQotLWhpc3Rv cnkgLXBzIEB2YXJ7YXJnfQotLUBlbmQgZXhhbXBsZQotLQotLVdpdGggbm8gb3B0aW9ucywgZGlz cGxheSB0aGUgaGlzdG9yeSBsaXN0IHdpdGggbGluZSBudW1iZXJzLgotLUxpbmVzIHByZWZpeGVk IHdpdGggYSBAc2FtcHsqfSBoYXZlIGJlZW4gbW9kaWZpZWQuCi0tQW4gYXJndW1lbnQgb2YgQHZh cntufSBsaXN0cyBvbmx5IHRoZSBsYXN0IEB2YXJ7bn0gbGluZXMuCi0tSWYgdGhlIHNoZWxsIHZh cmlhYmxlIEBlbnZ7SElTVFRJTUVGT1JNQVR9IGlzIHNldCBhbmQgbm90IG51bGwsCi0taXQgaXMg dXNlZCBhcyBhIGZvcm1hdCBzdHJpbmcgZm9yIEB2YXJ7c3RyZnRpbWV9IHRvIGRpc3BsYXkKLS10 aGUgdGltZSBzdGFtcCBhc3NvY2lhdGVkIHdpdGggZWFjaCBkaXNwbGF5ZWQgaGlzdG9yeSBlbnRy eS4KLS1ObyBpbnRlcnZlbmluZyBibGFuayBpcyBwcmludGVkIGJldHdlZW4gdGhlIGZvcm1hdHRl ZCB0aW1lIHN0YW1wCi0tYW5kIHRoZSBoaXN0b3J5IGxpbmUuCi0tCi0tT3B0aW9ucywgaWYgc3Vw cGxpZWQsIGhhdmUgdGhlIGZvbGxvd2luZyBtZWFuaW5nczoKLS0KLS1AdGFibGUgQGNvZGUKLS1A aXRlbSAtYwotLUNsZWFyIHRoZSBoaXN0b3J5IGxpc3QuICBUaGlzIG1heSBiZSBjb21iaW5lZAot LXdpdGggdGhlIG90aGVyIG9wdGlvbnMgdG8gcmVwbGFjZSB0aGUgaGlzdG9yeSBsaXN0IGNvbXBs ZXRlbHkuCi0tCi0tQGl0ZW0gLWQgQHZhcntvZmZzZXR9Ci0tRGVsZXRlIHRoZSBoaXN0b3J5IGVu dHJ5IGF0IHBvc2l0aW9uIEB2YXJ7b2Zmc2V0fS4KLS1AdmFye29mZnNldH0gc2hvdWxkIGJlIHNw ZWNpZmllZCBhcyBpdCBhcHBlYXJzIHdoZW4gdGhlIGhpc3RvcnkgaXMKLS1kaXNwbGF5ZWQuCi0t Ci0tQGl0ZW0gLWEKLS1BcHBlbmQgdGhlIG5ldwotLWhpc3RvcnkgbGluZXMgKGhpc3RvcnkgbGlu ZXMgZW50ZXJlZCBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHRoZQotLWN1cnJlbnQgQmFzaCBzZXNz aW9uKSB0byB0aGUgaGlzdG9yeSBmaWxlLgotLQotLUBpdGVtIC1uCi0tQXBwZW5kIHRoZSBoaXN0 b3J5IGxpbmVzIG5vdCBhbHJlYWR5IHJlYWQgZnJvbSB0aGUgaGlzdG9yeSBmaWxlCi0tdG8gdGhl IGN1cnJlbnQgaGlzdG9yeSBsaXN0LiAgVGhlc2UgYXJlIGxpbmVzIGFwcGVuZGVkIHRvIHRoZSBo aXN0b3J5Ci0tZmlsZSBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IEJhc2ggc2Vz c2lvbi4KLS0KLS1AaXRlbSAtcgotLVJlYWQgdGhlIGN1cnJlbnQgaGlzdG9yeSBmaWxlIGFuZCBh cHBlbmQgaXRzIGNvbnRlbnRzIHRvCi0tdGhlIGhpc3RvcnkgbGlzdC4KLS0KLS1AaXRlbSAtdwot LVdyaXRlIG91dCB0aGUgY3VycmVudCBoaXN0b3J5IHRvIHRoZSBoaXN0b3J5IGZpbGUuCi0tCi0t QGl0ZW0gLXAKLS1QZXJmb3JtIGhpc3Rvcnkgc3Vic3RpdHV0aW9uIG9uIHRoZSBAdmFye2FyZ31z IGFuZCBkaXNwbGF5IHRoZSByZXN1bHQKLS1vbiB0aGUgc3RhbmRhcmQgb3V0cHV0LCB3aXRob3V0 IHN0b3JpbmcgdGhlIHJlc3VsdHMgaW4gdGhlIGhpc3RvcnkgbGlzdC4KLS0KLS1AaXRlbSAtcwot LVRoZSBAdmFye2FyZ31zIGFyZSBhZGRlZCB0byB0aGUgZW5kIG9mCi0tdGhlIGhpc3RvcnkgbGlz dCBhcyBhIHNpbmdsZSBlbnRyeS4KLS0KLS1AZW5kIHRhYmxlCi0tCi0tV2hlbiBhbnkgb2YgdGhl IEBvcHRpb257LXd9LCBAb3B0aW9uey1yfSwgQG9wdGlvbnstYX0sIG9yIEBvcHRpb257LW59IG9w dGlvbnMgaXMKLS11c2VkLCBpZiBAdmFye2ZpbGVuYW1lfQotLWlzIGdpdmVuLCB0aGVuIGl0IGlz IHVzZWQgYXMgdGhlIGhpc3RvcnkgZmlsZS4gIElmIG5vdCwgdGhlbgotLXRoZSB2YWx1ZSBvZiB0 aGUgQGVudntISVNURklMRX0gdmFyaWFibGUgaXMgdXNlZC4KLS0KLS1AZW5kIHRhYmxlCi0tQGVu ZCBpZnNldAotLQotLUBub2RlIEhpc3RvcnkgSW50ZXJhY3Rpb24KLS1Ac2VjdGlvbiBIaXN0b3J5 IEV4cGFuc2lvbgotLUBjaW5kZXggaGlzdG9yeSBleHBhbnNpb24KLS0KLS1UaGUgSGlzdG9yeSBs aWJyYXJ5IHByb3ZpZGVzIGEgaGlzdG9yeSBleHBhbnNpb24gZmVhdHVyZSB0aGF0IGlzIHNpbWls YXIKLS10byB0aGUgaGlzdG9yeSBleHBhbnNpb24gcHJvdmlkZWQgYnkgQGNvZGV7Y3NofS4gIFRo aXMgc2VjdGlvbgotLWRlc2NyaWJlcyB0aGUgc3ludGF4IHVzZWQgdG8gbWFuaXB1bGF0ZSB0aGUg aGlzdG9yeSBpbmZvcm1hdGlvbi4KLS0KLS1IaXN0b3J5IGV4cGFuc2lvbnMgaW50cm9kdWNlIHdv cmRzIGZyb20gdGhlIGhpc3RvcnkgbGlzdCBpbnRvCi0tdGhlIGlucHV0IHN0cmVhbSwgbWFraW5n IGl0IGVhc3kgdG8gcmVwZWF0IGNvbW1hbmRzLCBpbnNlcnQgdGhlCi0tYXJndW1lbnRzIHRvIGEg cHJldmlvdXMgY29tbWFuZCBpbnRvIHRoZSBjdXJyZW50IGlucHV0IGxpbmUsIG9yCi0tZml4IGVy cm9ycyBpbiBwcmV2aW91cyBjb21tYW5kcyBxdWlja2x5LgotLQotLUhpc3RvcnkgZXhwYW5zaW9u IHRha2VzIHBsYWNlIGluIHR3byBwYXJ0cy4gIFRoZSBmaXJzdCBpcyB0byBkZXRlcm1pbmUKLS13 aGljaCBsaW5lIGZyb20gdGhlIGhpc3RvcnkgbGlzdCBzaG91bGQgYmUgdXNlZCBkdXJpbmcgc3Vi c3RpdHV0aW9uLgotLVRoZSBzZWNvbmQgaXMgdG8gc2VsZWN0IHBvcnRpb25zIG9mIHRoYXQgbGlu ZSBmb3IgaW5jbHVzaW9uIGludG8gdGhlCi0tY3VycmVudCBvbmUuICBUaGUgbGluZSBzZWxlY3Rl ZCBmcm9tIHRoZSBoaXN0b3J5IGlzIGNhbGxlZCB0aGUKLS1AZGZue2V2ZW50fSwgYW5kIHRoZSBw b3J0aW9ucyBvZiB0aGF0IGxpbmUgdGhhdCBhcmUgYWN0ZWQgdXBvbiBhcmUKLS1jYWxsZWQgQGRm bnt3b3Jkc30uICBWYXJpb3VzIEBkZm57bW9kaWZpZXJzfSBhcmUgYXZhaWxhYmxlIHRvIG1hbmlw dWxhdGUKLS10aGUgc2VsZWN0ZWQgd29yZHMuICBUaGUgbGluZSBpcyBicm9rZW4gaW50byB3b3Jk cyBpbiB0aGUgc2FtZSBmYXNoaW9uCi0tdGhhdCBCYXNoIGRvZXMsIHNvIHRoYXQgc2V2ZXJhbCB3 b3JkcwotLXN1cnJvdW5kZWQgYnkgcXVvdGVzIGFyZSBjb25zaWRlcmVkIG9uZSB3b3JkLgotLUhp c3RvcnkgZXhwYW5zaW9ucyBhcmUgaW50cm9kdWNlZCBieSB0aGUgYXBwZWFyYW5jZSBvZiB0aGUK LS1oaXN0b3J5IGV4cGFuc2lvbiBjaGFyYWN0ZXIsIHdoaWNoIGlzIEBzYW1weyF9IGJ5IGRlZmF1 bHQuCi0tQGlmc2V0IEJhc2hGZWF0dXJlcwotLU9ubHkgQHNhbXB7XH0gYW5kIEBzYW1weyd9IG1h eSBiZSB1c2VkIHRvIGVzY2FwZSB0aGUgaGlzdG9yeSBleHBhbnNpb24KLS1jaGFyYWN0ZXIuCi0t QGVuZCBpZnNldAotLQotLUBpZnNldCBCYXNoRmVhdHVyZXMKLS1TZXZlcmFsIHNoZWxsIG9wdGlv bnMgc2V0dGFibGUgd2l0aCB0aGUgQGNvZGV7c2hvcHR9Ci0tYnVpbHRpbiAoQHB4cmVme0Jhc2gg QnVpbHRpbnN9KSBtYXkgYmUgdXNlZCB0byB0YWlsb3IKLS10aGUgYmVoYXZpb3Igb2YgaGlzdG9y eSBleHBhbnNpb24uICBJZiB0aGUKLS1AY29kZXtoaXN0dmVyaWZ5fSBzaGVsbCBvcHRpb24gaXMg ZW5hYmxlZCwgYW5kIFJlYWRsaW5lCi0taXMgYmVpbmcgdXNlZCwgaGlzdG9yeSBzdWJzdGl0dXRp b25zIGFyZSBub3QgaW1tZWRpYXRlbHkgcGFzc2VkIHRvCi0tdGhlIHNoZWxsIHBhcnNlci4KLS1J bnN0ZWFkLCB0aGUgZXhwYW5kZWQgbGluZSBpcyByZWxvYWRlZCBpbnRvIHRoZSBSZWFkbGluZQot LWVkaXRpbmcgYnVmZmVyIGZvciBmdXJ0aGVyIG1vZGlmaWNhdGlvbi4KLS1JZiBSZWFkbGluZSBp cyBiZWluZyB1c2VkLCBhbmQgdGhlIEBjb2Rle2hpc3RyZWVkaXR9Ci0tc2hlbGwgb3B0aW9uIGlz IGVuYWJsZWQsIGEgZmFpbGVkIGhpc3RvcnkgZXhwYW5zaW9uIHdpbGwgYmUKLS1yZWxvYWRlZCBp bnRvIHRoZSBSZWFkbGluZSBlZGl0aW5nIGJ1ZmZlciBmb3IgY29ycmVjdGlvbi4KLS1UaGUgQG9w dGlvbnstcH0gb3B0aW9uIHRvIHRoZSBAY29kZXtoaXN0b3J5fSBidWlsdGluIGNvbW1hbmQKLS1t YXkgYmUgdXNlZCB0byBzZWUgd2hhdCBhIGhpc3RvcnkgZXhwYW5zaW9uIHdpbGwgZG8gYmVmb3Jl IHVzaW5nIGl0LgotLVRoZSBAb3B0aW9uey1zfSBvcHRpb24gdG8gdGhlIEBjb2Rle2hpc3Rvcnl9 IGJ1aWx0aW4gbWF5IGJlIHVzZWQgdG8KLS1hZGQgY29tbWFuZHMgdG8gdGhlIGVuZCBvZiB0aGUg aGlzdG9yeSBsaXN0IHdpdGhvdXQgYWN0dWFsbHkgZXhlY3V0aW5nCi0tdGhlbSwgc28gdGhhdCB0 aGV5IGFyZSBhdmFpbGFibGUgZm9yIHN1YnNlcXVlbnQgcmVjYWxsLgotLVRoaXMgaXMgbW9zdCB1 c2VmdWwgaW4gY29uanVuY3Rpb24gd2l0aCBSZWFkbGluZS4KLS0KLS1UaGUgc2hlbGwgYWxsb3dz IGNvbnRyb2wgb2YgdGhlIHZhcmlvdXMgY2hhcmFjdGVycyB1c2VkIGJ5IHRoZQotLWhpc3Rvcnkg ZXhwYW5zaW9uIG1lY2hhbmlzbSB3aXRoIHRoZSBAY29kZXtoaXN0Y2hhcnN9IHZhcmlhYmxlLgot LUBlbmQgaWZzZXQKLS0KLS1AbWVudQotLSogRXZlbnQgRGVzaWduYXRvcnM6OglIb3cgdG8gc3Bl Y2lmeSB3aGljaCBoaXN0b3J5IGxpbmUgdG8gdXNlLgotLSogV29yZCBEZXNpZ25hdG9yczo6CVNw ZWNpZnlpbmcgd2hpY2ggd29yZHMgYXJlIG9mIGludGVyZXN0LgotLSogTW9kaWZpZXJzOjoJCU1v ZGlmeWluZyB0aGUgcmVzdWx0cyBvZiBzdWJzdGl0dXRpb24uCi0tQGVuZCBtZW51Ci0tCi0tQG5v ZGUgRXZlbnQgRGVzaWduYXRvcnMKLS1Ac3Vic2VjdGlvbiBFdmVudCBEZXNpZ25hdG9ycwotLUBj aW5kZXggZXZlbnQgZGVzaWduYXRvcnMKLS0KLS1BbiBldmVudCBkZXNpZ25hdG9yIGlzIGEgcmVm ZXJlbmNlIHRvIGEgY29tbWFuZCBsaW5lIGVudHJ5IGluIHRoZQotLWhpc3RvcnkgbGlzdC4KLS1A Y2luZGV4IGhpc3RvcnkgZXZlbnRzCi0tCi0tQHRhYmxlIEBhc2lzCi0tCi0tQGl0ZW0gQGNvZGV7 IX0KLS1AaWZzZXQgQmFzaEZlYXR1cmVzCi0tU3RhcnQgYSBoaXN0b3J5IHN1YnN0aXR1dGlvbiwg ZXhjZXB0IHdoZW4gZm9sbG93ZWQgYnkgYSBzcGFjZSwgdGFiLAotLXRoZSBlbmQgb2YgdGhlIGxp bmUsIEBzYW1wez19IG9yIEBzYW1weyh9ICh3aGVuIHRoZQotLUBjb2Rle2V4dGdsb2J9IHNoZWxs IG9wdGlvbiBpcyBlbmFibGVkIHVzaW5nIHRoZSBAY29kZXtzaG9wdH0gYnVpbHRpbikuCi0tQGVu ZCBpZnNldAotLUBpZmNsZWFyIEJhc2hGZWF0dXJlcwotLVN0YXJ0IGEgaGlzdG9yeSBzdWJzdGl0 dXRpb24sIGV4Y2VwdCB3aGVuIGZvbGxvd2VkIGJ5IGEgc3BhY2UsIHRhYiwKLS10aGUgZW5kIG9m IHRoZSBsaW5lLCBvciBAc2FtcHs9fS4KLS1AZW5kIGlmY2xlYXIKLS0KLS1AaXRlbSBAY29kZXsh QHZhcntufX0KLS1SZWZlciB0byBjb21tYW5kIGxpbmUgQHZhcntufS4KLS0KLS1AaXRlbSBAY29k ZXshLUB2YXJ7bn19Ci0tUmVmZXIgdG8gdGhlIGNvbW1hbmQgQHZhcntufSBsaW5lcyBiYWNrLgot LQotLUBpdGVtIEBjb2RleyEhfQotLVJlZmVyIHRvIHRoZSBwcmV2aW91cyBjb21tYW5kLiAgVGhp cyBpcyBhIHN5bm9ueW0gZm9yIEBzYW1weyEtMX0uCi0tCi0tQGl0ZW0gQGNvZGV7IUB2YXJ7c3Ry aW5nfX0KLS1SZWZlciB0byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZCBzdGFydGluZyB3aXRoIEB2 YXJ7c3RyaW5nfS4KLS0KLS1AaXRlbSBAY29kZXshP0B2YXJ7c3RyaW5nfVs/XX0KLS1SZWZlciB0 byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZCBjb250YWluaW5nIEB2YXJ7c3RyaW5nfS4gIFRoZSB0 cmFpbGluZwotLUBzYW1wez99IG1heSBiZSBvbWl0dGVkIGlmIHRoZSBAdmFye3N0cmluZ30gaXMg Zm9sbG93ZWQgaW1tZWRpYXRlbHkgYnkKLS1hIG5ld2xpbmUuCi0tCi0tQGl0ZW0gQGNvZGV7XkB2 YXJ7c3RyaW5nMX1eQHZhcntzdHJpbmcyfV59Ci0tUXVpY2sgU3Vic3RpdHV0aW9uLiAgUmVwZWF0 IHRoZSBsYXN0IGNvbW1hbmQsIHJlcGxhY2luZyBAdmFye3N0cmluZzF9Ci0td2l0aCBAdmFye3N0 cmluZzJ9LiAgRXF1aXZhbGVudCB0bwotLUBjb2RleyEhOnMvQHZhcntzdHJpbmcxfS9AdmFye3N0 cmluZzJ9L30uCi0tCi0tQGl0ZW0gQGNvZGV7ISN9Ci0tVGhlIGVudGlyZSBjb21tYW5kIGxpbmUg dHlwZWQgc28gZmFyLgotLQotLUBlbmQgdGFibGUKLS0KLS1Abm9kZSBXb3JkIERlc2lnbmF0b3Jz Ci0tQHN1YnNlY3Rpb24gV29yZCBEZXNpZ25hdG9ycwotLQotLVdvcmQgZGVzaWduYXRvcnMgYXJl IHVzZWQgdG8gc2VsZWN0IGRlc2lyZWQgd29yZHMgZnJvbSB0aGUgZXZlbnQuCi0tQSBAc2FtcHs6 fSBzZXBhcmF0ZXMgdGhlIGV2ZW50IHNwZWNpZmljYXRpb24gZnJvbSB0aGUgd29yZCBkZXNpZ25h dG9yLiAgSXQKLS1tYXkgYmUgb21pdHRlZCBpZiB0aGUgd29yZCBkZXNpZ25hdG9yIGJlZ2lucyB3 aXRoIGEgQHNhbXB7Xn0sIEBzYW1weyR9LAotLUBzYW1weyp9LCBAc2FtcHstfSwgb3IgQHNhbXB7 JX0uICBXb3JkcyBhcmUgbnVtYmVyZWQgZnJvbSB0aGUgYmVnaW5uaW5nCi0tb2YgdGhlIGxpbmUs IHdpdGggdGhlIGZpcnN0IHdvcmQgYmVpbmcgZGVub3RlZCBieSAwICh6ZXJvKS4gIFdvcmRzIGFy ZQotLWluc2VydGVkIGludG8gdGhlIGN1cnJlbnQgbGluZSBzZXBhcmF0ZWQgYnkgc2luZ2xlIHNw YWNlcy4KLS0KLS1AbmVlZCAwLjc1Ci0tRm9yIGV4YW1wbGUsCi0tCi0tQHRhYmxlIEBjb2RlCi0t QGl0ZW0gISEKLS1kZXNpZ25hdGVzIHRoZSBwcmVjZWRpbmcgY29tbWFuZC4gIFdoZW4geW91IHR5 cGUgdGhpcywgdGhlIHByZWNlZGluZwotLWNvbW1hbmQgaXMgcmVwZWF0ZWQgaW4gdG90by4KLS0K LS1AaXRlbSAhITokCi0tZGVzaWduYXRlcyB0aGUgbGFzdCBhcmd1bWVudCBvZiB0aGUgcHJlY2Vk aW5nIGNvbW1hbmQuICBUaGlzIG1heSBiZQotLXNob3J0ZW5lZCB0byBAY29kZXshJH0uCi0tCi0t QGl0ZW0gIWZpOjIKLS1kZXNpZ25hdGVzIHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgdGhlIG1vc3Qg cmVjZW50IGNvbW1hbmQgc3RhcnRpbmcgd2l0aAotLXRoZSBsZXR0ZXJzIEBjb2Rle2ZpfS4KLS1A ZW5kIHRhYmxlCi0tCi0tQG5lZWQgMC43NQotLUhlcmUgYXJlIHRoZSB3b3JkIGRlc2lnbmF0b3Jz OgotLSAKLS1AdGFibGUgQGNvZGUKLS0KLS1AaXRlbSAwICh6ZXJvKQotLVRoZSBAY29kZXswfXRo IHdvcmQuICBGb3IgbWFueSBhcHBsaWNhdGlvbnMsIHRoaXMgaXMgdGhlIGNvbW1hbmQgd29yZC4K LS0KLS1AaXRlbSBAdmFye259Ci0tVGhlIEB2YXJ7bn10aCB3b3JkLgotLQotLUBpdGVtIF4KLS1U aGUgZmlyc3QgYXJndW1lbnQ7IHRoYXQgaXMsIHdvcmQgMS4KLS0KLS1AaXRlbSAkCi0tVGhlIGxh c3QgYXJndW1lbnQuCi0tCi0tQGl0ZW0gJQotLVRoZSB3b3JkIG1hdGNoZWQgYnkgdGhlIG1vc3Qg cmVjZW50IEBzYW1wez9AdmFye3N0cmluZ30/fSBzZWFyY2guCi0tCi0tQGl0ZW0gQHZhcnt4fS1A dmFye3l9Ci0tQSByYW5nZSBvZiB3b3JkczsgQHNhbXB7LUB2YXJ7eX19IGFiYnJldmlhdGVzIEBz YW1wezAtQHZhcnt5fX0uCi0tCi0tQGl0ZW0gKgotLUFsbCBvZiB0aGUgd29yZHMsIGV4Y2VwdCB0 aGUgQGNvZGV7MH10aC4gIFRoaXMgaXMgYSBzeW5vbnltIGZvciBAc2FtcHsxLSR9LgotLUl0IGlz IG5vdCBhbiBlcnJvciB0byB1c2UgQHNhbXB7Kn0gaWYgdGhlcmUgaXMganVzdCBvbmUgd29yZCBp biB0aGUgZXZlbnQ7Ci0tdGhlIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpbiB0aGF0IGNhc2Uu Ci0tCi0tQGl0ZW0gQHZhcnt4fSoKLS1BYmJyZXZpYXRlcyBAc2FtcHtAdmFye3h9LSR9Ci0tCi0t QGl0ZW0gQHZhcnt4fS0KLS1BYmJyZXZpYXRlcyBAc2FtcHtAdmFye3h9LSR9IGxpa2UgQHNhbXB7 QHZhcnt4fSp9LCBidXQgb21pdHMgdGhlIGxhc3Qgd29yZC4KLS0KLS1AZW5kIHRhYmxlCi0tCi0t SWYgYSB3b3JkIGRlc2lnbmF0b3IgaXMgc3VwcGxpZWQgd2l0aG91dCBhbiBldmVudCBzcGVjaWZp Y2F0aW9uLCB0aGUKLS1wcmV2aW91cyBjb21tYW5kIGlzIHVzZWQgYXMgdGhlIGV2ZW50LgotLQot LUBub2RlIE1vZGlmaWVycwotLUBzdWJzZWN0aW9uIE1vZGlmaWVycwotLQotLUFmdGVyIHRoZSBv cHRpb25hbCB3b3JkIGRlc2lnbmF0b3IsIHlvdSBjYW4gYWRkIGEgc2VxdWVuY2Ugb2Ygb25lIG9y IG1vcmUKLS1vZiB0aGUgZm9sbG93aW5nIG1vZGlmaWVycywgZWFjaCBwcmVjZWRlZCBieSBhIEBz YW1wezp9LgotLQotLUB0YWJsZSBAY29kZQotLQotLUBpdGVtIGgKLS1SZW1vdmUgYSB0cmFpbGlu ZyBwYXRobmFtZSBjb21wb25lbnQsIGxlYXZpbmcgb25seSB0aGUgaGVhZC4KLS0KLS1AaXRlbSB0 Ci0tUmVtb3ZlIGFsbCBsZWFkaW5nICBwYXRobmFtZSAgY29tcG9uZW50cywgbGVhdmluZyB0aGUg dGFpbC4KLS0KLS1AaXRlbSByCi0tUmVtb3ZlIGEgdHJhaWxpbmcgc3VmZml4IG9mIHRoZSBmb3Jt IEBzYW1wey5AdmFye3N1ZmZpeH19LCBsZWF2aW5nCi0tdGhlIGJhc2VuYW1lLgotLQotLUBpdGVt IGUKLS1SZW1vdmUgYWxsIGJ1dCB0aGUgdHJhaWxpbmcgc3VmZml4LgotLQotLUBpdGVtIHAKLS1Q cmludCB0aGUgbmV3IGNvbW1hbmQgYnV0IGRvIG5vdCBleGVjdXRlIGl0LgotLQotLUBpZnNldCBC YXNoRmVhdHVyZXMKLS1AaXRlbSBxCi0tUXVvdGUgdGhlIHN1YnN0aXR1dGVkIHdvcmRzLCBlc2Nh cGluZyBmdXJ0aGVyIHN1YnN0aXR1dGlvbnMuCi0tCi0tQGl0ZW0geAotLVF1b3RlIHRoZSBzdWJz dGl0dXRlZCB3b3JkcyBhcyB3aXRoIEBzYW1we3F9LAotLWJ1dCBicmVhayBpbnRvIHdvcmRzIGF0 IHNwYWNlcywgdGFicywgYW5kIG5ld2xpbmVzLgotLUBlbmQgaWZzZXQKLS0KLS1AaXRlbSBzL0B2 YXJ7b2xkfS9AdmFye25ld30vCi0tU3Vic3RpdHV0ZSBAdmFye25ld30gZm9yIHRoZSBmaXJzdCBv Y2N1cnJlbmNlIG9mIEB2YXJ7b2xkfSBpbiB0aGUKLS1ldmVudCBsaW5lLiAgQW55IGRlbGltaXRl ciBtYXkgYmUgdXNlZCBpbiBwbGFjZSBvZiBAc2FtcHsvfS4KLS1UaGUgZGVsaW1pdGVyIG1heSBi ZSBxdW90ZWQgaW4gQHZhcntvbGR9IGFuZCBAdmFye25ld30KLS13aXRoIGEgc2luZ2xlIGJhY2tz bGFzaC4gIElmIEBzYW1weyZ9IGFwcGVhcnMgaW4gQHZhcntuZXd9LAotLWl0IGlzIHJlcGxhY2Vk IGJ5IEB2YXJ7b2xkfS4gIEEgc2luZ2xlIGJhY2tzbGFzaCB3aWxsIHF1b3RlCi0tdGhlIEBzYW1w eyZ9LiAgVGhlIGZpbmFsIGRlbGltaXRlciBpcyBvcHRpb25hbCBpZiBpdCBpcyB0aGUgbGFzdAot LWNoYXJhY3RlciBvbiB0aGUgaW5wdXQgbGluZS4KLS0KLS1AaXRlbSAmCi0tUmVwZWF0IHRoZSBw cmV2aW91cyBzdWJzdGl0dXRpb24uCi0tCi0tQGl0ZW0gZwotLUBpdGVteCBhCi0tQ2F1c2UgY2hh bmdlcyB0byBiZSBhcHBsaWVkIG92ZXIgdGhlIGVudGlyZSBldmVudCBsaW5lLiAgVXNlZCBpbgot LWNvbmp1bmN0aW9uIHdpdGggQHNhbXB7c30sIGFzIGluIEBjb2Rle2dzL0B2YXJ7b2xkfS9AdmFy e25ld30vfSwKLS1vciB3aXRoIEBzYW1weyZ9LgotLQotLUBpdGVtIEcKLS1BcHBseSB0aGUgZm9s bG93aW5nIEBzYW1we3N9IG1vZGlmaWVyIG9uY2UgdG8gZWFjaCB3b3JkIGluIHRoZSBldmVudC4K LS0KLS1AZW5kIHRhYmxlCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9kb2Mv cmVhZGxpbmUuMwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFk bGluZS9kb2MvcmVhZGxpbmUuMwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL3JlYWRsaW5lLjMJMjAxMS0wNy0w MyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC02LDkgKzYsOSBAQAotIC5cIglDYXNlIFdl c3Rlcm4gUmVzZXJ2ZSBVbml2ZXJzaXR5Ci0gLlwiCWNoZXRAaW5zLkNXUlUuRWR1Ci0gLlwiCi0t LlwiCUxhc3QgQ2hhbmdlOiBUdWUgU2VwIDEzIDEyOjA3OjI2IEVEVCAyMDA1Ci0rLlwiCUxhc3Qg Q2hhbmdlOiBTYXQgQXVnIDI4IDE4OjU2OjMyIEVEVCAyMDEwCi0gLlwiCi0tLlRIIFJFQURMSU5F IDMgIjIwMDUgU2VwIDEzIiAiR05VIFJlYWRsaW5lIDUuMS1iZXRhMSIKLSsuVEggUkVBRExJTkUg MyAiMjAxMCBBdWd1c3QgMjgiICJHTlUgUmVhZGxpbmUgNi4yIgotIC5cIgotIC5cIiBGaWxlIE5h bWUgbWFjcm8uICBUaGlzIHVzZWQgdG8gYmUgYC5QTicsIGZvciBQYXRoIE5hbWUsCi0gLlwiIGJ1 dCBTdW4gZG9lc24ndCBzZWVtIHRvIGxpa2UgdGhhdCB2ZXJ5IG11Y2guCi1AQCAtMzQsOCArMzQs OCBAQCByZWFkbGluZSBcLSBnZXQgYSBsaW5lIGZyb20gYSB1c2VyIHdpdGggCi0gXGZCcmVhZGxp bmVcZlAgKFxmSWNvbnN0IGNoYXIgKnByb21wdFxmUCk7Ci0gLmZpCi0gLlNIIENPUFlSSUdIVAot LS5pZiBuIFJlYWRsaW5lIGlzIENvcHlyaWdodCAoQykgMTk4OVwtMjAwNCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tLmlmIHQgUmVhZGxpbmUgaXMgQ29weXJpZ2h0IFwo Y28gMTk4OVwtMjAwNCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLmlm IG4gUmVhZGxpbmUgaXMgQ29weXJpZ2h0IChDKSAxOTg5XC0yMDExIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgIEluYy4KLSsuaWYgdCBSZWFkbGluZSBpcyBDb3B5cmlnaHQgXChjbyAxOTg5XC0y MDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIC5TSCBERVNDUklQVElPTgotIC5M UAotIC5CIHJlYWRsaW5lCi1AQCAtNzYsNyArNzYsNyBAQCBpcyByZWFkIHdpdGggYSBub25cLWVt cHR5IGxpbmUsIGl0IGlzCi0gdHJlYXRlZCBhcyBhIG5ld2xpbmUuCi0gLlNIIE5PVEFUSU9OCi0g LkxQCi0tQW4gZW1hY3Mtc3R5bGUgbm90YXRpb24gaXMgdXNlZCB0byBkZW5vdGUKLStBbiBFbWFj cy1zdHlsZSBub3RhdGlvbiBpcyB1c2VkIHRvIGRlbm90ZQotIGtleXN0cm9rZXMuICBDb250cm9s IGtleXMgYXJlIGRlbm90ZWQgYnkgQ1wtXGZJa2V5XGZSLCBlLmcuLCBDXC1uCi0gbWVhbnMgQ29u dHJvbFwtTi4gIFNpbWlsYXJseSwgCi0gLkkgbWV0YQotQEAgLTExNiw2ICsxMTYsOCBAQCBUaGUg bmFtZSBvZiB0aGlzIGZpbGUgaXMgdGFrZW4gZnJvbSB0aGUgCi0gLkIgSU5QVVRSQwotIGVudmly b25tZW50IHZhcmlhYmxlLiAgSWYgdGhhdCB2YXJpYWJsZSBpcyB1bnNldCwgdGhlIGRlZmF1bHQg aXMKLSAuSVIgfi8uaW5wdXRyYyAuCi0rSWYgdGhhdCBmaWxlICBkb2VzIG5vdCBleGlzdCBvciBj YW5ub3QgYmUgcmVhZCwgdGhlIHVsdGltYXRlIGRlZmF1bHQgaXMKLSsuSVIgL2V0Yy9pbnB1dHJj IC4KLSBXaGVuIGEgcHJvZ3JhbSB3aGljaCB1c2VzIHRoZSByZWFkbGluZSBsaWJyYXJ5IHN0YXJ0 cyB1cCwgdGhlCi0gaW5pdCBmaWxlIGlzIHJlYWQsIGFuZCB0aGUga2V5IGJpbmRpbmdzIGFuZCB2 YXJpYWJsZXMgYXJlIHNldC4KLSBUaGVyZSBhcmUgb25seSBhIGZldyBiYXNpYyBjb25zdHJ1Y3Rz IGFsbG93ZWQgaW4gdGhlCi1AQCAtMTY4LDYgKzE3MCw4IEBAIGNvbW1hbmQgb3IgdGhlIHRleHQg b2YgYSBtYWNybyBhbmQgYSBrZXkKLSBpdCBzaG91bGQgYmUgYm91bmQuIFRoZSBuYW1lIG1heSBi ZSBzcGVjaWZpZWQgaW4gb25lIG9mIHR3byB3YXlzOgotIGFzIGEgc3ltYm9saWMga2V5IG5hbWUs IHBvc3NpYmx5IHdpdGggXGZJTWV0YVwtXGZQIG9yIFxmSUNvbnRyb2xcLVxmUAotIHByZWZpeGVz LCBvciBhcyBhIGtleSBzZXF1ZW5jZS4KLStUaGUgbmFtZSBhbmQga2V5IHNlcXVlbmNlIGFyZSBz ZXBhcmF0ZWQgYnkgYSBjb2xvbi4gIFRoZXJlIGNhbiBiZSBubwotK3doaXRlc3BhY2UgYmV0d2Vl biB0aGUgbmFtZSBhbmQgdGhlIGNvbG9uLgotIC5QUAotIFdoZW4gdXNpbmcgdGhlIGZvcm0gXGZC a2V5bmFtZVxmUDpcXlxmSWZ1bmN0aW9uLW5hbWVcZlAgb3IgXGZJbWFjcm9cZlAsCi0gLkkga2V5 bmFtZQotQEAgLTM1NiwxMSArMzYwLDMwIEBAIFRoaXMgY29tbWFuZCBpcyBib3VuZCB0bwotIGlu IGVtYWNzIG1vZGUgYW5kIHRvCi0gLkIgIwotIGluIHZpIGNvbW1hbmQgbW9kZS4KLSsuVFAKLSsu QiBjb21wbGV0aW9uXC1kaXNwbGF5XC13aWR0aCAoLTEpCi0rVGhlIG51bWJlciBvZiBzY3JlZW4g Y29sdW1ucyB1c2VkIHRvIGRpc3BsYXkgcG9zc2libGUgbWF0Y2hlcwotK3doZW4gcGVyZm9ybWlu ZyBjb21wbGV0aW9uLgotK1RoZSB2YWx1ZSBpcyBpZ25vcmVkIGlmIGl0IGlzIGxlc3MgdGhhbiAw IG9yIGdyZWF0ZXIgdGhhbiB0aGUgdGVybWluYWwKLStzY3JlZW4gd2lkdGguCi0rQSB2YWx1ZSBv ZiAwIHdpbGwgY2F1c2UgbWF0Y2hlcyB0byBiZSBkaXNwbGF5ZWQgb25lIHBlciBsaW5lLgotK1Ro ZSBkZWZhdWx0IHZhbHVlIGlzIC0xLgotIC5UUCAKLSAuQiBjb21wbGV0aW9uXC1pZ25vcmVcLWNh c2UgKE9mZikKLSBJZiBzZXQgdG8gXGZCT25cZlAsIHJlYWRsaW5lIHBlcmZvcm1zIGZpbGVuYW1l IG1hdGNoaW5nIGFuZCBjb21wbGV0aW9uCi0gaW4gYSBjYXNlXC1pbnNlbnNpdGl2ZSBmYXNoaW9u LgotIC5UUAotKy5CIGNvbXBsZXRpb25cLW1hcFwtY2FzZSAoT2ZmKQotK0lmIHNldCB0byBcZkJP blxmUCwgYW5kIFxmQmNvbXBsZXRpb25cLWlnbm9yZVwtY2FzZVxmUCBpcyBlbmFibGVkLCByZWFk bGluZQotK3RyZWF0cyBoeXBoZW5zIChcZklcLVxmUCkgYW5kIHVuZGVyc2NvcmVzIChcZklfXGZQ KSBhcyBlcXVpdmFsZW50IHdoZW4KLStwZXJmb3JtaW5nIGNhc2VcLWluc2Vuc2l0aXZlIGZpbGVu YW1lIG1hdGNoaW5nIGFuZCBjb21wbGV0aW9uLgotKy5UUAotKy5CIGNvbXBsZXRpb25cLXByZWZp eFwtZGlzcGxheVwtbGVuZ3RoICgwKQotK1RoZSBsZW5ndGggaW4gY2hhcmFjdGVycyBvZiB0aGUg Y29tbW9uIHByZWZpeCBvZiBhIGxpc3Qgb2YgcG9zc2libGUKLStjb21wbGV0aW9ucyB0aGF0IGlz IGRpc3BsYXllZCB3aXRob3V0IG1vZGlmaWNhdGlvbi4gIFdoZW4gc2V0IHRvIGEKLSt2YWx1ZSBn cmVhdGVyIHRoYW4gemVybywgY29tbW9uIHByZWZpeGVzIGxvbmdlciB0aGFuIHRoaXMgdmFsdWUg YXJlCi0rcmVwbGFjZWQgd2l0aCBhbiBlbGxpcHNpcyB3aGVuIGRpc3BsYXlpbmcgcG9zc2libGUg Y29tcGxldGlvbnMuCi0rLlRQCi0gLkIgY29tcGxldGlvblwtcXVlcnlcLWl0ZW1zICgxMDApCi0g VGhpcyBkZXRlcm1pbmVzIHdoZW4gdGhlIHVzZXIgaXMgcXVlcmllZCBhYm91dCB2aWV3aW5nCi0g dGhlIG51bWJlciBvZiBwb3NzaWJsZSBjb21wbGV0aW9ucwotQEAgLTM4NCwyNyArNDA3LDQxIEBA IG1hcHBlZCB0byBcZkJzZWxmLWluc2VydFxmUC4KLSAuVFAKLSAuQiBlZGl0aW5nXC1tb2RlIChl bWFjcykKLSBDb250cm9scyB3aGV0aGVyIHJlYWRsaW5lIGJlZ2lucyB3aXRoIGEgc2V0IG9mIGtl eSBiaW5kaW5ncyBzaW1pbGFyCi0tdG8gZW1hY3Mgb3IgdmkuCi0rdG8gXGZJRW1hY3NcZlAgb3Ig XGZJdmlcZlAuCi0gLkIgZWRpdGluZ1wtbW9kZQotIGNhbiBiZSBzZXQgdG8gZWl0aGVyCi0gLkIg ZW1hY3MKLSBvcgotIC5CUiB2aSAuCi0gLlRQCi0rLkIgZWNob1wtY29udHJvbFwtY2hhcmFjdGVy cyAoT24pCi0rV2hlbiBzZXQgdG8gXGZCT25cZlAsIG9uIG9wZXJhdGluZyBzeXN0ZW1zIHRoYXQg aW5kaWNhdGUgdGhleSBzdXBwb3J0IGl0LAotK3JlYWRsaW5lIGVjaG9lcyBhIGNoYXJhY3RlciBj b3JyZXNwb25kaW5nIHRvIGEgc2lnbmFsIGdlbmVyYXRlZCBmcm9tIHRoZQotK2tleWJvYXJkLgot Ky5UUAotIC5CIGVuYWJsZVwta2V5cGFkIChPZmYpCi0gV2hlbiBzZXQgdG8gXGZCT25cZlAsIHJl YWRsaW5lIHdpbGwgdHJ5IHRvIGVuYWJsZSB0aGUgYXBwbGljYXRpb24KLSBrZXlwYWQgd2hlbiBp dCBpcyBjYWxsZWQuICBTb21lIHN5c3RlbXMgbmVlZCB0aGlzIHRvIGVuYWJsZSB0aGUKLSBhcnJv dyBrZXlzLgotIC5UUAotKy5CIGVuYWJsZVwtbWV0YVwta2V5IChPbikKLStXaGVuIHNldCB0byBc ZkJPblxmUCwgcmVhZGxpbmUgd2lsbCB0cnkgdG8gZW5hYmxlIGFueSBtZXRhIG1vZGlmaWVyCi0r a2V5IHRoZSB0ZXJtaW5hbCBjbGFpbXMgdG8gc3VwcG9ydCB3aGVuIGl0IGlzIGNhbGxlZC4gIE9u IG1hbnkgdGVybWluYWxzLAotK3RoZSBtZXRhIGtleSBpcyB1c2VkIHRvIHNlbmQgZWlnaHQtYml0 IGNoYXJhY3RlcnMuCi0rLlRQCi0gLkIgZXhwYW5kXC10aWxkZSAoT2ZmKQotLUlmIHNldCB0byBc ZkJvblxmUCwgdGlsZGUgZXhwYW5zaW9uIGlzIHBlcmZvcm1lZCB3aGVuIHJlYWRsaW5lCi0rSWYg c2V0IHRvIFxmQk9uXGZQLCB0aWxkZSBleHBhbnNpb24gaXMgcGVyZm9ybWVkIHdoZW4gcmVhZGxp bmUKLSBhdHRlbXB0cyB3b3JkIGNvbXBsZXRpb24uCi0gLlRQCi0gLkIgaGlzdG9yeVwtcHJlc2Vy dmVcLXBvaW50IChPZmYpCi0tSWYgc2V0IHRvIFxmQm9uXGZQLCB0aGUgaGlzdG9yeSBjb2RlIGF0 dGVtcHRzIHRvIHBsYWNlIHBvaW50IGF0IHRoZSAKLStJZiBzZXQgdG8gXGZCT25cZlAsIHRoZSBo aXN0b3J5IGNvZGUgYXR0ZW1wdHMgdG8gcGxhY2UgcG9pbnQgYXQgdGhlIAotIHNhbWUgbG9jYXRp b24gb24gZWFjaCBoaXN0b3J5IGxpbmUgcmV0cmlldmVkIHdpdGggXGZCcHJldmlvdXMtaGlzdG9y eVxmUCAKLSBvciBcZkJuZXh0LWhpc3RvcnlcZlAuCi0gLlRQCi0rLkIgaGlzdG9yeVwtc2l6ZSAo MCkKLStTZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGhpc3RvcnkgZW50cmllcyBzYXZlZCBpbiB0 aGUgaGlzdG9yeSBsaXN0LiAgSWYKLStzZXQgdG8gemVybywgdGhlIG51bWJlciBvZiBlbnRyaWVz IGluIHRoZSBoaXN0b3J5IGxpc3QgaXMgbm90IGxpbWl0ZWQuCi0rLlRQCi0gLkIgaG9yaXpvbnRh bFwtc2Nyb2xsXC1tb2RlIChPZmYpCi0gV2hlbiBzZXQgdG8gXGZCT25cZlAsIG1ha2VzIHJlYWRs aW5lIHVzZSBhIHNpbmdsZSBsaW5lIGZvciBkaXNwbGF5LAotIHNjcm9sbGluZyB0aGUgaW5wdXQg aG9yaXpvbnRhbGx5IG9uIGEgc2luZ2xlIHNjcmVlbiBsaW5lIHdoZW4gaXQKLUBAIC00NTEsOSAr NDg4LDE1IEBAIGhhdmUgYSBzbGFzaCBhcHBlbmRlZCAoc3ViamVjdCB0byB0aGUgdmEKLSAuQiBt YXRjaFwtaGlkZGVuXC1maWxlcyAoT24pCi0gVGhpcyB2YXJpYWJsZSwgd2hlbiBzZXQgdG8gXGZC T25cZlAsIGNhdXNlcyByZWFkbGluZSB0byBtYXRjaCBmaWxlcyB3aG9zZSAKLSBuYW1lcyBiZWdp biB3aXRoIGEgYC4nIChoaWRkZW4gZmlsZXMpIHdoZW4gcGVyZm9ybWluZyBmaWxlbmFtZSAgICAg Ci0tY29tcGxldGlvbiwgdW5sZXNzIHRoZSBsZWFkaW5nIGAuJyBpcyAgICAgCi0rY29tcGxldGlv bi4KLStJZiBzZXQgdG8gXGZCT2ZmXGZQLCB0aGUgbGVhZGluZyBgLicgbXVzdCBiZQotIHN1cHBs aWVkIGJ5IHRoZSB1c2VyIGluIHRoZSBmaWxlbmFtZSB0byBiZSBjb21wbGV0ZWQuCi0gLlRQCi0r LkIgbWVudVwtY29tcGxldGVcLWRpc3BsYXlcLXByZWZpeCAoT2ZmKQotK0lmIHNldCB0byBcZkJP blxmUCwgbWVudSBjb21wbGV0aW9uIGRpc3BsYXlzIHRoZSBjb21tb24gcHJlZml4IG9mIHRoZQot K2xpc3Qgb2YgcG9zc2libGUgY29tcGxldGlvbnMgKHdoaWNoIG1heSBiZSBlbXB0eSkgYmVmb3Jl IGN5Y2xpbmcgdGhyb3VnaAotK3RoZSBsaXN0LgotKy5UUAotIC5CIG91dHB1dFwtbWV0YSAoT2Zm KQotIElmIHNldCB0byBcZkJPblxmUCwgcmVhZGxpbmUgd2lsbCBkaXNwbGF5IGNoYXJhY3RlcnMg d2l0aCB0aGUKLSBlaWdodGggYml0IHNldCBkaXJlY3RseSByYXRoZXIgdGhhbiBhcyBhIG1ldGEt cHJlZml4ZWQgZXNjYXBlCi1AQCAtNDY3LDEwICs1MTAsMTYgQEAgdG8gZGlzcGxheSBhIHNjcmVl bmZ1bCBvZiBwb3NzaWJsZSBjb21wbAotIElmIHNldCB0byBcZkJPblxmUCwgcmVhZGxpbmUgd2ls bCBkaXNwbGF5IGNvbXBsZXRpb25zIHdpdGggbWF0Y2hlcwotIHNvcnRlZCBob3Jpem9udGFsbHkg aW4gYWxwaGFiZXRpY2FsIG9yZGVyLCByYXRoZXIgdGhhbiBkb3duIHRoZSBzY3JlZW4uCi0gLlRQ Ci0rLkIgcmV2ZXJ0XC1hbGxcLWF0XC1uZXdsaW5lIChPZmYpCi0rSWYgc2V0IHRvIFxmQk9uXGZQ LCByZWFkbGluZSB3aWxsIHVuZG8gYWxsIGNoYW5nZXMgdG8gaGlzdG9yeSBsaW5lcwotK2JlZm9y ZSByZXR1cm5pbmcgd2hlbiBcZkJhY2NlcHRcLWxpbmVcZlAgaXMgZXhlY3V0ZWQuICBCeSBkZWZh dWx0LAotK2hpc3RvcnkgbGluZXMgbWF5IGJlIG1vZGlmaWVkIGFuZCByZXRhaW4gaW5kaXZpZHVh bCB1bmRvIGxpc3RzIGFjcm9zcwotK2NhbGxzIHRvIFxmQnJlYWRsaW5lXGZQLgotKy5UUAotIC5C IHNob3dcLWFsbFwtaWZcLWFtYmlndW91cyAoT2ZmKQotIFRoaXMgYWx0ZXJzIHRoZSBkZWZhdWx0 IGJlaGF2aW9yIG9mIHRoZSBjb21wbGV0aW9uIGZ1bmN0aW9ucy4gIElmCi0gc2V0IHRvCi0tLkJS IG9uICwKLSsuQlIgT24gLAotIHdvcmRzIHdoaWNoIGhhdmUgbW9yZSB0aGFuIG9uZSBwb3NzaWJs ZSBjb21wbGV0aW9uIGNhdXNlIHRoZQotIG1hdGNoZXMgdG8gYmUgbGlzdGVkIGltbWVkaWF0ZWx5 IGluc3RlYWQgb2YgcmluZ2luZyB0aGUgYmVsbC4KLSAuVFAKLUBAIC00NzgsMTIgKzUyNywyMCBA QCBtYXRjaGVzIHRvIGJlIGxpc3RlZCBpbW1lZGlhdGVseSBpbnN0ZWFkCi0gVGhpcyBhbHRlcnMg dGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIGNvbXBsZXRpb24gZnVuY3Rpb25zIGluCi0gYSBm YXNoaW9uIHNpbWlsYXIgdG8gXGZCc2hvd1wtYWxsXC1pZlwtYW1iaWd1b3VzXGZQLgotIElmIHNl dCB0bwotLS5CUiBvbiAsIAotKy5CUiBPbiAsIAotIHdvcmRzIHdoaWNoIGhhdmUgbW9yZSB0aGFu IG9uZSBwb3NzaWJsZSBjb21wbGV0aW9uIHdpdGhvdXQgYW55Ci0gcG9zc2libGUgcGFydGlhbCBj b21wbGV0aW9uICh0aGUgcG9zc2libGUgY29tcGxldGlvbnMgZG9uJ3Qgc2hhcmUgCi0gYSBjb21t b24gcHJlZml4KSBjYXVzZSB0aGUgbWF0Y2hlcyB0byBiZSBsaXN0ZWQgaW1tZWRpYXRlbHkgaW5z dGVhZAotIG9mIHJpbmdpbmcgdGhlIGJlbGwuCi0gLlRQCi0rLkIgc2tpcFwtY29tcGxldGVkXC10 ZXh0IChPZmYpCi0rSWYgc2V0IHRvIFxmQk9uXGZQLCB0aGlzIGFsdGVycyB0aGUgZGVmYXVsdCBj b21wbGV0aW9uIGJlaGF2aW9yIHdoZW4KLStpbnNlcnRpbmcgYSBzaW5nbGUgbWF0Y2ggaW50byB0 aGUgbGluZS4gIEl0J3Mgb25seSBhY3RpdmUgd2hlbgotK3BlcmZvcm1pbmcgY29tcGxldGlvbiBp biB0aGUgbWlkZGxlIG9mIGEgd29yZC4gIElmIGVuYWJsZWQsIHJlYWRsaW5lCi0rZG9lcyBub3Qg aW5zZXJ0IGNoYXJhY3RlcnMgZnJvbSB0aGUgY29tcGxldGlvbiB0aGF0IG1hdGNoIGNoYXJhY3Rl cnMKLSthZnRlciBwb2ludCBpbiB0aGUgd29yZCBiZWluZyBjb21wbGV0ZWQsIHNvIHBvcnRpb25z IG9mIHRoZSB3b3JkCi0rZm9sbG93aW5nIHRoZSBjdXJzb3IgYXJlIG5vdCBkdXBsaWNhdGVkLgot Ky5UUAotIC5CIHZpc2libGVcLXN0YXRzIChPZmYpCi0gSWYgc2V0IHRvIFxmQk9uXGZQLCBhIGNo YXJhY3RlciBkZW5vdGluZyBhIGZpbGUncyB0eXBlIGFzIHJlcG9ydGVkICAKLSBieSBcZklzdGF0 XGZQKDIpIGlzIGFwcGVuZGVkIHRvIHRoZSBmaWxlbmFtZSB3aGVuIGxpc3RpbmcgcG9zc2libGUK LUBAIC01MzAsNyArNTg3LDcgQEAgbGlicmFyeSBzZXRzIHRoZSBcZklhcHBsaWNhdGlvbiBuYW1l XGZQLAotIGZpbGUgY2FuIHRlc3QgZm9yIGEgcGFydGljdWxhciB2YWx1ZS4KLSBUaGlzIGNvdWxk IGJlIHVzZWQgdG8gYmluZCBrZXkgc2VxdWVuY2VzIHRvIGZ1bmN0aW9ucyB1c2VmdWwgZm9yCi0g YSBzcGVjaWZpYyBwcm9ncmFtLiAgRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQg YWRkcyBhCi0ta2V5IHNlcXVlbmNlIHRoYXQgcXVvdGVzIHRoZSBjdXJyZW50IG9yIHByZXZpb3Vz IHdvcmQgaW4gQmFzaDoKLStrZXkgc2VxdWVuY2UgdGhhdCBxdW90ZXMgdGhlIGN1cnJlbnQgb3Ig cHJldmlvdXMgd29yZCBpbiBcZkJiYXNoXGZQOgotIC5zcCAxCi0gLlJTCi0gLm5mCi1AQCAtNzA2 LDEwICs3NjMsMTQgQEAgYXMgaWYgdGhlICIhXGZJblxmUCIgaGlzdG9yeSBleHBhbnNpb24gaAot IC5CCi0geWFua1wtbGFzdFwtYXJnIChNXC0uXF4sIE1cLV9cXikKLSBJbnNlcnQgdGhlIGxhc3Qg YXJndW1lbnQgdG8gdGhlIHByZXZpb3VzIGNvbW1hbmQgKHRoZSBsYXN0IHdvcmQgb2YKLS10aGUg cHJldmlvdXMgaGlzdG9yeSBlbnRyeSkuICBXaXRoIGFuIGFyZ3VtZW50LAotLWJlaGF2ZSBleGFj dGx5IGxpa2UgXGZCeWFua1wtbnRoXC1hcmdcZlAuCi0rdGhlIHByZXZpb3VzIGhpc3RvcnkgZW50 cnkpLgotK1dpdGggYSBudW1lcmljIGFyZ3VtZW50LCBiZWhhdmUgZXhhY3RseSBsaWtlIFxmQnlh bmtcLW50aFwtYXJnXGZQLgotIFN1Y2Nlc3NpdmUgY2FsbHMgdG8gXGZCeWFua1wtbGFzdFwtYXJn XGZQIG1vdmUgYmFjayB0aHJvdWdoIHRoZSBoaXN0b3J5Ci0tbGlzdCwgaW5zZXJ0aW5nIHRoZSBs YXN0IGFyZ3VtZW50IG9mIGVhY2ggbGluZSBpbiB0dXJuLgotK2xpc3QsIGluc2VydGluZyB0aGUg bGFzdCB3b3JkIChvciB0aGUgd29yZCBzcGVjaWZpZWQgYnkgdGhlIGFyZ3VtZW50IHRvCi0rdGhl IGZpcnN0IGNhbGwpIG9mIGVhY2ggbGluZSBpbiB0dXJuLgotK0FueSBudW1lcmljIGFyZ3VtZW50 IHN1cHBsaWVkIHRvIHRoZXNlIHN1Y2Nlc3NpdmUgY2FsbHMgZGV0ZXJtaW5lcwotK3RoZSBkaXJl Y3Rpb24gdG8gbW92ZSB0aHJvdWdoIHRoZSBoaXN0b3J5LiAgQSBuZWdhdGl2ZSBhcmd1bWVudCBz d2l0Y2hlcwotK3RoZSBkaXJlY3Rpb24gdGhyb3VnaCB0aGUgaGlzdG9yeSAoYmFjayBvciBmb3J3 YXJkKS4KLSBUaGUgaGlzdG9yeSBleHBhbnNpb24gZmFjaWxpdGllcyBhcmUgdXNlZCB0byBleHRy YWN0IHRoZSBsYXN0IGFyZ3VtZW50LAotIGFzIGlmIHRoZSAiISQiIGhpc3RvcnkgZXhwYW5zaW9u IGhhZCBiZWVuIHNwZWNpZmllZC4KLSAuUEQKLUBAIC04ODQsNiArOTQ1LDEyIEBAIG9ubHkgYXR0 ZW1wdHMgZmlsZW5hbWUgY29tcGxldGlvbiB1bmRlciAKLSAuVFAKLSAuQiBwb3NzaWJsZVwtY29t cGxldGlvbnMgKE1cLT8pCi0gTGlzdCB0aGUgcG9zc2libGUgY29tcGxldGlvbnMgb2YgdGhlIHRl eHQgYmVmb3JlIHBvaW50LgotK1doZW4gZGlzcGxheWluZyBjb21wbGV0aW9ucywgcmVhZGxpbmUg c2V0cyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgdXNlZAotK2ZvciBkaXNwbGF5IHRvIHRoZSB2YWx1 ZSBvZiBcZkJjb21wbGV0aW9uLWRpc3BsYXktd2lkdGhcZlAsIHRoZSB2YWx1ZSBvZgotK3RoZSBl bnZpcm9ubWVudCB2YXJpYWJsZQotKy5TTQotKy5CUiBDT0xVTU5TICwKLStvciB0aGUgc2NyZWVu IHdpZHRoLCBpbiB0aGF0IG9yZGVyLgotIC5UUAotIC5CIGluc2VydFwtY29tcGxldGlvbnMgKE1c LSopCi0gSW5zZXJ0IGFsbCBjb21wbGV0aW9ucyBvZiB0aGUgdGV4dCBiZWZvcmUgcG9pbnQKLUBA IC05MDQsNiArOTcxLDExIEBAIHRocm91Z2ggdGhlIGxpc3QuCi0gVGhpcyBjb21tYW5kIGlzIGlu dGVuZGVkIHRvIGJlIGJvdW5kIHRvIFxmQlRBQlxmUCwgYnV0IGlzIHVuYm91bmQKLSBieSBkZWZh dWx0LgotIC5UUAotKy5CIG1lbnVcLWNvbXBsZXRlXC1iYWNrd2FyZAotK0lkZW50aWNhbCB0byBc ZkJtZW51XC1jb21wbGV0ZVxmUCwgYnV0IG1vdmVzIGJhY2t3YXJkIHRocm91Z2ggdGhlIGxpc3QK LStvZiBwb3NzaWJsZSBjb21wbGV0aW9ucywgYXMgaWYgXGZCbWVudVwtY29tcGxldGVcZlAgaGFk IGJlZW4gZ2l2ZW4gYQotK25lZ2F0aXZlIGFyZ3VtZW50LiAgVGhpcyBjb21tYW5kIGlzIHVuYm91 bmQgYnkgZGVmYXVsdC4KLSsuVFAKLSAuQiBkZWxldGVcLWNoYXJcLW9yXC1saXN0Ci0gRGVsZXRl cyB0aGUgY2hhcmFjdGVyIHVuZGVyIHRoZSBjdXJzb3IgaWYgbm90IGF0IHRoZSBiZWdpbm5pbmcg b3IKLSBlbmQgb2YgdGhlIGxpbmUgKGxpa2UgXGZCZGVsZXRlLWNoYXJcZlApLgotQEAgLTk3Nyw2 ICsxMDQ5LDE1IEBAIGNoYXJhY3Rlci4gIEEgbmVnYXRpdmUgY291bnQgc2VhcmNoZXMgZm8KLSBB IGNoYXJhY3RlciBpcyByZWFkIGFuZCBwb2ludCBpcyBtb3ZlZCB0byB0aGUgcHJldmlvdXMgb2Nj dXJyZW5jZSBvZiB0aGF0Ci0gY2hhcmFjdGVyLiAgQSBuZWdhdGl2ZSBjb3VudCBzZWFyY2hlcyBm b3Igc3Vic2VxdWVudCBvY2N1cnJlbmNlcy4KLSAuVFAKLSsuQiBza2lwXC1jc2lcLXNlcXVlbmNl Ci0rUmVhZCBlbm91Z2ggY2hhcmFjdGVycyB0byBjb25zdW1lIGEgbXVsdGkta2V5IHNlcXVlbmNl IHN1Y2ggYXMgdGhvc2UKLStkZWZpbmVkIGZvciBrZXlzIGxpa2UgSG9tZSBhbmQgRW5kLiAgU3Vj aCBzZXF1ZW5jZXMgYmVnaW4gd2l0aCBhCi0rQ29udHJvbCBTZXF1ZW5jZSBJbmRpY2F0b3IgKENT SSksIHVzdWFsbHkgRVNDXC1bLiAgSWYgdGhpcyBzZXF1ZW5jZSBpcwotK2JvdW5kIHRvICJcZVsi LCBrZXlzIHByb2R1Y2luZyBzdWNoIHNlcXVlbmNlcyB3aWxsIGhhdmUgbm8gZWZmZWN0Ci0rdW5s ZXNzIGV4cGxpY2l0bHkgYm91bmQgdG8gYSByZWFkbGluZSBjb21tYW5kLCBpbnN0ZWFkIG9mIGlu c2VydGluZwotK3N0cmF5IGNoYXJhY3RlcnMgaW50byB0aGUgZWRpdGluZyBidWZmZXIuICBUaGlz IGlzIHVuYm91bmQgYnkgZGVmYXVsdCwKLStidXQgdXN1YWxseSBib3VuZCB0byBFU0NcLVsuCi0r LlRQCi0gLkIgaW5zZXJ0XC1jb21tZW50IChNXC0jKQotIFdpdGhvdXQgYSBudW1lcmljIGFyZ3Vt ZW50LCB0aGUgdmFsdWUgb2YgdGhlIHJlYWRsaW5lCi0gLkIgY29tbWVudFwtYmVnaW4KLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2RvYy9ybG1hbi50ZXhpCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2RvYy9ybG1hbi50ZXhpCTIw MTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcw My9yZWFkbGluZS9kb2MvcmxtYW4udGV4aQkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCAr MDIwMAotQEAgLTQsNyArNCw2IEBACi0gQHNldHRpdGxlIEdOVSBSZWFkbGluZSBMaWJyYXJ5Ci0g QGNvbW1lbnQgJSoqZW5kIG9mIGhlYWRlciAoVGhpcyBpcyBmb3IgcnVubmluZyBUZXhpbmZvIG9u IGEgcmVnaW9uLikKLSBAc3luaW5kZXggdnIgZm4KLS1Ac2V0Y2hhcHRlcm5ld3BhZ2Ugb2RkCi0g Ci0gQGluY2x1ZGUgdmVyc2lvbi50ZXhpCi0gCi1AQCAtMTQsNyArMTMsNyBAQCBUaGlzIG1hbnVh bCBkZXNjcmliZXMgdGhlIEdOVSBSZWFkbGluZSBMCi0gY29uc2lzdGVuY3kgb2YgdXNlciBpbnRl cmZhY2UgYWNyb3NzIGRpc2NyZXRlIHByb2dyYW1zIHdoaWNoIHByb3ZpZGUKLSBhIGNvbW1hbmQg bGluZSBpbnRlcmZhY2UuCi0gCi0tQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAxOTg4LTIwMDQgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAxOTg4 LS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotIFBlcm1pc3Npb24gaXMg Z3JhbnRlZCB0byBtYWtlIGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZgotIHRoaXMg bWFudWFsIHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g bm90aWNlCi1AQCAtMjIsMTUgKzIxLDE2IEBAIGFyZSBwcmVzZXJ2ZWQgb24gYWxsIGNvcGllcy4K LSAKLSBAcXVvdGF0aW9uCi0gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1 dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50Ci0tdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4xIG9yCi0rdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4z IG9yCi0gYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IHdpdGggbm8KLS1JbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGggdGhlIEZyb250LUNv dmVyIHRleHRzIGJlaW5nIGBgQSBHTlUgTWFudWFsLCcnCi0rSW52YXJpYW50IFNlY3Rpb25zLCB3 aXRoIHRoZSBGcm9udC1Db3ZlciB0ZXh0cyBiZWluZyBgYEEgR05VIE1hbnVhbCcnLAotIGFuZCB3 aXRoIHRoZSBCYWNrLUNvdmVyIFRleHRzIGFzIGluIChhKSBiZWxvdy4gIEEgY29weSBvZiB0aGUg bGljZW5zZSBpcwotLWluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VIEZyZWUg RG9jdW1lbnRhdGlvbiBMaWNlbnNlLicnCi0raW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRs ZWQgYGBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UnJy4KLSsKLSsoYSkgVGhlIEZTRidz IEJhY2stQ292ZXIgVGV4dCBpczogWW91IGFyZSBmcmVlIHRvIGNvcHkgYW5kIG1vZGlmeQotK3Ro aXMgR05VIG1hbnVhbC4gIEJ1eWluZyBjb3BpZXMgZnJvbSBHTlUgUHJlc3Mgc3VwcG9ydHMgdGhl IEZTRiBpbgotK2RldmVsb3BpbmcgR05VIGFuZCBwcm9tb3Rpbmcgc29mdHdhcmUgZnJlZWRvbS4n JwotIAotLShhKSBUaGUgRlNGJ3MgQmFjay1Db3ZlciBUZXh0IGlzOiBgYFlvdSBoYXZlIGZyZWVk b20gdG8gY29weSBhbmQgbW9kaWZ5Ci0tdGhpcyBHTlUgTWFudWFsLCBsaWtlIEdOVSBzb2Z0d2Fy ZS4gIENvcGllcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKLS1Tb2Z0d2FyZSBGb3VuZGF0aW9uIHJh aXNlIGZ1bmRzIGZvciBHTlUgZGV2ZWxvcG1lbnQuJycKLSBAZW5kIHF1b3RhdGlvbgotIEBlbmQg Y29weWluZwotIAotQEAgLTcxLDcgKzcxLDcgQEAgcHJvdmlkZSBhIGNvbW1hbmQgbGluZSBpbnRl cmZhY2UuCi0gQG1lbnUKLSAqIENvbW1hbmQgTGluZSBFZGl0aW5nOjoJICAgR05VIFJlYWRsaW5l IFVzZXIncyBNYW51YWwuCi0gKiBQcm9ncmFtbWluZyB3aXRoIEdOVSBSZWFkbGluZTo6ICBHTlUg UmVhZGxpbmUgUHJvZ3JhbW1lcidzIE1hbnVhbC4KLS0qIENvcHlpbmcgVGhpcyBNYW51YWw6OgkJ ICAgQ29weWluZyB0aGlzIG1hbnVhbC4KLSsqIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5z ZTo6CUxpY2Vuc2UgZm9yIGNvcHlpbmcgdGhpcyBtYW51YWwuCi0gKiBDb25jZXB0IEluZGV4OjoJ CSAgIEluZGV4IG9mIGNvbmNlcHRzIGRlc2NyaWJlZCBpbiB0aGlzIG1hbnVhbC4KLSAqIEZ1bmN0 aW9uIGFuZCBWYXJpYWJsZSBJbmRleDo6CSAgIEluZGV4IG9mIGV4dGVybmFsbHkgdmlzaWJsZSBm dW5jdGlvbnMKLSAJCQkJICAgYW5kIHZhcmlhYmxlcy4KLUBAIC04MSwxMiArODEsOCBAQCBwcm92 aWRlIGEgY29tbWFuZCBsaW5lIGludGVyZmFjZS4KLSBAaW5jbHVkZSBybHVzZXIudGV4aQotIEBp bmNsdWRlIHJsdGVjaC50ZXhpCi0gCi0tQG5vZGUgQ29weWluZyBUaGlzIE1hbnVhbAotLUBhcHBl bmRpeCBDb3B5aW5nIFRoaXMgTWFudWFsCi0tCi0tQG1lbnUKLS0qIEdOVSBGcmVlIERvY3VtZW50 YXRpb24gTGljZW5zZTo6CUxpY2Vuc2UgZm9yIGNvcHlpbmcgdGhpcyBtYW51YWwuCi0tQGVuZCBt ZW51Ci0rQG5vZGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCi0rQGFwcGVuZGl4IEdO VSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZQotIAotIEBpbmNsdWRlIGZkbC50ZXhpCi0gCi1J bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9kb2Mvcmx0ZWNoLnRleGkKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZG9jL3JsdGVjaC50 ZXhpCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4y MDExMDcwMy9yZWFkbGluZS9kb2Mvcmx0ZWNoLnRleGkJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAw MDAwMDAgKzAyMDAKLUBAIC0xLDE0ICsxLDEzIEBACi0gQGNvbW1lbnQgJSoqc3RhcnQgb2YgaGVh ZGVyIChUaGlzIGlzIGZvciBydW5uaW5nIFRleGluZm8gb24gYSByZWdpb24uKQotIEBzZXRmaWxl bmFtZSBybHRlY2guaW5mbwotIEBjb21tZW50ICUqKmVuZCBvZiBoZWFkZXIgKFRoaXMgaXMgZm9y IHJ1bm5pbmcgVGV4aW5mbyBvbiBhIHJlZ2lvbi4pCi0tQHNldGNoYXB0ZXJuZXdwYWdlIG9kZAot IAotIEBpZmluZm8KLSBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgR05VIFJlYWRsaW5lIExp YnJhcnksIGEgdXRpbGl0eSBmb3IgYWlkaW5nCi0gaW4gdGhlIGNvbnNpc3RlbmN5IG9mIHVzZXIg aW50ZXJmYWNlIGFjcm9zcyBkaXNjcmV0ZSBwcm9ncmFtcyB0aGF0IG5lZWQKLSB0byBwcm92aWRl IGEgY29tbWFuZCBsaW5lIGludGVyZmFjZS4KLSAKLS1Db3B5cmlnaHQgKEMpIDE5ODgtMjAwNSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStDb3B5cmlnaHQgKEMpIDE5ODgtLTIwMTEg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0gUGVybWlzc2lvbiBpcyBncmFudGVk IHRvIG1ha2UgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mCi0gdGhpcyBtYW51YWwg cHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UK LUBAIC0zNTEsNiArMzUwLDEyIEBAIFRoZSBAY29kZXtybF9zZXRfcHJvbXB0KCl9IGZ1bmN0aW9u IChAcHgKLSBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgcHJvbXB0IHN0cmluZyBhZnRlciBjYWxsaW5n IEBjb2Rle3JlYWRsaW5lKCl9LgotIEBlbmQgZGVmdHlwZXZhcgotIAotK0BkZWZ0eXBldmFyIHtj aGFyICp9IHJsX2Rpc3BsYXlfcHJvbXB0Ci0rVGhlIHN0cmluZyBkaXNwbGF5ZWQgYXMgdGhlIHBy b21wdC4gIFRoaXMgaXMgdXN1YWxseSBpZGVudGljYWwgdG8KLStAdmFye3JsX3Byb21wdH0sIGJ1 dCBtYXkgYmUgY2hhbmdlZCB0ZW1wb3JhcmlseSBieSBmdW5jdGlvbnMgdGhhdAotK3VzZSB0aGUg cHJvbXB0IHN0cmluZyBhcyBhIG1lc3NhZ2UgYXJlYSwgc3VjaCBhcyBpbmNyZW1lbnRhbCBzZWFy Y2guCi0rQGVuZCBkZWZ0eXBldmFyCi0rCi0gQGRlZnR5cGV2YXIgaW50IHJsX2FscmVhZHlfcHJv bXB0ZWQKLSBJZiBhbiBhcHBsaWNhdGlvbiB3aXNoZXMgdG8gZGlzcGxheSB0aGUgcHJvbXB0IGl0 c2VsZiwgcmF0aGVyIHRoYW4gaGF2ZQotIFJlYWRsaW5lIGRvIGl0IHRoZSBmaXJzdCB0aW1lIEBj b2Rle3JlYWRsaW5lKCl9IGlzIGNhbGxlZCwgaXQgc2hvdWxkIHNldAotQEAgLTUxOCw2ICs1MjMs MjAgQEAgUmVhZGxpbmUgaXMgcGVyZm9ybWluZyB3b3JkIGNvbXBsZXRpb24uCi0gUmVhZGxpbmUg aXMgY3VycmVudGx5IGV4ZWN1dGluZyB0aGUgcmVhZGxpbmUgc2lnbmFsIGhhbmRsZXIuCi0gQGl0 ZW0gUkxfU1RBVEVfVU5ET0lORwotIFJlYWRsaW5lIGlzIHBlcmZvcm1pbmcgYW4gdW5kby4KLStA aXRlbSBSTF9TVEFURV9JTlBVVFBFTkRJTkcKLStSZWFkbGluZSBoYXMgaW5wdXQgcGVuZGluZyBk dWUgdG8gYSBjYWxsIHRvIEBjb2Rle3JsX2V4ZWN1dGVfbmV4dCgpfS4KLStAaXRlbSBSTF9TVEFU RV9UVFlDU0FWRUQKLStSZWFkbGluZSBoYXMgc2F2ZWQgdGhlIHZhbHVlcyBvZiB0aGUgdGVybWlu YWwncyBzcGVjaWFsIGNoYXJhY3RlcnMuCi0rQGl0ZW0gUkxfU1RBVEVfQ0FMTEJBQ0sKLStSZWFk bGluZSBpcyBjdXJyZW50bHkgdXNpbmcgdGhlIGFsdGVybmF0ZSAoY2FsbGJhY2spIGludGVyZmFj ZQotKyhAcHhyZWZ7QWx0ZXJuYXRlIEludGVyZmFjZX0pLgotK0BpdGVtIFJMX1NUQVRFX1ZJTU9U SU9OCi0rUmVhZGxpbmUgaXMgcmVhZGluZyB0aGUgYXJndW1lbnQgdG8gYSB2aS1tb2RlICJtb3Rp b24iIGNvbW1hbmQuCi0rQGl0ZW0gUkxfU1RBVEVfTVVMVElLRVkKLStSZWFkbGluZSBpcyByZWFk aW5nIGEgbXVsdGlwbGUta2V5c3Ryb2tlIGNvbW1hbmQuCi0rQGl0ZW0gUkxfU1RBVEVfVklDTURP TkNFCi0rUmVhZGxpbmUgaGFzIGVudGVyZWQgdmkgY29tbWFuZCAobW92ZW1lbnQpIG1vZGUgYXQg bGVhc3Qgb25lIHRpbWUgZHVyaW5nCi0rdGhlIGN1cnJlbnQgY2FsbCB0byBAY29kZXtyZWFkbGlu ZSgpfS4KLSBAaXRlbSBSTF9TVEFURV9ET05FCi0gUmVhZGxpbmUgaGFzIHJlYWQgYSBrZXkgc2Vx dWVuY2UgYm91bmQgdG8gQGNvZGV7YWNjZXB0LWxpbmV9Ci0gYW5kIGlzIGFib3V0IHRvIHJldHVy biB0aGUgbGluZSB0byB0aGUgY2FsbGVyLgotQEAgLTYwMyw3ICs2MjIsNyBAQCBSZWFkbGluZSB3 aGljaCBrZXltYXAgdG8gdXNlLgotIEBkZWZ0eXBlZnVuIEtleW1hcCBybF9tYWtlX2JhcmVfa2V5 bWFwICh2b2lkKQotIFJldHVybnMgYSBuZXcsIGVtcHR5IGtleW1hcC4gIFRoZSBzcGFjZSBmb3Ig dGhlIGtleW1hcCBpcyBhbGxvY2F0ZWQgd2l0aAotIEBjb2Rle21hbGxvYygpfTsgdGhlIGNhbGxl ciBzaG91bGQgZnJlZSBpdCBieSBjYWxsaW5nCi0tQGNvZGV7cmxfZGlzY2FyZF9rZXltYXAoKX0g d2hlbiBkb25lLgotK0Bjb2Rle3JsX2ZyZWVfa2V5bWFwKCl9IHdoZW4gZG9uZS4KLSBAZW5kIGRl ZnR5cGVmdW4KLSAKLSBAZGVmdHlwZWZ1biBLZXltYXAgcmxfY29weV9rZXltYXAgKEtleW1hcCBt YXApCi1AQCAtNjE3LDcgKzYzNiwxMyBAQCB0aGUgTWV0YSBkaWdpdHMgYm91bmQgdG8gcHJvZHVj ZSBudW1lcmljCi0gQGVuZCBkZWZ0eXBlZnVuCi0gCi0gQGRlZnR5cGVmdW4gdm9pZCBybF9kaXNj YXJkX2tleW1hcCAoS2V5bWFwIGtleW1hcCkKLS1GcmVlIHRoZSBzdG9yYWdlIGFzc29jaWF0ZWQg d2l0aCBAdmFye2tleW1hcH0uCi0rRnJlZSB0aGUgc3RvcmFnZSBhc3NvY2lhdGVkIHdpdGggdGhl IGRhdGEgaW4gQHZhcntrZXltYXB9LgotK1RoZSBjYWxsZXIgc2hvdWxkIGZyZWUgQHZhcntrZXlt YXB9LgotK0BlbmQgZGVmdHlwZWZ1bgotKwotK0BkZWZ0eXBlZnVuIHZvaWQgcmxfZnJlZV9rZXlt YXAgKEtleW1hcCBrZXltYXApCi0rRnJlZSBhbGwgc3RvcmFnZSBhc3NvY2lhdGVkIHdpdGggQHZh cntrZXltYXB9LiAgVGhpcyBjYWxscwotK0Bjb2Rle3JsX2Rpc2NhcmRfa2V5bWFwfSB0byBmcmVl IHN1Ym9yZGluZGF0ZSBrZXltYXBzIGFuZCBtYWNyb3MuCi0gQGVuZCBkZWZ0eXBlZnVuCi0gCi0g UmVhZGxpbmUgaGFzIHNldmVyYWwgaW50ZXJuYWwga2V5bWFwcy4gIFRoZXNlIGZ1bmN0aW9ucyBh bGxvdyB5b3UgdG8KLUBAIC03OTMsNyArODE4LDggQEAgUHJpbnQgdGhlIG5hbWVzIG9mIGFsbCBi aW5kYWJsZSBSZWFkbGluZQotIEBkZWZ0eXBlZnVuIHtjb25zdCBjaGFyICoqfSBybF9mdW5tYXBf bmFtZXMgKHZvaWQpCi0gUmV0dXJuIGEgTlVMTCB0ZXJtaW5hdGVkIGFycmF5IG9mIGtub3duIGZ1 bmN0aW9uIG5hbWVzLiAgVGhlIGFycmF5IGlzCi0gc29ydGVkLiAgVGhlIGFycmF5IGl0c2VsZiBp cyBhbGxvY2F0ZWQsIGJ1dCBub3QgdGhlIHN0cmluZ3MgaW5zaWRlLiAgWW91Ci0tc2hvdWxkIEBj b2Rle2ZyZWUoKX0gdGhlIGFycmF5IHdoZW4geW91IGFyZSBkb25lLCBidXQgbm90IHRoZSBwb2lu dGVycy4KLStzaG91bGQgZnJlZSB0aGUgYXJyYXksIGJ1dCBub3QgdGhlIHBvaW50ZXJzLCB1c2lu ZyBAY29kZXtmcmVlfSBvcgotK0Bjb2Rle3JsX2ZyZWV9IHdoZW4geW91IGFyZSBkb25lLgotIEBl bmQgZGVmdHlwZWZ1bgotIAotIEBkZWZ0eXBlZnVuIGludCBybF9hZGRfZnVubWFwX2VudHJ5IChj b25zdCBjaGFyICpuYW1lLCBybF9jb21tYW5kX2Z1bmNfdCAqZnVuY3Rpb24pCi1AQCAtMTAzMyw4 ICsxMDU5LDEwIEBAIHBlbmRpbmcgaW5wdXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gcmVhZCAKLSBA ZGVmdHlwZWZ1biBpbnQgcmxfc2V0X2tleWJvYXJkX2lucHV0X3RpbWVvdXQgKGludCB1KQotIFdo aWxlIHdhaXRpbmcgZm9yIGtleWJvYXJkIGlucHV0IGluIEBjb2Rle3JsX3JlYWRfa2V5KCl9LCBS ZWFkbGluZSB3aWxsCi0gd2FpdCBmb3IgQHZhcnt1fSBtaWNyb3NlY29uZHMgZm9yIGlucHV0IGJl Zm9yZSBjYWxsaW5nIGFueSBmdW5jdGlvbgotLWFzc2lnbmVkIHRvIEBjb2Rle3JsX2V2ZW50X2hv b2t9LiAgVGhlIGRlZmF1bHQgd2FpdGluZyBwZXJpb2QgaXMKLS1vbmUtdGVudGggb2YgYSBzZWNv bmQuICBSZXR1cm5zIHRoZSBvbGQgdGltZW91dCB2YWx1ZS4KLSthc3NpZ25lZCB0byBAY29kZXty bF9ldmVudF9ob29rfS4gIEB2YXJ7dX0gbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwKLSt0 byB6ZXJvIChhIHplcm8tbGVuZ3RoIHRpbWVvdXQgaXMgZXF1aXZhbGVudCB0byBhIHBvbGwpLgot K1RoZSBkZWZhdWx0IHdhaXRpbmcgcGVyaW9kIGlzIG9uZS10ZW50aCBvZiBhIHNlY29uZC4KLStS ZXR1cm5zIHRoZSBvbGQgdGltZW91dCB2YWx1ZS4KLSBAZW5kIGRlZnR5cGVmdW4KLSAKLSBAbm9k ZSBUZXJtaW5hbCBNYW5hZ2VtZW50Ci1AQCAtMTA3NSw2ICsxMTAzLDI2IEBAIGVudmlyb25tZW50 IHZhcmlhYmxlIGlzIHVzZWQuCi0gQG5vZGUgVXRpbGl0eSBGdW5jdGlvbnMKLSBAc3Vic2VjdGlv biBVdGlsaXR5IEZ1bmN0aW9ucwotIAotK0BkZWZ0eXBlZnVuIGludCBybF9zYXZlX3N0YXRlIChz dHJ1Y3QgcmVhZGxpbmVfc3RhdGUgKnNwKQotK1NhdmUgYSBzbmFwc2hvdCBvZiBSZWFkbGluZSdz IGludGVybmFsIHN0YXRlIHRvIEB2YXJ7c3B9LgotK1RoZSBjb250ZW50cyBvZiB0aGUgQHZhcnty ZWFkbGluZV9zdGF0ZX0gc3RydWN0dXJlIGFyZSBkb2N1bWVudGVkCi0raW4gQGZpbGV7cmVhZGxp bmUuaH0uCi0rVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgYWxsb2NhdGluZyB0aGUgc3Ry dWN0dXJlLgotK0BlbmQgZGVmdHlwZWZ1bgotKwotK0BkZWZ0eXBlZnVuIGludCBybF9yZXN0b3Jl X3N0YXRlIChzdHJ1Y3QgcmVhZGxpbmVfc3RhdGUgKnNwKQotK1Jlc3RvcmUgUmVhZGxpbmUncyBp bnRlcm5hbCBzdGF0ZSB0byB0aGF0IHN0b3JlZCBpbiBAdmFye3NwfSwgd2hpY2ggbXVzdAotK2hh dmUgYmVlbiBzYXZlZCBieSBhIGNhbGwgdG8gQGNvZGV7cmxfc2F2ZV9zdGF0ZX0uCi0rVGhlIGNv bnRlbnRzIG9mIHRoZSBAdmFye3JlYWRsaW5lX3N0YXRlfSBzdHJ1Y3R1cmUgYXJlIGRvY3VtZW50 ZWQKLStpbiBAZmlsZXtyZWFkbGluZS5ofS4KLStUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZv ciBmcmVlaW5nIHRoZSBzdHJ1Y3R1cmUuCi0rQGVuZCBkZWZ0eXBlZnVuCi0rCi0rQGRlZnR5cGVm dW4gdm9pZCBybF9mcmVlICh2b2lkICptZW0pCi0rRGVhbGxvY2F0ZSB0aGUgbWVtb3J5IHBvaW50 ZWQgdG8gYnkgQHZhcnttZW19LiAgQHZhcnttZW19IG11c3QgaGF2ZSBiZWVuCi0rYWxsb2NhdGVk IGJ5IEBjb2Rle21hbGxvY30uCi0rQGVuZCBkZWZ0eXBlZnVuCi0rCi0gQGRlZnR5cGVmdW4gdm9p ZCBybF9yZXBsYWNlX2xpbmUgKGNvbnN0IGNoYXIgKnRleHQsIGludCBjbGVhcl91bmRvKQotIFJl cGxhY2UgdGhlIGNvbnRlbnRzIG9mIEBjb2Rle3JsX2xpbmVfYnVmZmVyfSB3aXRoIEB2YXJ7dGV4 dH0uCi0gVGhlIHBvaW50IGFuZCBtYXJrIGFyZSBwcmVzZXJ2ZWQsIGlmIHBvc3NpYmxlLgotQEAg LTEwODIsNyArMTEzMCw3IEBAIElmIEB2YXJ7Y2xlYXJfdW5kb30gaXMgbm9uLXplcm8sIHRoZSB1 bmQKLSBjdXJyZW50IGxpbmUgaXMgY2xlYXJlZC4KLSBAZW5kIGRlZnR5cGVmdW4KLSAKLS1AZGVm dHlwZWZ1biBpbnQgcmxfZXh0ZW5kX2xpbmVfYnVmZmVyIChpbnQgbGVuKQotK0BkZWZ0eXBlZnVu IHZvaWQgcmxfZXh0ZW5kX2xpbmVfYnVmZmVyIChpbnQgbGVuKQotIEVuc3VyZSB0aGF0IEBjb2Rl e3JsX2xpbmVfYnVmZmVyfSBoYXMgZW5vdWdoIHNwYWNlIHRvIGhvbGQgQHZhcntsZW59Ci0gY2hh cmFjdGVycywgcG9zc2libHkgcmVhbGxvY2F0aW5nIGl0IGlmIG5lY2Vzc2FyeS4KLSBAZW5kIGRl ZnR5cGVmdW4KLUBAIC0xMTA5LDYgKzExNTcsOSBAQCBvZiBzdHJpbmdzLCBpbiBhcmd2IGZvcm1h dCwgc3VjaCBhcyBhIGxpCi0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBzdHJpbmcgaW4g QGNvZGV7bWF0Y2hlc30uICBUaGlzIGZ1bmN0aW9uIHVzZXMKLSB0aGUgc2V0dGluZyBvZiBAY29k ZXtwcmludC1jb21wbGV0aW9ucy1ob3Jpem9udGFsbHl9IHRvIHNlbGVjdCBob3cgdGhlCi0gbWF0 Y2hlcyBhcmUgZGlzcGxheWVkIChAcHhyZWZ7UmVhZGxpbmUgSW5pdCBGaWxlIFN5bnRheH0pLgot K1doZW4gZGlzcGxheWluZyBjb21wbGV0aW9ucywgdGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBudW1i ZXIgb2YgY29sdW1ucyB1c2VkCi0rZm9yIGRpc3BsYXkgdG8gdGhlIHZhbHVlIG9mIEBjb2Rle2Nv bXBsZXRpb24tZGlzcGxheS13aWR0aH0sIHRoZSB2YWx1ZSBvZgotK3RoZSBlbnZpcm9ubWVudCB2 YXJpYWJsZSBAZW52e0NPTFVNTlN9LCBvciB0aGUgc2NyZWVuIHdpZHRoLCBpbiB0aGF0IG9yZGVy LgotIEBlbmQgZGVmdHlwZWZ1bgotIAotIFRoZSBmb2xsb3dpbmcgYXJlIGltcGxlbWVudGVkIGFz IG1hY3JvcywgZGVmaW5lZCBpbiBAY29kZXtjaGFyZGVmcy5ofS4KLUBAIC0xMzkyLDYgKzE0NDMs MTMgQEAgY2FsbCBAY29kZXtybF9yZXNpemVfdGVybWluYWwoKX0gb3IgQGNvZAotIFJlYWRsaW5l IHRvIHVwZGF0ZSBpdHMgaWRlYSBvZiB0aGUgdGVybWluYWwgc2l6ZSB3aGVuIGEgQGNvZGV7U0lH V0lOQ0h9Ci0gaXMgcmVjZWl2ZWQuCi0gCi0rQGRlZnR5cGVmdW4gdm9pZCBybF9lY2hvX3NpZ25h bF9jaGFyIChpbnQgc2lnKQotK0lmIGFuIGFwcGxpY2F0aW9uIHdpc2hlcyB0byBpbnN0YWxsIGl0 cyBvd24gc2lnbmFsIGhhbmRsZXJzLCBidXQgc3RpbGwKLStoYXZlIHJlYWRsaW5lIGRpc3BsYXkg Y2hhcmFjdGVycyB0aGF0IGdlbmVyYXRlIHNpZ25hbHMsIGNhbGxpbmcgdGhpcwotK2Z1bmN0aW9u IHdpdGggQHZhcntzaWd9IHNldCB0byBAY29kZXtTSUdJTlR9LCBAY29kZXtTSUdRVUlUfSwgb3IK LStAY29kZXtTSUdUU1RQfSB3aWxsIGRpc3BsYXkgdGhlIGNoYXJhY3RlciBnZW5lcmF0aW5nIHRo YXQgc2lnbmFsLgotK0BlbmQgZGVmdHlwZWZ1bgotKwotIEBkZWZ0eXBlZnVuIHZvaWQgcmxfcmVz aXplX3Rlcm1pbmFsICh2b2lkKQotIFVwZGF0ZSBSZWFkbGluZSdzIGludGVybmFsIHNjcmVlbiBz aXplIGJ5IHJlYWRpbmcgdmFsdWVzIGZyb20gdGhlIGtlcm5lbC4KLSBAZW5kIGRlZnR5cGVmdW4K LUBAIC0xNjU5LDE1ICsxNzE3LDQ5IEBAIGZyb20gdGhlIGFycmF5IG11c3QgYmUgZnJlZWQuCi0g Ci0gQGRlZnR5cGV2YXIge3JsX2ljcHBmdW5jX3QgKn0gcmxfZGlyZWN0b3J5X2NvbXBsZXRpb25f aG9vawotIFRoaXMgZnVuY3Rpb24sIGlmIGRlZmluZWQsIGlzIGFsbG93ZWQgdG8gbW9kaWZ5IHRo ZSBkaXJlY3RvcnkgcG9ydGlvbgotLW9mIGZpbGVuYW1lcyBSZWFkbGluZSBjb21wbGV0ZXMuICBJ dCBpcyBjYWxsZWQgd2l0aCB0aGUgYWRkcmVzcyBvZiBhCi0tc3RyaW5nICh0aGUgY3VycmVudCBk aXJlY3RvcnkgbmFtZSkgYXMgYW4gYXJndW1lbnQsIGFuZCBtYXkgbW9kaWZ5IHRoYXQgc3RyaW5n LgotK29mIGZpbGVuYW1lcyBSZWFkbGluZSBjb21wbGV0ZXMuCi0rSXQgY291bGQgYmUgdXNlZCB0 byBleHBhbmQgc3ltYm9saWMgbGlua3Mgb3Igc2hlbGwgdmFyaWFibGVzIGluIHBhdGhuYW1lcy4K LStJdCBpcyBjYWxsZWQgd2l0aCB0aGUgYWRkcmVzcyBvZiBhIHN0cmluZyAodGhlIGN1cnJlbnQg ZGlyZWN0b3J5IG5hbWUpIGFzIGFuCi0rYXJndW1lbnQsIGFuZCBtYXkgbW9kaWZ5IHRoYXQgc3Ry aW5nLgotIElmIHRoZSBzdHJpbmcgaXMgcmVwbGFjZWQgd2l0aCBhIG5ldyBzdHJpbmcsIHRoZSBv bGQgdmFsdWUgc2hvdWxkIGJlIGZyZWVkLgotIEFueSBtb2RpZmllZCBkaXJlY3RvcnkgbmFtZSBz aG91bGQgaGF2ZSBhIHRyYWlsaW5nIHNsYXNoLgotLVRoZSBtb2RpZmllZCB2YWx1ZSB3aWxsIGJl IGRpc3BsYXllZCBhcyBwYXJ0IG9mIHRoZSBjb21wbGV0aW9uLCByZXBsYWNpbmcKLStUaGUgbW9k aWZpZWQgdmFsdWUgd2lsbCBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIGNvbXBsZXRpb24sIHJlcGxh Y2luZwotIHRoZSBkaXJlY3RvcnkgcG9ydGlvbiBvZiB0aGUgcGF0aG5hbWUgdGhlIHVzZXIgdHlw ZWQuCi0tSXQgcmV0dXJucyBhbiBpbnRlZ2VyIHRoYXQgc2hvdWxkIGJlIG5vbi16ZXJvIGlmIHRo ZSBmdW5jdGlvbiBtb2RpZmllcwotLWl0cyBkaXJlY3RvcnkgYXJndW1lbnQuCi0tSXQgY291bGQg YmUgdXNlZCB0byBleHBhbmQgc3ltYm9saWMgbGlua3Mgb3Igc2hlbGwgdmFyaWFibGVzIGluIHBh dGhuYW1lcy4KLStBdCB0aGUgbGVhc3QsIGV2ZW4gaWYgbm8gb3RoZXIgZXhwYW5zaW9uIGlzIHBl cmZvcm1lZCwgdGhpcyBmdW5jdGlvbiBzaG91bGQKLStyZW1vdmUgYW55IHF1b3RlIGNoYXJhY3Rl cnMgZnJvbSB0aGUgZGlyZWN0b3J5IG5hbWUsIGJlY2F1c2UgaXRzIHJlc3VsdCB3aWxsCi0rYmUg cGFzc2VkIGRpcmVjdGx5IHRvIEBjb2Rle29wZW5kaXIoKX0uCi0rVGhlIGRpcmVjdG9yeSBjb21w bGV0aW9uIGhvb2sgcmV0dXJucyBhbiBpbnRlZ2VyIHRoYXQgc2hvdWxkIGJlIG5vbi16ZXJvIGlm Ci0rdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIGl0cyBkaXJlY3RvcnkgYXJndW1lbnQuCi0rVGhlIGZ1 bmN0aW9uIHNob3VsZCBub3QgbW9kaWZ5IHRoZSBkaXJlY3RvcnkgYXJndW1lbnQgaWYgaXQgcmV0 dXJucyAwLgotK0BlbmQgZGVmdHlwZXZhcgotKwotK0BpZ25vcmUKLStAZGVmdHlwZXZhciBleHRl cm4gcmxfaWNwcGZ1bmNfdCAqcmxfZGlyZWN0b3J5X3Jld3JpdGVfaG9vazsKLStJZiBub24temVy bywgdGhpcyBpcyB0aGUgYWRkcmVzcyBvZiBhIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBjb21wbGV0 aW5nCi0rYSBkaXJlY3RvcnkgbmFtZS4gIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGFkZHJlc3Mg b2YgdGhlIGRpcmVjdG9yeSBuYW1lCi0rdG8gYmUgbW9kaWZpZWQgYXMgYW4gYXJndW1lbnQuICBV bmxpa2UgQGNvZGV7cmxfZGlyZWN0b3J5X2NvbXBsZXRpb25faG9va30sCi0raXQgb25seSBtb2Rp ZmllcyB0aGUgZGlyZWN0b3J5IG5hbWUgdXNlZCBpbiBAY29kZXtvcGVuZGlyfSwgbm90IHdoYXQg aXMKLStkaXNwbGF5ZWQgd2hlbiB0aGUgcG9zc2libGUgY29tcGxldGlvbnMgYXJlIHByaW50ZWQg b3IgaW5zZXJ0ZWQuICBJdCBpcwotK2NhbGxlZCBiZWZvcmUgcmxfZGlyZWN0b3J5X2NvbXBsZXRp b25faG9vay4KLSsKLStJJ20gbm90IGhhcHB5IHdpdGggaG93IHRoaXMgd29ya3MgeWV0LCBzbyBp dCdzIHVuZG9jdW1lbnRlZC4KLStAZW5kIGRlZnR5cGV2YXIKLStAZW5kIGlnbm9yZQotKwotK0Bk ZWZ0eXBldmFyIHtybF9kZXF1b3RlX2Z1bmNfdCAqfSBybF9maWxlbmFtZV9yZXdyaXRlX2hvb2sK LStJZiBub24temVybywgdGhpcyBpcyB0aGUgYWRkcmVzcyBvZiBhIGZ1bmN0aW9uIGNhbGxlZCB3 aGVuIHJlYWRpbmcKLStkaXJlY3RvcnkgZW50cmllcyBmcm9tIHRoZSBmaWxlc3lzdGVtIGZvciBj b21wbGV0aW9uIGFuZCBjb21wYXJpbmcKLSt0aGVtIHRvIHRoZSBwYXJ0aWFsIHdvcmQgdG8gYmUg Y29tcGxldGVkLiAgVGhlIGZ1bmN0aW9uIHNob3VsZAotK3BlcmZvcm0gYW55IG5lY2VzYXJ5IGFw cGxpY2F0aW9uIG9yIHN5c3RlbS1zcGVjaWZpYyBjb252ZXJzaW9uIG9uCi0rdGhlIGZpbGVuYW1l LCBzdWNoIGFzIGNvbnZlcnRpbmcgYmV0d2VlbiBjaGFyYWN0ZXIgc2V0cyBvciBjb252ZXJ0aW5n Ci0rZnJvbSBhIGZpbGVzeXN0ZW0gZm9ybWF0IHRvIGEgY2hhcmFjdGVyIGlucHV0IGZvcm1hdC4K LStUaGUgZnVuY3Rpb24gdGFrZXMgdHdvIGFyZ3VtZW50czogQHZhcntmbmFtZX0sIHRoZSBmaWxl bmFtZSB0byBiZSBjb252ZXJ0ZWQsCi0rYW5kIEB2YXJ7Zm5sZW59LCBpdHMgbGVuZ3RoIGluIGJ5 dGVzLgotK0l0IG11c3QgZWl0aGVyIHJldHVybiBpdHMgZmlyc3QgYXJndW1lbnQgKGlmIG5vIGNv bnZlcnNpb24gdGFrZXMgcGxhY2UpCi0rb3IgdGhlIGNvbnZlcnRlZCBmaWxlbmFtZSBpbiBuZXds eS1hbGxvY2F0ZWQgbWVtb3J5LiAgVGhlIGNvbnZlcnRlZAotK2Zvcm0gaXMgdXNlZCB0byBjb21w YXJlIGFnYWluc3QgdGhlIHdvcmQgdG8gYmUgY29tcGxldGVkLCBhbmQsIGlmIGl0Ci0rbWF0Y2hl cywgaXMgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgbWF0Y2hlcy4gIFJlYWRsaW5lIHdpbGwgZnJlZSB0 aGUKLSthbGxvY2F0ZWQgc3RyaW5nLgotIEBlbmQgZGVmdHlwZXZhcgotIAotIEBkZWZ0eXBldmFy IHtybF9jb21wZGlzcF9mdW5jX3QgKn0gcmxfY29tcGxldGlvbl9kaXNwbGF5X21hdGNoZXNfaG9v awotQEAgLTE4MjIsNiArMTkxNCwxNSBAQCBpZiB0aGUgYXBwbGljYXRpb24ncyBjb21wbGV0aW9u IGZ1bmN0aW9uCi0gSXQgc2hvdWxkIGJlIHNldCBvbmx5IGJ5IGFuIGFwcGxpY2F0aW9uJ3MgY29t cGxldGlvbiBmdW5jdGlvbi4KLSBAZW5kIGRlZnR5cGV2YXIKLSAKLStAZGVmdHlwZXZhciBpbnQg cmxfc29ydF9jb21wbGV0aW9uX21hdGNoZXMKLStJZiBhbiBhcHBsaWNhdGlvbiBzZXRzIHRoaXMg dmFyaWFibGUgdG8gMCwgUmVhZGxpbmUgd2lsbCBub3Qgc29ydCB0aGUKLStsaXN0IG9mIGNvbXBs ZXRpb25zICh3aGljaCBpbXBsaWVzIHRoYXQgaXQgY2Fubm90IHJlbW92ZSBhbnkgZHVwbGljYXRl Ci0rY29tcGxldGlvbnMpLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMSwgd2hpY2ggbWVhbnMgdGhh dCBSZWFkbGluZSB3aWxsCi0rc29ydCB0aGUgY29tcGxldGlvbnMgYW5kLCBkZXBlbmRpbmcgb24g dGhlIHZhbHVlIG9mCi0rQGNvZGV7cmxfaWdub3JlX2NvbXBsZXRpb25fZHVwbGljYXRlc30sIHdp bGwgYXR0ZW1wdCB0byByZW1vdmUgZHVwbGljYXRlCi0rbWF0Y2hlcy4KLStAZW5kIGRlZnR5cGV2 YXIKLSsKLSBAZGVmdHlwZXZhciBpbnQgcmxfY29tcGxldGlvbl90eXBlCi0gU2V0IHRvIGEgY2hh cmFjdGVyIGRlc2NyaWJpbmcgdGhlIHR5cGUgb2YgY29tcGxldGlvbiBSZWFkbGluZSBpcyBjdXJy ZW50bHkKLSBhdHRlbXB0aW5nOyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIEBjb2Rle3JsX2NvbXBs ZXRlX2ludGVybmFsKCl9Ci1AQCAtMTgzMSw2ICsxOTMyLDEzIEBAIGNvbXBsZXRpb24gZnVuY3Rp b24gaXMgY2FsbGVkLCBhbGxvd2luZyAKLSB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgQGNvZGV7cmxf Y29tcGxldGUoKX0uCi0gQGVuZCBkZWZ0eXBldmFyCi0gCi0rQGRlZnR5cGV2YXIgaW50IHJsX2Nv bXBsZXRpb25faW52b2tpbmdfa2V5Ci0rU2V0IHRvIHRoZSBmaW5hbCBjaGFyYWN0ZXIgaW4gdGhl IGtleSBzZXF1ZW5jZSB0aGF0IGludm9rZWQgb25lIG9mIHRoZQotK2NvbXBsZXRpb24gZnVuY3Rp b25zIHRoYXQgY2FsbCBAY29kZXtybF9jb21wbGV0ZV9pbnRlcm5hbCgpfS4gIFRoaXMgaXMKLStz ZXQgdG8gdGhlIGFwcHJvcHJpYXRlIHZhbHVlIGJlZm9yZSBhbnkgYXBwbGljYXRpb24tc3BlY2lm aWMgY29tcGxldGlvbgotK2Z1bmN0aW9uIGlzIGNhbGxlZC4KLStAZW5kIGRlZnR5cGV2YXIKLSsK LSBAZGVmdHlwZXZhciBpbnQgcmxfaW5oaWJpdF9jb21wbGV0aW9uCi0gSWYgdGhpcyB2YXJpYWJs ZSBpcyBub24temVybywgY29tcGxldGlvbiBpcyBpbmhpYml0ZWQuICBUaGUgY29tcGxldGlvbgot IGNoYXJhY3RlciB3aWxsIGJlIGluc2VydGVkIGFzIGFueSBvdGhlciBib3VuZCB0byBAY29kZXtz ZWxmLWluc2VydH0uCi1AQCAtMTg1MSwyNyArMTk1OSw1MSBAQCBoaXN0b3J5IGxpc3QuCi0gICAg R05VIFJlYWRsaW5lIGxpYnJhcnkuICBUaGlzIGFwcGxpY2F0aW9uIGludGVyYWN0aXZlbHkgYWxs b3dzIHVzZXJzCi0gICAgdG8gbWFuaXB1bGF0ZSBmaWxlcyBhbmQgdGhlaXIgbW9kZXMuICovCi0g Ci0tI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjICBpbmNsdWRl IDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2luY2x1 ZGUgPHN5cy9maWxlLmg+Ci0rI2lmZGVmIEhBVkVfU1lTX0ZJTEVfSAotKyMgIGluY2x1ZGUgPHN5 cy9maWxlLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0tI2luY2x1ZGUgPHN5 cy9lcnJuby5oPgotKwotKyNpZmRlZiBIQVZFX1VOSVNURF9ICi0rIyAgaW5jbHVkZSA8dW5pc3Rk Lmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+ Ci0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rCi0rI2lmIGRlZmluZWQgKEhBVkVfU1RSSU5HX0gpCi0r IyAgaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2Vsc2UgLyogIUhBVkVfU1RSSU5HX0ggKi8KLSsjICBp bmNsdWRlIDxzdHJpbmdzLmg+Ci0rI2VuZGlmIC8qICFIQVZFX1NUUklOR19IICovCi0rCi0rI2lm ZGVmIEhBVkVfU1RETElCX0gKLSsjICBpbmNsdWRlIDxzdGRsaWIuaD4KLSsjZW5kaWYKLSsKLSsj aW5jbHVkZSA8dGltZS5oPgotIAotICNpbmNsdWRlIDxyZWFkbGluZS9yZWFkbGluZS5oPgotICNp bmNsdWRlIDxyZWFkbGluZS9oaXN0b3J5Lmg+Ci0gCi0tZXh0ZXJuIGNoYXIgKnhtYWxsb2MgKCk7 Ci0rZXh0ZXJuIGNoYXIgKnhtYWxsb2MgUEFSQU1TKChzaXplX3QpKTsKLSAKLSAvKiBUaGUgbmFt ZXMgb2YgZnVuY3Rpb25zIHRoYXQgYWN0dWFsbHkgZG8gdGhlIG1hbmlwdWxhdGlvbi4gKi8KLS1p bnQgY29tX2xpc3QgX19QKChjaGFyICopKTsKLS1pbnQgY29tX3ZpZXcgX19QKChjaGFyICopKTsK LS1pbnQgY29tX3JlbmFtZSBfX1AoKGNoYXIgKikpOwotLWludCBjb21fc3RhdCBfX1AoKGNoYXIg KikpOwotLWludCBjb21fcHdkIF9fUCgoY2hhciAqKSk7Ci0taW50IGNvbV9kZWxldGUgX19QKChj aGFyICopKTsKLS1pbnQgY29tX2hlbHAgX19QKChjaGFyICopKTsKLS1pbnQgY29tX2NkIF9fUCgo Y2hhciAqKSk7Ci0taW50IGNvbV9xdWl0IF9fUCgoY2hhciAqKSk7Ci0raW50IGNvbV9saXN0IFBB UkFNUygoY2hhciAqKSk7Ci0raW50IGNvbV92aWV3IFBBUkFNUygoY2hhciAqKSk7Ci0raW50IGNv bV9yZW5hbWUgUEFSQU1TKChjaGFyICopKTsKLStpbnQgY29tX3N0YXQgUEFSQU1TKChjaGFyICop KTsKLStpbnQgY29tX3B3ZCBQQVJBTVMoKGNoYXIgKikpOwotK2ludCBjb21fZGVsZXRlIFBBUkFN UygoY2hhciAqKSk7Ci0raW50IGNvbV9oZWxwIFBBUkFNUygoY2hhciAqKSk7Ci0raW50IGNvbV9j ZCBQQVJBTVMoKGNoYXIgKikpOwotK2ludCBjb21fcXVpdCBQQVJBTVMoKGNoYXIgKikpOwotIAot IC8qIEEgc3RydWN0dXJlIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIG9uIHRoZSBjb21tYW5k cyB0aGlzIHByb2dyYW0KLSAgICBjYW4gdW5kZXJzdGFuZC4gKi8KLUBAIC0xOTA0LDEyICsyMDM2 LDEyIEBAIENPTU1BTkQgKmZpbmRfY29tbWFuZCAoKTsKLSAvKiBUaGUgbmFtZSBvZiB0aGlzIHBy b2dyYW0sIGFzIHRha2VuIGZyb20gYXJndlswXS4gKi8KLSBjaGFyICpwcm9nbmFtZTsKLSAKLS0v KiBXaGVuIG5vbi16ZXJvLCB0aGlzIG1lYW5zIHRoZSB1c2VyIGlzIGRvbmUgdXNpbmcgdGhpcyBw cm9ncmFtLiAqLwotKy8qIFdoZW4gbm9uLXplcm8sIHRoaXMgZ2xvYmFsIG1lYW5zIHRoZSB1c2Vy IGlzIGRvbmUgdXNpbmcgdGhpcyBwcm9ncmFtLiAqLwotIGludCBkb25lOwotIAotIGNoYXIgKgot IGR1cHN0ciAocykKLS0gICAgIGludCBzOwotKyAgICAgY2hhciAqczsKLSBAewotICAgY2hhciAq cjsKLSAKLUBAIC0yMDM0LDEyICsyMTY2LDEyIEBAIHN0cmlwd2hpdGUgKHN0cmluZykKLSAvKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICovCi0gLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiAqLwotIAotLWNoYXIgKmNvbW1hbmRfZ2VuZXJhdG9yIF9f UCgoY29uc3QgY2hhciAqLCBpbnQpKTsKLS1jaGFyICoqZmlsZW1hbl9jb21wbGV0aW9uIF9fUCgo Y29uc3QgY2hhciAqLCBpbnQsIGludCkpOwotK2NoYXIgKmNvbW1hbmRfZ2VuZXJhdG9yIFBBUkFN UygoY29uc3QgY2hhciAqLCBpbnQpKTsKLStjaGFyICoqZmlsZW1hbl9jb21wbGV0aW9uIFBBUkFN UygoY29uc3QgY2hhciAqLCBpbnQsIGludCkpOwotIAotLS8qIFRlbGwgdGhlIEdOVSBSZWFkbGlu ZSBsaWJyYXJ5IGhvdyB0byBjb21wbGV0ZS4gIFdlIHdhbnQgdG8gdHJ5IHRvCi0tICAgY29tcGxl dGUgb24gY29tbWFuZCBuYW1lcyBpZiB0aGlzIGlzIHRoZSBmaXJzdCB3b3JkIGluIHRoZSBsaW5l LCBvcgotLSAgIG9uIGZpbGVuYW1lcyBpZiBub3QuICovCi0rLyogVGVsbCB0aGUgR05VIFJlYWRs aW5lIGxpYnJhcnkgaG93IHRvIGNvbXBsZXRlLiAgV2Ugd2FudCB0byB0cnkgdG8gY29tcGxldGUK LSsgICBvbiBjb21tYW5kIG5hbWVzIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHdvcmQgaW4gdGhlIGxp bmUsIG9yIG9uIGZpbGVuYW1lcwotKyAgIGlmIG5vdC4gKi8KLSBpbml0aWFsaXplX3JlYWRsaW5l ICgpCi0gQHsKLSAgIC8qIEFsbG93IGNvbmRpdGlvbmFsIHBhcnNpbmcgb2YgdGhlIH4vLmlucHV0 cmMgZmlsZS4gKi8KLUBAIC0yMDQ5LDExICsyMTgxLDExIEBAIGluaXRpYWxpemVfcmVhZGxpbmUg KCkKLSAgIHJsX2F0dGVtcHRlZF9jb21wbGV0aW9uX2Z1bmN0aW9uID0gZmlsZW1hbl9jb21wbGV0 aW9uOwotIEB9Ci0gCi0tLyogQXR0ZW1wdCB0byBjb21wbGV0ZSBvbiB0aGUgY29udGVudHMgb2Yg VEVYVC4gIFNUQVJUIGFuZCBFTkQKLS0gICBib3VuZCB0aGUgcmVnaW9uIG9mIHJsX2xpbmVfYnVm ZmVyIHRoYXQgY29udGFpbnMgdGhlIHdvcmQgdG8KLS0gICBjb21wbGV0ZS4gIFRFWFQgaXMgdGhl IHdvcmQgdG8gY29tcGxldGUuICBXZSBjYW4gdXNlIHRoZSBlbnRpcmUKLS0gICBjb250ZW50cyBv ZiBybF9saW5lX2J1ZmZlciBpbiBjYXNlIHdlIHdhbnQgdG8gZG8gc29tZSBzaW1wbGUKLS0gICBw YXJzaW5nLiAgUmV0dXJudGhlIGFycmF5IG9mIG1hdGNoZXMsIG9yIE5VTEwgaWYgdGhlcmUgYXJl bid0IGFueS4gKi8KLSsvKiBBdHRlbXB0IHRvIGNvbXBsZXRlIG9uIHRoZSBjb250ZW50cyBvZiBU RVhULiAgU1RBUlQgYW5kIEVORCBib3VuZCB0aGUKLSsgICByZWdpb24gb2YgcmxfbGluZV9idWZm ZXIgdGhhdCBjb250YWlucyB0aGUgd29yZCB0byBjb21wbGV0ZS4gIFRFWFQgaXMKLSsgICB0aGUg d29yZCB0byBjb21wbGV0ZS4gIFdlIGNhbiB1c2UgdGhlIGVudGlyZSBjb250ZW50cyBvZiBybF9s aW5lX2J1ZmZlcgotKyAgIGluIGNhc2Ugd2Ugd2FudCB0byBkbyBzb21lIHNpbXBsZSBwYXJzaW5n LiAgUmV0dXJuIHRoZSBhcnJheSBvZiBtYXRjaGVzLAotKyAgIG9yIE5VTEwgaWYgdGhlcmUgYXJl bid0IGFueS4gKi8KLSBjaGFyICoqCi0gZmlsZW1hbl9jb21wbGV0aW9uICh0ZXh0LCBzdGFydCwg ZW5kKQotICAgICAgY29uc3QgY2hhciAqdGV4dDsKLUBAIC0yMDcyLDkgKzIyMDQsOSBAQCBmaWxl bWFuX2NvbXBsZXRpb24gKHRleHQsIHN0YXJ0LCBlbmQpCi0gICByZXR1cm4gKG1hdGNoZXMpOwot IEB9Ci0gCi0tLyogR2VuZXJhdG9yIGZ1bmN0aW9uIGZvciBjb21tYW5kIGNvbXBsZXRpb24uICBT VEFURSBsZXRzIHVzCi0tICAga25vdyB3aGV0aGVyIHRvIHN0YXJ0IGZyb20gc2NyYXRjaDsgd2l0 aG91dCBhbnkgc3RhdGUKLS0gICAoaS5lLiBTVEFURSA9PSAwKSwgdGhlbiB3ZSBzdGFydCBhdCB0 aGUgdG9wIG9mIHRoZSBsaXN0LiAqLwotKy8qIEdlbmVyYXRvciBmdW5jdGlvbiBmb3IgY29tbWFu ZCBjb21wbGV0aW9uLiAgU1RBVEUgbGV0cyB1cyBrbm93IHdoZXRoZXIKLSsgICB0byBzdGFydCBm cm9tIHNjcmF0Y2g7IHdpdGhvdXQgYW55IHN0YXRlIChpLmUuIFNUQVRFID09IDApLCB0aGVuIHdl Ci0rICAgc3RhcnQgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdC4gKi8KLSBjaGFyICoKLSBjb21tYW5k X2dlbmVyYXRvciAodGV4dCwgc3RhdGUpCi0gICAgICBjb25zdCBjaGFyICp0ZXh0OwotQEAgLTIw ODMsMTcgKzIyMTUsMTYgQEAgY29tbWFuZF9nZW5lcmF0b3IgKHRleHQsIHN0YXRlKQotICAgc3Rh dGljIGludCBsaXN0X2luZGV4LCBsZW47Ci0gICBjaGFyICpuYW1lOwotIAotLSAgLyogSWYgdGhp cyBpcyBhIG5ldyB3b3JkIHRvIGNvbXBsZXRlLCBpbml0aWFsaXplIG5vdy4gIFRoaXMKLS0gICAg IGluY2x1ZGVzIHNhdmluZyB0aGUgbGVuZ3RoIG9mIFRFWFQgZm9yIGVmZmljaWVuY3ksIGFuZAot LSAgICAgaW5pdGlhbGl6aW5nIHRoZSBpbmRleCB2YXJpYWJsZSB0byAwLiAqLwotKyAgLyogSWYg dGhpcyBpcyBhIG5ldyB3b3JkIHRvIGNvbXBsZXRlLCBpbml0aWFsaXplIG5vdy4gIFRoaXMgaW5j bHVkZXMKLSsgICAgIHNhdmluZyB0aGUgbGVuZ3RoIG9mIFRFWFQgZm9yIGVmZmljaWVuY3ksIGFu ZCBpbml0aWFsaXppbmcgdGhlIGluZGV4Ci0rICAgICB2YXJpYWJsZSB0byAwLiAqLwotICAgaWYg KCFzdGF0ZSkKLSAgICAgQHsKLSAgICAgICBsaXN0X2luZGV4ID0gMDsKLSAgICAgICBsZW4gPSBz dHJsZW4gKHRleHQpOwotICAgICBAfQotIAotLSAgLyogUmV0dXJuIHRoZSBuZXh0IG5hbWUgd2hp Y2ggcGFydGlhbGx5IG1hdGNoZXMgZnJvbSB0aGUKLS0gICAgIGNvbW1hbmQgbGlzdC4gKi8KLSsg IC8qIFJldHVybiB0aGUgbmV4dCBuYW1lIHdoaWNoIHBhcnRpYWxseSBtYXRjaGVzIGZyb20gdGhl IGNvbW1hbmQgbGlzdC4gKi8KLSAgIHdoaWxlIChuYW1lID0gY29tbWFuZHNbbGlzdF9pbmRleF0u bmFtZSkKLSAgICAgQHsKLSAgICAgICBsaXN0X2luZGV4Kys7Ci1AQCAtMjEzMyw3ICsyMjY0LDEy IEBAIGNvbV92aWV3IChhcmcpCi0gICBpZiAoIXZhbGlkX2FyZ3VtZW50ICgidmlldyIsIGFyZykp Ci0gICAgIHJldHVybiAxOwotIAotKyNpZiBkZWZpbmVkIChfX01TRE9TX18pCi0rICAvKiBtb3Jl LmNvbSBkb2Vzbid0IGdyb2sgc2xhc2hlcyBpbiBwYXRobmFtZXMgKi8KLSsgIHNwcmludGYgKHN5 c2NvbSwgImxlc3MgJXMiLCBhcmcpOwotKyNlbHNlCi0gICBzcHJpbnRmIChzeXNjb20sICJtb3Jl ICVzIiwgYXJnKTsKLSsjZW5kaWYKLSAgIHJldHVybiAoc3lzdGVtIChzeXNjb20pKTsKLSBAfQot IAotQEAgLTIxNjAsNyArMjI5Niw4IEBAIGNvbV9zdGF0IChhcmcpCi0gCi0gICBwcmludGYgKCJT dGF0aXN0aWNzIGZvciBgJXMnOlxuIiwgYXJnKTsKLSAKLS0gIHByaW50ZiAoIiVzIGhhcyAlZCBs aW5rJXMsIGFuZCBpcyAlZCBieXRlJXMgaW4gbGVuZ3RoLlxuIiwgYXJnLAotKyAgcHJpbnRmICgi JXMgaGFzICVkIGxpbmslcywgYW5kIGlzICVkIGJ5dGUlcyBpbiBsZW5ndGguXG4iLAotKwkgIGFy ZywKLSAgICAgICAgICAgZmluZm8uc3RfbmxpbmssCi0gICAgICAgICAgIChmaW5mby5zdF9ubGlu ayA9PSAxKSA/ICIiIDogInMiLAotICAgICAgICAgICBmaW5mby5zdF9zaXplLAotQEAgLTIyNDks OCArMjM4Niw3IEBAIGNvbV9wd2QgKGlnbm9yZSkKLSAgIHJldHVybiAwOwotIEB9Ci0gCi0tLyog VGhlIHVzZXIgd2lzaGVzIHRvIHF1aXQgdXNpbmcgdGhpcyBwcm9ncmFtLiAgSnVzdCBzZXQgRE9O RQotLSAgIG5vbi16ZXJvLiAqLwotKy8qIFRoZSB1c2VyIHdpc2hlcyB0byBxdWl0IHVzaW5nIHRo aXMgcHJvZ3JhbS4gIEp1c3Qgc2V0IERPTkUgbm9uLXplcm8uICovCi0gY29tX3F1aXQgKGFyZykK LSAgICAgIGNoYXIgKmFyZzsKLSBAewotQEAgLTIyNjMsMTMgKzIzOTksMTIgQEAgdG9vX2Rhbmdl cm91cyAoY2FsbGVyKQotICAgICAgY2hhciAqY2FsbGVyOwotIEB7Ci0gICBmcHJpbnRmIChzdGRl cnIsCi0tICAgICAgICAgICAiJXM6IFRvbyBkYW5nZXJvdXMgZm9yIG1lIHRvIGRpc3RyaWJ1dGUu XG4iLAotKyAgICAgICAgICAgIiVzOiBUb28gZGFuZ2Vyb3VzIGZvciBtZSB0byBkaXN0cmlidXRl LiAgV3JpdGUgaXQgeW91cnNlbGYuXG4iLAotICAgICAgICAgICAgY2FsbGVyKTsKLS0gIGZwcmlu dGYgKHN0ZGVyciwgIldyaXRlIGl0IHlvdXJzZWxmLlxuIik7Ci0gQH0KLSAKLS0vKiBSZXR1cm4g bm9uLXplcm8gaWYgQVJHIGlzIGEgdmFsaWQgYXJndW1lbnQgZm9yIENBTExFUiwKLS0gICBlbHNl IHByaW50IGFuIGVycm9yIG1lc3NhZ2UgYW5kIHJldHVybiB6ZXJvLiAqLwotKy8qIFJldHVybiBu b24temVybyBpZiBBUkcgaXMgYSB2YWxpZCBhcmd1bWVudCBmb3IgQ0FMTEVSLCBlbHNlIHByaW50 Ci0rICAgYW4gZXJyb3IgbWVzc2FnZSBhbmQgcmV0dXJuIHplcm8uICovCi0gaW50Ci0gdmFsaWRf YXJndW1lbnQgKGNhbGxlciwgYXJnKQotICAgICAgY2hhciAqY2FsbGVyLCAqYXJnOwotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL3JsdXNlci50ZXhpCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2RvYy9ybHVzZXIudGV4aQky MDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3 MDMvcmVhZGxpbmUvZG9jL3JsdXNlci50ZXhpCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAw ICswMjAwCi1AQCAtMSw3ICsxLDYgQEAKLSBAY29tbWVudCAlKipzdGFydCBvZiBoZWFkZXIgKFRo aXMgaXMgZm9yIHJ1bm5pbmcgVGV4aW5mbyBvbiBhIHJlZ2lvbi4pCi0gQHNldGZpbGVuYW1lIHJs dXNlci5pbmZvCi0gQGNvbW1lbnQgJSoqZW5kIG9mIGhlYWRlciAoVGhpcyBpcyBmb3IgcnVubmlu ZyBUZXhpbmZvIG9uIGEgcmVnaW9uLikKLS1Ac2V0Y2hhcHRlcm5ld3BhZ2Ugb2RkCi0gCi0gQGln bm9yZQotIFRoaXMgZmlsZSBkb2N1bWVudHMgdGhlIGVuZCB1c2VyIGludGVyZmFjZSB0byB0aGUg R05VIGNvbW1hbmQgbGluZQotQEAgLTEwLDcgKzksNyBAQCB1c2UgdGhlc2UgZmVhdHVyZXMuICBU aGVyZSBpcyBhIGRvY3VtZW50Ci0gd2hpY2ggY29udGFpbnMgYm90aCBlbmQtdXNlciBhbmQgcHJv Z3JhbW1lciBkb2N1bWVudGF0aW9uIGZvciB0aGUKLSBHTlUgUmVhZGxpbmUgTGlicmFyeS4KLSAK LS1Db3B5cmlnaHQgKEMpIDE5ODgtMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LStDb3B5cmlnaHQgKEMpIDE5ODgtLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0gCi0gQXV0aG9yZWQgYnkgQnJpYW4gRm94IGFuZCBDaGV0IFJhbWV5LgotIAotQEAgLTQ4LDYg KzQ3LDE2IEBAIGNvbW1hbmQgbGluZSBlZGl0aW5nIGludGVyZmFjZS4KLSBAaWZzZXQgQmFzaEZl YXR1cmVzCi0gQ29tbWFuZCBsaW5lIGVkaXRpbmcgaXMgcHJvdmlkZWQgYnkgdGhlIFJlYWRsaW5l IGxpYnJhcnksIHdoaWNoIGlzCi0gdXNlZCBieSBzZXZlcmFsIGRpZmZlcmVudCBwcm9ncmFtcywg aW5jbHVkaW5nIEJhc2guCi0rQ29tbWFuZCBsaW5lIGVkaXRpbmcgaXMgZW5hYmxlZCBieSBkZWZh dWx0IHdoZW4gdXNpbmcgYW4gaW50ZXJhY3RpdmUgc2hlbGwsCi0rdW5sZXNzIHRoZSBAb3B0aW9u ey0tbm9lZGl0aW5nfSBvcHRpb24gaXMgc3VwcGxpZWQgYXQgc2hlbGwgaW52b2NhdGlvbi4KLStM aW5lIGVkaXRpbmcgaXMgYWxzbyB1c2VkIHdoZW4gdXNpbmcgdGhlIEBvcHRpb257LWV9IG9wdGlv biB0byB0aGUKLStAY29kZXtyZWFkfSBidWlsdGluIGNvbW1hbmQgKEBweHJlZntCYXNoIEJ1aWx0 aW5zfSkuCi0rQnkgZGVmYXVsdCwgdGhlIGxpbmUgZWRpdGluZyBjb21tYW5kcyBhcmUgc2ltaWxh ciB0byB0aG9zZSBvZiBFbWFjcy4KLStBIHZpLXN0eWxlIGxpbmUgZWRpdGluZyBpbnRlcmZhY2Ug aXMgYWxzbyBhdmFpbGFibGUuCi0rTGluZSBlZGl0aW5nIGNhbiBiZSBlbmFibGVkIGF0IGFueSB0 aW1lIHVzaW5nIHRoZSBAb3B0aW9uey1vIGVtYWNzfSBvcgotK0BvcHRpb257LW8gdml9IG9wdGlv bnMgdG8gdGhlIEBjb2Rle3NldH0gYnVpbHRpbiBjb21tYW5kCi0rKEBweHJlZntUaGUgU2V0IEJ1 aWx0aW59KSwgb3IgZGlzYWJsZWQgdXNpbmcgdGhlIEBvcHRpb257K28gZW1hY3N9IG9yIAotK0Bv cHRpb257K28gdml9IG9wdGlvbnMgdG8gQGNvZGV7c2V0fS4KLSBAZW5kIGlmc2V0Ci0gCi0gQG1l bnUKLUBAIC0zMzYsNyArMzQ1LDkgQEAgZmlsZSBpcyB0YWtlbiBmcm9tIHRoZSB2YWx1ZSBvZiB0 aGUgc2hlbAotIEBpZmNsZWFyIEJhc2hGZWF0dXJlcwotIGZpbGUgaXMgdGFrZW4gZnJvbSB0aGUg dmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEBlbnZ7SU5QVVRSQ30uICBJZgotIEBl bmQgaWZjbGVhcgotLXRoYXQgdmFyaWFibGUgaXMgdW5zZXQsIHRoZSBkZWZhdWx0IGlzIEBmaWxl e34vLmlucHV0cmN9LgotK3RoYXQgdmFyaWFibGUgaXMgdW5zZXQsIHRoZSBkZWZhdWx0IGlzIEBm aWxle34vLmlucHV0cmN9LiAgSWYgdGhhdAotK2ZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgY2Fubm90 IGJlIHJlYWQsIHRoZSB1bHRpbWF0ZSBkZWZhdWx0IGlzCi0rQGZpbGV7L2V0Yy9pbnB1dHJjfS4K LSAKLSBXaGVuIGEgcHJvZ3JhbSB3aGljaCB1c2VzIHRoZSBSZWFkbGluZSBsaWJyYXJ5IHN0YXJ0 cyB1cCwgdGhlCi0gaW5pdCBmaWxlIGlzIHJlYWQsIGFuZCB0aGUga2V5IGJpbmRpbmdzIGFyZSBz ZXQuCi1AQCAtNDIwLDExICs0MzEsMzQgQEAgVGhlIHN0cmluZyB0byBpbnNlcnQgYXQgdGhlIGJl Z2lubmluZyBvZgotIEBjb2Rle2luc2VydC1jb21tZW50fSBjb21tYW5kIGlzIGV4ZWN1dGVkLiAg VGhlIGRlZmF1bHQgdmFsdWUKLSBpcyBAY29kZXsiIyJ9LgotIAotK0BpdGVtIGNvbXBsZXRpb24t ZGlzcGxheS13aWR0aAotK0B2aW5kZXggY29tcGxldGlvbi1kaXNwbGF5LXdpZHRoCi0rVGhlIG51 bWJlciBvZiBzY3JlZW4gY29sdW1ucyB1c2VkIHRvIGRpc3BsYXkgcG9zc2libGUgbWF0Y2hlcwot K3doZW4gcGVyZm9ybWluZyBjb21wbGV0aW9uLgotK1RoZSB2YWx1ZSBpcyBpZ25vcmVkIGlmIGl0 IGlzIGxlc3MgdGhhbiAwIG9yIGdyZWF0ZXIgdGhhbiB0aGUgdGVybWluYWwKLStzY3JlZW4gd2lk dGguCi0rQSB2YWx1ZSBvZiAwIHdpbGwgY2F1c2UgbWF0Y2hlcyB0byBiZSBkaXNwbGF5ZWQgb25l IHBlciBsaW5lLgotK1RoZSBkZWZhdWx0IHZhbHVlIGlzIC0xLgotKwotIEBpdGVtIGNvbXBsZXRp b24taWdub3JlLWNhc2UKLStAdmluZGV4IGNvbXBsZXRpb24taWdub3JlLWNhc2UKLSBJZiBzZXQg dG8gQHNhbXB7b259LCBSZWFkbGluZSBwZXJmb3JtcyBmaWxlbmFtZSBtYXRjaGluZyBhbmQgY29t cGxldGlvbgotIGluIGEgY2FzZS1pbnNlbnNpdGl2ZSBmYXNoaW9uLgotIFRoZSBkZWZhdWx0IHZh bHVlIGlzIEBzYW1we29mZn0uCi0gCi0rQGl0ZW0gY29tcGxldGlvbi1tYXAtY2FzZQotK0B2aW5k ZXggY29tcGxldGlvbi1tYXAtY2FzZQotK0lmIHNldCB0byBAc2FtcHtvbn0sIGFuZCBAdmFye2Nv bXBsZXRpb24taWdub3JlLWNhc2V9IGlzIGVuYWJsZWQsIFJlYWRsaW5lCi0rdHJlYXRzIGh5cGhl bnMgKEBzYW1wey19KSBhbmQgdW5kZXJzY29yZXMgKEBzYW1we199KSBhcyBlcXVpdmFsZW50IHdo ZW4KLStwZXJmb3JtaW5nIGNhc2UtaW5zZW5zaXRpdmUgZmlsZW5hbWUgbWF0Y2hpbmcgYW5kIGNv bXBsZXRpb24uCi0rCi0rQGl0ZW0gY29tcGxldGlvbi1wcmVmaXgtZGlzcGxheS1sZW5ndGgKLStA dmluZGV4IGNvbXBsZXRpb24tcHJlZml4LWRpc3BsYXktbGVuZ3RoCi0rVGhlIGxlbmd0aCBpbiBj aGFyYWN0ZXJzIG9mIHRoZSBjb21tb24gcHJlZml4IG9mIGEgbGlzdCBvZiBwb3NzaWJsZQotK2Nv bXBsZXRpb25zIHRoYXQgaXMgZGlzcGxheWVkIHdpdGhvdXQgbW9kaWZpY2F0aW9uLiAgV2hlbiBz ZXQgdG8gYQotK3ZhbHVlIGdyZWF0ZXIgdGhhbiB6ZXJvLCBjb21tb24gcHJlZml4ZXMgbG9uZ2Vy IHRoYW4gdGhpcyB2YWx1ZSBhcmUKLStyZXBsYWNlZCB3aXRoIGFuIGVsbGlwc2lzIHdoZW4gZGlz cGxheWluZyBwb3NzaWJsZSBjb21wbGV0aW9ucy4KLSsKLSBAaXRlbSBjb21wbGV0aW9uLXF1ZXJ5 LWl0ZW1zCi0gQHZpbmRleCBjb21wbGV0aW9uLXF1ZXJ5LWl0ZW1zCi0gVGhlIG51bWJlciBvZiBw b3NzaWJsZSBjb21wbGV0aW9ucyB0aGF0IGRldGVybWluZXMgd2hlbiB0aGUgdXNlciBpcwotQEAg LTQ1NiwxMiArNDkwLDIzIEBAIGtleSBiaW5kaW5ncyBpcyB1c2VkLiAgQnkgZGVmYXVsdCwgUmVh ZGwKLSBtb2RlLCB3aGVyZSB0aGUga2V5c3Ryb2tlcyBhcmUgbW9zdCBzaW1pbGFyIHRvIEVtYWNz LiAgVGhpcyB2YXJpYWJsZSBjYW4gYmUKLSBzZXQgdG8gZWl0aGVyIEBzYW1we2VtYWNzfSBvciBA c2FtcHt2aX0uCi0gCi0rQGl0ZW0gZWNoby1jb250cm9sLWNoYXJhY3RlcnMKLStXaGVuIHNldCB0 byBAc2FtcHtvbn0sIG9uIG9wZXJhdGluZyBzeXN0ZW1zIHRoYXQgaW5kaWNhdGUgdGhleSBzdXBw b3J0IGl0LAotK3JlYWRsaW5lIGVjaG9lcyBhIGNoYXJhY3RlciBjb3JyZXNwb25kaW5nIHRvIGEg c2lnbmFsIGdlbmVyYXRlZCBmcm9tIHRoZQotK2tleWJvYXJkLiAgVGhlIGRlZmF1bHQgaXMgQHNh bXB7b259LgotKwotIEBpdGVtIGVuYWJsZS1rZXlwYWQKLSBAdmluZGV4IGVuYWJsZS1rZXlwYWQK LSBXaGVuIHNldCB0byBAc2FtcHtvbn0sIFJlYWRsaW5lIHdpbGwgdHJ5IHRvIGVuYWJsZSB0aGUg YXBwbGljYXRpb24KLSBrZXlwYWQgd2hlbiBpdCBpcyBjYWxsZWQuICBTb21lIHN5c3RlbXMgbmVl ZCB0aGlzIHRvIGVuYWJsZSB0aGUKLSBhcnJvdyBrZXlzLiAgVGhlIGRlZmF1bHQgaXMgQHNhbXB7 b2ZmfS4KLSAKLStAaXRlbSBlbmFibGUtbWV0YS1rZXkKLStXaGVuIHNldCB0byBAc2FtcHtvbn0s IFJlYWRsaW5lIHdpbGwgdHJ5IHRvIGVuYWJsZSBhbnkgbWV0YSBtb2RpZmllcgotK2tleSB0aGUg dGVybWluYWwgY2xhaW1zIHRvIHN1cHBvcnQgd2hlbiBpdCBpcyBjYWxsZWQuICBPbiBtYW55IHRl cm1pbmFscywKLSt0aGUgbWV0YSBrZXkgaXMgdXNlZCB0byBzZW5kIGVpZ2h0LWJpdCBjaGFyYWN0 ZXJzLgotK1RoZSBkZWZhdWx0IGlzIEBzYW1we29ufS4KLSsKLSBAaXRlbSBleHBhbmQtdGlsZGUK LSBAdmluZGV4IGV4cGFuZC10aWxkZQotIElmIHNldCB0byBAc2FtcHtvbn0sIHRpbGRlIGV4cGFu c2lvbiBpcyBwZXJmb3JtZWQgd2hlbiBSZWFkbGluZQotQEAgLTQ2OSwxMCArNTE0LDE2IEBAIGF0 dGVtcHRzIHdvcmQgY29tcGxldGlvbi4gIFRoZSBkZWZhdWx0IGkKLSAKLSBAaXRlbSBoaXN0b3J5 LXByZXNlcnZlLXBvaW50Ci0gQHZpbmRleCBoaXN0b3J5LXByZXNlcnZlLXBvaW50Ci0tSWYgc2V0 IHRvIEBzYW1we29ufSwgdGhlIGhpc3RvcnkgY29kZSBhdHRlbXB0cyB0byBwbGFjZSBwb2ludCBh dCB0aGUKLStJZiBzZXQgdG8gQHNhbXB7b259LCB0aGUgaGlzdG9yeSBjb2RlIGF0dGVtcHRzIHRv IHBsYWNlIHRoZSBwb2ludCAodGhlCi0rY3VycmVudCBjdXJzb3IgcG9zaXRpb24pIGF0IHRoZQot IHNhbWUgbG9jYXRpb24gb24gZWFjaCBoaXN0b3J5IGxpbmUgcmV0cmlldmVkIHdpdGggQGNvZGV7 cHJldmlvdXMtaGlzdG9yeX0KLSBvciBAY29kZXtuZXh0LWhpc3Rvcnl9LiAgVGhlIGRlZmF1bHQg aXMgQHNhbXB7b2ZmfS4KLSAKLStAaXRlbSBoaXN0b3J5LXNpemUKLStAdmluZGV4IGhpc3Rvcnkt c2l6ZQotK1NldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgaGlzdG9yeSBlbnRyaWVzIHNhdmVkIGlu IHRoZSBoaXN0b3J5IGxpc3QuICBJZgotK3NldCB0byB6ZXJvLCB0aGUgbnVtYmVyIG9mIGVudHJp ZXMgaW4gdGhlIGhpc3RvcnkgbGlzdCBpcyBub3QgbGltaXRlZC4KLSsKLSBAaXRlbSBob3Jpem9u dGFsLXNjcm9sbC1tb2RlCi0gQHZpbmRleCBob3Jpem9udGFsLXNjcm9sbC1tb2RlCi0gVGhpcyB2 YXJpYWJsZSBjYW4gYmUgc2V0IHRvIGVpdGhlciBAc2FtcHtvbn0gb3IgQHNhbXB7b2ZmfS4gIFNl dHRpbmcgaXQKLUBAIC01MzUsMTAgKzU4NiwxNyBAQCBUaGUgZGVmYXVsdCBpcyBAc2FtcHtvZmZ9 LgotIEB2aW5kZXggbWF0Y2gtaGlkZGVuLWZpbGVzCi0gVGhpcyB2YXJpYWJsZSwgd2hlbiBzZXQg dG8gQHNhbXB7b259LCBjYXVzZXMgUmVhZGxpbmUgdG8gbWF0Y2ggZmlsZXMgd2hvc2UKLSBuYW1l cyBiZWdpbiB3aXRoIGEgQHNhbXB7Ln0gKGhpZGRlbiBmaWxlcykgd2hlbiBwZXJmb3JtaW5nIGZp bGVuYW1lCi0tY29tcGxldGlvbiwgdW5sZXNzIHRoZSBsZWFkaW5nIEBzYW1wey59IGlzCi0rY29t cGxldGlvbi4KLStJZiBzZXQgdG8gQHNhbXB7b2ZmfSwgdGhlIGxlYWRpbmcgQHNhbXB7Ln0gbXVz dCBiZQotIHN1cHBsaWVkIGJ5IHRoZSB1c2VyIGluIHRoZSBmaWxlbmFtZSB0byBiZSBjb21wbGV0 ZWQuCi0gVGhpcyB2YXJpYWJsZSBpcyBAc2FtcHtvbn0gYnkgZGVmYXVsdC4KLSAKLStAaXRlbSBt ZW51LWNvbXBsZXRlLWRpc3BsYXktcHJlZml4Ci0rQHZpbmRleCBtZW51LWNvbXBsZXRlLWRpc3Bs YXktcHJlZml4Ci0rSWYgc2V0IHRvIEBzYW1we29ufSwgbWVudSBjb21wbGV0aW9uIGRpc3BsYXlz IHRoZSBjb21tb24gcHJlZml4IG9mIHRoZQotK2xpc3Qgb2YgcG9zc2libGUgY29tcGxldGlvbnMg KHdoaWNoIG1heSBiZSBlbXB0eSkgYmVmb3JlIGN5Y2xpbmcgdGhyb3VnaAotK3RoZSBsaXN0LiAg VGhlIGRlZmF1bHQgaXMgQHNhbXB7b2ZmfS4KLSsKLSBAaXRlbSBvdXRwdXQtbWV0YQotIEB2aW5k ZXggb3V0cHV0LW1ldGEKLSBJZiBzZXQgdG8gQHNhbXB7b259LCBSZWFkbGluZSB3aWxsIGRpc3Bs YXkgY2hhcmFjdGVycyB3aXRoIHRoZQotQEAgLTU1Niw2ICs2MTQsMTMgQEAgSWYgc2V0IHRvIEBz YW1we29ufSwgUmVhZGxpbmUgd2lsbCBkaXNwbAotIHNvcnRlZCBob3Jpem9udGFsbHkgaW4gYWxw aGFiZXRpY2FsIG9yZGVyLCByYXRoZXIgdGhhbiBkb3duIHRoZSBzY3JlZW4uCi0gVGhlIGRlZmF1 bHQgaXMgQHNhbXB7b2ZmfS4KLSAKLStAaXRlbSByZXZlcnQtYWxsLWF0LW5ld2xpbmUKLStAdmlu ZGV4IHJldmVydC1hbGwtYXQtbmV3bGluZQotK0lmIHNldCB0byBAc2FtcHtvbn0sIFJlYWRsaW5l IHdpbGwgdW5kbyBhbGwgY2hhbmdlcyB0byBoaXN0b3J5IGxpbmVzCi0rYmVmb3JlIHJldHVybmlu ZyB3aGVuIEBjb2Rle2FjY2VwdC1saW5lfSBpcyBleGVjdXRlZC4gIEJ5IGRlZmF1bHQsCi0raGlz dG9yeSBsaW5lcyBtYXkgYmUgbW9kaWZpZWQgYW5kIHJldGFpbiBpbmRpdmlkdWFsIHVuZG8gbGlz dHMgYWNyb3NzCi0rY2FsbHMgdG8gQGNvZGV7cmVhZGxpbmV9LiAgVGhlIGRlZmF1bHQgaXMgQHNh bXB7b2ZmfS4KLSsKLSBAaXRlbSBzaG93LWFsbC1pZi1hbWJpZ3VvdXMKLSBAdmluZGV4IHNob3ct YWxsLWlmLWFtYmlndW91cwotIFRoaXMgYWx0ZXJzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRo ZSBjb21wbGV0aW9uIGZ1bmN0aW9ucy4gIElmCi1AQCAtNTc1LDYgKzY0MCwyMCBAQCBhIGNvbW1v biBwcmVmaXgpIGNhdXNlIHRoZSBtYXRjaGVzIHRvIGJlCi0gb2YgcmluZ2luZyB0aGUgYmVsbC4K LSBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBAc2FtcHtvZmZ9LgotIAotK0BpdGVtIHNraXAtY29tcGxl dGVkLXRleHQKLStAdmluZGV4IHNraXAtY29tcGxldGVkLXRleHQKLStJZiBzZXQgdG8gQHNhbXB7 b259LCB0aGlzIGFsdGVycyB0aGUgZGVmYXVsdCBjb21wbGV0aW9uIGJlaGF2aW9yIHdoZW4KLStp bnNlcnRpbmcgYSBzaW5nbGUgbWF0Y2ggaW50byB0aGUgbGluZS4gIEl0J3Mgb25seSBhY3RpdmUg d2hlbgotK3BlcmZvcm1pbmcgY29tcGxldGlvbiBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZC4gIElm IGVuYWJsZWQsIHJlYWRsaW5lCi0rZG9lcyBub3QgaW5zZXJ0IGNoYXJhY3RlcnMgZnJvbSB0aGUg Y29tcGxldGlvbiB0aGF0IG1hdGNoIGNoYXJhY3RlcnMKLSthZnRlciBwb2ludCBpbiB0aGUgd29y ZCBiZWluZyBjb21wbGV0ZWQsIHNvIHBvcnRpb25zIG9mIHRoZSB3b3JkCi0rZm9sbG93aW5nIHRo ZSBjdXJzb3IgYXJlIG5vdCBkdXBsaWNhdGVkLgotK0ZvciBpbnN0YW5jZSwgaWYgdGhpcyBpcyBl bmFibGVkLCBhdHRlbXB0aW5nIGNvbXBsZXRpb24gd2hlbiB0aGUgY3Vyc29yCi0raXMgYWZ0ZXIg dGhlIEBzYW1we2V9IGluIEBzYW1we01ha2VmaWxlfSB3aWxsIHJlc3VsdCBpbiBAc2FtcHtNYWtl ZmlsZX0KLStyYXRoZXIgdGhhbiBAc2FtcHtNYWtlZmlsZWZpbGV9LCBhc3N1bWluZyB0aGVyZSBp cyBhIHNpbmdsZSBwb3NzaWJsZQotK2NvbXBsZXRpb24uCi0rVGhlIGRlZmF1bHQgdmFsdWUgaXMg QHNhbXB7b2ZmfS4KLSsKLSBAaXRlbSB2aXNpYmxlLXN0YXRzCi0gQHZpbmRleCB2aXNpYmxlLXN0 YXRzCi0gSWYgc2V0IHRvIEBzYW1we29ufSwgYSBjaGFyYWN0ZXIgZGVub3RpbmcgYSBmaWxlJ3Mg dHlwZQotQEAgLTU5Myw5ICs2NzIsMTEgQEAgdGhlIGNvbW1hbmQgZG9lcy4KLSBPbmNlIHlvdSBr bm93IHRoZSBuYW1lIG9mIHRoZSBjb21tYW5kLCBzaW1wbHkgcGxhY2Ugb24gYSBsaW5lCi0gaW4g dGhlIGluaXQgZmlsZSB0aGUgbmFtZSBvZiB0aGUga2V5Ci0geW91IHdpc2ggdG8gYmluZCB0aGUg Y29tbWFuZCB0bywgYSBjb2xvbiwgYW5kIHRoZW4gdGhlIG5hbWUgb2YgdGhlCi0tY29tbWFuZC4g IFRoZSBuYW1lIG9mIHRoZSBrZXkKLS1jYW4gYmUgZXhwcmVzc2VkIGluIGRpZmZlcmVudCB3YXlz LCBkZXBlbmRpbmcgb24gd2hhdCB5b3UgZmluZCBtb3N0Ci0tY29tZm9ydGFibGUuCi0rY29tbWFu ZC4KLStUaGVyZSBjYW4gYmUgbm8gc3BhY2UgYmV0d2VlbiB0aGUga2V5IG5hbWUgYW5kIHRoZSBj b2xvbiAtLSB0aGF0IHdpbGwgYmUKLStpbnRlcnByZXRlZCBhcyBwYXJ0IG9mIHRoZSBrZXkgbmFt ZS4KLStUaGUgbmFtZSBvZiB0aGUga2V5IGNhbiBiZSBleHByZXNzZWQgaW4gZGlmZmVyZW50IHdh eXMsIGRlcGVuZGluZyBvbgotK3doYXQgeW91IGZpbmQgbW9zdCBjb21mb3J0YWJsZS4KLSAKLSBJ biBhZGRpdGlvbiB0byBjb21tYW5kIG5hbWVzLCByZWFkbGluZSBhbGxvd3Mga2V5cyB0byBiZSBi b3VuZAotIHRvIGEgc3RyaW5nIHRoYXQgaXMgaW5zZXJ0ZWQgd2hlbiB0aGUga2V5IGlzIHByZXNz ZWQgKGEgQHZhcnttYWNyb30pLgotQEAgLTkzNywxMiArMTAxOCwyMiBAQCBNb3ZlIGZvcndhcmQg YSBjaGFyYWN0ZXIuCi0gTW92ZSBiYWNrIGEgY2hhcmFjdGVyLgotIAotIEBpdGVtIGZvcndhcmQt d29yZCAoTS1mKQotLU1vdmUgZm9yd2FyZCB0byB0aGUgZW5kIG9mIHRoZSBuZXh0IHdvcmQuICBX b3JkcyBhcmUgY29tcG9zZWQgb2YKLS1sZXR0ZXJzIGFuZCBkaWdpdHMuCi0rTW92ZSBmb3J3YXJk IHRvIHRoZSBlbmQgb2YgdGhlIG5leHQgd29yZC4KLStXb3JkcyBhcmUgY29tcG9zZWQgb2YgbGV0 dGVycyBhbmQgZGlnaXRzLgotIAotIEBpdGVtIGJhY2t3YXJkLXdvcmQgKE0tYikKLS1Nb3ZlIGJh Y2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IG9yIHByZXZpb3VzIHdvcmQuICBXb3JkcyBh cmUKLS1jb21wb3NlZCBvZiBsZXR0ZXJzIGFuZCBkaWdpdHMuCi0rTW92ZSBiYWNrIHRvIHRoZSBz dGFydCBvZiB0aGUgY3VycmVudCBvciBwcmV2aW91cyB3b3JkLgotK1dvcmRzIGFyZSBjb21wb3Nl ZCBvZiBsZXR0ZXJzIGFuZCBkaWdpdHMuCi0rCi0rQGlmc2V0IEJhc2hGZWF0dXJlcwotK0BpdGVt IHNoZWxsLWZvcndhcmQtd29yZCAoKQotK01vdmUgZm9yd2FyZCB0byB0aGUgZW5kIG9mIHRoZSBu ZXh0IHdvcmQuCi0rV29yZHMgYXJlIGRlbGltaXRlZCBieSBub24tcXVvdGVkIHNoZWxsIG1ldGFj aGFyYWN0ZXJzLgotKwotK0BpdGVtIHNoZWxsLWJhY2t3YXJkLXdvcmQgKCkKLStNb3ZlIGJhY2sg dG8gdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IG9yIHByZXZpb3VzIHdvcmQuCi0rV29yZHMgYXJl IGRlbGltaXRlZCBieSBub24tcXVvdGVkIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgotK0BlbmQgaWZz ZXQKLSAKLSBAaXRlbSBjbGVhci1zY3JlZW4gKEMtbCkKLSBDbGVhciB0aGUgc2NyZWVuIGFuZCBy ZWRyYXcgdGhlIGN1cnJlbnQgbGluZSwKLUBAIC0xMDI5LDEwICsxMTIwLDE0IEBAIGFzIGlmIHRo ZSBAc2FtcHshQHZhcntufX0gaGlzdG9yeSBleHBhbnMKLSAKLSBAaXRlbSB5YW5rLWxhc3QtYXJn IChNLS4gb3IgTS1fKQotIEluc2VydCBsYXN0IGFyZ3VtZW50IHRvIHRoZSBwcmV2aW91cyBjb21t YW5kICh0aGUgbGFzdCB3b3JkIG9mIHRoZQotLXByZXZpb3VzIGhpc3RvcnkgZW50cnkpLiAgV2l0 aCBhbgotLWFyZ3VtZW50LCBiZWhhdmUgZXhhY3RseSBsaWtlIEBjb2Rle3lhbmstbnRoLWFyZ30u Ci0rcHJldmlvdXMgaGlzdG9yeSBlbnRyeSkuCi0rV2l0aCBhIG51bWVyaWMgYXJndW1lbnQsIGJl aGF2ZSBleGFjdGx5IGxpa2UgQGNvZGV7eWFuay1udGgtYXJnfS4KLSBTdWNjZXNzaXZlIGNhbGxz IHRvIEBjb2Rle3lhbmstbGFzdC1hcmd9IG1vdmUgYmFjayB0aHJvdWdoIHRoZSBoaXN0b3J5Ci0t bGlzdCwgaW5zZXJ0aW5nIHRoZSBsYXN0IGFyZ3VtZW50IG9mIGVhY2ggbGluZSBpbiB0dXJuLgot K2xpc3QsIGluc2VydGluZyB0aGUgbGFzdCB3b3JkIChvciB0aGUgd29yZCBzcGVjaWZpZWQgYnkg dGhlIGFyZ3VtZW50IHRvCi0rdGhlIGZpcnN0IGNhbGwpIG9mIGVhY2ggbGluZSBpbiB0dXJuLgot K0FueSBudW1lcmljIGFyZ3VtZW50IHN1cHBsaWVkIHRvIHRoZXNlIHN1Y2Nlc3NpdmUgY2FsbHMg ZGV0ZXJtaW5lcwotK3RoZSBkaXJlY3Rpb24gdG8gbW92ZSB0aHJvdWdoIHRoZSBoaXN0b3J5LiAg QSBuZWdhdGl2ZSBhcmd1bWVudCBzd2l0Y2hlcwotK3RoZSBkaXJlY3Rpb24gdGhyb3VnaCB0aGUg aGlzdG9yeSAoYmFjayBvciBmb3J3YXJkKS4KLSBUaGUgaGlzdG9yeSBleHBhbnNpb24gZmFjaWxp dGllcyBhcmUgdXNlZCB0byBleHRyYWN0IHRoZSBsYXN0IGFyZ3VtZW50LAotIGFzIGlmIHRoZSBA c2FtcHshJH0gaGlzdG9yeSBleHBhbnNpb24gaGFkIGJlZW4gc3BlY2lmaWVkLgotIAotQEAgLTEx MzgsNiArMTIzMywxNyBAQCBXb3JkIGJvdW5kYXJpZXMgYXJlIHRoZSBzYW1lIGFzIEBjb2Rle2Zv Ci0gS2lsbCB0aGUgd29yZCBiZWhpbmQgcG9pbnQuCi0gV29yZCBib3VuZGFyaWVzIGFyZSB0aGUg c2FtZSBhcyBAY29kZXtiYWNrd2FyZC13b3JkfS4KLSAKLStAaWZzZXQgQmFzaEZlYXR1cmVzCi0r QGl0ZW0gc2hlbGwta2lsbC13b3JkICgpCi0rS2lsbCBmcm9tIHBvaW50IHRvIHRoZSBlbmQgb2Yg dGhlIGN1cnJlbnQgd29yZCwgb3IgaWYgYmV0d2VlbgotK3dvcmRzLCB0byB0aGUgZW5kIG9mIHRo ZSBuZXh0IHdvcmQuCi0rV29yZCBib3VuZGFyaWVzIGFyZSB0aGUgc2FtZSBhcyBAY29kZXtzaGVs bC1mb3J3YXJkLXdvcmR9LgotKwotK0BpdGVtIHNoZWxsLWJhY2t3YXJkLWtpbGwtd29yZCAoKQot K0tpbGwgdGhlIHdvcmQgYmVoaW5kIHBvaW50LgotK1dvcmQgYm91bmRhcmllcyBhcmUgdGhlIHNh bWUgYXMgQGNvZGV7c2hlbGwtYmFja3dhcmQtd29yZH0uCi0rQGVuZCBpZnNldAotKwotIEBpdGVt IHVuaXgtd29yZC1ydWJvdXQgKEMtdykKLSBLaWxsIHRoZSB3b3JkIGJlaGluZCBwb2ludCwgdXNp bmcgd2hpdGUgc3BhY2UgYXMgYSB3b3JkIGJvdW5kYXJ5LgotIFRoZSBraWxsZWQgdGV4dCBpcyBz YXZlZCBvbiB0aGUga2lsbC1yaW5nLgotQEAgLTEyMTksNiArMTMyNSw5IEBAIFRoZSBkZWZhdWx0 IGlzIGZpbGVuYW1lIGNvbXBsZXRpb24uCi0gCi0gQGl0ZW0gcG9zc2libGUtY29tcGxldGlvbnMg KE0tPykKLSBMaXN0IHRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucyBvZiB0aGUgdGV4dCBiZWZvcmUg cG9pbnQuCi0rV2hlbiBkaXNwbGF5aW5nIGNvbXBsZXRpb25zLCBSZWFkbGluZSBzZXRzIHRoZSBu dW1iZXIgb2YgY29sdW1ucyB1c2VkCi0rZm9yIGRpc3BsYXkgdG8gdGhlIHZhbHVlIG9mIEBjb2Rl e2NvbXBsZXRpb24tZGlzcGxheS13aWR0aH0sIHRoZSB2YWx1ZSBvZgotK3RoZSBlbnZpcm9ubWVu dCB2YXJpYWJsZSBAZW52e0NPTFVNTlN9LCBvciB0aGUgc2NyZWVuIHdpZHRoLCBpbiB0aGF0IG9y ZGVyLgotIAotIEBpdGVtIGluc2VydC1jb21wbGV0aW9ucyAoTS0qKQotIEluc2VydCBhbGwgY29t cGxldGlvbnMgb2YgdGhlIHRleHQgYmVmb3JlIHBvaW50IHRoYXQgd291bGQgaGF2ZQotQEAgLTEy MzgsNiArMTM0NywxMSBAQCB0aHJvdWdoIHRoZSBsaXN0LgotIFRoaXMgY29tbWFuZCBpcyBpbnRl bmRlZCB0byBiZSBib3VuZCB0byBAa2V5e1RBQn0sIGJ1dCBpcyB1bmJvdW5kCi0gYnkgZGVmYXVs dC4KLSAKLStAaXRlbSBtZW51LWNvbXBsZXRlLWJhY2t3YXJkICgpCi0rSWRlbnRpY2FsIHRvIEBj b2Rle21lbnUtY29tcGxldGV9LCBidXQgbW92ZXMgYmFja3dhcmQgdGhyb3VnaCB0aGUgbGlzdAot K29mIHBvc3NpYmxlIGNvbXBsZXRpb25zLCBhcyBpZiBAY29kZXttZW51LWNvbXBsZXRlfSBoYWQg YmVlbiBnaXZlbiBhCi0rbmVnYXRpdmUgYXJndW1lbnQuCi0rCi0gQGl0ZW0gZGVsZXRlLWNoYXIt b3ItbGlzdCAoKQotIERlbGV0ZXMgdGhlIGNoYXJhY3RlciB1bmRlciB0aGUgY3Vyc29yIGlmIG5v dCBhdCB0aGUgYmVnaW5uaW5nIG9yCi0gZW5kIG9mIHRoZSBsaW5lIChsaWtlIEBjb2Rle2RlbGV0 ZS1jaGFyfSkuCi1AQCAtMTI5Myw2ICsxNDA3LDExIEBAIEF0dGVtcHQgY29tcGxldGlvbiBvbiB0 aGUgdGV4dCBiZWZvcmUgcG8KLSB0aGUgdGV4dCBhZ2FpbnN0IGxpbmVzIGZyb20gdGhlIGhpc3Rv cnkgbGlzdCBmb3IgcG9zc2libGUKLSBjb21wbGV0aW9uIG1hdGNoZXMuCi0gCi0rQGl0ZW0gZGFi YnJldi1leHBhbmQgKCkKLStBdHRlbXB0IG1lbnUgY29tcGxldGlvbiBvbiB0aGUgdGV4dCBiZWZv cmUgcG9pbnQsIGNvbXBhcmluZwotK3RoZSB0ZXh0IGFnYWluc3QgbGluZXMgZnJvbSB0aGUgaGlz dG9yeSBsaXN0IGZvciBwb3NzaWJsZQotK2NvbXBsZXRpb24gbWF0Y2hlcy4KLSsKLSBAaXRlbSBj b21wbGV0ZS1pbnRvLWJyYWNlcyAoTS1AeykKLSBQZXJmb3JtIGZpbGVuYW1lIGNvbXBsZXRpb24g YW5kIGluc2VydCB0aGUgbGlzdCBvZiBwb3NzaWJsZSBjb21wbGV0aW9ucwotIGVuY2xvc2VkIHdp dGhpbiBicmFjZXMgc28gdGhlIGxpc3QgaXMgYXZhaWxhYmxlIHRvIHRoZSBzaGVsbAotQEAgLTEz NzIsNiArMTQ5MSwxNSBAQCBBIGNoYXJhY3RlciBpcyByZWFkIGFuZCBwb2ludCBpcyBtb3ZlZCB0 Ci0gb2YgdGhhdCBjaGFyYWN0ZXIuICBBIG5lZ2F0aXZlIGNvdW50IHNlYXJjaGVzIGZvciBzdWJz ZXF1ZW50Ci0gb2NjdXJyZW5jZXMuCi0gCi0rQGl0ZW0gc2tpcC1jc2ktc2VxdWVuY2UgKCkKLStS ZWFkIGVub3VnaCBjaGFyYWN0ZXJzIHRvIGNvbnN1bWUgYSBtdWx0aS1rZXkgc2VxdWVuY2Ugc3Vj aCBhcyB0aG9zZQotK2RlZmluZWQgZm9yIGtleXMgbGlrZSBIb21lIGFuZCBFbmQuICBTdWNoIHNl cXVlbmNlcyBiZWdpbiB3aXRoIGEKLStDb250cm9sIFNlcXVlbmNlIEluZGljYXRvciAoQ1NJKSwg dXN1YWxseSBFU0MtWy4gIElmIHRoaXMgc2VxdWVuY2UgaXMKLStib3VuZCB0byAiXGVbIiwga2V5 cyBwcm9kdWNpbmcgc3VjaCBzZXF1ZW5jZXMgd2lsbCBoYXZlIG5vIGVmZmVjdAotK3VubGVzcyBl eHBsaWNpdGx5IGJvdW5kIHRvIGEgcmVhZGxpbmUgY29tbWFuZCwgaW5zdGVhZCBvZiBpbnNlcnRp bmcKLStzdHJheSBjaGFyYWN0ZXJzIGludG8gdGhlIGVkaXRpbmcgYnVmZmVyLiAgVGhpcyBpcyB1 bmJvdW5kIGJ5IGRlZmF1bHQsCi0rYnV0IHVzdWFsbHkgYm91bmQgdG8gRVNDLVsuCi0rCi0gQGl0 ZW0gaW5zZXJ0LWNvbW1lbnQgKE0tIykKLSBXaXRob3V0IGEgbnVtZXJpYyBhcmd1bWVudCwgdGhl IHZhbHVlIG9mIHRoZSBAY29kZXtjb21tZW50LWJlZ2lufQotIHZhcmlhYmxlIGlzIGluc2VydGVk IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGN1cnJlbnQgbGluZS4KLUBAIC0xNDgxLDcgKzE2MDks NyBAQCBlZGl0aW5nIG1vZGUuCi0gV2hpbGUgdGhlIFJlYWRsaW5lIGxpYnJhcnkgZG9lcyBub3Qg aGF2ZSBhIGZ1bGwgc2V0IG9mIEBjb2Rle3ZpfQotIGVkaXRpbmcgZnVuY3Rpb25zLCBpdCBkb2Vz IGNvbnRhaW4gZW5vdWdoIHRvIGFsbG93IHNpbXBsZSBlZGl0aW5nCi0gb2YgdGhlIGxpbmUuICBU aGUgUmVhZGxpbmUgQGNvZGV7dml9IG1vZGUgYmVoYXZlcyBhcyBzcGVjaWZpZWQgaW4KLS10aGUg QHNje3Bvc2l4fSAxMDAzLjIgc3RhbmRhcmQuCi0rdGhlIEBzY3twb3NpeH0gc3RhbmRhcmQuCi0g Ci0gQGlmc2V0IEJhc2hGZWF0dXJlcwotIEluIG9yZGVyIHRvIHN3aXRjaCBpbnRlcmFjdGl2ZWx5 IGJldHdlZW4gQGNvZGV7ZW1hY3N9IGFuZCBAY29kZXt2aX0KLUBAIC0xNTE1LDEwICsxNjQzLDE1 IEBAIHRoZSBwcm9ncmFtbWFibGUgY29tcGxldGlvbiBmYWNpbGl0aWVzIGEKLSBGaXJzdCwgdGhl IGNvbW1hbmQgbmFtZSBpcyBpZGVudGlmaWVkLgotIElmIGEgY29tcHNwZWMgaGFzIGJlZW4gZGVm aW5lZCBmb3IgdGhhdCBjb21tYW5kLCB0aGUKLSBjb21wc3BlYyBpcyB1c2VkIHRvIGdlbmVyYXRl IHRoZSBsaXN0IG9mIHBvc3NpYmxlIGNvbXBsZXRpb25zIGZvciB0aGUgd29yZC4KLStJZiB0aGUg Y29tbWFuZCB3b3JkIGlzIHRoZSBlbXB0eSBzdHJpbmcgKGNvbXBsZXRpb24gYXR0ZW1wdGVkIGF0 IHRoZQotK2JlZ2lubmluZyBvZiBhbiBlbXB0eSBsaW5lKSwgYW55IGNvbXBzcGVjIGRlZmluZWQg d2l0aAotK3RoZSBAb3B0aW9uey1FfSBvcHRpb24gdG8gQGNvZGV7Y29tcGxldGV9IGlzIHVzZWQu Ci0gSWYgdGhlIGNvbW1hbmQgd29yZCBpcyBhIGZ1bGwgcGF0aG5hbWUsIGEgY29tcHNwZWMgZm9y IHRoZSBmdWxsCi0gcGF0aG5hbWUgaXMgc2VhcmNoZWQgZm9yIGZpcnN0LgotIElmIG5vIGNvbXBz cGVjIGlzIGZvdW5kIGZvciB0aGUgZnVsbCBwYXRobmFtZSwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRv Ci0gZmluZCBhIGNvbXBzcGVjIGZvciB0aGUgcG9ydGlvbiBmb2xsb3dpbmcgdGhlIGZpbmFsIHNs YXNoLgotK0lmIHRob3NlIHNlYXJjaGVzIGRvIG5vdCByZXN1bHQgaW4gYSBjb21wc3BlYywgYW55 IGNvbXBzcGVjIGRlZmluZWQgd2l0aAotK3RoZSBAb3B0aW9uey1EfSBvcHRpb24gdG8gQGNvZGV7 Y29tcGxldGV9IGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQuCi0gCi0gT25jZSBhIGNvbXBzcGVjIGhh cyBiZWVuIGZvdW5kLCBpdCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBsaXN0IG9mCi0gbWF0Y2hp bmcgd29yZHMuCi1AQCAtMTU1NSw5ICsxNjg4LDkgQEAgY29tcGxldGVkLCBhbmQgdGhlIG1hdGNo aW5nIHdvcmRzIGJlY29tZQotIAotIEFmdGVyIHRoZXNlIG1hdGNoZXMgaGF2ZSBiZWVuIGdlbmVy YXRlZCwgYW55IHNoZWxsIGZ1bmN0aW9uIG9yIGNvbW1hbmQKLSBzcGVjaWZpZWQgd2l0aCB0aGUg QG9wdGlvbnstRn0gYW5kIEBvcHRpb257LUN9IG9wdGlvbnMgaXMgaW52b2tlZC4KLS1XaGVuIHRo ZSBjb21tYW5kIG9yIGZ1bmN0aW9uIGlzIGludm9rZWQsIHRoZSBAZW52e0NPTVBfTElORX0gYW5k Ci0tQGVudntDT01QX1BPSU5UfSB2YXJpYWJsZXMgYXJlIGFzc2lnbmVkIHZhbHVlcyBhcyBkZXNj cmliZWQgYWJvdmUKLS0oQHB4cmVme0Jhc2ggVmFyaWFibGVzfSkuCi0rV2hlbiB0aGUgY29tbWFu ZCBvciBmdW5jdGlvbiBpcyBpbnZva2VkLCB0aGUgQGVudntDT01QX0xJTkV9LAotK0BlbnZ7Q09N UF9QT0lOVH0sIEBlbnZ7Q09NUF9LRVl9LCBhbmQgQGVudntDT01QX1RZUEV9IHZhcmlhYmxlcyBh cmUKLSthc3NpZ25lZCB2YWx1ZXMgYXMgZGVzY3JpYmVkIGFib3ZlIChAcHhyZWZ7QmFzaCBWYXJp YWJsZXN9KS4KLSBJZiBhIHNoZWxsIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQsIHRoZSBAZW52 e0NPTVBfV09SRFN9IGFuZAotIEBlbnZ7Q09NUF9DV09SRH0gdmFyaWFibGVzIGFyZSBhbHNvIHNl dC4KLSBXaGVuIHRoZSBmdW5jdGlvbiBvciBjb21tYW5kIGlzIGludm9rZWQsIHRoZSBmaXJzdCBh cmd1bWVudCBpcyB0aGUKLUBAIC0xNTcwLDcgKzE3MDMsNyBAQCB0aGUgbWF0Y2hlcy4KLSAKLSBB bnkgZnVuY3Rpb24gc3BlY2lmaWVkIHdpdGggQG9wdGlvbnstRn0gaXMgaW52b2tlZCBmaXJzdC4K LSBUaGUgZnVuY3Rpb24gbWF5IHVzZSBhbnkgb2YgdGhlIHNoZWxsIGZhY2lsaXRpZXMsIGluY2x1 ZGluZyB0aGUKLS1AY29kZXtjb21wZ2VufSBidWlsdGluIGRlc2NyaWJlZCBiZWxvdwotK0Bjb2Rl e2NvbXBnZW59IGFuZCBAY29kZXtjb21wb3B0fSBidWlsdGlucyBkZXNjcmliZWQgYmVsb3cKLSAo QHB4cmVme1Byb2dyYW1tYWJsZSBDb21wbGV0aW9uIEJ1aWx0aW5zfSksIHRvIGdlbmVyYXRlIHRo ZSBtYXRjaGVzLgotIEl0IG11c3QgcHV0IHRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucyBpbiB0aGUg QGVudntDT01QUkVQTFl9IGFycmF5Ci0gdmFyaWFibGUuCi1AQCAtMTYyMiw2ICsxNzU1LDMwIEBA IHRvIGNvbXBsZXRlZCBuYW1lcyB3aGljaCBhcmUgc3ltYm9saWMgbGkKLSB0aGUgdmFsdWUgb2Yg dGhlIEB2YXJ7bWFyay1kaXJlY3Rvcmllc30gUmVhZGxpbmUgdmFyaWFibGUsIHJlZ2FyZGxlc3MK LSBvZiB0aGUgc2V0dGluZyBvZiB0aGUgQHZhcnttYXJrLXN5bWxpbmtlZC1kaXJlY3Rvcmllc30g UmVhZGxpbmUgdmFyaWFibGUuCi0gCi0rVGhlcmUgaXMgc29tZSBzdXBwb3J0IGZvciBkeW5hbWlj YWxseSBtb2RpZnlpbmcgY29tcGxldGlvbnMuICBUaGlzIGlzCi0rbW9zdCB1c2VmdWwgd2hlbiB1 c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYSBkZWZhdWx0IGNvbXBsZXRpb24gc3BlY2lmaWVkCi0r d2l0aCBAb3B0aW9uey1EfS4gIEl0J3MgcG9zc2libGUgZm9yIHNoZWxsIGZ1bmN0aW9ucyBleGVj dXRlZCBhcyBjb21wbGV0aW9uCi0raGFuZGxlcnMgdG8gaW5kaWNhdGUgdGhhdCBjb21wbGV0aW9u IHNob3VsZCBiZSByZXRyaWVkIGJ5IHJldHVybmluZyBhbgotK2V4aXQgc3RhdHVzIG9mIDEyNC4g IElmIGEgc2hlbGwgZnVuY3Rpb24gcmV0dXJucyAxMjQsIGFuZCBjaGFuZ2VzCi0rdGhlIGNvbXBz cGVjIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tbWFuZCBvbiB3aGljaCBjb21wbGV0aW9uIGlzIGJl aW5nCi0rYXR0ZW1wdGVkIChzdXBwbGllZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgd2hlbiB0aGUg ZnVuY3Rpb24gaXMgZXhlY3V0ZWQpLAotK3Byb2dyYW1tYWJsZSBjb21wbGV0aW9uIHJlc3RhcnRz IGZyb20gdGhlIGJlZ2lubmluZywgd2l0aCBhbgotK2F0dGVtcHQgdG8gZmluZCBhIG5ldyBjb21w c3BlYyBmb3IgdGhhdCBjb21tYW5kLiAgVGhpcyBhbGxvd3MgYSBzZXQgb2YKLStjb21wbGV0aW9u cyB0byBiZSBidWlsdCBkeW5hbWljYWxseSBhcyBjb21wbGV0aW9uIGlzIGF0dGVtcHRlZCwgcmF0 aGVyIHRoYW4KLStiZWluZyBsb2FkZWQgYWxsIGF0IG9uY2UuCi0rCi0rRm9yIGluc3RhbmNlLCBh c3N1bWluZyB0aGF0IHRoZXJlIGlzIGEgbGlicmFyeSBvZiBjb21wc3BlY3MsIGVhY2gga2VwdCBp biBhCi0rZmlsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9mIHRoZSBjb21tYW5kLCB0aGUg Zm9sbG93aW5nIGRlZmF1bHQKLStjb21wbGV0aW9uIGZ1bmN0aW9uIHdvdWxkIGxvYWQgY29tcGxl dGlvbnMgZHluYW1pY2FsbHk6Ci0rCi0rQGV4YW1wbGUKLStfY29tcGxldGlvbl9sb2FkZXIoKQot K0B7Ci0rCS4gIi9ldGMvYmFzaF9jb21wbGV0aW9uLmQvJDEuc2giID4vZGV2L251bGwgMj4mMSAm JiByZXR1cm4gMTI0Ci0rQH0KLStjb21wbGV0ZSAtRCAtRiBfY29tcGxldGlvbl9sb2FkZXIKLStA ZW5kIGV4YW1wbGUKLSsKLSBAbm9kZSBQcm9ncmFtbWFibGUgQ29tcGxldGlvbiBCdWlsdGlucwot IEBzZWN0aW9uIFByb2dyYW1tYWJsZSBDb21wbGV0aW9uIEJ1aWx0aW5zCi0gQGNpbmRleCBjb21w bGV0aW9uIGJ1aWx0aW5zCi1AQCAtMTY1NywxMCArMTgxNCwxMCBAQCBtYXRjaGVzIHdlcmUgZ2Vu ZXJhdGVkLgotIEBpdGVtIGNvbXBsZXRlCi0gQGJ0aW5kZXggY29tcGxldGUKLSBAZXhhbXBsZQot LUBjb2Rle2NvbXBsZXRlIFstYWJjZGVmZ2prc3V2XSBbLW8gQHZhcntjb21wLW9wdGlvbn1dIFst QSBAdmFye2FjdGlvbn1dIFstRyBAdmFye2dsb2JwYXR9XSBbLVcgQHZhcnt3b3JkbGlzdH1dCi0t Wy1QIEB2YXJ7cHJlZml4fV0gWy1TIEB2YXJ7c3VmZml4fV0gWy1YIEB2YXJ7ZmlsdGVycGF0fV0g Wy1GIEB2YXJ7ZnVuY3Rpb259XQotLVstQyBAdmFye2NvbW1hbmR9XSBAdmFye25hbWV9IFtAdmFy e25hbWV9IEBkb3Rze31dfQotLUBjb2Rle2NvbXBsZXRlIC1wciBbQHZhcntuYW1lfSBAZG90c3t9 XX0KLStAY29kZXtjb21wbGV0ZSBbLWFiY2RlZmdqa3N1dl0gWy1vIEB2YXJ7Y29tcC1vcHRpb259 XSBbLURFXSBbLUEgQHZhcnthY3Rpb259XSBbLUcgQHZhcntnbG9icGF0fV0gWy1XIEB2YXJ7d29y ZGxpc3R9XQotK1stRiBAdmFye2Z1bmN0aW9ufV0gWy1DIEB2YXJ7Y29tbWFuZH1dIFstWCBAdmFy e2ZpbHRlcnBhdH1dCi0rWy1QIEB2YXJ7cHJlZml4fV0gWy1TIEB2YXJ7c3VmZml4fV0gQHZhcntu YW1lfSBbQHZhcntuYW1lfSBAZG90c3t9XX0KLStAY29kZXtjb21wbGV0ZSAtcHIgWy1ERV0gW0B2 YXJ7bmFtZX0gQGRvdHN7fV19Ci0gQGVuZCBleGFtcGxlCi0gCi0gU3BlY2lmeSBob3cgYXJndW1l bnRzIHRvIGVhY2ggQHZhcntuYW1lfSBzaG91bGQgYmUgY29tcGxldGVkLgotQEAgLTE2NzAsOSAr MTgyNywxNiBAQCByZXVzZWQgYXMgaW5wdXQuCi0gVGhlIEBvcHRpb257LXJ9IG9wdGlvbiByZW1v dmVzIGEgY29tcGxldGlvbiBzcGVjaWZpY2F0aW9uIGZvcgotIGVhY2ggQHZhcntuYW1lfSwgb3Is IGlmIG5vIEB2YXJ7bmFtZX1zIGFyZSBzdXBwbGllZCwgYWxsCi0gY29tcGxldGlvbiBzcGVjaWZp Y2F0aW9ucy4KLStUaGUgQG9wdGlvbnstRH0gb3B0aW9uIGluZGljYXRlcyB0aGF0IHRoZSByZW1h aW5pbmcgb3B0aW9ucyBhbmQgYWN0aW9ucyBzaG91bGQKLSthcHBseSB0byB0aGUgYGBkZWZhdWx0 JycgY29tbWFuZCBjb21wbGV0aW9uOyB0aGF0IGlzLCBjb21wbGV0aW9uIGF0dGVtcHRlZAotK29u IGEgY29tbWFuZCBmb3Igd2hpY2ggbm8gY29tcGxldGlvbiBoYXMgcHJldmlvdXNseSBiZWVuIGRl ZmluZWQuCi0rVGhlIEBvcHRpb257LUV9IG9wdGlvbiBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVtYWlu aW5nIG9wdGlvbnMgYW5kIGFjdGlvbnMgc2hvdWxkCi0rYXBwbHkgdG8gYGBlbXB0eScnIGNvbW1h bmQgY29tcGxldGlvbjsgdGhhdCBpcywgY29tcGxldGlvbiBhdHRlbXB0ZWQgb24gYSAKLStibGFu ayBsaW5lLgotIAotIFRoZSBwcm9jZXNzIG9mIGFwcGx5aW5nIHRoZXNlIGNvbXBsZXRpb24gc3Bl Y2lmaWNhdGlvbnMgd2hlbiB3b3JkIGNvbXBsZXRpb24KLS1pcyBhdHRlbXB0ZWQgaXMgZGVzY3Jp YmVkIGFib3ZlIChAcHhyZWZ7UHJvZ3JhbW1hYmxlIENvbXBsZXRpb259KS4KLStpcyBhdHRlbXB0 ZWQgaXMgZGVzY3JpYmVkIGFib3ZlIChAcHhyZWZ7UHJvZ3JhbW1hYmxlIENvbXBsZXRpb259KS4g IFRoZQotK0BvcHRpb257LUR9IG9wdGlvbiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgQG9wdGlvbnst RX0uCi0gCi0gT3RoZXIgb3B0aW9ucywgaWYgc3BlY2lmaWVkLCBoYXZlIHRoZSBmb2xsb3dpbmcg bWVhbmluZ3MuCi0gVGhlIGFyZ3VtZW50cyB0byB0aGUgQG9wdGlvbnstR30sIEBvcHRpb257LVd9 LCBhbmQgQG9wdGlvbnstWH0gb3B0aW9ucwotQEAgLTE3MDIsOSArMTg2NiwxMCBAQCBQZXJmb3Jt IGRpcmVjdG9yeSBuYW1lIGNvbXBsZXRpb24gaWYgdGhlCi0gCi0gQGl0ZW0gZmlsZW5hbWVzCi0g VGVsbCBSZWFkbGluZSB0aGF0IHRoZSBjb21wc3BlYyBnZW5lcmF0ZXMgZmlsZW5hbWVzLCBzbyBp dCBjYW4gcGVyZm9ybSBhbnkKLS1maWxlbmFtZS1zcGVjaWZpYyBwcm9jZXNzaW5nIChsaWtlIGFk ZGluZyBhIHNsYXNoIHRvIGRpcmVjdG9yeSBuYW1lcyBvcgotLXN1cHByZXNzaW5nIHRyYWlsaW5n IHNwYWNlcykuICBUaGlzIG9wdGlvbiBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHdpdGgKLS1zaGVs bCBmdW5jdGlvbnMgc3BlY2lmaWVkIHdpdGggQG9wdGlvbnstRn0uCi0rZmlsZW5hbWUtc3BlY2lm aWMgcHJvY2Vzc2luZyAobGlrZSBhZGRpbmcgYSBzbGFzaCB0byBkaXJlY3RvcnkgbmFtZXMKLStx dW90aW5nIHNwZWNpYWwgY2hhcmFjdGVycywgb3Igc3VwcHJlc3NpbmcgdHJhaWxpbmcgc3BhY2Vz KS4KLStUaGlzIG9wdGlvbiBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHdpdGggc2hlbGwgZnVuY3Rp b25zIHNwZWNpZmllZAotK3dpdGggQG9wdGlvbnstRn0uCi0gCi0gQGl0ZW0gbm9zcGFjZQotIFRl bGwgUmVhZGxpbmUgbm90IHRvIGFwcGVuZCBhIHNwYWNlICh0aGUgZGVmYXVsdCkgdG8gd29yZHMg Y29tcGxldGVkIGF0Ci1AQCAtMTc5OCwxNyArMTk2Myw2IEBAIFVzZXIgbmFtZXMuICBNYXkgYWxz byBiZSBzcGVjaWZpZWQgYXMgQG8KLSBOYW1lcyBvZiBhbGwgc2hlbGwgdmFyaWFibGVzLiAgTWF5 IGFsc28gYmUgc3BlY2lmaWVkIGFzIEBvcHRpb257LXZ9LgotIEBlbmQgdGFibGUKLSAKLS1AaXRl bSAtRyBAdmFye2dsb2JwYXR9Ci0tVGhlIGZpbGVuYW1lIGV4cGFuc2lvbiBwYXR0ZXJuIEB2YXJ7 Z2xvYnBhdH0gaXMgZXhwYW5kZWQgdG8gZ2VuZXJhdGUKLS10aGUgcG9zc2libGUgY29tcGxldGlv bnMuCi0tCi0tQGl0ZW0gLVcgQHZhcnt3b3JkbGlzdH0KLS1UaGUgQHZhcnt3b3JkbGlzdH0gaXMg c3BsaXQgdXNpbmcgdGhlIGNoYXJhY3RlcnMgaW4gdGhlCi0tQGVudntJRlN9IHNwZWNpYWwgdmFy aWFibGUgYXMgZGVsaW1pdGVycywgYW5kIGVhY2ggcmVzdWx0YW50IHdvcmQKLS1pcyBleHBhbmRl ZC4KLS1UaGUgcG9zc2libGUgY29tcGxldGlvbnMgYXJlIHRoZSBtZW1iZXJzIG9mIHRoZSByZXN1 bHRhbnQgbGlzdCB3aGljaAotLW1hdGNoIHRoZSB3b3JkIGJlaW5nIGNvbXBsZXRlZC4KLS0KLSBA aXRlbSAtQyBAdmFye2NvbW1hbmR9Ci0gQHZhcntjb21tYW5kfSBpcyBleGVjdXRlZCBpbiBhIHN1 YnNoZWxsIGVudmlyb25tZW50LCBhbmQgaXRzIG91dHB1dCBpcwotIHVzZWQgYXMgdGhlIHBvc3Np YmxlIGNvbXBsZXRpb25zLgotQEAgLTE4MTksMTMgKzE5NzMsOSBAQCBlbnZpcm9ubWVudC4KLSBX aGVuIGl0IGZpbmlzaGVzLCB0aGUgcG9zc2libGUgY29tcGxldGlvbnMgYXJlIHJldHJpZXZlZCBm cm9tIHRoZSB2YWx1ZQotIG9mIHRoZSBAZW52e0NPTVBSRVBMWX0gYXJyYXkgdmFyaWFibGUuCi0g Ci0tQGl0ZW0gLVggQHZhcntmaWx0ZXJwYXR9Ci0tQHZhcntmaWx0ZXJwYXR9IGlzIGEgcGF0dGVy biBhcyB1c2VkIGZvciBmaWxlbmFtZSBleHBhbnNpb24uCi0tSXQgaXMgYXBwbGllZCB0byB0aGUg bGlzdCBvZiBwb3NzaWJsZSBjb21wbGV0aW9ucyBnZW5lcmF0ZWQgYnkgdGhlCi0tcHJlY2VkaW5n IG9wdGlvbnMgYW5kIGFyZ3VtZW50cywgYW5kIGVhY2ggY29tcGxldGlvbiBtYXRjaGluZwotLUB2 YXJ7ZmlsdGVycGF0fSBpcyByZW1vdmVkIGZyb20gdGhlIGxpc3QuCi0tQSBsZWFkaW5nIEBzYW1w eyF9IGluIEB2YXJ7ZmlsdGVycGF0fSBuZWdhdGVzIHRoZSBwYXR0ZXJuOyBpbiB0aGlzCi0tY2Fz ZSwgYW55IGNvbXBsZXRpb24gbm90IG1hdGNoaW5nIEB2YXJ7ZmlsdGVycGF0fSBpcyByZW1vdmVk LgotK0BpdGVtIC1HIEB2YXJ7Z2xvYnBhdH0KLStUaGUgZmlsZW5hbWUgZXhwYW5zaW9uIHBhdHRl cm4gQHZhcntnbG9icGF0fSBpcyBleHBhbmRlZCB0byBnZW5lcmF0ZQotK3RoZSBwb3NzaWJsZSBj b21wbGV0aW9ucy4KLSAKLSBAaXRlbSAtUCBAdmFye3ByZWZpeH0KLSBAdmFye3ByZWZpeH0gaXMg YWRkZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHBvc3NpYmxlIGNvbXBsZXRpb24KLUBAIC0x ODM0LDYgKzE5ODQsMjEgQEAgYWZ0ZXIgYWxsIG90aGVyIG9wdGlvbnMgaGF2ZSBiZWVuIGFwcGxp ZQotIEBpdGVtIC1TIEB2YXJ7c3VmZml4fQotIEB2YXJ7c3VmZml4fSBpcyBhcHBlbmRlZCB0byBl YWNoIHBvc3NpYmxlIGNvbXBsZXRpb24KLSBhZnRlciBhbGwgb3RoZXIgb3B0aW9ucyBoYXZlIGJl ZW4gYXBwbGllZC4KLSsKLStAaXRlbSAtVyBAdmFye3dvcmRsaXN0fQotK1RoZSBAdmFye3dvcmRs aXN0fSBpcyBzcGxpdCB1c2luZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUKLStAZW52e0lGU30gc3Bl Y2lhbCB2YXJpYWJsZSBhcyBkZWxpbWl0ZXJzLCBhbmQgZWFjaCByZXN1bHRhbnQgd29yZAotK2lz IGV4cGFuZGVkLgotK1RoZSBwb3NzaWJsZSBjb21wbGV0aW9ucyBhcmUgdGhlIG1lbWJlcnMgb2Yg dGhlIHJlc3VsdGFudCBsaXN0IHdoaWNoCi0rbWF0Y2ggdGhlIHdvcmQgYmVpbmcgY29tcGxldGVk LgotKwotK0BpdGVtIC1YIEB2YXJ7ZmlsdGVycGF0fQotK0B2YXJ7ZmlsdGVycGF0fSBpcyBhIHBh dHRlcm4gYXMgdXNlZCBmb3IgZmlsZW5hbWUgZXhwYW5zaW9uLgotK0l0IGlzIGFwcGxpZWQgdG8g dGhlIGxpc3Qgb2YgcG9zc2libGUgY29tcGxldGlvbnMgZ2VuZXJhdGVkIGJ5IHRoZQotK3ByZWNl ZGluZyBvcHRpb25zIGFuZCBhcmd1bWVudHMsIGFuZCBlYWNoIGNvbXBsZXRpb24gbWF0Y2hpbmcK LStAdmFye2ZpbHRlcnBhdH0gaXMgcmVtb3ZlZCBmcm9tIHRoZSBsaXN0LgotK0EgbGVhZGluZyBA c2FtcHshfSBpbiBAdmFye2ZpbHRlcnBhdH0gbmVnYXRlcyB0aGUgcGF0dGVybjsgaW4gdGhpcwot K2Nhc2UsIGFueSBjb21wbGV0aW9uIG5vdCBtYXRjaGluZyBAdmFye2ZpbHRlcnBhdH0gaXMgcmVt b3ZlZC4KLSBAZW5kIHRhYmxlCi0gCi0gVGhlIHJldHVybiB2YWx1ZSBpcyB0cnVlIHVubGVzcyBh biBpbnZhbGlkIG9wdGlvbiBpcyBzdXBwbGllZCwgYW4gb3B0aW9uCi1AQCAtMTg0Miw1ICsyMDA3 LDMxIEBAIGFyZ3VtZW50LCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gcmVtb3ZlIGEKLSBhIEB2YXJ7 bmFtZX0gZm9yIHdoaWNoIG5vIHNwZWNpZmljYXRpb24gZXhpc3RzLCBvcgotIGFuIGVycm9yIG9j Y3VycyBhZGRpbmcgYSBjb21wbGV0aW9uIHNwZWNpZmljYXRpb24uCi0gCi0rQGl0ZW0gY29tcG9w dAotK0BidGluZGV4IGNvbXBvcHQKLStAZXhhbXBsZQotK0Bjb2Rle2NvbXBvcHR9IFstbyBAdmFy e29wdGlvbn1dIFstREVdIFsrbyBAdmFye29wdGlvbn1dIFtAdmFye25hbWV9XQotK0BlbmQgZXhh bXBsZQotK01vZGlmeSBjb21wbGV0aW9uIG9wdGlvbnMgZm9yIGVhY2ggQHZhcntuYW1lfSBhY2Nv cmRpbmcgdG8gdGhlCi0rQHZhcntvcHRpb259cywgb3IgZm9yIHRoZSBjdXJyZW50bHktZXhlY3V0 aW5nIGNvbXBsZXRpb24gaWYgbm8gQHZhcntuYW1lfXMKLSthcmUgc3VwcGxpZWQuCi0rSWYgbm8g QHZhcntvcHRpb259cyBhcmUgZ2l2ZW4sIGRpc3BsYXkgdGhlIGNvbXBsZXRpb24gb3B0aW9ucyBm b3IgZWFjaAotK0B2YXJ7bmFtZX0gb3IgdGhlIGN1cnJlbnQgY29tcGxldGlvbi4KLStUaGUgcG9z c2libGUgdmFsdWVzIG9mIEB2YXJ7b3B0aW9ufSBhcmUgdGhvc2UgdmFsaWQgZm9yIHRoZSBAY29k ZXtjb21wbGV0ZX0KLStidWlsdGluIGRlc2NyaWJlZCBhYm92ZS4KLStUaGUgQG9wdGlvbnstRH0g b3B0aW9uIGluZGljYXRlcyB0aGF0IHRoZSByZW1haW5pbmcgb3B0aW9ucyBzaG91bGQKLSthcHBs eSB0byB0aGUgYGBkZWZhdWx0JycgY29tbWFuZCBjb21wbGV0aW9uOyB0aGF0IGlzLCBjb21wbGV0 aW9uIGF0dGVtcHRlZAotK29uIGEgY29tbWFuZCBmb3Igd2hpY2ggbm8gY29tcGxldGlvbiBoYXMg cHJldmlvdXNseSBiZWVuIGRlZmluZWQuCi0rVGhlIEBvcHRpb257LUV9IG9wdGlvbiBpbmRpY2F0 ZXMgdGhhdCB0aGUgcmVtYWluaW5nIG9wdGlvbnMgc2hvdWxkCi0rYXBwbHkgdG8gYGBlbXB0eScn IGNvbW1hbmQgY29tcGxldGlvbjsgdGhhdCBpcywgY29tcGxldGlvbiBhdHRlbXB0ZWQgb24gYSAK LStibGFuayBsaW5lLgotKwotK1RoZSBAb3B0aW9uey1EfSBvcHRpb24gdGFrZXMgcHJlY2VkZW5j ZSBvdmVyIEBvcHRpb257LUV9LgotKwotK1RoZSByZXR1cm4gdmFsdWUgaXMgdHJ1ZSB1bmxlc3Mg YW4gaW52YWxpZCBvcHRpb24gaXMgc3VwcGxpZWQsIGFuIGF0dGVtcHQKLStpcyBtYWRlIHRvIG1v ZGlmeSB0aGUgb3B0aW9ucyBmb3IgYSBAdmFye25hbWV9IGZvciB3aGljaCBubyBjb21wbGV0aW9u Ci0rc3BlY2lmaWNhdGlvbiBleGlzdHMsIG9yIGFuIG91dHB1dCBlcnJvciBvY2N1cnMuCi0rCi0g QGVuZCB0YWJsZQotKwotIEBlbmQgaWZzZXQKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3Jl YWRsaW5lL2RvYy9ybHVzZXJtYW4udGV4aQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAx MTA3MDMub3JpZy9yZWFkbGluZS9kb2Mvcmx1c2VybWFuLnRleGkJMjAxMS0wNy0wMyAxMDo0MDo1 My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2RvYy9y bHVzZXJtYW4udGV4aQkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTQs OCArNCw2IEBACi0gQHNldHRpdGxlIEdOVSBSZWFkbGluZSBMaWJyYXJ5Ci0gQGNvbW1lbnQgJSoq ZW5kIG9mIGhlYWRlciAoVGhpcyBpcyBmb3IgcnVubmluZyBUZXhpbmZvIG9uIGEgcmVnaW9uLikK LSAKLS1Ac2V0Y2hhcHRlcm5ld3BhZ2Ugb2RkCi0tCi0gQGluY2x1ZGUgdmVyc2lvbi50ZXhpCi0g Ci0gQGNvcHlpbmcKLUBAIC0xNCw3ICsxMiw3IEBAIFRoaXMgbWFudWFsIGRlc2NyaWJlcyB0aGUg ZW5kIHVzZXIgaW50ZXIKLSBjb25zaXN0ZW5jeSBvZiB1c2VyIGludGVyZmFjZSBhY3Jvc3MgZGlz Y3JldGUgcHJvZ3JhbXMgd2hpY2ggcHJvdmlkZQotIGEgY29tbWFuZCBsaW5lIGludGVyZmFjZS4K LSAKLS1Db3B5cmlnaHQgQGNvcHlyaWdodHt9IDE5ODgtMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLStDb3B5cmlnaHQgQGNvcHlyaWdodHt9IDE5ODgtLTIwMTEgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIG1ha2Ug YW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mCi0gdGhpcyBtYW51YWwgcHJvdmlkZWQg dGhlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UKLUBAIC0yMiwx NSArMjAsMTYgQEAgYXJlIHByZXNlcnZlZCBvbiBhbGwgY29waWVzLgotIAotIEBxdW90YXRpb24K LSBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5 IHRoaXMgZG9jdW1lbnQKLS11bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50 YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjEgb3IKLSt1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjMgb3IKLSBhbnkgbGF0ZXIg dmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2l0aCBu bwotLUludmFyaWFudCBTZWN0aW9ucywgd2l0aCB0aGUgRnJvbnQtQ292ZXIgdGV4dHMgYmVpbmcg YGBBIEdOVSBNYW51YWwsJycKLStJbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGggdGhlIEZyb250LUNv dmVyIHRleHRzIGJlaW5nIGBgQSBHTlUgTWFudWFsJycsCi0gYW5kIHdpdGggdGhlIEJhY2stQ292 ZXIgVGV4dHMgYXMgaW4gKGEpIGJlbG93LiAgQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzCi0taW5j bHVkZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExp Y2Vuc2UuJycKLStpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdOVSBGcmVlIERv Y3VtZW50YXRpb24gTGljZW5zZScnLgotKwotKyhhKSBUaGUgRlNGJ3MgQmFjay1Db3ZlciBUZXh0 IGlzOiBZb3UgYXJlIGZyZWUgdG8gY29weSBhbmQgbW9kaWZ5Ci0rdGhpcyBHTlUgbWFudWFsLiAg QnV5aW5nIGNvcGllcyBmcm9tIEdOVSBQcmVzcyBzdXBwb3J0cyB0aGUgRlNGIGluCi0rZGV2ZWxv cGluZyBHTlUgYW5kIHByb21vdGluZyBzb2Z0d2FyZSBmcmVlZG9tLicnCi0gCi0tKGEpIFRoZSBG U0YncyBCYWNrLUNvdmVyIFRleHQgaXM6IGBgWW91IGhhdmUgZnJlZWRvbSB0byBjb3B5IGFuZCBt b2RpZnkKLS10aGlzIEdOVSBNYW51YWwsIGxpa2UgR05VIHNvZnR3YXJlLiAgQ29waWVzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZQotLVNvZnR3YXJlIEZvdW5kYXRpb24gcmFpc2UgZnVuZHMgZm9yIEdO VSBkZXZlbG9wbWVudC4nJwotIEBlbmQgcXVvdGF0aW9uCi0gQGVuZCBjb3B5aW5nCi0gCi1AQCAt NzAsMTggKzY5LDE0IEBAIHByb2dyYW1zIHdoaWNoIHByb3ZpZGUgYSBjb21tYW5kIGxpbmUgaW4K LSAKLSBAbWVudQotICogQ29tbWFuZCBMaW5lIEVkaXRpbmc6OgkgICBHTlUgUmVhZGxpbmUgVXNl cidzIE1hbnVhbC4KLS0qIENvcHlpbmcgVGhpcyBNYW51YWw6OgkJQ29weWluZyBUaGlzIE1hbnVh bC4KLSsqIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZTo6CUxpY2Vuc2UgZm9yIGNvcHlp bmcgdGhpcyBtYW51YWwuCi0gQGVuZCBtZW51Ci0gQGVuZCBpZm5vdHRleAotIAotIEBpbmNsdWRl IHJsdXNlci50ZXhpCi0gCi0tQG5vZGUgQ29weWluZyBUaGlzIE1hbnVhbAotLUBhcHBlbmRpeCBD b3B5aW5nIFRoaXMgTWFudWFsCi0tCi0tQG1lbnUKLS0qIEdOVSBGcmVlIERvY3VtZW50YXRpb24g TGljZW5zZTo6CUxpY2Vuc2UgZm9yIGNvcHlpbmcgdGhpcyBtYW51YWwuCi0tQGVuZCBtZW51Ci0r QG5vZGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCi0rQGFwcGVuZGl4IEdOVSBGcmVl IERvY3VtZW50YXRpb24gTGljZW5zZQotIAotIEBpbmNsdWRlIGZkbC50ZXhpCi0gCi1JbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9kb2MvdGV4aTJkdmkKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZG9jL3RleGkyZHZpCTIwMTEtMDct MDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFk bGluZS9kb2MvdGV4aTJkdmkJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBA IC01LDIwICs1LDE4IEBACi0gIyBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUs IDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDEsCi0gIyAyMDAyLCAyMDAzIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotICMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot LSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0 IHlvdXIgb3B0aW9uKQotLSMgYW55IGxhdGVyIHZlcnNpb24uCi0rIyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r IyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0rIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0gIwotLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r IyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSAjCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgeW91IGNhbiBlaXRoZXIgc2VuZCBlbWFpbCB0byB0aGlzCi0tIyBwcm9ncmFt J3MgbWFpbnRhaW5lciBvciB3cml0ZSB0bzogVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwK LS0jIEluYy47IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwOyBCb3N0b24sIE1BIDAyMTExLTEz MDcsIFVTQS4KLSsjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gIwotICMgT3JpZ2lu YWwgYXV0aG9yOiBOb2FoIEZyaWVkbWFuIDxmcmllZG1hbkBnbnUub3JnPi4KLSAjCi1JbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9kb2MvdGV4aTJodG1sCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2RvYy90ZXhpMmh0bWwJMjAxMS0w Ny0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3Jl YWRsaW5lL2RvYy90ZXhpMmh0bWwJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAK LUBAIC03LDIwICs3LDE5IEBACi0gIwotICMgICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwICBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAjCi0tIyAgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSMg ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLS0jICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0tIyAgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotLSMKLS0jICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSMgICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jICAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLS0jICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0t IwotLSMgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLS0jICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tIyAgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU ZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCi0tIyAK LSsjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rIyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rIwotKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsjCi0g Iy0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAKLSAjIFRoaXMgcmVxdWlyZXMgcGVybCB2ZXJzaW9u IDUgb3IgaGlnaGVyCi1AQCAtMzU2NCw3ICszNTYzLDcgQEAgSU5QVVRfTElORTogd2hpbGUgKCRf ID0gJm5leHRfbGluZSkgewotIAkJJG5hbWUgPSAmbm9ybWFsaXNlX25vZGUoJG5hbWUpOwotIAkJ JGxldmVsID0gJHNlYzJsZXZlbHskdGFnfTsKLSAJCSMgY2hlY2sgZm9yIGluZGV4Ci0tCQkkZmly c3RfaW5kZXhfY2hhcHRlciA9ICRuYW1lCi0rCQkkZmlyc3RfaW5kZXhfY2hhcHRlciA9ICRub2Rl Ci0gCQkgIGlmICgkbGV2ZWwgPT0gMSAmJiAhJGZpcnN0X2luZGV4X2NoYXB0ZXIgJiYgCi0gCQkg ICAgICAkbmFtZSA9fiAvaW5kZXgvaSk7Ci0gCQlpZiAoJGluX3RvcCAmJiAvaGVhZGluZy8pewot SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL3ZlcnNpb24udGV4aQotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9kb2MvdmVyc2lv bi50ZXhpCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45 MC4yMDExMDcwMy9yZWFkbGluZS9kb2MvdmVyc2lvbi50ZXhpCTIwMTEtMDctMDMgMTA6NDE6MjEu MDAwMDAwMDAwICswMjAwCi1AQCAtMSwxMCArMSwxMCBAQAotIEBpZ25vcmUKLS1Db3B5cmlnaHQg KEMpIDE5ODgtMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gCi0rQ29weXJpZ2h0 IChDKSAxOTg4LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuIAotIEBlbmQgaWdu b3JlCi0gCi0tQHNldCBFRElUSU9OIDUuMS1iZXRhMQotLUBzZXQgVkVSU0lPTiA1LjEtYmV0YTEK LS1Ac2V0IFVQREFURUQgMTEgTm92ZW1iZXIgMjAwNQotLUBzZXQgVVBEQVRFRC1NT05USCBOb3Zl bWJlciAyMDA1Ci0rQHNldCBFRElUSU9OIDYuMgotK0BzZXQgVkVSU0lPTiA2LjIKLStAc2V0IFVQ REFURUQgU2VwdGVtYmVyIDYgMjAxMAotK0BzZXQgVVBEQVRFRC1NT05USCBTZXB0ZW1iZXIgMjAx MAotIAotLUBzZXQgTEFTVENIQU5HRSBGcmkgTm92IDExIDE5OjUwOjUxIEVTVCAyMDA1Ci0rQHNl dCBMQVNUQ0hBTkdFIE1vbiBTZXAgIDYgMjI6MDc6MTAgRURUIDIwMTAKLUluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL3JlYWRsaW5lL2VtYWNzX2tleW1hcC5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2VtYWNzX2tleW1hcC5jCTIwMTEtMDctMDMg MTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGlu ZS9lbWFjc19rZXltYXAuYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAg LTEsMjQgKzEsMjMgQEAKLSAvKiBlbWFjc19rZXltYXAuYyAtLSB0aGUga2V5bWFwIGZvciBlbWFj c19tb2RlIGluIHJlYWRsaW5lICgpLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk4NywgMTk4 OSwgMTk5MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMp IDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0g ICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9y eSBlZGl0aW5nLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGli cmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0 IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0g ICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBp cyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBn ZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlv dSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJl YWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyov Ci0gCi0gI2lmICFkZWZpbmVkIChCVUZTSVopCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1JbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9DaGFuZ2VMb2cuZ2RiCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2V4YW1wbGVzL0No YW5nZUxvZy5nZGIJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL0NoYW5nZUxvZy5nZGIJMjAxMS0wNy0w MyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDMgKzEsNyBAQAotKzIwMTEtMDQtMjUg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJSW1wb3J0 ZWQgcmVhZGxpbmUgNi4yLCBhbmQgdXBzdHJlYW0gcGF0Y2ggMDAxLgotKwotIDIwMDYtMDQtMjQg IERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+Ci0gCi0gCUltcG9ydGVk IHJlYWRsaW5lIDUuMSwgYW5kIHVwc3RyZWFtIHBhdGNoZXMgMDAxLTAwNC4KLUluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL0lucHV0cmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMvSW5wdXRyYwkyMDEx LTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMv cmVhZGxpbmUvZXhhbXBsZXMvSW5wdXRyYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCAr MDIwMAotQEAgLTQsMjEgKzQsMjEgQEAKLSAjIG9uIHdoaWNoIHByb2dyYW0gaXMgcnVubmluZywg b3Igd2hhdCB0ZXJtaW5hbCBpcyBhY3RpdmUuCi0gIwotIAotLSMgQ29weXJpZ2h0IChDKSAxOTg5 LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgIENvcHlyaWdodCAoQykg MTk4OS0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICMKLS0jIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0tIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSMgYW55IGxhdGVyIHZlcnNpb24u Ci0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gIwotLSMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rIyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0r IyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgotICMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotLSMgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLgot IAotICMgSW4gYWxsIHByb2dyYW1zLCBhbGwgdGVybWluYWxzLCBtYWtlIHN1cmUgdGhpcyBpcyBi b3VuZC4KLSAiXEMteFxDLXIiOiByZS1yZWFkLWluaXQtZmlsZQotSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMvTWFrZWZpbGUuaW4JMjAx MS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAz L3JlYWRsaW5lL2V4YW1wbGVzL01ha2VmaWxlLmluCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAw MDAwICswMjAwCi1AQCAtMSwzMCArMSw0NiBAQAotICMKLSAjIFRoaXMgaXMgdGhlIE1ha2VmaWxl IGZvciB0aGUgcmVhZGxpbmUgZXhhbXBsZXMgc3ViZGlyZWN0b3J5LgotICMKLS0jIENvcHlyaWdo dCAoQykgMTk5NCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjIENvcHlyaWdodCAo QykgMTk5NCwyMDA4LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rIyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rCi0rIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotIAotLSMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tIyBhbnkgbGF0ZXIgdmVyc2lv bi4KLS0KLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jIEZv dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExIFVTQS4KLSBSTF9MSUJSQVJZX1ZFUlNJT04gPSBATElCVkVSU0lPTkAKLSAKLSBTSEVMTCA9 IEBNQUtFX1NIRUxMQAotIFJNID0gcm0gLWYKLSAKLStwcmVmaXggPSBAcHJlZml4QAotK2V4ZWNf cHJlZml4ID0gQGV4ZWNfcHJlZml4QAotKwotK2RhdGFyb290ZGlyID0gQGRhdGFyb290ZGlyQAot KwotK2JpbmRpciA9IEBiaW5kaXJACi0gc3JjZGlyID0gQHNyY2RpckAKLS1WUEFUSCA9IC46QHNy Y2RpckAKLStkYXRhZGlyID0gQGRhdGFkaXJACi0rVlBBVEggPSBAc3JjZGlyQAotIHRvcF9zcmNk aXIgPSBAdG9wX3NyY2RpckAKLS1CVUlMRF9ESVIgPSAuCi0rI0JVSUxEX0RJUiA9IC4KLStCVUlM RF9ESVIgPSBAQlVJTERfRElSQAotK2luc3RhbGxkaXIgPSAkKGRhdGFkaXIpL3JlYWRsaW5lCi0r Ci0rSU5TVEFMTCA9IEBJTlNUQUxMQAotK0lOU1RBTExfUFJPR1JBTSA9IEBJTlNUQUxMX1BST0dS QU1ACi0rSU5TVEFMTF9EQVRBID0gQElOU1RBTExfREFUQUAKLSsKLStFWEVFWFQgPSBARVhFRVhU QAotK09CSkVYVCA9IEBPQkpFWFRACi0gCi0gIyBTdXBwb3J0IGFuIGFsdGVybmF0ZSBkZXN0aW5h dGlvbiByb290IGRpcmVjdG9yeSBmb3IgcGFja2FnZSBidWlsZGluZwotIERFU1RESVIgPQotQEAg LTUxLDMxICs2Nyw1NiBAQCBURVJNQ0FQX0xJQiA9IEBURVJNQ0FQX0xJQkAKLSAJJHtSTX0gJEAK LSAJJChDQykgJChDQ0ZMQUdTKSAtYyAkPAotIAotLUVYRUNVVEFCTEVTID0gZmlsZW1hbiBybHRl c3QgcmwgcmxjYXQgcmx2ZXJzaW9uIGhpc3RleGFtcCAKLS1PQkpFQ1RTID0gZmlsZW1hbi5vIHJs dGVzdC5vIHJsLm8gcmxjYXQubyBybHZlcnNpb24ubyBoaXN0ZXhhbXAubwotK1NPVVJDRVMgPSBl eGNhbGxiYWNrLmMgZmlsZW1hbi5jIGhpc3RleGFtcC5jIG1hbmV4YW1wLmMgcmwtZmdldHMuYyBy bC5jIFwKLSsJCXJsY2F0LmMgcmxldmVudC5jIHJscHR5dGVzdC5jIHJsdGVzdC5jIHJsdmVyc2lv bi5jCi0rCi0rRVhFQ1VUQUJMRVMgPSBmaWxlbWFuJChFWEVFWFQpIHJsdGVzdCQoRVhFRVhUKSBy bCQoRVhFRVhUKSBybGNhdCQoRVhFRVhUKSBcCi0rCQlybGV2ZW50JChFWEVFWFQpIHJsdmVyc2lv biQoRVhFRVhUKSBoaXN0ZXhhbXAkKEVYRUVYVCkKLStPQkpFQ1RTID0gZmlsZW1hbi5vIHJsdGVz dC5vIHJsLm8gcmxldmVudC5vIHJsY2F0Lm8gcmx2ZXJzaW9uLm8gaGlzdGV4YW1wLm8KLSAKLSBh bGw6ICQoRVhFQ1VUQUJMRVMpCi0gZXZlcnl0aGluZzogYWxsCi0gCi0tcmw6IHJsLm8gJChSRUFE TElORV9MSUIpCi0rY2hlY2s6CXJsdmVyc2lvbiQoRVhFRVhUKQotKwlAZWNobyBSZWFkbGluZSB2 ZXJzaW9uOiBgcmx2ZXJzaW9uJChFWEVFWFQpYAotKwotK2luc3RhbGxkaXJzOgotKwktJChTSEVM TCkgJCh0b3Bfc3JjZGlyKS9zdXBwb3J0L21rZGlycyAkKERFU1RESVIpJChpbnN0YWxsZGlyKQot KwotK2luc3RhbGw6CWluc3RhbGxkaXJzCi0rCUBmb3IgZiBpbiAkKFNPVVJDRVMpOyBkbyBcCi0r CQkkKFJNKSAkKERFU1RESVIpJChpbnN0YWxsZGlyKS8kJGYgOyBcCi0rCQkkKElOU1RBTExfREFU QSkgJChzcmNkaXIpLyQkZiAkKERFU1RESVIpJChpbnN0YWxsZGlyKSA7IFwKLSsJZG9uZQotKwot K3VuaW5zdGFsbDoKLSsJQGZvciBmIGluICQoU09VUkNFUyk7IGRvIFwKLSsJCSQoUk0pICQoREVT VERJUikkKGluc3RhbGxkaXIpLyQkZiA7IFwKLSsJZG9uZQotKwktcm1kaXIgJChERVNURElSKSQo aW5zdGFsbGRpcikKLSsKLStybCQoRVhFRVhUKTogcmwubyAkKFJFQURMSU5FX0xJQikKLSAJJChQ VVJJRlkpICQoQ0MpICQoTERGTEFHUykgLW8gJEAgcmwubyAkKFJFQURMSU5FX0xJQikgJChURVJN Q0FQX0xJQikKLSAKLS1ybGNhdDogcmxjYXQubyAkKFJFQURMSU5FX0xJQikKLStybGNhdCQoRVhF RVhUKTogcmxjYXQubyAkKFJFQURMSU5FX0xJQikKLSAJJChQVVJJRlkpICQoQ0MpICQoTERGTEFH UykgLW8gJEAgcmxjYXQubyAkKFJFQURMSU5FX0xJQikgJChURVJNQ0FQX0xJQikKLSAKLS1maWxl bWFuOiBmaWxlbWFuLm8gJChSRUFETElORV9MSUIpCi0rcmxldmVudCQoRVhFRVhUKTogcmxldmVu dC5vICQoUkVBRExJTkVfTElCKQotKwkkKFBVUklGWSkgJChDQykgJChMREZMQUdTKSAtbyAkQCBy bGV2ZW50Lm8gJChSRUFETElORV9MSUIpICQoVEVSTUNBUF9MSUIpCi0rCi0rZmlsZW1hbiQoRVhF RVhUKTogZmlsZW1hbi5vICQoUkVBRExJTkVfTElCKQotIAkkKFBVUklGWSkgJChDQykgJChMREZM QUdTKSAtbyAkQCBmaWxlbWFuLm8gJChSRUFETElORV9MSUIpICQoVEVSTUNBUF9MSUIpCi0gCi0t cmx0ZXN0OiBybHRlc3QubyAkKFJFQURMSU5FX0xJQikKLStybHRlc3QkKEVYRUVYVCk6IHJsdGVz dC5vICQoUkVBRExJTkVfTElCKQotIAkkKFBVUklGWSkgJChDQykgJChMREZMQUdTKSAtbyAkQCBy bHRlc3QubyAkKFJFQURMSU5FX0xJQikgJChURVJNQ0FQX0xJQikKLSAKLS1ybHB0eXRlc3Q6IHJs cHR5dGVzdC5vICQoUkVBRExJTkVfTElCKQotK3JscHR5dGVzdCQoRVhFRVhUKTogcmxwdHl0ZXN0 Lm8gJChSRUFETElORV9MSUIpCi0gCSQoUFVSSUZZKSAkKENDKSAkKExERkxBR1MpIC1vICRAIHJs cHR5dGVzdC5vICQoUkVBRExJTkVfTElCKSAkKFRFUk1DQVBfTElCKQotIAotLXJsdmVyc2lvbjog cmx2ZXJzaW9uLm8gJChSRUFETElORV9MSUIpCi0rcmx2ZXJzaW9uJChFWEVFWFQpOiBybHZlcnNp b24ubyAkKFJFQURMSU5FX0xJQikKLSAJJChDQykgJChMREZMQUdTKSAtbyAkQCBybHZlcnNpb24u byAkKFJFQURMSU5FX0xJQikgJChURVJNQ0FQX0xJQikKLSAKLS1oaXN0ZXhhbXA6IGhpc3RleGFt cC5vICQoSElTVE9SWV9MSUIpCi0raGlzdGV4YW1wJChFWEVFWFQpOiBoaXN0ZXhhbXAubyAkKEhJ U1RPUllfTElCKQotIAkkKFBVUklGWSkgJChDQykgJChMREZMQUdTKSAtbyAkQCBoaXN0ZXhhbXAu byAtbGhpc3RvcnkgJChURVJNQ0FQX0xJQikKLSAKLSBjbGVhbiBtb3N0bHljbGVhbjoKLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL2F1dG9jb25mL0JBU0hfQ0hF Q0tfTElCX1RFUk1DQVAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4 YW1wbGVzL2F1dG9jb25mL0JBU0hfQ0hFQ0tfTElCX1RFUk1DQVAJMjAxMS0wNy0wMyAxMDo0MToy MS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNDAgQEAKLStBQ19ERUZVTihbQkFTSF9DSEVD S19MSUJfVEVSTUNBUF0sCi0rWwotK2lmIHRlc3QgIlgkYmFzaF9jdl90ZXJtY2FwX2xpYiIgPSAi WCI7IHRoZW4KLStfYmFzaF9uZWVkbXNnPXllcwotK2Vsc2UKLStBQ19NU0dfQ0hFQ0tJTkcod2hp Y2ggbGlicmFyeSBoYXMgdGhlIHRlcm1jYXAgZnVuY3Rpb25zKQotK19iYXNoX25lZWRtc2c9Ci0r ZmkKLStBQ19DQUNIRV9WQUwoYmFzaF9jdl90ZXJtY2FwX2xpYiwKLStbQUNfQ0hFQ0tfRlVOQyh0 Z2V0ZW50LCBiYXNoX2N2X3Rlcm1jYXBfbGliPWxpYmMsCi0rICBbQUNfQ0hFQ0tfTElCKHRlcm1j YXAsIHRnZXRlbnQsIGJhc2hfY3ZfdGVybWNhcF9saWI9bGlidGVybWNhcCwKLSsgICAgW0FDX0NI RUNLX0xJQih0aW5mbywgdGdldGVudCwgYmFzaF9jdl90ZXJtY2FwX2xpYj1saWJ0aW5mbywKLSsg ICAgICAgIFtBQ19DSEVDS19MSUIoY3Vyc2VzLCB0Z2V0ZW50LCBiYXNoX2N2X3Rlcm1jYXBfbGli PWxpYmN1cnNlcywKLSsJICAgIFtBQ19DSEVDS19MSUIobmN1cnNlcywgdGdldGVudCwgYmFzaF9j dl90ZXJtY2FwX2xpYj1saWJuY3Vyc2VzLAotKwkgICAgICAgIGJhc2hfY3ZfdGVybWNhcF9saWI9 Z251dGVybWNhcCldKV0pXSldKV0pCi0raWYgdGVzdCAiWCRfYmFzaF9uZWVkbXNnIiA9ICJYeWVz IjsgdGhlbgotK0FDX01TR19DSEVDS0lORyh3aGljaCBsaWJyYXJ5IGhhcyB0aGUgdGVybWNhcCBm dW5jdGlvbnMpCi0rZmkKLStBQ19NU0dfUkVTVUxUKHVzaW5nICRiYXNoX2N2X3Rlcm1jYXBfbGli KQotK2lmIHRlc3QgJGJhc2hfY3ZfdGVybWNhcF9saWIgPSBnbnV0ZXJtY2FwICYmIHRlc3QgLXog IiRwcmVmZXJfY3Vyc2VzIjsgdGhlbgotK0xERkxBR1M9IiRMREZMQUdTIC1MLi9saWIvdGVybWNh cCIKLStURVJNQ0FQX0xJQj0iLi9saWIvdGVybWNhcC9saWJ0ZXJtY2FwLmEiCi0rVEVSTUNBUF9E RVA9Ii4vbGliL3Rlcm1jYXAvbGlidGVybWNhcC5hIgotK2VsaWYgdGVzdCAkYmFzaF9jdl90ZXJt Y2FwX2xpYiA9IGxpYnRlcm1jYXAgJiYgdGVzdCAteiAiJHByZWZlcl9jdXJzZXMiOyB0aGVuCi0r VEVSTUNBUF9MSUI9LWx0ZXJtY2FwCi0rVEVSTUNBUF9ERVA9Ci0rZWxpZiB0ZXN0ICRiYXNoX2N2 X3Rlcm1jYXBfbGliID0gbGlidGluZm87IHRoZW4KLStURVJNQ0FQX0xJQj0tbHRpbmZvCi0rVEVS TUNBUF9ERVA9Ci0rZWxpZiB0ZXN0ICRiYXNoX2N2X3Rlcm1jYXBfbGliID0gbGlibmN1cnNlczsg dGhlbgotK1RFUk1DQVBfTElCPS1sbmN1cnNlcwotK1RFUk1DQVBfREVQPQotK2VsaWYgdGVzdCAk YmFzaF9jdl90ZXJtY2FwX2xpYiA9IGxpYmM7IHRoZW4KLStURVJNQ0FQX0xJQj0KLStURVJNQ0FQ X0RFUD0KLStlbHNlCi0rVEVSTUNBUF9MSUI9LWxjdXJzZXMKLStURVJNQ0FQX0RFUD0KLStmaQot K10pCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9hdXRvY29u Zi9STF9MSUJfUkVBRExJTkVfVkVSU0lPTgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcw LTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMv cmVhZGxpbmUvZXhhbXBsZXMvYXV0b2NvbmYvUkxfTElCX1JFQURMSU5FX1ZFUlNJT04JMjAxMS0w Ny0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMTE4IEBACi0rZG5sIG5l ZWQ6IHByZWZpeCBleGVjX3ByZWZpeCBsaWJkaXIgaW5jbHVkZWRpciBDQyBURVJNQ0FQX0xJQgot K2RubCByZXF1aXJlOgotK2RubAlBQ19QUk9HX0NDCi0rZG5sCUJBU0hfQ0hFQ0tfTElCX1RFUk1D QVAKLSsKLStBQ19ERUZVTihbUkxfTElCX1JFQURMSU5FX1ZFUlNJT05dLAotK1sKLStBQ19SRVFV SVJFKFtCQVNIX0NIRUNLX0xJQl9URVJNQ0FQXSkKLSsKLStBQ19NU0dfQ0hFQ0tJTkcoW3ZlcnNp b24gb2YgaW5zdGFsbGVkIHJlYWRsaW5lIGxpYnJhcnldKQotKwotKyMgV2hhdCBhIHBhaW4gaW4g dGhlIGFzcyB0aGlzIGlzLgotKwotKyMgc2F2ZSBjcHAgYW5kIGxkIG9wdGlvbnMKLStfc2F2ZV9D RkxBR1M9IiRDRkxBR1MiCi0rX3NhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rX3NhdmVfTElCUz0i JExJQlMiCi0rCi0rIyBEb24ndCBzZXQgYWNfY3ZfcmxfcHJlZml4IGlmIHRoZSBjYWxsZXIgaGFz IGFscmVhZHkgYXNzaWduZWQgYSB2YWx1ZS4gIFRoaXMKLSsjIGFsbG93cyB0aGUgY2FsbGVyIHRv IGRvIHNvbWV0aGluZyBsaWtlICRfcmxfcHJlZml4PSR3aXRodmFsIGlmIHRoZSB1c2VyCi0rIyBz cGVjaWZpZXMgLS13aXRoLWluc3RhbGxlZC1yZWFkbGluZT1QUkVGSVggYXMgYW4gYXJndW1lbnQg dG8gY29uZmlndXJlCi0rCi0raWYgdGVzdCAteiAiJGFjX2N2X3JsX3ByZWZpeCI7IHRoZW4KLSt0 ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBhY19jdl9ybF9wcmVmaXg9JGFjX2RlZmF1bHRfcHJl Zml4IHx8IGFjX2N2X3JsX3ByZWZpeD0ke3ByZWZpeH0KLStmaQotKwotK2V2YWwgYWNfY3Zfcmxf aW5jbHVkZWRpcj0ke2FjX2N2X3JsX3ByZWZpeH0vaW5jbHVkZQotK2V2YWwgYWNfY3ZfcmxfbGli ZGlyPSR7YWNfY3ZfcmxfcHJlZml4fS9saWIKLSsKLStMSUJTPSIkTElCUyAtbHJlYWRsaW5lICR7 VEVSTUNBUF9MSUJ9IgotK0NGTEFHUz0iJENGTEFHUyAtSSR7YWNfY3ZfcmxfaW5jbHVkZWRpcn0i Ci0rTERGTEFHUz0iJExERkxBR1MgLUwke2FjX2N2X3JsX2xpYmRpcn0iCi0rCi0rQUNfQ0FDSEVf VkFMKGFjX2N2X3JsX3ZlcnNpb24sCi0rW0FDX1RSWV9SVU4oWwotKyNpbmNsdWRlIDxzdGRpby5o PgotKyNpbmNsdWRlIDxyZWFkbGluZS9yZWFkbGluZS5oPgotKwotK2V4dGVybiBpbnQgcmxfZ251 X3JlYWRsaW5lX3A7Ci0rCi0rbWFpbigpCi0rewotKwlGSUxFICpmcDsKLSsJZnAgPSBmb3Blbigi Y29uZnRlc3Qucmx2IiwgInciKTsKLSsJaWYgKGZwID09IDApCi0rCQlleGl0KDEpOwotKwlpZiAo cmxfZ251X3JlYWRsaW5lX3AgIT0gMSkKLSsJCWZwcmludGYoZnAsICIwLjBcbiIpOwotKwllbHNl Ci0rCQlmcHJpbnRmKGZwLCAiJXNcbiIsIHJsX2xpYnJhcnlfdmVyc2lvbiA/IHJsX2xpYnJhcnlf dmVyc2lvbiA6ICIwLjAiKTsKLSsJZmNsb3NlKGZwKTsKLSsJZXhpdCgwKTsKLSt9Ci0rXSwKLSth Y19jdl9ybF92ZXJzaW9uPWBjYXQgY29uZnRlc3Qucmx2YCwKLSthY19jdl9ybF92ZXJzaW9uPScw LjAnLAotK2FjX2N2X3JsX3ZlcnNpb249JzQuMicpXSkKLSsKLStDRkxBR1M9IiRfc2F2ZV9DRkxB R1MiCi0rTERGTEFHUz0iJF9zYXZlX0xERkxBR1MiCi0rTElCUz0iJF9zYXZlX0xJQlMiCi0rCi0r UkxfTUFKT1I9MAotK1JMX01JTk9SPTAKLSsKLSsjICgKLStjYXNlICIkYWNfY3ZfcmxfdmVyc2lv biIgaW4KLSsyKnwzKnw0Knw1Knw2Knw3Knw4Knw5KikKLSsJUkxfTUFKT1I9YGVjaG8gJGFjX2N2 X3JsX3ZlcnNpb24gfCBzZWQgJ3M6XC4uKiQ6OidgCi0rCVJMX01JTk9SPWBlY2hvICRhY19jdl9y bF92ZXJzaW9uIHwgc2VkIC1lICdzOl4uKlwuOjonIC1lICdzOltbYS16QS1aXV0qJDo6J2AKLSsJ OzsKLStlc2FjCi0rCi0rIyAoKCgKLStjYXNlICRSTF9NQUpPUiBpbgotK1tbMC05XVswLTldXSkJ X1JMX01BSk9SPSRSTF9NQUpPUiA7OwotK1tbMC05XV0pCV9STF9NQUpPUj0wJFJMX01BSk9SIDs7 Ci0rKikJCV9STF9NQUpPUj0wMCA7OwotK2VzYWMKLSsKLSsjICgoKAotK2Nhc2UgJFJMX01JTk9S IGluCi0rW1swLTldWzAtOV1dKQlfUkxfTUlOT1I9JFJMX01JTk9SIDs7Ci0rW1swLTldXSkJX1JM X01JTk9SPTAkUkxfTUlOT1IgOzsKLSsqKQkJX1JMX01JTk9SPTAwIDs7Ci0rZXNhYwotKwotK1JM X1ZFUlNJT049IjB4JHtfUkxfTUFKT1J9JHtfUkxfTUlOT1J9IgotKwotKyMgUmVhZGxpbmUgdmVy c2lvbnMgZ3JlYXRlciB0aGFuIDQuMiBoYXZlIHRoZXNlIGRlZmluZXMgaW4gcmVhZGxpbmUuaAot KwotK2lmIHRlc3QgJGFjX2N2X3JsX3ZlcnNpb24gPSAnMC4wJyA7IHRoZW4KLSsJQUNfTVNHX1dB Uk4oW0NvdWxkIG5vdCB0ZXN0IHZlcnNpb24gb2YgaW5zdGFsbGVkIHJlYWRsaW5lIGxpYnJhcnku XSkKLStlbGlmIHRlc3QgJFJMX01BSk9SIC1ndCA0IHx8IHsgdGVzdCAkUkxfTUFKT1IgPSA0ICYm IHRlc3QgJFJMX01JTk9SIC1ndCAyIDsgfSA7IHRoZW4KLSsJIyBzZXQgdGhlc2UgZm9yIHVzZSBi eSB0aGUgY2FsbGVyCi0rCVJMX1BSRUZJWD0kYWNfY3ZfcmxfcHJlZml4Ci0rCVJMX0xJQkRJUj0k YWNfY3ZfcmxfbGliZGlyCi0rCVJMX0lOQ0xVREVESVI9JGFjX2N2X3JsX2luY2x1ZGVkaXIKLSsJ QUNfTVNHX1JFU1VMVCgkYWNfY3ZfcmxfdmVyc2lvbikKLStlbHNlCi0rCi0rQUNfREVGSU5FX1VO UVVPVEVEKFJMX1JFQURMSU5FX1ZFUlNJT04sICRSTF9WRVJTSU9OLCBbZW5jb2RlZCB2ZXJzaW9u IG9mIHRoZSBpbnN0YWxsZWQgcmVhZGxpbmUgbGlicmFyeV0pCi0rQUNfREVGSU5FX1VOUVVPVEVE KFJMX1ZFUlNJT05fTUFKT1IsICRSTF9NQUpPUiwgW21ham9yIHZlcnNpb24gb2YgaW5zdGFsbGVk IHJlYWRsaW5lIGxpYnJhcnldKQotK0FDX0RFRklORV9VTlFVT1RFRChSTF9WRVJTSU9OX01JTk9S LCAkUkxfTUlOT1IsIFttaW5vciB2ZXJzaW9uIG9mIGluc3RhbGxlZCByZWFkbGluZSBsaWJyYXJ5 XSkKLSsKLStBQ19TVUJTVChSTF9WRVJTSU9OKQotK0FDX1NVQlNUKFJMX01BSk9SKQotK0FDX1NV QlNUKFJMX01JTk9SKQotKwotKyMgc2V0IHRoZXNlIGZvciB1c2UgYnkgdGhlIGNhbGxlcgotK1JM X1BSRUZJWD0kYWNfY3ZfcmxfcHJlZml4Ci0rUkxfTElCRElSPSRhY19jdl9ybF9saWJkaXIKLStS TF9JTkNMVURFRElSPSRhY19jdl9ybF9pbmNsdWRlZGlyCi0rCi0rQUNfTVNHX1JFU1VMVCgkYWNf Y3ZfcmxfdmVyc2lvbikKLSsKLStmaQotK10pCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9y ZWFkbGluZS9leGFtcGxlcy9hdXRvY29uZi93aV9MSUJfUkVBRExJTkUKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL2F1dG9jb25mL3dpX0xJQl9SRUFETElO RQkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw3NiBAQAot K2RubCBCb3J1dCBSYXplbQotK2RubAotK2RubCBUaGlzIG1hY3JvIGNoZWNrcyBmb3IgdGhlIHBy ZXNlbmNlIG9mIHRoZSByZWFkbGluZSBsaWJyYXJ5LgotK2RubCBJdCB3b3JrcyBhbHNvIGluIGNy b3NzLWNvbXBpbGF0aW9uIGVudmlyb25tZW50LgotK2RubAotK2RubCBUbyBnZXQgaXQgaW50byB0 aGUgYWNsb2NhbC5tNCBkbmwgZmlsZSwgZG8gdGhpczoKLStkbmwgICBhY2xvY2FsIC1JIC4gLS12 ZXJib3NlCi0rZG5sCi0rZG5sIFRoZSAtLXZlcmJvc2Ugd2lsbCBzaG93IGFsbCBvZiB0aGUgZmls ZXMgdGhhdCBhcmUgc2VhcmNoZWQKLStkbmwgZm9yIC5tNCBtYWNyb3MuCi0rCi0rQUNfREVGVU4o W3dpX0xJQl9SRUFETElORV0sIFsKLSsgIGRubCBjaGVjayBmb3IgdGhlIHJlYWRsaW5lLmggaGVh ZGVyIGZpbGUKLSsKLSsgIEFDX0NIRUNLX0hFQURFUihyZWFkbGluZS9yZWFkbGluZS5oKQotKwot KyAgaWYgdGVzdCAiJGFjX2N2X2hlYWRlcl9yZWFkbGluZV9yZWFkbGluZV9oIiA9IHllczsgdGhl bgotKyAgICBkbmwgY2hlY2sgdGhlIHJlYWRsaW5lIHZlcnNpb24KLSsKLSsgICAgY2F0ID4gY29u ZnRlc3QuJGFjX2V4dCA8PEVPRgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxyZWFk bGluZS9yZWFkbGluZS5oPgotK3dpX0xJQl9SRUFETElORV9WRVJTSU9OIFJMX1ZFUlNJT05fTUFK T1IgUkxfVkVSU0lPTl9NSU5PUgotK0VPRgotKwotKyAgICB3aV9SRUFETElORV9WRVJTSU9OPSQo JENQUCAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCB8IHNlZCAtbiAtZSAicy9ed2lfTElCX1JF QURMSU5FX1ZFUlNJT04gICpcKFtbMC05XF1dW1swLTlcXV0qXCkgICpcKFtbMC05XF1dW1swLTlc XV0qXCkkL1wxLlwyL3AiKQotKyAgICBybSAtcmYgY29uZnRlc3QqCi0rCi0rICAgIGlmIHRlc3Qg LW4gIiR3aV9SRUFETElORV9WRVJTSU9OIjsgdGhlbgotKyAgICAgIHdpX01BSk9SPSQoZXhwciAk d2lfUkVBRExJTkVfVkVSU0lPTiA6ICdcKFtbMC05XV1bWzAtOV1dKlwpXC4nKQotKyAgICAgIHdp X01JTk9SPSQoZXhwciAkd2lfUkVBRExJTkVfVkVSU0lPTiA6ICdbWzAtOV1dW1swLTldXSpcLlwo W1swLTldXVtbMC05XV0qJFwpJykKLSsgICAgICBpZiB0ZXN0ICR3aV9NSU5PUiAtbHQgMTA7IHRo ZW4KLSsgICAgICAgIHdpX01JTk9SPSQoZXhwciAkd2lfTUlOT1IgXCogMTApCi0rICAgICAgZmkK LSsgICAgICB3aV9SRUFETElORV9WRVJTSU9OPSQoZXhwciAkd2lfTUFKT1IgXCogMTAwICsgJHdp X01JTk9SKQotKyAgICBlbHNlCi0rICAgICAgd2lfUkVBRExJTkVfVkVSU0lPTj0tMQotKyAgICBm aQotKwotKyAgICBkbmwgY2hlY2sgZm9yIHRoZSByZWFkbGluZSBsaWJyYXJ5Ci0rCi0rICAgIGFj X3NhdmVfTElCUz0iJExJQlMiCi0rICAgICMgTm90ZTogJExJQkNVUlNFUyBpcyBwZXJtaXR0ZWQg dG8gYmUgZW1wdHkuCi0rCi0rICAgIGZvciBMSUJSRUFETElORSBpbiAiLWxyZWFkbGluZS5kbGwi ICItbHJlYWRsaW5lIiAiLWxyZWFkbGluZSAkTElCQ1VSU0VTIiAiLWxyZWFkbGluZSAtbHRlcm1j YXAiICItbHJlYWRsaW5lIC1sbmN1cnNlcyIgIi1scmVhZGxpbmUgLWxjdXJzZXMiCi0rICAgIGRv Ci0rICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgR05VIFJlYWRsaW5lIGxpYnJhcnkgJExJQlJF QURMSU5FXSkKLSsKLSsgICAgICBMSUJTPSIkYWNfc2F2ZV9MSUJTICRMSUJSRUFETElORSIKLSsK LSsgICAgICBBQ19UUllfTElOSyhbCi0rICAgICAgICAvKiBpbmNsdWRlcyAqLwotKyAgICAgICAg I2luY2x1ZGUgPHN0ZGlvLmg+Ci0rICAgICAgICAjaW5jbHVkZSA8cmVhZGxpbmUvcmVhZGxpbmUu aD4KLSsgICAgICBdLFsKLSsgICAgICAgIC8qIGZ1bmN0aW9uLWJvZHkgKi8KLSsgICAgICAgIGlu dCBkdW1teSA9IHJsX2NvbXBsZXRpb25fYXBwZW5kX2NoYXJhY3RlcjsgLyogcmxfY29tcGxldGlv bl9hcHBlbmRfY2hhcmFjdGVyIGFwcGVhcmVkIGluIHZlcnNpb24gMi4xICovCi0rICAgICAgICBy ZWFkbGluZShOVUxMKTsKLSsgICAgICBdLFsKLSsgICAgICAgIHdpX2N2X2xpYl9yZWFkbGluZT15 ZXMKLSsgICAgICAgIEFDX01TR19SRVNVTFQoeWVzKQotKyAgICAgIF0sWwotKyAgICAgICAgd2lf Y3ZfbGliX3JlYWRsaW5lPW5vCi0rICAgICAgICBBQ19NU0dfUkVTVUxUKG5vKQotKyAgICAgIF0p Ci0rCi0rICAgICAgaWYgdGVzdCAiJHdpX2N2X2xpYl9yZWFkbGluZSIgPSB5ZXM7IHRoZW4KLSsg ICAgICAgIEFDX1NVQlNUKExJQlJFQURMSU5FKQotKyAgICAgICAgQUNfREVGSU5FX1VOUVVPVEVE KEhBVkVfTElCUkVBRExJTkUsICR3aV9SRUFETElORV9WRVJTSU9OLCBbUmVhZGxpbmVdKQotKyAg ICAgICAgYnJlYWsKLSsgICAgICBmaQotKyAgICBkb25lCi0rCi0rICAgIExJQlM9IiRhY19zYXZl X0xJQlMiCi0rICBmaQotK10pCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9l eGFtcGxlcy9leGNhbGxiYWNrLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAz Lm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMvZXhjYWxsYmFjay5jCTIwMTEtMDctMDMgMTA6NDA6NTMu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxl cy9leGNhbGxiYWNrLmMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0z Miw2ICszMiw5IEBAIExldCBtZSBrbm93IHdoYXQgeW91IHRoaW5rLgotIAotIEplZmYKLSAqLwot Ky8qCi0rQ29weXJpZ2h0IChDKSAxOTk5IEplZmYgU29sb21vbgotKyovCi0gCi0gI2lmIGRlZmlu ZWQgKEhBVkVfQ09ORklHX0gpCi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvZmlsZW1hbi5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2V4YW1wbGVzL2ZpbGVtYW4uYwkyMDEx LTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMv cmVhZGxpbmUvZXhhbXBsZXMvZmlsZW1hbi5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAw ICswMjAwCi1AQCAtMSwyMiArMSwyMyBAQAotLS8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDAyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIGZpbGVtYW4uYyAtIGZpbGUgbWFuYWdl ciBleGFtcGxlIGZvciByZWFkbGluZSBsaWJyYXJ5LiAqLwotIAotLSAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotKy8qIENvcHly aWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAg IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUp LCBhIGxpYnJhcnkgZm9yCi0gICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3Rp dmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKLS0gICBhbmQv b3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0tICAg VGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVhZGxpbmUgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlw cGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZp bGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBoYXZlIGEg Y29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0Eu ICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0gLyogZmlsZW1hbi5jIC0t IEEgdGlueSBhcHBsaWNhdGlvbiB3aGljaCBkZW1vbnN0cmF0ZXMgaG93IHRvIHVzZSB0aGUKLSAg ICBHTlUgUmVhZGxpbmUgbGlicmFyeS4gIFRoaXMgYXBwbGljYXRpb24gaW50ZXJhY3RpdmVseSBh bGxvd3MgdXNlcnMKLUBAIC01MCw2ICs1MSw4IEBACi0gIyAgaW5jbHVkZSA8c3RkbGliLmg+Ci0g I2VuZGlmCi0gCi0rI2luY2x1ZGUgPHRpbWUuaD4KLSsKLSAjaWZkZWYgUkVBRExJTkVfTElCUkFS WQotICMgIGluY2x1ZGUgInJlYWRsaW5lLmgiCi0gIyAgaW5jbHVkZSAiaGlzdG9yeS5oIgotQEAg LTU4LDcgKzYxLDcgQEAKLSAjICBpbmNsdWRlIDxyZWFkbGluZS9oaXN0b3J5Lmg+Ci0gI2VuZGlm Ci0gCi0tZXh0ZXJuIGNoYXIgKnhtYWxsb2MgKCk7Ci0rZXh0ZXJuIGNoYXIgKnhtYWxsb2MgUEFS QU1TKChzaXplX3QpKTsKLSAKLSAvKiBUaGUgbmFtZXMgb2YgZnVuY3Rpb25zIHRoYXQgYWN0dWFs bHkgZG8gdGhlIG1hbmlwdWxhdGlvbi4gKi8KLSBpbnQgY29tX2xpc3QgUEFSQU1TKChjaGFyICop KTsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL2hpc3RleGFt cC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2V4 YW1wbGVzL2hpc3RleGFtcC5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9oaXN0ZXhhbXAuYwkyMDEx LTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjIgKzEsMjMgQEAKLS0vKiBD b3B5cmlnaHQgKEMpIDE5ODctMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsv KiBoaXN0ZXhhbXAuYyAtIGhpc3RvcnkgbGlicmFyeSBleGFtcGxlIHByb2dyYW0uICovCi0gCi0t ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJh cnkgZm9yCi0rLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBM aWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeSBmb3IKLSAgICByZWFkaW5nIGxpbmVzIG9mIHRl eHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotIAotLSAgIFRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVy YWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRv IG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0 b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxp bmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAK LSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRs aW5lL2V4YW1wbGVzL21hbmV4YW1wLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEw NzAzLm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMvbWFuZXhhbXAuYwkyMDExLTA3LTAzIDEwOjQwOjUz LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBs ZXMvbWFuZXhhbXAuYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEs MjQgKzEsMjMgQEAKLSAvKiBtYW5leGFtcC5jIC0tIFRoZSBleGFtcGxlcyB3aGljaCBhcHBlYXIg aW4gdGhlIGRvY3VtZW50YXRpb24gYXJlIGhlcmUuICovCi0gCi0tLyogQ29weXJpZ2h0IChDKSAx OTg3LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChD KSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCi0r ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGlu ZSksIGEgbGlicmFyeSBmb3IKLSAgICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFj dGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUg TGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAgIGFu ZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0g ICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGluZSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNo aXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEg ZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUg YSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVT QS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAKLSAjaW5jbHVkZSA8c3Rk aW8uaD4KLSAjaW5jbHVkZSA8cmVhZGxpbmUvcmVhZGxpbmUuaD4KLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL3JlYWRsaW5lYnVmLmgKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMvcmVhZGxpbmVidWYu aAkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAx MTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvcmVhZGxpbmVidWYuaAkyMDExLTA3LTAzIDEwOjQxOjIx LjAwMDAwMDAwMCArMDIwMAotQEAgLTgsNyArOCw3IEBACi0gICoKLSAgKiBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot ICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0tICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyICBvZiB0aGUgTGljZW5zZSwgb3IKLSAgKiAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICAqCi0gICogVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9ybC5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2V4YW1wbGVzL3JsLmMJMjAxMS0wNy0w MyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRs aW5lL2V4YW1wbGVzL3JsLmMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBA IC01LDI1ICs1LDI0IEBACi0gICogdXNhZ2U6IHJsIFstcCBwcm9tcHRdIFstdSB1bml0XSBbLWQg ZGVmYXVsdF0gWy1uIG5jaGFyc10KLSAgKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAw MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5ODct MjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLSsgICBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBs aWJyYXJ5IGZvcgotICAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlu cHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5 IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0Ci0tICAgYW5kL29yIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0tICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIsIG9yCi0rICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIAotLSAgIFRoZSBH TlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUKLS0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5Ci0tICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIFJlYWRsaW5lIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0gICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSAKLS0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3 aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNh bGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90Ci0tICAgaGF2ZSBhIGNvcHkg b2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0t ICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwot KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotICNpZiBkZWZpbmVkIChIQVZFX0NP TkZJR19IKQotICMgIGluY2x1ZGUgPGNvbmZpZy5oPgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvcmVhZGxpbmUvZXhhbXBsZXMvcmxjYXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAu MjAxMTA3MDMub3JpZy9yZWFkbGluZS9leGFtcGxlcy9ybGNhdC5jCTIwMTEtMDctMDMgMTA6NDA6 NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFt cGxlcy9ybGNhdC5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtNCwy NSArNCwyNCBAQAotICAqIHVzYWdlOiBybGNhdAotICAqLwotIAotLS8qIENvcHlyaWdodCAoQykg MTk4Ny0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAo QykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgot KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxp bmUpLCBhIGxpYnJhcnkgZm9yCi0gICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJh Y3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5l IExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKLS0gICBh bmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0t ICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVhZGxpbmUg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBz aGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBh IGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBoYXZl IGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBV U0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0gI2lmIGRlZmluZWQg KEhBVkVfQ09ORklHX0gpCi0gIyAgaW5jbHVkZSA8Y29uZmlnLmg+Ci1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9ybGV2ZW50LmMKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4y LjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL3JsZXZlbnQuYwkyMDExLTA3LTAzIDEwOjQx OjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxNjYgQEAKLSsvKgotKyAqIHJsIC0gY29t bWFuZC1saW5lIGludGVyZmFjZSB0byByZWFkIGEgbGluZSBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1 dAotKyAqICAgICAgKG9yIGFub3RoZXIgZmQpIHVzaW5nIHJlYWRsaW5lLgotKyAqCi0rICogdXNh Z2U6IHJsIFstcCBwcm9tcHRdIFstdSB1bml0XSBbLWQgZGVmYXVsdF0gWy1uIG5jaGFyc10KLSsg Ki8KLSsKLSsvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExp YnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5IGZvcgotKyAgIHJlYWRpbmcgbGluZXMgb2YgdGV4 dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rCi0rICAgUmVh ZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsKLSsjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkK LSsjICBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4K LSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rCi0rI2lmZGVmIEhBVkVfU1RETElCX0gKLSsjICBp bmNsdWRlIDxzdGRsaWIuaD4KLSsjZWxzZSAKLStleHRlcm4gdm9pZCBleGl0KCk7Ci0rI2VuZGlm Ci0rCi0rI2lmIGRlZmluZWQgKFJFQURMSU5FX0xJQlJBUlkpCi0rIyAgaW5jbHVkZSAicG9zaXhz dGF0LmgiCi0rIyAgaW5jbHVkZSAicmVhZGxpbmUuaCIKLSsjICBpbmNsdWRlICJoaXN0b3J5Lmgi Ci0rI2Vsc2UKLSsjICBpbmNsdWRlIDxzeXMvc3RhdC5oPgotKyMgIGluY2x1ZGUgPHJlYWRsaW5l L3JlYWRsaW5lLmg+Ci0rIyAgaW5jbHVkZSA8cmVhZGxpbmUvaGlzdG9yeS5oPgotKyNlbmRpZgot KwotK2V4dGVybiBpbnQgb3B0aW5kOwotK2V4dGVybiBjaGFyICpvcHRhcmc7Ci0rCi0rI2lmICFk ZWZpbmVkIChzdHJjaHIpICYmICFkZWZpbmVkIChfX1NURENfXykKLStleHRlcm4gY2hhciAqc3Ry cmNocigpOwotKyNlbmRpZgotKwotK3N0YXRpYyBjaGFyICpwcm9nbmFtZTsKLStzdGF0aWMgY2hh ciAqZGVmdGV4dDsKLSsKLStzdGF0aWMgaW50Ci0rZXZlbnRfaG9vayAoKQotK3sKLSsgIGZwcmlu dGYgKHN0ZGVyciwgImRpbmchXG4iKTsKLSsgIHNsZWVwICgxKTsKLSsgIHJldHVybiAwOwotK30K LSsKLStzdGF0aWMgaW50Ci0rc2V0X2RlZnRleHQgKCkKLSt7Ci0rICBpZiAoZGVmdGV4dCkKLSsg ICAgewotKyAgICAgIHJsX2luc2VydF90ZXh0IChkZWZ0ZXh0KTsKLSsgICAgICBkZWZ0ZXh0ID0g KGNoYXIgKilOVUxMOwotKyAgICAgIHJsX3N0YXJ0dXBfaG9vayA9IChybF9ob29rX2Z1bmNfdCAq KU5VTEw7Ci0rICAgIH0KLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3VzYWdl KCkKLSt7Ci0rICBmcHJpbnRmIChzdGRlcnIsICIlczogdXNhZ2U6ICVzIFstcCBwcm9tcHRdIFst dSB1bml0XSBbLWQgZGVmYXVsdF0gWy1uIG5jaGFyc11cbiIsCi0rCQlwcm9nbmFtZSwgcHJvZ25h bWUpOwotK30KLSsKLStpbnQKLSttYWluIChhcmdjLCBhcmd2KQotKyAgICAgaW50IGFyZ2M7Ci0r ICAgICBjaGFyICoqYXJndjsKLSt7Ci0rICBjaGFyICp0ZW1wLCAqcHJvbXB0OwotKyAgc3RydWN0 IHN0YXQgc2I7Ci0rICBpbnQgb3B0LCBmZCwgbmNoOwotKyAgRklMRSAqaWZwOwotKwotKyAgcHJv Z25hbWUgPSBzdHJyY2hyKGFyZ3ZbMF0sICcvJyk7Ci0rICBpZiAocHJvZ25hbWUgPT0gMCkKLSsg ICAgcHJvZ25hbWUgPSBhcmd2WzBdOwotKyAgZWxzZQotKyAgICBwcm9nbmFtZSsrOwotKwotKyAg LyogZGVmYXVsdHMgKi8KLSsgIHByb21wdCA9ICJyZWFkbGluZSQgIjsKLSsgIGZkID0gbmNoID0g MDsKLSsgIGRlZnRleHQgPSAoY2hhciAqKTA7Ci0rCi0rICB3aGlsZSAoKG9wdCA9IGdldG9wdChh cmdjLCBhcmd2LCAicDp1OmQ6bjoiKSkgIT0gRU9GKQotKyAgICB7Ci0rICAgICAgc3dpdGNoIChv cHQpCi0rCXsKLSsJY2FzZSAncCc6Ci0rCSAgcHJvbXB0ID0gb3B0YXJnOwotKwkgIGJyZWFrOwot KwljYXNlICd1JzoKLSsJICBmZCA9IGF0b2kob3B0YXJnKTsKLSsJICBpZiAoZmQgPCAwKQotKwkg ICAgewotKwkgICAgICBmcHJpbnRmIChzdGRlcnIsICIlczogYmFkIGZpbGUgZGVzY3JpcHRvciBg JXMnXG4iLCBwcm9nbmFtZSwgb3B0YXJnKTsKLSsJICAgICAgZXhpdCAoMik7Ci0rCSAgICB9Ci0r CSAgYnJlYWs7Ci0rCWNhc2UgJ2QnOgotKwkgIGRlZnRleHQgPSBvcHRhcmc7Ci0rCSAgYnJlYWs7 Ci0rCWNhc2UgJ24nOgotKwkgIG5jaCA9IGF0b2kob3B0YXJnKTsKLSsJICBpZiAobmNoIDwgMCkK LSsJICAgIHsKLSsJICAgICAgZnByaW50ZiAoc3RkZXJyLCAiJXM6IGJhZCB2YWx1ZSBmb3IgLW46 IGAlcydcbiIsIHByb2duYW1lLCBvcHRhcmcpOwotKwkgICAgICBleGl0ICgyKTsKLSsJICAgIH0K LSsJICBicmVhazsKLSsJZGVmYXVsdDoKLSsJICB1c2FnZSAoKTsKLSsJICBleGl0ICgyKTsKLSsJ fQotKyAgICB9Ci0rCi0rICBpZiAoZmQgIT0gMCkKLSsgICAgewotKyAgICAgIGlmIChmc3RhdCAo ZmQsICZzYikgPCAwKQotKwl7Ci0rCSAgZnByaW50ZiAoc3RkZXJyLCAiJXM6ICVkOiBiYWQgZmls ZSBkZXNjcmlwdG9yXG4iLCBwcm9nbmFtZSwgZmQpOwotKwkgIGV4aXQgKDEpOwotKwl9Ci0rICAg ICAgaWZwID0gZmRvcGVuIChmZCwgInIiKTsKLSsgICAgICBybF9pbnN0cmVhbSA9IGlmcDsKLSsg ICAgfQotKwotKyAgaWYgKGRlZnRleHQgJiYgKmRlZnRleHQpCi0rICAgIHJsX3N0YXJ0dXBfaG9v ayA9IHNldF9kZWZ0ZXh0OwotKwotKyAgaWYgKG5jaCA+IDApCi0rICAgIHJsX251bV9jaGFyc190 b19yZWFkID0gbmNoOwotKwotKyAgcmxfZXZlbnRfaG9vayA9IGV2ZW50X2hvb2s7Ci0rICB0ZW1w ID0gcmVhZGxpbmUgKHByb21wdCk7Ci0rCi0rICAvKiBUZXN0IGZvciBFT0YuICovCi0rICBpZiAo dGVtcCA9PSAwKQotKyAgICBleGl0ICgxKTsKLSsKLSsgIHByaW50ZiAoIiVzXG4iLCB0ZW1wKTsK LSsgIGV4aXQgKDApOwotK30KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4 YW1wbGVzL3JsZmUvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcw My5vcmlnL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvQ2hhbmdlTG9nCTIwMTEtMDctMDMgMTA6NDA6 NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFt cGxlcy9ybGZlL0NoYW5nZUxvZwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAot QEAgLTEsMTQgKzEsMyBAQAotLTIwMDktMDgtMjIgIFJhbGYgV2lsZGVuaHVlcyAgPFJhbGYuV2ls ZGVuaHVlc0BnbXguZGU+Ci0tCi0tCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgotLQotLQkqIGNv bmZpZ3VyZS5pbjogbTRfaW5jbHVkZSB0b3BsZXZlbCBjb25maWcvb3ZlcnJpZGUubTQuCi0tCSog Y29uZmlndXJlOiBSZWdlbmVyYXRlLgotLQotLTIwMDktMDctMzAgIFJhbGYgV2lsZGVuaHVlcyAg PFJhbGYuV2lsZGVuaHVlc0BnbXguZGU+Ci0tCi0tCSogY29uZmlndXJlLmluOiBDb3JyZWN0bHkg cXVvdGUgQUNfUFJPR1JBTV9TT1VSQ0UgZGVmaW5pdGlvbi4KLS0KLSAyMDA0LTExLTA0ICBQZXIg Qm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KLSAKLSAJKiBwdHkuYzogIEltcG9ydCBmcm9tIHNj cmVlbi00LjAuMi4KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVz L3JsZmUvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9y aWcvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9NYWtlZmlsZS5pbgkyMDExLTA3LTAzIDEwOjQwOjUz LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBs ZXMvcmxmZS9NYWtlZmlsZS5pbgkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAot QEAgLTI1LDcgKzI1LDcgQEAgQ0ZMQUdTID0gQENGTEFHU0AKLSBDUFBGTEFHUyA9IEBDUFBGTEFH U0AKLSAjTERGTEFHUyA9IC1MJChSRUFETElORV9ESVIpCi0gTERGTEFHUyA9IEBMREZMQUdTQAot LUxJQlMgPSAtbHJlYWRsaW5lIC1saGlzdG9yeSAtbG5jdXJzZXMKLStMSUJTID0gLWxyZWFkbGlu ZSAtbGhpc3RvcnkgQExJQlNACi0gCi0gQ1BQPUBDUFBACi0gQ1BQX0RFUEVORD0kKENDKSAtTU0K LUBAIC01NSw3ICs1NSw3IEBAIHJsZmUtJChWRVJTSU9OKS50YXIuZ3o6Ci0gCXRhciBjemYgJEAg JChDRklMRVMpICQoSEZJTEVTKSAkKEVYVFJBX0RJU1QpCi0gCi0gLmMubzoKLS0JJChDQykgLWMg LUkuIC1JJChzcmNkaXIpICQoTV9DRkxBR1MpICQoREVGUykgJChPUFRJT05TKSAkKENGTEFHUykg JDwKLSsJJChDQykgLWMgLUkuIC1JJChzcmNkaXIpICQoQ1BQRkxBR1MpICQoTV9DRkxBR1MpICQo REVGUykgJChPUFRJT05TKSAkKENGTEFHUykgJDwKLSAKLSBpbnN0YWxsX2JpbjogLnZlcnNpb24g c2NyZWVuCi0gCS1pZiBbIC1mICQoREVTVERJUikkKGJpbmRpcikvJChTQ1JFRU4pIF0gJiYgWyAh IC1mICQoREVTVERJUikkKGJpbmRpcikvJChTQ1JFRU4pLm9sZCBdOyBcCi1AQCAtNjgsNyArNjgs NiBAQCBpbnN0YWxsX2JpbjogLnZlcnNpb24gc2NyZWVuCi0gCShjZCAkKERFU1RESVIpJChiaW5k aXIpICYmIGxuIC1zZiAkKFNDUkVFTikgc2NyZWVuKQotIAljcCAkKHNyY2RpcikvdXRmOGVuY29k aW5ncy8/PyAkKERFU1RESVIpJChTQ1JFRU5FTkNPRElOR1MpCi0gCi0tCi0gdW5pbnN0YWxsOiAu dmVyc2lvbgotIAlybSAtZiAkKERFU1RESVIpJChiaW5kaXIpLyQoU0NSRUVOKQotIAlybSAtZiAk KERFU1RESVIpJChiaW5kaXIpL3NjcmVlbgotQEAgLTE3MCw2ICsxNjksMTUgQEAgZGVwZW5kLmlu OiAkKENGSUxFUykgdGVybS5oCi0gCWZvciBpIGluICQoQ0ZJTEVTKTsgZG8gZWNobyAkJGk7ICQo Q1BQX0RFUEVORCkgJCRpID4+IHRtcF9tYWtlOyBkb25lIAotIAltdiB0bXBfbWFrZSBNYWtlZmls ZS5pbgotIAotK01ha2VmaWxlIG1ha2VmaWxlOgljb25maWcuc3RhdHVzICQoc3JjZGlyKS9NYWtl ZmlsZS5pbgotKwlDT05GSUdfRklMRVM9TWFrZWZpbGUgQ09ORklHX0hFQURFUlM9ICQoU0hFTEwp IC4vY29uZmlnLnN0YXR1cwotKwotK2NvbmZpZy5zdGF0dXM6CSQoc3JjZGlyKS9jb25maWd1cmUK LSsJJChTSEVMTCkgLi9jb25maWcuc3RhdHVzIC0tcmVjaGVjawotKwotKyQoc3JjZGlyKS9jb25m aWd1cmU6CSQoc3JjZGlyKS9jb25maWd1cmUuaW4KLSsJY2QgJChzcmNkaXIpICYmIGF1dG9jb25m Ci0rCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIAotICMjIyBEZXBlbmRlbmNpZXM6Ci1JbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9ybGZlL2NvbmZpZy5oLmlu Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2V4YW1w bGVzL3JsZmUvY29uZmlnLmguaW4JMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvY29uZmlnLmgu aW4JMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zNzMsMyArMzczLDcg QEAKLSAjdW5kZWYgUFRZUkFOR0UxCi0gCi0gI2RlZmluZSBVU0VWQVJBUkdTCi0rCi0rI3VuZGVm IEhBVkVfU1lTX1NUUk9QVFNfSAotKwotKyN1bmRlZiBIQVZFX1NZU19XQUlUX0gKLUluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvY29uZmlndXJlCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2V4YW1wbGVzL3Js ZmUvY29uZmlndXJlCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9ybGZlL2NvbmZpZ3VyZQkyMDExLTA3 LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTU1Miw2ICs1NTIsNDIgQEAgUEFDS0FH RV9CVUdSRVBPUlQ9Ci0gUEFDS0FHRV9VUkw9Ci0gCi0gYWNfdW5pcXVlX2ZpbGU9InJsZmUuYyIK LSsjIEZhY3RvcmluZyBkZWZhdWx0IGhlYWRlcnMgZm9yIG1vc3QgdGVzdHMuCi0rYWNfaW5jbHVk ZXNfZGVmYXVsdD0iXAotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpZmRlZiBIQVZFX1NZU19UWVBF U19ICi0rIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjZW5kaWYKLSsjaWZkZWYgSEFWRV9TWVNf U1RBVF9ICi0rIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgotKyNlbmRpZgotKyNpZmRlZiBTVERDX0hF QURFUlMKLSsjIGluY2x1ZGUgPHN0ZGxpYi5oPgotKyMgaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2Vs c2UKLSsjIGlmZGVmIEhBVkVfU1RETElCX0gKLSsjICBpbmNsdWRlIDxzdGRsaWIuaD4KLSsjIGVu ZGlmCi0rI2VuZGlmCi0rI2lmZGVmIEhBVkVfU1RSSU5HX0gKLSsjIGlmICFkZWZpbmVkIFNURENf SEVBREVSUyAmJiBkZWZpbmVkIEhBVkVfTUVNT1JZX0gKLSsjICBpbmNsdWRlIDxtZW1vcnkuaD4K LSsjIGVuZGlmCi0rIyBpbmNsdWRlIDxzdHJpbmcuaD4KLSsjZW5kaWYKLSsjaWZkZWYgSEFWRV9T VFJJTkdTX0gKLSsjIGluY2x1ZGUgPHN0cmluZ3MuaD4KLSsjZW5kaWYKLSsjaWZkZWYgSEFWRV9J TlRUWVBFU19ICi0rIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgotKyNlbmRpZgotKyNpZmRlZiBIQVZF X1NURElOVF9ICi0rIyBpbmNsdWRlIDxzdGRpbnQuaD4KLSsjZW5kaWYKLSsjaWZkZWYgSEFWRV9V TklTVERfSAotKyMgaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2VuZGlmIgotKwotIGFjX3N1YnN0X3Zh cnM9J0xUTElCT0JKUwotIExJQk9CSlMKLSBYVEVSTVBBVEgKLUBAIC0xNTUwLDYgKzE1ODYsMTI0 IEBAICRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLSAgIGV2YWwgJGFzX2xpbmVub19zdGFjazsg dGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xp bmVubzt9Ci0gCi0gfSAjIGFjX2ZuX2NfY2hlY2tfZnVuYwotKwotKyMgYWNfZm5fY19jaGVja19o ZWFkZXJfbW9uZ3JlbCBMSU5FTk8gSEVBREVSIFZBUiBJTkNMVURFUwotKyMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgVGVzdHMgd2hl dGhlciBIRUFERVIgZXhpc3RzLCBnaXZpbmcgYSB3YXJuaW5nIGlmIGl0IGNhbm5vdCBiZSBjb21w aWxlZCB1c2luZwotKyMgdGhlIGluY2x1ZGUgZmlsZXMgaW4gSU5DTFVERVMgYW5kIHNldHRpbmcg dGhlIGNhY2hlIHZhcmlhYmxlIFZBUgotKyMgYWNjb3JkaW5nbHkuCi0rYWNfZm5fY19jaGVja19o ZWFkZXJfbW9uZ3JlbCAoKQotK3sKLSsgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19s aW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSsgIGlmIHsgYXNf dmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoK LSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y ICQyIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KLStpZiB7 IGFzX3Zhcj0kMzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhl biA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2ZpCi0rZXZhbCBhY19yZXM9XCQk MwotKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6ICRhY19yZXMiID4mNQotKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLStlbHNlCi0rICAj IElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8KLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nICQyIHVzYWJpbGl0eSIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hl Y2tpbmcgJDIgdXNhYmlsaXR5Li4uICIgPiY2OyB9Ci0rY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP RiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSskNAotKyNpbmNs dWRlIDwkMj4KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhl biA6Ci0rICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCi0rZWxzZQotKyAgYWNfaGVhZGVyX2NvbXBp bGVyPW5vCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0 IGNvbmZ0ZXN0LiRhY19leHQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogJGFjX2hlYWRlcl9jb21waWxlciIgPiY1Ci0rJGFzX2VjaG8gIiRhY19oZWFk ZXJfY29tcGlsZXIiID4mNjsgfQotKwotKyMgSXMgdGhlIGhlYWRlciBwcmVzZW50PwotK3sgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgJDIgcHJlc2VuY2Ui ID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nICQyIHByZXNlbmNlLi4uICIgPiY2OyB9Ci0rY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVm cy5oLiAgKi8KLSsjaW5jbHVkZSA8JDI+Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY3BwICIk TElORU5PIjsgdGhlbiA6Ci0rICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKLStlbHNlCi0rICBhY19o ZWFkZXJfcHJlcHJvYz1ubwotK2ZpCi0rcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19l eHQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFj X2hlYWRlcl9wcmVwcm9jIiA+JjUKLSskYXNfZWNobyAiJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjY7 IH0KLSsKLSsjIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KLStjYXNlICRhY19oZWFkZXJf Y29tcGlsZXI6JGFjX2hlYWRlcl9wcmVwcm9jOiRhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluICMo KAotKyAgeWVzOm5vOiApCi0rICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkg dGhlIHByZXByb2Nlc3NvciEiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiBh Y2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+ JjI7fQotKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5J Tkc6ICQyOiBwcm9jZWVkaW5nIHdpdGggdGhlIGNvbXBpbGVyJ3MgcmVzdWx0IiA+JjUKLSskYXNf ZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidz IHJlc3VsdCIgPiYyO30KLSsgICAgOzsKLSsgIG5vOnllczoqICkKLSsgICAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJlc2VudCBidXQgY2Fu bm90IGJlIGNvbXBpbGVkIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogcHJl c2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7fQotKyAgICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiAgICAgY2hlY2sgZm9yIG1pc3Np bmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5H OiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30K LSsgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAk Mjogc2VlIHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9uIiA+JjUKLSskYXNfZWNobyAiJGFzX21l OiBXQVJOSU5HOiAkMjogc2VlIHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9uIiA+JjI7fQotKyAg ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiAg ICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjUKLSskYXNf ZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogICAgIHNlY3Rpb24gXCJQcmVzZW50IEJ1dCBDYW5u b3QgQmUgQ29tcGlsZWRcIiIgPiYyO30KLSsgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidz IHJlc3VsdCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IHByb2NlZWRpbmcg d2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mMjt9Ci0rICAgIDs7Ci0rZXNhYwotKyAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4m NQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQotK2lmIHsgYXNfdmFy PSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKLSsg ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgZXZhbCAiJDM9XCRhY19oZWFk ZXJfY29tcGlsZXIiCi0rZmkKLStldmFsIGFjX3Jlcz1cJCQzCi0rCSAgICAgICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1Ci0rJGFz X2VjaG8gIiRhY19yZXMiID4mNjsgfQotK2ZpCi0rICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRl c3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5l bm87fQotKwotK30gIyBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsCi0rCi0rIyBhY19mbl9j X2NoZWNrX2hlYWRlcl9jb21waWxlIExJTkVOTyBIRUFERVIgVkFSIElOQ0xVREVTCi0rIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBU ZXN0cyB3aGV0aGVyIEhFQURFUiBleGlzdHMgYW5kIGNhbiBiZSBjb21waWxlZCB1c2luZyB0aGUg aW5jbHVkZSBmaWxlcyBpbgotKyMgSU5DTFVERVMsIHNldHRpbmcgdGhlIGNhY2hlIHZhcmlhYmxl IFZBUiBhY2NvcmRpbmdseS4KLSthY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICgpCi0rewot KyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9f c3RhY2s9JGFzX2xpbmVub19zdGFjawotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZv ciAkMi4uLiAiID4mNjsgfQotK2lmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3Zh citzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2 Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAot Ky8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSskNAotKyNpbmNsdWRlIDwkMj4KLStfQUNFT0YKLStp ZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBldmFsICIkMz15ZXMi Ci0rZWxzZQotKyAgZXZhbCAiJDM9bm8iCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBj b25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLStmaQotK2V2YWwgYWNfcmVzPVwk JDMKLSsJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiAkYWNfcmVzIiA+JjUKLSskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9Ci0rICBldmFsICRh c19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5l bm89OyB1bnNldCBhc19saW5lbm87fQotKwotK30gIyBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21w aWxlCi0gY2F0ID5jb25maWcubG9nIDw8X0FDRU9GCi0gVGhpcyBmaWxlIGNvbnRhaW5zIGFueSBt ZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKLSBydW5uaW5nIGNvbmZpZ3VyZSwg dG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgotQEAgLTQwMDMs NiArNDE1NywxNTEgQEAgZmkKLSAKLSBmaQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMiID4mNQotKyRh c19lY2hvX24gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzLi4uICIgPiY2OyB9Ci0r aWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3RkYytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNf ZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF T0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rI2luY2x1ZGUg PHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdGRhcmcuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0r I2luY2x1ZGUgPGZsb2F0Lmg+Ci0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSsgIDsKLSsgIHJl dHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsg dGhlbiA6Ci0rICBhY19jdl9oZWFkZXJfc3RkYz15ZXMKLStlbHNlCi0rICBhY19jdl9oZWFkZXJf c3RkYz1ubwotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4 dCBjb25mdGVzdC4kYWNfZXh0Ci0rCi0raWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7 IHRoZW4KLSsgICMgU3VuT1MgNC54IHN0cmluZy5oIGRvZXMgbm90IGRlY2xhcmUgbWVtKiwgY29u dHJhcnkgdG8gQU5TSS4KLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh Y19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwot K19BQ0VPRgotK2lmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLSsg ICRFR1JFUCAibWVtY2hyIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKwotK2Vsc2UKLSsgIGFj X2N2X2hlYWRlcl9zdGRjPW5vCi0rZmkKLStybSAtZiBjb25mdGVzdCoKLSsKLStmaQotKwotK2lm IHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0rICAjIElTQyAyLjAuMiBzdGRs aWIuaCBkb2VzIG5vdCBkZWNsYXJlIGZyZWUsIGNvbnRyYXJ5IHRvIEFOU0kuCi0rICBjYXQgY29u ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmgu ICAqLwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsKLStfQUNFT0YKLStpZiAoZXZhbCAiJGFjX2Nw cCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0rICAkRUdSRVAgImZyZWUiID4vZGV2L251bGwg Mj4mMTsgdGhlbiA6Ci0rCi0rZWxzZQotKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KLStmaQotK3Jt IC1mIGNvbmZ0ZXN0KgotKwotK2ZpCi0rCi0raWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5 ZXM7IHRoZW4KLSsgICMgL2Jpbi9jYyBpbiBJcml4LTQuMC41IGdldHMgbm9uLUFOU0kgY3R5cGUg bWFjcm9zIHVubGVzcyB1c2luZyAtYW5zaS4KLSsgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmci ID0geWVzOyB0aGVuIDoKLSsgIDoKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G ID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKyNpbmNsdWRlIDxj dHlwZS5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaWYgKCgnICcgJiAweDBGRikgPT0gMHgw MjApCi0rIyBkZWZpbmUgSVNMT1dFUihjKSAoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ3onKQotKyMg ZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAnQScgKyAoKGMpIC0gJ2EnKSA6IChjKSkK LSsjZWxzZQotKyMgZGVmaW5lIElTTE9XRVIoYykgXAotKwkJICAgKCgnYScgPD0gKGMpICYmIChj KSA8PSAnaScpIFwKLSsJCSAgICAgfHwgKCdqJyA8PSAoYykgJiYgKGMpIDw9ICdyJykgXAotKwkJ ICAgICB8fCAoJ3MnIDw9IChjKSAmJiAoYykgPD0gJ3onKSkKLSsjIGRlZmluZSBUT1VQUEVSKGMp IChJU0xPV0VSKGMpID8gKChjKSB8IDB4NDApIDogKGMpKQotKyNlbmRpZgotKwotKyNkZWZpbmUg WE9SKGUsIGYpICgoKGUpICYmICEoZikpIHx8ICghKGUpICYmIChmKSkpCi0raW50Ci0rbWFpbiAo KQotK3sKLSsgIGludCBpOwotKyAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQotKyAgICBpZiAo WE9SIChpc2xvd2VyIChpKSwgSVNMT1dFUiAoaSkpCi0rCXx8IHRvdXBwZXIgKGkpICE9IFRPVVBQ RVIgKGkpKQotKyAgICAgIHJldHVybiAyOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lm IGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgotKwotK2Vsc2UKLSsgIGFjX2N2X2hl YWRlcl9zdGRjPW5vCi0rZmkKLStybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21v bi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCi0rICBjb25mdGVzdC4kYWNfb2JqZXh0 IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAotK2ZpCi0rCi0rZmkKLStmaQotK3sgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaGVhZGVy X3N0ZGMiID4mNQotKyRhc19lY2hvICIkYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNjsgfQotK2lmIHRl c3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0rCi0rJGFzX2VjaG8gIiNkZWZpbmUg U1REQ19IRUFERVJTIDEiID4+Y29uZmRlZnMuaAotKwotK2ZpCi0rCi0rIyBPbiBJUklYIDUuMywg c3lzL3R5cGVzIGFuZCBpbnR0eXBlcy5oIGFyZSBjb25mbGljdGluZy4KLStmb3IgYWNfaGVhZGVy IGluIHN5cy90eXBlcy5oIHN5cy9zdGF0Lmggc3RkbGliLmggc3RyaW5nLmggbWVtb3J5Lmggc3Ry aW5ncy5oIFwKLSsJCSAgaW50dHlwZXMuaCBzdGRpbnQuaCB1bmlzdGQuaAotK2RvIDoKLSsgIGFz X2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9z aGAKLSthY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiJGFjX2hlYWRlciIg IiRhc19hY19IZWFkZXIiICIkYWNfaW5jbHVkZXNfZGVmYXVsdAotKyIKLStldmFsIGFzX3ZhbD1c JCRhc19hY19IZWFkZXIKLSsgICBpZiB0ZXN0ICJ4JGFzX3ZhbCIgPSB4IiJ5ZXM7IHRoZW4gOgot KyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRh Y19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQotK19BQ0VPRgotKwotK2ZpCi0rCi0rZG9uZQotKwot KwotK2ZvciBhY19oZWFkZXIgaW4gc3lzL3N0cm9wdHMuaCBzeXMvd2FpdC5oCi0rZG8gOgotKyAg YXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3Ry X3NoYAotK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICIkYWNfaGVhZGVy IiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotK2V2YWwgYXNfdmFsPVwk JGFzX2FjX0hlYWRlcgotKyAgIGlmIHRlc3QgIngkYXNfdmFsIiA9IHgiInllczsgdGhlbiA6Ci0r ICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0rI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFj X2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCi0rX0FDRU9GCi0rCi0rZmkKLSsKLStkb25lCi0rCi0r Ci0gYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIgotIAotIGNhdCA+ Y29uZmNhY2hlIDw8XF9BQ0VPRgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUv ZXhhbXBsZXMvcmxmZS9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIw MTEwNzAzLm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9jb25maWd1cmUuaW4JMjAxMS0wNy0w MyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRs aW5lL2V4YW1wbGVzL3JsZmUvY29uZmlndXJlLmluCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAw MDAwICswMjAwCi1AQCAtNDM3LDQgKzQzNyw2IEBAIG1haW4oKQotIAotIGZpCi0gCi0rQUNfQ0hF Q0tfSEVBREVSUyhzeXMvc3Ryb3B0cy5oIHN5cy93YWl0LmgpCi0rCi0gQUNfT1VUUFVUKE1ha2Vm aWxlKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9l eHRlcm4uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGlu ZS9leGFtcGxlcy9ybGZlL2V4dGVybi5oCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9ybGZlL2V4dGVy bi5oCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMjcsNyArMjcsMTQg QEAKLSAjZGVmaW5lIF9fYXR0cmlidXRlX18oeCkKLSAjZW5kaWYKLSAKLSsjaWYgIWRlZmluZWQg KF9fUCkKLSsjICBpZiBkZWZpbmVkIChfX1NURENfXykgfHwgZGVmaW5lZCAoX19HTlVDX18pIHx8 IGRlZmluZWQgKF9fY3BsdXNwbHVzKQotKyMgICAgZGVmaW5lIF9fUChwcm90b3MpIHByb3Rvcwot KyMgIGVsc2UKLSsjICAgIGRlZmluZSBfX1AocHJvdG9zKSAoKQotKyMgIGVuZGlmCi0rI2VuZGlm Ci0rCi0gLyogcHR5LmMgKi8KLSBleHRlcm4gaW50ICAgT3BlblBUWSBfX1AoKGNoYXIgKiopKTsK LSBleHRlcm4gdm9pZCAgSW5pdFBUWSBfX1AoKGludCkpOwotLQotSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9vcy5oCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvb3MuaAkyMDExLTA3 LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVh ZGxpbmUvZXhhbXBsZXMvcmxmZS9vcy5oCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICsw MjAwCi1AQCAtMTg2LDcgKzE4Niw3IEBAIGV4dGVybiBpbnQgZXJybm87Ci0gICogICAgdGVybWlu YWwgaGFuZGxpbmcKLSAgKi8KLSAKLS0jaWZkZWYgUE9TSVgKLSsjaWYgZGVmaW5lZCAoUE9TSVgp IHx8IGRlZmluZWQgKF9fRnJlZUJTRF9fKQotICMgaW5jbHVkZSA8dGVybWlvcy5oPgotICMgaWZk ZWYgaHB1eAotICMgIGluY2x1ZGUgPGJzZHR0eS5oPgotQEAgLTUyNyw0ICs1MjcsMyBAQCB0eXBl ZGVmIHN0cnVjdCBmZF9zZXQgeyBpbnQgZmRzX2JpdHNbMV07Ci0gICogaG93IG1hbnkgY2hhcmFj dGVycyB5b3VyIHB0eSdzIGNhbiBidWZmZXIuCi0gICovCi0gI2RlZmluZSBJT1NJWkUJCTQwOTYK LS0KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvcHR5 LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZXhh bXBsZXMvcmxmZS9wdHkuYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9wdHkuYwkyMDExLTA3 LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTIwLDEzICsyMCwxNSBAQAotICAqCi0g ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKLSAgKi8KLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0gI2luY2x1ZGUgPHN5cy90 eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNp bmNsdWRlIDxzaWduYWwuaD4KLSAKLS0jaW5jbHVkZSAiY29uZmlnLmgiCi0rI2luY2x1ZGUgPHVu aXN0ZC5oPgotKwotICNpbmNsdWRlICJzY3JlZW4uaCIKLSAKLSAjaWZuZGVmIHN1bgotQEAgLTM0 LDcgKzM2LDcgQEAKLSAjZW5kaWYKLSAKLSAvKiBmb3Igc29sYXJpcyAyLjEsIFVuaXh3YXJlIChT VlI0LjIpIGFuZCBwb3NzaWJseSBvdGhlcnMgKi8KLS0jaWZkZWYgSEFWRV9TVlI0X1BUWVMKLSsj aWYgZGVmaW5lZCAoSEFWRV9TVlI0X1BUWVMpICYmIGRlZmluZWQgKEhBVkVfU1lTX1NUUk9QVFNf SCkKLSAjIGluY2x1ZGUgPHN5cy9zdHJvcHRzLmg+Ci0gI2VuZGlmCi0gCi1AQCAtMzg0LDQgKzM4 NiwzIEBAIGNoYXIgKip0dHluOwotICAgcmV0dXJuIC0xOwotIH0KLSAjZW5kaWYKLS0KLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvcmxmZS5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2V4YW1wbGVzL3Js ZmUvcmxmZS5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9ybGZlL3JsZmUuYwkyMDExLTA3LTAzIDEw OjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTczLDYgKzczLDExIEBACi0gI2luY2x1ZGUgPHRl cm1pb3MuaD4KLSAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2luY2x1ZGUgImV4dGVybi5oIgot KwotKyNpZiBkZWZpbmVkIChIQVZFX1NZU19XQUlUX0gpCi0rIyAgaW5jbHVkZSA8c3lzL3dhaXQu aD4KLSsjZW5kaWYKLSAKLSAjaWZkZWYgUkVBRExJTkVfTElCUkFSWQotICMgIGluY2x1ZGUgInJl YWRsaW5lLmgiCi1AQCAtNTg4LDcgKzU5Myw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2 KQotIAl9Ci0gICAgICAgaWYgKEZEX0lTU0VUIChpbl9mcm9tX3R0eV9mZCwgJmluX3NldCkpCi0g CXsKLS0JICBleHRlcm4gaW50IHJlYWRsaW5lX2VjaG9pbmdfcDsKLSsJICBleHRlcm4gaW50IF9y bF9lY2hvaW5nX3A7Ci0gCSAgc3RydWN0IHRlcm1pb3MgdGVybV9tYXN0ZXI7Ci0gCSAgaW50IGRv X2Nhbm9uID0gMTsKLSAJICBpbnQgZG9faWNybmwgPSAxOwotQEAgLTYwNSw5ICs2MTAsOSBAQCBt YWluKGludCBhcmdjLCBjaGFyKiogYXJndikKLSAJICAgIHsKLSAJICAgICAgZG9fY2Fub24gPSAo dGVybV9tYXN0ZXIuY19sZmxhZyAmIElDQU5PTikgIT0gMDsKLSAJICAgICAgZG9faWNybmwgPSAo dGVybV9tYXN0ZXIuY19sZmxhZyAmIElDUk5MKSAhPSAwOwotLQkgICAgICByZWFkbGluZV9lY2hv aW5nX3AgPSAodGVybV9tYXN0ZXIuY19sZmxhZyAmIEVDSE8pICE9IDA7Ci0rCSAgICAgIF9ybF9l Y2hvaW5nX3AgPSAodGVybV9tYXN0ZXIuY19sZmxhZyAmIEVDSE8pICE9IDA7Ci0gCSAgICAgIERQ UklOVDEgKCJlY2hvLGNhbm9uLGNybmw6JTAzZFxuIiwKLS0JCSAgICAgICAxMDAgKiByZWFkbGlu ZV9lY2hvaW5nX3AKLSsJCSAgICAgICAxMDAgKiBfcmxfZWNob2luZ19wCi0gCQkgICAgICAgKyAx MCAqIGRvX2Nhbm9uCi0gCQkgICAgICAgKyAxICogZG9faWNybmwpOwotIAkgICAgfQotQEAgLTc1 Nyw3ICs3NjIsNyBAQCBzdGF0aWMgdm9pZCBzZXRfZWRpdF9tb2RlICgpCi0gCSAgdmkgPSAxOwot IAkgIGJyZWFrOwotIAl9Ci0tICAgICAgc2hlbGxvcHRzID0gaW5kZXggKHNoZWxsb3B0cyArIDEs ICc6Jyk7Ci0rICAgICAgc2hlbGxvcHRzID0gc3RyY2hyIChzaGVsbG9wdHMgKyAxLCAnOicpOwot ICAgICB9Ci0gCi0gICBpZiAoIXZpKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxp bmUvZXhhbXBsZXMvcmx0ZXN0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAz Lm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMvcmx0ZXN0LmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL3Js dGVzdC5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtNCwyNSArNCwy NCBAQAotIC8qCQkJCQkJCQkgICAgKi8KLSAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0gCi0tLyogQ29weXJpZ2h0 IChDKSAxOTg3LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJp Z2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkg Zm9yCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChS ZWFkbGluZSksIGEgbGlicmFyeSBmb3IKLSAgICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBp bnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotIAotLSAgIFRoZSBHTlUgUmVh ZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAot LSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdh cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFk bGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9m dGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0 IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAg IGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAKLSAjaWYgZGVm aW5lZCAoSEFWRV9DT05GSUdfSCkKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci1JbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9ybHZlcnNpb24uYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9leGFtcGxlcy9ybHZlcnNpb24u YwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAx MTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvcmx2ZXJzaW9uLmMJMjAxMS0wNy0wMyAxMDo0MToyMS4w MDAwMDAwMDAgKzAyMDAKLUBAIC0yLDI1ICsyLDI0IEBACi0gICogcmx2ZXJzaW9uIC0tIHByaW50 IG91dCByZWFkbGluZSdzIHZlcnNpb24gbnVtYmVyCi0gICovCi0gCi0tLyogQ29weXJpZ2h0IChD KSAxOTg3LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0 IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9y Ci0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFk bGluZSksIGEgbGlicmFyeSBmb3IKLSAgICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRl cmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotIAotLSAgIFRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAg IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAK LS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGlu ZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVu IHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGlu IGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhh dmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx IFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAKLSAjaWYgZGVmaW5l ZCAoSEFWRV9DT05GSUdfSCkKLSAjICBpbmNsdWRlIDxjb25maWcuaD4KLUluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL3JlYWRsaW5lL2Z1bm1hcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45 MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2Z1bm1hcC5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9mdW5tYXAuYwky MDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjQgQEAKLSAv KiBmdW5tYXAuYyAtLSBhdHRhY2ggbmFtZXMgdG8gZnVuY3Rpb25zLiAqLwotIAotLS8qIENvcHly aWdodCAoQykgMTk4NywgMTk4OSwgMTk5MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSAKLS0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnks IGEgbGlicmFyeSBmb3IKLS0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2 ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVh ZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRp dGluZy4gICAgICAKLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwg b3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBM aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVz ZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3 YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcg b3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5z ZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUg UGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotKyovCi0rCi0gI2RlZmluZSBSRUFETElORV9MSUJSQVJZCi0gCi0gI2lm IGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCi1AQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgaW50IGZ1 bm1hcF9lbnRyeTsKLSAgICBwcm9ncmFtIHNwZWNpZmljIGZ1bmN0aW9uLiAqLwotIGludCBmdW5t YXBfcHJvZ3JhbV9zcGVjaWZpY19lbnRyeV9zdGFydDsKLSAKLS1zdGF0aWMgRlVOTUFQIGRlZmF1 bHRfZnVubWFwW10gPSB7Ci0rc3RhdGljIGNvbnN0IEZVTk1BUCBkZWZhdWx0X2Z1bm1hcFtdID0g ewotICAgeyAiYWJvcnQiLCBybF9hYm9ydCB9LAotICAgeyAiYWNjZXB0LWxpbmUiLCBybF9uZXds aW5lIH0sCi0gICB7ICJhcnJvdy1rZXktcHJlZml4IiwgcmxfYXJyb3dfa2V5cyB9LAotQEAgLTEw NSwxMSArMTA1LDEzIEBAIHN0YXRpYyBGVU5NQVAgZGVmYXVsdF9mdW5tYXBbXSA9IHsKLSAgIHsg ImtpbGwtcmVnaW9uIiwgcmxfa2lsbF9yZWdpb24gfSwKLSAgIHsgImtpbGwtd29yZCIsIHJsX2tp bGxfd29yZCB9LAotICAgeyAibWVudS1jb21wbGV0ZSIsIHJsX21lbnVfY29tcGxldGUgfSwKLSsg IHsgIm1lbnUtY29tcGxldGUtYmFja3dhcmQiLCBybF9iYWNrd2FyZF9tZW51X2NvbXBsZXRlIH0s Ci0gICB7ICJuZXh0LWhpc3RvcnkiLCBybF9nZXRfbmV4dF9oaXN0b3J5IH0sCi0gICB7ICJub24t aW5jcmVtZW50YWwtZm9yd2FyZC1zZWFyY2gtaGlzdG9yeSIsIHJsX25vbmluY19mb3J3YXJkX3Nl YXJjaCB9LAotICAgeyAibm9uLWluY3JlbWVudGFsLXJldmVyc2Utc2VhcmNoLWhpc3RvcnkiLCBy bF9ub25pbmNfcmV2ZXJzZV9zZWFyY2ggfSwKLSAgIHsgIm5vbi1pbmNyZW1lbnRhbC1mb3J3YXJk LXNlYXJjaC1oaXN0b3J5LWFnYWluIiwgcmxfbm9uaW5jX2ZvcndhcmRfc2VhcmNoX2FnYWluIH0s Ci0gICB7ICJub24taW5jcmVtZW50YWwtcmV2ZXJzZS1zZWFyY2gtaGlzdG9yeS1hZ2FpbiIsIHJs X25vbmluY19yZXZlcnNlX3NlYXJjaF9hZ2FpbiB9LAotKyAgeyAib2xkLW1lbnUtY29tcGxldGUi LCBybF9vbGRfbWVudV9jb21wbGV0ZSB9LAotICAgeyAib3ZlcndyaXRlLW1vZGUiLCBybF9vdmVy d3JpdGVfbW9kZSB9LAotICNpZmRlZiBfX0NZR1dJTl9fCi0gICB7ICJwYXN0ZS1mcm9tLWNsaXBi b2FyZCIsIHJsX3Bhc3RlX2Zyb21fY2xpcGJvYXJkIH0sCi1AQCAtMTIzLDYgKzEyNSw3IEBAIHN0 YXRpYyBGVU5NQVAgZGVmYXVsdF9mdW5tYXBbXSA9IHsKLSAgIHsgInJldmVydC1saW5lIiwgcmxf cmV2ZXJ0X2xpbmUgfSwKLSAgIHsgInNlbGYtaW5zZXJ0IiwgcmxfaW5zZXJ0IH0sCi0gICB7ICJz ZXQtbWFyayIsIHJsX3NldF9tYXJrIH0sCi0rICB7ICJza2lwLWNzaS1zZXF1ZW5jZSIsIHJsX3Nr aXBfY3NpX3NlcXVlbmNlIH0sCi0gICB7ICJzdGFydC1rYmQtbWFjcm8iLCBybF9zdGFydF9rYmRf bWFjcm8gfSwKLSAgIHsgInRhYi1pbnNlcnQiLCBybF90YWJfaW5zZXJ0IH0sCi0gICB7ICJ0aWxk ZS1leHBhbmQiLCBybF90aWxkZV9leHBhbmQgfSwKLUBAIC0xNDUsNiArMTQ4LDggQEAgc3RhdGlj IEZVTk1BUCBkZWZhdWx0X2Z1bm1hcFtdID0gewotICAgeyAidmktYXBwZW5kLW1vZGUiLCBybF92 aV9hcHBlbmRfbW9kZSB9LAotICAgeyAidmktYXJnLWRpZ2l0IiwgcmxfdmlfYXJnX2RpZ2l0IH0s Ci0gICB7ICJ2aS1iYWNrLXRvLWluZGVudCIsIHJsX3ZpX2JhY2tfdG9faW5kZW50IH0sCi0rICB7 ICJ2aS1iYWNrd2FyZC1iaWd3b3JkIiwgcmxfdmlfYldvcmQgfSwKLSsgIHsgInZpLWJhY2t3YXJk LXdvcmQiLCBybF92aV9id29yZCB9LAotICAgeyAidmktYldvcmQiLCBybF92aV9iV29yZCB9LAot ICAgeyAidmktYndvcmQiLCBybF92aV9id29yZCB9LAotICAgeyAidmktY2hhbmdlLWNhc2UiLCBy bF92aV9jaGFuZ2VfY2FzZSB9LAotQEAgLTE1NywxMiArMTYyLDE1IEBAIHN0YXRpYyBGVU5NQVAg ZGVmYXVsdF9mdW5tYXBbXSA9IHsKLSAgIHsgInZpLWRlbGV0ZS10byIsIHJsX3ZpX2RlbGV0ZV90 byB9LAotICAgeyAidmktZVdvcmQiLCBybF92aV9lV29yZCB9LAotICAgeyAidmktZWRpdGluZy1t b2RlIiwgcmxfdmlfZWRpdGluZ19tb2RlIH0sCi0rICB7ICJ2aS1lbmQtYmlnd29yZCIsIHJsX3Zp X2VXb3JkIH0sCi0gICB7ICJ2aS1lbmQtd29yZCIsIHJsX3ZpX2VuZF93b3JkIH0sCi0gICB7ICJ2 aS1lb2YtbWF5YmUiLCBybF92aV9lb2ZfbWF5YmUgfSwKLSAgIHsgInZpLWV3b3JkIiwgcmxfdmlf ZXdvcmQgfSwKLSAgIHsgInZpLWZXb3JkIiwgcmxfdmlfZldvcmQgfSwKLSAgIHsgInZpLWZldGNo LWhpc3RvcnkiLCBybF92aV9mZXRjaF9oaXN0b3J5IH0sCi0gICB7ICJ2aS1maXJzdC1wcmludCIs IHJsX3ZpX2ZpcnN0X3ByaW50IH0sCi0rICB7ICJ2aS1mb3J3YXJkLWJpZ3dvcmQiLCBybF92aV9m V29yZCB9LAotKyAgeyAidmktZm9yd2FyZC13b3JkIiwgcmxfdmlfZndvcmQgfSwKLSAgIHsgInZp LWZ3b3JkIiwgcmxfdmlfZndvcmQgfSwKLSAgIHsgInZpLWdvdG8tbWFyayIsIHJsX3ZpX2dvdG9f bWFyayB9LAotICAgeyAidmktaW5zZXJ0LWJlZyIsIHJsX3ZpX2luc2VydF9iZWcgfSwKLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2hpc3RleHBhbmQuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9oaXN0ZXhwYW5kLmMJMjAxMS0w Ny0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3Jl YWRsaW5lL2hpc3RleHBhbmQuYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAot QEAgLTEsMjQgKzEsMjMgQEAKLSAvKiBoaXN0ZXhwYW5kLmMgLS0gaGlzdG9yeSBleHBhbnNpb24u ICovCi0gCi0tLyogQ29weXJpZ2h0IChDKSAxOTg5LTIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAxOTg5LTIwMTAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHTlUgSGlzdG9yeSBM aWJyYXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9mCi0rICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRo ZSBHTlUgSGlzdG9yeSBMaWJyYXJ5IChIaXN0b3J5KSwgYSBzZXQgb2YKLSAgICByb3V0aW5lcyBm b3IgbWFuYWdpbmcgdGhlIHRleHQgb2YgcHJldmlvdXNseSB0eXBlZCBsaW5lcy4KLSAKLS0gICBU aGUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rICAgSGlzdG9yeSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0t ICAgYW55IGxhdGVyIHZlcnNpb24uCi0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotIAotLSAgIFRoZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotLSAgIFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO VQotLSAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0KLS0gICBU aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBz b2Z0d2FyZSwgYW5kCi0tICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZ SU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxp Y2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVt cGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIEhpc3Rv cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBIaXN0b3J5LiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0gI2RlZmlu ZSBSRUFETElORV9MSUJSQVJZCi0gCi1AQCAtNTYsOCArNTUsNiBAQAotIAotIHR5cGVkZWYgaW50 IF9oaXN0X3NlYXJjaF9mdW5jX3QgUEFSQU1TKChjb25zdCBjaGFyICosIGludCkpOwotIAotLWV4 dGVybiBpbnQgcmxfYnl0ZV9vcmllbnRlZDsJLyogZGVjbGFyZWQgaW4gbWJ1dGlsLmMgKi8KLS0K LSBzdGF0aWMgY2hhciBlcnJvcl9wb2ludGVyOwotIAotIHN0YXRpYyBjaGFyICpzdWJzdF9saHM7 Ci1AQCAtNjYsOSArNjMsMTEgQEAgc3RhdGljIGludCBzdWJzdF9saHNfbGVuOwotIHN0YXRpYyBp bnQgc3Vic3RfcmhzX2xlbjsKLSAKLSBzdGF0aWMgY2hhciAqZ2V0X2hpc3Rvcnlfd29yZF9zcGVj aWZpZXIgUEFSQU1TKChjaGFyICosIGNoYXIgKiwgaW50ICopKTsKLS1zdGF0aWMgY2hhciAqaGlz dG9yeV9maW5kX3dvcmQgUEFSQU1TKChjaGFyICosIGludCkpOwotIHN0YXRpYyBpbnQgaGlzdG9y eV90b2tlbml6ZV93b3JkIFBBUkFNUygoY29uc3QgY2hhciAqLCBpbnQpKTsKLStzdGF0aWMgY2hh ciAqKmhpc3RvcnlfdG9rZW5pemVfaW50ZXJuYWwgUEFSQU1TKChjb25zdCBjaGFyICosIGludCwg aW50ICopKTsKLSBzdGF0aWMgY2hhciAqaGlzdG9yeV9zdWJzdHJpbmcgUEFSQU1TKChjb25zdCBj aGFyICosIGludCwgaW50KSk7Ci0rc3RhdGljIHZvaWQgZnJlZXdvcmRzIFBBUkFNUygoY2hhciAq KiwgaW50KSk7Ci0rc3RhdGljIGNoYXIgKmhpc3RvcnlfZmluZF93b3JkIFBBUkFNUygoY2hhciAq LCBpbnQpKTsKLSAKLSBzdGF0aWMgY2hhciAqcXVvdGVfYnJlYWtzIFBBUkFNUygoY2hhciAqKSk7 Ci0gCi1AQCAtMjQ2LDcgKzI0NSw3IEBAIGdldF9oaXN0b3J5X2V2ZW50IChzdHJpbmcsIGNhbGxl cl9pbmRleCwKLSAKLSAjZGVmaW5lIEZBSUxfU0VBUkNIKCkgXAotICAgZG8geyBcCi0tICAgIGhp c3Rvcnlfb2Zmc2V0ID0gaGlzdG9yeV9sZW5ndGg7IGZyZWUgKHRlbXApIDsgcmV0dXJuIChjaGFy ICopTlVMTDsgXAotKyAgICBoaXN0b3J5X29mZnNldCA9IGhpc3RvcnlfbGVuZ3RoOyB4ZnJlZSAo dGVtcCkgOyByZXR1cm4gKGNoYXIgKilOVUxMOyBcCi0gICB9IHdoaWxlICgwKQotIAotICAgLyog SWYgdGhlcmUgaXMgbm8gc2VhcmNoIHN0cmluZywgdHJ5IHRvIHVzZSB0aGUgcHJldmlvdXMgc2Vh cmNoIHN0cmluZywKLUBAIC0yNTUsNyArMjU0LDcgQEAgZ2V0X2hpc3RvcnlfZXZlbnQgKHN0cmlu ZywgY2FsbGVyX2luZGV4LAotICAgICB7Ci0gICAgICAgaWYgKHNlYXJjaF9zdHJpbmcpCi0gICAg ICAgICB7Ci0tICAgICAgICAgIGZyZWUgKHRlbXApOwotKyAgICAgICAgICB4ZnJlZSAodGVtcCk7 Ci0gICAgICAgICAgIHRlbXAgPSBzYXZlc3RyaW5nIChzZWFyY2hfc3RyaW5nKTsKLSAgICAgICAg IH0KLSAgICAgICBlbHNlCi1AQCAtMjg2LDcgKzI4NSw3IEBAIGdldF9oaXN0b3J5X2V2ZW50IChz dHJpbmcsIGNhbGxlcl9pbmRleCwKLSAJICAgICAgc2VhcmNoX21hdGNoID0gaGlzdG9yeV9maW5k X3dvcmQgKGVudHJ5LT5saW5lLCBsb2NhbF9pbmRleCk7Ci0gCSAgICB9Ci0gCSAgZWxzZQotLQkg ICAgZnJlZSAodGVtcCk7Ci0rCSAgICB4ZnJlZSAodGVtcCk7Ci0gCi0gCSAgcmV0dXJuIChlbnRy eS0+bGluZSk7Ci0gCX0KLUBAIC0zMDYsMTYgKzMwNSwyMCBAQCBnZXRfaGlzdG9yeV9ldmVudCAo c3RyaW5nLCBjYWxsZXJfaW5kZXgsCi0gLyogRXh0cmFjdCB0aGUgY29udGVudHMgb2YgU1RSSU5H IGFzIGlmIGl0IGlzIGVuY2xvc2VkIGluIHNpbmdsZSBxdW90ZXMuCi0gICAgU0lOREVYLCB3aGVu IHBhc3NlZCBpbiwgaXMgdGhlIG9mZnNldCBvZiB0aGUgY2hhcmFjdGVyIGltbWVkaWF0ZWx5Ci0g ICAgZm9sbG93aW5nIHRoZSBvcGVuaW5nIHNpbmdsZSBxdW90ZTsgb24gZXhpdCwgU0lOREVYIGlz IGxlZnQgcG9pbnRpbmcKLS0gICB0byB0aGUgY2xvc2luZyBzaW5nbGUgcXVvdGUuICovCi0rICAg dG8gdGhlIGNsb3Npbmcgc2luZ2xlIHF1b3RlLiAgRkxBR1MgY3VycmVudGx5IHVzZWQgdG8gYWxs b3cgYmFja3NsYXNoCi0rICAgdG8gZXNjYXBlIGEgc2luZ2xlIHF1b3RlIChlLmcuLCBmb3IgYmFz aCAkJy4uLicpLiAqLwotIHN0YXRpYyB2b2lkCi0taGlzdF9zdHJpbmdfZXh0cmFjdF9zaW5nbGVf cXVvdGVkIChzdHJpbmcsIHNpbmRleCkKLStoaXN0X3N0cmluZ19leHRyYWN0X3NpbmdsZV9xdW90 ZWQgKHN0cmluZywgc2luZGV4LCBmbGFncykKLSAgICAgIGNoYXIgKnN0cmluZzsKLS0gICAgIGlu dCAqc2luZGV4OwotKyAgICAgaW50ICpzaW5kZXgsIGZsYWdzOwotIHsKLSAgIHJlZ2lzdGVyIGlu dCBpOwotIAotICAgZm9yIChpID0gKnNpbmRleDsgc3RyaW5nW2ldICYmIHN0cmluZ1tpXSAhPSAn XCcnOyBpKyspCi0tICAgIDsKLSsgICAgewotKyAgICAgIGlmICgoZmxhZ3MgJiAxKSAmJiBzdHJp bmdbaV0gPT0gJ1xcJyAmJiBzdHJpbmdbaSsxXSkKLSsgICAgICAgIGkrKzsKLSsgICAgfQotIAot ICAgKnNpbmRleCA9IGk7Ci0gfQotQEAgLTUwNSw3ICs1MDgsNyBAQCBwb3N0cHJvY19zdWJzdF9y aHMgKCkKLSAJfQotICAgICB9Ci0gICBuZXdbal0gPSAnXDAnOwotLSAgZnJlZSAoc3Vic3Rfcmhz KTsKLSsgIHhmcmVlIChzdWJzdF9yaHMpOwotICAgc3Vic3RfcmhzID0gbmV3OwotICAgc3Vic3Rf cmhzX2xlbiA9IGo7Ci0gfQotQEAgLTU2NCwxMiArNTY3LDEyIEBAIGhpc3RvcnlfZXhwYW5kX2lu dGVybmFsIChzdHJpbmcsIHN0YXJ0LCAKLSAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkK LSAgICAgICBpZiAoTUJfQ1VSX01BWCA+IDEgJiYgcmxfYnl0ZV9vcmllbnRlZCA9PSAwKQotIAl7 Ci0tCSAgaW50IGMsIGw7Ci0rCSAgaW50IGNoLCBsOwotIAkgIGwgPSBfcmxfZmluZF9wcmV2X21i Y2hhciAoc3RyaW5nLCBpLCBNQl9GSU5EX0FOWSk7Ci0tCSAgYyA9IHN0cmluZ1tsXTsKLSsJICBj aCA9IHN0cmluZ1tsXTsKLSAJICAvKiBYWFggLSBvcmlnaW5hbCBwYXRjaCBoYWQgaSAtIDEgPz8/ ICBJZiBpID09IDAgaXQgd291bGQgZmFpbC4gKi8KLS0JICBpZiAoaSAmJiAoYyA9PSAnXCcnIHx8 IGMgPT0gJyInKSkKLS0JICAgIHF1b3RlZF9zZWFyY2hfZGVsaW1pdGVyID0gYzsKLSsJICBpZiAo aSAmJiAoY2ggPT0gJ1wnJyB8fCBjaCA9PSAnIicpKQotKwkgICAgcXVvdGVkX3NlYXJjaF9kZWxp bWl0ZXIgPSBjaDsKLSAJfQotICAgICAgIGVsc2UKLSAjZW5kaWYgLyogSEFORExFX01VTFRJQllU RSAqLwkgIAotQEAgLTU4Miw3ICs1ODUsNyBAQCBoaXN0b3J5X2V4cGFuZF9pbnRlcm5hbCAoc3Ry aW5nLCBzdGFydCwgCi0gICBpZiAoZXZlbnQgPT0gMCkKLSAgICAgewotICAgICAgICpyZXRfc3Ry aW5nID0gaGlzdF9lcnJvciAoc3RyaW5nLCBzdGFydCwgaSwgRVZFTlRfTk9UX0ZPVU5EKTsKLS0g ICAgICBmcmVlIChyZXN1bHQpOwotKyAgICAgIHhmcmVlIChyZXN1bHQpOwotICAgICAgIHJldHVy biAoLTEpOwotICAgICB9Ci0gCi1AQCAtNTk2LDcgKzU5OSw3IEBAIGhpc3RvcnlfZXhwYW5kX2lu dGVybmFsIChzdHJpbmcsIHN0YXJ0LCAKLSAgIGlmICh3b3JkX3NwZWMgPT0gKGNoYXIgKikmZXJy b3JfcG9pbnRlcikKLSAgICAgewotICAgICAgICpyZXRfc3RyaW5nID0gaGlzdF9lcnJvciAoc3Ry aW5nLCBzdGFydGluZ19pbmRleCwgaSwgQkFEX1dPUkRfU1BFQyk7Ci0tICAgICAgZnJlZSAocmVz dWx0KTsKLSsgICAgICB4ZnJlZSAocmVzdWx0KTsKLSAgICAgICByZXR1cm4gKC0xKTsKLSAgICAg fQotIAotQEAgLTYyOSw4ICs2MzIsOCBAQCBoaXN0b3J5X2V4cGFuZF9pbnRlcm5hbCAoc3RyaW5n LCBzdGFydCwgCi0gCXsKLSAJZGVmYXVsdDoKLSAJICAqcmV0X3N0cmluZyA9IGhpc3RfZXJyb3Ig KHN0cmluZywgaSsxLCBpKzIsIEJBRF9NT0RJRklFUik7Ci0tCSAgZnJlZSAocmVzdWx0KTsKLS0J ICBmcmVlICh0ZW1wKTsKLSsJICB4ZnJlZSAocmVzdWx0KTsKLSsJICB4ZnJlZSAodGVtcCk7Ci0g CSAgcmV0dXJuIC0xOwotIAotIAljYXNlICdxJzoKLUBAIC02NTUsNyArNjU4LDcgQEAgaGlzdG9y eV9leHBhbmRfaW50ZXJuYWwgKHN0cmluZywgc3RhcnQsIAotIAkgICAgewotIAkgICAgICB0c3Ry Kys7Ci0gCSAgICAgIHQgPSBzYXZlc3RyaW5nICh0c3RyKTsKLS0JICAgICAgZnJlZSAodGVtcCk7 Ci0rCSAgICAgIHhmcmVlICh0ZW1wKTsKLSAJICAgICAgdGVtcCA9IHQ7Ci0gCSAgICB9Ci0gCSAg YnJlYWs7Ci1AQCAtNjgwLDcgKzY4Myw3IEBAIGhpc3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJp bmcsIHN0YXJ0LCAKLSAJICBpZiAodHN0cikKLSAJICAgIHsKLSAJICAgICAgdCA9IHNhdmVzdHJp bmcgKHRzdHIpOwotLQkgICAgICBmcmVlICh0ZW1wKTsKLSsJICAgICAgeGZyZWUgKHRlbXApOwot IAkgICAgICB0ZW1wID0gdDsKLSAJICAgIH0KLSAJICBicmVhazsKLUBAIC03NTYsOCArNzU5LDgg QEAgaGlzdG9yeV9leHBhbmRfaW50ZXJuYWwgKHN0cmluZywgc3RhcnQsIAotIAkgICAgaWYgKHN1 YnN0X2xoc19sZW4gPT0gMCkKLSAJICAgICAgewotIAkJKnJldF9zdHJpbmcgPSBoaXN0X2Vycm9y IChzdHJpbmcsIHN0YXJ0aW5nX2luZGV4LCBpLCBOT19QUkVWX1NVQlNUKTsKLS0JCWZyZWUgKHJl c3VsdCk7Ci0tCQlmcmVlICh0ZW1wKTsKLSsJCXhmcmVlIChyZXN1bHQpOwotKwkJeGZyZWUgKHRl bXApOwotIAkJcmV0dXJuIC0xOwotIAkgICAgICB9Ci0gCi1AQCAtNzY2LDggKzc2OSw4IEBAIGhp c3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCAKLSAJICAgIGlmIChzdWJzdF9s aHNfbGVuID4gbF90ZW1wKQotIAkgICAgICB7Ci0gCQkqcmV0X3N0cmluZyA9IGhpc3RfZXJyb3Ig KHN0cmluZywgc3RhcnRpbmdfaW5kZXgsIGksIFNVQlNUX0ZBSUxFRCk7Ci0tCQlmcmVlIChyZXN1 bHQpOwotLQkJZnJlZSAodGVtcCk7Ci0rCQl4ZnJlZSAocmVzdWx0KTsKLSsJCXhmcmVlICh0ZW1w KTsKLSAJCXJldHVybiAoLTEpOwotIAkgICAgICB9Ci0gCi1AQCAtODA4LDcgKzgxMSw3IEBAIGhp c3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCAKLSAJCQkgICAgIHRlbXAgKyBz aSArIHN1YnN0X2xoc19sZW4sCi0gCQkJICAgICBsX3RlbXAgLSAoc2kgKyBzdWJzdF9saHNfbGVu KSk7Ci0gCQkgICAgbmV3X2V2ZW50W2xlbl0gPSAnXDAnOwotLQkJICAgIGZyZWUgKHRlbXApOwot KwkJICAgIHhmcmVlICh0ZW1wKTsKLSAJCSAgICB0ZW1wID0gbmV3X2V2ZW50OwotIAotIAkJICAg IGZhaWxlZCA9IDA7Ci1AQCAtODQ0LDggKzg0Nyw4IEBAIGhpc3RvcnlfZXhwYW5kX2ludGVybmFs IChzdHJpbmcsIHN0YXJ0LCAKLSAJICAgICAgY29udGludWU7CQkvKiBkb24ndCB3YW50IHRvIGlu Y3JlbWVudCBpICovCi0gCi0gCSAgICAqcmV0X3N0cmluZyA9IGhpc3RfZXJyb3IgKHN0cmluZywg c3RhcnRpbmdfaW5kZXgsIGksIFNVQlNUX0ZBSUxFRCk7Ci0tCSAgICBmcmVlIChyZXN1bHQpOwot LQkgICAgZnJlZSAodGVtcCk7Ci0rCSAgICB4ZnJlZSAocmVzdWx0KTsKLSsJICAgIHhmcmVlICh0 ZW1wKTsKLSAJICAgIHJldHVybiAoLTEpOwotIAkgIH0KLSAJfQotQEAgLTg2Niw3ICs4NjksNyBA QCBoaXN0b3J5X2V4cGFuZF9pbnRlcm5hbCAoc3RyaW5nLCBzdGFydCwgCi0gICAgICAgZWxzZQot IAl4ID0gc2F2ZXN0cmluZyAodGVtcCk7Ci0gCi0tICAgICAgZnJlZSAodGVtcCk7Ci0rICAgICAg eGZyZWUgKHRlbXApOwotICAgICAgIHRlbXAgPSB4OwotICAgICB9Ci0gCi1AQCAtODc0LDcgKzg3 Nyw3IEBAIGhpc3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCAKLSAgIGlmIChu ID49IHJlc3VsdF9sZW4pCi0gICAgIHJlc3VsdCA9IChjaGFyICopeHJlYWxsb2MgKHJlc3VsdCwg biArIDIpOwotICAgc3RyY3B5IChyZXN1bHQsIHRlbXApOwotLSAgZnJlZSAodGVtcCk7Ci0rICB4 ZnJlZSAodGVtcCk7Ci0gCi0gICAqZW5kX2luZGV4X3B0ciA9IGk7Ci0gICAqcmV0X3N0cmluZyA9 IHJlc3VsdDsKLUBAIC05MjUsNyArOTI4LDcgQEAgaGlzdG9yeV9leHBhbmQgKGhzdHJpbmcsIG91 dHB1dCkKLSAgICAgIGNoYXIgKipvdXRwdXQ7Ci0gewotICAgcmVnaXN0ZXIgaW50IGo7Ci0tICBp bnQgaSwgciwgbCwgcGFzc2MsIGNjLCBtb2RpZmllZCwgZWluZGV4LCBvbmx5X3ByaW50aW5nLCBk cXVvdGU7Ci0rICBpbnQgaSwgciwgbCwgcGFzc2MsIGNjLCBtb2RpZmllZCwgZWluZGV4LCBvbmx5 X3ByaW50aW5nLCBkcXVvdGUsIGZsYWc7Ci0gICBjaGFyICpzdHJpbmc7Ci0gCi0gICAvKiBUaGUg b3V0cHV0IHN0cmluZywgYW5kIGl0cyBsZW5ndGguICovCi1AQCAtMTAxNyw3ICsxMDIwLDcgQEAg aGlzdG9yeV9leHBhbmQgKGhzdHJpbmcsIG91dHB1dCkKLSAJICAgIH0KLSAJICBlbHNlIGlmIChz dHJpbmdbaV0gPT0gaGlzdG9yeV9leHBhbnNpb25fY2hhcikKLSAJICAgIHsKLS0JICAgICAgaWYg KCFjYyB8fCBtZW1iZXIgKGNjLCBoaXN0b3J5X25vX2V4cGFuZF9jaGFycykpCi0rCSAgICAgIGlm IChjYyA9PSAwIHx8IG1lbWJlciAoY2MsIGhpc3Rvcnlfbm9fZXhwYW5kX2NoYXJzKSkKLSAJCWNv bnRpbnVlOwotIAkgICAgICAvKiBJZiB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbiBoYXMgc2V0Ci0g CQkgaGlzdG9yeV9pbmhpYml0X2V4cGFuc2lvbl9mdW5jdGlvbiB0byBhIGZ1bmN0aW9uIHRoYXQg Y2hlY2tzCi1AQCAtMTA0NSw4ICsxMDQ4LDkgQEAgaGlzdG9yeV9leHBhbmQgKGhzdHJpbmcsIG91 dHB1dCkKLSAJICBlbHNlIGlmIChkcXVvdGUgPT0gMCAmJiBoaXN0b3J5X3F1b3Rlc19pbmhpYml0 X2V4cGFuc2lvbiAmJiBzdHJpbmdbaV0gPT0gJ1wnJykKLSAJICAgIHsKLSAJICAgICAgLyogSWYg dGhpcyBpcyBiYXNoLCBzaW5nbGUgcXVvdGVzIGluaGliaXQgaGlzdG9yeSBleHBhbnNpb24uICov Ci0rCSAgICAgIGZsYWcgPSAoaSA+IDAgJiYgc3RyaW5nW2kgLSAxXSA9PSAnJCcpOwotIAkgICAg ICBpKys7Ci0tCSAgICAgIGhpc3Rfc3RyaW5nX2V4dHJhY3Rfc2luZ2xlX3F1b3RlZCAoc3RyaW5n LCAmaSk7Ci0rCSAgICAgIGhpc3Rfc3RyaW5nX2V4dHJhY3Rfc2luZ2xlX3F1b3RlZCAoc3RyaW5n LCAmaSwgZmxhZyk7Ci0gCSAgICB9Ci0gCSAgZWxzZSBpZiAoaGlzdG9yeV9xdW90ZXNfaW5oaWJp dF9leHBhbnNpb24gJiYgc3RyaW5nW2ldID09ICdcXCcpCi0gCSAgICB7Ci1AQCAtMTA2MCw3ICsx MDY0LDcgQEAgaGlzdG9yeV9leHBhbmQgKGhzdHJpbmcsIG91dHB1dCkKLSAJICAKLSAgICAgICBp ZiAoc3RyaW5nW2ldICE9IGhpc3RvcnlfZXhwYW5zaW9uX2NoYXIpCi0gCXsKLS0JICBmcmVlIChy ZXN1bHQpOwotKwkgIHhmcmVlIChyZXN1bHQpOwotIAkgICpvdXRwdXQgPSBzYXZlc3RyaW5nIChz dHJpbmcpOwotIAkgIHJldHVybiAoMCk7Ci0gCX0KLUBAIC0xMDk3LDcgKzExMDEsNyBAQCBoaXN0 b3J5X2V4cGFuZCAoaHN0cmluZywgb3V0cHV0KQotIAkgIGlmIChzdHJsZW4gKG1iKSA+IDEpCi0g CSAgICB7Ci0gCSAgICAgIEFERF9TVFJJTkcgKG1iKTsKLS0JICAgICAgYnJlYWs7Ci0rCSAgICAg IGNvbnRpbnVlOwotIAkgICAgfQotIAl9Ci0gI2VuZGlmIC8qIEhBTkRMRV9NVUxUSUJZVEUgKi8K LUBAIC0xMTMxLDE1ICsxMTM1LDE2IEBAIGhpc3RvcnlfZXhwYW5kIChoc3RyaW5nLCBvdXRwdXQp Ci0gCSAgICAgIHsKLSAJCWludCBxdW90ZSwgc2xlbjsKLSAKLSsJCWZsYWcgPSAoaSA+IDAgJiYg c3RyaW5nW2kgLSAxXSA9PSAnJCcpOwotIAkJcXVvdGUgPSBpKys7Ci0tCQloaXN0X3N0cmluZ19l eHRyYWN0X3NpbmdsZV9xdW90ZWQgKHN0cmluZywgJmkpOwotKwkJaGlzdF9zdHJpbmdfZXh0cmFj dF9zaW5nbGVfcXVvdGVkIChzdHJpbmcsICZpLCBmbGFnKTsKLSAKLSAJCXNsZW4gPSBpIC0gcXVv dGUgKyAyOwotIAkJdGVtcCA9IChjaGFyICopeG1hbGxvYyAoc2xlbik7Ci0gCQlzdHJuY3B5ICh0 ZW1wLCBzdHJpbmcgKyBxdW90ZSwgc2xlbik7Ci0gCQl0ZW1wW3NsZW4gLSAxXSA9ICdcMCc7Ci0g CQlBRERfU1RSSU5HICh0ZW1wKTsKLS0JCWZyZWUgKHRlbXApOwotKwkJeGZyZWUgKHRlbXApOwot IAkgICAgICB9Ci0gCSAgICBlbHNlCi0gCSAgICAgIEFERF9DSEFSIChzdHJpbmdbaV0pOwotQEAg LTExNTIsNyArMTE1Nyw3IEBAIGhpc3RvcnlfZXhwYW5kIChoc3RyaW5nLCBvdXRwdXQpCi0gCSAg ICAgIHRlbXAgPSAoY2hhciAqKXhtYWxsb2MgKGwgLSBpICsgMSk7Ci0gCSAgICAgIHN0cmNweSAo dGVtcCwgc3RyaW5nICsgaSk7Ci0gCSAgICAgIEFERF9TVFJJTkcgKHRlbXApOwotLQkgICAgICBm cmVlICh0ZW1wKTsKLSsJICAgICAgeGZyZWUgKHRlbXApOwotIAkgICAgICBpID0gbDsKLSAJICAg IH0KLSAJICBlbHNlCi1AQCAtMTE2NSw3ICsxMTcwLDggQEAgaGlzdG9yeV9leHBhbmQgKGhzdHJp bmcsIG91dHB1dCkKLSAJICAvKiBJZiB0aGUgaGlzdG9yeV9leHBhbnNpb25fY2hhciBpcyBmb2xs b3dlZCBieSBvbmUgb2YgdGhlCi0gCSAgICAgY2hhcmFjdGVycyBpbiBoaXN0b3J5X25vX2V4cGFu ZF9jaGFycywgdGhlbiBpdCBpcyBub3QgYQotIAkgICAgIGNhbmRpZGF0ZSBmb3IgZXhwYW5zaW9u IG9mIGFueSBraW5kLiAqLwotLQkgIGlmIChtZW1iZXIgKGNjLCBoaXN0b3J5X25vX2V4cGFuZF9j aGFycykpCi0rCSAgaWYgKGNjID09IDAgfHwgbWVtYmVyIChjYywgaGlzdG9yeV9ub19leHBhbmRf Y2hhcnMpIHx8Ci0rCSAgCQkgKGhpc3RvcnlfaW5oaWJpdF9leHBhbnNpb25fZnVuY3Rpb24gJiYg KCpoaXN0b3J5X2luaGliaXRfZXhwYW5zaW9uX2Z1bmN0aW9uKSAoc3RyaW5nLCBpKSkpCi0gCSAg ICB7Ci0gCSAgICAgIEFERF9DSEFSIChzdHJpbmdbaV0pOwotIAkgICAgICBicmVhazsKLUBAIC0x MTg0LDcgKzExOTAsNyBAQCBoaXN0b3J5X2V4cGFuZCAoaHN0cmluZywgb3V0cHV0KQotIAkJICB0 ZW1wID0gKGNoYXIgKil4bWFsbG9jICgxICsgc3RybGVuIChyZXN1bHQpKTsKLSAJCSAgc3RyY3B5 ICh0ZW1wLCByZXN1bHQpOwotIAkJICBBRERfU1RSSU5HICh0ZW1wKTsKLS0JCSAgZnJlZSAodGVt cCk7Ci0rCQkgIHhmcmVlICh0ZW1wKTsKLSAJCX0KLSAJICAgICAgaSsrOwotIAkgICAgICBicmVh azsKLUBAIC0xMTk1LDkgKzEyMDEsOSBAQCBoaXN0b3J5X2V4cGFuZCAoaHN0cmluZywgb3V0cHV0 KQotIAkgIGlmIChyIDwgMCkKLSAJICAgIHsKLSAJICAgICAgKm91dHB1dCA9IHRlbXA7Ci0tCSAg ICAgIGZyZWUgKHJlc3VsdCk7Ci0rCSAgICAgIHhmcmVlIChyZXN1bHQpOwotIAkgICAgICBpZiAo c3RyaW5nICE9IGhzdHJpbmcpCi0tCQlmcmVlIChzdHJpbmcpOwotKwkJeGZyZWUgKHN0cmluZyk7 Ci0gCSAgICAgIHJldHVybiAtMTsKLSAJICAgIH0KLSAJICBlbHNlCi1AQCAtMTIwNyw3ICsxMjEz LDcgQEAgaGlzdG9yeV9leHBhbmQgKGhzdHJpbmcsIG91dHB1dCkKLSAJCSAgbW9kaWZpZWQrKzsK LSAJCSAgaWYgKCp0ZW1wKQotIAkJICAgIEFERF9TVFJJTkcgKHRlbXApOwotLQkJICBmcmVlICh0 ZW1wKTsKLSsJCSAgeGZyZWUgKHRlbXApOwotIAkJfQotIAkgICAgICBvbmx5X3ByaW50aW5nID0g ciA9PSAxOwotIAkgICAgICBpID0gZWluZGV4OwotQEAgLTEyMTgsNyArMTIyNCw3IEBAIGhpc3Rv cnlfZXhwYW5kIChoc3RyaW5nLCBvdXRwdXQpCi0gCi0gICAqb3V0cHV0ID0gcmVzdWx0OwotICAg aWYgKHN0cmluZyAhPSBoc3RyaW5nKQotLSAgICBmcmVlIChzdHJpbmcpOwotKyAgICB4ZnJlZSAo c3RyaW5nKTsKLSAKLSAgIGlmIChvbmx5X3ByaW50aW5nKQotICAgICB7Ci1AQCAtMTM5OSw4ICsx NDA1LDggQEAgaGlzdG9yeV9hcmdfZXh0cmFjdCAoZmlyc3QsIGxhc3QsIHN0cmluZwotICAgICB9 Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCi0tICAgIGZyZWUgKGxpc3RbaV0pOwot LSAgZnJlZSAobGlzdCk7Ci0rICAgIHhmcmVlIChsaXN0W2ldKTsKLSsgIHhmcmVlIChsaXN0KTsK LSAKLSAgIHJldHVybiAocmVzdWx0KTsKLSB9Ci1AQCAtMTQxMSwxMCArMTQxNywxMCBAQCBoaXN0 b3J5X3Rva2VuaXplX3dvcmQgKHN0cmluZywgaW5kKQotICAgICAgaW50IGluZDsKLSB7Ci0gICBy ZWdpc3RlciBpbnQgaTsKLS0gIGludCBkZWxpbWl0ZXI7Ci0rICBpbnQgZGVsaW1pdGVyLCBuZXN0 ZGVsaW0sIGRlbGltb3BlbjsKLSAKLSAgIGkgPSBpbmQ7Ci0tICBkZWxpbWl0ZXIgPSAwOwotKyAg ZGVsaW1pdGVyID0gbmVzdGRlbGltID0gMDsKLSAKLSAgIGlmIChtZW1iZXIgKHN0cmluZ1tpXSwg IigpXG4iKSkKLSAgICAgewotQEAgLTE0MzAsMjAgKzE0MzYsMzQgQEAgaGlzdG9yeV90b2tlbml6 ZV93b3JkIChzdHJpbmcsIGluZCkKLSAJewotIAkgIGlmIChwZWVrID09ICc8JyAmJiBzdHJpbmdb aSArIDJdID09ICctJykKLSAJICAgIGkrKzsKLSsJICBlbHNlIGlmIChwZWVrID09ICc8JyAmJiBz dHJpbmdbaSArIDJdID09ICc8JykKLSsJICAgIGkrKzsKLSAJICBpICs9IDI7Ci0gCSAgcmV0dXJu IGk7Ci0gCX0KLS0gICAgICBlbHNlCi0rICAgICAgZWxzZSBpZiAoKHBlZWsgPT0gJyYnICYmIChz dHJpbmdbaV0gPT0gJz4nIHx8IHN0cmluZ1tpXSA9PSAnPCcpKSB8fAotKwkJKHBlZWsgPT0gJz4n ICYmIHN0cmluZ1tpXSA9PSAnJicpKQotIAl7Ci0tCSAgaWYgKChwZWVrID09ICcmJyAmJiAoc3Ry aW5nW2ldID09ICc+JyB8fCBzdHJpbmdbaV0gPT0gJzwnKSkgfHwKLS0JICAgICAgKHBlZWsgPT0g Jz4nICYmIHN0cmluZ1tpXSA9PSAnJicpIHx8Ci0tCSAgICAgIChwZWVrID09ICcoJyAmJiAoc3Ry aW5nW2ldID09ICc+JyB8fCBzdHJpbmdbaV0gPT0gJzwnKSkgfHwgLyogKSAqLwotLQkgICAgICAo cGVlayA9PSAnKCcgJiYgc3RyaW5nW2ldID09ICckJykpIC8qICkgKi8KLS0JICAgIHsKLS0JICAg ICAgaSArPSAyOwotLQkgICAgICByZXR1cm4gaTsKLS0JICAgIH0KLSsJICBpICs9IDI7Ci0rCSAg cmV0dXJuIGk7Ci0rCX0KLSsgICAgICAvKiBYWFggLSBzZXBhcmF0ZWQgb3V0IGZvciBsYXRlciAt LSBiYXNoLTQuMiAqLwotKyAgICAgIGVsc2UgaWYgKChwZWVrID09ICcoJyAmJiAoc3RyaW5nW2ld ID09ICc+JyB8fCBzdHJpbmdbaV0gPT0gJzwnKSkgfHwgLyogKSAqLwotKwkgICAgICAgKHBlZWsg PT0gJygnICYmIHN0cmluZ1tpXSA9PSAnJCcpKSAvKikqLwotKwl7Ci0rCSAgaSArPSAyOwotKwkg IGRlbGltb3BlbiA9ICcoJzsKLSsJICBkZWxpbWl0ZXIgPSAnKSc7Ci0rCSAgbmVzdGRlbGltID0g MTsKLSsJICBnb3RvIGdldF93b3JkOwotIAl9Ci0rI2lmIDAKLSsgICAgICBlbHNlIGlmIChwZWVr ID09ICdcJycgJiYgc3RyaW5nW2ldID09ICckJykKLSsgICAgICAgIHsKLSsJICBpICs9IDI7CS8q IFhYWCAqLwotKwkgIHJldHVybiBpOwotKyAgICAgICAgfQotKyNlbmRpZgotIAotICAgICAgIGlm IChzdHJpbmdbaV0gIT0gJyQnKQotIAl7Ci1AQCAtMTQ1Miw5ICsxNDcyLDI1IEBAIGhpc3Rvcnlf dG9rZW5pemVfd29yZCAoc3RyaW5nLCBpbmQpCi0gCX0KLSAgICAgfQotIAotKyAgLyogc2FtZSBj b2RlIGFsc28gdXNlZCBmb3IgJCguLi4pLzwoLi4uKS8+KC4uLikgYWJvdmUgKi8KLSsgIGlmICht ZW1iZXIgKHN0cmluZ1tpXSwgIiFAPysqIikpCi0rICAgIHsKLSsgICAgICBpbnQgcGVlayA9IHN0 cmluZ1tpICsgMV07Ci0rCi0rICAgICAgaWYgKHBlZWsgPT0gJygnKQkJLyopKi8KLSsJewotKwkg IC8qIFNoZWxsIGV4dGVuZGVkIGdsb2JiaW5nIHBhdHRlcm5zICovCi0rCSAgaSArPSAyOwotKwkg IGRlbGltb3BlbiA9ICcoJzsKLSsJICBkZWxpbWl0ZXIgPSAnKSc7CS8qIFhYWCAtIG5vdCBwZXJm ZWN0ICovCi0rCSAgbmVzdGRlbGltID0gMTsKLSsJfQotKyAgICB9Ci0rCi0rZ2V0X3dvcmQ6Ci0g ICAvKiBHZXQgd29yZCBmcm9tIHN0cmluZyArIGk7ICovCi0gCi0tICBpZiAobWVtYmVyIChzdHJp bmdbaV0sIEhJU1RPUllfUVVPVEVfQ0hBUkFDVEVSUykpCi0rICBpZiAoZGVsaW1pdGVyID09IDAg JiYgbWVtYmVyIChzdHJpbmdbaV0sIEhJU1RPUllfUVVPVEVfQ0hBUkFDVEVSUykpCi0gICAgIGRl bGltaXRlciA9IHN0cmluZ1tpKytdOwotIAotICAgZm9yICg7IHN0cmluZ1tpXTsgaSsrKQotQEAg LTE0NzIsMTYgKzE1MDgsMzEgQEAgaGlzdG9yeV90b2tlbml6ZV93b3JkIChzdHJpbmcsIGluZCkK LSAJICBjb250aW51ZTsKLSAJfQotIAotKyAgICAgIC8qIGRlbGltaXRlciBtdXN0IGJlIHNldCBh bmQgc2V0IHRvIHNvbWV0aGluZyBvdGhlciB0aGFuIGEgcXVvdGUgaWYKLSsJIG5lc3RkZWxpbSBp cyBzZXQsIHNvIHRoZXNlIHRlc3RzIGFyZSBzYWZlLiAqLwotKyAgICAgIGlmIChuZXN0ZGVsaW0g JiYgc3RyaW5nW2ldID09IGRlbGltb3BlbikKLSsJewotKwkgIG5lc3RkZWxpbSsrOwotKwkgIGNv bnRpbnVlOwotKwl9Ci0rICAgICAgaWYgKG5lc3RkZWxpbSAmJiBzdHJpbmdbaV0gPT0gZGVsaW1p dGVyKQotKwl7Ci0rCSAgbmVzdGRlbGltLS07Ci0rCSAgaWYgKG5lc3RkZWxpbSA9PSAwKQotKwkg ICAgZGVsaW1pdGVyID0gMDsKLSsJICBjb250aW51ZTsKLSsJfQotKyAgICAgIAotICAgICAgIGlm IChkZWxpbWl0ZXIgJiYgc3RyaW5nW2ldID09IGRlbGltaXRlcikKLSAJewotIAkgIGRlbGltaXRl ciA9IDA7Ci0gCSAgY29udGludWU7Ci0gCX0KLSAKLS0gICAgICBpZiAoIWRlbGltaXRlciAmJiAo bWVtYmVyIChzdHJpbmdbaV0sIGhpc3Rvcnlfd29yZF9kZWxpbWl0ZXJzKSkpCi0rICAgICAgaWYg KGRlbGltaXRlciA9PSAwICYmIChtZW1iZXIgKHN0cmluZ1tpXSwgaGlzdG9yeV93b3JkX2RlbGlt aXRlcnMpKSkKLSAJYnJlYWs7Ci0gCi0tICAgICAgaWYgKCFkZWxpbWl0ZXIgJiYgbWVtYmVyIChz dHJpbmdbaV0sIEhJU1RPUllfUVVPVEVfQ0hBUkFDVEVSUykpCi0rICAgICAgaWYgKGRlbGltaXRl ciA9PSAwICYmIG1lbWJlciAoc3RyaW5nW2ldLCBISVNUT1JZX1FVT1RFX0NIQVJBQ1RFUlMpKQot IAlkZWxpbWl0ZXIgPSBzdHJpbmdbaV07Ci0gICAgIH0KLSAKLUBAIC0xNTY5LDYgKzE2MjAsMTgg QEAgaGlzdG9yeV90b2tlbml6ZSAoc3RyaW5nKQotICAgcmV0dXJuIChoaXN0b3J5X3Rva2VuaXpl X2ludGVybmFsIChzdHJpbmcsIC0xLCAoaW50ICopTlVMTCkpOwotIH0KLSAKLSsvKiBGcmVlIG1l bWJlcnMgb2YgV09SRFMgZnJvbSBTVEFSVCB0byBhbiBlbXB0eSBzdHJpbmcgKi8KLStzdGF0aWMg dm9pZAotK2ZyZWV3b3JkcyAod29yZHMsIHN0YXJ0KQotKyAgICAgY2hhciAqKndvcmRzOwotKyAg ICAgaW50IHN0YXJ0OwotK3sKLSsgIHJlZ2lzdGVyIGludCBpOwotKwotKyAgZm9yIChpID0gc3Rh cnQ7IHdvcmRzW2ldOyBpKyspCi0rICAgIHhmcmVlICh3b3Jkc1tpXSk7Ci0rfQotKwotIC8qIEZp bmQgYW5kIHJldHVybiB0aGUgd29yZCB3aGljaCBjb250YWlucyB0aGUgY2hhcmFjdGVyIGF0IGlu ZGV4IElORAotICAgIGluIHRoZSBoaXN0b3J5IGxpbmUgTElORS4gIFVzZWQgdG8gc2F2ZSB0aGUg d29yZCBtYXRjaGVkIGJ5IHRoZQotICAgIGxhc3QgaGlzdG9yeSAhP3N0cmluZz8gc2VhcmNoLiAq LwotQEAgLTE1ODIsMTIgKzE2NDUsMTYgQEAgaGlzdG9yeV9maW5kX3dvcmQgKGxpbmUsIGluZCkK LSAKLSAgIHdvcmRzID0gaGlzdG9yeV90b2tlbml6ZV9pbnRlcm5hbCAobGluZSwgaW5kLCAmd2lu ZCk7Ci0gICBpZiAod2luZCA9PSAtMSB8fCB3b3JkcyA9PSAwKQotLSAgICByZXR1cm4gKChjaGFy ICopTlVMTCk7Ci0rICAgIHsKLSsgICAgICBpZiAod29yZHMpCi0rCWZyZWV3b3JkcyAod29yZHMs IDApOwotKyAgICAgIEZSRUUgKHdvcmRzKTsKLSsgICAgICByZXR1cm4gKChjaGFyICopTlVMTCk7 Ci0rICAgIH0KLSAgIHMgPSB3b3Jkc1t3aW5kXTsKLSAgIGZvciAoaSA9IDA7IGkgPCB3aW5kOyBp KyspCi0tICAgIGZyZWUgKHdvcmRzW2ldKTsKLS0gIGZvciAoaSA9IHdpbmQgKyAxOyB3b3Jkc1tp XTsgaSsrKQotLSAgICBmcmVlICh3b3Jkc1tpXSk7Ci0tICBmcmVlICh3b3Jkcyk7Ci0rICAgIHhm cmVlICh3b3Jkc1tpXSk7Ci0rICBmcmVld29yZHMgKHdvcmRzLCB3aW5kICsgMSk7Ci0rICB4ZnJl ZSAod29yZHMpOwotICAgcmV0dXJuIHM7Ci0gfQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv cmVhZGxpbmUvaGlzdGZpbGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMu b3JpZy9yZWFkbGluZS9oaXN0ZmlsZS5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9oaXN0ZmlsZS5jCTIwMTEtMDct MDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNCArMSwyMyBAQAotIC8qIGhpc3Rm aWxlLmMgLSBmdW5jdGlvbnMgdG8gbWFuaXB1bGF0ZSB0aGUgaGlzdG9yeSBmaWxlLiAqLwotIAot LS8qIENvcHlyaWdodCAoQykgMTk4OS0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKy8qIENvcHlyaWdodCAoQykgMTk4OS0yMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotIAotLSAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgR05VIEhpc3RvcnkgTGlicmFyeSAo dGhlIExpYnJhcnkpLCBhIHNldCBvZgotKyAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgR05VIEhp c3RvcnkgTGlicmFyeSAoSGlzdG9yeSksIGEgc2V0IG9mCi0gICAgcm91dGluZXMgZm9yIG1hbmFn aW5nIHRoZSB0ZXh0IG9mIHByZXZpb3VzbHkgdHlwZWQgbGluZXMuCi0gCi0tICAgVGhlIExpYnJh cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyAgIEhpc3RvcnkgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSAgIGFueSBs YXRlciB2ZXJzaW9uLgotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLS0gICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLS0gICBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAgVGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUs IGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBM SUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFj ZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBIaXN0b3J5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggSGlzdG9yeS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotIC8qIFRoZSBnb2FsIGlz IHRvIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIHRyYW5zcGFyZW50LCBzbyB0aGF0IHlvdQotICAg IGRvbid0IGhhdmUgdG8ga25vdyB3aGF0IGRhdGEgdHlwZXMgYXJlIHVzZWQsIGp1c3Qgd2hhdCBm dW5jdGlvbnMKLUBAIC01Myw3ICs1Miw5IEBACi0gIyAgaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2Vu ZGlmCi0gCi0tI2lmIGRlZmluZWQgKF9fRU1YX18pIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pCi0r I2luY2x1ZGUgPGN0eXBlLmg+Ci0rCi0rI2lmIGRlZmluZWQgKF9fRU1YX18pCi0gIyAgdW5kZWYg SEFWRV9NTUFQCi0gI2VuZGlmCi0gCi1AQCAtMTAzLDcgKzEwNCw3IEBAIGludCBoaXN0b3J5X3dy aXRlX3RpbWVzdGFtcHMgPSAwOwotIAotIC8qIERvZXMgUyBsb29rIGxpa2UgdGhlIGJlZ2lubmlu ZyBvZiBhIGhpc3RvcnkgdGltZXN0YW1wIGVudHJ5PyAgUGxhY2Vob2xkZXIKLSAgICBmb3IgbW9y ZSBleHRlbnNpdmUgdGVzdHMuICovCi0tI2RlZmluZSBISVNUX1RJTUVTVEFNUF9TVEFSVChzKQkJ KCoocykgPT0gaGlzdG9yeV9jb21tZW50X2NoYXIpCi0rI2RlZmluZSBISVNUX1RJTUVTVEFNUF9T VEFSVChzKQkJKCoocykgPT0gaGlzdG9yeV9jb21tZW50X2NoYXIgJiYgaXNkaWdpdCAoKHMpWzFd KSApCi0gCi0gLyogUmV0dXJuIHRoZSBzdHJpbmcgdGhhdCBzaG91bGQgYmUgdXNlZCBpbiB0aGUg cGxhY2Ugb2YgdGhpcwotICAgIGZpbGVuYW1lLiAgVGhpcyBvbmx5IG1hdHRlcnMgd2hlbiB5b3Ug ZG9uJ3Qgc3BlY2lmeSB0aGUKLUBAIC0xMjUsOCArMTI2LDEyIEBAIGhpc3RvcnlfZmlsZW5hbWUg KGZpbGVuYW1lKQotIAotICAgaWYgKGhvbWUgPT0gMCkKLSAgICAgewotKyNpZiAwCi0gICAgICAg aG9tZSA9ICIuIjsKLSAgICAgICBob21lX2xlbiA9IDE7Ci0rI2Vsc2UKLSsgICAgICByZXR1cm4g KE5VTEwpOwotKyNlbmRpZgotICAgICB9Ci0gICBlbHNlCi0gICAgIGhvbWVfbGVuID0gc3RybGVu IChob21lKTsKLUBAIC0xNzgsNyArMTgzLDcgQEAgcmVhZF9oaXN0b3J5X3JhbmdlIChmaWxlbmFt ZSwgZnJvbSwgdG8pCi0gCi0gICBidWZmZXIgPSBsYXN0X3RzID0gKGNoYXIgKilOVUxMOwotICAg aW5wdXQgPSBoaXN0b3J5X2ZpbGVuYW1lIChmaWxlbmFtZSk7Ci0tICBmaWxlID0gb3BlbiAoaW5w dXQsIE9fUkRPTkxZfE9fQklOQVJZLCAwNjY2KTsKLSsgIGZpbGUgPSBpbnB1dCA/IG9wZW4gKGlu cHV0LCBPX1JET05MWXxPX0JJTkFSWSwgMDY2NikgOiAtMTsKLSAKLSAgIGlmICgoZmlsZSA8IDAp IHx8IChmc3RhdCAoZmlsZSwgJmZpbmZvKSA9PSAtMSkpCi0gICAgIGdvdG8gZXJyb3JfYW5kX2V4 aXQ7Ci1AQCAtMjU2LDggKzI2MSw5IEBAIHJlYWRfaGlzdG9yeV9yYW5nZSAoZmlsZW5hbWUsIGZy b20sIHRvKQotICAgZm9yIChsaW5lX2VuZCA9IGxpbmVfc3RhcnQ7IGxpbmVfZW5kIDwgYnVmZW5k OyBsaW5lX2VuZCsrKQotICAgICBpZiAoKmxpbmVfZW5kID09ICdcbicpCi0gICAgICAgewotLQlp ZiAobGluZV9lbmQgLSAxID49IGxpbmVfc3RhcnQgJiYgKihsaW5lX2VuZCAtIDEpID09ICdccicp Ci0tCSAgKihsaW5lX2VuZCAtIDEpID0gJ1wwJzsKLSsJLyogQ2hhbmdlIHRvIGFsbG93IFdpbmRv d3MtbGlrZSBcclxuIGVuZCBvZiBsaW5lIGRlbGltaXRlci4gKi8KLSsJaWYgKGxpbmVfZW5kID4g bGluZV9zdGFydCAmJiBsaW5lX2VuZFstMV0gPT0gJ1xyJykKLSsJICBsaW5lX2VuZFstMV0gPSAn XDAnOwotIAllbHNlCi0gCSAgKmxpbmVfZW5kID0gJ1wwJzsKLSAKLUBAIC0zMTIsNyArMzE4LDcg QEAgaGlzdG9yeV90cnVuY2F0ZV9maWxlIChmbmFtZSwgbGluZXMpCi0gCi0gICBidWZmZXIgPSAo Y2hhciAqKU5VTEw7Ci0gICBmaWxlbmFtZSA9IGhpc3RvcnlfZmlsZW5hbWUgKGZuYW1lKTsKLS0g IGZpbGUgPSBvcGVuIChmaWxlbmFtZSwgT19SRE9OTFl8T19CSU5BUlksIDA2NjYpOwotKyAgZmls ZSA9IGZpbGVuYW1lID8gb3BlbiAoZmlsZW5hbWUsIE9fUkRPTkxZfE9fQklOQVJZLCAwNjY2KSA6 IC0xOwotICAgcnYgPSAwOwotIAotICAgLyogRG9uJ3QgdHJ5IHRvIHRydW5jYXRlIG5vbi1yZWd1 bGFyIGZpbGVzLiAqLwotQEAgLTQxMSw3ICs0MTcsNyBAQCBoaXN0b3J5X3RydW5jYXRlX2ZpbGUg KGZuYW1lLCBsaW5lcykKLSAKLSAgIEZSRUUgKGJ1ZmZlcik7Ci0gCi0tICBmcmVlIChmaWxlbmFt ZSk7Ci0rICB4ZnJlZSAoZmlsZW5hbWUpOwotICAgcmV0dXJuIHJ2OwotIH0KLSAKLUBAIC00MzQs OSArNDQwLDEwIEBAIGhpc3RvcnlfZG9fd3JpdGUgKGZpbGVuYW1lLCBuZWxlbWVudHMsIG8KLSAg IG1vZGUgPSBvdmVyd3JpdGUgPyBPX1dST05MWXxPX0NSRUFUfE9fVFJVTkN8T19CSU5BUlkgOiBP X1dST05MWXxPX0FQUEVORHxPX0JJTkFSWTsKLSAjZW5kaWYKLSAgIG91dHB1dCA9IGhpc3Rvcnlf ZmlsZW5hbWUgKGZpbGVuYW1lKTsKLSsgIGZpbGUgPSBvdXRwdXQgPyBvcGVuIChvdXRwdXQsIG1v ZGUsIDA2MDApIDogLTE7Ci0gICBydiA9IDA7Ci0gCi0tICBpZiAoKGZpbGUgPSBvcGVuIChvdXRw dXQsIG1vZGUsIDA2MDApKSA9PSAtMSkKLSsgIGlmIChmaWxlID09IC0xKQotICAgICB7Ci0gICAg ICAgRlJFRSAob3V0cHV0KTsKLSAgICAgICByZXR1cm4gKGVycm5vKTsKLUBAIC01MTMsNyArNTIw LDcgQEAgbW1hcF9lcnJvcjoKLSAjZWxzZQotICAgICBpZiAod3JpdGUgKGZpbGUsIGJ1ZmZlciwg YnVmZmVyX3NpemUpIDwgMCkKLSAgICAgICBydiA9IGVycm5vOwotLSAgICBmcmVlIChidWZmZXIp OwotKyAgICB4ZnJlZSAoYnVmZmVyKTsKLSAjZW5kaWYKLSAgIH0KLSAKLUluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL3JlYWRsaW5lL2hpc3RsaWIuaAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu OTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9oaXN0bGliLmgJMjAxMS0wNy0wMyAxMDo0MDo1My4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2hpc3RsaWIu aAkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjMgKzEsMjMgQEAK LSAvKiBoaXN0bGliLmggLS0gaW50ZXJuYWwgZGVmaW5pdGlvbnMgZm9yIHRoZSBoaXN0b3J5IGxp YnJhcnkuICovCi0tLyogQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkyIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgR05VIEhpc3Rvcnkg TGlicmFyeSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgotKy8qIENvcHlyaWdodCAoQykgMTk4OS0y MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBjb250 YWlucyB0aGUgR05VIEhpc3RvcnkgTGlicmFyeSAoSGlzdG9yeSksIGEgc2V0IG9mCi0gICAgcm91 dGluZXMgZm9yIG1hbmFnaW5nIHRoZSB0ZXh0IG9mIHByZXZpb3VzbHkgdHlwZWQgbGluZXMuCi0g Ci0tICAgVGhlIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyAgIEhpc3RvcnkgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0 aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgTGlicmFyeSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLS0gICBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUKLS0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0t Ci0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0 aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxs ZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9m IHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAg IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsg ICBIaXN0b3J5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggSGlzdG9y eS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAot ICNpZiAhZGVmaW5lZCAoX0hJU1RMSUJfSF8pCi0gI2RlZmluZSBfSElTVExJQl9IXwotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvaGlzdG9yeS5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2hpc3RvcnkuYwkyMDExLTA3LTAzIDEw OjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUv aGlzdG9yeS5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNCAr MSwyMyBAQAotIC8qIGhpc3RvcnkuYyAtLSBzdGFuZGFsb25lIGhpc3RvcnkgbGlicmFyeSAqLwot IAotLS8qIENvcHlyaWdodCAoQykgMTk4OS0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk4OS0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgR05VIEhpc3RvcnkgTGlicmFy eSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgotKyAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgR05V IEhpc3RvcnkgTGlicmFyeSAoSGlzdG9yeSksIGEgc2V0IG9mCi0gICAgcm91dGluZXMgZm9yIG1h bmFnaW5nIHRoZSB0ZXh0IG9mIHByZXZpb3VzbHkgdHlwZWQgbGluZXMuCi0gCi0tICAgVGhlIExp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIEhpc3RvcnkgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSAgIGFu eSBsYXRlciB2ZXJzaW9uLgotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLS0gICBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLS0g ICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAgVGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdh cmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBv ciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNl LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQ bGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBIaXN0b3J5IGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggSGlzdG9yeS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotIC8qIFRoZSBnb2Fs IGlzIHRvIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIHRyYW5zcGFyZW50LCBzbyB0aGF0IHlvdQot ICAgIGRvbid0IGhhdmUgdG8ga25vdyB3aGF0IGRhdGEgdHlwZXMgYXJlIHVzZWQsIGp1c3Qgd2hh dCBmdW5jdGlvbnMKLUBAIC0xNTgsNyArMTU3LDcgQEAgaGlzdG9yeV9zZXRfcG9zIChwb3MpCi0g ICByZXR1cm4gKDEpOwotIH0KLSAgCi0tLyogUmV0dXJuIHRoZSBjdXJyZW50IGhpc3RvcnkgYXJy YXkuICBUaGUgY2FsbGVyIGhhcyB0byBiZSBjYXJlZnVsbCwgc2luY2UgdGhpcwotKy8qIFJldHVy biB0aGUgY3VycmVudCBoaXN0b3J5IGFycmF5LiAgVGhlIGNhbGxlciBoYXMgdG8gYmUgY2FyZWZ1 bCwgc2luY2UgdGhpcwotICAgIGlzIHRoZSBhY3R1YWwgYXJyYXkgb2YgZGF0YSwgYW5kIGNvdWxk IGJlIGJhc2hlZCBvciBtYWRlIGNvcnJ1cHQgZWFzaWx5LgotICAgIFRoZSBhcnJheSBpcyB0ZXJt aW5hdGVkIHdpdGggYSBOVUxMIHBvaW50ZXIuICovCi0gSElTVF9FTlRSWSAqKgotQEAgLTIwOSw2 ICsyMDgsMjIgQEAgaGlzdG9yeV9nZXQgKG9mZnNldCkKLSAJCTogdGhlX2hpc3RvcnlbbG9jYWxf aW5kZXhdOwotIH0KLSAKLStISVNUX0VOVFJZICoKLSthbGxvY19oaXN0b3J5X2VudHJ5IChzdHJp bmcsIHRzKQotKyAgICAgY2hhciAqc3RyaW5nOwotKyAgICAgY2hhciAqdHM7Ci0rewotKyAgSElT VF9FTlRSWSAqdGVtcDsKLSsKLSsgIHRlbXAgPSAoSElTVF9FTlRSWSAqKXhtYWxsb2MgKHNpemVv ZiAoSElTVF9FTlRSWSkpOwotKwotKyAgdGVtcC0+bGluZSA9IHN0cmluZyA/IHNhdmVzdHJpbmcg KHN0cmluZykgOiBzdHJpbmc7Ci0rICB0ZW1wLT5kYXRhID0gKGNoYXIgKilOVUxMOwotKyAgdGVt cC0+dGltZXN0YW1wID0gdHM7Ci0rCi0rICByZXR1cm4gdGVtcDsKLSt9Ci0rCi0gdGltZV90Ci0g aGlzdG9yeV9nZXRfdGltZSAoaGlzdCkKLSAgICAgIEhJU1RfRU5UUlkgKmhpc3Q7Ci1AQCAtMjkw LDExICszMDUsNyBAQCBhZGRfaGlzdG9yeSAoc3RyaW5nKQotIAl9Ci0gICAgIH0KLSAKLS0gIHRl bXAgPSAoSElTVF9FTlRSWSAqKXhtYWxsb2MgKHNpemVvZiAoSElTVF9FTlRSWSkpOwotLSAgdGVt cC0+bGluZSA9IHNhdmVzdHJpbmcgKHN0cmluZyk7Ci0tICB0ZW1wLT5kYXRhID0gKGNoYXIgKilO VUxMOwotLQotLSAgdGVtcC0+dGltZXN0YW1wID0gaGlzdF9pbml0dGltZSAoKTsKLSsgIHRlbXAg PSBhbGxvY19oaXN0b3J5X2VudHJ5IChzdHJpbmcsIGhpc3RfaW5pdHRpbWUgKCkpOwotIAotICAg dGhlX2hpc3RvcnlbaGlzdG9yeV9sZW5ndGhdID0gKEhJU1RfRU5UUlkgKilOVUxMOwotICAgdGhl X2hpc3RvcnlbaGlzdG9yeV9sZW5ndGggLSAxXSA9IHRlbXA7Ci1AQCAtMzA3LDYgKzMxOCw4IEBA IGFkZF9oaXN0b3J5X3RpbWUgKHN0cmluZykKLSB7Ci0gICBISVNUX0VOVFJZICpoczsKLSAKLSsg IGlmIChzdHJpbmcgPT0gMCkKLSsgICAgcmV0dXJuOwotICAgaHMgPSB0aGVfaGlzdG9yeVtoaXN0 b3J5X2xlbmd0aCAtIDFdOwotICAgRlJFRSAoaHMtPnRpbWVzdGFtcCk7Ci0gICBocy0+dGltZXN0 YW1wID0gc2F2ZXN0cmluZyAoc3RyaW5nKTsKLUBAIC0zMjUsOSArMzM4LDI5IEBAIGZyZWVfaGlz dG9yeV9lbnRyeSAoaGlzdCkKLSAgIEZSRUUgKGhpc3QtPmxpbmUpOwotICAgRlJFRSAoaGlzdC0+ dGltZXN0YW1wKTsKLSAgIHggPSBoaXN0LT5kYXRhOwotLSAgZnJlZSAoaGlzdCk7Ci0rICB4ZnJl ZSAoaGlzdCk7Ci0gICByZXR1cm4gKHgpOwotIH0KLSsKLStISVNUX0VOVFJZICoKLStjb3B5X2hp c3RvcnlfZW50cnkgKGhpc3QpCi0rICAgICBISVNUX0VOVFJZICpoaXN0OwotK3sKLSsgIEhJU1Rf RU5UUlkgKnJldDsKLSsgIGNoYXIgKnRzOwotKwotKyAgaWYgKGhpc3QgPT0gMCkKLSsgICAgcmV0 dXJuIGhpc3Q7Ci0rCi0rICByZXQgPSBhbGxvY19oaXN0b3J5X2VudHJ5IChoaXN0LT5saW5lLCAo Y2hhciAqKU5VTEwpOwotKwotKyAgdHMgPSBoaXN0LT50aW1lc3RhbXAgPyBzYXZlc3RyaW5nICho aXN0LT50aW1lc3RhbXApIDogaGlzdC0+dGltZXN0YW1wOwotKyAgcmV0LT50aW1lc3RhbXAgPSB0 czsKLSsKLSsgIHJldC0+ZGF0YSA9IGhpc3QtPmRhdGE7Ci0rCi0rICByZXR1cm4gcmV0OwotK30K LSAgIAotIC8qIE1ha2UgdGhlIGhpc3RvcnkgZW50cnkgYXQgV0hJQ0ggaGF2ZSBMSU5FIGFuZCBE QVRBLiAgVGhpcyByZXR1cm5zCi0gICAgdGhlIG9sZCBlbnRyeSBzbyB5b3UgY2FuIGRpc3Bvc2Ug b2YgdGhlIGRhdGEuICBJbiB0aGUgY2FzZSBvZiBhbgotQEAgLTM1NCw2ICszODcsNTEgQEAgcmVw bGFjZV9oaXN0b3J5X2VudHJ5ICh3aGljaCwgbGluZSwgZGF0YQotICAgcmV0dXJuIChvbGRfdmFs dWUpOwotIH0KLSAKLSsvKiBSZXBsYWNlIHRoZSBEQVRBIGluIHRoZSBzcGVjaWZpZWQgaGlzdG9y eSBlbnRyaWVzLCByZXBsYWNpbmcgT0xEIHdpdGgKLSsgICBORVcuICBXSElDSCBzYXlzIHdoaWNo IG9uZShzKSB0byByZXBsYWNlOiAgV0hJQ0ggPT0gLTEgbWVhbnMgdG8gcmVwbGFjZQotKyAgIGFs bCBvZiB0aGUgaGlzdG9yeSBlbnRyaWVzIHdoZXJlIGVudHJ5LT5kYXRhID09IE9MRDsgV0hJQ0gg PT0gLTIgbWVhbnMKLSsgICB0byByZXBsYWNlIHRoZSBgbmV3ZXN0JyBoaXN0b3J5IGVudHJ5IHdo ZXJlIGVudHJ5LT5kYXRhID09IE9MRDsgYW5kCi0rICAgV0hJQ0ggPj0gMCBtZWFucyB0byByZXBs YWNlIHRoYXQgcGFydGljdWxhciBoaXN0b3J5IGVudHJ5J3MgZGF0YSwgYXMKLSsgICBsb25nIGFz IGl0IG1hdGNoZXMgT0xELiAqLwotK3ZvaWQKLStyZXBsYWNlX2hpc3RvcnlfZGF0YSAod2hpY2gs b2xkLCBuZXcpCi0rICAgICBpbnQgd2hpY2g7Ci0rICAgICBoaXN0ZGF0YV90ICpvbGQsICpuZXc7 Ci0rewotKyAgSElTVF9FTlRSWSAqZW50cnk7Ci0rICByZWdpc3RlciBpbnQgaSwgbGFzdDsKLSsK LSsgIGlmICh3aGljaCA8IC0yIHx8IHdoaWNoID49IGhpc3RvcnlfbGVuZ3RoIHx8IGhpc3Rvcnlf bGVuZ3RoID09IDAgfHwgdGhlX2hpc3RvcnkgPT0gMCkKLSsgICAgcmV0dXJuOwotKwotKyAgaWYg KHdoaWNoID49IDApCi0rICAgIHsKLSsgICAgICBlbnRyeSA9IHRoZV9oaXN0b3J5W3doaWNoXTsK LSsgICAgICBpZiAoZW50cnkgJiYgZW50cnktPmRhdGEgPT0gb2xkKQotKwllbnRyeS0+ZGF0YSA9 IG5ldzsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIGxhc3QgPSAtMTsKLSsgIGZvciAo aSA9IDA7IGkgPCBoaXN0b3J5X2xlbmd0aDsgaSsrKQotKyAgICB7Ci0rICAgICAgZW50cnkgPSB0 aGVfaGlzdG9yeVtpXTsKLSsgICAgICBpZiAoZW50cnkgPT0gMCkKLSsJY29udGludWU7Ci0rICAg ICAgaWYgKGVudHJ5LT5kYXRhID09IG9sZCkKLSsJewotKwkgIGxhc3QgPSBpOwotKwkgIGlmICh3 aGljaCA9PSAtMSkKLSsJICAgIGVudHJ5LT5kYXRhID0gbmV3OwotKwl9Ci0rICAgIH0KLSsgIGlm ICh3aGljaCA9PSAtMiAmJiBsYXN0ID49IDApCi0rICAgIHsKLSsgICAgICBlbnRyeSA9IHRoZV9o aXN0b3J5W2xhc3RdOwotKyAgICAgIGVudHJ5LT5kYXRhID0gbmV3OwkvKiBYWFggLSB3ZSBkb24n dCBjaGVjayBlbnRyeS0+b2xkICovCi0rICAgIH0KLSt9ICAgICAgCi0rICAKLSAvKiBSZW1vdmUg aGlzdG9yeSBlbGVtZW50IFdISUNIIGZyb20gdGhlIGhpc3RvcnkuICBUaGUgcmVtb3ZlZAotICAg IGVsZW1lbnQgaXMgcmV0dXJuZWQgdG8geW91IHNvIHlvdSBjYW4gZnJlZSB0aGUgbGluZSwgZGF0 YSwKLSAgICBhbmQgY29udGFpbmluZyBzdHJ1Y3R1cmUuICovCi1AQCAtNDA2LDcgKzQ4NCw3IEBA IHN0aWZsZV9oaXN0b3J5IChtYXgpCi0gCi0gLyogU3RvcCBzdGlmbGluZyB0aGUgaGlzdG9yeS4g IFRoaXMgcmV0dXJucyB0aGUgcHJldmlvdXMgbWF4aW11bQotICAgIG51bWJlciBvZiBoaXN0b3J5 IGVudHJpZXMuICBUaGUgdmFsdWUgaXMgcG9zaXRpdmUgaWYgdGhlIGhpc3RvcnkKLS0gICB3YXMg c3RpZmxlZCwgIG5lZ2F0aXZlIGlmIGl0IHdhc24ndC4gKi8KLSsgICB3YXMgc3RpZmxlZCwgbmVn YXRpdmUgaWYgaXQgd2Fzbid0LiAqLwotIGludAotIHVuc3RpZmxlX2hpc3RvcnkgKCkKLSB7Ci1J bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9oaXN0b3J5LmgKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvaGlzdG9yeS5oCTIwMTEtMDct MDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFk bGluZS9oaXN0b3J5LmgJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0x LDIzICsxLDIzIEBACi0gLyogaGlzdG9yeS5oIC0tIHRoZSBuYW1lcyBvZiBmdW5jdGlvbnMgdGhh dCB5b3UgY2FuIGNhbGwgaW4gaGlzdG9yeS4gKi8KLS0vKiBDb3B5cmlnaHQgKEMpIDE5ODktMjAw MyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgY29udGFp bnMgdGhlIEdOVSBIaXN0b3J5IExpYnJhcnkgKHRoZSBMaWJyYXJ5KSwgYSBzZXQgb2YKLSsvKiBD b3B5cmlnaHQgKEMpIDE5ODktMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsgICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIEdOVSBIaXN0b3J5IExpYnJhcnkgKEhpc3Rvcnkp LCBhIHNldCBvZgotICAgIHJvdXRpbmVzIGZvciBtYW5hZ2luZyB0aGUgdGV4dCBvZiBwcmV2aW91 c2x5IHR5cGVkIGxpbmVzLgotIAotLSAgIFRoZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBIaXN0b3J5IGlzIGZyZWUg c29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0tICAgVGhl IExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwgYnV0Ci0tICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBp cyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkg a2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QK LS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMSBVU0EuICovCi0rICAgSGlzdG9yeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIEhpc3RvcnkuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rKi8KLSAKLSAjaWZuZGVmIF9ISVNUT1JZX0hfCi0gI2RlZmluZSBfSElTVE9S WV9IXwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvaGlzdHNlYXJjaC5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2hpc3RzZWFy Y2guYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAu MjAxMTA3MDMvcmVhZGxpbmUvaGlzdHNlYXJjaC5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAw MDAwICswMjAwCi1AQCAtMSwyNCArMSwyMyBAQAotIC8qIGhpc3RzZWFyY2guYyAtLSBzZWFyY2hp bmcgdGhlIGhpc3RvcnkgbGlzdC4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTIg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAxOTg5LCAx OTkyLTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxl IGNvbnRhaW5zIHRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9m Ci0rICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5IChIaXN0b3J5 KSwgYSBzZXQgb2YKLSAgICByb3V0aW5lcyBmb3IgbWFuYWdpbmcgdGhlIHRleHQgb2YgcHJldmlv dXNseSB0eXBlZCBsaW5lcy4KLSAKLS0gICBUaGUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgSGlzdG9yeSBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tICAgYW55IGxhdGVyIHZlcnNpb24uCi0rICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIAotLSAgIFRo ZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsIGJ1dAotLSAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotLSAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLS0KLS0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug aXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAgaXMgZ2VuZXJhbGx5 IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90 Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rvbiwg TUEgMDIxMTEgVVNBLiAqLwotKyAgIEhpc3RvcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0r ICAgYWxvbmcgd2l0aCBIaXN0b3J5LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgotKyovCi0gCi0gI2RlZmluZSBSRUFETElORV9MSUJSQVJZCi0gCi1JbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9pbnB1dC5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2lucHV0LmMJMjAxMS0wNy0wMyAxMDo0MDo1 My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2lucHV0 LmMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDI0ICsxLDI0IEBA Ci0gLyogaW5wdXQuYyAtLSBjaGFyYWN0ZXIgaW5wdXQgZnVuY3Rpb25zIGZvciByZWFkbGluZS4g Ki8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5OTQtMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5OTQtMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5l IExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBp bnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotKyAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsg ICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhp c3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0g ICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot ICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdOVSBS ZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAot LSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGgg R05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVk IENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0 aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1 OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0rCi0gI2RlZmluZSBSRUFETElORV9MSUJSQVJZ Ci0gCi0gI2lmIGRlZmluZWQgKF9fVEFOREVNKQotQEAgLTQ1LDE0ICs0NSw3IEBACi0gIyAgaW5j bHVkZSAiYW5zaV9zdGRsaWIuaCIKLSAjZW5kaWYgLyogSEFWRV9TVERMSUJfSCAqLwotIAotLSNp ZiBkZWZpbmVkIChIQVZFX1NFTEVDVCkKLS0jICBpZiAhZGVmaW5lZCAoSEFWRV9TWVNfU0VMRUNU X0gpIHx8ICFkZWZpbmVkIChNX1VOSVgpCi0tIyAgICBpbmNsdWRlIDxzeXMvdGltZS5oPgotLSMg IGVuZGlmCi0tI2VuZGlmIC8qIEhBVkVfU0VMRUNUICovCi0tI2lmIGRlZmluZWQgKEhBVkVfU1lT X1NFTEVDVF9IKQotLSMgIGluY2x1ZGUgPHN5cy9zZWxlY3QuaD4KLS0jZW5kaWYKLSsjaW5jbHVk ZSAicG9zaXhzZWxlY3QuaCIKLSAKLSAjaWYgZGVmaW5lZCAoRklPTlJFQURfSU5fU1lTX0lPQ1RM KQotICMgIGluY2x1ZGUgPHN5cy9pb2N0bC5oPgotQEAgLTEzMyw4ICsxMjYsMTEgQEAgcmxfZ2V0 X2NoYXIgKGtleSkKLSAgICAgcmV0dXJuICgwKTsKLSAKLSAgICprZXkgPSBpYnVmZmVyW3BvcF9p bmRleCsrXTsKLS0KLSsjaWYgMAotICAgaWYgKHBvcF9pbmRleCA+PSBpYnVmZmVyX2xlbikKLSsj ZWxzZQotKyAgaWYgKHBvcF9pbmRleCA+IGlidWZmZXJfbGVuKQotKyNlbmRpZgotICAgICBwb3Bf aW5kZXggPSAwOwotIAotICAgcmV0dXJuICgxKTsKLUBAIC0xNTEsNyArMTQ3LDcgQEAgX3JsX3Vu Z2V0X2NoYXIgKGtleSkKLSAgICAgewotICAgICAgIHBvcF9pbmRleC0tOwotICAgICAgIGlmIChw b3BfaW5kZXggPCAwKQotLQlwb3BfaW5kZXggPSBpYnVmZmVyX2xlbiAtIDE7Ci0rCXBvcF9pbmRl eCA9IGlidWZmZXJfbGVuOwotICAgICAgIGlidWZmZXJbcG9wX2luZGV4XSA9IGtleTsKLSAgICAg ICByZXR1cm4gKDEpOwotICAgICB9Ci1AQCAtMTc5LDYgKzE3NSw3IEBAIHJsX2dhdGhlcl90eWkg KCkKLSAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7Ci0gI2VuZGlmCi0gCi0rICBjaGFyc19hdmFp bCA9IDA7Ci0gICB0dHkgPSBmaWxlbm8gKHJsX2luc3RyZWFtKTsKLSAKLSAjaWYgZGVmaW5lZCAo SEFWRV9TRUxFQ1QpCi1AQCAtMTg2LDggKzE4Myw3IEBAIHJsX2dhdGhlcl90eWkgKCkKLSAgIEZE X1pFUk8gKCZleGNlcHRmZHMpOwotICAgRkRfU0VUICh0dHksICZyZWFkZmRzKTsKLSAgIEZEX1NF VCAodHR5LCAmZXhjZXB0ZmRzKTsKLS0gIHRpbWVvdXQudHZfc2VjID0gMDsKLS0gIHRpbWVvdXQu dHZfdXNlYyA9IF9rZXlib2FyZF9pbnB1dF90aW1lb3V0OwotKyAgVVNFQ19UT19USU1FVkFMIChf a2V5Ym9hcmRfaW5wdXRfdGltZW91dCwgdGltZW91dCk7Ci0gICByZXN1bHQgPSBzZWxlY3QgKHR0 eSArIDEsICZyZWFkZmRzLCAoZmRfc2V0ICopTlVMTCwgJmV4Y2VwdGZkcywgJnRpbWVvdXQpOwot ICAgaWYgKHJlc3VsdCA8PSAwKQotICAgICByZXR1cm4gMDsJLyogTm90aGluZyB0byByZWFkLiAq LwotQEAgLTIyMSwxMyArMjE3LDEwIEBAIHJsX2dhdGhlcl90eWkgKCkKLSAjZW5kaWYgLyogT19O REVMQVkgKi8KLSAKLSAjaWYgZGVmaW5lZCAoX19NSU5HVzMyX18pCi0tICAvKiBXZSB1c2UgZ2V0 Y2ggdG8gcmVhZCBjb25zb2xlIGlucHV0LCBzbyB1c2UgdGhlIHNhbWUKLS0gICAgIG1lY2hhbmlz bSB0byBjaGVjayBmb3IgbW9yZS4gIE90aGVyd2lzZSwgd2UgZG9uJ3Qga25vdy4gICovCi0tICBp ZiAoaXNhdHR5IChmaWxlbm8gKHJsX2luc3RyZWFtKSkpCi0tICAgIGNoYXJzX2F2YWlsID0gX2ti aGl0ICgpOwotLSAgZWxzZQotLSAgICBjaGFyc19hdmFpbCA9IDA7Ci0tICByZXN1bHQgPSAwOwot KyAgLyogVXNlIGdldGNoL19rYmhpdCB0byBjaGVjayBmb3IgYXZhaWxhYmxlIGNvbnNvbGUgaW5w dXQsIGluIHRoZSBzYW1lIHdheQotKyAgICAgdGhhdCB3ZSByZWFkIGl0IG5vcm1hbGx5LiAqLwot KyAgIGNoYXJzX2F2YWlsID0gaXNhdHR5ICh0dHkpID8gX2tiaGl0ICgpIDogMDsKLSsgICByZXN1 bHQgPSAwOwotICNlbmRpZgotIAotICAgLyogSWYgdGhlcmUncyBub3RoaW5nIGF2YWlsYWJsZSwg ZG9uJ3Qgd2FzdGUgdGltZSB0cnlpbmcgdG8gcmVhZAotQEAgLTI1MSw4ICsyNDQsMTAgQEAgcmxf Z2F0aGVyX3R5aSAoKQotICAgICB7Ci0gICAgICAgd2hpbGUgKGNoYXJzX2F2YWlsLS0pCi0gCXsK LSsJICBSTF9DSEVDS19TSUdOQUxTICgpOwotIAkgIGsgPSAoKnJsX2dldGNfZnVuY3Rpb24pIChy bF9pbnN0cmVhbSk7Ci0tCSAgcmxfc3R1ZmZfY2hhciAoayk7Ci0rCSAgaWYgKHJsX3N0dWZmX2No YXIgKGspID09IDApCi0rCSAgICBicmVhazsJCQkvKiBzb21lIHByb2JsZW07IG5vIG1vcmUgcm9v bSAqLwotIAkgIGlmIChrID09IE5FV0xJTkUgfHwgayA9PSBSRVRVUk4pCi0gCSAgICBicmVhazsK LSAJfQotQEAgLTI3Myw3ICsyNjgsNyBAQCBybF9zZXRfa2V5Ym9hcmRfaW5wdXRfdGltZW91dCAo dSkKLSAgIGludCBvOwotIAotICAgbyA9IF9rZXlib2FyZF9pbnB1dF90aW1lb3V0OwotLSAgaWYg KHUgPiAwKQotKyAgaWYgKHUgPj0gMCkKLSAgICAgX2tleWJvYXJkX2lucHV0X3RpbWVvdXQgPSB1 OwotICAgcmV0dXJuIChvKTsKLSB9Ci1AQCAtMzE2LDEwICszMTEsOCBAQCBfcmxfaW5wdXRfYXZh aWxhYmxlICgpCi0gI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQgKF9fTUlOR1czMl9fKQotLSAgLyog V2UgdXNlIGdldGNoIHRvIHJlYWQgY29uc29sZSBpbnB1dCwgc28gdXNlIHRoZSBzYW1lCi0tICAg ICBtZWNoYW5pc20gdG8gY2hlY2sgZm9yIG1vcmUuICBPdGhlcndpc2UsIHdlIGRvbid0IGtub3cu ICAqLwotLSAgaWYgKGlzYXR0eSAoZmlsZW5vIChybF9pbnN0cmVhbSkpKQotLSAgICByZXR1cm4g X2tiaGl0ICgpOwotKyAgaWYgKGlzYXR0eSAodHR5KSkKLSsgICAgcmV0dXJuIChfa2JoaXQgKCkp OwotICNlbmRpZgotIAotICAgcmV0dXJuIDA7Ci1AQCAtMzU4LDcgKzM1MSw3IEBAIF9ybF9pbnNl cnRfdHlwZWluIChjKQotIAotICAgc3RyaW5nW2ldID0gJ1wwJzsKLSAgIHJsX2luc2VydF90ZXh0 IChzdHJpbmcpOwotLSAgZnJlZSAoc3RyaW5nKTsKLSsgIHhmcmVlIChzdHJpbmcpOwotIH0KLSAK LSAvKiBBZGQgS0VZIHRvIHRoZSBidWZmZXIgb2YgY2hhcmFjdGVycyB0byBiZSByZWFkLiAgUmV0 dXJucyAxIGlmIHRoZQotQEAgLTM3Nyw3ICszNzAsMTEgQEAgcmxfc3R1ZmZfY2hhciAoa2V5KQot ICAgICAgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9JTlBVVFBFTkRJTkcpOwotICAgICB9Ci0gICBp YnVmZmVyW3B1c2hfaW5kZXgrK10gPSBrZXk7Ci0rI2lmIDAKLSAgIGlmIChwdXNoX2luZGV4ID49 IGlidWZmZXJfbGVuKQotKyNlbHNlCi0rICBpZiAocHVzaF9pbmRleCA+IGlidWZmZXJfbGVuKQot KyNlbmRpZgotICAgICBwdXNoX2luZGV4ID0gMDsKLSAKLSAgIHJldHVybiAxOwotQEAgLTQzMCwy MiArNDI3LDI2IEBAIHJsX3JlYWRfa2V5ICgpCi0gICAgICAgLyogSWYgdGhlIHVzZXIgaGFzIGFu IGV2ZW50IGZ1bmN0aW9uLCB0aGVuIGNhbGwgaXQgcGVyaW9kaWNhbGx5LiAqLwotICAgICAgIGlm IChybF9ldmVudF9ob29rKQotIAl7Ci0tCSAgd2hpbGUgKHJsX2V2ZW50X2hvb2sgJiYgcmxfZ2V0 X2NoYXIgKCZjKSA9PSAwKQotKwkgIHdoaWxlIChybF9ldmVudF9ob29rKQotIAkgICAgewotLQkg ICAgICAoKnJsX2V2ZW50X2hvb2spICgpOwotLQkgICAgICBpZiAocmxfZG9uZSkJCS8qIFhYWCAt IGV4cGVyaW1lbnRhbCAqLwotLQkJcmV0dXJuICgnXG4nKTsKLSAJICAgICAgaWYgKHJsX2dhdGhl cl90eWkgKCkgPCAwKQkvKiBYWFggLSBFSU8gKi8KLSAJCXsKLSAJCSAgcmxfZG9uZSA9IDE7Ci0g CQkgIHJldHVybiAoJ1xuJyk7Ci0gCQl9Ci0rCSAgICAgIFJMX0NIRUNLX1NJR05BTFMgKCk7Ci0r CSAgICAgIGlmIChybF9nZXRfY2hhciAoJmMpICE9IDApCi0rCQlicmVhazsKLSsJICAgICAgaWYg KHJsX2RvbmUpCQkvKiBYWFggLSBleHBlcmltZW50YWwgKi8KLSsJCXJldHVybiAoJ1xuJyk7Ci0r CSAgICAgICgqcmxfZXZlbnRfaG9vaykgKCk7Ci0gCSAgICB9Ci0gCX0KLSAgICAgICBlbHNlCi0g CXsKLSAJICBpZiAocmxfZ2V0X2NoYXIgKCZjKSA9PSAwKQotIAkgICAgYyA9ICgqcmxfZ2V0Y19m dW5jdGlvbikgKHJsX2luc3RyZWFtKTsKLSsJICBSTF9DSEVDS19TSUdOQUxTICgpOwotIAl9Ci0g ICAgIH0KLSAKLUBAIC00NjEsNiArNDYyLDggQEAgcmxfZ2V0YyAoc3RyZWFtKQotIAotICAgd2hp bGUgKDEpCi0gICAgIHsKLSsgICAgICBSTF9DSEVDS19TSUdOQUxTICgpOwotKwotICNpZiBkZWZp bmVkIChfX01JTkdXMzJfXykKLSAgICAgICBpZiAoaXNhdHR5IChmaWxlbm8gKHN0cmVhbSkpKQot IAlyZXR1cm4gKGdldGNoICgpKTsKLUBAIC01MDYsNyArNTA5LDcgQEAgcmxfZ2V0YyAoc3RyZWFt KQotIAkgdGhpcyBpcyBzaW1wbHkgYW4gaW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwgdG8gcmVhZCAo KS4KLSAJIE90aGVyd2lzZSwgc29tZSBlcnJvciBvY3VycmVkLCBhbHNvIHNpZ25pZnlpbmcgRU9G LiAqLwotICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikKLS0JcmV0dXJuIChFT0YpOwotKwlyZXR1 cm4gKFJMX0lTU1RBVEUgKFJMX1NUQVRFX1JFQURDTUQpID8gUkVBREVSUiA6IEVPRik7Ci0gICAg IH0KLSB9Ci0gCi1AQCAtNTE3LDIwICs1MjAsMjYgQEAgX3JsX3JlYWRfbWJjaGFyIChtYmNoYXIs IHNpemUpCi0gICAgICBjaGFyICptYmNoYXI7Ci0gICAgICBpbnQgc2l6ZTsKLSB7Ci0tICBpbnQg bWJfbGVuID0gMDsKLSsgIGludCBtYl9sZW4sIGM7Ci0gICBzaXplX3QgbWJjaGFyX2J5dGVzX2xl bmd0aDsKLSAgIHdjaGFyX3Qgd2M7Ci0gICBtYnN0YXRlX3QgcHMsIHBzX2JhY2s7Ci0gCi0gICBt ZW1zZXQoJnBzLCAwLCBzaXplb2YgKG1ic3RhdGVfdCkpOwotICAgbWVtc2V0KCZwc19iYWNrLCAw LCBzaXplb2YgKG1ic3RhdGVfdCkpOwotLSAgCi0rCi0rICBtYl9sZW4gPSAwOyAgCi0gICB3aGls ZSAobWJfbGVuIDwgc2l6ZSkKLSAgICAgewotICAgICAgIFJMX1NFVFNUQVRFKFJMX1NUQVRFX01P UkVJTlBVVCk7Ci0tICAgICAgbWJjaGFyW21iX2xlbisrXSA9IHJsX3JlYWRfa2V5ICgpOwotKyAg ICAgIGMgPSBybF9yZWFkX2tleSAoKTsKLSAgICAgICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX01P UkVJTlBVVCk7Ci0gCi0rICAgICAgaWYgKGMgPCAwKQotKwlicmVhazsKLSsKLSsgICAgICBtYmNo YXJbbWJfbGVuKytdID0gYzsKLSsKLSAgICAgICBtYmNoYXJfYnl0ZXNfbGVuZ3RoID0gbWJydG93 YyAoJndjLCBtYmNoYXIsIG1iX2xlbiwgJnBzKTsKLSAgICAgICBpZiAobWJjaGFyX2J5dGVzX2xl bmd0aCA9PSAoc2l6ZV90KSgtMSkpCi0gCWJyZWFrOwkJLyogaW52YWxpZCBieXRlIHNlcXVlbmNl IGZvciB0aGUgY3VycmVudCBsb2NhbGUgKi8KLUBAIC01NTQsMjEgKzU2MywyMSBAQCBfcmxfcmVh ZF9tYmNoYXIgKG1iY2hhciwgc2l6ZSkKLSB9Ci0gCi0gLyogUmVhZCBhIG11bHRpYnl0ZS1jaGFy YWN0ZXIgc3RyaW5nIHdob3NlIGZpcnN0IGNoYXJhY3RlciBpcyBGSVJTVCBpbnRvCi0tICAgdGhl IGJ1ZmZlciBNQiBvZiBsZW5ndGggTUJMRU4uICBSZXR1cm5zIHRoZSBsYXN0IGNoYXJhY3RlciBy ZWFkLCB3aGljaAotKyAgIHRoZSBidWZmZXIgTUIgb2YgbGVuZ3RoIE1MRU4uICBSZXR1cm5zIHRo ZSBsYXN0IGNoYXJhY3RlciByZWFkLCB3aGljaAotICAgIG1heSBiZSBGSVJTVC4gIFVzZWQgYnkg dGhlIHNlYXJjaCBmdW5jdGlvbnMsIGFtb25nIG90aGVycy4gIFZlcnkgc2ltaWxhcgotICAgIHRv IF9ybF9yZWFkX21iY2hhci4gKi8KLSBpbnQKLS1fcmxfcmVhZF9tYnN0cmluZyAoZmlyc3QsIG1i LCBtYmxlbikKLStfcmxfcmVhZF9tYnN0cmluZyAoZmlyc3QsIG1iLCBtbGVuKQotICAgICAgaW50 IGZpcnN0OwotICAgICAgY2hhciAqbWI7Ci0tICAgICBpbnQgbWJsZW47Ci0rICAgICBpbnQgbWxl bjsKLSB7Ci0gICBpbnQgaSwgYzsKLSAgIG1ic3RhdGVfdCBwczsKLSAKLSAgIGMgPSBmaXJzdDsK LS0gIG1lbXNldCAobWIsIDAsIG1ibGVuKTsKLS0gIGZvciAoaSA9IDA7IGkgPCBtYmxlbjsgaSsr KQotKyAgbWVtc2V0IChtYiwgMCwgbWxlbik7Ci0rICBmb3IgKGkgPSAwOyBjID49IDAgJiYgaSA8 IG1sZW47IGkrKykKLSAgICAgewotICAgICAgIG1iW2ldID0gKGNoYXIpYzsKLSAgICAgICBtZW1z ZXQgKCZwcywgMCwgc2l6ZW9mIChtYnN0YXRlX3QpKTsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL3JlYWRsaW5lL2lzZWFyY2guYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3 MDMub3JpZy9yZWFkbGluZS9pc2VhcmNoLmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2lzZWFyY2guYwkyMDExLTA3 LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjkgKzEsMzAgQEAKLSsvKiBpc2Vh cmNoLmMgLSBpbmNyZW1lbnRhbCBzZWFyY2hpbmcgKi8KLSsKLSAvKiAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0gLyoJ CQkJCQkJCSAgICAqLwotIC8qCQkJSS1TZWFyY2ggYW5kIFNlYXJjaGluZwkJCSAgICAqLwotIC8q CQkJCQkJCQkgICAgKi8KLSAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0gCi0tLyogQ29weXJpZ2h0IChDKSAxOTg3 LTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAx OTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxl IGNvbnRhaW5zIHRoZSBSZWFkbGluZSBMaWJyYXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9mCi0t ICAgcm91dGluZXMgZm9yIHByb3ZpZGluZyBFbWFjcyBzdHlsZSBsaW5lIGlucHV0IHRvIHByb2dy YW1zIHRoYXQgYXNrCi0tICAgZm9yIGl0LgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBH TlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGlu ZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGlu Zy4gICAgICAKLSAKLS0gICBUaGUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2Fy ZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3Ig KGF0IHlvdXIgb3B0aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0r ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBSZWFkbGluZSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0tICAgVGhlIExp YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwg YnV0Ci0tICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotLQotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBv ZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2Vw dCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0g ICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw MjExMSBVU0EuICovCi0gI2RlZmluZSBSRUFETElORV9MSUJSQVJZCi0gCi0gI2lmIGRlZmluZWQg KEhBVkVfQ09ORklHX0gpCi1AQCAtNjgsMTQgKzY5LDE0IEBAIHN0YXRpYyB2b2lkIF9ybF9pc2Vh cmNoX2ZpbmkgUEFSQU1TKChfcmwKLSBzdGF0aWMgaW50IF9ybF9pc2VhcmNoX2NsZWFudXAgUEFS QU1TKChfcmxfc2VhcmNoX2N4dCAqLCBpbnQpKTsKLSAKLSAvKiBMYXN0IGxpbmUgZm91bmQgYnkg dGhlIGN1cnJlbnQgaW5jcmVtZW50YWwgc2VhcmNoLCBzbyB3ZSBkb24ndCBgZmluZCcKLS0gICBp ZGVudGljYWwgbGluZXMgbWFueSB0aW1lcyBpbiBhIHJvdy4gKi8KLS1zdGF0aWMgY2hhciAqcHJl dl9saW5lX2ZvdW5kOwotKyAgIGlkZW50aWNhbCBsaW5lcyBtYW55IHRpbWVzIGluIGEgcm93LiAg Tm93IHBhcnQgb2YgaXNlYXJjaCBjb250ZXh0LiAqLwotKy8qIHN0YXRpYyBjaGFyICpwcmV2X2xp bmVfZm91bmQ7ICovCi0gCi0gLyogTGFzdCBzZWFyY2ggc3RyaW5nIGFuZCBpdHMgbGVuZ3RoLiAq LwotIHN0YXRpYyBjaGFyICpsYXN0X2lzZWFyY2hfc3RyaW5nOwotIHN0YXRpYyBpbnQgbGFzdF9p c2VhcmNoX3N0cmluZ19sZW47Ci0gCi0tc3RhdGljIGNoYXIgKmRlZmF1bHRfaXNlYXJjaF90ZXJt aW5hdG9ycyA9ICJcMDMzXDAxMiI7Ci0rc3RhdGljIGNoYXIgKiBjb25zdCBkZWZhdWx0X2lzZWFy Y2hfdGVybWluYXRvcnMgPSAiXDAzM1wwMTIiOwotIAotIF9ybF9zZWFyY2hfY3h0ICoKLSBfcmxf c2N4dF9hbGxvYyAodHlwZSwgZmxhZ3MpCi1AQCAtMTAzLDYgKzEwNCw5IEBAIF9ybF9zY3h0X2Fs bG9jICh0eXBlLCBmbGFncykKLSAKLSAgIGN4dC0+c2F2ZV91bmRvX2xpc3QgPSAwOwotIAotKyAg Y3h0LT5rZXltYXAgPSBfcmxfa2V5bWFwOwotKyAgY3h0LT5va2V5bWFwID0gX3JsX2tleW1hcDsK LSsKLSAgIGN4dC0+aGlzdG9yeV9wb3MgPSAwOwotICAgY3h0LT5kaXJlY3Rpb24gPSAwOwotIAot QEAgLTEyNSw3ICsxMjksNyBAQCBfcmxfc2N4dF9kaXNwb3NlIChjeHQsIGZsYWdzKQotICAgRlJF RSAoY3h0LT5hbGxvY2F0ZWRfbGluZSk7Ci0gICBGUkVFIChjeHQtPmxpbmVzKTsKLSAKLS0gIGZy ZWUgKGN4dCk7Ci0rICB4ZnJlZSAoY3h0KTsKLSB9Ci0gCi0gLyogU2VhcmNoIGJhY2t3YXJkcyB0 aHJvdWdoIHRoZSBoaXN0b3J5IGxvb2tpbmcgZm9yIGEgc3RyaW5nIHdoaWNoIGlzIHR5cGVkCi1A QCAtMTkyLDcgKzE5Niw3IEBAIHJsX2Rpc3BsYXlfc2VhcmNoIChzZWFyY2hfc3RyaW5nLCByZXZl cnMKLSAgIHN0cmNweSAobWVzc2FnZSArIG1zZ2xlbiwgIic6ICIpOwotIAotICAgcmxfbWVzc2Fn ZSAoIiVzIiwgbWVzc2FnZSk7Ci0tICBmcmVlIChtZXNzYWdlKTsKLSsgIHhmcmVlIChtZXNzYWdl KTsKLSAgICgqcmxfcmVkaXNwbGF5X2Z1bmN0aW9uKSAoKTsKLSB9Ci0gCi1AQCAtMzI3LDExICsz MzEsMzAgQEAgX3JsX2lzZWFyY2hfZGlzcGF0Y2ggKGN4dCwgYykKLSAgIHJsX2NvbW1hbmRfZnVu Y190ICpmOwotIAotICAgZiA9IChybF9jb21tYW5kX2Z1bmNfdCAqKU5VTEw7Ci0tIAotLSAvKiBU cmFuc2xhdGUgdGhlIGtleXMgd2UgZG8gc29tZXRoaW5nIHdpdGggdG8gb3Bjb2Rlcy4gKi8KLS0g IGlmIChjID49IDAgJiYgX3JsX2tleW1hcFtjXS50eXBlID09IElTRlVOQykKLSsKLSsgIGlmIChj IDwgMCkKLSAgICAgewotLSAgICAgIGYgPSBfcmxfa2V5bWFwW2NdLmZ1bmN0aW9uOwotKyAgICAg IGN4dC0+c2ZsYWdzIHw9IFNGX0ZBSUxFRDsKLSsgICAgICBjeHQtPmhpc3RvcnlfcG9zID0gY3h0 LT5sYXN0X2ZvdW5kX2xpbmU7Ci0rICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0rCi0rICAvKiBJ ZiB3ZSBhcmUgbW92aW5nIGludG8gYSBuZXcga2V5bWFwLCBtb2RpZnkgY3h0LT5rZXltYXAgYW5k IGdvIG9uLgotKyAgICAgVGhpcyBjYW4gYmUgYSBwcm9ibGVtIGlmIGMgPT0gRVNDIGFuZCB3ZSB3 YW50IHRvIHRlcm1pbmF0ZSB0aGUKLSsgICAgIGluY3JlbWVudGFsIHNlYXJjaCwgc28gd2UgY2hl Y2sgKi8KLSsgIGlmIChjID49IDAgJiYgY3h0LT5rZXltYXBbY10udHlwZSA9PSBJU0tNQVAgJiYg c3RyY2hyIChjeHQtPnNlYXJjaF90ZXJtaW5hdG9ycywgY3h0LT5sYXN0YykgPT0gMCkKLSsgICAg ewotKyAgICAgIGN4dC0+a2V5bWFwID0gRlVOQ1RJT05fVE9fS0VZTUFQIChjeHQtPmtleW1hcCwg Yyk7Ci0rICAgICAgY3h0LT5zZmxhZ3MgfD0gU0ZfQ0hHS01BUDsKLSsgICAgICAvKiBYWFggLSB3 ZSBzaG91bGQgcHJvYmFibHkgc2F2ZSB0aGlzIHNlcXVlbmNlLCBzbyB3ZSBjYW4gZG8KLSsJIHNv bWV0aGluZyB1c2VmdWwgaWYgdGhpcyBkb2Vzbid0IGVuZCB1cCBtYXBwaW5nIHRvIGEgY29tbWFu ZC4gKi8KLSsgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgLyogVHJhbnNsYXRlIHRoZSBr ZXlzIHdlIGRvIHNvbWV0aGluZyB3aXRoIHRvIG9wY29kZXMuICovCi0rICBpZiAoYyA+PSAwICYm IGN4dC0+a2V5bWFwW2NdLnR5cGUgPT0gSVNGVU5DKQotKyAgICB7Ci0rICAgICAgZiA9IGN4dC0+ a2V5bWFwW2NdLmZ1bmN0aW9uOwotIAotICAgICAgIGlmIChmID09IHJsX3JldmVyc2Vfc2VhcmNo X2hpc3RvcnkpCi0gCWN4dC0+bGFzdGMgPSAoY3h0LT5zZmxhZ3MgJiBTRl9SRVZFUlNFKSA/IC0x IDogLTI7Ci1AQCAtMzM5LDE5ICszNjIsMjcgQEAgX3JsX2lzZWFyY2hfZGlzcGF0Y2ggKGN4dCwg YykKLSAJY3h0LT5sYXN0YyA9IChjeHQtPnNmbGFncyAmIFNGX1JFVkVSU0UpID8gLTIgOiAtMTsK LSAgICAgICBlbHNlIGlmIChmID09IHJsX3J1Ym91dCkKLSAJY3h0LT5sYXN0YyA9IC0zOwotLSAg ICAgIGVsc2UgaWYgKGMgPT0gQ1RSTCAoJ0cnKSkKLSsgICAgICBlbHNlIGlmIChjID09IENUUkwg KCdHJykgfHwgZiA9PSBybF9hYm9ydCkKLSAJY3h0LT5sYXN0YyA9IC00OwotLSAgICAgIGVsc2Ug aWYgKGMgPT0gQ1RSTCAoJ1cnKSkJLyogWFhYICovCi0rICAgICAgZWxzZSBpZiAoYyA9PSBDVFJM ICgnVycpIHx8IGYgPT0gcmxfdW5peF93b3JkX3J1Ym91dCkJLyogWFhYICovCi0gCWN4dC0+bGFz dGMgPSAtNTsKLS0gICAgICBlbHNlIGlmIChjID09IENUUkwgKCdZJykpCS8qIFhYWCAqLwotKyAg ICAgIGVsc2UgaWYgKGMgPT0gQ1RSTCAoJ1knKSB8fCBmID09IHJsX3lhbmspCS8qIFhYWCAqLwot IAljeHQtPmxhc3RjID0gLTY7Ci0gICAgIH0KLSAKLSsgIC8qIElmIHdlIGNoYW5nZWQgdGhlIGtl eW1hcCBlYXJsaWVyIHdoaWxlIHRyYW5zbGF0aW5nIGEga2V5IHNlcXVlbmNlIGludG8KLSsgICAg IGEgY29tbWFuZCwgcmVzdG9yZSBpdCBub3cgdGhhdCB3ZSd2ZSBzdWNjZWVkZWQuICovCi0rICBp ZiAoY3h0LT5zZmxhZ3MgJiBTRl9DSEdLTUFQKQotKyAgICB7Ci0rICAgICAgY3h0LT5rZXltYXAg PSBjeHQtPm9rZXltYXA7Ci0rICAgICAgY3h0LT5zZmxhZ3MgJj0gflNGX0NIR0tNQVA7Ci0rICAg IH0KLSsKLSAgIC8qIFRoZSBjaGFyYWN0ZXJzIGluIGlzZWFyY2hfdGVybWluYXRvcnMgKHNldCBm cm9tIHRoZSB1c2VyLXNldHRhYmxlCi0gICAgICB2YXJpYWJsZSBpc2VhcmNoLXRlcm1pbmF0b3Jz KSBhcmUgdXNlZCB0byB0ZXJtaW5hdGUgdGhlIHNlYXJjaCBidXQKLSAgICAgIG5vdCBzdWJzZXF1 ZW50bHkgZXhlY3V0ZSB0aGUgY2hhcmFjdGVyIGFzIGEgY29tbWFuZC4gIFRoZSBkZWZhdWx0Ci0g ICAgICB2YWx1ZSBpcyAiXDAzM1wwMTIiIChFU0MgYW5kIEMtSikuICovCi0tICBpZiAoc3RyY2hy IChjeHQtPnNlYXJjaF90ZXJtaW5hdG9ycywgY3h0LT5sYXN0YykpCi0rICBpZiAoY3h0LT5sYXN0 YyA+IDAgJiYgc3RyY2hyIChjeHQtPnNlYXJjaF90ZXJtaW5hdG9ycywgY3h0LT5sYXN0YykpCi0g ICAgIHsKLSAgICAgICAvKiBFU0Mgc3RpbGwgdGVybWluYXRlcyB0aGUgc2VhcmNoLCBidXQgaWYg dGhlcmUgaXMgcGVuZGluZwotIAkgaW5wdXQgb3IgaWYgaW5wdXQgYXJyaXZlcyB3aXRoaW4gMC4x IHNlY29uZHMgKG9uIHN5c3RlbXMKLUBAIC0zNzUsNyArNDA2LDcgQEAgX3JsX2lzZWFyY2hfZGlz cGF0Y2ggKGN4dCwgYykKLSAgICAgewotICAgICAgIGlmIChjeHQtPmxhc3RjID49IDAgJiYgKGN4 dC0+bWJbMF0gJiYgY3h0LT5tYlsxXSA9PSAnXDAnKSAmJiBFTkRTUkNIX0NIQVIgKGN4dC0+bGFz dGMpKQotIAl7Ci0tCSAgLyogVGhpcyBzZXRzIHJsX3BlbmRpbmdfaW5wdXQgdG8gYzsgaXQgd2ls bCBiZSBwaWNrZWQgdXAgdGhlIG5leHQKLSsJICAvKiBUaGlzIHNldHMgcmxfcGVuZGluZ19pbnB1 dCB0byBMQVNUQzsgaXQgd2lsbCBiZSBwaWNrZWQgdXAgdGhlIG5leHQKLSAJICAgICB0aW1lIHJs X3JlYWRfa2V5IGlzIGNhbGxlZC4gKi8KLSAJICBybF9leGVjdXRlX25leHQgKGN4dC0+bGFzdGMp OwotIAkgIHJldHVybiAoMCk7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9r ZXltYXBzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxp bmUva2V5bWFwcy5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9rZXltYXBzLmMJMjAxMS0wNy0wMyAxMDo0MToyMS4w MDAwMDAwMDAgKzAyMDAKLUBAIC0xLDIzICsxLDI0IEBACi0gLyoga2V5bWFwcy5jIC0tIEZ1bmN0 aW9ucyBhbmQga2V5bWFwcyBmb3IgdGhlIEdOVSBSZWFkbGluZSBsaWJyYXJ5LiAqLwotIAotLS8q IENvcHlyaWdodCAoQykgMTk4OCwxOTg5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot Ky8qIENvcHlyaWdodCAoQykgMTk4OCwxOTg5LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIFJlYWRsaW5lLCBhIGxpYnJh cnkgZm9yIHJlYWRpbmcgbGluZXMKLS0gICBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQg YW5kIGhpc3RvcnkgZWRpdGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJl YWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGlu ZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAg ICAgCi0gCi0tICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotLSAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotLSAgIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkK LS0gICBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotLSAgIFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot LSAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBSZWFkbGlu ZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotICAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0tICAgYWxvbmcgd2l0aCBSZWFkbGluZTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlCi0tICAgU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBs YWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIGFsb25nIHdpdGgg UmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0r Ki8KLSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9D T05GSUdfSCkKLUBAIC01Niw4ICs1Nyw5IEBAIEtleW1hcAotIHJsX21ha2VfYmFyZV9rZXltYXAg KCkKLSB7Ci0gICByZWdpc3RlciBpbnQgaTsKLS0gIEtleW1hcCBrZXltYXAgPSAoS2V5bWFwKXht YWxsb2MgKEtFWU1BUF9TSVpFICogc2l6ZW9mIChLRVlNQVBfRU5UUlkpKTsKLSsgIEtleW1hcCBr ZXltYXA7Ci0gCi0rICBrZXltYXAgPSAoS2V5bWFwKXhtYWxsb2MgKEtFWU1BUF9TSVpFICogc2l6 ZW9mIChLRVlNQVBfRU5UUlkpKTsKLSAgIGZvciAoaSA9IDA7IGkgPCBLRVlNQVBfU0laRTsgaSsr KQotICAgICB7Ci0gICAgICAga2V5bWFwW2ldLnR5cGUgPSBJU0ZVTkM7Ci1AQCAtNzUsNyArNzcs OCBAQCBybF9tYWtlX2JhcmVfa2V5bWFwICgpCi0gICByZXR1cm4gKGtleW1hcCk7Ci0gfQotIAot LS8qIFJldHVybiBhIG5ldyBrZXltYXAgd2hpY2ggaXMgYSBjb3B5IG9mIE1BUC4gKi8KLSsvKiBS ZXR1cm4gYSBuZXcga2V5bWFwIHdoaWNoIGlzIGEgY29weSBvZiBNQVAuICBKdXN0IGNvcGllcyBw b2ludGVycywgZG9lcwotKyAgIG5vdCBjb3B5IHRleHQgb2YgbWFjcm9zIG9yIGRlc2NlbmQgaW50 byBjaGlsZCBrZXltYXBzLiAqLwotIEtleW1hcAotIHJsX2NvcHlfa2V5bWFwIChtYXApCi0gICAg ICBLZXltYXAgbWFwOwotQEAgLTEyNyw3ICsxMzAsNyBAQCBybF9kaXNjYXJkX2tleW1hcCAobWFw KQotIHsKLSAgIGludCBpOwotIAotLSAgaWYgKCFtYXApCi0rICBpZiAobWFwID09IDApCi0gICAg IHJldHVybjsKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBLRVlNQVBfU0laRTsgaSsrKQotQEAgLTEz OSwxMSArMTQyLDIxIEBAIHJsX2Rpc2NhcmRfa2V5bWFwIChtYXApCi0gCi0gCWNhc2UgSVNLTUFQ OgotIAkgIHJsX2Rpc2NhcmRfa2V5bWFwICgoS2V5bWFwKW1hcFtpXS5mdW5jdGlvbik7Ci0rCSAg eGZyZWUgKChjaGFyICopbWFwW2ldLmZ1bmN0aW9uKTsKLSAJICBicmVhazsKLSAKLSAJY2FzZSBJ U01BQ1I6Ci0tCSAgZnJlZSAoKGNoYXIgKiltYXBbaV0uZnVuY3Rpb24pOwotKwkgIHhmcmVlICgo Y2hhciAqKW1hcFtpXS5mdW5jdGlvbik7Ci0gCSAgYnJlYWs7Ci0gCX0KLSAgICAgfQotIH0KLSsK LSsvKiBDb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGRpc2NhcmRzLCB0aGVuIGZyZWVzLCBNQVAu ICovCi0rdm9pZAotK3JsX2ZyZWVfa2V5bWFwIChtYXApCi0rICAgICBLZXltYXAgbWFwOwotK3sK LSsgIHJsX2Rpc2NhcmRfa2V5bWFwIChtYXApOwotKyAgeGZyZWUgKChjaGFyICopbWFwKTsKLSt9 Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9rZXltYXBzLmgKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUva2V5bWFwcy5oCTIwMTEt MDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9y ZWFkbGluZS9rZXltYXBzLmgJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBA IC0yLDIzICsyLDIyIEBACi0gCi0gLyogQ29weXJpZ2h0IChDKSAxOTg3LCAxOTg5LCAxOTkyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGlu ZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0r ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGlu ZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFj dGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRoZSBHTlUgUmVh ZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAot LSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdh cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFk bGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9m dGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0 IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAg IGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAKLSAjaWZuZGVm IF9LRVlNQVBTX0hfCi0gI2RlZmluZSBfS0VZTUFQU19IXwotQEAgLTUzLDExICs1Miw2IEBAIHR5 cGVkZWYgc3RydWN0IF9rZXltYXBfZW50cnkgewotICNkZWZpbmUgS0VZTUFQX1NJWkUgMjU3Ci0g I2RlZmluZSBBTllPVEhFUktFWSBLRVlNQVBfU0laRS0xCi0gCi0tLyogSSB3YW50ZWQgdG8gbWFr ZSB0aGUgYWJvdmUgc3RydWN0dXJlIGNvbnRhaW4gYSB1bmlvbiBvZjoKLS0gICB1bmlvbiB7IHJs X2NvbW1hbmRfZnVuY190ICpmdW5jdGlvbjsgc3RydWN0IF9rZXltYXBfZW50cnkgKmtleW1hcDsg fSB2YWx1ZTsKLS0gICBidXQgdGhpcyBtYWRlIGl0IGltcG9zc2libGUgZm9yIG1lIHRvIGNyZWF0 ZSBhIHN0YXRpYyBhcnJheS4KLS0gICBNYXliZSBJIG5lZWQgQyBsZXNzb25zLiAqLwotLQotIHR5 cGVkZWYgS0VZTUFQX0VOVFJZIEtFWU1BUF9FTlRSWV9BUlJBWVtLRVlNQVBfU0laRV07Ci0gdHlw ZWRlZiBLRVlNQVBfRU5UUlkgKktleW1hcDsKLSAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L3JlYWRsaW5lL2tpbGwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3Jp Zy9yZWFkbGluZS9raWxsLmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2tpbGwuYwkyMDExLTA3LTAzIDEwOjQxOjIx LjAwMDAwMDAwMCArMDIwMAotQEAgLTIsMjMgKzIsMjMgQEAKLSAKLSAvKiBDb3B5cmlnaHQgKEMp IDE5OTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCi0tICAgcmVh ZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRp dGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkg KFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRo IGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCi0gCi0tICAgVGhl IEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0Ci0tICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCi0rICAgUmVhZGxpbmUgaXMgZnJl ZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKLS0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5Ci0tICAgb2YgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAgaXMgZ2VuZXJh bGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8g bm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rv biwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBSZWFkbGlu ZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotKwot ICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQotIAotICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19I KQotQEAgLTExNSw3ICsxMTUsNyBAQCBfcmxfY29weV90b19raWxsX3JpbmcgKHRleHQsIGFwcGVu ZCkKLSAJICBpZiAoc2xvdCA9PSBybF9tYXhfa2lsbHMpCi0gCSAgICB7Ci0gCSAgICAgIHJlZ2lz dGVyIGludCBpOwotLQkgICAgICBmcmVlIChybF9raWxsX3JpbmdbMF0pOwotKwkgICAgICB4ZnJl ZSAocmxfa2lsbF9yaW5nWzBdKTsKLSAJICAgICAgZm9yIChpID0gMDsgaSA8IHNsb3Q7IGkrKykK LSAJCXJsX2tpbGxfcmluZ1tpXSA9IHJsX2tpbGxfcmluZ1tpICsgMV07Ci0gCSAgICB9Ci1AQCAt MTQ2LDggKzE0Niw4IEBAIF9ybF9jb3B5X3RvX2tpbGxfcmluZyAodGV4dCwgYXBwZW5kKQotIAkg IHN0cmNweSAobmV3LCB0ZXh0KTsKLSAJICBzdHJjYXQgKG5ldywgb2xkKTsKLSAJfQotLSAgICAg IGZyZWUgKG9sZCk7Ci0tICAgICAgZnJlZSAodGV4dCk7Ci0rICAgICAgeGZyZWUgKG9sZCk7Ci0r ICAgICAgeGZyZWUgKHRleHQpOwotICAgICAgIHJsX2tpbGxfcmluZ1tzbG90XSA9IG5ldzsKLSAg ICAgfQotICAgZWxzZQotQEAgLTU4Miw2ICs1ODIsNyBAQCBybF95YW5rX250aF9hcmdfaW50ZXJu YWwgKGNvdW50LCBpZ25vcmUsCi0gICBpZiAoIWFyZyB8fCAhKmFyZykKLSAgICAgewotICAgICAg IHJsX2RpbmcgKCk7Ci0rICAgICAgRlJFRSAoYXJnKTsKLSAgICAgICByZXR1cm4gLTE7Ci0gICAg IH0KLSAKLUBAIC02MDAsNyArNjAxLDcgQEAgcmxfeWFua19udGhfYXJnX2ludGVybmFsIChjb3Vu dCwgaWdub3JlLAotICNlbmRpZiAvKiBWSV9NT0RFICovCi0gCi0gICBybF9pbnNlcnRfdGV4dCAo YXJnKTsKLS0gIGZyZWUgKGFyZyk7Ci0rICB4ZnJlZSAoYXJnKTsKLSAKLSAgIHJsX2VuZF91bmRv X2dyb3VwICgpOwotICAgcmV0dXJuIDA7Ci1AQCAtNjM5LDcgKzY0MCw3IEBAIHJsX3lhbmtfbGFz dF9hcmcgKGNvdW50LCBrZXkpCi0gICAgIHsKLSAgICAgICBpZiAodW5kb19uZWVkZWQpCi0gCXJs X2RvX3VuZG8gKCk7Ci0tICAgICAgaWYgKGNvdW50IDwgMSkKLSsgICAgICBpZiAoY291bnQgPCAw KQkJLyogWFhYIC0gd2FzIDwgMSAqLwotICAgICAgICAgZGlyZWN0aW9uID0gLWRpcmVjdGlvbjsK LSAgICAgICBoaXN0b3J5X3NraXAgKz0gZGlyZWN0aW9uOwotICAgICAgIGlmIChoaXN0b3J5X3Nr aXAgPCAwKQotQEAgLTY4NSw3ICs2ODYsNyBAQCBybF9wYXN0ZV9mcm9tX2NsaXBib2FyZCAoY291 bnQsIGtleSkKLSAgICAgICBfcmxfc2V0X21hcmtfYXRfcG9zIChybF9wb2ludCk7Ci0gICAgICAg cmxfaW5zZXJ0X3RleHQgKHB0cik7Ci0gICAgICAgaWYgKHB0ciAhPSBkYXRhKQotLQlmcmVlIChw dHIpOwotKwl4ZnJlZSAocHRyKTsKLSAgICAgICBDbG9zZUNsaXBib2FyZCAoKTsKLSAgICAgfQot ICAgcmV0dXJuICgwKTsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL21hY3Jv LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvbWFj cm8uYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAu MjAxMTA3MDMvcmVhZGxpbmUvbWFjcm8uYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCAr MDIwMAotQEAgLTEsMjQgKzEsMjQgQEAKLSAvKiBtYWNyby5jIC0tIGtleWJvYXJkIG1hY3JvcyBm b3IgcmVhZGxpbmUuICovCi0gCi0tLyogQ29weXJpZ2h0IChDKSAxOTk0IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk5NC0yMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUg UmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4 dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGli cmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1 dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGli cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAgIGFuZC9v ciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBU aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGluZSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBw ZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmls ZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBj b3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4g Ki8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5lIFJFQURMSU5F X0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKLUBAIC0xMTMsNyArMTEz LDcgQEAgX3JsX25leHRfbWFjcm9fa2V5ICgpCi0gCi0gI2lmIGRlZmluZWQgKFJFQURMSU5FX0NB TExCQUNLUykKLSAgIGMgPSBybF9leGVjdXRpbmdfbWFjcm9bZXhlY3V0aW5nX21hY3JvX2luZGV4 KytdOwotLSAgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSAmJiBSTF9JU1NUQVRF IChSTF9TVEFURV9SRUFEQ01EKSAmJiBybF9leGVjdXRpbmdfbWFjcm9bZXhlY3V0aW5nX21hY3Jv X2luZGV4XSA9PSAwKQotKyAgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSAmJiBS TF9JU1NUQVRFIChSTF9TVEFURV9SRUFEQ01EfFJMX1NUQVRFX01PUkVJTlBVVCkgJiYgcmxfZXhl Y3V0aW5nX21hY3JvW2V4ZWN1dGluZ19tYWNyb19pbmRleF0gPT0gMCkKLSAgICAgICBfcmxfcG9w X2V4ZWN1dGluZ19tYWNybyAoKTsKLSAgIHJldHVybiBjOwotICNlbHNlCi1AQCAtMTUyLDcgKzE1 Miw3IEBAIF9ybF9wb3BfZXhlY3V0aW5nX21hY3JvICgpCi0gICAgICAgcmxfZXhlY3V0aW5nX21h Y3JvID0gbWFjcm9fbGlzdC0+c3RyaW5nOwotICAgICAgIGV4ZWN1dGluZ19tYWNyb19pbmRleCA9 IG1hY3JvX2xpc3QtPnNpbmRleDsKLSAgICAgICBtYWNyb19saXN0ID0gbWFjcm9fbGlzdC0+bmV4 dDsKLS0gICAgICBmcmVlIChtYWNybyk7Ci0rICAgICAgeGZyZWUgKG1hY3JvKTsKLSAgICAgfQot IAotICAgaWYgKHJsX2V4ZWN1dGluZ19tYWNybyA9PSAwKQotQEAgLTE4MSw3ICsxODEsNyBAQCBf cmxfa2lsbF9rYmRfbWFjcm8gKCkKLSB7Ci0gICBpZiAoY3VycmVudF9tYWNybykKLSAgICAgewot LSAgICAgIGZyZWUgKGN1cnJlbnRfbWFjcm8pOwotKyAgICAgIHhmcmVlIChjdXJyZW50X21hY3Jv KTsKLSAgICAgICBjdXJyZW50X21hY3JvID0gKGNoYXIgKikgTlVMTDsKLSAgICAgfQotICAgY3Vy cmVudF9tYWNyb19zaXplID0gY3VycmVudF9tYWNyb19pbmRleCA9IDA7Ci1JbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9yZWFkbGluZS9tYnV0aWwuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu OTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9tYnV0aWwuYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvbWJ1dGlsLmMJ MjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDI0ICsxLDI0IEBACi0g LyogbWJ1dGlsLmMgLS0gcmVhZGxpbmUgbXVsdGlieXRlIGNoYXJhY3RlciB1dGlsaXR5IGZ1bmN0 aW9ucyAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMjAwMS0yMDA1IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMjAwMS0yMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVh ZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3 aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFy eQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBh bmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFy eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAgIGFuZC9vciBt b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUg R05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQg d2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBj YWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5 IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAot LSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8K LSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJ QlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKLUBAIC03Nyw3ICs3Nyw3IEBA IF9ybF9maW5kX25leHRfbWJjaGFyX2ludGVybmFsIChzdHJpbmcsIHMKLSAgICAgIGNoYXIgKnN0 cmluZzsKLSAgICAgIGludCBzZWVkLCBjb3VudCwgZmluZF9ub25femVybzsKLSB7Ci0tICBzaXpl X3QgdG1wOwotKyAgc2l6ZV90IHRtcCwgbGVuOwotICAgbWJzdGF0ZV90IHBzOwotICAgaW50IHBv aW50OwotICAgd2NoYXJfdCB3YzsKLUBAIC05MSwxNyArOTEsMjEgQEAgX3JsX2ZpbmRfbmV4dF9t YmNoYXJfaW50ZXJuYWwgKHN0cmluZywgcwotICAgICByZXR1cm4gc2VlZDsKLSAKLSAgIHBvaW50 ID0gc2VlZCArIF9ybF9hZGp1c3RfcG9pbnQgKHN0cmluZywgc2VlZCwgJnBzKTsKLS0gIC8qIGlm IHRoaXMgaXMgdHJ1ZSwgbWVhbnMgdGhhdCBzZWVkIHdhcyBub3QgcG9pbnRlZCBjaGFyYWN0ZXIK LS0gICAgIHN0YXJ0ZWQgYnl0ZS4gIFNvIGNvcnJlY3QgdGhlIHBvaW50IGFuZCBjb25zdW1lIGNv dW50ICovCi0rICAvKiBpZiB0aGlzIGlzIHRydWUsIG1lYW5zIHRoYXQgc2VlZCB3YXMgbm90IHBv aW50aW5nIHRvIGEgYnl0ZSBpbmRpY2F0aW5nCi0rICAgICB0aGUgYmVnaW5uaW5nIG9mIGEgbXVs dGlieXRlIGNoYXJhY3Rlci4gIENvcnJlY3QgdGhlIHBvaW50IGFuZCBjb25zdW1lCi0rICAgICBv bmUgY2hhci4gKi8KLSAgIGlmIChzZWVkIDwgcG9pbnQpCi0gICAgIGNvdW50LS07Ci0gCi0gICB3 aGlsZSAoY291bnQgPiAwKSAgCi0gICAgIHsKLS0gICAgICB0bXAgPSBtYnJ0b3djICgmd2MsIHN0 cmluZytwb2ludCwgc3RybGVuKHN0cmluZyArIHBvaW50KSwgJnBzKTsKLSsgICAgICBsZW4gPSBz dHJsZW4gKHN0cmluZyArIHBvaW50KTsKLSsgICAgICBpZiAobGVuID09IDApCi0rCWJyZWFrOwot KyAgICAgIHRtcCA9IG1icnRvd2MgKCZ3Yywgc3RyaW5nK3BvaW50LCBsZW4sICZwcyk7Ci0gICAg ICAgaWYgKE1CX0lOVkFMSURDSCAoKHNpemVfdCl0bXApKQotIAl7Ci0tCSAgLyogaW52YWxpZCBi eXRlcy4gYXN1bWUgYSBieXRlIHJlcHJlc2VudHMgYSBjaGFyYWN0ZXIgKi8KLSsJICAvKiBpbnZh bGlkIGJ5dGVzLiBhc3N1bWUgYSBieXRlIHJlcHJlc2VudHMgYSBjaGFyYWN0ZXIgKi8KLSAJICBw b2ludCsrOwotIAkgIGNvdW50LS07Ci0gCSAgLyogcmVzZXQgc3RhdGVzLiAqLwotQEAgLTEyOCwx MiArMTMyLDEwIEBAIF9ybF9maW5kX25leHRfbWJjaGFyX2ludGVybmFsIChzdHJpbmcsIHMKLSAg IGlmIChmaW5kX25vbl96ZXJvKQotICAgICB7Ci0gICAgICAgdG1wID0gbWJydG93YyAoJndjLCBz dHJpbmcgKyBwb2ludCwgc3RybGVuIChzdHJpbmcgKyBwb2ludCksICZwcyk7Ci0tICAgICAgd2hp bGUgKHRtcCA+IDAgJiYgd2N3aWR0aCAod2MpID09IDApCi0rICAgICAgd2hpbGUgKE1CX05VTExX Q0ggKHRtcCkgPT0gMCAmJiBNQl9JTlZBTElEQ0ggKHRtcCkgPT0gMCAmJiB3Y3dpZHRoICh3Yykg PT0gMCkKLSAJewotIAkgIHBvaW50ICs9IHRtcDsKLSAJICB0bXAgPSBtYnJ0b3djICgmd2MsIHN0 cmluZyArIHBvaW50LCBzdHJsZW4gKHN0cmluZyArIHBvaW50KSwgJnBzKTsKLS0JICBpZiAoTUJf TlVMTFdDSCAodG1wKSB8fCBNQl9JTlZBTElEQ0ggKHRtcCkpCi0tCSAgICBicmVhazsKLSAJfQot ICAgICB9Ci0gCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9taXNjLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvbWlzYy5jCTIw MTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcw My9yZWFkbGluZS9taXNjLmMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBA IC0xLDI0ICsxLDI0IEBACi0gLyogbWlzYy5jIC0tIG1pc2NlbGxhbmVvdXMgYmluZGFibGUgcmVh ZGxpbmUgZnVuY3Rpb25zLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGlu ZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0r ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGlu ZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFj dGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRoZSBHTlUgUmVh ZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAot LSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdh cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFk bGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9m dGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0 IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAg IGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5l IFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKLUBAIC0x NDYsNiArMTQ2LDggQEAgX3JsX2FyZ19kaXNwYXRjaCAoY3h0LCBjKQotIAkgIHJsX3Jlc3RvcmVf cHJvbXB0ICgpOwotIAkgIHJsX2NsZWFyX21lc3NhZ2UgKCk7Ci0gCSAgUkxfVU5TRVRTVEFURShS TF9TVEFURV9OVU1FUklDQVJHKTsKLSsJICBpZiAoa2V5IDwgMCkKLSsJICAgIHJldHVybiAtMTsK LSAJICByZXR1cm4gKF9ybF9kaXNwYXRjaCAoa2V5LCBfcmxfa2V5bWFwKSk7Ci0gCX0KLSAgICAg fQotQEAgLTIxMiw2ICsyMTQsOCBAQCBybF9kaWdpdF9sb29wICgpCi0gICAgICAgaWYgKHIgPD0g MCB8fCAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FSRykgPT0gMCkpCi0gICAgICAgICBi cmVhazsKLSAgICAgfQotKwotKyAgcmV0dXJuIHI7Ci0gfQotIAotIC8qIENyZWF0ZSBhIGRlZmF1 bHQgYXJndW1lbnQuICovCi1AQCAtMzI0LDcgKzMyOCw3IEBAIF9ybF9mcmVlX2hpc3RvcnlfZW50 cnkgKGVudHJ5KQotICAgRlJFRSAoZW50cnktPmxpbmUpOwotICAgRlJFRSAoZW50cnktPnRpbWVz dGFtcCk7Ci0gCi0tICBmcmVlIChlbnRyeSk7Ci0rICB4ZnJlZSAoZW50cnkpOwotIH0KLSAKLSAv KiBQZXJoYXBzIHB1dCBiYWNrIHRoZSBjdXJyZW50IGxpbmUgaWYgaXQgaGFzIGNoYW5nZWQuICov Ci1AQCAtMzM4LDkgKzM0Miw5IEBAIHJsX21heWJlX3JlcGxhY2VfbGluZSAoKQotICAgaWYgKHRl bXAgJiYgKChVTkRPX0xJU1QgKikodGVtcC0+ZGF0YSkgIT0gcmxfdW5kb19saXN0KSkKLSAgICAg ewotICAgICAgIHRlbXAgPSByZXBsYWNlX2hpc3RvcnlfZW50cnkgKHdoZXJlX2hpc3RvcnkgKCks IHJsX2xpbmVfYnVmZmVyLCAoaGlzdGRhdGFfdClybF91bmRvX2xpc3QpOwotLSAgICAgIGZyZWUg KHRlbXAtPmxpbmUpOwotKyAgICAgIHhmcmVlICh0ZW1wLT5saW5lKTsKLSAgICAgICBGUkVFICh0 ZW1wLT50aW1lc3RhbXApOwotLSAgICAgIGZyZWUgKHRlbXApOwotKyAgICAgIHhmcmVlICh0ZW1w KTsKLSAgICAgfQotICAgcmV0dXJuIDA7Ci0gfQotQEAgLTQyNyw2ICs0MzEsNTYgQEAgcmxfcmVw bGFjZV9mcm9tX2hpc3RvcnkgKGVudHJ5LCBmbGFncykKLSAgICAgICBybF9tYXJrID0gcmxfZW5k OwotICAgICB9Ci0gI2VuZGlmCi0rfQotKwotKy8qIFByb2Nlc3MgYW5kIGZyZWUgdW5kbyBsaXN0 cyBhdHRhY2hlZCB0byBlYWNoIGhpc3RvcnkgZW50cnkgcHJpb3IgdG8gdGhlCi0rICAgY3VycmVu dCBlbnRyeSwgaW5jbHVzaXZlLCByZXZlcnRpbmcgZWFjaCBsaW5lIHRvIGl0cyBzYXZlZCBzdGF0 ZS4gIFRoaXMgCi0rICAgaXMgZGVzdHJ1Y3RpdmUsIGFuZCBzdGF0ZSBhYm91dCB0aGUgY3VycmVu dCBsaW5lIGlzIGxvc3QuICBUaGlzIGlzIG5vdAotKyAgIGludGVuZGVkIHRvIGJlIGNhbGxlZCB3 aGlsZSBhY3RpdmVseSBlZGl0aW5nLCBhbmQgdGhlIGN1cnJlbnQgbGluZSBpcwotKyAgIG5vdCBh c3N1bWVkIHRvIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgaGlzdG9yeSBsaXN0LiAqLwotK3ZvaWQK LStfcmxfcmV2ZXJ0X2FsbF9saW5lcyAoKQotK3sKLSsgIGludCBocG9zOwotKyAgSElTVF9FTlRS WSAqZW50cnk7Ci0rICBVTkRPX0xJU1QgKnVsLCAqc2F2ZWRfdW5kb19saXN0OwotKyAgY2hhciAq bGJ1ZjsKLSsKLSsgIGxidWYgPSBzYXZlc3RyaW5nIChybF9saW5lX2J1ZmZlcik7Ci0rICBzYXZl ZF91bmRvX2xpc3QgPSBybF91bmRvX2xpc3Q7Ci0rICBocG9zID0gd2hlcmVfaGlzdG9yeSAoKTsK LSsKLSsgIGVudHJ5ID0gKGhwb3MgPT0gaGlzdG9yeV9sZW5ndGgpID8gcHJldmlvdXNfaGlzdG9y eSAoKSA6IGN1cnJlbnRfaGlzdG9yeSAoKTsKLSsgIHdoaWxlIChlbnRyeSkKLSsgICAgewotKyAg ICAgIGlmICh1bCA9IChVTkRPX0xJU1QgKillbnRyeS0+ZGF0YSkKLSsJewotKwkgIGlmICh1bCA9 PSBzYXZlZF91bmRvX2xpc3QpCi0rCSAgICBzYXZlZF91bmRvX2xpc3QgPSAwOwotKwkgIC8qIFNl dCB1cCBybF9saW5lX2J1ZmZlciBhbmQgb3RoZXIgdmFyaWFibGVzIGZyb20gaGlzdG9yeSBlbnRy eSAqLwotKwkgIHJsX3JlcGxhY2VfZnJvbV9oaXN0b3J5IChlbnRyeSwgMCk7CS8qIGVudHJ5LT5s aW5lIGlzIG5vdyBjdXJyZW50ICovCi0rCSAgLyogVW5kbyBhbGwgY2hhbmdlcyB0byB0aGlzIGhp c3RvcnkgZW50cnkgKi8KLSsJICB3aGlsZSAocmxfdW5kb19saXN0KQotKwkgICAgcmxfZG9fdW5k byAoKTsKLSsJICAvKiBBbmQgY29weSB0aGUgcmV2ZXJ0ZWQgbGluZSBiYWNrIHRvIHRoZSBoaXN0 b3J5IGVudHJ5LCBwcmVzZXJ2aW5nCi0rCSAgICAgdGhlIHRpbWVzdGFtcC4gKi8KLSsJICBGUkVF IChlbnRyeS0+bGluZSk7Ci0rCSAgZW50cnktPmxpbmUgPSBzYXZlc3RyaW5nIChybF9saW5lX2J1 ZmZlcik7Ci0rCSAgZW50cnktPmRhdGEgPSAwOwotKwl9Ci0rICAgICAgZW50cnkgPSBwcmV2aW91 c19oaXN0b3J5ICgpOwotKyAgICB9Ci0rCi0rICAvKiBSZXN0b3JlIGhpc3Rvcnkgc3RhdGUgKi8K LSsgIHJsX3VuZG9fbGlzdCA9IHNhdmVkX3VuZG9fbGlzdDsJLyogbWF5IGhhdmUgYmVlbiBzZXQg dG8gbnVsbCAqLwotKyAgaGlzdG9yeV9zZXRfcG9zIChocG9zKTsKLSsgIAotKyAgLyogcmVzZXQg dGhlIGxpbmUgYnVmZmVyICovCi0rICBybF9yZXBsYWNlX2xpbmUgKGxidWYsIDApOwotKyAgX3Js X3NldF90aGVfbGluZSAoKTsKLSsKLSsgIC8qIGFuZCBjbGVhbiB1cCAqLwotKyAgeGZyZWUgKGxi dWYpOwotIH0gIAotIAotIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLUBAIC01NTYsNyArNjEwLDcgQEAgcmxfdmlf ZWRpdGluZ19tb2RlIChjb3VudCwga2V5KQotICNpZiBkZWZpbmVkIChWSV9NT0RFKQotICAgX3Js X3NldF9pbnNlcnRfbW9kZSAoUkxfSU1fSU5TRVJULCAxKTsJLyogdmkgbW9kZSBpZ25vcmVzIGlu c2VydCBtb2RlICovCi0gICBybF9lZGl0aW5nX21vZGUgPSB2aV9tb2RlOwotLSAgcmxfdmlfaW5z ZXJ0aW9uX21vZGUgKDEsIGtleSk7Ci0rICBybF92aV9pbnNlcnRfbW9kZSAoMSwga2V5KTsKLSAj ZW5kaWYgLyogVklfTU9ERSAqLwotIAotICAgcmV0dXJuIDA7Ci1JbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9yZWFkbGluZS9ubHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3 MDMub3JpZy9yZWFkbGluZS9ubHMuYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvbmxzLmMJMjAxMS0wNy0wMyAxMDo0 MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDI0ICsxLDI0IEBACi0gLyogbmxzLmMgLS0gc2tl bGV0YWwgaW50ZXJuYXRpb25hbGl6YXRpb24gY29kZS4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMp IDE5OTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAx OTk2LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCi0tICAg cmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3Rvcnkg ZWRpdGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJh cnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3 aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCi0gCi0tICAg VGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0Ci0tICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCi0rICAgUmVhZGxpbmUgaXMg ZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKLS0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5Ci0tICAgb2YgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAgaXMgZ2Vu ZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3Ug ZG8gbm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJv c3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBSZWFk bGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwot KwotICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQotIAotICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJ R19IKQotQEAgLTE0NSw3ICsxNDUsNyBAQCBfcmxfaW5pdF9laWdodGJpdCAoKQotIAlfcmxfb3V0 cHV0X21ldGFfY2hhcnMgPSAxOwotIAlicmVhazsKLSAgICAgICB9Ci0tICBmcmVlICh0KTsKLSsg IHhmcmVlICh0KTsKLSAgIHJldHVybiAobGVnYWxfbGFuZ192YWx1ZXNbaV0gPyAxIDogMCk7Ci0g Ci0gI2VuZGlmIC8qICFIQVZFX1NFVExPQ0FMRSAqLwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvcmVhZGxpbmUvcGFyZW5zLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAz Lm9yaWcvcmVhZGxpbmUvcGFyZW5zLmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3BhcmVucy5jCTIwMTEtMDctMDMg MTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNCArMSwyNCBAQAotLS8qIHBhcmVucy5j IC0tIEltcGxlbWVudGF0aW9uIG9mIG1hdGNoaW5nIHBhcmVudGhlc2VzIGZlYXR1cmUuICovCi0r LyogcGFyZW5zLmMgLS0gaW1wbGVtZW50YXRpb24gb2YgbWF0Y2hpbmcgcGFyZW50aGVzZXMgZmVh dHVyZS4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5ODcsIDE5ODksIDE5OTIgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAxOTg3LCAxOTg5LCAxOTky LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCi0tICAgcmVh ZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRp dGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkg KFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRo IGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCi0gCi0tICAgVGhl IEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0Ci0tICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCi0rICAgUmVhZGxpbmUgaXMgZnJl ZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKLS0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5Ci0tICAgb2YgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAgaXMgZ2VuZXJh bGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8g bm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rv biwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBSZWFkbGlu ZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotKwot ICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQotIAotICNpZiBkZWZpbmVkIChfX1RBTkRFTSkKLUBA IC0zOCwxNiArMzgsNyBAQAotICMgIGluY2x1ZGUgPHVuaXN0ZC5oPgotICNlbmRpZgotIAotLSNp ZiBkZWZpbmVkIChGRF9TRVQpICYmICFkZWZpbmVkIChIQVZFX1NFTEVDVCkKLS0jICBkZWZpbmUg SEFWRV9TRUxFQ1QKLS0jZW5kaWYKLS0KLS0jaWYgZGVmaW5lZCAoSEFWRV9TRUxFQ1QpCi0tIyAg aW5jbHVkZSA8c3lzL3RpbWUuaD4KLS0jZW5kaWYgLyogSEFWRV9TRUxFQ1QgKi8KLS0jaWYgZGVm aW5lZCAoSEFWRV9TWVNfU0VMRUNUX0gpCi0tIyAgaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgotLSNl bmRpZgotKyNpbmNsdWRlICJwb3NpeHNlbGVjdC5oIgotIAotICNpZiBkZWZpbmVkIChIQVZFX1NU UklOR19IKQotICMgIGluY2x1ZGUgPHN0cmluZy5oPgotQEAgLTEzMCw4ICsxMjEsNyBAQCBybF9p bnNlcnRfY2xvc2UgKGNvdW50LCBpbnZva2luZ19rZXkpCi0gCi0gICAgICAgRkRfWkVSTyAoJnJl YWRmZHMpOwotICAgICAgIEZEX1NFVCAoZmlsZW5vIChybF9pbnN0cmVhbSksICZyZWFkZmRzKTsK LS0gICAgICB0aW1lci50dl9zZWMgPSAwOwotLSAgICAgIHRpbWVyLnR2X3VzZWMgPSBfcGFyZW5f YmxpbmtfdXNlYzsKLSsgICAgICBVU0VDX1RPX1RJTUVWQUwgKF9wYXJlbl9ibGlua191c2VjLCB0 aW1lcik7Ci0gCi0gICAgICAgb3JpZ19wb2ludCA9IHJsX3BvaW50OwotICAgICAgIHJsX3BvaW50 ID0gbWF0Y2hfcG9pbnQ7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9wYXRj aGxldmVsCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAw MDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9wYXRjaGxldmVs CTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDMgQEAKLSsj IERvIG5vdCBlZGl0IC0tIGV4aXN0cyBvbmx5IGZvciB1c2UgYnkgcGF0Y2gKLSsKLSsxCi1JbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9wb3NpeGRpci5oCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3Bvc2l4ZGlyLmgJMjAxMS0wNy0w MyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRs aW5lL3Bvc2l4ZGlyLmgJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC00 LDE5ICs0LDE5IEBACi0gCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEJhc2gsIHRoZSBC b3VybmUgQWdhaW4gU0hlbGwuCi0gCi0tICAgQmFzaCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0tICAgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBv cHRpb24pCi0tICAgYW55IGxhdGVyIHZlcnNpb24uCi0tCi0tICAgQmFzaCBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAotLSAgIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5U QUJJTElUWQotLSAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMKLS0gICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAg QmFzaCBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgQmFzaCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0gICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LS0gICBhbG9uZyB3aXRoIEJhc2g7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0 ZSB0byB0aGUgRnJlZQotLSAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSwg U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBhbG9uZyB3aXRoIEJhc2gu ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAKLSAv KiBUaGlzIGZpbGUgc2hvdWxkIGJlIGluY2x1ZGVkIGluc3RlYWQgb2YgPGRpcmVudC5oPiBvciA8 c3lzL2Rpci5oPi4gKi8KLSAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3Bv c2l4am1wLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxp bmUvcG9zaXhqbXAuaAkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvcG9zaXhqbXAuaAkyMDExLTA3LTAzIDEwOjQxOjIx LjAwMDAwMDAwMCArMDIwMAotQEAgLTQsMTkgKzQsMTkgQEAKLSAKLSAgICBUaGlzIGZpbGUgaXMg cGFydCBvZiBHTlUgQmFzaCwgdGhlIEJvdXJuZSBBZ2FpbiBTSGVsbC4KLSAKLS0gICBCYXNoIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQK LS0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0K LS0gICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsIGJ1dCBXSVRIT1VUCi0tICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZCi0tICAgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotLSAgIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsgICBCYXNoIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBCYXNoIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSAKLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggQmFzaDsgc2VlIHRoZSBmaWxl IENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0tICAgU29mdHdhcmUgRm91bmRh dGlvbiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAq LwotKyAgIGFsb25nIHdpdGggQmFzaC4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KLSsqLwotIAotICNpZm5kZWYgX1BPU0lYSk1QX0hfCi0gI2RlZmluZSBfUE9T SVhKTVBfSF8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3Bvc2l4c2VsZWN0 LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3Bvc2l4c2VsZWN0LmgJ MjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNDcgQEAKLSsv KiBwb3NpeHNlbGVjdC5oIC0tIHdyYXBwZXIgZm9yIHNlbGVjdCgyKSBpbmNsdWRlcyBhbmQgZGVm aW5pdGlvbnMgKi8KLSsKLSsvKiBDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEJhc2gsIHRoZSBC b3VybmUgQWdhaW4gU0hlbGwuCi0rCi0rICAgQmFzaCBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgQmFz aCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIEJhc2guICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsKLSsjaWZuZGVmIF9Q T1NJWFNFTEVDVF9IXwotKyNkZWZpbmUgX1BPU0lYU0VMRUNUX0hfCi0rCi0rI2lmIGRlZmluZWQg KEZEX1NFVCkgJiYgIWRlZmluZWQgKEhBVkVfU0VMRUNUKQotKyMgIGRlZmluZSBIQVZFX1NFTEVD VCAxCi0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQgKEhBVkVfU0VMRUNUKQotKyMgIGlmICFkZWZp bmVkIChIQVZFX1NZU19TRUxFQ1RfSCkgfHwgIWRlZmluZWQgKE1fVU5JWCkKLSsjICAgIGluY2x1 ZGUgPHN5cy90aW1lLmg+Ci0rIyAgZW5kaWYKLSsjZW5kaWYgLyogSEFWRV9TRUxFQ1QgKi8KLSsj aWYgZGVmaW5lZCAoSEFWRV9TWVNfU0VMRUNUX0gpCi0rIyAgaW5jbHVkZSA8c3lzL3NlbGVjdC5o PgotKyNlbmRpZgotKwotKyNpZm5kZWYgVVNFQ19QRVJfU0VDCi0rIyAgZGVmaW5lIFVTRUNfUEVS X1NFQyAxMDAwMDAwCi0rI2VuZGlmCi0rCi0rI2RlZmluZSBVU0VDX1RPX1RJTUVWQUwodXMsIHR2 KSBcCi0rZG8geyBcCi0rICAodHYpLnR2X3NlYyA9ICh1cykgLyBVU0VDX1BFUl9TRUM7IFwKLSsg ICh0dikudHZfdXNlYyA9ICh1cykgJSBVU0VDX1BFUl9TRUM7IFwKLSt9IHdoaWxlICgwKQotKwot KyNlbmRpZiAvKiBfUE9TSVhTRUxFQ1RfSF8gKi8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L3JlYWRsaW5lL3Bvc2l4c3RhdC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcw My5vcmlnL3JlYWRsaW5lL3Bvc2l4c3RhdC5oCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9wb3NpeHN0YXQuaAkyMDEx LTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTUsMTkgKzUsMTkgQEAKLSAKLSAg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgQmFzaCwgdGhlIEJvdXJuZSBBZ2FpbiBTSGVsbC4K LSAKLS0gICBCYXNoIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkgaXQKLS0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0gICBhbnkgbGF0 ZXIgdmVyc2lvbi4KLS0KLS0gICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCi0tICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZCi0tICAgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YwotLSAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBCYXNoIGlzIGZyZWUgc29mdHdh cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSsKLSsgICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggQmFz aDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0tICAg U29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rvbiwg TUEgMDIxMTEgVVNBLiAqLwotKyAgIGFsb25nIHdpdGggQmFzaC4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotIC8qIFRoaXMgZmlsZSBzaG91bGQg YmUgaW5jbHVkZWQgaW5zdGVhZCBvZiA8c3lzL3N0YXQuaD4uCi0gICAgSXQgcmVsaWVzIG9uIHRo ZSBsb2NhbCBzeXMvc3RhdC5oIHRvIHdvcmsgdGhvdWdoLiAqLwotSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvcmVhZGxpbmUvcmVhZGxpbmUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAu MjAxMTA3MDMub3JpZy9yZWFkbGluZS9yZWFkbGluZS5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9yZWFkbGluZS5j CTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNSArMSwyNSBAQAot IC8qIHJlYWRsaW5lLmMgLS0gYSBnZW5lcmFsIGZhY2lsaXR5IGZvciByZWFkaW5nIGxpbmVzIG9m IGlucHV0Ci0gICAgd2l0aCBlbWFjcyBzdHlsZSBlZGl0aW5nIGFuZCBjb21wbGV0aW9uLiAqLwot IAotLS8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGli cmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVy YWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZv ciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9y eSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRs aW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0t ICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot ICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAg VGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUg c29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09Q WUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBs aWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRl bXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAK LSAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKLUBAIC00OSw2ICs0OSwxMSBAQAotIAotICNp bmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlICJwb3NpeGptcC5oIgotKyNpbmNsdWRlIDxlcnJu by5oPgotKwotKyNpZiAhZGVmaW5lZCAoZXJybm8pCi0rZXh0ZXJuIGludCBlcnJubzsKLSsjZW5k aWYgLyogIWVycm5vICovCi0gCi0gLyogU3lzdGVtLXNwZWNpZmljIGZlYXR1cmUgZGVmaW5pdGlv bnMgYW5kIGluY2x1ZGUgZmlsZXMuICovCi0gI2luY2x1ZGUgInJsZGVmcy5oIgotQEAgLTE1OCw3 ICsxNjMsNyBAQCBpbnQgcmxfZG9uZTsKLSBybF9jb21tYW5kX2Z1bmNfdCAqcmxfbGFzdF9mdW5j ID0gKHJsX2NvbW1hbmRfZnVuY190ICopTlVMTDsKLSAKLSAvKiBUb3AgbGV2ZWwgZW52aXJvbm1l bnQgZm9yIHJlYWRsaW5lX2ludGVybmFsICgpLiAqLwotLXByb2NlbnZfdCByZWFkbGluZV90b3Bf bGV2ZWw7Ci0rcHJvY2Vudl90IF9ybF90b3BfbGV2ZWw7Ci0gCi0gLyogVGhlIHN0cmVhbXMgd2Ug aW50ZXJhY3Qgd2l0aC4gKi8KLSBGSUxFICpfcmxfaW5fc3RyZWFtLCAqX3JsX291dF9zdHJlYW07 Ci1AQCAtMTcxLDcgKzE3Niw3IEBAIEZJTEUgKnJsX291dHN0cmVhbSA9IChGSUxFICopTlVMTDsK LSAgICBzZXQgdG8gMSBpZiB0aGVyZSBpcyBhIGNvbnRyb2xsaW5nIHRlcm1pbmFsLCB3ZSBjYW4g Z2V0IGl0cyBhdHRyaWJ1dGVzLAotICAgIGFuZCB0aGUgYXR0cmlidXRlcyBpbmNsdWRlIGBlY2hv Jy4gIExvb2sgYXQgcmx0dHkuYzpwcmVwYXJlX3Rlcm1pbmFsX3NldHRpbmdzCi0gICAgZm9yIHRo ZSBjb2RlIHRoYXQgc2V0cyBpdC4gKi8KLS1pbnQgcmVhZGxpbmVfZWNob2luZ19wID0gMDsKLStp bnQgX3JsX2VjaG9pbmdfcCA9IDA7Ci0gCi0gLyogQ3VycmVudCBwcm9tcHQuICovCi0gY2hhciAq cmxfcHJvbXB0ID0gKGNoYXIgKilOVUxMOwotQEAgLTI2NSw2ICsyNzAsMTUgQEAgaW50IF9ybF9v dXRwdXRfbWV0YV9jaGFycyA9IDA7Ci0gICAgdGhlbSB0byBlcXVpdmFsZW50IHJlYWRsaW5lIGZ1 bmN0aW9ucyBhdCBzdGFydHVwLiAqLwotIGludCBfcmxfYmluZF9zdHR5X2NoYXJzID0gMTsKLSAK LSsvKiBOb24temVybyBtZWFucyB0byBnbyB0aHJvdWdoIHRoZSBoaXN0b3J5IGxpc3QgYXQgZXZl cnkgbmV3bGluZSAob3IKLSsgICB3aGVuZXZlciBybF9kb25lIGlzIHNldCBhbmQgcmVhZGxpbmUg cmV0dXJucykgYW5kIHJldmVydCBlYWNoIGxpbmUgdG8KLSsgICBpdHMgaW5pdGlhbCBzdGF0ZS4g Ki8KLStpbnQgX3JsX3JldmVydF9hbGxfYXRfbmV3bGluZSA9IDA7Ci0rCi0rLyogTm9uLXplcm8g bWVhbnMgdG8gaG9ub3IgdGhlIHRlcm1pb3MgRUNIT0NUTCBiaXQgYW5kIGVjaG8gY29udHJvbAot KyAgIGNoYXJhY3RlcnMgY29ycmVzcG9uZGluZyB0byBrZXlib2FyZC1nZW5lcmF0ZWQgc2lnbmFs cy4gKi8KLStpbnQgX3JsX2VjaG9fY29udHJvbF9jaGFycyA9IDE7Ci0rCi0gLyogKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAq LwotIC8qCQkJCQkJCQkgICAgKi8KLSAvKgkJCVRvcCBMZXZlbCBGdW5jdGlvbnMJCQkgICAgKi8K LUBAIC0yOTUsNiArMzA5LDkgQEAgcmVhZGxpbmUgKHByb21wdCkKLSAgICAgIGNvbnN0IGNoYXIg KnByb21wdDsKLSB7Ci0gICBjaGFyICp2YWx1ZTsKLSsjaWYgMAotKyAgaW50IGluX2NhbGxiYWNr OwotKyNlbmRpZgotIAotICAgLyogSWYgd2UgYXJlIGF0IEVPRiByZXR1cm4gYSBOVUxMIHN0cmlu Zy4gKi8KLSAgIGlmIChybF9wZW5kaW5nX2lucHV0ID09IEVPRikKLUBAIC0zMDMsNiArMzIwLDE1 IEBAIHJlYWRsaW5lIChwcm9tcHQpCi0gICAgICAgcmV0dXJuICgoY2hhciAqKU5VTEwpOwotICAg ICB9Ci0gCi0rI2lmIDAKLSsgIC8qIElmIHJlYWRsaW5lKCkgaXMgY2FsbGVkIGFmdGVyIGluc3Rh bGxpbmcgYSBjYWxsYmFjayBoYW5kbGVyLCB0ZW1wb3JhcmlseQotKyAgICAgdHVybiBvZmYgdGhl IGNhbGxiYWNrIHN0YXRlIHRvIGF2b2lkIGVuc3VpbmcgbWVzc2luZXNzLiAgUGF0Y2ggc3VwcGxp ZWQKLSsgICAgIGJ5IHRoZSBnZGIgZm9sa3MuICBYWFggLS0gZGlzYWJsZWQuICBUaGlzIGNhbiBi ZSBmb29sZWQgYW5kIHJlYWRsaW5lCi0rICAgICBsZWZ0IGluIGEgc3RyYW5nZSBzdGF0ZSBieSBh IHBvb3JseS10aW1lZCBsb25nam1wLiAqLwotKyAgaWYgKGluX2NhbGxiYWNrID0gUkxfSVNTVEFU RSAoUkxfU1RBVEVfQ0FMTEJBQ0spKQotKyAgICBSTF9VTlNFVFNUQVRFIChSTF9TVEFURV9DQUxM QkFDSyk7Ci0rI2VuZGlmCi0rCi0gICBybF9zZXRfcHJvbXB0IChwcm9tcHQpOwotIAotICAgcmxf aW5pdGlhbGl6ZSAoKTsKLUBAIC0zMjEsNiArMzQ3LDExIEBAIHJlYWRsaW5lIChwcm9tcHQpCi0g ICBybF9jbGVhcl9zaWduYWxzICgpOwotICNlbmRpZgotIAotKyNpZiAwCi0rICBpZiAoaW5fY2Fs bGJhY2spCi0rICAgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9DQUxMQkFDSyk7Ci0rI2VuZGlmCi0r Ci0gICByZXR1cm4gKHZhbHVlKTsKLSB9Ci0gCi1AQCAtMzQ0LDE0ICszNzUsMTQgQEAgcmVhZGxp bmVfaW50ZXJuYWxfc2V0dXAgKCkKLSAgIC8qIElmIHdlJ3JlIG5vdCBlY2hvaW5nLCB3ZSBzdGls bCB3YW50IHRvIGF0IGxlYXN0IHByaW50IGEgcHJvbXB0LCBiZWNhdXNlCi0gICAgICBybF9yZWRp c3BsYXkgd2lsbCBub3QgZG8gaXQgZm9yIHVzLiAgSWYgdGhlIGNhbGxpbmcgYXBwbGljYXRpb24g aGFzIGEKLSAgICAgIGN1c3RvbSByZWRpc3BsYXkgZnVuY3Rpb24sIHRob3VnaCwgbGV0IHRoYXQg ZnVuY3Rpb24gaGFuZGxlIGl0LiAqLwotLSAgaWYgKHJlYWRsaW5lX2VjaG9pbmdfcCA9PSAwICYm IHJsX3JlZGlzcGxheV9mdW5jdGlvbiA9PSBybF9yZWRpc3BsYXkpCi0rICBpZiAoX3JsX2VjaG9p bmdfcCA9PSAwICYmIHJsX3JlZGlzcGxheV9mdW5jdGlvbiA9PSBybF9yZWRpc3BsYXkpCi0gICAg IHsKLSAgICAgICBpZiAocmxfcHJvbXB0ICYmIHJsX2FscmVhZHlfcHJvbXB0ZWQgPT0gMCkKLSAJ ewotIAkgIG5wcm9tcHQgPSBfcmxfc3RyaXBfcHJvbXB0IChybF9wcm9tcHQpOwotIAkgIGZwcmlu dGYgKF9ybF9vdXRfc3RyZWFtLCAiJXMiLCBucHJvbXB0KTsKLSAJICBmZmx1c2ggKF9ybF9vdXRf c3RyZWFtKTsKLS0JICBmcmVlIChucHJvbXB0KTsKLSsJICB4ZnJlZSAobnByb21wdCk7Ci0gCX0K LSAgICAgfQotICAgZWxzZQotQEAgLTM2NSwxMSArMzk2LDEzIEBAIHJlYWRsaW5lX2ludGVybmFs X3NldHVwICgpCi0gCi0gI2lmIGRlZmluZWQgKFZJX01PREUpCi0gICBpZiAocmxfZWRpdGluZ19t b2RlID09IHZpX21vZGUpCi0tICAgIHJsX3ZpX2luc2VydGlvbl9tb2RlICgxLCAnaScpOwotKyAg ICBybF92aV9pbnNlcnRfbW9kZSAoMSwgJ2knKTsKLSAjZW5kaWYgLyogVklfTU9ERSAqLwotIAot ICAgaWYgKHJsX3ByZV9pbnB1dF9ob29rKQotICAgICAoKnJsX3ByZV9pbnB1dF9ob29rKSAoKTsK LSsKLSsgIFJMX0NIRUNLX1NJR05BTFMgKCk7Ci0gfQotIAotIFNUQVRJQ19DQUxMQkFDSyBjaGFy ICoKLUBAIC0zNzksNiArNDEyLDggQEAgcmVhZGxpbmVfaW50ZXJuYWxfdGVhcmRvd24gKGVvZikK LSAgIGNoYXIgKnRlbXA7Ci0gICBISVNUX0VOVFJZICplbnRyeTsKLSAKLSsgIFJMX0NIRUNLX1NJ R05BTFMgKCk7Ci0rCi0gICAvKiBSZXN0b3JlIHRoZSBvcmlnaW5hbCBvZiB0aGlzIGhpc3Rvcnkg bGluZSwgaWZmIHRoZSBsaW5lIHRoYXQgd2UKLSAgICAgIGFyZSBlZGl0aW5nIHdhcyBvcmlnaW5h bGx5IGluIHRoZSBoaXN0b3J5LCBBTkQgdGhlIGxpbmUgaGFzIGNoYW5nZWQuICovCi0gICBlbnRy eSA9IGN1cnJlbnRfaGlzdG9yeSAoKTsKLUBAIC0zOTEsOSArNDI2LDEyIEBAIHJlYWRsaW5lX2lu dGVybmFsX3RlYXJkb3duIChlb2YpCi0gICAgICAgX3JsX2ZyZWVfaGlzdG9yeV9lbnRyeSAoZW50 cnkpOwotIAotICAgICAgIHN0cmNweSAodGhlX2xpbmUsIHRlbXApOwotLSAgICAgIGZyZWUgKHRl bXApOwotKyAgICAgIHhmcmVlICh0ZW1wKTsKLSAgICAgfQotIAotKyAgaWYgKF9ybF9yZXZlcnRf YWxsX2F0X25ld2xpbmUpCi0rICAgIF9ybF9yZXZlcnRfYWxsX2xpbmVzICgpOwotKwotICAgLyog QXQgYW55IHJhdGUsIGl0IGlzIGhpZ2hseSBsaWtlbHkgdGhhdCB0aGlzIGxpbmUgaGFzIGFuIHVu ZG8gbGlzdC4gIEdldAotICAgICAgcmlkIG9mIGl0IG5vdy4gKi8KLSAgIGlmIChybF91bmRvX2xp c3QpCi1AQCAtNDU0LDcgKzQ5Miw3IEBAIHJlYWRsaW5lX2ludGVybmFsX2NoYXJsb29wICgpCi0g I2VuZGlmCi0gICAgICAgbGsgPSBfcmxfbGFzdF9jb21tYW5kX3dhc19raWxsOwotIAotLSAgICAg IGNvZGUgPSBzZXRqbXAgKHJlYWRsaW5lX3RvcF9sZXZlbCk7Ci0rICAgICAgY29kZSA9IHNldGpt cCAoX3JsX3RvcF9sZXZlbCk7Ci0gCi0gICAgICAgaWYgKGNvZGUpCi0gCXsKLUBAIC00NjIsNyAr NTAwLDcgQEAgcmVhZGxpbmVfaW50ZXJuYWxfY2hhcmxvb3AgKCkKLSAJICBfcmxfd2FudF9yZWRp c3BsYXkgPSAwOwotIAkgIC8qIElmIHdlIGdldCBoZXJlLCB3ZSdyZSBub3QgYmVpbmcgY2FsbGVk IGZyb20gc29tZXRoaW5nIGRpc3BhdGNoZWQKLSAJICAgICBmcm9tIF9ybF9jYWxsYmFja19yZWFk X2NoYXIoKSwgd2hpY2ggc2V0cyB1cCBpdHMgb3duIHZhbHVlIG9mCi0tCSAgICAgcmVhZGxpbmVf dG9wX2xldmVsIChzYXZpbmcgYW5kIHJlc3RvcmluZyB0aGUgb2xkLCBvZiBjb3Vyc2UpLCBzbwot KwkgICAgIF9ybF90b3BfbGV2ZWwgKHNhdmluZyBhbmQgcmVzdG9yaW5nIHRoZSBvbGQsIG9mIGNv dXJzZSksIHNvCi0gCSAgICAgd2UgY2FuIGp1c3QgcmV0dXJuIGhlcmUuICovCi0gCSAgaWYgKFJM X0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSkKLSAJICAgIHJldHVybiAoMCk7Ci1AQCAtNDc5 LDYgKzUxNywyMCBAQCByZWFkbGluZV9pbnRlcm5hbF9jaGFybG9vcCAoKQotICAgICAgIGMgPSBy bF9yZWFkX2tleSAoKTsKLSAgICAgICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX1JFQURDTUQpOwot IAotKyAgICAgIC8qIGxvb2sgYXQgaW5wdXQuYzpybF9nZXRjKCkgZm9yIHRoZSBjaXJjdW1zdGFu Y2VzIHVuZGVyIHdoaWNoIHRoaXMgd2lsbAotKwkgYmUgcmV0dXJuZWQ7IHB1bnQgaW1tZWRpYXRl bHkgb24gcmVhZCBlcnJvciB3aXRob3V0IGNvbnZlcnRpbmcgaXQgdG8KLSsJIGEgbmV3bGluZS4g Ki8KLSsgICAgICBpZiAoYyA9PSBSRUFERVJSKQotKwl7Ci0rI2lmIGRlZmluZWQgKFJFQURMSU5F X0NBTExCQUNLUykKLSsJICBSTF9TRVRTVEFURShSTF9TVEFURV9ET05FKTsKLSsJICByZXR1cm4g KHJsX2RvbmUgPSAxKTsKLSsjZWxzZQotKwkgIGVvZl9mb3VuZCA9IDE7Ci0rCSAgYnJlYWs7Ci0r I2VuZGlmCi0rCX0KLSsKLSAgICAgICAvKiBFT0YgdHlwZWQgdG8gYSBub24tYmxhbmsgbGluZSBp cyBhIDxOTD4uICovCi0gICAgICAgaWYgKGMgPT0gRU9GICYmIHJsX2VuZCkKLSAJYyA9IE5FV0xJ TkU7Ci1AQCAtNDk4LDYgKzU1MCw3IEBAIHJlYWRsaW5lX2ludGVybmFsX2NoYXJsb29wICgpCi0g Ci0gICAgICAgbGFzdGMgPSBjOwotICAgICAgIF9ybF9kaXNwYXRjaCAoKHVuc2lnbmVkIGNoYXIp YywgX3JsX2tleW1hcCk7Ci0rICAgICAgUkxfQ0hFQ0tfU0lHTkFMUyAoKTsKLSAKLSAgICAgICAv KiBJZiB0aGVyZSB3YXMgbm8gY2hhbmdlIGluIF9ybF9sYXN0X2NvbW1hbmRfd2FzX2tpbGwsIHRo ZW4gbm8ga2lsbAotIAkgaGFzIHRha2VuIHBsYWNlLiAgTm90ZSB0aGF0IGlmIGlucHV0IGlzIHBl bmRpbmcgd2UgYXJlIHJlYWRpbmcKLUBAIC01NzYsNyArNjI5LDcgQEAgdm9pZAotIF9ybF9rZXlz ZXFfY3h0X2Rpc3Bvc2UgKGN4dCkKLSAgICAgX3JsX2tleXNlcV9jeHQgKmN4dDsKLSB7Ci0tICBm cmVlIChjeHQpOwotKyAgeGZyZWUgKGN4dCk7Ci0gfQotIAotIHZvaWQKLUBAIC02MTgsNyArNjcx LDYgQEAgX3JsX2Rpc3BhdGNoX2NhbGxiYWNrIChjeHQpCi0gICBpbnQgbmtleSwgcjsKLSAKLSAg IC8qIEZvciBub3cgKi8KLS0jaWYgMQotICAgLyogVGhlIGZpcnN0IHRpbWUgdGhpcyBjb250ZXh0 IGlzIHVzZWQsIHdlIHdhbnQgdG8gcmVhZCBpbnB1dCBhbmQgZGlzcGF0Y2gKLSAgICAgIG9uIGl0 LiAgV2hlbiB0cmF2ZXJzaW5nIHRoZSBjaGFpbiBvZiBjb250ZXh0cyBiYWNrIGB1cCcsIHdlIHdh bnQgdG8gdXNlCi0gICAgICB0aGUgdmFsdWUgZnJvbSB0aGUgbmV4dCBjb250ZXh0IGRvd24uICBX ZSdyZSBzaW11bGF0aW5nIHJlY3Vyc2lvbiB1c2luZwotQEAgLTYyNiwxOCArNjc4LDIyIEBAIF9y bF9kaXNwYXRjaF9jYWxsYmFjayAoY3h0KQotICAgaWYgKChjeHQtPmZsYWdzICYgS1NFUV9ESVNQ QVRDSEVEKSA9PSAwKQotICAgICB7Ci0gICAgICAgbmtleSA9IF9ybF9zdWJzZXFfZ2V0Y2hhciAo Y3h0LT5va2V5KTsKLSsgICAgICBpZiAobmtleSA8IDApCi0rCXsKLSsJICBfcmxfYWJvcnRfaW50 ZXJuYWwgKCk7Ci0rCSAgcmV0dXJuIC0xOwotKwl9Ci0gICAgICAgciA9IF9ybF9kaXNwYXRjaF9z dWJzZXEgKG5rZXksIGN4dC0+ZG1hcCwgY3h0LT5zdWJzZXFfYXJnKTsKLSAgICAgICBjeHQtPmZs YWdzIHw9IEtTRVFfRElTUEFUQ0hFRDsKLSAgICAgfQotICAgZWxzZQotICAgICByID0gY3h0LT5j aGlsZHZhbDsKLS0jZWxzZQotLSAgciA9IF9ybF9kaXNwYXRjaF9zdWJzZXEgKG5rZXksIGN4dC0+ ZG1hcCwgY3h0LT5zdWJzZXFfYXJnKTsKLS0jZW5kaWYKLSAKLSAgIC8qIEZvciBub3cgKi8KLS0g IHIgPSBfcmxfc3Vic2VxX3Jlc3VsdCAociwgY3h0LT5vbGRtYXAsIGN4dC0+b2tleSwgKGN4dC0+ ZmxhZ3MgJiBLU0VRX1NVQlNFUSkpOwotKyAgaWYgKHIgIT0gLTMpCS8qIGRvbid0IGRvIHRoaXMg aWYgd2UgaW5kaWNhdGUgdGhlcmUgd2lsbCBiZSBvdGhlciBtYXRjaGVzICovCi0rICAgIHIgPSBf cmxfc3Vic2VxX3Jlc3VsdCAociwgY3h0LT5vbGRtYXAsIGN4dC0+b2tleSwgKGN4dC0+ZmxhZ3Mg JiBLU0VRX1NVQlNFUSkpOwotIAotKyAgUkxfQ0hFQ0tfU0lHTkFMUyAoKTsKLSAgIGlmIChyID09 IDApCQkJLyogc3VjY2VzcyEgKi8KLSAgICAgewotICAgICAgIF9ybF9rZXlzZXFfY2hhaW5fZGlz cG9zZSAoKTsKLUBAIC03MjQsNiArNzgwLDggQEAgX3JsX2Rpc3BhdGNoX3N1YnNlcSAoa2V5LCBt YXAsIGdvdF9zdWJzZQotIAkgICAgIHJlbWVtYmVyIHRoZSBsYXN0IGNvbW1hbmQgZXhlY3V0ZWQg aW4gdGhpcyB2YXJpYWJsZS4gKi8KLSAJICBpZiAocmxfcGVuZGluZ19pbnB1dCA9PSAwICYmIG1h cFtrZXldLmZ1bmN0aW9uICE9IHJsX2RpZ2l0X2FyZ3VtZW50KQotIAkgICAgcmxfbGFzdF9mdW5j ID0gbWFwW2tleV0uZnVuY3Rpb247Ci0rCi0rCSAgUkxfQ0hFQ0tfU0lHTkFMUyAoKTsKLSAJfQot ICAgICAgIGVsc2UgaWYgKG1hcFtBTllPVEhFUktFWV0uZnVuY3Rpb24pCi0gCXsKLUBAIC03Nzgs NyArODM2LDcgQEAgX3JsX2Rpc3BhdGNoX3N1YnNlcSAoa2V5LCBtYXAsIGdvdF9zdWJzZQotIAkg ICAgewotIAkgICAgICAvKiBSZXR1cm4gMCBvbmx5IHRoZSBmaXJzdCB0aW1lLCB0byBpbmRpY2F0 ZSBzdWNjZXNzIHRvCi0gCQkgX3JsX2NhbGxiYWNrX3JlYWRfY2hhci4gIFRoZSByZXN0IG9mIHRo ZSB0aW1lLCB3ZSdyZSBjYWxsZWQKLS0JCSBmcm9tIF9ybF9kaXNwYXRjaF9jYWxsYmFjaywgc28g d2UgcmV0dXJuIDMgdG8gaW5kaWNhdGUKLSsJCSBmcm9tIF9ybF9kaXNwYXRjaF9jYWxsYmFjaywg c28gd2UgcmV0dXJuIC0zIHRvIGluZGljYXRlCi0gCQkgc3BlY2lhbCBoYW5kbGluZyBpcyBuZWNl c3NhcnkuICovCi0gCSAgICAgIHIgPSBSTF9JU1NUQVRFIChSTF9TVEFURV9NVUxUSUtFWSkgPyAt MyA6IDA7Ci0gCSAgICAgIGN4dCA9IF9ybF9rZXlzZXFfY3h0X2FsbG9jICgpOwotQEAgLTg0Miw3 ICs5MDAsNyBAQCBfcmxfc3Vic2VxX3Jlc3VsdCAociwgbWFwLCBrZXksIGdvdF9zdWJzCi0gICBL ZXltYXAgbTsKLSAgIGludCB0eXBlLCBudDsKLSAgIHJsX2NvbW1hbmRfZnVuY190ICpmdW5jLCAq bmY7Ci0tICAKLSsKLSAgIGlmIChyID09IC0yKQotICAgICAvKiBXZSBkaWRuJ3QgbWF0Y2ggYW55 dGhpbmcsIGFuZCB0aGUga2V5bWFwIHdlJ3JlIGluZGV4ZWQgaW50bwotICAgICAgICBzaGFkb3dl ZCBhIGZ1bmN0aW9uIHByZXZpb3VzbHkgYm91bmQgdG8gdGhhdCBwcmVmaXguICBDYWxsCi1AQCAt MTExNiw2ICsxMTc0LDEwIEBAIGJpbmRfYXJyb3dfa2V5cyAoKQotIAotICNpZiBkZWZpbmVkIChW SV9NT0RFKQotICAgYmluZF9hcnJvd19rZXlzX2ludGVybmFsICh2aV9tb3ZlbWVudF9rZXltYXAp OwotKyAgLyogVW5iaW5kIHZpX21vdmVtZW50X2tleW1hcFtFU0NdIHRvIGFsbG93IHVzZXJzIHRv IHJlcGVhdGVkbHkgaGl0IEVTQwotKyAgICAgaW4gdmkgY29tbWFuZCBtb2RlIHdoaWxlIHN0aWxs IGFsbG93aW5nIHRoZSBhcnJvdyBrZXlzIHRvIHdvcmsuICovCi0rICBpZiAodmlfbW92ZW1lbnRf a2V5bWFwW0VTQ10udHlwZSA9PSBJU0tNQVApCi0rICAgIHJsX2JpbmRfa2V5c2VxX2luX21hcCAo IlwwMzMiLCAocmxfY29tbWFuZF9mdW5jX3QgKilOVUxMLCB2aV9tb3ZlbWVudF9rZXltYXApOwot ICAgYmluZF9hcnJvd19rZXlzX2ludGVybmFsICh2aV9pbnNlcnRpb25fa2V5bWFwKTsKLSAjZW5k aWYKLSB9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9yZWFkbGluZS5oCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3JlYWRsaW5l LmgJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIw MTEwNzAzL3JlYWRsaW5lL3JlYWRsaW5lLmgJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAg KzAyMDAKLUBAIC0xLDI0ICsxLDIzIEBACi0gLyogUmVhZGxpbmUuaCAtLSB0aGUgbmFtZXMgb2Yg ZnVuY3Rpb25zIGNhbGxhYmxlIGZyb20gd2l0aGluIHJlYWRsaW5lLiAqLwotIAotLS8qIENvcHly aWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENv cHlyaWdodCAoQykgMTk4Ny0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAot LSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJy YXJ5IGZvcgotLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0 IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBS ZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxp bmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAg ICAgIAotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAg IFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFu ZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNF TlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwg U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFs b25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCi0rKi8KLSAKLSAjaWYgIWRlZmluZWQgKF9SRUFETElORV9IXykKLSAjZGVmaW5lIF9S RUFETElORV9IXwotQEAgLTQwLDkgKzM5LDkgQEAgZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi0gCi0g LyogSGV4LWVuY29kZWQgUmVhZGxpbmUgdmVyc2lvbiBudW1iZXIuICovCi0tI2RlZmluZSBSTF9S RUFETElORV9WRVJTSU9OCTB4MDUwMQkJLyogUmVhZGxpbmUgNS4xICovCi0tI2RlZmluZSBSTF9W RVJTSU9OX01BSk9SCTUKLS0jZGVmaW5lIFJMX1ZFUlNJT05fTUlOT1IJMQotKyNkZWZpbmUgUkxf UkVBRExJTkVfVkVSU0lPTgkweDA2MDIJCS8qIFJlYWRsaW5lIDYuMiAqLwotKyNkZWZpbmUgUkxf VkVSU0lPTl9NQUpPUgk2Ci0rI2RlZmluZSBSTF9WRVJTSU9OX01JTk9SCTIKLSAKLSAvKiBSZWFk bGluZSBkYXRhIHN0cnVjdHVyZXMuICovCi0gCi1AQCAtOTYsNiArOTUsNyBAQCBleHRlcm4gaW50 IHJsX2ZvcndhcmRfd29yZCBQQVJBTVMoKGludCwgCi0gZXh0ZXJuIGludCBybF9iYWNrd2FyZF93 b3JkIFBBUkFNUygoaW50LCBpbnQpKTsKLSBleHRlcm4gaW50IHJsX3JlZnJlc2hfbGluZSBQQVJB TVMoKGludCwgaW50KSk7Ci0gZXh0ZXJuIGludCBybF9jbGVhcl9zY3JlZW4gUEFSQU1TKChpbnQs IGludCkpOwotK2V4dGVybiBpbnQgcmxfc2tpcF9jc2lfc2VxdWVuY2UgUEFSQU1TKChpbnQsIGlu dCkpOwotIGV4dGVybiBpbnQgcmxfYXJyb3dfa2V5cyBQQVJBTVMoKGludCwgaW50KSk7Ci0gCi0g LyogQmluZGFibGUgY29tbWFuZHMgZm9yIGluc2VydGluZyBhbmQgZGVsZXRpbmcgdGV4dC4gKi8K LUBAIC0xNTEsNyArMTUxLDkgQEAgZXh0ZXJuIGludCBybF9kdW1wX3ZhcmlhYmxlcyBQQVJBTVMo KGludAotIGV4dGVybiBpbnQgcmxfY29tcGxldGUgUEFSQU1TKChpbnQsIGludCkpOwotIGV4dGVy biBpbnQgcmxfcG9zc2libGVfY29tcGxldGlvbnMgUEFSQU1TKChpbnQsIGludCkpOwotIGV4dGVy biBpbnQgcmxfaW5zZXJ0X2NvbXBsZXRpb25zIFBBUkFNUygoaW50LCBpbnQpKTsKLStleHRlcm4g aW50IHJsX29sZF9tZW51X2NvbXBsZXRlIFBBUkFNUygoaW50LCBpbnQpKTsKLSBleHRlcm4gaW50 IHJsX21lbnVfY29tcGxldGUgUEFSQU1TKChpbnQsIGludCkpOwotK2V4dGVybiBpbnQgcmxfYmFj a3dhcmRfbWVudV9jb21wbGV0ZSBQQVJBTVMoKGludCwgaW50KSk7Ci0gCi0gLyogQmluZGFibGUg Y29tbWFuZHMgZm9yIGtpbGxpbmcgYW5kIHlhbmtpbmcgdGV4dCwgYW5kIG1hbmFnaW5nIHRoZSBr aWxsIHJpbmcuICovCi0gZXh0ZXJuIGludCBybF9raWxsX3dvcmQgUEFSQU1TKChpbnQsIGludCkp OwotQEAgLTIzMyw2ICsyMzUsNyBAQCBleHRlcm4gaW50IHJsX3ZpX2FwcGVuZF9tb2RlIFBBUkFN UygoaW50Ci0gZXh0ZXJuIGludCBybF92aV9hcHBlbmRfZW9sIFBBUkFNUygoaW50LCBpbnQpKTsK LSBleHRlcm4gaW50IHJsX3ZpX2VvZl9tYXliZSBQQVJBTVMoKGludCwgaW50KSk7Ci0gZXh0ZXJu IGludCBybF92aV9pbnNlcnRpb25fbW9kZSBQQVJBTVMoKGludCwgaW50KSk7Ci0rZXh0ZXJuIGlu dCBybF92aV9pbnNlcnRfbW9kZSBQQVJBTVMoKGludCwgaW50KSk7Ci0gZXh0ZXJuIGludCBybF92 aV9tb3ZlbWVudF9tb2RlIFBBUkFNUygoaW50LCBpbnQpKTsKLSBleHRlcm4gaW50IHJsX3ZpX2Fy Z19kaWdpdCBQQVJBTVMoKGludCwgaW50KSk7Ci0gZXh0ZXJuIGludCBybF92aV9jaGFuZ2VfY2Fz ZSBQQVJBTVMoKGludCwgaW50KSk7Ci1AQCAtNDIwLDYgKzQyMyw3IEBAIGV4dGVybiBpbnQgcmxf c2V0X2tleWJvYXJkX2lucHV0X3RpbWVvdXQKLSBleHRlcm4gdm9pZCBybF9leHRlbmRfbGluZV9i dWZmZXIgUEFSQU1TKChpbnQpKTsKLSBleHRlcm4gaW50IHJsX2RpbmcgUEFSQU1TKCh2b2lkKSk7 Ci0gZXh0ZXJuIGludCBybF9hbHBoYWJldGljIFBBUkFNUygoaW50KSk7Ci0rZXh0ZXJuIHZvaWQg cmxfZnJlZSBQQVJBTVMoKHZvaWQgKikpOwotIAotIC8qIFJlYWRsaW5lIHNpZ25hbCBoYW5kbGlu ZywgZnJvbSBzaWduYWxzLmMgKi8KLSBleHRlcm4gaW50IHJsX3NldF9zaWduYWxzIFBBUkFNUygo dm9pZCkpOwotQEAgLTQyNyw3ICs0MzEsOSBAQCBleHRlcm4gaW50IHJsX2NsZWFyX3NpZ25hbHMg UEFSQU1TKCh2b2lkCi0gZXh0ZXJuIHZvaWQgcmxfY2xlYW51cF9hZnRlcl9zaWduYWwgUEFSQU1T KCh2b2lkKSk7Ci0gZXh0ZXJuIHZvaWQgcmxfcmVzZXRfYWZ0ZXJfc2lnbmFsIFBBUkFNUygodm9p ZCkpOwotIGV4dGVybiB2b2lkIHJsX2ZyZWVfbGluZV9zdGF0ZSBQQVJBTVMoKHZvaWQpKTsKLS0g Ci0rCi0rZXh0ZXJuIHZvaWQgcmxfZWNob19zaWduYWxfY2hhciBQQVJBTVMoKGludCkpOyAKLSsK LSBleHRlcm4gaW50IHJsX3NldF9wYXJlbl9ibGlua190aW1lb3V0IFBBUkFNUygoaW50KSk7Ci0g Ci0gLyogVW5kb2N1bWVudGVkLiAqLwotQEAgLTQ5Myw2ICs0OTksMTAgQEAgZXh0ZXJuIGNvbnN0 IGNoYXIgKnJsX3JlYWRsaW5lX25hbWU7Ci0gICAgcmVhZGxpbmUgKCksIGFuZCBzaG91bGQgbm90 IGJlIGFzc2lnbmVkIHRvIGRpcmVjdGx5LiAqLwotIGV4dGVybiBjaGFyICpybF9wcm9tcHQ7Ci0g Ci0rLyogVGhlIHByb21wdCBzdHJpbmcgdGhhdCBpcyBhY3R1YWxseSBkaXNwbGF5ZWQgYnkgcmxf cmVkaXNwbGF5LiAgUHVibGljIHNvCi0rICAgYXBwbGljYXRpb25zIGNhbiBtb3JlIGVhc2lseSBz dXBwbHkgdGhlaXIgb3duIHJlZGlzcGxheSBmdW5jdGlvbnMuICovCi0rZXh0ZXJuIGNoYXIgKnJs X2Rpc3BsYXlfcHJvbXB0OwotKwotIC8qIFRoZSBsaW5lIGJ1ZmZlciB0aGF0IGlzIGluIHVzZS4g Ki8KLSBleHRlcm4gY2hhciAqcmxfbGluZV9idWZmZXI7Ci0gCi1AQCAtNTk5LDYgKzYwOSwxMCBA QCBleHRlcm4gaW50IHJsX2NhdGNoX3NpZ3dpbmNoOwotICAgIGZpbGVuYW1lIGNvbXBsZXRlci4g Ki8KLSBleHRlcm4gcmxfY29tcGVudHJ5X2Z1bmNfdCAqcmxfY29tcGxldGlvbl9lbnRyeV9mdW5j dGlvbjsKLSAKLSsvKiBPcHRpb25hbCBnZW5lcmF0b3IgZm9yIG1lbnUgY29tcGxldGlvbi4gIERl ZmF1bHQgaXMKLSsgICBybF9jb21wbGV0aW9uX2VudHJ5X2Z1bmN0aW9uIChybF9maWxlbmFtZV9j b21wbGV0aW9uX2Z1bmN0aW9uKS4gKi8KLSsgZXh0ZXJuIHJsX2NvbXBlbnRyeV9mdW5jX3QgKnJs X21lbnVfY29tcGxldGlvbl9lbnRyeV9mdW5jdGlvbjsKLSsKLSAvKiBJZiBybF9pZ25vcmVfc29t ZV9jb21wbGV0aW9uc19mdW5jdGlvbiBpcyBub24tTlVMTCBpdCBpcyB0aGUgYWRkcmVzcwotICAg IG9mIGEgZnVuY3Rpb24gdG8gY2FsbCBhZnRlciBhbGwgb2YgdGhlIHBvc3NpYmxlIG1hdGNoZXMg aGF2ZSBiZWVuCi0gICAgZ2VuZXJhdGVkLCBidXQgYmVmb3JlIHRoZSBhY3R1YWwgY29tcGxldGlv biBpcyBkb25lIHRvIHRoZSBpbnB1dCBsaW5lLgotQEAgLTY1MiwxOCArNjY2LDM3IEBAIGV4dGVy biBjb25zdCBjaGFyICpybF9zcGVjaWFsX3ByZWZpeGVzOwotICAgIGNvbXBsZXRpbmcgb24gYSBk aXJlY3RvcnkgbmFtZS4gIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aAotICAgIHRoZSBhZGRy ZXNzIG9mIGEgc3RyaW5nICh0aGUgY3VycmVudCBkaXJlY3RvcnkgbmFtZSkgYXMgYW4gYXJnLiAg SXQKLSAgICBjaGFuZ2VzIHdoYXQgaXMgZGlzcGxheWVkIHdoZW4gdGhlIHBvc3NpYmxlIGNvbXBs ZXRpb25zIGFyZSBwcmludGVkCi0tICAgb3IgaW5zZXJ0ZWQuICovCi0rICAgb3IgaW5zZXJ0ZWQu ICBUaGUgZGlyZWN0b3J5IGNvbXBsZXRpb24gaG9vayBzaG91bGQgcGVyZm9ybQotKyAgIGFueSBu ZWNlc3NhcnkgZGVxdW90aW5nLiAgVGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEgaWYgaXQg bW9kaWZpZXMKLSsgICB0aGUgZGlyZWN0b3J5IG5hbWUgcG9pbnRlciBwYXNzZWQgYXMgYW4gYXJn dW1lbnQuICBJZiB0aGUgZGlyZWN0b3J5Ci0rICAgY29tcGxldGlvbiBob29rIHJldHVybnMgMCwg aXQgc2hvdWxkIG5vdCBtb2RpZnkgdGhlIGRpcmVjdG9yeSBuYW1lCi0rICAgcG9pbnRlciBwYXNz ZWQgYXMgYW4gYXJndW1lbnQuICovCi0gZXh0ZXJuIHJsX2ljcHBmdW5jX3QgKnJsX2RpcmVjdG9y eV9jb21wbGV0aW9uX2hvb2s7Ci0gCi0gLyogSWYgbm9uLXplcm8sIHRoaXMgaXMgdGhlIGFkZHJl c3Mgb2YgYSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gY29tcGxldGluZwotICAgIGEgZGlyZWN0b3J5 IG5hbWUuICBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBhZGRyZXNzIG9mIHRoZSBkaXJlY3Rvcnkg bmFtZQotICAgIHRvIGJlIG1vZGlmaWVkIGFzIGFuIGFyZ3VtZW50LiAgVW5saWtlIHJsX2RpcmVj dG9yeV9jb21wbGV0aW9uX2hvb2ssIGl0Ci0gICAgb25seSBtb2RpZmllcyB0aGUgZGlyZWN0b3J5 IG5hbWUgdXNlZCBpbiBvcGVuZGlyKDIpLCBub3Qgd2hhdCBpcyBkaXNwbGF5ZWQKLS0gICB3aGVu IHRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucyBhcmUgcHJpbnRlZCBvciBpbnNlcnRlZC4gIEl0IGlz IGNhbGxlZAotLSAgIGJlZm9yZSBybF9kaXJlY3RvcnlfY29tcGxldGlvbl9ob29rLiAgSSdtIG5v dCBoYXBweSB3aXRoIGhvdyB0aGlzIHdvcmtzCi0tICAgeWV0LCBzbyBpdCdzIHVuZG9jdW1lbnRl ZC4gKi8KLSsgICB3aGVuIHRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucyBhcmUgcHJpbnRlZCBvciBp bnNlcnRlZC4gIElmIHNldCwgaXQgdGFrZXMKLSsgICBwcmVjZWRlbmNlIG92ZXIgcmxfZGlyZWN0 b3J5X2NvbXBsZXRpb25faG9vay4gIFRoZSBkaXJlY3RvcnkgcmV3cml0ZQotKyAgIGhvb2sgc2hv dWxkIHBlcmZvcm0gYW55IG5lY2Vzc2FyeSBkZXF1b3RpbmcuICBUaGlzIGZ1bmN0aW9uIGhhcyB0 aGUgc2FtZQotKyAgIHJldHVybiB2YWx1ZSBwcm9wZXJ0aWVzIGFzIHRoZSBkaXJlY3RvcnlfY29t cGxldGlvbl9ob29rLgotKwotKyAgIEknbSBub3QgaGFwcHkgd2l0aCBob3cgdGhpcyB3b3JrcyB5 ZXQsIHNvIGl0J3MgdW5kb2N1bWVudGVkLiAgSSdtIHRyeWluZwotKyAgIGl0IGluIGJhc2ggdG8g c2VlIGhvdyB3ZWxsIGl0IGdvZXMuICovCi0gZXh0ZXJuIHJsX2ljcHBmdW5jX3QgKnJsX2RpcmVj dG9yeV9yZXdyaXRlX2hvb2s7Ci0gCi0rLyogSWYgbm9uLXplcm8sIHRoaXMgaXMgdGhlIGFkZHJl c3Mgb2YgYSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gcmVhZGluZwotKyAgIGRpcmVjdG9yeSBlbnRy aWVzIGZyb20gdGhlIGZpbGVzeXN0ZW0gZm9yIGNvbXBsZXRpb24gYW5kIGNvbXBhcmluZwotKyAg IHRoZW0gdG8gdGhlIHBhcnRpYWwgd29yZCB0byBiZSBjb21wbGV0ZWQuICBUaGUgZnVuY3Rpb24g c2hvdWxkCi0rICAgZWl0aGVyIHJldHVybiBpdHMgZmlyc3QgYXJndW1lbnQgKGlmIG5vIGNvbnZl cnNpb24gdGFrZXMgcGxhY2UpIG9yCi0rICAgbmV3bHktYWxsb2NhdGVkIG1lbW9yeS4gIFRoaXMg Y2FuLCBmb3IgaW5zdGFuY2UsIGNvbnZlcnQgZmlsZW5hbWVzCi0rICAgYmV0d2VlbiBjaGFyYWN0 ZXIgc2V0cyBmb3IgY29tcGFyaXNvbiBhZ2FpbnN0IHdoYXQncyB0eXBlZCBhdCB0aGUKLSsgICBr ZXlib2FyZC4gIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyB3aGF0IGlzIGFkZGVkIHRvIHRoZSBsaXN0 IG9mCi0rICAgbWF0Y2hlcy4gIFRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhlIGxlbmd0aCBvZiB0 aGUgZmlsZW5hbWUgdG8gYmUKLSsgICBjb252ZXJ0ZWQuICovCi0rZXh0ZXJuIHJsX2RlcXVvdGVf ZnVuY190ICpybF9maWxlbmFtZV9yZXdyaXRlX2hvb2s7Ci0rCi0gLyogQmFja3dhcmRzIGNvbXBh dGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiByZWFkbGluZS4gKi8KLSAjZGVmaW5l IHJsX3N5bWJvbGljX2xpbmtfaG9vayBybF9kaXJlY3RvcnlfY29tcGxldGlvbl9ob29rCi0gCi1A QCAtNzEzLDYgKzc0Niw5IEBAIGV4dGVybiBpbnQgcmxfYXR0ZW1wdGVkX2NvbXBsZXRpb25fb3Zl cjsKLSAgICBmdW5jdGlvbnMuICovCi0gZXh0ZXJuIGludCBybF9jb21wbGV0aW9uX3R5cGU7Ci0g Ci0rLyogU2V0IHRvIHRoZSBsYXN0IGtleSB1c2VkIHRvIGludm9rZSBvbmUgb2YgdGhlIGNvbXBs ZXRpb24gZnVuY3Rpb25zICovCi0rZXh0ZXJuIGludCBybF9jb21wbGV0aW9uX2ludm9raW5nX2tl eTsKLSsKLSAvKiBVcCB0byB0aGlzIG1hbnkgaXRlbXMgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gcmVz cG9uc2UgdG8gYQotICAgIHBvc3NpYmxlLWNvbXBsZXRpb25zIGNhbGwuICBBZnRlciB0aGF0LCB3 ZSBhc2sgdGhlIHVzZXIgaWYgc2hlCi0gICAgaXMgc3VyZSBzaGUgd2FudHMgdG8gc2VlIHRoZW0g YWxsLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTAwLiAqLwotQEAgLTczOSw2ICs3NzUsOSBAQCBl eHRlcm4gaW50IHJsX2NvbXBsZXRpb25fZm91bmRfcXVvdGU7Ci0gICAgYXBwbGljYXRpb24tc3Bl Y2lmaWMgY29tcGxldGlvbiBmdW5jdGlvbi4gKi8KLSBleHRlcm4gaW50IHJsX2NvbXBsZXRpb25f c3VwcHJlc3NfcXVvdGU7Ci0gCi0rLyogSWYgbm9uLXplcm8sIHJlYWRsaW5lIHdpbGwgc29ydCB0 aGUgY29tcGxldGlvbiBtYXRjaGVzLiAgT24gYnkgZGVmYXVsdC4gKi8KLStleHRlcm4gaW50IHJs X3NvcnRfY29tcGxldGlvbl9tYXRjaGVzOwotKwotIC8qIElmIG5vbi16ZXJvLCBhIHNsYXNoIHdp bGwgYmUgYXBwZW5kZWQgdG8gY29tcGxldGVkIGZpbGVuYW1lcyB0aGF0IGFyZQotICAgIHN5bWJv bGljIGxpbmtzIHRvIGRpcmVjdG9yeSBuYW1lcywgc3ViamVjdCB0byB0aGUgdmFsdWUgb2YgdGhl Ci0gICAgbWFyay1kaXJlY3RvcmllcyB2YXJpYWJsZSAod2hpY2ggaXMgdXNlci1zZXR0YWJsZSku ICBUaGlzIGV4aXN0cyBzbwotQEAgLTc1Nyw2ICs3OTYsMTAgQEAgZXh0ZXJuIGludCBybF9pZ25v cmVfY29tcGxldGlvbl9kdXBsaWNhdAotICAgIGNvbXBsZXRpb24gY2hhcmFjdGVyIHdpbGwgYmUg aW5zZXJ0ZWQgYXMgYW55IG90aGVyLiAqLwotIGV4dGVybiBpbnQgcmxfaW5oaWJpdF9jb21wbGV0 aW9uOwotIAotKy8qIElucHV0IGVycm9yOyBjYW4gYmUgcmV0dXJuZWQgYnkgKCpybF9nZXRjX2Z1 bmN0aW9uKSBpZiByZWFkbGluZSBpcyByZWFkaW5nCi0rICAgYSB0b3AtbGV2ZWwgY29tbWFuZCAo UkxfSVNTVEFURSAoUkxfU1RBVEVfUkVBRENNRCkpLiAqLwotKyNkZWZpbmUgUkVBREVSUgkJCSgt MikKLSsKLSAvKiBEZWZpbml0aW9ucyBhdmFpbGFibGUgZm9yIHVzZSBieSByZWFkbGluZSBjbGll bnRzLiAqLwotICNkZWZpbmUgUkxfUFJPTVBUX1NUQVJUX0lHTk9SRQknXDAwMScKLSAjZGVmaW5l IFJMX1BST01QVF9FTkRfSUdOT1JFCSdcMDAyJwotQEAgLTc3MCwzMSArODEzLDMyIEBAIGV4dGVy biBpbnQgcmxfaW5oaWJpdF9jb21wbGV0aW9uOwotIC8qIFBvc3NpYmxlIHN0YXRlIHZhbHVlcyBm b3IgcmxfcmVhZGxpbmVfc3RhdGUgKi8KLSAjZGVmaW5lIFJMX1NUQVRFX05PTkUJCTB4MDAwMDAw CQkvKiBubyBzdGF0ZTsgYmVmb3JlIGZpcnN0IGNhbGwgKi8KLSAKLS0jZGVmaW5lIFJMX1NUQVRF X0lOSVRJQUxJWklORwkweDAwMDAwMQkvKiBpbml0aWFsaXppbmcgKi8KLS0jZGVmaW5lIFJMX1NU QVRFX0lOSVRJQUxJWkVECTB4MDAwMDAyCS8qIGluaXRpYWxpemF0aW9uIGRvbmUgKi8KLS0jZGVm aW5lIFJMX1NUQVRFX1RFUk1QUkVQUEVECTB4MDAwMDA0CS8qIHRlcm1pbmFsIGlzIHByZXBwZWQg Ki8KLS0jZGVmaW5lIFJMX1NUQVRFX1JFQURDTUQJMHgwMDAwMDgJLyogcmVhZGluZyBhIGNvbW1h bmQga2V5ICovCi0tI2RlZmluZSBSTF9TVEFURV9NRVRBTkVYVAkweDAwMDAxMAkvKiByZWFkaW5n IGlucHV0IGFmdGVyIEVTQyAqLwotLSNkZWZpbmUgUkxfU1RBVEVfRElTUEFUQ0hJTkcJMHgwMDAw MjAJLyogZGlzcGF0Y2hpbmcgdG8gYSBjb21tYW5kICovCi0tI2RlZmluZSBSTF9TVEFURV9NT1JF SU5QVVQJMHgwMDAwNDAJLyogcmVhZGluZyBtb3JlIGlucHV0IGluIGEgY29tbWFuZCBmdW5jdGlv biAqLwotLSNkZWZpbmUgUkxfU1RBVEVfSVNFQVJDSAkweDAwMDA4MAkvKiBkb2luZyBpbmNyZW1l bnRhbCBzZWFyY2ggKi8KLS0jZGVmaW5lIFJMX1NUQVRFX05TRUFSQ0gJMHgwMDAxMDAJLyogZG9p bmcgbm9uLWluYyBzZWFyY2ggKi8KLS0jZGVmaW5lIFJMX1NUQVRFX1NFQVJDSAkJMHgwMDAyMDAJ LyogZG9pbmcgYSBoaXN0b3J5IHNlYXJjaCAqLwotLSNkZWZpbmUgUkxfU1RBVEVfTlVNRVJJQ0FS RwkweDAwMDQwMAkvKiByZWFkaW5nIG51bWVyaWMgYXJndW1lbnQgKi8KLS0jZGVmaW5lIFJMX1NU QVRFX01BQ1JPSU5QVVQJMHgwMDA4MDAJLyogZ2V0dGluZyBpbnB1dCBmcm9tIGEgbWFjcm8gKi8K LS0jZGVmaW5lIFJMX1NUQVRFX01BQ1JPREVGCTB4MDAxMDAwCS8qIGRlZmluaW5nIGtleWJvYXJk IG1hY3JvICovCi0tI2RlZmluZSBSTF9TVEFURV9PVkVSV1JJVEUJMHgwMDIwMDAJLyogb3Zlcndy aXRlIG1vZGUgKi8KLS0jZGVmaW5lIFJMX1NUQVRFX0NPTVBMRVRJTkcJMHgwMDQwMDAJLyogZG9p bmcgY29tcGxldGlvbiAqLwotLSNkZWZpbmUgUkxfU1RBVEVfU0lHSEFORExFUgkweDAwODAwMAkv KiBpbiByZWFkbGluZSBzaWdoYW5kbGVyICovCi0tI2RlZmluZSBSTF9TVEFURV9VTkRPSU5HCTB4 MDEwMDAwCS8qIGRvaW5nIGFuIHVuZG8gKi8KLS0jZGVmaW5lIFJMX1NUQVRFX0lOUFVUUEVORElO RwkweDAyMDAwMAkvKiBybF9leGVjdXRlX25leHQgY2FsbGVkICovCi0tI2RlZmluZSBSTF9TVEFU RV9UVFlDU0FWRUQJMHgwNDAwMDAJLyogdHR5IHNwZWNpYWwgY2hhcnMgc2F2ZWQgKi8KLS0jZGVm aW5lIFJMX1NUQVRFX0NBTExCQUNLCTB4MDgwMDAwCS8qIHVzaW5nIHRoZSBjYWxsYmFjayBpbnRl cmZhY2UgKi8KLS0jZGVmaW5lIFJMX1NUQVRFX1ZJTU9USU9OCTB4MTAwMDAwCS8qIHJlYWRpbmcg dmkgbW90aW9uIGFyZyAqLwotLSNkZWZpbmUgUkxfU1RBVEVfTVVMVElLRVkJMHgyMDAwMDAJLyog cmVhZGluZyBtdWx0aXBsZS1rZXkgY29tbWFuZCAqLwotLSNkZWZpbmUgUkxfU1RBVEVfVklDTURP TkNFCTB4NDAwMDAwCS8qIGVudGVyZWQgdmkgY29tbWFuZCBtb2RlIGF0IGxlYXN0IG9uY2UgKi8K LSsjZGVmaW5lIFJMX1NUQVRFX0lOSVRJQUxJWklORwkweDAwMDAwMDEJLyogaW5pdGlhbGl6aW5n ICovCi0rI2RlZmluZSBSTF9TVEFURV9JTklUSUFMSVpFRAkweDAwMDAwMDIJLyogaW5pdGlhbGl6 YXRpb24gZG9uZSAqLwotKyNkZWZpbmUgUkxfU1RBVEVfVEVSTVBSRVBQRUQJMHgwMDAwMDA0CS8q IHRlcm1pbmFsIGlzIHByZXBwZWQgKi8KLSsjZGVmaW5lIFJMX1NUQVRFX1JFQURDTUQJMHgwMDAw MDA4CS8qIHJlYWRpbmcgYSBjb21tYW5kIGtleSAqLwotKyNkZWZpbmUgUkxfU1RBVEVfTUVUQU5F WFQJMHgwMDAwMDEwCS8qIHJlYWRpbmcgaW5wdXQgYWZ0ZXIgRVNDICovCi0rI2RlZmluZSBSTF9T VEFURV9ESVNQQVRDSElORwkweDAwMDAwMjAJLyogZGlzcGF0Y2hpbmcgdG8gYSBjb21tYW5kICov Ci0rI2RlZmluZSBSTF9TVEFURV9NT1JFSU5QVVQJMHgwMDAwMDQwCS8qIHJlYWRpbmcgbW9yZSBp bnB1dCBpbiBhIGNvbW1hbmQgZnVuY3Rpb24gKi8KLSsjZGVmaW5lIFJMX1NUQVRFX0lTRUFSQ0gJ MHgwMDAwMDgwCS8qIGRvaW5nIGluY3JlbWVudGFsIHNlYXJjaCAqLwotKyNkZWZpbmUgUkxfU1RB VEVfTlNFQVJDSAkweDAwMDAxMDAJLyogZG9pbmcgbm9uLWluYyBzZWFyY2ggKi8KLSsjZGVmaW5l IFJMX1NUQVRFX1NFQVJDSAkJMHgwMDAwMjAwCS8qIGRvaW5nIGEgaGlzdG9yeSBzZWFyY2ggKi8K LSsjZGVmaW5lIFJMX1NUQVRFX05VTUVSSUNBUkcJMHgwMDAwNDAwCS8qIHJlYWRpbmcgbnVtZXJp YyBhcmd1bWVudCAqLwotKyNkZWZpbmUgUkxfU1RBVEVfTUFDUk9JTlBVVAkweDAwMDA4MDAJLyog Z2V0dGluZyBpbnB1dCBmcm9tIGEgbWFjcm8gKi8KLSsjZGVmaW5lIFJMX1NUQVRFX01BQ1JPREVG CTB4MDAwMTAwMAkvKiBkZWZpbmluZyBrZXlib2FyZCBtYWNybyAqLwotKyNkZWZpbmUgUkxfU1RB VEVfT1ZFUldSSVRFCTB4MDAwMjAwMAkvKiBvdmVyd3JpdGUgbW9kZSAqLwotKyNkZWZpbmUgUkxf U1RBVEVfQ09NUExFVElORwkweDAwMDQwMDAJLyogZG9pbmcgY29tcGxldGlvbiAqLwotKyNkZWZp bmUgUkxfU1RBVEVfU0lHSEFORExFUgkweDAwMDgwMDAJLyogaW4gcmVhZGxpbmUgc2lnaGFuZGxl ciAqLwotKyNkZWZpbmUgUkxfU1RBVEVfVU5ET0lORwkweDAwMTAwMDAJLyogZG9pbmcgYW4gdW5k byAqLwotKyNkZWZpbmUgUkxfU1RBVEVfSU5QVVRQRU5ESU5HCTB4MDAyMDAwMAkvKiBybF9leGVj dXRlX25leHQgY2FsbGVkICovCi0rI2RlZmluZSBSTF9TVEFURV9UVFlDU0FWRUQJMHgwMDQwMDAw CS8qIHR0eSBzcGVjaWFsIGNoYXJzIHNhdmVkICovCi0rI2RlZmluZSBSTF9TVEFURV9DQUxMQkFD SwkweDAwODAwMDAJLyogdXNpbmcgdGhlIGNhbGxiYWNrIGludGVyZmFjZSAqLwotKyNkZWZpbmUg UkxfU1RBVEVfVklNT1RJT04JMHgwMTAwMDAwCS8qIHJlYWRpbmcgdmkgbW90aW9uIGFyZyAqLwot KyNkZWZpbmUgUkxfU1RBVEVfTVVMVElLRVkJMHgwMjAwMDAwCS8qIHJlYWRpbmcgbXVsdGlwbGUt a2V5IGNvbW1hbmQgKi8KLSsjZGVmaW5lIFJMX1NUQVRFX1ZJQ01ET05DRQkweDA0MDAwMDAJLyog ZW50ZXJlZCB2aSBjb21tYW5kIG1vZGUgYXQgbGVhc3Qgb25jZSAqLwotKyNkZWZpbmUgUkxfU1RB VEVfUkVESVNQTEFZSU5HCTB4MDgwMDAwMAkvKiB1cGRhdGluZyB0ZXJtaW5hbCBkaXNwbGF5ICov Ci0gCi0tI2RlZmluZSBSTF9TVEFURV9ET05FCQkweDgwMDAwMAkvKiBkb25lOyBhY2NlcHRlZCBs aW5lICovCi0rI2RlZmluZSBSTF9TVEFURV9ET05FCQkweDEwMDAwMDAJLyogZG9uZTsgYWNjZXB0 ZWQgbGluZSAqLwotIAotICNkZWZpbmUgUkxfU0VUU1RBVEUoeCkJCShybF9yZWFkbGluZV9zdGF0 ZSB8PSAoeCkpCi0gI2RlZmluZSBSTF9VTlNFVFNUQVRFKHgpCShybF9yZWFkbGluZV9zdGF0ZSAm PSB+KHgpKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvcmxjb25mLmgKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvcmxjb25mLmgJ MjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEw NzAzL3JlYWRsaW5lL3JsY29uZi5oCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAw Ci1AQCAtMSwyNSArMSwyMyBAQAotIC8qIHJsY29uZi5oIC0tIHJlYWRsaW5lIGNvbmZpZ3VyYXRp b24gZGVmaW5pdGlvbnMgKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5OTQgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAxOTkyLTIwMDkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBSZWFk bGluZSBMaWJyYXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9mCi0tICAgcm91dGluZXMgZm9yIHBy b3ZpZGluZyBFbWFjcyBzdHlsZSBsaW5lIGlucHV0IHRvIHByb2dyYW1zIHRoYXQgYXNrCi0tICAg Zm9yIGl0LgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFy eSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdp dGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBU aGUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQot LSAgIGFueSBsYXRlciB2ZXJzaW9uLgotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLS0gICBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUKLS0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAg VGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUg c29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09Q WUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBs aWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRl bXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBSZWFk bGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0gI2lm ICFkZWZpbmVkIChfUkxDT05GX0hfKQotICNkZWZpbmUgX1JMQ09ORl9IXwotQEAgLTM3LDkgKzM1 LDEyIEBACi0gLyogVWdseSBidXQgd29ya2luZyBoYWNrIGZvciBiaW5kaW5nIHByZWZpeCBtZXRh LiAqLwotICNkZWZpbmUgUFJFRklYX01FVEFfSEFDSwotIAotLS8qIFRoZSBmaW5hbCwgbGFzdC1k aXRjaCBlZmZvcnQgZmlsZSBuYW1lIGZvciBhbiBpbml0IGZpbGUuICovCi0rLyogVGhlIG5leHQt dG8tbGFzdC1kaXRjaCBlZmZvcnQgZmlsZSBuYW1lIGZvciBhIHVzZXItc3BlY2lmaWMgaW5pdCBm aWxlLiAqLwotICNkZWZpbmUgREVGQVVMVF9JTlBVVFJDICJ+Ly5pbnB1dHJjIgotIAotKy8qIFRo ZSB1bHRpbWF0ZSBsYXN0LWRpdGNoIGZpbGVubmFtZSBmb3IgYW4gaW5pdCBmaWxlIC0tIHN5c3Rl bS13aWRlLiAqLwotKyNkZWZpbmUgU1lTX0lOUFVUUkMgIi9ldGMvaW5wdXRyYyIKLSsKLSAvKiBJ ZiBkZWZpbmVkLCBleHBhbmQgdGFicyB0byBzcGFjZXMuICovCi0gI2RlZmluZSBESVNQTEFZX1RB QlMKLSAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3JsZGVmcy5oCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3JsZGVmcy5oCTIw MTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcw My9yZWFkbGluZS9ybGRlZnMuaAkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAot QEAgLTIsMjYgKzIsMjQgQEAKLSAgICBmb3IgcmVhZGxpbmUuICBUaGlzIHNob3VsZCBiZSBpbmNs dWRlZCBhZnRlciBhbnkgZmlsZXMgdGhhdCBkZWZpbmUKLSAgICBzeXN0ZW0tc3BlY2lmaWMgY29u c3RhbnRzIGxpa2UgX1BPU0lYX1ZFUlNJT04gb3IgVVNHLiAqLwotIAotLS8qIENvcHlyaWdodCAo QykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdo dCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRo aXMgZmlsZSBjb250YWlucyB0aGUgUmVhZGxpbmUgTGlicmFyeSAodGhlIExpYnJhcnkpLCBhIHNl dCBvZgotLSAgIHJvdXRpbmVzIGZvciBwcm92aWRpbmcgRW1hY3Mgc3R5bGUgbGluZSBpbnB1dCB0 byBwcm9ncmFtcyB0aGF0IGFzawotLSAgIGZvciBpdC4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9y IHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5 IGVkaXRpbmcuICAgICAgCi0gCi0tICAgVGhlIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIFJlYWRsaW5lIGlzIGZyZWUg c29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0tICAgVGhl IExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwgYnV0Ci0tICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBp cyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkg a2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QK LS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMSBVU0EuICovCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0r ICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KLSsqLwotIAotICNpZiAhZGVmaW5lZCAoX1JMREVGU19IXykKLSAjZGVmaW5l IF9STERFRlNfSF8KLUBAIC0zMiw2ICszMCwxMCBAQAotIAotICNpbmNsdWRlICJybHN0ZGMuaCIK LSAKLSsjaWYgZGVmaW5lZCAoU1RSQ09MTF9CUk9LRU4pCi0rIyAgdW5kZWYgSEFWRV9TVFJDT0xM Ci0rI2VuZGlmCi0rCi0gI2lmIGRlZmluZWQgKF9QT1NJWF9WRVJTSU9OKSAmJiAhZGVmaW5lZCAo VEVSTUlPU19NSVNTSU5HKQotICMgIGRlZmluZSBURVJNSU9TX1RUWV9EUklWRVIKLSAjZWxzZQot SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvcmxtYnV0aWwuaAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9ybG1idXRpbC5oCTIwMTEt MDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9y ZWFkbGluZS9ybG1idXRpbC5oCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1A QCAtMSwyNCArMSwyMyBAQAotIC8qIHJsbWJ1dGlsLmggLS0gdXRpbGl0eSBmdW5jdGlvbnMgZm9y IG11bHRpYnl0ZSBjaGFyYWN0ZXJzLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMjAwMSwgMjAw MyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDIwMDEt MjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0gICByZWFk aW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0 aW5nLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAo UmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGgg aW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBUaGUg R05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQKLS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r ICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFs bHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBu b3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9u LCBNQSAwMjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5l LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0g I2lmICFkZWZpbmVkIChfUkxfTUJVVElMX0hfKQotICNkZWZpbmUgX1JMX01CVVRJTF9IXwotQEAg LTMwLDIyICsyOSwyMSBAQAotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCi0gCi0gLyogRm9yIHBsYXRmb3JtcyB3aGljaCBzdXBwb3J0IHRoZSBJU08g QyBhbWVuZGVtZW50IDEgZnVuY3Rpb25hbGl0eSB3ZQotLSAgIHN1cHBvcnQgdXNlciBkZWZpbmVk IGNoYXJhY3RlciBjbGFzc2VzLgotLQotLSAgIFNvbWUgcGxhdGZvcm1zIGhhdmUgdGhlIG11bHRp Ynl0ZSBmdW5jdGlvbnMgc3VjaCBhcyBtYnNydG93Y3MgYnV0Ci0tICAgYXJlIGxhY2tpbmcgdGhl IG11bHRpdHlwZSB0eXBlIG1ic3RhdGVfdC4gIEJlT1MgKHVua25vd24gdmVyc2lvbikKLS0gICBh bmQgSFAvVVggMTEuMjMgd2l0aG91dCBfWE9QRU5fU09VUkNFPTUwMCBhcmUgbGlrZSB0aGlzLgot LQotLSAgIFdlIHJlYWxseSBuZWVkIG1ic3RhdGVfdCB0eXBlIHRvIG9wZXJhdGUgcHJvcGVybHku ICBGb3IgZXhhbXBsZSwgc2VlCi0tICAgY29tcHV0ZV9sY2Rfb2ZfbWF0Y2hlcywgd2hlcmUgdHdv IG1ic3RhdGVfdCdzIGFyZSBhY3RpdmUgYXQgdGhlIHNhbWUKLS0gICB0aW1lLiAgU28gd2UgcmVx dWlyZSBib3RoIHRoZSBmdW5jdGlvbnMgYW5kIHRoZSBtYnN0YXRlX3QgdHlwZSBpbgotLSAgIG9y ZGVyIHRvIGVuYWJsZSBtdWx0aWJ5dGUgc3VwcG9ydC4gICovCi0tCi0rICAgc3VwcG9ydCB1c2Vy IGRlZmluZWQgY2hhcmFjdGVyIGNsYXNzZXMuICAqLwotICAgIC8qIFNvbGFyaXMgMi41IGhhcyBh IGJ1ZzogPHdjaGFyLmg+IG11c3QgYmUgaW5jbHVkZWQgYmVmb3JlIDx3Y3R5cGUuaD4uICAqLwot LSNpZiBkZWZpbmVkIChIQVZFX1dDVFlQRV9IKSAmJiBkZWZpbmVkIChIQVZFX1dDSEFSX0gpCi0r I2lmIGRlZmluZWQgKEhBVkVfV0NUWVBFX0gpICYmIGRlZmluZWQgKEhBVkVfV0NIQVJfSCkgJiYg ZGVmaW5lZCAoSEFWRV9MT0NBTEVfSCkKLSAjICBpbmNsdWRlIDx3Y2hhci5oPgotICMgIGluY2x1 ZGUgPHdjdHlwZS5oPgotLSMgIGlmIGRlZmluZWQgKEhBVkVfTUJTVEFURV9UKSAmJiBkZWZpbmVk IChIQVZFX01CU1JUT1dDUykgJiYgZGVmaW5lZCAoSEFWRV9NQlJUT1dDKSAmJiBkZWZpbmVkIChI QVZFX01CUkxFTikgJiYgZGVmaW5lZCAoSEFWRV9XQ1dJRFRIKQotKyMgIGlmIGRlZmluZWQgKEhB VkVfSVNXQ1RZUEUpICYmIFwKLSsgICAgICBkZWZpbmVkIChIQVZFX0lTV0xPV0VSKSAmJiBcCi0r ICAgICAgZGVmaW5lZCAoSEFWRV9JU1dVUFBFUikgJiYgXAotKyAgICAgIGRlZmluZWQgKEhBVkVf TUJTUlRPV0NTKSAmJiBcCi0rICAgICAgZGVmaW5lZCAoSEFWRV9NQlJUT1dDKSAmJiBcCi0rICAg ICAgZGVmaW5lZCAoSEFWRV9NQlJMRU4pICYmIFwKLSsgICAgICBkZWZpbmVkIChIQVZFX1RPV0xP V0VSKSAmJiBcCi0rICAgICAgZGVmaW5lZCAoSEFWRV9UT1dVUFBFUikgJiYgXAotKyAgICAgIGRl ZmluZWQgKEhBVkVfV0NIQVJfVCkgJiYgXAotKyAgICAgIGRlZmluZWQgKEhBVkVfV0NXSURUSCkK LSAgICAgIC8qIHN5c3RlbSBpcyBzdXBwb3NlZCB0byBzdXBwb3J0IFhQRzUgKi8KLSAjICAgIGRl ZmluZSBIQU5ETEVfTVVMVElCWVRFICAgICAgMQotICMgIGVuZGlmCi1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9yZWFkbGluZS9ybHByaXZhdGUuaAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu OTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9ybHByaXZhdGUuaAkyMDExLTA3LTAzIDEwOjQwOjUz LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvcmxwcml2 YXRlLmgJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDI1ICsxLDI0 IEBACi0gLyogcmxwcml2YXRlLmggLS0gZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgZ2xvYmFsIHRv IHRoZSByZWFkbGluZSBsaWJyYXJ5LAotIAkJICBidXQgbm90IGludGVuZGVkIGZvciB1c2UgYnkg YXBwbGljYXRpb25zLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk5OS0yMDA1IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk5OS0yMDEwIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGluZXMg b2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSks IGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2 ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAg IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAK LS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGlu ZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVu IHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGlu IGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhh dmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx IFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAKLSAjaWYgIWRlZmlu ZWQgKF9STF9QUklWQVRFX0hfKQotICNkZWZpbmUgX1JMX1BSSVZBVEVfSF8KLUBAIC0zMCw2ICsy OSwyMSBAQAotIAotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICoJCQkJCQkJCQkgKgotKyAqIENvbnZl bmllbmNlIGRlZmluaXRpb25zCQkJCQkJICoKLSsgKgkJCQkJCQkJCSAqCi0rICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCi0rCi0rI2RlZmluZSBFTUFDU19NT0RFKCkJCShybF9lZGl0aW5nX21vZGUgPT0gZW1h Y3NfbW9kZSkKLSsjZGVmaW5lIFZJX0NPTU1BTkRfTU9ERSgpCShybF9lZGl0aW5nX21vZGUgPT0g dmlfbW9kZSAmJiBfcmxfa2V5bWFwID09IHZpX21vdmVtZW50X2tleW1hcCkKLSsjZGVmaW5lIFZJ X0lOU0VSVF9NT0RFKCkJKHJsX2VkaXRpbmdfbW9kZSA9PSB2aV9tb2RlICYmIF9ybF9rZXltYXAg PT0gdmlfaW5zZXJ0aW9uX2tleW1hcCkKLSsKLSsjZGVmaW5lIFJMX0NIRUNLX1NJR05BTFMoKSBc Ci0rCWRvIHsgXAotKwkgIGlmIChfcmxfY2F1Z2h0X3NpZ25hbCkgX3JsX3NpZ25hbF9oYW5kbGVy IChfcmxfY2F1Z2h0X3NpZ25hbCk7IFwKLSsJfSB3aGlsZSAoMCkKLSsKLSsvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgotKyAqCQkJCQkJCQkJICoKLSAgKiBHbG9iYWwgc3RydWN0cyB1bmRvY3VtZW50ZWQgaW4g dGV4aW5mbyBtYW51YWwgYW5kIG5vdCBpbiByZWFkbGluZS5oICAgKgotICAqCQkJCQkJCQkJICoK LSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KLUBAIC00Miw2ICs1Niw3IEBACi0gI2RlZmluZSBTRl9SRVZF UlNFCQkweDAxCi0gI2RlZmluZSBTRl9GT1VORAkJMHgwMgotICNkZWZpbmUgU0ZfRkFJTEVECQkw eDA0Ci0rI2RlZmluZSBTRl9DSEdLTUFQCQkweDA4Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgIF9fcmxf c2VhcmNoX2NvbnRleHQKLSB7Ci1AQCAtNjUsNiArODAsOSBAQCB0eXBlZGVmIHN0cnVjdCAgX19y bF9zZWFyY2hfY29udGV4dAotIAotICAgVU5ET19MSVNUICpzYXZlX3VuZG9fbGlzdDsKLSAKLSsg IEtleW1hcCBrZXltYXA7CS8qIHVzZWQgd2hlbiBkaXNwYXRjaGluZyBjb21tYW5kcyBpbiBzZWFy Y2ggc3RyaW5nICovCi0rICBLZXltYXAgb2tleW1hcDsJLyogb3JpZ2luYWwga2V5bWFwICovCi0r Ci0gICBpbnQgaGlzdG9yeV9wb3M7Ci0gICBpbnQgZGlyZWN0aW9uOwotIAotQEAgLTEwNiw3ICsx MjQsMjggQEAgdHlwZWRlZiBzdHJ1Y3QgX19ybF9rZXlzZXFfY29udGV4dAotICAgaW50IGNoaWxk dmFsOwotIH0gX3JsX2tleXNlcV9jeHQ7Ci0gCi0tICAvKiBmaWxsIGluIG1vcmUgYXMgbmVlZGVk ICovCi0rLyogdmktbW9kZSBjb21tYW5kcyB0aGF0IHVzZSByZXN1bHQgb2YgbW90aW9uIGNvbW1h bmQgdG8gZGVmaW5lIGJvdW5kYXJpZXMgKi8KLSsjZGVmaW5lIFZJTV9ERUxFVEUJMHgwMQotKyNk ZWZpbmUgVklNX0NIQU5HRQkweDAyCi0rI2RlZmluZSBWSU1fWUFOSwkweDA0Ci0rCi0rLyogdmFy aW91cyBzdGF0ZXMgZm9yIHZpLW1vZGUgY29tbWFuZHMgdGhhdCB1c2UgbW90aW9uIGNvbW1hbmRz LiAgcmVmbGVjdHMKLSsgICBSTF9SRUFETElORV9TVEFURSAqLwotKyNkZWZpbmUgVk1TVEFURV9S RUFECTB4MDEKLSsjZGVmaW5lIFZNU1RBVEVfTlVNQVJHCTB4MDIKLSsKLSt0eXBlZGVmIHN0cnVj dCBfX3JsX3ZpbW90aW9uX2NvbnRleHQKLSt7Ci0rICBpbnQgb3A7Ci0rICBpbnQgc3RhdGU7Ci0r ICBpbnQgZmxhZ3M7CQkvKiByZXNlcnZlZCAqLwotKyAgX3JsX2FyZ19jeHQgbmN4dDsKLSsgIGlu dCBudW1lcmljX2FyZzsKLSsgIGludCBzdGFydCwgZW5kOwkvKiBybF9wb2ludCwgcmxfZW5kICov Ci0rICBpbnQga2V5LCBtb3Rpb247CS8qIGluaXRpYWwga2V5LCBtb3Rpb24gY29tbWFuZCAqLwot K30gX3JsX3ZpbW90aW9uX2N4dDsKLSsKLSsvKiBmaWxsIGluIG1vcmUgYXMgbmVlZGVkICovCi0g LyogYEdlbmVyaWMnIGNhbGxiYWNrIGRhdGEgYW5kIGZ1bmN0aW9ucyAqLwotIHR5cGVkZWYgc3Ry dWN0IF9fcmxfY2FsbGJhY2tfZ2VuZXJpY19hcmcgCi0gewotQEAgLTEzOSwxMiArMTc4LDkgQEAg ZXh0ZXJuIGludCBybF92aXNpYmxlX3N0YXRzOwotIGV4dGVybiBpbnQgcmxfbGluZV9idWZmZXJf bGVuOwotIGV4dGVybiBpbnQgcmxfYXJnX3NpZ247Ci0gZXh0ZXJuIGludCBybF92aXNpYmxlX3By b21wdF9sZW5ndGg7Ci0tZXh0ZXJuIGludCByZWFkbGluZV9lY2hvaW5nX3A7Ci0gZXh0ZXJuIGlu dCBybF9rZXlfc2VxdWVuY2VfbGVuZ3RoOwotIGV4dGVybiBpbnQgcmxfYnl0ZV9vcmllbnRlZDsK LSAKLS1leHRlcm4gX3JsX2tleXNlcV9jeHQgKl9ybF9rc2N4dDsKLS0KLSAvKiBkaXNwbGF5LmMg Ki8KLSBleHRlcm4gaW50IHJsX2Rpc3BsYXlfZml4ZWQ7Ci0gCi1AQCAtMjA2LDYgKzI0Miw3IEBA IGV4dGVybiB2b2lkIF9ybF9jYWxsYmFja19kYXRhX2Rpc3Bvc2UgUEEKLSAvKiBiaW5kLmMgKi8K LSAKLSAvKiBjb21wbGV0ZS5jICovCi0rZXh0ZXJuIHZvaWQgX3JsX3Jlc2V0X2NvbXBsZXRpb25f c3RhdGUgUEFSQU1TKCh2b2lkKSk7Ci0gZXh0ZXJuIGNoYXIgX3JsX2ZpbmRfY29tcGxldGlvbl93 b3JkIFBBUkFNUygoaW50ICosIGludCAqKSk7Ci0gZXh0ZXJuIHZvaWQgX3JsX2ZyZWVfbWF0Y2hf bGlzdCBQQVJBTVMoKGNoYXIgKiopKTsKLSAKLUBAIC0yNjEsNiArMjk4LDggQEAgZXh0ZXJuIHZv aWQgX3JsX3N0YXJ0X3VzaW5nX2hpc3RvcnkgUEFSQQotIGV4dGVybiBpbnQgX3JsX2ZyZWVfc2F2 ZWRfaGlzdG9yeV9saW5lIFBBUkFNUygodm9pZCkpOwotIGV4dGVybiB2b2lkIF9ybF9zZXRfaW5z ZXJ0X21vZGUgUEFSQU1TKChpbnQsIGludCkpOwotIAotK2V4dGVybiB2b2lkIF9ybF9yZXZlcnRf YWxsX2xpbmVzIFBBUkFNUygodm9pZCkpOwotKwotIC8qIG5scy5jICovCi0gZXh0ZXJuIGludCBf cmxfaW5pdF9laWdodGJpdCBQQVJBTVMoKHZvaWQpKTsKLSAKLUBAIC0yODEsNiArMzIwLDE0IEBA IGV4dGVybiBpbnQgX3JsX3Jlc3RvcmVfdHR5X3NpZ25hbHMgUEFSQU0KLSAvKiBzZWFyY2guYyAq LwotIGV4dGVybiBpbnQgX3JsX25zZWFyY2hfY2FsbGJhY2sgUEFSQU1TKChfcmxfc2VhcmNoX2N4 dCAqKSk7Ci0gCi0rLyogc2lnbmFscy5jICovCi0rZXh0ZXJuIHZvaWQgX3JsX3NpZ25hbF9oYW5k bGVyIFBBUkFNUygoaW50KSk7Ci0rCi0rZXh0ZXJuIHZvaWQgX3JsX2Jsb2NrX3NpZ2ludCBQQVJB TVMoKHZvaWQpKTsKLStleHRlcm4gdm9pZCBfcmxfcmVsZWFzZV9zaWdpbnQgUEFSQU1TKCh2b2lk KSk7Ci0rZXh0ZXJuIHZvaWQgX3JsX2Jsb2NrX3NpZ3dpbmNoIFBBUkFNUygodm9pZCkpOwotK2V4 dGVybiB2b2lkIF9ybF9yZWxlYXNlX3NpZ3dpbmNoIFBBUkFNUygodm9pZCkpOwotKwotIC8qIHRl cm1pbmFsLmMgKi8KLSBleHRlcm4gdm9pZCBfcmxfZ2V0X3NjcmVlbl9zaXplIFBBUkFNUygoaW50 LCBpbnQpKTsKLSBleHRlcm4gaW50IF9ybF9pbml0X3Rlcm1pbmFsX2lvIFBBUkFNUygoY29uc3Qg Y2hhciAqKSk7Ci1AQCAtMjk4LDYgKzM0NSw3IEBAIGV4dGVybiB2b2lkIF9ybF9zZXRfY3Vyc29y IFBBUkFNUygoaW50LCAKLSAvKiB0ZXh0LmMgKi8KLSBleHRlcm4gdm9pZCBfcmxfZml4X3BvaW50 IFBBUkFNUygoaW50KSk7Ci0gZXh0ZXJuIGludCBfcmxfcmVwbGFjZV90ZXh0IFBBUkFNUygoY29u c3QgY2hhciAqLCBpbnQsIGludCkpOwotK2V4dGVybiBpbnQgX3JsX2ZvcndhcmRfY2hhcl9pbnRl cm5hbCBQQVJBTVMoKGludCkpOwotIGV4dGVybiBpbnQgX3JsX2luc2VydF9jaGFyIFBBUkFNUygo aW50LCBpbnQpKTsKLSBleHRlcm4gaW50IF9ybF9vdmVyd3JpdGVfY2hhciBQQVJBTVMoKGludCwg aW50KSk7Ci0gZXh0ZXJuIGludCBfcmxfb3ZlcndyaXRlX3J1Ym91dCBQQVJBTVMoKGludCwgaW50 KSk7Ci1AQCAtMzA5LDggKzM1NywyNSBAQCBleHRlcm4gaW50IF9ybF9jaGFyX3NlYXJjaF9pbnRl cm5hbCBQQVJBCi0gI2VuZGlmCi0gZXh0ZXJuIGludCBfcmxfc2V0X21hcmtfYXRfcG9zIFBBUkFN UygoaW50KSk7Ci0gCi0rLyogdW5kby5jICovCi0rZXh0ZXJuIFVORE9fTElTVCAqX3JsX2NvcHlf dW5kb19lbnRyeSBQQVJBTVMoKFVORE9fTElTVCAqKSk7Ci0rZXh0ZXJuIFVORE9fTElTVCAqX3Js X2NvcHlfdW5kb19saXN0IFBBUkFNUygoVU5ET19MSVNUICopKTsKLSsKLSAvKiB1dGlsLmMgKi8K LSsjaWYgZGVmaW5lZCAoVVNFX1ZBUkFSR1MpICYmIGRlZmluZWQgKFBSRUZFUl9TVERBUkcpCi0r ZXh0ZXJuIHZvaWQgX3JsX3R0eW1zZyAoY29uc3QgY2hhciAqLCAuLi4pICBfX2F0dHJpYnV0ZV9f KChfX2Zvcm1hdF9fIChwcmludGYsIDEsIDIpKSk7Ci0rZXh0ZXJuIHZvaWQgX3JsX2Vycm1zZyAo Y29uc3QgY2hhciAqLCAuLi4pICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChwcmludGYsIDEs IDIpKSk7Ci0rZXh0ZXJuIHZvaWQgX3JsX3RyYWNlIChjb25zdCBjaGFyICosIC4uLikgIF9fYXR0 cmlidXRlX18oKF9fZm9ybWF0X18gKHByaW50ZiwgMSwgMikpKTsKLSsjZWxzZQotK2V4dGVybiB2 b2lkIF9ybF90dHltc2cgKCk7Ci0rZXh0ZXJuIHZvaWQgX3JsX2Vycm1zZyAoKTsKLStleHRlcm4g dm9pZCBfcmxfdHJhY2UgKCk7Ci0rI2VuZGlmCi0rCi0rZXh0ZXJuIGludCBfcmxfdHJvcGVuIFBB UkFNUygodm9pZCkpOwotKwotIGV4dGVybiBpbnQgX3JsX2Fib3J0X2ludGVybmFsIFBBUkFNUygo dm9pZCkpOwotK2V4dGVybiBpbnQgX3JsX251bGxfZnVuY3Rpb24gUEFSQU1TKChpbnQsIGludCkp OwotIGV4dGVybiBjaGFyICpfcmxfc3RyaW5kZXggUEFSQU1TKChjb25zdCBjaGFyICosIGNvbnN0 IGNoYXIgKikpOwotIGV4dGVybiBpbnQgX3JsX3Fzb3J0X3N0cmluZ19jb21wYXJlIFBBUkFNUygo Y2hhciAqKiwgY2hhciAqKikpOwotIGV4dGVybiBpbnQgKF9ybF91cHBlcmNhc2VfcCkgUEFSQU1T KChpbnQpKTsKLUBAIC0zMjcsMTQgKzM5MiwxNSBAQCBleHRlcm4gdm9pZCBfcmxfdmlfcmVzZXRf bGFzdCBQQVJBTVMoKHZvCi0gZXh0ZXJuIHZvaWQgX3JsX3ZpX3NldF9sYXN0IFBBUkFNUygoaW50 LCBpbnQsIGludCkpOwotIGV4dGVybiBpbnQgX3JsX3ZpX3RleHRtb2RfY29tbWFuZCBQQVJBTVMo KGludCkpOwotIGV4dGVybiB2b2lkIF9ybF92aV9kb25lX2luc2VydGluZyBQQVJBTVMoKHZvaWQp KTsKLStleHRlcm4gaW50IF9ybF92aV9kb21vdmVfY2FsbGJhY2sgUEFSQU1TKChfcmxfdmltb3Rp b25fY3h0ICopKTsKLSAKLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIFVuZG9jdW1lbnRlZCBwcml2 YXRlIHZhcmlhYmxlcwkJCQkJICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAKLSAvKiBiaW5kLmMg Ki8KLS1leHRlcm4gY29uc3QgY2hhciAqX3JsX3Bvc3NpYmxlX2NvbnRyb2xfcHJlZml4ZXNbXTsK LS1leHRlcm4gY29uc3QgY2hhciAqX3JsX3Bvc3NpYmxlX21ldGFfcHJlZml4ZXNbXTsKLStleHRl cm4gY29uc3QgY2hhciAqIGNvbnN0IF9ybF9wb3NzaWJsZV9jb250cm9sX3ByZWZpeGVzW107Ci0r ZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBfcmxfcG9zc2libGVfbWV0YV9wcmVmaXhlc1tdOwot IAotIC8qIGNhbGxiYWNrLmMgKi8KLSBleHRlcm4gX3JsX2NhbGxiYWNrX2Z1bmNfdCAqX3JsX2Nh bGxiYWNrX2Z1bmM7Ci1AQCAtMzQ1LDE3ICs0MTEsMjEgQEAgZXh0ZXJuIGludCBfcmxfY29tcGxl dGVfc2hvd19hbGw7Ci0gZXh0ZXJuIGludCBfcmxfY29tcGxldGVfc2hvd191bm1vZGlmaWVkOwot IGV4dGVybiBpbnQgX3JsX2NvbXBsZXRlX21hcmtfZGlyZWN0b3JpZXM7Ci0gZXh0ZXJuIGludCBf cmxfY29tcGxldGVfbWFya19zeW1saW5rX2RpcnM7Ci0rZXh0ZXJuIGludCBfcmxfY29tcGxldGlv bl9wcmVmaXhfZGlzcGxheV9sZW5ndGg7Ci0rZXh0ZXJuIGludCBfcmxfY29tcGxldGlvbl9jb2x1 bW5zOwotIGV4dGVybiBpbnQgX3JsX3ByaW50X2NvbXBsZXRpb25zX2hvcml6b250YWxseTsKLSBl eHRlcm4gaW50IF9ybF9jb21wbGV0aW9uX2Nhc2VfZm9sZDsKLStleHRlcm4gaW50IF9ybF9jb21w bGV0aW9uX2Nhc2VfbWFwOwotIGV4dGVybiBpbnQgX3JsX21hdGNoX2hpZGRlbl9maWxlczsKLSBl eHRlcm4gaW50IF9ybF9wYWdlX2NvbXBsZXRpb25zOwotK2V4dGVybiBpbnQgX3JsX3NraXBfY29t cGxldGVkX3RleHQ7Ci0rZXh0ZXJuIGludCBfcmxfbWVudV9jb21wbGV0ZV9wcmVmaXhfZmlyc3Q7 Ci0gCi0gLyogZGlzcGxheS5jICovCi0gZXh0ZXJuIGludCBfcmxfdmlzX2JvdGxpbjsKLSBleHRl cm4gaW50IF9ybF9sYXN0X2NfcG9zOwotIGV4dGVybiBpbnQgX3JsX3N1cHByZXNzX3JlZGlzcGxh eTsKLSBleHRlcm4gaW50IF9ybF93YW50X3JlZGlzcGxheTsKLS1leHRlcm4gY2hhciAqcmxfZGlz cGxheV9wcm9tcHQ7Ci0gCi0gLyogaXNlYXJjaC5jICovCi0gZXh0ZXJuIGNoYXIgKl9ybF9pc2Vh cmNoX3Rlcm1pbmF0b3JzOwotQEAgLTM3Miw2ICs0NDIsNyBAQCBleHRlcm4gaW50IF9ybF9oaXN0 b3J5X3NhdmVkX3BvaW50OwotIGV4dGVybiBfcmxfYXJnX2N4dCBfcmxfYXJnY3h0OwotIAotIC8q IHJlYWRsaW5lLmMgKi8KLStleHRlcm4gaW50IF9ybF9lY2hvaW5nX3A7Ci0gZXh0ZXJuIGludCBf cmxfaG9yaXpvbnRhbF9zY3JvbGxfbW9kZTsKLSBleHRlcm4gaW50IF9ybF9tYXJrX21vZGlmaWVk X2xpbmVzOwotIGV4dGVybiBpbnQgX3JsX2JlbGxfcHJlZmVyZW5jZTsKLUBAIC0zNzksNiArNDUw LDggQEAgZXh0ZXJuIGludCBfcmxfbWV0YV9mbGFnOwotIGV4dGVybiBpbnQgX3JsX2NvbnZlcnRf bWV0YV9jaGFyc190b19hc2NpaTsKLSBleHRlcm4gaW50IF9ybF9vdXRwdXRfbWV0YV9jaGFyczsK LSBleHRlcm4gaW50IF9ybF9iaW5kX3N0dHlfY2hhcnM7Ci0rZXh0ZXJuIGludCBfcmxfcmV2ZXJ0 X2FsbF9hdF9uZXdsaW5lOwotK2V4dGVybiBpbnQgX3JsX2VjaG9fY29udHJvbF9jaGFyczsKLSBl eHRlcm4gY2hhciAqX3JsX2NvbW1lbnRfYmVnaW47Ci0gZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX3Js X3BhcnNpbmdfY29uZGl0aW9uYWxpemVkX291dDsKLSBleHRlcm4gS2V5bWFwIF9ybF9rZXltYXA7 Ci1AQCAtMzg2LDExICs0NTksMjIgQEAgZXh0ZXJuIEZJTEUgKl9ybF9pbl9zdHJlYW07Ci0gZXh0 ZXJuIEZJTEUgKl9ybF9vdXRfc3RyZWFtOwotIGV4dGVybiBpbnQgX3JsX2xhc3RfY29tbWFuZF93 YXNfa2lsbDsKLSBleHRlcm4gaW50IF9ybF9lb2ZfY2hhcjsKLS1leHRlcm4gcHJvY2Vudl90IHJl YWRsaW5lX3RvcF9sZXZlbDsKLStleHRlcm4gcHJvY2Vudl90IF9ybF90b3BfbGV2ZWw7Ci0rZXh0 ZXJuIF9ybF9rZXlzZXFfY3h0ICpfcmxfa3NjeHQ7Ci0gCi0gLyogc2VhcmNoLmMgKi8KLSBleHRl cm4gX3JsX3NlYXJjaF9jeHQgKl9ybF9uc2N4dDsKLSAKLSsvKiBzaWduYWxzLmMgKi8KLStleHRl cm4gaW50IF9ybF9pbnRlcnJ1cHRfaW1tZWRpYXRlbHk7Ci0rZXh0ZXJuIGludCB2b2xhdGlsZSBf cmxfY2F1Z2h0X3NpZ25hbDsKLSsKLStleHRlcm4gaW50IF9ybF9lY2hvY3RsOwotKwotK2V4dGVy biBpbnQgX3JsX2ludHJfY2hhcjsKLStleHRlcm4gaW50IF9ybF9xdWl0X2NoYXI7Ci0rZXh0ZXJu IGludCBfcmxfc3VzcF9jaGFyOwotKwotIC8qIHRlcm1pbmFsLmMgKi8KLSBleHRlcm4gaW50IF9y bF9lbmFibGVfa2V5cGFkOwotIGV4dGVybiBpbnQgX3JsX2VuYWJsZV9tZXRhOwotQEAgLTQwNCw2 ICs0ODgsNyBAQCBleHRlcm4gY2hhciAqX3JsX3Rlcm1fdXA7Ci0gZXh0ZXJuIGNoYXIgKl9ybF90 ZXJtX2RjOwotIGV4dGVybiBjaGFyICpfcmxfdGVybV9jcjsKLSBleHRlcm4gY2hhciAqX3JsX3Rl cm1fSUM7Ci0rZXh0ZXJuIGNoYXIgKl9ybF90ZXJtX2ZvcndhcmRfY2hhcjsKLSBleHRlcm4gaW50 IF9ybF9zY3JlZW5oZWlnaHQ7Ci0gZXh0ZXJuIGludCBfcmxfc2NyZWVud2lkdGg7Ci0gZXh0ZXJu IGludCBfcmxfc2NyZWVuY2hhcnM7Ci1AQCAtNDE2LDUgKzUwMSw2IEBAIGV4dGVybiBpbnQgX3Js X3VuZG9fZ3JvdXBfbGV2ZWw7Ci0gCi0gLyogdmlfbW9kZS5jICovCi0gZXh0ZXJuIGludCBfcmxf dmlfbGFzdF9jb21tYW5kOwotK2V4dGVybiBfcmxfdmltb3Rpb25fY3h0ICpfcmxfdmltdmN4dDsK LSAKLSAjZW5kaWYgLyogX1JMX1BSSVZBVEVfSF8gKi8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL3JlYWRsaW5lL3Jsc2hlbGwuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3 MDMub3JpZy9yZWFkbGluZS9ybHNoZWxsLmgJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3Jsc2hlbGwuaAkyMDExLTA3 LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjMgQEAKLSAvKiBybHNo ZWxsLmggLS0gdXRpbGl0eSBmdW5jdGlvbnMgbm9ybWFsbHkgcHJvdmlkZWQgYnkgYmFzaC4gKi8K LSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rLyogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0gCi0tICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5 LCBhIGxpYnJhcnkgZm9yCi0tICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3Rp dmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJl YWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVk aXRpbmcuICAgICAgCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0Ci0tICAgYW5kL29yIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIs IG9yCi0rICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSAgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUg TGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKLS0gICB1 c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5Ci0tICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBUaGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0 d2FyZSwgYW5kCi0tICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5H IG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vu c2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxl IFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KLSsqLwotIAotICNpZiAhZGVmaW5lZCAoX1JMX1NIRUxMX0hfKQotICNk ZWZpbmUgX1JMX1NIRUxMX0hfCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9y bHN0ZGMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGlu ZS9ybHN0ZGMuaAkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvcmxzdGRjLmgJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAw MDAwMDAgKzAyMDAKLUBAIC0xLDIzICsxLDIzIEBACi0tLyogc3RkYy5oIC0tIG1hY3JvcyB0byBt YWtlIHNvdXJjZSBjb21waWxlIG9uIGJvdGggQU5TSSBDIGFuZCBLJlIgQwotLSAgIGNvbXBpbGVy cy4gKi8KLSsvKiBzdGRjLmggLS0gbWFjcm9zIHRvIG1ha2Ugc291cmNlIGNvbXBpbGUgb24gYm90 aCBBTlNJIEMgYW5kIEsmUiBDIGNvbXBpbGVycy4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5 OTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAxOTkz LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgR05VIEJhc2gsIHRoZSBCb3VybmUgQWdhaW4gU0hlbGwuCi0rICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFy eQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBh bmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIEJhc2ggaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotLSAgIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0t ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0 IHlvdXIgb3B0aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotLQotLSAgIEJhc2ggaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQK LS0gICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBN RVJDSEFOVEFCSUxJVFkKLS0gICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0tICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBSZWFkbGluZSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g Ci0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIEJhc2g7IHNlZSB0aGUgZmlsZSBDT1BZSU5H LiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotLSAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5 IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBh bG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgotKyovCi0gCi0gI2lmICFkZWZpbmVkIChfUkxfU1REQ19IXykKLSAjZGVmaW5lIF9S TF9TVERDX0hfCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9ybHR0eS5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3JsdHR5LmMJ MjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEw NzAzL3JlYWRsaW5lL3JsdHR5LmMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAK LUBAIC0zLDIzICszLDIzIEBACi0gCi0gLyogQ29weXJpZ2h0IChDKSAxOTkyLTIwMDUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCi0tICAgcmVhZGluZyBsaW5lcyBv ZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSsgICBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwg YSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZl IGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCi0gCi0tICAgVGhlIEdOVSBSZWFkbGlu ZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0Ci0tICAg YW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0tICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCi0rICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTog eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIAot LSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUKLS0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5Ci0tICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIFJlYWRsaW5l IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0gICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSAKLS0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4g c2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4g YSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90Ci0tICAgaGF2 ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEg VVNBLiAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotKwotICNkZWZpbmUgUkVB RExJTkVfTElCUkFSWQotIAotICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19IKQotQEAgLTUyLDc3 ICs1MiwxMCBAQCBleHRlcm4gaW50IGVycm5vOwotIHJsX3ZpbnRmdW5jX3QgKnJsX3ByZXBfdGVy bV9mdW5jdGlvbiA9IHJsX3ByZXBfdGVybWluYWw7Ci0gcmxfdm9pZGZ1bmNfdCAqcmxfZGVwcmVw X3Rlcm1fZnVuY3Rpb24gPSBybF9kZXByZXBfdGVybWluYWw7Ci0gCi0tdm9pZCBfcmxfYmxvY2tf c2lnaW50IFBBUkFNUygodm9pZCkpOwotLXZvaWQgX3JsX3JlbGVhc2Vfc2lnaW50IFBBUkFNUygo dm9pZCkpOwotLQotIHN0YXRpYyB2b2lkIHNldF93aW5zaXplIFBBUkFNUygoaW50KSk7Ci0gCi0g LyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiAqLwotIC8qCQkJCQkJCQkgICAgKi8KLS0vKgkJCSAgIFNpZ25hbCBNYW5hZ2Vt ZW50CQkJICAgICovCi0tLyoJCQkJCQkJCSAgICAqLwotLS8qICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLS0KLS0jaWYg ZGVmaW5lZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQotLXN0YXRpYyBzaWdzZXRfdCBzaWdpbnRfc2V0 LCBzaWdpbnRfb3NldDsKLS0jZWxzZSAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCi0tIyAgaWYg ZGVmaW5lZCAoSEFWRV9CU0RfU0lHTkFMUykKLS1zdGF0aWMgaW50IHNpZ2ludF9vbGRtYXNrOwot LSMgIGVuZGlmIC8qIEhBVkVfQlNEX1NJR05BTFMgKi8KLS0jZW5kaWYgLyogIUhBVkVfUE9TSVhf U0lHTkFMUyAqLwotLQotLXN0YXRpYyBpbnQgc2lnaW50X2Jsb2NrZWQ7Ci0tCi0tLyogQ2F1c2Ug U0lHSU5UIHRvIG5vdCBiZSBkZWxpdmVyZWQgdW50aWwgdGhlIGNvcnJlc3BvbmRpbmcgY2FsbCB0 bwotLSAgIF9ybF9yZWxlYXNlX3NpZ2ludCgpLiAqLwotLXZvaWQKLS1fcmxfYmxvY2tfc2lnaW50 ICgpCi0tewotLSAgaWYgKHNpZ2ludF9ibG9ja2VkKQotLSAgICByZXR1cm47Ci0tCi0tI2lmIGRl ZmluZWQgKEhBVkVfUE9TSVhfU0lHTkFMUykKLS0gIHNpZ2VtcHR5c2V0ICgmc2lnaW50X3NldCk7 Ci0tICBzaWdlbXB0eXNldCAoJnNpZ2ludF9vc2V0KTsKLS0gIHNpZ2FkZHNldCAoJnNpZ2ludF9z ZXQsIFNJR0lOVCk7Ci0tICBzaWdwcm9jbWFzayAoU0lHX0JMT0NLLCAmc2lnaW50X3NldCwgJnNp Z2ludF9vc2V0KTsKLS0jZWxzZSAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCi0tIyAgaWYgZGVm aW5lZCAoSEFWRV9CU0RfU0lHTkFMUykKLS0gIHNpZ2ludF9vbGRtYXNrID0gc2lnYmxvY2sgKHNp Z21hc2sgKFNJR0lOVCkpOwotLSMgIGVsc2UgLyogIUhBVkVfQlNEX1NJR05BTFMgKi8KLS0jICAg IGlmIGRlZmluZWQgKEhBVkVfVVNHX1NJR0hPTEQpCi0tICBzaWdob2xkIChTSUdJTlQpOwotLSMg ICAgZW5kaWYgLyogSEFWRV9VU0dfU0lHSE9MRCAqLwotLSMgIGVuZGlmIC8qICFIQVZFX0JTRF9T SUdOQUxTICovCi0tI2VuZGlmIC8qICFIQVZFX1BPU0lYX1NJR05BTFMgKi8KLS0KLS0gIHNpZ2lu dF9ibG9ja2VkID0gMTsKLS19Ci0tCi0tLyogQWxsb3cgU0lHSU5UIHRvIGJlIGRlbGl2ZXJlZC4g Ki8KLS12b2lkCi0tX3JsX3JlbGVhc2Vfc2lnaW50ICgpCi0tewotLSAgaWYgKHNpZ2ludF9ibG9j a2VkID09IDApCi0tICAgIHJldHVybjsKLS0KLS0jaWYgZGVmaW5lZCAoSEFWRV9QT1NJWF9TSUdO QUxTKQotLSAgc2lncHJvY21hc2sgKFNJR19TRVRNQVNLLCAmc2lnaW50X29zZXQsIChzaWdzZXRf dCAqKU5VTEwpOwotLSNlbHNlCi0tIyAgaWYgZGVmaW5lZCAoSEFWRV9CU0RfU0lHTkFMUykKLS0g IHNpZ3NldG1hc2sgKHNpZ2ludF9vbGRtYXNrKTsKLS0jICBlbHNlIC8qICFIQVZFX0JTRF9TSUdO QUxTICovCi0tIyAgICBpZiBkZWZpbmVkIChIQVZFX1VTR19TSUdIT0xEKQotLSAgc2lncmVsc2Ug KFNJR0lOVCk7Ci0tIyAgICBlbmRpZiAvKiBIQVZFX1VTR19TSUdIT0xEICovCi0tIyAgZW5kaWYg LyogIUhBVkVfQlNEX1NJR05BTFMgKi8KLS0jZW5kaWYgLyogIUhBVkVfUE9TSVhfU0lHTkFMUyAq LwotLQotLSAgc2lnaW50X2Jsb2NrZWQgPSAwOwotLX0KLS0KLS0vKiAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0tLyoJ CQkJCQkJCSAgICAqLwotIC8qCQkgICAgICBTYXZpbmcgYW5kIFJlc3RvcmluZyB0aGUgVFRZCSAg ICAJICAgICovCi0gLyoJCQkJCQkJCSAgICAqLwotIC8qICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLUBAIC0yMDQsOCAr MTM3LDkgQEAgc2F2ZV90dHlfY2hhcnMgKHRpb3ApCi0gCi0gICBpZiAodGlvcC0+ZmxhZ3MgJiBU Q0hBUlNfU0VUKQotICAgICB7Ci0tICAgICAgX3JsX3R0eV9jaGFycy50X2ludHIgPSB0aW9wLT50 Y2hhcnMudF9pbnRyYzsKLS0gICAgICBfcmxfdHR5X2NoYXJzLnRfcXVpdCA9IHRpb3AtPnRjaGFy cy50X3F1aXRjOwotKyAgICAgIF9ybF9pbnRyX2NoYXIgPSBfcmxfdHR5X2NoYXJzLnRfaW50ciA9 IHRpb3AtPnRjaGFycy50X2ludHJjOwotKyAgICAgIF9ybF9xdWl0X2NoYXIgPSBfcmxfdHR5X2No YXJzLnRfcXVpdCA9IHRpb3AtPnRjaGFycy50X3F1aXRjOwotKwotICAgICAgIF9ybF90dHlfY2hh cnMudF9zdGFydCA9IHRpb3AtPnRjaGFycy50X3N0YXJ0YzsKLSAgICAgICBfcmxfdHR5X2NoYXJz LnRfc3RvcCA9IHRpb3AtPnRjaGFycy50X3N0b3BjOwotICAgICAgIF9ybF90dHlfY2hhcnMudF9l b2YgPSB0aW9wLT50Y2hhcnMudF9lb2ZjOwotQEAgLTIxNSw3ICsxNDksOCBAQCBzYXZlX3R0eV9j aGFycyAodGlvcCkKLSAKLSAgIGlmICh0aW9wLT5mbGFncyAmIExUQ0hBUlNfU0VUKQotICAgICB7 Ci0tICAgICAgX3JsX3R0eV9jaGFycy50X3N1c3AgPSB0aW9wLT5sdGNoYXJzLnRfc3VzcGM7Ci0r ICAgICAgX3JsX3N1c3BfY2hhciA9IF9ybF90dHlfY2hhcnMudF9zdXNwID0gdGlvcC0+bHRjaGFy cy50X3N1c3BjOwotKwotICAgICAgIF9ybF90dHlfY2hhcnMudF9kc3VzcCA9IHRpb3AtPmx0Y2hh cnMudF9kc3VzcGM7Ci0gICAgICAgX3JsX3R0eV9jaGFycy50X3JlcHJpbnQgPSB0aW9wLT5sdGNo YXJzLnRfcnBybnRjOwotICAgICAgIF9ybF90dHlfY2hhcnMudF9mbHVzaCA9IHRpb3AtPmx0Y2hh cnMudF9mbHVzaGM7Ci1AQCAtMjY4LDcgKzIwMyw3IEBAIHNldF90dHlfc2V0dGluZ3MgKHR0eSwg dGlvcCkKLSAgICAgICBpb2N0bCAodHR5LCBUSU9DU0VUTiwgJih0aW9wLT5zZ3R0eWIpKTsKLSAg ICAgICB0aW9wLT5mbGFncyAmPSB+U0dUVFlfU0VUOwotICAgICB9Ci0tICByZWFkbGluZV9lY2hv aW5nX3AgPSAxOwotKyAgX3JsX2VjaG9pbmdfcCA9IDE7Ci0gCi0gI2lmIGRlZmluZWQgKFRJT0NM U0VUKQotICAgaWYgKHRpb3AtPmZsYWdzICYgTEZMQUdfU0VUKQotQEAgLTMwMiw3ICsyMzcsOCBA QCBwcmVwYXJlX3Rlcm1pbmFsX3NldHRpbmdzIChtZXRhX2ZsYWcsIG9sCi0gICAgICBpbnQgbWV0 YV9mbGFnOwotICAgICAgVElPVFlQRSBvbGR0aW8sICp0aW9wOwotIHsKLS0gIHJlYWRsaW5lX2Vj aG9pbmdfcCA9IChvbGR0aW8uc2d0dHliLnNnX2ZsYWdzICYgRUNITyk7Ci0rICBfcmxfZWNob2lu Z19wID0gKG9sZHRpby5zZ3R0eWIuc2dfZmxhZ3MgJiBFQ0hPKTsKLSsgIF9ybF9lY2hvY3RsID0g KG9sZHRpby5zZ3R0eWIuc2dfZmxhZ3MgJiBFQ0hPQ1RMKTsKLSAKLSAgIC8qIENvcHkgdGhlIG9y aWdpbmFsIHNldHRpbmdzIHRvIHRoZSBzdHJ1Y3R1cmUgd2UncmUgZ29pbmcgdG8gdXNlIGZvcgot ICAgICAgb3VyIHNldHRpbmdzLiAqLwotQEAgLTQzMywxMCArMzY5LDEwIEBAIHNhdmVfdHR5X2No YXJzICh0aW9wKQotICNpZmRlZiBWUkVQUklOVAotICAgX3JsX3R0eV9jaGFycy50X3JlcHJpbnQg PSB0aW9wLT5jX2NjW1ZSRVBSSU5UXTsKLSAjZW5kaWYKLS0gIF9ybF90dHlfY2hhcnMudF9pbnRy ID0gdGlvcC0+Y19jY1tWSU5UUl07Ci0tICBfcmxfdHR5X2NoYXJzLnRfcXVpdCA9IHRpb3AtPmNf Y2NbVlFVSVRdOwotKyAgX3JsX2ludHJfY2hhciA9IF9ybF90dHlfY2hhcnMudF9pbnRyID0gdGlv cC0+Y19jY1tWSU5UUl07Ci0rICBfcmxfcXVpdF9jaGFyID0gX3JsX3R0eV9jaGFycy50X3F1aXQg PSB0aW9wLT5jX2NjW1ZRVUlUXTsKLSAjaWZkZWYgVlNVU1AKLS0gIF9ybF90dHlfY2hhcnMudF9z dXNwID0gdGlvcC0+Y19jY1tWU1VTUF07Ci0rICBfcmxfc3VzcF9jaGFyID0gX3JsX3R0eV9jaGFy cy50X3N1c3AgPSB0aW9wLT5jX2NjW1ZTVVNQXTsKLSAjZW5kaWYKLSAjaWZkZWYgVkRTVVNQCi0g ICBfcmxfdHR5X2NoYXJzLnRfZHN1c3AgPSB0aW9wLT5jX2NjW1ZEU1VTUF07Ci1AQCAtNDY0LDcg KzQwMCw3IEBAIHN0YXRpYyB2b2lkCi0gcmx0dHlfd2FybmluZyAobXNnKQotICAgICAgY2hhciAq bXNnOwotIHsKLS0gIGZwcmludGYgKHN0ZGVyciwgInJlYWRsaW5lOiB3YXJuaW5nOiAlc1xuIiwg bXNnKTsKLSsgIF9ybF9lcnJtc2cgKCJ3YXJuaW5nOiAlcyIsIG1zZyk7Ci0gfQotICNlbmRpZgot IAotQEAgLTQ3NSw3ICs0MTEsNyBAQCBUSU9UWVBFICp0cDsKLSB7Ci0gICBpZiAoKHRwLT5jX29m bGFnICYgT1BPU1QpID09IDApCi0gICAgIHsKLS0gICAgICBybHR0eV93YXJuaW5nICgidHVybmlu ZyBvbiBPUE9TVCBmb3IgdGVybWluYWxcciIpOwotKyAgICAgIF9ybF9lcnJtc2cgKCJ3YXJuaW5n OiB0dXJuaW5nIG9uIE9QT1NUIGZvciB0ZXJtaW5hbFxyIik7Ci0gICAgICAgdHAtPmNfb2ZsYWcg fD0gT1BPU1R8T05MQ1I7Ci0gICAgIH0KLSB9Ci1AQCAtNTAwLDggKzQzNiw4IEBAIF9nZXRfdHR5 X3NldHRpbmdzICh0dHksIHRpb3ApCi0gCX0KLSAgICAgICBpZiAoT1VUUFVUX0JFSU5HX0ZMVVNI RUQgKHRpb3ApKQotIAl7Ci0tI2lmIGRlZmluZWQgKEZMVVNITykgJiYgZGVmaW5lZCAoX0FJWDQx KQotLQkgIHJsdHR5X3dhcm5pbmcgKCJ0dXJuaW5nIG9mZiBvdXRwdXQgZmx1c2hpbmciKTsKLSsj aWYgZGVmaW5lZCAoRkxVU0hPKQotKwkgIF9ybF9lcnJtc2cgKCJ3YXJuaW5nOiB0dXJuaW5nIG9m ZiBvdXRwdXQgZmx1c2hpbmciKTsKLSAJICB0aW9wLT5jX2xmbGFnICY9IH5GTFVTSE87Ci0gCSAg YnJlYWs7Ci0gI2Vsc2UKLUBAIC01ODAsNyArNTE2LDEwIEBAIHByZXBhcmVfdGVybWluYWxfc2V0 dGluZ3MgKG1ldGFfZmxhZywgb2wKLSAgICAgIGludCBtZXRhX2ZsYWc7Ci0gICAgICBUSU9UWVBF IG9sZHRpbywgKnRpb3A7Ci0gewotLSAgcmVhZGxpbmVfZWNob2luZ19wID0gKG9sZHRpby5jX2xm bGFnICYgRUNITyk7Ci0rICBfcmxfZWNob2luZ19wID0gKG9sZHRpby5jX2xmbGFnICYgRUNITyk7 Ci0rI2lmIGRlZmluZWQgKEVDSE9DVEwpCi0rICBfcmxfZWNob2N0bCA9IChvbGR0aW8uY19sZmxh ZyAmIEVDSE9DVEwpOwotKyNlbmRpZgotIAotICAgdGlvcC0+Y19sZmxhZyAmPSB+KElDQU5PTiB8 IEVDSE8pOwotIAotQEAgLTY0Myw3ICs1ODIsNyBAQCB2b2lkCi0gcmxfcHJlcF90ZXJtaW5hbCAo bWV0YV9mbGFnKQotICAgICAgaW50IG1ldGFfZmxhZzsKLSB7Ci0tICByZWFkbGluZV9lY2hvaW5n X3AgPSAxOwotKyAgX3JsX2VjaG9pbmdfcCA9IDE7Ci0gfQotIAotIHZvaWQKLUBAIC02NjUsMTcg KzYwNCwxOSBAQCBybF9wcmVwX3Rlcm1pbmFsIChtZXRhX2ZsYWcpCi0gICAvKiBUcnkgdG8ga2Vl cCB0aGlzIGZ1bmN0aW9uIGZyb20gYmVpbmcgSU5UZXJydXB0ZWQuICovCi0gICBfcmxfYmxvY2tf c2lnaW50ICgpOwotIAotLSAgdHR5ID0gZmlsZW5vIChybF9pbnN0cmVhbSk7Ci0rICB0dHkgPSBy bF9pbnN0cmVhbSA/IGZpbGVubyAocmxfaW5zdHJlYW0pIDogZmlsZW5vIChzdGRpbik7Ci0gCi0g ICBpZiAoZ2V0X3R0eV9zZXR0aW5ncyAodHR5LCAmdGlvKSA8IDApCi0gICAgIHsKLSAjaWYgZGVm aW5lZCAoRU5PVFNVUCkKLS0gICAgICAvKiBNYWNPUyBYLCBhdCBsZWFzdCwgbGllcyBhYm91dCB0 aGUgdmFsdWUgb2YgZXJybm8gaWYgdGNnZXRhdHRyIGZhaWxzLiAqLwotLSAgICAgIGlmIChlcnJu byA9PSBFTk9UVFkgfHwgZXJybm8gPT0gRU5PVFNVUCkKLSsgICAgICAvKiBNYWNPUyBYIGFuZCBM aW51eCwgYXQgbGVhc3QsIGxpZSBhYm91dCB0aGUgdmFsdWUgb2YgZXJybm8gaWYKLSsJIHRjZ2V0 YXR0ciBmYWlscy4gKi8KLSsgICAgICBpZiAoZXJybm8gPT0gRU5PVFRZIHx8IGVycm5vID09IEVJ TlZBTCB8fCBlcnJubyA9PSBFTk9UU1VQKQotICNlbHNlCi0tICAgICAgaWYgKGVycm5vID09IEVO T1RUWSkKLSsgICAgICBpZiAoZXJybm8gPT0gRU5PVFRZIHx8IGVycm5vID09IEVJTlZBTCkKLSAj ZW5kaWYKLS0JcmVhZGxpbmVfZWNob2luZ19wID0gMTsJCS8qIFhYWCAqLwotKwlfcmxfZWNob2lu Z19wID0gMTsJCS8qIFhYWCAqLwotKwotICAgICAgIF9ybF9yZWxlYXNlX3NpZ2ludCAoKTsKLSAg ICAgICByZXR1cm47Ci0gICAgIH0KLUBAIC03MzcsNyArNjc4LDcgQEAgcmxfZGVwcmVwX3Rlcm1p bmFsICgpCi0gICAvKiBUcnkgdG8ga2VlcCB0aGlzIGZ1bmN0aW9uIGZyb20gYmVpbmcgaW50ZXJy dXB0ZWQuICovCi0gICBfcmxfYmxvY2tfc2lnaW50ICgpOwotIAotLSAgdHR5ID0gZmlsZW5vIChy bF9pbnN0cmVhbSk7Ci0rICB0dHkgPSBybF9pbnN0cmVhbSA/IGZpbGVubyAocmxfaW5zdHJlYW0p IDogZmlsZW5vIChzdGRvdXQpOwotIAotICAgaWYgKF9ybF9lbmFibGVfa2V5cGFkKQotICAgICBf cmxfY29udHJvbF9rZXlwYWQgKDApOwotQEAgLTg2Miw3ICs4MDMsNyBAQCBzZXRfc3BlY2lhbF9j aGFyIChrbWFwLCB0aW9wLCBzYywgZnVuYykKLSB9Ci0gCi0gI2RlZmluZSBSRVNFVF9TUEVDSUFM KGMpIFwKLS0gIGlmIChjICE9IC0xICYmIGttYXBbKHVuc2lnbmVkIGNoYXIpY10udHlwZSA9PSBJ U0ZVTkMpCi0rICBpZiAoYyAhPSAtMSAmJiBrbWFwWyh1bnNpZ25lZCBjaGFyKWNdLnR5cGUgPT0g SVNGVU5DKSBcCi0gICAgIGttYXBbKHVuc2lnbmVkIGNoYXIpY10uZnVuY3Rpb24gPSBybF9pbnNl cnQ7Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC05MzMsNyArODc0LDYgQEAgcmx0dHlfc2V0X2RlZmF1 bHRfYmluZGluZ3MgKGttYXApCi0gI2lmICFkZWZpbmVkIChOT19UVFlfRFJJVkVSKQotICAgVElP VFlQRSB0dHlidWZmOwotICAgaW50IHR0eTsKLS0gIHN0YXRpYyBpbnQgY2FsbGVkID0gMDsKLSAK LSAgIHR0eSA9IGZpbGVubyAocmxfaW5zdHJlYW0pOwotIAotSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvcmVhZGxpbmUvcmx0dHkuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3 MDMub3JpZy9yZWFkbGluZS9ybHR0eS5oCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9ybHR0eS5oCTIwMTEtMDctMDMg MTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNSArMSwyMyBAQAotIC8qIHJsdHR5Lmgg LSB0dHkgZHJpdmVyLXJlbGF0ZWQgZGVmaW5pdGlvbnMgdXNlZCBieSBzb21lIGxpYnJhcnkgZmls ZXMuICovCi0gCi0tLyogQ29weXJpZ2h0IChDKSAxOTk1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk5NS0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgUmVhZGxpbmUgTGlicmFy eSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgotLSAgIHJvdXRpbmVzIGZvciBwcm92aWRpbmcgRW1h Y3Mgc3R5bGUgbGluZSBpbnB1dCB0byBwcm9ncmFtcyB0aGF0IGFzawotLSAgIGZvciBpdC4KLSsg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5l KSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0 aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCi0gCi0tICAgVGhlIExpYnJhcnkg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0gICBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0gCi0tICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0tICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBh bmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElD RU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2Us IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgUmVhZGxpbmUgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotICNpZiAhZGVmaW5lZCAo X1JMVFRZX0hfKQotICNkZWZpbmUgX1JMVFRZX0hfCi1AQCAtNzksNyArNzcsNCBAQCB0eXBlZGVm IHN0cnVjdCBfcmxfdHR5X2NoYXJzIHsKLSAgIHVuc2lnbmVkIGNoYXIgdF9zdGF0dXM7Ci0gfSBf UkxfVFRZX0NIQVJTOwotIAotLWV4dGVybiB2b2lkIF9ybF9ibG9ja19zaWdpbnQgUEFSQU1TKCh2 b2lkKSk7Ci0tZXh0ZXJuIHZvaWQgX3JsX3JlbGVhc2Vfc2lnaW50IFBBUkFNUygodm9pZCkpOwot LQotICNlbmRpZiAvKiBfUkxUVFlfSF8gKi8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3Jl YWRsaW5lL3JsdHlwZWRlZnMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMu b3JpZy9yZWFkbGluZS9ybHR5cGVkZWZzLmgJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3JsdHlwZWRlZnMuaAkyMDEx LTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjMgQEAKLSAvKiBy bHR5cGVkZWZzLmggLS0gVHlwZSBkZWNsYXJhdGlvbnMgZm9yIHJlYWRsaW5lIGZ1bmN0aW9ucy4g Ki8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5l IExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBp bnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotKyAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsg ICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhp c3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0g ICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot ICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdOVSBS ZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAot LSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGgg R05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVk IENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0 aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1 OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0gI2lmbmRlZiBfUkxfVFlQRURFRlNfSF8K LSAjZGVmaW5lIF9STF9UWVBFREVGU19IXwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVh ZGxpbmUvcmx3aW5zaXplLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9y aWcvcmVhZGxpbmUvcmx3aW5zaXplLmgJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3Jsd2luc2l6ZS5oCTIwMTEtMDct MDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNiArMSwyNCBAQAotIC8qIHJsd2lu c2l6ZS5oIC0tIGFuIGF0dGVtcHQgdG8gaXNvbGF0ZSBzb21lIG9mIHRoZSBzeXN0ZW0tc3BlY2lm aWMgZGVmaW5lcwotICAgIGZvciBgc3RydWN0IHdpbnNpemUnIGFuZCBUSU9DR1dJTlNaLiAqLwot IAotLS8qIENvcHlyaWdodCAoQykgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsvKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSAKLS0gICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIFJlYWRsaW5lIExpYnJhcnkgKHRoZSBM aWJyYXJ5KSwgYSBzZXQgb2YKLS0gICByb3V0aW5lcyBmb3IgcHJvdmlkaW5nIEVtYWNzIHN0eWxl IGxpbmUgaW5wdXQgdG8gcHJvZ3JhbXMgdGhhdCBhc2sKLS0gICBmb3IgaXQuCi0rICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGli cmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1 dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRoZSBMaWJyYXJ5IGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBSZWFk bGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0gICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tICAgYW55IGxhdGVyIHZlcnNp b24uCi0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotIAotLSAgIFRoZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dAotLSAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotLSAgIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0KLS0gICBUaGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAg aXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJ ZiB5b3UgZG8gbm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAz MzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAKLSAjaWYgIWRlZmluZWQgKF9STFdJTlNJ WkVfSF8pCi0gI2RlZmluZSBfUkxXSU5TSVpFX0hfCi1AQCAtNTMsNSArNTEsOCBAQAotICMgIGVu ZGlmIC8qIEhBVkVfU1lTX1BURV9IICovCi0gI2VuZGlmIC8qICFTVFJVQ1RfV0lOU0laRV9JTl9U RVJNSU9TICYmICFTVFJVQ1RfV0lOU0laRV9JTl9TWVNfSU9DVEwgKi8KLSAKLS0jZW5kaWYgLyog X1JMX1dJTlNJWkVfSCAqLwotKyNpZiBkZWZpbmVkIChNX1VOSVgpICYmICFkZWZpbmVkIChfU0NP X0RTKSAmJiAhZGVmaW5lZCAodGNmbG93KQotKyMgIGRlZmluZSB0Y2Zsb3coZmQsIGFjdGlvbikJ aW9jdGwoZmQsIFRDWE9OQywgYWN0aW9uKQotKyNlbmRpZgotIAotKyNlbmRpZiAvKiBfUkxfV0lO U0laRV9IICovCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9zYXZlc3RyaW5n LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvc2F2 ZXN0cmluZy5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9yZWFkbGluZS9zYXZlc3RyaW5nLmMJMjAxMS0wNy0wMyAxMDo0MToyMS4w MDAwMDAwMDAgKzAyMDAKLUBAIC0xLDI0ICsxLDI0IEBACi0tLyogc2F2ZXN0cmluZy5jICAqLwot Ky8qIHNhdmVzdHJpbmcuYyAtIGZ1bmN0aW9uIHZlcnNpb24gb2Ygc2F2ZXN0cmluZyBmb3IgYmFj a3dhcmRzIGNvbXBhdGliaWxpdHkgKi8KLSAKLSAvKiBDb3B5cmlnaHQgKEMpIDE5OTgsMjAwMyBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0gICByZWFkaW5nIGxp bmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgot KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxp bmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJh Y3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBUaGUgR05VIFJl YWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQK LS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3 YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVh ZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBv ZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2Vw dCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0g ICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw MjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0rCi0gI2RlZmlu ZSBSRUFETElORV9MSUJSQVJZCi0gCi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotQEAgLTMzLDUgKzMz LDkgQEAgY2hhciAqCi0gc2F2ZXN0cmluZyAocykKLSAgICAgIGNvbnN0IGNoYXIgKnM7Ci0gewot LSAgcmV0dXJuICgoY2hhciAqKXN0cmNweSAoKGNoYXIgKil4bWFsbG9jICgxICsgc3RybGVuIChz KSksIChzKSkpOwotKyAgY2hhciAqcmV0OwotKwotKyAgcmV0ID0gKGNoYXIgKil4bWFsbG9jIChz dHJsZW4gKHMpICsgMSk7Ci0rICBzdHJjcHkgKHJldCwgcyk7Ci0rICByZXR1cm4gcmV0OwotIH0K LUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3NlYXJjaC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3NlYXJjaC5jCTIwMTEtMDct MDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFk bGluZS9zZWFyY2guYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEs MjUgKzEsMjQgQEAKLSAvKiBzZWFyY2guYyAtIGNvZGUgZm9yIG5vbi1pbmNyZW1lbnRhbCBzZWFy Y2hpbmcgaW4gZW1hY3MgYW5kIHZpIG1vZGVzLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk5 Mi0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykg MTk5Mi0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIHRoZSBSZWFkbGluZSBMaWJyYXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9m Ci0tICAgcm91dGluZXMgZm9yIHByb3ZpZGluZyBFbWFjcyBzdHlsZSBsaW5lIGlucHV0IHRvIHBy b2dyYW1zIHRoYXQgYXNrCi0tICAgZm9yIGl0LgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVh ZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRp dGluZy4gICAgICAKLSAKLS0gICBUaGUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0 d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwg b3IgKGF0IHlvdXIgb3B0aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBSZWFkbGlu ZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0tICAgVGhl IExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwgYnV0Ci0tICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBp cyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkg a2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QK LS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMSBVU0EuICovCi0gI2RlZmluZSBSRUFETElORV9MSUJSQVJZCi0gCi0gI2lmIGRlZmlu ZWQgKEhBVkVfQ09ORklHX0gpCi1AQCAtNzAsNyArNjksNiBAQCBzdGF0aWMgaW50IHJsX2hpc3Rv cnlfc2VhcmNoX3BvczsKLSBzdGF0aWMgY2hhciAqaGlzdG9yeV9zZWFyY2hfc3RyaW5nOwotIHN0 YXRpYyBpbnQgaGlzdG9yeV9zdHJpbmdfc2l6ZTsKLSAKLS1zdGF0aWMgVU5ET19MSVNUICpub25p bmNfc2F2ZWRfdW5kb19saXN0OwotIHN0YXRpYyB2b2lkIG1ha2VfaGlzdG9yeV9saW5lX2N1cnJl bnQgUEFSQU1TKChISVNUX0VOVFJZICopKTsKLSBzdGF0aWMgaW50IG5vbmluY19zZWFyY2hfZnJv bV9wb3MgUEFSQU1TKChjaGFyICosIGludCwgaW50KSk7Ci0gc3RhdGljIGludCBub25pbmNfZG9z ZWFyY2ggUEFSQU1TKChjaGFyICosIGludCkpOwotQEAgLTIxMiw4ICsyMTAsOCBAQCBfcmxfbnNl YXJjaF9pbml0IChkaXIsIHBjaGFyKQotICAgcmxfZW5kID0gcmxfcG9pbnQgPSAwOwotIAotICAg cCA9IF9ybF9tYWtlX3Byb21wdF9mb3Jfc2VhcmNoIChwY2hhciA/IHBjaGFyIDogJzonKTsKLS0g IHJsX21lc3NhZ2UgKHAsIDAsIDApOwotLSAgZnJlZSAocCk7Ci0rICBybF9tZXNzYWdlICgiJXMi LCBwLCAwKTsKLSsgIHhmcmVlIChwKTsKLSAKLSAgIFJMX1NFVFNUQVRFKFJMX1NUQVRFX05TRUFS Q0gpOwotIAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvc2hlbGwuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9zaGVsbC5jCTIw MTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcw My9yZWFkbGluZS9zaGVsbC5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1A QCAtMSwyNSArMSwyNSBAQAotIC8qIHNoZWxsLmMgLS0gcmVhZGxpbmUgdXRpbGl0eSBmdW5jdGlv bnMgdGhhdCBhcmUgbm9ybWFsbHkgcHJvdmlkZWQgYnkKLSAJICAgICAgYmFzaCB3aGVuIHJlYWRs aW5lIGlzIGxpbmtlZCBhcyBwYXJ0IG9mIHRoZSBzaGVsbC4gKi8KLSAKLS0vKiBDb3B5cmlnaHQg KEMpIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChD KSAxOTk3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCi0t ICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3Rv cnkgZWRpdGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExp YnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4 dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCi0gCi0t ICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0Ci0tICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCi0rICAgUmVhZGxpbmUg aXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKLS0gICB1c2VmdWwsIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5Ci0tICAgb2Yg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBUaGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAgaXMg Z2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5 b3UgZG8gbm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAs IEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBS ZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsq LwotKwotICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQotIAotICNpZiBkZWZpbmVkIChIQVZFX0NP TkZJR19IKQotQEAgLTEzMCwxMiArMTMwLDEyIEBAIHNoX3NldF9saW5lc19hbmRfY29sdW1ucyAo bGluZXMsIGNvbHMpCi0gICBiID0gKGNoYXIgKil4bWFsbG9jIChJTlRfU1RSTEVOX0JPVU5EIChp bnQpICsgMSk7Ci0gICBzcHJpbnRmIChiLCAiJWQiLCBsaW5lcyk7Ci0gICBzZXRlbnYgKCJMSU5F UyIsIGIsIDEpOwotLSAgZnJlZSAoYik7Ci0rICB4ZnJlZSAoYik7Ci0gCi0gICBiID0gKGNoYXIg Kil4bWFsbG9jIChJTlRfU1RSTEVOX0JPVU5EIChpbnQpICsgMSk7Ci0gICBzcHJpbnRmIChiLCAi JWQiLCBjb2xzKTsKLSAgIHNldGVudiAoIkNPTFVNTlMiLCBiLCAxKTsKLS0gIGZyZWUgKGIpOwot KyAgeGZyZWUgKGIpOwotICNlbHNlIC8qICFIQVZFX1NFVEVOViAqLwotICMgIGlmIGRlZmluZWQg KEhBVkVfUFVURU5WKQotICAgYiA9IChjaGFyICopeG1hbGxvYyAoSU5UX1NUUkxFTl9CT1VORCAo aW50KSArIHNpemVvZiAoIkxJTkVTPSIpICsgMSk7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9yZWFkbGluZS9zaGxpYi9NYWtlZmlsZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAu MjAxMTA3MDMub3JpZy9yZWFkbGluZS9zaGxpYi9NYWtlZmlsZS5pbgkyMDExLTA3LTAzIDEwOjQw OjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvc2hs aWIvTWFrZWZpbGUuaW4JMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0x LDIxICsxLDIwIEBACi0gIyMgLSotIHRleHQgLSotICMjCi0gIyBNYWtlZmlsZSBmb3IgdGhlIEdO VSByZWFkbGluZSBsaWJyYXJ5IHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQuCi0gIwotLSMgQ29weXJp Z2h0IChDKSAxOTk4LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyBDb3B5 cmlnaHQgKEMpIDE5OTgtMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0j IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0tIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSMgYW55IGxhdGVy IHZlcnNpb24uCi0tCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0jIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl Ci0tIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9u LCBNQSAwMjExMSBVU0EuCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rIyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0r IyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgotIAotIFBBQ0tBR0UgPSBAUEFDS0FHRV9OQU1FQAotIFZFUlNJT04gPSBAUEFDS0FH RV9WRVJTSU9OQAotQEAgLTMxLDcgKzMwLDcgQEAgUkxfTElCUkFSWV9OQU1FID0gcmVhZGxpbmUK LSBkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKLSAKLSBzcmNkaXIgPSBAc3JjZGlyQAotLVZQ QVRIID0gLjpAdG9wX3NyY2RpckAKLStWUEFUSCA9IEB0b3Bfc3JjZGlyQAotIHRvcGRpciA9IEB0 b3Bfc3JjZGlyQAotIEJVSUxEX0RJUiA9IEBCVUlMRF9ESVJACi0gCi1AQCAtNTEsNiArNTAsNyBA QCBMTiA9IGxuCi0gU0hFTEwgPSBATUFLRV9TSEVMTEAKLSAKLSBob3N0X29zID0gQGhvc3Rfb3NA Ci0raG9zdF92ZW5kb3IgPSBAaG9zdF92ZW5kb3JACi0gCi0gcHJlZml4ID0gQHByZWZpeEAKLSBl eGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLUBAIC01OCw3ICs1OCw3IEBAIGluY2x1ZGVkaXIg PSBAaW5jbHVkZWRpckAKLSBiaW5kaXIgPSBAYmluZGlyQAotIGxpYmRpciA9IEBsaWJkaXJACi0g ZGF0YWRpciA9IEBkYXRhZGlyQAotLWxvY2FsZWRpciA9ICQoZGF0YWRpcikvbG9jYWxlCi0rbG9j YWxlZGlyID0gQGxvY2FsZWRpckAKLSAKLSAjIFN1cHBvcnQgYW4gYWx0ZXJuYXRlIGRlc3RpbmF0 aW9uIHJvb3QgZGlyZWN0b3J5IGZvciBwYWNrYWdlIGJ1aWxkaW5nCi0gREVTVERJUiA9Ci1AQCAt MTIyLDggKzEyMiw2IEBAIFNIQVJFRF9SRUFETElORSA9ICQoU0hMSUJfTElCUFJFRilyZWFkbGkK LSBTSEFSRURfSElTVE9SWSA9ICQoU0hMSUJfTElCUFJFRiloaXN0b3J5JChTSExJQl9ET1QpJChT SExJQl9MSUJWRVJTSU9OKQotIFNIQVJFRF9MSUJTID0gJChTSEFSRURfUkVBRExJTkUpICQoU0hB UkVEX0hJU1RPUlkpCi0gCi0tV0NXSURUSF9PQkogPSBAV0NXSURUSF9PQkpACi0tCi0gIyBUaGUg QyBjb2RlIHNvdXJjZSBmaWxlcyBmb3IgdGhpcyBsaWJyYXJ5LgotIENTT1VSQ0VTID0gJCh0b3Bk aXIpL3JlYWRsaW5lLmMgJCh0b3BkaXIpL2Z1bm1hcC5jICQodG9wZGlyKS9rZXltYXBzLmMgXAot IAkgICAkKHRvcGRpcikvdmlfbW9kZS5jICQodG9wZGlyKS9wYXJlbnMuYyAkKHRvcGRpcikvcmx0 dHkuYyBcCi1AQCAtMTMxLDEyICsxMjksMTIgQEAgQ1NPVVJDRVMgPSAkKHRvcGRpcikvcmVhZGxp bmUuYyAkKHRvcGRpcgotIAkgICAkKHRvcGRpcikvZGlzcGxheS5jICQodG9wZGlyKS9zaWduYWxz LmMgJCh0b3BkaXIpL2VtYWNzX2tleW1hcC5jIFwKLSAJICAgJCh0b3BkaXIpL3ZpX2tleW1hcC5j ICQodG9wZGlyKS91dGlsLmMgJCh0b3BkaXIpL2tpbGwuYyBcCi0gCSAgICQodG9wZGlyKS91bmRv LmMgJCh0b3BkaXIpL21hY3JvLmMgJCh0b3BkaXIpL2lucHV0LmMgXAotLQkgICAkKHRvcGRpcikv Y2FsbGJhY2suYyAkKHRvcGRpcikvdGVybWluYWwuYyAkKHRvcGRpcikveG1hbGxvYy5jIFwKLSsJ ICAgJCh0b3BkaXIpL2NhbGxiYWNrLmMgJCh0b3BkaXIpL3Rlcm1pbmFsLmMgJCh0b3BkaXIpL3ht YWxsb2MuYyAkKHRvcGRpcikveGZyZWUuYyBcCi0gCSAgICQodG9wZGlyKS9oaXN0b3J5LmMgJCh0 b3BkaXIpL2hpc3RzZWFyY2guYyAkKHRvcGRpcikvaGlzdGV4cGFuZC5jIFwKLSAJICAgJCh0b3Bk aXIpL2hpc3RmaWxlLmMgJCh0b3BkaXIpL25scy5jICQodG9wZGlyKS9zZWFyY2guYyBcCi0gCSAg ICQodG9wZGlyKS9zaGVsbC5jICQodG9wZGlyKS9zYXZlc3RyaW5nLmMgJCh0b3BkaXIpL3RpbGRl LmMgXAotIAkgICAkKHRvcGRpcikvdGV4dC5jICQodG9wZGlyKS9taXNjLmMgJCh0b3BkaXIpL2Nv bXBhdC5jIFwKLS0JICAgJCh0b3BkaXIpL21idXRpbC5jICQodG9wZGlyKS9zdXBwb3J0L3djd2lk dGguYwotKwkgICAkKHRvcGRpcikvbWJ1dGlsLmMKLSAKLSAjIFRoZSBoZWFkZXIgZmlsZXMgZm9y IHRoaXMgbGlicmFyeS4KLSBIU09VUkNFUyA9IHJlYWRsaW5lLmggcmxkZWZzLmggY2hhcmRlZnMu aCBrZXltYXBzLmggaGlzdG9yeS5oIGhpc3RsaWIuaCBcCi1AQCAtMTQ5LDggKzE0Nyw4IEBAIFNI QVJFRF9USUxERU9CSiA9IHRpbGRlLnNvCi0gU0hBUkVEX09CSiA9IHJlYWRsaW5lLnNvIHZpX21v ZGUuc28gZnVubWFwLnNvIGtleW1hcHMuc28gcGFyZW5zLnNvIHNlYXJjaC5zbyBcCi0gCSAgcmx0 dHkuc28gY29tcGxldGUuc28gYmluZC5zbyBpc2VhcmNoLnNvIGRpc3BsYXkuc28gc2lnbmFscy5z byBcCi0gCSAgdXRpbC5zbyBraWxsLnNvIHVuZG8uc28gbWFjcm8uc28gaW5wdXQuc28gY2FsbGJh Y2suc28gdGVybWluYWwuc28gXAotLQkgIHRleHQuc28gbmxzLnNvIG1pc2Muc28geG1hbGxvYy5z byAkKFNIQVJFRF9ISVNUT0JKKSAkKFNIQVJFRF9USUxERU9CSikgXAotLQkgIGNvbXBhdC5zbyAk KFdDV0lEVEhfT0JKKQotKwkgIHRleHQuc28gbmxzLnNvIG1pc2Muc28geG1hbGxvYy5zbyB4ZnJl ZS5zbyAkKFNIQVJFRF9ISVNUT0JKKSAkKFNIQVJFRF9USUxERU9CSikgXAotKwkgIGNvbXBhdC5z bwotIAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gCi1AQCAtMTcwLDEzICsxNjgsOSBAQCAkKFNIQVJF RF9SRUFETElORSk6CSQoU0hBUkVEX09CSikKLSAJJChSTSkgJEAKLSAJJChTSE9CSl9MRCkgJHtT SE9CSl9MREZMQUdTfSAke1NITElCX1hMREZMQUdTfSAtbyAkQCAkKFNIQVJFRF9PQkopICQoU0hM SUJfTElCUykKLSAKLS0kKFNIQVJFRF9ISVNUT1JZKToJJChTSEFSRURfSElTVE9CSikgeG1hbGxv Yy5zbwotLQkkKFJNKSAkQAotLQkkKFNIT0JKX0xEKSAke1NIT0JKX0xERkxBR1N9ICR7U0hMSUJf WExERkxBR1N9IC1vICRAICQoU0hBUkVEX0hJU1RPQkopIHhtYWxsb2Muc28gJChTSExJQl9MSUJT KQotLQotLXdjd2lkdGgubzogJChzcmNkaXIpL3N1cHBvcnQvd2N3aWR0aC5jCi0rJChTSEFSRURf SElTVE9SWSk6CSQoU0hBUkVEX0hJU1RPQkopIHhtYWxsb2Muc28geGZyZWUuc28KLSAJJChSTSkg JEAKLS0JJChTSE9CSl9DQykgLWMgJChDQ0ZMQUdTKSAkKFNIT0JKX0ZMQUdTKSAkKHNyY2Rpcikv c3VwcG9ydC93Y3dpZHRoLmMKLSsJJChTSE9CSl9MRCkgJHtTSE9CSl9MREZMQUdTfSAke1NITElC X1hMREZMQUdTfSAtbyAkQCAkKFNIQVJFRF9ISVNUT0JKKSB4bWFsbG9jLnNvIHhmcmVlLnNvICQo U0hMSUJfTElCUykKLSAKLSAjIFNpbmNlIHRpbGRlLmMgaXMgc2hhcmVkIGJldHdlZW4gcmVhZGxp bmUgYW5kIGJhc2gsIG1ha2Ugc3VyZSB3ZSBjb21waWxlIAotICMgaXQgd2l0aCB0aGUgcmlnaHQg ZmxhZ3Mgd2hlbiBpdCdzIGJ1aWx0IGFzIHBhcnQgb2YgcmVhZGxpbmUKLUBAIC0xODcsMTUgKzE4 MSwxNiBAQCB0aWxkZS5zbzogICAgICAgIHRpbGRlLmMKLSAKLSBpbnN0YWxsZGlyczogJCh0b3Bk aXIpL3N1cHBvcnQvbWtkaXJzCi0gCS0kKFNIRUxMKSAkKHRvcGRpcikvc3VwcG9ydC9ta2RpcnMg JChERVNURElSKSQobGliZGlyKQotKwktJChTSEVMTCkgJCh0b3BkaXIpL3N1cHBvcnQvbWtkaXJz ICQoREVTVERJUikkKGJpbmRpcikKLSAKLSBpbnN0YWxsOiBpbnN0YWxsZGlycyAkKFNITElCX1NU QVRVUykKLS0JJChTSEVMTCkgJCh0b3BkaXIpL3N1cHBvcnQvc2hsaWItaW5zdGFsbCAtTyAkKGhv c3Rfb3MpIC1kICQoREVTVERJUikkKGxpYmRpcikgLWIgJChERVNURElSKSQoYmluZGlyKSAtaSAi JChJTlNUQUxMX0RBVEEpIiAkKFNIQVJFRF9ISVNUT1JZKQotLQkkKFNIRUxMKSAkKHRvcGRpcikv c3VwcG9ydC9zaGxpYi1pbnN0YWxsIC1PICQoaG9zdF9vcykgLWQgJChERVNURElSKSQobGliZGly KSAtYiAkKERFU1RESVIpJChiaW5kaXIpIC1pICIkKElOU1RBTExfREFUQSkiICQoU0hBUkVEX1JF QURMSU5FKQotKwkkKFNIRUxMKSAkKHRvcGRpcikvc3VwcG9ydC9zaGxpYi1pbnN0YWxsIC1PICQo aG9zdF9vcykgLVYgJChob3N0X3ZlbmRvcikgLWQgJChERVNURElSKSQobGliZGlyKSAtYiAkKERF U1RESVIpJChiaW5kaXIpIC1pICIkKElOU1RBTExfREFUQSkiICQoU0hBUkVEX0hJU1RPUlkpCi0r CSQoU0hFTEwpICQodG9wZGlyKS9zdXBwb3J0L3NobGliLWluc3RhbGwgLU8gJChob3N0X29zKSAt ViAkKGhvc3RfdmVuZG9yKSAtZCAkKERFU1RESVIpJChsaWJkaXIpIC1iICQoREVTVERJUikkKGJp bmRpcikgLWkgIiQoSU5TVEFMTF9EQVRBKSIgJChTSEFSRURfUkVBRExJTkUpCi0gCUBlY2hvIGlu c3RhbGw6IHlvdSBtYXkgbmVlZCB0byBydW4gbGRjb25maWcKLSAKLSB1bmluc3RhbGw6Ci0tCSQo U0hFTEwpICQodG9wZGlyKS9zdXBwb3J0L3NobGliLWluc3RhbGwgLU8gJChob3N0X29zKSAtZCAk KERFU1RESVIpJChsaWJkaXIpIC1iICQoREVTVERJUikkKGJpbmRpcikgLVUgJChTSEFSRURfSElT VE9SWSkKLS0JJChTSEVMTCkgJCh0b3BkaXIpL3N1cHBvcnQvc2hsaWItaW5zdGFsbCAtTyAkKGhv c3Rfb3MpIC1kICQoREVTVERJUikkKGxpYmRpcikgLWIgJChERVNURElSKSQoYmluZGlyKSAtVSAk KFNIQVJFRF9SRUFETElORSkKLSsJJChTSEVMTCkgJCh0b3BkaXIpL3N1cHBvcnQvc2hsaWItaW5z dGFsbCAtTyAkKGhvc3Rfb3MpIC1WICQoaG9zdF92ZW5kb3IpIC1kICQoREVTVERJUikkKGxpYmRp cikgLWIgJChERVNURElSKSQoYmluZGlyKSAtVSAkKFNIQVJFRF9ISVNUT1JZKQotKwkkKFNIRUxM KSAkKHRvcGRpcikvc3VwcG9ydC9zaGxpYi1pbnN0YWxsIC1PICQoaG9zdF9vcykgLVYgJChob3N0 X3ZlbmRvcikgLWQgJChERVNURElSKSQobGliZGlyKSAtYiAkKERFU1RESVIpJChiaW5kaXIpIC1V ICQoU0hBUkVEX1JFQURMSU5FKQotIAlAZWNobyB1bmluc3RhbGw6IHlvdSBtYXkgbmVlZCB0byBy dW4gbGRjb25maWcKLSAKLSBjbGVhbiBtb3N0bHljbGVhbjoJZm9yY2UKLUBAIC0zMjIsNiArMzE3 LDggQEAgdmlfbW9kZS5zbzogJCh0b3BkaXIpL3JsZGVmcy5oICR7QlVJTERfRAotIHZpX21vZGUu c286ICQodG9wZGlyKS9yZWFkbGluZS5oICQodG9wZGlyKS9rZXltYXBzLmggJCh0b3BkaXIpL2No YXJkZWZzLmgKLSB2aV9tb2RlLnNvOiAkKHRvcGRpcikvaGlzdG9yeS5oICQodG9wZGlyKS9hbnNp X3N0ZGxpYi5oICQodG9wZGlyKS90aWxkZS5oCi0gdmlfbW9kZS5zbzogJCh0b3BkaXIpL3JsdHlw ZWRlZnMuaAotK3hmcmVlLnNvOiAke0JVSUxEX0RJUn0vY29uZmlnLmgKLSt4ZnJlZS5zbzogJCh0 b3BkaXIpL2Fuc2lfc3RkbGliLmgKLSB4bWFsbG9jLnNvOiAke0JVSUxEX0RJUn0vY29uZmlnLmgK LSB4bWFsbG9jLnNvOiAkKHRvcGRpcikvYW5zaV9zdGRsaWIuaAotIAotQEAgLTM3OSw2ICszNzYs NyBAQCB0aWxkZS5zbzogJCh0b3BkaXIpL3htYWxsb2MuaAotIHVuZG8uc286ICQodG9wZGlyKS94 bWFsbG9jLmgKLSB1dGlsLnNvOiAkKHRvcGRpcikveG1hbGxvYy5oCi0gdmlfbW9kZS5zbzogJCh0 b3BkaXIpL3htYWxsb2MuaAotK3hmcmVlLnNvOiAkKHRvcGRpcikveG1hbGxvYy5oCi0geG1hbGxv Yy5zbzogJCh0b3BkaXIpL3htYWxsb2MuaAotIAotIGNvbXBsZXRlLm86ICQodG9wZGlyKS9ybG1i dXRpbC5oCi1AQCAtNDIwLDYgKzQxOCw3IEBAIHRpbGRlLnNvOiAkKHRvcGRpcikvdGlsZGUuYwot IHVuZG8uc286ICQodG9wZGlyKS91bmRvLmMKLSB1dGlsLnNvOiAkKHRvcGRpcikvdXRpbC5jCi0g dmlfbW9kZS5zbzogJCh0b3BkaXIpL3ZpX21vZGUuYwotK3hmcmVlLnNvOiAkKHRvcGRpcikveGZy ZWUuYwotIHhtYWxsb2Muc286ICQodG9wZGlyKS94bWFsbG9jLmMKLSAKLSBoaXN0ZXhwYW5kLnNv OiAkKHRvcGRpcikvaGlzdGV4cGFuZC5jCi1AQCAtNDU0LDYgKzQ1Myw3IEBAIHRpbGRlLnNvOiB0 aWxkZS5jCi0gdW5kby5zbzogdW5kby5jCi0gdXRpbC5zbzogdXRpbC5jCi0gdmlfbW9kZS5zbzog dmlfbW9kZS5jCi0reGZyZWUuc286IHhmcmVlLmMKLSB4bWFsbG9jLnNvOiB4bWFsbG9jLmMKLSAK LSBoaXN0ZXhwYW5kLnNvOiBoaXN0ZXhwYW5kLmMKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L3JlYWRsaW5lL3NpZ25hbHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMu b3JpZy9yZWFkbGluZS9zaWduYWxzLmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3NpZ25hbHMuYwkyMDExLTA3LTAz IDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjQgQEAKLSAvKiBzaWduYWxz LmMgLS0gc2lnbmFsIGhhbmRsaW5nIHN1cHBvcnQgZm9yIHJlYWRsaW5lLiAqLwotIAotLS8qIENv cHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8q IENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot IAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBs aWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlu cHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5n IGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5n LiAgICAgIAotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgot KyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJh cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVs LCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUs IGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBM SUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFj ZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAg IGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVm aW5lZCAoSEFWRV9DT05GSUdfSCkKLUBAIC00MCwxMyArNDAsMTQgQEAKLSAjICBpbmNsdWRlIDxz eXMvaW9jdGwuaD4KLSAjZW5kaWYgLyogR1dJTlNaX0lOX1NZU19JT0NUTCAqLwotIAotLSNpZiBk ZWZpbmVkIChIQU5ETEVfU0lHTkFMUykKLSAvKiBTb21lIHN0YW5kYXJkIGxpYnJhcnkgcm91dGlu ZXMuICovCi0gI2luY2x1ZGUgInJlYWRsaW5lLmgiCi0gI2luY2x1ZGUgImhpc3RvcnkuaCIKLSAK LSAjaW5jbHVkZSAicmxwcml2YXRlLmgiCi0gCi0rI2lmIGRlZmluZWQgKEhBTkRMRV9TSUdOQUxT KQotKwotICNpZiAhZGVmaW5lZCAoUkVUU0lHVFlQRSkKLSAjICBpZiBkZWZpbmVkIChWT0lEX1NJ R0hBTkRMRVIpCi0gIyAgICBkZWZpbmUgUkVUU0lHVFlQRSB2b2lkCi1AQCAtODAsNiArODEsOSBA QCB0eXBlZGVmIHN0cnVjdCB7IFNpZ0hhbmRsZXIgKnNhX2hhbmRsZXI7Ci0gc3RhdGljIFNpZ0hh bmRsZXIgKnJsX3NldF9zaWdoYW5kbGVyIFBBUkFNUygoaW50LCBTaWdIYW5kbGVyICosIHNpZ2hh bmRsZXJfY3h0ICopKTsKLSBzdGF0aWMgdm9pZCBybF9tYXliZV9zZXRfc2lnaGFuZGxlciBQQVJB TVMoKGludCwgU2lnSGFuZGxlciAqLCBzaWdoYW5kbGVyX2N4dCAqKSk7Ci0gCi0rc3RhdGljIFJF VFNJR1RZUEUgcmxfc2lnbmFsX2hhbmRsZXIgUEFSQU1TKChpbnQpKTsKLStzdGF0aWMgUkVUU0lH VFlQRSBfcmxfaGFuZGxlX3NpZ25hbCBQQVJBTVMoKGludCkpOwotKyAgICAgCi0gLyogRXhwb3J0 ZWQgdmFyaWFibGVzIGZvciB1c2UgYnkgYXBwbGljYXRpb25zLiAqLwotIAotIC8qIElmIG5vbi16 ZXJvLCByZWFkbGluZSB3aWxsIGluc3RhbGwgaXRzIG93biBzaWduYWwgaGFuZGxlcnMgZm9yCi1A QCAtOTMsNiArOTcsMTggQEAgaW50IHJsX2NhdGNoX3NpZ3dpbmNoID0gMTsKLSBpbnQgcmxfY2F0 Y2hfc2lnd2luY2ggPSAwOwkvKiBmb3IgdGhlIHJlYWRsaW5lIHN0YXRlIHN0cnVjdCBpbiByZWFk bGluZS5jICovCi0gI2VuZGlmCi0gCi0rLyogUHJpdmF0ZSB2YXJpYWJsZXMuICovCi0raW50IF9y bF9pbnRlcnJ1cHRfaW1tZWRpYXRlbHkgPSAwOwotK2ludCB2b2xhdGlsZSBfcmxfY2F1Z2h0X3Np Z25hbCA9IDA7CS8qIHNob3VsZCBiZSBzaWdfYXRvbWljX3QsIGJ1dCB0aGF0IHJlcXVpcmVzIGlu Y2x1ZGluZyA8c2lnbmFsLmg+IGV2ZXJ5d2hlcmUgKi8KLSsKLSsvKiBJZiBub24temVybywgcHJp bnQgY2hhcmFjdGVycyBjb3JyZXNwb25kaW5nIHRvIHJlY2VpdmVkIHNpZ25hbHMgYXMgbG9uZyBh cwotKyAgIHRoZSB1c2VyIGhhcyBpbmRpY2F0ZWQgaGlzIGRlc2lyZSB0byBkbyBzbyAoX3JsX2Vj aG9fY29udHJvbF9jaGFycykuICovCi0raW50IF9ybF9lY2hvY3RsID0gMDsKLSsKLStpbnQgX3Js X2ludHJfY2hhciA9IDA7Ci0raW50IF9ybF9xdWl0X2NoYXIgPSAwOwotK2ludCBfcmxfc3VzcF9j aGFyID0gMDsKLSsKLSBzdGF0aWMgaW50IHNpZ25hbHNfc2V0X2ZsYWc7Ci0gc3RhdGljIGludCBz aWd3aW5jaF9zZXRfZmxhZzsKLSAKLUBAIC0xMTIsMTAgKzEyOCwzNiBAQCBzdGF0aWMgc2lnaGFu ZGxlcl9jeHQgb2xkX3dpbmNoOwotIAotIC8qIFJlYWRsaW5lIHNpZ25hbCBoYW5kbGVyIGZ1bmN0 aW9ucy4gKi8KLSAKLSsvKiBDYWxsZWQgZnJvbSBSTF9DSEVDS19TSUdOQUxTKCkgbWFjcm8gKi8K LStSRVRTSUdUWVBFCi0rX3JsX3NpZ25hbF9oYW5kbGVyIChzaWcpCi0rICAgICBpbnQgc2lnOwot K3sKLSsgIF9ybF9jYXVnaHRfc2lnbmFsID0gMDsJLyogWFhYICovCi0rCi0rICBfcmxfaGFuZGxl X3NpZ25hbCAoc2lnKTsKLSsgIFNJR0hBTkRMRVJfUkVUVVJOOwotK30KLSsKLSBzdGF0aWMgUkVU U0lHVFlQRQotIHJsX3NpZ25hbF9oYW5kbGVyIChzaWcpCi0gICAgICBpbnQgc2lnOwotIHsKLSsg IGlmIChfcmxfaW50ZXJydXB0X2ltbWVkaWF0ZWx5IHx8IFJMX0lTU1RBVEUoUkxfU1RBVEVfQ0FM TEJBQ0spKQotKyAgICB7Ci0rICAgICAgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSA9IDA7Ci0r ICAgICAgX3JsX2hhbmRsZV9zaWduYWwgKHNpZyk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgX3Js X2NhdWdodF9zaWduYWwgPSBzaWc7Ci0rCi0rICBTSUdIQU5ETEVSX1JFVFVSTjsKLSt9Ci0rCi0r c3RhdGljIFJFVFNJR1RZUEUKLStfcmxfaGFuZGxlX3NpZ25hbCAoc2lnKQotKyAgICAgaW50IHNp ZzsKLSt7Ci0gI2lmIGRlZmluZWQgKEhBVkVfUE9TSVhfU0lHTkFMUykKLSAgIHNpZ3NldF90IHNl dDsKLSAjZWxzZSAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCi1AQCAtMTQyLDYgKzE4NCw3IEBA IHJsX3NpZ25hbF9oYW5kbGVyIChzaWcpCi0gICBzd2l0Y2ggKHNpZykKLSAgICAgewotICAgICBj YXNlIFNJR0lOVDoKLSsgICAgICBfcmxfcmVzZXRfY29tcGxldGlvbl9zdGF0ZSAoKTsKLSAgICAg ICBybF9mcmVlX2xpbmVfc3RhdGUgKCk7Ci0gICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSAKLUBA IC0xNTcsOSArMjAwLDExIEBAIHJsX3NpZ25hbF9oYW5kbGVyIChzaWcpCi0gI2lmIGRlZmluZWQg KFNJR1FVSVQpCi0gICAgIGNhc2UgU0lHUVVJVDoKLSAjZW5kaWYKLSsgICAgICBybF9lY2hvX3Np Z25hbF9jaGFyIChzaWcpOwotICAgICAgIHJsX2NsZWFudXBfYWZ0ZXJfc2lnbmFsICgpOwotIAot ICNpZiBkZWZpbmVkIChIQVZFX1BPU0lYX1NJR05BTFMpCi0rICAgICAgc2lnZW1wdHlzZXQgKCZz ZXQpOwotICAgICAgIHNpZ3Byb2NtYXNrIChTSUdfQkxPQ0ssIChzaWdzZXRfdCAqKU5VTEwsICZz ZXQpOwotICAgICAgIHNpZ2RlbHNldCAoJnNldCwgc2lnKTsKLSAjZWxzZSAvKiAhSEFWRV9QT1NJ WF9TSUdOQUxTICovCi1AQCAtMjUxLDExICsyOTYsMTEgQEAgcmxfc2V0X3NpZ2hhbmRsZXIgKHNp ZywgaGFuZGxlciwgb2hhbmRsZQotICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Q7Ci0gCi0gICBhY3Qu c2FfaGFuZGxlciA9IGhhbmRsZXI7Ci0tI2lmIGRlZmluZWQgKFNJR1dJTkNIKQotKyMgIGlmIGRl ZmluZWQgKFNJR1dJTkNIKQotICAgYWN0LnNhX2ZsYWdzID0gKHNpZyA9PSBTSUdXSU5DSCkgPyBT QV9SRVNUQVJUIDogMDsKLS0jZWxzZQotKyMgIGVsc2UKLSAgIGFjdC5zYV9mbGFncyA9IDA7Ci0t I2VuZGlmCi0rIyAgZW5kaWYgLyogU0lHV0lOQ0ggKi8KLSAgIHNpZ2VtcHR5c2V0ICgmYWN0LnNh X21hc2spOwotICAgc2lnZW1wdHlzZXQgKCZvaGFuZGxlci0+c2FfbWFzayk7Ci0gICBzaWdhY3Rp b24gKHNpZywgJmFjdCwgJm9sZF9oYW5kbGVyKTsKLUBAIC0yOTIsOSArMzM3LDQ0IEBAIHJsX3Nl dF9zaWduYWxzICgpCi0gewotICAgc2lnaGFuZGxlcl9jeHQgZHVtbXk7Ci0gICBTaWdIYW5kbGVy ICpvaDsKLSsjaWYgZGVmaW5lZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQotKyAgc3RhdGljIGludCBz aWdtYXNrX3NldCA9IDA7Ci0rICBzdGF0aWMgc2lnc2V0X3QgYnNldCwgb3NldDsKLSsjZW5kaWYK LSsKLSsjaWYgZGVmaW5lZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQotKyAgaWYgKHJsX2NhdGNoX3Np Z25hbHMgJiYgc2lnbWFza19zZXQgPT0gMCkKLSsgICAgewotKyAgICAgIHNpZ2VtcHR5c2V0ICgm YnNldCk7Ci0rCi0rICAgICAgc2lnYWRkc2V0ICgmYnNldCwgU0lHSU5UKTsKLSsgICAgICBzaWdh ZGRzZXQgKCZic2V0LCBTSUdURVJNKTsKLSsjaWYgZGVmaW5lZCAoU0lHUVVJVCkKLSsgICAgICBz aWdhZGRzZXQgKCZic2V0LCBTSUdRVUlUKTsKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZCAoU0lHQUxS TSkKLSsgICAgICBzaWdhZGRzZXQgKCZic2V0LCBTSUdBTFJNKTsKLSsjZW5kaWYKLSsjaWYgZGVm aW5lZCAoU0lHVFNUUCkKLSsgICAgICBzaWdhZGRzZXQgKCZic2V0LCBTSUdUU1RQKTsKLSsjZW5k aWYKLSsjaWYgZGVmaW5lZCAoU0lHVFRJTikKLSsgICAgICBzaWdhZGRzZXQgKCZic2V0LCBTSUdU VElOKTsKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZCAoU0lHVFRPVSkKLSsgICAgICBzaWdhZGRzZXQg KCZic2V0LCBTSUdUVE9VKTsKLSsjZW5kaWYKLSsgICAgICBzaWdtYXNrX3NldCA9IDE7Ci0rICAg IH0gICAgICAKLSsjZW5kaWYgLyogSEFWRV9QT1NJWF9TSUdOQUxTICovCi0gCi0gICBpZiAocmxf Y2F0Y2hfc2lnbmFscyAmJiBzaWduYWxzX3NldF9mbGFnID09IDApCi0gICAgIHsKLSsjaWYgZGVm aW5lZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQotKyAgICAgIHNpZ2VtcHR5c2V0ICgmb3NldCk7Ci0r ICAgICAgc2lncHJvY21hc2sgKFNJR19CTE9DSywgJmJzZXQsICZvc2V0KTsKLSsjZW5kaWYKLSsK LSAgICAgICBybF9tYXliZV9zZXRfc2lnaGFuZGxlciAoU0lHSU5ULCBybF9zaWduYWxfaGFuZGxl ciwgJm9sZF9pbnQpOwotICAgICAgIHJsX21heWJlX3NldF9zaWdoYW5kbGVyIChTSUdURVJNLCBy bF9zaWduYWxfaGFuZGxlciwgJm9sZF90ZXJtKTsKLSAjaWYgZGVmaW5lZCAoU0lHUVVJVCkKLUBA IC0zMjgsNiArNDA4LDEwIEBAIHJsX3NldF9zaWduYWxzICgpCi0gI2VuZGlmIC8qIFNJR1RUSU4g Ki8KLSAKLSAgICAgICBzaWduYWxzX3NldF9mbGFnID0gMTsKLSsKLSsjaWYgZGVmaW5lZCAoSEFW RV9QT1NJWF9TSUdOQUxTKQotKyAgICAgIHNpZ3Byb2NtYXNrIChTSUdfU0VUTUFTSywgJm9zZXQs IChzaWdzZXRfdCAqKU5VTEwpOwotKyNlbmRpZgotICAgICB9Ci0gCi0gI2lmIGRlZmluZWQgKFNJ R1dJTkNIKQotQEAgLTM5NCw4ICs0NzgsOCBAQCBybF9jbGVhbnVwX2FmdGVyX3NpZ25hbCAoKQot ICAgX3JsX2NsZWFuX3VwX2Zvcl9leGl0ICgpOwotICAgaWYgKHJsX2RlcHJlcF90ZXJtX2Z1bmN0 aW9uKQotICAgICAoKnJsX2RlcHJlcF90ZXJtX2Z1bmN0aW9uKSAoKTsKLS0gIHJsX2NsZWFyX3Np Z25hbHMgKCk7Ci0gICBybF9jbGVhcl9wZW5kaW5nX2lucHV0ICgpOwotKyAgcmxfY2xlYXJfc2ln bmFscyAoKTsKLSB9Ci0gCi0gLyogUmVzZXQgdGhlIHRlcm1pbmFsIGFuZCByZWFkbGluZSBzdGF0 ZSBhZnRlciBhIHNpZ25hbCBoYW5kbGVyIHJldHVybnMuICovCi1AQCAtNDI4LDMgKzUxMiwxNjAg QEAgcmxfZnJlZV9saW5lX3N0YXRlICgpCi0gfQotIAotICNlbmRpZiAgLyogSEFORExFX1NJR05B TFMgKi8KLSsKLSsvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqICovCi0rLyoJCQkJCQkJCSAgICAqLwotKy8qCQkJICAgU0lH SU5UIE1hbmFnZW1lbnQJCQkgICAgKi8KLSsvKgkJCQkJCQkJICAgICovCi0rLyogKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAq LwotKwotKyNpZiBkZWZpbmVkIChIQVZFX1BPU0lYX1NJR05BTFMpCi0rc3RhdGljIHNpZ3NldF90 IHNpZ2ludF9zZXQsIHNpZ2ludF9vc2V0OwotK3N0YXRpYyBzaWdzZXRfdCBzaWd3aW5jaF9zZXQs IHNpZ3dpbmNoX29zZXQ7Ci0rI2Vsc2UgLyogIUhBVkVfUE9TSVhfU0lHTkFMUyAqLwotKyMgIGlm IGRlZmluZWQgKEhBVkVfQlNEX1NJR05BTFMpCi0rc3RhdGljIGludCBzaWdpbnRfb2xkbWFzazsK LStzdGF0aWMgaW50IHNpZ3dpbmNoX29sZG1hc2s7Ci0rIyAgZW5kaWYgLyogSEFWRV9CU0RfU0lH TkFMUyAqLwotKyNlbmRpZiAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCi0rCi0rc3RhdGljIGlu dCBzaWdpbnRfYmxvY2tlZDsKLStzdGF0aWMgaW50IHNpZ3dpbmNoX2Jsb2NrZWQ7Ci0rCi0rLyog Q2F1c2UgU0lHSU5UIHRvIG5vdCBiZSBkZWxpdmVyZWQgdW50aWwgdGhlIGNvcnJlc3BvbmRpbmcg Y2FsbCB0bwotKyAgIHJlbGVhc2Vfc2lnaW50KCkuICovCi0rdm9pZAotK19ybF9ibG9ja19zaWdp bnQgKCkKLSt7Ci0rICBpZiAoc2lnaW50X2Jsb2NrZWQpCi0rICAgIHJldHVybjsKLSsKLSsjaWYg ZGVmaW5lZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQotKyAgc2lnZW1wdHlzZXQgKCZzaWdpbnRfc2V0 KTsKLSsgIHNpZ2VtcHR5c2V0ICgmc2lnaW50X29zZXQpOwotKyAgc2lnYWRkc2V0ICgmc2lnaW50 X3NldCwgU0lHSU5UKTsKLSsgIHNpZ3Byb2NtYXNrIChTSUdfQkxPQ0ssICZzaWdpbnRfc2V0LCAm c2lnaW50X29zZXQpOwotKyNlbHNlIC8qICFIQVZFX1BPU0lYX1NJR05BTFMgKi8KLSsjICBpZiBk ZWZpbmVkIChIQVZFX0JTRF9TSUdOQUxTKQotKyAgc2lnaW50X29sZG1hc2sgPSBzaWdibG9jayAo c2lnbWFzayAoU0lHSU5UKSk7Ci0rIyAgZWxzZSAvKiAhSEFWRV9CU0RfU0lHTkFMUyAqLwotKyMg ICAgaWYgZGVmaW5lZCAoSEFWRV9VU0dfU0lHSE9MRCkKLSsgIHNpZ2hvbGQgKFNJR0lOVCk7Ci0r IyAgICBlbmRpZiAvKiBIQVZFX1VTR19TSUdIT0xEICovCi0rIyAgZW5kaWYgLyogIUhBVkVfQlNE X1NJR05BTFMgKi8KLSsjZW5kaWYgLyogIUhBVkVfUE9TSVhfU0lHTkFMUyAqLwotKwotKyAgc2ln aW50X2Jsb2NrZWQgPSAxOwotK30KLSsKLSsvKiBBbGxvdyBTSUdJTlQgdG8gYmUgZGVsaXZlcmVk LiAqLwotK3ZvaWQKLStfcmxfcmVsZWFzZV9zaWdpbnQgKCkKLSt7Ci0rICBpZiAoc2lnaW50X2Js b2NrZWQgPT0gMCkKLSsgICAgcmV0dXJuOwotKwotKyNpZiBkZWZpbmVkIChIQVZFX1BPU0lYX1NJ R05BTFMpCi0rICBzaWdwcm9jbWFzayAoU0lHX1NFVE1BU0ssICZzaWdpbnRfb3NldCwgKHNpZ3Nl dF90ICopTlVMTCk7Ci0rI2Vsc2UKLSsjICBpZiBkZWZpbmVkIChIQVZFX0JTRF9TSUdOQUxTKQot KyAgc2lnc2V0bWFzayAoc2lnaW50X29sZG1hc2spOwotKyMgIGVsc2UgLyogIUhBVkVfQlNEX1NJ R05BTFMgKi8KLSsjICAgIGlmIGRlZmluZWQgKEhBVkVfVVNHX1NJR0hPTEQpCi0rICBzaWdyZWxz ZSAoU0lHSU5UKTsKLSsjICAgIGVuZGlmIC8qIEhBVkVfVVNHX1NJR0hPTEQgKi8KLSsjICBlbmRp ZiAvKiAhSEFWRV9CU0RfU0lHTkFMUyAqLwotKyNlbmRpZiAvKiAhSEFWRV9QT1NJWF9TSUdOQUxT ICovCi0rCi0rICBzaWdpbnRfYmxvY2tlZCA9IDA7Ci0rfQotKwotKy8qIENhdXNlIFNJR1dJTkNI IHRvIG5vdCBiZSBkZWxpdmVyZWQgdW50aWwgdGhlIGNvcnJlc3BvbmRpbmcgY2FsbCB0bwotKyAg IHJlbGVhc2Vfc2lnd2luY2goKS4gKi8KLSt2b2lkCi0rX3JsX2Jsb2NrX3NpZ3dpbmNoICgpCi0r ewotKyAgaWYgKHNpZ3dpbmNoX2Jsb2NrZWQpCi0rICAgIHJldHVybjsKLSsKLSsjaWYgZGVmaW5l ZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQotKyAgc2lnZW1wdHlzZXQgKCZzaWd3aW5jaF9zZXQpOwot KyAgc2lnZW1wdHlzZXQgKCZzaWd3aW5jaF9vc2V0KTsKLSsgIHNpZ2FkZHNldCAoJnNpZ3dpbmNo X3NldCwgU0lHV0lOQ0gpOwotKyAgc2lncHJvY21hc2sgKFNJR19CTE9DSywgJnNpZ3dpbmNoX3Nl dCwgJnNpZ3dpbmNoX29zZXQpOwotKyNlbHNlIC8qICFIQVZFX1BPU0lYX1NJR05BTFMgKi8KLSsj ICBpZiBkZWZpbmVkIChIQVZFX0JTRF9TSUdOQUxTKQotKyAgc2lnd2luY2hfb2xkbWFzayA9IHNp Z2Jsb2NrIChzaWdtYXNrIChTSUdXSU5DSCkpOwotKyMgIGVsc2UgLyogIUhBVkVfQlNEX1NJR05B TFMgKi8KLSsjICAgIGlmIGRlZmluZWQgKEhBVkVfVVNHX1NJR0hPTEQpCi0rICBzaWdob2xkIChT SUdXSU5DSCk7Ci0rIyAgICBlbmRpZiAvKiBIQVZFX1VTR19TSUdIT0xEICovCi0rIyAgZW5kaWYg LyogIUhBVkVfQlNEX1NJR05BTFMgKi8KLSsjZW5kaWYgLyogIUhBVkVfUE9TSVhfU0lHTkFMUyAq LwotKwotKyAgc2lnd2luY2hfYmxvY2tlZCA9IDE7Ci0rfQotKwotKy8qIEFsbG93IFNJR1dJTkNI IHRvIGJlIGRlbGl2ZXJlZC4gKi8KLSt2b2lkCi0rX3JsX3JlbGVhc2Vfc2lnd2luY2ggKCkKLSt7 Ci0rICBpZiAoc2lnd2luY2hfYmxvY2tlZCA9PSAwKQotKyAgICByZXR1cm47Ci0rCi0rI2lmIGRl ZmluZWQgKEhBVkVfUE9TSVhfU0lHTkFMUykKLSsgIHNpZ3Byb2NtYXNrIChTSUdfU0VUTUFTSywg JnNpZ3dpbmNoX29zZXQsIChzaWdzZXRfdCAqKU5VTEwpOwotKyNlbHNlCi0rIyAgaWYgZGVmaW5l ZCAoSEFWRV9CU0RfU0lHTkFMUykKLSsgIHNpZ3NldG1hc2sgKHNpZ3dpbmNoX29sZG1hc2spOwot KyMgIGVsc2UgLyogIUhBVkVfQlNEX1NJR05BTFMgKi8KLSsjICAgIGlmIGRlZmluZWQgKEhBVkVf VVNHX1NJR0hPTEQpCi0rICBzaWdyZWxzZSAoU0lHV0lOQ0gpOwotKyMgICAgZW5kaWYgLyogSEFW RV9VU0dfU0lHSE9MRCAqLwotKyMgIGVuZGlmIC8qICFIQVZFX0JTRF9TSUdOQUxTICovCi0rI2Vu ZGlmIC8qICFIQVZFX1BPU0lYX1NJR05BTFMgKi8KLSsKLSsgIHNpZ3dpbmNoX2Jsb2NrZWQgPSAw OwotK30KLSsKLSsvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqICovCi0rLyoJCQkJCQkJCSAgICAqLwotKy8qCQlFY2hvaW5n IHNwZWNpYWwgY29udHJvbCBjaGFyYWN0ZXJzCQkgICAgKi8KLSsvKgkJCQkJCQkJICAgICovCi0r LyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiAqLwotK3ZvaWQKLStybF9lY2hvX3NpZ25hbF9jaGFyIChzaWcpCi0rICAgICBp bnQgc2lnOwotK3sKLSsgIGNoYXIgY3N0clszXTsKLSsgIGludCBjc2xlbiwgYzsKLSsKLSsgIGlm IChfcmxfZWNob2N0bCA9PSAwIHx8IF9ybF9lY2hvX2NvbnRyb2xfY2hhcnMgPT0gMCkKLSsgICAg cmV0dXJuOwotKwotKyAgc3dpdGNoIChzaWcpCi0rICAgIHsKLSsgICAgY2FzZSBTSUdJTlQ6ICBj ID0gX3JsX2ludHJfY2hhcjsgYnJlYWs7Ci0rI2lmIGRlZmluZWQgKFNJR1FVSVQpCi0rICAgIGNh c2UgU0lHUVVJVDogYyA9IF9ybF9xdWl0X2NoYXI7IGJyZWFrOwotKyNlbmRpZgotKyNpZiBkZWZp bmVkIChTSUdUU1RQKQotKyAgICBjYXNlIFNJR1RTVFA6IGMgPSBfcmxfc3VzcF9jaGFyOyBicmVh azsKLSsjZW5kaWYKLSsgICAgZGVmYXVsdDogcmV0dXJuOwotKyAgICB9Ci0rCi0rICBpZiAoQ1RS TF9DSEFSIChjKSB8fCBjID09IFJVQk9VVCkKLSsgICAgewotKyAgICAgIGNzdHJbMF0gPSAnXic7 Ci0rICAgICAgY3N0clsxXSA9IENUUkxfQ0hBUiAoYykgPyBVTkNUUkwgKGMpIDogJz8nOwotKyAg ICAgIGNzdHJbY3NsZW4gPSAyXSA9ICdcMCc7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAg ICAgIGNzdHJbMF0gPSBjOwotKyAgICAgIGNzdHJbY3NsZW4gPSAxXSA9ICdcMCc7Ci0rICAgIH0K LSsKLSsgIF9ybF9vdXRwdXRfc29tZV9jaGFycyAoY3N0ciwgY3NsZW4pOwotK30KLUluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3N1cHBvcnQvY29uZmlnLmd1ZXNzCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3N1cHBvcnQvY29uZmln Lmd1ZXNzCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45 MC4yMDExMDcwMy9yZWFkbGluZS9zdXBwb3J0L2NvbmZpZy5ndWVzcwkyMDExLTA3LTAzIDEwOjQx OjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsOSArMSwxMCBAQAotICMhIC9iaW4vc2gKLSAjIEF0 dGVtcHQgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUuCi0gIyAgIENvcHlyaWdodCAo QykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKLS0jICAg MjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsj ICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg MjAwOQotKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS10aW1lc3RhbXA9 JzIwMDQtMDItMTYnCi0rdGltZXN0YW1wPScyMDA4LTAzLTEyJwotIAotICMgVGhpcyBmaWxlIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQK LSAjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci1AQCAtMTcsMTMgKzE4LDE1IEBAIHRpbWVzdGFtcD0nMjAwNC0wMi0xNicK LSAjCi0gIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotICMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ bGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIyBGb3VuZGF0 aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQgLSBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQot KyMgMDIxMTAtMTMwMSwgVVNBLgotICMKLSAjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKLSAjIGRpc3RyaWJ1dGUgdGhpcyBm aWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQotICMgY29uZmlndXJhdGlv biBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIK LSAjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0 IG9mIHRoYXQgcHJvZ3JhbS4KLSAKLSsKLSAjIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90 aG5lciA8cGVyQGJvdGhuZXIuY29tPi4KLSAjIFBsZWFzZSBzZW5kIHBhdGNoZXMgdG8gPGNvbmZp Zy1wYXRjaGVzQGdudS5vcmc+LiAgU3VibWl0IGEgY29udGV4dAotICMgZGlmZiBhbmQgYSBwcm9w ZXJseSBmb3JtYXR0ZWQgQ2hhbmdlTG9nIGVudHJ5LgotQEAgLTUzLDggKzU2LDggQEAgdmVyc2lv bj0iXAotIEdOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCi0gCi0gT3JpZ2luYWxseSB3cml0 dGVuIGJ5IFBlciBCb3RobmVyLgotLUNvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5 NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMQotLUZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5 NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKLSsyMDAyLCAyMDAzLCAyMDA0LCAyMDA1 LCAyMDA2LCAyMDA3LCAyMDA4LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0g Ci0gVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25k aXRpb25zLiAgVGhlcmUgaXMgTk8KLSB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCi1AQCAtNjYsMTEgKzY5 LDExIEBAIFRyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKLSB3aGlsZSB0 ZXN0ICQjIC1ndCAwIDsgZG8KLSAgIGNhc2UgJDEgaW4KLSAgICAgLS10aW1lLXN0YW1wIHwgLS10 aW1lKiB8IC10ICkKLS0gICAgICAgZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0IDAgOzsKLSsgICAg ICAgZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0IDs7Ci0gICAgIC0tdmVyc2lvbiB8IC12ICkKLS0g ICAgICAgZWNobyAiJHZlcnNpb24iIDsgZXhpdCAwIDs7Ci0rICAgICAgIGVjaG8gIiR2ZXJzaW9u IiA7IGV4aXQgOzsKLSAgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKLS0gICAgICAgZWNobyAiJHVz YWdlIjsgZXhpdCAwIDs7Ci0rICAgICAgIGVjaG8gIiR1c2FnZSI7IGV4aXQgOzsKLSAgICAgLS0g KSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCi0gICAgICAgIHNoaWZ0OyBicmVhayA7Owot ICAgICAtICkJIyBVc2Ugc3RkaW4gYXMgaW5wdXQuCi1AQCAtMTA0LDcgKzEwNyw3IEBAIHNldF9j Y19mb3JfYnVpbGQ9JwotIHRyYXAgImV4aXRjb2RlPVwkPzsgKHJtIC1mIFwkdG1wZmlsZXMgMj4v ZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rldi9udWxsKSAmJiBleGl0IFwkZXhpdGNvZGUiIDAg OwotIHRyYXAgInJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rl di9udWxsOyBleGl0IDEiIDEgMiAxMyAxNSA7Ci0gOiAke1RNUERJUj0vdG1wfSA7Ci0tIHsgdG1w PWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAtcSAiJFRNUERJUi9jZ1hYWFhYWCIpIDI+L2Rldi9u dWxsYCAmJiB0ZXN0IC1uICIkdG1wIiAmJiB0ZXN0IC1kICIkdG1wIiA7IH0gfHwKLSsgeyB0bXA9 YCh1bWFzayAwNzcgJiYgbWt0ZW1wIC1kICIkVE1QRElSL2NnWFhYWFhYIikgMj4vZGV2L251bGxg ICYmIHRlc3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiIDsgfSB8fAotICB7IHRlc3QgLW4g IiRSQU5ET00iICYmIHRtcD0kVE1QRElSL2NnJCQtJFJBTkRPTSAmJiAodW1hc2sgMDc3ICYmIG1r ZGlyICR0bXApIDsgfSB8fAotICB7IHRtcD0kVE1QRElSL2NnLSQkICYmICh1bWFzayAwNzcgJiYg bWtkaXIgJHRtcCkgJiYgZWNobyAiV2FybmluZzogY3JlYXRpbmcgaW5zZWN1cmUgdGVtcCBkaXJl Y3RvcnkiID4mMiA7IH0gfHwKLSAgeyBlY2hvICIkbWU6IGNhbm5vdCBjcmVhdGUgYSB0ZW1wb3Jh cnkgZGlyZWN0b3J5IGluICRUTVBESVIiID4mMiA7IGV4aXQgMSA7IH0gOwotQEAgLTEyMyw3ICsx MjYsNyBAQCBjYXNlICRDQ19GT1JfQlVJTEQsJEhPU1RfQ0MsJENDIGluCi0gCTs7Ci0gICwsKikg ICBDQ19GT1JfQlVJTEQ9JENDIDs7Ci0gICwqLCopICBDQ19GT1JfQlVJTEQ9JEhPU1RfQ0MgOzsK LS1lc2FjIDsnCi0rZXNhYyA7IHNldF9jY19mb3JfYnVpbGQ9IDsnCi0gCi0gIyBUaGlzIGlzIG5l ZWRlZCB0byBmaW5kIHVuYW1lIG9uIGEgUHlyYW1pZCBPU3ggd2hlbiBydW4gaW4gdGhlIEJTRCB1 bml2ZXJzZS4KLSAjIChnaGF6aUBub2MucnV0Z2Vycy5lZHUgMTk5NC0wOC0yNCkKLUBAIC0xNTgs NiArMTYxLDcgQEAgY2FzZSAiJHtVTkFNRV9NQUNISU5FfToke1VOQU1FX1NZU1RFTX06JAotIAkg ICAgYXJtKikgbWFjaGluZT1hcm0tdW5rbm93biA7OwotIAkgICAgc2gzZWwpIG1hY2hpbmU9c2hs LXVua25vd24gOzsKLSAJICAgIHNoM2ViKSBtYWNoaW5lPXNoLXVua25vd24gOzsKLSsJICAgIHNo NWVsKSBtYWNoaW5lPXNoNWxlLXVua25vd24gOzsKLSAJICAgICopIG1hY2hpbmU9JHtVTkFNRV9N QUNISU5FX0FSQ0h9LXVua25vd24gOzsKLSAJZXNhYwotIAkjIFRoZSBPcGVyYXRpbmcgU3lzdGVt IGluY2x1ZGluZyBvYmplY3QgZm9ybWF0LCBpZiBpdCBoYXMgc3dpdGNoZWQKLUBAIC0xOTYsNjgg KzIwMCwzMiBAQCBjYXNlICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfTokCi0gCSMg Y29udGFpbnMgcmVkdW5kYW50IGluZm9ybWF0aW9uLCB0aGUgc2hvcnRlciBmb3JtOgotIAkjIENQ VV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNIGlzIHVzZWQuCi0gCWVjaG8gIiR7 bWFjaGluZX0tJHtvc30ke3JlbGVhc2V9IgotLQlleGl0IDAgOzsKLS0gICAgYW1kNjQ6T3BlbkJT RDoqOiopCi0tCWVjaG8geDg2XzY0LXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0J ZXhpdCAwIDs7Ci0tICAgIGFtaWdhOk9wZW5CU0Q6KjoqKQotLQllY2hvIG02OGstdW5rbm93bi1v cGVuYnNkJHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLS0gICAgYXJjOk9wZW5CU0Q6Kjoq KQotLQllY2hvIG1pcHNlbC11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQg MCA7OwotLSAgICBjYXRzOk9wZW5CU0Q6KjoqKQotLQllY2hvIGFybS11bmtub3duLW9wZW5ic2Qk e1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotLSAgICBocDMwMDpPcGVuQlNEOio6KikKLS0J ZWNobyBtNjhrLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0t ICAgIG1hYzY4azpPcGVuQlNEOio6KikKLS0JZWNobyBtNjhrLXVua25vd24tb3BlbmJzZCR7VU5B TUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0tICAgIG1hY3BwYzpPcGVuQlNEOio6KikKLS0JZWNo byBwb3dlcnBjLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0t ICAgIG12bWU2OGs6T3BlbkJTRDoqOiopCi0tCWVjaG8gbTY4ay11bmtub3duLW9wZW5ic2Qke1VO QU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotLSAgICBtdm1lODhrOk9wZW5CU0Q6KjoqKQotLQll Y2hvIG04OGstdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLS0g ICAgbXZtZXBwYzpPcGVuQlNEOio6KikKLS0JZWNobyBwb3dlcnBjLXVua25vd24tb3BlbmJzZCR7 VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0tICAgIHBlZ2Fzb3M6T3BlbkJTRDoqOiopCi0t CWVjaG8gcG93ZXJwYy11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7 OwotLSAgICBwbWF4Ok9wZW5CU0Q6KjoqKQotLQllY2hvIG1pcHNlbC11bmtub3duLW9wZW5ic2Qk e1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotLSAgICBzZ2k6T3BlbkJTRDoqOiopCi0tCWVj aG8gbWlwc2ViLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0t ICAgIHN1bjM6T3BlbkJTRDoqOiopCi0tCWVjaG8gbTY4ay11bmtub3duLW9wZW5ic2Qke1VOQU1F X1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotLSAgICB3Z3Jpc2M6T3BlbkJTRDoqOiopCi0tCWVjaG8g bWlwc2VsLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4 aXQgOzsKLSAgICAgKjpPcGVuQlNEOio6KikKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25v d24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCVVOQU1FX01BQ0hJTkVf QVJDSD1gYXJjaCB8IHNlZCAncy9PcGVuQlNELi8vJ2AKLSsJZWNobyAke1VOQU1FX01BQ0hJTkVf QVJDSH0tdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQotKwlleGl0IDs7Ci0gICAgICo6 ZWtrb0JTRDoqOiopCi0gCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWVra29ic2Qke1VO QU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0rICAgICo6U29saWRCU0Q6Kjoq KQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zb2xpZGJzZCR7VU5BTUVfUkVMRUFT RX0KLSsJZXhpdCA7OwotICAgICBtYWNwcGM6TWlyQlNEOio6KikKLS0JZWNobyBwb3dlcnBwYy11 bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWVjaG8gcG93ZXJw Yy11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KLSsJZXhpdCA7OwotICAgICAqOk1pckJT RDoqOiopCi0gCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVM RUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgYWxwaGE6T1NGMToqOiopCi0tCWlm IHRlc3QgJFVOQU1FX1JFTEVBU0UgPSAiVjQuMCI7IHRoZW4KLSsJY2FzZSAkVU5BTUVfUkVMRUFT RSBpbgotKwkqNC4wKQotIAkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdr ICd7cHJpbnQgJDN9J2AKLS0JZmkKLSsJCTs7Ci0rCSo1LiopCi0rCSAgICAgICAgVU5BTUVfUkVM RUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDR9J2AKLSsJCTs7Ci0rCWVz YWMKLSAJIyBBY2NvcmRpbmcgdG8gQ29tcGFxLCAvdXNyL3NiaW4vcHNyaW5mbyBoYXMgYmVlbiBh dmFpbGFibGUgb24KLSAJIyBPU0YvMSBhbmQgVHJ1NjQgc3lzdGVtcyBwcm9kdWNlZCBzaW5jZSAx OTk1LiAgSSBob3BlIHRoYXQKLSAJIyBjb3ZlcnMgbW9zdCBzeXN0ZW1zIHJ1bm5pbmcgdG9kYXku ICBUaGlzIGNvZGUgcGlwZXMgdGhlIENQVQotQEAgLTI5NSw0NSArMjYzLDQ5IEBAIGNhc2UgIiR7 VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiQKLSAJICAgICJFVjcuOSAoMjEzNjRBKSIp Ci0gCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NzkiIDs7Ci0gCWVzYWMKLSsJIyBBIFBuLm4gdmVy c2lvbiBpcyBhIHBhdGNoZWQgdmVyc2lvbi4KLSAJIyBBIFZuLm4gdmVyc2lvbiBpcyBhIHJlbGVh c2VkIHZlcnNpb24uCi0gCSMgQSBUbi5uIHZlcnNpb24gaXMgYSByZWxlYXNlZCBmaWVsZCB0ZXN0 IHZlcnNpb24uCi0gCSMgQSBYbi5uIHZlcnNpb24gaXMgYW4gdW5yZWxlYXNlZCBleHBlcmltZW50 YWwgYmFzZWxldmVsLgotIAkjIDEuMiB1c2VzICIxLjIiIGZvciB1bmFtZSAtci4KLS0JZWNobyAk e1VOQU1FX01BQ0hJTkV9LWRlYy1vc2ZgZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdz L15bVlRYXS8vJyB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWpr bG1ub3BxcnN0dXZ3eHl6J2AKLS0JZXhpdCAwIDs7Ci0tICAgIEFscGhhKjpPcGVuVk1TOio6KikK LS0JZWNobyBhbHBoYS1ocC12bXMKLS0JZXhpdCAwIDs7Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5F fS1kZWMtb3NmYGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9eW1BWVFhdLy8nIHwg dHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4 eXonYAotKwlleGl0IDs7Ci0gICAgIEFscGhhXCAqOldpbmRvd3NfTlQqOiopCi0gCSMgSG93IGRv IHdlIGtub3cgaXQncyBJbnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmljIFBPU0lYIHN1YnN5 c3RlbT8KLSAJIyBTaG91bGQgd2UgY2hhbmdlIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24gdGhlIG91 dHB1dCBvZiB1bmFtZSBpbnN0ZWFkCi0gCSMgb2YgdGhlIHNwZWNpZmljIEFscGhhIG1vZGVsPwot IAllY2hvIGFscGhhLXBjLWludGVyaXgKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgMjEw NjQ6V2luZG93c19OVDo1MDozKQotIAllY2hvIGFscGhhLWRlYy13aW5udDMuNQotLQlleGl0IDAg OzsKLSsJZXhpdCA7OwotICAgICBBbWlnYSo6VU5JWF9TeXN0ZW1fVjo0LjA6KikKLSAJZWNobyBt NjhrLXVua25vd24tc3lzdjQKLS0JZXhpdCAwOzsKLSsJZXhpdCA7OwotICAgICAqOltBYV1taWdh W09vXVtTc106KjoqKQotIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1hbWlnYW9zCi0t CWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgICo6W01tXW9ycGhbT29dW1NzXToqOiopCi0gCWVj aG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW1vcnBob3MKLS0JZXhpdCAwIDs7Ci0rCWV4aXQg OzsKLSAgICAgKjpPUy8zOTA6KjoqKQotIAllY2hvIGkzNzAtaWJtLW9wZW5lZGl0aW9uCi0tCWV4 aXQgMCA7OwotKwlleGl0IDs7Ci0rICAgICo6ei9WTToqOiopCi0rCWVjaG8gczM5MC1pYm0tenZt b2UKLSsJZXhpdCA7OwotICAgICAqOk9TNDAwOio6KikKLSAgICAgICAgIGVjaG8gcG93ZXJwYy1p Ym0tb3M0MDAKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgYXJtOlJJU0MqOjEuWzAxMl0q Oip8YXJtOnJpc2NpeDoxLlswMTJdKjoqKQotIAllY2hvIGFybS1hY29ybi1yaXNjaXgke1VOQU1F X1JFTEVBU0V9Ci0tCWV4aXQgMDs7Ci0rCWV4aXQgOzsKLSsgICAgYXJtOnJpc2NvczoqOip8YXJt OlJJU0NPUzoqOiopCi0rCWVjaG8gYXJtLXVua25vd24tcmlzY29zCi0rCWV4aXQgOzsKLSAgICAg U1IyPzAxOkhJLVVYL01QUDoqOiogfCBTUjgwMDA6SEktVVgvTVBQOio6KikKLSAJZWNobyBocHBh MS4xLWhpdGFjaGktaGl1eG1wcAotLQlleGl0IDA7OwotKwlleGl0IDs7Ci0gICAgIFB5cmFtaWQq Ok9TeCo6KjoqIHwgTUlTKjpPU3gqOio6KiB8IE1JUyo6U01QX0RDLU9TeCo6KjoqKQotIAkjIGFr ZWVAd3BkaXMwMy53cGFmYi5hZi5taWwgKEVhcmxlIEYuIEFrZSkgY29udHJpYnV0ZWQgTUlTIGFu ZCBOSUxFLgotIAlpZiB0ZXN0ICJgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsYCIgPSBhdHQg OyB0aGVuCi1AQCAtMzQxLDMyICszMTMsMzIgQEAgY2FzZSAiJHtVTkFNRV9NQUNISU5FfToke1VO QU1FX1NZU1RFTX06JAotIAllbHNlCi0gCQllY2hvIHB5cmFtaWQtcHlyYW1pZC1ic2QKLSAJZmkK LS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgTklMRSo6KjoqOmRjb3N4KQotIAllY2hvIHB5 cmFtaWQtcHlyYW1pZC1zdnI0Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIERSUz82MDAw OnVuaXg6NC4wOjYqKQotIAllY2hvIHNwYXJjLWljbC1ueDYKLS0JZXhpdCAwIDs7Ci0tICAgIERS Uz82MDAwOlVOSVhfU1Y6NC4yKjo3KikKLSsJZXhpdCA7OwotKyAgICBEUlM/NjAwMDpVTklYX1NW OjQuMio6NyogfCBEUlM/NjAwMDppc2lzOjQuMio6NyopCi0gCWNhc2UgYC91c3IvYmluL3VuYW1l IC1wYCBpbgotLQkgICAgc3BhcmMpIGVjaG8gc3BhcmMtaWNsLW54NyAmJiBleGl0IDAgOzsKLSsJ ICAgIHNwYXJjKSBlY2hvIHNwYXJjLWljbC1ueDc7IGV4aXQgOzsKLSAJZXNhYyA7OwotICAgICBz dW40SDpTdW5PUzo1Lio6KikKLSAJZWNobyBzcGFyYy1oYWwtc29sYXJpczJgZWNobyAke1VOQU1F X1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAg ICAgc3VuNCo6U3VuT1M6NS4qOiogfCB0YWRwb2xlKjpTdW5PUzo1Lio6KikKLSAJZWNobyBzcGFy Yy1zdW4tc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AK LS0JZXhpdCAwIDs7Ci0tICAgIGk4NnBjOlN1bk9TOjUuKjoqKQotKwlleGl0IDs7Ci0rICAgIGk4 NnBjOlN1bk9TOjUuKjoqIHwgaTg2eGVuOlN1bk9TOjUuKjoqKQotIAllY2hvIGkzODYtcGMtc29s YXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKLS0JZXhpdCAw IDs7Ci0rCWV4aXQgOzsKLSAgICAgc3VuNCo6U3VuT1M6Nio6KikKLSAJIyBBY2NvcmRpbmcgdG8g Y29uZmlnLnN1YiwgdGhpcyBpcyB0aGUgcHJvcGVyIHdheSB0byBjYW5vbmljYWxpemUKLSAJIyBT dW5PUzYuICBIYXJkIHRvIGd1ZXNzIGV4YWN0bHkgd2hhdCBTdW5PUzYgd2lsbCBiZSBsaWtlLCBi dXQKLSAJIyBpdCdzIGxpa2VseSB0byBiZSBtb3JlIGxpa2UgU29sYXJpcyB0aGFuIFN1bk9TNC4K LSAJZWNobyBzcGFyYy1zdW4tc29sYXJpczNgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAn cy9bXi5dKi8vJ2AKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgc3VuNCo6U3VuT1M6Kjoq KQotIAljYXNlICJgL3Vzci9iaW4vYXJjaCAta2AiIGluCi0gCSAgICBTZXJpZXMqfFM0KikKLUBA IC0zNzUsMTAgKzM0NywxMCBAQCBjYXNlICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVN fTokCi0gCWVzYWMKLSAJIyBKYXBhbmVzZSBMYW5ndWFnZSB2ZXJzaW9ucyBoYXZlIGEgdmVyc2lv biBudW1iZXIgbGlrZSBgNC4xLjMtSkwnLgotIAllY2hvIHNwYXJjLXN1bi1zdW5vc2BlY2hvICR7 VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLy0vXy8nYAotLQlleGl0IDAgOzsKLSsJZXhpdCA7Owot ICAgICBzdW4zKjpTdW5PUzoqOiopCi0gCWVjaG8gbTY4ay1zdW4tc3Vub3Mke1VOQU1FX1JFTEVB U0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIHN1bio6Kjo0LjJCU0Q6KikKLSAJVU5B TUVfUkVMRUFTRT1gKHNlZCAxcSAvZXRjL21vdGQgfCBhd2sgJ3twcmludCBzdWJzdHIoJDUsMSwz KX0nKSAyPi9kZXYvbnVsbGAKLSAJdGVzdCAieCR7VU5BTUVfUkVMRUFTRX0iID0gIngiICYmIFVO QU1FX1JFTEVBU0U9MwotQEAgLTM5MCwxMCArMzYyLDEwIEBAIGNhc2UgIiR7VU5BTUVfTUFDSElO RX06JHtVTkFNRV9TWVNURU19OiQKLSAJCWVjaG8gc3BhcmMtc3VuLXN1bm9zJHtVTkFNRV9SRUxF QVNFfQotIAkJOzsKLSAJZXNhYwotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBhdXNocDpT dW5PUzoqOiopCi0gCWVjaG8gc3BhcmMtYXVzcGV4LXN1bm9zJHtVTkFNRV9SRUxFQVNFfQotLQll eGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICAjIFRoZSBzaXR1YXRpb24gZm9yIE1pTlQgaXMgYSBs aXR0bGUgY29uZnVzaW5nLiAgVGhlIG1hY2hpbmUgbmFtZQotICAgICAjIGNhbiBiZSB2aXJ0dWFs bHkgZXZlcnl0aGluZyAoZXZlcnl0aGluZyB3aGljaCBpcyBub3QKLSAgICAgIyAiYXRhcmlzdCIg b3IgImF0YXJpc3RlIiBhdCBsZWFzdCBzaG91bGQgaGF2ZSBhIHByb2Nlc3NvcgotQEAgLTQwNCw0 MCArMzc2LDQwIEBAIGNhc2UgIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiQKLSAg ICAgIyBiZSBubyBwcm9ibGVtLgotICAgICBhdGFyaXN0W2VdOipNaU5UOio6KiB8IGF0YXJpc3Rb ZV06Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToqVE9TOio6KikKLSAgICAgICAgIGVjaG8gbTY4ay1h dGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBh dGFyaSo6Kk1pTlQ6KjoqIHwgYXRhcmkqOiptaW50Oio6KiB8IGF0YXJpc3RbZV06KlRPUzoqOiop Ci0gCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQotLSAgICAgICAgZXhpdCAw IDs7Ci0rICAgICAgICBleGl0IDs7Ci0gICAgICpmYWxjb24qOipNaU5UOio6KiB8ICpmYWxjb24q OiptaW50Oio6KiB8ICpmYWxjb24qOipUT1M6KjoqKQotICAgICAgICAgZWNobyBtNjhrLWF0YXJp LW1pbnQke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIG1pbGFu KjoqTWlOVDoqOiogfCBtaWxhbio6Km1pbnQ6KjoqIHwgKm1pbGFuKjoqVE9TOio6KikKLSAgICAg ICAgIGVjaG8gbTY4ay1taWxhbi1taW50JHtVTkFNRV9SRUxFQVNFfQotLSAgICAgICAgZXhpdCAw IDs7Ci0rICAgICAgICBleGl0IDs7Ci0gICAgIGhhZGVzKjoqTWlOVDoqOiogfCBoYWRlcyo6Km1p bnQ6KjoqIHwgKmhhZGVzKjoqVE9TOio6KikKLSAgICAgICAgIGVjaG8gbTY4ay1oYWRlcy1taW50 JHtVTkFNRV9SRUxFQVNFfQotLSAgICAgICAgZXhpdCAwIDs7Ci0rICAgICAgICBleGl0IDs7Ci0g ICAgICo6Kk1pTlQ6KjoqIHwgKjoqbWludDoqOiogfCAqOipUT1M6KjoqKQotICAgICAgICAgZWNo byBtNjhrLXVua25vd24tbWludCR7VU5BTUVfUkVMRUFTRX0KLS0gICAgICAgIGV4aXQgMCA7Owot KyAgICAgICAgZXhpdCA7OwotICAgICBtNjhrOm1hY2h0ZW46KjoqKQotIAllY2hvIG02OGstYXBw bGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAg cG93ZXJwYzptYWNodGVuOio6KikKLSAJZWNobyBwb3dlcnBjLWFwcGxlLW1hY2h0ZW4ke1VOQU1F X1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIFJJU0MqOk1hY2g6KjoqKQot IAllY2hvIG1pcHMtZGVjLW1hY2hfYnNkNC4zCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAg IFJJU0MqOlVMVFJJWDoqOiopCi0gCWVjaG8gbWlwcy1kZWMtdWx0cml4JHtVTkFNRV9SRUxFQVNF fQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBWQVgqOlVMVFJJWCo6KjoqKQotIAllY2hv IHZheC1kZWMtdWx0cml4JHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7Owot ICAgICAyMDIwOkNMSVg6KjoqIHwgMjQzMDpDTElYOio6KikKLSAJZWNobyBjbGlwcGVyLWludGVy Z3JhcGgtY2xpeCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAg bWlwczoqOio6VU1JUFMgfCBtaXBzOio6KjpSSVNDb3MpCi0gCWV2YWwgJHNldF9jY19mb3JfYnVp bGQKLSAJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKLUBAIC00NjEsMzIgKzQzMywzMyBA QCBjYXNlICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfTokCi0gCSAgZXhpdCAoLTEp OwotIAl9Ci0gRU9GCi0tCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jIFwKLS0JICAm JiAkZHVtbXkgYGVjaG8gIiR7VU5BTUVfUkVMRUFTRX0iIHwgc2VkIC1uICdzL1woWzAtOV0qXCku Ki9cMS9wJ2AgXAotLQkgICYmIGV4aXQgMAotKwkkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVt bXkuYyAmJgotKwkgIGR1bW15YXJnPWBlY2hvICIke1VOQU1FX1JFTEVBU0V9IiB8IHNlZCAtbiAn cy9cKFswLTldKlwpLiovXDEvcCdgICYmCi0rCSAgU1lTVEVNX05BTUU9YCRkdW1teSAkZHVtbXlh cmdgICYmCi0rCSAgICB7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KLSAJZWNobyBtaXBz LW1pcHMtcmlzY29zJHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAg ICBNb3Rvcm9sYTpQb3dlck1BWF9PUzoqOiopCi0gCWVjaG8gcG93ZXJwYy1tb3Rvcm9sYS1wb3dl cm1heAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBNb3Rvcm9sYToqOjQuMzpQTDgtKikK LSAJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcm1heAotLQlleGl0IDAgOzsKLSsJZXhpdCA7Owot ICAgICBOaWdodF9IYXdrOio6KjpQb3dlck1BWF9PUyB8IFN5bmVyZ3k6UG93ZXJNQVhfT1M6Kjoq KQotIAllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VybWF4Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7 Ci0gICAgIE5pZ2h0X0hhd2s6UG93ZXJfVU5JWDoqOiopCi0gCWVjaG8gcG93ZXJwYy1oYXJyaXMt cG93ZXJ1bml4Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIG04OGs6Q1gvVVg6Nyo6KikK LSAJZWNobyBtODhrLWhhcnJpcy1jeHV4NwotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBt ODhrOio6NCo6UjQqKQotIAllY2hvIG04OGstbW90b3JvbGEtc3lzdjQKLS0JZXhpdCAwIDs7Ci0r CWV4aXQgOzsKLSAgICAgbTg4azoqOjMqOlIzKikKLSAJZWNobyBtODhrLW1vdG9yb2xhLXN5c3Yz Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIEFWaWlPTjpkZ3V4Oio6KikKLSAgICAgICAg ICMgREcvVVggcmV0dXJucyBBVmlpT04gZm9yIGFsbCBhcmNoaXRlY3R1cmVzCi0gICAgICAgICBV TkFNRV9QUk9DRVNTT1I9YC91c3IvYmluL3VuYW1lIC1wYAotQEAgLTUwMiwyOSArNDc1LDI5IEBA IEVPRgotIAllbHNlCi0gCSAgICBlY2hvIGk1ODYtZGctZGd1eCR7VU5BTUVfUkVMRUFTRX0KLSAJ ZmkKLS0gCWV4aXQgMCA7OwotKyAJZXhpdCA7OwotICAgICBNODgqOkRvbHBoaW5PUzoqOiopCSMg RG9scGhpbk9TIChTVlIzKQotIAllY2hvIG04OGstZG9scGhpbi1zeXN2MwotLQlleGl0IDAgOzsK LSsJZXhpdCA7OwotICAgICBNODgqOio6UjMqOiopCi0gCSMgRGVsdGEgODhrIHN5c3RlbSBydW5u aW5nIFNWUjMKLSAJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCi0tCWV4aXQgMCA7OwotKwlleGl0 IDs7Ci0gICAgIFhEODgqOio6KjoqKSAjIFRla3Ryb25peCBYRDg4IHN5c3RlbSBydW5uaW5nIFVU ZWtWIChTVlIzKQotIAllY2hvIG04OGstdGVrdHJvbml4LXN5c3YzCi0tCWV4aXQgMCA7OwotKwll eGl0IDs7Ci0gICAgIFRlazQzWzAtOV1bMC05XTpVVGVrOio6KikgIyBUZWt0cm9uaXggNDMwMCBz eXN0ZW0gcnVubmluZyBVVGVrIChCU0QpCi0gCWVjaG8gbTY4ay10ZWt0cm9uaXgtYnNkCi0tCWV4 aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgICo6SVJJWCo6KjoqKQotIAllY2hvIG1pcHMtc2dpLWly aXhgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vZydgCi0tCWV4aXQgMCA7Owot KwlleGl0IDs7Ci0gICAgID8/Pz8/Pz8/OkFJWD86WzEyXS4xOjIpICAgIyBBSVggMi4yLjEgb3Ig QUlYIDIuMS4xIGlzIFJUL1BDIEFJWC4KLS0JZWNobyByb21wLWlibS1haXggICAgICAjIHVuYW1l IC1tIGdpdmVzIGFuIDggaGV4LWNvZGUgQ1BVIGlkCi0tCWV4aXQgMCA7OyAgICAgICAgICAgICAg IyBOb3RlIHRoYXQ6IGVjaG8gIidgdW5hbWUgLXNgJyIgZ2l2ZXMgJ0FJWCAnCi0rCWVjaG8gcm9t cC1pYm0tYWl4ICAgICAjIHVuYW1lIC1tIGdpdmVzIGFuIDggaGV4LWNvZGUgQ1BVIGlkCi0rCWV4 aXQgOzsgICAgICAgICAgICAgICAjIE5vdGUgdGhhdDogZWNobyAiJ2B1bmFtZSAtc2AnIiBnaXZl cyAnQUlYICcKLSAgICAgaSo4NjpBSVg6KjoqKQotIAllY2hvIGkzODYtaWJtLWFpeAotLQlleGl0 IDAgOzsKLSsJZXhpdCA7OwotICAgICBpYTY0OkFJWDoqOiopCi0gCWlmIFsgLXggL3Vzci9iaW4v b3NsZXZlbCBdIDsgdGhlbgotIAkJSUJNX1JFVj1gL3Vzci9iaW4vb3NsZXZlbGAKLUBAIC01MzIs NyArNTA1LDcgQEAgRU9GCi0gCQlJQk1fUkVWPSR7VU5BTUVfVkVSU0lPTn0uJHtVTkFNRV9SRUxF QVNFfQotIAlmaQotIAllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWFpeCR7SUJNX1JFVn0KLS0J ZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgKjpBSVg6MjozKQotIAlpZiBncmVwIGJvczMyNSAv dXNyL2luY2x1ZGUvc3RkaW8uaCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAJCWV2YWwgJHNldF9j Y19mb3JfYnVpbGQKLUBAIC01NDcsMTUgKzUyMCwxOSBAQCBFT0YKLSAJCQlleGl0KDApOwotIAkJ CX0KLSBFT0YKLS0JCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmICRkdW1teSAm JiBleGl0IDAKLS0JCWVjaG8gcnM2MDAwLWlibS1haXgzLjIuNQotKwkJaWYgJENDX0ZPUl9CVUlM RCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAKLSsJCXRoZW4KLSsJ CQllY2hvICIkU1lTVEVNX05BTUUiCi0rCQllbHNlCi0rCQkJZWNobyByczYwMDAtaWJtLWFpeDMu Mi41Ci0rCQlmaQotIAllbGlmIGdyZXAgYm9zMzI0IC91c3IvaW5jbHVkZS9zdGRpby5oID4vZGV2 L251bGwgMj4mMTsgdGhlbgotIAkJZWNobyByczYwMDAtaWJtLWFpeDMuMi40Ci0gCWVsc2UKLSAJ CWVjaG8gcnM2MDAwLWlibS1haXgzLjIKLSAJZmkKLS0JZXhpdCAwIDs7Ci0tICAgICo6QUlYOio6 WzQ1XSkKLSsJZXhpdCA7OwotKyAgICAqOkFJWDoqOls0NTZdKQotIAlJQk1fQ1BVX0lEPWAvdXNy L3NiaW4vbHNkZXYgLUMgLWMgcHJvY2Vzc29yIC1TIGF2YWlsYWJsZSB8IHNlZCAxcSB8IGF3ayAn eyBwcmludCAkMSB9J2AKLSAJaWYgL3Vzci9zYmluL2xzYXR0ciAtRWwgJHtJQk1fQ1BVX0lEfSB8 IGdyZXAgJyBQT1dFUicgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gCQlJQk1fQVJDSD1yczYwMDAK LUBAIC01NjgsMjggKzU0NSwyOCBAQCBFT0YKLSAJCUlCTV9SRVY9JHtVTkFNRV9WRVJTSU9OfS4k e1VOQU1FX1JFTEVBU0V9Ci0gCWZpCi0gCWVjaG8gJHtJQk1fQVJDSH0taWJtLWFpeCR7SUJNX1JF Vn0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgKjpBSVg6KjoqKQotIAllY2hvIHJzNjAw MC1pYm0tYWl4Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIGlibXJ0OjQuNEJTRDoqfHJv bXAtaWJtOkJTRDoqKQotIAllY2hvIHJvbXAtaWJtLWJzZDQuNAotLQlleGl0IDAgOzsKLSsJZXhp dCA7OwotICAgICBpYm1ydDoqQlNEOip8cm9tcC1pYm06QlNEOiopICAgICAgICAgICAgIyBjb3Zl cnMgUlQvUEMgQlNEIGFuZAotIAllY2hvIHJvbXAtaWJtLWJzZCR7VU5BTUVfUkVMRUFTRX0gICAj IDQuMyB3aXRoIHVuYW1lIGFkZGVkIHRvCi0tCWV4aXQgMCA7OyAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgcmVwb3J0OiByb21wLWlibSBCU0QgNC4zCi0rCWV4aXQgOzsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgcmVwb3J0OiByb21wLWlibSBCU0QgNC4zCi0gICAgICo6Qk9TWDoq OiopCi0gCWVjaG8gcnM2MDAwLWJ1bGwtYm9zeAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAg ICBEUFgvMj8wMDpCLk8uUy46KjoqKQotIAllY2hvIG02OGstYnVsbC1zeXN2MwotLQlleGl0IDAg OzsKLSsJZXhpdCA7OwotICAgICA5MDAwL1szNF0/Pzo0LjNic2Q6MS4qOiopCi0gCWVjaG8gbTY4 ay1ocC1ic2QKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgaHAzMDA6NC40QlNEOio6KiB8 IDkwMDAvWzM0XT8/OjQuM2JzZDoyLio6KikKLSAJZWNobyBtNjhrLWhwLWJzZDQuNAotLQlleGl0 IDAgOzsKLSsJZXhpdCA7OwotICAgICA5MDAwL1szNDY3OF0/PzpIUC1VWDoqOiopCi0gCUhQVVhf UkVWPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLlswQl0qLy8nYAotIAlj YXNlICIke1VOQU1FX01BQ0hJTkV9IiBpbgotQEAgLTY1MSw5ICs2MjgsMTkgQEAgRU9GCi0gCWVz YWMKLSAJaWYgWyAke0hQX0FSQ0h9ID0gImhwcGEyLjB3IiBdCi0gCXRoZW4KLS0JICAgICMgYXZv aWQgZG91YmxlIGV2YWx1YXRpb24gb2YgJHNldF9jY19mb3JfYnVpbGQKLS0JICAgIHRlc3QgLW4g IiRDQ19GT1JfQlVJTEQiIHx8IGV2YWwgJHNldF9jY19mb3JfYnVpbGQKLS0JICAgIGlmIGVjaG8g X19MUDY0X18gfCAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0pIHwgZ3JlcCBfX0xQNjRfXyA+ L2Rldi9udWxsCi0rCSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCi0rCi0rCSAgICAjIGhwcGEy LjB3LWhwLWhwdXgqIGhhcyBhIDY0LWJpdCBrZXJuZWwgYW5kIGEgY29tcGlsZXIgZ2VuZXJhdGlu ZwotKwkgICAgIyAzMi1iaXQgY29kZS4gIGhwcGE2NC1ocC1ocHV4KiBoYXMgdGhlIHNhbWUga2Vy bmVsIGFuZCBhIGNvbXBpbGVyCi0rCSAgICAjIGdlbmVyYXRpbmcgNjQtYml0IGNvZGUuICBHTlUg YW5kIEhQIHVzZSBkaWZmZXJlbnQgbm9tZW5jbGF0dXJlOgotKwkgICAgIwotKwkgICAgIyAkIEND X0ZPUl9CVUlMRD1jYyAuL2NvbmZpZy5ndWVzcwotKwkgICAgIyA9PiBocHBhMi4wdy1ocC1ocHV4 MTEuMjMKLSsJICAgICMgJCBDQ19GT1JfQlVJTEQ9ImNjICtEQTIuMHciIC4vY29uZmlnLmd1ZXNz Ci0rCSAgICAjID0+IGhwcGE2NC1ocC1ocHV4MTEuMjMKLSsKLSsJICAgIGlmIGVjaG8gX19MUDY0 X18gfCAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwKLSsJCWdyZXAg X19MUDY0X18gPi9kZXYvbnVsbAotIAkgICAgdGhlbgotIAkJSFBfQVJDSD0iaHBwYTIuMHciCi0g CSAgICBlbHNlCi1AQCAtNjYxLDExICs2NDgsMTEgQEAgRU9GCi0gCSAgICBmaQotIAlmaQotIAll Y2hvICR7SFBfQVJDSH0taHAtaHB1eCR7SFBVWF9SRVZ9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7 Ci0gICAgIGlhNjQ6SFAtVVg6KjoqKQotIAlIUFVYX1JFVj1gZWNobyAke1VOQU1FX1JFTEVBU0V9 fHNlZCAtZSAncy9bXi5dKi5bMEJdKi8vJ2AKLSAJZWNobyBpYTY0LWhwLWhwdXgke0hQVVhfUkVW fQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICAzMDUwKjpISS1VWDoqOiopCi0gCWV2YWwg JHNldF9jY19mb3JfYnVpbGQKLSAJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKLUBAIC02 OTMsMTYzICs2ODAsMTkyIEBAIEVPRgotIAkgIGV4aXQgKDApOwotIAl9Ci0gRU9GCi0tCSRDQ19G T1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmICRkdW1teSAmJiBleGl0IDAKLSsJJENDX0ZP Ul9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAgJiYKLSsJ CXsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQotIAllY2hvIHVua25vd24taGl0YWNoaS1o aXV4d2UyCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIDkwMDAvNz8/OjQuM2JzZDoqOiog fCA5MDAwLzg/Wzc5XTo0LjNic2Q6KjoqICkKLSAJZWNobyBocHBhMS4xLWhwLWJzZAotLQlleGl0 IDAgOzsKLSsJZXhpdCA7OwotICAgICA5MDAwLzg/Pzo0LjNic2Q6KjoqKQotIAllY2hvIGhwcGEx LjAtaHAtYnNkCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgICo5Pz8qOk1QRS9pWDoqOiog fCAqMzAwMCo6TVBFL2lYOio6KikKLSAJZWNobyBocHBhMS4wLWhwLW1wZWl4Ci0tCWV4aXQgMCA7 OwotKwlleGl0IDs7Ci0gICAgIGhwNz8/Ok9TRjE6KjoqIHwgaHA4P1s3OV06T1NGMToqOiogKQot IAllY2hvIGhwcGExLjEtaHAtb3NmCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIGhwOD8/ Ok9TRjE6KjoqKQotIAllY2hvIGhwcGExLjAtaHAtb3NmCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7 Ci0gICAgIGkqODY6T1NGMToqOiopCi0gCWlmIFsgLXggL3Vzci9zYmluL3N5c3ZlcnNpb24gXSA7 IHRoZW4KLSAJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW9zZjFtawotIAllbHNl Ci0gCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1vc2YxCi0gCWZpCi0tCWV4aXQg MCA7OwotKwlleGl0IDs7Ci0gICAgIHBhcmlzYyo6TGl0ZXMqOio6KikKLSAJZWNobyBocHBhMS4x LWhwLWxpdGVzCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIEMxKjpDb252ZXhPUzoqOiog fCBjb252ZXg6Q29udmV4T1M6QzEqOiopCi0gCWVjaG8gYzEtY29udmV4LWJzZAotLSAgICAgICAg ZXhpdCAwIDs7Ci0rICAgICAgICBleGl0IDs7Ci0gICAgIEMyKjpDb252ZXhPUzoqOiogfCBjb252 ZXg6Q29udmV4T1M6QzIqOiopCi0gCWlmIGdldHN5c2luZm8gLWYgc2NhbGFyX2FjYwotIAl0aGVu IGVjaG8gYzMyLWNvbnZleC1ic2QKLSAJZWxzZSBlY2hvIGMyLWNvbnZleC1ic2QKLSAJZmkKLS0g ICAgICAgIGV4aXQgMCA7OwotKyAgICAgICAgZXhpdCA7OwotICAgICBDMzQqOkNvbnZleE9TOio6 KiB8IGNvbnZleDpDb252ZXhPUzpDMzQqOiopCi0gCWVjaG8gYzM0LWNvbnZleC1ic2QKLS0gICAg ICAgIGV4aXQgMCA7OwotKyAgICAgICAgZXhpdCA7OwotICAgICBDMzgqOkNvbnZleE9TOio6KiB8 IGNvbnZleDpDb252ZXhPUzpDMzgqOiopCi0gCWVjaG8gYzM4LWNvbnZleC1ic2QKLS0gICAgICAg IGV4aXQgMCA7OwotKyAgICAgICAgZXhpdCA7OwotICAgICBDNCo6Q29udmV4T1M6KjoqIHwgY29u dmV4OkNvbnZleE9TOkM0KjoqKQotIAllY2hvIGM0LWNvbnZleC1ic2QKLS0gICAgICAgIGV4aXQg MCA7OwotKyAgICAgICAgZXhpdCA7OwotICAgICBDUkFZKlktTVA6KjoqOiopCi0gCWVjaG8geW1w LWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCi0t CWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIENSQVkqW0EtWl05MDoqOio6KikKLSAJZWNobyAk e1VOQU1FX01BQ0hJTkV9LWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSBcCi0gCXwgc2VkIC1l ICdzL0NSQVkuKlwoW0EtWl05MFwpL1wxLycgXAotIAkgICAgICAtZSB5L0FCQ0RFRkdISUpLTE1O T1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LyBcCi0gCSAgICAgIC1lICdz L1wuW14uXSokLy5YLycKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgQ1JBWSpUUzoqOio6 KikKLSAJZWNobyB0OTAtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wu W14uXSokLy5YLycKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgQ1JBWSpUM0U6KjoqOiop Ci0gCWVjaG8gYWxwaGFldjUtY3JheS11bmljb3NtayR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUg J3MvXC5bXi5dKiQvLlgvJwotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBDUkFZKlNWMToq Oio6KikKLSAJZWNobyBzdjEtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdz L1wuW14uXSokLy5YLycKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgKjpVTklDT1MvbXA6 KjoqKQotLQllY2hvIG52MS1jcmF5LXVuaWNvc21wJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAn cy9cLlteLl0qJC8uWC8nCi0tCWV4aXQgMCA7OwotKwllY2hvIGNyYXludi1jcmF5LXVuaWNvc21w JHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCi0rCWV4aXQgOzsKLSAg ICAgRjMwWzAxXTpVTklYX1N5c3RlbV9WOio6KiB8IEY3MDA6VU5JWF9TeXN0ZW1fVjoqOiopCi0g CUZVSklUU1VfUFJPQz1gdW5hbWUgLW0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVon ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCi0gICAgICAgICBGVUpJVFNVX1NZUz1gdW5h bWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9w cXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCi0gICAgICAgICBGVUpJVFNVX1JFTD1gZWNo byAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzLyAvXy8nYAotICAgICAgICAgZWNobyAiJHtG VUpJVFNVX1BST0N9LWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKLS0gICAg ICAgIGV4aXQgMCA7OwotKyAgICAgICAgZXhpdCA7OwotICAgICA1MDAwOlVOSVhfU3lzdGVtX1Y6 NC4qOiopCi0gICAgICAgICBGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktM TU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3Mv XC8vLydgCi0gICAgICAgICBGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgdHIg J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXon IHwgc2VkIC1lICdzLyAvXy8nYAotICAgICAgICAgZWNobyAic3BhcmMtZnVqaXRzdS0ke0ZVSklU U1VfU1lTfSR7RlVKSVRTVV9SRUx9IgotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBpKjg2 OkJTRC8zODY6KjoqIHwgaSo4NjpCU0QvT1M6KjoqIHwgKjpBc2NlbmRcIEVtYmVkZGVkL09TOio6 KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWJzZGkke1VOQU1FX1JFTEVBU0V9Ci0tCWV4 aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIHNwYXJjKjpCU0QvT1M6KjoqKQotIAllY2hvIHNwYXJj LXVua25vd24tYnNkaSR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAg ICAgKjpCU0QvT1M6KjoqKQotIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1ic2RpJHtV TkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICAqOkZyZWVCU0Q6Kjoq KQotLQkjIERldGVybWluZSB3aGV0aGVyIHRoZSBkZWZhdWx0IGNvbXBpbGVyIHVzZXMgZ2xpYmMu Ci0tCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKLS0Jc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15 LmMKLS0JI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0tCSNpZiBfX0dMSUJDX18gPj0gMgotLQlMSUJD PWdudQotLQkjZWxzZQotLQlMSUJDPQotLQkjZW5kaWYKLS1FT0YKLS0JZXZhbCBgJENDX0ZPUl9C VUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IGdyZXAgXkxJQkM9YAotLQkjIEdOVS9LRnJl ZUJTRCBzeXN0ZW1zIGhhdmUgYSAiayIgcHJlZml4IHRvIGluZGljYXRlIHdlIGFyZSB1c2luZwot LQkjIEZyZWVCU0QncyBrZXJuZWwsIGJ1dCBub3QgdGhlIGNvbXBsZXRlIE9TLgotLQljYXNlICR7 TElCQ30gaW4gZ251KSBrZXJuZWxfb25seT0naycgOzsgZXNhYwotLQllY2hvICR7VU5BTUVfTUFD SElORX0tdW5rbm93bi0ke2tlcm5lbF9vbmx5fWZyZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9 fHNlZCAtZSAncy9bLShdLiovLydgJHtMSUJDOistJExJQkN9Ci0tCWV4aXQgMCA7OwotKwljYXNl ICR7VU5BTUVfTUFDSElORX0gaW4KLSsJICAgIHBjOTgpCi0rCQllY2hvIGkzODYtdW5rbm93bi1m cmVlYnNkYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYCA7OwotKwkg ICAgYW1kNjQpCi0rCQllY2hvIHg4Nl82NC11bmtub3duLWZyZWVic2RgZWNobyAke1VOQU1FX1JF TEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7Ci0rCSAgICAqKQotKwkJZWNobyAke1VOQU1F X01BQ0hJTkV9LXVua25vd24tZnJlZWJzZGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdz L1stKF0uKi8vJ2AgOzsKLSsJZXNhYwotKwlleGl0IDs7Ci0gICAgIGkqOkNZR1dJTio6KikKLSAJ ZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWN5Z3dpbgotLQlleGl0IDAgOzsKLS0gICAgaSo6TUlO R1cqOiopCi0rCWV4aXQgOzsKLSsgICAgKjpNSU5HVyo6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJ TkV9LXBjLW1pbmd3MzIKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSsgICAgaSo6d2luZG93czMy KjoqKQotKyAgICAJIyB1bmFtZSAtbSBpbmNsdWRlcyAiLXBjIiBvbiB0aGlzIHN5c3RlbS4KLSsg ICAgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1taW5ndzMyCi0rCWV4aXQgOzsKLSAgICAgaSo6UFcq OiopCi0gCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1wdzMyCi0tCWV4aXQgMCA7OwotLSAgICB4 ODY6SW50ZXJpeCo6WzM0XSopCi0tCWVjaG8gaTU4Ni1wYy1pbnRlcml4JHtVTkFNRV9SRUxFQVNF fXxzZWQgLWUgJ3MvXC4uKi8vJwotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotKyAgICAqOkludGVy aXgqOlszNDU2XSopCi0rICAgIAljYXNlICR7VU5BTUVfTUFDSElORX0gaW4KLSsJICAgIHg4NikK LSsJCWVjaG8gaTU4Ni1wYy1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQotKwkJZXhpdCA7OwotKwkg ICAgRU02NFQgfCBhdXRoZW50aWNhbWQpCi0rCQllY2hvIHg4Nl82NC11bmtub3duLWludGVyaXgk e1VOQU1FX1JFTEVBU0V9Ci0rCQlleGl0IDs7Ci0rCSAgICBJQTY0KQotKwkJZWNobyBpYTY0LXVu a25vd24taW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0KLSsJCWV4aXQgOzsKLSsJZXNhYyA7OwotICAg ICBbMzQ1XTg2OldpbmRvd3NfOTU6KiB8IFszNDVdODY6V2luZG93c185ODoqIHwgWzM0NV04NjpX aW5kb3dzX05UOiopCi0gCWVjaG8gaSR7VU5BTUVfTUFDSElORX0tcGMtbWtzCi0tCWV4aXQgMCA7 OwotKwlleGl0IDs7Ci0gICAgIGkqOldpbmRvd3NfTlQqOiogfCBQZW50aXVtKjpXaW5kb3dzX05U KjoqKQotIAkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUgZ2Vu ZXJpYyBQT1NJWCBzdWJzeXN0ZW0/Ci0gCSMgSXQgYWxzbyBjb25mbGljdHMgd2l0aCBwcmUtMi4w IHZlcnNpb25zIG9mIEFUJlQgVVdJTi4gU2hvdWxkIHdlCi0gCSMgVU5BTUVfTUFDSElORSBiYXNl ZCBvbiB0aGUgb3V0cHV0IG9mIHVuYW1lIGluc3RlYWQgb2YgaTM4Nj8KLSAJZWNobyBpNTg2LXBj LWludGVyaXgKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgaSo6VVdJTio6KikKLSAJZWNo byAke1VOQU1FX01BQ0hJTkV9LXBjLXV3aW4KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSsgICAg YW1kNjQ6Q1lHV0lOKjoqOiogfCB4ODZfNjQ6Q1lHV0lOKjoqOiopCi0rCWVjaG8geDg2XzY0LXVu a25vd24tY3lnd2luCi0rCWV4aXQgOzsKLSAgICAgcCo6Q1lHV0lOKjoqKQotIAllY2hvIHBvd2Vy cGNsZS11bmtub3duLWN5Z3dpbgotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBwcmVwKjpT dW5PUzo1Lio6KikKLSAJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1zb2xhcmlzMmBlY2hvICR7VU5B TUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAotLQlleGl0IDAgOzsKLSsJZXhpdCA7Owot ICAgICAqOkdOVToqOiopCi0gCSMgdGhlIEdOVSBzeXN0ZW0KLSAJZWNobyBgZWNobyAke1VOQU1F X01BQ0hJTkV9fHNlZCAtZSAncyxbLS9dLiokLCwnYC11bmtub3duLWdudWBlY2hvICR7VU5BTUVf UkVMRUFTRX18c2VkIC1lICdzLC8uKiQsLCdgCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAg ICo6R05VLyo6KjoqKQotIAkjIG90aGVyIHN5c3RlbXMgd2l0aCBHTlUgbGliYyBhbmQgdXNlcmxh bmQKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYGVjaG8gJHtVTkFNRV9TWVNURU19 IHwgc2VkICdzLF5bXi9dKi8sLCcgfCB0ciAnW0EtWl0nICdbYS16XSdgYGVjaG8gJHtVTkFNRV9S RUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYC1nbnUKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsK LSAgICAgaSo4NjpNaW5peDoqOiopCi0gCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5peAot LQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBhcm0qOkxpbnV4Oio6KikKLSsJZXZhbCAkc2V0 X2NjX2Zvcl9idWlsZAotKwlpZiBlY2hvIF9fQVJNX0VBQklfXyB8ICRDQ19GT1JfQlVJTEQgLUUg LSAyPi9kZXYvbnVsbCBcCi0rCSAgICB8IGdyZXAgLXEgX19BUk1fRUFCSV9fCi0rCXRoZW4KLSsJ ICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwllbHNlCi0rCSAg ICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnVlYWJpCi0rCWZpCi0rCWV4 aXQgOzsKLSsgICAgYXZyMzIqOkxpbnV4Oio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVu a25vd24tbGludXgtZ251Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIGNyaXM6TGludXg6 KjoqKQotIAllY2hvIGNyaXMtYXhpcy1saW51eC1nbnUKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsK LSsgICAgY3Jpc3YzMjpMaW51eDoqOiopCi0rCWVjaG8gY3Jpc3YzMi1heGlzLWxpbnV4LWdudQot KwlleGl0IDs7Ci0rICAgIGZydjpMaW51eDoqOiopCi0rICAgIAllY2hvIGZydi11bmtub3duLWxp bnV4LWdudQotKwlleGl0IDs7Ci0gICAgIGlhNjQ6TGludXg6KjoqKQotIAllY2hvICR7VU5BTUVf TUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSsgICAg bTMycio6TGludXg6KjoqKQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1n bnUKLSsJZXhpdCA7OwotICAgICBtNjgqOkxpbnV4Oio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJ TkV9LXVua25vd24tbGludXgtZ251Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIG1pcHM6 TGludXg6KjoqKQotIAlldmFsICRzZXRfY2NfZm9yX2J1aWxkCi0gCXNlZCAncy9eCS8vJyA8PCBF T0YgPiRkdW1teS5jCi1AQCAtODY2LDggKzg4MiwxMiBAQCBFT0YKLSAJI2VuZGlmCi0gCSNlbmRp ZgotIEVPRgotLQlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwg Z3JlcCBeQ1BVPWAKLS0JdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiBlY2hvICIke0NQVX0tdW5rbm93 bi1saW51eC1nbnUiICYmIGV4aXQgMAotKwlldmFsICJgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXku YyAyPi9kZXYvbnVsbCB8IHNlZCAtbiAnCi0rCSAgICAvXkNQVS97Ci0rCQlzOiA6OmcKLSsJCXAK LSsJICAgIH0nYCIKLSsJdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8gIiR7Q1BVfS11bmtu b3duLWxpbnV4LWdudSI7IGV4aXQ7IH0KLSAJOzsKLSAgICAgbWlwczY0OkxpbnV4Oio6KikKLSAJ ZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotQEAgLTg4NSwxNSArOTA1LDIyIEBAIEVPRgotIAkjZW5k aWYKLSAJI2VuZGlmCi0gRU9GCi0tCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4v ZGV2L251bGwgfCBncmVwIF5DUFU9YAotLQl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIGVjaG8gIiR7 Q1BVfS11bmtub3duLWxpbnV4LWdudSIgJiYgZXhpdCAwCi0rCWV2YWwgImAkQ0NfRk9SX0JVSUxE IC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcKLSsJICAgIC9eQ1BVL3sKLSsJCXM6 IDo6ZwotKwkJcAotKwkgICAgfSdgIgotKwl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAi JHtDUFV9LXVua25vd24tbGludXgtZ251IjsgZXhpdDsgfQotIAk7OwotKyAgICBvcjMyOkxpbnV4 Oio6KikKLSsJZWNobyBvcjMyLXVua25vd24tbGludXgtZ251Ci0rCWV4aXQgOzsKLSAgICAgcHBj OkxpbnV4Oio6KikKLSAJZWNobyBwb3dlcnBjLXVua25vd24tbGludXgtZ251Ci0tCWV4aXQgMCA7 OwotKwlleGl0IDs7Ci0gICAgIHBwYzY0OkxpbnV4Oio6KikKLSAJZWNobyBwb3dlcnBjNjQtdW5r bm93bi1saW51eC1nbnUKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgYWxwaGE6TGludXg6 KjoqKQotIAljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3MvXi4qOiBcKC4qXCkvXDEvcCcgPCAv cHJvYy9jcHVpbmZvYCBpbgotIAkgIEVWNSkgICBVTkFNRV9NQUNISU5FPWFscGhhZXY1IDs7Ci1A QCAtOTA3LDcgKzkzNCw3IEBAIEVPRgotIAlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4v c2ggfCBncmVwIGxkLnNvLjEgPi9kZXYvbnVsbAotIAlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBM SUJDPSJsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQotIAllY2hvICR7VU5BTUVfTUFDSElORX0t dW5rbm93bi1saW51eC1nbnUke0xJQkN9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIHBh cmlzYzpMaW51eDoqOiogfCBocHBhOkxpbnV4Oio6KikKLSAJIyBMb29rIGZvciBDUFUgbGV2ZWwK LSAJY2FzZSBgZ3JlcCAnXmNwdVteYS16XSo6JyAvcHJvYy9jcHVpbmZvIDI+L2Rldi9udWxsIHwg Y3V0IC1kJyAnIC1mMmAgaW4KLUBAIC05MTUsMjUgKzk0MiwzMSBAQCBFT0YKLSAJICBQQTgqKSBl Y2hvIGhwcGEyLjAtdW5rbm93bi1saW51eC1nbnUgOzsKLSAJICAqKSAgICBlY2hvIGhwcGEtdW5r bm93bi1saW51eC1nbnUgOzsKLSAJZXNhYwotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBw YXJpc2M2NDpMaW51eDoqOiogfCBocHBhNjQ6TGludXg6KjoqKQotIAllY2hvIGhwcGE2NC11bmtu b3duLWxpbnV4LWdudQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBzMzkwOkxpbnV4Oio6 KiB8IHMzOTB4OkxpbnV4Oio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eAot LQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBzaDY0KjpMaW51eDoqOiopCi0gICAgIAllY2hv ICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLS0JZXhpdCAwIDs7Ci0rCWV4aXQg OzsKLSAgICAgc2gqOkxpbnV4Oio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24t bGludXgtZ251Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIHNwYXJjOkxpbnV4Oio6KiB8 IHNwYXJjNjQ6TGludXg6KjoqKQotIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51 eC1nbnUKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSsgICAgdmF4OkxpbnV4Oio6KikKLSsJZWNo byAke1VOQU1FX01BQ0hJTkV9LWRlYy1saW51eC1nbnUKLSsJZXhpdCA7OwotICAgICB4ODZfNjQ6 TGludXg6KjoqKQotIAllY2hvIHg4Nl82NC11bmtub3duLWxpbnV4LWdudQotLQlleGl0IDAgOzsK LSsJZXhpdCA7OwotKyAgICB4dGVuc2EqOkxpbnV4Oio6KikKLSsgICAgCWVjaG8gJHtVTkFNRV9N QUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwlleGl0IDs7Ci0gICAgIGkqODY6TGludXg6Kjoq KQotIAkjIFRoZSBCRkQgbGlua2VyIGtub3dzIHdoYXQgdGhlIGRlZmF1bHQgb2JqZWN0IGZpbGUg Zm9ybWF0IGlzLCBzbwotIAkjIGZpcnN0IHNlZSBpZiBpdCB3aWxsIHRlbGwgdXMuIGNkIHRvIHRo ZSByb290IGRpcmVjdG9yeSB0byBwcmV2ZW50Ci1AQCAtOTUxLDE1ICs5ODQsMTUgQEAgRU9GCi0g CQk7OwotIAkgIGEub3V0LWkzODYtbGludXgpCi0gCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBj LWxpbnV4LWdudWFvdXQiCi0tCQlleGl0IDAgOzsKLSsJCWV4aXQgOzsKLSAJICBjb2ZmLWkzODYp Ci0gCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudWNvZmYiCi0tCQlleGl0IDAg OzsKLSsJCWV4aXQgOzsKLSAJICAiIikKLSAJCSMgRWl0aGVyIGEgcHJlLUJGRCBhLm91dCBsaW5r ZXIgKGxpbnV4LWdudW9sZGxkKSBvcgotIAkJIyBvbmUgdGhhdCBkb2VzIG5vdCBnaXZlIHVzIHVz ZWZ1bCAtLWhlbHAuCi0gCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudW9sZGxk IgotLQkJZXhpdCAwIDs7Ci0rCQlleGl0IDs7Ci0gCWVzYWMKLSAJIyBEZXRlcm1pbmUgd2hldGhl ciB0aGUgZGVmYXVsdCBjb21waWxlciBpcyBhLm91dCBvciBlbGYKLSAJZXZhbCAkc2V0X2NjX2Zv cl9idWlsZAotQEAgLTk3Niw3ICsxMDA5LDcgQEAgRU9GCi0gCUxJQkM9Z251bGliYzEKLSAJIyBl bmRpZgotIAkjZWxzZQotLQkjaWZkZWYgX19JTlRFTF9DT01QSUxFUgotKwkjaWYgZGVmaW5lZChf X0lOVEVMX0NPTVBJTEVSKSB8fCBkZWZpbmVkKF9fUEdJKSB8fCBkZWZpbmVkKF9fU1VOUFJPX0Mp IHx8IGRlZmluZWQoX19TVU5QUk9fQ0MpCi0gCUxJQkM9Z251Ci0gCSNlbHNlCi0gCUxJQkM9Z251 YW91dAotQEAgLTk4NiwxNiArMTAxOSwyMyBAQCBFT0YKLSAJTElCQz1kaWV0bGliYwotIAkjZW5k aWYKLSBFT0YKLS0JZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8 IGdyZXAgXkxJQkM9YAotLQl0ZXN0IHgiJHtMSUJDfSIgIT0geCAmJiBlY2hvICIke1VOQU1FX01B Q0hJTkV9LXBjLWxpbnV4LSR7TElCQ30iICYmIGV4aXQgMAotLQl0ZXN0IHgiJHtURU5UQVRJVkV9 IiAhPSB4ICYmIGVjaG8gIiR7VEVOVEFUSVZFfSIgJiYgZXhpdCAwCi0rCWV2YWwgImAkQ0NfRk9S X0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcKLSsJICAgIC9eTElCQy97 Ci0rCQlzOiA6OmcKLSsJCXAKLSsJICAgIH0nYCIKLSsJdGVzdCB4IiR7TElCQ30iICE9IHggJiYg ewotKwkJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC0ke0xJQkN9IgotKwkJZXhpdAot Kwl9Ci0rCXRlc3QgeCIke1RFTlRBVElWRX0iICE9IHggJiYgeyBlY2hvICIke1RFTlRBVElWRX0i OyBleGl0OyB9Ci0gCTs7Ci0gICAgIGkqODY6RFlOSVgvcHR4OjQqOiopCi0gCSMgcHR4IDQuMCBk b2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHggaW4gdGhlcmUuCi0gCSMgZWFy bGllciB2ZXJzaW9ucyBhcmUgbWVzc2VkIHVwIGFuZCBwdXQgdGhlIG5vZGVuYW1lIGluIGJvdGgK LSAJIyBzeXNuYW1lIGFuZCBub2RlbmFtZS4KLSAJZWNobyBpMzg2LXNlcXVlbnQtc3lzdjQKLS0J ZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgaSo4NjpVTklYX1NWOjQuMk1QOjIuKikKLSAgICAg ICAgICMgVW5peHdhcmUgaXMgYW4gb2Zmc2hvb3Qgb2YgU1ZSNCwgYnV0IGl0IGhhcyBpdHMgb3du IHZlcnNpb24KLSAgICAgICAgICMgbnVtYmVyIHNlcmllcyBzdGFydGluZyB3aXRoIDIuLi4KLUBA IC0xMDAzLDI3ICsxMDQzLDI3IEBAIEVPRgotIAkjIEkganVzdCBoYXZlIHRvIGhvcGUuICAtLSBy bXMuCi0gICAgICAgICAjIFVzZSBzeXN2NC4ydXcuLi4gc28gdGhhdCBzeXN2NCogbWF0Y2hlcyBp dC4KLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3Y0LjJ1dyR7VU5BTUVfVkVSU0lPTn0K LS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgaSo4NjpPUy8yOio6KikKLSAJIyBJZiB3ZSB3 ZXJlIGFibGUgdG8gZmluZCBgdW5hbWUnLCB0aGVuIEVNWCBVbml4IGNvbXBhdGliaWxpdHkKLSAJ IyBpcyBwcm9iYWJseSBpbnN0YWxsZWQuCi0gCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1vczIt ZW14Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIGkqODY6WFRTLTMwMDoqOlNUT1ApCi0g CWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN0b3AKLS0JZXhpdCAwIDs7Ci0rCWV4aXQg OzsKLSAgICAgaSo4NjphdGhlb3M6KjoqKQotIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93 bi1hdGhlb3MKLS0JZXhpdCAwIDs7Ci0tCWkqODY6c3lsbGFibGU6KjoqKQotKwlleGl0IDs7Ci0r ICAgIGkqODY6c3lsbGFibGU6KjoqKQotIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lsbGFi bGUKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2 Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LjAqOiopCi0gCWVjaG8gaTM4Ni11bmtu b3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAg aSo4NjoqRE9TOio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1zZG9zZGpncHAKLS0J ZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgaSo4NjoqOjQuKjoqIHwgaSo4NjpTWVNURU1fVjo0 Lio6KikKLSAJVU5BTUVfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgJ3MvXC9NUCQv LydgCi0gCWlmIGdyZXAgTm92ZWxsIC91c3IvaW5jbHVkZS9saW5rLmggPi9kZXYvbnVsbCAyPi9k ZXYvbnVsbDsgdGhlbgotQEAgLTEwMzEsMTUgKzEwNzEsMTYgQEAgRU9GCi0gCWVsc2UKLSAJCWVj aG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2JHtVTkFNRV9SRUx9Ci0gCWZpCi0tCWV4aXQgMCA7 OwotLSAgICBpKjg2Oio6NTpbNzhdKikKLSsJZXhpdCA7OwotKyAgICBpKjg2Oio6NTpbNjc4XSop Ci0rICAgIAkjIFVuaXhXYXJlIDcueCwgT3BlblVOSVggYW5kIE9wZW5TZXJ2ZXIgNi4KLSAJY2Fz ZSBgL2Jpbi91bmFtZSAtWCB8IGdyZXAgIl5NYWNoaW5lImAgaW4KLSAJICAgICo0ODYqKQkgICAg IFVOQU1FX01BQ0hJTkU9aTQ4NiA7OwotIAkgICAgKlBlbnRpdW0pCSAgICAgVU5BTUVfTUFDSElO RT1pNTg2IDs7Ci0gCSAgICAqUGVudCp8KkNlbGVyb24pIFVOQU1FX01BQ0hJTkU9aTY4NiA7Owot IAllc2FjCi0gCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVB U0V9JHtVTkFNRV9TWVNURU19JHtVTkFNRV9WRVJTSU9OfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7 OwotICAgICBpKjg2Oio6My4yOiopCi0gCWlmIHRlc3QgLWYgL3Vzci9vcHRpb25zL2NiLm5hbWU7 IHRoZW4KLSAJCVVOQU1FX1JFTD1gc2VkIC1uICdzLy4qVmVyc2lvbiAvL3AnIDwvdXNyL29wdGlv bnMvY2IubmFtZWAKLUBAIC0xMDU3LDczICsxMDk4LDczIEBAIEVPRgotIAllbHNlCi0gCQllY2hv ICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjMyCi0gCWZpCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7 Ci0gICAgIHBjOio6KjoqKQotIAkjIExlZnQgaGVyZSBmb3IgY29tcGF0aWJpbGl0eToKLSAgICAg ICAgICMgdW5hbWUgLW0gcHJpbnRzIGZvciBESkdQUCBhbHdheXMgJ3BjJywgYnV0IGl0IHByaW50 cyBub3RoaW5nIGFib3V0Ci0gICAgICAgICAjIHRoZSBwcm9jZXNzb3IsIHNvIHdlIHBsYXkgc2Fm ZSBieSBhc3N1bWluZyBpMzg2LgotIAllY2hvIGkzODYtcGMtbXNkb3NkamdwcAotLSAgICAgICAg ZXhpdCAwIDs7Ci0rICAgICAgICBleGl0IDs7Ci0gICAgIEludGVsOk1hY2g6Myo6KikKLSAJZWNo byBpMzg2LXBjLW1hY2gzCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIHBhcmFnb246Kjoq OiopCi0gCWVjaG8gaTg2MC1pbnRlbC1vc2YxCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAg IGk4NjA6Kjo0Lio6KikgIyBpODYwLVNWUjQKLSAJaWYgZ3JlcCBTdGFyZGVudCAvdXNyL2luY2x1 ZGUvc3lzL3VhZG1pbi5oID4vZGV2L251bGwgMj4mMSA7IHRoZW4KLSAJICBlY2hvIGk4NjAtc3Rh cmRlbnQtc3lzdiR7VU5BTUVfUkVMRUFTRX0gIyBTdGFyZGVudCBWaXN0cmEgaTg2MC1TVlI0Ci0g CWVsc2UgIyBBZGQgb3RoZXIgaTg2MC1TVlI0IHZlbmRvcnMgYmVsb3cgYXMgdGhleSBhcmUgZGlz Y292ZXJlZC4KLSAJICBlY2hvIGk4NjAtdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfSAgIyBV bmtub3duIGk4NjAtU1ZSNAotIAlmaQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBtaW5p KjpDVElYOlNZUyo1OiopCi0gCSMgIm1pbmlmcmFtZSIKLSAJZWNobyBtNjgwMTAtY29udmVyZ2Vu dC1zeXN2Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIG1jNjhrOlVOSVg6U1lTVEVNNToz LjUxbSkKLSAJZWNobyBtNjhrLWNvbnZlcmdlbnQtc3lzdgotLQlleGl0IDAgOzsKLSsJZXhpdCA7 OwotICAgICBNNjgwPzA6RC1OSVg6NS4zOiopCi0gCWVjaG8gbTY4ay1kaWFiLWRuaXgKLS0JZXhp dCAwIDs7Ci0tICAgIE02OCo6KjpSM1ZbNTY3XSo6KikKLS0JdGVzdCAtciAvc3lzVjY4ICYmIGVj aG8gJ202OGstbW90b3JvbGEtc3lzdicgJiYgZXhpdCAwIDs7Ci0tICAgIDNbMzQ1XT8/Oio6NC4w OjMuMCB8IDNbMzRdPz9BOio6NC4wOjMuMCB8IDNbMzRdPz8sKjoqOjQuMDozLjAgfCAzWzM0XT8/ Lyo6Kjo0LjA6My4wIHwgNDQwMDoqOjQuMDozLjAgfCA0ODUwOio6NC4wOjMuMCB8IFNLQTQwOio6 NC4wOjMuMCB8IFNEUzI6Kjo0LjA6My4wIHwgU0hHMjoqOjQuMDozLjApCi0rCWV4aXQgOzsKLSsg ICAgTTY4KjoqOlIzVls1Njc4XSo6KikKLSsJdGVzdCAtciAvc3lzVjY4ICYmIHsgZWNobyAnbTY4 ay1tb3Rvcm9sYS1zeXN2JzsgZXhpdDsgfSA7OwotKyAgICAzWzM0NV0/PzoqOjQuMDozLjAgfCAz WzM0XT8/QToqOjQuMDozLjAgfCAzWzM0XT8/LCo6Kjo0LjA6My4wIHwgM1szNF0/Py8qOio6NC4w OjMuMCB8IDQ0MDA6Kjo0LjA6My4wIHwgNDg1MDoqOjQuMDozLjAgfCBTS0E0MDoqOjQuMDozLjAg fCBTRFMyOio6NC4wOjMuMCB8IFNIRzI6Kjo0LjA6My4wIHwgUzc1MDEqOio6NC4wOjMuMCkKLSAJ T1NfUkVMPScnCi0gCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAotIAkmJiBPU19SRUw9LmBzZWQgLW4g J3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMvLnJlbGlkYAotIAkv YmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKLS0JICAmJiBl Y2hvIGk0ODYtbmNyLXN5c3Y0LjMke09TX1JFTH0gJiYgZXhpdCAwCi0rCSAgJiYgeyBlY2hvIGk0 ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0KLSAJL2Jpbi91bmFtZSAtcCAyPi9kZXYv bnVsbCB8IC9iaW4vZ3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBcCi0tCSAgJiYgZWNobyBpNTg2LW5j ci1zeXN2NC4zJHtPU19SRUx9ICYmIGV4aXQgMCA7OwotKwkgICYmIHsgZWNobyBpNTg2LW5jci1z eXN2NC4zJHtPU19SRUx9OyBleGl0OyB9IDs7Ci0gICAgIDNbMzRdPz86Kjo0LjA6KiB8IDNbMzRd Pz8sKjoqOjQuMDoqKQotICAgICAgICAgL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IGdyZXAg ODYgPi9kZXYvbnVsbCBcCi0tICAgICAgICAgICYmIGVjaG8gaTQ4Ni1uY3Itc3lzdjQgJiYgZXhp dCAwIDs7Ci0rICAgICAgICAgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NDsgZXhpdDsgfSA7Owot ICAgICBtNjgqOkx5bnhPUzoyLio6KiB8IG02OCo6THlueE9TOjMuMCo6KikKLSAJZWNobyBtNjhr LXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7Owot ICAgICBtYzY4MDMwOlVOSVhfU3lzdGVtX1Y6NC4qOiopCi0gCWVjaG8gbTY4ay1hdGFyaS1zeXN2 NAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBUU1VOQU1JOkx5bnhPUzoyLio6KikKLSAJ ZWNobyBzcGFyYy11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0r CWV4aXQgOzsKLSAgICAgcnM2MDAwOkx5bnhPUzoyLio6KikKLSAJZWNobyByczYwMDAtdW5rbm93 bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIFBv d2VyUEM6THlueE9TOjIuKjoqIHwgUG93ZXJQQzpMeW54T1M6My5bMDFdKjoqIHwgUG93ZXJQQzpM eW54T1M6NC4wKjoqKQotIAllY2hvIHBvd2VycGMtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVB U0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIFNNW0JFXVM6VU5JWF9TVjoqOiopCi0g CWVjaG8gbWlwcy1kZGUtc3lzdiR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQg OzsKLSAgICAgUk0qOlJlbGlhbnRVTklYLSo6KjoqKQotIAllY2hvIG1pcHMtc25pLXN5c3Y0Ci0t CWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIFJNKjpTSU5JWC0qOio6KikKLSAJZWNobyBtaXBz LXNuaS1zeXN2NAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICAqOlNJTklYLSo6KjoqKQot IAlpZiB1bmFtZSAtcCAyPi9kZXYvbnVsbCA+L2Rldi9udWxsIDsgdGhlbgotIAkJVU5BTUVfTUFD SElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKLUBAIC0xMTMxLDY4ICsxMTcyLDg0IEBAIEVP RgotIAllbHNlCi0gCQllY2hvIG5zMzJrLXNuaS1zeXN2Ci0gCWZpCi0tCWV4aXQgMCA7OwotKwll eGl0IDs7Ci0gICAgIFBFTlRJVU06Kjo0LjAqOiopICMgVW5pc3lzIGBDbGVhclBhdGggSE1QIElY IDQwMDAnIFNWUjQvTVAgZWZmb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgICMgc2F5cyA8Umlj aGFyZC5NLkJhcnRlbEBjY01haWwuQ2Vuc3VzLkdPVj4KLSAgICAgICAgIGVjaG8gaTU4Ni11bmlz eXMtc3lzdjQKLS0gICAgICAgIGV4aXQgMCA7OwotKyAgICAgICAgZXhpdCA7OwotICAgICAqOlVO SVhfU3lzdGVtX1Y6NCo6RlRYKikKLSAJIyBGcm9tIEdlcmFsZCBIZXdlcyA8aGV3ZXNAb3Blbm1h cmtldC5jb20+LgotIAkjIEhvdyBhYm91dCBkaWZmZXJlbnRpYXRpbmcgYmV0d2VlbiBzdHJhdHVz IGFyY2hpdGVjdHVyZXM/IC1kam0KLSAJZWNobyBocHBhMS4xLXN0cmF0dXMtc3lzdjQKLS0JZXhp dCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgKjoqOio6RlRYKikKLSAJIyBGcm9tIHNlYW5mQHN3ZGMu c3RyYXR1cy5jb20uCi0gCWVjaG8gaTg2MC1zdHJhdHVzLXN5c3Y0Ci0tCWV4aXQgMCA7OwotKwll eGl0IDs7Ci0rICAgIGkqODY6Vk9TOio6KikKLSsJIyBGcm9tIFBhdWwuR3JlZW5Ac3RyYXR1cy5j b20uCi0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1zdHJhdHVzLXZvcwotKwlleGl0IDs7Ci0gICAg ICo6Vk9TOio6KikKLSAJIyBGcm9tIFBhdWwuR3JlZW5Ac3RyYXR1cy5jb20uCi0gCWVjaG8gaHBw YTEuMS1zdHJhdHVzLXZvcwotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBtYzY4KjpBL1VY Oio6KikKLSAJZWNobyBtNjhrLWFwcGxlLWF1eCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7 Ci0rCWV4aXQgOzsKLSAgICAgbmV3cyo6TkVXUy1PUzo2KjoqKQotIAllY2hvIG1pcHMtc29ueS1u ZXdzb3M2Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIFJbMzRdMDAwOipTeXN0ZW1fVio6 KjoqIHwgUjQwMDA6VU5JWF9TWVNWOio6KiB8IFIqMDAwOlVOSVhfU1Y6KjoqKQotIAlpZiBbIC1k IC91c3IvbmVjIF07IHRoZW4KLSAJICAgICAgICBlY2hvIG1pcHMtbmVjLXN5c3Yke1VOQU1FX1JF TEVBU0V9Ci0gCWVsc2UKLSAJICAgICAgICBlY2hvIG1pcHMtdW5rbm93bi1zeXN2JHtVTkFNRV9S RUxFQVNFfQotIAlmaQotLSAgICAgICAgZXhpdCAwIDs7Ci0rICAgICAgICBleGl0IDs7Ci0gICAg IEJlQm94OkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBoYXJkd2FyZSBtYWRlIGJ5IEJlLCBQ UEMgb25seS4KLSAJZWNobyBwb3dlcnBjLWJlLWJlb3MKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsK LSAgICAgQmVNYWM6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIE1hYyBvciBNYWMgY2xvbmUs IFBQQyBvbmx5LgotIAllY2hvIHBvd2VycGMtYXBwbGUtYmVvcwotLQlleGl0IDAgOzsKLSsJZXhp dCA7OwotICAgICBCZVBDOkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBJbnRlbCBQQyBjb21w YXRpYmxlLgotIAllY2hvIGk1ODYtcGMtYmVvcwotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotKyAg ICBCZVBDOkhhaWt1Oio6KikJIyBIYWlrdSBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUu Ci0rCWVjaG8gaTU4Ni1wYy1oYWlrdQotKwlleGl0IDs7Ci0gICAgIFNYLTQ6U1VQRVItVVg6Kjoq KQotIAllY2hvIHN4NC1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0r CWV4aXQgOzsKLSAgICAgU1gtNTpTVVBFUi1VWDoqOiopCi0gCWVjaG8gc3g1LW5lYy1zdXBlcnV4 JHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBTWC02OlNVUEVS LVVYOio6KikKLSAJZWNobyBzeDYtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQg MCA7OwotKwlleGl0IDs7Ci0rICAgIFNYLTc6U1VQRVItVVg6KjoqKQotKwllY2hvIHN4Ny1uZWMt c3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KLSsJZXhpdCA7OwotKyAgICBTWC04OlNVUEVSLVVYOio6 KikKLSsJZWNobyBzeDgtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9Ci0rCWV4aXQgOzsKLSsg ICAgU1gtOFI6U1VQRVItVVg6KjoqKQotKwllY2hvIHN4OHItbmVjLXN1cGVydXgke1VOQU1FX1JF TEVBU0V9Ci0rCWV4aXQgOzsKLSAgICAgUG93ZXIqOlJoYXBzb2R5Oio6KikKLSAJZWNobyBwb3dl cnBjLWFwcGxlLXJoYXBzb2R5JHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7 OwotICAgICAqOlJoYXBzb2R5Oio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWFwcGxlLXJo YXBzb2R5JHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICAqOkRh cndpbjoqOiopCi0tCWNhc2UgYHVuYW1lIC1wYCBpbgotLQkgICAgKjg2KSBVTkFNRV9QUk9DRVNT T1I9aTY4NiA7OwotLQkgICAgcG93ZXJwYykgVU5BTUVfUFJPQ0VTU09SPXBvd2VycGMgOzsKLSsJ VU5BTUVfUFJPQ0VTU09SPWB1bmFtZSAtcGAgfHwgVU5BTUVfUFJPQ0VTU09SPXVua25vd24KLSsJ Y2FzZSAkVU5BTUVfUFJPQ0VTU09SIGluCi0rCSAgICB1bmtub3duKSBVTkFNRV9QUk9DRVNTT1I9 cG93ZXJwYyA7OwotIAllc2FjCi0gCWVjaG8gJHtVTkFNRV9QUk9DRVNTT1J9LWFwcGxlLWRhcndp biR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgKjpwcm9jbnRv KjoqOiogfCAqOlFOWDpbMDEyMzQ1Njc4OV0qOiopCi0gCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUg LXBgCi0gCWlmIHRlc3QgIiRVTkFNRV9QUk9DRVNTT1IiID0gIng4NiI7IHRoZW4KLUBAIC0xMjAw LDIyICsxMjU3LDI1IEBAIEVPRgotIAkJVU5BTUVfTUFDSElORT1wYwotIAlmaQotIAllY2hvICR7 VU5BTUVfUFJPQ0VTU09SfS0ke1VOQU1FX01BQ0hJTkV9LW50by1xbngke1VOQU1FX1JFTEVBU0V9 Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgICo6UU5YOio6NCopCi0gCWVjaG8gaTM4Ni1w Yy1xbngKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSsgICAgTlNFLT86Tk9OU1RPUF9LRVJORUw6 KjoqKQotKwllY2hvIG5zZS10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQotKwlleGl0IDs7Ci0g ICAgIE5TUi0/Ok5PTlNUT1BfS0VSTkVMOio6KikKLSAJZWNobyBuc3ItdGFuZGVtLW5zayR7VU5B TUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgKjpOb25TdG9wLVVYOio6 KikKLSAJZWNobyBtaXBzLWNvbXBhcS1ub25zdG9wdXgKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsK LSAgICAgQlMyMDAwOlBPU0lYKjoqOiopCi0gCWVjaG8gYnMyMDAwLXNpZW1lbnMtc3lzdgotLQll eGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBEUy8qOlVOSVhfU3lzdGVtX1Y6KjoqKQotIAllY2hv ICR7VU5BTUVfTUFDSElORX0tJHtVTkFNRV9TWVNURU19LSR7VU5BTUVfUkVMRUFTRX0KLS0JZXhp dCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgKjpQbGFuOToqOiopCi0gCSMgInVuYW1lIC1tIiBpcyBu b3QgY29uc2lzdGVudCwgc28gdXNlICRjcHV0eXBlIGluc3RlYWQuIDM4NgotIAkjIGlzIGNvbnZl cnRlZCB0byBpMzg2IGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIHg4NgotQEAgLTEyMjYsMzEg KzEyODYsNDcgQEAgRU9GCi0gCSAgICBVTkFNRV9NQUNISU5FPSIkY3B1dHlwZSIKLSAJZmkKLSAJ ZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tcGxhbjkKLS0JZXhpdCAwIDs7Ci0rCWV4aXQg OzsKLSAgICAgKjpUT1BTLTEwOio6KikKLSAJZWNobyBwZHAxMC11bmtub3duLXRvcHMxMAotLQll eGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICAqOlRFTkVYOio6KikKLSAJZWNobyBwZHAxMC11bmtu b3duLXRlbmV4Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIEtTMTA6VE9QUy0yMDoqOiog fCBLTDEwOlRPUFMtMjA6KjoqIHwgVFlQRTQ6VE9QUy0yMDoqOiopCi0gCWVjaG8gcGRwMTAtZGVj LXRvcHMyMAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBYS0wtMTpUT1BTLTIwOio6KiB8 IFRZUEU1OlRPUFMtMjA6KjoqKQotIAllY2hvIHBkcDEwLXhrbC10b3BzMjAKLS0JZXhpdCAwIDs7 Ci0rCWV4aXQgOzsKLSAgICAgKjpUT1BTLTIwOio6KikKLSAJZWNobyBwZHAxMC11bmtub3duLXRv cHMyMAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICAqOklUUzoqOiopCi0gCWVjaG8gcGRw MTAtdW5rbm93bi1pdHMKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgU0VJOio6KjpTRUlV WCkKLSAgICAgICAgIGVjaG8gbWlwcy1zZWktc2VpdXgke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQg MCA7OwotKwlleGl0IDs7Ci0gICAgICo6RHJhZ29uRmx5Oio6KikKLSAJZWNobyAke1VOQU1FX01B Q0hJTkV9LXVua25vd24tZHJhZ29uZmx5YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3Mv Wy0oXS4qLy8nYAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotKyAgICAqOipWTVM6KjoqKQotKyAg ICAJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKLSsJY2FzZSAiJHtVTkFN RV9NQUNISU5FfSIgaW4KLSsJICAgIEEqKSBlY2hvIGFscGhhLWRlYy12bXMgOyBleGl0IDs7Ci0r CSAgICBJKikgZWNobyBpYTY0LWRlYy12bXMgOyBleGl0IDs7Ci0rCSAgICBWKikgZWNobyB2YXgt ZGVjLXZtcyA7IGV4aXQgOzsKLSsJZXNhYyA7OwotKyAgICAqOlhFTklYOio6U3lzVikKLSsJZWNo byBpMzg2LXBjLXhlbml4Ci0rCWV4aXQgOzsKLSsgICAgaSo4Njpza3lvczoqOiopCi0rCWVjaG8g JHtVTkFNRV9NQUNISU5FfS1wYy1za3lvc2BlY2hvICR7VU5BTUVfUkVMRUFTRX1gIHwgc2VkIC1l ICdzLyAuKiQvLycKLSsJZXhpdCA7OwotKyAgICBpKjg2OnJkb3M6KjoqKQotKwllY2hvICR7VU5B TUVfTUFDSElORX0tcGMtcmRvcwotKwlleGl0IDs7Ci0gZXNhYwotIAotICNlY2hvICcoTm8gdW5h bWUgY29tbWFuZCBvciB1bmFtZSBvdXRwdXQgbm90IHJlY29nbml6ZWQuKScgMT4mMgotQEAgLTEy ODIsNyArMTM1OCw3IEBAIG1haW4gKCkKLSAjZW5kaWYKLSAKLSAjaWYgZGVmaW5lZCAoX19hcm0p ICYmIGRlZmluZWQgKF9fYWNvcm4pICYmIGRlZmluZWQgKF9fdW5peCkKLS0gIHByaW50ZiAoImFy bS1hY29ybi1yaXNjaXgiKTsgZXhpdCAoMCk7Ci0rICBwcmludGYgKCJhcm0tYWNvcm4tcmlzY2l4 XG4iKTsgZXhpdCAoMCk7Ci0gI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQgKGhwMzAwKSAmJiAhZGVm aW5lZCAoaHB1eCkKLUBAIC0xMzcxLDExICsxNDQ3LDEyIEBAIG1haW4gKCkKLSB9Ci0gRU9GCi0g Ci0tJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgMj4vZGV2L251bGwgJiYgJGR1bW15 ICYmIGV4aXQgMAotKyRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jIDI+L2Rldi9udWxs ICYmIFNZU1RFTV9OQU1FPWAkZHVtbXlgICYmCi0rCXsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhp dDsgfQotIAotICMgQXBvbGxvcyBwdXQgdGhlIHN5c3RlbSB0eXBlIGluIHRoZSBlbnZpcm9ubWVu dC4KLSAKLS10ZXN0IC1kIC91c3IvYXBvbGxvICYmIHsgZWNobyAke0lTUH0tYXBvbGxvLSR7U1lT VFlQRX07IGV4aXQgMDsgfQotK3Rlc3QgLWQgL3Vzci9hcG9sbG8gJiYgeyBlY2hvICR7SVNQfS1h cG9sbG8tJHtTWVNUWVBFfTsgZXhpdDsgfQotIAotICMgQ29udmV4IHZlcnNpb25zIHRoYXQgcHJl ZGF0ZSB1bmFtZSBjYW4gdXNlIGdldHN5c2luZm8oMSkKLSAKLUBAIC0xMzg0LDIyICsxNDYxLDIy IEBAIHRoZW4KLSAgICAgY2FzZSBgZ2V0c3lzaW5mbyAtZiBjcHVfdHlwZWAgaW4KLSAgICAgYzEq KQotIAllY2hvIGMxLWNvbnZleC1ic2QKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgYzIq KQotIAlpZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKLSAJdGhlbiBlY2hvIGMzMi1jb252ZXgt YnNkCi0gCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCi0gCWZpCi0tCWV4aXQgMCA7OwotKwlleGl0 IDs7Ci0gICAgIGMzNCopCi0gCWVjaG8gYzM0LWNvbnZleC1ic2QKLS0JZXhpdCAwIDs7Ci0rCWV4 aXQgOzsKLSAgICAgYzM4KikKLSAJZWNobyBjMzgtY29udmV4LWJzZAotLQlleGl0IDAgOzsKLSsJ ZXhpdCA7OwotICAgICBjNCopCi0gCWVjaG8gYzQtY29udmV4LWJzZAotLQlleGl0IDAgOzsKLSsJ ZXhpdCA7OwotICAgICBlc2FjCi0gZmkKLSAKLUBAIC0xNDEwLDcgKzE0ODcsOSBAQCBUaGlzIHNj cmlwdCwgbGFzdCBtb2RpZmllZCAkdGltZXN0YW1wLCBoCi0gdGhlIG9wZXJhdGluZyBzeXN0ZW0g eW91IGFyZSB1c2luZy4gSXQgaXMgYWR2aXNlZCB0aGF0IHlvdQotIGRvd25sb2FkIHRoZSBtb3N0 IHVwIHRvIGRhdGUgdmVyc2lvbiBvZiB0aGUgY29uZmlnIHNjcmlwdHMgZnJvbQotIAotLSAgICBm dHA6Ly9mdHAuZ251Lm9yZy9wdWIvZ251L2NvbmZpZy8KLSsgIGh0dHA6Ly9naXQuc2F2YW5uYWgu Z251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuZ3Vlc3M7 aGI9SEVBRAotK2FuZAotKyAgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1j b25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5zdWI7aGI9SEVBRAotIAotIElmIHRoZSB2 ZXJzaW9uIHlvdSBydW4gKCQwKSBpcyBhbHJlYWR5IHVwIHRvIGRhdGUsIHBsZWFzZQotIHNlbmQg dGhlIGZvbGxvd2luZyBkYXRhIGFuZCBhbnkgaW5mb3JtYXRpb24geW91IHRoaW5rIG1pZ2h0IGJl Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9zdXBwb3J0L2NvbmZpZy5ycGF0 aAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9zdXBw b3J0L2NvbmZpZy5ycGF0aAkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvc3VwcG9ydC9jb25maWcucnBhdGgJMjAxMS0w Ny0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC02LDE5ICs2LDE4IEBACi0gIyAgIFRh a2VuIGZyb20gR05VIGxpYnRvb2wsIDIwMDEKLSAjICAgT3JpZ2luYWxseSBieSBHb3Jkb24gTWF0 emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKLSAjCi0tIyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gIyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0gIyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gIwot LSMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwgYnV0Ci0tIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLS0jICAgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjICAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsj ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotICMKLSAjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLS0jICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jICAgRm91bmRhdGlvbiwgSW5jLiwgNTkg VGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsj ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCi0gIwotICMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91Ci0gIyAgIGRpc3RyaWJ1dGUgdGhpcyBm aWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQotSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvcmVhZGxpbmUvc3VwcG9ydC9jb25maWcuc3ViCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3N1cHBvcnQvY29uZmlnLnN1YgkyMDEx LTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMv cmVhZGxpbmUvc3VwcG9ydC9jb25maWcuc3ViCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAw ICswMjAwCi1AQCAtMSw5ICsxLDEwIEBACi0gIyEgL2Jpbi9zaAotICMgQ29uZmlndXJhdGlvbiB2 YWxpZGF0aW9uIHN1YnJvdXRpbmUgc2NyaXB0LgotICMgICBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5 OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCi0tIyAgIDIwMDAsIDIwMDEs IDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgIDIwMDAsIDIw MDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDk4Ci0rIyAg IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLXRpbWVzdGFtcD0nMjAwNC0wMi0x NicKLSt0aW1lc3RhbXA9JzIwMDgtMDMtMjYnCi0gCi0gIyBUaGlzIGZpbGUgaXMgKGluIHByaW5j aXBsZSkgY29tbW9uIHRvIEFMTCBHTlUgc29mdHdhcmUuCi0gIyBUaGUgcHJlc2VuY2Ugb2YgYSBt YWNoaW5lIGluIHRoaXMgZmlsZSBzdWdnZXN0cyB0aGF0IFNPTUUgR05VIHNvZnR3YXJlCi1AQCAt MjEsMTQgKzIyLDE1IEBAIHRpbWVzdGFtcD0nMjAwNC0wMi0xNicKLSAjCi0gIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot ICMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKLS0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwK LS0jIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotLQotKyMgRm91bmRhdGlvbiwgSW5jLiwg NTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKLSsjIDAyMTEwLTEz MDEsIFVTQS4KLSsjCi0gIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSwgaWYgeW91Ci0gIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0 IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKLSAjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdl bmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCi0gIyB0aGUgc2Ft ZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHBy b2dyYW0uCi0gCi0rCi0gIyBQbGVhc2Ugc2VuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0Bn bnUub3JnPi4gIFN1Ym1pdCBhIGNvbnRleHQKLSAjIGRpZmYgYW5kIGEgcHJvcGVybHkgZm9ybWF0 dGVkIENoYW5nZUxvZyBlbnRyeS4KLSAjCi1AQCAtNzAsOCArNzIsOCBAQCBSZXBvcnQgYnVncyBh bmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoCi0gdmVyc2lvbj0iXAotIEdOVSBjb25maWcuc3Vi ICgkdGltZXN0YW1wKQotIAotLUNvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwg MTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMQotLUZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5Niwg MTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKLSsyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAy MDA2LCAyMDA3LCAyMDA4LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0g VGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRp b25zLiAgVGhlcmUgaXMgTk8KLSB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCi1AQCAtODMsMTEgKzg1LDEx IEBAIFRyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKLSB3aGlsZSB0ZXN0 ICQjIC1ndCAwIDsgZG8KLSAgIGNhc2UgJDEgaW4KLSAgICAgLS10aW1lLXN0YW1wIHwgLS10aW1l KiB8IC10ICkKLS0gICAgICAgZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0IDAgOzsKLSsgICAgICAg ZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0IDs7Ci0gICAgIC0tdmVyc2lvbiB8IC12ICkKLS0gICAg ICAgZWNobyAiJHZlcnNpb24iIDsgZXhpdCAwIDs7Ci0rICAgICAgIGVjaG8gIiR2ZXJzaW9uIiA7 IGV4aXQgOzsKLSAgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKLS0gICAgICAgZWNobyAiJHVzYWdl IjsgZXhpdCAwIDs7Ci0rICAgICAgIGVjaG8gIiR1c2FnZSI7IGV4aXQgOzsKLSAgICAgLS0gKSAg ICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCi0gICAgICAgIHNoaWZ0OyBicmVhayA7OwotICAg ICAtICkJIyBVc2Ugc3RkaW4gYXMgaW5wdXQuCi1AQCAtOTksNyArMTAxLDcgQEAgd2hpbGUgdGVz dCAkIyAtZ3QgMCA7IGRvCi0gICAgICpsb2NhbCopCi0gICAgICAgICMgRmlyc3QgcGFzcyB0aHJv dWdoIGFueSBsb2NhbCBtYWNoaW5lIHR5cGVzLgotICAgICAgICBlY2hvICQxCi0tICAgICAgIGV4 aXQgMDs7Ci0rICAgICAgIGV4aXQgOzsKLSAKLSAgICAgKiApCi0gICAgICAgIGJyZWFrIDs7Ci1A QCAtMTE4LDggKzEyMCw5IEBAIGVzYWMKLSAjIEhlcmUgd2UgbXVzdCByZWNvZ25pemUgYWxsIHRo ZSB2YWxpZCBLRVJORUwtT1MgY29tYmluYXRpb25zLgotIG1heWJlX29zPWBlY2hvICQxIHwgc2Vk ICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAotIGNhc2UgJG1heWJlX29zIGluCi0t ICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1kaWV0bGliYyB8IGxpbnV4LXVjbGliYyog fCB1Y2xpbnV4LXVjbGliYyogfCB1Y2xpbnV4LWdudSogfCBcCi0tICBrZnJlZWJzZCotZ251KiB8 IGtuZXRic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBzdG9ybS1jaGFvcyogfCBvczItZW14KiB8 IHJ0bWstbm92YSopCi0rICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1kaWV0bGliYyB8 IGxpbnV4LW5ld2xpYiogfCBsaW51eC11Y2xpYmMqIHwgXAotKyAgdWNsaW51eC11Y2xpYmMqIHwg dWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1n bnUqIHwgXAotKyAgc3Rvcm0tY2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5vdmEqKQotICAgICBv cz0tJG1heWJlX29zCi0gICAgIGJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipc KS1cKFteLV0qLVteLV0qXCkkL1wxLydgCi0gICAgIDs7Ci1AQCAtMTQ1LDcgKzE0OCw3IEBAIGNh c2UgJG9zIGluCi0gCS1jb252ZXJnZW50KiB8IC1uY3IqIHwgLW5ld3MgfCAtMzIqIHwgLTM2MDAq IHwgLTMxMDAqIHwgLWhpdGFjaGkqIHxcCi0gCS1jWzEyM10qIHwgLWNvbnZleCogfCAtc3VuIHwg LWNyZHMgfCAtb21yb24qIHwgLWRnIHwgLXVsdHJhIHwgLXR0aSogfCBcCi0gCS1oYXJyaXMgfCAt ZG9scGhpbiB8IC1oaWdobGV2ZWwgfCAtZ291bGQgfCAtY2JtIHwgLW5zIHwgLW1hc3Njb21wIHwg XAotLQktYXBwbGUgfCAtYXhpcykKLSsJLWFwcGxlIHwgLWF4aXMgfCAta251dGggfCAtY3JheSkK LSAJCW9zPQotIAkJYmFzaWNfbWFjaGluZT0kMQotIAkJOzsKLUBAIC0xNzAsNiArMTczLDEwIEBA IGNhc2UgJG9zIGluCi0gCS1oaXV4KikKLSAJCW9zPS1oaXV4d2UyCi0gCQk7OwotKwktc2NvNikK LSsJCW9zPS1zY281djYKLSsJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYt LiovODYtcGMvJ2AKLSsJCTs7Ci0gCS1zY281KQotIAkJb3M9LXNjbzMuMnY1Ci0gCQliYXNpY19t YWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCi1AQCAtMTg2LDYgKzE5 MywxMCBAQCBjYXNlICRvcyBpbgotIAkJIyBEb24ndCBmb3JnZXQgdmVyc2lvbiBpZiBpdCBpcyAz LjJ2NCBvciBuZXdlci4KLSAJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYt LiovODYtcGMvJ2AKLSAJCTs7Ci0rCS1zY281djYqKQotKwkJIyBEb24ndCBmb3JnZXQgdmVyc2lv biBpZiBpdCBpcyAzLjJ2NCBvciBuZXdlci4KLSsJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBz ZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKLSsJCTs7Ci0gCS1zY28qKQotIAkJb3M9LXNjbzMuMnYy Ci0gCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCi1A QCAtMjMwLDIyICsyNDEsMjcgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgotIAl8IGFscGhhIHwg YWxwaGFldls0LThdIHwgYWxwaGFldjU2IHwgYWxwaGFldjZbNzhdIHwgYWxwaGFwY2E1WzY3XSBc Ci0gCXwgYWxwaGE2NCB8IGFscGhhNjRldls0LThdIHwgYWxwaGE2NGV2NTYgfCBhbHBoYTY0ZXY2 Wzc4XSB8IGFscGhhNjRwY2E1WzY3XSBcCi0gCXwgYW0zM18yLjAgXAotLQl8IGFyYyB8IGFybSB8 IGFybVtibF1lIHwgYXJtZVtsYl0gfCBhcm12WzIzNDVdIHwgYXJtdlszNDVdW2xiXSB8IGF2ciBc Ci0rCXwgYXJjIHwgYXJtIHwgYXJtW2JsXWUgfCBhcm1lW2xiXSB8IGFybXZbMjM0NV0gfCBhcm12 WzM0NV1bbGJdIHwgYXZyIHwgYXZyMzIgXAotKwl8IGJmaW4gXAotIAl8IGM0eCB8IGNsaXBwZXIg XAotIAl8IGQxMHYgfCBkMzB2IHwgZGx4IHwgZHNwMTZ4eCBcCi0tCXwgZnIzMCB8IGZydiBcCi0r CXwgZmlkbyB8IGZyMzAgfCBmcnYgXAotIAl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEu WzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCi0gCXwgaTM3MCB8IGk4NjAg fCBpOTYwIHwgaWE2NCBcCi0gCXwgaXAyayB8IGlxMjAwMCBcCi0tCXwgbTMyciB8IG02ODAwMCB8 IG02OGsgfCBtODhrIHwgbWNvcmUgXAotKwl8IG0zMmMgfCBtMzJyIHwgbTMycmxlIHwgbTY4MDAw IHwgbTY4ayB8IG04OGsgXAotKwl8IG1heHEgfCBtYiB8IG1pY3JvYmxhemUgfCBtY29yZSB8IG1l cCB8IG1ldGFnIFwKLSAJfCBtaXBzIHwgbWlwc2JlIHwgbWlwc2ViIHwgbWlwc2VsIHwgbWlwc2xl IFwKLSAJfCBtaXBzMTYgXAotIAl8IG1pcHM2NCB8IG1pcHM2NGVsIFwKLS0JfCBtaXBzNjR2ciB8 IG1pcHM2NHZyZWwgXAotKwl8IG1pcHM2NG9jdGVvbiB8IG1pcHM2NG9jdGVvbmVsIFwKLSAJfCBt aXBzNjRvcmlvbiB8IG1pcHM2NG9yaW9uZWwgXAotKwl8IG1pcHM2NHI1OTAwIHwgbWlwczY0cjU5 MDBlbCBcCi0rCXwgbWlwczY0dnIgfCBtaXBzNjR2cmVsIFwKLSAJfCBtaXBzNjR2cjQxMDAgfCBt aXBzNjR2cjQxMDBlbCBcCi0gCXwgbWlwczY0dnI0MzAwIHwgbWlwczY0dnI0MzAwZWwgXAotIAl8 IG1pcHM2NHZyNTAwMCB8IG1pcHM2NHZyNTAwMGVsIFwKLSsJfCBtaXBzNjR2cjU5MDAgfCBtaXBz NjR2cjU5MDBlbCBcCi0gCXwgbWlwc2lzYTMyIHwgbWlwc2lzYTMyZWwgXAotIAl8IG1pcHNpc2Ez MnIyIHwgbWlwc2lzYTMycjJlbCBcCi0gCXwgbWlwc2lzYTY0IHwgbWlwc2lzYTY0ZWwgXAotQEAg LTI1NCwyMCArMjcwLDI0IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJfCBtaXBzaXNhNjRz cjcxayB8IG1pcHNpc2E2NHNyNzFrZWwgXAotIAl8IG1pcHN0eDM5IHwgbWlwc3R4MzllbCBcCi0g CXwgbW4xMDIwMCB8IG1uMTAzMDAgXAotKwl8IG10IFwKLSAJfCBtc3A0MzAgXAotKwl8IG5pb3Mg fCBuaW9zMiBcCi0gCXwgbnMxNmsgfCBuczMyayBcCi0tCXwgb3BlbnJpc2MgfCBvcjMyIFwKLSsJ fCBvcjMyIFwKLSAJfCBwZHAxMCB8IHBkcDExIHwgcGogfCBwamwgXAotIAl8IHBvd2VycGMgfCBw b3dlcnBjNjQgfCBwb3dlcnBjNjRsZSB8IHBvd2VycGNsZSB8IHBwY2JlIFwKLSAJfCBweXJhbWlk IFwKLS0JfCBzaCB8IHNoWzEyMzRdIHwgc2hbMjNdZSB8IHNoWzM0XWViIHwgc2hiZSB8IHNobGUg fCBzaFsxMjM0XWxlIHwgc2gzZWxlIFwKLSsJfCBzY29yZSBcCi0rCXwgc2ggfCBzaFsxMjM0XSB8 IHNoWzI0XWEgfCBzaFsyM11lIHwgc2hbMzRdZWIgfCBzaGViIHwgc2hiZSB8IHNobGUgfCBzaFsx MjM0XWxlIHwgc2gzZWxlIFwKLSAJfCBzaDY0IHwgc2g2NGxlIFwKLS0JfCBzcGFyYyB8IHNwYXJj NjQgfCBzcGFyYzg2eCB8IHNwYXJjbGV0IHwgc3BhcmNsaXRlIHwgc3BhcmN2OSB8IHNwYXJjdjli IFwKLS0JfCBzdHJvbmdhcm0gXAotKwl8IHNwYXJjIHwgc3BhcmM2NCB8IHNwYXJjNjRiIHwgc3Bh cmM2NHYgfCBzcGFyYzg2eCB8IHNwYXJjbGV0IHwgc3BhcmNsaXRlIFwKLSsJfCBzcGFyY3Y4IHwg c3BhcmN2OSB8IHNwYXJjdjliIHwgc3BhcmN2OXYgXAotKwl8IHNwdSB8IHN0cm9uZ2FybSBcCi0g CXwgdGFob2UgfCB0aHVtYiB8IHRpYzR4IHwgdGljODAgfCB0cm9uIFwKLSAJfCB2ODUwIHwgdjg1 MGUgXAotIAl8IHdlMzJrIFwKLS0JfCB4ODYgfCB4c2NhbGUgfCB4c3Rvcm15MTYgfCB4dGVuc2Eg XAotKwl8IHg4NiB8IHhjMTZ4IHwgeHNjYWxlIHwgeHNjYWxlZVtibF0gfCB4c3Rvcm15MTYgfCB4 dGVuc2EgXAotIAl8IHo4aykKLSAJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93 bgotIAkJOzsKLUBAIC0yNzgsNiArMjk4LDkgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgotIAkJ OzsKLSAJbTg4MTEwIHwgbTY4MFsxMjM0Nl0wIHwgbTY4Mz8yIHwgbTY4MzYwIHwgbTUyMDAgfCB2 NzAgfCB3NjUgfCB6OGspCi0gCQk7OwotKwltczEpCi0rCQliYXNpY19tYWNoaW5lPW10LXVua25v d24KLSsJCTs7Ci0gCi0gCSMgV2UgdXNlIGBwYycgcmF0aGVyIHRoYW4gYHVua25vd24nCi0gCSMg YmVjYXVzZSAoMSkgdGhhdCdzIHdoYXQgdGhleSBub3JtYWxseSBhcmUsIGFuZAotQEAgLTI5Nywy OCArMzIwLDMxIEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJfCBhbHBoYTY0LSogfCBhbHBo YTY0ZXZbNC04XS0qIHwgYWxwaGE2NGV2NTYtKiB8IGFscGhhNjRldjZbNzhdLSogXAotIAl8IGFs cGhhcGNhNVs2N10tKiB8IGFscGhhNjRwY2E1WzY3XS0qIHwgYXJjLSogXAotIAl8IGFybS0qICB8 IGFybWJlLSogfCBhcm1sZS0qIHwgYXJtZWItKiB8IGFybXYqLSogXAotLQl8IGF2ci0qIFwKLS0J fCBiczIwMDAtKiBcCi0rCXwgYXZyLSogfCBhdnIzMi0qIFwKLSsJfCBiZmluLSogfCBiczIwMDAt KiBcCi0gCXwgY1sxMjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSogfCBjNTR4LSogfCBj NTV4LSogfCBjNngtKiBcCi0tCXwgY2xpcHBlci0qIHwgY3lkcmEtKiBcCi0rCXwgY2xpcHBlci0q IHwgY3JheW52LSogfCBjeWRyYS0qIFwKLSAJfCBkMTB2LSogfCBkMzB2LSogfCBkbHgtKiBcCi0g CXwgZWx4c2ktKiBcCi0tCXwgZjMwWzAxXS0qIHwgZjcwMC0qIHwgZnIzMC0qIHwgZnJ2LSogfCBm eDgwLSogXAotKwl8IGYzMFswMV0tKiB8IGY3MDAtKiB8IGZpZG8tKiB8IGZyMzAtKiB8IGZydi0q IHwgZng4MC0qIFwKLSAJfCBoODMwMC0qIHwgaDg1MDAtKiBcCi0gCXwgaHBwYS0qIHwgaHBwYTEu WzAxXS0qIHwgaHBwYTIuMC0qIHwgaHBwYTIuMFtud10tKiB8IGhwcGE2NC0qIFwKLSAJfCBpKjg2 LSogfCBpODYwLSogfCBpOTYwLSogfCBpYTY0LSogXAotIAl8IGlwMmstKiB8IGlxMjAwMC0qIFwK LS0JfCBtMzJyLSogXAotKwl8IG0zMmMtKiB8IG0zMnItKiB8IG0zMnJsZS0qIFwKLSAJfCBtNjgw MDAtKiB8IG02ODBbMDEyMzQ2XTAtKiB8IG02ODM2MC0qIHwgbTY4Mz8yLSogfCBtNjhrLSogXAot LQl8IG04ODExMC0qIHwgbTg4ay0qIHwgbWNvcmUtKiBcCi0rCXwgbTg4MTEwLSogfCBtODhrLSog fCBtYXhxLSogfCBtY29yZS0qIHwgbWV0YWctKiBcCi0gCXwgbWlwcy0qIHwgbWlwc2JlLSogfCBt aXBzZWItKiB8IG1pcHNlbC0qIHwgbWlwc2xlLSogXAotIAl8IG1pcHMxNi0qIFwKLSAJfCBtaXBz NjQtKiB8IG1pcHM2NGVsLSogXAotLQl8IG1pcHM2NHZyLSogfCBtaXBzNjR2cmVsLSogXAotKwl8 IG1pcHM2NG9jdGVvbi0qIHwgbWlwczY0b2N0ZW9uZWwtKiBcCi0gCXwgbWlwczY0b3Jpb24tKiB8 IG1pcHM2NG9yaW9uZWwtKiBcCi0rCXwgbWlwczY0cjU5MDAtKiB8IG1pcHM2NHI1OTAwZWwtKiBc Ci0rCXwgbWlwczY0dnItKiB8IG1pcHM2NHZyZWwtKiBcCi0gCXwgbWlwczY0dnI0MTAwLSogfCBt aXBzNjR2cjQxMDBlbC0qIFwKLSAJfCBtaXBzNjR2cjQzMDAtKiB8IG1pcHM2NHZyNDMwMGVsLSog XAotIAl8IG1pcHM2NHZyNTAwMC0qIHwgbWlwczY0dnI1MDAwZWwtKiBcCi0rCXwgbWlwczY0dnI1 OTAwLSogfCBtaXBzNjR2cjU5MDBlbC0qIFwKLSAJfCBtaXBzaXNhMzItKiB8IG1pcHNpc2EzMmVs LSogXAotIAl8IG1pcHNpc2EzMnIyLSogfCBtaXBzaXNhMzJyMmVsLSogXAotIAl8IG1pcHNpc2E2 NC0qIHwgbWlwc2lzYTY0ZWwtKiBcCi1AQCAtMzI2LDI3ICszNTIsMzUgQEAgY2FzZSAkYmFzaWNf bWFjaGluZSBpbgotIAl8IG1pcHNpc2E2NHNiMS0qIHwgbWlwc2lzYTY0c2IxZWwtKiBcCi0gCXwg bWlwc2lzYTY0c3I3MWstKiB8IG1pcHNpc2E2NHNyNzFrZWwtKiBcCi0gCXwgbWlwc3R4MzktKiB8 IG1pcHN0eDM5ZWwtKiBcCi0rCXwgbW1peC0qIFwKLSsJfCBtdC0qIFwKLSAJfCBtc3A0MzAtKiBc Ci0tCXwgbm9uZS0qIHwgbnAxLSogfCBudjEtKiB8IG5zMTZrLSogfCBuczMyay0qIFwKLSsJfCBu aW9zLSogfCBuaW9zMi0qIFwKLSsJfCBub25lLSogfCBucDEtKiB8IG5zMTZrLSogfCBuczMyay0q IFwKLSAJfCBvcmlvbi0qIFwKLSAJfCBwZHAxMC0qIHwgcGRwMTEtKiB8IHBqLSogfCBwamwtKiB8 IHBuLSogfCBwb3dlci0qIFwKLSAJfCBwb3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2 NGxlLSogfCBwb3dlcnBjbGUtKiB8IHBwY2JlLSogXAotIAl8IHB5cmFtaWQtKiBcCi0gCXwgcm9t cC0qIHwgcnM2MDAwLSogXAotLQl8IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hbMjNdZS0qIHwgc2hb MzRdZWItKiB8IHNoYmUtKiBcCi0rCXwgc2gtKiB8IHNoWzEyMzRdLSogfCBzaFsyNF1hLSogfCBz aFsyM11lLSogfCBzaFszNF1lYi0qIHwgc2hlYi0qIHwgc2hiZS0qIFwKLSAJfCBzaGxlLSogfCBz aFsxMjM0XWxlLSogfCBzaDNlbGUtKiB8IHNoNjQtKiB8IHNoNjRsZS0qIFwKLS0JfCBzcGFyYy0q IHwgc3BhcmM2NC0qIHwgc3BhcmM4NngtKiB8IHNwYXJjbGV0LSogfCBzcGFyY2xpdGUtKiBcCi0t CXwgc3BhcmN2OS0qIHwgc3BhcmN2OWItKiB8IHN0cm9uZ2FybS0qIHwgc3YxLSogfCBzeD8tKiBc Ci0rCXwgc3BhcmMtKiB8IHNwYXJjNjQtKiB8IHNwYXJjNjRiLSogfCBzcGFyYzY0di0qIHwgc3Bh cmM4NngtKiB8IHNwYXJjbGV0LSogXAotKwl8IHNwYXJjbGl0ZS0qIFwKLSsJfCBzcGFyY3Y4LSog fCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN0cm9uZ2FybS0qIHwgc3Yx LSogfCBzeD8tKiBcCi0gCXwgdGFob2UtKiB8IHRodW1iLSogXAotLQl8IHRpYzMwLSogfCB0aWM0 eC0qIHwgdGljNTR4LSogfCB0aWM1NXgtKiB8IHRpYzZ4LSogfCB0aWM4MC0qIFwKLSsJfCB0aWMz MC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiB8 IHRpbGUtKiBcCi0gCXwgdHJvbi0qIFwKLSAJfCB2ODUwLSogfCB2ODUwZS0qIHwgdmF4LSogXAot IAl8IHdlMzJrLSogXAotLQl8IHg4Ni0qIHwgeDg2XzY0LSogfCB4cHMxMDAtKiB8IHhzY2FsZS0q IHwgeHN0b3JteTE2LSogXAotLQl8IHh0ZW5zYS0qIFwKLSsJfCB4ODYtKiB8IHg4Nl82NC0qIHwg eGMxNngtKiB8IHhwczEwMC0qIHwgeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qIFwKLSsJfCB4c3Rv cm15MTYtKiB8IHh0ZW5zYSotKiBcCi0gCXwgeW1wLSogXAotIAl8IHo4ay0qKQotIAkJOzsKLSsJ IyBSZWNvZ25pemUgdGhlIGJhc2ljIENQVSB0eXBlcyB3aXRob3V0IGNvbXBhbnkgbmFtZSwgd2l0 aCBnbG9iIG1hdGNoLgotKwl4dGVuc2EqKQotKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGlu ZS11bmtub3duCi0rCQk7OwotIAkjIFJlY29nbml6ZSB0aGUgdmFyaW91cyBtYWNoaW5lIG5hbWVz IGFuZCBhbGlhc2VzIHdoaWNoIHN0YW5kCi0gCSMgZm9yIGEgQ1BVIHR5cGUgYW5kIGEgY29tcGFu eSBhbmQgc29tZXRpbWVzIGV2ZW4gYW4gT1MuCi0gCTM4NmJzZCkKLUBAIC00MTcsNiArNDUxLDE0 IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJCWJhc2ljX21hY2hpbmU9bnMzMmstc2VxdWVu dAotIAkJb3M9LWR5bml4Ci0gCQk7OwotKwlibGFja2ZpbikKLSsJCWJhc2ljX21hY2hpbmU9YmZp bi11bmtub3duCi0rCQlvcz0tbGludXgKLSsJCTs7Ci0rCWJsYWNrZmluLSopCi0rCQliYXNpY19t YWNoaW5lPWJmaW4tYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKLSsJ CW9zPS1saW51eAotKwkJOzsKLSAJYzkwKQotIAkJYmFzaWNfbWFjaGluZT1jOTAtY3JheQotIAkJ b3M9LXVuaWNvcwotQEAgLTQ0NSwxNiArNDg3LDI3IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4K LSAJCWJhc2ljX21hY2hpbmU9ajkwLWNyYXkKLSAJCW9zPS11bmljb3MKLSAJCTs7Ci0tCWNyMTZj KQotLQkJYmFzaWNfbWFjaGluZT1jcjE2Yy11bmtub3duCi0rCWNyYXludikKLSsJCWJhc2ljX21h Y2hpbmU9Y3JheW52LWNyYXkKLSsJCW9zPS11bmljb3NtcAotKwkJOzsKLSsJY3IxNikKLSsJCWJh c2ljX21hY2hpbmU9Y3IxNi11bmtub3duCi0gCQlvcz0tZWxmCi0gCQk7OwotIAljcmRzIHwgdW5v cykKLSAJCWJhc2ljX21hY2hpbmU9bTY4ay1jcmRzCi0gCQk7OwotKwljcmlzdjMyIHwgY3Jpc3Yz Mi0qIHwgZXRyYXhmcyopCi0rCQliYXNpY19tYWNoaW5lPWNyaXN2MzItYXhpcwotKwkJOzsKLSAJ Y3JpcyB8IGNyaXMtKiB8IGV0cmF4KikKLSAJCWJhc2ljX21hY2hpbmU9Y3Jpcy1heGlzCi0gCQk7 OwotKwljcngpCi0rCQliYXNpY19tYWNoaW5lPWNyeC11bmtub3duCi0rCQlvcz0tZWxmCi0rCQk7 OwotIAlkYTMwIHwgZGEzMC0qKQotIAkJYmFzaWNfbWFjaGluZT1tNjhrLWRhMzAKLSAJCTs7Ci1A QCAtNDc3LDYgKzUzMCwxMCBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCi0gCQliYXNpY19tYWNo aW5lPW04OGstbW90b3JvbGEKLSAJCW9zPS1zeXN2MwotIAkJOzsKLSsJZGpncHApCi0rCQliYXNp Y19tYWNoaW5lPWk1ODYtcGMKLSsJCW9zPS1tc2Rvc2RqZ3BwCi0rCQk7OwotIAlkcHgyMCB8IGRw eDIwLSopCi0gCQliYXNpY19tYWNoaW5lPXJzNjAwMC1idWxsCi0gCQlvcz0tYm9zeAotQEAgLTYy Nyw2ICs2ODQsMTQgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgotIAkJYmFzaWNfbWFjaGluZT1t NjhrLWlzaQotIAkJb3M9LXN5c3YKLSAJCTs7Ci0rCW02OGtub21tdSkKLSsJCWJhc2ljX21hY2hp bmU9bTY4ay11bmtub3duCi0rCQlvcz0tbGludXgKLSsJCTs7Ci0rCW02OGtub21tdS0qKQotKwkJ YmFzaWNfbWFjaGluZT1tNjhrLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0v LydgCi0rCQlvcz0tbGludXgKLSsJCTs7Ci0gCW04OGstb21yb24qKQotIAkJYmFzaWNfbWFjaGlu ZT1tODhrLW9tcm9uCi0gCQk7OwotQEAgLTY0Miw2ICs3MDcsMTAgQEAgY2FzZSAkYmFzaWNfbWFj aGluZSBpbgotIAkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCi0gCQlvcz0tbWluZ3czMgotIAkJOzsK LSsJbWluZ3czMmNlKQotKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgotKwkJb3M9LW1pbmd3 MzJjZQotKwkJOzsKLSAJbWluaWZyYW1lKQotIAkJYmFzaWNfbWFjaGluZT1tNjgwMDAtY29udmVy Z2VudAotIAkJOzsKLUBAIC02NTUsMTAgKzcyNCw2IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4K LSAJbWlwczMqKQotIAkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAt ZSAncy9taXBzMy9taXBzNjQvJ2AtdW5rbm93bgotIAkJOzsKLS0JbW1peCopCi0tCQliYXNpY19t YWNoaW5lPW1taXgta251dGgKLS0JCW9zPS1tbWl4d2FyZQotLQkJOzsKLSAJbW9uaXRvcikKLSAJ CWJhc2ljX21hY2hpbmU9bTY4ay1yb202OGsKLSAJCW9zPS1jb2ZmCi1AQCAtNjcxLDYgKzczNiw5 IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYwotIAkJ b3M9LW1zZG9zCi0gCQk7OwotKwltczEtKikKLSsJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2lj X21hY2hpbmUgfCBzZWQgLWUgJ3MvbXMxLS9tdC0vJ2AKLSsJCTs7Ci0gCW12cykKLSAJCWJhc2lj X21hY2hpbmU9aTM3MC1pYm0KLSAJCW9zPS1tdnMKLUBAIC03MzksOSArODA3LDggQEAgY2FzZSAk YmFzaWNfbWFjaGluZSBpbgotIAlucDEpCi0gCQliYXNpY19tYWNoaW5lPW5wMS1nb3VsZAotIAkJ OzsKLS0JbnYxKQotLQkJYmFzaWNfbWFjaGluZT1udjEtY3JheQotLQkJb3M9LXVuaWNvc21wCi0r CW5zZS10YW5kZW0pCi0rCQliYXNpY19tYWNoaW5lPW5zZS10YW5kZW0KLSAJCTs7Ci0gCW5zci10 YW5kZW0pCi0gCQliYXNpY19tYWNoaW5lPW5zci10YW5kZW0KLUBAIC03NTAsOSArODE3LDggQEAg Y2FzZSAkYmFzaWNfbWFjaGluZSBpbgotIAkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLW9raQotIAkJ b3M9LXByb2VsZgotIAkJOzsKLS0Jb3IzMiB8IG9yMzItKikKLSsJb3BlbnJpc2MgfCBvcGVucmlz Yy0qKQotIAkJYmFzaWNfbWFjaGluZT1vcjMyLXVua25vd24KLS0JCW9zPS1jb2ZmCi0gCQk7Owot IAlvczQwMCkKLSAJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1pYm0KLUBAIC03NzQsNiArODQwLDE0 IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJCWJhc2ljX21hY2hpbmU9aTg2MC1pbnRlbAot IAkJb3M9LW9zZgotIAkJOzsKLSsJcGFyaXNjKQotKwkJYmFzaWNfbWFjaGluZT1ocHBhLXVua25v d24KLSsJCW9zPS1saW51eAotKwkJOzsKLSsJcGFyaXNjLSopCi0rCQliYXNpY19tYWNoaW5lPWhw cGEtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKLSsJCW9zPS1saW51 eAotKwkJOzsKLSAJcGJkKQotIAkJYmFzaWNfbWFjaGluZT1zcGFyYy10dGkKLSAJCTs7Ci1AQCAt NzgzLDYgKzg1NywxMiBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCi0gCXBjNTMyIHwgcGM1MzIt KikKLSAJCWJhc2ljX21hY2hpbmU9bnMzMmstcGM1MzIKLSAJCTs7Ci0rCXBjOTgpCi0rCQliYXNp Y19tYWNoaW5lPWkzODYtcGMKLSsJCTs7Ci0rCXBjOTgtKikKLSsJCWJhc2ljX21hY2hpbmU9aTM4 Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAotKwkJOzsKLSAJcGVu dGl1bSB8IHA1IHwgazUgfCBrNiB8IG5leGdlbiB8IHZpYWMzKQotIAkJYmFzaWNfbWFjaGluZT1p NTg2LXBjCi0gCQk7OwotQEAgLTgzOSw2ICs5MTksMTAgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBp bgotIAkJYmFzaWNfbWFjaGluZT1pNTg2LXVua25vd24KLSAJCW9zPS1wdzMyCi0gCQk7OwotKwly ZG9zKQotKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCi0rCQlvcz0tcmRvcwotKwkJOzsKLSAJcm9t NjhrKQotIAkJYmFzaWNfbWFjaGluZT1tNjhrLXJvbTY4awotIAkJb3M9LWNvZmYKLUBAIC04NjUs NiArOTQ5LDEwIEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJc2IxZWwpCi0gCQliYXNpY19t YWNoaW5lPW1pcHNpc2E2NHNiMWVsLXVua25vd24KLSAJCTs7Ci0rCXNkZSkKLSsJCWJhc2ljX21h Y2hpbmU9bWlwc2lzYTMyLXNkZQotKwkJb3M9LWVsZgotKwkJOzsKLSAJc2VpKQotIAkJYmFzaWNf bWFjaGluZT1taXBzLXNlaQotIAkJb3M9LXNlaXV4Ci1AQCAtODc2LDYgKzk2NCw5IEBAIGNhc2Ug JGJhc2ljX21hY2hpbmUgaW4KLSAJCWJhc2ljX21hY2hpbmU9c2gtaGl0YWNoaQotIAkJb3M9LWht cwotIAkJOzsKLSsJc2g1ZWwpCi0rCQliYXNpY19tYWNoaW5lPXNoNWxlLXVua25vd24KLSsJCTs7 Ci0gCXNoNjQpCi0gCQliYXNpY19tYWNoaW5lPXNoNjQtdW5rbm93bgotIAkJOzsKLUBAIC05NjUs NiArMTA1NiwxMCBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCi0gCQliYXNpY19tYWNoaW5lPXRp YzZ4LXVua25vd24KLSAJCW9zPS1jb2ZmCi0gCQk7OwotKwl0aWxlKikKLSsJCWJhc2ljX21hY2hp bmU9dGlsZS11bmtub3duCi0rCQlvcz0tbGludXgtZ251Ci0rCQk7OwotIAl0eDM5KQotIAkJYmFz aWNfbWFjaGluZT1taXBzdHgzOS11bmtub3duCi0gCQk7OwotQEAgLTEwMjUsNiArMTEyMCwxMCBA QCBjYXNlICRiYXNpY19tYWNoaW5lIGluCi0gCQliYXNpY19tYWNoaW5lPWhwcGExLjEtd2luYm9u ZAotIAkJb3M9LXByb2VsZgotIAkJOzsKLSsJeGJveCkKLSsJCWJhc2ljX21hY2hpbmU9aTY4Ni1w YwotKwkJb3M9LW1pbmd3MzIKLSsJCTs7Ci0gCXhwcyB8IHhwczEwMCkKLSAJCWJhc2ljX21hY2hp bmU9eHBzMTAwLWhvbmV5d2VsbAotIAkJOzsKLUBAIC0xMDU1LDYgKzExNTQsOSBAQCBjYXNlICRi YXNpY19tYWNoaW5lIGluCi0gCXJvbXApCi0gCQliYXNpY19tYWNoaW5lPXJvbXAtaWJtCi0gCQk7 OwotKwltbWl4KQotKwkJYmFzaWNfbWFjaGluZT1tbWl4LWtudXRoCi0rCQk7OwotIAlyczYwMDAp Ci0gCQliYXNpY19tYWNoaW5lPXJzNjAwMC1pYm0KLSAJCTs7Ci1AQCAtMTA3MSwxMyArMTE3Mywx MCBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCi0gCXdlMzJrKQotIAkJYmFzaWNfbWFjaGluZT13 ZTMyay1hdHQKLSAJCTs7Ci0tCXNoMyB8IHNoNCB8IHNoWzM0XWViIHwgc2hbMTIzNF1sZSB8IHNo WzIzXWVsZSkKLSsJc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMzRdZWIgfCBzaFsxMjM0XWxlIHwg c2hbMjNdZWxlKQotIAkJYmFzaWNfbWFjaGluZT1zaC11bmtub3duCi0gCQk7OwotLQlzaDY0KQot LQkJYmFzaWNfbWFjaGluZT1zaDY0LXVua25vd24KLS0JCTs7Ci0tCXNwYXJjIHwgc3BhcmN2OSB8 IHNwYXJjdjliKQotKwlzcGFyYyB8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIgfCBzcGFy Y3Y5dikKLSAJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCi0gCQk7OwotIAljeWRyYSkKLUBAIC0x MTUwLDIwICsxMjQ5LDIzIEBAIGNhc2UgJG9zIGluCi0gCSAgICAgIHwgLWFvcyogXAotIAkgICAg ICB8IC1uaW5keSogfCAtdnhzaW0qIHwgLXZ4d29ya3MqIHwgLWVibW9uKiB8IC1obXMqIHwgLW12 cyogXAotIAkgICAgICB8IC1jbGl4KiB8IC1yaXNjb3MqIHwgLXVuaXBsdXMqIHwgLWlyaXMqIHwg LXJ0dSogfCAteGVuaXgqIFwKLS0JICAgICAgfCAtaGl1eCogfCAtMzg2YnNkKiB8IC1rbmV0YnNk KiB8IC1taXJic2QqIHwgLW5ldGJzZCogfCAtb3BlbmJzZCogXAotKwkgICAgICB8IC1oaXV4KiB8 IC0zODZic2QqIHwgLWtuZXRic2QqIHwgLW1pcmJzZCogfCAtbmV0YnNkKiBcCi0rCSAgICAgIHwg LW9wZW5ic2QqIHwgLXNvbGlkYnNkKiBcCi0gCSAgICAgIHwgLWVra29ic2QqIHwgLWtmcmVlYnNk KiB8IC1mcmVlYnNkKiB8IC1yaXNjaXgqIHwgLWx5bnhvcyogXAotIAkgICAgICB8IC1ib3N4KiB8 IC1uZXh0c3RlcCogfCAtY3h1eCogfCAtYW91dCogfCAtZWxmKiB8IC1vYWJpKiBcCi0gCSAgICAg IHwgLXB0eCogfCAtY29mZiogfCAtZWNvZmYqIHwgLXdpbm50KiB8IC1kb21haW4qIHwgLXZzdGEq IFwKLSAJICAgICAgfCAtdWRpKiB8IC1lYWJpKiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiog fCAtYXV4KiBcCi0gCSAgICAgIHwgLWNob3J1c29zKiB8IC1jaG9ydXNyZGIqIFwKLSAJICAgICAg fCAtY3lnd2luKiB8IC1wZSogfCAtcHNvcyogfCAtbW9zcyogfCAtcHJvZWxmKiB8IC1ydGVtcyog XAotLQkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LXVjbGliYyogfCAt dXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogXAotKwkgICAgICB8IC1taW5ndzMyKiB8 IC1saW51eC1nbnUqIHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtdWNsaWJjKiBcCi0rCSAgICAg IHwgLXV4cHYqIHwgLWJlb3MqIHwgLW1wZWl4KiB8IC11ZGsqIFwKLSAJICAgICAgfCAtaW50ZXJp eCogfCAtdXdpbiogfCAtbWtzKiB8IC1yaGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwK LSAJICAgICAgfCAtb3BlbnN0ZXAqIHwgLW9za2l0KiB8IC1jb25peCogfCAtcHczMiogfCAtbm9u c3RvcHV4KiBcCi0gCSAgICAgIHwgLXN0b3JtLWNoYW9zKiB8IC10b3BzMTAqIHwgLXRlbmV4KiB8 IC10b3BzMjAqIHwgLWl0cyogXAotIAkgICAgICB8IC1vczIqIHwgLXZvcyogfCAtcGFsbW9zKiB8 IC11Y2xpbnV4KiB8IC1udWNsZXVzKiBcCi0gCSAgICAgIHwgLW1vcnBob3MqIHwgLXN1cGVydXgq IHwgLXJ0bWsqIHwgLXJ0bWstbm92YSogfCAtd2luZGlzcyogXAotLQkgICAgICB8IC1wb3dlcm1h eCogfCAtZG5peCogfCAtbng2IHwgLW54NyB8IC1zZWkqIHwgLWRyYWdvbmZseSopCi0rCSAgICAg IHwgLXBvd2VybWF4KiB8IC1kbml4KiB8IC1ueDYgfCAtbng3IHwgLXNlaSogfCAtZHJhZ29uZmx5 KiBcCi0rCSAgICAgIHwgLXNreW9zKiB8IC1oYWlrdSogfCAtcmRvcyogfCAtdG9wcGVycyogfCAt ZHJvcHMqKQotIAkjIFJlbWVtYmVyLCBlYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOICosIHRv IG1hdGNoIGEgdmVyc2lvbiBudW1iZXIuCi0gCQk7OwotIAktcW54KikKLUBAIC0xMTgxLDcgKzEy ODMsNyBAQCBjYXNlICRvcyBpbgotIAkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfG50b3xudG8t cW54fCdgCi0gCQk7OwotIAktc2ltIHwgLWVzMTgwMCogfCAtaG1zKiB8IC14cmF5IHwgLW9zNjhr KiB8IC1ub25lKiB8IC12ODhyKiBcCi0tCSAgICAgIHwgLXdpbmRvd3MqIHwgLW9zeCB8IC1hYnVn IHwgLW5ldHdhcmUqIHwgLW9zOSogfCAtYmVvcyogXAotKwkgICAgICB8IC13aW5kb3dzKiB8IC1v c3ggfCAtYWJ1ZyB8IC1uZXR3YXJlKiB8IC1vczkqIHwgLWJlb3MqIHwgLWhhaWt1KiBcCi0gCSAg ICAgIHwgLW1hY29zKiB8IC1tcHcqIHwgLW1hZ2ljKiB8IC1tbWl4d2FyZSogfCAtbW9uOTYwKiB8 IC1sbmV3cyopCi0gCQk7OwotIAktbWFjKikKLUBAIC0xMjkwLDYgKzEzOTIsOSBAQCBjYXNlICRv cyBpbgotIAkta2FvcyopCi0gCQlvcz0ta2FvcwotIAkJOzsKLSsJLXp2bW9lKQotKwkJb3M9LXp2 bW9lCi0rCQk7OwotIAktbm9uZSkKLSAJCTs7Ci0gCSopCi1AQCAtMTMxMiw2ICsxNDE3LDEyIEBA IGVsc2UKLSAjIHN5c3RlbSwgYW5kIHdlJ2xsIG5ldmVyIGdldCB0byB0aGlzIHBvaW50LgotIAot IGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSsgICAgICAgIHNjb3JlLSopCi0rCQlvcz0tZWxmCi0r CQk7OwotKyAgICAgICAgc3B1LSopCi0rCQlvcz0tZWxmCi0rCQk7OwotIAkqLWFjb3JuKQotIAkJ b3M9LXJpc2NpeDEuMgotIAkJOzsKLUBAIC0xMzIxLDkgKzE0MzIsOSBAQCBjYXNlICRiYXNpY19t YWNoaW5lIGluCi0gCWFybSotc2VtaSkKLSAJCW9zPS1hb3V0Ci0gCQk7OwotLSAgICBjNHgtKiB8 IHRpYzR4LSopCi0tICAgICAgICBvcz0tY29mZgotLSAgICAgICAgOzsKLSsgICAgICAgIGM0eC0q IHwgdGljNHgtKikKLSsgICAgICAgIAlvcz0tY29mZgotKwkJOzsKLSAJIyBUaGlzIG11c3QgY29t ZSBiZWZvcmUgdGhlICotZGVjIGVudHJ5LgotIAlwZHAxMC0qKQotIAkJb3M9LXRvcHMyMAotQEAg LTEzNDksNiArMTQ2MCw5IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJbTY4Ki1jaXNjbykK LSAJCW9zPS1hb3V0Ci0gCQk7OwotKyAgICAgICAgbWVwLSopCi0rCQlvcz0tZWxmCi0rCQk7Owot IAltaXBzKi1jaXNjbykKLSAJCW9zPS1lbGYKLSAJCTs7Ci1AQCAtMTM2Nyw5ICsxNDgxLDE1IEBA IGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJKi1iZSkKLSAJCW9zPS1iZW9zCi0gCQk7OwotKwkq LWhhaWt1KQotKwkJb3M9LWhhaWt1Ci0rCQk7OwotIAkqLWlibSkKLSAJCW9zPS1haXgKLSAJCTs7 Ci0rICAgIAkqLWtudXRoKQotKwkJb3M9LW1taXh3YXJlCi0rCQk7OwotIAkqLXdlYykKLSAJCW9z PS1wcm9lbGYKLSAJCTs7Ci1AQCAtMTUzNSw3ICsxNjU1LDcgQEAgY2FzZSAkYmFzaWNfbWFjaGlu ZSBpbgotIGVzYWMKLSAKLSBlY2hvICRiYXNpY19tYWNoaW5lJG9zCi0tZXhpdCAwCi0rZXhpdAot IAotICMgTG9jYWwgdmFyaWFibGVzOgotICMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhv b2tzICd0aW1lLXN0YW1wKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvc3Vw cG9ydC9ta2RpcnMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVh ZGxpbmUvc3VwcG9ydC9ta2RpcnMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3N1cHBvcnQvbWtkaXJzCTIwMTEtMDct MDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtNywxOSArNywxOCBAQAotIAotICMgQ29w eXJpZ2h0IChDKSAxOTk2LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gIwot LSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tIyBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSsjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsjICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAjCi0tIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICMKLS0jIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQotLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0 ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLgotKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSAKLSBmb3IgZGlyCi0gZG8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRs aW5lL3N1cHBvcnQvbWtkaXN0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5v cmlnL3JlYWRsaW5lL3N1cHBvcnQvbWtkaXN0CTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9zdXBwb3J0L21rZGlzdAky MDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEyLDE5ICsxMiwxOSBAQAot IAotICMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0gIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0t IyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsjICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKLSsjICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSAjCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyMKLSsjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSsjICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gIwotLSMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0j IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlCi0tIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMSBVU0EuCi0gCi0gU1JDRElSPXNyYwotIFJPT1ROQU1FPWJhc2gKLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3N1cHBvcnQvc2hsaWItaW5zdGFsbAotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9zdXBwb3J0L3No bGliLWluc3RhbGwJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3N1cHBvcnQvc2hsaWItaW5zdGFsbAkyMDExLTA3LTAz IDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTMsNyArMyw3IEBACi0gIyBzaGxpYi1pbnN0 YWxsIC0gaW5zdGFsbCBhIHNoYXJlZCBsaWJyYXJ5IGFuZCBkbyBhbnkgbmVjZXNzYXJ5IGhvc3Qt c3BlY2lmaWMKLSAjCQkgIHBvc3QtaW5zdGFsbGF0aW9uIGNvbmZpZ3VyYXRpb24gKGxpa2UgbGRj b25maWcpCi0gIwotLSMgdXNhZ2U6IHNobGliLWluc3RhbGwgWy1EXSAtTyBob3N0X29zIC1kIGlu c3RhbGxhdGlvbi1kaXIgWy1iIGJpbi1kaXJdIC1pIGluc3RhbGwtcHJvZyBbLVVdIGxpYnJhcnkK LSsjIHVzYWdlOiBzaGxpYi1pbnN0YWxsIFstRF0gLU8gaG9zdF9vcyBbLVYgaG9zdF92ZW5kb3Jd IC1kIGluc3RhbGxhdGlvbi1kaXIgWy1iIGJpbi1kaXJdIC1pIGluc3RhbGwtcHJvZyBbLVVdIGxp YnJhcnkKLSAjCi0gIyBDaGV0IFJhbWV5Ci0gIyBjaGV0QHBvLmN3cnUuZWR1Ci1AQCAtMTUsMTMg KzE1LDE0IEBAIElOU1RBTExESVI9L3Vzci9sb2NhbC9saWIKLSBMRENPTkZJRz1sZGNvbmZpZwot IAotIFBST0dOQU1FPWBiYXNlbmFtZSAkMGAKLS1VU0FHRT0iJFBST0dOQU1FIFstRF0gLU8gaG9z dF9vcyAtZCBpbnN0YWxsYXRpb24tZGlyIFstYiBiaW4tZGlyXSAtaSBpbnN0YWxsLXByb2cgWy1V XSBsaWJyYXJ5IgotK1VTQUdFPSIkUFJPR05BTUUgWy1EXSAtTyBob3N0X29zIFstViBob3N0X3Zl bmRvcl0gLWQgaW5zdGFsbGF0aW9uLWRpciBbLWIgYmluLWRpcl0gLWkgaW5zdGFsbC1wcm9nIFst VV0gbGlicmFyeSIKLSAKLSAjIHByb2Nlc3Mgb3B0aW9ucwotIAotIHdoaWxlIFsgJCMgLWd0IDAg XTsgZG8KLSAJY2FzZSAiJDEiIGluCi0gCS1PKQlzaGlmdDsgaG9zdF9vcz0iJDEiOyBzaGlmdCA7 OwotKwktVikJc2hpZnQ7IGhvc3RfdmVuZG9yPSIkMSI7IHNoaWZ0IDs7Ci0gCS1kKQlzaGlmdDsg SU5TVEFMTERJUj0iJDEiOyBzaGlmdCA7OwotIAktYikJc2hpZnQ7IEJJTkRJUj0iJDEiIDsgc2hp ZnQgOzsKLSAJLWkpCXNoaWZ0OyBJTlNUQUxMUFJPRz0iJDEiIDsgc2hpZnQgOzsKLUBAIC02NSwx NCArNjYsMTUgQEAgZmkKLSAjIHBvc3QtaW5zdGFsbC91bmluc3RhbGwKLSAKLSAjIEhQLVVYIGFu ZCBEYXJ3aW4vTWFjT1MgWCByZXF1aXJlIHRoYXQgYSBzaGFyZWQgbGlicmFyeSBoYXZlIGV4ZWN1 dGUgcGVybWlzc2lvbgotKyMgTGludXggZG9lcywgdG9vLCBhbmQgbGRkIHdhcm5zIGFib3V0IGl0 Ci0gIyBDeWd3aW4gaW5zdGFsbHMgYm90aCBhIGRsbCAod2hpY2ggbXVzdCBnbyBpbiAkQklORElS KSBhbmQgYW4gaW1wbGljaXQKLSAjIGxpbmsgbGlicmFyeSAoaW4gJGxpYmRpcikKLSBjYXNlICIk aG9zdF9vcyIgaW4KLS1ocHV4KnxkYXJ3aW4qfG1hY29zeCopCi0raHB1eCp8ZGFyd2luKnxtYWNv c3gqfGxpbnV4KikKLSAJaWYgWyAteiAiJHVuaW5zdGFsbCIgXTsgdGhlbgotIAkJY2htb2QgNTU1 ICR7SU5TVEFMTERJUn0vJHtMSUJOQU1FfQotIAlmaSA7OwotLWN5Z3dpbiopCi0rY3lnd2luKnxt aW5ndyopCi0gCUlNUExJQk5BTUU9YGVjaG8gJHtMSUJOQU1FfSBcCi0gCQl8IHNlZCAtZSAncyxe Y3lnLGxpYiwnIC1lICdzLFswLTldKi5kbGwkLC5kbGwuYSwnYAotIAlpZiBbIC16ICIkdW5pbnN0 YWxsIiBdOyB0aGVuCi1AQCAtMTE0LDggKzExNiw4IEBAIElOU1RBTExfTElOSzI9JyR7ZWNob30g Y2QgJElOU1RBTExESVIgJiYKLSAjCi0gIyBDcmVhdGUgc3ltbGlua3MgdG8gdGhlIGluc3RhbGxl ZCBsaWJyYXJ5LiAgVGhpcyBzZWN0aW9uIGlzIGluY29tcGxldGUuCi0gIwotLWNhc2UgIiRob3N0 X29zIiBpbgotLSpsaW51eCopCi0rY2FzZSAiJGhvc3Rfb3MtJGhvc3RfdmVuZG9yIiBpbgotKyps aW51eCp8ZnJlZWJzZCotZ2VudG9vKQotIAkjIGxpYm5hbWUuc28uTSAtPiBsaWJuYW1lLnNvLk0u TgotIAkke2VjaG99ICR7Uk19ICR7SU5TVEFMTERJUn0vJExJTksyCi0gCWlmIFsgLXogIiR1bmlu c3RhbGwiIF07IHRoZW4KLUBAIC0xMjksNyArMTMxLDcgQEAgY2FzZSAiJGhvc3Rfb3MiIGluCi0g CWZpCi0gCTs7Ci0gCi0tYnNkaTQqfCpnbnUqfGRhcndpbip8bWFjb3N4KnxrKmJzZCotZ251KQot K2JzZGk0KnwqZ251KnxkYXJ3aW4qfG1hY29zeCp8bmV0YnNkKikKLSAJIyBsaWJuYW1lLnNvLk0g LT4gbGlibmFtZS5zby5NLk4KLSAJJHtlY2hvfSAke1JNfSAke0lOU1RBTExESVJ9LyRMSU5LMgot IAlpZiBbIC16ICIkdW5pbnN0YWxsIiBdOyB0aGVuCi1AQCAtMTQzLDcgKzE0NSw3IEBAIGJzZGk0 KnwqZ251KnxkYXJ3aW4qfG1hY29zeCp8aypic2QqLWdudSkKLSAJZmkKLSAJOzsKLSAKLS1zb2xh cmlzMip8YWl4NC5bMi05XSp8b3NmKnxpcml4WzU2XSp8c3lzdls0NV0qfGRndXgqKQotK3NvbGFy aXMyKnxhaXg0LlsyLTldKnxhaXhbNS05XSp8b3NmKnxpcml4WzU2XSp8c3lzdls0NV0qfGRndXgq fGludGVyaXgqKQotIAkjIGxpYm5hbWUuc28gLT4gbGlibmFtZS5zby5NCi0gCSR7ZWNob30gJHtS TX0gJHtJTlNUQUxMRElSfS8kTElOSzEKLSAJaWYgWyAteiAiJHVuaW5zdGFsbCIgXTsgdGhlbgot QEAgLTE1Myw3ICsxNTUsNyBAQCBzb2xhcmlzMip8YWl4NC5bMi05XSp8b3NmKnxpcml4WzU2XSp8 c3lzCi0gCi0gCi0gIyBGcmVlQlNEIDMueCBhbmQgYWJvdmUgY2FuIGhhdmUgZWl0aGVyIGEub3V0 IG9yIEVMRiBzaGFyZWQgbGlicmFyaWVzCi0tZnJlZWJzZFszLTldKnxmcmVlYnNkZWxmWzMtOV0q fGZyZWVic2Rhb3V0WzMtOV0qKQotK2ZyZWVic2QzKnxmcmVlYnNkYW91dCopCi0gCWlmIFsgLXgg L3Vzci9iaW4vb2JqZm9ybWF0IF0gJiYgWyAiYC91c3IvYmluL29iamZvcm1hdGAiID0gImVsZiIg XTsgdGhlbgotIAkJIyBsaWJuYW1lLnNvIC0+IGxpYm5hbWUuc28uTQotIAkJJHtlY2hvfSAke1JN fSAke0lOU1RBTExESVJ9LyRMSU5LMQotQEAgLTE3NSw2ICsxNzcsMTQgQEAgZnJlZWJzZFszLTld KnxmcmVlYnNkZWxmWzMtOV0qfGZyZWVic2RhbwotIAlmaQotIAk7OwotIAotK2ZyZWVic2RbNC05 XSp8ZnJlZWJzZGVsZip8ZHJhZ29uZmx5KikKLSsJIyBsaWJuYW1lLnNvIC0+IGxpYm5hbWUuc28u TQotKwkke2VjaG99ICR7Uk19ICR7SU5TVEFMTERJUn0vJExJTksxCi0rCWlmIFsgLXogIiR1bmlu c3RhbGwiIF07IHRoZW4KLSsJCWV2YWwgJElOU1RBTExfTElOSzEKLSsJZmkKLSsJOzsKLSsJCi0g aHB1eDEqKQotIAkjIGxpYm5hbWUuc2wgLT4gbGlibmFtZS5NCi0gCSR7ZWNob30gJHtSTX0gJHtJ TlNUQUxMRElSfS8kTElOSzEuc2wKLUBAIC0xODMsNyArMTkzLDcgQEAgaHB1eDEqKQotIAlmaQot IAk7OwotIAotLWN5Z3dpbiopCi0rY3lnd2luKnxtaW5ndyopCi0gCSMgTGlua3MgdG8gLmRsbHMg ZG9uJ3Qgd29yay4gIEhlbmNlIHNob2JqLWNvbmYgdXNlZCBETExWRVJTSU9OLmRsbAotIAkjIGlu c3RlYWQgb2Ygc28uU0hMSUJfTUFKT1IuU0hMSUJfTUlOT1IuICBUaGUgcG9zdGluc3RhbGwgYWJv dmUKLSAJIyB0b29rIGNhcmUgb2YgZXZlcnl0aGluZyBlbHNlLgotSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvcmVhZGxpbmUvc3VwcG9ydC9zaG9iai1jb25mCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3N1cHBvcnQvc2hvYmotY29uZgkyMDExLTA3 LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVh ZGxpbmUvc3VwcG9ydC9zaG9iai1jb25mCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICsw MjAwCi1AQCAtMTAsMjEgKzEwLDIzIEBACi0gIyBDaGV0IFJhbWV5Ci0gIyBjaGV0QHBvLmN3cnUu ZWR1Ci0gCi0tIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsjICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rIwotKyMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgQmFzaCwgdGhl IEJvdXJuZSBBZ2FpbiBTSGVsbC4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rIwotKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsjICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCi0gIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0t IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQg eW91ciBvcHRpb24pCi0tIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLgotIAotICMKLSAjIGRl ZmF1bHRzCi1AQCAtNjIsNyArNjQsNyBAQCB3aGlsZSBbICQjIC1ndCAwIF07IGRvCi0gCWVzYWMK LSBkb25lCi0gCi0tY2FzZSAiJHtob3N0X29zfS0ke1NIT0JKX0NDfSIgaW4KLStjYXNlICIke2hv c3Rfb3N9LSR7U0hPQkpfQ0N9LSR7aG9zdF92ZW5kb3J9IiBpbgotIHN1bm9zNCotKmdjYyopCi0g CVNIT0JKX0NGTEFHUz0tZnBpYwotIAlTSE9CSl9MRD0vdXNyL2Jpbi9sZAotQEAgLTgwLDE1ICs4 MiwxNyBAQCBzdW5vczQqKQotIAk7OwotIAotIHN1bm9zNSotKmdjYyp8c29sYXJpczIqLSpnY2Mq KQotLQlTSE9CSl9DRkxBR1M9LWZwaWMKLSAJU0hPQkpfTEQ9JyR7Q0N9JwotIAlsZF91c2VkPWBn Y2MgLXByaW50LXByb2ctbmFtZT1sZGAKLSAJaWYgJHtsZF91c2VkfSAtViAyPiYxIHwgZ3JlcCBH TlUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gCQkjIFRoaXMgbGluZSB3b3JrcyBmb3IgdGhlIEdO VSBsZAotIAkJU0hPQkpfTERGTEFHUz0nLXNoYXJlZCAtV2wsLWgsJEAnCi0rCQkjIGh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9iaW51dGlscy8yMDAxLTA4L21zZzAwMzYxLmh0bWwKLSsJCVNIT0JK X0NGTEFHUz0tZlBJQwotIAllbHNlCi0gCQkjIFRoaXMgbGluZSB3b3JrcyBmb3IgdGhlIFNvbGFy aXMgbGlua2VyIGluIC91c3IvY2NzL2Jpbi9sZAotIAkJU0hPQkpfTERGTEFHUz0nLXNoYXJlZCAt V2wsLWkgLVdsLC1oLCRAJwotKwkJU0hPQkpfQ0ZMQUdTPS1mcGljCi0gCWZpCi0gCi0gIwlTSExJ Ql9YTERGTEFHUz0nLVIgJChsaWJkaXIpJwotQEAgLTEwNCw4ICsxMDgsOCBAQCBzdW5vczUqfHNv bGFyaXMyKikKLSAJU0hMSUJfTElCVkVSU0lPTj0nJChTSExJQl9MSUJTVUZGKS4kKFNITElCX01B Sk9SKScKLSAJOzsKLSAKLS0jIEFsbCB2ZXJzaW9ucyBvZiBMaW51eCBvciB0aGUgc2VtaS1teXRo aWNhbCBHTlUgSHVyZC4KLS1saW51eCotKnxnbnUqLSp8aypic2QqLWdudS0qKQotKyMgQWxsIHZl cnNpb25zIG9mIExpbnV4IChpbmNsdWRpbmcgR2VudG9vL0ZyZWVCU0QpIG9yIHRoZSBzZW1pLW15 dGhpY2FsIEdOVSBIdXJkLgotK2xpbnV4Ki0qfGdudSotKnxrKmJzZCotZ251LSp8ZnJlZWJzZCot Z2VudG9vKQotIAlTSE9CSl9DRkxBR1M9LWZQSUMKLSAJU0hPQkpfTEQ9JyR7Q0N9JwotIAlTSE9C Sl9MREZMQUdTPSctc2hhcmVkIC1XbCwtc29uYW1lLCRAJwotQEAgLTExNCw3ICsxMTgsNyBAQCBs aW51eCotKnxnbnUqLSp8aypic2QqLWdudS0qKQotIAlTSExJQl9MSUJWRVJTSU9OPSckKFNITElC X0xJQlNVRkYpLiQoU0hMSUJfTUFKT1IpJChTSExJQl9NSU5PUiknCi0gCTs7Ci0gCi0tZnJlZWJz ZDIqIHwgbmV0YnNkKikKLStmcmVlYnNkMiopCi0gCVNIT0JKX0NGTEFHUz0tZnBpYwotIAlTSE9C Sl9MRD1sZAotIAlTSE9CSl9MREZMQUdTPScteCAtQnNoYXJlYWJsZScKLUBAIC0xMjQsOCArMTI4 LDggQEAgZnJlZWJzZDIqIHwgbmV0YnNkKikKLSAJOzsKLSAKLSAjIEZyZWVCU0QtMy54IEVMRgot LWZyZWVic2RbMy05XSp8ZnJlZWJzZGVsZlszLTldKnxmcmVlYnNkYW91dFszLTldKnxkcmFnb25m bHkqKQotLQlTSE9CSl9DRkxBR1M9LWZwaWMKLStmcmVlYnNkMyp8ZnJlZWJzZGFvdXQqKQotKwlT SE9CSl9DRkxBR1M9LWZQSUMKLSAJU0hPQkpfTEQ9JyR7Q0N9JwotIAotIAlpZiBbIC14IC91c3Iv YmluL29iamZvcm1hdCBdICYmIFsgImAvdXNyL2Jpbi9vYmpmb3JtYXRgIiA9ICJlbGYiIF07IHRo ZW4KLUBAIC0xNDEsNyArMTQ1LDM1IEBAIGZyZWVic2RbMy05XSp8ZnJlZWJzZGVsZlszLTldKnxm cmVlYnNkYW8KLSAJZmkKLSAJOzsKLSAKLSsjIEZyZWVCU0QtNC54IGFuZCBsYXRlciBoYXZlIG9u bHkgRUxGCi0rZnJlZWJzZFs0LTldKnxmcmVlYnNkZWxmKnxkcmFnb25mbHkqKQotKwlTSE9CSl9D RkxBR1M9LWZQSUMKLSsJU0hPQkpfTEQ9JyR7Q0N9JwotKwotKwlTSE9CSl9MREZMQUdTPSctc2hh cmVkIC1XbCwtc29uYW1lLCRAJwotKwlTSExJQl9YTERGTEFHUz0nLVdsLC1ycGF0aCwkKGxpYmRp ciknCi0rCi0rCVNITElCX0xJQlZFUlNJT049JyQoU0hMSUJfTElCU1VGRikuJChTSExJQl9NQUpP UiknCi0rCTs7Ci0rCi0gIyBEYXJ3aW4vTWFjT1MgWAotK2Rhcndpbls4OV0qfGRhcndpbjEwKikK LSsJU0hPQkpfU1RBVFVTPXN1cHBvcnRlZAotKwlTSExJQl9TVEFUVVM9c3VwcG9ydGVkCi0rCQot KwlTSE9CSl9DRkxBR1M9Jy1mbm8tY29tbW9uJwotKwotKwlTSE9CSl9MRD0nTUFDT1NYX0RFUExP WU1FTlRfVEFSR0VUPTEwLjMgJHtDQ30nCi0rCi0rCVNITElCX0xJQlZFUlNJT049JyQoU0hMSUJf TUFKT1IpJChTSExJQl9NSU5PUikuJChTSExJQl9MSUJTVUZGKScKLSsJU0hMSUJfTElCU1VGRj0n ZHlsaWInCi0rCi0rCVNIT0JKX0xERkxBR1M9Jy1keW5hbWljbGliIC1keW5hbWljIC11bmRlZmlu ZWQgZHluYW1pY19sb29rdXAgLWFyY2hfb25seSBgL3Vzci9iaW4vYXJjaGAnCi0rCVNITElCX1hM REZMQUdTPSctZHluYW1pY2xpYiAtYXJjaF9vbmx5IGAvdXNyL2Jpbi9hcmNoYCAtaW5zdGFsbF9u YW1lICQobGliZGlyKS8kQCAtY3VycmVudF92ZXJzaW9uICQoU0hMSUJfTUFKT1IpJChTSExJQl9N SU5PUikgLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAkKFNITElCX01BSk9SKSAtdicKLSsKLSsJU0hM SUJfTElCUz0nLWxuY3Vyc2VzJwkjIHNlZSBpZiAtbGN1cnNlcyB3b3JrcyBvbiBNYWNPUyBYIDEw LjEgCi0rCTs7Ci0rCi0gZGFyd2luKnxtYWNvc3gqKQotIAlTSE9CSl9TVEFUVVM9dW5zdXBwb3J0 ZWQKLSAJU0hMSUJfU1RBVFVTPXN1cHBvcnRlZAotQEAgLTE1NCw3ICsxODYsNyBAQCBkYXJ3aW4q fG1hY29zeCopCi0gCVNITElCX0xJQlNVRkY9J2R5bGliJwotIAotIAljYXNlICIke2hvc3Rfb3N9 IiBpbgotLQlkYXJ3aW5bNzhdKikJU0hPQkpfTERGTEFHUz0nJwotKwlkYXJ3aW5bNzg5XSp8ZGFy d2luMTAqKQlTSE9CSl9MREZMQUdTPScnCi0gCQkJU0hMSUJfWExERkxBR1M9Jy1keW5hbWljbGli IC1hcmNoX29ubHkgYC91c3IvYmluL2FyY2hgIC1pbnN0YWxsX25hbWUgJChsaWJkaXIpLyRAIC1j dXJyZW50X3ZlcnNpb24gJChTSExJQl9NQUpPUikkKFNITElCX01JTk9SKSAtY29tcGF0aWJpbGl0 eV92ZXJzaW9uICQoU0hMSUJfTUFKT1IpIC12JwotIAkJCTs7Ci0gCSopCQlTSE9CSl9MREZMQUdT PSctZHluYW1pYycKLUBAIC0xNjUsNyArMTk3LDcgQEAgZGFyd2luKnxtYWNvc3gqKQotIAlTSExJ Ql9MSUJTPSctbG5jdXJzZXMnCSMgc2VlIGlmIC1sY3Vyc2VzIHdvcmtzIG9uIE1hY09TIFggMTAu MSAKLSAJOzsKLSAKLS1vcGVuYnNkKikKLStvcGVuYnNkKnxuZXRic2QqKQotIAlTSE9CSl9DRkxB R1M9LWZQSUMKLSAJU0hPQkpfTEQ9JyR7Q0N9JwotIAlTSE9CSl9MREZMQUdTPSctc2hhcmVkJwot QEAgLTIzMCw3ICsyNjIsNyBAQCBvc2YqKQotIAlTSExJQl9MSUJWRVJTSU9OPSckKFNITElCX0xJ QlNVRkYpLiQoU0hMSUJfTUFKT1IpJwotIAk7OwotIAotLWFpeDQuWzItOV0qLSpnY2MqKQkJIyBs aWdodGx5IHRlc3RlZCBieSBqaWtAY2lzY28uY29tCi0rYWl4NC5bMi05XSotKmdjYyp8YWl4WzUt OV0uKi0qZ2NjKikJCSMgbGlnaHRseSB0ZXN0ZWQgYnkgamlrQGNpc2NvLmNvbQotIAlTSE9CSl9D RkxBR1M9LWZwaWMKLSAJU0hPQkpfTEQ9J2xkJwotIAlTSE9CSl9MREZMQUdTPSctYmR5bmFtaWMg LWJub2VudHJ5IC1iZXhwYWxsJwotQEAgLTI0MSw3ICsyNzMsNyBAQCBhaXg0LlsyLTldKi0qZ2Nj KikJCSMgbGlnaHRseSB0ZXN0ZWQgYnkgCi0gCVNITElCX0xJQlZFUlNJT049JyQoU0hMSUJfTElC U1VGRikuJChTSExJQl9NQUpPUiknCi0gCTs7Ci0gCi0tYWl4NC5bMi05XSopCi0rYWl4NC5bMi05 XSp8YWl4WzUtOV0uKikKLSAJU0hPQkpfQ0ZMQUdTPS1LCi0gCVNIT0JKX0xEPSdsZCcKLSAJU0hP QkpfTERGTEFHUz0nLWJkeW5hbWljIC1ibm9lbnRyeSAtYmV4cGFsbCcKLUBAIC0zMTIsNyArMzQ0 LDcgQEAgaHB1eDEwKi0qZ2NjKikKLSAJU0hPQkpfTEQ9JyR7Q0N9JwotIAkjIGlmIHlvdSBoYXZl IHByb2JsZW1zIGxpbmtpbmcgaGVyZSwgbW92aW5nIHRoZSBgLVdsLCtoLCRAJyBmcm9tCi0gCSMg U0hMSUJfWExERkxBR1MgdG8gU0hPQkpfTERGTEFHUyBoYXMgYmVlbiByZXBvcnRlZCB0byB3b3Jr Ci0tCVNIT0JKX0xERkxBR1M9Jy1zaGFyZWQgLVdsLC1iIC1XbCwrcycKLSsJU0hPQkpfTERGTEFH Uz0nLXNoYXJlZCAtZnBpYyAtV2wsLWIgLVdsLCtzJwotIAotIAlTSExJQl9YTERGTEFHUz0nLVds LCtoLCRAIC1XbCwrYiwkKGxpYmRpciknCi0gCVNITElCX0xJQlNVRkY9J3NsJwotQEAgLTQ3Miwy MCArNTA0LDM3IEBAIG1zZG9zKikKLSAKLSBjeWd3aW4qKQotIAlTSE9CSl9MRD0nJChDQyknCi0t ICAgICAgICBTSE9CSl9MREZMQUdTPSctc2hhcmVkIC1XbCwtLWVuYWJsZS1hdXRvLWltcG9ydCAt V2wsLS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1XbCwtLWV4cG9ydC1hbGwgLVdsLC0tb3V0LWlt cGxpYj0kKEApLmEnCi0tICAgICAgICBTSExJQl9MSUJQUkVGPSdjeWcnCi0tICAgICAgICBTSExJ Ql9MSUJTVUZGPSdkbGwnCi0tICAgICAgICBTSExJQl9MSUJWRVJTSU9OPSckKFNITElCX0RMTFZF UlNJT04pLiQoU0hMSUJfTElCU1VGRiknCi0tICAgICAgICBTSExJQl9MSUJTPSckKFRFUk1DQVBf TElCKScKLSsJU0hPQkpfTERGTEFHUz0nLXNoYXJlZCAtV2wsLS1lbmFibGUtYXV0by1pbXBvcnQg LVdsLC0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtV2wsLS1leHBvcnQtYWxsIC1XbCwtLW91dC1p bXBsaWI9JChAKS5hJwotKwlTSExJQl9MSUJQUkVGPSdjeWcnCi0rCVNITElCX0xJQlNVRkY9J2Rs bCcKLSsJU0hMSUJfTElCVkVSU0lPTj0nJChTSExJQl9ETExWRVJTSU9OKS4kKFNITElCX0xJQlNV RkYpJwotKwlTSExJQl9MSUJTPSckKFRFUk1DQVBfTElCKScKLSAKLSAJU0hMSUJfRE9UPQotLSAg ICAgICAgIyBGb3Igb2ZmaWNpYWwgY3lnd2luIHJlbGVhc2VzLCBETExWRVJTSU9OIHdpbGwgYmUg ZGVmaW5lZCBpbiB0aGUKLS0gICAgICAgICMgZW52aXJvbm1lbnQgb2YgY29uZmlndXJlLCBhbmQg d2lsbCBiZSBpbmNyZW1lbnRlZCBhbnkgdGltZSB0aGUgQVBJCi0tICAgICAgICAjIGNoYW5nZXMg aW4gYSBub24tYmFja3dhcmRzIGNvbXBhdGlibGUgbWFubmVyLiAgT3RoZXJ3aXNlLCBpdCBpcyBq dXN0Ci0tICAgICAgICAjIFNITElCX01BSk9SLgotLSAgICAgICAgaWYgWyAtbiAiJERMTFZFUlNJ T04iIF0gOyB0aGVuCi0rCSMgRm9yIG9mZmljaWFsIGN5Z3dpbiByZWxlYXNlcywgRExMVkVSU0lP TiB3aWxsIGJlIGRlZmluZWQgaW4gdGhlCi0rCSMgZW52aXJvbm1lbnQgb2YgY29uZmlndXJlLCBh bmQgd2lsbCBiZSBpbmNyZW1lbnRlZCBhbnkgdGltZSB0aGUgQVBJCi0rCSMgY2hhbmdlcyBpbiBh IG5vbi1iYWNrd2FyZHMgY29tcGF0aWJsZSBtYW5uZXIuICBPdGhlcndpc2UsIGl0IGlzIGp1c3QK LSsJIyBTSExJQl9NQUpPUi4KLSsJaWYgWyAtbiAiJERMTFZFUlNJT04iIF0gOyB0aGVuCi0gCQlT SExJQl9ETExWRVJTSU9OPSIkRExMVkVSU0lPTiIKLS0gICAgICAgIGZpCi0rCWZpCi0rCTs7Ci0r Ci0rbWluZ3cqKQotKwlTSE9CSl9MRD0nJChDQyknCi0rCVNIT0JKX0xERkxBR1M9Jy1zaGFyZWQg LVdsLC0tZW5hYmxlLWF1dG8taW1wb3J0IC1XbCwtLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVds LC0tZXhwb3J0LWFsbCAtV2wsLS1vdXQtaW1wbGliPSQoQCkuYScKLSsJU0hMSUJfTElCU1VGRj0n ZGxsJwotKwlTSExJQl9MSUJWRVJTSU9OPSckKFNITElCX0RMTFZFUlNJT04pLiQoU0hMSUJfTElC U1VGRiknCi0rCVNITElCX0xJQlM9JyQoVEVSTUNBUF9MSUIpJwotKwotKwlTSExJQl9ET1Q9Ci0r CSMgRm9yIG9mZmljaWFsIGN5Z3dpbiByZWxlYXNlcywgRExMVkVSU0lPTiB3aWxsIGJlIGRlZmlu ZWQgaW4gdGhlCi0rCSMgZW52aXJvbm1lbnQgb2YgY29uZmlndXJlLCBhbmQgd2lsbCBiZSBpbmNy ZW1lbnRlZCBhbnkgdGltZSB0aGUgQVBJCi0rCSMgY2hhbmdlcyBpbiBhIG5vbi1iYWNrd2FyZHMg Y29tcGF0aWJsZSBtYW5uZXIuICBPdGhlcndpc2UsIGl0IGlzIGp1c3QKLSsJIyBTSExJQl9NQUpP Ui4KLSsJaWYgWyAtbiAiJERMTFZFUlNJT04iIF0gOyB0aGVuCi0rCQlTSExJQl9ETExWRVJTSU9O PSIkRExMVkVSU0lPTiIKLSsJZmkKLSAJOzsKLSAKLSAjCi1JbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9yZWFkbGluZS9zdXBwb3J0L3djd2lkdGguYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu OTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9zdXBwb3J0L3djd2lkdGguYwkyMDExLTA3LTAzIDEw OjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUv c3VwcG9ydC93Y3dpZHRoLmMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBA IC0xLDIxICsxLDczIEBACi0gLyoKLS0gKiBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHdj d2lkdGgoKSBhbmQgd2Nzd2lkdGgoKSBhcyBkZWZpbmVkIGluCi0tICogIlRoZSBTaW5nbGUgVU5J WCBTcGVjaWZpY2F0aW9uLCBWZXJzaW9uIDIsIFRoZSBPcGVuIEdyb3VwLCAxOTk3IgotLSAqIDxo dHRwOi8vd3d3LlVOSVgtc3lzdGVtcy5vcmcvb25saW5lLmh0bWw+Ci0rICogVGhpcyBpcyBhbiBp bXBsZW1lbnRhdGlvbiBvZiB3Y3dpZHRoKCkgYW5kIHdjc3dpZHRoKCkgKGRlZmluZWQgaW4KLSsg KiBJRUVFIFN0ZCAxMDAyLjEtMjAwMSkgZm9yIFVuaWNvZGUuCi0gICoKLS0gKiBNYXJrdXMgS3Vo biAtLSAyMDAxLTA5LTA4IC0tIHB1YmxpYyBkb21haW4KLSsgKiBodHRwOi8vd3d3Lm9wZW5ncm91 cC5vcmcvb25saW5lcHVicy8wMDc5MDQ5NzUvZnVuY3Rpb25zL3djd2lkdGguaHRtbAotKyAqIGh0 dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwNzkwNDk3NS9mdW5jdGlvbnMvd2Nz d2lkdGguaHRtbAotKyAqCi0rICogSW4gZml4ZWQtd2lkdGggb3V0cHV0IGRldmljZXMsIExhdGlu IGNoYXJhY3RlcnMgYWxsIG9jY3VweSBhIHNpbmdsZQotKyAqICJjZWxsIiBwb3NpdGlvbiBvZiBl cXVhbCB3aWR0aCwgd2hlcmVhcyBpZGVvZ3JhcGhpYyBDSksgY2hhcmFjdGVycwotKyAqIG9jY3Vw eSB0d28gc3VjaCBjZWxscy4gSW50ZXJvcGVyYWJpbGl0eSBiZXR3ZWVuIHRlcm1pbmFsLWxpbmUK LSsgKiBhcHBsaWNhdGlvbnMgYW5kICh0ZWxldHlwZS1zdHlsZSkgY2hhcmFjdGVyIHRlcm1pbmFs cyB1c2luZyB0aGUKLSsgKiBVVEYtOCBlbmNvZGluZyByZXF1aXJlcyBhZ3JlZW1lbnQgb24gd2hp Y2ggY2hhcmFjdGVyIHNob3VsZCBhZHZhbmNlCi0rICogdGhlIGN1cnNvciBieSBob3cgbWFueSBj ZWxsIHBvc2l0aW9ucy4gTm8gZXN0YWJsaXNoZWQgZm9ybWFsCi0rICogc3RhbmRhcmRzIGV4aXN0 IGF0IHByZXNlbnQgb24gd2hpY2ggVW5pY29kZSBjaGFyYWN0ZXIgc2hhbGwgb2NjdXB5Ci0rICog aG93IG1hbnkgY2VsbCBwb3NpdGlvbnMgb24gY2hhcmFjdGVyIHRlcm1pbmFscy4gVGhlc2Ugcm91 dGluZXMgYXJlCi0rICogYSBmaXJzdCBhdHRlbXB0IG9mIGRlZmluaW5nIHN1Y2ggYmVoYXZpb3Ig YmFzZWQgb24gc2ltcGxlIHJ1bGVzCi0rICogYXBwbGllZCB0byBkYXRhIHByb3ZpZGVkIGJ5IHRo ZSBVbmljb2RlIENvbnNvcnRpdW0uCi0rICoKLSsgKiBGb3Igc29tZSBncmFwaGljYWwgY2hhcmFj dGVycywgdGhlIFVuaWNvZGUgc3RhbmRhcmQgZXhwbGljaXRseQotKyAqIGRlZmluZXMgYSBjaGFy YWN0ZXItY2VsbCB3aWR0aCB2aWEgdGhlIGRlZmluaXRpb24gb2YgdGhlIEVhc3QgQXNpYW4KLSsg KiBGdWxsV2lkdGggKEYpLCBXaWRlIChXKSwgSGFsZi13aWR0aCAoSCksIGFuZCBOYXJyb3cgKE5h KSBjbGFzc2VzLgotKyAqIEluIGFsbCB0aGVzZSBjYXNlcywgdGhlcmUgaXMgbm8gYW1iaWd1aXR5 IGFib3V0IHdoaWNoIHdpZHRoIGEKLSsgKiB0ZXJtaW5hbCBzaGFsbCB1c2UuIEZvciBjaGFyYWN0 ZXJzIGluIHRoZSBFYXN0IEFzaWFuIEFtYmlndW91cyAoQSkKLSsgKiBjbGFzcywgdGhlIHdpZHRo IGNob2ljZSBkZXBlbmRzIHB1cmVseSBvbiBhIHByZWZlcmVuY2Ugb2YgYmFja3dhcmQKLSsgKiBj b21wYXRpYmlsaXR5IHdpdGggZWl0aGVyIGhpc3RvcmljIENKSyBvciBXZXN0ZXJuIHByYWN0aWNl LgotKyAqIENob29zaW5nIHNpbmdsZS13aWR0aCBmb3IgdGhlc2UgY2hhcmFjdGVycyBpcyBlYXN5 IHRvIGp1c3RpZnkgYXMKLSsgKiB0aGUgYXBwcm9wcmlhdGUgbG9uZy10ZXJtIHNvbHV0aW9uLCBh cyB0aGUgQ0pLIHByYWN0aWNlIG9mCi0rICogZGlzcGxheWluZyB0aGVzZSBjaGFyYWN0ZXJzIGFz IGRvdWJsZS13aWR0aCBjb21lcyBmcm9tIGhpc3RvcmljCi0rICogaW1wbGVtZW50YXRpb24gc2lt cGxpY2l0eSAoOC1iaXQgZW5jb2RlZCBjaGFyYWN0ZXJzIHdlcmUgZGlzcGxheWVkCi0rICogc2lu Z2xlLXdpZHRoIGFuZCAxNi1iaXQgb25lcyBkb3VibGUtd2lkdGgsIGV2ZW4gZm9yIEdyZWVrLAot KyAqIEN5cmlsbGljLCBldGMuKSBhbmQgbm90IGFueSB0eXBvZ3JhcGhpYyBjb25zaWRlcmF0aW9u cy4KLSsgKgotKyAqIE11Y2ggbGVzcyBjbGVhciBpcyB0aGUgY2hvaWNlIG9mIHdpZHRoIGZvciB0 aGUgTm90IEVhc3QgQXNpYW4KLSsgKiAoTmV1dHJhbCkgY2xhc3MuIEV4aXN0aW5nIHByYWN0aWNl IGRvZXMgbm90IGRpY3RhdGUgYSB3aWR0aCBmb3IgYW55Ci0rICogb2YgdGhlc2UgY2hhcmFjdGVy cy4gSXQgd291bGQgbmV2ZXJ0aGVsZXNzIG1ha2Ugc2Vuc2UKLSsgKiB0eXBvZ3JhcGhpY2FsbHkg dG8gYWxsb2NhdGUgdHdvIGNoYXJhY3RlciBjZWxscyB0byBjaGFyYWN0ZXJzIHN1Y2gKLSsgKiBh cyBmb3IgaW5zdGFuY2UgRU0gU1BBQ0Ugb3IgVk9MVU1FIElOVEVHUkFMLCB3aGljaCBjYW5ub3Qg YmUKLSsgKiByZXByZXNlbnRlZCBhZGVxdWF0ZWx5IHdpdGggYSBzaW5nbGUtd2lkdGggZ2x5cGgu IFRoZSBmb2xsb3dpbmcKLSsgKiByb3V0aW5lcyBhdCBwcmVzZW50IG1lcmVseSBhc3NpZ24gYSBz aW5nbGUtY2VsbCB3aWR0aCB0byBhbGwKLSsgKiBuZXV0cmFsIGNoYXJhY3RlcnMsIGluIHRoZSBp bnRlcmVzdCBvZiBzaW1wbGljaXR5LiBUaGlzIGlzIG5vdAotKyAqIGVudGlyZWx5IHNhdGlzZmFj dG9yeSBhbmQgc2hvdWxkIGJlIHJlY29uc2lkZXJlZCBiZWZvcmUKLSsgKiBlc3RhYmxpc2hpbmcg YSBmb3JtYWwgc3RhbmRhcmQgaW4gdGhpcyBhcmVhLiBBdCB0aGUgbW9tZW50LCB0aGUKLSsgKiBk ZWNpc2lvbiB3aGljaCBOb3QgRWFzdCBBc2lhbiAoTmV1dHJhbCkgY2hhcmFjdGVycyBzaG91bGQg YmUKLSsgKiByZXByZXNlbnRlZCBieSBkb3VibGUtd2lkdGggZ2x5cGhzIGNhbm5vdCB5ZXQgYmUg YW5zd2VyZWQgYnkKLSsgKiBhcHBseWluZyBhIHNpbXBsZSBydWxlIGZyb20gdGhlIFVuaWNvZGUg ZGF0YWJhc2UgY29udGVudC4gU2V0dGluZwotKyAqIHVwIGEgcHJvcGVyIHN0YW5kYXJkIGZvciB0 aGUgYmVoYXZpb3Igb2YgVVRGLTggY2hhcmFjdGVyIHRlcm1pbmFscwotKyAqIHdpbGwgcmVxdWly ZSBhIGNhcmVmdWwgYW5hbHlzaXMgbm90IG9ubHkgb2YgZWFjaCBVbmljb2RlIGNoYXJhY3RlciwK LSsgKiBidXQgYWxzbyBvZiBlYWNoIHByZXNlbnRhdGlvbiBmb3JtLCBzb21ldGhpbmcgdGhlIGF1 dGhvciBvZiB0aGVzZQotKyAqIHJvdXRpbmVzIGhhcyBhdm9pZGVkIHRvIGRvIHNvIGZhci4KLSsg KgotKyAqIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMTEvCi0rICoK LSsgKiBNYXJrdXMgS3VobiAtLSAyMDA3LTA1LTI2IChVbmljb2RlIDUuMCkKLSsgKgotKyAqIFBl cm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdh cmUKLSsgKiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVk LiBUaGUgYXV0aG9yCi0rICogZGlzY2xhaW1zIGFsbCB3YXJyYW50aWVzIHdpdGggcmVnYXJkIHRv IHRoaXMgc29mdHdhcmUuCi0rICoKLSsgKiBMYXRlc3QgdmVyc2lvbjogaHR0cDovL3d3dy5jbC5j YW0uYWMudWsvfm1nazI1L3Vjcy93Y3dpZHRoLmMKLSAgKi8KLSAKLSAjaWZkZWYgX19HTzMyX18K LS0vKiBESkdQUCBuZWVkcyB0byBpbmNsdWRlIHRoaXMgYmVmb3JlIGluY2x1ZGluZyB3Y2hhci5o LiAgKi8KLS0jIGluY2x1ZGUgPHdjdHlwZS5oPgotKyMgIGluY2x1ZGUgPHdjdHlwZS5oPgotICNl bmRpZgotIAotICNpbmNsdWRlIDx3Y2hhci5oPgotIAotIHN0cnVjdCBpbnRlcnZhbCB7Ci0tICB1 bnNpZ25lZCBzaG9ydCBmaXJzdDsKLS0gIHVuc2lnbmVkIHNob3J0IGxhc3Q7Ci0rICBpbnQgZmly c3Q7Ci0rICBpbnQgbGFzdDsKLSB9OwotIAotIC8qIGF1eGlsaWFyeSBmdW5jdGlvbiBmb3IgYmlu YXJ5IHNlYXJjaCBpbiBpbnRlcnZhbCB0YWJsZSAqLwotQEAgLTM5LDcgKzkxLDcgQEAgc3RhdGlj IGludCBiaXNlYXJjaCh3Y2hhcl90IHVjcywgY29uc3QgcwotIH0KLSAKLSAKLS0vKiBUaGUgZm9s bG93aW5nIGZ1bmN0aW9ucyBkZWZpbmUgdGhlIGNvbHVtbiB3aWR0aCBvZiBhbiBJU08gMTA2NDYK LSsvKiBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgZGVmaW5lIHRoZSBjb2x1bW4gd2lkdGgg b2YgYW4gSVNPIDEwNjQ2Ci0gICogY2hhcmFjdGVyIGFzIGZvbGxvd3M6Ci0gICoKLSAgKiAgICAt IFRoZSBudWxsIGNoYXJhY3RlciAoVSswMDAwKSBoYXMgYSBjb2x1bW4gd2lkdGggb2YgMC4KLUBA IC01MSw2ICsxMDMsOCBAQCBzdGF0aWMgaW50IGJpc2VhcmNoKHdjaGFyX3QgdWNzLCBjb25zdCBz Ci0gICogICAgICBjYXRlZ29yeSBjb2RlIE1uIG9yIE1lIGluIHRoZSBVbmljb2RlIGRhdGFiYXNl KSBoYXZlIGEKLSAgKiAgICAgIGNvbHVtbiB3aWR0aCBvZiAwLgotICAqCi0rICogICAgLSBTT0ZU IEhZUEhFTiAoVSswMEFEKSBoYXMgYSBjb2x1bW4gd2lkdGggb2YgMS4KLSsgKgotICAqICAgIC0g T3RoZXIgZm9ybWF0IGNoYXJhY3RlcnMgKGdlbmVyYWwgY2F0ZWdvcnkgY29kZSBDZiBpbiB0aGUg VW5pY29kZQotICAqICAgICAgZGF0YWJhc2UpIGFuZCBaRVJPIFdJRFRIIFNQQUNFIChVKzIwMEIp IGhhdmUgYSBjb2x1bW4gd2lkdGggb2YgMC4KLSAgKgotQEAgLTU4LDcgKzExMiw3IEBAIHN0YXRp YyBpbnQgYmlzZWFyY2god2NoYXJfdCB1Y3MsIGNvbnN0IHMKLSAgKiAgICAgIGhhdmUgYSBjb2x1 bW4gd2lkdGggb2YgMC4KLSAgKgotICAqICAgIC0gU3BhY2luZyBjaGFyYWN0ZXJzIGluIHRoZSBF YXN0IEFzaWFuIFdpZGUgKFcpIG9yIEVhc3QgQXNpYW4KLS0gKiAgICAgIEZ1bGxXaWR0aCAoRikg Y2F0ZWdvcnkgYXMgZGVmaW5lZCBpbiBVbmljb2RlIFRlY2huaWNhbAotKyAqICAgICAgRnVsbC13 aWR0aCAoRikgY2F0ZWdvcnkgYXMgZGVmaW5lZCBpbiBVbmljb2RlIFRlY2huaWNhbAotICAqICAg ICAgUmVwb3J0ICMxMSBoYXZlIGEgY29sdW1uIHdpZHRoIG9mIDIuCi0gICoKLSAgKiAgICAtIEFs bCByZW1haW5pbmcgY2hhcmFjdGVycyAoaW5jbHVkaW5nIGFsbCBwcmludGFibGUKLUBAIC02OSw0 NCArMTIzLDU5IEBAIHN0YXRpYyBpbnQgYmlzZWFyY2god2NoYXJfdCB1Y3MsIGNvbnN0IHMKLSAg KiBpbiBJU08gMTA2NDYuCi0gICovCi0gCi0taW50IHdjd2lkdGgod2NoYXJfdCB1Y3MpCi0raW50 IG1rX3djd2lkdGgod2NoYXJfdCB1Y3MpCi0gewotICAgLyogc29ydGVkIGxpc3Qgb2Ygbm9uLW92 ZXJsYXBwaW5nIGludGVydmFscyBvZiBub24tc3BhY2luZyBjaGFyYWN0ZXJzICovCi0rICAvKiBn ZW5lcmF0ZWQgYnkgInVuaXNldCArY2F0PU1lICtjYXQ9TW4gK2NhdD1DZiAtMDBBRCArMTE2MC0x MUZGICsyMDBCIGMiICovCi0gICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVydmFsIGNvbWJpbmlu Z1tdID0gewotLSAgICB7IDB4MDMwMCwgMHgwMzRFIH0sIHsgMHgwMzYwLCAweDAzNjIgfSwgeyAw eDA0ODMsIDB4MDQ4NiB9LAotLSAgICB7IDB4MDQ4OCwgMHgwNDg5IH0sIHsgMHgwNTkxLCAweDA1 QTEgfSwgeyAweDA1QTMsIDB4MDVCOSB9LAotLSAgICB7IDB4MDVCQiwgMHgwNUJEIH0sIHsgMHgw NUJGLCAweDA1QkYgfSwgeyAweDA1QzEsIDB4MDVDMiB9LAotLSAgICB7IDB4MDVDNCwgMHgwNUM0 IH0sIHsgMHgwNjRCLCAweDA2NTUgfSwgeyAweDA2NzAsIDB4MDY3MCB9LAotKyAgICB7IDB4MDMw MCwgMHgwMzZGIH0sIHsgMHgwNDgzLCAweDA0ODYgfSwgeyAweDA0ODgsIDB4MDQ4OSB9LAotKyAg ICB7IDB4MDU5MSwgMHgwNUJEIH0sIHsgMHgwNUJGLCAweDA1QkYgfSwgeyAweDA1QzEsIDB4MDVD MiB9LAotKyAgICB7IDB4MDVDNCwgMHgwNUM1IH0sIHsgMHgwNUM3LCAweDA1QzcgfSwgeyAweDA2 MDAsIDB4MDYwMyB9LAotKyAgICB7IDB4MDYxMCwgMHgwNjE1IH0sIHsgMHgwNjRCLCAweDA2NUUg fSwgeyAweDA2NzAsIDB4MDY3MCB9LAotICAgICB7IDB4MDZENiwgMHgwNkU0IH0sIHsgMHgwNkU3 LCAweDA2RTggfSwgeyAweDA2RUEsIDB4MDZFRCB9LAotICAgICB7IDB4MDcwRiwgMHgwNzBGIH0s IHsgMHgwNzExLCAweDA3MTEgfSwgeyAweDA3MzAsIDB4MDc0QSB9LAotLSAgICB7IDB4MDdBNiwg MHgwN0IwIH0sIHsgMHgwOTAxLCAweDA5MDIgfSwgeyAweDA5M0MsIDB4MDkzQyB9LAotLSAgICB7 IDB4MDk0MSwgMHgwOTQ4IH0sIHsgMHgwOTRELCAweDA5NEQgfSwgeyAweDA5NTEsIDB4MDk1NCB9 LAotLSAgICB7IDB4MDk2MiwgMHgwOTYzIH0sIHsgMHgwOTgxLCAweDA5ODEgfSwgeyAweDA5QkMs IDB4MDlCQyB9LAotLSAgICB7IDB4MDlDMSwgMHgwOUM0IH0sIHsgMHgwOUNELCAweDA5Q0QgfSwg eyAweDA5RTIsIDB4MDlFMyB9LAotLSAgICB7IDB4MEEwMiwgMHgwQTAyIH0sIHsgMHgwQTNDLCAw eDBBM0MgfSwgeyAweDBBNDEsIDB4MEE0MiB9LAotLSAgICB7IDB4MEE0NywgMHgwQTQ4IH0sIHsg MHgwQTRCLCAweDBBNEQgfSwgeyAweDBBNzAsIDB4MEE3MSB9LAotLSAgICB7IDB4MEE4MSwgMHgw QTgyIH0sIHsgMHgwQUJDLCAweDBBQkMgfSwgeyAweDBBQzEsIDB4MEFDNSB9LAotLSAgICB7IDB4 MEFDNywgMHgwQUM4IH0sIHsgMHgwQUNELCAweDBBQ0QgfSwgeyAweDBCMDEsIDB4MEIwMSB9LAot LSAgICB7IDB4MEIzQywgMHgwQjNDIH0sIHsgMHgwQjNGLCAweDBCM0YgfSwgeyAweDBCNDEsIDB4 MEI0MyB9LAotLSAgICB7IDB4MEI0RCwgMHgwQjREIH0sIHsgMHgwQjU2LCAweDBCNTYgfSwgeyAw eDBCODIsIDB4MEI4MiB9LAotLSAgICB7IDB4MEJDMCwgMHgwQkMwIH0sIHsgMHgwQkNELCAweDBC Q0QgfSwgeyAweDBDM0UsIDB4MEM0MCB9LAotLSAgICB7IDB4MEM0NiwgMHgwQzQ4IH0sIHsgMHgw QzRBLCAweDBDNEQgfSwgeyAweDBDNTUsIDB4MEM1NiB9LAotKyAgICB7IDB4MDdBNiwgMHgwN0Iw IH0sIHsgMHgwN0VCLCAweDA3RjMgfSwgeyAweDA5MDEsIDB4MDkwMiB9LAotKyAgICB7IDB4MDkz QywgMHgwOTNDIH0sIHsgMHgwOTQxLCAweDA5NDggfSwgeyAweDA5NEQsIDB4MDk0RCB9LAotKyAg ICB7IDB4MDk1MSwgMHgwOTU0IH0sIHsgMHgwOTYyLCAweDA5NjMgfSwgeyAweDA5ODEsIDB4MDk4 MSB9LAotKyAgICB7IDB4MDlCQywgMHgwOUJDIH0sIHsgMHgwOUMxLCAweDA5QzQgfSwgeyAweDA5 Q0QsIDB4MDlDRCB9LAotKyAgICB7IDB4MDlFMiwgMHgwOUUzIH0sIHsgMHgwQTAxLCAweDBBMDIg fSwgeyAweDBBM0MsIDB4MEEzQyB9LAotKyAgICB7IDB4MEE0MSwgMHgwQTQyIH0sIHsgMHgwQTQ3 LCAweDBBNDggfSwgeyAweDBBNEIsIDB4MEE0RCB9LAotKyAgICB7IDB4MEE3MCwgMHgwQTcxIH0s IHsgMHgwQTgxLCAweDBBODIgfSwgeyAweDBBQkMsIDB4MEFCQyB9LAotKyAgICB7IDB4MEFDMSwg MHgwQUM1IH0sIHsgMHgwQUM3LCAweDBBQzggfSwgeyAweDBBQ0QsIDB4MEFDRCB9LAotKyAgICB7 IDB4MEFFMiwgMHgwQUUzIH0sIHsgMHgwQjAxLCAweDBCMDEgfSwgeyAweDBCM0MsIDB4MEIzQyB9 LAotKyAgICB7IDB4MEIzRiwgMHgwQjNGIH0sIHsgMHgwQjQxLCAweDBCNDMgfSwgeyAweDBCNEQs IDB4MEI0RCB9LAotKyAgICB7IDB4MEI1NiwgMHgwQjU2IH0sIHsgMHgwQjgyLCAweDBCODIgfSwg eyAweDBCQzAsIDB4MEJDMCB9LAotKyAgICB7IDB4MEJDRCwgMHgwQkNEIH0sIHsgMHgwQzNFLCAw eDBDNDAgfSwgeyAweDBDNDYsIDB4MEM0OCB9LAotKyAgICB7IDB4MEM0QSwgMHgwQzREIH0sIHsg MHgwQzU1LCAweDBDNTYgfSwgeyAweDBDQkMsIDB4MENCQyB9LAotICAgICB7IDB4MENCRiwgMHgw Q0JGIH0sIHsgMHgwQ0M2LCAweDBDQzYgfSwgeyAweDBDQ0MsIDB4MENDRCB9LAotLSAgICB7IDB4 MEQ0MSwgMHgwRDQzIH0sIHsgMHgwRDRELCAweDBENEQgfSwgeyAweDBEQ0EsIDB4MERDQSB9LAot LSAgICB7IDB4MEREMiwgMHgwREQ0IH0sIHsgMHgwREQ2LCAweDBERDYgfSwgeyAweDBFMzEsIDB4 MEUzMSB9LAotLSAgICB7IDB4MEUzNCwgMHgwRTNBIH0sIHsgMHgwRTQ3LCAweDBFNEUgfSwgeyAw eDBFQjEsIDB4MEVCMSB9LAotLSAgICB7IDB4MEVCNCwgMHgwRUI5IH0sIHsgMHgwRUJCLCAweDBF QkMgfSwgeyAweDBFQzgsIDB4MEVDRCB9LAotLSAgICB7IDB4MEYxOCwgMHgwRjE5IH0sIHsgMHgw RjM1LCAweDBGMzUgfSwgeyAweDBGMzcsIDB4MEYzNyB9LAotLSAgICB7IDB4MEYzOSwgMHgwRjM5 IH0sIHsgMHgwRjcxLCAweDBGN0UgfSwgeyAweDBGODAsIDB4MEY4NCB9LAotLSAgICB7IDB4MEY4 NiwgMHgwRjg3IH0sIHsgMHgwRjkwLCAweDBGOTcgfSwgeyAweDBGOTksIDB4MEZCQyB9LAotLSAg ICB7IDB4MEZDNiwgMHgwRkM2IH0sIHsgMHgxMDJELCAweDEwMzAgfSwgeyAweDEwMzIsIDB4MTAz MiB9LAotLSAgICB7IDB4MTAzNiwgMHgxMDM3IH0sIHsgMHgxMDM5LCAweDEwMzkgfSwgeyAweDEw NTgsIDB4MTA1OSB9LAotLSAgICB7IDB4MTE2MCwgMHgxMUZGIH0sIHsgMHgxN0I3LCAweDE3QkQg fSwgeyAweDE3QzYsIDB4MTdDNiB9LAotLSAgICB7IDB4MTdDOSwgMHgxN0QzIH0sIHsgMHgxODBC LCAweDE4MEUgfSwgeyAweDE4QTksIDB4MThBOSB9LAotLSAgICB7IDB4MjAwQiwgMHgyMDBGIH0s IHsgMHgyMDJBLCAweDIwMkUgfSwgeyAweDIwNkEsIDB4MjA2RiB9LAotLSAgICB7IDB4MjBEMCwg MHgyMEUzIH0sIHsgMHgzMDJBLCAweDMwMkYgfSwgeyAweDMwOTksIDB4MzA5QSB9LAotLSAgICB7 IDB4RkIxRSwgMHhGQjFFIH0sIHsgMHhGRTIwLCAweEZFMjMgfSwgeyAweEZFRkYsIDB4RkVGRiB9 LAotLSAgICB7IDB4RkZGOSwgMHhGRkZCIH0KLSsgICAgeyAweDBDRTIsIDB4MENFMyB9LCB7IDB4 MEQ0MSwgMHgwRDQzIH0sIHsgMHgwRDRELCAweDBENEQgfSwKLSsgICAgeyAweDBEQ0EsIDB4MERD QSB9LCB7IDB4MEREMiwgMHgwREQ0IH0sIHsgMHgwREQ2LCAweDBERDYgfSwKLSsgICAgeyAweDBF MzEsIDB4MEUzMSB9LCB7IDB4MEUzNCwgMHgwRTNBIH0sIHsgMHgwRTQ3LCAweDBFNEUgfSwKLSsg ICAgeyAweDBFQjEsIDB4MEVCMSB9LCB7IDB4MEVCNCwgMHgwRUI5IH0sIHsgMHgwRUJCLCAweDBF QkMgfSwKLSsgICAgeyAweDBFQzgsIDB4MEVDRCB9LCB7IDB4MEYxOCwgMHgwRjE5IH0sIHsgMHgw RjM1LCAweDBGMzUgfSwKLSsgICAgeyAweDBGMzcsIDB4MEYzNyB9LCB7IDB4MEYzOSwgMHgwRjM5 IH0sIHsgMHgwRjcxLCAweDBGN0UgfSwKLSsgICAgeyAweDBGODAsIDB4MEY4NCB9LCB7IDB4MEY4 NiwgMHgwRjg3IH0sIHsgMHgwRjkwLCAweDBGOTcgfSwKLSsgICAgeyAweDBGOTksIDB4MEZCQyB9 LCB7IDB4MEZDNiwgMHgwRkM2IH0sIHsgMHgxMDJELCAweDEwMzAgfSwKLSsgICAgeyAweDEwMzIs IDB4MTAzMiB9LCB7IDB4MTAzNiwgMHgxMDM3IH0sIHsgMHgxMDM5LCAweDEwMzkgfSwKLSsgICAg eyAweDEwNTgsIDB4MTA1OSB9LCB7IDB4MTE2MCwgMHgxMUZGIH0sIHsgMHgxMzVGLCAweDEzNUYg fSwKLSsgICAgeyAweDE3MTIsIDB4MTcxNCB9LCB7IDB4MTczMiwgMHgxNzM0IH0sIHsgMHgxNzUy LCAweDE3NTMgfSwKLSsgICAgeyAweDE3NzIsIDB4MTc3MyB9LCB7IDB4MTdCNCwgMHgxN0I1IH0s IHsgMHgxN0I3LCAweDE3QkQgfSwKLSsgICAgeyAweDE3QzYsIDB4MTdDNiB9LCB7IDB4MTdDOSwg MHgxN0QzIH0sIHsgMHgxN0RELCAweDE3REQgfSwKLSsgICAgeyAweDE4MEIsIDB4MTgwRCB9LCB7 IDB4MThBOSwgMHgxOEE5IH0sIHsgMHgxOTIwLCAweDE5MjIgfSwKLSsgICAgeyAweDE5MjcsIDB4 MTkyOCB9LCB7IDB4MTkzMiwgMHgxOTMyIH0sIHsgMHgxOTM5LCAweDE5M0IgfSwKLSsgICAgeyAw eDFBMTcsIDB4MUExOCB9LCB7IDB4MUIwMCwgMHgxQjAzIH0sIHsgMHgxQjM0LCAweDFCMzQgfSwK LSsgICAgeyAweDFCMzYsIDB4MUIzQSB9LCB7IDB4MUIzQywgMHgxQjNDIH0sIHsgMHgxQjQyLCAw eDFCNDIgfSwKLSsgICAgeyAweDFCNkIsIDB4MUI3MyB9LCB7IDB4MURDMCwgMHgxRENBIH0sIHsg MHgxREZFLCAweDFERkYgfSwKLSsgICAgeyAweDIwMEIsIDB4MjAwRiB9LCB7IDB4MjAyQSwgMHgy MDJFIH0sIHsgMHgyMDYwLCAweDIwNjMgfSwKLSsgICAgeyAweDIwNkEsIDB4MjA2RiB9LCB7IDB4 MjBEMCwgMHgyMEVGIH0sIHsgMHgzMDJBLCAweDMwMkYgfSwKLSsgICAgeyAweDMwOTksIDB4MzA5 QSB9LCB7IDB4QTgwNiwgMHhBODA2IH0sIHsgMHhBODBCLCAweEE4MEIgfSwKLSsgICAgeyAweEE4 MjUsIDB4QTgyNiB9LCB7IDB4RkIxRSwgMHhGQjFFIH0sIHsgMHhGRTAwLCAweEZFMEYgfSwKLSsg ICAgeyAweEZFMjAsIDB4RkUyMyB9LCB7IDB4RkVGRiwgMHhGRUZGIH0sIHsgMHhGRkY5LCAweEZG RkIgfSwKLSsgICAgeyAweDEwQTAxLCAweDEwQTAzIH0sIHsgMHgxMEEwNSwgMHgxMEEwNiB9LCB7 IDB4MTBBMEMsIDB4MTBBMEYgfSwKLSsgICAgeyAweDEwQTM4LCAweDEwQTNBIH0sIHsgMHgxMEEz RiwgMHgxMEEzRiB9LCB7IDB4MUQxNjcsIDB4MUQxNjkgfSwKLSsgICAgeyAweDFEMTczLCAweDFE MTgyIH0sIHsgMHgxRDE4NSwgMHgxRDE4QiB9LCB7IDB4MUQxQUEsIDB4MUQxQUQgfSwKLSsgICAg eyAweDFEMjQyLCAweDFEMjQ0IH0sIHsgMHhFMDAwMSwgMHhFMDAwMSB9LCB7IDB4RTAwMjAsIDB4 RTAwN0YgfSwKLSsgICAgeyAweEUwMTAwLCAweEUwMUVGIH0KLSAgIH07Ci0gCi0gICAvKiB0ZXN0 IGZvciA4LWJpdCBjb250cm9sIGNoYXJhY3RlcnMgKi8KLUBAIC0xMjUsMjMgKzE5NCwyNiBAQCBp bnQgd2N3aWR0aCh3Y2hhcl90IHVjcykKLSAgIHJldHVybiAxICsgCi0gICAgICh1Y3MgPj0gMHgx MTAwICYmCi0gICAgICAodWNzIDw9IDB4MTE1ZiB8fCAgICAgICAgICAgICAgICAgICAgLyogSGFu Z3VsIEphbW8gaW5pdC4gY29uc29uYW50cyAqLwotLSAgICAgICh1Y3MgPj0gMHgyZTgwICYmIHVj cyA8PSAweGE0Y2YgJiYgKHVjcyAmIH4weDAwMTEpICE9IDB4MzAwYSAmJgotKyAgICAgIHVjcyA9 PSAweDIzMjkgfHwgdWNzID09IDB4MjMyYSB8fAotKyAgICAgICh1Y3MgPj0gMHgyZTgwICYmIHVj cyA8PSAweGE0Y2YgJiYKLSAgICAgICAgdWNzICE9IDB4MzAzZikgfHwgICAgICAgICAgICAgICAg ICAvKiBDSksgLi4uIFlpICovCi0gICAgICAgKHVjcyA+PSAweGFjMDAgJiYgdWNzIDw9IDB4ZDdh MykgfHwgLyogSGFuZ3VsIFN5bGxhYmxlcyAqLwotICAgICAgICh1Y3MgPj0gMHhmOTAwICYmIHVj cyA8PSAweGZhZmYpIHx8IC8qIENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMgKi8KLSsgICAg ICAodWNzID49IDB4ZmUxMCAmJiB1Y3MgPD0gMHhmZTE5KSB8fCAvKiBWZXJ0aWNhbCBmb3JtcyAq LwotICAgICAgICh1Y3MgPj0gMHhmZTMwICYmIHVjcyA8PSAweGZlNmYpIHx8IC8qIENKSyBDb21w YXRpYmlsaXR5IEZvcm1zICovCi0tICAgICAgKHVjcyA+PSAweGZmMDAgJiYgdWNzIDw9IDB4ZmY1 ZikgfHwgLyogRnVsbHdpZHRoIEZvcm1zICovCi0rICAgICAgKHVjcyA+PSAweGZmMDAgJiYgdWNz IDw9IDB4ZmY2MCkgfHwgLyogRnVsbHdpZHRoIEZvcm1zICovCi0gICAgICAgKHVjcyA+PSAweGZm ZTAgJiYgdWNzIDw9IDB4ZmZlNikgfHwKLS0gICAgICAodWNzID49IDB4MjAwMDAgJiYgdWNzIDw9 IDB4MmZmZmYpKSk7Ci0rICAgICAgKHVjcyA+PSAweDIwMDAwICYmIHVjcyA8PSAweDJmZmZkKSB8 fAotKyAgICAgICh1Y3MgPj0gMHgzMDAwMCAmJiB1Y3MgPD0gMHgzZmZmZCkpKTsKLSB9Ci0gCi0g Ci0taW50IHdjc3dpZHRoKGNvbnN0IHdjaGFyX3QgKnB3Y3MsIHNpemVfdCBuKQotK2ludCBta193 Y3N3aWR0aChjb25zdCB3Y2hhcl90ICpwd2NzLCBzaXplX3QgbikKLSB7Ci0gICBpbnQgdywgd2lk dGggPSAwOwotIAotICAgZm9yICg7KnB3Y3MgJiYgbi0tID4gMDsgcHdjcysrKQotLSAgICBpZiAo KHcgPSB3Y3dpZHRoKCpwd2NzKSkgPCAwKQotKyAgICBpZiAoKHcgPSBta193Y3dpZHRoKCpwd2Nz KSkgPCAwKQotICAgICAgIHJldHVybiAtMTsKLSAgICAgZWxzZQotICAgICAgIHdpZHRoICs9IHc7 Ci1AQCAtMTUxLDIwICsyMjMsMjEgQEAgaW50IHdjc3dpZHRoKGNvbnN0IHdjaGFyX3QgKnB3Y3Ms IHNpemVfdAotIAotIAotIC8qCi0tICogVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyB0aGUgc2Ft ZSBhcyB3Y3dpZHRoKCksIGV4Y2VwdCB0aGF0Ci0tICogc3BhY2luZyBjaGFyYWN0ZXJzIGluIHRo ZSBFYXN0IEFzaWFuIEFtYmlndW91cyAoQSkgY2F0ZWdvcnkgYXMKLS0gKiBkZWZpbmVkIGluIFVu aWNvZGUgVGVjaG5pY2FsIFJlcG9ydCAjMTEgaGF2ZSBhIGNvbHVtbiB3aWR0aCBvZiAyLgotLSAq IFRoaXMgZXhwZXJpbWVudGFsIHZhcmlhbnQgbWlnaHQgYmUgdXNlZnVsIGZvciB1c2VycyBvZiBD SksgbGVnYWN5Ci0tICogZW5jb2RpbmdzIHdobyB3YW50IHRvIG1pZ3JhdGUgdG8gVUNTLiBJdCBp cyBub3Qgb3RoZXJ3aXNlCi0tICogcmVjb21tZW5kZWQgZm9yIGdlbmVyYWwgdXNlLgotKyAqIFRo ZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB0aGUgc2FtZSBhcyBta193Y3dpZHRoKCkgYW5kCi0r ICogbWtfd2Nzd2lkdGgoKSwgZXhjZXB0IHRoYXQgc3BhY2luZyBjaGFyYWN0ZXJzIGluIHRoZSBF YXN0IEFzaWFuCi0rICogQW1iaWd1b3VzIChBKSBjYXRlZ29yeSBhcyBkZWZpbmVkIGluIFVuaWNv ZGUgVGVjaG5pY2FsIFJlcG9ydCAjMTEKLSsgKiBoYXZlIGEgY29sdW1uIHdpZHRoIG9mIDIuIFRo aXMgdmFyaWFudCBtaWdodCBiZSB1c2VmdWwgZm9yIHVzZXJzIG9mCi0rICogQ0pLIGxlZ2FjeSBl bmNvZGluZ3Mgd2hvIHdhbnQgdG8gbWlncmF0ZSB0byBVQ1Mgd2l0aG91dCBjaGFuZ2luZwotKyAq IHRoZSB0cmFkaXRpb25hbCB0ZXJtaW5hbCBjaGFyYWN0ZXItd2lkdGggYmVoYXZpb3VyLiBJdCBp cyBub3QKLSsgKiBvdGhlcndpc2UgcmVjb21tZW5kZWQgZm9yIGdlbmVyYWwgdXNlLgotICAqLwot LXN0YXRpYyBpbnQgd2N3aWR0aF9jamsod2NoYXJfdCB1Y3MpCi0raW50IG1rX3djd2lkdGhfY2pr KHdjaGFyX3QgdWNzKQotIHsKLSAgIC8qIHNvcnRlZCBsaXN0IG9mIG5vbi1vdmVybGFwcGluZyBp bnRlcnZhbHMgb2YgRWFzdCBBc2lhbiBBbWJpZ3VvdXMKLS0gICAqIGNoYXJhY3RlcnMgKi8KLSsg ICAqIGNoYXJhY3RlcnMsIGdlbmVyYXRlZCBieSAidW5pc2V0ICtXSURUSC1BIC1jYXQ9TWUgLWNh dD1NbiAtY2F0PUNmIGMiICovCi0gICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVydmFsIGFtYmln dW91c1tdID0gewotICAgICB7IDB4MDBBMSwgMHgwMEExIH0sIHsgMHgwMEE0LCAweDAwQTQgfSwg eyAweDAwQTcsIDB4MDBBOCB9LAotLSAgICB7IDB4MDBBQSwgMHgwMEFBIH0sIHsgMHgwMEFELCAw eDAwQUUgfSwgeyAweDAwQjAsIDB4MDBCNCB9LAotKyAgICB7IDB4MDBBQSwgMHgwMEFBIH0sIHsg MHgwMEFFLCAweDAwQUUgfSwgeyAweDAwQjAsIDB4MDBCNCB9LAotICAgICB7IDB4MDBCNiwgMHgw MEJBIH0sIHsgMHgwMEJDLCAweDAwQkYgfSwgeyAweDAwQzYsIDB4MDBDNiB9LAotICAgICB7IDB4 MDBEMCwgMHgwMEQwIH0sIHsgMHgwMEQ3LCAweDAwRDggfSwgeyAweDAwREUsIDB4MDBFMSB9LAot ICAgICB7IDB4MDBFNiwgMHgwMEU2IH0sIHsgMHgwMEU4LCAweDAwRUEgfSwgeyAweDAwRUMsIDB4 MDBFRCB9LAotQEAgLTE4MCw0MiArMjUzLDQxIEBAIHN0YXRpYyBpbnQgd2N3aWR0aF9jamsod2No YXJfdCB1Y3MpCi0gICAgIHsgMHgwMURDLCAweDAxREMgfSwgeyAweDAyNTEsIDB4MDI1MSB9LCB7 IDB4MDI2MSwgMHgwMjYxIH0sCi0gICAgIHsgMHgwMkM0LCAweDAyQzQgfSwgeyAweDAyQzcsIDB4 MDJDNyB9LCB7IDB4MDJDOSwgMHgwMkNCIH0sCi0gICAgIHsgMHgwMkNELCAweDAyQ0QgfSwgeyAw eDAyRDAsIDB4MDJEMCB9LCB7IDB4MDJEOCwgMHgwMkRCIH0sCi0tICAgIHsgMHgwMkRELCAweDAy REQgfSwgeyAweDAyREYsIDB4MDJERiB9LCB7IDB4MDMwMCwgMHgwMzRFIH0sCi0tICAgIHsgMHgw MzYwLCAweDAzNjIgfSwgeyAweDAzOTEsIDB4MDNBMSB9LCB7IDB4MDNBMywgMHgwM0E5IH0sCi0t ICAgIHsgMHgwM0IxLCAweDAzQzEgfSwgeyAweDAzQzMsIDB4MDNDOSB9LCB7IDB4MDQwMSwgMHgw NDAxIH0sCi0tICAgIHsgMHgwNDEwLCAweDA0NEYgfSwgeyAweDA0NTEsIDB4MDQ1MSB9LCB7IDB4 MjAxMCwgMHgyMDEwIH0sCi0tICAgIHsgMHgyMDEzLCAweDIwMTYgfSwgeyAweDIwMTgsIDB4MjAx OSB9LCB7IDB4MjAxQywgMHgyMDFEIH0sCi0tICAgIHsgMHgyMDIwLCAweDIwMjIgfSwgeyAweDIw MjQsIDB4MjAyNyB9LCB7IDB4MjAzMCwgMHgyMDMwIH0sCi0tICAgIHsgMHgyMDMyLCAweDIwMzMg fSwgeyAweDIwMzUsIDB4MjAzNSB9LCB7IDB4MjAzQiwgMHgyMDNCIH0sCi0tICAgIHsgMHgyMDNF LCAweDIwM0UgfSwgeyAweDIwNzQsIDB4MjA3NCB9LCB7IDB4MjA3RiwgMHgyMDdGIH0sCi0tICAg IHsgMHgyMDgxLCAweDIwODQgfSwgeyAweDIwQUMsIDB4MjBBQyB9LCB7IDB4MjEwMywgMHgyMTAz IH0sCi0tICAgIHsgMHgyMTA1LCAweDIxMDUgfSwgeyAweDIxMDksIDB4MjEwOSB9LCB7IDB4MjEx MywgMHgyMTEzIH0sCi0tICAgIHsgMHgyMTE2LCAweDIxMTYgfSwgeyAweDIxMjEsIDB4MjEyMiB9 LCB7IDB4MjEyNiwgMHgyMTI2IH0sCi0tICAgIHsgMHgyMTJCLCAweDIxMkIgfSwgeyAweDIxNTMs IDB4MjE1NSB9LCB7IDB4MjE1QiwgMHgyMTVFIH0sCi0tICAgIHsgMHgyMTYwLCAweDIxNkIgfSwg eyAweDIxNzAsIDB4MjE3OSB9LCB7IDB4MjE5MCwgMHgyMTk5IH0sCi0tICAgIHsgMHgyMUI4LCAw eDIxQjkgfSwgeyAweDIxRDIsIDB4MjFEMiB9LCB7IDB4MjFENCwgMHgyMUQ0IH0sCi0tICAgIHsg MHgyMUU3LCAweDIxRTcgfSwgeyAweDIyMDAsIDB4MjIwMCB9LCB7IDB4MjIwMiwgMHgyMjAzIH0s Ci0tICAgIHsgMHgyMjA3LCAweDIyMDggfSwgeyAweDIyMEIsIDB4MjIwQiB9LCB7IDB4MjIwRiwg MHgyMjBGIH0sCi0tICAgIHsgMHgyMjExLCAweDIyMTEgfSwgeyAweDIyMTUsIDB4MjIxNSB9LCB7 IDB4MjIxQSwgMHgyMjFBIH0sCi0tICAgIHsgMHgyMjFELCAweDIyMjAgfSwgeyAweDIyMjMsIDB4 MjIyMyB9LCB7IDB4MjIyNSwgMHgyMjI1IH0sCi0tICAgIHsgMHgyMjI3LCAweDIyMkMgfSwgeyAw eDIyMkUsIDB4MjIyRSB9LCB7IDB4MjIzNCwgMHgyMjM3IH0sCi0tICAgIHsgMHgyMjNDLCAweDIy M0QgfSwgeyAweDIyNDgsIDB4MjI0OCB9LCB7IDB4MjI0QywgMHgyMjRDIH0sCi0tICAgIHsgMHgy MjUyLCAweDIyNTIgfSwgeyAweDIyNjAsIDB4MjI2MSB9LCB7IDB4MjI2NCwgMHgyMjY3IH0sCi0t ICAgIHsgMHgyMjZBLCAweDIyNkIgfSwgeyAweDIyNkUsIDB4MjI2RiB9LCB7IDB4MjI4MiwgMHgy MjgzIH0sCi0tICAgIHsgMHgyMjg2LCAweDIyODcgfSwgeyAweDIyOTUsIDB4MjI5NSB9LCB7IDB4 MjI5OSwgMHgyMjk5IH0sCi0tICAgIHsgMHgyMkE1LCAweDIyQTUgfSwgeyAweDIyQkYsIDB4MjJC RiB9LCB7IDB4MjMxMiwgMHgyMzEyIH0sCi0tICAgIHsgMHgyMzI5LCAweDIzMkEgfSwgeyAweDI0 NjAsIDB4MjRCRiB9LCB7IDB4MjREMCwgMHgyNEU5IH0sCi0tICAgIHsgMHgyNTAwLCAweDI1NEIg fSwgeyAweDI1NTAsIDB4MjU3NCB9LCB7IDB4MjU4MCwgMHgyNThGIH0sCi0tICAgIHsgMHgyNTky LCAweDI1OTUgfSwgeyAweDI1QTAsIDB4MjVBMSB9LCB7IDB4MjVBMywgMHgyNUE5IH0sCi0tICAg IHsgMHgyNUIyLCAweDI1QjMgfSwgeyAweDI1QjYsIDB4MjVCNyB9LCB7IDB4MjVCQywgMHgyNUJE IH0sCi0tICAgIHsgMHgyNUMwLCAweDI1QzEgfSwgeyAweDI1QzYsIDB4MjVDOCB9LCB7IDB4MjVD QiwgMHgyNUNCIH0sCi0tICAgIHsgMHgyNUNFLCAweDI1RDEgfSwgeyAweDI1RTIsIDB4MjVFNSB9 LCB7IDB4MjVFRiwgMHgyNUVGIH0sCi0tICAgIHsgMHgyNjA1LCAweDI2MDYgfSwgeyAweDI2MDks IDB4MjYwOSB9LCB7IDB4MjYwRSwgMHgyNjBGIH0sCi0rICAgIHsgMHgwMkRELCAweDAyREQgfSwg eyAweDAyREYsIDB4MDJERiB9LCB7IDB4MDM5MSwgMHgwM0ExIH0sCi0rICAgIHsgMHgwM0EzLCAw eDAzQTkgfSwgeyAweDAzQjEsIDB4MDNDMSB9LCB7IDB4MDNDMywgMHgwM0M5IH0sCi0rICAgIHsg MHgwNDAxLCAweDA0MDEgfSwgeyAweDA0MTAsIDB4MDQ0RiB9LCB7IDB4MDQ1MSwgMHgwNDUxIH0s Ci0rICAgIHsgMHgyMDEwLCAweDIwMTAgfSwgeyAweDIwMTMsIDB4MjAxNiB9LCB7IDB4MjAxOCwg MHgyMDE5IH0sCi0rICAgIHsgMHgyMDFDLCAweDIwMUQgfSwgeyAweDIwMjAsIDB4MjAyMiB9LCB7 IDB4MjAyNCwgMHgyMDI3IH0sCi0rICAgIHsgMHgyMDMwLCAweDIwMzAgfSwgeyAweDIwMzIsIDB4 MjAzMyB9LCB7IDB4MjAzNSwgMHgyMDM1IH0sCi0rICAgIHsgMHgyMDNCLCAweDIwM0IgfSwgeyAw eDIwM0UsIDB4MjAzRSB9LCB7IDB4MjA3NCwgMHgyMDc0IH0sCi0rICAgIHsgMHgyMDdGLCAweDIw N0YgfSwgeyAweDIwODEsIDB4MjA4NCB9LCB7IDB4MjBBQywgMHgyMEFDIH0sCi0rICAgIHsgMHgy MTAzLCAweDIxMDMgfSwgeyAweDIxMDUsIDB4MjEwNSB9LCB7IDB4MjEwOSwgMHgyMTA5IH0sCi0r ICAgIHsgMHgyMTEzLCAweDIxMTMgfSwgeyAweDIxMTYsIDB4MjExNiB9LCB7IDB4MjEyMSwgMHgy MTIyIH0sCi0rICAgIHsgMHgyMTI2LCAweDIxMjYgfSwgeyAweDIxMkIsIDB4MjEyQiB9LCB7IDB4 MjE1MywgMHgyMTU0IH0sCi0rICAgIHsgMHgyMTVCLCAweDIxNUUgfSwgeyAweDIxNjAsIDB4MjE2 QiB9LCB7IDB4MjE3MCwgMHgyMTc5IH0sCi0rICAgIHsgMHgyMTkwLCAweDIxOTkgfSwgeyAweDIx QjgsIDB4MjFCOSB9LCB7IDB4MjFEMiwgMHgyMUQyIH0sCi0rICAgIHsgMHgyMUQ0LCAweDIxRDQg fSwgeyAweDIxRTcsIDB4MjFFNyB9LCB7IDB4MjIwMCwgMHgyMjAwIH0sCi0rICAgIHsgMHgyMjAy LCAweDIyMDMgfSwgeyAweDIyMDcsIDB4MjIwOCB9LCB7IDB4MjIwQiwgMHgyMjBCIH0sCi0rICAg IHsgMHgyMjBGLCAweDIyMEYgfSwgeyAweDIyMTEsIDB4MjIxMSB9LCB7IDB4MjIxNSwgMHgyMjE1 IH0sCi0rICAgIHsgMHgyMjFBLCAweDIyMUEgfSwgeyAweDIyMUQsIDB4MjIyMCB9LCB7IDB4MjIy MywgMHgyMjIzIH0sCi0rICAgIHsgMHgyMjI1LCAweDIyMjUgfSwgeyAweDIyMjcsIDB4MjIyQyB9 LCB7IDB4MjIyRSwgMHgyMjJFIH0sCi0rICAgIHsgMHgyMjM0LCAweDIyMzcgfSwgeyAweDIyM0Ms IDB4MjIzRCB9LCB7IDB4MjI0OCwgMHgyMjQ4IH0sCi0rICAgIHsgMHgyMjRDLCAweDIyNEMgfSwg eyAweDIyNTIsIDB4MjI1MiB9LCB7IDB4MjI2MCwgMHgyMjYxIH0sCi0rICAgIHsgMHgyMjY0LCAw eDIyNjcgfSwgeyAweDIyNkEsIDB4MjI2QiB9LCB7IDB4MjI2RSwgMHgyMjZGIH0sCi0rICAgIHsg MHgyMjgyLCAweDIyODMgfSwgeyAweDIyODYsIDB4MjI4NyB9LCB7IDB4MjI5NSwgMHgyMjk1IH0s Ci0rICAgIHsgMHgyMjk5LCAweDIyOTkgfSwgeyAweDIyQTUsIDB4MjJBNSB9LCB7IDB4MjJCRiwg MHgyMkJGIH0sCi0rICAgIHsgMHgyMzEyLCAweDIzMTIgfSwgeyAweDI0NjAsIDB4MjRFOSB9LCB7 IDB4MjRFQiwgMHgyNTRCIH0sCi0rICAgIHsgMHgyNTUwLCAweDI1NzMgfSwgeyAweDI1ODAsIDB4 MjU4RiB9LCB7IDB4MjU5MiwgMHgyNTk1IH0sCi0rICAgIHsgMHgyNUEwLCAweDI1QTEgfSwgeyAw eDI1QTMsIDB4MjVBOSB9LCB7IDB4MjVCMiwgMHgyNUIzIH0sCi0rICAgIHsgMHgyNUI2LCAweDI1 QjcgfSwgeyAweDI1QkMsIDB4MjVCRCB9LCB7IDB4MjVDMCwgMHgyNUMxIH0sCi0rICAgIHsgMHgy NUM2LCAweDI1QzggfSwgeyAweDI1Q0IsIDB4MjVDQiB9LCB7IDB4MjVDRSwgMHgyNUQxIH0sCi0r ICAgIHsgMHgyNUUyLCAweDI1RTUgfSwgeyAweDI1RUYsIDB4MjVFRiB9LCB7IDB4MjYwNSwgMHgy NjA2IH0sCi0rICAgIHsgMHgyNjA5LCAweDI2MDkgfSwgeyAweDI2MEUsIDB4MjYwRiB9LCB7IDB4 MjYxNCwgMHgyNjE1IH0sCi0gICAgIHsgMHgyNjFDLCAweDI2MUMgfSwgeyAweDI2MUUsIDB4MjYx RSB9LCB7IDB4MjY0MCwgMHgyNjQwIH0sCi0gICAgIHsgMHgyNjQyLCAweDI2NDIgfSwgeyAweDI2 NjAsIDB4MjY2MSB9LCB7IDB4MjY2MywgMHgyNjY1IH0sCi0gICAgIHsgMHgyNjY3LCAweDI2NkEg fSwgeyAweDI2NkMsIDB4MjY2RCB9LCB7IDB4MjY2RiwgMHgyNjZGIH0sCi0tICAgIHsgMHgyNzNE LCAweDI3M0QgfSwgeyAweDMwMDgsIDB4MzAwQiB9LCB7IDB4MzAxNCwgMHgzMDE1IH0sCi0tICAg IHsgMHgzMDE4LCAweDMwMUIgfSwgeyAweEZGRkQsIDB4RkZGRCB9Ci0rICAgIHsgMHgyNzNELCAw eDI3M0QgfSwgeyAweDI3NzYsIDB4Mjc3RiB9LCB7IDB4RTAwMCwgMHhGOEZGIH0sCi0rICAgIHsg MHhGRkZELCAweEZGRkQgfSwgeyAweEYwMDAwLCAweEZGRkZEIH0sIHsgMHgxMDAwMDAsIDB4MTBG RkZEIH0KLSAgIH07Ci0gCi0gICAvKiBiaW5hcnkgc2VhcmNoIGluIHRhYmxlIG9mIG5vbi1zcGFj aW5nIGNoYXJhY3RlcnMgKi8KLUBAIC0yMjMsMTYgKzI5NSwxNiBAQCBzdGF0aWMgaW50IHdjd2lk dGhfY2prKHdjaGFyX3QgdWNzKQotIAkgICAgICAgc2l6ZW9mKGFtYmlndW91cykgLyBzaXplb2Yo c3RydWN0IGludGVydmFsKSAtIDEpKQotICAgICByZXR1cm4gMjsKLSAKLS0gIHJldHVybiB3Y3dp ZHRoKHVjcyk7Ci0rICByZXR1cm4gbWtfd2N3aWR0aCh1Y3MpOwotIH0KLSAKLSAKLS1pbnQgd2Nz d2lkdGhfY2prKGNvbnN0IHdjaGFyX3QgKnB3Y3MsIHNpemVfdCBuKQotK2ludCBta193Y3N3aWR0 aF9jamsoY29uc3Qgd2NoYXJfdCAqcHdjcywgc2l6ZV90IG4pCi0gewotICAgaW50IHcsIHdpZHRo ID0gMDsKLSAKLSAgIGZvciAoOypwd2NzICYmIG4tLSA+IDA7IHB3Y3MrKykKLS0gICAgaWYgKCh3 ID0gd2N3aWR0aF9jamsoKnB3Y3MpKSA8IDApCi0rICAgIGlmICgodyA9IG1rX3djd2lkdGhfY2pr KCpwd2NzKSkgPCAwKQotICAgICAgIHJldHVybiAtMTsKLSAgICAgZWxzZQotICAgICAgIHdpZHRo ICs9IHc7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS90Y2FwLmgKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvdGNhcC5oCTIwMTEt MDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9y ZWFkbGluZS90Y2FwLmgJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0x LDI1ICsxLDIzIEBACi0gLyogdGNhcC5oIC0tIHRlcm1jYXAgbGlicmFyeSBmdW5jdGlvbnMgYW5k IHZhcmlhYmxlcy4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5OTYgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBSZWFkbGlu ZSBMaWJyYXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9mCi0tICAgcm91dGluZXMgZm9yIHByb3Zp ZGluZyBFbWFjcyBzdHlsZSBsaW5lIGlucHV0IHRvIHByb2dyYW1zIHRoYXQgYXNrCi0tICAgZm9y IGl0LgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAo UmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGgg aW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBUaGUg TGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSAg IGFueSBsYXRlciB2ZXJzaW9uLgotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLS0gICBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK LS0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAgVGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29m dHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlO RyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNl bnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBs ZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBSZWFkbGlu ZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0gI2lmICFk ZWZpbmVkIChfUkxUQ0FQX0hfKQotICNkZWZpbmUgX1JMVENBUF9IXwotSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvcmVhZGxpbmUvdGVybWluYWwuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu OTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS90ZXJtaW5hbC5jCTIwMTEtMDctMDMgMTA6NDA6NTMu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS90ZXJtaW5h bC5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNCArMSwyNCBA QAotIC8qIHRlcm1pbmFsLmMgLS0gY29udHJvbGxpbmcgdGhlIHRlcm1pbmFsIHdpdGggdGVybWNh cC4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRs aW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0 aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotKyAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkK LSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5k IGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdO VSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot IAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdp dGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2Fs bGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBv ZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0g ICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0r ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0rCi0gI2RlZmluZSBSRUFETElORV9MSUJS QVJZCi0gCi0gI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCi1AQCAtNzEsNiArNzEsMTcgQEAK LSAjaW5jbHVkZSAieG1hbGxvYy5oIgotIAotICNpZiBkZWZpbmVkIChfX01JTkdXMzJfXykKLSsj ICBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0rIyAgaW5jbHVkZSA8d2luY29uLmg+Ci0rCi0rc3RhdGlj IHZvaWQgX3dpbl9nZXRfc2NyZWVuc2l6ZSBQQVJBTVMoKGludCAqLCBpbnQgKikpOwotKyNlbmRp ZgotKwotKyNpZiBkZWZpbmVkIChfX0VNWF9fKQotK3N0YXRpYyB2b2lkIF9lbXhfZ2V0X3NjcmVl bnNpemUgUEFSQU1TKChpbnQgKiwgaW50ICopKTsKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCAo X19NSU5HVzMyX18pCi0gIyBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0gIyBpbmNsdWRlIDx3aW5jb24u aD4KLSAjZW5kaWYKLUBAIC03OCw3ICs4OSwxMCBAQAotICNkZWZpbmUgQ1VTVE9NX1JFRElTUExB WV9GVU5DKCkgKHJsX3JlZGlzcGxheV9mdW5jdGlvbiAhPSBybF9yZWRpc3BsYXkpCi0gI2RlZmlu ZSBDVVNUT01fSU5QVVRfRlVOQygpIChybF9nZXRjX2Z1bmN0aW9uICE9IHJsX2dldGMpCi0gCi0t aW50IHJsX3ByZWZlcl9lbnZfd2luc2l6ZTsKLSsvKiAgSWYgdGhlIGNhbGxpbmcgYXBwbGljYXRp b24gc2V0cyB0aGlzIHRvIGEgbm9uLXplcm8gdmFsdWUsIHJlYWRsaW5lIHdpbGwKLSsgICAgdXNl IHRoZSAkTElORVMgYW5kICRDT0xVTU5TIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgaXRz IGlkZWEgb2YgdGhlCi0rICAgIHdpbmRvdyBzaXplIGJlZm9yZSBpbnRlcnJvZ2F0aW5nIHRoZSBr ZXJuZWwuICovCi0raW50IHJsX3ByZWZlcl9lbnZfd2luc2l6ZSA9IDA7Ci0gCi0gLyogKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiAqLwotIC8qCQkJCQkJCQkgICAgKi8KLUBAIC05MywxMiArMTA3LDEyIEBAIHN0YXRpYyBjaGFy ICp0ZXJtX3N0cmluZ19idWZmZXIgPSAoY2hhciAKLSAKLSBzdGF0aWMgaW50IHRjYXBfaW5pdGlh bGl6ZWQ7Ci0gCi0tI2lmICFkZWZpbmVkIChfX2xpbnV4X18pCi0rI2lmICFkZWZpbmVkIChfX2xp bnV4X18pICYmICFkZWZpbmVkIChOQ1VSU0VTX1ZFUlNJT04pCi0gIyAgaWYgZGVmaW5lZCAoX19F TVhfXykgfHwgZGVmaW5lZCAoTkVFRF9FWFRFUk5fUEMpCi0gZXh0ZXJuIAotICMgIGVuZGlmIC8q IF9fRU1YX18gfHwgTkVFRF9FWFRFUk5fUEMgKi8KLSBjaGFyIFBDLCAqQkMsICpVUDsKLS0jZW5k aWYgLyogX19saW51eF9fICovCi0rI2VuZGlmIC8qICFfX2xpbnV4X18gJiYgIU5DVVJTRVNfVkVS U0lPTiAqLwotIAotIC8qIFNvbWUgc3RyaW5ncyB0byBjb250cm9sIHRlcm1pbmFsIGFjdGlvbnMu ICBUaGVzZSBhcmUgb3V0cHV0IGJ5IHRwdXRzICgpLiAqLwotIGNoYXIgKl9ybF90ZXJtX2NscmVv bDsKLUBAIC0xMjIsOSArMTM2LDcgQEAgY2hhciAqX3JsX3Rlcm1fSUM7Ci0gY2hhciAqX3JsX3Rl cm1fZGM7Ci0gY2hhciAqX3JsX3Rlcm1fREM7Ci0gCi0tI2lmIGRlZmluZWQgKEhBQ0tfVEVSTUNB UF9NT1RJT04pCi0gY2hhciAqX3JsX3Rlcm1fZm9yd2FyZF9jaGFyOwotLSNlbmRpZiAgLyogSEFD S19URVJNQ0FQX01PVElPTiAqLwotIAotIC8qIEhvdyB0byBnbyB1cCBhIGxpbmUuICovCi0gY2hh ciAqX3JsX3Rlcm1fdXA7Ci1AQCAtMTk1LDYgKzIwNywyNiBAQCBfZW14X2dldF9zY3JlZW5zaXpl IChzd3AsIHNocCkKLSB9Ci0gI2VuZGlmCi0gCi0rI2lmIGRlZmluZWQgKF9fTUlOR1czMl9fKQot K3N0YXRpYyB2b2lkCi0rX3dpbl9nZXRfc2NyZWVuc2l6ZSAoc3dwLCBzaHApCi0rICAgICBpbnQg KnN3cCwgKnNocDsKLSt7Ci0rICBIQU5ETEUgaENvbk91dDsKLSsgIENPTlNPTEVfU0NSRUVOX0JV RkZFUl9JTkZPIHNjcjsKLSsKLSsgIGhDb25PdXQgPSBHZXRTdGRIYW5kbGUgKFNURF9PVVRQVVRf SEFORExFKTsKLSsgIGlmIChoQ29uT3V0ICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQotKyAgICB7 Ci0rICAgICAgaWYgKEdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvIChoQ29uT3V0LCAmc2NyKSkK LSsJewotKwkgICpzd3AgPSBzY3IuZHdTaXplLlg7Ci0rCSAgKnNocCA9IHNjci5zcldpbmRvdy5C b3R0b20gLSBzY3Iuc3JXaW5kb3cuVG9wICsgMTsKLSsJfQotKyAgICB9Ci0rfQotKyNlbmRpZgot KwotIC8qIEdldCByZWFkbGluZSdzIGlkZWEgb2YgdGhlIHNjcmVlbiBzaXplLiAgVFRZIGlzIGEg ZmlsZSBkZXNjcmlwdG9yIG9wZW4KLSAgICB0byB0aGUgdGVybWluYWwuICBJZiBJR05PUkVfRU5W IGlzIHRydWUsIHdlIGRvIG5vdCBwYXkgYXR0ZW50aW9uIHRvIHRoZQotICAgIHZhbHVlcyBvZiAk TElORVMgYW5kICRDT0xVTU5TLiAgVGhlIHRlc3RzIGZvciBURVJNX1NUUklOR19CVUZGRVIgYmVp bmcKLUBAIC0yMzMsNyArMjY1LDkgQEAgX3JsX2dldF9zY3JlZW5fc2l6ZSAodHR5LCBpZ25vcmVf ZW52KQotICNlbmRpZgotIAotICNpZiBkZWZpbmVkIChfX0VNWF9fKQotLSAgX2VteF9nZXRfc2Ny ZWVuc2l6ZSAoJl9ybF9zY3JlZW53aWR0aCwgJl9ybF9zY3JlZW5oZWlnaHQpOwotKyAgX2VteF9n ZXRfc2NyZWVuc2l6ZSAoJndjLCAmd3IpOwotKyNlbGlmIGRlZmluZWQgKF9fTUlOR1czMl9fKQot KyAgX3dpbl9nZXRfc2NyZWVuc2l6ZSAoJndjLCAmd3IpOwotICNlbmRpZgotIAotICAgaWYgKGln bm9yZV9lbnYgfHwgcmxfcHJlZmVyX2Vudl93aW5zaXplID09IDApCi1AQCAtMzQ3LDI0ICszODEs MjQgQEAgcmxfcmVzZXRfc2NyZWVuX3NpemUgKCkKLSB2b2lkCi0gcmxfcmVzaXplX3Rlcm1pbmFs ICgpCi0gewotLSAgaWYgKHJlYWRsaW5lX2VjaG9pbmdfcCkKLSsgIF9ybF9nZXRfc2NyZWVuX3Np emUgKGZpbGVubyAocmxfaW5zdHJlYW0pLCAxKTsKLSsgIGlmIChfcmxfZWNob2luZ19wKQotICAg ICB7Ci0tICAgICAgX3JsX2dldF9zY3JlZW5fc2l6ZSAoZmlsZW5vIChybF9pbnN0cmVhbSksIDEp OwotICAgICAgIGlmIChDVVNUT01fUkVESVNQTEFZX0ZVTkMgKCkpCi0gCXJsX2ZvcmNlZF91cGRh dGVfZGlzcGxheSAoKTsKLS0gICAgICBlbHNlCi0rICAgICAgZWxzZSBpZiAoUkxfSVNTVEFURShS TF9TVEFURV9SRURJU1BMQVlJTkcpID09IDApCi0gCV9ybF9yZWRpc3BsYXlfYWZ0ZXJfc2lnd2lu Y2ggKCk7Ci0gICAgIH0KLSB9Ci0gCi0gc3RydWN0IF90Y19zdHJpbmcgewotLSAgICAgY29uc3Qg Y2hhciAqdGNfdmFyOwotKyAgICAgY29uc3QgY2hhciAqIGNvbnN0IHRjX3ZhcjsKLSAgICAgIGNo YXIgKip0Y192YWx1ZTsKLSB9OwotIAotIC8qIFRoaXMgc2hvdWxkIGJlIGtlcHQgc29ydGVkLCBq dXN0IGluIGNhc2Ugd2UgZGVjaWRlIHRvIGNoYW5nZSB0aGUKLSAgICBzZWFyY2ggYWxnb3JpdGht IHRvIHNvbWV0aGluZyBzbWFydGVyLiAqLwotLXN0YXRpYyBzdHJ1Y3QgX3RjX3N0cmluZyB0Y19z dHJpbmdzW10gPQotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgX3RjX3N0cmluZyB0Y19zdHJpbmdzW10g PQotIHsKLSAgIHsgIkA3IiwgJl9ybF90ZXJtX2F0NyB9LAotICAgeyAiREMiLCAmX3JsX3Rlcm1f REMgfSwKLUBAIC0zODksOSArNDIzLDcgQEAgc3RhdGljIHN0cnVjdCBfdGNfc3RyaW5nIHRjX3N0 cmluZ3NbXSA9Ci0gICB7ICJsZSIsICZfcmxfdGVybV9iYWNrc3BhY2UgfSwKLSAgIHsgIm1tIiwg Jl9ybF90ZXJtX21tIH0sCi0gICB7ICJtbyIsICZfcmxfdGVybV9tbyB9LAotLSNpZiBkZWZpbmVk IChIQUNLX1RFUk1DQVBfTU9USU9OKQotICAgeyAibmQiLCAmX3JsX3Rlcm1fZm9yd2FyZF9jaGFy IH0sCi0tI2VuZGlmCi0gICB7ICJwYyIsICZfcmxfdGVybV9wYyB9LAotICAgeyAidXAiLCAmX3Js X3Rlcm1fdXAgfSwKLSAgIHsgInZiIiwgJl9ybF92aXNpYmxlX2JlbGwgfSwKLUBAIC01MDUsOSAr NTM3LDcgQEAgX3JsX2luaXRfdGVybWluYWxfaW8gKHRlcm1pbmFsX25hbWUpCi0gICAgICAgX3Js X3Rlcm1fa3MgPSBfcmxfdGVybV9rZSA9IF9ybF90ZXJtX2F0NyA9IChjaGFyICopTlVMTDsKLSAg ICAgICBfcmxfdGVybV9tbSA9IF9ybF90ZXJtX21vID0gKGNoYXIgKilOVUxMOwotICAgICAgIF9y bF90ZXJtX3ZlID0gX3JsX3Rlcm1fdnMgPSAoY2hhciAqKU5VTEw7Ci0tI2lmIGRlZmluZWQgKEhB Q0tfVEVSTUNBUF9NT1RJT04pCi0tICAgICAgdGVybV9mb3J3YXJkX2NoYXIgPSAoY2hhciAqKU5V TEw7Ci0tI2VuZGlmCi0rICAgICAgX3JsX3Rlcm1fZm9yd2FyZF9jaGFyID0gKGNoYXIgKilOVUxM OwotICAgICAgIF9ybF90ZXJtaW5hbF9jYW5faW5zZXJ0ID0gdGVybV9oYXNfbWV0YSA9IDA7Ci0g Ci0gICAgICAgLyogUmVhc29uYWJsZSBkZWZhdWx0cyBmb3IgdGdvdG8oKS4gIFJlYWRsaW5lIGN1 cnJlbnRseSBvbmx5IHVzZXMKLUBAIC01NDYsOCArNTc2LDggQEAgX3JsX2luaXRfdGVybWluYWxf aW8gKHRlcm1pbmFsX25hbWUpCi0gCi0gICAvKiBDaGVjayB0byBzZWUgaWYgdGhpcyB0ZXJtaW5h bCBoYXMgYSBtZXRhIGtleSBhbmQgY2xlYXIgdGhlIGNhcGFiaWxpdHkKLSAgICAgIHZhcmlhYmxl cyBpZiB0aGVyZSBpcyBub25lLiAqLwotLSAgdGVybV9oYXNfbWV0YSA9ICh0Z2V0ZmxhZyAoImtt IikgfHwgdGdldGZsYWcgKCJNVCIpKTsKLS0gIGlmICghdGVybV9oYXNfbWV0YSkKLSsgIHRlcm1f aGFzX21ldGEgPSB0Z2V0ZmxhZyAoImttIikgIT0gMDsKLSsgIGlmICh0ZXJtX2hhc19tZXRhID09 IDApCi0gICAgIF9ybF90ZXJtX21tID0gX3JsX3Rlcm1fbW8gPSAoY2hhciAqKU5VTEw7Ci0gCi0g I2VuZGlmIC8qICFfX01TRE9TX18gKi8KLUBAIC02NjMsMTAgKzY5MywxMCBAQCBfcmxfYmFja3Nw YWNlIChjb3VudCkKLSBpbnQKLSBybF9jcmxmICgpCi0gewotLSNpZiBkZWZpbmVkIChORVdfVFRZ X0RSSVZFUikKLSsjaWYgZGVmaW5lZCAoTkVXX1RUWV9EUklWRVIpIHx8IGRlZmluZWQgKF9fTUlO VF9fKQotICAgaWYgKF9ybF90ZXJtX2NyKQotICAgICB0cHV0cyAoX3JsX3Rlcm1fY3IsIDEsIF9y bF9vdXRwdXRfY2hhcmFjdGVyX2Z1bmN0aW9uKTsKLS0jZW5kaWYgLyogTkVXX1RUWV9EUklWRVIg Ki8KLSsjZW5kaWYgLyogTkVXX1RUWV9EUklWRVIgfHwgX19NSU5UX18gKi8KLSAgIHB1dGMgKCdc bicsIF9ybF9vdXRfc3RyZWFtKTsKLSAgIHJldHVybiAwOwotIH0KLUBAIC02NzUsNyArNzA1LDcg QEAgcmxfY3JsZiAoKQotIGludAotIHJsX2RpbmcgKCkKLSB7Ci0tICBpZiAocmVhZGxpbmVfZWNo b2luZ19wKQotKyAgaWYgKF9ybF9lY2hvaW5nX3ApCi0gICAgIHsKLSAgICAgICBzd2l0Y2ggKF9y bF9iZWxsX3ByZWZlcmVuY2UpCi0gICAgICAgICB7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9yZWFkbGluZS90ZXh0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9y aWcvcmVhZGxpbmUvdGV4dC5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS90ZXh0LmMJMjAxMS0wNy0wMyAxMDo0MToy MS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDI0ICsxLDI0IEBACi0gLyogdGV4dC5jIC0tIHRleHQg aGFuZGxpbmcgY29tbWFuZHMgZm9yIHJlYWRsaW5lLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykg MTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAo QykgMTk4Ny0yMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgot LSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0 b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBM aWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRl eHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAot LSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5l IGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9m IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlz IGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYg eW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMw LCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGgg UmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0r Ki8KLSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9D T05GSUdfSCkKLUBAIC02Nyw2ICs2NywxMCBAQCBzdGF0aWMgaW50IF9ybF9pbnNlcnRfbmV4dF9j YWxsYmFjayBQQVJBCi0gc3RhdGljIGludCBfcmxfY2hhcl9zZWFyY2hfY2FsbGJhY2sgUEFSQU1T KChfcmxfY2FsbGJhY2tfZ2VuZXJpY19hcmcgKikpOwotICNlbmRpZgotIAotKy8qIFRoZSBsYXJn ZXN0IGNodW5rIG9mIHRleHQgdGhhdCBjYW4gYmUgaW5zZXJ0ZWQgaW4gb25lIGNhbGwgdG8KLSsg ICBybF9pbnNlcnRfdGV4dC4gIFRleHQgYmxvY2tzIGxhcmdlciB0aGFuIHRoaXMgYXJlIGRpdmlk ZWQuICovCi0rI2RlZmluZSBURVhUX0NPVU5UX01BWAkxMDI0Ci0rCi0gLyogKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwot IC8qCQkJCQkJCQkgICAgKi8KLSAvKgkJCUluc2VydCBhbmQgRGVsZXRlCQkJICAgICovCi1AQCAt MTQ2LDcgKzE1MCw3IEBAIHJsX2RlbGV0ZV90ZXh0IChmcm9tLCB0bykKLSAgIGlmIChfcmxfZG9p bmdfYW5fdW5kbyA9PSAwKQotICAgICBybF9hZGRfdW5kbyAoVU5ET19ERUxFVEUsIGZyb20sIHRv LCB0ZXh0KTsKLSAgIGVsc2UKLS0gICAgZnJlZSAodGV4dCk7Ci0rICAgIHhmcmVlICh0ZXh0KTsK LSAKLSAgIHJsX2VuZCAtPSBkaWZmOwotICAgcmxfbGluZV9idWZmZXJbcmxfZW5kXSA9ICdcMCc7 Ci1AQCAtMTg1LDEwICsxODksMTMgQEAgX3JsX3JlcGxhY2VfdGV4dCAodGV4dCwgc3RhcnQsIGVu ZCkKLSB7Ci0gICBpbnQgbjsKLSAKLSsgIG4gPSAwOwotICAgcmxfYmVnaW5fdW5kb19ncm91cCAo KTsKLS0gIHJsX2RlbGV0ZV90ZXh0IChzdGFydCwgZW5kICsgMSk7Ci0rICBpZiAoc3RhcnQgPD0g ZW5kKQotKyAgICBybF9kZWxldGVfdGV4dCAoc3RhcnQsIGVuZCArIDEpOwotICAgcmxfcG9pbnQg PSBzdGFydDsKLS0gIG4gPSBybF9pbnNlcnRfdGV4dCAodGV4dCk7Ci0rICBpZiAoKnRleHQpCi0r ICAgIG4gPSBybF9pbnNlcnRfdGV4dCAodGV4dCk7Ci0gICBybF9lbmRfdW5kb19ncm91cCAoKTsK LSAKLSAgIHJldHVybiBuOwotQEAgLTI1OCwxMSArMjY1LDEzIEBAIHJsX2ZvcndhcmRfYnl0ZSAo Y291bnQsIGtleSkKLSAKLSAgIGlmIChjb3VudCA+IDApCi0gICAgIHsKLS0gICAgICBpbnQgZW5k ID0gcmxfcG9pbnQgKyBjb3VudDsKLSsgICAgICBpbnQgZW5kLCBsZW5kOwotKwotKyAgICAgIGVu ZCA9IHJsX3BvaW50ICsgY291bnQ7Ci0gI2lmIGRlZmluZWQgKFZJX01PREUpCi0tICAgICAgaW50 IGxlbmQgPSBybF9lbmQgPiAwID8gcmxfZW5kIC0gKHJsX2VkaXRpbmdfbW9kZSA9PSB2aV9tb2Rl KSA6IHJsX2VuZDsKLSsgICAgICBsZW5kID0gcmxfZW5kID4gMCA/IHJsX2VuZCAtIChWSV9DT01N QU5EX01PREUoKSkgOiBybF9lbmQ7Ci0gI2Vsc2UKLS0gICAgICBpbnQgbGVuZCA9IHJsX2VuZDsK LSsgICAgICBsZW5kID0gcmxfZW5kOwotICNlbmRpZgotIAotICAgICAgIGlmIChlbmQgPiBsZW5k KQotQEAgLTI4MCw2ICsyODksMzEgQEAgcmxfZm9yd2FyZF9ieXRlIChjb3VudCwga2V5KQotICAg cmV0dXJuIDA7Ci0gfQotIAotK2ludAotK19ybF9mb3J3YXJkX2NoYXJfaW50ZXJuYWwgKGNvdW50 KQotKyAgICAgaW50IGNvdW50OwotK3sKLSsgIGludCBwb2ludDsKLSsKLSsjaWYgZGVmaW5lZCAo SEFORExFX01VTFRJQllURSkKLSsgIHBvaW50ID0gX3JsX2ZpbmRfbmV4dF9tYmNoYXIgKHJsX2xp bmVfYnVmZmVyLCBybF9wb2ludCwgY291bnQsIE1CX0ZJTkRfTk9OWkVSTyk7Ci0rCi0rI2lmIGRl ZmluZWQgKFZJX01PREUpCi0rICBpZiAocG9pbnQgPj0gcmxfZW5kICYmIFZJX0NPTU1BTkRfTU9E RSgpKQotKyAgICBwb2ludCA9IF9ybF9maW5kX3ByZXZfbWJjaGFyIChybF9saW5lX2J1ZmZlciwg cmxfZW5kLCBNQl9GSU5EX05PTlpFUk8pOwotKyNlbmRpZgotKwotKyAgICBpZiAocmxfZW5kIDwg MCkKLSsJcmxfZW5kID0gMDsKLSsjZWxzZQotKyAgcG9pbnQgPSBybF9wb2ludCArIGNvdW50Owot KyAgaWYgKHBvaW50ID4gcmxfZW5kKQotKyAgICBwb2ludCA9IHJsX2VuZDsKLSsjZW5kaWYKLSsK LSsgIHJldHVybiAocG9pbnQpOwotK30KLSsKLSAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllU RSkKLSAvKiBNb3ZlIGZvcndhcmQgQ09VTlQgY2hhcmFjdGVycy4gKi8KLSBpbnQKLUBAIC0yOTYs MjAgKzMzMCwxOCBAQCBybF9mb3J3YXJkX2NoYXIgKGNvdW50LCBrZXkpCi0gCi0gICBpZiAoY291 bnQgPiAwKQotICAgICB7Ci0tICAgICAgcG9pbnQgPSBfcmxfZmluZF9uZXh0X21iY2hhciAocmxf bGluZV9idWZmZXIsIHJsX3BvaW50LCBjb3VudCwgTUJfRklORF9OT05aRVJPKTsKLSsgICAgICBp ZiAocmxfcG9pbnQgPT0gcmxfZW5kICYmIEVNQUNTX01PREUoKSkKLSsJewotKwkgIHJsX2Rpbmcg KCk7Ci0rCSAgcmV0dXJuIDA7Ci0rCX0KLSAKLS0jaWYgZGVmaW5lZCAoVklfTU9ERSkKLS0gICAg ICBpZiAocmxfZW5kIDw9IHBvaW50ICYmIHJsX2VkaXRpbmdfbW9kZSA9PSB2aV9tb2RlKQotLQlw b2ludCA9IF9ybF9maW5kX3ByZXZfbWJjaGFyIChybF9saW5lX2J1ZmZlciwgcmxfZW5kLCBNQl9G SU5EX05PTlpFUk8pOwotLSNlbmRpZgotKyAgICAgIHBvaW50ID0gX3JsX2ZvcndhcmRfY2hhcl9p bnRlcm5hbCAoY291bnQpOwotIAotICAgICAgIGlmIChybF9wb2ludCA9PSBwb2ludCkKLSAJcmxf ZGluZyAoKTsKLSAKLSAgICAgICBybF9wb2ludCA9IHBvaW50OwotLQotLSAgICAgIGlmIChybF9l bmQgPCAwKQotLQlybF9lbmQgPSAwOwotICAgICB9Ci0gCi0gICByZXR1cm4gMDsKLUBAIC01NjUs NiArNTk3LDIxIEBAIHJsX2NsZWFyX3NjcmVlbiAoY291bnQsIGtleSkKLSB9Ci0gCi0gaW50Ci0r cmxfc2tpcF9jc2lfc2VxdWVuY2UgKGNvdW50LCBrZXkpCi0rICAgICBpbnQgY291bnQsIGtleTsK LSt7Ci0rICBpbnQgY2g7Ci0rCi0rICBSTF9TRVRTVEFURSAoUkxfU1RBVEVfTU9SRUlOUFVUKTsK LSsgIGRvCi0rICAgIGNoID0gcmxfcmVhZF9rZXkgKCk7Ci0rICB3aGlsZSAoY2ggPj0gMHgyMCAm JiBjaCA8IDB4NDApOwotKyAgUkxfVU5TRVRTVEFURSAoUkxfU1RBVEVfTU9SRUlOUFVUKTsKLSsK LSsgIHJldHVybiAwOwotK30KLSsKLStpbnQKLSBybF9hcnJvd19rZXlzIChjb3VudCwgYykKLSAg ICAgIGludCBjb3VudCwgYzsKLSB7Ci1AQCAtNzAxLDcgKzc0OCw3IEBAIF9ybF9pbnNlcnRfY2hh ciAoY291bnQsIGMpCi0gCSAgCi0gICAvKiBJZiB3ZSBjYW4gb3B0aW1pemUsIHRoZW4gZG8gaXQu ICBCdXQgZG9uJ3QgbGV0IHBlb3BsZSBjcmFzaAotICAgICAgcmVhZGxpbmUgYmVjYXVzZSBvZiBl eHRyYSBsYXJnZSBhcmd1bWVudHMuICovCi0tICBpZiAoY291bnQgPiAxICYmIGNvdW50IDw9IDEw MjQpCi0rICBpZiAoY291bnQgPiAxICYmIGNvdW50IDw9IFRFWFRfQ09VTlRfTUFYKQotICAgICB7 Ci0gI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0gICAgICAgc3RyaW5nX3NpemUgPSBj b3VudCAqIGluY29taW5nX2xlbmd0aDsKLUBAIC03MjQsMTYgKzc3MSwxNiBAQCBfcmxfaW5zZXJ0 X2NoYXIgKGNvdW50LCBjKQotIAotICAgICAgIHN0cmluZ1tpXSA9ICdcMCc7Ci0gICAgICAgcmxf aW5zZXJ0X3RleHQgKHN0cmluZyk7Ci0tICAgICAgZnJlZSAoc3RyaW5nKTsKLSsgICAgICB4ZnJl ZSAoc3RyaW5nKTsKLSAKLSAgICAgICByZXR1cm4gMDsKLSAgICAgfQotIAotLSAgaWYgKGNvdW50 ID4gMTAyNCkKLSsgIGlmIChjb3VudCA+IFRFWFRfQ09VTlRfTUFYKQotICAgICB7Ci0gICAgICAg aW50IGRlY3JlYXNlcjsKLSAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKLS0gICAgICBz dHJpbmdfc2l6ZSA9IGluY29taW5nX2xlbmd0aCAqIDEwMjQ7Ci0rICAgICAgc3RyaW5nX3NpemUg PSBpbmNvbWluZ19sZW5ndGggKiBURVhUX0NPVU5UX01BWDsKLSAgICAgICBzdHJpbmcgPSAoY2hh ciAqKXhtYWxsb2MgKDEgKyBzdHJpbmdfc2l6ZSk7Ci0gCi0gICAgICAgaSA9IDA7Ci1AQCAtNzQ1 LDI0ICs3OTIsMjQgQEAgX3JsX2luc2VydF9jaGFyIChjb3VudCwgYykKLSAKLSAgICAgICB3aGls ZSAoY291bnQpCi0gCXsKLS0JICBkZWNyZWFzZXIgPSAoY291bnQgPiAxMDI0KSA/IDEwMjQgOiBj b3VudDsKLSsJICBkZWNyZWFzZXIgPSAoY291bnQgPiBURVhUX0NPVU5UX01BWCkgPyBURVhUX0NP VU5UX01BWCA6IGNvdW50OwotIAkgIHN0cmluZ1tkZWNyZWFzZXIqaW5jb21pbmdfbGVuZ3RoXSA9 ICdcMCc7Ci0gCSAgcmxfaW5zZXJ0X3RleHQgKHN0cmluZyk7Ci0gCSAgY291bnQgLT0gZGVjcmVh c2VyOwotIAl9Ci0gCi0tICAgICAgZnJlZSAoc3RyaW5nKTsKLSsgICAgICB4ZnJlZSAoc3RyaW5n KTsKLSAgICAgICBpbmNvbWluZ19sZW5ndGggPSAwOwotICAgICAgIHN0b3JlZF9jb3VudCA9IDA7 Ci0gI2Vsc2UgLyogIUhBTkRMRV9NVUxUSUJZVEUgKi8KLS0gICAgICBjaGFyIHN0clsxMDI0KzFd OwotKyAgICAgIGNoYXIgc3RyW1RFWFRfQ09VTlRfTUFYKzFdOwotIAotLSAgICAgIGZvciAoaSA9 IDA7IGkgPCAxMDI0OyBpKyspCi0rICAgICAgZm9yIChpID0gMDsgaSA8IFRFWFRfQ09VTlRfTUFY OyBpKyspCi0gCXN0cltpXSA9IGM7Ci0gCi0gICAgICAgd2hpbGUgKGNvdW50KQotIAl7Ci0tCSAg ZGVjcmVhc2VyID0gKGNvdW50ID4gMTAyNCA/IDEwMjQgOiBjb3VudCk7Ci0rCSAgZGVjcmVhc2Vy ID0gKGNvdW50ID4gVEVYVF9DT1VOVF9NQVggPyBURVhUX0NPVU5UX01BWCA6IGNvdW50KTsKLSAJ ICBzdHJbZGVjcmVhc2VyXSA9ICdcMCc7Ci0gCSAgcmxfaW5zZXJ0X3RleHQgKHN0cik7Ci0gCSAg Y291bnQgLT0gZGVjcmVhc2VyOwotQEAgLTc3Nyw4ICs4MjQsOSBAQCBfcmxfaW5zZXJ0X2NoYXIg KGNvdW50LCBjKQotICAgICAgIC8qIFdlIGFyZSBpbnNlcnRpbmcgYSBzaW5nbGUgY2hhcmFjdGVy LgotIAkgSWYgdGhlcmUgaXMgcGVuZGluZyBpbnB1dCwgdGhlbiBtYWtlIGEgc3RyaW5nIG9mIGFs bCBvZiB0aGUKLSAJIHBlbmRpbmcgY2hhcmFjdGVycyB0aGF0IGFyZSBib3VuZCB0byBybF9pbnNl cnQsIGFuZCBpbnNlcnQKLS0JIHRoZW0gYWxsLiAqLwotLSAgICAgIGlmIChfcmxfYW55X3R5cGVp biAoKSkKLSsJIHRoZW0gYWxsLiAgRG9uJ3QgZG8gdGhpcyBpZiB3ZSdyZSBjdXJyZW50IHJlYWRp bmcgaW5wdXQgZnJvbQotKwkgYSBtYWNyby4gKi8KLSsgICAgICBpZiAoKFJMX0lTU1RBVEUgKFJM X1NUQVRFX01BQ1JPSU5QVVQpID09IDApICYmIF9ybF9hbnlfdHlwZWluICgpKQotIAlfcmxfaW5z ZXJ0X3R5cGVpbiAoYyk7Ci0gICAgICAgZWxzZQotIAl7Ci1AQCAtODU3LDYgKzkwNSw5IEBAIF9y bF9pbnNlcnRfbmV4dCAoY291bnQpCi0gICBjID0gcmxfcmVhZF9rZXkgKCk7Ci0gICBSTF9VTlNF VFNUQVRFKFJMX1NUQVRFX01PUkVJTlBVVCk7Ci0gCi0rICBpZiAoYyA8IDApCi0rICAgIHJldHVy biAtMTsKLSsKLSAjaWYgZGVmaW5lZCAoSEFORExFX1NJR05BTFMpCi0gICBpZiAoUkxfSVNTVEFU RSAoUkxfU1RBVEVfQ0FMTEJBQ0spID09IDApCi0gICAgIF9ybF9yZXN0b3JlX3R0eV9zaWduYWxz ICgpOwotQEAgLTk0MCw3ICs5OTEsNyBAQCBybF9uZXdsaW5lIChjb3VudCwga2V5KQotICAgaWYg KHJsX2VyYXNlX2VtcHR5X2xpbmUgJiYgcmxfcG9pbnQgPT0gMCAmJiBybF9lbmQgPT0gMCkKLSAg ICAgcmV0dXJuIDA7Ci0gCi0tICBpZiAocmVhZGxpbmVfZWNob2luZ19wKQotKyAgaWYgKF9ybF9l Y2hvaW5nX3ApCi0gICAgIF9ybF91cGRhdGVfZmluYWwgKCk7Ci0gICByZXR1cm4gMDsKLSB9Ci1A QCAtMTA3MSw2ICsxMTIyLDggQEAgaW50Ci0gcmxfZGVsZXRlIChjb3VudCwga2V5KQotICAgICAg aW50IGNvdW50LCBrZXk7Ci0gewotKyAgaW50IHhwb2ludDsKLSsKLSAgIGlmIChjb3VudCA8IDAp Ci0gICAgIHJldHVybiAoX3JsX3J1Ym91dF9jaGFyICgtY291bnQsIGtleSkpOwotIAotQEAgLTEw ODIsMjEgKzExMzUsMTkgQEAgcmxfZGVsZXRlIChjb3VudCwga2V5KQotIAotICAgaWYgKGNvdW50 ID4gMSB8fCBybF9leHBsaWNpdF9hcmcpCi0gICAgIHsKLS0gICAgICBpbnQgb3JpZ19wb2ludCA9 IHJsX3BvaW50OwotKyAgICAgIHhwb2ludCA9IHJsX3BvaW50OwotICAgICAgIGlmIChNQl9DVVJf TUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCi0gCXJsX2ZvcndhcmRfY2hhciAoY291 bnQsIGtleSk7Ci0gICAgICAgZWxzZQotIAlybF9mb3J3YXJkX2J5dGUgKGNvdW50LCBrZXkpOwot IAotLSAgICAgIHJsX2tpbGxfdGV4dCAob3JpZ19wb2ludCwgcmxfcG9pbnQpOwotLSAgICAgIHJs X3BvaW50ID0gb3JpZ19wb2ludDsKLSsgICAgICBybF9raWxsX3RleHQgKHhwb2ludCwgcmxfcG9p bnQpOwotKyAgICAgIHJsX3BvaW50ID0geHBvaW50OwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsK LS0gICAgICBpbnQgbmV3X3BvaW50OwotLQotLSAgICAgIG5ld19wb2ludCA9IE1CX05FWFRDSEFS IChybF9saW5lX2J1ZmZlciwgcmxfcG9pbnQsIDEsIE1CX0ZJTkRfTk9OWkVSTyk7Ci0tICAgICAg cmxfZGVsZXRlX3RleHQgKHJsX3BvaW50LCBuZXdfcG9pbnQpOwotKyAgICAgIHhwb2ludCA9IE1C X05FWFRDSEFSIChybF9saW5lX2J1ZmZlciwgcmxfcG9pbnQsIDEsIE1CX0ZJTkRfTk9OWkVSTyk7 Ci0rICAgICAgcmxfZGVsZXRlX3RleHQgKHJsX3BvaW50LCB4cG9pbnQpOwotICAgICB9Ci0gICBy ZXR1cm4gMDsKLSB9Ci1AQCAtMTEyMCw3ICsxMTcxLDcgQEAgaW50Ci0gcmxfZGVsZXRlX2hvcml6 b250YWxfc3BhY2UgKGNvdW50LCBpZ25vcmUpCi0gICAgICBpbnQgY291bnQsIGlnbm9yZTsKLSB7 Ci0tICBpbnQgc3RhcnQgPSBybF9wb2ludDsKLSsgIGludCBzdGFydDsKLSAKLSAgIHdoaWxlIChy bF9wb2ludCAmJiB3aGl0ZXNwYWNlIChybF9saW5lX2J1ZmZlcltybF9wb2ludCAtIDFdKSkKLSAg ICAgcmxfcG9pbnQtLTsKLUBAIC0xMjM3LDggKzEyODgsOSBAQCBybF9jaGFuZ2VfY2FzZSAoY291 bnQsIG9wKQotICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotICAgd2NoYXJfdCB3Yywg bndjOwotICAgY2hhciBtYltNQl9MRU5fTUFYKzFdOwotLSAgaW50IG1ibGVuLCBwOwotLSAgbWJz dGF0ZV90IHBzOwotKyAgaW50IG1sZW47Ci0rICBzaXplX3QgbTsKLSsgIG1ic3RhdGVfdCBtcHM7 Ci0gI2VuZGlmCi0gCi0gICBzdGFydCA9IHJsX3BvaW50OwotQEAgLTEyNTUsNyArMTMwNyw3IEBA IHJsX2NoYW5nZV9jYXNlIChjb3VudCwgb3ApCi0gICAgIFNXQVAgKHN0YXJ0LCBlbmQpOwotIAot ICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotLSAgbWVtc2V0ICgmcHMsIDAsIHNpemVv ZiAobWJzdGF0ZV90KSk7Ci0rICBtZW1zZXQgKCZtcHMsIDAsIHNpemVvZiAobWJzdGF0ZV90KSk7 Ci0gI2VuZGlmCi0gCi0gICAvKiBXZSBhcmUgZ29pbmcgdG8gbW9kaWZ5IHNvbWUgdGV4dCwgc28g bGV0J3MgcHJlcGFyZSB0byB1bmRvIGl0LiAqLwotQEAgLTEyOTAsMTUgKzEzNDIsMTkgQEAgcmxf Y2hhbmdlX2Nhc2UgKGNvdW50LCBvcCkKLSAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkK LSAgICAgICBlbHNlCi0gCXsKLS0JICBtYnJ0b3djICgmd2MsIHJsX2xpbmVfYnVmZmVyICsgc3Rh cnQsIGVuZCAtIHN0YXJ0LCAmcHMpOwotKwkgIG0gPSBtYnJ0b3djICgmd2MsIHJsX2xpbmVfYnVm ZmVyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCAmbXBzKTsKLSsJICBpZiAoTUJfSU5WQUxJRENIICht KSkKLSsJICAgIHdjID0gKHdjaGFyX3QpcmxfbGluZV9idWZmZXJbc3RhcnRdOwotKwkgIGVsc2Ug aWYgKE1CX05VTExXQ0ggKG0pKQotKwkgICAgd2MgPSBMJ1wwJzsKLSAJICBud2MgPSAobm9wID09 IFVwQ2FzZSkgPyBfcmxfdG9fd3VwcGVyICh3YykgOiBfcmxfdG9fd2xvd2VyICh3Yyk7Ci0gCSAg aWYgIChud2MgIT0gd2MpCS8qICBqdXN0IHNraXAgdW5jaGFuZ2VkIGNoYXJhY3RlcnMgKi8KLSAJ ICAgIHsKLS0JICAgICAgbWJsZW4gPSB3Y3J0b21iIChtYiwgbndjLCAmcHMpOwotLQkgICAgICBp ZiAobWJsZW4gPiAwKQotLQkJbWJbbWJsZW5dID0gJ1wwJzsKLSsJICAgICAgbWxlbiA9IHdjcnRv bWIgKG1iLCBud2MsICZtcHMpOwotKwkgICAgICBpZiAobWxlbiA+IDApCi0rCQltYlttbGVuXSA9 ICdcMCc7Ci0gCSAgICAgIC8qIEFzc3VtZSB0aGUgc2FtZSB3aWR0aCAqLwotLQkgICAgICBzdHJu Y3B5IChybF9saW5lX2J1ZmZlciArIHN0YXJ0LCBtYiwgbWJsZW4pOwotKwkgICAgICBzdHJuY3B5 IChybF9saW5lX2J1ZmZlciArIHN0YXJ0LCBtYiwgbWxlbik7Ci0gCSAgICB9Ci0gCX0KLSAjZW5k aWYKLUBAIC0xMzcxLDggKzE0MjcsOCBAQCBybF90cmFuc3Bvc2Vfd29yZHMgKGNvdW50LCBrZXkp Ci0gCi0gICAvKiBJIHRoaW5rIHRoYXQgZG9lcyBpdC4gKi8KLSAgIHJsX2VuZF91bmRvX2dyb3Vw ICgpOwotLSAgZnJlZSAod29yZDEpOwotLSAgZnJlZSAod29yZDIpOwotKyAgeGZyZWUgKHdvcmQx KTsKLSsgIHhmcmVlICh3b3JkMik7Ci0gCi0gICByZXR1cm4gMDsKLSB9Ci1AQCAtMTQzMSw3ICsx NDg3LDcgQEAgcmxfdHJhbnNwb3NlX2NoYXJzIChjb3VudCwga2V5KQotICAgcmxfZW5kX3VuZG9f Z3JvdXAgKCk7Ci0gCi0gI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0tICBmcmVlIChk dW1teSk7Ci0rICB4ZnJlZSAoZHVtbXkpOwotICNlbmRpZgotIAotICAgcmV0dXJuIDA7Ci1AQCAt MTQ1OSw2ICsxNTE1LDkgQEAgX3JsX2NoYXJfc2VhcmNoX2ludGVybmFsIChjb3VudCwgZGlyLCBz YwotICAgaW50IHByZXBvczsKLSAjZW5kaWYKLSAKLSsgIGlmIChkaXIgPT0gMCkKLSsgICAgcmV0 dXJuIC0xOwotKwotICAgcG9zID0gcmxfcG9pbnQ7Ci0gICBpbmMgPSAoZGlyIDwgMCkgPyAtMSA6 IDE7Ci0gICB3aGlsZSAoY291bnQpCi1AQCAtMTUyMCw2ICsxNTc5LDkgQEAgX3JsX2NoYXJfc2Vh cmNoIChjb3VudCwgZmRpciwgYmRpcikKLSAKLSAgIG1iX2xlbiA9IF9ybF9yZWFkX21iY2hhciAo bWJjaGFyLCBNQl9MRU5fTUFYKTsKLSAKLSsgIGlmIChtYl9sZW4gPD0gMCkKLSsgICAgcmV0dXJu IC0xOwotKwotICAgaWYgKGNvdW50IDwgMCkKLSAgICAgcmV0dXJuIChfcmxfY2hhcl9zZWFyY2hf aW50ZXJuYWwgKC1jb3VudCwgYmRpciwgbWJjaGFyLCBtYl9sZW4pKTsKLSAgIGVsc2UKLUBAIC0x NTM2LDYgKzE1OTgsOSBAQCBfcmxfY2hhcl9zZWFyY2ggKGNvdW50LCBmZGlyLCBiZGlyKQotICAg YyA9IHJsX3JlYWRfa2V5ICgpOwotICAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQp OwotIAotKyAgaWYgKGMgPCAwKQotKyAgICByZXR1cm4gLTE7Ci0rCi0gICBpZiAoY291bnQgPCAw KQotICAgICByZXR1cm4gKF9ybF9jaGFyX3NlYXJjaF9pbnRlcm5hbCAoLWNvdW50LCBiZGlyLCBj KSk7Ci0gICBlbHNlCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS90aWxkZS5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3RpbGRl LmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIw MTEwNzAzL3JlYWRsaW5lL3RpbGRlLmMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAy MDAKLUBAIC0xLDIzICsxLDIzIEBACi0gLyogdGlsZGUuYyAtLSBUaWxkZSBleHBhbnNpb24gY29k ZSAofi9mb28gOj0gJEhPTUUvZm9vKS4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5ODgsMTk4 OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5ODgt MjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMg cGFydCBvZiBHTlUgUmVhZGxpbmUsIGEgbGlicmFyeSBmb3IgcmVhZGluZyBsaW5lcwotLSAgIG9m IHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotKyAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBh IGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUg aW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSAKLS0gICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0tICAgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkgdGhlCi0tICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueQotLSAgIGxhdGVyIHZlcnNpb24uCi0tCi0tICAgUmVhZGxp bmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0 Ci0tICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0r ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBSZWFkbGluZSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0gCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIFJlYWRsaW5lOyBzZWUgdGhl IGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLS0gICBTb2Z0d2FyZSBG b3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBV U0EuICovCi0rICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19I KQotICMgIGluY2x1ZGUgPGNvbmZpZy5oPgotQEAgLTIzNiw3ICsyMzYsNyBAQCB0aWxkZV9leHBh bmQgKHN0cmluZykKLSAgICAgICBzdHJpbmcgKz0gZW5kOwotIAotICAgICAgIGV4cGFuc2lvbiA9 IHRpbGRlX2V4cGFuZF93b3JkICh0aWxkZV93b3JkKTsKLS0gICAgICBmcmVlICh0aWxkZV93b3Jk KTsKLSsgICAgICB4ZnJlZSAodGlsZGVfd29yZCk7Ci0gCi0gICAgICAgbGVuID0gc3RybGVuIChl eHBhbnNpb24pOwotICNpZmRlZiBfX0NZR1dJTl9fCi1AQCAtMjUxLDcgKzI1MSw3IEBAIHRpbGRl X2V4cGFuZCAoc3RyaW5nKQotIAkgIHN0cmNweSAocmVzdWx0ICsgcmVzdWx0X2luZGV4LCBleHBh bnNpb24pOwotIAkgIHJlc3VsdF9pbmRleCArPSBsZW47Ci0gCX0KLS0gICAgICBmcmVlIChleHBh bnNpb24pOwotKyAgICAgIHhmcmVlIChleHBhbnNpb24pOwotICAgICB9Ci0gCi0gICByZXN1bHRb cmVzdWx0X2luZGV4XSA9ICdcMCc7Ci1AQCAtMzc3LDggKzM3Nyw4IEBAIHRpbGRlX2V4cGFuZF93 b3JkIChmaWxlbmFtZSkKLSAgICAgICBpZiAoZXhwYW5zaW9uKQotIAl7Ci0gCSAgZGlybmFtZSA9 IGdsdWVfcHJlZml4X2FuZF9zdWZmaXggKGV4cGFuc2lvbiwgZmlsZW5hbWUsIHVzZXJfbGVuKTsK LS0JICBmcmVlICh1c2VybmFtZSk7Ci0tCSAgZnJlZSAoZXhwYW5zaW9uKTsKLSsJICB4ZnJlZSAo dXNlcm5hbWUpOwotKwkgIHhmcmVlIChleHBhbnNpb24pOwotIAkgIHJldHVybiAoZGlybmFtZSk7 Ci0gCX0KLSAgICAgfQotQEAgLTQwMSwxMCArNDAxLDkgQEAgdGlsZGVfZXhwYW5kX3dvcmQgKGZp bGVuYW1lKQotIAkgIGlmIChleHBhbnNpb24pCi0gCSAgICB7Ci0gCSAgICAgIGRpcm5hbWUgPSBn bHVlX3ByZWZpeF9hbmRfc3VmZml4IChleHBhbnNpb24sIGZpbGVuYW1lLCB1c2VyX2xlbik7Ci0t CSAgICAgIGZyZWUgKGV4cGFuc2lvbik7Ci0rCSAgICAgIHhmcmVlIChleHBhbnNpb24pOwotIAkg ICAgfQotIAl9Ci0tICAgICAgZnJlZSAodXNlcm5hbWUpOwotICAgICAgIC8qIElmIHdlIGRvbid0 IGhhdmUgYSBmYWlsdXJlIGhvb2ssIG9yIGlmIHRoZSBmYWlsdXJlIGhvb2sgZGlkIG5vdAotIAkg ZXhwYW5kIHRoZSB0aWxkZSwgcmV0dXJuIGEgY29weSBvZiB3aGF0IHdlIHdlcmUgcGFzc2VkLiAq LwotICAgICAgIGlmIChkaXJuYW1lID09IDApCi1AQCAtNDEyLDEwICs0MTEsMTEgQEAgdGlsZGVf ZXhwYW5kX3dvcmQgKGZpbGVuYW1lKQotICAgICB9Ci0gI2lmIGRlZmluZWQgKEhBVkVfR0VUUFdF TlQpCi0gICBlbHNlCi0tICAgIHsKLS0gICAgICBmcmVlICh1c2VybmFtZSk7Ci0tICAgICAgZGly bmFtZSA9IGdsdWVfcHJlZml4X2FuZF9zdWZmaXggKHVzZXJfZW50cnktPnB3X2RpciwgZmlsZW5h bWUsIHVzZXJfbGVuKTsKLS0gICAgfQotKyAgICBkaXJuYW1lID0gZ2x1ZV9wcmVmaXhfYW5kX3N1 ZmZpeCAodXNlcl9lbnRyeS0+cHdfZGlyLCBmaWxlbmFtZSwgdXNlcl9sZW4pOwotKyNlbmRpZgot KwotKyAgeGZyZWUgKHVzZXJuYW1lKTsKLSsjaWYgZGVmaW5lZCAoSEFWRV9HRVRQV0VOVCkKLSAg IGVuZHB3ZW50ICgpOwotICNlbmRpZgotICAgcmV0dXJuIChkaXJuYW1lKTsKLUluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3RpbGRlLmgKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvdGlsZGUuaAkyMDExLTA3LTAzIDEwOjQwOjUzLjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvdGlsZGUuaAky MDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjUgKzEsMjQgQEAKLSAv KiB0aWxkZS5oOiBFeHRlcm5hbGx5IGF2YWlsYWJsZSB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9uIGlu IGxpYnRpbGRlLmEuICovCi0gCi0tLyogQ29weXJpZ2h0IChDKSAxOTkyIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk5Mi0yMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgUmVhZGxp bmUgTGlicmFyeSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgotKyAgIFRoaXMgZmlsZSBjb250YWlu cyB0aGUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIHNldCBvZgotICAgIHJvdXRpbmVz IGZvciBwcm92aWRpbmcgRW1hY3Mgc3R5bGUgbGluZSBpbnB1dCB0byBwcm9ncmFtcyB0aGF0IGFz awotICAgIGZvciBpdC4KLSAKLS0gICBUaGUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgUmVhZGxpbmUgaXMgZnJlZSBz b2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g Miwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUg TGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCBidXQKLS0gICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLS0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0tCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlz IG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBr ZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAot LSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1B IDAyMTExIFVTQS4gKi8KLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgotKyovCi0gCi0gI2lmICFkZWZpbmVkIChfVElMREVfSF8pCi0gIyAgZGVmaW5l IF9USUxERV9IXwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvdW5kby5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3VuZG8uYwky MDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3 MDMvcmVhZGxpbmUvdW5kby5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1A QCAtMSwyNSArMSwyNSBAQAotIC8qIHJlYWRsaW5lLmMgLS0gYSBnZW5lcmFsIGZhY2lsaXR5IGZv ciByZWFkaW5nIGxpbmVzIG9mIGlucHV0Ci0gICAgd2l0aCBlbWFjcyBzdHlsZSBlZGl0aW5nIGFu ZCBjb21wbGV0aW9uLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk4NywgMTk4OSwgMTk5MiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0gICByZWFkaW5n IGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5n LgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVh ZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50 ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBUaGUgR05V IFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQKLS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNv ZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAg UmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBp cyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkg a2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QK LS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0rCi0gI2Rl ZmluZSBSRUFETElORV9MSUJSQVJZCi0gCi0gI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCi1A QCAtNTAsNiArNTAsOCBAQAotICNpbmNsdWRlICJybHByaXZhdGUuaCIKLSAjaW5jbHVkZSAieG1h bGxvYy5oIgotIAotK2V4dGVybiB2b2lkIHJlcGxhY2VfaGlzdG9yeV9kYXRhIFBBUkFNUygoaW50 LCBoaXN0ZGF0YV90ICosIGhpc3RkYXRhX3QgKikpOwotKwotIC8qIE5vbi16ZXJvIHRlbGxzIHJs X2RlbGV0ZV90ZXh0IGFuZCBybF9pbnNlcnRfdGV4dCB0byBub3QgYWRkIHRvCi0gICAgdGhlIHVu ZG8gbGlzdC4gKi8KLSBpbnQgX3JsX2RvaW5nX2FuX3VuZG8gPSAwOwotQEAgLTY2LDE5ICs2OCwz NSBAQCBVTkRPX0xJU1QgKnJsX3VuZG9fbGlzdCA9IChVTkRPX0xJU1QgKilOCi0gLyoJCQkJCQkJ CSAgICAqLwotIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiogKi8KLSAKLS0vKiBSZW1lbWJlciBob3cgdG8gdW5kbyBzb21l dGhpbmcuICBDb25jYXRlbmF0ZSBzb21lIHVuZG9zIGlmIHRoYXQKLS0gICBzZWVtcyByaWdodC4g Ki8KLS12b2lkCi0tcmxfYWRkX3VuZG8gKHdoYXQsIHN0YXJ0LCBlbmQsIHRleHQpCi0rc3RhdGlj IFVORE9fTElTVCAqCi0rYWxsb2NfdW5kb19lbnRyeSAod2hhdCwgc3RhcnQsIGVuZCwgdGV4dCkK LSAgICAgIGVudW0gdW5kb19jb2RlIHdoYXQ7Ci0gICAgICBpbnQgc3RhcnQsIGVuZDsKLSAgICAg IGNoYXIgKnRleHQ7Ci0gewotLSAgVU5ET19MSVNUICp0ZW1wID0gKFVORE9fTElTVCAqKXhtYWxs b2MgKHNpemVvZiAoVU5ET19MSVNUKSk7Ci0rICBVTkRPX0xJU1QgKnRlbXA7Ci0rCi0rICB0ZW1w ID0gKFVORE9fTElTVCAqKXhtYWxsb2MgKHNpemVvZiAoVU5ET19MSVNUKSk7Ci0gICB0ZW1wLT53 aGF0ID0gd2hhdDsKLSAgIHRlbXAtPnN0YXJ0ID0gc3RhcnQ7Ci0gICB0ZW1wLT5lbmQgPSBlbmQ7 Ci0gICB0ZW1wLT50ZXh0ID0gdGV4dDsKLSsKLSsgIHRlbXAtPm5leHQgPSAoVU5ET19MSVNUICop TlVMTDsKLSsgIHJldHVybiB0ZW1wOwotK30KLSsKLSsvKiBSZW1lbWJlciBob3cgdG8gdW5kbyBz b21ldGhpbmcuICBDb25jYXRlbmF0ZSBzb21lIHVuZG9zIGlmIHRoYXQKLSsgICBzZWVtcyByaWdo dC4gKi8KLSt2b2lkCi0rcmxfYWRkX3VuZG8gKHdoYXQsIHN0YXJ0LCBlbmQsIHRleHQpCi0rICAg ICBlbnVtIHVuZG9fY29kZSB3aGF0OwotKyAgICAgaW50IHN0YXJ0LCBlbmQ7Ci0rICAgICBjaGFy ICp0ZXh0OwotK3sKLSsgIFVORE9fTElTVCAqdGVtcDsKLSsKLSsgIHRlbXAgPSBhbGxvY191bmRv X2VudHJ5ICh3aGF0LCBzdGFydCwgZW5kLCB0ZXh0KTsKLSAgIHRlbXAtPm5leHQgPSBybF91bmRv X2xpc3Q7Ci0gICBybF91bmRvX2xpc3QgPSB0ZW1wOwotIH0KLUBAIC04NywxNyArMTA1LDYwIEBA IHJsX2FkZF91bmRvICh3aGF0LCBzdGFydCwgZW5kLCB0ZXh0KQotIHZvaWQKLSBybF9mcmVlX3Vu ZG9fbGlzdCAoKQotIHsKLSsgIFVORE9fTElTVCAqcmVsZWFzZSwgKm9yaWdfbGlzdDsKLSsKLSsg IG9yaWdfbGlzdCA9IHJsX3VuZG9fbGlzdDsKLSAgIHdoaWxlIChybF91bmRvX2xpc3QpCi0gICAg IHsKLS0gICAgICBVTkRPX0xJU1QgKnJlbGVhc2UgPSBybF91bmRvX2xpc3Q7Ci0rICAgICAgcmVs ZWFzZSA9IHJsX3VuZG9fbGlzdDsKLSAgICAgICBybF91bmRvX2xpc3QgPSBybF91bmRvX2xpc3Qt Pm5leHQ7Ci0gCi0gICAgICAgaWYgKHJlbGVhc2UtPndoYXQgPT0gVU5ET19ERUxFVEUpCi0tCWZy ZWUgKHJlbGVhc2UtPnRleHQpOwotKwl4ZnJlZSAocmVsZWFzZS0+dGV4dCk7Ci0gCi0tICAgICAg ZnJlZSAocmVsZWFzZSk7Ci0rICAgICAgeGZyZWUgKHJlbGVhc2UpOwotICAgICB9Ci0gICBybF91 bmRvX2xpc3QgPSAoVU5ET19MSVNUICopTlVMTDsKLSsgIHJlcGxhY2VfaGlzdG9yeV9kYXRhICgt MSwgKGhpc3RkYXRhX3QgKilvcmlnX2xpc3QsIChoaXN0ZGF0YV90ICopTlVMTCk7Ci0rfQotKwot K1VORE9fTElTVCAqCi0rX3JsX2NvcHlfdW5kb19lbnRyeSAoZW50cnkpCi0rICAgICBVTkRPX0xJ U1QgKmVudHJ5OwotK3sKLSsgIFVORE9fTElTVCAqbmV3OwotKwotKyAgbmV3ID0gYWxsb2NfdW5k b19lbnRyeSAoZW50cnktPndoYXQsIGVudHJ5LT5zdGFydCwgZW50cnktPmVuZCwgKGNoYXIgKilO VUxMKTsKLSsgIG5ldy0+dGV4dCA9IGVudHJ5LT50ZXh0ID8gc2F2ZXN0cmluZyAoZW50cnktPnRl eHQpIDogMDsKLSsgIHJldHVybiBuZXc7Ci0rfQotKwotK1VORE9fTElTVCAqCi0rX3JsX2NvcHlf dW5kb19saXN0IChoZWFkKQotKyAgICAgVU5ET19MSVNUICpoZWFkOwotK3sKLSsgIFVORE9fTElT VCAqbGlzdCwgKm5ldywgKnJvdmluZywgKmM7Ci0rCi0rICBpZiAoaGVhZCA9PSAwKQotKyAgICBy ZXR1cm4gaGVhZDsKLSsKLSsgIGxpc3QgPSBoZWFkOwotKyAgbmV3ID0gMDsKLSsgIHdoaWxlIChs aXN0KQotKyAgICB7Ci0rICAgICAgYyA9IF9ybF9jb3B5X3VuZG9fZW50cnkgKGxpc3QpOwotKyAg ICAgIGlmIChuZXcgPT0gMCkKLSsJcm92aW5nID0gbmV3ID0gYzsKLSsgICAgICBlbHNlCi0rCXsK LSsJICByb3ZpbmctPm5leHQgPSBjOwotKwkgIHJvdmluZyA9IHJvdmluZy0+bmV4dDsKLSsJfQot KyAgICAgIGxpc3QgPSBsaXN0LT5uZXh0OwotKyAgICB9Ci0rCi0rICByb3ZpbmctPm5leHQgPSAw OwotKyAgcmV0dXJuIG5ldzsKLSB9Ci0gCi0gLyogVW5kbyB0aGUgbmV4dCB0aGluZyBpbiB0aGUg bGlzdC4gIFJldHVybiAwIGlmIHRoZXJlCi1AQCAtMTEzLDcgKzE3NCw3IEBAIHJsX2RvX3VuZG8g KCkKLSAgIHN0YXJ0ID0gZW5kID0gd2FpdGluZ19mb3JfYmVnaW4gPSAwOwotICAgZG8KLSAgICAg ewotLSAgICAgIGlmICghcmxfdW5kb19saXN0KQotKyAgICAgIGlmIChybF91bmRvX2xpc3QgPT0g MCkKLSAJcmV0dXJuICgwKTsKLSAKLSAgICAgICBfcmxfZG9pbmdfYW5fdW5kbyA9IDE7Ci1AQCAt MTMzLDcgKzE5NCw3IEBAIHJsX2RvX3VuZG8gKCkKLSAJY2FzZSBVTkRPX0RFTEVURToKLSAJICBy bF9wb2ludCA9IHN0YXJ0OwotIAkgIHJsX2luc2VydF90ZXh0IChybF91bmRvX2xpc3QtPnRleHQp OwotLQkgIGZyZWUgKHJsX3VuZG9fbGlzdC0+dGV4dCk7Ci0rCSAgeGZyZWUgKHJsX3VuZG9fbGlz dC0+dGV4dCk7Ci0gCSAgYnJlYWs7Ci0gCi0gCS8qIFVuZG9pbmcgaW5zZXJ0cyBtZWFucyBkZWxl dGluZyBzb21lIHRleHQuICovCi1AQCAtMTYxLDcgKzIyMiw5IEBAIHJsX2RvX3VuZG8gKCkKLSAK LSAgICAgICByZWxlYXNlID0gcmxfdW5kb19saXN0OwotICAgICAgIHJsX3VuZG9fbGlzdCA9IHJs X3VuZG9fbGlzdC0+bmV4dDsKLS0gICAgICBmcmVlIChyZWxlYXNlKTsKLSsgICAgICByZXBsYWNl X2hpc3RvcnlfZGF0YSAoLTEsIChoaXN0ZGF0YV90ICopcmVsZWFzZSwgKGhpc3RkYXRhX3QgKily bF91bmRvX2xpc3QpOwotKwotKyAgICAgIHhmcmVlIChyZWxlYXNlKTsKLSAgICAgfQotICAgd2hp bGUgKHdhaXRpbmdfZm9yX2JlZ2luKTsKLSAKLUBAIC0yMzEsNyArMjk0LDcgQEAgaW50Ci0gcmxf cmV2ZXJ0X2xpbmUgKGNvdW50LCBrZXkpCi0gICAgICBpbnQgY291bnQsIGtleTsKLSB7Ci0tICBp ZiAoIXJsX3VuZG9fbGlzdCkKLSsgIGlmIChybF91bmRvX2xpc3QgPT0gMCkKLSAgICAgcmxfZGlu ZyAoKTsKLSAgIGVsc2UKLSAgICAgewotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxp bmUvdXRpbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRs aW5lL3V0aWwuYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvdXRpbC5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAw MDAwICswMjAwCi1AQCAtMSwyNCArMSwyNCBAQAotIC8qIHV0aWwuYyAtLSByZWFkbGluZSB1dGls aXR5IGZ1bmN0aW9ucyAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDEwIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGluZXMg b2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSks IGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2 ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAg IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAK LS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGlu ZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVu IHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGlu IGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhh dmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx IFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5lIFJF QURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKLUBAIC02Niw3 ICs2Niw3IEBACi0gICAgaW4gd29yZHMsIG9yIDEgaWYgaXQgaXMuICovCi0gCi0gaW50IF9ybF9h bGxvd19wYXRobmFtZV9hbHBoYWJldGljX2NoYXJzID0gMDsKLS1zdGF0aWMgY29uc3QgY2hhciAq cGF0aG5hbWVfYWxwaGFiZXRpY19jaGFycyA9ICIvLV89fi4jJCI7Ci0rc3RhdGljIGNvbnN0IGNo YXIgKiBjb25zdCBwYXRobmFtZV9hbHBoYWJldGljX2NoYXJzID0gIi8tXz1+LiMkIjsKLSAKLSBp bnQKLSBybF9hbHBoYWJldGljIChjKQotQEAgLTgxLDggKzgxLDcgQEAgcmxfYWxwaGFiZXRpYyAo YykKLSAKLSAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKLSBpbnQKLS1fcmxfd2FscGhh YmV0aWMgKHdjKQotLSAgICAgd2NoYXJfdCB3YzsKLStfcmxfd2FscGhhYmV0aWMgKHdjaGFyX3Qg d2MpCi0gewotICAgaW50IGM7Ci0gCi1AQCAtMTA5LDcgKzEwOCw3IEBAIF9ybF9hYm9ydF9pbnRl cm5hbCAoKQotICAgICBfcmxfcG9wX2V4ZWN1dGluZ19tYWNybyAoKTsKLSAKLSAgIHJsX2xhc3Rf ZnVuYyA9IChybF9jb21tYW5kX2Z1bmNfdCAqKU5VTEw7Ci0tICBsb25nam1wIChyZWFkbGluZV90 b3BfbGV2ZWwsIDEpOwotKyAgbG9uZ2ptcCAoX3JsX3RvcF9sZXZlbCwgMSk7Ci0gICByZXR1cm4g KDApOwotIH0KLSAKLUBAIC0xMjEsNiArMTIwLDEzIEBAIHJsX2Fib3J0IChjb3VudCwga2V5KQot IH0KLSAKLSBpbnQKLStfcmxfbnVsbF9mdW5jdGlvbiAoY291bnQsIGtleSkKLSsgICAgIGludCBj b3VudCwga2V5OwotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLStpbnQKLSBybF90dHlfc3RhdHVz IChjb3VudCwga2V5KQotICAgICAgaW50IGNvdW50LCBrZXk7Ci0gewotQEAgLTE4NSw2ICsxOTEs NyBAQCBybF90aWxkZV9leHBhbmQgKGlnbm9yZSwga2V5KQotICAgICB7Ci0gICAgICAgaG9tZWRp ciA9IHRpbGRlX2V4cGFuZCAoIn4iKTsKLSAgICAgICBfcmxfcmVwbGFjZV90ZXh0IChob21lZGly LCBzdGFydCwgZW5kKTsKLSsgICAgICB4ZnJlZSAoaG9tZWRpcik7Ci0gICAgICAgcmV0dXJuICgw KTsKLSAgICAgfQotICAgZWxzZSBpZiAocmxfbGluZV9idWZmZXJbc3RhcnRdICE9ICd+JykKLUBA IC0yMTIsMTQgKzIxOSw5NiBAQCBybF90aWxkZV9leHBhbmQgKGlnbm9yZSwga2V5KQotICAgICAg IHN0cm5jcHkgKHRlbXAsIHJsX2xpbmVfYnVmZmVyICsgc3RhcnQsIGxlbik7Ci0gICAgICAgdGVt cFtsZW5dID0gJ1wwJzsKLSAgICAgICBob21lZGlyID0gdGlsZGVfZXhwYW5kICh0ZW1wKTsKLS0g ICAgICBmcmVlICh0ZW1wKTsKLSsgICAgICB4ZnJlZSAodGVtcCk7Ci0gCi0gICAgICAgX3JsX3Jl cGxhY2VfdGV4dCAoaG9tZWRpciwgc3RhcnQsIGVuZCk7Ci0rICAgICAgeGZyZWUgKGhvbWVkaXIp OwotICAgICB9Ci0gCi0gICByZXR1cm4gKDApOwotIH0KLSAKLSsjaWYgZGVmaW5lZCAoVVNFX1ZB UkFSR1MpCi0rdm9pZAotKyNpZiBkZWZpbmVkIChQUkVGRVJfU1REQVJHKQotK19ybF90dHltc2cg KGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotKyNlbHNlCi0rX3JsX3R0eW1zZyAodmFfYWxpc3Qp Ci0rICAgICB2YV9kY2wKLSsjZW5kaWYKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rI2lmIGRlZmlu ZWQgKFBSRUZFUl9WQVJBUkdTKQotKyAgY2hhciAqZm9ybWF0OwotKyNlbmRpZgotKwotKyNpZiBk ZWZpbmVkIChQUkVGRVJfU1REQVJHKQotKyAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7Ci0rI2Vs c2UKLSsgIHZhX3N0YXJ0IChhcmdzKTsKLSsgIGZvcm1hdCA9IHZhX2FyZyAoYXJncywgY2hhciAq KTsKLSsjZW5kaWYKLSsKLSsgIGZwcmludGYgKHN0ZGVyciwgInJlYWRsaW5lOiAiKTsKLSsgIHZm cHJpbnRmIChzdGRlcnIsIGZvcm1hdCwgYXJncyk7Ci0rICBmcHJpbnRmIChzdGRlcnIsICJcbiIp OwotKyAgZmZsdXNoIChzdGRlcnIpOwotKwotKyAgdmFfZW5kIChhcmdzKTsKLSsKLSsgIHJsX2Zv cmNlZF91cGRhdGVfZGlzcGxheSAoKTsKLSt9Ci0rCi0rdm9pZAotKyNpZiBkZWZpbmVkIChQUkVG RVJfU1REQVJHKQotK19ybF9lcnJtc2cgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotKyNlbHNl Ci0rX3JsX2Vycm1zZyAodmFfYWxpc3QpCi0rICAgICB2YV9kY2wKLSsjZW5kaWYKLSt7Ci0rICB2 YV9saXN0IGFyZ3M7Ci0rI2lmIGRlZmluZWQgKFBSRUZFUl9WQVJBUkdTKQotKyAgY2hhciAqZm9y bWF0OwotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIChQUkVGRVJfU1REQVJHKQotKyAgdmFfc3Rh cnQgKGFyZ3MsIGZvcm1hdCk7Ci0rI2Vsc2UKLSsgIHZhX3N0YXJ0IChhcmdzKTsKLSsgIGZvcm1h dCA9IHZhX2FyZyAoYXJncywgY2hhciAqKTsKLSsjZW5kaWYKLSsKLSsgIGZwcmludGYgKHN0ZGVy ciwgInJlYWRsaW5lOiAiKTsKLSsgIHZmcHJpbnRmIChzdGRlcnIsIGZvcm1hdCwgYXJncyk7Ci0r ICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOwotKyAgZmZsdXNoIChzdGRlcnIpOwotKwotKyAgdmFf ZW5kIChhcmdzKTsKLSt9Ci0rCi0rI2Vsc2UgLyogIVVTRV9WQVJBUkdTICovCi0rdm9pZAotK19y bF90dHltc2cgKGZvcm1hdCwgYXJnMSwgYXJnMikKLSsgICAgIGNoYXIgKmZvcm1hdDsKLSt7Ci0r ICBmcHJpbnRmIChzdGRlcnIsICJyZWFkbGluZTogIik7Ci0rICBmcHJpbnRmIChzdGRlcnIsIGZv cm1hdCwgYXJnMSwgYXJnMik7Ci0rICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOwotKwotKyAgcmxf Zm9yY2VkX3VwZGF0ZV9kaXNwbGF5ICgpOwotK30KLSsKLSt2b2lkCi0rX3JsX2Vycm1zZyAoZm9y bWF0LCBhcmcxLCBhcmcyKQotKyAgICAgY2hhciAqZm9ybWF0OwotK3sKLSsgIGZwcmludGYgKHN0 ZGVyciwgInJlYWRsaW5lOiAiKTsKLSsgIGZwcmludGYgKHN0ZGVyciwgZm9ybWF0LCBhcmcxLCBh cmcyKTsKLSsgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7Ci0rfQotKyNlbmRpZiAvKiAhVVNFX1ZB UkFSR1MgKi8KLSsKLSAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqICovCi0gLyoJCQkJCQkJCSAgICAqLwotIC8qCQkJU3Ry aW5nIFV0aWxpdHkgRnVuY3Rpb25zCQkgICAgKi8KLUBAIC0yNzcsNDEgKzM2Niw1NiBAQCBfcmxf c3RycGJyayAoc3RyaW5nMSwgc3RyaW5nMikKLSAKLSAjaWYgIWRlZmluZWQgKEhBVkVfU1RSQ0FT RUNNUCkKLSAvKiBDb21wYXJlIGF0IG1vc3QgQ09VTlQgY2hhcmFjdGVycyBmcm9tIHN0cmluZzEg dG8gc3RyaW5nMi4gIENhc2UKLS0gICBkb2Vzbid0IG1hdHRlci4gKi8KLSsgICBkb2Vzbid0IG1h dHRlciAoc3RybmNhc2VjbXApLiAqLwotIGludAotIF9ybF9zdHJuaWNtcCAoc3RyaW5nMSwgc3Ry aW5nMiwgY291bnQpCi0gICAgICBjaGFyICpzdHJpbmcxLCAqc3RyaW5nMjsKLSAgICAgIGludCBj b3VudDsKLSB7Ci0tICByZWdpc3RlciBjaGFyIGNoMSwgY2gyOwotKyAgcmVnaXN0ZXIgY2hhciAq czEsICpzMjsKLSsgIGludCBkOwotKwotKyAgaWYgKGNvdW50IDw9IDAgfHwgKHN0cmluZzEgPT0g c3RyaW5nMikpCi0rICAgIHJldHVybiAwOwotIAotLSAgd2hpbGUgKGNvdW50KQotKyAgczEgPSBz dHJpbmcxOwotKyAgczIgPSBzdHJpbmcyOwotKyAgZG8KLSAgICAgewotLSAgICAgIGNoMSA9ICpz dHJpbmcxKys7Ci0tICAgICAgY2gyID0gKnN0cmluZzIrKzsKLS0gICAgICBpZiAoX3JsX3RvX3Vw cGVyKGNoMSkgPT0gX3JsX3RvX3VwcGVyKGNoMikpCi0tCWNvdW50LS07Ci0tICAgICAgZWxzZQot KyAgICAgIGQgPSBfcmxfdG9fbG93ZXIgKCpzMSkgLSBfcmxfdG9fbG93ZXIgKCpzMik7CS8qIFhY WCAtIGNhc3QgdG8gdW5zaWduZWQgY2hhcj8gKi8KLSsgICAgICBpZiAoZCAhPSAwKQotKwlyZXR1 cm4gZDsKLSsgICAgICBpZiAoKnMxKysgPT0gJ1wwJykKLSAgICAgICAgIGJyZWFrOwotKyAgICAg IHMyKys7Ci0gICAgIH0KLS0gIHJldHVybiAoY291bnQpOwotKyAgd2hpbGUgKC0tY291bnQgIT0g MCkKLSsKLSsgIHJldHVybiAoMCk7Ci0gfQotIAotLS8qIHN0cmNtcCAoKSwgYnV0IGNhc2VsZXNz LiAqLwotKy8qIHN0cmNtcCAoKSwgYnV0IGNhc2VsZXNzIChzdHJjYXNlY21wKS4gKi8KLSBpbnQK LSBfcmxfc3RyaWNtcCAoc3RyaW5nMSwgc3RyaW5nMikKLSAgICAgIGNoYXIgKnN0cmluZzEsICpz dHJpbmcyOwotIHsKLS0gIHJlZ2lzdGVyIGNoYXIgY2gxLCBjaDI7Ci0rICByZWdpc3RlciBjaGFy ICpzMSwgKnMyOwotKyAgaW50IGQ7Ci0rCi0rICBzMSA9IHN0cmluZzE7Ci0rICBzMiA9IHN0cmlu ZzI7Ci0rCi0rICBpZiAoczEgPT0gczIpCi0rICAgIHJldHVybiAwOwotIAotLSAgd2hpbGUgKCpz dHJpbmcxICYmICpzdHJpbmcyKQotKyAgd2hpbGUgKChkID0gX3JsX3RvX2xvd2VyICgqczEpIC0g X3JsX3RvX2xvd2VyICgqczIpKSA9PSAwKQotICAgICB7Ci0tICAgICAgY2gxID0gKnN0cmluZzEr KzsKLS0gICAgICBjaDIgPSAqc3RyaW5nMisrOwotLSAgICAgIGlmIChfcmxfdG9fdXBwZXIoY2gx KSAhPSBfcmxfdG9fdXBwZXIoY2gyKSkKLS0JcmV0dXJuICgxKTsKLSsgICAgICBpZiAoKnMxKysg PT0gJ1wwJykKLSsgICAgICAgIHJldHVybiAwOwotKyAgICAgIHMyKys7Ci0gICAgIH0KLS0gIHJl dHVybiAoKnN0cmluZzEgLSAqc3RyaW5nMik7Ci0rCi0rICByZXR1cm4gKGQpOwotIH0KLSAjZW5k aWYgLyogIUhBVkVfU1RSQ0FTRUNNUCAqLwotIAotQEAgLTM0NCw2ICs0NDgsMTYgQEAgRlVOQ1RJ T05fRk9SX01BQ1JPIChfcmxfdG9fbG93ZXIpCi0gRlVOQ1RJT05fRk9SX01BQ1JPIChfcmxfdG9f dXBwZXIpCi0gRlVOQ1RJT05fRk9SX01BQ1JPIChfcmxfdXBwZXJjYXNlX3ApCi0gCi0rLyogQSBj b252ZW5pZW5jZSBmdW5jdGlvbiwgdG8gZm9yY2UgbWVtb3J5IGRlYWxsb2NhdGlvbiB0byBiZSBw ZXJmb3JtZWQKLSsgICBieSByZWFkbGluZS4gIERMTHMgb24gV2luZG93cyBhcHBhcmVudGx5IHJl cXVpcmUgdGhpcy4gKi8KLSt2b2lkCi0rcmxfZnJlZSAobWVtKQotKyAgICAgdm9pZCAqbWVtOwot K3sKLSsgIGlmIChtZW0pCi0rICAgIGZyZWUgKG1lbSk7Ci0rfQotKwotIC8qIEJhY2t3YXJkcyBj b21wYXRpYmlsaXR5LCBub3cgdGhhdCBzYXZlc3RyaW5nIGhhcyBiZWVuIHJlbW92ZWQgZnJvbQot ICAgIGFsbCBgcHVibGljJyByZWFkbGluZSBoZWFkZXIgZmlsZXMuICovCi0gI3VuZGVmIF9ybF9z YXZlc3RyaW5nCi1AQCAtMzUzLDMgKzQ2Nyw2MCBAQCBfcmxfc2F2ZXN0cmluZyAocykKLSB7Ci0g ICByZXR1cm4gKHN0cmNweSAoKGNoYXIgKil4bWFsbG9jICgxICsgKGludClzdHJsZW4gKHMpKSwg KHMpKSk7Ci0gfQotKwotKyNpZiBkZWZpbmVkIChVU0VfVkFSQVJHUykKLStzdGF0aWMgRklMRSAq X3JsX3RyYWNlZnA7Ci0rCi0rdm9pZAotKyNpZiBkZWZpbmVkIChQUkVGRVJfU1REQVJHKQotK19y bF90cmFjZSAoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0rI2Vsc2UKLStfcmxfdHJhY2UgKHZh X2FsaXN0KQotKyAgICAgdmFfZGNsCi0rI2VuZGlmCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyNp ZiBkZWZpbmVkIChQUkVGRVJfVkFSQVJHUykKLSsgIGNoYXIgKmZvcm1hdDsKLSsjZW5kaWYKLSsK LSsjaWYgZGVmaW5lZCAoUFJFRkVSX1NUREFSRykKLSsgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQp OwotKyNlbHNlCi0rICB2YV9zdGFydCAoYXJncyk7Ci0rICBmb3JtYXQgPSB2YV9hcmcgKGFyZ3Ms IGNoYXIgKik7Ci0rI2VuZGlmCi0rCi0rICBpZiAoX3JsX3RyYWNlZnAgPT0gMCkKLSsgICAgX3Js X3Ryb3BlbiAoKTsKLSsgIHZmcHJpbnRmIChfcmxfdHJhY2VmcCwgZm9ybWF0LCBhcmdzKTsKLSsg IGZwcmludGYgKF9ybF90cmFjZWZwLCAiXG4iKTsKLSsgIGZmbHVzaCAoX3JsX3RyYWNlZnApOwot KwotKyAgdmFfZW5kIChhcmdzKTsKLSt9Ci0rCi0raW50Ci0rX3JsX3Ryb3BlbiAoKQotK3sKLSsg IGNoYXIgZm5idWZbMTI4XTsKLSsKLSsgIGlmIChfcmxfdHJhY2VmcCkKLSsgICAgZmNsb3NlIChf cmxfdHJhY2VmcCk7Ci0rICBzcHJpbnRmIChmbmJ1ZiwgIi92YXIvdG1wL3JsdHJhY2UuJWxkIiwg Z2V0cGlkKCkpOwotKyAgdW5saW5rKGZuYnVmKTsKLSsgIF9ybF90cmFjZWZwID0gZm9wZW4gKGZu YnVmLCAidysiKTsKLSsgIHJldHVybiBfcmxfdHJhY2VmcCAhPSAwOwotK30KLSsKLStpbnQKLStf cmxfdHJjbG9zZSAoKQotK3sKLSsgIGludCByOwotKwotKyAgciA9IGZjbG9zZSAoX3JsX3RyYWNl ZnApOwotKyAgX3JsX3RyYWNlZnAgPSAwOwotKyAgcmV0dXJuIHI7Ci0rfQotKwotKyNlbmRpZgot SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvdmlfa2V5bWFwLmMKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvdmlfa2V5bWFwLmMJMjAx MS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAz L3JlYWRsaW5lL3ZpX2tleW1hcC5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAw Ci1AQCAtMSwyNCArMSwyMyBAQAotIC8qIHZpX2tleW1hcC5jIC0tIHRoZSBrZXltYXAgZm9yIHZp X21vZGUgaW4gcmVhZGxpbmUgKCkuICovCi0gCi0tLyogQ29weXJpZ2h0IChDKSAxOTg3LCAxOTg5 LCAxOTkyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykg MTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAg IHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5 IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJy YXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQg d2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAg IFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlz IGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdl bmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91 IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVh ZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8K LSAKLSAjaWYgIWRlZmluZWQgKEJVRlNJWikKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLUBAIC0xNTEs NyArMTUwLDcgQEAgS0VZTUFQX0VOVFJZX0FSUkFZIHZpX21vdmVtZW50X2tleW1hcCA9IAotICAg eyBJU0ZVTkMsIHJsX3ZpX2NoYXJfc2VhcmNoIH0sCQkvKiBmICovCi0gICB7IElTRlVOQywgKHJs X2NvbW1hbmRfZnVuY190ICopMHgwIH0sCQkvKiBnICovCi0gICB7IElTRlVOQywgcmxfYmFja3dh cmRfY2hhciB9LAkJCS8qIGggKi8KLS0gIHsgSVNGVU5DLCBybF92aV9pbnNlcnRpb25fbW9kZSB9 LAkJLyogaSAqLwotKyAgeyBJU0ZVTkMsIHJsX3ZpX2luc2VydF9tb2RlIH0sCQkvKiBpICovCi0g ICB7IElTRlVOQywgcmxfZ2V0X25leHRfaGlzdG9yeSB9LAkJLyogaiAqLwotICAgeyBJU0ZVTkMs IHJsX2dldF9wcmV2aW91c19oaXN0b3J5IH0sCQkvKiBrICovCi0gICB7IElTRlVOQywgcmxfZm9y d2FyZF9jaGFyIH0sCQkJLyogbCAqLwotQEAgLTMyNyw5ICszMjYsOSBAQCBLRVlNQVBfRU5UUllf QVJSQVkgdmlfaW5zZXJ0aW9uX2tleW1hcCA9Ci0gICB7IElTRlVOQywgcmxfaW5zZXJ0IH0sCQkJ LyogQ29udHJvbC1rICovCi0gICB7IElTRlVOQywgcmxfaW5zZXJ0IH0sCQkJLyogQ29udHJvbC1s ICovCi0gICB7IElTRlVOQywgcmxfbmV3bGluZSB9LAkJCS8qIENvbnRyb2wtbSAqLwotLSAgeyBJ U0ZVTkMsIHJsX2luc2VydCB9LAkJCS8qIENvbnRyb2wtbiAqLwotKyAgeyBJU0ZVTkMsIHJsX21l bnVfY29tcGxldGV9LAkJCS8qIENvbnRyb2wtbiAqLwotICAgeyBJU0ZVTkMsIHJsX2luc2VydCB9 LAkJCS8qIENvbnRyb2wtbyAqLwotLSAgeyBJU0ZVTkMsIHJsX2luc2VydCB9LAkJCS8qIENvbnRy b2wtcCAqLwotKyAgeyBJU0ZVTkMsIHJsX2JhY2t3YXJkX21lbnVfY29tcGxldGUgfSwJLyogQ29u dHJvbC1wICovCi0gICB7IElTRlVOQywgcmxfaW5zZXJ0IH0sCQkJLyogQ29udHJvbC1xICovCi0g ICB7IElTRlVOQywgcmxfcmV2ZXJzZV9zZWFyY2hfaGlzdG9yeSB9LAkvKiBDb250cm9sLXIgKi8K LSAgIHsgSVNGVU5DLCBybF9mb3J3YXJkX3NlYXJjaF9oaXN0b3J5IH0sCS8qIENvbnRyb2wtcyAq LwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvdmlfbW9kZS5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3ZpX21vZGUuYwkyMDEx LTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMv cmVhZGxpbmUvdmlfbW9kZS5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1A QCAtMSwyNSArMSwyNSBAQAotIC8qIHZpX21vZGUuYyAtLSBBIHZpIGVtdWxhdGlvbiBtb2RlIGZv ciBCYXNoLgotICAgIERlcml2ZWQgZnJvbSBjb2RlIHdyaXR0ZW4gYnkgSmVmZiBTcGFya2VzIChq c3Bhcmtlc0BibnIuY2EpLiAgKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwNSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAxMCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0gICByZWFkaW5nIGxp bmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgot KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxp bmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJh Y3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBUaGUgR05VIFJl YWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQK LS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3 YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVh ZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBv ZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2Vw dCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0g ICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw MjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0rCi0gI2RlZmlu ZSBSRUFETElORV9MSUJSQVJZCi0gCi0gLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotQEAgLTY1LDExICs2NSwxMyBA QAotIAotIGludCBfcmxfdmlfbGFzdF9jb21tYW5kID0gJ2knOwkvKiBkZWZhdWx0IGAuJyBwdXRz IHlvdSBpbiBpbnNlcnQgbW9kZSAqLwotIAotK19ybF92aW1vdGlvbl9jeHQgKl9ybF92aW12Y3h0 ID0gMDsKLSsKLSAvKiBOb24temVybyBtZWFucyBlbnRlciBpbnNlcnRpb24gbW9kZS4gKi8KLSBz dGF0aWMgaW50IF9ybF92aV9kb2luZ19pbnNlcnQ7Ci0gCi0gLyogQ29tbWFuZCBrZXlzIHdoaWNo IGRvIG1vdmVtZW50IGZvciB4eHhfdG8gY29tbWFuZHMuICovCi0tc3RhdGljIGNvbnN0IGNoYXIg KnZpX21vdGlvbiA9ICIgaGxeJDBmdEZUOywld2JlV0JFfCI7Ci0rc3RhdGljIGNvbnN0IGNoYXIg KiBjb25zdCB2aV9tb3Rpb24gPSAiIGhsXiQwZnRGVDssJXdiZVdCRXxgIjsKLSAKLSAvKiBLZXlt YXAgdXNlZCBmb3IgdmkgcmVwbGFjZSBjaGFyYWN0ZXJzLiAgQ3JlYXRlZCBkeW5hbWljYWxseSBz aW5jZQotICAgIHJhcmVseSB1c2VkLiAqLwotQEAgLTEwMSw3ICsxMDMsNyBAQCBzdGF0aWMgaW50 IF9ybF92aV9sYXN0X2tleV9iZWZvcmVfaW5zZXJ0Ci0gc3RhdGljIGludCB2aV9yZWRvaW5nOwot IAotIC8qIFRleHQgbW9kaWZpY2F0aW9uIGNvbW1hbmRzLiAgVGhlc2UgYXJlIHRoZSBgcmVkb2Fi bGUnIGNvbW1hbmRzLiAqLwotLXN0YXRpYyBjb25zdCBjaGFyICp2aV90ZXh0bW9kID0gIl8qXFxB YUlpQ2NEZFBwWXlSclNzWHh+IjsKLStzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHZpX3RleHRt b2QgPSAiXypcXEFhSWlDY0RkUHBZeVJyU3NYeH4iOwotIAotIC8qIEFycmF5cyBmb3IgdGhlIHNh dmVkIG1hcmtzLiAqLwotIHN0YXRpYyBpbnQgdmlfbWFya19jaGFyc1sneicgLSAnYScgKyAxXTsK LUBAIC0xMDksMTIgKzExMSwxNiBAQCBzdGF0aWMgaW50IHZpX21hcmtfY2hhcnNbJ3onIC0gJ2En ICsgMV07Ci0gc3RhdGljIHZvaWQgX3JsX3ZpX3N0dWZmX2luc2VydCBQQVJBTVMoKGludCkpOwot IHN0YXRpYyB2b2lkIF9ybF92aV9zYXZlX2luc2VydCBQQVJBTVMoKFVORE9fTElTVCAqKSk7Ci0g Ci0rc3RhdGljIHZvaWQgX3JsX3ZpX2JhY2t1cCBQQVJBTVMoKHZvaWQpKTsKLSsKLSBzdGF0aWMg aW50IF9ybF92aV9hcmdfZGlzcGF0Y2ggUEFSQU1TKChpbnQpKTsKLSBzdGF0aWMgaW50IHJsX2Rp Z2l0X2xvb3AxIFBBUkFNUygodm9pZCkpOwotIAotIHN0YXRpYyBpbnQgX3JsX3ZpX3NldF9tYXJr IFBBUkFNUygodm9pZCkpOwotIHN0YXRpYyBpbnQgX3JsX3ZpX2dvdG9fbWFyayBQQVJBTVMoKHZv aWQpKTsKLSAKLStzdGF0aWMgdm9pZCBfcmxfdmlfYXBwZW5kX2ZvcndhcmQgUEFSQU1TKChpbnQp KTsKLSsKLSBzdGF0aWMgaW50IF9ybF92aV9jYWxsYmFja19nZXRjaGFyIFBBUkFNUygoY2hhciAq LCBpbnQpKTsKLSAKLSAjaWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJBQ0tTKQotQEAgLTEyNCwx MiArMTMwLDIzIEBAIHN0YXRpYyBpbnQgX3JsX3ZpX2NhbGxiYWNrX2NoYW5nZV9jaGFyIFAKLSBz dGF0aWMgaW50IF9ybF92aV9jYWxsYmFja19jaGFyX3NlYXJjaCBQQVJBTVMoKF9ybF9jYWxsYmFj a19nZW5lcmljX2FyZyAqKSk7Ci0gI2VuZGlmCi0gCi0rc3RhdGljIGludCBybF9kb21vdmVfcmVh ZF9jYWxsYmFjayBQQVJBTVMoKF9ybF92aW1vdGlvbl9jeHQgKikpOwotK3N0YXRpYyBpbnQgcmxf ZG9tb3ZlX21vdGlvbl9jYWxsYmFjayBQQVJBTVMoKF9ybF92aW1vdGlvbl9jeHQgKikpOwotK3N0 YXRpYyBpbnQgcmxfdmlfZG9tb3ZlX2dldGNoYXIgUEFSQU1TKChfcmxfdmltb3Rpb25fY3h0ICop KTsKLSsKLStzdGF0aWMgaW50IHZpX2NoYW5nZV9kaXNwYXRjaCBQQVJBTVMoKF9ybF92aW1vdGlv bl9jeHQgKikpOwotK3N0YXRpYyBpbnQgdmlfZGVsZXRlX2Rpc3BhdGNoIFBBUkFNUygoX3JsX3Zp bW90aW9uX2N4dCAqKSk7Ci0rc3RhdGljIGludCB2aV95YW5rX2Rpc3BhdGNoIFBBUkFNUygoX3Js X3ZpbW90aW9uX2N4dCAqKSk7Ci0rCi0rc3RhdGljIGludCB2aWRvbW92ZV9kaXNwYXRjaCBQQVJB TVMoKF9ybF92aW1vdGlvbl9jeHQgKikpOwotKwotIHZvaWQKLSBfcmxfdmlfaW5pdGlhbGl6ZV9s aW5lICgpCi0gewotLSAgcmVnaXN0ZXIgaW50IGk7Ci0rICByZWdpc3RlciBpbnQgaSwgbjsKLSAK LS0gIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKHZpX21hcmtfY2hhcnMpIC8gc2l6ZW9mIChpbnQp OyBpKyspCi0rICBuID0gc2l6ZW9mICh2aV9tYXJrX2NoYXJzKSAvIHNpemVvZiAodmlfbWFya19j aGFyc1swXSk7Ci0rICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICB2aV9tYXJrX2NoYXJz W2ldID0gLTE7Ci0gCi0gICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX1ZJQ01ET05DRSk7Ci1AQCAt MjA1LDcgKzIyMiwzNCBAQCBybF92aV9yZWRvIChjb3VudCwgYykKLSAgICAgICBfcmxfdmlfc3R1 ZmZfaW5zZXJ0IChjb3VudCk7Ci0gICAgICAgLyogQW5kIGJhY2sgdXAgcG9pbnQgb3ZlciB0aGUg bGFzdCBjaGFyYWN0ZXIgaW5zZXJ0ZWQuICovCi0gICAgICAgaWYgKHJsX3BvaW50ID4gMCkKLS0J cmxfcG9pbnQtLTsKLSsJX3JsX3ZpX2JhY2t1cCAoKTsKLSsgICAgfQotKyAgLyogRGl0dG8gZm9y IHJlZG9pbmcgYW4gaW5zZXJ0IHdpdGggYEknLCBidXQgbW92ZSB0byB0aGUgYmVnaW5uaW5nIG9m IHRoZQotKyAgICAgbGluZSBsaWtlIHRoZSBgSScgY29tbWFuZCBkb2VzLiAqLwotKyAgZWxzZSBp ZiAoX3JsX3ZpX2xhc3RfY29tbWFuZCA9PSAnSScgJiYgdmlfaW5zZXJ0X2J1ZmZlciAmJiAqdmlf aW5zZXJ0X2J1ZmZlcikKLSsgICAgewotKyAgICAgIHJsX2JlZ19vZl9saW5lICgxLCAnSScpOwot KyAgICAgIF9ybF92aV9zdHVmZl9pbnNlcnQgKGNvdW50KTsKLSsgICAgICBpZiAocmxfcG9pbnQg PiAwKQotKwlfcmxfdmlfYmFja3VwICgpOwotKyAgICB9Ci0rICAvKiBEaXR0byBmb3IgcmVkb2lu ZyBhbiBpbnNlcnQgd2l0aCBgYScsIGJ1dCBtb3ZlIGZvcndhcmQgYSBjaGFyYWN0ZXIgZmlyc3QK LSsgICAgIGxpa2UgdGhlIGBhJyBjb21tYW5kIGRvZXMuICovCi0rICBlbHNlIGlmIChfcmxfdmlf bGFzdF9jb21tYW5kID09ICdhJyAmJiB2aV9pbnNlcnRfYnVmZmVyICYmICp2aV9pbnNlcnRfYnVm ZmVyKQotKyAgICB7Ci0rICAgICAgX3JsX3ZpX2FwcGVuZF9mb3J3YXJkICgnYScpOwotKyAgICAg IF9ybF92aV9zdHVmZl9pbnNlcnQgKGNvdW50KTsKLSsgICAgICBpZiAocmxfcG9pbnQgPiAwKQot KwlfcmxfdmlfYmFja3VwICgpOwotKyAgICB9Ci0rICAvKiBEaXR0byBmb3IgcmVkb2luZyBhbiBp bnNlcnQgd2l0aCBgQScsIGJ1dCBtb3ZlIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUKLSsgICAgIGxp a2UgdGhlIGBBJyBjb21tYW5kIGRvZXMuICovCi0rICBlbHNlIGlmIChfcmxfdmlfbGFzdF9jb21t YW5kID09ICdBJyAmJiB2aV9pbnNlcnRfYnVmZmVyICYmICp2aV9pbnNlcnRfYnVmZmVyKQotKyAg ICB7Ci0rICAgICAgcmxfZW5kX29mX2xpbmUgKDEsICdBJyk7Ci0rICAgICAgX3JsX3ZpX3N0dWZm X2luc2VydCAoY291bnQpOwotKyAgICAgIGlmIChybF9wb2ludCA+IDApCi0rCV9ybF92aV9iYWNr dXAgKCk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgciA9IF9ybF9kaXNwYXRjaCAoX3JsX3ZpX2xh c3RfY29tbWFuZCwgX3JsX2tleW1hcCk7Ci1AQCAtNTcxLDI3ICs2MTUsNDAgQEAgcmxfdmlfaW5z ZXJ0X2JlZyAoY291bnQsIGtleSkKLSAgICAgIGludCBjb3VudCwga2V5OwotIHsKLSAgIHJsX2Jl Z19vZl9saW5lICgxLCBrZXkpOwotLSAgcmxfdmlfaW5zZXJ0aW9uX21vZGUgKDEsIGtleSk7Ci0r ICBybF92aV9pbnNlcnRfbW9kZSAoMSwga2V5KTsKLSAgIHJldHVybiAoMCk7Ci0gfQotIAotLWlu dAotLXJsX3ZpX2FwcGVuZF9tb2RlIChjb3VudCwga2V5KQotLSAgICAgaW50IGNvdW50LCBrZXk7 Ci0rc3RhdGljIHZvaWQKLStfcmxfdmlfYXBwZW5kX2ZvcndhcmQgKGtleSkKLSsgICAgIGludCBr ZXk7Ci0gewotKyAgaW50IHBvaW50OwotKwotICAgaWYgKHJsX3BvaW50IDwgcmxfZW5kKQotICAg ICB7Ci0gICAgICAgaWYgKE1CX0NVUl9NQVggPT0gMSB8fCBybF9ieXRlX29yaWVudGVkKQotIAly bF9wb2ludCsrOwotICAgICAgIGVsc2UKLS0gICAgICAgIHsKLS0gICAgICAgICAgaW50IHBvaW50 ID0gcmxfcG9pbnQ7Ci0tICAgICAgICAgIHJsX2ZvcndhcmRfY2hhciAoMSwga2V5KTsKLS0gICAg ICAgICAgaWYgKHBvaW50ID09IHJsX3BvaW50KQotLSAgICAgICAgICAgIHJsX3BvaW50ID0gcmxf ZW5kOwotLSAgICAgICAgfQotKwl7Ci0rCSAgcG9pbnQgPSBybF9wb2ludDsKLSsjaWYgMAotKwkg IHJsX2ZvcndhcmRfY2hhciAoMSwga2V5KTsKLSsjZWxzZQotKwkgIHJsX3BvaW50ID0gX3JsX2Zv cndhcmRfY2hhcl9pbnRlcm5hbCAoMSk7Ci0rI2VuZGlmCi0rCSAgaWYgKHBvaW50ID09IHJsX3Bv aW50KQotKwkgICAgcmxfcG9pbnQgPSBybF9lbmQ7Ci0rCX0KLSAgICAgfQotLSAgcmxfdmlfaW5z ZXJ0aW9uX21vZGUgKDEsIGtleSk7Ci0rfQotKwotK2ludAotK3JsX3ZpX2FwcGVuZF9tb2RlIChj b3VudCwga2V5KQotKyAgICAgaW50IGNvdW50LCBrZXk7Ci0rewotKyAgX3JsX3ZpX2FwcGVuZF9m b3J3YXJkIChrZXkpOwotKyAgcmxfdmlfc3RhcnRfaW5zZXJ0aW5nIChrZXksIDEsIHJsX2FyZ19z aWduKTsKLSAgIHJldHVybiAoMCk7Ci0gfQotIAotQEAgLTYyNSwxMyArNjgyLDIxIEBAIHJsX3Zp X2luc2VydGlvbl9tb2RlIChjb3VudCwga2V5KQotICAgcmV0dXJuICgwKTsKLSB9Ci0gCi0raW50 Ci0rcmxfdmlfaW5zZXJ0X21vZGUgKGNvdW50LCBrZXkpCi0rICAgICBpbnQgY291bnQsIGtleTsK LSt7Ci0rICBybF92aV9zdGFydF9pbnNlcnRpbmcgKGtleSwgMSwgcmxfYXJnX3NpZ24pOwotKyAg cmV0dXJuICgwKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBfcmxfdmlfc2F2ZV9pbnNlcnQgKHVw KQotICAgICAgIFVORE9fTElTVCAqdXA7Ci0gewotICAgaW50IGxlbiwgc3RhcnQsIGVuZDsKLSAK LS0gIGlmICh1cCA9PSAwKQotKyAgaWYgKHVwID09IDAgfHwgdXAtPndoYXQgIT0gVU5ET19JTlNF UlQpCi0gICAgIHsKLSAgICAgICBpZiAodmlfaW5zZXJ0X2J1ZmZlcl9zaXplID49IDEpCi0gCXZp X2luc2VydF9idWZmZXJbMF0gPSAnXDAnOwotQEAgLTY2OCw4ICs3MzMsMTEgQEAgX3JsX3ZpX2Rv bmVfaW5zZXJ0aW5nICgpCi0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIGlmICgoX3Js X3ZpX2xhc3Rfa2V5X2JlZm9yZV9pbnNlcnQgPT0gJ2knIHx8IF9ybF92aV9sYXN0X2tleV9iZWZv cmVfaW5zZXJ0ID09ICdhJykgJiYgcmxfdW5kb19saXN0KQotLSAgICAgICAgX3JsX3ZpX3NhdmVf aW5zZXJ0IChybF91bmRvX2xpc3QpOwotKyAgICAgIGlmIChybF91bmRvX2xpc3QgJiYgKF9ybF92 aV9sYXN0X2tleV9iZWZvcmVfaW5zZXJ0ID09ICdpJyB8fAotKwkJCSAgIF9ybF92aV9sYXN0X2tl eV9iZWZvcmVfaW5zZXJ0ID09ICdhJyB8fAotKwkJCSAgIF9ybF92aV9sYXN0X2tleV9iZWZvcmVf aW5zZXJ0ID09ICdJJyB8fAotKwkJCSAgIF9ybF92aV9sYXN0X2tleV9iZWZvcmVfaW5zZXJ0ID09 ICdBJykpCi0rCV9ybF92aV9zYXZlX2luc2VydCAocmxfdW5kb19saXN0KTsKLSAgICAgICAvKiBY WFggLSBPdGhlciBrZXlzIHByb2JhYmx5IG5lZWQgdG8gYmUgY2hlY2tlZC4gKi8KLSAgICAgICBl bHNlIGlmIChfcmxfdmlfbGFzdF9rZXlfYmVmb3JlX2luc2VydCA9PSAnQycpCi0gCXJsX2VuZF91 bmRvX2dyb3VwICgpOwotQEAgLTcxNiw3ICs3ODQsOCBAQCBfcmxfdmlfY2hhbmdlX21iY2hhcl9j YXNlIChjb3VudCkKLSB7Ci0gICB3Y2hhcl90IHdjOwotICAgY2hhciBtYltNQl9MRU5fTUFYKzFd OwotLSAgaW50IG1ibGVuLCBwOwotKyAgaW50IG1sZW4sIHA7Ci0rICBzaXplX3QgbTsKLSAgIG1i c3RhdGVfdCBwczsKLSAKLSAgIG1lbXNldCAoJnBzLCAwLCBzaXplb2YgKG1ic3RhdGVfdCkpOwot QEAgLTcyNCw3ICs3OTMsMTEgQEAgX3JsX3ZpX2NoYW5nZV9tYmNoYXJfY2FzZSAoY291bnQpCi0g ICAgIGNvdW50LS07Ci0gICB3aGlsZSAoY291bnQtLSAmJiBybF9wb2ludCA8IHJsX2VuZCkKLSAg ICAgewotLSAgICAgIG1icnRvd2MgKCZ3YywgcmxfbGluZV9idWZmZXIgKyBybF9wb2ludCwgcmxf ZW5kIC0gcmxfcG9pbnQsICZwcyk7Ci0rICAgICAgbSA9IG1icnRvd2MgKCZ3YywgcmxfbGluZV9i dWZmZXIgKyBybF9wb2ludCwgcmxfZW5kIC0gcmxfcG9pbnQsICZwcyk7Ci0rICAgICAgaWYgKE1C X0lOVkFMSURDSCAobSkpCi0rCXdjID0gKHdjaGFyX3QpcmxfbGluZV9idWZmZXJbcmxfcG9pbnRd OwotKyAgICAgIGVsc2UgaWYgKE1CX05VTExXQ0ggKG0pKQotKwl3YyA9IEwnXDAnOwotICAgICAg IGlmIChpc3d1cHBlciAod2MpKQotIAl3YyA9IHRvd2xvd2VyICh3Yyk7Ci0gICAgICAgZWxzZSBp ZiAoaXN3bG93ZXIgKHdjKSkKLUBAIC03NDAsOSArODEzLDkgQEAgX3JsX3ZpX2NoYW5nZV9tYmNo YXJfY2FzZSAoY291bnQpCi0gICAgICAgaWYgKHdjKQotIAl7Ci0gCSAgcCA9IHJsX3BvaW50Owot LQkgIG1ibGVuID0gd2NydG9tYiAobWIsIHdjLCAmcHMpOwotLQkgIGlmIChtYmxlbiA+PSAwKQot LQkgICAgbWJbbWJsZW5dID0gJ1wwJzsKLSsJICBtbGVuID0gd2NydG9tYiAobWIsIHdjLCAmcHMp OwotKwkgIGlmIChtbGVuID49IDApCi0rCSAgICBtYlttbGVuXSA9ICdcMCc7Ci0gCSAgcmxfYmVn aW5fdW5kb19ncm91cCAoKTsKLSAJICBybF92aV9kZWxldGUgKDEsIDApOwotIAkgIGlmIChybF9w b2ludCA8IHApCS8qIERpZCB3ZSByZXRyZWF0IGF0IEVPTD8gKi8KLUBAIC03NTIsNyArODI1LDcg QEAgX3JsX3ZpX2NoYW5nZV9tYmNoYXJfY2FzZSAoY291bnQpCi0gCSAgcmxfdmlfY2hlY2sgKCk7 Ci0gCX0KLSAgICAgICBlbHNlCi0tICAgICAgICBybF9mb3J3YXJkX2NoYXIgKDEsIDApOwotKwly bF9mb3J3YXJkX2NoYXIgKDEsIDApOwotICAgICB9Ci0gCi0gICByZXR1cm4gMDsKLUBAIC03OTks NyArODcyLDcgQEAgcmxfdmlfY2hhbmdlX2Nhc2UgKGNvdW50LCBpZ25vcmUpCi0gCSAgX3JsX2lu c2VydF9jaGFyICgxLCBjKTsKLSAJICBybF9lbmRfdW5kb19ncm91cCAoKTsKLSAJICBybF92aV9j aGVjayAoKTsKLS0gICAgICAgIH0KLSsJfQotICAgICAgIGVsc2UKLSAJcmxfZm9yd2FyZF9jaGFy ICgxLCBjKTsKLSAgICAgfQotQEAgLTgyMCw2ICs4OTMsMTUgQEAgcmxfdmlfcHV0IChjb3VudCwg a2V5KQotICAgcmV0dXJuICgwKTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStfcmxfdmlfYmFja3Vw ICgpCi0rewotKyAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkK LSsgICAgcmxfcG9pbnQgPSBfcmxfZmluZF9wcmV2X21iY2hhciAocmxfbGluZV9idWZmZXIsIHJs X3BvaW50LCBNQl9GSU5EX05PTlpFUk8pOwotKyAgZWxzZQotKyAgICBybF9wb2ludC0tOwotK30K LSsKLSBpbnQKLSBybF92aV9jaGVjayAoKQotIHsKLUBAIC04MjgsNyArOTEwLDcgQEAgcmxfdmlf Y2hlY2sgKCkKLSAgICAgICBpZiAoTUJfQ1VSX01BWCA+IDEgJiYgcmxfYnl0ZV9vcmllbnRlZCA9 PSAwKQotIAlybF9wb2ludCA9IF9ybF9maW5kX3ByZXZfbWJjaGFyIChybF9saW5lX2J1ZmZlciwg cmxfcG9pbnQsIE1CX0ZJTkRfTk9OWkVSTyk7Ci0gICAgICAgZWxzZQotLSAgICAgICAgcmxfcG9p bnQtLTsKLSsJcmxfcG9pbnQtLTsKLSAgICAgfQotICAgcmV0dXJuICgwKTsKLSB9Ci1AQCAtODQ0 LDQ3ICs5MjYsMTA2IEBAIHJsX3ZpX2NvbHVtbiAoY291bnQsIGtleSkKLSAgIHJldHVybiAoMCk7 Ci0gfQotIAotLWludAotLXJsX3ZpX2RvbW92ZSAoa2V5LCBuZXh0a2V5KQotLSAgICAgaW50IGtl eSwgKm5leHRrZXk7Ci0rLyogUHJvY2VzcyBDIGFzIHBhcnQgb2YgdGhlIGN1cnJlbnQgbnVtZXJp YyBhcmd1bWVudC4gIFJldHVybiAtMSBpZiB0aGUKLSsgICBhcmd1bWVudCBzaG91bGQgYmUgYWJv cnRlZCwgMCBpZiB3ZSBzaG91bGQgbm90IHJlYWQgYW55IG1vcmUgY2hhcnMsIGFuZAotKyAgIDEg aWYgd2Ugc2hvdWxkIGNvbnRpbnVlIHRvIHJlYWQgY2hhcnMuICovCi0rc3RhdGljIGludAotK19y bF92aV9hcmdfZGlzcGF0Y2ggKGMpCi0rICAgICBpbnQgYzsKLSB7Ci0tICBpbnQgYywgc2F2ZTsK LS0gIGludCBvbGRfZW5kOwotKyAgaW50IGtleTsKLSAKLS0gIHJsX21hcmsgPSBybF9wb2ludDsK LS0gIFJMX1NFVFNUQVRFKFJMX1NUQVRFX01PUkVJTlBVVCk7Ci0tICBjID0gcmxfcmVhZF9rZXkg KCk7Ci0tICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX01PUkVJTlBVVCk7Ci0tICAqbmV4dGtleSA9 IGM7Ci0rICBrZXkgPSBjOwotKyAgaWYgKGMgPj0gMCAmJiBfcmxfa2V5bWFwW2NdLnR5cGUgPT0g SVNGVU5DICYmIF9ybF9rZXltYXBbY10uZnVuY3Rpb24gPT0gcmxfdW5pdmVyc2FsX2FyZ3VtZW50 KQotKyAgICB7Ci0rICAgICAgcmxfbnVtZXJpY19hcmcgKj0gNDsKLSsgICAgICByZXR1cm4gMTsK LSsgICAgfQotKwotKyAgYyA9IFVOTUVUQSAoYyk7Ci0gCi0tICBpZiAoIW1lbWJlciAoYywgdmlf bW90aW9uKSkKLSsgIGlmIChfcmxfZGlnaXRfcCAoYykpCi0gICAgIHsKLS0gICAgICBpZiAoX3Js X2RpZ2l0X3AgKGMpKQotLQl7Ci0tCSAgc2F2ZSA9IHJsX251bWVyaWNfYXJnOwotLQkgIHJsX251 bWVyaWNfYXJnID0gX3JsX2RpZ2l0X3ZhbHVlIChjKTsKLS0JICBybF9leHBsaWNpdF9hcmcgPSAx OwotLQkgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9OVU1FUklDQVJHfFJMX1NUQVRFX1ZJTU9USU9O KTsKLS0JICBybF9kaWdpdF9sb29wMSAoKTsKLS0JICBSTF9VTlNFVFNUQVRFIChSTF9TVEFURV9W SU1PVElPTik7Ci0tCSAgcmxfbnVtZXJpY19hcmcgKj0gc2F2ZTsKLS0JICBSTF9TRVRTVEFURShS TF9TVEFURV9NT1JFSU5QVVQpOwotLQkgIGMgPSBybF9yZWFkX2tleSAoKTsJLyogcmVhbCBjb21t YW5kICovCi0tCSAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQpOwotLQkgICpuZXh0 a2V5ID0gYzsKLS0JfQotLSAgICAgIGVsc2UgaWYgKGtleSA9PSBjICYmIChrZXkgPT0gJ2QnIHx8 IGtleSA9PSAneScgfHwga2V5ID09ICdjJykpCi0tCXsKLS0JICBybF9tYXJrID0gcmxfZW5kOwot LQkgIHJsX2JlZ19vZl9saW5lICgxLCBjKTsKLS0JICBfcmxfdmlfbGFzdF9tb3Rpb24gPSBjOwot LQkgIHJldHVybiAoMCk7Ci0tCX0KLSsgICAgICBpZiAocmxfZXhwbGljaXRfYXJnKQotKwlybF9u dW1lcmljX2FyZyA9IChybF9udW1lcmljX2FyZyAqIDEwKSArIF9ybF9kaWdpdF92YWx1ZSAoYyk7 Ci0gICAgICAgZWxzZQotLQlyZXR1cm4gKC0xKTsKLSsJcmxfbnVtZXJpY19hcmcgPSBfcmxfZGln aXRfdmFsdWUgKGMpOwotKyAgICAgIHJsX2V4cGxpY2l0X2FyZyA9IDE7Ci0rICAgICAgcmV0dXJu IDE7CQkvKiBrZWVwIGdvaW5nICovCi0gICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHJs X2NsZWFyX21lc3NhZ2UgKCk7Ci0rICAgICAgcmxfc3R1ZmZfY2hhciAoa2V5KTsKLSsgICAgICBy ZXR1cm4gMDsJCS8qIGRvbmUgKi8KLSsgICAgfQotK30KLSsKLSsvKiBBIHNpbXBsaWZpZWQgbG9v cCBmb3IgdmkuIERvbid0IGRpc3BhdGNoIGtleSBhdCBlbmQuCi0rICAgRG9uJ3QgcmVjb2duaXpl IG1pbnVzIHNpZ24/Ci0rICAgU2hvdWxkIHRoaXMgZG8gcmxfc2F2ZV9wcm9tcHQvcmxfcmVzdG9y ZV9wcm9tcHQ/ICovCi0rc3RhdGljIGludAotK3JsX2RpZ2l0X2xvb3AxICgpCi0rewotKyAgaW50 IGMsIHI7Ci0rCi0rICB3aGlsZSAoMSkKLSsgICAgewotKyAgICAgIGlmIChfcmxfYXJnX292ZXJm bG93ICgpKQotKwlyZXR1cm4gMTsKLSsKLSsgICAgICBjID0gX3JsX2FyZ19nZXRjaGFyICgpOwot KwotKyAgICAgIHIgPSBfcmxfdmlfYXJnX2Rpc3BhdGNoIChjKTsKLSsgICAgICBpZiAociA8PSAw KQotKwlicmVhazsKLSsgICAgfQotKwotKyAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9OVU1FUklD QVJHKTsKLSsgIHJldHVybiAoMCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rX3JsX212Y3h0X2lu aXQgKG0sIG9wLCBrZXkpCi0rICAgICBfcmxfdmltb3Rpb25fY3h0ICptOwotKyAgICAgaW50IG9w LCBrZXk7Ci0rewotKyAgbS0+b3AgPSBvcDsKLSsgIG0tPnN0YXRlID0gbS0+ZmxhZ3MgPSAwOwot KyAgbS0+bmN4dCA9IDA7Ci0rICBtLT5udW1lcmljX2FyZyA9IC0xOwotKyAgbS0+c3RhcnQgPSBy bF9wb2ludDsKLSsgIG0tPmVuZCA9IHJsX2VuZDsKLSsgIG0tPmtleSA9IGtleTsKLSsgIG0tPm1v dGlvbiA9IC0xOwotK30KLSsKLStzdGF0aWMgX3JsX3ZpbW90aW9uX2N4dCAqCi0rX3JsX212Y3h0 X2FsbG9jIChvcCwga2V5KQotKyAgICAgaW50IG9wLCBrZXk7Ci0rewotKyAgX3JsX3ZpbW90aW9u X2N4dCAqbTsKLSsKLSsgIG0gPSB4bWFsbG9jIChzaXplb2YgKF9ybF92aW1vdGlvbl9jeHQpKTsK LSsgIF9ybF9tdmN4dF9pbml0IChtLCBvcCwga2V5KTsKLSsgIHJldHVybiBtOwotK30KLSsKLStz dGF0aWMgdm9pZAotK19ybF9tdmN4dF9kaXNwb3NlIChtKQotKyAgICAgX3JsX3ZpbW90aW9uX2N4 dCAqbTsKLSt7Ci0rICB4ZnJlZSAobSk7Ci0rfQotIAotLSAgX3JsX3ZpX2xhc3RfbW90aW9uID0g YzsKLStzdGF0aWMgaW50Ci0rcmxfZG9tb3ZlX21vdGlvbl9jYWxsYmFjayAobSkKLSsgICAgIF9y bF92aW1vdGlvbl9jeHQgKm07Ci0rewotKyAgaW50IGMsIHNhdmUsIHI7Ci0rICBpbnQgb2xkX2Vu ZDsKLSsKLSsgIF9ybF92aV9sYXN0X21vdGlvbiA9IGMgPSBtLT5tb3Rpb247Ci0gCi0gICAvKiBB cHBlbmQgYSBibGFuayBjaGFyYWN0ZXIgdGVtcG9yYXJpbHkgc28gdGhhdCB0aGUgbW90aW9uIHJv dXRpbmVzCi0gICAgICB3b3JrIHJpZ2h0IGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUuICovCi1AQCAt OTEzLDcgKzEwNTQsNyBAQCBybF92aV9kb21vdmUgKGtleSwgbmV4dGtleSkKLSAKLSAgIC8qIElm IGN3IG9yIGNXLCBiYWNrIHVwIHRvIHRoZSBlbmQgb2YgYSB3b3JkLCBzbyB0aGUgYmVoYXZpb3Vy IG9mIGNlCi0gICAgICBvciBjRSBpcyB0aGUgYWN0dWFsIHJlc3VsdC4gIEJydXRlLWZvcmNlLCBu byBzdWJ0bGV0eS4gKi8KLS0gIGlmIChrZXkgPT0gJ2MnICYmIHJsX3BvaW50ID49IHJsX21hcmsg JiYgKF9ybF90b191cHBlciAoYykgPT0gJ1cnKSkKLSsgIGlmIChtLT5rZXkgPT0gJ2MnICYmIHJs X3BvaW50ID49IHJsX21hcmsgJiYgKF9ybF90b191cHBlciAoYykgPT0gJ1cnKSkKLSAgICAgewot ICAgICAgIC8qIERvbid0IG1vdmUgZmFydGhlciBiYWNrIHRoYW4gd2hlcmUgd2Ugc3RhcnRlZC4g Ki8KLSAgICAgICB3aGlsZSAocmxfcG9pbnQgPiBybF9tYXJrICYmIHdoaXRlc3BhY2UgKHJsX2xp bmVfYnVmZmVyW3JsX3BvaW50XSkpCi1AQCAtOTIyLDcgKzEwNjMsNyBAQCBybF92aV9kb21vdmUg KGtleSwgbmV4dGtleSkKLSAgICAgICAvKiBQb3NpeC4yIHNheXMgdGhhdCBpZiBjdyBvciBjVyBt b3ZlcyB0aGUgY3Vyc29yIHRvd2FyZHMgdGhlIGVuZCBvZgotIAkgdGhlIGxpbmUsIHRoZSBjaGFy YWN0ZXIgdW5kZXIgdGhlIGN1cnNvciBzaG91bGQgYmUgZGVsZXRlZC4gKi8KLSAgICAgICBpZiAo cmxfcG9pbnQgPT0gcmxfbWFyaykKLS0gICAgICAgIHJsX3BvaW50Kys7Ci0rCXJsX3BvaW50Kys7 Ci0gICAgICAgZWxzZQotIAl7Ci0gCSAgLyogTW92ZSBwYXN0IHRoZSBlbmQgb2YgdGhlIHdvcmQg c28gdGhhdCB0aGUga2lsbCBkb2Vzbid0Ci1AQCAtOTM2LDg4ICsxMDc3LDE0MiBAQCBybF92aV9k b21vdmUgKGtleSwgbmV4dGtleSkKLSAgIGlmIChybF9tYXJrIDwgcmxfcG9pbnQpCi0gICAgIFNX QVAgKHJsX3BvaW50LCBybF9tYXJrKTsKLSAKLS0gIHJldHVybiAoMCk7Ci0rI2lmIGRlZmluZWQg KFJFQURMSU5FX0NBTExCQUNLUykKLSsgIGlmIChSTF9JU1NUQVRFIChSTF9TVEFURV9DQUxMQkFD SykpCi0rICAgICgqcmxfcmVkaXNwbGF5X2Z1bmN0aW9uKSgpOwkJLyogbWFrZSBzdXJlIG1vdGlv biBpcyBkaXNwbGF5ZWQgKi8KLSsjZW5kaWYKLSsKLSsgIHIgPSB2aWRvbW92ZV9kaXNwYXRjaCAo bSk7Ci0rCi0rICByZXR1cm4gKHIpOwotIH0KLSAKLS0vKiBQcm9jZXNzIEMgYXMgcGFydCBvZiB0 aGUgY3VycmVudCBudW1lcmljIGFyZ3VtZW50LiAgUmV0dXJuIC0xIGlmIHRoZQotLSAgIGFyZ3Vt ZW50IHNob3VsZCBiZSBhYm9ydGVkLCAwIGlmIHdlIHNob3VsZCBub3QgcmVhZCBhbnkgbW9yZSBj aGFycywgYW5kCi0tICAgMSBpZiB3ZSBzaG91bGQgY29udGludWUgdG8gcmVhZCBjaGFycy4gKi8K LSsjZGVmaW5lIFJMX1ZJTU9WRU5VTUFSRygpCShSTF9JU1NUQVRFIChSTF9TVEFURV9WSU1PVElP TikgJiYgUkxfSVNTVEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FSRykpCi0rCi0gc3RhdGljIGludAot LV9ybF92aV9hcmdfZGlzcGF0Y2ggKGMpCi0tICAgICBpbnQgYzsKLStybF9kb21vdmVfcmVhZF9j YWxsYmFjayAobSkKLSsgICAgIF9ybF92aW1vdGlvbl9jeHQgKm07Ci0gewotLSAgaW50IGtleTsK LSsgIGludCBjLCBzYXZlOwotIAotLSAga2V5ID0gYzsKLS0gIGlmIChjID49IDAgJiYgX3JsX2tl eW1hcFtjXS50eXBlID09IElTRlVOQyAmJiBfcmxfa2V5bWFwW2NdLmZ1bmN0aW9uID09IHJsX3Vu aXZlcnNhbF9hcmd1bWVudCkKLSsgIGMgPSBtLT5tb3Rpb247Ci0rCi0rICBpZiAobWVtYmVyIChj LCB2aV9tb3Rpb24pKQotICAgICB7Ci0tICAgICAgcmxfbnVtZXJpY19hcmcgKj0gNDsKLS0gICAg ICByZXR1cm4gMTsKLSsjaWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJBQ0tTKQotKyAgICAgIC8q IElmIHdlIGp1c3QgcmVhZCBhIHZpLW1vZGUgbW90aW9uIGNvbW1hbmQgbnVtZXJpYyBhcmd1bWVu dCwgdHVybiBvZmYKLSsJIHRoZSBgcmVhZGluZyBudW1lcmljIGFyZycgc3RhdGUgKi8KLSsgICAg ICBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfQ0FMTEJBQ0spICYmIFJMX1ZJTU9WRU5VTUFSRygp KQotKwlSTF9VTlNFVFNUQVRFIChSTF9TVEFURV9OVU1FUklDQVJHKTsKLSsjZW5kaWYKLSsgICAg ICAvKiBTaG91bGQgZG8gZXZlcnl0aGluZywgaW5jbHVkaW5nIHR1cm5pbmcgb2ZmIFJMX1NUQVRF X1ZJTU9USU9OICovCi0rICAgICAgcmV0dXJuIChybF9kb21vdmVfbW90aW9uX2NhbGxiYWNrICht KSk7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKG0tPmtleSA9PSBjICYmIChtLT5rZXkgPT0gJ2QnIHx8 IG0tPmtleSA9PSAneScgfHwgbS0+a2V5ID09ICdjJykpCi0rICAgIHsKLSsgICAgICBybF9tYXJr ID0gcmxfZW5kOwotKyAgICAgIHJsX2JlZ19vZl9saW5lICgxLCBjKTsKLSsgICAgICBfcmxfdmlf bGFzdF9tb3Rpb24gPSBjOwotKyAgICAgIFJMX1VOU0VUU1RBVEUgKFJMX1NUQVRFX1ZJTU9USU9O KTsKLSsgICAgICByZXR1cm4gKHZpZG9tb3ZlX2Rpc3BhdGNoIChtKSk7Ci0gICAgIH0KLS0KLS0g IGMgPSBVTk1FVEEgKGMpOwotLQotLSAgaWYgKF9ybF9kaWdpdF9wIChjKSkKLSsjaWYgZGVmaW5l ZCAoUkVBRExJTkVfQ0FMTEJBQ0tTKQotKyAgLyogWFhYIC0gdGhlc2UgbmVlZCB0byBoYW5kbGUg cmxfdW5pdmVyc2FsX2FyZ3VtZW50IGJpbmRpbmdzICovCi0rICAvKiBSZWFkaW5nIHZpIG1vdGlv biBjaGFyIGNvbnRpbnVpbmcgbnVtZXJpYyBhcmd1bWVudCAqLwotKyAgZWxzZSBpZiAoX3JsX2Rp Z2l0X3AgKGMpICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSAmJiBSTF9WSU1PVkVO VU1BUkcoKSkKLSAgICAgewotLSAgICAgIGlmIChybF9leHBsaWNpdF9hcmcpCi0tCXJsX251bWVy aWNfYXJnID0gKHJsX251bWVyaWNfYXJnICogMTApICsgX3JsX2RpZ2l0X3ZhbHVlIChjKTsKLS0g ICAgICBlbHNlCi0tCXJsX251bWVyaWNfYXJnID0gX3JsX2RpZ2l0X3ZhbHVlIChjKTsKLSsgICAg ICByZXR1cm4gKF9ybF92aV9hcmdfZGlzcGF0Y2ggKGMpKTsKLSsgICAgfQotKyAgLyogUmVhZGlu ZSB2aSBtb3Rpb24gY2hhciBzdGFydGluZyBudW1lcmljIGFyZ3VtZW50ICovCi0rICBlbHNlIGlm IChfcmxfZGlnaXRfcCAoYykgJiYgUkxfSVNTVEFURSAoUkxfU1RBVEVfQ0FMTEJBQ0spICYmIFJM X0lTU1RBVEUgKFJMX1NUQVRFX1ZJTU9USU9OKSAmJiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTlVN RVJJQ0FSRykgPT0gMCkpCi0rICAgIHsKLSsgICAgICBSTF9TRVRTVEFURSAoUkxfU1RBVEVfTlVN RVJJQ0FSRyk7Ci0rICAgICAgcmV0dXJuIChfcmxfdmlfYXJnX2Rpc3BhdGNoIChjKSk7Ci0rICAg IH0KLSsjZW5kaWYKLSsgIGVsc2UgaWYgKF9ybF9kaWdpdF9wIChjKSkKLSsgICAgewotKyAgICAg IC8qIFRoaXMgY29kZSBwYXRoIHRha2VuIHdoZW4gbm90IGluIGNhbGxiYWNrIG1vZGUgKi8KLSsg ICAgICBzYXZlID0gcmxfbnVtZXJpY19hcmc7Ci0rICAgICAgcmxfbnVtZXJpY19hcmcgPSBfcmxf ZGlnaXRfdmFsdWUgKGMpOwotICAgICAgIHJsX2V4cGxpY2l0X2FyZyA9IDE7Ci0tICAgICAgcmV0 dXJuIDE7Ci0rICAgICAgUkxfU0VUU1RBVEUgKFJMX1NUQVRFX05VTUVSSUNBUkcpOwotKyAgICAg IHJsX2RpZ2l0X2xvb3AxICgpOwotKyAgICAgIHJsX251bWVyaWNfYXJnICo9IHNhdmU7Ci0rICAg ICAgYyA9IHJsX3ZpX2RvbW92ZV9nZXRjaGFyIChtKTsKLSsgICAgICBpZiAoYyA8IDApCi0rCXsK LSsJICBtLT5tb3Rpb24gPSAwOwotKwkgIHJldHVybiAtMTsKLSsJfQotKyAgICAgIG0tPm1vdGlv biA9IGM7Ci0rICAgICAgcmV0dXJuIChybF9kb21vdmVfbW90aW9uX2NhbGxiYWNrIChtKSk7Ci0g ICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIHJsX2NsZWFyX21lc3NhZ2UgKCk7Ci0tICAg ICAgcmxfc3R1ZmZfY2hhciAoa2V5KTsKLS0gICAgICByZXR1cm4gMDsKLSsgICAgICBSTF9VTlNF VFNUQVRFIChSTF9TVEFURV9WSU1PVElPTik7Ci0rICAgICAgUkxfVU5TRVRTVEFURSAoUkxfU1RB VEVfTlVNRVJJQ0FSRyk7Ci0rICAgICAgcmV0dXJuICgxKTsKLSAgICAgfQotIH0KLSAKLS0vKiBB IHNpbXBsaWZpZWQgbG9vcCBmb3IgdmkuIERvbid0IGRpc3BhdGNoIGtleSBhdCBlbmQuCi0tICAg RG9uJ3QgcmVjb2duaXplIG1pbnVzIHNpZ24/Ci0tICAgU2hvdWxkIHRoaXMgZG8gcmxfc2F2ZV9w cm9tcHQvcmxfcmVzdG9yZV9wcm9tcHQ/ICovCi0gc3RhdGljIGludAotLXJsX2RpZ2l0X2xvb3Ax ICgpCi0rcmxfdmlfZG9tb3ZlX2dldGNoYXIgKG0pCi0rICAgICBfcmxfdmltb3Rpb25fY3h0ICpt OwotIHsKLS0gIGludCBjLCByOwotKyAgaW50IGM7Ci0gCi0tICB3aGlsZSAoMSkKLS0gICAgewot LSAgICAgIGlmIChfcmxfYXJnX292ZXJmbG93ICgpKQotLQlyZXR1cm4gMTsKLSsgIFJMX1NFVFNU QVRFKFJMX1NUQVRFX01PUkVJTlBVVCk7Ci0rICBjID0gcmxfcmVhZF9rZXkgKCk7Ci0rICBSTF9V TlNFVFNUQVRFKFJMX1NUQVRFX01PUkVJTlBVVCk7Ci0gCi0tICAgICAgYyA9IF9ybF9hcmdfZ2V0 Y2hhciAoKTsKLSsgIHJldHVybiBjOwotK30KLSAKLS0gICAgICByID0gX3JsX3ZpX2FyZ19kaXNw YXRjaCAoYyk7Ci0tICAgICAgaWYgKHIgPD0gMCkKLS0JYnJlYWs7Ci0tICAgIH0KLSsjaWYgZGVm aW5lZCAoUkVBRExJTkVfQ0FMTEJBQ0tTKQotK2ludAotK19ybF92aV9kb21vdmVfY2FsbGJhY2sg KG0pCi0rICAgICBfcmxfdmltb3Rpb25fY3h0ICptOwotK3sKLSsgIGludCBjLCByOwotIAotLSAg UkxfVU5TRVRTVEFURShSTF9TVEFURV9OVU1FUklDQVJHKTsKLS0gIHJldHVybiAoMCk7Ci0rICBt LT5tb3Rpb24gPSBjID0gcmxfdmlfZG9tb3ZlX2dldGNoYXIgKG0pOwotKyAgLyogWFhYIC0gd2hh dCB0byBkbyBpZiB0aGlzIHJldHVybnMgLTE/ICBTaG91bGQgd2UgcmV0dXJuIDEgZm9yIGVvZiB0 bwotKyAgICAgY2FsbGJhY2sgY29kZT8gKi8KLSsgIHIgPSBybF9kb21vdmVfcmVhZF9jYWxsYmFj ayAobSk7Ci0rCi0rICByZXR1cm4gKChyID09IDApID8gciA6IDEpOwkvKiBub3JtYWxpemUgcmV0 dXJuIHZhbHVlcyAqLwotIH0KLSsjZW5kaWYKLSAKLSsvKiBUaGlzIGNvZGUgcGF0aCB0YWtlbiB3 aGVuIG5vdCBpbiBjYWxsYmFjayBtb2RlLiAqLwotIGludAotLXJsX3ZpX2RlbGV0ZV90byAoY291 bnQsIGtleSkKLS0gICAgIGludCBjb3VudCwga2V5OwotK3JsX3ZpX2RvbW92ZSAoeCwgaWdub3Jl KQotKyAgICAgaW50IHgsICppZ25vcmU7Ci0gewotLSAgaW50IGM7Ci0rICBpbnQgcjsKLSsgIF9y bF92aW1vdGlvbl9jeHQgKm07Ci0gCi0tICBpZiAoX3JsX3VwcGVyY2FzZV9wIChrZXkpKQotLSAg ICBybF9zdHVmZl9jaGFyICgnJCcpOwotLSAgZWxzZSBpZiAodmlfcmVkb2luZykKLS0gICAgcmxf c3R1ZmZfY2hhciAoX3JsX3ZpX2xhc3RfbW90aW9uKTsKLSsgIG0gPSBfcmxfdmltdmN4dDsKLSsg ICppZ25vcmUgPSBtLT5tb3Rpb24gPSBybF92aV9kb21vdmVfZ2V0Y2hhciAobSk7Ci0gCi0tICBp ZiAocmxfdmlfZG9tb3ZlIChrZXksICZjKSkKLSsgIGlmIChtLT5tb3Rpb24gPCAwKQotICAgICB7 Ci0tICAgICAgcmxfZGluZyAoKTsKLSsgICAgICBtLT5tb3Rpb24gPSAwOwotICAgICAgIHJldHVy biAtMTsKLSAgICAgfQotIAotKyAgcmV0dXJuIChybF9kb21vdmVfcmVhZF9jYWxsYmFjayAobSkp OwotK30KLSsKLStzdGF0aWMgaW50Ci0rdmlfZGVsZXRlX2Rpc3BhdGNoIChtKQotKyAgICAgX3Js X3ZpbW90aW9uX2N4dCAqbTsKLSt7Ci0gICAvKiBUaGVzZSBhcmUgdGhlIG1vdGlvbiBjb21tYW5k cyB0aGF0IGRvIG5vdCByZXF1aXJlIGFkanVzdGluZyB0aGUKLSAgICAgIG1hcmsuICovCi0tICBp ZiAoKHN0cmNociAoIiBsfGheMGJCIiwgYykgPT0gMCkgJiYgKHJsX21hcmsgPCBybF9lbmQpKQot KyAgaWYgKCgoc3RyY2hyICgiIGx8aF4wYkJGVGAiLCBtLT5tb3Rpb24pID09IDApICYmIChybF9w b2ludCA+PSBtLT5zdGFydCkpICYmCi0rICAgICAgKHJsX21hcmsgPCBybF9lbmQpKQotICAgICBy bF9tYXJrKys7Ci0gCi0gICBybF9raWxsX3RleHQgKHJsX3BvaW50LCBybF9tYXJrKTsKLUBAIC0x MDI1LDMzICsxMjIwLDYxIEBAIHJsX3ZpX2RlbGV0ZV90byAoY291bnQsIGtleSkKLSB9Ci0gCi0g aW50Ci0tcmxfdmlfY2hhbmdlX3RvIChjb3VudCwga2V5KQotK3JsX3ZpX2RlbGV0ZV90byAoY291 bnQsIGtleSkKLSAgICAgIGludCBjb3VudCwga2V5OwotIHsKLS0gIGludCBjLCBzdGFydF9wb3M7 Ci0rICBpbnQgYywgcjsKLSAKLSsgIF9ybF92aW12Y3h0ID0gX3JsX212Y3h0X2FsbG9jIChWSU1f REVMRVRFLCBrZXkpOwotKyAgX3JsX3ZpbXZjeHQtPnN0YXJ0ID0gcmxfcG9pbnQ7Ci0rCi0rICBy bF9tYXJrID0gcmxfcG9pbnQ7Ci0gICBpZiAoX3JsX3VwcGVyY2FzZV9wIChrZXkpKQotLSAgICBy bF9zdHVmZl9jaGFyICgnJCcpOwotKyAgICB7Ci0rICAgICAgX3JsX3ZpbXZjeHQtPm1vdGlvbiA9 ICckJzsKLSsgICAgICByID0gcmxfZG9tb3ZlX21vdGlvbl9jYWxsYmFjayAoX3JsX3ZpbXZjeHQp OwotKyAgICB9Ci0gICBlbHNlIGlmICh2aV9yZWRvaW5nKQotLSAgICBybF9zdHVmZl9jaGFyIChf cmxfdmlfbGFzdF9tb3Rpb24pOwotLQotLSAgc3RhcnRfcG9zID0gcmxfcG9pbnQ7Ci0rICAgIHsK LSsgICAgICBfcmxfdmltdmN4dC0+bW90aW9uID0gX3JsX3ZpX2xhc3RfbW90aW9uOwotKyAgICAg IHIgPSBybF9kb21vdmVfbW90aW9uX2NhbGxiYWNrIChfcmxfdmltdmN4dCk7Ci0rICAgIH0KLSsj aWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJBQ0tTKQotKyAgZWxzZSBpZiAoUkxfSVNTVEFURSAo UkxfU1RBVEVfQ0FMTEJBQ0spKQotKyAgICB7Ci0rICAgICAgUkxfU0VUU1RBVEUgKFJMX1NUQVRF X1ZJTU9USU9OKTsKLSsgICAgICByZXR1cm4gKDApOwotKyAgICB9Ci0rI2VuZGlmCi0rICBlbHNl Ci0rICAgIHIgPSBybF92aV9kb21vdmUgKGtleSwgJmMpOwotIAotLSAgaWYgKHJsX3ZpX2RvbW92 ZSAoa2V5LCAmYykpCi0rICBpZiAociA8IDApCi0gICAgIHsKLSAgICAgICBybF9kaW5nICgpOwot LSAgICAgIHJldHVybiAtMTsKLSsgICAgICByID0gLTE7Ci0gICAgIH0KLSAKLSsgIF9ybF9tdmN4 dF9kaXNwb3NlIChfcmxfdmltdmN4dCk7Ci0rICBfcmxfdmltdmN4dCA9IDA7Ci0rCi0rICByZXR1 cm4gcjsKLSt9Ci0rCi0rc3RhdGljIGludAotK3ZpX2NoYW5nZV9kaXNwYXRjaCAobSkKLSsgICAg IF9ybF92aW1vdGlvbl9jeHQgKm07Ci0rewotICAgLyogVGhlc2UgYXJlIHRoZSBtb3Rpb24gY29t bWFuZHMgdGhhdCBkbyBub3QgcmVxdWlyZSBhZGp1c3RpbmcgdGhlCi0gICAgICBtYXJrLiAgY1t3 V10gYXJlIGhhbmRsZWQgYnkgc3BlY2lhbC1jYXNlIGNvZGUgaW4gcmxfdmlfZG9tb3ZlKCksCi0g ICAgICBhbmQgYWxyZWFkeSBsZWF2ZSB0aGUgbWFyayBhdCB0aGUgY29ycmVjdCBsb2NhdGlvbi4g Ki8KLS0gIGlmICgoc3RyY2hyICgiIGx8aHdXXjBiQiIsIGMpID09IDApICYmIChybF9tYXJrIDwg cmxfZW5kKSkKLSsgIGlmICgoKHN0cmNociAoIiBsfGh3V14wYkJGVGAiLCBtLT5tb3Rpb24pID09 IDApICYmIChybF9wb2ludCA+PSBtLT5zdGFydCkpICYmCi0rICAgICAgKHJsX21hcmsgPCBybF9l bmQpKQotICAgICBybF9tYXJrKys7Ci0gCi0gICAvKiBUaGUgY3Vyc29yIG5ldmVyIG1vdmVzIHdp dGggY1t3V10uICovCi0tICBpZiAoKF9ybF90b191cHBlciAoYykgPT0gJ1cnKSAmJiBybF9wb2lu dCA8IHN0YXJ0X3BvcykKLS0gICAgcmxfcG9pbnQgPSBzdGFydF9wb3M7Ci0rICBpZiAoKF9ybF90 b191cHBlciAobS0+bW90aW9uKSA9PSAnVycpICYmIHJsX3BvaW50IDwgbS0+c3RhcnQpCi0rICAg IHJsX3BvaW50ID0gbS0+c3RhcnQ7Ci0gCi0gICBpZiAodmlfcmVkb2luZykKLSAgICAgewotQEAg LTEwNjksNDkgKzEyOTIsMTQ1IEBAIHJsX3ZpX2NoYW5nZV90byAoY291bnQsIGtleSkKLSAgICAg ICBybF9iZWdpbl91bmRvX2dyb3VwICgpOwkJLyogdG8gbWFrZSB0aGUgYHUnIGNvbW1hbmQgd29y ayAqLwotICAgICAgIHJsX2tpbGxfdGV4dCAocmxfcG9pbnQsIHJsX21hcmspOwotICAgICAgIC8q IGBDJyBkb2VzIG5vdCBzYXZlIHRoZSB0ZXh0IGluc2VydGVkIGZvciB1bmRvaW5nIG9yIHJlZG9p bmcuICovCi0tICAgICAgaWYgKF9ybF91cHBlcmNhc2VfcCAoa2V5KSA9PSAwKQotLSAgICAgICAg X3JsX3ZpX2RvaW5nX2luc2VydCA9IDE7Ci0tICAgICAgcmxfdmlfc3RhcnRfaW5zZXJ0aW5nIChr ZXksIHJsX251bWVyaWNfYXJnLCBybF9hcmdfc2lnbik7Ci0rICAgICAgaWYgKF9ybF91cHBlcmNh c2VfcCAobS0+a2V5KSA9PSAwKQotKwlfcmxfdmlfZG9pbmdfaW5zZXJ0ID0gMTsKLSsgICAgICAv KiBYWFggLS0gVE9ETyAtLSB1c2UgbS0+bnVtZXJpY2FyZz8gKi8KLSsgICAgICBybF92aV9zdGFy dF9pbnNlcnRpbmcgKG0tPmtleSwgcmxfbnVtZXJpY19hcmcsIHJsX2FyZ19zaWduKTsKLSAgICAg fQotIAotICAgcmV0dXJuICgwKTsKLSB9Ci0gCi0gaW50Ci0tcmxfdmlfeWFua190byAoY291bnQs IGtleSkKLStybF92aV9jaGFuZ2VfdG8gKGNvdW50LCBrZXkpCi0gICAgICBpbnQgY291bnQsIGtl eTsKLSB7Ci0tICBpbnQgYywgc2F2ZTsKLSsgIGludCBjLCByOwotKwotKyAgX3JsX3ZpbXZjeHQg PSBfcmxfbXZjeHRfYWxsb2MgKFZJTV9DSEFOR0UsIGtleSk7Ci0rICBfcmxfdmltdmN4dC0+c3Rh cnQgPSBybF9wb2ludDsKLSAKLS0gIHNhdmUgPSBybF9wb2ludDsKLSsgIHJsX21hcmsgPSBybF9w b2ludDsKLSAgIGlmIChfcmxfdXBwZXJjYXNlX3AgKGtleSkpCi0tICAgIHJsX3N0dWZmX2NoYXIg KCckJyk7Ci0rICAgIHsKLSsgICAgICBfcmxfdmltdmN4dC0+bW90aW9uID0gJyQnOwotKyAgICAg IHIgPSBybF9kb21vdmVfbW90aW9uX2NhbGxiYWNrIChfcmxfdmltdmN4dCk7Ci0rICAgIH0KLSsg IGVsc2UgaWYgKHZpX3JlZG9pbmcpCi0rICAgIHsKLSsgICAgICBfcmxfdmltdmN4dC0+bW90aW9u ID0gX3JsX3ZpX2xhc3RfbW90aW9uOwotKyAgICAgIHIgPSBybF9kb21vdmVfbW90aW9uX2NhbGxi YWNrIChfcmxfdmltdmN4dCk7Ci0rICAgIH0KLSsjaWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJB Q0tTKQotKyAgZWxzZSBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfQ0FMTEJBQ0spKQotKyAgICB7 Ci0rICAgICAgUkxfU0VUU1RBVEUgKFJMX1NUQVRFX1ZJTU9USU9OKTsKLSsgICAgICByZXR1cm4g KDApOwotKyAgICB9Ci0rI2VuZGlmCi0rICBlbHNlCi0rICAgIHIgPSBybF92aV9kb21vdmUgKGtl eSwgJmMpOwotIAotLSAgaWYgKHJsX3ZpX2RvbW92ZSAoa2V5LCAmYykpCi0rICBpZiAociA8IDAp Ci0gICAgIHsKLSAgICAgICBybF9kaW5nICgpOwotLSAgICAgIHJldHVybiAtMTsKLSsgICAgICBy ID0gLTE7CS8qIG5vcm1hbGl6ZSByZXR1cm4gdmFsdWUgKi8KLSAgICAgfQotIAotKyAgX3JsX212 Y3h0X2Rpc3Bvc2UgKF9ybF92aW12Y3h0KTsKLSsgIF9ybF92aW12Y3h0ID0gMDsKLSsKLSsgIHJl dHVybiByOwotK30KLSsKLStzdGF0aWMgaW50Ci0rdmlfeWFua19kaXNwYXRjaCAobSkKLSsgICAg IF9ybF92aW1vdGlvbl9jeHQgKm07Ci0rewotICAgLyogVGhlc2UgYXJlIHRoZSBtb3Rpb24gY29t bWFuZHMgdGhhdCBkbyBub3QgcmVxdWlyZSBhZGp1c3RpbmcgdGhlCi0gICAgICBtYXJrLiAqLwot LSAgaWYgKChzdHJjaHIgKCIgbHxoXjAlYkIiLCBjKSA9PSAwKSAmJiAocmxfbWFyayA8IHJsX2Vu ZCkpCi0rICBpZiAoKChzdHJjaHIgKCIgbHxoXjAlYkJGVGAiLCBtLT5tb3Rpb24pID09IDApICYm IChybF9wb2ludCA+PSBtLT5zdGFydCkpICYmCi0rICAgICAgKHJsX21hcmsgPCBybF9lbmQpKQot ICAgICBybF9tYXJrKys7Ci0gCi0gICBybF9iZWdpbl91bmRvX2dyb3VwICgpOwotICAgcmxfa2ls bF90ZXh0IChybF9wb2ludCwgcmxfbWFyayk7Ci0gICBybF9lbmRfdW5kb19ncm91cCAoKTsKLSAg IHJsX2RvX3VuZG8gKCk7Ci0tICBybF9wb2ludCA9IHNhdmU7Ci0rICBybF9wb2ludCA9IG0tPnN0 YXJ0OwotIAotICAgcmV0dXJuICgwKTsKLSB9Ci0gCi0gaW50Ci0rcmxfdmlfeWFua190byAoY291 bnQsIGtleSkKLSsgICAgIGludCBjb3VudCwga2V5OwotK3sKLSsgIGludCBjLCByOwotKwotKyAg X3JsX3ZpbXZjeHQgPSBfcmxfbXZjeHRfYWxsb2MgKFZJTV9ZQU5LLCBrZXkpOwotKyAgX3JsX3Zp bXZjeHQtPnN0YXJ0ID0gcmxfcG9pbnQ7Ci0rCi0rICBybF9tYXJrID0gcmxfcG9pbnQ7Ci0rICBp ZiAoX3JsX3VwcGVyY2FzZV9wIChrZXkpKQotKyAgICB7Ci0rICAgICAgX3JsX3ZpbXZjeHQtPm1v dGlvbiA9ICckJzsKLSsgICAgICByID0gcmxfZG9tb3ZlX21vdGlvbl9jYWxsYmFjayAoX3JsX3Zp bXZjeHQpOwotKyAgICB9Ci0rI2lmIGRlZmluZWQgKFJFQURMSU5FX0NBTExCQUNLUykKLSsgIGVs c2UgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSkKLSsgICAgewotKyAgICAgIFJM X1NFVFNUQVRFIChSTF9TVEFURV9WSU1PVElPTik7Ci0rICAgICAgcmV0dXJuICgwKTsKLSsgICAg fQotKyNlbmRpZgotKyAgZWxzZQotKyAgICByID0gcmxfdmlfZG9tb3ZlIChrZXksICZjKTsKLSsK LSsgIGlmIChyIDwgMCkKLSsgICAgewotKyAgICAgIHJsX2RpbmcgKCk7Ci0rICAgICAgciA9IC0x OwotKyAgICB9Ci0rCi0rICBfcmxfbXZjeHRfZGlzcG9zZSAoX3JsX3ZpbXZjeHQpOwotKyAgX3Js X3ZpbXZjeHQgPSAwOwotKwotKyAgcmV0dXJuIHI7Ci0rfQotKwotK3N0YXRpYyBpbnQKLSt2aWRv bW92ZV9kaXNwYXRjaCAobSkKLSsgICAgIF9ybF92aW1vdGlvbl9jeHQgKm07Ci0rewotKyAgaW50 IHI7Ci0rCi0rICBzd2l0Y2ggKG0tPm9wKQotKyAgICB7Ci0rICAgIGNhc2UgVklNX0RFTEVURToK LSsgICAgICByID0gdmlfZGVsZXRlX2Rpc3BhdGNoIChtKTsKLSsgICAgICBicmVhazsKLSsgICAg Y2FzZSBWSU1fQ0hBTkdFOgotKyAgICAgIHIgPSB2aV9jaGFuZ2VfZGlzcGF0Y2ggKG0pOwotKyAg ICAgIGJyZWFrOwotKyAgICBjYXNlIFZJTV9ZQU5LOgotKyAgICAgIHIgPSB2aV95YW5rX2Rpc3Bh dGNoIChtKTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBfcmxfZXJybXNn ICgidmlkb21vdmVfZGlzcGF0Y2g6IHVua25vd24gb3BlcmF0b3IgJWQiLCBtLT5vcCk7Ci0rICAg ICAgciA9IDE7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgIFJMX1VOU0VUU1RBVEUgKFJM X1NUQVRFX1ZJTU9USU9OKTsKLSsgIHJldHVybiByOwotK30KLSsKLStpbnQKLSBybF92aV9ydWJv dXQgKGNvdW50LCBrZXkpCi0gICAgICBpbnQgY291bnQsIGtleTsKLSB7Ci0tICBpbnQgcCwgb3Bv aW50OwotKyAgaW50IG9wb2ludDsKLSAKLSAgIGlmIChjb3VudCA8IDApCi0gICAgIHJldHVybiAo cmxfdmlfZGVsZXRlICgtY291bnQsIGtleSkpOwotQEAgLTExOTMsMTQgKzE1MTIsMjIgQEAgc3Rh dGljIGludAotIF9ybF92aV9jYWxsYmFja19jaGFyX3NlYXJjaCAoZGF0YSkKLSAgICAgIF9ybF9j YWxsYmFja19nZW5lcmljX2FyZyAqZGF0YTsKLSB7Ci0rICBpbnQgYzsKLSAjaWYgZGVmaW5lZCAo SEFORExFX01VTFRJQllURSkKLS0gIF9ybF92aV9sYXN0X3NlYXJjaF9tYmxlbiA9IF9ybF9yZWFk X21iY2hhciAoX3JsX3ZpX2xhc3Rfc2VhcmNoX21iY2hhciwgTUJfTEVOX01BWCk7Ci0rICBjID0g X3JsX3ZpX2xhc3Rfc2VhcmNoX21ibGVuID0gX3JsX3JlYWRfbWJjaGFyIChfcmxfdmlfbGFzdF9z ZWFyY2hfbWJjaGFyLCBNQl9MRU5fTUFYKTsKLSAjZWxzZQotICAgUkxfU0VUU1RBVEUoUkxfU1RB VEVfTU9SRUlOUFVUKTsKLS0gIF9ybF92aV9sYXN0X3NlYXJjaF9jaGFyID0gcmxfcmVhZF9rZXkg KCk7Ci0rICBjID0gcmxfcmVhZF9rZXkgKCk7Ci0gICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX01P UkVJTlBVVCk7Ci0gI2VuZGlmCi0gCi0rICBpZiAoYyA8PSAwKQotKyAgICByZXR1cm4gLTE7Ci0r Ci0rI2lmICFkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotKyAgX3JsX3ZpX2xhc3Rfc2VhcmNo X2NoYXIgPSBjOwotKyNlbmRpZgotKwotICAgX3JsX2NhbGxiYWNrX2Z1bmMgPSAwOwotICAgX3Js X3dhbnRfcmVkaXNwbGF5ID0gMTsKLSAKLUBAIC0xMjE2LDYgKzE1NDMsNyBAQCBpbnQKLSBybF92 aV9jaGFyX3NlYXJjaCAoY291bnQsIGtleSkKLSAgICAgIGludCBjb3VudCwga2V5OwotIHsKLSsg IGludCBjOwotICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotICAgc3RhdGljIGNoYXIg KnRhcmdldDsKLSAgIHN0YXRpYyBpbnQgdGxlbjsKLUBAIC0xMjI0LDI3ICsxNTUyLDM4IEBAIHJs X3ZpX2NoYXJfc2VhcmNoIChjb3VudCwga2V5KQotICNlbmRpZgotIAotICAgaWYgKGtleSA9PSAn OycgfHwga2V5ID09ICcsJykKLS0gICAgX3JsX2NzX2RpciA9IChrZXkgPT0gJzsnKSA/IF9ybF9j c19vcmlnX2RpciA6IC1fcmxfY3Nfb3JpZ19kaXI7Ci0rICAgIHsKLSsgICAgICBpZiAoX3JsX2Nz X29yaWdfZGlyID09IDApCi0rCXJldHVybiAtMTsKLSsjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJ QllURSkKLSsgICAgICBpZiAoX3JsX3ZpX2xhc3Rfc2VhcmNoX21ibGVuID09IDApCi0rCXJldHVy biAtMTsKLSsjZWxzZQotKyAgICAgIGlmIChfcmxfdmlfbGFzdF9zZWFyY2hfY2hhciA9PSAwKQot KwlyZXR1cm4gLTE7Ci0rI2VuZGlmCi0rICAgICAgX3JsX2NzX2RpciA9IChrZXkgPT0gJzsnKSA/ IF9ybF9jc19vcmlnX2RpciA6IC1fcmxfY3Nfb3JpZ19kaXI7Ci0rICAgIH0KLSAgIGVsc2UKLSAg ICAgewotICAgICAgIHN3aXRjaCAoa2V5KQotLSAgICAgICAgewotLSAgICAgICAgY2FzZSAndCc6 Ci0tICAgICAgICAgIF9ybF9jc19vcmlnX2RpciA9IF9ybF9jc19kaXIgPSBGVE87Ci0tICAgICAg ICAgIGJyZWFrOwotLQotLSAgICAgICAgY2FzZSAnVCc6Ci0tICAgICAgICAgIF9ybF9jc19vcmln X2RpciA9IF9ybF9jc19kaXIgPSBCVE87Ci0tICAgICAgICAgIGJyZWFrOwotLQotLSAgICAgICAg Y2FzZSAnZic6Ci0tICAgICAgICAgIF9ybF9jc19vcmlnX2RpciA9IF9ybF9jc19kaXIgPSBGRklO RDsKLS0gICAgICAgICAgYnJlYWs7Ci0tCi0tICAgICAgICBjYXNlICdGJzoKLS0gICAgICAgICAg X3JsX2NzX29yaWdfZGlyID0gX3JsX2NzX2RpciA9IEJGSU5EOwotLSAgICAgICAgICBicmVhazsK LS0gICAgICAgIH0KLSsJewotKwljYXNlICd0JzoKLSsJICBfcmxfY3Nfb3JpZ19kaXIgPSBfcmxf Y3NfZGlyID0gRlRPOwotKwkgIGJyZWFrOwotKwotKwljYXNlICdUJzoKLSsJICBfcmxfY3Nfb3Jp Z19kaXIgPSBfcmxfY3NfZGlyID0gQlRPOwotKwkgIGJyZWFrOwotKwotKwljYXNlICdmJzoKLSsJ ICBfcmxfY3Nfb3JpZ19kaXIgPSBfcmxfY3NfZGlyID0gRkZJTkQ7Ci0rCSAgYnJlYWs7Ci0rCi0r CWNhc2UgJ0YnOgotKwkgIF9ybF9jc19vcmlnX2RpciA9IF9ybF9jc19kaXIgPSBCRklORDsKLSsJ ICBicmVhazsKLSsJfQotIAotICAgICAgIGlmICh2aV9yZWRvaW5nKQotIAl7Ci1AQCAtMTI1Miwy MSArMTU5MSwyNyBAQCBybF92aV9jaGFyX3NlYXJjaCAoY291bnQsIGtleSkKLSAJfQotICNpZiBk ZWZpbmVkIChSRUFETElORV9DQUxMQkFDS1MpCi0gICAgICAgZWxzZSBpZiAoUkxfSVNTVEFURSAo UkxfU1RBVEVfQ0FMTEJBQ0spKQotLSAgICAgICAgewotLSAgICAgICAgICBfcmxfY2FsbGJhY2tf ZGF0YSA9IF9ybF9jYWxsYmFja19kYXRhX2FsbG9jIChjb3VudCk7Ci0tICAgICAgICAgIF9ybF9j YWxsYmFja19kYXRhLT5pMSA9IF9ybF9jc19kaXI7Ci0tICAgICAgICAgIF9ybF9jYWxsYmFja19m dW5jID0gX3JsX3ZpX2NhbGxiYWNrX2NoYXJfc2VhcmNoOwotLSAgICAgICAgICByZXR1cm4gKDAp OwotLSAgICAgICAgfQotKwl7Ci0rCSAgX3JsX2NhbGxiYWNrX2RhdGEgPSBfcmxfY2FsbGJhY2tf ZGF0YV9hbGxvYyAoY291bnQpOwotKwkgIF9ybF9jYWxsYmFja19kYXRhLT5pMSA9IF9ybF9jc19k aXI7Ci0rCSAgX3JsX2NhbGxiYWNrX2Z1bmMgPSBfcmxfdmlfY2FsbGJhY2tfY2hhcl9zZWFyY2g7 Ci0rCSAgcmV0dXJuICgwKTsKLSsJfQotICNlbmRpZgotICAgICAgIGVsc2UKLSAJewotICNpZiBk ZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotLQkgIF9ybF92aV9sYXN0X3NlYXJjaF9tYmxlbiA9 IF9ybF9yZWFkX21iY2hhciAoX3JsX3ZpX2xhc3Rfc2VhcmNoX21iY2hhciwgTUJfTEVOX01BWCk7 Ci0rCSAgYyA9IF9ybF9yZWFkX21iY2hhciAoX3JsX3ZpX2xhc3Rfc2VhcmNoX21iY2hhciwgTUJf TEVOX01BWCk7Ci0rCSAgaWYgKGMgPD0gMCkKLSsJICAgIHJldHVybiAtMTsKLSsJICBfcmxfdmlf bGFzdF9zZWFyY2hfbWJsZW4gPSBjOwotICNlbHNlCi0gCSAgUkxfU0VUU1RBVEUoUkxfU1RBVEVf TU9SRUlOUFVUKTsKLS0JICBfcmxfdmlfbGFzdF9zZWFyY2hfY2hhciA9IHJsX3JlYWRfa2V5ICgp OwotKwkgIGMgPSBybF9yZWFkX2tleSAoKTsKLSAJICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX01P UkVJTlBVVCk7Ci0rCSAgaWYgKGMgPCAwKQotKwkgICAgcmV0dXJuIC0xOwotKwkgIF9ybF92aV9s YXN0X3NlYXJjaF9jaGFyID0gYzsKLSAjZW5kaWYKLSAJfQotICAgICB9Ci1AQCAtMTMwMiw3ICsx NjQ3LDcgQEAgcmxfdmlfbWF0Y2ggKGlnbm9yZSwga2V5KQotIAkgICAgICBwcmUgPSBybF9wb2lu dDsKLSAJICAgICAgcmxfZm9yd2FyZF9jaGFyICgxLCBrZXkpOwotIAkgICAgICBpZiAocHJlID09 IHJsX3BvaW50KQotLQkgICAgICAgIGJyZWFrOwotKwkJYnJlYWs7Ci0gCSAgICB9Ci0gCX0KLSAg ICAgICBlbHNlCi1AQCAtMTMzMSw3ICsxNjc2LDcgQEAgcmxfdmlfbWF0Y2ggKGlnbm9yZSwga2V5 KQotIAkgICAgewotIAkgICAgICBwb3MgPSBfcmxfZmluZF9wcmV2X21iY2hhciAocmxfbGluZV9i dWZmZXIsIHBvcywgTUJfRklORF9BTlkpOwotIAkgICAgICBpZiAodG1wID09IHBvcykKLS0JICAg ICAgICBwb3MtLTsKLSsJCXBvcy0tOwotIAkgICAgfQotIAkgIGlmIChwb3MgPj0gMCkKLSAJICAg IHsKLUBAIC0xNDI2LDkgKzE3NzEsOSBAQCBfcmxfdmlfY2hhbmdlX2NoYXIgKGNvdW50LCBjLCBt YikKLSB9Ci0gCi0gc3RhdGljIGludAotLV9ybF92aV9jYWxsYmFja19nZXRjaGFyIChtYiwgbWJs ZW4pCi0rX3JsX3ZpX2NhbGxiYWNrX2dldGNoYXIgKG1iLCBtbGVuKQotICAgICAgY2hhciAqbWI7 Ci0tICAgICBpbnQgbWJsZW47Ci0rICAgICBpbnQgbWxlbjsKLSB7Ci0gICBpbnQgYzsKLSAKLUBA IC0xNDM2LDkgKzE3ODEsMTIgQEAgX3JsX3ZpX2NhbGxiYWNrX2dldGNoYXIgKG1iLCBtYmxlbikK LSAgIGMgPSBybF9yZWFkX2tleSAoKTsKLSAgIFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfTU9SRUlO UFVUKTsKLSAKLSsgIGlmIChjIDwgMCkKLSsgICAgcmV0dXJuIC0xOwotKwotICNpZiBkZWZpbmVk IChIQU5ETEVfTVVMVElCWVRFKQotICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3Jp ZW50ZWQgPT0gMCkKLS0gICAgYyA9IF9ybF9yZWFkX21ic3RyaW5nIChjLCBtYiwgbWJsZW4pOwot KyAgICBjID0gX3JsX3JlYWRfbWJzdHJpbmcgKGMsIG1iLCBtbGVuKTsKLSAjZW5kaWYKLSAKLSAg IHJldHVybiBjOwotQEAgLTE0NTQsNiArMTgwMiw5IEBAIF9ybF92aV9jYWxsYmFja19jaGFuZ2Vf Y2hhciAoZGF0YSkKLSAKLSAgIF9ybF92aV9sYXN0X3JlcGxhY2VtZW50ID0gYyA9IF9ybF92aV9j YWxsYmFja19nZXRjaGFyIChtYiwgTUJfTEVOX01BWCk7Ci0gCi0rICBpZiAoYyA8IDApCi0rICAg IHJldHVybiAtMTsKLSsKLSAgIF9ybF9jYWxsYmFja19mdW5jID0gMDsKLSAgIF9ybF93YW50X3Jl ZGlzcGxheSA9IDE7Ci0gCi1AQCAtMTQ4NSw2ICsxODM2LDkgQEAgcmxfdmlfY2hhbmdlX2NoYXIg KGNvdW50LCBrZXkpCi0gICBlbHNlCi0gICAgIF9ybF92aV9sYXN0X3JlcGxhY2VtZW50ID0gYyA9 IF9ybF92aV9jYWxsYmFja19nZXRjaGFyIChtYiwgTUJfTEVOX01BWCk7Ci0gCi0rICBpZiAoYyA8 IDApCi0rICAgIHJldHVybiAtMTsKLSsKLSAgIHJldHVybiAoX3JsX3ZpX2NoYW5nZV9jaGFyIChj b3VudCwgYywgbWIpKTsKLSB9Ci0gCi1AQCAtMTU3MCw4ICsxOTI0LDggQEAgcmxfdmlfcmVwbGFj ZSAoY291bnQsIGtleSkKLSAgICAgICB2aV9yZXBsYWNlX21hcFtORVdMSU5FXS5mdW5jdGlvbiA9 IHJsX25ld2xpbmU7Ci0gCi0gICAgICAgLyogSWYgdGhlIG5vcm1hbCB2aSBpbnNlcnRpb24ga2V5 bWFwIGhhcyBeSCBib3VuZCB0byBlcmFzZSwgZG8gdGhlCi0tICAgICAgICAgc2FtZSBoZXJlLiAg UHJvYmFibHkgc2hvdWxkIHJlbW92ZSB0aGUgYXNzaWdubWVudCB0byBSVUJPVVQgdXAKLS0gICAg ICAgICB0aGVyZSwgYnV0IEkgZG9uJ3QgdGhpbmsgaXQgd2lsbCBtYWtlIGEgZGlmZmVyZW5jZSBp biByZWFsIGxpZmUuICovCi0rCSBzYW1lIGhlcmUuICBQcm9iYWJseSBzaG91bGQgcmVtb3ZlIHRo ZSBhc3NpZ25tZW50IHRvIFJVQk9VVCB1cAotKwkgdGhlcmUsIGJ1dCBJIGRvbid0IHRoaW5rIGl0 IHdpbGwgbWFrZSBhIGRpZmZlcmVuY2UgaW4gcmVhbCBsaWZlLiAqLwotICAgICAgIGlmICh2aV9p bnNlcnRpb25fa2V5bWFwW0NUUkwgKCdIJyldLnR5cGUgPT0gSVNGVU5DICYmCi0gCSAgdmlfaW5z ZXJ0aW9uX2tleW1hcFtDVFJMICgnSCcpXS5mdW5jdGlvbiA9PSBybF9ydWJvdXQpCi0gCXZpX3Jl cGxhY2VfbWFwW0NUUkwgKCdIJyldLmZ1bmN0aW9uID0gcmxfdmlfb3ZlcnN0cmlrZV9kZWxldGU7 Ci1AQCAtMTYxOSw3ICsxOTczLDcgQEAgX3JsX3ZpX3NldF9tYXJrICgpCi0gICBjaCA9IHJsX3Jl YWRfa2V5ICgpOwotICAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQpOwotIAotLSAg aWYgKGNoIDwgJ2EnIHx8IGNoID4gJ3onKQotKyAgaWYgKGNoIDwgMCB8fCBjaCA8ICdhJyB8fCBj aCA+ICd6JykJLyogbWFrZSB0ZXN0IGFnYWluc3QgMCBleHBsaWNpdCAqLwotICAgICB7Ci0gICAg ICAgcmxfZGluZyAoKTsKLSAgICAgICByZXR1cm4gLTE7Ci1AQCAtMTY3MSw3ICsyMDI1LDcgQEAg X3JsX3ZpX2dvdG9fbWFyayAoKQotICAgICAgIHJsX3BvaW50ID0gcmxfbWFyazsKLSAgICAgICBy ZXR1cm4gMDsKLSAgICAgfQotLSAgZWxzZSBpZiAoY2ggPCAnYScgfHwgY2ggPiAneicpCi0rICBl bHNlIGlmIChjaCA8IDAgfHwgY2ggPCAnYScgfHwgY2ggPiAneicpCS8qIG1ha2UgdGVzdCBhZ2Fp bnN0IDAgZXhwbGljaXQgKi8KLSAgICAgewotICAgICAgIHJsX2RpbmcgKCk7Ci0gICAgICAgcmV0 dXJuIC0xOwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUveGZyZWUuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUveGZyZWUuYwkyMDExLTA3LTAzIDEw OjQ0OjQ1LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw1NyBAQAotKy8qIHhmcmVlLmMgLS0g c2FmZSB2ZXJzaW9uIG9mIGZyZWUgdGhhdCBpZ25vcmVzIGF0dGVtcHRzIHRvIGZyZWUgTlVMICov Ci0rCi0rLyogQ29weXJpZ2h0IChDKSAxOTkxLTIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJy YXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQg d2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotKwotKyAg IFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0rCi0rI2RlZmluZSBSRUFETElORV9MSUJSQVJZ Ci0rCi0rI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCi0rI2luY2x1ZGUgPGNvbmZpZy5oPgot KyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIChIQVZFX1NURExJQl9IKQotKyMgIGluY2x1ZGUgPHN0 ZGxpYi5oPgotKyNlbHNlCi0rIyAgaW5jbHVkZSAiYW5zaV9zdGRsaWIuaCIKLSsjZW5kaWYgLyog SEFWRV9TVERMSUJfSCAqLwotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKwotKyNpbmNsdWRlICJ4 bWFsbG9jLmgiCi0rI2luY2x1ZGUgInJlYWRsaW5lLmgiCi0rCi0rLyogKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotKy8q CQkJCQkJCQkgICAgKi8KLSsvKgkJICAgTWVtb3J5IERlYWxsb2NhdGlvbi4JCQkJICAgICovCi0r LyoJCQkJCQkJCSAgICAqLwotKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSsKLSsvKiBVc2UgdGhpcyBhcyB0aGUg ZnVuY3Rpb24gdG8gY2FsbCB3aGVuIGFkZGluZyB1bndpbmQgcHJvdGVjdHMgc28gd2UKLSsgICBk b24ndCBuZWVkIHRvIGtub3cgd2hhdCBmcmVlKCkgcmV0dXJucy4gKi8KLSt2b2lkCi0reGZyZWUg KHN0cmluZykKLSsgICAgIFBUUl9UIHN0cmluZzsKLSt7Ci0rICAvKiBMZWFrIGEgYml0LiAgKi8K LSsgIGlmIChSTF9JU1NUQVRFKFJMX1NUQVRFX1NJR0hBTkRMRVIpKQotKyAgICByZXR1cm47Ci0r Ci0rICBpZiAoc3RyaW5nKQotKyAgICBmcmVlIChzdHJpbmcpOwotK30KLUluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL3JlYWRsaW5lL3htYWxsb2MuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu OTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS94bWFsbG9jLmMJMjAxMS0wNy0wMyAxMDo0MDo1My4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3htYWxsb2Mu YwkyMDExLTA3LTAzIDEwOjQzOjU0LjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjMgKzEsMjQgQEAK LSAvKiB4bWFsbG9jLmMgLS0gc2FmZSB2ZXJzaW9ucyBvZiBtYWxsb2MgYW5kIHJlYWxsb2MgKi8K LSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rLyogQ29weXJpZ2h0IChDKSAxOTkxLTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0gCi0tICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIFJlYWRsaW5lLCBhIGxpYnJhcnkg Zm9yIHJlYWRpbmcgbGluZXMKLS0gICBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5k IGhpc3RvcnkgZWRpdGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRs aW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMg b2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAg Ci0gCi0tICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSBpdAotLSAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotLSAgIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKLS0g ICBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotLSAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotLSAg IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBSZWFkbGluZSBp cyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotICAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0t ICAgYWxvbmcgd2l0aCBSZWFkbGluZTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlCi0tICAgU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNl LCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIGFsb25nIHdpdGggUmVh ZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8K LSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05G SUdfSCkKLUBAIC0zMyw3ICszNCw2IEBACi0gI2VuZGlmIC8qIEhBVkVfU1RETElCX0ggKi8KLSAK LSAjaW5jbHVkZSAieG1hbGxvYy5oIgotLSNpbmNsdWRlICJyZWFkbGluZS5oIgotIAotIC8qICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiogKi8KLSAvKgkJCQkJCQkJICAgICovCi1AQCAtNDEsOSArNDEsNiBAQAotIC8qCQkJCQkJ CQkgICAgKi8KLSAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqICovCi0gCi0tLyogeG1hbGxvYyBhbmQgeHJlYWxsb2MgYXJl IHByb3ZpZGVkIGJ5IEdEQi4gICovCi0tI2lmIDAKLS0KLSBzdGF0aWMgdm9pZAotIG1lbW9yeV9l cnJvcl9hbmRfYWJvcnQgKGZuYW1lKQotICAgICAgY2hhciAqZm5hbWU7Ci1AQCAtODAsMjEgKzc3 LDMgQEAgeHJlYWxsb2MgKHBvaW50ZXIsIGJ5dGVzKQotICAgICBtZW1vcnlfZXJyb3JfYW5kX2Fi b3J0ICgieHJlYWxsb2MiKTsKLSAgIHJldHVybiAodGVtcCk7Ci0gfQotLQotLS8qIHhtYWxsb2Mg YW5kIHhyZWFsbG9jIGFyZSBwcm92aWRlZCBieSBHREIuICAqLwotLSNlbmRpZiAvKiAwICovCi0t Ci0tLyogVXNlIHRoaXMgYXMgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBhZGRpbmcgdW53aW5k IHByb3RlY3RzIHNvIHdlCi0tICAgZG9uJ3QgbmVlZCB0byBrbm93IHdoYXQgZnJlZSgpIHJldHVy bnMuICovCi0tdm9pZAotLXhmcmVlIChzdHJpbmcpCi0tICAgICBQVFJfVCBzdHJpbmc7Ci0tewot LSAgLyogTGVhayBhIGJpdC4gICovCi0tICBpZiAoUkxfSVNTVEFURShSTF9TVEFURV9TSUdIQU5E TEVSKSkKLS0gICAgcmV0dXJuOwotLQotLSN1bmRlZiBmcmVlCi0tICBpZiAoc3RyaW5nKQotLSAg ICBmcmVlIChzdHJpbmcpOwotLX0KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5l L3htYWxsb2MuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFk bGluZS94bWFsbG9jLmgJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3htYWxsb2MuaAkyMDExLTA3LTAzIDEwOjQxOjIx LjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjMgQEAKLSAvKiB4bWFsbG9jLmggLS0gbWVt b3J5IGFsbG9jYXRpb24gdGhhdCBhYm9ydHMgb24gZXJyb3JzLiAqLwotIAotLS8qIENvcHlyaWdo dCAoQykgMTk5OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQg KEMpIDE5OTktMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IK LS0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlz dG9yeSBlZGl0aW5nLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUg TGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0 ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAK LS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGlu ZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBv ZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBp cyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElm IHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRo IFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgot KyovCi0gCi0gI2lmICFkZWZpbmVkIChfWE1BTExPQ19IXykKLSAjZGVmaW5lIF9YTUFMTE9DX0hf Ci1AQCAtNDIsOSArNDEsNiBAQAotIC8qIHhtYWxsb2MgYW5kIHhyZWFsbG9jIHNob3VsZCBiZSBh bHNvIHByb3RlY3RlZCBmcm9tIFJMX1NUQVRFX1NJR0hBTkRMRVIuICAqLwotICNkZWZpbmUgeGZy ZWUgeGZyZWVfcmVhZGxpbmUKLSAKLS0vKiByZWFkbGluZS01LjEgYmFja3BvcnQuICAqLwotLSNk ZWZpbmUgZnJlZSB4ZnJlZQotLQotIGV4dGVybiBQVFJfVCB4bWFsbG9jIFBBUkFNUygoc2l6ZV90 KSk7Ci0gZXh0ZXJuIFBUUl9UIHhyZWFsbG9jIFBBUkFNUygodm9pZCAqLCBzaXplX3QpKTsKLSBl eHRlcm4gdm9pZCB4ZnJlZSBQQVJBTVMoKHZvaWQgKikpOwoKZGlmZiAtLWdpdCBhL2dkYi1iejcw MTEzMS1yZWFkbGluZTYyLTJvZjMucGF0Y2ggYi9nZGItYno3MDExMzEtcmVhZGxpbmU2Mi0yb2Yz LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDQ1YmRlLi4wMDAwMDAwCi0t LSBhL2dkYi1iejcwMTEzMS1yZWFkbGluZTYyLTJvZjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwyMzEgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTEt MDUvbXNnMDAwMDIuaHRtbAotU3ViamVjdDogW3BhdGNoXSB0ZXN0c3VpdGU6IFRlc3QgcmVhZGxp bmUtNi4yICJhc2siIHJlZ3Jlc3Npb24KLQotSGksCi0KLXRoaXMgcHJvYmxlbSBkb2VzIG5vdCBh ZmZlY3QgZGVmYXVsdCBGU0YgR0RCIGJ1aWxkIGFzIGl0IGlzIHVzaW5nIGJ1bmRsZWQKLXJlYWRs aW5lLTUuMS4gIEJ1dCB3aXRoIHN5c3RlbSByZWFkbGluZS02LjIgYW5kIGJ1aWxkIHVzaW5nOgot ICAtLXdpdGgtc3lzdGVtLXJlYWRsaW5lICB1c2UgaW5zdGFsbGVkIHJlYWRsaW5lIGxpYnJhcnkK LQotR0RCIHdpbGwgbm8gbG9uZ2VyIGFzayBhYm91dCBkaXNwbGF5aW5nIHRvbyBtYW55IHN5bWJv bHMgYW5kIGR1bXBzIHRoZW0gYWxsCi1pbW1lZGlhdGVseS4KLVBBU1M6Ci0JJCBnZGIgZ2RiCi0J KGdkYikgcCA8dGFiPjx0YWI+Ci0JRGlzcGxheSBhbGwgMjE0ODIgcG9zc2liaWxpdGllcz8gKHkg b3IgbilfCi1GQUlMOgotCSQgZ2RiIGdkYgotCShnZGIpIHAgPHRhYj48dGFiPgotCURpc3BsYXkg YWxsIDIyMTI5IHBvc3NpYmlsaXRpZXM/ICh5IG9yIG4pCi0JLi4vLi4vYmZkL2FvdXQtdGFyZ2V0 LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzX3RvX3NlY3Rpb24KLQku Li8uLi9iZmQvYW91dDMyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY3RpbWUKLQk8c2NyZWVucyBhbmQgc2NyZWVucyBvZiBkdW1wcyB3aXRob3V0IGFueSBxdWVz dGlvbj4KLQotVGhpcyByZWdyZXNzaW9uIHdpbGwgc29vbiBzdGFydCBhZmZlY3RpbmcgZGlzdHJv czoKLQlGU0YgR0RCIEhFQUQgIC0gUEFTUyAtIHVzaW5nIGJ1bmRsZWQgcmVhZGxpbmUtNS4xCi0J ZmVkb3JhLTE1ICAgICAtIEZBSUwgLSB1c2luZyBzeXN0ZW0gIHJlYWRsaW5lLTYuMgotCWZlZG9y YS0xNCAgICAgLSBQQVNTIC0gdXNpbmcgc3lzdGVtICByZWFkbGluZS02LjEKLQlkZWJpYW4tNi4w ICAgIC0gUEFTUyAtIHVzaW5nIHN5c3RlbSAgcmVhZGxpbmUtNi4xCi0Ja3VidW50dS0xMC4xMCAt IFBBU1MgLSB1c2luZyBzeXN0ZW0gIHJlYWRsaW5lLTYuMQotCi1JIGhhdmUgYXNrZWQgYWJvdXQg aXQgb24gcmVhZGxpbmUgbWw6Ci0JUmU6IFtCdWctcmVhZGxpbmVdIGNhbGxiYWNrIG1vZGUgcGFn ZXIgZGlzYWJsZSBzdGF0dXMKLQlodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1 Zy1yZWFkbGluZS8yMDExLTA0L21zZzAwMDEyLmh0bWwKLVRoZSBzdWdnZXN0ZWQgd29ya2Fyb3Vu ZCAoaW4gZmFjdCB0aGUgcmVhZGxpbmUtNS4xIGNvZGUgc3RhdGUpIGdvaW5nIHRvIHBhdGNoCi1p bnRvIHRoZSBwcm9wb3NlZCBGU0YgR0RCIGJ1bmRsZWQgcmVhZGxpbmUtNi4yLiAgRGlzdHJvcyB0 aGVuIGNhbiBzdG9wIHVzaW5nCi0tLXdpdGgtc3lzdGVtLXJlYWRsaW5lIHRvIHN0aWxsIGZlYXR1 cmUgcmVjZW50IGFuZCBzeXN0ZW0gbWF0Y2hpbmcgcmVhZGxpbmUKLXVudGlsIHJlYWRsaW5lLTcu MCBnZXRzIHJlbGVhc2VkLgotCi1UaGlzIHJlZ3Jlc3Npb24gaGFzIGJlZW4gc28gZmFyIGNhdWdo dCBvbmx5IHdpdGggc3lzdGVtIGRlYnVnIGluZm9zIGluc3RhbGxlZDoKLQktUEFTUzogZ2RiLmJh c2UvY29tcGxldGlvbi5leHA6IGNvbXBsZXRlICgyKSAncCBub192YXJfbmFtZWRfdGhpcy0nCi0J LVBBU1M6IGdkYi5iYXNlL2NvbXBsZXRpb24uZXhwOiBjb21wbGV0ZSAncCB2YWx1ZXNbMF0uYScK LQktUEFTUzogZ2RiLmJhc2UvY29tcGxldGlvbi5leHA6IGNvbXBsZXRlICdwIHZhbHVlc1swXSAu IGEnCi0JLVBBU1M6IGdkYi5iYXNlL2NvbXBsZXRpb24uZXhwOiBjb21wbGV0ZSAncCAmdmFsdWVz WzBdIC0+IGEnCi0JLVBBU1M6IGdkYi5iYXNlL2NvbXBsZXRpb24uZXhwOiBjb3BtbGV0aW9uIG9m IGZpZWxkIGluIGFub255bW91cyB1bmlvbgotCStGQUlMOiBnZGIuYmFzZS9jb21wbGV0aW9uLmV4 cDogKHRpbWVvdXQpIGNvbXBsZXRlICgyKSAncCBub192YXJfbmFtZWRfdGhpcy0nCi0JK0ZBSUw6 IGdkYi5iYXNlL2NvbXBsZXRpb24uZXhwOiAodGltZW91dCkgY29tcGxldGUgJ3AgdmFsdWVzWzBd LmEnIDIKLQkrRkFJTDogZ2RiLmJhc2UvY29tcGxldGlvbi5leHA6ICh0aW1lb3V0KSBjb21wbGV0 ZSAncCB2YWx1ZXNbMF0gLiBhJyAyCi0JK0ZBSUw6IGdkYi5iYXNlL2NvbXBsZXRpb24uZXhwOiAo dGltZW91dCkgY29tcGxldGUgJ3AgJnZhbHVlc1swXSAtPiBhJyAyCi0JK0ZBSUw6IGdkYi5iYXNl L2NvbXBsZXRpb24uZXhwOiBjb3BtbGV0aW9uIG9mIGZpZWxkIGluIGFub255bW91cyB1bmlvbgot Ci1JIHdpbGwgY2hlY2sgaXQgaW4gd2l0aCBubyBjb21tZW50cy4KLQotCi1UaGFua3MsCi1KYW4K LQotCi1nZGIvdGVzdHN1aXRlLwotMjAxMS0wNS0wMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuYmFzZS9yZWFkbGluZS1hc2suYzogTmV3IGZp bGUuCi0JKiBnZGIuYmFzZS9yZWFkbGluZS1hc2suZXhwOiBOZXcgZmlsZS4KLQkqIGdkYi5iYXNl L3JlYWRsaW5lLWFzay5pbnB1dHJjOiBOZXcgZmlsZS4KLQotLS0tIC9kZXYvbnVsbAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9yZWFkbGluZS1hc2suYwotQEAgLTAsMCArMSwyMyBAQAot Ky8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0r ICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotK2ludAotK3N5bWJvbF8w MV9sZW5ndGhfNDBfX19fX19fX19fX19fX19fX19fX18sCi0rc3ltYm9sXzAyX2xlbmd0aF80MF9f X19fX19fX19fX19fX19fX19fXywKLStzeW1ib2xfMDNfbGVuZ3RoXzQwX19fX19fX19fX19fX19f X19fX19fLAotK3N5bWJvbF8wNF9sZW5ndGhfNDBfX19fX19fX19fX19fX19fX19fX18sCi0rc3lt Ym9sXzEwX2xlbmd0aF80MF9fX19fX19fX19fX19fX19fX19fXzsKLS0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcmVhZGxpbmUtYXNrLmV4cAotQEAgLTAsMCArMSwx MTggQEAKLSsjIENvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3NldCB0ZXN0ZmlsZSBy ZWFkbGluZS1hc2sKLStzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfS54Ci0rc2V0IHNyY2ZpbGUg JHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRh YmxlfQotK3NldCBpbnB1dHJjICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0uaW5wdXRy YwotKwotK2lmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0i ICIke2JpbmZpbGV9IiBvYmplY3Qge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICR7 dGVzdGZpbGV9LmV4cAotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBJTlBVVFJDIGdldHMgcmVz ZXQgZm9yIHRoZSBuZXh0IHRlc3RmaWxlLgotK3NldGVudiBJTlBVVFJDICRpbnB1dHJjCi0rY2xl YW5fcmVzdGFydCAke2V4ZWN1dGFibGV9Ci0rCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgd2lk dGggNTAiCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgaGVpZ2h0IDMiCi0rCi0rc2V0IGNtZCAi cCBzeW1ib2xfMCIKLStzZW5kX2dkYiAiJGNtZFx0IgotK3NldCB0ZXN0ICJiZWxsIGZvciBtb3Jl IG1lc3NhZ2UiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgewotKyAgICAtcmUgIiRjbWRc MDA3JCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSt9Ci0rCi0rc2VuZF9nZGIgIlx0IgotK3Nl dCB0ZXN0ICJtb3JlIG1lc3NhZ2UgZm9yIDAxIGFuZCAwMiIKLStnZGJfdGVzdF9tdWx0aXBsZSAi IiAkdGVzdCB7Ci0rICAgIC1yZSAiXlxyXG5zeW1ib2xfMDFfbGVuZ3RoXzQwX19fX19fX19fX19f X19fX19fX19fXHJcbnN5bWJvbF8wMl9sZW5ndGhfNDBfX19fX19fX19fX19fX19fX19fX19cclxu LS1Nb3JlLS0kIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgIiRnZGJfcHJvbXB0 ICIgewotKwlmYWlsICR0ZXN0Ci0rICAgIH0KLSt9Ci0rCi0rIyBUaGVyZSBnZXQgc29tZSBWVDEw MCBjaGFyYWN0ZXJzIHByaW50ZWQuCi0rCi0rc2VuZF9nZGIgIlxyIgotK3NldCB0ZXN0ICJtb3Jl IG1lc3NhZ2UgZm9yIDAzIgotK2dkYl90ZXN0X211bHRpcGxlICIiICR0ZXN0IHsKLSsgICAgLXJl ICJccnN5bWJvbF8wM19sZW5ndGhfNDBfX19fX19fX19fX19fX19fX19fX19cclxuLS1Nb3JlLS0k IiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotK30KLSsKLSsjICIkZ2RiX3Byb21wdCAkIiB3aWxs IG5vdCBtYXRjaCBhcyAkY21kIGdldHMgb3V0cHV0OiAkZ2RiX3Byb21wdCBwIHN5bWJvbF8wCi0r IyBBbmQgIiRnZGJfcHJvbXB0IHAgc3ltYm9sXzAiIGNhbm5vdCBiZSBtYXRjaGVkIGFzIHRoZSBk ZWZhdWx0ICIkZ2RiX3Byb21wdCAkIgotKyMgc3RyaW5nIGZyb20gZ2RiX3Rlc3RfbXVsdGlwbGUg Y291bGQgbWF0Y2ggZWFybGllci4KLSsKLStzZW5kX2dkYiAiXHIiCi0rc2V0IHRlc3QgIm1vcmUg ZmluaXNoIGZvciAwNCIKLStnZGJfdGVzdF9tdWx0aXBsZSAiIiAkdGVzdCB7Ci0rICAgIC1yZSAi XHJzeW1ib2xfMDRfbGVuZ3RoXzQwX19fX19fX19fX19fX19fX19fX19fXHJcbiRnZGJfcHJvbXB0 ICIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSt9Ci0rCi0rZ2RiX3Rlc3QgImZvbyIge05vIHN5 bWJvbCAic3ltYm9sXzBmb28iIGluIGN1cnJlbnQgY29udGV4dFwufSAiYWJvcnQgbW9yZSBtZXNz YWdlIgotKwotK3NldCBjbWQgInAgc3ltYm9sXyIKLStzZW5kX2dkYiAiJGNtZFx0IgotK3NldCB0 ZXN0ICJiZWxsIGZvciBhc2sgbWVzc2FnZSIKLStnZGJfdGVzdF9tdWx0aXBsZSAiIiAkdGVzdCB7 Ci0rICAgIC1yZSAiJGNtZFwwMDckIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotK30KLSsKLStz ZW5kX2dkYiAiXHQiCi0rc2V0IHRlc3QgImFzayBtZXNzYWdlIgotK2dkYl90ZXN0X211bHRpcGxl ICIiICR0ZXN0IHsKLSsgICAgLXJlICJeXHJcbkRpc3BsYXkgYWxsIDUgcG9zc2liaWxpdGllc1xc PyBcXCh5IG9yIG5cXCkkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgIiRnZGJf cHJvbXB0ICIgewotKwlmYWlsICR0ZXN0Ci0rCXJldHVybiAwCi0rICAgIH0KLSt9Ci0rCi0rc2Vu ZF9nZGIgInkiCi0rc2V0IHRlc3QgImFzayBtZXNzYWdlIGZvciAwMSBhbmQgMDIiCi0rZ2RiX3Rl c3RfbXVsdGlwbGUgIiIgJHRlc3QgewotKyAgICAtcmUgIl5cclxuc3ltYm9sXzAxX2xlbmd0aF80 MF9fX19fX19fX19fX19fX19fX19fX1xyXG5zeW1ib2xfMDJfbGVuZ3RoXzQwX19fX19fX19fX19f X19fX19fX19fXHJcbi0tTW9yZS0tJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSt9Ci0rCi0r IyBUaGVyZSBnZXQgc29tZSBWVDEwMCBjaGFyYWN0ZXJzIHByaW50ZWQuCi0rIyBTZWUgdGhlICIk Z2RiX3Byb21wdCAiIG1hdGNoIGxpa2UgaW4gIm1vcmUgZmluaXNoIGZvciAwNCIuCi0rCi0rc2Vu ZF9nZGIgIm4iCi0rc2V0IHRlc3QgImFzayBtZXNzYWdlIG5vIgotK2dkYl90ZXN0X211bHRpcGxl ICIiICR0ZXN0IHsKLSsgICAgLXJlICJcciRnZGJfcHJvbXB0ICIgewotKwlwYXNzICR0ZXN0Ci0r ICAgIH0KLSt9Ci0rCi0rZ2RiX3Rlc3QgImZvbyIge05vIHN5bWJvbCAic3ltYm9sX2ZvbyIgaW4g Y3VycmVudCBjb250ZXh0XC59ICJhYm9ydCBhc2sgbWVzc2FnZSIKLS0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcmVhZGxpbmUtYXNrLmlucHV0cmMKLUBAIC0wLDAg KzEsMTYgQEAKLSsjIENvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0r IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3NldCBjb21wbGV0 aW9uLXF1ZXJ5LWl0ZW1zIDUKLQoKZGlmZiAtLWdpdCBhL2dkYi1iejcwMTEzMS1yZWFkbGluZTYy LTNvZjMucGF0Y2ggYi9nZGItYno3MDExMzEtcmVhZGxpbmU2Mi0zb2YzLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTcyNWE0Li4wMDAwMDAwCi0tLSBhL2dkYi1iejcwMTEz MS1yZWFkbGluZTYyLTNvZjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAot aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTEtMDUvbXNnMDAwMTAuaHRt bAotU3ViamVjdDogW3BhdGNoIDQvM10gcmVhZGxpbmUtNi4yOiBTdWJzdGl0dXRlIGluYy1oaXN0 LnRleGluZm8KLQotSGksCi0KLWZvcmdvdCB0aGUgcGF0Y2hzZXQgaGFkIGEgYG1ha2UgZG9jJyBy ZWdyZXNzaW9uOgotbWFrZTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgYC4uLy4uLy4uL2dk Yi9kb2MvLi4vLi4vcmVhZGxpbmUvZG9jL2luYy1oaXN0LnRleGluZm8nLCBuZWVkZWQgYnkgYGdk Yi5pbmZvJy4gIFN0b3AuCi0KLVRoZXJlIHdhcyBhIGNvcHkgaHN1c2VyLnRleGkgLT4gaW5jLWhp c3QudGV4aW5mbyBiZWZvcmUgd2l0aCB0aGlzIGRpZmY6Ci0JQEAgLTI2LDkgKzI2LDkgQEAgaW50 byBhbm90aGVyIGxhbmd1YWdlLCB1bmRlciB0aGUgYWJvdmUgYwotCSBAbm9kZSBVc2luZyBIaXN0 b3J5IEludGVyYWN0aXZlbHkKLQkgQGNoYXB0ZXIgVXNpbmcgSGlzdG9yeSBJbnRlcmFjdGl2ZWx5 Ci0JIAotCS1AaWZjbGVhciBCYXNoRmVhdHVyZXMKLQktQGRlZmNvZGVpbmRleCBidAotCS1AZW5k IGlmY2xlYXIKLQkrQGMgQGlmY2xlYXIgQmFzaEZlYXR1cmVzCi0JK0BjIEBkZWZjb2RlaW5kZXgg YnQKLQkrQGMgQGVuZCBpZmNsZWFyCi0JIAotCSBAaWZzZXQgQmFzaEZlYXR1cmVzCi0JIFRoaXMg Y2hhcHRlciBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgQHNje2dudX0gSGlzdG9yeSBMaWJyYXJ5 Ci0JQEAgLTM5LDkgKzM5LDkgQEAgc2VlIHRoZSBAc2N7Z251fSBSZWFkbGluZSBMaWJyYXJ5IE1h bnVhbAotCSBAZW5kIGlmc2V0Ci0JIEBpZmNsZWFyIEJhc2hGZWF0dXJlcwotCSBUaGlzIGNoYXB0 ZXIgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIEBzY3tnbnV9IEhpc3RvcnkgTGlicmFyeSBpbnRl cmFjdGl2ZWx5LAotCS1mcm9tIGEgdXNlcidzIHN0YW5kcG9pbnQuICBJdCBzaG91bGQgYmUgY29u c2lkZXJlZCBhIHVzZXIncyBndWlkZS4gIEZvcgotCS1pbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUg QHNje2dudX0gSGlzdG9yeSBMaWJyYXJ5IGluIHlvdXIgb3duIHByb2dyYW1zLAotCS1AcHhyZWZ7 UHJvZ3JhbW1pbmcgd2l0aCBHTlUgSGlzdG9yeX0uCi0JK2Zyb20gYSB1c2VyJ3Mgc3RhbmRwb2lu dC4gIEl0IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgdXNlcidzIGd1aWRlLgotCStGb3IgaW5mb3Jt YXRpb24gb24gdXNpbmcgdGhlIEBzY3tnbnV9IEhpc3RvcnkgTGlicmFyeSBpbiBvdGhlciBwcm9n cmFtcywKLQkrc2VlIHRoZSBAc2N7Z251fSBSZWFkbGluZSBMaWJyYXJ5IE1hbnVhbC4KLQkgQGVu ZCBpZmNsZWFyCi0JIAotCSBAaWZzZXQgQmFzaEZlYXR1cmVzCi0KLVVzZWQgc2xpZ2h0bHkgYWx0 ZXJuYXRpdmUgb25lIHdpdGggSU1PIGJldHRlciByZWZlcmVuY2UgYW5kIEkgaGF2ZSBhbHNvIGtl cHQKLWhzdXNlci50ZXhpIGluIHBsYWNlIGFzIHJlYWRsaW5lLyBpbiBzcmMvIGlzIG5vIGxvbmdl ciBhIHN0YW5kYWxvbmUgcmVhZGxpbmUKLWRpc3RyaWJ1dGlvbiBhbnl3YXkuCi0KLQotU29ycnks Ci1KYW4KLQotCi1nZGIvZG9jLwotMjAxMS0wNS0wMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBNYWtlZmlsZS5pbiAoR0RCX0RPQ19TT1VSQ0VfSU5D TFVERVMpOiBSZW5hbWUgaW5jLWhpc3QudGV4aW5mbyB0bwotCWhzdXNlci50ZXhpLgotCSogZ2Ri LnRleGluZm8gPCFTWVNURU1fUkVBRExJTkU+OiBSZW5hbWUgaW5jLWhpc3QudGV4aW5mbyBpbmNs dXNpb24gYW5kCi0JY29tbWVudCB0byBoc3VzZXIudGV4aS4gIENoYW5nZSBybHVzZXIudGV4aSBu YW1lIGluIHRoZSBjb21tZW50LgotCi1yZWFkbGluZS9kb2MvCi0yMDExLTA1LTAyICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGhzdXNlci50ZXhpIChV c2luZyBIaXN0b3J5IEludGVyYWN0aXZlbHkpOiBEaXNhYmxlICFCYXNoRmVhdHVyZXMKLQlAZGVm Y29kZWluZGV4LiAgTWFrZSB0aGUgYFByb2dyYW1taW5nIHdpdGggR05VIEhpc3RvcnknIHJlZmVy ZW5jZQotCWV4dGVybmFsLgotCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvZG9jL01h a2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDUyNS5vcmlnL2dkYi9k b2MvTWFrZWZpbGUuaW4JMjAxMS0wMS0wMyAxNDowMTowNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9kb2MvTWFrZWZpbGUuaW4JMjAxMS0wNS0yNSAxOToxNjoz NS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMTcsNyArMTE3LDcgQEAgR0RCX0RPQ19TT1VSQ0VfSU5D TFVERVMgPSBcCi0gCSQoc3JjZGlyKS9ncGwudGV4aSBcCi0gCSQoc3JjZGlyKS9hZ2VudGV4cHIu dGV4aSBcCi0gCSQoUkVBRExJTkVfRElSKS9ybHVzZXIudGV4aSBcCi0tCSQoUkVBRExJTkVfRElS KS9pbmMtaGlzdC50ZXhpbmZvCi0rCSQoUkVBRExJTkVfRElSKS9oc3VzZXIudGV4aQotIEdEQl9E T0NfQlVJTERfSU5DTFVERVMgPSBcCi0gCWdkYi1jZmcudGV4aSBcCi0gCUdEQnZuLnRleGkKLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9kb2MvZ2RiLnRleGluZm8KLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjkwLjIwMTEwNTI1Lm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDExLTA1 LTI1IDE5OjE0OjM2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDExLTA1LTI1IDE5OjE3OjAxLjAwMDAwMDAwMCArMDIwMAotQEAg LTMxMDk1LDEzICszMTA5NSwxMyBAQCB0aGluZ3Mgd2l0aG91dCBmaXJzdCB1c2luZyB0aGUgZGVi dWdnZXIgCi0gCi0gQGMgVGhlIHJlYWRsaW5lIGRvY3VtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQg d2l0aCB0aGUgcmVhZGxpbmUgY29kZQotIEBjIGFuZCBjb25zaXN0cyBvZiB0aGUgdHdvIGZvbGxv d2luZyBmaWxlczoKLS1AYyAgICAgcmx1c2VyLnRleGluZm8KLS1AYyAgICAgaW5jLWhpc3QudGV4 aW5mbwotK0BjICAgICBybHVzZXIudGV4aQotK0BjICAgICBoc3VzZXIudGV4aQotIEBjIFVzZSAt SSB3aXRoIG1ha2VpbmZvIHRvIHBvaW50IHRvIHRoZSBhcHByb3ByaWF0ZSBkaXJlY3RvcnksCi0g QGMgZW52aXJvbm1lbnQgdmFyIFRFWElOUFVUUyB3aXRoIFRlWC4KLSBAaWZjbGVhciBTWVNURU1f UkVBRExJTkUKLSBAaW5jbHVkZSBybHVzZXIudGV4aQotLUBpbmNsdWRlIGluYy1oaXN0LnRleGlu Zm8KLStAaW5jbHVkZSBoc3VzZXIudGV4aQotIEBlbmQgaWZjbGVhcgotIAotIEBub2RlIEluIE1l bW9yaWFtCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDUyNS9yZWFkbGluZS9kb2MvaHN1c2VyLnRl eGkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNTI1Lm9yaWcvcmVhZGxpbmUvZG9j L2hzdXNlci50ZXhpCTIwMTEtMDUtMjUgMTk6MTY6MTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMi45MC4yMDExMDUyNS9yZWFkbGluZS9kb2MvaHN1c2VyLnRleGkJMjAxMS0wNS0yNSAxOTox NjozNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNiw5ICsyNiwxMCBAQCBpbnRvIGFub3RoZXIgbGFu Z3VhZ2UsIHVuZGVyIHRoZSBhYm92ZSBjCi0gQG5vZGUgVXNpbmcgSGlzdG9yeSBJbnRlcmFjdGl2 ZWx5Ci0gQGNoYXB0ZXIgVXNpbmcgSGlzdG9yeSBJbnRlcmFjdGl2ZWx5Ci0gCi0tQGlmY2xlYXIg QmFzaEZlYXR1cmVzCi0tQGRlZmNvZGVpbmRleCBidAotLUBlbmQgaWZjbGVhcgotK0BjIEdEQiBi dW5kbGluZyBtb2RpZmljYXRpb246Ci0rQGMgQGlmY2xlYXIgQmFzaEZlYXR1cmVzCi0rQGMgQGRl ZmNvZGVpbmRleCBidAotK0BjIEBlbmQgaWZjbGVhcgotIAotIEBpZnNldCBCYXNoRmVhdHVyZXMK LSBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIEBzY3tnbnV9IEhpc3Rvcnkg TGlicmFyeQotQEAgLTQxLDcgKzQyLDggQEAgc2VlIHRoZSBAc2N7Z251fSBSZWFkbGluZSBMaWJy YXJ5IE1hbnVhbAotIFRoaXMgY2hhcHRlciBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgQHNje2du dX0gSGlzdG9yeSBMaWJyYXJ5IGludGVyYWN0aXZlbHksCi0gZnJvbSBhIHVzZXIncyBzdGFuZHBv aW50LiAgSXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSB1c2VyJ3MgZ3VpZGUuICBGb3IKLSBpbmZv cm1hdGlvbiBvbiB1c2luZyB0aGUgQHNje2dudX0gSGlzdG9yeSBMaWJyYXJ5IGluIHlvdXIgb3du IHByb2dyYW1zLAotLUBweHJlZntQcm9ncmFtbWluZyB3aXRoIEdOVSBIaXN0b3J5fS4KLStAYyBH REIgYnVuZGxpbmcgbW9kaWZpY2F0aW9uOgotK0BweHJlZntQcm9ncmFtbWluZyB3aXRoIEdOVSBI aXN0b3J5LCAsICwgaGlzdG9yeSwgR05VIEhpc3RvcnkgTGlicmFyeX0uCi0gQGVuZCBpZmNsZWFy Ci0gCi0gQGlmc2V0IEJhc2hGZWF0dXJlcwoKZGlmZiAtLWdpdCBhL2dkYi1jb3JlLW9wZW4tdmRz by13YXJuaW5nLnBhdGNoIGIvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKaW5kZXgg MDU2YTI4Yy4uODdjY2MwYiAxMDA2NDQKLS0tIGEvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcu cGF0Y2gKKysrIGIvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKQEAgLTMzLDEyICsz MywxMiBAQCBnZGIvCiAKIFsgQ29udGV4dCBiYWNrcG9ydC4gIF0KIAotSW5kZXg6IGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3Jp Zy9nZGIvc29saWItc3ZyNC5jCTIwMTAtMDctMTIgMjM6MDc6MzUuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvc29saWItc3ZyNC5jCTIwMTAtMDctMTMgMDA6MTk6 MDMuMDAwMDAwMDAwICswMjAwCi1AQCAtMTE3Nyw4ICsxMTc3LDE4IEBAIHN2cjRfY3VycmVudF9z b3MgKHZvaWQpCi0gCSAgdGFyZ2V0X3JlYWRfc3RyaW5nIChMTV9OQU1FIChuZXcpLCAmYnVmZmVy LAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTEtMDct MjIgMTk6MjY6NDYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv c29saWItc3ZyNC5jCTIwMTEtMDctMjIgMTk6Mjk6MzYuMDAwMDAwMDAwICswMjAwCitAQCAtMTE5 Nyw4ICsxMTk3LDE4IEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCisgCSAgdGFyZ2V0X3JlYWRf c3RyaW5nIChsbV9uYW1lIChuZXcpLCAmYnVmZmVyLAogIAkJCSAgICAgIFNPX05BTUVfTUFYX1BB VEhfU0laRSAtIDEsICZlcnJjb2RlKTsKICAJICBpZiAoZXJyY29kZSAhPSAwKQogLQkgICAgd2Fy bmluZyAoXygiQ2FuJ3QgcmVhZCBwYXRobmFtZSBmb3IgbG9hZCBtYXA6ICVzLiIpLApAQCAtNTgs MTEgKzU4LDExIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zb2xpYi1zdnI0LmMK ICAJICBlbHNlCiAgCSAgICB7CiAgCSAgICAgIHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQ7Ci1J bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvc29saWIuYworSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3NvbGliLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzEx Lm9yaWcvZ2RiL3NvbGliLmMJMjAxMC0wNS0xNyAwMTo0OTo1OC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zb2xpYi5jCTIwMTAtMDctMTMgMDA6MjE6MDEuMDAw MDAwMDAwICswMjAwCi1AQCAtNzA1LDYgKzcwNSw3IEBAIHVwZGF0ZV9zb2xpYl9saXN0IChpbnQg ZnJvbV90dHksIHN0cnVjdCAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3NvbGli LmMJMjAxMS0wNi0zMCAyMToyOTo1NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9zb2xpYi5jCTIwMTEtMDctMjIgMTk6Mjk6MTAuMDAwMDAwMDAwICswMjAwCitA QCAtNzA2LDYgKzcwNiw3IEBAIHVwZGF0ZV9zb2xpYl9saXN0IChpbnQgZnJvbV90dHksIHN0cnVj dCAKICAgIHN0cnVjdCB0YXJnZXRfc29fb3BzICpvcHMgPSBzb2xpYl9vcHMgKHRhcmdldF9nZGJh cmNoKTsKICAgIHN0cnVjdCBzb19saXN0ICppbmZlcmlvciA9IG9wcy0+Y3VycmVudF9zb3MoKTsK ICAgIHN0cnVjdCBzb19saXN0ICpnZGIsICoqZ2RiX2xpbms7CkBAIC03MCw3ICs3MCw3IEBAIElu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zb2xpYi5jCiAgCiAgICAvKiBXZSBjYW4gcmVh Y2ggaGVyZSBkdWUgdG8gY2hhbmdpbmcgc29saWItc2VhcmNoLXBhdGggb3IgdGhlCiAgICAgICBz eXNyb290LCBiZWZvcmUgaGF2aW5nIGFueSBpbmZlcmlvci4gICovCi1AQCAtODQ0LDYgKzg0NSwx MiBAQCBFcnJvciB3aGlsZSBtYXBwaW5nIHNoYXJlZCBsaWJyYXJ5IHNlY3RpCitAQCAtODQ2LDYg Kzg0NywxMiBAQCB1cGRhdGVfc29saWJfbGlzdCAoaW50IGZyb21fdHR5LCBzdHJ1Y3QgCiAgCSAg b2JzZXJ2ZXJfbm90aWZ5X3NvbGliX2xvYWRlZCAoaSk7CiAgCX0KICAKCmRpZmYgLS1naXQgYS9n ZGItY29yZS10aHJlYWQtaW50ZXJuYWxlcnItMW9mMy5wYXRjaCBiL2dkYi1jb3JlLXRocmVhZC1p bnRlcm5hbGVyci0xb2YzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDQy ZmVlLi4wMDAwMDAwCi0tLSBhL2dkYi1jb3JlLXRocmVhZC1pbnRlcm5hbGVyci0xb2YzLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItcGF0Y2hlcy8yMDExLTAyL21zZzAwNjc5Lmh0bWwKLVN1YmplY3Q6IFJlOiBbcGF0Y2gg MS8zXSBDb2RlIGNsZWFudXA6IGdkYi50aHJlYWRzL2djb3JlLXRocmVhZC5leHAKLQotT24gVGh1 LCAyNCBGZWIgMjAxMSAwODoyMDowOSArMDEwMCwgSm9lbCBCcm9iZWNrZXIgd3JvdGU6Ci0+IEp1 c3QgYSB0aG91Z2h0OiBEbyB3ZSByZWFsbHkgbmVlZCB0byB3b3JyeSBhYm91dCByZXN0b3JpbmcK LT4gdGhlIHRpbWVvdXQgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdGNhc2UsIGdpdmVuIHRoYXQgdGhp cyBpcwotPiBhdXRvbWF0aWNhbGx5IGRvbmUgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggdGVzdGNhc2Ug KHNlZSBnZGIuZXhwOgotPiBnZGJfaW5pdCk/Ci0KLUkgc2VlIG5vdzoKLQlSZTogW1JGQS90ZXN0 c3VpdGVdIFJlc2V0IHRoZSB0aW1lb3V0IGR1cmF0aW9uIGF0IHRoZSBzdGFydCBvZiBlYWNoIHRl c3RjYXNlLgotCWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAyL21z ZzAwMjAyLmh0bWwKLQljb21taXQgNTAxYzU3ZGE0MGZkMjdjODAzNmE1ZmM5OTVmNzUwYjA1NTky NzJhZAotCi1QYXRjaCB1cGRhdGVkLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi90ZXN0c3Vp dGUvCi0yMDExLTAyLTI0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci0KLQkqIGdkYi50aHJlYWRzL2djb3JlLXRocmVhZC5leHAgKCR0ZXN0ZmlsZSk6IE1hdGNo IGl0IHRoZSAuZXhwCi0JZmlsZW5hbWUuCi0JKCRzcmNmaWxlKTogUHJlc2VydmUgdGhlIG9yaWdp bmFsIHZhbHVlLgotCSgkdGVzdGZpbGUpOiBNYXRjaCBpdCB0aGUgLmV4cCBmaWxlbmFtZS4KLQko JGNvcmVmaWxlKTogTmV3IHZhcmlhYmxlLiAgU3Vic3RpdHV0ZSBpdCBhcm91bmQuCi0JVXNlIGNs ZWFuX3Jlc3RhcnQuCi0JKCRwcmV2X3RpbWVvdXQpOiBSZW1vdmUuCi0JKGxvYWRfY29yZSk6IE1v dmUgY29yZSBsb2FkaW5nIGludG8gdGhpcyBwcm9jLgotCUZpeCByZXN0b3JlIG9mICR0aW1lb3V0 IGlmIGxvYWRfY29yZSBmYWlscy4KLQotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9n Y29yZS10aHJlYWQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2djb3JlLXRo cmVhZC5leHAKLUBAIC0yMSwxMSArMjEsMTEgQEAgaWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0gCXN0 cmFjZSAkdHJhY2VsZXZlbAotIH0KLSAKLS0KLSAjIFNpbmdsZS10aHJlYWRlZCB0ZXN0IGNhc2UK LS1zZXQgdGVzdGZpbGUgInB0aHJlYWRzIgotLXNldCBzcmNmaWxlICAke3Rlc3RmaWxlfS5jCi0t c2V0IGJpbmZpbGUgICR7b2JqZGlyfS8ke3N1YmRpcn0vZ2NvcmUtJHt0ZXN0ZmlsZX0KLStzZXQg dGVzdGZpbGUgImdjb3JlLXRocmVhZCIKLStzZXQgc3JjZmlsZSAgcHRocmVhZHMuYwotK3NldCBi aW5maWxlICAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rc2V0IGNvcmVmaWxlICR7 b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0udGVzdAotIAotIGlmIFtpc3RhcmdldCAiKi0q LWxpbnV4Il0gdGhlbiB7Ci0gICAgIHNldCB0YXJnZXRfY2ZsYWdzICItRF9NSVRfUE9TSVhfVEhS RUFEUyIKLUBAIC00MSwxMCArNDEsNyBAQCBpZiB7W2dkYl9jb21waWxlX3B0aHJlYWRzICIke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYgotIAotICMg U3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KLSAKLS1nZGJfZXhpdAotLWdkYl9zdGFydAotLWdkYl9y ZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotLWdkYl9sb2FkICR7YmluZmlsZX0KLStj bGVhbl9yZXN0YXJ0ICR7dGVzdGZpbGV9Ci0gCi0gIyByZWdleHAgZm9yICJob3Jpem9udGFsIiB0 ZXh0IChpLmUuIGRvZXNuJ3QgaW5jbHVkZSBuZXdsaW5lIG9yCi0gIyBjYXJyaWFnZSByZXR1cm4p Ci1AQCAtNTMsNyArNTAsNiBAQCBzZXQgaG9yaXogIlxbXlxuXHJcXSoiCi0gIyByZWdleHAgZm9y IG5ld2xpbmUKLSBzZXQgbmwgIlxbXHJcblxdKyIKLSAKLS1zZXQgcHJldl90aW1lb3V0ICR0aW1l b3V0Ci0gc2V0IHRpbWVvdXQgMzAKLSAKLSBnZGJfdGVzdF9tdWx0aXBsZSAiaGVscCBnY29yZSIg ImhlbHAgZ2NvcmUiIHsKLUBAIC05MiwxMCArODgsOSBAQCBkZWxldGVfYnJlYWtwb2ludHMKLSBn ZGJfYnJlYWtwb2ludCAidGhyZWFkMiIKLSBnZGJfdGVzdCAiY29udGludWUiICJDb250aW51aW5n LipCcmVha3BvaW50LiogdGhyZWFkMiAuKiIgInRocmVhZCAyIGlzIHJ1bm5pbmciCi0gCi0tc2V0 IGVzY2FwZWRmaWxlbmFtZSBbc3RyaW5nX3RvX3JlZ2V4cCAke29iamRpcn0vJHtzdWJkaXJ9L2dj b3JlLnRlc3RdCi0rc2V0IGVzY2FwZWRmaWxlbmFtZSBbc3RyaW5nX3RvX3JlZ2V4cCAkY29yZWZp bGVdCi0gIyBEcm9wIGNvcmVmaWxlCi0tZ2RiX3Rlc3RfbXVsdGlwbGUgImdjb3JlICR7b2JqZGly fS8ke3N1YmRpcn0vZ2NvcmUudGVzdCIgXAotLQkic2F2ZSBhIGNvcmVmaWxlIiBcCi0rZ2RiX3Rl c3RfbXVsdGlwbGUgImdjb3JlICRjb3JlZmlsZSIgInNhdmUgYSBjb3JlZmlsZSIgXAotIHsKLSAg IC1yZSAiU2F2ZWQgY29yZWZpbGUgJHtlc2NhcGVkZmlsZW5hbWV9XFtcclxuXF0rJGdkYl9wcm9t cHQgJCIgewotICAgICBwYXNzICJzYXZlIGEgY29yZWZpbGUiCi1AQCAtMTE0LDMxICsxMDksMzgg QEAgaWYgeyEkY29yZV9zdXBwb3J0ZWR9IHsKLSAgIHJldHVybiAtMQotIH0KLSAKLSsKLSAjIE5v dyByZXN0YXJ0IGdkYiBhbmQgbG9hZCB0aGUgY29yZWZpbGUuCi0tZ2RiX2V4aXQKLS1nZGJfc3Rh cnQKLS1nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLS1nZGJfbG9hZCAke2Jp bmZpbGV9Ci0tCi0tZ2RiX3Rlc3RfbXVsdGlwbGUgImNvcmUgJHtvYmpkaXJ9LyR7c3ViZGlyfS9n Y29yZS50ZXN0IiBcCi0tICAgICJyZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmlsZSIgewotLQktcmUg Ii4qIGlzIG5vdCBhIGNvcmUgZHVtcDouKiRnZGJfcHJvbXB0ICQiIHsKLS0JICAgIGZhaWwgInJl LWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIChiYWQgZmlsZSBmb3JtYXQpIgotLQkgICAgIyBObyB1 c2UgcHJvY2VlZGluZyBmcm9tIGhlcmUuCi0tCSAgICByZXR1cm47Ci0tCX0KLS0JLXJlICIuKjog Tm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeS4qJGdkYl9wcm9tcHQgJCIgewotLQkgICAgZmFpbCAi cmUtbG9hZCBnZW5lcmF0ZWQgY29yZWZpbGUgKGZpbGUgbm90IGZvdW5kKSIKLS0JICAgICMgTm8g dXNlIHByb2NlZWRpbmcgZnJvbSBoZXJlLgotLQkgICAgcmV0dXJuOwotLQl9Ci0tCS1yZSAiLipD b3VsZG4ndCBmaW5kIC4qIHJlZ2lzdGVycyBpbiBjb3JlIGZpbGUuKiRnZGJfcHJvbXB0ICQiIHsK LS0JICAgIGZhaWwgInJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIChpbmNvbXBsZXRlIG5vdGUg c2VjdGlvbikiCi0tCX0KLS0JLXJlICJDb3JlIHdhcyBnZW5lcmF0ZWQgYnkgLiokZ2RiX3Byb21w dCAkIiB7Ci0tCSAgICBwYXNzICJyZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmlsZSIKLStjbGVhbl9y ZXN0YXJ0ICR7dGVzdGZpbGV9Ci0rCi0rcHJvYyBsb2FkX2NvcmUgeyBjb3JlZmlsZSB9IHsKLSsg ICAgZ2xvYmFsIGdkYl9wcm9tcHQKLSsKLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImNvcmUgJGNv cmVmaWxlIiBcCi0rCSJyZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmlsZSIgewotKwkgICAgLXJlICIg aXMgbm90IGEgY29yZSBkdW1wOi4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJCWZhaWwgInJlLWxv YWQgZ2VuZXJhdGVkIGNvcmVmaWxlIChiYWQgZmlsZSBmb3JtYXQpIgotKwkJIyBObyB1c2UgcHJv Y2VlZGluZyBmcm9tIGhlcmUuCi0rCQlyZXR1cm4gMDsKLSsJICAgIH0KLSsJICAgIC1yZSAiOiBO byBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LipcclxuJGdkYl9wcm9tcHQgJCIgewotKwkJZmFpbCAi cmUtbG9hZCBnZW5lcmF0ZWQgY29yZWZpbGUgKGZpbGUgbm90IGZvdW5kKSIKLSsJCSMgTm8gdXNl IHByb2NlZWRpbmcgZnJvbSBoZXJlLgotKwkJcmV0dXJuIDA7Ci0rCSAgICB9Ci0rCSAgICAtcmUg IkNvdWxkbid0IGZpbmQgLiogcmVnaXN0ZXJzIGluIGNvcmUgZmlsZS4qXHJcbiRnZGJfcHJvbXB0 ICQiIHsKLSsJCWZhaWwgInJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIChpbmNvbXBsZXRlIG5v dGUgc2VjdGlvbikiCi0rCSAgICB9Ci0rCSAgICAtcmUgIkNvcmUgd2FzIGdlbmVyYXRlZCBieSAu KlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCQlwYXNzICJyZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmls ZSIKLSsJICAgIH0KLSAJfQotLSAgICB9Ci0rICAgIHJldHVybiAxCi0rfQotKwotK2lmICFbbG9h ZF9jb3JlICRjb3JlZmlsZV0gewotKyAgICByZXR1cm4KLSt9Ci0gCi0gIyBGSVhNRTogbm93IHdo YXQgY2FuIHdlIHRlc3QgYWJvdXQgdGhlIHRocmVhZCBzdGF0ZT8KLSAjIFdlIGRvIG5vdCBrbm93 IGZvciBjZXJ0YWluIHRoYXQgdGhlcmUgc2hvdWxkIGJlIGF0IGxlYXN0IAotQEAgLTE1OCw1ICsx NjAsMyBAQCBnZGJfdGVzdCAiaW5mbyB0aHJlYWRzIiAiLiogdGhyZWFkMiAuKiIgXAotIAotIGdk Yl90ZXN0ICJpbmZvIHRocmVhZHMiICIuKiR7bmx9XFwqICR7aG9yaXp9IHRocmVhZDIgLioiIFwK LSAJInRocmVhZDIgaXMgY3VycmVudCB0aHJlYWQgaW4gY29yZWZpbGUiCi0tCi0tc2V0IHRpbWVv dXQgJHByZXZfdGltZW91dAotCgpkaWZmIC0tZ2l0IGEvZ2RiLWNvcmUtdGhyZWFkLWludGVybmFs ZXJyLTJvZjMucGF0Y2ggYi9nZGItY29yZS10aHJlYWQtaW50ZXJuYWxlcnItMm9mMy5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAxZjFkMS4uMDAwMDAwMAotLS0gYS9nZGIt Y29yZS10aHJlYWQtaW50ZXJuYWxlcnItMm9mMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEw MiArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wMi9t c2cwMDY4MC5odG1sCi1TdWJqZWN0OiBbcGF0Y2ggMi8zXSBGaXggdGhyZWFkaW5nIGludGVybmFs IGVycm9yIG9uIGNvcnJ1cHRlZCBtZW1vcnkgW3JlZGlmZl0KLQotW3JlZGlmZl0KLQotZ2RiLwot MjAxMS0wMi0yNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot Ci0JKiBsaW51eC10aHJlYWQtZGIuYyAoZmluZF9uZXdfdGhyZWFkc19jYWxsYmFjayk6IEV4aXQg b24gemVybyBUSV9USUQKLQlldmVuIGlmICFUQVJHRVRfSEFTX0VYRUNVVElPTi4KLQotZ2RiL3Rl c3RzdWl0ZS8KLTIwMTEtMDItMjQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KLQotCSogZ2RiLnRocmVhZHMvZ2NvcmUtdGhyZWFkLmV4cCAoJGNvcmUwZmlsZSk6 IE5ldyB2YXJpYWJsZS4KLQkoY2xlYXIgX19zdGFja191c2VyLm5leHQsIGNsZWFyIHN0YWNrX3Vz ZWQubmV4dCkKLQkoc2F2ZSBhIHplcm9lZC10aHJlYWRzIGNvcmVmaWxlKTogTmV3IHRlc3QuCi0J Q2FsbCBjb3JlX2xvYWQgZm9yICRjb3JlMGZpbGUuCi0JKHplcm9lZC10aHJlYWRzIGNhbm5vdCBi ZSBsaXN0ZWQpOiBOZXcgdGVzdC4KLQotLS0tIGEvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCi0rKysg Yi9nZGIvbGludXgtdGhyZWFkLWRiLmMKLUBAIC0xMzM1LDcgKzEzMzUsNyBAQCBmaW5kX25ld190 aHJlYWRzX2NhbGxiYWNrIChjb25zdCB0ZF90aHJoYW5kbGVfdCAqdGhfcCwgdm9pZCAqZGF0YSkK LSAgIGlmICh0aS50aV9zdGF0ZSA9PSBURF9USFJfVU5LTk9XTiB8fCB0aS50aV9zdGF0ZSA9PSBU RF9USFJfWk9NQklFKQotICAgICByZXR1cm4gMDsJCQkvKiBBIHpvbWJpZSAtLSBpZ25vcmUuICAq LwotIAotLSAgaWYgKHRpLnRpX3RpZCA9PSAwICYmIHRhcmdldF9oYXNfZXhlY3V0aW9uKQotKyAg aWYgKHRpLnRpX3RpZCA9PSAwKQotICAgICB7Ci0gICAgICAgLyogQSB0aHJlYWQgSUQgb2YgemVy byBtZWFucyB0aGF0IHRoaXMgaXMgdGhlIG1haW4gdGhyZWFkLCBidXQKLSAJIGdsaWJjIGhhcyBu b3QgeWV0IGluaXRpYWxpemVkIHRocmVhZC1sb2NhbCBzdG9yYWdlIGFuZCB0aGUKLUBAIC0xMzQ3 LDEwICsxMzQ3LDEzIEBAIGZpbmRfbmV3X3RocmVhZHNfY2FsbGJhY2sgKGNvbnN0IHRkX3Rocmhh bmRsZV90ICp0aF9wLCB2b2lkICpkYXRhKQotIAkgbmVlZCB0aGlzIGdsaWJjIGJ1ZyB3b3JrYXJv dW5kLiAgKi8KLSAgICAgICBpbmZvLT5uZWVkX3N0YWxlX3BhcmVudF90aHJlYWRzX2NoZWNrID0g MDsKLSAKLS0gICAgICBlcnIgPSBpbmZvLT50ZF90aHJfZXZlbnRfZW5hYmxlX3AgKHRoX3AsIDEp OwotLSAgICAgIGlmIChlcnIgIT0gVERfT0spCi0tCWVycm9yIChfKCJDYW5ub3QgZW5hYmxlIHRo cmVhZCBldmVudCByZXBvcnRpbmcgZm9yIExXUCAlZDogJXMiKSwKLS0JICAgICAgIChpbnQpIHRp LnRpX2xpZCwgdGhyZWFkX2RiX2Vycl9zdHIgKGVycikpOwotKyAgICAgIGlmICh0YXJnZXRfaGFz X2V4ZWN1dGlvbikKLSsJewotKwkgIGVyciA9IGluZm8tPnRkX3Rocl9ldmVudF9lbmFibGVfcCAo dGhfcCwgMSk7Ci0rCSAgaWYgKGVyciAhPSBURF9PSykKLSsJICAgIGVycm9yIChfKCJDYW5ub3Qg ZW5hYmxlIHRocmVhZCBldmVudCByZXBvcnRpbmcgZm9yIExXUCAlZDogJXMiKSwKLSsJCSAgIChp bnQpIHRpLnRpX2xpZCwgdGhyZWFkX2RiX2Vycl9zdHIgKGVycikpOwotKwl9Ci0gCi0gICAgICAg cmV0dXJuIDA7Ci0gICAgIH0KLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZ2NvcmUt dGhyZWFkLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9nY29yZS10aHJlYWQu ZXhwCi1AQCAtMjYsNiArMjYsNyBAQCBzZXQgdGVzdGZpbGUgImdjb3JlLXRocmVhZCIKLSBzZXQg c3JjZmlsZSAgcHRocmVhZHMuYwotIHNldCBiaW5maWxlICAke29iamRpcn0vJHtzdWJkaXJ9LyR7 dGVzdGZpbGV9Ci0gc2V0IGNvcmVmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0u dGVzdAotK3NldCBjb3JlMGZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfTAudGVz dAotIAotIGlmIFtpc3RhcmdldCAiKi0qLWxpbnV4Il0gdGhlbiB7Ci0gICAgIHNldCB0YXJnZXRf Y2ZsYWdzICItRF9NSVRfUE9TSVhfVEhSRUFEUyIKLUBAIC0xMTAsNiArMTExLDI5IEBAIGlmIHsh JGNvcmVfc3VwcG9ydGVkfSB7Ci0gfQotIAotIAotKyMgVGVzdCB0aGUgdW5pbml0aWFsaXplZCB0 aHJlYWQgbGlzdC4KLSsjIFByb3ZpZGUgdGhlIGNhc2Ugb2YgZ2xpYmMgdGRfdGhyX2dldF9pbmZv IGhhbmRsaW5nIG9mOgotKyMgLyogU3BlY2lhbCBjYXNlIGZvciB0aGUgbWFpbiB0aHJlYWQgYmVm b3JlIGluaXRpYWxpemF0aW9uLiAgKi8KLSsKLStmb3JlYWNoIHN5bWJvbCB7X19zdGFja191c2Vy IHN0YWNrX3VzZWR9IHsKLSsgICAgc2V0IHRlc3QgImNsZWFyICR7c3ltYm9sfS5uZXh0IgotKyAg ICBnZGJfdGVzdF9tdWx0aXBsZSAicCAqKHZvaWQgKiopICYke3N5bWJvbH0gPSAwIiAkdGVzdCB7 Ci0rCS1yZSAiID0gXFwodm9pZCBcXCpcXCkgMHgwXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAg IHBhc3MgJHRlc3QKLSsJfQotKwktcmUgIk5vIHN5bWJvbCBcIiR7c3ltYm9sfVwiIGluIGN1cnJl bnQgY29udGV4dFxcLlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICB4ZmFpbCAkdGVzdAotKwkg ICAgIyBEbyBub3QgZG8gdGhlIHZlcmlmaWNhdGlvbi4KLSsJICAgIHNldCBjb3JlMGZpbGUgIiIK LSsJfQotKyAgICB9Ci0rfQotKwotK2lmIHsiJGNvcmUwZmlsZSIgIT0gIiJ9IHsKLSsgICAgZ2Ri X3Rlc3QgImdjb3JlICRjb3JlMGZpbGUiICJTYXZlZCBjb3JlZmlsZSAuKiIgInNhdmUgYSB6ZXJv ZWQtdGhyZWFkcyBjb3JlZmlsZSIKLSt9Ci0rCi0rCi0gIyBOb3cgcmVzdGFydCBnZGIgYW5kIGxv YWQgdGhlIGNvcmVmaWxlLgotIGNsZWFuX3Jlc3RhcnQgJHt0ZXN0ZmlsZX0KLSAKLUBAIC0xNjAs MyArMTg0LDExIEBAIGdkYl90ZXN0ICJpbmZvIHRocmVhZHMiICIuKiB0aHJlYWQyIC4qIiBcCi0g Ci0gZ2RiX3Rlc3QgImluZm8gdGhyZWFkcyIgIi4qJHtubH1cXCogJHtob3Jpen0gdGhyZWFkMiAu KiIgXAotIAkidGhyZWFkMiBpcyBjdXJyZW50IHRocmVhZCBpbiBjb3JlZmlsZSIKLSsKLSsKLSsj IFRlc3QgdGhlIHVuaW5pdGlhbGl6ZWQgdGhyZWFkIGxpc3QuCi0rCi0raWYgeyIkY29yZTBmaWxl IiAhPSAiIiAmJiBbbG9hZF9jb3JlICRjb3JlMGZpbGVdfSB7Ci0rCi0rICAgIGdkYl90ZXN0ICJp bmZvIHRocmVhZHMiICJDYW5ub3QgZmluZCBuZXcgdGhyZWFkczogLioiICJ6ZXJvZWQtdGhyZWFk cyBjYW5ub3QgYmUgbGlzdGVkIgotK30KLQoKZGlmZiAtLWdpdCBhL2dkYi1jb3JlLXRocmVhZC1p bnRlcm5hbGVyci0zb2YzLnBhdGNoIGIvZ2RiLWNvcmUtdGhyZWFkLWludGVybmFsZXJyLTNvZjMu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4ZTJkOGMuLjAwMDAwMDAKLS0t IGEvZ2RiLWNvcmUtdGhyZWFkLWludGVybmFsZXJyLTNvZjMucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxMDEgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MTEtMDIvbXNnMDA2NzUuaHRtbAotU3ViamVjdDogW3BhdGNoIDMvM10gRGlzcGxheSBjb3JlIHJl YXNvbnMgZXZlbiBkdXJpbmcgdGhyZWFkIGVycm9yCi0KLVsgcmVkaWZmIF0KLQotSGksCi0KLXRo aXMgaXMgbW9zdGx5IHVucmVsYXRlZC4gIEJ1dCBhZnRlciB0aGUgcGF0Y2ggMi8zIGl0IHdpbGwg c3RpbGwgRkFJTDoKLQlMb2FkZWQgc3ltYm9scyBmb3IgL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5z by4yCi0JQ2Fubm90IGZpbmQgbmV3IHRocmVhZHM6IGRlYnVnZ2VyIHNlcnZpY2UgZmFpbGVkCi0J KGdkYikgRkFJTDogZ2RiLnRocmVhZHMvZ2NvcmUtdGhyZWFkLmV4cDogcmUtbG9hZCBnZW5lcmF0 ZWQgY29yZWZpbGUKLQotYXMgaXQgaXMgYSBjb21tb24gYnVnIEkgZGlzbGlrZSBmb3IgeWVhcnMg SSBoYXZlIGZpeGVkIGl0IGhlcmU6Ci0JTG9hZGVkIHN5bWJvbHMgZm9yIC9saWI2NC9sZC1saW51 eC14ODYtNjQuc28uMgotCUNhbm5vdCBmaW5kIG5ldyB0aHJlYWRzOiBkZWJ1Z2dlciBzZXJ2aWNl IGZhaWxlZAotCUNvcmUgd2FzIGdlbmVyYXRlZCBieSBgLi4uL2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvZ2NvcmUtdGhyZWFkJy4KLQlQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgNSwg VHJhY2UvYnJlYWtwb2ludCB0cmFwLgotCSMwICB0aHJlYWQyIChhcmc9MHhkZWFkYmVlZikgYXQg Li9nZGIudGhyZWFkcy9wdGhyZWFkcy5jOjkxCi0JOTEgICAgICAgIGludCBrID0gMDsKLQkoZ2Ri KSBQQVNTOiBnZGIudGhyZWFkcy9nY29yZS10aHJlYWQuZXhwOiByZS1sb2FkIGdlbmVyYXRlZCBj b3JlZmlsZQotCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVk b3JhMTUtbGludXgtZ251LgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIwMTEtMDItMjQg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogY29yZWxv dy5jOiBJbmNsdWRlIHdyYXBwZXIuaC4KLQkoY29yZV9vcGVuKTogQ2FsbCBub3cgZ2RiX3Rhcmdl dF9maW5kX25ld190aHJlYWRzLgotCSogd3JhcHBlci5jOiBJbmNsdWRlIHRhcmdldC5oLgotCShn ZGJfdGFyZ2V0X2ZpbmRfbmV3X3RocmVhZHMpOiBOZXcuCi0JKiB3cmFwcGVyLmggKGdkYl90YXJn ZXRfZmluZF9uZXdfdGhyZWFkcyk6IE5ldyBkZWNsYXJhdGlvbi4KLQotLS0tIGEvZ2RiL2NvcmVs b3cuYwotKysrIGIvZ2RiL2NvcmVsb3cuYwotQEAgLTQ3LDYgKzQ3LDcgQEAKLSAjaW5jbHVkZSAi YXV4di5oIgotICNpbmNsdWRlICJlbGYvY29tbW9uLmgiCi0gI2luY2x1ZGUgImdkYmNtZC5oIgot KyNpbmNsdWRlICJ3cmFwcGVyLmgiCi0gCi0gCi0gI2lmbmRlZiBPX0xBUkdFRklMRQotQEAgLTQy OCw3ICs0MjksNyBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCi0g ICAgICBtYXkgYmUgYSB0aHJlYWRfc3RyYXR1bSB0YXJnZXQgbG9hZGVkIG9uIHRvcCBvZiB0YXJn ZXQgY29yZSBieQotICAgICAgbm93LiAgVGhlIGxheWVyIGFib3ZlIHNob3VsZCBjbGFpbSB0aHJl YWRzIGZvdW5kIGluIHRoZSBCRkQKLSAgICAgIHNlY3Rpb25zLiAgKi8KLS0gIHRhcmdldF9maW5k X25ld190aHJlYWRzICgpOwotKyAgZ2RiX3RhcmdldF9maW5kX25ld190aHJlYWRzICgpOwotIAot ICAgcCA9IGJmZF9jb3JlX2ZpbGVfZmFpbGluZ19jb21tYW5kIChjb3JlX2JmZCk7Ci0gICBpZiAo cCkKLS0tLSBhL2dkYi93cmFwcGVyLmMKLSsrKyBiL2dkYi93cmFwcGVyLmMKLUBAIC0yMSw2ICsy MSw3IEBACi0gI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSAjaW5jbHVkZSAid3JhcHBlci5oIgot ICNpbmNsdWRlICJ1aS1vdXQuaCIKLSsjaW5jbHVkZSAidGFyZ2V0LmgiCi0gCi0gaW50Ci0gZ2Ri X3BhcnNlX2V4cF8xIChjaGFyICoqc3RyaW5ncHRyLCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBpbnQg Y29tbWEsCi1AQCAtMTYxLDMgKzE2MiwyNCBAQCBnZGJfdmFsdWVfc3RydWN0X2VsdCAoc3RydWN0 IHVpX291dCAqdWlvdXQsIHN0cnVjdCB2YWx1ZSAqKnJlc3VsdCwKLSAgICAgcmV0dXJuIEdEQl9S Q19GQUlMOwotICAgcmV0dXJuIEdEQl9SQ19PSzsKLSB9Ci0rCi0rLyogQ2FsbCB0YXJnZXRfZmlu ZF9uZXdfdGhyZWFkcyB3aXRob3V0IHRocm93aW5nIGV4Y2VwdGlvbi4gIEV4Y2VwdGlvbiBpcwot KyAgIHByaW50ZWQgaWYgaXQgZ290IHRocm93bi4gICovCi0rCi0raW50Ci0rZ2RiX3RhcmdldF9m aW5kX25ld190aHJlYWRzICh2b2lkKQotK3sKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0 aW9uIGV4Y2VwdDsKLSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19FUlJPUikK LSsgICAgewotKyAgICAgIHRhcmdldF9maW5kX25ld190aHJlYWRzICgpOwotKyAgICB9Ci0rCi0r ICBpZiAoZXhjZXB0LnJlYXNvbiA8IDApCi0rICAgIHsKLSsgICAgICBleGNlcHRpb25fcHJpbnQg KGdkYl9zdGRlcnIsIGV4Y2VwdCk7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgIHJldHVy biAxOwotK30KLS0tLSBhL2dkYi93cmFwcGVyLmgKLSsrKyBiL2dkYi93cmFwcGVyLmgKLUBAIC00 OCw0ICs0OCw2IEBAIGV4dGVybiBpbnQgZ2RiX3ZhbHVlX2luZCAoc3RydWN0IHZhbHVlICp2YWws IHN0cnVjdCB2YWx1ZSAqKiBydmFsKTsKLSAKLSBleHRlcm4gaW50IGdkYl9wYXJzZV9hbmRfZXZh bF90eXBlIChjaGFyICosIGludCwgc3RydWN0IHR5cGUgKiopOwotIAotK2V4dGVybiBpbnQgZ2Ri X3RhcmdldF9maW5kX25ld190aHJlYWRzICh2b2lkKTsKLSsKLSAjZW5kaWYgLyogd3JhcHBlci5o ICovCi0KCmRpZmYgLS1naXQgYS9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2ggYi9nZGItZm9ydHJh bi1jb21tb24ucGF0Y2gKaW5kZXggMTMwNDg2OC4uNjZkNDZiOSAxMDA2NDQKLS0tIGEvZ2RiLWZv cnRyYW4tY29tbW9uLnBhdGNoCisrKyBiL2dkYi1mb3J0cmFuLWNvbW1vbi5wYXRjaApAQCAtMSw4 ICsxLDggQEAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9kd2FyZjJyZWFkLmMKK0lu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4yLjkwLjIwMTEwNTI1Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA1LTI1IDE3 OjA2OjE5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2R3YXJm MnJlYWQuYwkyMDExLTA1LTI1IDE3OjEwOjQ2LjAwMDAwMDAwMCArMDIwMAotQEAgLTc2NjUsMTIg Kzc2NjUsMTQgQEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cgorLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMjIgMjA6 MTI6MDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYy cmVhZC5jCTIwMTEtMDctMjIgMjA6MTc6MjIuMDAwMDAwMDAwICswMjAwCitAQCAtNzk2OSwxMiAr Nzk2OSwxNCBAQCByZWFkX3NldF90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RyCiAgICBy ZXR1cm4gc2V0X2RpZV90eXBlIChkaWUsIHNldF90eXBlLCBjdSk7CiAgfQogIApAQCAtMTksNyAr MTksNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvZHdhcmYycmVhZC5jCiAgICBz dHJ1Y3QgYXR0cmlidXRlICphdHRyOwogICAgc3RydWN0IHN5bWJvbCAqc3ltOwogICAgQ09SRV9B RERSIGJhc2UgPSAoQ09SRV9BRERSKSAwOwotQEAgLTc2OTUsMjAgKzc2OTcsNjcgQEAgcmVhZF9j b21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTc5OTksMjAgKzgwMDEsNjcg QEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAogICAgICB9CiAgICBp ZiAoZGllLT5jaGlsZCAhPSBOVUxMKQogICAgICB7CkBAIC04Nyw3ICs4Nyw3IEBAIEluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9kd2FyZjJyZWFkLmMKICAgICAgfQogIH0KICAKLUBAIC0x MTM3Niw2ICsxMTQyNSwxMyBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzCitAQCAtMTE2OTUsNiArMTE3NDQsMTMgQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgcwogIAkgICAgewogIAkgICAgICB2YXJfZGVjb2RlX2xvY2F0aW9uIChhdHRy LCBzeW0sIGN1KTsKICAJICAgICAgYXR0cjIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9leHRl cm5hbCwgY3UpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1 L2dkYi9kd2FyZjJyZWFkLmMKICAJICAgICAgaWYgKFNZTUJPTF9DTEFTUyAoc3ltKSA9PSBMT0Nf U1RBVElDCiAgCQkgICYmIFNZTUJPTF9WQUxVRV9BRERSRVNTIChzeW0pID09IDAKICAJCSAgJiYg IWR3YXJmMl9wZXJfb2JqZmlsZS0+aGFzX3NlY3Rpb25fYXRfemVybykKLUBAIC0xMTU0OCw2ICsx MTYwNCwxMSBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCitAQCAt MTE4NjcsNiArMTE5MjMsMTEgQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgcwogIAkgIFNZTUJPTF9DTEFTUyAoc3ltKSA9IExPQ19UWVBFREVGOwogIAkgIGxpc3RfdG9f YWRkID0gJmdsb2JhbF9zeW1ib2xzOwogIAkgIGJyZWFrOwpAQCAtMTEzLDExICsxMTMsMTEgQEAg SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2R3YXJmMnJlYWQuYwogIAlkZWZhdWx0Ogog IAkgIC8qIE5vdCBhIHRhZyB3ZSByZWNvZ25pemUuICBIb3BlZnVsbHkgd2UgYXJlbid0IHByb2Nl c3NpbmcKICAJICAgICB0cmFzaCBkYXRhLCBidXQgc2luY2Ugd2UgbXVzdCBzcGVjaWZpY2FsbHkg aWdub3JlIHRoaW5ncwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2YtbGFuZy5jCitJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi1sYW5nLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjkwLjIwMTEwNTI1Lm9yaWcvZ2RiL2YtbGFuZy5jCTIwMTEtMDUtMjUgMTc6MDY6MjIu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvZi1sYW5nLmMJMjAx MS0wNS0yNSAxNzowNzowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC00NDYsMjcgKzQ0NiwzIEBAIF9p bml0aWFsaXplX2ZfbGFuZ3VhZ2UgKHZvaWQpCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmln L2dkYi9mLWxhbmcuYwkyMDExLTA3LTIyIDIwOjE3OjE2LjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2YtbGFuZy5jCTIwMTEtMDctMjIgMjA6MTc6MjIuMDAwMDAw MDAwICswMjAwCitAQCAtMzcxLDI3ICszNzEsMyBAQCBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICh2 b2lkKQogIAogICAgYWRkX2xhbmd1YWdlICgmZl9sYW5ndWFnZV9kZWZuKTsKICB9CkBAIC0xNDUs MTAgKzE0NSwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvZi1sYW5nLmMKIC0g ICAgfQogLSAgcmV0dXJuIChOVUxMKTsKIC19Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDUyNS9n ZGIvZi1sYW5nLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLWxhbmcuaAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA1MjUub3JpZy9nZGIvZi1sYW5nLmgJMjAxMS0w NS0yNSAxNzowNjoyMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNTI1L2dk Yi9mLWxhbmcuaAkyMDExLTA1LTI1IDE3OjA3OjAyLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03 LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZi1sYW5nLmgJMjAxMS0wNy0yMiAyMDoxNzoxNi4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLWxhbmcuaAkyMDExLTA3 LTIyIDIwOjE3OjIyLjAwMDAwMDAwMCArMDIwMAogQEAgLTUyLDM2ICs1Miw4IEBAIGVudW0gZjkw X3JhbmdlX3R5cGUKICAgICAgTk9ORV9CT1VORF9ERUZBVUxUCQkvKiAiKGxvdzpoaWdoKSIgICov CiAgICB9OwpAQCAtMTg2LDExICsxODYsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUv Z2RiL2YtbGFuZy5oCiAgCiAgLyogV2hlbiByZWFzb25hYmxlIGFycmF5IGJvdW5kcyBjYW5ub3Qg YmUgZmV0Y2hlZCwgc3VjaCBhcyB3aGVuIAogICAgIHlvdSBhc2sgdG8gJ210IHByaW50IHN5bWJv bHMnIGFuZCB0aGVyZSBpcyBubyBzdGFjayBmcmFtZSBhbmQgCi1JbmRleDogZ2RiLTcuMi45MC4y MDExMDUyNS9nZGIvZi12YWxwcmludC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv Zi12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDUyNS5vcmlnL2dk Yi9mLXZhbHByaW50LmMJMjAxMS0wNS0yNSAxNzowNjoyMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9mLXZhbHByaW50LmMJMjAxMS0wNS0yNSAxNzowNzowMi4w MDAwMDAwMDAgKzAyMDAKLUBAIC0zNCw2ICszNCw4IEBACistLS0gZ2RiLTcuMy41MC4yMDExMDcy Mi5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMS0wNy0yMiAyMDoxNzoxNi4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLXZhbHByaW50LmMJMjAxMS0wNy0yMiAy MDoxODoyNi4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zNCwxMCArMzQsMTEgQEAKICAjaW5jbHVkZSAi Z2RiY29yZS5oIgogICNpbmNsdWRlICJjb21tYW5kLmgiCiAgI2luY2x1ZGUgImJsb2NrLmgiCkBA IC0xOTksNyArMTk5LDExIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9mLXZhbHBy aW50LmMKICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9mX3ZhbHByaW50ICh2b2lkKTsKICBz dGF0aWMgdm9pZCBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICosIGludCk7Ci1AQCAtNTAxLDIy ICs1MDMsNTQgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZAorLXN0 YXRpYyB2b2lkIGxpc3RfYWxsX3Zpc2libGVfY29tbW9ucyAoY2hhciAqKTsKKyBzdGF0aWMgdm9p ZCBmNzdfY3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0X3RibCAoc3RydWN0IHR5cGUgKiwKKyAJCQkJ CSAgICAgIHN0cnVjdCB1aV9maWxlICopOworIHN0YXRpYyB2b2lkIGY3N19nZXRfZHluYW1pY19s ZW5ndGhfb2ZfYWdncmVnYXRlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC01MTUsMjIgKzUxNiw1NCBA QCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkCiAgICByZXR1cm4gMDsK ICB9CiAgCkBAIC0yNjcsNyArMjcxLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2Ri L2YtdmFscHJpbnQuYwogIH0KICAKICAvKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcHJpbnQg b3V0IHRoZSB2YWx1ZXMgaW4gYSBnaXZlbiBDT01NT04gCi1AQCAtNTI2LDExICs1NjAsOSBAQCBs aXN0X2FsbF92aXNpYmxlX2NvbW1vbnMgKGNoYXIgKmZ1bm5hbWUpCitAQCAtNTQwLDExICs1NzMs OSBAQCBsaXN0X2FsbF92aXNpYmxlX2NvbW1vbnMgKGNoYXIgKmZ1bm5hbWUpCiAgc3RhdGljIHZv aWQKICBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQgZnJvbV90dHkpCiAg ewpAQCAtMjgxLDcgKzI4NSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9mLXZh bHByaW50LmMKICAKICAgIC8qIFdlIGhhdmUgYmVlbiB0b2xkIHRvIGRpc3BsYXkgdGhlIGNvbnRl bnRzIG9mIEY3NyBDT01NT04gCiAgICAgICBibG9jayBzdXBwb3NlZGx5IHZpc2libGUgaW4gdGhp cyBmdW5jdGlvbi4gIExldCB1cyAKLUBAIC01NDIsNzQgKzU3NCwzMSBAQCBpbmZvX2NvbW1vbl9j b21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQgCitAQCAtNTU2LDc0ICs1ODcsMzEgQEAgaW5mb19j b21tb25fY29tbWFuZCAoY2hhciAqY29tbmFtZSwgaW50IAogICAgLyogVGhlIGZvbGxvd2luZyBp cyBnZW5lcmFsbHkgcmlwcGVkIG9mZiBmcm9tIHN0YWNrLmMncyByb3V0aW5lIAogICAgICAgcHJp bnRfZnJhbWVfaW5mbygpLiAgKi8KICAKQEAgLTM3MiwxMSArMzc2LDExIEBAIEluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNTI1L2dkYi9mLXZhbHByaW50LmMKICB9CiAgCiAgdm9pZAotSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA1MjUvZ2RiL3N0YWNrLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9zdGFjay5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDUyNS5vcmlnL2dk Yi9zdGFjay5jCTIwMTEtMDUtMjUgMTc6MDU6MjEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDUyNS9nZGIvc3RhY2suYwkyMDExLTA1LTI1IDE3OjA3OjAyLjAwMDAwMDAwMCAr MDIwMAotQEAgLTE1MjUsNiArMTUyNSw4IEBAIGl0ZXJhdGVfb3Zlcl9ibG9ja19sb2NhbHMgKHN0 cnVjdCBibG9jayAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3N0YWNrLmMJMjAx MS0wNy0yMiAyMDoxMjowNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9zdGFjay5jCTIwMTEtMDctMjIgMjA6MTc6MjIuMDAwMDAwMDAwICswMjAwCitAQCAtMTUy NCw2ICsxNTI0LDggQEAgaXRlcmF0ZV9vdmVyX2Jsb2NrX2xvY2FscyAoc3RydWN0IGJsb2NrIAog IAljYXNlIExPQ19DT01QVVRFRDoKICAJICBpZiAoU1lNQk9MX0lTX0FSR1VNRU5UIChzeW0pKQog IAkgICAgYnJlYWs7CkBAIC0zODUsMjYgKzM4OSwyNiBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDEx MDUyNS9nZGIvc3RhY2suYwogIAkgICgqY2IpIChTWU1CT0xfUFJJTlRfTkFNRSAoc3ltKSwgc3lt LCBjYl9kYXRhKTsKICAJICBicmVhazsKICAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dk Yi9zeW10YWIuaAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bXRhYi5oCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDUyNS5vcmlnL2dkYi9zeW10YWIuaAkyMDExLTA1 LTI1IDE3OjA1OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2Ri L3N5bXRhYi5oCTIwMTEtMDUtMjUgMTc6MDc6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtNDExLDcg KzQxMSwxMCBAQCB0eXBlZGVmIGVudW0gZG9tYWluX2VudW1fdGFnCi0gICBUWVBFU19ET01BSU4s CistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9zeW10YWIuaAkyMDExLTA3LTIyIDIw OjEyOjA1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bXRh Yi5oCTIwMTEtMDctMjIgMjA6MTg6NTguMDAwMDAwMDAwICswMjAwCitAQCAtMzk2LDcgKzM5Niwx MCBAQCB0eXBlZGVmIGVudW0gZG9tYWluX2VudW1fdGFnCiAgCi0gICAvKiBBbnkgdHlwZS4gICov Ci0tICBBTExfRE9NQUlOCi0rICBBTExfRE9NQUlOLAorICAgLyogTEFCRUxfRE9NQUlOIG1heSBi ZSB1c2VkIGZvciBuYW1lcyBvZiBsYWJlbHMgKGZvciBnb3RvcykuICAqLworIAorLSAgTEFCRUxf RE9NQUlOCisrICBMQUJFTF9ET01BSU4sCiArCiArICAvKiBGb3J0cmFuIGNvbW1vbiBibG9ja3Mu ICBUaGVpciBuYW1pbmcgbXVzdCBiZSBzZXBhcmF0ZSBmcm9tIFZBUl9ET01BSU4uICAqLwogKyAg Q09NTU9OX0JMT0NLX0RPTUFJTgotIH0KLSBkb21haW5fZW51bTsKKyB9IGRvbWFpbl9lbnVtOwog IAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9j b21tb24tYmxvY2suZXhwCisgLyogU2VhcmNoaW5nIGRvbWFpbnMsIHVzZWQgZm9yIGBzZWFyY2hf c3ltYm9scycuICBFbGVtZW50IG51bWJlcnMgYXJlCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy4yLjkwLjIwMTEwNTI1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2Nr LmV4cAkyMDExLTA1LTI1IDE3OjA3OjAyLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMTEt MDctMjIgMjA6MTc6MjIuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDEwMSBAQAogKyMgQ29w eXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC00MjgsNyAr NDMyLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9jb21tb24tYmxvY2suZXhwCiArc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiArc2V0 IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQogKwotK2lmICB7IFtnZGJf Y29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhl Y3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0gIT0gIiIgfSB7CisraWYgIHsgW2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxl IHtkZWJ1ZyBmOTAgcXVpZXR9XSAhPSAiIiB9IHsKICsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNv bXBpbGUgJHtzcmNmaWxlfSIKICsgICAgcmV0dXJuIC0xCiArfQpAQCAtNTA3LDEwICs1MTEsMTAg QEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9j b21tb24tYmxvY2suZXhwCiArZ2RiX3Rlc3QgInAgaXhfeCIgIiA9IDEgKiIgInAgaXhfeCBpbiIK ICtnZGJfdGVzdCAicCBpeV95IiAiID0gMiAqIiAicCBpeV95IGluIgogK2dkYl90ZXN0ICJwIGl6 X3oyIiAiID0gMyAqIiAicCBpel96MiBpbiIKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmY5MAorSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZjkwCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Nv bW1vbi1ibG9jay5mOTAJMjAxMS0wNS0yNSAxNzowNzowMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2Nr LmY5MAkyMDExLTA3LTIyIDIwOjE3OjIyLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSw2NyBA QAogKyEgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIQoK ZGlmZiAtLWdpdCBhL2dkYi1nY2M0Ni1zdGRhcmctcHJvbG9ndWUucGF0Y2ggYi9nZGItZ2NjNDYt c3RkYXJnLXByb2xvZ3VlLnBhdGNoCmluZGV4IDA3OWM0YTAuLmQwZjMxOGUgMTAwNjQ0Ci0tLSBh L2dkYi1nY2M0Ni1zdGRhcmctcHJvbG9ndWUucGF0Y2gKKysrIGIvZ2RiLWdjYzQ2LXN0ZGFyZy1w cm9sb2d1ZS5wYXRjaApAQCAtMSwyNCArMSw2NTUgQEAKLWRpZmYgLS1naXQgYS9nZGIvZHdhcmYy cmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwotaW5kZXggNmE5OGQ1Ny4uOWZhOWMzYyAxMDA2NDQK K2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTA3L21zZzAwNjQ1Lmh0 bWwKK1N1YmplY3Q6IFtwYXRjaF0gd29ya2Fyb3VuZCBnY2M0NjogcHJvbG9ndWUgc2tpcCBza2lw cyB0b28gZmFyIChQUiAxMjQzNSkgIzIKKworSGksCisKK3RoaXMgaXMgYW4gaW1wcm92ZWQgcGF0 Y2ggb2YgYSBmb3JtZXI6CisJW3BhdGNoXSB3b3JrYXJvdW5kIGdjYzQ2OiBwcm9sb2d1ZSBza2lw IHNraXBzIHRvbyBmYXIgKFBSIDEyNDM1KQorCWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt cGF0Y2hlcy8yMDExLTAzL21zZzAxMTA4Lmh0bWwKKwljYW5jZWwvRllJOiBSZTogW3BhdGNoXSB3 b3JrYXJvdW5kIGdjYzQ2OiBwcm9sb2d1ZSBza2lwIHNraXBzIHRvbyBmYXIgKFBSIDEyNDM1KQor CWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTAzL21zZzAxMTIzLmh0 bWwKKworRm9yIGV4YW1wbGUgYGJyZWFrIGVycm9yJyBkb2VzIG5vdCB3b3JrIGZvciBkZWJ1Z2dp bmcgR0RCIHdpdGggZ2NjLTQuNi54LgorCitBcyBnY2MtNC42LjAgYW5kIG5vdyBldmVuIDQuNi4x IHN0aWxsIGhhcyB0aGlzIGJ1ZyBhbmQgSSBoYXZlIHNlZW4gYSB1c2VyKHM/KQorb24gbm9uLUZl ZG9yYSBwbGF0Zm9ybSBhc2tpbmcgYWJvdXQgdGhpcyBidWcgYW5kIGFzIHRoZXJlIG1heSBiZSBl bm91Z2gKK2JpbmFyaWVzIG91dCB0aGVyZSAoYWx0aG91Z2ggaXQgYWZmZWN0cyBvbmx5IC1PMCAt ZyBjb21waWxhdGlvbikgY29kZWQgaXQKK3Byb3Blcmx5IEkgaGF2ZSBjb2RlZCB0aGUgd29ya2Fy b3VuZCBwcm9wZXJseSB0aGlzIHRpbWUuCisKK0l0IGRvZXMgbm90IHNvbHZlIG92ZXJsYXlzIHdl bGwsIGJ1dCB0aGUgY29kZSBqdXN0IGRvZXMgbm90IHdvcmsgZm9yIG92ZXJsYXlzLAoraXQgaGFz IG5vIG90aGVyIG5lZ2F0aXZlIGVmZmVjdC4KKworSSB3aWxsIHVwZGF0ZSB0aGUgY29kZSBhZnRl ciBGU0YgZ2NjIGdldHMgZml4ZWQgdG8gbWluaW1pemUgdGhlIHdvcmthcm91bmQuCisKK05vIHJl Z3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRvcmExNnByZS1saW51eC1n bnUuCisKK0kgd291bGQgd2VsY29tZSBhIGNvbW1lbnQgd2hldGhlciBpdCBpcyBzdWl0YWJsZSBm b3IgRlNGIEdEQi4KKworCitUaGFua3MsCitKYW4KKworCitnZGIvCisyMDExLTA3LTIyICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwlQUiBicmVha3BvaW50 cy8xMjQzNQorCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9za2lwX3Byb2xvZ3VlKTogTmV3IHZhcmlh YmxlcyBzdGFydF9wY19zYWwsCisJbmV4dF9zYWwsIGJ1Ziwgb2Zmc2V0IGFuZCB4bW1yZWcuICBB ZHZhbmNlIFBDIGlmIGl0IHNlZXMgdGhlIFBSLgorCSogZHdhcmYycmVhZC5jIChwcm9jZXNzX2Z1 bGxfY29tcF91bml0KTogSW5pdGlhbGl6ZQorCWFtZDY0X3Byb2xvZ3VlX2xpbmVfYnVnLgorCSog c3ltdGFiLmggKHN0cnVjdCBzeW10YWIpOiBOZXcgZmllbGQgYW1kNjRfcHJvbG9ndWVfbGluZV9i dWcuCisKK2dkYi90ZXN0c3VpdGUvCisyMDExLTA3LTIyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwlQUiBicmVha3BvaW50cy8xMjQzNQorCSogZ2RiLmFy Y2gvYW1kNjQtcHJvbG9ndWUteG1tLmM6IE5ldyBmaWxlLgorCSogZ2RiLmFyY2gvYW1kNjQtcHJv bG9ndWUteG1tLmV4cDogTmV3IGZpbGUuCisJKiBnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0u czogTmV3IGZpbGUuCisKKy0tLSBhL2dkYi9hbWQ2NC10ZGVwLmMKKysrKyBiL2dkYi9hbWQ2NC10 ZGVwLmMKK0BAIC0xOTAyLDYgKzE5MDIsOSBAQCBhbWQ2NF9za2lwX3Byb2xvZ3VlIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHN0YXJ0X3BjKQorIHsKKyAgIHN0cnVjdCBhbWQ2 NF9mcmFtZV9jYWNoZSBjYWNoZTsKKyAgIENPUkVfQUREUiBwYzsKKysgIHN0cnVjdCBzeW10YWJf YW5kX2xpbmUgc3RhcnRfcGNfc2FsLCBuZXh0X3NhbDsKKysgIGdkYl9ieXRlIGJ1Zls0ICsgOCAq IDddOworKyAgaW50IG9mZnNldCwgeG1tcmVnOworIAorICAgYW1kNjRfaW5pdF9mcmFtZV9jYWNo ZSAoJmNhY2hlKTsKKyAgIHBjID0gYW1kNjRfYW5hbHl6ZV9wcm9sb2d1ZSAoZ2RiYXJjaCwgc3Rh cnRfcGMsIDB4ZmZmZmZmZmZmZmZmZmZmZkxMLAorQEAgLTE5MDksNyArMTkxMiw3MSBAQCBhbWQ2 NF9za2lwX3Byb2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHN0YXJ0 X3BjKQorICAgaWYgKGNhY2hlLmZyYW1lbGVzc19wKQorICAgICByZXR1cm4gc3RhcnRfcGM7Cisg CistICByZXR1cm4gcGM7CisrICAvKiBHQ0MgUFIgZGVidWcvNDg4MjcgcHJvZHVjZWQgZmFsc2Ug cHJvbG9ndWUgZW5kOgorKyAgICAgODQgYzAgICAgICAgICAgICAgICAgdGVzdCAgICVhbCwlYWwK KysgICAgIDc0IDIzICAgICAgICAgICAgICAgIGplICAgICBhZnRlcgorKyAgICAgPC0tIGhlcmUg aXMgMCBsaW5lcyBhZHZhbmNlIC0gdGhlIGZhbHNlIHByb2xvZ3VlIGVuZCBtYXJrZXIuCisrICAg ICAwZiAyOSA4NSA3MCBmZiBmZiBmZiBtb3ZhcHMgJXhtbTAsLTB4OTAoJXJicCkKKysgICAgIDBm IDI5IDRkIDgwICAgICAgICAgIG1vdmFwcyAleG1tMSwtMHg4MCglcmJwKQorKyAgICAgMGYgMjkg NTUgOTAgICAgICAgICAgbW92YXBzICV4bW0yLC0weDcwKCVyYnApCisrICAgICAwZiAyOSA1ZCBh MCAgICAgICAgICBtb3ZhcHMgJXhtbTMsLTB4NjAoJXJicCkKKysgICAgIDBmIDI5IDY1IGIwICAg ICAgICAgIG1vdmFwcyAleG1tNCwtMHg1MCglcmJwKQorKyAgICAgMGYgMjkgNmQgYzAgICAgICAg ICAgbW92YXBzICV4bW01LC0weDQwKCVyYnApCisrICAgICAwZiAyOSA3NSBkMCAgICAgICAgICBt b3ZhcHMgJXhtbTYsLTB4MzAoJXJicCkKKysgICAgIDBmIDI5IDdkIGUwICAgICAgICAgIG1vdmFw cyAleG1tNywtMHgyMCglcmJwKQorKyAgICAgYWZ0ZXI6ICAqLworKworKyAgaWYgKHBjID09IHN0 YXJ0X3BjKQorKyAgICByZXR1cm4gcGM7CisrCisrICBzdGFydF9wY19zYWwgPSBmaW5kX3BjX3Nl Y3RfbGluZSAoc3RhcnRfcGMsIE5VTEwsIDApOworKyAgaWYgKHN0YXJ0X3BjX3NhbC5zeW10YWIg PT0gTlVMTAorKyAgICAgIHx8ICFzdGFydF9wY19zYWwuc3ltdGFiLT5hbWQ2NF9wcm9sb2d1ZV9s aW5lX2J1ZworKyAgICAgIHx8IHN0YXJ0X3BjX3NhbC5wYyAhPSBzdGFydF9wYyB8fCBwYyA+PSBz dGFydF9wY19zYWwuZW5kKQorKyAgICByZXR1cm4gcGM7CisrCisrICBuZXh0X3NhbCA9IGZpbmRf cGNfc2VjdF9saW5lIChzdGFydF9wY19zYWwuZW5kLCBOVUxMLCAwKTsKKysgIGlmIChuZXh0X3Nh bC5saW5lICE9IHN0YXJ0X3BjX3NhbC5saW5lKQorKyAgICByZXR1cm4gcGM7CisrCisrICAvKiBT VEFSVF9QQyBjYW4gYmUgZnJvbSBvdmVybGF5ZWQgbWVtb3J5LCBpZ25vcmVkIGhlcmUuICAqLwor KyAgaWYgKHRhcmdldF9yZWFkX21lbW9yeSAobmV4dF9zYWwucGMgLSA0LCBidWYsIHNpemVvZiAo YnVmKSkgIT0gMCkKKysgICAgcmV0dXJuIHBjOworKworKyAgLyogdGVzdCAlYWwsJWFsICovCisr ICBpZiAoYnVmWzBdICE9IDB4ODQgfHwgYnVmWzFdICE9IDB4YzApCisrICAgIHJldHVybiBwYzsK KysgIC8qIGplIEFGVEVSICovCisrICBpZiAoYnVmWzJdICE9IDB4NzQpCisrICAgIHJldHVybiBw YzsKKysKKysgIG9mZnNldCA9IDQ7CisrICBmb3IgKHhtbXJlZyA9IDA7IHhtbXJlZyA8IDg7IHht bXJlZysrKQorKyAgICB7CisrICAgICAgLyogbW92YXBzICV4bW1yZWc/LC0weD8/KCVyYnApICov CisrICAgICAgaWYgKGJ1ZltvZmZzZXRdICE9IDB4MGYgfHwgYnVmW29mZnNldCArIDFdICE9IDB4 MjkKKysgICAgICAgICAgfHwgKGJ1ZltvZmZzZXQgKyAyXSAmIDBiMDAxMTExMTEpICE9ICh4bW1y ZWcgPDwgMyB8IDBiMTAxKSkKKysJcmV0dXJuIHBjOworKworKyAgICAgIGlmICgoYnVmW29mZnNl dCArIDJdICYgMGIxMTAwMDAwMCkgPT0gMGIwMTAwMDAwMCkKKysJeworKwkgIC8qIDgtYml0IGRp c3BsYWNlbWVudC4gICovCisrCSAgb2Zmc2V0ICs9IDQ7CisrCX0KKysgICAgICBlbHNlIGlmICgo YnVmW29mZnNldCArIDJdICYgMGIxMTAwMDAwMCkgPT0gMGIxMDAwMDAwMCkKKysJeworKwkgIC8q IDMyLWJpdCBkaXNwbGFjZW1lbnQuICAqLworKwkgIG9mZnNldCArPSA3OworKwl9CisrICAgICAg ZWxzZQorKwlyZXR1cm4gcGM7CisrICAgIH0KKysKKysgIC8qIGplIEFGVEVSICovCisrICBpZiAo b2Zmc2V0IC0gNCAhPSBidWZbM10pCisrICAgIHJldHVybiBwYzsKKysKKysgIHJldHVybiBuZXh0 X3NhbC5lbmQ7CisgfQorIAwKKyAKIC0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKICsrKyBiL2dkYi9k d2FyZjJyZWFkLmMKLUBAIC0xMDM3MSw2ICsxMDM3MSw5IEBAIGR3YXJmX2RlY29kZV9saW5lcyAo c3RydWN0IGxpbmVfaGVhZGVyICpsaCwgY29uc3QgY2hhciAqY29tcF9kaXIsIGJmZCAqYWJmZCwK K0BAIC00ODE4LDYgKzQ4MTgsOSBAQCBwcm9jZXNzX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCisgCisgICAgICAgaWYgKGdjY180X21pbm9yID49IDUp CisgCXN5bXRhYi0+ZXBpbG9ndWVfdW53aW5kX3ZhbGlkID0gMTsKKysKKysgICAgICBpZiAoZ2Nj XzRfbWlub3IgPj0gNikKKysJc3ltdGFiLT5hbWQ2NF9wcm9sb2d1ZV9saW5lX2J1ZyA9IDE7Cisg ICAgIH0KKyAKKyAgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPnVzaW5nX2luZGV4KQorLS0tIGEv Z2RiL3N5bXRhYi5oCisrKysgYi9nZGIvc3ltdGFiLmgKK0BAIC03ODQsNiArNzg0LDExIEBAIHN0 cnVjdCBzeW10YWIKICAKLSAJICBpZiAob3BfY29kZSA+PSBsaC0+b3Bjb2RlX2Jhc2UpCi0gCSAg ICB7Ci0rCSAgICAgIENPUkVfQUREUiBzYXZlZF9hZGRyZXNzID0gYWRkcmVzczsKLSsJICAgICAg dW5zaWduZWQgaW50IHNhdmVkX2xpbmUgPSBsaW5lOwotKwotIAkgICAgICAvKiBTcGVjaWFsIG9w ZXJhbmQuICAqLwotIAkgICAgICBhZGpfb3Bjb2RlID0gb3BfY29kZSAtIGxoLT5vcGNvZGVfYmFz ZTsKLSAJICAgICAgYWRkcmVzcyArPSAoKChvcF9pbmRleCArIChhZGpfb3Bjb2RlIC8gbGgtPmxp bmVfcmFuZ2UpKQotQEAgLTEwMzgzLDcgKzEwMzg2LDggQEAgZHdhcmZfZGVjb2RlX2xpbmVzIChz dHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCBjb25zdCBjaGFyICpjb21wX2RpciwgYmZkICphYmZkLAot IAkJZHdhcmYyX2RlYnVnX2xpbmVfbWlzc2luZ19maWxlX2NvbXBsYWludCAoKTsKLSAJICAgICAg LyogRm9yIG5vdyB3ZSBpZ25vcmUgbGluZXMgbm90IHN0YXJ0aW5nIG9uIGFuCi0gCQkgaW5zdHJ1 Y3Rpb24gYm91bmRhcnkuICAqLwotLQkgICAgICBlbHNlIGlmIChvcF9pbmRleCA9PSAwKQotKwkg ICAgICBlbHNlIGlmIChvcF9pbmRleCA9PSAwCi0rCQkgICAgICAgJiYgKGFkZHJlc3MgIT0gc2F2 ZWRfYWRkcmVzcyB8fCBsaW5lICE9IHNhdmVkX2xpbmUpKQotIAkJewotIAkJICBsaC0+ZmlsZV9u YW1lc1tmaWxlIC0gMV0uaW5jbHVkZWRfcCA9IDE7Ci0gCQkgIGlmICghZGVjb2RlX2Zvcl9wc3Rf cCAmJiBpc19zdG10KQorICAgdW5zaWduZWQgaW50IGVwaWxvZ3VlX3Vud2luZF92YWxpZCA6IDE7 CisgCisrICAvKiBBdCBsZWFzdCBHQ0MgNC42LjAgYW5kIDQuNi4xIGNhbiBwcm9kdWNlIGludmFs aWQgZmFsc2UgcHJvbG9ndWUgYW5kIG1hcmtlcgorKyAgICAgb24gYW1kNjQuICBUaGlzIGZsYWcg aXMgc2V0IGluZGVwZW5kZW50bHkgb2YgdGhlIHN5bXRhYiBhcmNoLiAgKi8KKysKKysgIHVuc2ln bmVkIGFtZDY0X3Byb2xvZ3VlX2xpbmVfYnVnIDogMTsKKysKKyAgIC8qIFRoZSBtYWNybyB0YWJs ZSBmb3IgdGhpcyBzeW10YWIuICBMaWtlIHRoZSBibG9ja3ZlY3RvciwgdGhpcworICAgICAgbWF5 IGJlIHNoYXJlZCBiZXR3ZWVuIGRpZmZlcmVudCBzeW10YWJzIC0tLSBhbmQgbm9ybWFsbHkgaXMg Zm9yCisgICAgICBhbGwgdGhlIHN5bXRhYnMgaW4gYSBnaXZlbiBjb21waWxhdGlvbiB1bml0LiAg Ki8KKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtcHJv bG9ndWUteG1tLmMKK0BAIC0wLDAgKzEsMzggQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDExIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KKysKKytzdGF0aWMgdm9sYXRpbGUgaW50IHYsIGZhaWw7CisrCisrc3RhdGlj IHZvaWQKKytmdW5jIChpbnQgaSwgLi4uKQorK3sKKysgIHYgPSBpOworK30KKysKKytzdGF0aWMg dm9pZAorK21hcmtlciAodm9pZCkKKyt7CisrfQorKworK2ludAorK21haW4gKHZvaWQpCisrewor KyAgZnVuYyAoMSk7CisrICBmYWlsID0gMTsKKysgIG1hcmtlciAoKTsKKysgIHJldHVybiAwOwor K30KKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtcHJv bG9ndWUteG1tLmV4cAorQEAgLTAsMCArMSw0NiBAQAorKyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKysKKysjIFRlc3QgR0NDIFBSIGRlYnVnLzQ4ODI3IHdvcmthcm91bmQgaW4gR0RCLgorKwor K3NldCB0ZXN0ZmlsZSAiYW1kNjQtcHJvbG9ndWUteG1tIgorK3NldCBzcmNmaWxlICR7dGVzdGZp bGV9LnMKKytzZXQgY3NyY2ZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBiaW5maWxlICR7b2JqZGly fS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0ueAorK3NldCBvcHRzIHt9CisrCisraWYgW2luZm8gZXhp c3RzIENPTVBJTEVdIHsKKysgICAgIyBtYWtlIGNoZWNrIFJVTlRFU1RGTEFHUz0nZ2RiLmFyY2gv YW1kNjQtcHJvbG9ndWUteG1tLmV4cCBDT01QSUxFPTEnCisrICAgIHNldCBzcmNmaWxlICR7Y3Ny Y2ZpbGV9CisrICAgIGxhcHBlbmQgb3B0cyBkZWJ1ZyBvcHRpbWl6ZT0tTzAKKyt9IGVsc2VpZiB7 ICFbaXN0YXJnZXQgeDg2XzY0LSotKiBdIHx8ICFbaXNfbHA2NF90YXJnZXRdIH0geworKyAgICB2 ZXJib3NlICJTa2lwcGluZyBhbWQ2NC1wcm9sb2d1ZS14bW0gdGVzdC4iCisrICAgIHJldHVybiAw CisrfQorKworK2lmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0 ZmlsZX0gJHNyY2ZpbGUgJG9wdHNdfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytpZiAhW3J1 bnRvX21haW5dIHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9icmVha3BvaW50ICJmdW5j IgorK2dkYl9icmVha3BvaW50ICJtYXJrZXIiCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImZ1bmMiCisrCisrZ2RiX3Rlc3QgInAgZmFpbCIgIiA9IDAiICJzdG9wcGVkIGF0IGZ1bmMi CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0LXByb2xv Z3VlLXhtbS5zCitAQCAtMCwwICsxLDQwMCBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBv ZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrICAgICAgCQorKyAgIENvcHlyaWdodCAyMDExIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KKysgICAgICAJCisrLyogVGhpcyBmaWxlIGlzIGNvbXBpbGVkIGZy b20gZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmMKKysgICB1c2luZyAtZyAtZEEgLVMuICAq LworKworKwkuZmlsZQkiYW1kNjQtcHJvbG9ndWUteG1tLmMiCisrCS50ZXh0CisrLkx0ZXh0MDoK KysJLmxvY2FsCXYKKysJLmNvbW0Jdiw0LDQKKysJLmxvY2FsCWZhaWwKKysJLmNvbW0JZmFpbCw0 LDQKKysJLnR5cGUJZnVuYywgQGZ1bmN0aW9uCisrZnVuYzoKKysuTEZCMDoKKysJLmZpbGUgMSAi Z2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmMiCisrCSMgZ2RiLmFyY2gvYW1kNjQtcHJvbG9n dWUteG1tLmM6MjIKKysJLmxvYyAxIDIyIDAKKysJLmNmaV9zdGFydHByb2MKKysJIyBiYXNpYyBi bG9jayAyCisrCXB1c2hxCSVyYnAKKysJLmNmaV9kZWZfY2ZhX29mZnNldCAxNgorKwkuY2ZpX29m ZnNldCA2LCAtMTYKKysJbW92cQklcnNwLCAlcmJwCisrCS5jZmlfZGVmX2NmYV9yZWdpc3RlciA2 CisrCXN1YnEJJDcyLCAlcnNwCisrCW1vdnEJJXJzaSwgLTE2OCglcmJwKQorKwltb3ZxCSVyZHgs IC0xNjAoJXJicCkKKysJbW92cQklcmN4LCAtMTUyKCVyYnApCisrCW1vdnEJJXI4LCAtMTQ0KCVy YnApCisrCW1vdnEJJXI5LCAtMTM2KCVyYnApCisrCXRlc3RiCSVhbCwgJWFsCisrCWplCS5MMgor KwkjIGJhc2ljIGJsb2NrIDMKKysJIyBnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYzoyMgor KwkubG9jIDEgMjIgMAorKwltb3ZhcHMJJXhtbTAsIC0xMjgoJXJicCkKKysJbW92YXBzCSV4bW0x LCAtMTEyKCVyYnApCisrCW1vdmFwcwkleG1tMiwgLTk2KCVyYnApCisrCW1vdmFwcwkleG1tMywg LTgwKCVyYnApCisrCW1vdmFwcwkleG1tNCwgLTY0KCVyYnApCisrCW1vdmFwcwkleG1tNSwgLTQ4 KCVyYnApCisrCW1vdmFwcwkleG1tNiwgLTMyKCVyYnApCisrCW1vdmFwcwkleG1tNywgLTE2KCVy YnApCisrLkwyOgorKwkjIGJhc2ljIGJsb2NrIDQKKysJbW92bAklZWRpLCAtMTgwKCVyYnApCisr CSMgZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmM6MjMKKysJLmxvYyAxIDIzIDAKKysJbW92 bAktMTgwKCVyYnApLCAlZWF4CisrCW1vdmwJJWVheCwgdiglcmlwKQorKwkjIGdkYi5hcmNoL2Ft ZDY0LXByb2xvZ3VlLXhtbS5jOjI0CisrCS5sb2MgMSAyNCAwCisrCWxlYXZlCisrCS5jZmlfZGVm X2NmYSA3LCA4CisrCXJldAorKwkuY2ZpX2VuZHByb2MKKysuTEZFMDoKKysJLnNpemUJZnVuYywg Li1mdW5jCisrCS50eXBlCW1hcmtlciwgQGZ1bmN0aW9uCisrbWFya2VyOgorKy5MRkIxOgorKwkj IGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jOjI4CisrCS5sb2MgMSAyOCAwCisrCS5jZmlf c3RhcnRwcm9jCisrCSMgYmFzaWMgYmxvY2sgMgorKwlwdXNocQklcmJwCisrCS5jZmlfZGVmX2Nm YV9vZmZzZXQgMTYKKysJLmNmaV9vZmZzZXQgNiwgLTE2CisrCW1vdnEJJXJzcCwgJXJicAorKwku Y2ZpX2RlZl9jZmFfcmVnaXN0ZXIgNgorKwkjIGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5j OjI5CisrCS5sb2MgMSAyOSAwCisrCXBvcHEJJXJicAorKwkuY2ZpX2RlZl9jZmEgNywgOAorKwly ZXQKKysJLmNmaV9lbmRwcm9jCisrLkxGRTE6CisrCS5zaXplCW1hcmtlciwgLi1tYXJrZXIKKysJ Lmdsb2JsCW1haW4KKysJLnR5cGUJbWFpbiwgQGZ1bmN0aW9uCisrbWFpbjoKKysuTEZCMjoKKysJ IyBnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYzozMworKwkubG9jIDEgMzMgMAorKwkuY2Zp X3N0YXJ0cHJvYworKwkjIGJhc2ljIGJsb2NrIDIKKysJcHVzaHEJJXJicAorKwkuY2ZpX2RlZl9j ZmFfb2Zmc2V0IDE2CisrCS5jZmlfb2Zmc2V0IDYsIC0xNgorKwltb3ZxCSVyc3AsICVyYnAKKysJ LmNmaV9kZWZfY2ZhX3JlZ2lzdGVyIDYKKysJIyBnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0u YzozNAorKwkubG9jIDEgMzQgMAorKwltb3ZsCSQxLCAlZWRpCisrCW1vdmwJJDAsICVlYXgKKysJ Y2FsbAlmdW5jCisrCSMgZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmM6MzUKKysJLmxvYyAx IDM1IDAKKysJbW92bAkkMSwgZmFpbCglcmlwKQorKwkjIGdkYi5hcmNoL2FtZDY0LXByb2xvZ3Vl LXhtbS5jOjM2CisrCS5sb2MgMSAzNiAwCisrCWNhbGwJbWFya2VyCisrCSMgZ2RiLmFyY2gvYW1k NjQtcHJvbG9ndWUteG1tLmM6MzcKKysJLmxvYyAxIDM3IDAKKysJbW92bAkkMCwgJWVheAorKwkj IGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jOjM4CisrCS5sb2MgMSAzOCAwCisrCXBvcHEJ JXJicAorKwkuY2ZpX2RlZl9jZmEgNywgOAorKwlyZXQKKysJLmNmaV9lbmRwcm9jCisrLkxGRTI6 CisrCS5zaXplCW1haW4sIC4tbWFpbgorKy5MZXRleHQwOgorKwkuc2VjdGlvbgkuZGVidWdfaW5m bywiIixAcHJvZ2JpdHMKKysuTGRlYnVnX2luZm8wOgorKwkubG9uZwkweGMwCSMgTGVuZ3RoIG9m IENvbXBpbGF0aW9uIFVuaXQgSW5mbworKwkudmFsdWUJMHg0CSMgRFdBUkYgdmVyc2lvbiBudW1i ZXIKKysJLmxvbmcJLkxkZWJ1Z19hYmJyZXYwCSMgT2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9u CisrCS5ieXRlCTB4OAkjIFBvaW50ZXIgU2l6ZSAoaW4gYnl0ZXMpCisrCS51bGViMTI4IDB4MQkj IChESUUgKDB4YikgRFdfVEFHX2NvbXBpbGVfdW5pdCkKKysJLmxvbmcJLkxBU0YxCSMgRFdfQVRf cHJvZHVjZXI6ICJHTlUgQyA0LjYuMSAyMDExMDcxNSAoUmVkIEhhdCA0LjYuMS0zKSIKKysJLmJ5 dGUJMHgxCSMgRFdfQVRfbGFuZ3VhZ2UKKysJLmxvbmcJLkxBU0YyCSMgRFdfQVRfbmFtZTogImdk Yi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jIgorKwkubG9uZwkuTEFTRjMJIyBEV19BVF9jb21w X2RpcjogIiIKKysJLnF1YWQJLkx0ZXh0MAkjIERXX0FUX2xvd19wYworKwkucXVhZAkuTGV0ZXh0 MAkjIERXX0FUX2hpZ2hfcGMKKysJLmxvbmcJLkxkZWJ1Z19saW5lMAkjIERXX0FUX3N0bXRfbGlz dAorKwkudWxlYjEyOCAweDIJIyAoRElFICgweDJkKSBEV19UQUdfc3VicHJvZ3JhbSkKKysJLmxv bmcJLkxBU0Y0CSMgRFdfQVRfbmFtZTogImZ1bmMiCisrCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xf ZmlsZSAoZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmMpCisrCS5ieXRlCTB4MTUJIyBEV19B VF9kZWNsX2xpbmUKKysJCQkjIERXX0FUX3Byb3RvdHlwZWQKKysJLnF1YWQJLkxGQjAJIyBEV19B VF9sb3dfcGMKKysJLnF1YWQJLkxGRTAJIyBEV19BVF9oaWdoX3BjCisrCS51bGViMTI4IDB4MQkj IERXX0FUX2ZyYW1lX2Jhc2UKKysJLmJ5dGUJMHg5YwkjIERXX09QX2NhbGxfZnJhbWVfY2ZhCisr CQkJIyBEV19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMKKysJLmxvbmcJMHg1OQkjIERXX0FUX3NpYmxp bmcKKysJLnVsZWIxMjggMHgzCSMgKERJRSAoMHg0YSkgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIp CisrCS5hc2NpaSAiaVwwIgkjIERXX0FUX25hbWUKKysJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9m aWxlIChnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYykKKysJLmJ5dGUJMHgxNQkjIERXX0FU X2RlY2xfbGluZQorKwkubG9uZwkweDU5CSMgRFdfQVRfdHlwZQorKwkudWxlYjEyOCAweDMJIyBE V19BVF9sb2NhdGlvbgorKwkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKKysJLnNsZWIxMjggLTE5 NgorKwkudWxlYjEyOCAweDQJIyAoRElFICgweDU3KSBEV19UQUdfdW5zcGVjaWZpZWRfcGFyYW1l dGVycykKKysJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgyZAorKwkudWxlYjEy OCAweDUJIyAoRElFICgweDU5KSBEV19UQUdfYmFzZV90eXBlKQorKwkuYnl0ZQkweDQJIyBEV19B VF9ieXRlX3NpemUKKysJLmJ5dGUJMHg1CSMgRFdfQVRfZW5jb2RpbmcKKysJLmFzY2lpICJpbnRc MCIJIyBEV19BVF9uYW1lCisrCS51bGViMTI4IDB4NgkjIChESUUgKDB4NjApIERXX1RBR19zdWJw cm9ncmFtKQorKwkubG9uZwkuTEFTRjUJIyBEV19BVF9uYW1lOiAibWFya2VyIgorKwkuYnl0ZQkw eDEJIyBEV19BVF9kZWNsX2ZpbGUgKGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jKQorKwku Ynl0ZQkweDFiCSMgRFdfQVRfZGVjbF9saW5lCisrCQkJIyBEV19BVF9wcm90b3R5cGVkCisrCS5x dWFkCS5MRkIxCSMgRFdfQVRfbG93X3BjCisrCS5xdWFkCS5MRkUxCSMgRFdfQVRfaGlnaF9wYwor KwkudWxlYjEyOCAweDEJIyBEV19BVF9mcmFtZV9iYXNlCisrCS5ieXRlCTB4OWMJIyBEV19PUF9j YWxsX2ZyYW1lX2NmYQorKwkJCSMgRFdfQVRfR05VX2FsbF9jYWxsX3NpdGVzCisrCS51bGViMTI4 IDB4NwkjIChESUUgKDB4NzkpIERXX1RBR19zdWJwcm9ncmFtKQorKwkJCSMgRFdfQVRfZXh0ZXJu YWwKKysJLmxvbmcJLkxBU0Y2CSMgRFdfQVRfbmFtZTogIm1haW4iCisrCS5ieXRlCTB4MQkjIERX X0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmMpCisrCS5ieXRlCTB4 MjAJIyBEV19BVF9kZWNsX2xpbmUKKysJCQkjIERXX0FUX3Byb3RvdHlwZWQKKysJLmxvbmcJMHg1 OQkjIERXX0FUX3R5cGUKKysJLnF1YWQJLkxGQjIJIyBEV19BVF9sb3dfcGMKKysJLnF1YWQJLkxG RTIJIyBEV19BVF9oaWdoX3BjCisrCS51bGViMTI4IDB4MQkjIERXX0FUX2ZyYW1lX2Jhc2UKKysJ LmJ5dGUJMHg5YwkjIERXX09QX2NhbGxfZnJhbWVfY2ZhCisrCQkJIyBEV19BVF9HTlVfYWxsX3Rh aWxfY2FsbF9zaXRlcworKwkudWxlYjEyOCAweDgJIyAoRElFICgweDk2KSBEV19UQUdfdmFyaWFi bGUpCisrCS5hc2NpaSAidlwwIgkjIERXX0FUX25hbWUKKysJLmJ5dGUJMHgxCSMgRFdfQVRfZGVj bF9maWxlIChnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYykKKysJLmJ5dGUJMHgxMgkjIERX X0FUX2RlY2xfbGluZQorKwkubG9uZwkweGE5CSMgRFdfQVRfdHlwZQorKwkudWxlYjEyOCAweDkJ IyBEV19BVF9sb2NhdGlvbgorKwkuYnl0ZQkweDMJIyBEV19PUF9hZGRyCisrCS5xdWFkCXYKKysJ LnVsZWIxMjggMHg5CSMgKERJRSAoMHhhOSkgRFdfVEFHX3ZvbGF0aWxlX3R5cGUpCisrCS5sb25n CTB4NTkJIyBEV19BVF90eXBlCisrCS51bGViMTI4IDB4YQkjIChESUUgKDB4YWUpIERXX1RBR192 YXJpYWJsZSkKKysJLmxvbmcJLkxBU0YwCSMgRFdfQVRfbmFtZTogImZhaWwiCisrCS5ieXRlCTB4 MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmMpCisrCS5i eXRlCTB4MTIJIyBEV19BVF9kZWNsX2xpbmUKKysJLmxvbmcJMHhhOQkjIERXX0FUX3R5cGUKKysJ LnVsZWIxMjggMHg5CSMgRFdfQVRfbG9jYXRpb24KKysJLmJ5dGUJMHgzCSMgRFdfT1BfYWRkcgor KwkucXVhZAlmYWlsCisrCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4YgorKwku c2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cworKy5MZGVidWdfYWJicmV2MDoKKysJ LnVsZWIxMjggMHgxCSMgKGFiYnJldiBjb2RlKQorKwkudWxlYjEyOCAweDExCSMgKFRBRzogRFdf VEFHX2NvbXBpbGVfdW5pdCkKKysJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCisrCS51bGVi MTI4IDB4MjUJIyAoRFdfQVRfcHJvZHVjZXIpCisrCS51bGViMTI4IDB4ZQkjIChEV19GT1JNX3N0 cnApCisrCS51bGViMTI4IDB4MTMJIyAoRFdfQVRfbGFuZ3VhZ2UpCisrCS51bGViMTI4IDB4Ygkj IChEV19GT1JNX2RhdGExKQorKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKKysJLnVsZWIx MjggMHhlCSMgKERXX0ZPUk1fc3RycCkKKysJLnVsZWIxMjggMHgxYgkjIChEV19BVF9jb21wX2Rp cikKKysJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKKysJLnVsZWIxMjggMHgxMQkjIChE V19BVF9sb3dfcGMpCisrCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCisrCS51bGViMTI4 IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKKysJLnVsZWIxMjggMHgxCSMgKERXX0ZPUk1fYWRkcikK KysJLnVsZWIxMjggMHgxMAkjIChEV19BVF9zdG10X2xpc3QpCisrCS51bGViMTI4IDB4MTcJIyAo RFdfRk9STV9zZWNfb2Zmc2V0KQorKwkuYnl0ZQkwCisrCS5ieXRlCTAKKysJLnVsZWIxMjggMHgy CSMgKGFiYnJldiBjb2RlKQorKwkudWxlYjEyOCAweDJlCSMgKFRBRzogRFdfVEFHX3N1YnByb2dy YW0pCisrCS5ieXRlCTB4MQkjIERXX2NoaWxkcmVuX3llcworKwkudWxlYjEyOCAweDMJIyAoRFdf QVRfbmFtZSkKKysJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKKysJLnVsZWIxMjggMHgz YQkjIChEV19BVF9kZWNsX2ZpbGUpCisrCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQor KwkudWxlYjEyOCAweDNiCSMgKERXX0FUX2RlY2xfbGluZSkKKysJLnVsZWIxMjggMHhiCSMgKERX X0ZPUk1fZGF0YTEpCisrCS51bGViMTI4IDB4MjcJIyAoRFdfQVRfcHJvdG90eXBlZCkKKysJLnVs ZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKKysJLnVsZWIxMjggMHgxMQkjIChE V19BVF9sb3dfcGMpCisrCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCisrCS51bGViMTI4 IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKKysJLnVsZWIxMjggMHgxCSMgKERXX0ZPUk1fYWRkcikK KysJLnVsZWIxMjggMHg0MAkjIChEV19BVF9mcmFtZV9iYXNlKQorKwkudWxlYjEyOCAweDE4CSMg KERXX0ZPUk1fZXhwcmxvYykKKysJLnVsZWIxMjggMHgyMTE3CSMgKERXX0FUX0dOVV9hbGxfY2Fs bF9zaXRlcykKKysJLnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKKysJLnVs ZWIxMjggMHgxCSMgKERXX0FUX3NpYmxpbmcpCisrCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9y ZWY0KQorKwkuYnl0ZQkwCisrCS5ieXRlCTAKKysJLnVsZWIxMjggMHgzCSMgKGFiYnJldiBjb2Rl KQorKwkudWxlYjEyOCAweDUJIyAoVEFHOiBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKKysJLmJ5 dGUJMAkjIERXX2NoaWxkcmVuX25vCisrCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQorKwku dWxlYjEyOCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCisrCS51bGViMTI4IDB4M2EJIyAoRFdfQVRf ZGVjbF9maWxlKQorKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKKysJLnVsZWIxMjgg MHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCisrCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGEx KQorKwkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCisrCS51bGViMTI4IDB4MTMJIyAoRFdf Rk9STV9yZWY0KQorKwkudWxlYjEyOCAweDIJIyAoRFdfQVRfbG9jYXRpb24pCisrCS51bGViMTI4 IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQorKwkuYnl0ZQkwCisrCS5ieXRlCTAKKysJLnVsZWIx MjggMHg0CSMgKGFiYnJldiBjb2RlKQorKwkudWxlYjEyOCAweDE4CSMgKFRBRzogRFdfVEFHX3Vu c3BlY2lmaWVkX3BhcmFtZXRlcnMpCisrCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubworKwkuYnl0 ZQkwCisrCS5ieXRlCTAKKysJLnVsZWIxMjggMHg1CSMgKGFiYnJldiBjb2RlKQorKwkudWxlYjEy OCAweDI0CSMgKFRBRzogRFdfVEFHX2Jhc2VfdHlwZSkKKysJLmJ5dGUJMAkjIERXX2NoaWxkcmVu X25vCisrCS51bGViMTI4IDB4YgkjIChEV19BVF9ieXRlX3NpemUpCisrCS51bGViMTI4IDB4Ygkj IChEV19GT1JNX2RhdGExKQorKwkudWxlYjEyOCAweDNlCSMgKERXX0FUX2VuY29kaW5nKQorKwku dWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKKysJLnVsZWIxMjggMHgzCSMgKERXX0FUX25h bWUpCisrCS51bGViMTI4IDB4OAkjIChEV19GT1JNX3N0cmluZykKKysJLmJ5dGUJMAorKwkuYnl0 ZQkwCisrCS51bGViMTI4IDB4NgkjIChhYmJyZXYgY29kZSkKKysJLnVsZWIxMjggMHgyZQkjIChU QUc6IERXX1RBR19zdWJwcm9ncmFtKQorKwkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5fbm8KKysJLnVs ZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCisrCS51bGViMTI4IDB4ZQkjIChEV19GT1JNX3N0cnAp CisrCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQorKwkudWxlYjEyOCAweGIJIyAo RFdfRk9STV9kYXRhMSkKKysJLnVsZWIxMjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCisrCS51 bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQorKwkudWxlYjEyOCAweDI3CSMgKERXX0FUX3By b3RvdHlwZWQpCisrCS51bGViMTI4IDB4MTkJIyAoRFdfRk9STV9mbGFnX3ByZXNlbnQpCisrCS51 bGViMTI4IDB4MTEJIyAoRFdfQVRfbG93X3BjKQorKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9h ZGRyKQorKwkudWxlYjEyOCAweDEyCSMgKERXX0FUX2hpZ2hfcGMpCisrCS51bGViMTI4IDB4MQkj IChEV19GT1JNX2FkZHIpCisrCS51bGViMTI4IDB4NDAJIyAoRFdfQVRfZnJhbWVfYmFzZSkKKysJ LnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCisrCS51bGViMTI4IDB4MjExNwkjIChE V19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMpCisrCS51bGViMTI4IDB4MTkJIyAoRFdfRk9STV9mbGFn X3ByZXNlbnQpCisrCS5ieXRlCTAKKysJLmJ5dGUJMAorKwkudWxlYjEyOCAweDcJIyAoYWJicmV2 IGNvZGUpCisrCS51bGViMTI4IDB4MmUJIyAoVEFHOiBEV19UQUdfc3VicHJvZ3JhbSkKKysJLmJ5 dGUJMAkjIERXX2NoaWxkcmVuX25vCisrCS51bGViMTI4IDB4M2YJIyAoRFdfQVRfZXh0ZXJuYWwp CisrCS51bGViMTI4IDB4MTkJIyAoRFdfRk9STV9mbGFnX3ByZXNlbnQpCisrCS51bGViMTI4IDB4 MwkjIChEV19BVF9uYW1lKQorKwkudWxlYjEyOCAweGUJIyAoRFdfRk9STV9zdHJwKQorKwkudWxl YjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKKysJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1f ZGF0YTEpCisrCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQorKwkudWxlYjEyOCAw eGIJIyAoRFdfRk9STV9kYXRhMSkKKysJLnVsZWIxMjggMHgyNwkjIChEV19BVF9wcm90b3R5cGVk KQorKwkudWxlYjEyOCAweDE5CSMgKERXX0ZPUk1fZmxhZ19wcmVzZW50KQorKwkudWxlYjEyOCAw eDQ5CSMgKERXX0FUX3R5cGUpCisrCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9yZWY0KQorKwku dWxlYjEyOCAweDExCSMgKERXX0FUX2xvd19wYykKKysJLnVsZWIxMjggMHgxCSMgKERXX0ZPUk1f YWRkcikKKysJLnVsZWIxMjggMHgxMgkjIChEV19BVF9oaWdoX3BjKQorKwkudWxlYjEyOCAweDEJ IyAoRFdfRk9STV9hZGRyKQorKwkudWxlYjEyOCAweDQwCSMgKERXX0FUX2ZyYW1lX2Jhc2UpCisr CS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQorKwkudWxlYjEyOCAweDIxMTYJIyAo RFdfQVRfR05VX2FsbF90YWlsX2NhbGxfc2l0ZXMpCisrCS51bGViMTI4IDB4MTkJIyAoRFdfRk9S TV9mbGFnX3ByZXNlbnQpCisrCS5ieXRlCTAKKysJLmJ5dGUJMAorKwkudWxlYjEyOCAweDgJIyAo YWJicmV2IGNvZGUpCisrCS51bGViMTI4IDB4MzQJIyAoVEFHOiBEV19UQUdfdmFyaWFibGUpCisr CS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubworKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkK KysJLnVsZWIxMjggMHg4CSMgKERXX0ZPUk1fc3RyaW5nKQorKwkudWxlYjEyOCAweDNhCSMgKERX X0FUX2RlY2xfZmlsZSkKKysJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCisrCS51bGVi MTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQorKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9k YXRhMSkKKysJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQorKwkudWxlYjEyOCAweDEzCSMg KERXX0ZPUk1fcmVmNCkKKysJLnVsZWIxMjggMHgyCSMgKERXX0FUX2xvY2F0aW9uKQorKwkudWxl YjEyOCAweDE4CSMgKERXX0ZPUk1fZXhwcmxvYykKKysJLmJ5dGUJMAorKwkuYnl0ZQkwCisrCS51 bGViMTI4IDB4OQkjIChhYmJyZXYgY29kZSkKKysJLnVsZWIxMjggMHgzNQkjIChUQUc6IERXX1RB R192b2xhdGlsZV90eXBlKQorKwkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5fbm8KKysJLnVsZWIxMjgg MHg0OQkjIChEV19BVF90eXBlKQorKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKKysJ LmJ5dGUJMAorKwkuYnl0ZQkwCisrCS51bGViMTI4IDB4YQkjIChhYmJyZXYgY29kZSkKKysJLnVs ZWIxMjggMHgzNAkjIChUQUc6IERXX1RBR192YXJpYWJsZSkKKysJLmJ5dGUJMAkjIERXX2NoaWxk cmVuX25vCisrCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQorKwkudWxlYjEyOCAweGUJIyAo RFdfRk9STV9zdHJwKQorKwkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKKysJLnVs ZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCisrCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVj bF9saW5lKQorKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKKysJLnVsZWIxMjggMHg0 OQkjIChEV19BVF90eXBlKQorKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKKysJLnVs ZWIxMjggMHgyCSMgKERXX0FUX2xvY2F0aW9uKQorKwkudWxlYjEyOCAweDE4CSMgKERXX0ZPUk1f ZXhwcmxvYykKKysJLmJ5dGUJMAorKwkuYnl0ZQkwCisrCS5ieXRlCTAKKysJLnNlY3Rpb24JLmRl YnVnX2FyYW5nZXMsIiIsQHByb2diaXRzCisrCS5sb25nCTB4MmMJIyBMZW5ndGggb2YgQWRkcmVz cyBSYW5nZXMgSW5mbworKwkudmFsdWUJMHgyCSMgRFdBUkYgVmVyc2lvbgorKwkubG9uZwkuTGRl YnVnX2luZm8wCSMgT2Zmc2V0IG9mIENvbXBpbGF0aW9uIFVuaXQgSW5mbworKwkuYnl0ZQkweDgJ IyBTaXplIG9mIEFkZHJlc3MKKysJLmJ5dGUJMAkjIFNpemUgb2YgU2VnbWVudCBEZXNjcmlwdG9y CisrCS52YWx1ZQkwCSMgUGFkIHRvIDE2IGJ5dGUgYm91bmRhcnkKKysJLnZhbHVlCTAKKysJLnF1 YWQJLkx0ZXh0MAkjIEFkZHJlc3MKKysJLnF1YWQJLkxldGV4dDAtLkx0ZXh0MAkjIExlbmd0aAor KwkucXVhZAkwCisrCS5xdWFkCTAKKysJLnNlY3Rpb24JLmRlYnVnX2xpbmUsIiIsQHByb2diaXRz CisrLkxkZWJ1Z19saW5lMDoKKysJLnNlY3Rpb24JLmRlYnVnX3N0ciwiTVMiLEBwcm9nYml0cywx CisrLkxBU0YzOgorKwkuc3RyaW5nCSIiCisrLkxBU0YwOgorKwkuc3RyaW5nCSJmYWlsIgorKy5M QVNGNDoKKysJLnN0cmluZwkiZnVuYyIKKysuTEFTRjE6CisrCS5zdHJpbmcJIkdOVSBDIDQuNi4x IDIwMTEwNzE1IChSZWQgSGF0IDQuNi4xLTMpIgorKy5MQVNGMjoKKysJLnN0cmluZwkiZ2RiLmFy Y2gvYW1kNjQtcHJvbG9ndWUteG1tLmMiCisrLkxBU0Y1OgorKwkuc3RyaW5nCSJtYXJrZXIiCisr LkxBU0Y2OgorKwkuc3RyaW5nCSJtYWluIgorKwkuaWRlbnQJIkdDQzogKEdOVSkgNC42LjEgMjAx MTA3MTUgKFJlZCBIYXQgNC42LjEtMykiCisrCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixA cHJvZ2JpdHMKKwoKZGlmZiAtLWdpdCBhL2dkYi1nY2M0Ni10eXBlZGVmLnBhdGNoIGIvZ2RiLWdj YzQ2LXR5cGVkZWYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5ODhkZjku LjAwMDAwMDAKLS0tIGEvZ2RiLWdjYzQ2LXR5cGVkZWYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwyMTggKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTEt MDQvbXNnMDAxNTQuaHRtbAotU3ViamVjdDogW3BhdGNoXSBXb3JrYXJvdW5kIGJ1Z2d5IEdDQyBQ UiA0NzUxMCBwcm9kdWNlZCBjb2RlCi0KLUhpLAotCi1HQ0MgUFIgZGVidWcvNDc1MTAgaXMgYWxy ZWFkeSBmaXhlZCBhbmQgR0RCIGhhcyB0aGUgcHJvcGVyIHN1cHBvcnQgZm9yIGl0OgotCVJGQzog dXBkYXRlIGZvciBHQ0MgUFIgNDc1MTAKLQlodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBh dGNoZXMvMjAxMS0wMy9tc2cwMDkxNi5odG1sCi0KLVN0aWxsIEZTRiBHREIgSEVBRCB3aWxsIGNy YXNoIG9uIGEgYmluYXJ5IHByb2R1Y2VkIGJ5IG9sZGVyL2J1Z2d5IEdDQzoKLQlSZWFkaW5nIHN5 bWJvbHMgZnJvbSAuLi4vZ2NjNDYuby4uLmR3YXJmMnJlYWQuYzo5MzI5OiBpbnRlcm5hbC1lcnJv cjogY291bGQgbm90IGZpbmQgcGFydGlhbCBESUUgMHg5YSBpbiBjYWNoZSBbZnJvbSBtb2R1bGUg Li4uL2djYzQ2Lm9dCi0KLVdoaWNoIG1heSBub3QgZ2l2ZSBtdWNoIGNsdWUgdG8gdGhlIHVzZXIu Ci0KLVRoZSBwcm9wb3NlZCBwYXRjaCBjb3VsZCBtYWtlIGZhbHNlIHdhcm5pbmdzIGlmIGFueSBj b2RlIG91dCB0aGVyZSBoYXMKLURXX1RBR190eXBlZGVmIHdpdGggY2hpbGRyZW4sIGl0IGRvZXMg bm90IGNoZWNrIGZvciBzcGVjaWZpYyBHQ0MgdmVyc2lvbnMuCi1TdGlsbCBzdWNoIERXQVJGIGlz IGludmFsaWQsIGFsdGhvdWdoIGluIHN1Y2ggY2FzZSBjb21wbGFpbnQoKSB3b3VsZCBiZSBtb3Jl Ci1hcHByb3ByaWF0ZSB0aGFuIHdhcm5pbmcoKS4gIERvZXMgaXQgbWFrZSBzZW5zZSB0byBkaWZm ZXJlbnRpYXRlIGl0PwotCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4 Nn0tZmVkb3JhMTUtbGludXgtZ251LgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIwMTEt MDQtMTEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSog ZHdhcmYycmVhZC5jIChzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlKTogTmV3IGZpZWxkCi0JdHlw ZWRlZl9jaGlsZHJlbl93YXJuaW5nX3ByaW50ZWQuCi0JKGxvYWRfcGFydGlhbF9kaWVzKTogUmVh ZCBpbiBhbnkgY2hpbGRyZW4gb2YgRFdfVEFHX3R5cGVkZWYgd2l0aAotCWEgd2FybmluZyBpbiBz dWNoIGNhc2UuCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDExLTA0LTExICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi5kd2FyZjIvZHcyLXR5cGVkZWYt Y2hpbGRyZW4uUzogTmV3IGZpbGUuCi0JKiBnZGIuZHdhcmYyL2R3Mi10eXBlZGVmLWNoaWxkcmVu LmV4cDogTmV3IGZpbGUuCi0KLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9kd2Fy ZjJyZWFkLmMKLUBAIC0yMDksNiArMjA5LDkgQEAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZQot ICAgICAgb3Igd2UgYXJlIGZha2luZyBpdCBmb3IgT0JKRl9SRUFETk9XJ3Mgc2FrZS4gICovCi0g ICB1bnNpZ25lZCBjaGFyIHVzaW5nX2luZGV4OwotIAotKyAgLyogUHJpbnQgdGhlIEdDQyBQUiBk ZWJ1Zy80NzUxMCB3YXJuaW5nIG9ubHkgb25jZSBwZXIgb2JqZmlsZS4gICovCi0rICB1bnNpZ25l ZCB0eXBlZGVmX2NoaWxkcmVuX3dhcm5pbmdfcHJpbnRlZCA6IDE7Ci0rCi0gICAvKiBUaGUgbWFw cGVkIGluZGV4LCBvciBOVUxMIGlmIC5nZGJfaW5kZXggaXMgbWlzc2luZyBvciBub3QgYmVpbmcg dXNlZC4gICovCi0gICBzdHJ1Y3QgbWFwcGVkX2luZGV4ICppbmRleF90YWJsZTsKLSAKLUBAIC04 OTUxLDcgKzg5NTQsNyBAQCBsb2FkX3BhcnRpYWxfZGllcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAq YnVmZmVyLCBnZGJfYnl0ZSAqaW5mb19wdHIsCi0gICAgICAgaWYgKHBhcmVudF9kaWUgPT0gTlVM TAotIAkgICYmIHBhcnRfZGllLT5oYXNfc3BlY2lmaWNhdGlvbiA9PSAwCi0gCSAgJiYgcGFydF9k aWUtPmlzX2RlY2xhcmF0aW9uID09IDAKLS0JICAmJiAocGFydF9kaWUtPnRhZyA9PSBEV19UQUdf dHlwZWRlZgotKwkgICYmICgocGFydF9kaWUtPnRhZyA9PSBEV19UQUdfdHlwZWRlZiAmJiAhcGFy dF9kaWUtPmhhc19jaGlsZHJlbikKLSAJICAgICAgfHwgcGFydF9kaWUtPnRhZyA9PSBEV19UQUdf YmFzZV90eXBlCi0gCSAgICAgIHx8IHBhcnRfZGllLT50YWcgPT0gRFdfVEFHX3N1YnJhbmdlX3R5 cGUpKQotIAl7Ci1AQCAtODk2NCw2ICs4OTY3LDIwIEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQg KmFiZmQsIGdkYl9ieXRlICpidWZmZXIsIGdkYl9ieXRlICppbmZvX3B0ciwKLSAJICBjb250aW51 ZTsKLSAJfQotIAotKyAgICAgIC8qIFRoZSBleGNlcHRpb24gZm9yIERXX1RBR190eXBlZGVmIHdp dGggaGFzX2NoaWxkcmVuIGFib3ZlIGlzCi0rCSBhIHdvcmthcm91bmQgb2YgR0NDIFBSIGRlYnVn LzQ3NTEwLiAgR0RCIGNyYXNoZWQgb24gYnJva2VuIEdDQyBvdXRwdXQKLSsJIGFzIGl0IHNraXBw ZWQgY2hpbGRyZW4gb2YgRFdfVEFHX3R5cGVkZWYgYnkgdGhlIHNob3J0Y3V0IGFib3ZlIGFuZAot KwkgdGhlbiBpdCBjb3VsZCBub3QgZmluZCB0aGUgY2hpbGQgRElFcyByZWZlcmVuY2VkIGxhdGVy LiAgKi8KLSsKLSsgICAgICBpZiAoIWR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZWRlZl9jaGlsZHJl bl93YXJuaW5nX3ByaW50ZWQKLSsJICAmJiBwYXJ0X2RpZS0+dGFnID09IERXX1RBR190eXBlZGVm ICYmIHBhcnRfZGllLT5oYXNfY2hpbGRyZW4pCi0rCXsKLSsJICB3YXJuaW5nIChfKCJEV19UQUdf dHlwZWRlZiBoYXMgY2hpbGRlbiAtIEdDQyBQUiBkZWJ1Zy80NzUxMCBidWcgIgotKwkJICAgICAi LSBESUUgYXQgMHgleCBbaW4gbW9kdWxlICVzXSIpLAotKwkJICAgcGFydF9kaWUtPm9mZnNldCwg Y3UtPm9iamZpbGUtPm5hbWUpOwotKwkgIGR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZWRlZl9jaGls ZHJlbl93YXJuaW5nX3ByaW50ZWQgPSAxOwotKwl9Ci0rCi0gICAgICAgLyogSWYgd2UncmUgYXQg dGhlIHNlY29uZCBsZXZlbCwgYW5kIHdlJ3JlIGFuIGVudW1lcmF0b3IsIGFuZAotIAkgb3VyIHBh cmVudCBoYXMgbm8gc3BlY2lmaWNhdGlvbiAobWVhbmluZyBwb3NzaWJseSBsaXZlcyBpbiBhCi0g CSBuYW1lc3BhY2UgZWxzZXdoZXJlKSwgdGhlbiB3ZSBjYW4gYWRkIHRoZSBwYXJ0aWFsIHN5bWJv bCBub3cKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzIt dHlwZWRlZi1jaGlsZHJlbi5TCi1AQCAtMCwwICsxLDkyIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCi0rCi0rLyogRGVidWcgaW5mb3JtYXRpb24gKi8KLSsKLSsJLnNl Y3Rpb24gLmRlYnVnX2luZm8KLSsuTGN1MV9iZWdpbjoKLSsJLyogQ1UgaGVhZGVyICovCi0rCS40 Ynl0ZQkuTGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVu aXQgKi8KLSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLwot KwkuNGJ5dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24g Ki8KLSsJLmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KLSsKLSsJLyogQ1UgZGllICovCi0r CS51bGViMTI4IDEJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5hc2Np aQkiZmlsZTEudHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkuYXNjaWkJIkdOVSBDIDMuMy4z XDAiCQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJMQkJCQkvKiBEV19BVF9sYW5ndWFn ZSAoQykgKi8KLSsKLSsuTHR5cGVfaW50OgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19U QUdfYmFzZV90eXBlICovCi0rCS5hc2NpaQkJImludFwwIgkJCS8qIERXX0FUX25hbWUgKi8KLSsJ LmJ5dGUJCTQJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmJ5dGUJCTUJCQkvKiBEV19BVF9l bmNvZGluZyAqLwotKwotKwkudWxlYjEyOAkweDMJCQkvKiAoRElFICgweDM4KSBEV19UQUdfdHlw ZWRlZikgKi8KLSsJLmFzY2lpCQkibmV3XDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkubG9uZwkJ Lkx0eXBlX2ludCAtIC5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsKLSsJLnVsZWIxMjgJ MgkJCS8qIEFiYnJldjogRFdfVEFHX2Jhc2VfdHlwZSAqLwotKwkuYXNjaWkJCSJpbnRcMCIJCQkv KiBEV19BVF9uYW1lICovCi0rCS5ieXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5i eXRlCQk1CQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KLSsKLSsJLnVsZWIxMjgJMAkJCS8qIEVuZCBv ZiBEV19UQUdfdHlwZWRlZiAqLwotKwkudWxlYjEyOAkwCQkJLyogRW5kIG9mIERXX1RBR19jb21w aWxlX3VuaXQgKi8KLSsuTGN1MV9lbmQ6Ci0rCi0rLyogQWJicmV2IHRhYmxlICovCi0rCS5zZWN0 aW9uIC5kZWJ1Z19hYmJyZXYKLSsuTGFiYnJldjFfYmVnaW46Ci0rCS51bGViMTI4CTEJCQkvKiBB YmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDExCQkJLyogRFdfVEFHX2NvbXBpbGVfdW5pdCAq LwotKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBE V19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51 bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBE V19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8K LSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxl YjEyOAkyCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19i YXNlX3R5cGUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJ MHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmlu ZyAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLnVsZWIxMjgJ MHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkudWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5j b2RpbmcgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJ MHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwot KwotKwkudWxlYjEyOAkweDMJCQkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4CTB4MTYJ CQkvKiAoVEFHOiBEV19UQUdfdHlwZWRlZikgKi8KLSsJLmJ5dGUJCTB4MQkJCS8qIERXX2NoaWxk cmVuX3llcyAqLwotKwkudWxlYjEyOAkweDMJCQkvKiAoRFdfQVRfbmFtZSkgKi8KLSsJLnVsZWIx MjgJMHg4CQkJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwotKwkudWxlYjEyOAkweDQ5CQkJLyogKERX X0FUX3R5cGUpICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiAoRFdfRk9STV9yZWY0KSAqLwotKwku Ynl0ZQkJMHgwCi0rCS5ieXRlCQkweDAKLSsKLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3Ig Ki8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLS0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItdHlwZWRlZi1jaGlsZHJlbi5leHAKLUBAIC0w LDAgKzEsMzcgQEAKLSsjIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLStsb2FkX2xpYiBkd2FyZi5l eHAKLSsKLSsjIE5vdGU6IEluc3BpcmVkIGZyb20gZHcyLWJhc2ljLmV4cC4KLSsKLSsjIFRoaXMg dGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5k IHVzZSBnYXMuCi0raWYgeyFbZHdhcmYyX3N1cHBvcnRdfSB7Ci0rICAgIHJldHVybiAwCi0rfQot KwotK3NldCB0ZXN0ZmlsZSAiZHcyLXR5cGVkZWYtY2hpbGRyZW4iCi0rc2V0IHNyY2ZpbGUgJHt0 ZXN0ZmlsZX0uUwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0u eAotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9 IiAiJHtiaW5maWxlfSIgb2JqZWN0IHtub2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHJldHVybiAt MQotK30KLSsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotKwotK2dkYl90ZXN0ICJmaWxlICRiaW5m aWxlIiBcCi0rCSAid2FybmluZzogRFdfVEFHX3R5cGVkZWYgaGFzIGNoaWxkZW4gLSBHQ0MgUFIg ZGVidWcvNDc1MTAgYnVnIC0gRElFIGF0IC4qIiBcCi0rCSAid2FybmluZyBtZXNzYWdlIgotCgpk aWZmIC0tZ2l0IGEvZ2RiLXByZWxpbmstcmVsYS5wYXRjaCBiL2dkYi1wcmVsaW5rLXJlbGEucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNjNmMGMuLjAwMDAwMDAKLS0tIGEv Z2RiLXByZWxpbmstcmVsYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi1o dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wMi9tc2cwMDYzMC5odG1s Ci1TdWJqZWN0OiBbcGF0Y2hdIFtpMzg2XSBGaXggeyx1bn1wcmVsaW5rZWQgbGlicmFyaWVzIGZv ciBhdHRhY2gvY29yZS1sb2FkCi0KLUhpLAotCi1wbGVhc2Ugc2VlIGNvbW1lbnRzIGluIHRoZSBw YXRjaC4gIFRoZSBhZGp1c3RlZCB0ZXN0Y2FzZSBGQUlMcyBvbiBpMzg2LgotCi0iUHJlbGluayIs IE1hcmNoIDQsIDIwMDQgLSBieSBKYWt1YiBKZWxpbmVrOgotCWh0dHA6Ly9wZW9wbGUucmVkaGF0 LmNvbS9qYWt1Yi9wcmVsaW5rLnBkZgotCXByaW1hcmlseSBzZWN0aW9uIDcgLSBSRUwgdG8gUkVM QSBjb252ZXJzaW9uCi0KLUFuIGV4YW1wbGUgb2YgdW5wcmVsaW5rZWQgLT4gcHJlbGlua2VkIGxp YnJhcnkgY2hhbmdlOgotIFByb2dyYW0gSGVhZGVyczoKLSAgIFR5cGUgICAgICAgICAgIE9mZnNl dCAgIFZpcnRBZGRyICAgUGh5c0FkZHIgICBGaWxlU2l6IE1lbVNpeiAgRmxnIEFsaWduCi0tICBM T0FEICAgICAgICAgICAweDAwMDAwMCAweDAwMDAwMDAwIDB4MDAwMDAwMDAgMHgwMDUzOCAweDAw NTM4IFIgRSAweDEwMDAKLS0gIExPQUQgICAgICAgICAgIDB4MDAwNTM4IDB4MDAwMDE1MzggMHgw MDAwMTUzOCAweDAwMTAwIDB4MDAxMTAgUlcgIDB4MTAwMAotLSAgRFlOQU1JQyAgICAgICAgMHgw MDA1NTAgMHgwMDAwMTU1MCAweDAwMDAxNTUwIDB4MDAwYzggMHgwMDBjOCBSVyAgMHg0Ci0tICBO T1RFICAgICAgICAgICAweDAwMDBmNCAweDAwMDAwMGY0IDB4MDAwMDAwZjQgMHgwMDAyNCAweDAw MDI0IFIgICAweDQKLS0gIEdOVV9FSF9GUkFNRSAgIDB4MDAwNGU4IDB4MDAwMDA0ZTggMHgwMDAw MDRlOCAweDAwMDE0IDB4MDAwMTQgUiAgIDB4NAotKyAgTE9BRCAgICAgICAgICAgMHgwMDAwMDAg MHg0MTFiMzAwMCAweDQxMWIzMDAwIDB4MDA1NTggMHgwMDU1OCBSIEUgMHgxMDAwCi0rICBMT0FE ICAgICAgICAgICAweDAwMDU1OCAweDQxMWI0NTU4IDB4NDExYjQ1NTggMHgwMDEwMCAweDAwMTEw IFJXICAweDEwMDAKLSsgIERZTkFNSUMgICAgICAgIDB4MDAwNTcwIDB4NDExYjQ1NzAgMHg0MTFi NDU3MCAweDAwMGM4IDB4MDAwYzggUlcgIDB4NAotKyAgTk9URSAgICAgICAgICAgMHgwMDAwZjQg MHg0MTFiMzBmNCAweDQxMWIzMGY0IDB4MDAwMjQgMHgwMDAyNCBSICAgMHg0Ci0rICBHTlVfRUhf RlJBTUUgICAweDAwMDUwOCAweDQxMWIzNTA4IDB4NDExYjM1MDggMHgwMDAxNCAweDAwMDE0IFIg ICAweDQKLSAgIEdOVV9TVEFDSyAgICAgIDB4MDAwMDAwIDB4MDAwMDAwMDAgMHgwMDAwMDAwMCAw eDAwMDAwIDB4MDAwMDAgUlcgIDB4NAotCi1TbyBmYXIgR0RCIGV4cGVjdGVkIGFsbCBzdWNoIGRp c3BsYWNlbWVudHMgd2lsbCBiZSBhbHdheXMgUEFHRV9TSVpFIGFsaWduZWQuCi1UaGlzIGFwcGxp ZXMgZm9yIGV4YW1wbGUgZm9yIHJlLXByZWxpbmtpbmcgb2YgYW4gYWxyZWFkeSBwcmVsaW5rZWQg ZmlsZS4KLUJ1dCBpdCBkb2VzIG5vdCBhcHBseSBmb3IgcHJlbGlua2luZyBvZiBhbiB1bnByZWxp bmtlZCBmaWxlIG9yIHVucHJlbGlua2luZyBvZgotYSBwcmVsaW5rZWQgZmlsZSwgdGhlcmUgY2Fu IGJlIGFyYml0cmFyeSBkaXNwbGFjZW1lbnQuCi0KLUl0IGFmZmVjdHMgaTM4NiAoPWk2ODYsIHBy ZWxpbmsgZG9jIHJlcG9ydHMgYWxzbyBBUk0gYW5kIE1JUFMpIHdoaWNoIHVzZXMgUkVMLgoteDg2 XzY0IGFsd2F5cyB1c2VzIFJFTEEsIHRoZXJlZm9yZSBJIGhhdmUgbm90IG5vdGljZWQgaXQgc28g ZmFyLiAgaTM4NiBzdGlsbAotaGFzIHRvIGJlIHN1cHBvcnRlZC4KLQotVGhpcyBhZmZlY3RzIGJv dGggYXR0YWNobWVudCB0byBhIFBJRCBhbmQgY29yZSBmaWxlIGxvYWRzLgotCi1UaGlzIGFwcGxp ZXMgaW4gcmVhbCB3b3JsZCBpZiB5b3UgdHJhbnNmZXIgYSBjb3JlIGZpbGUgYmV0d2VlbiBob3N0 cyBhbmQgdHJ5IHRvCi1iYWNrdHJhY2UgdGhlbSwgbGlicmFyaWVzIG9mIGJvdGggaG9zdHMgbWF5 IGRpZmZlciB3aGV0aGVyIHRoZXkgYXJlIC8gYXJlIG5vdAotcHJlbGlua2VkLgotCi1JIGNvdWxk IGltcGxlbWVudCBzb21lIChkaXNwbGFjZW1lbnQtZm9yZ2l2aW5nIGFuZCBwcmVsaW5rLW1vZGlm aWNhdGlvbnMKLWZvcmdpdmluZykgY29tcGFyaXNvbiBvZiBib3RoIERZTkFNSUMgc2VnbWVudHMg Zm91bmQuICBCdXQgSSBkbyBub3QgdGhpbmsgaXQgaXMKLXVzZWZ1bCwgaWYgdGhlIERZTkFNSUMg YWRkcmVzcyBmcm9tIGxpbmttYXAgdnMuIGJmZCBkbyBub3QgbWF0Y2ggaXQgaXMgc3RpbGwgYQot YmV0dGVyIGNoYW5jZSB0byB0cnkgYSBkaXNwbGFjZW1lbnQgdG8gbWFrZSB0aGVtIG1hdGNoLiAg S2VlcGluZyB0aGUgZmlsZQotcmVsb2NhdGlvbiBjYW5ub3Qgd29yayBhbnl3YXkgd2hlbiB0aGUg RFlOQU1JQyBhZGRyZXNzIGlzIHZlcmlmaWVkIGFzIHdyb25nLgotCi1ObyByZWdyZXNzaW9ucyBv biB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTUtbGludXgtZ251LgotCi1Nb3N0bHkg ZG8geW91IGFncmVlIHRoZSBEWU5BTUlDIGNvbnRlbnQgZG9lcyBub3QgaGF2ZSB0byBiZSB2ZXJp ZmVkPwotRG8geW91IGhhdmUgYW55IGNvbW1lbnRzIG9uIHRoZSBpbi1jb2RlIGxvbmcgY29tbWVu dHM/Ci0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMS0wMi0yMiAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JRml4IGxpYnJhcmllcyBkaXNwbGFj ZW1lbnQgaWYgdGhleSBjaGFuZ2Ugd2hldGhlciB0aGV5IHdlcmUgcHJlbGlua2VkLgotCSogc29s aWItc3ZyNC5jIChMTV9BRERSX0NIRUNLKTogU2V0IExfQUREUiBldmVuIGlmIHRoZSBEWU5BTUlD IHBvaW50ZXIKLQlkb2VzIG5vdCBtYXRjaC4gIENvbW1lbnQgd2h5LgotCi1nZGIvdGVzdHN1aXRl LwotMjAxMS0wMi0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgotCi0JKiBnZGIuYmFzZS9icmVhay1pbnRlcnAtbGliLmMgKHYsIHZwdHIpOiBOZXcgdmFyaWFi bGVzLgotCSogZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cCAodGVzdF9hdHRhY2gpOiBOZXcgY29t bWVudC4KLQotLS0tIGEvZ2RiL3NvbGliLXN2cjQuYwotKysrIGIvZ2RiL3NvbGliLXN2cjQuYwot QEAgLTIzNywxMSArMjM3LDExIEBAIExNX0FERFJfQ0hFQ0sgKHN0cnVjdCBzb19saXN0ICpzbywg YmZkICphYmZkKQotIAotIAkgICAgIEV2ZW4gb24gUFBDIGl0IG11c3QgYmUgemVyby1hbGlnbmVk IGF0IGxlYXN0IGZvciBNSU5QQUdFU0laRS4gICovCi0gCi0rCSAgbF9hZGRyID0gbF9keW5hZGRy IC0gZHluYWRkcjsKLSsKLSAJICBpZiAoKGxfYWRkciAmIChtaW5wYWdlc2l6ZSAtIDEpKSA9PSAw Ci0gCSAgICAgICYmIChsX2FkZHIgJiBhbGlnbikgPT0gKChsX2R5bmFkZHIgLSBkeW5hZGRyKSAm IGFsaWduKSkKLSAJICAgIHsKLS0JICAgICAgbF9hZGRyID0gbF9keW5hZGRyIC0gZHluYWRkcjsK LS0KLSAJICAgICAgaWYgKGluZm9fdmVyYm9zZSkKLSAJCXByaW50Zl91bmZpbHRlcmVkIChfKCJV c2luZyBQSUMgKFBvc2l0aW9uIEluZGVwZW5kZW50IENvZGUpICIKLSAJCQkJICAgICAicHJlbGlu ayBkaXNwbGFjZW1lbnQgJXMgZm9yIFwiJXNcIi5cbiIpLAotQEAgLTI0OSw5ICsyNDksMjAgQEAg TE1fQUREUl9DSEVDSyAoc3RydWN0IHNvX2xpc3QgKnNvLCBiZmQgKmFiZmQpCi0gCQkJCSAgIHNv LT5zb19uYW1lKTsKLSAJICAgIH0KLSAJICBlbHNlCi0tCSAgICB3YXJuaW5nIChfKCIuZHluYW1p YyBzZWN0aW9uIGZvciBcIiVzXCIgIgotLQkJICAgICAgICJpcyBub3QgYXQgdGhlIGV4cGVjdGVk IGFkZHJlc3MgIgotLQkJICAgICAgICIod3JvbmcgbGlicmFyeSBvciB2ZXJzaW9uIG1pc21hdGNo PykiKSwgc28tPnNvX25hbWUpOwotKwkgICAgewotKwkgICAgICAvKiBUaGVyZSBpcyBubyB3YXkg dG8gdmVyaWZ5IHRoZSBsaWJyYXJ5IGZpbGUgbWF0Y2hlcy4gIHByZWxpbmsKLSsJCSBjYW4gZHVy aW5nIHByZWxpbmtpbmcgb2YgYW4gdW5wcmVsaW5rZWQgZmlsZSAob3IgdW5wcmVsaW5raW5nCi0r CQkgb2YgYSBwcmVsaW5rZWQgZmlsZSkgc2hpZnQgdGhlIERZTkFNSUMgc2VnbWVudCBieSBhcmJp dHJhcnkKLSsJCSBvZmZzZXQgd2l0aG91dCBhbnkgcGFnZSBzaXplIGFsaWdubWVudC4gIFRoZXJl IGlzIG5vIHdheSB0bwotKwkJIGZpbmQgb3V0IHRoZSBFTEYgaGVhZGVyIGFuZC9vciBQcm9ncmFt IEhlYWRlcnMgZm9yIGEgbGltaXRlZAotKwkJIHZlcmlmaWNhdGlvbiBpZiBpdCB0aGV5IG1hdGNo LiAgT25lIGNvdWxkIGRvIGEgdmVyaWZpY2F0aW9uCi0rCQkgb2YgdGhlIERZTkFNSUMgc2VnbWVu dC4gIFN0aWxsIHRoZSBmb3VuZCBhZGRyZXNzIGlzIHRoZSBiZXN0Ci0rCQkgb25lIEdEQiBjb3Vs ZCBmaW5kLiAgKi8KLSsKLSsJICAgICAgd2FybmluZyAoXygiLmR5bmFtaWMgc2VjdGlvbiBmb3Ig XCIlc1wiICIKLSsJCQkgImlzIG5vdCBhdCB0aGUgZXhwZWN0ZWQgYWRkcmVzcyAiCi0rCQkJICIo d3JvbmcgbGlicmFyeSBvciB2ZXJzaW9uIG1pc21hdGNoPykiKSwgc28tPnNvX25hbWUpOwotKwkg ICAgfQotIAl9Ci0gCi0gICAgIHNldF9hZGRyOgotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9icmVhay1pbnRlcnAtbGliLmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWst aW50ZXJwLWxpYi5jCi1AQCAtMjAsNiArMjAsMTAgQEAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0g I2luY2x1ZGUgPHN0ZGlvLmg+Ci0gCi0rLyogRm9yY2UgUkVMLT5SRUxBIGNvbnZlcnNpb24gb24g aTM4Niwgc2VlICJQcmVsaW5rIiwgTWFyY2ggNCwgMjAwNC4gICovCi0rdm9sYXRpbGUgaW50IHZb Ml07Ci0rdm9sYXRpbGUgaW50ICp2cHRyID0gJnZbMV07Ci0rCi0gdm9pZAotIGxpYmZ1bmMgKGNv bnN0IGNoYXIgKmFjdGlvbikKLSB7Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFr LWludGVycC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4 cAotQEAgLTM1Miw2ICszNTIsMTQgQEAgcHJvYyB0ZXN0X2F0dGFjaCB7ZmlsZSBkaXNwbGFjZW1l bnQge3JlbGlua19hcmdzICIifX0gewotIAkgICAgIyB0ZXN0IHNpbXBsaWNpdHksIHdlIG1lcmdl ZCB0aGlzIHRlc3QgYW5kIHRoZSB0ZXN0IGFib3ZlIGJ5IG5vdAotIAkgICAgIyByZXN0b3Jpbmcg JElOVEVSUCBhZnRlciAkRVhFQyBwcmVsaW5rLiAgJElOVEVSUCBnZXRzIHJlc3RvcmVkCi0gCSAg ICAjIGxhdGVyIGJlbG93LgotKwkgICAgIwotKwkgICAgIyBgKHdyb25nIGxpYnJhcnkgb3IgdmVy c2lvbiBtaXNtYXRjaD8pJyBtZXNzYWdlcyBhcmUgcHJpbnRlZCBmb3IKLSsJICAgICMgJGJpbmZp bGVfbGliIG9uIHBsYXRmb3JtcyBjb252ZXJ0aW5nIFJFTC0+UkVMQSByZWxvY2F0aW9ucyBieQot KwkgICAgIyBwcmVsaW5rIChzdWNoIGFzIG9uIGkzODYpLiAgVGhlcmUgaXMgbm8gcmVsaWFibGUg d2F5IHRvIHZlcmlmeQotKwkgICAgIyB0aGUgbGlicmFyeSBmaWxlIG1hdGNoZXMgdGhlIHJ1bm5p bmcgbGlicmFyeSBpbiBzdWNoIGNhc2UgYnV0Ci0rCSAgICAjIEdEQiBhdCBsZWFzdCBhdHRlbXB0 cyB0byBzZXQgdGhlIHJpZ2h0IGRpc3BsYWNlbWVudC4gIFdlIHRlc3QKLSsJICAgICMgYGxpYmZ1 bmMnIGlzIHByZXNlbnQgaW4gdGhlIGJhY2t0cmFjZSBhbmQgdGhlcmVmb3JlIHRoZQotKwkgICAg IyBkaXNwbGFjZW1lbnQgaGFzIGJlZW4gZ3Vlc3NlZCByaWdodC4KLSAKLSAJICAgIGlmIFtwcmVs aW5rJHJlbGluayAkcmVsaW5rX2FyZ3MgW2ZpbGUgdGFpbCAkZXhlY11dIHsKLSAJCSMgL3Byb2Mv UElEL2V4ZSBjYW5ub3QgYmUgbG9hZGVkIGFzIGl0IGlzICJFWEVDTkFNRSAoZGVsZXRlZCkiLgot CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoIGIvZ2RiLXJoZWw1LWdjYzQ0LnBh dGNoCmluZGV4IGJlMTU4NmUuLmE1YTY1NjcgMTAwNjQ0Ci0tLSBhL2dkYi1yaGVsNS1nY2M0NC5w YXRjaAorKysgYi9nZGItcmhlbDUtZ2NjNDQucGF0Y2gKQEAgLTc1LDIzICs3NSwyMyBAQCBJbmRl eDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1i bG9jay5leHAKICBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKICBzZXQgYmluZmlsZSAke29i amRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CiAgCi0taWYgIHsgW2dkYl9jb21waWxlICIke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1 ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKLSsjIFRlbXBvcmFyaWx5IHByb3ZpZGUgZjc3Y29tcGls ZXI9Z2ZvcnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KKy1pZiAgeyBb Z2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0i IGV4ZWN1dGFibGUge2RlYnVnIGY5MCBxdWlldH1dICE9ICIiIH0geworKyMgVGVtcG9yYXJpbHkg cHJvdmlkZSBmOTBjb21waWxlcj1nZm9ydHJhbjQ0IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWUg YXJvdW5kLgogKwogK3NldCBib2FyZCBbdGFyZ2V0X2luZm8gbmFtZV0KLStpZiBbYm9hcmRfaW5m byAkYm9hcmQgZXhpc3RzIGY3N2NvbXBpbGVyXSB7Ci0rICAgIHNldCBvbGRfZjc3Y29tcGlsZXIg W2JvYXJkX2luZm8gJGJvYXJkIGY3N2NvbXBpbGVyXQotKyAgICB1bnNldF9ib2FyZF9pbmZvIGY3 N2NvbXBpbGVyCi0rfSBlbHNlaWYgW2luZm8gZXhpc3RzIG9sZF9mNzdjb21waWxlcl0gewotKyAg ICB1bnNldCBvbGRfZjc3Y29tcGlsZXIKKytpZiBbYm9hcmRfaW5mbyAkYm9hcmQgZXhpc3RzIGY5 MGNvbXBpbGVyXSB7CisrICAgIHNldCBvbGRfZjkwY29tcGlsZXIgW2JvYXJkX2luZm8gJGJvYXJk IGY5MGNvbXBpbGVyXQorKyAgICB1bnNldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyCisrfSBlbHNl aWYgW2luZm8gZXhpc3RzIG9sZF9mOTBjb21waWxlcl0geworKyAgICB1bnNldCBvbGRfZjkwY29t cGlsZXIKICt9Ci0rc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgZ2ZvcnRyYW40NAorK3NldF9i b2FyZF9pbmZvIGY5MGNvbXBpbGVyIGdmb3J0cmFuNDQKICsKLStzZXQgZXJyIFtnZGJfY29tcGls ZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJs ZSB7ZGVidWcgZjc3IHF1aWV0fV0KKytzZXQgZXJyIFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjkwIHF1 aWV0fV0KICsKLSt1bnNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyCi0raWYgW2luZm8gZXhpc3Rz IG9sZF9mNzdjb21waWxlcl0gewotKyAgICBzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciAkb2xk X2Y3N2NvbXBpbGVyCisrdW5zZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlcgorK2lmIFtpbmZvIGV4 aXN0cyBvbGRfZjkwY29tcGlsZXJdIHsKKysgICAgc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIg JG9sZF9mOTBjb21waWxlcgogK30KICsKICtpZiAgeyAkZXJyICE9ICIiIH0gewpAQCAtMTA2LDIz ICsxMDYsMjMgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCiAgc2V0IHRlc3RmaWxlIGR3YXJmLXN0cmlkZQogIHNl dCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAogIAotLWlmIHsgW3ByZXBhcmVfZm9yX3Rlc3Rpbmcg JHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVnIGY3N31dIH0gewot KyMgVGVtcG9yYXJpbHkgcHJvdmlkZSBmNzdjb21waWxlcj1nZm9ydHJhbjQ0IHNhdmluZyB0aGUg b3JpZ2luYWwgdmFsdWUgYXJvdW5kLgorLWlmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0 ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVnIGY5MH1dIH0geworKyMgVGVt cG9yYXJpbHkgcHJvdmlkZSBmOTBjb21waWxlcj1nZm9ydHJhbjQ0IHNhdmluZyB0aGUgb3JpZ2lu YWwgdmFsdWUgYXJvdW5kLgogKwogK3NldCBib2FyZCBbdGFyZ2V0X2luZm8gbmFtZV0KLStpZiBb Ym9hcmRfaW5mbyAkYm9hcmQgZXhpc3RzIGY3N2NvbXBpbGVyXSB7Ci0rICAgIHNldCBvbGRfZjc3 Y29tcGlsZXIgW2JvYXJkX2luZm8gJGJvYXJkIGY3N2NvbXBpbGVyXQotKyAgICB1bnNldF9ib2Fy ZF9pbmZvIGY3N2NvbXBpbGVyIAotK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGls ZXJdIHsKLSsgICAgdW5zZXQgb2xkX2Y3N2NvbXBpbGVyCisraWYgW2JvYXJkX2luZm8gJGJvYXJk IGV4aXN0cyBmOTBjb21waWxlcl0geworKyAgICBzZXQgb2xkX2Y5MGNvbXBpbGVyIFtib2FyZF9p bmZvICRib2FyZCBmOTBjb21waWxlcl0KKysgICAgdW5zZXRfYm9hcmRfaW5mbyBmOTBjb21waWxl ciAKKyt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y5MGNvbXBpbGVyXSB7CisrICAgIHVuc2V0 IG9sZF9mOTBjb21waWxlcgogK30gCi0rc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgZ2ZvcnRy YW40NAorK3NldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyIGdmb3J0cmFuNDQKICsKLStzZXQgZXJy IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2Zp bGV9IHtkZWJ1ZyBmNzd9XQorK3NldCBlcnIgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0Zmls ZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVnIGY5MH1dCiArCi0rdW5zZXRfYm9h cmRfaW5mbyBmNzdjb21waWxlcgotK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsK LSsgICAgc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgJG9sZF9mNzdjb21waWxlcgorK3Vuc2V0 X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKKytpZiBbaW5mbyBleGlzdHMgb2xkX2Y5MGNvbXBpbGVy XSB7CisrICAgIHNldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyICRvbGRfZjkwY29tcGlsZXIKICt9 CiArCiAraWYgJGVyciB7CkBAIC0xMzcsMjMgKzEzNywyMyBAQCBJbmRleDogZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCiAgc2V0IHNyY2Zp bGUgJHt0ZXN0ZmlsZX0uZjkwCiAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rl c3RmaWxlfQogIAotLWlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Ny Y2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0gIT0gIiIg fSB7Ci0rIyBUZW1wb3JhcmlseSBwcm92aWRlIGY3N2NvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5n IHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCistaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rp cn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBm OTAgcXVpZXR9XSAhPSAiIiB9IHsKKysjIFRlbXBvcmFyaWx5IHByb3ZpZGUgZjkwY29tcGlsZXI9 Z2ZvcnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KICsKICtzZXQgYm9h cmQgW3RhcmdldF9pbmZvIG5hbWVdCi0raWYgW2JvYXJkX2luZm8gJGJvYXJkIGV4aXN0cyBmNzdj b21waWxlcl0gewotKyAgICBzZXQgb2xkX2Y3N2NvbXBpbGVyIFtib2FyZF9pbmZvICRib2FyZCBm Nzdjb21waWxlcl0KLSsgICAgdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgotK30gZWxzZWlm IFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsKLSsgICAgdW5zZXQgb2xkX2Y3N2NvbXBp bGVyCisraWYgW2JvYXJkX2luZm8gJGJvYXJkIGV4aXN0cyBmOTBjb21waWxlcl0geworKyAgICBz ZXQgb2xkX2Y5MGNvbXBpbGVyIFtib2FyZF9pbmZvICRib2FyZCBmOTBjb21waWxlcl0KKysgICAg dW5zZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlcgorK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRf ZjkwY29tcGlsZXJdIHsKKysgICAgdW5zZXQgb2xkX2Y5MGNvbXBpbGVyCiArfQotK3NldF9ib2Fy ZF9pbmZvIGY3N2NvbXBpbGVyIGdmb3J0cmFuNDQKKytzZXRfYm9hcmRfaW5mbyBmOTBjb21waWxl ciBnZm9ydHJhbjQ0CiArCi0rc2V0IGVyciBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRp cn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY3NyBxdWlldH1d Cisrc2V0IGVyciBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIg IiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY5MCBxdWlldH1dCiArCi0rdW5zZXRfYm9h cmRfaW5mbyBmNzdjb21waWxlcgotK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsK LSsgICAgc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgJG9sZF9mNzdjb21waWxlcgorK3Vuc2V0 X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKKytpZiBbaW5mbyBleGlzdHMgb2xkX2Y5MGNvbXBpbGVy XSB7CisrICAgIHNldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyICRvbGRfZjkwY29tcGlsZXIKICt9 CiArCiAraWYgIHsgJGVyciAhPSAiIiB9IHsKQEAgLTE2OCwzMSArMTY4LDMxIEBAIEluZGV4OiBn ZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1 bGUuZXhwCiAgICAgcmV0dXJuIC0xCiAgfQogIAotLWlmICB7IFtnZGJfY29tcGlsZV9zaGxpYiAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2xpYmZpbGV9IiAkb2JqZGlyLyRzdWJkaXIvJGxpYmZp bGUge2RlYnVnIGY3N31dICE9ICIiIH0geworLWlmICB7IFtnZGJfY29tcGlsZV9zaGxpYiAiJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2xpYmZpbGV9IiAkb2JqZGlyLyRzdWJkaXIvJGxpYmZpbGUg e2RlYnVnIGY5MH1dICE9ICIiIH0gewogLSAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAk e3NyY2xpYmZpbGV9IgogLSAgICByZXR1cm4gLTEKLSsjIFRlbXBvcmFyaWx5IHByb3ZpZGUgZjc3 Y29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KKysj IFRlbXBvcmFyaWx5IHByb3ZpZGUgZjkwY29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZpbmcgdGhlIG9y aWdpbmFsIHZhbHVlIGFyb3VuZC4KICsKICtzZXQgYm9hcmQgW3RhcmdldF9pbmZvIG5hbWVdCi0r aWYgW2JvYXJkX2luZm8gJGJvYXJkIGV4aXN0cyBmNzdjb21waWxlcl0gewotKyAgICBzZXQgb2xk X2Y3N2NvbXBpbGVyIFtib2FyZF9pbmZvICRib2FyZCBmNzdjb21waWxlcl0KLSsgICAgdW5zZXRf Ym9hcmRfaW5mbyBmNzdjb21waWxlcgotK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29t cGlsZXJdIHsKLSsgICAgdW5zZXQgb2xkX2Y3N2NvbXBpbGVyCisraWYgW2JvYXJkX2luZm8gJGJv YXJkIGV4aXN0cyBmOTBjb21waWxlcl0geworKyAgICBzZXQgb2xkX2Y5MGNvbXBpbGVyIFtib2Fy ZF9pbmZvICRib2FyZCBmOTBjb21waWxlcl0KKysgICAgdW5zZXRfYm9hcmRfaW5mbyBmOTBjb21w aWxlcgorK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRfZjkwY29tcGlsZXJdIHsKKysgICAgdW5z ZXQgb2xkX2Y5MGNvbXBpbGVyCiAgfQotK3NldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyIGdmb3J0 cmFuNDQKKytzZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlciBnZm9ydHJhbjQ0CiAgCiAgIyBwcmVw YXJlX2Zvcl90ZXN0aW5nIGNhbm5vdCBiZSB1c2VkIGFzIGxpbmtpbmcgd2l0aCAkbGliZmlsZSBj YW5ub3QgYmUgcGFzc2VkCiAgIyBqdXN0IGZvciB0aGUgbGlua2luZyBwaGFzZSAoYW5kIG5vdCB0 aGUgc291cmNlIGNvbXBpbGF0aW9uIHBoYXNlKS4gIEFuZCBhbnkKICAjIHdhcm5pbmdzIG9uIGln bm9yZWQgJGxpYmZpbGUgYWJvcnQgdGhlIHByb2Nlc3MuCiAgCi0taWYgIHsgW2dkYl9jb21waWxl IFtsaXN0ICRzcmNkaXIvJHN1YmRpci8kc3JjZmlsZSAkb2JqZGlyLyRzdWJkaXIvJGxpYmZpbGVd ICRvYmpkaXIvJHN1YmRpci8kYmluZmlsZSBleGVjdXRhYmxlIHtkZWJ1ZyBmNzd9XSAhPSAiIiB9 IHsKLStzZXQgZXJyMSBbZ2RiX2NvbXBpbGVfc2hsaWIgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNsaWJmaWxlfSIgJG9iamRpci8kc3ViZGlyLyRsaWJmaWxlIHtkZWJ1ZyBmNzd9XQotK3NldCBl cnIyIFtnZGJfY29tcGlsZSBbbGlzdCAkc3JjZGlyLyRzdWJkaXIvJHNyY2ZpbGUgJG9iamRpci8k c3ViZGlyLyRsaWJmaWxlXSAkb2JqZGlyLyRzdWJkaXIvJGJpbmZpbGUgZXhlY3V0YWJsZSB7ZGVi dWcgZjc3fV0KKy1pZiAgeyBbZ2RiX2NvbXBpbGUgW2xpc3QgJHNyY2Rpci8kc3ViZGlyLyRzcmNm aWxlICRvYmpkaXIvJHN1YmRpci8kbGliZmlsZV0gJG9iamRpci8kc3ViZGlyLyRiaW5maWxlIGV4 ZWN1dGFibGUge2RlYnVnIGY5MH1dICE9ICIiIH0geworK3NldCBlcnIxIFtnZGJfY29tcGlsZV9z aGxpYiAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2xpYmZpbGV9IiAkb2JqZGlyLyRzdWJkaXIv JGxpYmZpbGUge2RlYnVnIGY5MH1dCisrc2V0IGVycjIgW2dkYl9jb21waWxlIFtsaXN0ICRzcmNk aXIvJHN1YmRpci8kc3JjZmlsZSAkb2JqZGlyLyRzdWJkaXIvJGxpYmZpbGVdICRvYmpkaXIvJHN1 YmRpci8kYmluZmlsZSBleGVjdXRhYmxlIHtkZWJ1ZyBmOTB9XQogKwotK3Vuc2V0X2JvYXJkX2lu Zm8gZjc3Y29tcGlsZXIKLStpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7Ci0rICAg IHNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyICRvbGRfZjc3Y29tcGlsZXIKKyt1bnNldF9ib2Fy ZF9pbmZvIGY5MGNvbXBpbGVyCisraWYgW2luZm8gZXhpc3RzIG9sZF9mOTBjb21waWxlcl0gewor KyAgICBzZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlciAkb2xkX2Y5MGNvbXBpbGVyCiArfQogKwog K2lmICB7ICRlcnIxICE9ICIiIH0gewpAQCAtMjExLDIzICsyMTEsMjMgQEAgSW5kZXg6IGdkYi03 LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCiAgc2V0 IHRlc3RmaWxlICJtb2R1bGUiCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAgCi0taWYg eyBbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7 ZGVidWcgZjc3fV0gfSB7Ci0rIyBUZW1wb3JhcmlseSBwcm92aWRlIGY3N2NvbXBpbGVyPWdmb3J0 cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCistaWYgeyBbcHJlcGFyZV9m b3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVidWcgZjkwfV0g fSB7CisrIyBUZW1wb3JhcmlseSBwcm92aWRlIGY5MGNvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5n IHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCiArCiArc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBu YW1lXQotK2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGlsZXJdIHsKLSsgICAg c2V0IG9sZF9mNzdjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29tcGlsZXJdCi0rICAg IHVuc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKLSt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xk X2Y3N2NvbXBpbGVyXSB7Ci0rICAgIHVuc2V0IG9sZF9mNzdjb21waWxlcgorK2lmIFtib2FyZF9p bmZvICRib2FyZCBleGlzdHMgZjkwY29tcGlsZXJdIHsKKysgICAgc2V0IG9sZF9mOTBjb21waWxl ciBbYm9hcmRfaW5mbyAkYm9hcmQgZjkwY29tcGlsZXJdCisrICAgIHVuc2V0X2JvYXJkX2luZm8g ZjkwY29tcGlsZXIKKyt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y5MGNvbXBpbGVyXSB7Cisr ICAgIHVuc2V0IG9sZF9mOTBjb21waWxlcgogK30KLStzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxl ciBnZm9ydHJhbjQ0Cisrc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgZ2ZvcnRyYW40NAogKwot K3NldCBlcnIgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNy Y2ZpbGUge2RlYnVnIGY3N31dCisrc2V0IGVyciBbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZp bGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVidWcgZjkwfV0KICsKLSt1bnNldF9ib2FyZF9p bmZvIGY3N2NvbXBpbGVyCi0raWYgW2luZm8gZXhpc3RzIG9sZF9mNzdjb21waWxlcl0gewotKyAg ICBzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciAkb2xkX2Y3N2NvbXBpbGVyCisrdW5zZXRfYm9h cmRfaW5mbyBmOTBjb21waWxlcgorK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjkwY29tcGlsZXJdIHsK KysgICAgc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgJG9sZF9mOTBjb21waWxlcgogK30KICsK ICtpZiAkZXJyIHsKQEAgLTI0MiwyMyArMjQyLDIzIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAx MTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAogIHNldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmY5MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0Zmls ZX0KICAKLS1pZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxl fSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY3NyBxdWlldH1dICE9ICIiIH0gewot KyMgVGVtcG9yYXJpbHkgcHJvdmlkZSBmNzdjb21waWxlcj1nZm9ydHJhbjQ0IHNhdmluZyB0aGUg b3JpZ2luYWwgdmFsdWUgYXJvdW5kLgorLWlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjkwIHF1 aWV0fV0gIT0gIiIgfSB7CisrIyBUZW1wb3JhcmlseSBwcm92aWRlIGY5MGNvbXBpbGVyPWdmb3J0 cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCiArCiArc2V0IGJvYXJkIFt0 YXJnZXRfaW5mbyBuYW1lXQotK2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGls ZXJdIHsKLSsgICAgc2V0IG9sZF9mNzdjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29t cGlsZXJdCi0rICAgIHVuc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKLSt9IGVsc2VpZiBbaW5m byBleGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7Ci0rICAgIHVuc2V0IG9sZF9mNzdjb21waWxlcgor K2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjkwY29tcGlsZXJdIHsKKysgICAgc2V0IG9s ZF9mOTBjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjkwY29tcGlsZXJdCisrICAgIHVuc2V0 X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKKyt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y5MGNv bXBpbGVyXSB7CisrICAgIHVuc2V0IG9sZF9mOTBjb21waWxlcgogK30KLStzZXRfYm9hcmRfaW5m byBmNzdjb21waWxlciBnZm9ydHJhbjQ0Cisrc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgZ2Zv cnRyYW40NAogKwotK3NldCBlcnIgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7 c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XQorK3Nl dCBlcnIgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2Jp bmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmOTAgcXVpZXR9XQogKwotK3Vuc2V0X2JvYXJkX2lu Zm8gZjc3Y29tcGlsZXIKLStpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7Ci0rICAg IHNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyICRvbGRfZjc3Y29tcGlsZXIKKyt1bnNldF9ib2Fy ZF9pbmZvIGY5MGNvbXBpbGVyCisraWYgW2luZm8gZXhpc3RzIG9sZF9mOTBjb21waWxlcl0gewor KyAgICBzZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlciAkb2xkX2Y5MGNvbXBpbGVyCiArfQogKwog K2lmIHsgJGVyciAhPSAiIiB9IHsKQEAgLTI3MywyNCArMjczLDI0IEBAIEluZGV4OiBnZGItNy4y LjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCiAgCiAg c2V0IHRlc3RmaWxlICJvbXAtc3RlcCIKICBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLS1p ZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxl IHtkZWJ1ZyBmNzcgYWRkaXRpb25hbF9mbGFncz0tZm9wZW5tcH1dIH0geworLWlmIHsgW3ByZXBh cmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGUge2RlYnVnIGY5 MCBhZGRpdGlvbmFsX2ZsYWdzPS1mb3Blbm1wfV0gfSB7CiArCi0rIyBUZW1wb3JhcmlseSBwcm92 aWRlIGY3N2NvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91 bmQuCisrIyBUZW1wb3JhcmlseSBwcm92aWRlIGY5MGNvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5n IHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCiArCiArc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBu YW1lXQotK2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGlsZXJdIHsKLSsgICAg c2V0IG9sZF9mNzdjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29tcGlsZXJdCi0rICAg IHVuc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgCi0rfSBlbHNlaWYgW2luZm8gZXhpc3RzIG9s ZF9mNzdjb21waWxlcl0gewotKyAgICB1bnNldCBvbGRfZjc3Y29tcGlsZXIKKytpZiBbYm9hcmRf aW5mbyAkYm9hcmQgZXhpc3RzIGY5MGNvbXBpbGVyXSB7CisrICAgIHNldCBvbGRfZjkwY29tcGls ZXIgW2JvYXJkX2luZm8gJGJvYXJkIGY5MGNvbXBpbGVyXQorKyAgICB1bnNldF9ib2FyZF9pbmZv IGY5MGNvbXBpbGVyIAorK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRfZjkwY29tcGlsZXJdIHsK KysgICAgdW5zZXQgb2xkX2Y5MGNvbXBpbGVyCiArfSAKLStzZXRfYm9hcmRfaW5mbyBmNzdjb21w aWxlciBnZm9ydHJhbjQ0Cisrc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgZ2ZvcnRyYW40NAog KwotK3NldCBlcnIgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZp bGV9ICR7c3JjZmlsZX0ge2RlYnVnIGY3NyBhZGRpdGlvbmFsX2ZsYWdzPS1mb3Blbm1wfV0KKytz ZXQgZXJyIFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAk e3NyY2ZpbGV9IHtkZWJ1ZyBmOTAgYWRkaXRpb25hbF9mbGFncz0tZm9wZW5tcH1dCiArCi0rdW5z ZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgotK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGls ZXJdIHsKLSsgICAgc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgJG9sZF9mNzdjb21waWxlcgor K3Vuc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKKytpZiBbaW5mbyBleGlzdHMgb2xkX2Y5MGNv bXBpbGVyXSB7CisrICAgIHNldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyICRvbGRfZjkwY29tcGls ZXIKICt9CiArCiAraWYgJGVyciB7CkBAIC0zMDYsMjQgKzMwNiwyNCBAQCBJbmRleDogZ2RiLTcu Mi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAK ICBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CiAgCiAtaWYge1tn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIg XAotLQkgZXhlY3V0YWJsZSB7ZGVidWcgZjc3fV0gIT0gIiJ9IHsKLSsjIFRlbXBvcmFyaWx5IHBy b3ZpZGUgZjc3Y29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFy b3VuZC4KKy0JIGV4ZWN1dGFibGUge2RlYnVnIGY5MH1dICE9ICIifSB7CisrIyBUZW1wb3Jhcmls eSBwcm92aWRlIGY5MGNvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1 ZSBhcm91bmQuCiArCiArc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBuYW1lXQotK2lmIFtib2FyZF9p bmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGlsZXJdIHsKLSsgICAgc2V0IG9sZF9mNzdjb21waWxl ciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29tcGlsZXJdCi0rICAgIHVuc2V0X2JvYXJkX2luZm8g Zjc3Y29tcGlsZXIKLSt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7Ci0r ICAgIHVuc2V0IG9sZF9mNzdjb21waWxlcgorK2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMg ZjkwY29tcGlsZXJdIHsKKysgICAgc2V0IG9sZF9mOTBjb21waWxlciBbYm9hcmRfaW5mbyAkYm9h cmQgZjkwY29tcGlsZXJdCisrICAgIHVuc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKKyt9IGVs c2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y5MGNvbXBpbGVyXSB7CisrICAgIHVuc2V0IG9sZF9mOTBj b21waWxlcgogK30KLStzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciBnZm9ydHJhbjQ0Cisrc2V0 X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgZ2ZvcnRyYW40NAogKwogK3NldCBlcnIgW2dkYl9jb21w aWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBcCi0rCSBl eGVjdXRhYmxlIHtkZWJ1ZyBmNzd9XQorKwkgZXhlY3V0YWJsZSB7ZGVidWcgZjkwfV0KICsKLSt1 bnNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyCi0raWYgW2luZm8gZXhpc3RzIG9sZF9mNzdjb21w aWxlcl0gewotKyAgICBzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciAkb2xkX2Y3N2NvbXBpbGVy CisrdW5zZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlcgorK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjkw Y29tcGlsZXJdIHsKKysgICAgc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgJG9sZF9mOTBjb21w aWxlcgogK30KICsKICtpZiB7ICRlcnIgIT0gIiIgfSB7CkBAIC0zMzksMjQgKzMzOSwyNCBAQCBJ bmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFy cmF5LmV4cAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KICAK IC1pZiB7W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2Jp bmZpbGV9IiBcCi0tCWV4ZWN1dGFibGUge2RlYnVnIGY3N31dICE9ICIifSB7Ci0rIyBUZW1wb3Jh cmlseSBwcm92aWRlIGY3N2NvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2 YWx1ZSBhcm91bmQuCistCWV4ZWN1dGFibGUge2RlYnVnIGY5MH1dICE9ICIifSB7CisrIyBUZW1w b3JhcmlseSBwcm92aWRlIGY5MGNvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5h bCB2YWx1ZSBhcm91bmQuCiArCiArc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBuYW1lXQotK2lmIFti b2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGlsZXJdIHsKLSsgICAgc2V0IG9sZF9mNzdj b21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29tcGlsZXJdCi0rICAgIHVuc2V0X2JvYXJk X2luZm8gZjc3Y29tcGlsZXIKLSt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBpbGVy XSB7Ci0rICAgIHVuc2V0IG9sZF9mNzdjb21waWxlcgorK2lmIFtib2FyZF9pbmZvICRib2FyZCBl eGlzdHMgZjkwY29tcGlsZXJdIHsKKysgICAgc2V0IG9sZF9mOTBjb21waWxlciBbYm9hcmRfaW5m byAkYm9hcmQgZjkwY29tcGlsZXJdCisrICAgIHVuc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIK Kyt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y5MGNvbXBpbGVyXSB7CisrICAgIHVuc2V0IG9s ZF9mOTBjb21waWxlcgogK30KLStzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciBnZm9ydHJhbjQ0 Cisrc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgZ2ZvcnRyYW40NAogKwogK3NldCBlcnIgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBc Ci0rCWV4ZWN1dGFibGUge2RlYnVnIGY3N31dCisrCWV4ZWN1dGFibGUge2RlYnVnIGY5MH1dCiAr Ci0rdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgotK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjc3 Y29tcGlsZXJdIHsKLSsgICAgc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgJG9sZF9mNzdjb21w aWxlcgorK3Vuc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKKytpZiBbaW5mbyBleGlzdHMgb2xk X2Y5MGNvbXBpbGVyXSB7CisrICAgIHNldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyICRvbGRfZjkw Y29tcGlsZXIKICt9CiArCiAraWYgeyAkZXJyICE9ICIiIH0gewoKZGlmZiAtLWdpdCBhL2dkYi1z dGFwLWRvdWJsZS1mcmVlLnBhdGNoIGIvZ2RiLXN0YXAtZG91YmxlLWZyZWUucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjN2ZjNDAuLjAwMDAwMDAKLS0tIGEvZ2RiLXN0YXAt ZG91YmxlLWZyZWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0tLS0gYS9n ZGIvc3RhcC1wcm9iZS5jCi0rKysgYi9nZGIvc3RhcC1wcm9iZS5jCi1AQCAtMzU1LDkgKzM1NSw3 IEBAIHN0YXBfZnJlZV9hcmdzX2luZm8gKHZvaWQgKmFyZ3NfaW5mb19wdHIpCi0gICBpbnQgaTsK LSAKLSAgIGZvciAoaSA9IDA7IGkgPCBhLT5uX2FyZ3M7IGkrKykKLS0gICAgewotLSAgICAgIHhm cmVlIChhLT5hcmdbaV0uYXJnX3N0cik7Ci0tICAgIH0KLSsgICAgeGZyZWUgKGEtPmFyZ1tpXS5h cmdfc3RyKTsKLSAKLSAgIHhmcmVlIChhLT5hcmcpOwotICAgeGZyZWUgKGEpOwotQEAgLTQwMSw2 ICszOTksNyBAQCBzdGFwX3BhcnNlX3Byb2JlX2FyZ3VtZW50cyAoc3RydWN0IHN0YXBfcHJvYmUg KnByb2JlKQotICAgICByZXR1cm47Ci0gCi0gICBhcmdzX2luZm8gPSB4bWFsbG9jIChzaXplb2Yg KHN0cnVjdCBzdGFwX2FyZ3NfaW5mbykpOwotKyAgYXJnc19pbmZvLT5uX2FyZ3MgPSAwOwotICAg YmFja190byA9IG1ha2VfY2xlYW51cCAoc3RhcF9mcmVlX2FyZ3NfaW5mbywgYXJnc19pbmZvKTsK LSAgIGFyZ3NfaW5mby0+YXJnID0geGNhbGxvYyAoU1RBUF9NQVhfQVJHUywgc2l6ZW9mIChzdHJ1 Y3Qgc3RhcF9wcm9iZV9hcmcpKTsKLSAKLUBAIC00OTMsNiArNDkyLDcgQEAgc3RhcF9wYXJzZV9w cm9iZV9hcmd1bWVudHMgKHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSkKLSAKLSAJICAgICAgYXJn c19pbmZvLT5hcmdbY3VycmVudF9hcmddLmFyZ19zdHIKLSAJCT0gc2F2ZXN0cmluZyAoc3RhcnQs IGN1ciAtIHN0YXJ0KTsKLSsJICAgICAgKythcmdzX2luZm8tPm5fYXJnczsKLSAJICAgICAgLyog U3RhcnQgaXQgb3ZlciBhZ2Fpbi4gICovCi0gCSAgICAgIGN1ciA9IHNraXBfc3BhY2VzICgoY2hh ciAqKSBjdXIpOwotIAkgICAgICBjdXJyZW50X3N0YXRlID0gTkVXX0FSRzsKLUBAIC01MTMsNyAr NTEzLDYgQEAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHN0cnVjdCBzdGFwX3Byb2JlICpw cm9iZSkKLSAJfQotICAgICB9Ci0gCi0tICBhcmdzX2luZm8tPm5fYXJncyA9IGN1cnJlbnRfYXJn ICsgMTsKLSAgIGFyZ3NfaW5mby0+YXJnID0geHJlYWxsb2MgKGFyZ3NfaW5mby0+YXJnLAotIAkJ CSAgICAgIGFyZ3NfaW5mby0+bl9hcmdzCi0gCQkJICAgICAgKiBzaXplb2YgKHN0cnVjdCBzdGFw X3Byb2JlX2FyZykpOwotQEAgLTE1MjYsOCArMTUyNSw5IEBAIHN0YXBfZnJlZV9wYXJzZWRfYXJn cyAoc3RydWN0IHN0YXBfYXJnc19pbmZvICpwYXJzZWRfYXJncykKLSAgICAgcmV0dXJuOwotIAot ICAgZm9yIChpID0gMDsgaSA8IHBhcnNlZF9hcmdzLT5uX2FyZ3M7IGkrKykKLS0gICAgeGZyZWUg KHBhcnNlZF9hcmdzLT5hcmcpOwotKyAgICB4ZnJlZSAocGFyc2VkX2FyZ3MtPmFyZ1tpXS5hcmdf c3RyKTsKLSAKLSsgIHhmcmVlIChwYXJzZWRfYXJncy0+YXJnKTsKLSAgIHhmcmVlIChwYXJzZWRf YXJncyk7Ci0gfQotIAotQEAgLTE4NTksNyArMTg1OSw3IEBAIHBhcnNlX3N0YXBfcHJvYmUgKGNo YXIgKiphcmdwdHIsIHN0cnVjdCBsaW5lc3BlY19yZXN1bHQgKmNhbm9uaWNhbCkKLSAJaWYgKGNh bm9uaWNhbCkKLSAJICB7Ci0gCSAgICBjYW5vbmljYWwtPmNhbm9uaWNhbCA9IHhyZWFsbG9jIChj YW5vbmljYWwtPmNhbm9uaWNhbCwKLS0JCQkJCSAgICAgcmVzdWx0Lm5lbHRzICogc2l6ZW9mIChj aGFyICoqKSk7Ci0rCQkJCQkgICAgIHJlc3VsdC5uZWx0cyAqIHNpemVvZiAoY2hhciAqKSk7Ci0g CSAgICBjYW5vbmljYWwtPmNhbm9uaWNhbFtyZXN1bHQubmVsdHMgLSAxXSA9IHhzdHJkdXAgKGZ1 bGxfYXJnKTsKLSAJICB9Ci0gICAgICAgfQoKZGlmZiAtLWdpdCBhL2dkYi10ZXN0LXBwLWhpbnQt ZXJyb3IucGF0Y2ggYi9nZGItdGVzdC1wcC1oaW50LWVycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA4ZmVjZTg1Li4wMDAwMDAwCi0tLSBhL2dkYi10ZXN0LXBwLWhpbnQt ZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi1odHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wMS9tc2cwMDAxNi5odG1sCi1TdWJqZWN0OiBb cGF0Y2hdIE5ldyB0ZXN0Y2FzZTogcHktcHJldHR5cHJpbnQuZXhwOiBwcmludCBoaW50X2Vycm9y Ci0KLUhpLAotCi1QQVNTOiBnZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cDogcHJpbnQgaGlu dF9lcnJvcgotZm9yCi0JRllJOiBmaXggYnVnbGV0IGluIGdkYnB5X2dldF9kaXNwbGF5X2hpbnQK LQlodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wNy9tc2cwMDE5MC5o dG1sCi0JaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wNy9tc2cwMDA2MS5o dG1sCi0KLUkgd291bGQgY2hlY2sgaXQgaW4gYXMgb2J2aW91cyBidXQgdGhlIDIwMTEgQ2hhbmdl TG9nIG1vdmUgcHJvY2VzcyBoYXMgdG8gYmUKLWRvbmUgZmlyc3QuICBTbyB0byBiZSBjaGVja2Vk IGluIGxhdGVyLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDExLTAx LTAxICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdk Yi5weXRob24vcHktcHJldHR5cHJpbnQuYyAoc3RydWN0IGhpbnRfZXJyb3IpOiBOZXcuCi0JKG1h aW4pOiBOZXcgdmFyaWFibGUgaGludF9lcnJvci4KLQkqIGdkYi5weXRob24vcHktcHJldHR5cHJp bnQuZXhwIChydW5fbGFuZ190ZXN0cyk6IE5ldyB0ZXN0Y2FzZQotCSJwcmludCBoaW50X2Vycm9y Ii4KLQkqIGdkYi5weXRob24vcHktcHJldHR5cHJpbnQucHkgKGNsYXNzIHBwX2hpbnRfZXJyb3Ip OiBOZXcuCi0JKHJlZ2lzdGVyX3ByZXR0eV9wcmludGVycyk6IFJlZ2lzdGVyIGl0LgotCi1JbmRl eDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5 cHJpbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0MTEub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuYwkyMDExLTAzLTMxIDIxOjU5OjI2LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxMS0wNC0xMSAxOTo0MjoxMC4wMDAwMDAwMDAgKzAy MDAKLUBAIC00NCw2ICs0NCwxMCBAQCBzdHJ1Y3QgbGF6eXN0cmluZyB7Ci0gICBjb25zdCBjaGFy ICpsYXp5X3N0cjsKLSB9OwotIAotK3N0cnVjdCBoaW50X2Vycm9yIHsKLSsgIGludCB4OwotK307 Ci0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gc3RydWN0IFMgOiBwdWJsaWMgcyB7Ci0gICBpbnQg enM7Ci1AQCAtMjE1LDYgKzIxOSw3IEBAIG1haW4gKCkKLSAgIG5vc3RyaW5nX3R5cGUgbnN0eXBl LCBuc3R5cGUyOwotICAgc3RydWN0IG5zIG5zLCBuczI7Ci0gICBzdHJ1Y3QgbGF6eXN0cmluZyBl c3RyaW5nLCBlc3RyaW5nMjsKLSsgIHN0cnVjdCBoaW50X2Vycm9yIGhpbnRfZXJyb3I7Ci0gCi0g ICBuc3R5cGUuZWxlbWVudHMgPSBuYXJyYXk7Ci0gICBuc3R5cGUubGVuID0gMDsKLUluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNDExL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmlu dC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDExLm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cAkyMDExLTAzLTA3IDE3OjAzOjAzLjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXByZXR0eXByaW50LmV4cAkyMDExLTA0LTExIDE5OjQxOjU2LjAwMDAwMDAwMCAr MDIwMAotQEAgLTk3LDYgKzk3LDggQEAgcHJvYyBydW5fbGFuZ190ZXN0cyB7bGFuZ30gewotICAg ICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBwcF9sc19lbmNvZGluZyA9ICdVVEYtOCciCi0g ICAgIGdkYl90ZXN0ICJwcmludCBlc3RyaW5nMiIgIlwiZW1iZWRkZWQgXCIsIDxpbmNvbXBsZXRl IHNlcXVlbmNlIFxcXFwzMDI+IgotIAotKyAgICBnZGJfdGVzdCAicHJpbnQgaGludF9lcnJvciIg IkV4Y2VwdGlvbjogaGludCBmYWlsZWRcclxuaGludF9lcnJvcl92YWwiCi0rCi0gICAgIGdkYl90 ZXN0ICJwcmludCBjIiAiID0gY29udGFpbmVyIFwiY29udGFpbmVyXCIgd2l0aCAyIGVsZW1lbnRz ID0geyRubCAqLjAuID0gMjMsJG5sICouMS4gPSA3MiRubH0iCi0gCi0gICAgIGdkYl90ZXN0ICJw cmludCBuc3R5cGUiICIgPSB7JG5sICouMC4gPSA3LCRubCAqLjEuID0gNDIkbmx9IgotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXBy aW50LnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5weQkyMDExLTAzLTMxIDIxOjU5OjI2LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXByZXR0eXByaW50LnB5CTIwMTEtMDQtMTEgMTk6NDE6NTYuMDAwMDAwMDAwICsw MjAwCi1AQCAtMTYxLDYgKzE2MSwxOCBAQCBjbGFzcyBwcF9sczoKLSAgICAgZGVmIGRpc3BsYXlf aGludCAoc2VsZik6Ci0gICAgICAgICByZXR1cm4gJ3N0cmluZycKLSAKLStjbGFzcyBwcF9oaW50 X2Vycm9yOgotKyAgICAiVGhyb3cgZXJyb3IgZnJvbSBkaXNwbGF5X2hpbnQiCi0rCi0rICAgIGRl ZiBfX2luaXRfXyhzZWxmLCB2YWwpOgotKyAgICAgICAgc2VsZi52YWwgPSB2YWwKLSsKLSsgICAg ZGVmIHRvX3N0cmluZyhzZWxmKToKLSsgICAgICAgIHJldHVybiAnaGludF9lcnJvcl92YWwnCi0r Ci0rICAgIGRlZiBkaXNwbGF5X2hpbnQgKHNlbGYpOgotKyAgICAgICAgcmFpc2UgRXhjZXB0aW9u KCJoaW50IGZhaWxlZCIpCi0rCi0gY2xhc3MgcHBfb3V0ZXI6Ci0gICAgICJQcmludCBzdHJ1Y3Qg b3V0ZXIiCi0gCi1AQCAtMjQ2LDYgKzI1OCw5IEBAIGRlZiByZWdpc3Rlcl9wcmV0dHlfcHJpbnRl cnMgKCk6Ci0gICAgIHByZXR0eV9wcmludGVyc19kaWN0W3JlLmNvbXBpbGUgKCdec3RydWN0IG91 dGVyc3RydWN0JCcpXSAgPSBwcF9vdXRlcgotICAgICBwcmV0dHlfcHJpbnRlcnNfZGljdFtyZS5j b21waWxlICgnXm91dGVyc3RydWN0JCcpXSAgPSBwcF9vdXRlcgotIAotKyAgICBwcmV0dHlfcHJp bnRlcnNfZGljdFtyZS5jb21waWxlICgnXnN0cnVjdCBoaW50X2Vycm9yJCcpXSAgPSBwcF9oaW50 X2Vycm9yCi0rICAgIHByZXR0eV9wcmludGVyc19kaWN0W3JlLmNvbXBpbGUgKCdeaGludF9lcnJv ciQnKV0gID0gcHBfaGludF9lcnJvcgotKwotIHByZXR0eV9wcmludGVyc19kaWN0ID0ge30KLSAK LSByZWdpc3Rlcl9wcmV0dHlfcHJpbnRlcnMgKCkKCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dk Yi5zcGVjCmluZGV4IGI3ZTUzYTUuLjM0ODVjZjIgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBi L2dkYi5zcGVjCkBAIC0yMyw3ICsyMyw3IEBAIE5hbWU6IGdkYiV7P193aXRoX2RlYnVnOi1kZWJ1 Z30KICMgU2V0IHZlcnNpb24gdG8gY29udGVudHMgb2YgZ2RiL3ZlcnNpb24uaW4uCiAjIE5PVEU6 IHRoZSBGU0YgZ2RiIHZlcnNpb25zIGFyZSBudW1iZXJlZCBOLk0gZm9yIG9mZmljaWFsIHJlbGVh c2VzLCBsaWtlIDYuMwogIyBhbmQsIHNpbmNlIEphbnVhcnkgMjAwNSwgWC5ZLlouZGF0ZSBmb3Ig ZGFpbHkgc25hcHNob3RzLCBsaWtlIDYuMy41MC4yMDA1MDExMiAjIChkYWlseSBzbmFwc2hvdCBm cm9tIG1haWxpbmUpLCBvciA2LjMuMC4yMDA0MDExMiAoaGVhZCBvZiB0aGUgcmVsZWFzZSBicmFu Y2gpLgotVmVyc2lvbjogNy4yLjkwLjIwMTEwNzAzCitWZXJzaW9uOiA3LjMuNTAuMjAxMTA3MjIK IAogIyBUaGUgcmVsZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJl ciwgc3RhcnQgaXQgYXQgMS4KICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0 byBzdGF5IGZ1bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3Rpbmcu CkBAIC0yOTAsMTIgKzI5MCw2IEBAIFBhdGNoMjU4OiBnZGItNi42LWJ6MjM3NTcyLXBwYy1hdG9t aWMtc2VxdWVuY2UtdGVzdC5wYXRjaAogIz1mZWRvcmF0ZXN0CiBQYXRjaDI2MzogZ2RiLTYuMy1h dHRhY2gtc2VlLXZkc28tdGVzdC5wYXRjaAogCi0jIERvIG5vdCBoYW5nIG9uIGV4aXQgb2YgYSB0 aHJlYWQgZ3JvdXAgbGVhZGVyIChCWiAyNDczNTQpLgotIz1wdXNoCi1QYXRjaDI2NTogZ2RiLTYu Ni1iejI0NzM1NC1sZWFkZXItZXhpdC1maXgucGF0Y2gKLSM9cHVzaAotUGF0Y2gyNjY6IGdkYi02 LjYtYnoyNDczNTQtbGVhZGVyLWV4aXQtdGVzdC5wYXRjaAotCiAjIFRlc3QgbGVmdG92ZXIgem9t YmllIHByb2Nlc3MgKEJaIDI0Mzg0NSkuCiAjPWZlZG9yYXRlc3QKIFBhdGNoMjcxOiBnZGItNi41 LWJ6MjQzODQ1LXN0YWxlLXRlc3Rpbmctem9tYmllLXRlc3QucGF0Y2gKQEAgLTUwNywxMCArNTAx LDYgQEAgUGF0Y2g1MTE6IGdkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNW9mNS5wYXRjaAogIz1m ZWRvcmF0ZXN0CiBQYXRjaDUyNjogZ2RiLWJ6NjM0MTA4LXNvbGliX2FkZHJlc3MucGF0Y2gKIAot IyBOZXcgdGVzdGNhc2UgcHktcHJldHR5cHJpbnQuZXhwOnByaW50IGhpbnRfZXJyb3IgKGZvciBC WiA2MTE1NjksIEJaIDYyOTIzNikuCi0jPWZlZG9yYXRlc3QKLVBhdGNoNTQxOiBnZGItdGVzdC1w cC1oaW50LWVycm9yLnBhdGNoCi0KICMgTmV3IHRlc3QgZ2RiLmFyY2gveDg2XzY0LXBpZDAtY29y ZS5leHAgZm9yIGtlcm5lbCBQSUQgMCBjb3JlcyAoQlogNjExNDM1KS4KICM9ZmVkb3JhdGVzdAog UGF0Y2g1NDI6IGdkYi10ZXN0LXBpZDAtY29yZS5wYXRjaApAQCAtNTIzLDIyICs1MTMsMTAgQEAg UGF0Y2g1NDc6IGdkYi10ZXN0LWR3Mi1hcmFuZ2VzLnBhdGNoCiAjID1mZWRvcmF0ZXN0CiBQYXRj aDU0ODogZ2RiLXRlc3QtZXhwci1jdW11bGF0aXZlLWFyY2hlci5wYXRjaAogCi0jIFRlbXBvcmFy eSBmaXggb2YgRjE1IGdjYy00LjYgY2hpbGQgRElFcyBvZiBEV19UQUdfdHlwZWRlZiAoQlogNjcy MjMwKS4KLSMgPXB1c2gKLVBhdGNoNTU1OiBnZGItZ2NjNDYtdHlwZWRlZi5wYXRjaAotCiAjIFdv cmthcm91bmQgZ2NjLTQuNiBzdGRhcmcgZmFsc2UgcHJvbG9ndWUgZW5kIChHREIgUFIgMTI0MzUg KyBHQ0MgUFIgNDc0NzEpLgogIyA9cHVzaAogUGF0Y2g1NTY6IGdkYi1nY2M0Ni1zdGRhcmctcHJv bG9ndWUucGF0Y2gKIAotIyBGaXggYXR0YWNoL2NvcmUtbG9hZCBvZiB7LHVufXByZWxpbmtlZCBp Mzg2IGxpYnMgKGJ1Z3JlcG9ydCBieSBNaWNoYWwgVG9tYW4pLgotUGF0Y2g1NzE6IGdkYi1wcmVs aW5rLXJlbGEucGF0Y2gKLQotIyBGaXggdGhyZWFkaW5nIGludGVybmFsIGVycm9yIG9uIGNvcnJ1 cHRlZCBtZW1vcnkgKEJaIDY3NzY1NCkuCi1QYXRjaDU3MjogZ2RiLWNvcmUtdGhyZWFkLWludGVy bmFsZXJyLTFvZjMucGF0Y2gKLVBhdGNoNTczOiBnZGItY29yZS10aHJlYWQtaW50ZXJuYWxlcnIt Mm9mMy5wYXRjaAotUGF0Y2g1NzQ6IGdkYi1jb3JlLXRocmVhZC1pbnRlcm5hbGVyci0zb2YzLnBh dGNoCi0KICMgVG9vbGNoYWluIG9uIHNwYXJjIGlzIHNsaWdodGx5IGJyb2tlbiBhbmQgZGVidWdp bmZvIGZpbGVzIGFyZSBnZW5lcmF0ZWQKICMgd2l0aCBub24gNjRiaXQgYWxpZ25lZCB0YWJsZXMv b2Zmc2V0cy4KICMgU2VlIGZvciBleGFtcGxlIHJlYWRlbGYgLVMgLi4vWHZuYy5kZWJ1Zy4KQEAg LTU1MiwyMCArNTMwLDYgQEAgUGF0Y2g1NzQ6IGdkYi1jb3JlLXRocmVhZC1pbnRlcm5hbGVyci0z b2YzLnBhdGNoCiAjIHJlYnVpbGQgdG8gZml4IGl0LCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gdXNl IGdkYiA6KQogUGF0Y2g1Nzk6IGdkYi03LjIuNTAtc3BhcmMtYWRkLXdvcmthcm91bmQtdG8tYnJv a2VuLWRlYnVnLWZpbGVzLnBhdGNoCiAKLSMgRml4IGNhc2UgaW5zZW5zaXRpdmUgc3ltYm9scyBm b3IgRm9ydHJhbiBieSBpRm9ydCAoQlogNjQ1NzczKS4KLVBhdGNoNTgwOiBnZGItYno2NDU3NzMt Y2FzZS1pbnNlbnNpdGl2ZS0xb2Y1LnBhdGNoCi1QYXRjaDU4MTogZ2RiLWJ6NjQ1NzczLWNhc2Ut aW5zZW5zaXRpdmUtMm9mNS5wYXRjaAotUGF0Y2g1ODI6IGdkYi1iejY0NTc3My1jYXNlLWluc2Vu c2l0aXZlLTNvZjUucGF0Y2gKLVBhdGNoNTgzOiBnZGItYno2NDU3NzMtY2FzZS1pbnNlbnNpdGl2 ZS00b2Y1LnBhdGNoCi0KLSMgQnVuZGxlIHJlYWRsaW5lLTYuMiB3aXRoIGEgd29ya2Fyb3VuZCBv ZiBza2lwcGVkICJhc2siIChCWiA3MDExMzEpLgotUGF0Y2g1OTE6IGdkYi1iejcwMTEzMS1yZWFk bGluZTYyLTFvZjMucGF0Y2gKLVBhdGNoNTkyOiBnZGItYno3MDExMzEtcmVhZGxpbmU2Mi0yb2Yz LnBhdGNoCi1QYXRjaDU5MzogZ2RiLWJ6NzAxMTMxLXJlYWRsaW5lNjItM29mMy5wYXRjaAotCi0j IFtzdGFwXSBGaXggZG91YmxlIGZyZWUuCi1QYXRjaDU5NDogZ2RiLXN0YXAtZG91YmxlLWZyZWUu cGF0Y2gKLQogQnVpbGRSZXF1aXJlczogbmN1cnNlcy1kZXZlbCV7P19pc2F9IHRleGluZm8gZ2V0 dGV4dCBmbGV4IGJpc29uIGV4cGF0LWRldmVsJXs/X2lzYX0KICMgLS13aXRob3V0LXN5c3RlbS1y ZWFkbGluZQogIyBSZXF1aXJlczogcmVhZGxpbmUlez9faXNhfQpAQCAtNzcxLDggKzczNSw2IEBA IHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhw LmMKICVwYXRjaDI1OCAtcDEKICVwYXRjaDI2MCAtcDEKICVwYXRjaDI2MyAtcDEKLSVwYXRjaDI2 NSAtcDEKLSVwYXRjaDI2NiAtcDEKICVwYXRjaDI3MSAtcDEKICVwYXRjaDI3NCAtcDEKICVwYXRj aDM1MyAtcDEKQEAgLTgyNCwyNSArNzg2LDExIEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTIt ZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKICVwYXRjaDUxMCAtcDEKICVwYXRjaDUx MSAtcDEKICVwYXRjaDUyNiAtcDEKLSVwYXRjaDU0MSAtcDEKICVwYXRjaDU0MiAtcDEKICVwYXRj aDU0NyAtcDEKICVwYXRjaDU0OCAtcDEKLSVwYXRjaDU1NSAtcDEKICVwYXRjaDU1NiAtcDEKLSVw YXRjaDU3MSAtcDEKLSVwYXRjaDU3MiAtcDEKLSVwYXRjaDU3MyAtcDEKLSVwYXRjaDU3NCAtcDEK ICVwYXRjaDU3OSAtcDEKLSVwYXRjaDU4MCAtcDEKLSVwYXRjaDU4MSAtcDEKLSVwYXRjaDU4MiAt cDEKLSVwYXRjaDU4MyAtcDEKLSVwYXRjaDU5MSAtcDEKLSVwYXRjaDU5MiAtcDEKLSVwYXRjaDU5 MyAtcDEKLSVwYXRjaDU5NCAtcDEKIAogJXBhdGNoMzkzIC1wMQogJXBhdGNoMzM1IC1wMQpAQCAt MTI2NSw2ICsxMjEzLDEwIEBAIGZpCiAle19pbmZvZGlyfS9nZGIuaW5mbyoKIAogJWNoYW5nZWxv ZworKiBTYXQgSnVsIDIzIDIwMTEgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+IC0gNy4zLjUwLjIwMTEwNzIyLTEuZmMxNgorLSBSZWJhc2UgdG8gRlNGIEdEQiA3LjMu NTAuMjAxMTA3MjIuCistIEltcHJvdmUgZ2NjLTQuNiBzdGRhcmcgZmFsc2UgcHJvbG9ndWUgZW5k IHdvcmthcm91bmQgKEdEQiBQUiAxMjQzNSArIEdDQyBQUiA0NzQ3MSkuCisKICogU3VuIEp1bCAg MyAyMDExIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMi45 MC4yMDExMDcwMy00MC5mYzE1CiAtIFJlYmFzZSB0byBGU0YgR0RCIDcuMi45MC4yMDExMDcwMyAo d2hpY2ggaXMgYSA3LjMgcHJlLXJlbGVhc2UpLgogICAtIEFkanVzdCB0aGUgYHByaW50IGVycm5v JyBwYXRjaCBkdWUgdG8gdGhlIERXX0FUX2xpbmthZ2VfbmFtZSBmb2xsb3dpbmcgYWdhaW4uCgpk aWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggMDJlMmZmZi4uOTMzMDQ1NyAxMDA2 NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDIgKzEsMiBAQAogMDRlNWM0YjFi OWU2MzM0MjJjYzQ4OTkwZmU2MTk1OGQgIGxpYnN0ZGMrKy12My1weXRob24tcjE1NTk3OC50YXIu YnoyCi1iZTY1MjJhZGUxYWM3OGExNmIxMGVhMTYxMjE1OGQwYSAgZ2RiLTcuMi45MC4yMDExMDcw My50YXIuYnoyCitjNTU1NDkzMDUzYTMwOWM4YWEyMDU5MmVhOTU2ZjllNSAgZ2RiLTcuMy41MC4y MDExMDcyMi50YXIuYnoyCg==